From f14d96b20512d6ea75d6d4ab5872985f1ae0f466 Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 2 Jul 2024 15:30:46 +0100 Subject: [PATCH 1/9] refactor: Added Nothing conveinience method --- example/lib/pages/components/button_example.dart | 2 +- example/lib/pages/components/dialpad_example.dart | 2 +- .../lib/pages/components/navigation_rail_example.dart | 2 +- example/lib/pages/components/progress_example.dart | 2 +- example/lib/pages/theme/color_example.dart | 2 +- .../pages/components/navigation_rail_widgetbook.dart | 2 +- lib/src/components/accordion/accordion.dart | 2 +- lib/src/components/banner/banner.dart | 2 +- lib/src/components/bottom sheets/bottom_sheet.dart | 2 +- lib/src/components/button_group/button_group.dart | 2 +- lib/src/components/checkbox/checkbox.dart | 2 +- lib/src/components/chips/chip.dart | 6 +++--- lib/src/components/pagination/pagination.dart | 2 +- lib/src/components/search_bar/search_bar.dart | 2 +- lib/src/components/snack_bar/snack_bar.dart | 2 +- lib/src/components/stepper/stepper.dart | 4 ++-- lib/src/components/text_input/text_input.dart | 2 +- lib/src/components/top_app_bar/search_top_app_bar.dart | 2 +- lib/src/utils/nothing.dart | 10 ++++++++++ lib/src/utils/utils.dart | 1 + test/src/utils/rounded_test.dart | 2 +- 21 files changed, 33 insertions(+), 22 deletions(-) create mode 100644 lib/src/utils/nothing.dart diff --git a/example/lib/pages/components/button_example.dart b/example/lib/pages/components/button_example.dart index b6c06df9..5f6005af 100644 --- a/example/lib/pages/components/button_example.dart +++ b/example/lib/pages/components/button_example.dart @@ -131,7 +131,7 @@ class _ButtonExampleState extends State { ].divide(const SizedBox.square(dimension: ZetaSpacing.xl_2)).toList(), ), ), - Expanded(child: const SizedBox()), + Expanded(child: const Nothing()), ], ), ), diff --git a/example/lib/pages/components/dialpad_example.dart b/example/lib/pages/components/dialpad_example.dart index 121dc923..774467d0 100644 --- a/example/lib/pages/components/dialpad_example.dart +++ b/example/lib/pages/components/dialpad_example.dart @@ -57,7 +57,7 @@ class _DialPadExampleState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - const SizedBox(), + const Nothing(), Text( text, style: ZetaTextStyles.heading3, diff --git a/example/lib/pages/components/navigation_rail_example.dart b/example/lib/pages/components/navigation_rail_example.dart index 178ae9fd..3f0b5d47 100644 --- a/example/lib/pages/components/navigation_rail_example.dart +++ b/example/lib/pages/components/navigation_rail_example.dart @@ -58,7 +58,7 @@ class _NavigationRailExampleState extends State { child: Padding( padding: const EdgeInsets.all(ZetaSpacing.xl_1), child: _selectedIndex == null - ? const SizedBox() + ? const Nothing() : Text( _titles[_selectedIndex!], textAlign: TextAlign.center, diff --git a/example/lib/pages/components/progress_example.dart b/example/lib/pages/components/progress_example.dart index cc2b4b70..20cbb604 100644 --- a/example/lib/pages/components/progress_example.dart +++ b/example/lib/pages/components/progress_example.dart @@ -156,7 +156,7 @@ class _WrapperState extends State { const SizedBox(width: 40), widget.stateChangeable! ? FilledButton(onPressed: setLoading, child: Text("Start Buffering")) - : SizedBox.shrink() + : const Nothing() ], ) ], diff --git a/example/lib/pages/theme/color_example.dart b/example/lib/pages/theme/color_example.dart index 323f8642..950fe839 100644 --- a/example/lib/pages/theme/color_example.dart +++ b/example/lib/pages/theme/color_example.dart @@ -189,7 +189,7 @@ class _ColorExampleState extends State { height: constraints.maxWidth / 10, color: e == 110 ? colors.surfacePrimary : value.value[e], child: e == 110 - ? SizedBox() + ? Nothing() : FittedBox( fit: BoxFit.scaleDown, child: Column( diff --git a/example/widgetbook/pages/components/navigation_rail_widgetbook.dart b/example/widgetbook/pages/components/navigation_rail_widgetbook.dart index df57fc95..392ada12 100644 --- a/example/widgetbook/pages/components/navigation_rail_widgetbook.dart +++ b/example/widgetbook/pages/components/navigation_rail_widgetbook.dart @@ -45,7 +45,7 @@ Widget navigationRailUseCase(BuildContext context) { child: Padding( padding: const EdgeInsets.all(ZetaSpacing.xl_1), child: selectedIndex == null - ? const SizedBox() + ? const Nothing() : Text( itemsList[selectedIndex!], textAlign: TextAlign.center, diff --git a/lib/src/components/accordion/accordion.dart b/lib/src/components/accordion/accordion.dart index 8be557e0..966680dc 100644 --- a/lib/src/components/accordion/accordion.dart +++ b/lib/src/components/accordion/accordion.dart @@ -177,7 +177,7 @@ class _ZetaAccordionState extends State with TickerProviderStateM data: Theme.of(context).copyWith(listTileTheme: ListTileThemeData(titleTextStyle: childTextStyle)), child: DefaultTextStyle( style: childTextStyle, - child: widget.child ?? const SizedBox(), + child: widget.child ?? const Nothing(), ), ), ), diff --git a/lib/src/components/banner/banner.dart b/lib/src/components/banner/banner.dart index af2ec7f4..d1d0cef6 100644 --- a/lib/src/components/banner/banner.dart +++ b/lib/src/components/banner/banner.dart @@ -92,7 +92,7 @@ class ZetaBanner extends MaterialBanner { actions: [ IconTheme( data: IconThemeData(color: _backgroundColorFromType(context, type).onColor), - child: trailing ?? const SizedBox(), + child: trailing ?? const Nothing(), ), ], ); diff --git a/lib/src/components/bottom sheets/bottom_sheet.dart b/lib/src/components/bottom sheets/bottom_sheet.dart index be7b0b74..cfdb84f0 100644 --- a/lib/src/components/bottom sheets/bottom_sheet.dart +++ b/lib/src/components/bottom sheets/bottom_sheet.dart @@ -74,7 +74,7 @@ class ZetaBottomSheet extends ZetaStatelessWidget { ), Material( color: colors.surfaceSecondary, - child: body ?? const SizedBox(), + child: body ?? const Nothing(), ), ], ), diff --git a/lib/src/components/button_group/button_group.dart b/lib/src/components/button_group/button_group.dart index b8988466..eace82d9 100644 --- a/lib/src/components/button_group/button_group.dart +++ b/lib/src/components/button_group/button_group.dart @@ -344,7 +344,7 @@ class _ZetaGroupButtonState extends State { child: Row( mainAxisSize: MainAxisSize.min, children: [ - leadingIcon ?? const SizedBox(), + leadingIcon ?? const Nothing(), Text(selectedItem?.label ?? widget.label ?? '', style: ZetaTextStyles.labelMedium), if (widget.items != null) ZetaIcon( diff --git a/lib/src/components/checkbox/checkbox.dart b/lib/src/components/checkbox/checkbox.dart index af9eb6bf..4edd887a 100644 --- a/lib/src/components/checkbox/checkbox.dart +++ b/lib/src/components/checkbox/checkbox.dart @@ -194,7 +194,7 @@ class _CheckboxState extends State { final rounded = context.rounded; final icon = !_checked - ? const SizedBox.shrink() + ? const Nothing() : ZetaIcon( widget.useIndeterminate ? ZetaIcons.remove : ZetaIcons.check_mark, color: widget.disabled ? theme.colors.iconDisabled : theme.colors.white, diff --git a/lib/src/components/chips/chip.dart b/lib/src/components/chips/chip.dart index 71f636c3..06749934 100644 --- a/lib/src/components/chips/chip.dart +++ b/lib/src/components/chips/chip.dart @@ -93,7 +93,7 @@ class _ZetaChipState extends State { } else if (widget.leading.runtimeType == ZetaAvatar) { return (widget.leading! as ZetaAvatar).copyWith(size: ZetaAvatarSize.xxxs); } - return widget.leading ?? const SizedBox(); + return widget.leading ?? const Nothing(); } final _controller = WidgetStatesController(); @@ -112,7 +112,7 @@ class _ZetaChipState extends State { color: Colors.transparent, child: child(colors, foregroundColor, isDragging: true), ), - childWhenDragging: const SizedBox(), + childWhenDragging: const Nothing(), data: widget.data, onDragCompleted: widget.onDragCompleted, child: child(colors, foregroundColor), @@ -191,7 +191,7 @@ class _ZetaChipState extends State { ZetaIcons.check_mark, color: widget.selected! ? colors.iconInverse : Colors.transparent, ) - : const SizedBox()), + : const Nothing()), ) else if (widget.leading != null) _renderLeading(foregroundColor), diff --git a/lib/src/components/pagination/pagination.dart b/lib/src/components/pagination/pagination.dart index 8404f125..d716d541 100644 --- a/lib/src/components/pagination/pagination.dart +++ b/lib/src/components/pagination/pagination.dart @@ -192,7 +192,7 @@ class _ZetaPaginationState extends State { onChanged: (val) => _onItemPressed(val!), value: _currentPage, icon: const ZetaIcon(ZetaIcons.expand_more).paddingStart(ZetaSpacing.small), - underline: const SizedBox(), + underline: const Nothing(), style: Theme.of(context).textTheme.bodyLarge?.copyWith( color: colors.textSubtle, ), diff --git a/lib/src/components/search_bar/search_bar.dart b/lib/src/components/search_bar/search_bar.dart index af05de0d..9ec0354b 100644 --- a/lib/src/components/search_bar/search_bar.dart +++ b/lib/src/components/search_bar/search_bar.dart @@ -184,7 +184,7 @@ class _ZetaSearchBarState extends State { size: iconSize, ), ) - : const SizedBox(), + : const Nothing(), ), ], ), diff --git a/lib/src/components/snack_bar/snack_bar.dart b/lib/src/components/snack_bar/snack_bar.dart index dbe2a10e..b4f18178 100644 --- a/lib/src/components/snack_bar/snack_bar.dart +++ b/lib/src/components/snack_bar/snack_bar.dart @@ -382,7 +382,7 @@ class _LeadingIcon extends StatelessWidget { ZetaSnackBarType.error => const ZetaIcon(ZetaIcons.error), ZetaSnackBarType.deletion => const ZetaIcon(ZetaIcons.delete), ZetaSnackBarType.view => const ZetaIcon(ZetaIcons.open_in_new_window), - _ => const SizedBox(), + _ => const Nothing(), }; } diff --git a/lib/src/components/stepper/stepper.dart b/lib/src/components/stepper/stepper.dart index d7c81996..5847334a 100644 --- a/lib/src/components/stepper/stepper.dart +++ b/lib/src/components/stepper/stepper.dart @@ -239,7 +239,7 @@ class _ZetaStepperState extends State with TickerProviderStateMixin children: [ AnimatedCrossFade( firstChild: Container(height: 0), - secondChild: widget.steps[index].content ?? const SizedBox(), + secondChild: widget.steps[index].content ?? const Nothing(), firstCurve: const Interval(0, 0.6, curve: Curves.fastOutSlowIn), secondCurve: const Interval(0.4, 1, curve: Curves.fastOutSlowIn), sizeCurve: Curves.fastOutSlowIn, @@ -332,7 +332,7 @@ class _ZetaStepperState extends State with TickerProviderStateMixin Visibility( maintainState: true, visible: i == widget.currentStep, - child: widget.steps[i].content ?? const SizedBox(), + child: widget.steps[i].content ?? const Nothing(), ), ); } diff --git a/lib/src/components/text_input/text_input.dart b/lib/src/components/text_input/text_input.dart index 48de5fcf..8523d7c9 100644 --- a/lib/src/components/text_input/text_input.dart +++ b/lib/src/components/text_input/text_input.dart @@ -440,7 +440,7 @@ class _HintText extends StatelessWidget { } if (text == null || text.isEmpty) { - return const SizedBox(); + return const Nothing(); } return Row( diff --git a/lib/src/components/top_app_bar/search_top_app_bar.dart b/lib/src/components/top_app_bar/search_top_app_bar.dart index 8d7b218b..d78f200a 100644 --- a/lib/src/components/top_app_bar/search_top_app_bar.dart +++ b/lib/src/components/top_app_bar/search_top_app_bar.dart @@ -149,7 +149,7 @@ class _ZetaTopAppBarSearchFieldState extends State wit mainAxisAlignment: widget.type == ZetaTopAppBarType.centeredTitle ? MainAxisAlignment.center : MainAxisAlignment.start, children: [ - widget.child ?? const SizedBox(), + widget.child ?? const Nothing(), ], ), ConstrainedBox( diff --git a/lib/src/utils/nothing.dart b/lib/src/utils/nothing.dart new file mode 100644 index 00000000..be509e50 --- /dev/null +++ b/lib/src/utils/nothing.dart @@ -0,0 +1,10 @@ +import 'package:flutter/widgets.dart'; + +/// A convenient widget that renders nothing. +class Nothing extends StatelessWidget { + /// Constructs a [Nothing] widget. + const Nothing({super.key}); + + @override + Widget build(BuildContext context) => const SizedBox.shrink(); +} diff --git a/lib/src/utils/utils.dart b/lib/src/utils/utils.dart index 99e032c0..ded9a798 100644 --- a/lib/src/utils/utils.dart +++ b/lib/src/utils/utils.dart @@ -1,4 +1,5 @@ export './debounce.dart'; export './enums.dart'; export './extensions.dart'; +export './nothing.dart'; export './rounded.dart'; diff --git a/test/src/utils/rounded_test.dart b/test/src/utils/rounded_test.dart index 60ee61a4..cb342111 100644 --- a/test/src/utils/rounded_test.dart +++ b/test/src/utils/rounded_test.dart @@ -172,7 +172,7 @@ void main() { testWidgets('ZetaRoundedScope debugFillProperties works correctly', (WidgetTester tester) async { final diagnostics = DiagnosticPropertiesBuilder(); - const ZetaRoundedScope(rounded: true, child: SizedBox()).debugFillProperties(diagnostics); + const ZetaRoundedScope(rounded: true, child: Nothing()).debugFillProperties(diagnostics); final rounded = diagnostics.properties.where((p) => p.name == 'rounded').map((p) => p.toDescription()).first; expect(rounded, 'true'); From 511d58c5efad31e8e684d2980fda5d0fdb273c21 Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 2 Jul 2024 15:31:42 +0100 Subject: [PATCH 2/9] refactor: Move rounded property to Zeta, not ZetaThemeData --- lib/src/theme/theme_data.dart | 9 --------- lib/src/zeta.dart | 11 ++++++++--- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/lib/src/theme/theme_data.dart b/lib/src/theme/theme_data.dart index 0217903e..de74be0f 100644 --- a/lib/src/theme/theme_data.dart +++ b/lib/src/theme/theme_data.dart @@ -22,7 +22,6 @@ class ZetaThemeData extends Equatable { ZetaThemeData({ this.fontFamily = kZetaFontFamily, this.identifier = 'default', - this.rounded = true, ZetaContrast contrast = ZetaContrast.aa, ZetaColors? colorsLight, ZetaColors? colorsDark, @@ -71,13 +70,6 @@ class ZetaThemeData extends Equatable { /// Defaults to a dark mode color palette with default Zeta colors if not explicitly provided. ZetaColors get colorsDark => _colorsDark; - /// {@template zeta-component-rounded} - /// Sets rounded or sharp border of the containing box and the icon style. - /// - /// Defaults to `true`. - /// {@endtemplate} - final bool rounded; - /// Applies the given [contrast] to the current [ZetaThemeData] and returns a new [ZetaThemeData] with the updated contrast. ZetaThemeData apply({ required ZetaContrast contrast, @@ -88,7 +80,6 @@ class ZetaThemeData extends Equatable { fontFamily: fontFamily, colorsDark: colorsDark, colorsLight: colorsLight, - rounded: rounded, ); } diff --git a/lib/src/zeta.dart b/lib/src/zeta.dart index f720eb7b..1c7ec703 100644 --- a/lib/src/zeta.dart +++ b/lib/src/zeta.dart @@ -19,6 +19,7 @@ class Zeta extends InheritedWidget { required this.themeMode, required this.themeData, required super.child, + this.rounded = true, }) : _mediaBrightness = mediaBrightness; /// The current contrast setting for the app, which can be one of the predefined @@ -37,6 +38,13 @@ class Zeta extends InheritedWidget { /// Used to determine the theme mode when it's set to [ThemeMode.system]. final Brightness _mediaBrightness; + /// {@template zeta-component-rounded} + /// Sets rounded or sharp border of the containing box and the icon style. + /// + /// Defaults to `true`. + /// {@endtemplate} + final bool rounded; + /// Provides the color set based on the current theme mode. /// /// It determines the appropriate color set (light or dark) based on the theme mode @@ -51,9 +59,6 @@ class Zeta extends InheritedWidget { } } - /// {@macro zeta-component-rounded} - bool get rounded => themeData.rounded; - /// Gets the brightness setting for the current theme. /// /// If the theme mode is set to 'system', it will return the brightness that ties with the device's system theme setting. From 913662d3afcd630211e8d7578a4dd9fecd17354f Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 2 Jul 2024 16:24:03 +0100 Subject: [PATCH 3/9] chore: Add rounded switch to example app --- example/lib/utils/rounded_switch.dart | 42 +++++++++++++++++++ example/lib/utils/theme_color_switch.dart | 4 +- example/lib/utils/theme_constrast_switch.dart | 16 +++---- example/lib/utils/theme_mode_switch.dart | 18 ++++---- example/lib/widgets.dart | 2 + 5 files changed, 63 insertions(+), 19 deletions(-) create mode 100644 example/lib/utils/rounded_switch.dart diff --git a/example/lib/utils/rounded_switch.dart b/example/lib/utils/rounded_switch.dart new file mode 100644 index 00000000..21410853 --- /dev/null +++ b/example/lib/utils/rounded_switch.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +class ZetaRoundedSwitch extends StatelessWidget { + ZetaRoundedSwitch({super.key}); + + @override + Widget build(BuildContext context) { + final zeta = Zeta.of(context); + + return DropdownButtonHideUnderline( + child: DropdownButton( + value: zeta.rounded, + padding: EdgeInsets.all(8), + elevation: 0, + icon: Nothing(), + dropdownColor: zeta.colors.borderDisabled, + items: [true, false].map((e) { + return DropdownMenuItem( + value: e, + alignment: Alignment.center, + child: ZetaAvatar( + size: ZetaAvatarSize.xxs, + initials: e ? '●' : '■', + initialTextStyle: TextStyle( + fontSize: 14, + letterSpacing: ZetaSpacing.none, + color: Zeta.of(context).colors.primary, + fontWeight: FontWeight.w500, + ), + ), + ); + }).toList(), + onChanged: (value) { + if (value != null) { + ZetaProvider.of(context).updateRounded(value); + } + }, + ), + ); + } +} diff --git a/example/lib/utils/theme_color_switch.dart b/example/lib/utils/theme_color_switch.dart index 203997e7..7677f189 100644 --- a/example/lib/utils/theme_color_switch.dart +++ b/example/lib/utils/theme_color_switch.dart @@ -40,9 +40,9 @@ class ZetaThemeColorSwitch extends StatelessWidget { child: DropdownButton( value: zeta.themeData.identifier, elevation: 0, - isDense: true, alignment: Alignment.center, - icon: SizedBox(width: 8), + padding: EdgeInsets.all(8), + icon: Nothing(), dropdownColor: zeta.colors.borderDisabled, items: appThemes.entries.map((e) { final zetaColors = primary(appThemes[e.key]!); diff --git a/example/lib/utils/theme_constrast_switch.dart b/example/lib/utils/theme_constrast_switch.dart index 7e7c060d..ecc422a0 100644 --- a/example/lib/utils/theme_constrast_switch.dart +++ b/example/lib/utils/theme_constrast_switch.dart @@ -24,10 +24,9 @@ class ZetaThemeContrastSwitch extends StatelessWidget { return DropdownButtonHideUnderline( child: DropdownButton( value: zeta.contrast, + padding: EdgeInsets.all(8), elevation: 0, - isDense: true, - alignment: Alignment.center, - icon: SizedBox(width: 8), + icon: Nothing(), dropdownColor: zeta.colors.borderDisabled, items: _themes.map((e) { final colors = zetaColors(e); @@ -37,11 +36,12 @@ class ZetaThemeContrastSwitch extends StatelessWidget { child: ZetaAvatar( size: ZetaAvatarSize.xxs, backgroundColor: colors.primary.surface, - image: Center( - child: Text( - e == ZetaContrast.aa ? 'AA' : 'AAA', - style: ZetaTextStyles.bodyMedium.copyWith(color: colors.primary, fontWeight: FontWeight.w700), - ), + initials: e == ZetaContrast.aa ? 'AA' : 'AAA', + initialTextStyle: TextStyle( + fontSize: 14, + letterSpacing: ZetaSpacing.none, + color: colors.primary, + fontWeight: FontWeight.w500, ), ), ); diff --git a/example/lib/utils/theme_mode_switch.dart b/example/lib/utils/theme_mode_switch.dart index 200ceeba..8288c292 100644 --- a/example/lib/utils/theme_mode_switch.dart +++ b/example/lib/utils/theme_mode_switch.dart @@ -25,11 +25,10 @@ class ZetaThemeModeSwitch extends StatelessWidget { return DropdownButtonHideUnderline( child: DropdownButton( + padding: EdgeInsets.all(8), value: zeta.themeMode, elevation: 0, - isDense: true, - alignment: Alignment.center, - icon: SizedBox(width: 8), + icon: Nothing(), dropdownColor: zeta.colors.borderDisabled, items: _themes.map((e) { final colors = zetaColors(e); @@ -40,12 +39,13 @@ class ZetaThemeModeSwitch extends StatelessWidget { size: ZetaAvatarSize.xxs, backgroundColor: colors.primary.surface, image: Icon( - e == ThemeMode.system - ? Icons.system_security_update_good - : e == ThemeMode.light - ? Icons.light_mode - : Icons.dark_mode, - color: colors.primary), + e == ThemeMode.system + ? Icons.system_security_update_good + : e == ThemeMode.light + ? Icons.light_mode + : Icons.dark_mode, + color: colors.primary, + ), ), ); }).toList(), diff --git a/example/lib/widgets.dart b/example/lib/widgets.dart index 816cd4ea..dcaa892b 100644 --- a/example/lib/widgets.dart +++ b/example/lib/widgets.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:zeta_example/utils/rounded_switch.dart'; import 'package:zeta_example/utils/theme_color_switch.dart'; import 'package:zeta_example/utils/theme_constrast_switch.dart'; import 'package:zeta_example/utils/theme_mode_switch.dart'; @@ -33,6 +34,7 @@ class ExampleScaffold extends StatelessWidget { foregroundColor: colors.onPrimary, actions: [ ...actions, + ZetaRoundedSwitch(), ZetaThemeModeSwitch(), ZetaThemeContrastSwitch(), ZetaThemeColorSwitch(), From 3cf47193178b411fd14ced6177584557229aa4eb Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 2 Jul 2024 16:29:21 +0100 Subject: [PATCH 4/9] feat: Added ZetaProvider.base to allow for better developer experience --- example/example.md | 42 + example/lib/main.dart | 36 +- .../lib/pages/components/avatar_example.dart | 1091 +++++++++-------- lib/src/components/avatars/avatar.dart | 36 +- lib/src/zeta.dart | 3 +- lib/src/zeta_provider.dart | 128 +- test/test_utils/test_app.dart | 18 +- 7 files changed, 752 insertions(+), 602 deletions(-) create mode 100644 example/example.md diff --git a/example/example.md b/example/example.md new file mode 100644 index 00000000..b15b08dc --- /dev/null +++ b/example/example.md @@ -0,0 +1,42 @@ +## Set up + +To use Zeta components in you app, first the whole app must be wrapped with `ZetaProvider`. The easiest way to do this is with the custom builder `ZetaProvider.custom`. +You can provide initial values for `ThemeData`, `ThemeMode`, `contrast` and `ZetaThemeData`. + +* `initialThemeData` allows you to extend an existing Flutter themeData to use alongside the `Zeta` theme. +* `initialThemeMode` sets whether the app starts in light or dark mode, or uses the device default. +* `initialContrast` sets whether the app starts with standard (WCAG AA) contrast, or if it attempts to use the more accessible contrast (WCAG AAA). +* `initialZetaThemeData` allows you to override the Zeta theme with a custom theme. + +```dart +return ZetaProvider.base( + initialThemeData: initialThemeData, + initialThemeMode: initialThemeMode, + initialContrast: initialContrast, + initialZetaThemeData: initialZetaThemeData, + initialRounded: initialRounded, + builder: (context, lightTheme, darkTheme, themeMode) { + return MaterialApp.router( + routerConfig: router, + themeMode: themeMode, + theme: lightTheme, + darkTheme: darkTheme, + ); + }, +); +``` + +## Using the components + +Once Zeta is configured, Zeta components can be used as any other componenent, and will inherit theme and other information from `Zeta`. + +```dart +Column( + children:[ + ZetaButton(label: 'Button', onPressed: (){}), + ZetaAvatar(), + ZetaStatusLabel(), + // etc... + ] +) +``` \ No newline at end of file diff --git a/example/lib/main.dart b/example/lib/main.dart index cf16ece0..3692f8f5 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -14,7 +14,7 @@ void main() async { runApp( ZetaExample( themeService: themeService, - initialThemeData: themePreferences.$1 ?? ZetaThemeData(), + initialZetaThemeData: themePreferences.$1 ?? ZetaThemeData(), initialThemeMode: themePreferences.$2 ?? ThemeMode.system, initialContrast: themePreferences.$3 ?? ZetaContrast.aa, ), @@ -27,41 +27,31 @@ class ZetaExample extends StatelessWidget { required this.themeService, required this.initialContrast, required this.initialThemeMode, - required this.initialThemeData, + required this.initialZetaThemeData, }); final ZetaThemeService themeService; final ZetaContrast initialContrast; final ThemeMode initialThemeMode; - final ZetaThemeData initialThemeData; + final ZetaThemeData initialZetaThemeData; @override Widget build(BuildContext context) { - return ZetaProvider( - themeService: themeService, + final initialThemeData = null; + final initialRounded = true; + + return ZetaProvider.base( + initialZetaThemeData: initialZetaThemeData, + initialThemeMode: initialThemeMode, initialContrast: initialContrast, initialThemeData: initialThemeData, - initialThemeMode: initialThemeMode, - builder: (context, themeData, themeMode) { - final dark = themeData.colorsDark.toScheme(); - final light = themeData.colorsLight.toScheme(); + initialRounded: initialRounded, + builder: (context, lightTheme, darkTheme, themeMode) { return MaterialApp.router( routerConfig: router, themeMode: themeMode, - theme: ThemeData( - useMaterial3: true, - fontFamily: themeData.fontFamily, - scaffoldBackgroundColor: light.surfaceTertiary, - colorScheme: light, - textTheme: zetaTextTheme, - ), - darkTheme: ThemeData( - useMaterial3: true, - fontFamily: themeData.fontFamily, - scaffoldBackgroundColor: dark.surfaceTertiary, - colorScheme: dark, - textTheme: zetaTextTheme, - ), + theme: lightTheme, + darkTheme: darkTheme, ); }, ); diff --git a/example/lib/pages/components/avatar_example.dart b/example/lib/pages/components/avatar_example.dart index 23a6c5dc..ff84aa2d 100644 --- a/example/lib/pages/components/avatar_example.dart +++ b/example/lib/pages/components/avatar_example.dart @@ -20,557 +20,560 @@ class AvatarExample extends StatelessWidget { return ExampleScaffold( name: AvatarExample.name, child: SingleChildScrollView( - padding: EdgeInsets.all(ZetaSpacing.medium), - child: Column( - children: [ - Column( - children: [ - Text( - 'ZetaAvatar.image', - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(height: 15), - Row( - children: [ - Column( - children: ZetaAvatarSize.values.map((size) { - final height = size.pixelSize; - final padding = (height - 14) / 2; - return Column( - children: [ - SizedBox( - height: height, - child: Padding( - padding: EdgeInsets.only(top: padding), - child: Text(size.name.toUpperCase()), + scrollDirection: Axis.horizontal, + child: SingleChildScrollView( + padding: EdgeInsets.all(ZetaSpacing.medium), + child: Column( + children: [ + Column( + children: [ + Text( + 'ZetaAvatar.image', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 15), + Row( + children: [ + Column( + children: ZetaAvatarSize.values.map((size) { + final height = size.pixelSize; + final padding = (height - 14) / 2; + return Column( + children: [ + SizedBox( + height: height, + child: Padding( + padding: EdgeInsets.only(top: padding), + child: Text(size.name.toUpperCase()), + ), ), - ), - const SizedBox(height: 20), - ], - ); - }).toList(), - ), - const SizedBox(width: 15), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image(size: size), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 15), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - borderColor: Zeta.of(context).colors.green, - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 15), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - image: image, - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 15), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - borderColor: Zeta.of(context).colors.green, - image: image, - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - ], - ), - ], - ), - Column( - children: [ - Text( - 'ZetaAvatar.initials', - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(height: 15), - Row( - children: [ - Column( - children: ZetaAvatarSize.values.map((size) { - final height = size.pixelSize; - final padding = (height - 14) / 2; - return Column( - children: [ - SizedBox( - height: height, - child: Padding( - padding: EdgeInsets.only(top: padding), - child: Text(size.name.toUpperCase()), + const SizedBox(height: 20), + ], + ); + }).toList(), + ), + const SizedBox(width: 15), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image(size: size), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 15), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + borderColor: Zeta.of(context).colors.green, + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 15), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + image: image, + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 15), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + borderColor: Zeta.of(context).colors.green, + image: image, + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + ], + ), + ], + ), + Column( + children: [ + Text( + 'ZetaAvatar.initials', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 15), + Row( + children: [ + Column( + children: ZetaAvatarSize.values.map((size) { + final height = size.pixelSize; + final padding = (height - 14) / 2; + return Column( + children: [ + SizedBox( + height: height, + child: Padding( + padding: EdgeInsets.only(top: padding), + child: Text(size.name.toUpperCase()), + ), ), - ), - const SizedBox(height: 20), - ], - ); - }).toList(), - ), - const SizedBox(width: 15), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.initials( - size: size, - initials: 'AB', - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 15), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.initials( - size: size, - initials: 'AB', - borderColor: Zeta.of(context).colors.green, - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - ], - ), - ], - ), - Column( - children: [ - Text( - 'ZetaAvatar.image with badge', - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(height: 15), - Row( - children: [ - Column( - children: ZetaAvatarSize.values.map((size) { - final height = size.pixelSize; - final padding = (height - 14) / 2; - return Column( - children: [ - SizedBox( - height: height, - child: Padding( - padding: EdgeInsets.only(top: padding), - child: Text(size.name.toUpperCase()), + const SizedBox(height: 20), + ], + ); + }).toList(), + ), + const SizedBox(width: 15), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.initials( + size: size, + initials: 'AB', + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 15), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.initials( + size: size, + initials: 'AB', + borderColor: Zeta.of(context).colors.green, + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + ], + ), + ], + ), + Column( + children: [ + Text( + 'ZetaAvatar.image with badge', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 15), + Row( + children: [ + Column( + children: ZetaAvatarSize.values.map((size) { + final height = size.pixelSize; + final padding = (height - 14) / 2; + return Column( + children: [ + SizedBox( + height: height, + child: Padding( + padding: EdgeInsets.only(top: padding), + child: Text(size.name.toUpperCase()), + ), ), - ), - const SizedBox(height: 20), - ], - ); - }).toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - upperBadge: ZetaAvatarBadge.notification(value: 3), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - borderColor: Zeta.of(context).colors.green, - upperBadge: ZetaAvatarBadge.notification(value: 3), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - upperBadge: ZetaAvatarBadge.notification(value: 3), - image: image, - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - borderColor: Zeta.of(context).colors.green, - upperBadge: ZetaAvatarBadge.notification(value: 3), - image: image, - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - ], - ), - ], - ), - Column( - children: [ - Text( - 'ZetaAvatar.initials with badge', - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(height: 15), - Row( - children: [ - Column( - children: ZetaAvatarSize.values.map((size) { - final height = size.pixelSize; - final padding = (height - 14) / 2; - return Column( - children: [ - SizedBox( - height: height, - child: Padding( - padding: EdgeInsets.only(top: padding), - child: Text(size.name.toUpperCase()), + const SizedBox(height: 20), + ], + ); + }).toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + upperBadge: ZetaAvatarBadge.notification(value: 3), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + borderColor: Zeta.of(context).colors.green, + upperBadge: ZetaAvatarBadge.notification(value: 3), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + upperBadge: ZetaAvatarBadge.notification(value: 3), + image: image, + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + borderColor: Zeta.of(context).colors.green, + upperBadge: ZetaAvatarBadge.notification(value: 3), + image: image, + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + ], + ), + ], + ), + Column( + children: [ + Text( + 'ZetaAvatar.initials with badge', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 15), + Row( + children: [ + Column( + children: ZetaAvatarSize.values.map((size) { + final height = size.pixelSize; + final padding = (height - 14) / 2; + return Column( + children: [ + SizedBox( + height: height, + child: Padding( + padding: EdgeInsets.only(top: padding), + child: Text(size.name.toUpperCase()), + ), ), - ), - const SizedBox(height: 20), - ], - ); - }).toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.initials( - size: size, - initials: 'AB', - upperBadge: ZetaAvatarBadge.notification(value: 3), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.initials( - size: size, - initials: 'AB', - borderColor: Zeta.of(context).colors.green, - upperBadge: ZetaAvatarBadge.notification(value: 3), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - ], - ), - ], - ), - Column( - children: [ - Text( - 'ZetaAvatar.image with special status', - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(height: 15), - Row( - children: [ - Column( - children: ZetaAvatarSize.values.map((size) { - final height = size.pixelSize; - final padding = (height - 14) / 2; - return Column( - children: [ - SizedBox( - height: height, - child: Padding( - padding: EdgeInsets.only(top: padding), - child: Text(size.name.toUpperCase()), + const SizedBox(height: 20), + ], + ); + }).toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.initials( + size: size, + initials: 'AB', + upperBadge: ZetaAvatarBadge.notification(value: 3), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.initials( + size: size, + initials: 'AB', + borderColor: Zeta.of(context).colors.green, + upperBadge: ZetaAvatarBadge.notification(value: 3), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + ], + ), + ], + ), + Column( + children: [ + Text( + 'ZetaAvatar.image with special status', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 15), + Row( + children: [ + Column( + children: ZetaAvatarSize.values.map((size) { + final height = size.pixelSize; + final padding = (height - 14) / 2; + return Column( + children: [ + SizedBox( + height: height, + child: Padding( + padding: EdgeInsets.only(top: padding), + child: Text(size.name.toUpperCase()), + ), ), - ), - const SizedBox(height: 20), - ], - ); - }).toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - lowerBadge: ZetaAvatarBadge.icon(), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - borderColor: Zeta.of(context).colors.green, - lowerBadge: ZetaAvatarBadge.icon(), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - lowerBadge: ZetaAvatarBadge.icon(), - image: image, - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - borderColor: Zeta.of(context).colors.green, - lowerBadge: ZetaAvatarBadge.icon(), - image: image, - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - ], - ), - ], - ), - Column( - children: [ - Text( - 'ZetaAvatar.initials with special status', - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(height: 15), - Row( - children: [ - Column( - children: ZetaAvatarSize.values.map((size) { - final height = size.pixelSize; - final padding = (height - 14) / 2; - return Column( - children: [ - SizedBox( - height: height, - child: Padding( - padding: EdgeInsets.only(top: padding), - child: Text(size.name.toUpperCase()), + const SizedBox(height: 20), + ], + ); + }).toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + lowerBadge: ZetaAvatarBadge.icon(), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + borderColor: Zeta.of(context).colors.green, + lowerBadge: ZetaAvatarBadge.icon(), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + lowerBadge: ZetaAvatarBadge.icon(), + image: image, + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + borderColor: Zeta.of(context).colors.green, + lowerBadge: ZetaAvatarBadge.icon(), + image: image, + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + ], + ), + ], + ), + Column( + children: [ + Text( + 'ZetaAvatar.initials with special status', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 15), + Row( + children: [ + Column( + children: ZetaAvatarSize.values.map((size) { + final height = size.pixelSize; + final padding = (height - 14) / 2; + return Column( + children: [ + SizedBox( + height: height, + child: Padding( + padding: EdgeInsets.only(top: padding), + child: Text(size.name.toUpperCase()), + ), ), - ), - const SizedBox(height: 20), - ], - ); - }).toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.initials( - size: size, - initials: 'AB', - lowerBadge: ZetaAvatarBadge.icon(), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.initials( - size: size, - initials: 'AB', - borderColor: Zeta.of(context).colors.green, - lowerBadge: ZetaAvatarBadge.icon(), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - ], - ), - ], - ), - Column( - children: [ - Text( - 'ZetaAvatar with notification badge and status badge', - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(height: 15), - Row( - children: [ - Column( - children: ZetaAvatarSize.values.map((size) { - final height = size.pixelSize; - final padding = (height - 14) / 2; - return Column( - children: [ - SizedBox( - height: height, - child: Padding( - padding: EdgeInsets.only(top: padding), - child: Text(size.name.toUpperCase()), + const SizedBox(height: 20), + ], + ); + }).toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.initials( + size: size, + initials: 'AB', + lowerBadge: ZetaAvatarBadge.icon(), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.initials( + size: size, + initials: 'AB', + borderColor: Zeta.of(context).colors.green, + lowerBadge: ZetaAvatarBadge.icon(), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + ], + ), + ], + ), + Column( + children: [ + Text( + 'ZetaAvatar with notification badge and status badge', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 15), + Row( + children: [ + Column( + children: ZetaAvatarSize.values.map((size) { + final height = size.pixelSize; + final padding = (height - 14) / 2; + return Column( + children: [ + SizedBox( + height: height, + child: Padding( + padding: EdgeInsets.only(top: padding), + child: Text(size.name.toUpperCase()), + ), ), - ), - const SizedBox(height: 20), - ], - ); - }).toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - image: image, - upperBadge: ZetaAvatarBadge.notification(value: 3), - lowerBadge: ZetaAvatarBadge.icon(), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.image( - size: size, - image: image, - borderColor: Zeta.of(context).colors.green, - upperBadge: ZetaAvatarBadge.notification(value: 3), - lowerBadge: ZetaAvatarBadge.icon(), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.initials( - size: size, - initials: 'AB', - upperBadge: ZetaAvatarBadge.notification(value: 3), - lowerBadge: ZetaAvatarBadge.icon(), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - const SizedBox(width: 12), - Column( - children: ZetaAvatarSize.values - .map((size) => Column( - children: [ - ZetaAvatar.initials( - size: size, - initials: 'AB', - borderColor: Zeta.of(context).colors.green, - upperBadge: ZetaAvatarBadge.notification(value: 3), - lowerBadge: ZetaAvatarBadge.icon(), - ), - const SizedBox(height: 20), - ], - )) - .toList(), - ), - ], - ), - ], - ), - ].divide(const SizedBox(height: ZetaSpacing.xl_2)).toList(), + const SizedBox(height: 20), + ], + ); + }).toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + image: image, + upperBadge: ZetaAvatarBadge.notification(value: 3), + lowerBadge: ZetaAvatarBadge.icon(), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.image( + size: size, + image: image, + borderColor: Zeta.of(context).colors.green, + upperBadge: ZetaAvatarBadge.notification(value: 3), + lowerBadge: ZetaAvatarBadge.icon(), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.initials( + size: size, + initials: 'AB', + upperBadge: ZetaAvatarBadge.notification(value: 3), + lowerBadge: ZetaAvatarBadge.icon(), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + const SizedBox(width: 12), + Column( + children: ZetaAvatarSize.values + .map((size) => Column( + children: [ + ZetaAvatar.initials( + size: size, + initials: 'AB', + borderColor: Zeta.of(context).colors.green, + upperBadge: ZetaAvatarBadge.notification(value: 3), + lowerBadge: ZetaAvatarBadge.icon(), + ), + const SizedBox(height: 20), + ], + )) + .toList(), + ), + ], + ), + ], + ), + ].divide(const SizedBox(height: ZetaSpacing.xl_2)).toList(), + ), ), ), ); diff --git a/lib/src/components/avatars/avatar.dart b/lib/src/components/avatars/avatar.dart index 50a6a967..f5ccc2a7 100644 --- a/lib/src/components/avatars/avatar.dart +++ b/lib/src/components/avatars/avatar.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; + import '../../../zeta_flutter.dart'; /// [ZetaAvatar] size @@ -47,6 +48,7 @@ class ZetaAvatar extends ZetaStatelessWidget { this.semanticLabel = 'avatar', this.semanticUpperBadgeLabel = 'upperBadge', this.semanticLowerBadgeLabel = 'lowerBadge', + this.initialTextStyle, }); /// Constructor for [ZetaAvatar] with image. @@ -61,7 +63,8 @@ class ZetaAvatar extends ZetaStatelessWidget { this.semanticUpperBadgeLabel = 'upperBadge', this.semanticLowerBadgeLabel = 'lowerBadge', }) : backgroundColor = null, - initials = null; + initials = null, + initialTextStyle = null; /// Constructor for [ZetaAvatar] with initials. const ZetaAvatar.initials({ @@ -75,6 +78,7 @@ class ZetaAvatar extends ZetaStatelessWidget { this.semanticLabel = 'avatar', this.semanticUpperBadgeLabel = 'upperBadge', this.semanticLowerBadgeLabel = 'lowerBadge', + this.initialTextStyle, }) : image = null; /// Constructor for [ZetaAvatar] with initials from a full name. @@ -89,6 +93,7 @@ class ZetaAvatar extends ZetaStatelessWidget { this.semanticLabel = 'avatar', this.semanticUpperBadgeLabel = 'upperBadge', this.semanticLowerBadgeLabel = 'lowerBadge', + this.initialTextStyle, }) : image = null, initials = name.initials; @@ -132,6 +137,19 @@ class ZetaAvatar extends ZetaStatelessWidget { /// {@macro zeta-widget-semantic-label} final String semanticUpperBadgeLabel; + /// Text style for initials. + /// + /// Defaults to: + /// ```dart + /// TextStyle( + /// fontSize: size.fontSize, + /// letterSpacing: ZetaSpacing.none, + /// color: backgroundColor?.onColor, + /// fontWeight: FontWeight.w500, + /// ) + /// ``` + final TextStyle? initialTextStyle; + /// Return copy of avatar with certain changed fields ZetaAvatar copyWith({ ZetaAvatarSize? size, @@ -168,12 +186,13 @@ class ZetaAvatar extends ZetaStatelessWidget { ? Center( child: Text( size == ZetaAvatarSize.xs ? initials!.substring(0, 1) : initials!, - style: TextStyle( - fontSize: size.fontSize, - letterSpacing: ZetaSpacing.none, - color: backgroundColor?.onColor, - fontWeight: FontWeight.w500, - ), + style: initialTextStyle ?? + TextStyle( + fontSize: size.fontSize, + letterSpacing: ZetaSpacing.none, + color: backgroundColor?.onColor, + fontWeight: FontWeight.w500, + ), ), ) : null); @@ -261,7 +280,8 @@ class ZetaAvatar extends ZetaStatelessWidget { ..add(ColorProperty('statusColor', borderColor)) ..add(StringProperty('semanticUpperBadgeValue', semanticUpperBadgeLabel)) ..add(StringProperty('semanticValue', semanticLabel)) - ..add(StringProperty('semanticLowerBadgeValue', semanticLowerBadgeLabel)); + ..add(StringProperty('semanticLowerBadgeValue', semanticLowerBadgeLabel)) + ..add(DiagnosticsProperty('initialTextStyle', initialTextStyle)); } } diff --git a/lib/src/zeta.dart b/lib/src/zeta.dart index 1c7ec703..59103626 100644 --- a/lib/src/zeta.dart +++ b/lib/src/zeta.dart @@ -79,7 +79,8 @@ class Zeta extends InheritedWidget { return oldWidget.contrast != contrast || oldWidget.themeMode != themeMode || oldWidget.themeData != themeData || - oldWidget._mediaBrightness != _mediaBrightness; + oldWidget._mediaBrightness != _mediaBrightness || + oldWidget.rounded != rounded; } /// Fetches the [Zeta] instance from the provided [context]. diff --git a/lib/src/zeta_provider.dart b/lib/src/zeta_provider.dart index 92eeb198..4f4cbe97 100644 --- a/lib/src/zeta_provider.dart +++ b/lib/src/zeta_provider.dart @@ -1,17 +1,28 @@ +// ignore_for_file: prefer_function_declarations_over_variables + import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'theme/contrast.dart'; -import 'theme/theme_data.dart'; -import 'theme/theme_service.dart'; -import 'zeta.dart'; +import '../zeta_flutter.dart'; -/// A typedef for the ZetaAppBuilder function which takes [BuildContext], [ZetaThemeData], +/// A typedef for the ZetaAppBuilder function which passes [BuildContext], [ZetaThemeData], /// and [ThemeMode] and returns a [Widget]. typedef ZetaAppBuilder = Widget Function(BuildContext context, ZetaThemeData themeData, ThemeMode themeMode); +/// A typedef for the ZetaAppBuilder function which passes [BuildContext], light [ThemeData], +/// dark [ThemeData] and [ThemeMode] and returns a [Widget]. +typedef ZetaBaseAppBuilder = Widget Function( + BuildContext context, + ThemeData light, + ThemeData dark, + ThemeMode themeMode, +); + +final _emptyBuilder = (_, __, ___) => const Nothing(); +final _emptyBase = (_, __, ___, ____) => const Nothing(); + /// A widget that provides Zeta theming and contrast data down the widget tree. class ZetaProvider extends StatefulWidget with Diagnosticable { /// Constructs a [ZetaProvider] widget. @@ -19,13 +30,33 @@ class ZetaProvider extends StatefulWidget with Diagnosticable { /// The [builder] argument is required. The [initialThemeMode], [initialContrast], /// and [initialThemeData] arguments provide initial values. ZetaProvider({ + super.key, required this.builder, this.initialThemeMode = ThemeMode.system, this.initialContrast = ZetaContrast.aa, - this.themeService, ZetaThemeData? initialThemeData, + this.themeService, + this.initialRounded = true, + }) : initialZetaThemeData = initialThemeData ?? ZetaThemeData(), + baseBuilder = _emptyBase, + initialThemeData = null; + + /// ZetaProvider constructor that returns light and dark [ThemeData]s ready to be consumed. + /// + /// The [builder] argument is required. The [initialThemeMode], [initialContrast], + /// and [initialThemeData] arguments provide initial values. + ZetaProvider.base({ super.key, - }) : initialThemeData = initialThemeData ?? ZetaThemeData(); + required ZetaBaseAppBuilder builder, + this.initialThemeMode = ThemeMode.system, + this.initialContrast = ZetaContrast.aa, + ZetaThemeData? initialZetaThemeData, + this.initialThemeData, + this.initialRounded = true, + }) : baseBuilder = builder, + initialZetaThemeData = initialZetaThemeData ?? ZetaThemeData(), + builder = _emptyBuilder, + themeService = null; /// Specifies the initial theme mode for the app. /// @@ -37,7 +68,7 @@ class ZetaProvider extends StatefulWidget with Diagnosticable { /// /// This contains all the theming information. If not provided, /// it defaults to a basic [ZetaThemeData] instance. - final ZetaThemeData initialThemeData; + final ZetaThemeData initialZetaThemeData; /// Specifies the initial contrast setting for the app. /// @@ -50,11 +81,22 @@ class ZetaProvider extends StatefulWidget with Diagnosticable { /// and is expected to return a [Widget]. final ZetaAppBuilder builder; + /// A builder function to construct the widget tree using the provided theming information. + /// + /// This builder returns light and dark [ThemeData]s ready to be consumed. + final ZetaBaseAppBuilder baseBuilder; + /// A `ZetaThemeService` /// /// It provides the structure for loading and saving themes in Zeta application. final ZetaThemeService? themeService; + /// [ThemeData] used in [ZetaProvider.base] constructor as the foundation for a custom theme. + final ThemeData? initialThemeData; + + /// Sets whether app should start with components in their rounded or sharp variants. + final bool initialRounded; + @override State createState() => ZetaProviderState(); @@ -62,11 +104,14 @@ class ZetaProvider extends StatefulWidget with Diagnosticable { void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties - ..add(DiagnosticsProperty('themeData', initialThemeData)) + ..add(DiagnosticsProperty('themeData', initialZetaThemeData)) ..add(ObjectFlagProperty.has('builder', builder)) ..add(EnumProperty('initialThemeMode', initialThemeMode)) ..add(EnumProperty('initialContrast', initialContrast)) - ..add(DiagnosticsProperty('themeService', themeService)); + ..add(DiagnosticsProperty('themeService', themeService)) + ..add(ObjectFlagProperty.has('customBuilder', baseBuilder)) + ..add(DiagnosticsProperty('initialThemeData', initialThemeData)) + ..add(DiagnosticsProperty('initialRounded', initialRounded)); } /// Retrieves the [ZetaProviderState] from the provided context. @@ -110,6 +155,8 @@ class ZetaProviderState extends State with Diagnosticable, Widgets /// Represents the late initialization of the system's current brightness (dark or light mode). late Brightness _platformBrightness; + late bool _rounded; + /// Represents a nullable brightness value to be used for brightness change debouncing. Brightness? _debounceBrightness; @@ -137,8 +184,11 @@ class ZetaProviderState extends State with Diagnosticable, Widgets // Set the initial contrast. _contrast = widget.initialContrast; + // Sets the initial rounded. + _rounded = widget.initialRounded; + // Apply the initial contrast to the theme data. - _themeData = widget.initialThemeData.apply(contrast: _contrast); + _themeData = widget.initialZetaThemeData.apply(contrast: _contrast); } /// Clean up function to be called when this object is removed from the tree. @@ -188,10 +238,33 @@ class ZetaProviderState extends State with Diagnosticable, Widgets @override Widget build(BuildContext context) { + if (widget.baseBuilder != _emptyBase) { + return Zeta( + themeMode: _themeMode, + themeData: _themeData, + contrast: _contrast, + mediaBrightness: _platformBrightness, + rounded: _rounded, + child: widget.baseBuilder( + context, + generateZetaTheme( + brightness: Brightness.light, + existingTheme: ThemeData(colorScheme: _themeData.colorsLight.toScheme()), + ), + generateZetaTheme( + brightness: Brightness.dark, + existingTheme: ThemeData(colorScheme: _themeData.colorsDark.toScheme()), + ), + _themeMode, + ), + ); + } + return Zeta( themeMode: _themeMode, themeData: _themeData, contrast: _contrast, + rounded: _rounded, mediaBrightness: _platformBrightness, child: widget.builder(context, _themeData, _themeMode), ); @@ -202,11 +275,13 @@ class ZetaProviderState extends State with Diagnosticable, Widgets super.didUpdateWidget(oldWidget); if (oldWidget.initialContrast != widget.initialContrast || oldWidget.initialThemeMode != widget.initialThemeMode || - oldWidget.initialThemeData != widget.initialThemeData) { + oldWidget.initialThemeData != widget.initialThemeData || + oldWidget.initialRounded != widget.initialRounded) { setState(() { _themeMode = widget.initialThemeMode; _contrast = widget.initialContrast; - _themeData = widget.initialThemeData.apply(contrast: _contrast); + _themeData = widget.initialZetaThemeData.apply(contrast: _contrast); + _rounded = widget.initialRounded; }); } } @@ -236,6 +311,16 @@ class ZetaProviderState extends State with Diagnosticable, Widgets }); } + /// Updates the current rounded. + // ignore: avoid_positional_boolean_parameters + void updateRounded(bool rounded) { + //TODO: This is not triggering rebuild + setState(() { + _rounded = rounded; + _saveThemeChange(); + }); + } + void _saveThemeChange() { unawaited( widget.themeService?.saveTheme( @@ -255,3 +340,20 @@ class ZetaProviderState extends State with Diagnosticable, Widgets ..add(EnumProperty('themeMode', _themeMode)); } } + +/// Creates a variant of [ThemeData] with added [Zeta] styles. +ThemeData generateZetaTheme({ + required Brightness brightness, + ThemeData? existingTheme, + String? fontFamily, +}) { + return ThemeData( + useMaterial3: existingTheme?.useMaterial3 ?? true, + fontFamily: fontFamily ?? kZetaFontFamily, + brightness: existingTheme?.brightness ?? brightness, + scaffoldBackgroundColor: existingTheme?.colorScheme.surfaceTertiary, + colorScheme: existingTheme?.colorScheme, + textTheme: existingTheme?.textTheme ?? zetaTextTheme, + iconTheme: existingTheme?.iconTheme ?? const IconThemeData(size: 20), + ); +} diff --git a/test/test_utils/test_app.dart b/test/test_utils/test_app.dart index 6e2396fb..a84dc976 100644 --- a/test/test_utils/test_app.dart +++ b/test/test_utils/test_app.dart @@ -20,21 +20,13 @@ class TestApp extends StatelessWidget { @override Widget build(BuildContext context) { - return ZetaProvider( + return ZetaProvider.base( initialThemeMode: themeMode ?? ThemeMode.system, - initialThemeData: ZetaThemeData(rounded: rounded ?? true), - builder: (context, themeData, themeMode) { + builder: (context, lightTheme, darkTheme, themeMode) { return MaterialApp( - theme: ThemeData( - fontFamily: themeData.fontFamily, - colorScheme: themeData.colorsLight.toScheme(), - textTheme: zetaTextTheme, - ), - darkTheme: ThemeData( - fontFamily: themeData.fontFamily, - colorScheme: themeData.colorsDark.toScheme(), - textTheme: zetaTextTheme, - ), + theme: lightTheme, + darkTheme: darkTheme, + themeMode: themeMode, home: Scaffold( body: removeBody ? home From b5b61bb2231bc260e9acb8cec01764476c1c7fa7 Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 2 Jul 2024 17:12:46 +0100 Subject: [PATCH 5/9] refactor: Implement global rounded in example app --- example/lib/pages/assets/icons_example.dart | 17 +-- .../pages/components/accordion_example.dart | 42 +------ .../lib/pages/components/avatar_example.dart | 4 +- .../lib/pages/components/badges_example.dart | 28 +---- .../lib/pages/components/banner_example.dart | 34 +++--- .../components/bottom_sheet_example.dart | 4 +- .../lib/pages/components/button_example.dart | 45 +++---- .../pages/components/checkbox_example.dart | 13 +- .../lib/pages/components/chip_example.dart | 111 ++++-------------- .../pages/components/date_input_example.dart | 30 ++--- .../lib/pages/components/dialog_example.dart | 17 ++- .../lib/pages/components/dialpad_example.dart | 4 +- .../pages/components/dropdown_example.dart | 4 +- .../components/filter_selection_example.dart | 13 -- .../components/global_header_example.dart | 57 +++++---- .../lib/pages/components/list_example.dart | 2 +- .../pages/components/list_item_example.dart | 6 +- .../components/navigation_bar_example.dart | 8 +- .../components/navigation_rail_example.dart | 8 +- .../components/notification_list_example.dart | 4 +- .../components/password_input_example.dart | 6 +- .../pages/components/phone_input_example.dart | 24 ---- .../pages/components/progress_example.dart | 11 +- .../components/segmented_control_example.dart | 2 +- .../components/select_input_example.dart | 5 +- .../pages/components/snackbar_example.dart | 3 +- .../lib/pages/components/stepper_example.dart | 13 +- .../components/stepper_input_example.dart | 2 +- .../lib/pages/components/tabs_example.dart | 14 +-- .../pages/components/text_input_example.dart | 10 +- .../pages/components/time_input_example.dart | 1 - .../lib/pages/components/tooltip_example.dart | 26 ---- .../pages/components/top_app_bar_example.dart | 38 +++--- example/lib/utils/theme_color_switch.dart | 2 +- example/lib/utils/theme_mode_switch.dart | 2 +- .../pages/assets/icon_widgetbook.dart | 2 +- .../pages/components/avatar_widgetbook.dart | 2 +- .../pages/components/banner_widgetbook.dart | 4 +- .../components/bottom_sheet_widgetbook.dart | 6 +- .../pages/components/button_widgetbook.dart | 4 +- .../pages/components/chip_widgetbook.dart | 4 +- .../pages/components/dialog_widgetbook.dart | 8 +- .../dropdown_list_item_widgetbook.dart | 2 +- .../pages/components/dropdown_widgetbook.dart | 4 +- .../components/global_header_widgetbook.dart | 8 +- .../components/list_item_widgetbook.dart | 2 +- .../navigation_rail_widgetbook.dart | 4 +- .../notification_list_item_widgetbook.dart | 2 +- .../segmented_control_widgetbook.dart | 4 +- .../components/select_input_widgetbook.dart | 4 +- .../components/snack_bar_widgetbook.dart | 4 +- .../pages/components/tabs_widgetbook.dart | 4 +- .../components/text_input_widgetbook.dart | 2 +- .../components/top_app_bar_widgetbook.dart | 28 ++--- lib/src/components/badges/tag.dart | 8 +- lib/src/components/snack_bar/snack_bar.dart | 6 +- 56 files changed, 238 insertions(+), 484 deletions(-) diff --git a/example/lib/pages/assets/icons_example.dart b/example/lib/pages/assets/icons_example.dart index c39695a0..6d15709a 100644 --- a/example/lib/pages/assets/icons_example.dart +++ b/example/lib/pages/assets/icons_example.dart @@ -15,6 +15,7 @@ class IconsExample extends StatefulWidget { class _IconsExampleState extends State { bool showGeneratedColors = false; +//TODO: LUKE ADD NAMES TO ICONS @override Widget build(BuildContext context) { return ExampleScaffold( @@ -23,22 +24,12 @@ class _IconsExampleState extends State { padding: EdgeInsets.all(ZetaSpacing.medium), child: Column( children: [ - Text('Round', style: ZetaTextStyles.bodyLarge), Wrap( - spacing: 8, - runSpacing: 8, - children: icons.values.map((e) => Icon(e)).toList(), + spacing: 20, + runSpacing: 20, + children: icons.values.map((e) => ZetaIcon(e, size: 48)).toList(), ), const SizedBox(height: 20), - Text('Sharp', style: ZetaTextStyles.bodyLarge), - Wrap( - spacing: 8, - runSpacing: 8, - children: icons.values - .map((e) => - Icon(IconData(e.codePoint, fontFamily: ZetaIcons.familySharp, fontPackage: ZetaIcons.package))) - .toList(), - ), ], ), ), diff --git a/example/lib/pages/components/accordion_example.dart b/example/lib/pages/components/accordion_example.dart index b0561a66..669835c8 100644 --- a/example/lib/pages/components/accordion_example.dart +++ b/example/lib/pages/components/accordion_example.dart @@ -15,7 +15,7 @@ class AccordionExample extends StatelessWidget { padding: EdgeInsets.all(ZetaSpacing.medium), child: Column( children: [ - Text('Rounded Divider'), + Text('Divider'), const SizedBox(height: 20), ZetaAccordion( title: 'title', @@ -29,7 +29,7 @@ class AccordionExample extends StatelessWidget { ), ZetaAccordion(title: 'title'), const SizedBox(height: 40), - Text('Rounded Contained'), + Text('Contained'), const SizedBox(height: 20), ZetaAccordion( contained: true, @@ -47,44 +47,6 @@ class AccordionExample extends StatelessWidget { title: 'title', ), const SizedBox(height: 40), - Text('Sharp Divider'), - const SizedBox(height: 20), - ZetaAccordion( - contained: false, - title: 'title', - rounded: false, - child: Column( - children: [ - ListTile(title: Text('List Item')), - ListTile(title: Text('List Item')), - ListTile(title: Text('List Item')), - ], - ), - ), - ZetaAccordion( - contained: false, - title: 'title', - rounded: false, - ), - Text('Sharp Contained'), - const SizedBox(height: 20), - ZetaAccordion( - contained: true, - title: 'title', - rounded: false, - child: Column( - children: [ - ListTile(title: Text('List Item')), - ListTile(title: Text('List Item')), - ListTile(title: Text('List Item')), - ], - ), - ), - ZetaAccordion( - contained: true, - title: 'title', - rounded: false, - ), ].divide(const SizedBox.square(dimension: 10)).toList(), ), ), diff --git a/example/lib/pages/components/avatar_example.dart b/example/lib/pages/components/avatar_example.dart index ff84aa2d..de548db9 100644 --- a/example/lib/pages/components/avatar_example.dart +++ b/example/lib/pages/components/avatar_example.dart @@ -12,8 +12,8 @@ class AvatarExample extends StatelessWidget { Widget build(BuildContext context) { final Widget image = CachedNetworkImage( imageUrl: "https://i.ytimg.com/vi/KItsWUzFUOs/maxresdefault.jpg", - placeholder: (context, url) => Icon(ZetaIcons.user_round), - errorWidget: (context, url, error) => Icon(Icons.error), + placeholder: (context, url) => ZetaIcon(ZetaIcons.user), + errorWidget: (context, url, error) => ZetaIcon(ZetaIcons.error), fit: BoxFit.cover, ); diff --git a/example/lib/pages/components/badges_example.dart b/example/lib/pages/components/badges_example.dart index 5fe86ef2..9d33f3df 100644 --- a/example/lib/pages/components/badges_example.dart +++ b/example/lib/pages/components/badges_example.dart @@ -19,9 +19,9 @@ class BadgesExample extends StatelessWidget { _DividingText('Status Label'), _StatusLabel(), _DividingText('Priority Pill'), - _PriorityPill(), + _PriorityPill(ZetaPriorityPillSize.large), const SizedBox(height: ZetaSpacing.xl_4), - _PriorityPill(size: ZetaPriorityPillSize.small), + _PriorityPill(ZetaPriorityPillSize.small), _DividingText('Badge'), _Badge(), _DividingText('Indicators'), @@ -57,9 +57,7 @@ class _StatusLabel extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ ZetaStatusLabel(label: 'Label', status: type), - ZetaStatusLabel(label: 'Label', status: type, customIcon: ZetaIcons.star_round), - ZetaStatusLabel(label: 'Label', status: type, rounded: false), - ZetaStatusLabel(label: 'Label', status: type, rounded: false, customIcon: ZetaIcons.star_sharp), + ZetaStatusLabel(label: 'Label', status: type, customIcon: ZetaIcons.star), ], ); } @@ -79,9 +77,7 @@ class _StatusLabel extends StatelessWidget { } class _PriorityPill extends StatelessWidget { - const _PriorityPill({ - this.size = ZetaPriorityPillSize.large, - }); + const _PriorityPill(this.size); final ZetaPriorityPillSize size; @@ -108,15 +104,6 @@ class _PriorityPill extends StatelessWidget { ZetaPriorityPill(size: size, type: ZetaPriorityPillType.low), ].divide(const SizedBox.square(dimension: ZetaSpacing.xl_2)).toList(), ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ZetaPriorityPill(size: size, rounded: false), - ZetaPriorityPill(size: size, rounded: false, type: ZetaPriorityPillType.high), - ZetaPriorityPill(size: size, rounded: false, type: ZetaPriorityPillType.medium), - ZetaPriorityPill(size: size, rounded: false, type: ZetaPriorityPillType.low), - ].divide(const SizedBox.square(dimension: ZetaSpacing.xl_2)).toList(), - ), ], ); } @@ -131,7 +118,6 @@ class _Badge extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ ZetaLabel(label: 'Label', status: type), - ZetaLabel(label: 'Label', status: type, rounded: false), ], ); } @@ -243,10 +229,8 @@ class _Tags extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.min, children: [ - ZetaTag.left(label: 'Sharp', rounded: false), - ZetaTag.right(label: 'Sharp', rounded: false), - ZetaTag.left(label: 'Rounded'), - ZetaTag.right(label: 'Rounded'), + ZetaTag.left(label: 'Left'), + ZetaTag.right(label: 'Right'), ].divide(SizedBox.square(dimension: ZetaSpacing.xl_2)).toList(), ), ); diff --git a/example/lib/pages/components/banner_example.dart b/example/lib/pages/components/banner_example.dart index 002848c8..800879fc 100644 --- a/example/lib/pages/components/banner_example.dart +++ b/example/lib/pages/components/banner_example.dart @@ -24,7 +24,7 @@ class BannerExample extends StatelessWidget { title: 'Centered', context: context, titleStart: true, - leadingIcon: ZetaIcons.info_round, + leadingIcon: ZetaIcons.info, ), ZetaBanner( type: ZetaBannerStatus.primary, @@ -36,30 +36,30 @@ class BannerExample extends StatelessWidget { context: context, title: 'Title left with arrow', titleStart: true, - trailing: Icon(ZetaIcons.chevron_right_round), + trailing: ZetaIcon(ZetaIcons.chevron_right), ), ZetaBanner( type: ZetaBannerStatus.primary, title: 'Title left + Icon', titleStart: true, context: context, - leadingIcon: ZetaIcons.info_round, + leadingIcon: ZetaIcons.info, ), ZetaBanner( type: ZetaBannerStatus.primary, context: context, title: 'Title left + Icon with Arrow', titleStart: true, - leadingIcon: ZetaIcons.info_round, + leadingIcon: ZetaIcons.info, trailing: IconButton( - icon: Icon(ZetaIcons.chevron_right_round), + icon: ZetaIcon(ZetaIcons.chevron_right), onPressed: () { ScaffoldMessenger.of(context).showMaterialBanner(ZetaBanner( title: 'Title', context: context, type: ZetaBannerStatus.primary, trailing: IconButton( - icon: Icon(ZetaIcons.close_round), + icon: ZetaIcon(ZetaIcons.close), onPressed: () => ScaffoldMessenger.of(context).clearMaterialBanners(), ), )); @@ -72,16 +72,16 @@ class BannerExample extends StatelessWidget { context: context, title: 'Centered', titleStart: true, - leadingIcon: ZetaIcons.info_round, + leadingIcon: ZetaIcons.info, trailing: IconButton( - icon: Icon(ZetaIcons.chevron_right_round), + icon: ZetaIcon(ZetaIcons.chevron_right), onPressed: () { ScaffoldMessenger.of(context).showMaterialBanner(ZetaBanner( title: 'Title', context: context, type: ZetaBannerStatus.positive, trailing: IconButton( - icon: Icon(ZetaIcons.close_round), + icon: ZetaIcon(ZetaIcons.close), onPressed: () => ScaffoldMessenger.of(context).clearMaterialBanners(), ), )); @@ -93,16 +93,16 @@ class BannerExample extends StatelessWidget { title: 'Centered', context: context, titleStart: true, - leadingIcon: ZetaIcons.info_round, + leadingIcon: ZetaIcons.info, trailing: IconButton( - icon: Icon(ZetaIcons.chevron_right_round), + icon: ZetaIcon(ZetaIcons.chevron_right), onPressed: () { ScaffoldMessenger.of(context).showMaterialBanner(ZetaBanner( title: 'Title', context: context, type: ZetaBannerStatus.warning, trailing: IconButton( - icon: Icon(ZetaIcons.close_round), + icon: ZetaIcon(ZetaIcons.close), onPressed: () => ScaffoldMessenger.of(context).clearMaterialBanners(), ), )); @@ -114,16 +114,16 @@ class BannerExample extends StatelessWidget { title: 'Centered', context: context, titleStart: true, - leadingIcon: ZetaIcons.info_round, + leadingIcon: ZetaIcons.info, trailing: IconButton( - icon: Icon(ZetaIcons.chevron_right_round), + icon: ZetaIcon(ZetaIcons.chevron_right), onPressed: () { ScaffoldMessenger.of(context).showMaterialBanner(ZetaBanner( title: 'Title', context: context, type: ZetaBannerStatus.negative, trailing: IconButton( - icon: Icon(ZetaIcons.close_round), + icon: ZetaIcon(ZetaIcons.close), onPressed: () => ScaffoldMessenger.of(context).clearMaterialBanners(), ), )); @@ -141,7 +141,6 @@ class BannerExample extends StatelessWidget { onClose: () {}, status: ZetaWidgetStatus.positive, title: 'Banner Title', - rounded: false, ), ZetaInPageBanner( content: Text(_content), @@ -155,7 +154,6 @@ class BannerExample extends StatelessWidget { onClose: () {}, status: ZetaWidgetStatus.negative, title: 'Banner Title Banner Title Banner Title Banner Title', - rounded: false, ), ZetaInPageBanner( content: Text(_content), @@ -177,7 +175,6 @@ class BannerExample extends StatelessWidget { Column buildExampleBannerColumn( ZetaWidgetStatus status, { - bool rounded = true, IconData? customIcon, }) { return Column( @@ -187,7 +184,6 @@ class BannerExample extends StatelessWidget { ZetaInPageBanner( content: Text(_content), onClose: () {}, - rounded: rounded, status: status, title: 'Banner Title', customIcon: customIcon, diff --git a/example/lib/pages/components/bottom_sheet_example.dart b/example/lib/pages/components/bottom_sheet_example.dart index ff627041..16d51987 100644 --- a/example/lib/pages/components/bottom_sheet_example.dart +++ b/example/lib/pages/components/bottom_sheet_example.dart @@ -38,7 +38,7 @@ class _BottomSheetExampleState extends State { 6, (index) => ZetaMenuItem.vertical( label: Text('Menu Item'), - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), onTap: () {}, ), ), @@ -63,7 +63,7 @@ class _BottomSheetExampleState extends State { (index) => ZetaMenuItem.horizontal( label: Text('Menu Item'), onTap: () {}, - leading: Icon(ZetaIcons.star_round), + leading: ZetaIcon(ZetaIcons.star), ), ), ), diff --git a/example/lib/pages/components/button_example.dart b/example/lib/pages/components/button_example.dart index 5f6005af..c2c77ad8 100644 --- a/example/lib/pages/components/button_example.dart +++ b/example/lib/pages/components/button_example.dart @@ -110,21 +110,16 @@ class _ButtonExampleState extends State { flex: 8, child: Column( children: [ - Text('Rounded Buttons', style: ZetaTextStyles.displayMedium), - Column(children: buttons(ZetaWidgetBorder.rounded)), - Text('Sharp Buttons', style: ZetaTextStyles.displayMedium), - Column(children: buttons(ZetaWidgetBorder.sharp)), + Text('Regular Buttons', style: ZetaTextStyles.displayMedium), + Column(children: buttons(null)), Text('Full Buttons', style: ZetaTextStyles.displayMedium), Column(children: buttons(ZetaWidgetBorder.full)), Text('Icon Buttons', style: ZetaTextStyles.displayLarge), - Text('Rounded Buttons', style: ZetaTextStyles.displayMedium), - Column(children: inputButtons(ZetaWidgetBorder.rounded)), - Text('Sharp Buttons', style: ZetaTextStyles.displayMedium), - Column(children: inputButtons(ZetaWidgetBorder.sharp)), + Column(children: iconButtons(null)), + Text('Full Icon Buttons', style: ZetaTextStyles.displayMedium), + Column(children: iconButtons(ZetaWidgetBorder.full)), Text('Group Buttons', style: ZetaTextStyles.displayLarge), - Column( - children: groupButtons(ZetaWidgetBorder.rounded), - ), + Column(children: groupButtons(null)), Text('Floating Action Buttons', style: ZetaTextStyles.displayMedium), Text('Tap buttons to change current FAB: ', style: ZetaTextStyles.bodyMedium), Wrap(children: fabs.divide(SizedBox.square(dimension: 10)).toList()), @@ -138,7 +133,7 @@ class _ButtonExampleState extends State { ); } - List buttons(ZetaWidgetBorder borderType) { + List buttons(ZetaWidgetBorder? borderType) { return List.generate( ZetaWidgetSize.values.length + 1, (index) => SingleChildScrollView( @@ -160,7 +155,7 @@ class _ButtonExampleState extends State { ).reversed.divide(const SizedBox.square(dimension: ZetaSpacing.xl_2)).toList(); } - List inputButtons(ZetaWidgetBorder borderType) { + List iconButtons(ZetaWidgetBorder? borderType) { return List.generate( ZetaWidgetSize.values.length + 1, (index) => SingleChildScrollView( @@ -175,8 +170,8 @@ class _ButtonExampleState extends State { size: ZetaWidgetSize.values[index == 0 ? 0 : index - 1], borderType: borderType, icon: ZetaButtonType.values[index2] == ZetaButtonType.negative - ? ZetaIcons.delete_round - : ZetaIcons.more_horizontal_round, + ? ZetaIcons.delete + : ZetaIcons.more_horizontal, ), ).divide(const SizedBox.square(dimension: ZetaSpacing.xl_2)).toList(), ), @@ -184,9 +179,9 @@ class _ButtonExampleState extends State { ).reversed.divide(const SizedBox.square(dimension: ZetaSpacing.xl_2)).toList(); } - List groupButtons(ZetaWidgetBorder) { + List groupButtons(ZetaWidgetBorder? ZetaWidgetBorder) { return [ - ZetaButtonGroup(isLarge: true, rounded: true, buttons: [ + ZetaButtonGroup(isLarge: true, buttons: [ ZetaGroupButton( onPressed: () {}, label: "Label", @@ -196,7 +191,7 @@ class _ButtonExampleState extends State { label: "Label", ), ]), - ZetaButtonGroup(isLarge: true, rounded: true, buttons: [ + ZetaButtonGroup(isLarge: true, buttons: [ ZetaGroupButton( onPressed: () {}, label: "Label", @@ -212,11 +207,10 @@ class _ButtonExampleState extends State { ]), ZetaButtonGroup( isLarge: true, - rounded: true, isInverse: true, buttons: [ ZetaGroupButton.icon( - icon: ZetaIcons.star_round, + icon: ZetaIcons.star, onPressed: () {}, label: "Label", ), @@ -229,33 +223,32 @@ class _ButtonExampleState extends State { items: [ ZetaDropdownItem( value: 'Item 1', - icon: Icon(ZetaIcons.star_half), + icon: ZetaIcon(ZetaIcons.star_half), ), ZetaDropdownItem(value: 'Item 2'), ], ), ZetaGroupButton.icon( - icon: ZetaIcons.star_round, + icon: ZetaIcons.star, label: "Label", ), ], ), ZetaButtonGroup( isLarge: true, - rounded: true, buttons: [ ZetaGroupButton.icon( - icon: ZetaIcons.star_round, + icon: ZetaIcons.star, label: "Label", onPressed: () {}, ), ZetaGroupButton.icon( - icon: ZetaIcons.star_round, + icon: ZetaIcons.star, label: "Label", onPressed: () {}, ), ZetaGroupButton.icon( - icon: ZetaIcons.star_round, + icon: ZetaIcons.star, label: "Label", onPressed: () {}, ), diff --git a/example/lib/pages/components/checkbox_example.dart b/example/lib/pages/components/checkbox_example.dart index 4249cd27..4dc69b46 100644 --- a/example/lib/pages/components/checkbox_example.dart +++ b/example/lib/pages/components/checkbox_example.dart @@ -43,14 +43,10 @@ class _CheckBoxExampleState extends State { ), ], ), - Row(children: [Text('Sharp Checkbox Enabled')]), + Row(children: [Text('Checkbox Enabled')]), getCheckBoxRow(isEnabled: true), - Row(children: [Text('Sharp Checkbox Disabled')]), + Row(children: [Text('Checkbox Disabled')]), getCheckBoxRow(isEnabled: false), - Row(children: [Text('Rounded Checkbox Enabled')]), - getCheckBoxRow(isEnabled: true, isSharp: false), - Row(children: [Text('Rounded Checkbox Disabled')]), - getCheckBoxRow(isEnabled: false, isSharp: false), ], ), ), @@ -58,7 +54,7 @@ class _CheckBoxExampleState extends State { } } -Row getCheckBoxRow({required bool isEnabled, bool isSharp = true}) { +Row getCheckBoxRow({required bool isEnabled}) { return Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceAround, @@ -66,17 +62,14 @@ Row getCheckBoxRow({required bool isEnabled, bool isSharp = true}) { ZetaCheckbox( value: true, label: 'Label', - rounded: !isSharp, onChanged: isEnabled ? (value) => {} : null, ), ZetaCheckbox( value: false, label: 'Label', - rounded: !isSharp, onChanged: isEnabled ? (value) => {} : null, ), ZetaCheckbox( - rounded: !isSharp, onChanged: isEnabled ? (value) => {} : null, value: false, ) diff --git a/example/lib/pages/components/chip_example.dart b/example/lib/pages/components/chip_example.dart index 8eb0222f..2294e231 100644 --- a/example/lib/pages/components/chip_example.dart +++ b/example/lib/pages/components/chip_example.dart @@ -21,33 +21,10 @@ class _ChipExampleState extends State { style: TextStyle(fontWeight: FontWeight.bold), ), const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Expanded( - child: Column( - children: [ - ZetaInputChip( - label: 'Label', - leading: ZetaAvatar.initials(initials: "ZA"), - trailing: IconButton(icon: Icon(ZetaIcons.close_round), onPressed: () {}), - ), - ], - ), - ), - Expanded( - child: Column( - children: [ - ZetaInputChip( - label: 'Label', - rounded: false, - leading: const Icon(ZetaIcons.user_round), - trailing: Icon(ZetaIcons.close_sharp), - ), - ], - ), - ), - ], + ZetaInputChip( + label: 'Label', + leading: const ZetaIcon(ZetaIcons.user), + trailing: ZetaIcon(ZetaIcons.close), ), ]); @@ -58,35 +35,14 @@ class _ChipExampleState extends State { style: TextStyle(fontWeight: FontWeight.bold), ), const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Expanded( - child: Column( - children: [ - ZetaAssistChip( - label: 'Label', - leading: Icon(ZetaIcons.star_round), - draggable: true, - data: 'Round Assist chip', - ), - ], - ), - ), - Expanded( - child: Column( - children: [ - ZetaAssistChip( - label: 'Label', - rounded: false, - leading: Icon(ZetaIcons.star_round), - data: 'Sharp Assist chip', - draggable: true, - ), - ], - ), - ), - ], + SizedBox( + height: 40, + child: ZetaAssistChip( + label: 'Label', + leading: ZetaIcon(ZetaIcons.star), + draggable: true, + data: 'Assist chip', + ), ), ]); @@ -97,35 +53,14 @@ class _ChipExampleState extends State { style: TextStyle(fontWeight: FontWeight.bold), ), const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Expanded( - child: Column( - children: [ - ZetaFilterChip( - label: 'Label', - selected: true, - data: 'Round filter chip', - draggable: true, - ), - ], - ), - ), - Expanded( - child: Column( - children: [ - ZetaFilterChip( - label: 'Label', - rounded: false, - selected: true, - data: 'Sharp filter chip', - draggable: true, - ), - ], - ), - ), - ], + SizedBox( + height: 40, + child: ZetaFilterChip( + label: 'Label', + selected: true, + data: 'Filter chip', + draggable: true, + ), ), ]); final colors = Zeta.of(context).colors; @@ -136,12 +71,6 @@ class _ChipExampleState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Row( - children: [ - Expanded(child: Center(child: Text('Rounded'))), - Expanded(child: Center(child: Text('Sharp'))), - ], - ), inputChipExample, assistChipExample, filterChipExample, diff --git a/example/lib/pages/components/date_input_example.dart b/example/lib/pages/components/date_input_example.dart index 89037f82..a1e3218a 100644 --- a/example/lib/pages/components/date_input_example.dart +++ b/example/lib/pages/components/date_input_example.dart @@ -23,7 +23,7 @@ class _DateInputExampleState extends State { children: [ Padding( padding: const EdgeInsets.only(top: 20), - child: Text('Rounded', style: ZetaTextStyles.titleMedium), + child: Text('Large', style: ZetaTextStyles.titleMedium), ), Padding( padding: const EdgeInsets.all(20), @@ -32,12 +32,13 @@ class _DateInputExampleState extends State { hintText: 'Enter birthdate', errorText: _errorText ?? 'Invalid date', initialValue: DateTime.now(), + size: ZetaWidgetSize.large, ), ), Divider(color: Colors.grey[200]), Padding( padding: const EdgeInsets.only(top: 20), - child: Text('Sharp', style: ZetaTextStyles.titleMedium), + child: Text('Medium', style: ZetaTextStyles.titleMedium), ), Padding( padding: const EdgeInsets.all(20), @@ -45,27 +46,13 @@ class _DateInputExampleState extends State { label: 'Label', hintText: 'Default hint text', errorText: 'Oops! Error hint text', - rounded: false, - dateFormat: 'yyyy-MM-dd', - ), - ), - Divider(color: Colors.grey[200]), - Padding( - padding: const EdgeInsets.only(top: 20), - child: Text('Disabled', style: ZetaTextStyles.titleMedium), - ), - Padding( - padding: const EdgeInsets.all(20), - child: ZetaDateInput( - label: 'Label', - hintText: 'Default hint text', - disabled: true, + size: ZetaWidgetSize.medium, ), ), Divider(color: Colors.grey[200]), Padding( padding: const EdgeInsets.only(top: 20), - child: Text('Medium', style: ZetaTextStyles.titleMedium), + child: Text('Small', style: ZetaTextStyles.titleMedium), ), Padding( padding: const EdgeInsets.all(20), @@ -73,21 +60,20 @@ class _DateInputExampleState extends State { label: 'Label', hintText: 'Default hint text', errorText: 'Oops! Error hint text', - size: ZetaWidgetSize.medium, + size: ZetaWidgetSize.small, ), ), Divider(color: Colors.grey[200]), Padding( padding: const EdgeInsets.only(top: 20), - child: Text('Small', style: ZetaTextStyles.titleMedium), + child: Text('Disabled', style: ZetaTextStyles.titleMedium), ), Padding( padding: const EdgeInsets.all(20), child: ZetaDateInput( label: 'Label', hintText: 'Default hint text', - errorText: 'Oops! Error hint text', - size: ZetaWidgetSize.small, + disabled: true, ), ), ], diff --git a/example/lib/pages/components/dialog_example.dart b/example/lib/pages/components/dialog_example.dart index 6e13cca9..25072683 100644 --- a/example/lib/pages/components/dialog_example.dart +++ b/example/lib/pages/components/dialog_example.dart @@ -20,8 +20,8 @@ class DialogExample extends StatelessWidget { context, useRootNavigator: false, title: 'Dialog Title', - icon: Icon( - ZetaIcons.warning_round, + icon: ZetaIcon( + ZetaIcons.warning, color: zeta.colors.surfaceWarning, ), message: @@ -35,8 +35,8 @@ class DialogExample extends StatelessWidget { context, useRootNavigator: false, title: 'Dialog Title', - icon: Icon( - ZetaIcons.warning_round, + icon: ZetaIcon( + ZetaIcons.warning, color: zeta.colors.surfaceWarning, ), message: @@ -51,8 +51,8 @@ class DialogExample extends StatelessWidget { context, useRootNavigator: false, title: 'Dialog Title', - icon: Icon( - ZetaIcons.warning_round, + icon: ZetaIcon( + ZetaIcons.warning, color: zeta.colors.surfaceWarning, ), message: @@ -69,8 +69,8 @@ class DialogExample extends StatelessWidget { context, useRootNavigator: false, title: 'Dialog Title', - icon: Icon( - ZetaIcons.warning_round, + icon: ZetaIcon( + ZetaIcons.warning, color: zeta.colors.surfaceWarning, ), message: @@ -78,7 +78,6 @@ class DialogExample extends StatelessWidget { headerAlignment: ZetaDialogHeaderAlignment.left, primaryButtonLabel: 'Confirm', secondaryButtonLabel: 'Cancel', - rounded: false, ), child: Text( 'Show dialog with header to the left\nand sharp buttons', diff --git a/example/lib/pages/components/dialpad_example.dart b/example/lib/pages/components/dialpad_example.dart index 774467d0..d77d76e6 100644 --- a/example/lib/pages/components/dialpad_example.dart +++ b/example/lib/pages/components/dialpad_example.dart @@ -45,7 +45,7 @@ class _DialPadExampleState extends State { ), ), IconButton( - icon: Icon(Icons.backspace), + icon: ZetaIcon(Icons.backspace), onPressed: () => number.length == 0 ? null : setState( @@ -66,7 +66,7 @@ class _DialPadExampleState extends State { textAlign: TextAlign.center, ), IconButton( - icon: Icon(Icons.backspace), + icon: ZetaIcon(Icons.backspace), onPressed: () => text.length == 0 ? null : setState( diff --git a/example/lib/pages/components/dropdown_example.dart b/example/lib/pages/components/dropdown_example.dart index 37967d48..04a7e314 100644 --- a/example/lib/pages/components/dropdown_example.dart +++ b/example/lib/pages/components/dropdown_example.dart @@ -18,11 +18,11 @@ class _DropdownExampleState extends State { final items = [ ZetaDropdownItem( value: "Item 1", - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), ), ZetaDropdownItem( value: "Item 2", - icon: Icon(ZetaIcons.star_half_round), + icon: ZetaIcon(ZetaIcons.star_half), ), ZetaDropdownItem( value: "Item 3", diff --git a/example/lib/pages/components/filter_selection_example.dart b/example/lib/pages/components/filter_selection_example.dart index 89ab64fe..49d8e006 100644 --- a/example/lib/pages/components/filter_selection_example.dart +++ b/example/lib/pages/components/filter_selection_example.dart @@ -34,19 +34,6 @@ class _FilterSelectionExampleState extends State { ], onPressed: () {}, ), - const SizedBox(height: ZetaSpacing.large), - ZetaFilterSelection( - rounded: false, - items: [ - for (int i = 0; i < items2.length; i++) - ZetaFilterChip( - label: 'Label ${i + 1}', - selected: items2[i], - onTap: (value) => setState(() => items2[i] = value), - ), - ], - onPressed: () {}, - ), ], ), ); diff --git a/example/lib/pages/components/global_header_example.dart b/example/lib/pages/components/global_header_example.dart index e83759ae..5a1a2b9c 100644 --- a/example/lib/pages/components/global_header_example.dart +++ b/example/lib/pages/components/global_header_example.dart @@ -18,38 +18,35 @@ class _GroupHeaderExampleState extends State { Widget build(BuildContext context) { return ExampleScaffold( name: "Global Header", - child: LayoutBuilder(builder: (context, constraints) { - return Center( - child: SingleChildScrollView( - child: Column(children: [ - Text(constraints.maxWidth.toString()), - ZetaGlobalHeader( - title: "Title", - tabItems: childrenOne, - searchBar: ZetaSearchBar(shape: ZetaWidgetBorder.full, size: ZetaWidgetSize.large), - onAppsButton: () {}, - actionButtons: [ - IconButton( - onPressed: () {}, - icon: const Icon( - ZetaIcons.alert_round, - ), + child: Center( + child: SingleChildScrollView( + child: Column(children: [ + ZetaGlobalHeader( + title: "Title", + tabItems: childrenOne, + searchBar: ZetaSearchBar(shape: ZetaWidgetBorder.full, size: ZetaWidgetSize.large), + onAppsButton: () {}, + actionButtons: [ + IconButton( + onPressed: () {}, + icon: const ZetaIcon( + ZetaIcons.alert, ), - IconButton( - onPressed: () {}, - icon: const Icon( - ZetaIcons.help_round, - ), + ), + IconButton( + onPressed: () {}, + icon: const ZetaIcon( + ZetaIcons.help, ), - ], - avatar: const ZetaAvatar(initials: 'PS'), - ), - const SizedBox(height: ZetaSpacing.xl_1), - ZetaGlobalHeader(title: "Title", tabItems: childrenTwo), - ]), - ), - ); - }), + ), + ], + avatar: const ZetaAvatar(initials: 'PS'), + ), + const SizedBox(height: ZetaSpacing.xl_1), + ZetaGlobalHeader(title: "Title", tabItems: childrenTwo), + ]), + ), + ), ); } } diff --git a/example/lib/pages/components/list_example.dart b/example/lib/pages/components/list_example.dart index da9c6341..2c188a23 100644 --- a/example/lib/pages/components/list_example.dart +++ b/example/lib/pages/components/list_example.dart @@ -18,7 +18,7 @@ class ListExample extends StatelessWidget { ZetaListItem(primaryText: 'Item 2'), ZetaDropdownListItem( primaryText: 'Item 3', - leading: Icon(ZetaIcons.star_round), + leading: ZetaIcon(ZetaIcons.star), expanded: true, items: [ ZetaListItem.checkbox( diff --git a/example/lib/pages/components/list_item_example.dart b/example/lib/pages/components/list_item_example.dart index 14a48adf..cc0cf1d4 100644 --- a/example/lib/pages/components/list_item_example.dart +++ b/example/lib/pages/components/list_item_example.dart @@ -40,7 +40,7 @@ class _ListItemExampleState extends State { )), _buildListItem( 'Icon Left', - ZetaListItem(primaryText: 'List Item', leading: Icon(ZetaIcons.star_round)), + ZetaListItem(primaryText: 'List Item', leading: ZetaIcon(ZetaIcons.star)), ), _buildListItem( 'Toggle Right', @@ -102,8 +102,8 @@ class _ListItemExampleState extends State { ], expanded: true, primaryText: 'List Item', - leading: Icon( - ZetaIcons.star_round, + leading: ZetaIcon( + ZetaIcons.star, ), ), ), diff --git a/example/lib/pages/components/navigation_bar_example.dart b/example/lib/pages/components/navigation_bar_example.dart index 87731510..b1497528 100644 --- a/example/lib/pages/components/navigation_bar_example.dart +++ b/example/lib/pages/components/navigation_bar_example.dart @@ -17,10 +17,10 @@ class _NavigationBarExampleState extends State { @override Widget build(BuildContext context) { final items = [ - ZetaNavigationBarItem(icon: ZetaIcons.star_round, label: 'Label', badge: ZetaIndicator(value: 2)), - ZetaNavigationBarItem(icon: ZetaIcons.star_round, label: 'Label'), - ZetaNavigationBarItem(icon: ZetaIcons.star_round, label: 'Label'), - ZetaNavigationBarItem(icon: ZetaIcons.star_round, label: 'Label'), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label', badge: ZetaIndicator(value: 2)), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label'), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label'), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label'), ]; return ExampleScaffold( diff --git a/example/lib/pages/components/navigation_rail_example.dart b/example/lib/pages/components/navigation_rail_example.dart index 3f0b5d47..bb050ef1 100644 --- a/example/lib/pages/components/navigation_rail_example.dart +++ b/example/lib/pages/components/navigation_rail_example.dart @@ -37,19 +37,19 @@ class _NavigationRailExampleState extends State { items: [ ZetaNavigationRailItem( label: 'Label', - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), ), ZetaNavigationRailItem( label: 'User\nPreferences', - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), ), ZetaNavigationRailItem( label: 'Account Settings', - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), ), ZetaNavigationRailItem( label: 'Label', - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), disabled: true, ), ], diff --git a/example/lib/pages/components/notification_list_example.dart b/example/lib/pages/components/notification_list_example.dart index e4b52927..5b908b70 100644 --- a/example/lib/pages/components/notification_list_example.dart +++ b/example/lib/pages/components/notification_list_example.dart @@ -28,7 +28,7 @@ class _NotificationListItemExampleState extends State { Padding(padding: EdgeInsets.only(top: 20)), ZetaPasswordInput( size: ZetaWidgetSize.medium, - rounded: false, hintText: 'Password', controller: _passwordController, validator: (value) { @@ -68,17 +67,15 @@ class _PasswordInputExampleState extends State { } } -List passwordInputExampleRow(ZetaWidgetSize size, {bool rounded = true}) { +List passwordInputExampleRow(ZetaWidgetSize size) { return [ ZetaPasswordInput( size: size, hintText: 'Password', - rounded: rounded, placeholder: 'Password', ), SizedBox(height: 20), ZetaPasswordInput( - rounded: rounded, size: size, placeholder: 'Password', disabled: true, @@ -89,7 +86,6 @@ List passwordInputExampleRow(ZetaWidgetSize size, {bool rounded = true}) label: 'Label', placeholder: 'Password', hintText: 'Default hint text', - rounded: rounded, ), ]; } diff --git a/example/lib/pages/components/phone_input_example.dart b/example/lib/pages/components/phone_input_example.dart index 49ccf0c0..cd0ab5cd 100644 --- a/example/lib/pages/components/phone_input_example.dart +++ b/example/lib/pages/components/phone_input_example.dart @@ -21,10 +21,6 @@ class _PhoneInputExampleState extends State { child: SingleChildScrollView( child: Column( children: [ - Padding( - padding: const EdgeInsets.only(top: 20), - child: Text('Rounded', style: ZetaTextStyles.titleMedium), - ), Padding( padding: const EdgeInsets.all(20), child: ZetaPhoneInput( @@ -40,26 +36,6 @@ class _PhoneInputExampleState extends State { ), ), Divider(color: Colors.grey[200]), - Padding( - padding: const EdgeInsets.only(top: 20), - child: Text('Sharp', style: ZetaTextStyles.titleMedium), - ), - Padding( - padding: const EdgeInsets.all(20), - child: ZetaPhoneInput( - label: 'Phone number', - hint: 'Enter your phone number', - countryDialCode: '+44', - phoneNumber: '987654321', - hasError: _errorText != null, - errorText: _errorText, - onChanged: (value) { - if (value?.isEmpty ?? true) return setState(() => _errorText = null); - }, - rounded: false, - ), - ), - Divider(color: Colors.grey[200]), Padding( padding: const EdgeInsets.only(top: 20), child: Text('Disabled', style: ZetaTextStyles.titleMedium), diff --git a/example/lib/pages/components/progress_example.dart b/example/lib/pages/components/progress_example.dart index 20cbb604..fdc0ef81 100644 --- a/example/lib/pages/components/progress_example.dart +++ b/example/lib/pages/components/progress_example.dart @@ -57,7 +57,6 @@ class ProgressExampleState extends State { Wrapper( stepsCompleted: 0, circleSize: ZetaCircleSizes.xl, - rounded: false, isCircle: true, ), SizedBox( @@ -78,7 +77,6 @@ class Wrapper extends StatefulWidget { required this.stepsCompleted, this.type = ZetaProgressBarType.standard, this.isThin = false, - this.rounded = true, this.stateChangeable = false, this.label, this.isCircle = false, @@ -86,7 +84,7 @@ class Wrapper extends StatefulWidget { }); final int stepsCompleted; - final bool? rounded; + final ZetaProgressBarType? type; final bool? isThin; final String? label; @@ -139,12 +137,7 @@ class _WrapperState extends State { ) : SizedBox( width: 400, - child: ZetaProgressBar( - progress: progress, - rounded: widget.rounded!, - type: type, - isThin: widget.isThin!, - label: widget.label), + child: ZetaProgressBar(progress: progress, type: type, isThin: widget.isThin!, label: widget.label), ), const SizedBox(width: 40), Row( diff --git a/example/lib/pages/components/segmented_control_example.dart b/example/lib/pages/components/segmented_control_example.dart index 2d9ff822..ef036160 100644 --- a/example/lib/pages/components/segmented_control_example.dart +++ b/example/lib/pages/components/segmented_control_example.dart @@ -70,7 +70,7 @@ class _SegmentedControlExampleState extends State { for (final value in _iconsSegments) ZetaButtonSegment( value: value, - child: Icon(ZetaIcons.star_round), + child: ZetaIcon(ZetaIcons.star), ), ], onChanged: (value) => setState( diff --git a/example/lib/pages/components/select_input_example.dart b/example/lib/pages/components/select_input_example.dart index e7c145e2..621310fa 100644 --- a/example/lib/pages/components/select_input_example.dart +++ b/example/lib/pages/components/select_input_example.dart @@ -18,11 +18,11 @@ class _SelectInputExampleState extends State { final items = [ ZetaDropdownItem( value: "Item 1", - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), ), ZetaDropdownItem( value: "Item 2", - icon: Icon(ZetaIcons.star_half_round), + icon: ZetaIcon(ZetaIcons.star_half), ), ZetaDropdownItem( value: "Item 3", @@ -43,7 +43,6 @@ class _SelectInputExampleState extends State { label: 'Large', size: ZetaWidgetSize.large, hintText: 'Default hint text', - rounded: false, placeholder: 'Placeholder', initialValue: "Item 1", items: items, diff --git a/example/lib/pages/components/snackbar_example.dart b/example/lib/pages/components/snackbar_example.dart index 5ea2660c..83f0a86c 100644 --- a/example/lib/pages/components/snackbar_example.dart +++ b/example/lib/pages/components/snackbar_example.dart @@ -54,7 +54,6 @@ class SnackBarExample extends StatelessWidget { ScaffoldMessenger.of(context).hideCurrentSnackBar(); }, actionLabel: "Action", - rounded: false, content: Text('This is a snackbar'), ), ); @@ -72,7 +71,7 @@ class SnackBarExample extends StatelessWidget { ZetaSnackBar( context: context, type: ZetaSnackBarType.defaultType, - leadingIcon: Icon(Icons.mood_rounded), + leadingIcon: ZetaIcon(Icons.mood), content: Text('Message with icon'), ), ); diff --git a/example/lib/pages/components/stepper_example.dart b/example/lib/pages/components/stepper_example.dart index 50816f2c..b0bcd1b5 100644 --- a/example/lib/pages/components/stepper_example.dart +++ b/example/lib/pages/components/stepper_example.dart @@ -12,7 +12,7 @@ class StepperExample extends StatefulWidget { } class _StepperExampleState extends State { - int _roundedHorizontalStep = 0; + int edHorizontalStep = 0; int _sharpHorizontalStep = 0; int _verticalStep = 0; @@ -36,12 +36,12 @@ class _StepperExampleState extends State { SizedBox( height: 150, child: ZetaStepper( - currentStep: _roundedHorizontalStep, - onStepTapped: (index) => setState(() => _roundedHorizontalStep = index), + currentStep: edHorizontalStep, + onStepTapped: (index) => setState(() => edHorizontalStep = index), steps: [ ZetaStep( type: _getForStepIndex( - currentStep: _roundedHorizontalStep, + currentStep: edHorizontalStep, stepIndex: 0, ), title: Text("Title"), @@ -49,14 +49,14 @@ class _StepperExampleState extends State { ), ZetaStep( type: _getForStepIndex( - currentStep: _roundedHorizontalStep, + currentStep: edHorizontalStep, stepIndex: 1, ), title: Text("Title 2"), ), ZetaStep( type: _getForStepIndex( - currentStep: _roundedHorizontalStep, + currentStep: edHorizontalStep, stepIndex: 2, ), title: Text("Title 3"), @@ -68,7 +68,6 @@ class _StepperExampleState extends State { SizedBox( height: 150, child: ZetaStepper( - rounded: false, currentStep: _sharpHorizontalStep, onStepTapped: (index) => setState(() => _sharpHorizontalStep = index), steps: [ diff --git a/example/lib/pages/components/stepper_input_example.dart b/example/lib/pages/components/stepper_input_example.dart index f03fa351..e1e94b3b 100644 --- a/example/lib/pages/components/stepper_input_example.dart +++ b/example/lib/pages/components/stepper_input_example.dart @@ -26,7 +26,7 @@ class _StepperInputExampleState extends State { initialValue: 5, onChange: (_) {}, ), - ZetaStepperInput(rounded: false), + ZetaStepperInput(), ZetaStepperInput( size: ZetaStepperInputSize.large, onChange: (_) {}, diff --git a/example/lib/pages/components/tabs_example.dart b/example/lib/pages/components/tabs_example.dart index 8774c503..be2a5f7c 100644 --- a/example/lib/pages/components/tabs_example.dart +++ b/example/lib/pages/components/tabs_example.dart @@ -24,8 +24,8 @@ class _TabsExampleState extends State { context: context, onTap: (int) => print(int), tabs: [ - ZetaTab(icon: Icon(ZetaIcons.star_round), text: "Tab Item"), - ZetaTab(icon: Icon(ZetaIcons.star_round), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), ], ), ), @@ -55,11 +55,11 @@ class _TabsExampleState extends State { context: context, isScrollable: true, tabs: [ - ZetaTab(icon: Icon(ZetaIcons.star_sharp), text: "Tab Item"), - ZetaTab(icon: Icon(ZetaIcons.star_sharp), text: "Tab Item"), - ZetaTab(icon: Icon(ZetaIcons.star_sharp), text: "Tab Item"), - ZetaTab(icon: Icon(ZetaIcons.star_sharp), text: "Tab Item"), - ZetaTab(icon: Icon(ZetaIcons.star_sharp), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), ], ), ), diff --git a/example/lib/pages/components/text_input_example.dart b/example/lib/pages/components/text_input_example.dart index 80bbb133..66b5cd1e 100644 --- a/example/lib/pages/components/text_input_example.dart +++ b/example/lib/pages/components/text_input_example.dart @@ -29,7 +29,7 @@ class TextInputExample extends StatelessWidget { disabled: false, hintText: 'hint text', suffix: IconButton( - icon: Icon(ZetaIcons.add_alert_round), + icon: ZetaIcon(ZetaIcons.add_alert), onPressed: () {}, ), ), @@ -49,8 +49,8 @@ class TextInputExample extends StatelessWidget { child: IconButton( iconSize: 12, splashRadius: 1, - icon: Icon( - ZetaIcons.add_alert_round, + icon: ZetaIcon( + ZetaIcons.add_alert, ), onPressed: () {}, ), @@ -59,8 +59,8 @@ class TextInputExample extends StatelessWidget { const SizedBox(height: 8), ZetaTextInput( placeholder: 'Placeholder', - prefix: Icon( - ZetaIcons.star_round, + prefix: ZetaIcon( + ZetaIcons.star, size: 20, ), ), diff --git a/example/lib/pages/components/time_input_example.dart b/example/lib/pages/components/time_input_example.dart index 75b4b9fb..24aee780 100644 --- a/example/lib/pages/components/time_input_example.dart +++ b/example/lib/pages/components/time_input_example.dart @@ -58,7 +58,6 @@ class TimeInputExample extends StatelessWidget { ), ZetaTimeInput(label: '12 Hr Time Picker', use12Hr: true), ZetaTimeInput(label: 'Disabled Time Picker', disabled: true, hintText: 'Disabled time picker'), - ZetaTimeInput(label: 'Sharp Time Picker', rounded: false), ].divide(const SizedBox(height: 12)).toList(), ), ), diff --git a/example/lib/pages/components/tooltip_example.dart b/example/lib/pages/components/tooltip_example.dart index 4e375ad1..ff94c86a 100644 --- a/example/lib/pages/components/tooltip_example.dart +++ b/example/lib/pages/components/tooltip_example.dart @@ -18,7 +18,6 @@ class TooltipExample extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Text('Rounded'), const SizedBox(height: ZetaSpacing.xl_4), ZetaTooltip( child: Text('Label'), @@ -38,31 +37,6 @@ class TooltipExample extends StatelessWidget { child: Text('Label'), arrowDirection: ZetaTooltipArrowDirection.left, ), - Divider(height: ZetaSpacing.xl_11), - Text('Sharp'), - const SizedBox(height: ZetaSpacing.xl_4), - ZetaTooltip( - child: Text('Label'), - rounded: false, - ), - const SizedBox(height: ZetaSpacing.xl_4), - ZetaTooltip( - child: Text('Label'), - arrowDirection: ZetaTooltipArrowDirection.right, - rounded: false, - ), - const SizedBox(height: ZetaSpacing.xl_4), - ZetaTooltip( - child: Text('Label'), - arrowDirection: ZetaTooltipArrowDirection.up, - rounded: false, - ), - const SizedBox(height: ZetaSpacing.xl_4), - ZetaTooltip( - child: Text('Label'), - arrowDirection: ZetaTooltipArrowDirection.left, - rounded: false, - ), ], ), ), diff --git a/example/lib/pages/components/top_app_bar_example.dart b/example/lib/pages/components/top_app_bar_example.dart index 18ac9c82..a0c37ad9 100644 --- a/example/lib/pages/components/top_app_bar_example.dart +++ b/example/lib/pages/components/top_app_bar_example.dart @@ -34,8 +34,8 @@ class _TopAppBarExampleState extends State { Widget build(BuildContext context) { final Widget image = CachedNetworkImage( imageUrl: "https://i.ytimg.com/vi/KItsWUzFUOs/maxresdefault.jpg", - placeholder: (context, url) => Icon(ZetaIcons.user_round), - errorWidget: (context, url, error) => Icon(Icons.error), + placeholder: (context, url) => ZetaIcon(ZetaIcons.user), + errorWidget: (context, url, error) => ZetaIcon(ZetaIcons.error), fit: BoxFit.cover, ); final colors = Zeta.of(context).colors; @@ -51,7 +51,7 @@ class _TopAppBarExampleState extends State { ZetaTopAppBar( leading: IconButton( onPressed: () {}, - icon: Icon(Icons.menu_rounded), + icon: Icon(Icons.menu), ), title: Row( children: [ @@ -65,15 +65,15 @@ class _TopAppBarExampleState extends State { actions: [ IconButton( onPressed: () {}, - icon: Icon(Icons.language), + icon: ZetaIcon(Icons.language), ), IconButton( onPressed: () {}, - icon: Icon(Icons.favorite), + icon: ZetaIcon(Icons.favorite), ), IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.more_vertical_round), + icon: ZetaIcon(ZetaIcons.more_vertical), ) ], ), @@ -82,13 +82,13 @@ class _TopAppBarExampleState extends State { type: ZetaTopAppBarType.centeredTitle, leading: IconButton( onPressed: () {}, - icon: Icon(Icons.menu_rounded), + icon: ZetaIcon(Icons.menu), ), title: Text("Title"), actions: [ IconButton( onPressed: () {}, - icon: Icon(Icons.account_circle), + icon: ZetaIcon(Icons.account_circle), ), ], ), @@ -96,25 +96,25 @@ class _TopAppBarExampleState extends State { ZetaTopAppBar( leading: IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.close_round), + icon: ZetaIcon(ZetaIcons.close), ), title: Text("2 items"), actions: [ IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.edit_round), + icon: ZetaIcon(ZetaIcons.edit), ), IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.share_round), + icon: ZetaIcon(ZetaIcons.share), ), IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.delete_round), + icon: ZetaIcon(ZetaIcons.delete), ), IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.more_vertical_round), + icon: ZetaIcon(ZetaIcons.more_vertical), ), ], ), @@ -126,7 +126,7 @@ class _TopAppBarExampleState extends State { actions: [ IconButton( onPressed: _showHideSearchRegular, - icon: Icon(ZetaIcons.search_round), + icon: ZetaIcon(ZetaIcons.search), ) ], searchController: _searchControllerRegular, @@ -148,7 +148,7 @@ class _TopAppBarExampleState extends State { ZetaTopAppBar.extended( leading: IconButton( onPressed: () {}, - icon: Icon(Icons.menu_rounded), + icon: ZetaIcon(Icons.menu), ), title: Row( children: [ @@ -162,15 +162,15 @@ class _TopAppBarExampleState extends State { actions: [ IconButton( onPressed: () {}, - icon: Icon(Icons.language), + icon: ZetaIcon(Icons.language), ), IconButton( onPressed: () {}, - icon: Icon(Icons.favorite), + icon: ZetaIcon(Icons.favorite), ), IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.more_vertical_round), + icon: ZetaIcon(ZetaIcons.more_vertical), ) ], ), @@ -200,7 +200,7 @@ class _TopAppBarExampleState extends State { actions: [ IconButton( onPressed: _showHideSearchExtended, - icon: Icon(ZetaIcons.search_round), + icon: ZetaIcon(ZetaIcons.search), ) ], searchController: _searchControllerExtended, diff --git a/example/lib/utils/theme_color_switch.dart b/example/lib/utils/theme_color_switch.dart index 7677f189..1de614cc 100644 --- a/example/lib/utils/theme_color_switch.dart +++ b/example/lib/utils/theme_color_switch.dart @@ -53,7 +53,7 @@ class ZetaThemeColorSwitch extends StatelessWidget { child: ZetaAvatar( size: ZetaAvatarSize.xxs, backgroundColor: color.surface, - image: Icon(Icons.color_lens, color: color), + image: ZetaIcon(Icons.color_lens, color: color), ), ); }).toList(), diff --git a/example/lib/utils/theme_mode_switch.dart b/example/lib/utils/theme_mode_switch.dart index 8288c292..1250c93b 100644 --- a/example/lib/utils/theme_mode_switch.dart +++ b/example/lib/utils/theme_mode_switch.dart @@ -38,7 +38,7 @@ class ZetaThemeModeSwitch extends StatelessWidget { child: ZetaAvatar( size: ZetaAvatarSize.xxs, backgroundColor: colors.primary.surface, - image: Icon( + image: ZetaIcon( e == ThemeMode.system ? Icons.system_security_update_good : e == ThemeMode.light diff --git a/example/widgetbook/pages/assets/icon_widgetbook.dart b/example/widgetbook/pages/assets/icon_widgetbook.dart index ca195374..8f08649d 100644 --- a/example/widgetbook/pages/assets/icon_widgetbook.dart +++ b/example/widgetbook/pages/assets/icon_widgetbook.dart @@ -40,7 +40,7 @@ Widget iconsUseCase(BuildContext context) { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Icon( + ZetaIcon( IconData( e.value.codePoint, fontFamily: rounded ? ZetaIcons.familyRound : ZetaIcons.familySharp, diff --git a/example/widgetbook/pages/components/avatar_widgetbook.dart b/example/widgetbook/pages/components/avatar_widgetbook.dart index 337670d0..4ed8fdde 100644 --- a/example/widgetbook/pages/components/avatar_widgetbook.dart +++ b/example/widgetbook/pages/components/avatar_widgetbook.dart @@ -19,7 +19,7 @@ Widget avatarUseCase(BuildContext context) { ), upperBadge: context.knobs.boolean(label: 'Status Badge', initialValue: false) ? ZetaAvatarBadge.icon( - icon: ZetaIcons.close_round, + icon: ZetaIcons.close, color: context.knobs.colorOrNull(label: "Upper Badge Color", initialValue: colors.green) ?? colors.iconDefault, ) diff --git a/example/widgetbook/pages/components/banner_widgetbook.dart b/example/widgetbook/pages/components/banner_widgetbook.dart index 69574bd4..d9ff3fd1 100644 --- a/example/widgetbook/pages/components/banner_widgetbook.dart +++ b/example/widgetbook/pages/components/banner_widgetbook.dart @@ -18,12 +18,12 @@ Widget bannerUseCase(BuildContext context) { ), leadingIcon: iconKnob(context, rounded: rounded, nullable: true), titleStart: context.knobs.boolean(label: 'Center title'), - trailing: Icon(iconKnob( + trailing: ZetaIcon(iconKnob( context, rounded: rounded, nullable: true, name: 'trailing', - initial: ZetaIcons.chevron_right_round, + initial: ZetaIcons.chevron_right, )), ); diff --git a/example/widgetbook/pages/components/bottom_sheet_widgetbook.dart b/example/widgetbook/pages/components/bottom_sheet_widgetbook.dart index 6fd44d2f..fc80b36a 100644 --- a/example/widgetbook/pages/components/bottom_sheet_widgetbook.dart +++ b/example/widgetbook/pages/components/bottom_sheet_widgetbook.dart @@ -28,7 +28,7 @@ Widget bottomSheetContentUseCase(BuildContext context) { ZetaBottomSheet _bottomSheet(BuildContext context) { final bool rounded = roundedKnob(context); final leadingIcon = iconKnob(context, rounded: rounded, nullable: true, initial: null); - final trailingIcon = iconKnob(context, rounded: rounded, nullable: true, initial: ZetaIcons.chevron_right_round); + final trailingIcon = iconKnob(context, rounded: rounded, nullable: true, initial: ZetaIcons.chevron_right); return ZetaBottomSheet( centerTitle: context.knobs.boolean(label: 'Center title', initialValue: true), @@ -40,8 +40,8 @@ ZetaBottomSheet _bottomSheet(BuildContext context) { 6, (index) => ZetaMenuItem( type: context.knobs.boolean(label: 'Grid') ? ZetaMenuItemType.vertical : ZetaMenuItemType.horizontal, - leading: leadingIcon != null ? Icon(leadingIcon) : null, - trailing: trailingIcon != null ? Icon(trailingIcon) : null, + leading: leadingIcon != null ? ZetaIcon(leadingIcon) : null, + trailing: trailingIcon != null ? ZetaIcon(trailingIcon) : null, label: Text('Menu Item'), onTap: context.knobs.boolean(label: 'Disabled') ? null : () {}, ), diff --git a/example/widgetbook/pages/components/button_widgetbook.dart b/example/widgetbook/pages/components/button_widgetbook.dart index 8b47a75c..588514da 100644 --- a/example/widgetbook/pages/components/button_widgetbook.dart +++ b/example/widgetbook/pages/components/button_widgetbook.dart @@ -82,11 +82,11 @@ Widget buttonGroupUseCase(BuildContext context) { items: [ ZetaDropdownItem( value: 'Item 1', - icon: Icon(ZetaIcons.star), + icon: ZetaIcon(ZetaIcons.star), ), ZetaDropdownItem( value: 'Item 2', - icon: Icon(ZetaIcons.star_half), + icon: ZetaIcon(ZetaIcons.star_half), ), ], ), diff --git a/example/widgetbook/pages/components/chip_widgetbook.dart b/example/widgetbook/pages/components/chip_widgetbook.dart index 9caaee6f..e7e0c008 100644 --- a/example/widgetbook/pages/components/chip_widgetbook.dart +++ b/example/widgetbook/pages/components/chip_widgetbook.dart @@ -21,7 +21,7 @@ Widget inputChipUseCase(BuildContext context) { ) : null, rounded: rounded, - trailing: trailing != null ? Icon(trailing) : null, + trailing: trailing != null ? ZetaIcon(trailing) : null, ), ); } @@ -40,7 +40,7 @@ Widget assistChipUseCase(BuildContext context) { widget: ZetaAssistChip( label: context.knobs.string(label: 'Label', initialValue: 'Label'), rounded: rounded, - leading: Icon(iconKnob(context, rounded: rounded)), + leading: ZetaIcon(iconKnob(context, rounded: rounded)), ), ); } diff --git a/example/widgetbook/pages/components/dialog_widgetbook.dart b/example/widgetbook/pages/components/dialog_widgetbook.dart index 6936dc55..f761861e 100644 --- a/example/widgetbook/pages/components/dialog_widgetbook.dart +++ b/example/widgetbook/pages/components/dialog_widgetbook.dart @@ -21,7 +21,7 @@ Widget dialogUseCase(BuildContext context) { context, name: "Icon", rounded: rounded, - initial: rounded ? Icons.warning_rounded : Icons.warning_sharp, + initial: Icons.warning, ); final barrierDismissible = context.knobs.boolean(label: 'Barrier dismissible', initialValue: true); final headerAlignment = context.knobs.list( @@ -43,7 +43,7 @@ Widget dialogUseCase(BuildContext context) { barrierDismissible: barrierDismissible, headerAlignment: headerAlignment, title: title, - icon: Icon( + icon: ZetaIcon( iconData, color: zeta.colors.surfaceWarning, ), @@ -60,7 +60,7 @@ Widget dialogUseCase(BuildContext context) { barrierDismissible: barrierDismissible, headerAlignment: headerAlignment, title: title, - icon: Icon( + icon: ZetaIcon( iconData, color: zeta.colors.surfaceWarning, ), @@ -78,7 +78,7 @@ Widget dialogUseCase(BuildContext context) { barrierDismissible: barrierDismissible, headerAlignment: headerAlignment, title: title, - icon: Icon( + icon: ZetaIcon( iconData, color: zeta.colors.surfaceWarning, ), diff --git a/example/widgetbook/pages/components/dropdown_list_item_widgetbook.dart b/example/widgetbook/pages/components/dropdown_list_item_widgetbook.dart index 9ca182cc..6ffd2a0a 100644 --- a/example/widgetbook/pages/components/dropdown_list_item_widgetbook.dart +++ b/example/widgetbook/pages/components/dropdown_list_item_widgetbook.dart @@ -19,7 +19,7 @@ Widget dropdownListItemUseCase(BuildContext context) { final rounded = roundedKnob(context); - final leading = showIcon ? Icon(ZetaIcons.star_round) : null; + final leading = showIcon ? ZetaIcon(ZetaIcons.star) : null; return ZetaDropdownListItem( primaryText: primaryText, diff --git a/example/widgetbook/pages/components/dropdown_widgetbook.dart b/example/widgetbook/pages/components/dropdown_widgetbook.dart index 5aea90a8..d022447f 100644 --- a/example/widgetbook/pages/components/dropdown_widgetbook.dart +++ b/example/widgetbook/pages/components/dropdown_widgetbook.dart @@ -20,11 +20,11 @@ class _DropdownExampleState extends State { final items = [ ZetaDropdownItem( value: "Item 1", - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), ), ZetaDropdownItem( value: "Item 2", - icon: Icon(ZetaIcons.star_half_round), + icon: ZetaIcon(ZetaIcons.star_half), ), ZetaDropdownItem( value: "Item 3", diff --git a/example/widgetbook/pages/components/global_header_widgetbook.dart b/example/widgetbook/pages/components/global_header_widgetbook.dart index b0e59e76..252726e6 100644 --- a/example/widgetbook/pages/components/global_header_widgetbook.dart +++ b/example/widgetbook/pages/components/global_header_widgetbook.dart @@ -8,14 +8,14 @@ Widget globalHeaderUseCase(BuildContext context) { final actionButtons = [ IconButton( onPressed: () {}, - icon: const Icon( - ZetaIcons.alert_round, + icon: const ZetaIcon( + ZetaIcons.alert, ), ), IconButton( onPressed: () {}, - icon: const Icon( - ZetaIcons.help_round, + icon: const ZetaIcon( + ZetaIcons.help, ), ), ]; diff --git a/example/widgetbook/pages/components/list_item_widgetbook.dart b/example/widgetbook/pages/components/list_item_widgetbook.dart index 2acbbbee..02cafe63 100644 --- a/example/widgetbook/pages/components/list_item_widgetbook.dart +++ b/example/widgetbook/pages/components/list_item_widgetbook.dart @@ -26,7 +26,7 @@ Widget listItemUseCase(BuildContext context) { final rounded = roundedKnob(context); - final leading = showIcon ? Icon(ZetaIcons.star_round) : null; + final leading = showIcon ? ZetaIcon(ZetaIcons.star) : null; final onChanged = (bool? value) => setState(() { checkedValue = value!; diff --git a/example/widgetbook/pages/components/navigation_rail_widgetbook.dart b/example/widgetbook/pages/components/navigation_rail_widgetbook.dart index 392ada12..a791d2f5 100644 --- a/example/widgetbook/pages/components/navigation_rail_widgetbook.dart +++ b/example/widgetbook/pages/components/navigation_rail_widgetbook.dart @@ -17,7 +17,7 @@ Widget navigationRailUseCase(BuildContext context) { context, name: "Icon", rounded: rounded, - initial: rounded ? ZetaIcons.star_round : ZetaIcons.star_sharp, + initial: ZetaIcons.star, ); final wordWrap = context.knobs.boolean(label: 'Word wrap', initialValue: true); final disabled = disabledKnob(context); @@ -36,7 +36,7 @@ Widget navigationRailUseCase(BuildContext context) { items: itemsList .map((item) => ZetaNavigationRailItem( label: item, - icon: Icon(iconData), + icon: ZetaIcon(iconData), disabled: disabled, )) .toList(), diff --git a/example/widgetbook/pages/components/notification_list_item_widgetbook.dart b/example/widgetbook/pages/components/notification_list_item_widgetbook.dart index bd72b586..49a4d6ea 100644 --- a/example/widgetbook/pages/components/notification_list_item_widgetbook.dart +++ b/example/widgetbook/pages/components/notification_list_item_widgetbook.dart @@ -32,7 +32,7 @@ Widget notificationListItemUseCase(BuildContext context) => WidgetbookTestWidget label: 'Badge', options: [ ZetaNotificationBadge.avatar(avatar: ZetaAvatar.initials(initials: "AO")), - ZetaNotificationBadge.icon(icon: ZetaIcons.check_circle_round), + ZetaNotificationBadge.icon(icon: ZetaIcons.check_circle), ZetaNotificationBadge.image( image: Image.network( "https://www.google.com/url?sa=i&url=https%3A%2F%2Fgithub.com%2Fzebratechnologies&psig=AOvVaw0fBPVE5gUkkpFw8mVf6B8G&ust=1717073069230000&source=images&cd=vfe&opi=89978449&ved=0CBIQjRxqFwoTCPCwn-XxsoYDFQAAAAAdAAAAABAE")) diff --git a/example/widgetbook/pages/components/segmented_control_widgetbook.dart b/example/widgetbook/pages/components/segmented_control_widgetbook.dart index 72875836..3abb74c1 100644 --- a/example/widgetbook/pages/components/segmented_control_widgetbook.dart +++ b/example/widgetbook/pages/components/segmented_control_widgetbook.dart @@ -10,7 +10,7 @@ Widget segmentedControlUseCase(BuildContext context) { int selectedIconSegment = iconsSegments.first; final rounded = context.knobs.boolean(label: "Rounded", initialValue: true); - final icon = iconKnob(context, rounded: rounded, initial: ZetaIcons.star_round); + final icon = iconKnob(context, rounded: rounded, initial: ZetaIcons.star); final text = context.knobs.string(label: 'Text', initialValue: "Item"); @@ -29,7 +29,7 @@ Widget segmentedControlUseCase(BuildContext context) { for (final value in iconsSegments) ZetaButtonSegment( value: value, - child: Icon(icon), + child: ZetaIcon(icon), ), ], onChanged: (value) => setState( diff --git a/example/widgetbook/pages/components/select_input_widgetbook.dart b/example/widgetbook/pages/components/select_input_widgetbook.dart index d41f5a8f..53e6a505 100644 --- a/example/widgetbook/pages/components/select_input_widgetbook.dart +++ b/example/widgetbook/pages/components/select_input_widgetbook.dart @@ -9,11 +9,11 @@ Widget selectInputUseCase(BuildContext context) { final items = [ ZetaDropdownItem( value: "Item 1", - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), ), ZetaDropdownItem( value: "Item 2", - icon: Icon(ZetaIcons.star_half_round), + icon: ZetaIcon(ZetaIcons.star_half), ), ZetaDropdownItem( value: "Item 3", diff --git a/example/widgetbook/pages/components/snack_bar_widgetbook.dart b/example/widgetbook/pages/components/snack_bar_widgetbook.dart index 92430c67..6b67dcbb 100644 --- a/example/widgetbook/pages/components/snack_bar_widgetbook.dart +++ b/example/widgetbook/pages/components/snack_bar_widgetbook.dart @@ -28,7 +28,7 @@ Widget snackBarUseCase(BuildContext context) { final leadingIcon = iconKnob( context, name: "Leading Icon", - initial: Icons.mood_rounded, + initial: Icons.mood, nullable: true, ); @@ -43,7 +43,7 @@ Widget snackBarUseCase(BuildContext context) { onPressed: () {}, actionLabel: actionLabel, type: type, - leadingIcon: leadingIcon != null ? Icon(leadingIcon) : null, + leadingIcon: leadingIcon != null ? ZetaIcon(leadingIcon) : null, rounded: rounded, content: Text(text), ); diff --git a/example/widgetbook/pages/components/tabs_widgetbook.dart b/example/widgetbook/pages/components/tabs_widgetbook.dart index a47dd059..50fcd23b 100644 --- a/example/widgetbook/pages/components/tabs_widgetbook.dart +++ b/example/widgetbook/pages/components/tabs_widgetbook.dart @@ -23,8 +23,8 @@ Widget tabsUseCase(BuildContext context) { ? null : (_) {}, tabs: [ - ZetaTab(icon: Icon(ZetaIcons.star_round), text: "Tab Item"), - ZetaTab(icon: Icon(ZetaIcons.star_round), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), + ZetaTab(icon: ZetaIcon(ZetaIcons.star), text: "Tab Item"), ], ), ), diff --git a/example/widgetbook/pages/components/text_input_widgetbook.dart b/example/widgetbook/pages/components/text_input_widgetbook.dart index 75be9d50..fd313845 100644 --- a/example/widgetbook/pages/components/text_input_widgetbook.dart +++ b/example/widgetbook/pages/components/text_input_widgetbook.dart @@ -40,7 +40,7 @@ Widget textInputUseCase(BuildContext context) { errorText: errorText, prefixText: '£', suffix: IconButton( - icon: Icon(ZetaIcons.star_round), + icon: ZetaIcon(ZetaIcons.star), onPressed: () {}, ), onChange: (value) {}, diff --git a/example/widgetbook/pages/components/top_app_bar_widgetbook.dart b/example/widgetbook/pages/components/top_app_bar_widgetbook.dart index 9dc76be9..95ce2358 100644 --- a/example/widgetbook/pages/components/top_app_bar_widgetbook.dart +++ b/example/widgetbook/pages/components/top_app_bar_widgetbook.dart @@ -24,7 +24,7 @@ Widget defaultTopAppBarUseCase(BuildContext context) { label: "Enabled actions", initialValue: true, ); - final leadingIcon = iconKnob(context, name: 'Leading Icon', initial: ZetaIcons.hamburger_menu_round); + final leadingIcon = iconKnob(context, name: 'Leading Icon', initial: ZetaIcons.hamburger_menu); return WidgetbookTestWidget( backgroundColor: Colors.green, @@ -34,7 +34,7 @@ Widget defaultTopAppBarUseCase(BuildContext context) { ZetaTopAppBar( leading: IconButton( onPressed: () {}, - icon: Icon(leadingIcon), + icon: ZetaIcon(leadingIcon), ), type: type, title: Text(title), @@ -42,15 +42,15 @@ Widget defaultTopAppBarUseCase(BuildContext context) { ? [ IconButton( onPressed: () {}, - icon: Icon(Icons.language), + icon: ZetaIcon(Icons.language), ), IconButton( onPressed: () {}, - icon: Icon(Icons.favorite), + icon: ZetaIcon(Icons.favorite), ), IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.more_vertical_round), + icon: ZetaIcon(ZetaIcons.more_vertical), ) ] : null, @@ -92,7 +92,7 @@ class _SearchUseCaseState extends State<_SearchUseCase> { }, ); - final leadingIcon = iconKnob(context, name: 'Leading Icon', initial: ZetaIcons.hamburger_menu_round); + final leadingIcon = iconKnob(context, name: 'Leading Icon', initial: ZetaIcons.hamburger_menu); final enabledSpeechRecognition = context.knobs.boolean( label: "Enabled speech recognition", @@ -104,7 +104,7 @@ class _SearchUseCaseState extends State<_SearchUseCase> { return ZetaTopAppBar( leading: IconButton( onPressed: () {}, - icon: Icon(leadingIcon), + icon: ZetaIcon(leadingIcon), ), type: type, title: Text(title), @@ -123,7 +123,7 @@ class _SearchUseCaseState extends State<_SearchUseCase> { onPressed: () { searchController.isEnabled ? searchController.closeSearch() : searchController.startSearch(); }, - icon: Icon(ZetaIcons.search_round)), + icon: ZetaIcon(ZetaIcons.search)), ], ); } @@ -151,7 +151,7 @@ class _ExtendedSearchState extends State { Widget build(BuildContext context) { final title = context.knobs.string(label: "Title", initialValue: "Title"); - final leadingIcon = iconKnob(context, name: 'Leading Icon', initial: ZetaIcons.hamburger_menu_round); + final leadingIcon = iconKnob(context, name: 'Leading Icon', initial: ZetaIcons.hamburger_menu); final showSearch = context.knobs.boolean(label: 'Search variant', initialValue: false); @@ -167,27 +167,27 @@ class _ExtendedSearchState extends State { child: CustomScrollView( slivers: [ ZetaTopAppBar.extended( - leading: IconButton(icon: Icon(leadingIcon), onPressed: () {}), + leading: IconButton(icon: ZetaIcon(leadingIcon), onPressed: () {}), title: Text(title), actions: showSearch ? [ IconButton( onPressed: _showHideSearchExtended, - icon: Icon(ZetaIcons.search_round), + icon: ZetaIcon(ZetaIcons.search), ) ] : [ IconButton( onPressed: () {}, - icon: Icon(Icons.language), + icon: ZetaIcon(Icons.language), ), IconButton( onPressed: () {}, - icon: Icon(Icons.favorite), + icon: ZetaIcon(Icons.favorite), ), IconButton( onPressed: () {}, - icon: Icon(ZetaIcons.more_vertical_round), + icon: ZetaIcon(ZetaIcons.more_vertical), ) ], searchController: showSearch ? _searchControllerExtended : null, diff --git a/lib/src/components/badges/tag.dart b/lib/src/components/badges/tag.dart index b2053803..13345a02 100644 --- a/lib/src/components/badges/tag.dart +++ b/lib/src/components/badges/tag.dart @@ -43,7 +43,7 @@ class ZetaTag extends ZetaStatelessWidget { Widget build(BuildContext context) { return Row( children: [ - if (direction == ZetaTagDirection.right) _buildCustomPaint(context), + if (direction == ZetaTagDirection.left) _buildCustomPaint(context), Container( decoration: BoxDecoration( color: Zeta.of(context).colors.surfaceHover, @@ -64,14 +64,14 @@ class ZetaTag extends ZetaStatelessWidget { ), ), ), - if (direction == ZetaTagDirection.left) _buildCustomPaint(context), + if (direction == ZetaTagDirection.right) _buildCustomPaint(context), ], ); } BorderRadius? _getBorderRadius(BuildContext context) { if (!context.rounded) return null; - if (direction == ZetaTagDirection.right) { + if (direction == ZetaTagDirection.left) { return const BorderRadius.only( topRight: Radius.circular(ZetaSpacingBase.x0_5), bottomRight: Radius.circular(ZetaSpacingBase.x0_5), @@ -121,7 +121,7 @@ class _TagPainter extends CustomPainter { final Paint paint = Paint() ..color = color ..style = PaintingStyle.fill; - final path = _drawPath(size, rounded, direction == ZetaTagDirection.right); + final path = _drawPath(size, rounded, direction == ZetaTagDirection.left); canvas.drawPath(path, paint); } diff --git a/lib/src/components/snack_bar/snack_bar.dart b/lib/src/components/snack_bar/snack_bar.dart index b4f18178..7b186230 100644 --- a/lib/src/components/snack_bar/snack_bar.dart +++ b/lib/src/components/snack_bar/snack_bar.dart @@ -53,7 +53,9 @@ class ZetaSnackBar extends SnackBar { ZetaSnackBarType? type, /// Icon to display at the start of the content. - Icon? leadingIcon, + /// + /// Should be of type [ZetaIcon] or [Icon]. + Widget? leadingIcon, /// {@macro zeta-widget-rounded} bool? rounded, @@ -354,7 +356,7 @@ class _ActionButton extends StatelessWidget { class _LeadingIcon extends StatelessWidget { const _LeadingIcon(this.type, this.icon); - final Icon? icon; + final Widget? icon; final ZetaSnackBarType? type; @override From 4fb7508ad6cf349f1bc2158654001e20bef35ae6 Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 2 Jul 2024 17:54:58 +0100 Subject: [PATCH 6/9] test: Update goldens due to changes in test framework; --- lib/src/utils/rounded.dart | 4 ++- lib/src/zeta_provider.dart | 34 +++++++++++------- .../badge/golden/indicator_default.png | Bin 4004 -> 3998 bytes .../badge/golden/indicator_icon_default.png | Bin 4112 -> 4135 bytes .../badge/golden/indicator_icon_values.png | Bin 3895 -> 3896 bytes .../golden/indicator_notification_default.png | Bin 4004 -> 3998 bytes .../golden/indicator_notification_values.png | Bin 3600 -> 3599 bytes .../components/badge/golden/label_dark.png | Bin 3653 -> 3677 bytes .../components/badge/golden/label_default.png | Bin 3610 -> 3630 bytes .../badge/golden/label_negative.png | Bin 3682 -> 3677 bytes .../components/badge/golden/label_neutral.png | Bin 3617 -> 3625 bytes .../badge/golden/label_positive.png | Bin 3681 -> 3685 bytes .../components/badge/golden/label_sharp.png | Bin 3454 -> 3457 bytes .../components/badge/golden/label_warning.png | Bin 3646 -> 3671 bytes .../badge/golden/priority_pill_default.png | Bin 4487 -> 4502 bytes .../badge/golden/priority_pill_high.png | Bin 3673 -> 3681 bytes .../badge/golden/priority_pill_low.png | Bin 3869 -> 3870 bytes .../badge/golden/priority_pill_medium.png | Bin 4071 -> 4059 bytes .../badge/golden/status_label_custom.png | Bin 4555 -> 4609 bytes .../badge/golden/status_label_default.png | Bin 4514 -> 4561 bytes test/src/components/badge/golden/tag_left.png | Bin 3634 -> 3580 bytes .../src/components/badge/golden/tag_right.png | Bin 3607 -> 3536 bytes .../button/golden/button_disabled.png | Bin 4266 -> 4231 bytes .../button/golden/button_negative.png | Bin 3720 -> 3715 bytes .../button/golden/button_outline.png | Bin 3849 -> 3849 bytes .../button/golden/button_outline_subtle.png | Bin 3555 -> 3555 bytes .../button/golden/button_positive.png | Bin 3927 -> 3936 bytes .../button/golden/button_primary.png | Bin 3720 -> 3727 bytes .../button/golden/button_secondary.png | Bin 3865 -> 3862 bytes .../components/button/golden/button_text.png | Bin 3501 -> 3916 bytes .../checkbox/golden/checkbox_disabled.png | Bin 3539 -> 3545 bytes .../checkbox/golden/checkbox_enabled.png | Bin 3597 -> 3604 bytes .../dialpad/golden/dialpad_disabled.png | Bin 12517 -> 11188 bytes .../dialpad/golden/dialpad_enabled.png | Bin 12517 -> 11188 bytes .../dialpad/golden/dialpadbutton.png | Bin 4743 -> 4708 bytes .../components/fabs/golden/FAB_default.png | Bin 4766 -> 4754 bytes .../components/fabs/golden/FAB_inverse.png | Bin 4358 -> 4352 bytes .../components/fabs/golden/FAB_secondary.png | Bin 3598 -> 3599 bytes .../golden/in_page_banner_buttons.png | Bin 4390 -> 4397 bytes .../golden/in_page_banner_default.png | Bin 3918 -> 3925 bytes .../golden/in_page_banner_negative.png | Bin 3949 -> 3951 bytes .../golden/in_page_banner_positive.png | Bin 3839 -> 3841 bytes .../password/golden/password_default.png | Bin 3639 -> 3637 bytes .../password/golden/password_error.png | Bin 3845 -> 3850 bytes .../components/tooltip/golden/arrow_down.png | Bin 3648 -> 3642 bytes .../components/tooltip/golden/arrow_left.png | Bin 3658 -> 3647 bytes .../components/tooltip/golden/arrow_right.png | Bin 3642 -> 3641 bytes .../components/tooltip/golden/arrow_up.png | Bin 3655 -> 3649 bytes test/src/zeta_provider_test.dart | 6 ++-- test/test_utils/test_app.dart | 1 + 50 files changed, 28 insertions(+), 17 deletions(-) diff --git a/lib/src/utils/rounded.dart b/lib/src/utils/rounded.dart index 7b096060..78cdd7f4 100644 --- a/lib/src/utils/rounded.dart +++ b/lib/src/utils/rounded.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -68,7 +70,7 @@ extension Rounded on BuildContext { return (widget as dynamic).rounded as bool; } } catch (e) { - debugPrint('Widget does not have rounded'); + log('Widget(${widget.runtimeType}) does not have rounded \n $e'); } return ZetaRoundedScope.of(this)?._rounded ?? Zeta.of(this).rounded; diff --git a/lib/src/zeta_provider.dart b/lib/src/zeta_provider.dart index 4f4cbe97..520418f0 100644 --- a/lib/src/zeta_provider.dart +++ b/lib/src/zeta_provider.dart @@ -150,13 +150,17 @@ class ZetaProviderState extends State with Diagnosticable, Widgets late ThemeMode _themeMode; /// Represents the late initialization of the ZetaThemeData object. - late ZetaThemeData _themeData; + late ZetaThemeData _zetaThemeData; /// Represents the late initialization of the system's current brightness (dark or light mode). late Brightness _platformBrightness; + /// {@macro zeta-component-rounded} late bool _rounded; + /// Represents the late initialization of the ThemeData object. + late ThemeData? _themeData; + /// Represents a nullable brightness value to be used for brightness change debouncing. Brightness? _debounceBrightness; @@ -188,7 +192,10 @@ class ZetaProviderState extends State with Diagnosticable, Widgets _rounded = widget.initialRounded; // Apply the initial contrast to the theme data. - _themeData = widget.initialZetaThemeData.apply(contrast: _contrast); + _zetaThemeData = widget.initialZetaThemeData.apply(contrast: _contrast); + + // Set the initial theme data. + _themeData = widget.initialThemeData; } /// Clean up function to be called when this object is removed from the tree. @@ -241,7 +248,7 @@ class ZetaProviderState extends State with Diagnosticable, Widgets if (widget.baseBuilder != _emptyBase) { return Zeta( themeMode: _themeMode, - themeData: _themeData, + themeData: _zetaThemeData, contrast: _contrast, mediaBrightness: _platformBrightness, rounded: _rounded, @@ -249,11 +256,11 @@ class ZetaProviderState extends State with Diagnosticable, Widgets context, generateZetaTheme( brightness: Brightness.light, - existingTheme: ThemeData(colorScheme: _themeData.colorsLight.toScheme()), + existingTheme: _themeData ?? ThemeData(colorScheme: _zetaThemeData.colorsLight.toScheme()), ), generateZetaTheme( brightness: Brightness.dark, - existingTheme: ThemeData(colorScheme: _themeData.colorsDark.toScheme()), + existingTheme: _themeData ?? ThemeData(colorScheme: _zetaThemeData.colorsDark.toScheme()), ), _themeMode, ), @@ -262,11 +269,11 @@ class ZetaProviderState extends State with Diagnosticable, Widgets return Zeta( themeMode: _themeMode, - themeData: _themeData, + themeData: _zetaThemeData, contrast: _contrast, rounded: _rounded, mediaBrightness: _platformBrightness, - child: widget.builder(context, _themeData, _themeMode), + child: widget.builder(context, _zetaThemeData, _themeMode), ); } @@ -276,11 +283,13 @@ class ZetaProviderState extends State with Diagnosticable, Widgets if (oldWidget.initialContrast != widget.initialContrast || oldWidget.initialThemeMode != widget.initialThemeMode || oldWidget.initialThemeData != widget.initialThemeData || + oldWidget.initialZetaThemeData != widget.initialZetaThemeData || oldWidget.initialRounded != widget.initialRounded) { setState(() { _themeMode = widget.initialThemeMode; _contrast = widget.initialContrast; - _themeData = widget.initialZetaThemeData.apply(contrast: _contrast); + _zetaThemeData = widget.initialZetaThemeData.apply(contrast: _contrast); + _themeData = widget.initialThemeData; _rounded = widget.initialRounded; }); } @@ -297,7 +306,7 @@ class ZetaProviderState extends State with Diagnosticable, Widgets /// Updates the current theme data. void updateThemeData(ZetaThemeData data) { setState(() { - _themeData = data.apply(contrast: _contrast); + _zetaThemeData = data.apply(contrast: _contrast); _saveThemeChange(); }); } @@ -306,7 +315,7 @@ class ZetaProviderState extends State with Diagnosticable, Widgets void updateContrast(ZetaContrast contrast) { setState(() { _contrast = contrast; - _themeData = _themeData.apply(contrast: contrast); + _zetaThemeData = _zetaThemeData.apply(contrast: contrast); _saveThemeChange(); }); } @@ -314,7 +323,6 @@ class ZetaProviderState extends State with Diagnosticable, Widgets /// Updates the current rounded. // ignore: avoid_positional_boolean_parameters void updateRounded(bool rounded) { - //TODO: This is not triggering rebuild setState(() { _rounded = rounded; _saveThemeChange(); @@ -324,7 +332,7 @@ class ZetaProviderState extends State with Diagnosticable, Widgets void _saveThemeChange() { unawaited( widget.themeService?.saveTheme( - themeData: _themeData, + themeData: _zetaThemeData, themeMode: _themeMode, contrast: _contrast, ), @@ -335,7 +343,7 @@ class ZetaProviderState extends State with Diagnosticable, Widgets void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties - ..add(DiagnosticsProperty('themeData', _themeData)) + ..add(DiagnosticsProperty('themeData', _zetaThemeData)) ..add(EnumProperty('contrast', _contrast)) ..add(EnumProperty('themeMode', _themeMode)); } diff --git a/test/src/components/badge/golden/indicator_default.png b/test/src/components/badge/golden/indicator_default.png index 1c0aa6a8035b9c2b4321df57861b01b7c7eb34ec..291fd461ab4aae8e99d280eb7b52d4f9637da77b 100644 GIT binary patch literal 3998 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 bPz|NPG>qlqYucFT2L$APoR>A6`E}EO0>jYz literal 4112 zcmeHJ`%l_e6u(wCOo`ehvu-PDw_j{ls&feQg*fMCT_T#kd=@)xVRN)tnSNCsvYJMn zF?2JtA_z0x(i*MS*@_k`y3P<4zr?0K5o~=xke3!;Ai}YlV0KXLBP&3+%dE8Zuv zt$RAQT#qFPC#jU@q%ISzb&Z(JW))(T%1&u!FNL9kEAa}xd2r?v0C*>IoHQN=gMsb! z5lXGrm4>o(O7$iIq%0a>pAYi|!0GM}Po%I79x_+sE?;x0X%8;X1WE2aa(6 zDY$oUHstXWylsjVWc!tmflGP>vUG{4@gpAq`fpDwr>|wIh*cF_h>OeT&~-8iDQ3yB zwUdT&E%Wzn25Wu`gIjt@CL+jJGqh+&Xmnne7 zyykWg*A>zr+vaW;jjF4YhbRkGCZ)GEz8M{q-wd_J1(So3#G1}BXqU#YUJ*yj@%)4# zmS!x1YklFg+n*bUWY(7@uB`^R%s?5Vr;Hr0eEFL=kS~kMvZjO&_FyeO_$7T0#70^HC#sDxevQ{ zz21yxL5WChg!7eaujYz2FTn_kj#f*@rw3sTE!x2>FbWYHy)(uC)hsL#z zFV@;vO*m$h(L61T$wcxHAbcW4D@3WTPo_(TT&pY#mt);7-&mZ<^E;M4{4ZEH?SGsW z9zLJ+tRF9N!Xq7)^2PDG)=}pwx?{k)IyGohwhyfA!NRDENXRm2sbaHro^nR73FGUG zp}F$cX!b#&@$h8lrHL4>sez9IK%3Bayna+fWELTYZD^~uZ#?U+3RTotvM2Q+(ai`$ z^sZ9BL;B6P2(lU7x~}sOToP$JNTCkxY`|FQjreZ|@V4n1NQaWNW`|SBlGsQ!;Wq>a z>7zM1VV1zj^r~K8CaY zx2WH?m%D@9kEd3YdVPvx7MDi{i8-&EA_C+4dd0nvys+sr*+m4H4F)CfWcS<>srfF# z1&C2a(Q1UFSSpRiDl6;L&sC~_IgP;KC;Ntnl-${!O?nG}t3F7#+<6BnW#U(d?)SZr zNFJvL5DytVjo_IKo~h_j1dkee)X<}b9yR>Gsi96n>&Nh)l>GHO@~;P}Uy_r%lCIqP E2g}EZh5!Hn diff --git a/test/src/components/badge/golden/indicator_icon_values.png b/test/src/components/badge/golden/indicator_icon_values.png index 9e930cb5527142a8bd102064e1d31dac99290a45..96e73834b042dec5f2f598fb4ceda7e9902bbd26 100644 GIT binary patch delta 806 zcmZvaTTD`M0LK4jH)qS-%4!*>wOMUAu-szi1ue~~8@@QvSZZ*djIy@zVG)b3EhOo1Y|lTF(ISu zf$iJTx;gsZ{wW-pH(_l<@G10kz`LCnlEN>xk{*UUsomOgvvL!WIIwf=Eb~^p`22;u zntPezupI$4_Y=c-R6&I^q zpIi`%qBzncrmFbI?QUzDtb6rqogJk^3>~?TOE|(%{Tl4RGqL9Y^j8W)Zk6yoQU#JDXLW{<=NAtyUhC!lj(918y@~#aW zN?+OlfNX%L$kt<6skHne+f?p`CZ1Qi9vAE;@GP}zQBSN(QW9|x07rS3iDB0zM>^li z5xIpf*Q=0XehZ{=KND6u&{YPs&(B8_Y;J#Bou&vM7R(Gkb=u@i&&&{fvbV z9}~9X)xo~0^mXG`Uwx}c#SiOkma(hkZ7*FLXZXVo! z_~~ViK-JcyP((#VwTbeMOVn5gZZR)=m|ysKe#SZmXRkMMXkNUT^j|+4b>mh58iNl2 iMZSM`U{j+%ImE&a+&1dX1KIqz9=9HlL4V;%L_t(|obBB~i(Y3LfZ^wx`DW5)(xho?+d%E2M8rkhbyrXq zc2f~t3i=mZxf1L`|BG9p&`ojSN`)?6X+xn>h^^MfNhayce93V!BnmdQDfAAB*R?zF zzVK{s&UxRnT9##*|8RJ8Jl79Cnd8l7j*oB6%*@Wt_Ux|Lvwyeu*qqwk82|u)FJg5k zK$c~htNRDDf9=L+ZaDYE={a|HZ&s^SG9Ul|@aVW3AXh&8c#e*aXJ+Qjch~dQPFTb#!S1+#SwUhNaGpNBH8Ur% z@zIUjGc)t_>8-m_^1Jso^Ty><^ZkpPxqkiTJaztw2Y)j;008jN*}8Mn)f<1h{kb>Y zS$n+Md?`Z#0057st>eu}fc){wtuYBgFA6+_m^|9-(=l}q~eb_p)_xP+ZkR#7p0RRBp!`%S6e7fJpcdz07*qoM6N<$f;W$@iU0rr diff --git a/test/src/components/badge/golden/indicator_notification_default.png b/test/src/components/badge/golden/indicator_notification_default.png index 1c0aa6a8035b9c2b4321df57861b01b7c7eb34ec..291fd461ab4aae8e99d280eb7b52d4f9637da77b 100644 GIT binary patch literal 3998 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 Rw0i&m002ovPDHLkV1mme|K0!q delta 475 zcmV<10VMv99FQE4L4UeQL_t(|obBDqs+MIKfZ=EDU7HNE&LAQJk3ewHNjMC_ksVKt zoOB`$3_FB~=m^3r+^o(2YhROA5V#`XmSz6-;`nrqPtN9S zwVs)oz1^KT*x#GOgDV370PwapmStI9z4~(=KY2Q*XRFr^U4OZAT()004N;Z9IE^y!`h2 zv)TIY;XME9-fM@BzP&%MzPvTpuU(y^L%(AI003`h^Z4X!W@gs+A6z(ees(?!008hN zHdpJHGc&XP>3^3ChtAJd>vgge003|~xm6AT0Ax0IceZC{X6N%yFC02Q+uhkomI43( zE~m|-!~L0=*|~T3!lCoC503Ver2qhc%V}d-mgU#Sf6U40YPKIfn)NpiX7%IGGc&XM z#b>kg_1$@S>*gHn@69LIKYYjQ0ssK-v;Y1O;YU|zYc$i95dZ+-&222pvYdasI6j>h zCug%dThDCF?CtK%!T#PH9(el$004M<{|XQQ0D%9Kf2y+)0_Y2q5Cb3<`~~~7iBY1$ Rzs>*v002ovPDHLkV1h93@n`@5 diff --git a/test/src/components/badge/golden/label_dark.png b/test/src/components/badge/golden/label_dark.png index 1e514a9b35c1468713c0c0764e9bc04a326a4235..56650a3549980dd8fac82044a82968ea850fb4b9 100644 GIT binary patch delta 592 zcmV-W0VL;i#*JH-r=9} zeD$sQ+nXOvy@LsD@BT7A{_>r1Z+>s;DF6Wc&mG!)`P9@KnAo#Vyfj|ecx~z#001n2 z+4|!rA9&&T)2m~)y0q^%xO;m(mLKN%JM*!;vj6jAjB#P>)|k)tfBv!Kv+?NB<^698 zKEuQQUjMpscYj>HxOe~h#L?%*uYZ1bpp5_ka8R?gl?R{sc=O$j0|m(SOLxcNWBb2( zzkX?N96mPN_xZg$^D#T%&HLvcY>(@g_Wt|eKi)XCK2Dr`WZ&nD&v4LaIq2_je(Tma zb9(3gwP$|-04N-qdH?_bus8$=0058?AOHYBMt}eS0Dl<)0ssJH1PA~CkP#pN06<27 z0000P0RjL3WCRER0FV(N002N{cJt1)v9@yL{tKVJw>9CMX`DH|GxdbY-MoEm>Inb< zEPz87E-zki@Neg@{4wKZvZ0Ze6?A-3z@%zpXQ_lbZU;!-O*t_`tx!tql z*pa8k+AYfAFavma{b{n&a5rJevC1mK6o{zY5DaZTv&|Fb7z*HDL99d{$BT=zaD@8b@X<7 z=gHytyHknu{h?< z`;XuKKK6Ew-oNl)Uww0FT>gAx>Gj1q95-5y`#U^&@M_$-{pjtscYgo?D0u20lOY2) zf6QY2?CLmp`R478AHIDs<2duUbNkWUBg}4nQ;PxsaPn5SKU$l62L1!KFS`x^062N8 zUw-}J+%qtY?Q($G9rs?7R7vtXD-SO=4;W*fT^ZujwUpRMhZCt%} zc3i)4er#-c1PcIwleaQW(=_)G006-01K@9Ovk?O}3zOgis22YK-*Akq@LZ*R00000 LNkvXXu0mjf?4c3& diff --git a/test/src/components/badge/golden/label_default.png b/test/src/components/badge/golden/label_default.png index 8f60d7c5148b4a8b3df55cac2513446ba3bcaa27..ab898e1a0f6ef33403d4801014cab038fa1fd606 100644 GIT binary patch delta 512 zcmV+b0{{J*9IhOYL4VjuL_t(|obB8_iydVcfZ^wCHkt?qS%vt8kO*pF6R@&zR+1Phx~0SlXGAcaH`qF`1qo0E@YVG+{p3VTnn*VWDNGUpkX;=Sh_ z&T740Z*E>)&9%!X=FW}P?B5-ZiJkMCIk&r+-Aj+=^v=@L0Dk~*9ISr)=Hce+k54Q; z2Mc=j!e&1C_Tj8N1^@sYv8`)gZY@0n3;XSd)!h1iwe%PO02~9`fBgLP#`EmEGtWGC z@C!WnXXfNluHTS<`1%*#n0fx?L(CN1!-IP>Cr=;UOn?7A^Vcs= zj{p2=HE({nIZgNl007{B*uKB_^odWuJKRQg@7I|#uN~d`hxcZ-53v!Snfcp8*(?q5&0u5g-5nKt_N7 z005coXV1*s-+OZ6^Rvqhvy>|rm!4pGr_OAa9svM=V_@s0w`@F_dGT$}0RR9;Z|nWf z9xpuu3w!0lX3l>gKmY(ZdaLz%y}5aHHPgv$oQ*dzC zC*a=AwLXDPPCfvaF2$j1okKe~NDEROYy=yq_;+v!-4Y@1zj&|Lc7J|%_c^%X-W+#Z z%d#vFZqMAkIrI2v=H$t+A@&but{u)C-k90jUwaJz0GnXz=zqIq`S!E5XRxNLAI^M! zXJ-3_wU+<@@PD^`_v^JMu(n4(%>4NM+A9D6*aSPj-hckWmG@^}+&lXNJo{tj(nX#> znYpxk_VY6{5AV$^f1UmOt8dS|{Kh#p1+U@R)0s;zUEHSMf1dg6r_ple6C+ z0091tos;9|FGPHC=X@Vzj~~rkzIt)z|9m>LbB+(eFv#-ume5=Zn{H z-e@`Rrib@tZe2gU?YBPw02H>@9smFUYz~u}0V$KN0SkZG*}Xh-a(sH>t1Ih`S<9{K zYcE*e?kj6A003YUY`^yI+7tLMc-{K|0D!>u$6u~JfwjH)!OVegfdBvqY%R;OJh(k` z_vXywqnVQ@YfqxGe=u|HaOUvF%-;UmYXAV)1Y66pENhPd001_Ff58F(05Spu0077c q5C8xmBS5o&1DFc4@B%gg7V|gf8e{oIf&|9^0000pv6B}1VvD! zlasTHgM+iq?p<|qau6H@p(rjob&!G-C#lxKVyQZ{wQyI{dgoT?b`ko0#e6+s zNQQhN$;x~_-`@E0>v8SO2V?%jk7MilpM&MFe&YDp^Xg0E;eYqv8>^2zH1!++0G7bY zwa?CO|Nh2XQ}19xyPiEcj+{F?#_HQ6d7+H}0I;aFts6J*xp3^; zuNL}nef!GQv3}(6eLMeeKD_^Y^yIj6lAO7^CvFG`xcYMBh4%?fz#>xWsS#;Cp z`3vLnsnd6F|9!)6e*gfu|7KGU0001%hX4Tp05Spu0F&7QEPt%c4m>!vZrr?k;irAa zCY&>k%co9HJz;XI2lh`r0RVs{Fni$f$EM!Ef55u;0RRAj*}-?;nR){g+x5&-WA7_3 zPCWwvfF&^7_xkB^=<|=q?iZdLvxB~dvrN`c93T7Nesdi9;*&8}SErr>0KgJhna}6j uQ;z@u0G5M)!2trZQ3Lx5lh6X<7V{6ipnutE4==O;0000EpXj_^+j;mthtI=V zp7(N==JWadmk&P~KfQTk{PyKnjfT008hmH~aam6H{+sVpl)^V*L8)XH(Ar0AK-Z zxpwyJTP|#W@PRSgwR6K?Fu$@kmUgae`26~nwK3bw`L(NKwz6Zx=f@ah?ev*3*4HgRdp5gi z?ev*({@C$9H(px(i_-uA@Xwe{JpcdzSR4Wb0077c5R=FPEq}9RcKhzJetGrgg>$0AK;k?tJalsW&jO9giFx zyPkP+>KOn4EP&Z=mLN-up!bt z0E4oQ(u@!zq##6MDY4y{83;xWQoo1rIWt?=*8gVy^qyzy^?G-AzZtiyyRqHA8xOnP z;4mzX=HujeInK|XjQM;v^&9{I4#4d9o7L{u-)^Vg!GxB}#eewtqw}d}003|R=C`Z6 zsW&jO&1O69*PE$l003|R7TfK+zrAsNeLXgt{eO%u7K^dnZudUFTrS3Dv;X+0FZ zz@V(7G$SM?pbXk5KaH(iW|imwIfK4N_<3g6I{tL7r2-gAMoY#=i}E`uRhuQ>9c3!{LPz<=f@c1r=Ncrhet;n&%ZqTalAY` z+jzdXhtt#3aejXO$#(kc#f$OvH{X7^_U;b=00nOz1CxORH*J~y{>Puw{r$Akx%u8=vF#oB5AZtx0H82GIrh|h*DaTeaj?JK_8I^H?10%cP1DWo z`|>W%=7aN6Gh0000i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?T)5S5QV$Rz;2fL?~G8}(+KQDXHwv5~pVQ$=R6;Vx0to@$Xtynl6 zr~hmH^k%7Z&hdYY`Lb3w4kj;e3ix!%(M5>stkRYkpXB8kyE*TbS=HRjnE%{Ne}Cmq zzT%nuXU-hTF}uC5;P0m!J4)(ecGf1}xx35$hHRf)lboJZq=kk5_HgoRX_3P1(PjmT?Cv$fP`!g~;sLv~W{OEabenQgyKY#B2c+{T1 zd>$ji0lf_+U$4*ZkBP9~W5)O9=I+PRHb08ZzP+!k>H8d={9oq#|HtcZ-q^n7^Y4Dc zV@IQ}AG?41wzb{i?PBilDNmP)jGOuR&)dS3pD$(S|2LPvH~;^Wy@j9e%?0wl zoc(_MV|x6pk3S!op7}ke@_u{w_I16&&(GP^?0LD}9vJ#HFXb5+PH+e?FeoTHFfcUq zFfcMO7%{OB7Cdw5;NIWIpIvKi7w4<_^R1dBQGgqqnynAquIoO|pAwfLC=G&Et zE6qR17vwzMxl$b*sC5N@dRLkoYzzb`+pRN=$Fx+4jOWS<&+ZAA7G~7M7KLO}mNk%3Hh7=YK28IcO3JeSmZVkY6H7Yn7 zAft(4G$V|b45OvuXpJyh8;;h7qqX5^Z8+3w!=LO`jNSR?_7=MWi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?P)5S5QV$Rz;hO4KRG93T-e{Zbu*6x#{58ImBSoJ&uo;;bdCCs}y zz&T&>4XeeH3pb<-vNwty|F-(cC51_xt({IWo`$}N-+aN1cUee zKLv%~{{1|^{NBNqdr|eJIW;w9Hruz@d=+6}`1gF;`M5t-uXugl?7nT^mtX&@?v*41 zgHFTL)wB286hHi0%YJ-a?(OY0&F%GelGfX8?T`OFp8Qg5={P$>{?tJ~Y!+Xxp{9e1`@9+G_&#U*_)z*AHclP5u?ff%a1sNEg zZ7q8L@o>6cPEASKI{xeC@9#_g4!{1)V!!3L_3!R}`dR<^;ok$(=l9J1{yyjDpYZp! zR`=?DZbdS-_L!ZblWeaCPzD4;9ZZTwIyXz_5W~TH5BDZw`Gu{rJqWpM|NPkL~#V;^39p9WwVe z+xf{@S^3G^TV5+$<7dmx(7?LEWcJy#;C^7b5o@kL$V9rsiTC2DN@5biXef<_5*g*k zXtEhiHlxXgq$+nb%Zz53(JV8XWr%E{5B=ieGyl>2?)AxgN-i=0fv2mV%Q~loCIGd; Bs>1*P diff --git a/test/src/components/badge/golden/label_sharp.png b/test/src/components/badge/golden/label_sharp.png index ebfea1a74779972819cfc98d0e133fede230b8cf..3e96a77718125d34dfb1b0396f4e6aae62f25778 100644 GIT binary patch delta 321 zcmV-H0lxnJ8i5;-L4PYrL_t(|obB2%Y7}uChT&f%5fv4?2#U3ZrF9^O@CcqEot3R8 zNaaCtgPcMlSc-y?M6(ulvDqQyU2vbL9RAFH)6L85&bx=J)v)yrj;`k5==Y{)008ix zyR+#5006-D5Fh{mKxX&)h5c7EcOR^OgUcT?d$)Q1=gi){^<~e`%$%LhtghBS|K!EY zqo)ft1Fjjo_;A@K006itf58Hip#nEBvwQu*`~6MK*sSBj zO)mfdfbHN52mk<(5g-5nKt_N7005bti;IiZrbhq(0NcSAvq1tU3zI+sxE6l^_cuG0 T6v)Sk00000NkvXXu0mjfG#{Vh delta 318 zcmV-E0m1%(8~z%QL4PPoL_t(|obB2%Y7}uChT&f%5fv4?2#U3Zr3Y{i;SoH97FM>N zAe9I4204X9uoML&L>vpd*z6GUF1XKA4u599>E>nj;O*UI8TQ_b*E5?pyIuhR!2j;X zt_J`B0Q*CL0001)!^;~C-v0c9Co}gR zuGkbj!^Qc`(e3No^!>}s*H7y<0RX^N{SzRsKCXL_{q}k0{-f(V|Lc6_aK(%G%*^|z ze}89NFF(vYe!l(r;u+RP%i2w6r!yy;b(;VH;Hvxu3zP8yH!sZLi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?F)5S5QV$Rz;d%I#%8IC{v{wA;ESg)drZ;#R<#;skMdzhsi9dC<> znZ-4kCoJB&vonIt(fW47#t(}HlvFMrS|D_TW$u}G8-p*M75mqhGJpB(hjVBCPh2Jc z*>G*x>dIZ!wK@0qSS{NdoxJ8fe_z|rBRdV}@3i=)A0zkp#>u7685jy!d|q3}pS^8v z7gfd1JRX{)W?_9ffzFl+`GxzLwe=U~X-xpa0^q2dAb6d)PPqePv zyIqd|JO4+P+m|EWpO>C*zs~+jy-}N#J;&?aSNiels&1s6RjbA0tCU4+A3ugAo%81H%ap z0R{#IWd{brfsoUd!k%+PTB&b2+i?_84pAwOe&RoP2U z1_l|%XmN0O0=fgyzjC_F(>VN`H5 zKt>b8Xhs+<8AeOR(Hdd2HXN-DM{C2;+HeTghX2^~IXiY=x@>s}*u-b>boFyt=akR{ E0DB5^egFUf literal 3646 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 X>MNGU@BIjD(ldCv`njxgN@xNA3&3x| literal 3673 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?N)5S5QV$R#U`&WmR${hIk-naJ5Deb=k-5m;Ed9wtr2&A&Gx$y>O zdrx+bc6xBh{(`_-Uq^2i$HwNS2?`QhOgfS-34{pDOcmkaJo%P?$BE)K$G?Zx>^;_g z-tsm62N8Bdosckhuk@4ERZ;?|zrz1tZW9;j{qcxNNOSd}v)69Yrc z+1%HAfi5g~Eug@_;NaE(WY6r)uG>*txu@X8lO^5$d$yPV`TRZpddY)!`C6;Ge^0OP zEbh1YbK%Fo_W5FF+mnCqef+2OzWUoA@2vBCZ{}RSvorblekt|+|I%X1=2%&OeY5wx zjp?`d)p?h0GBA9IU&}dxce8Ht&x5v;_3jzmE;`Ft^yEfo;j1${cNVYT_vw*E&6CqV zi}l}2xA)7ajIXKP}C+ z`*7AgPF}ojw?+B8f3mlaznkj*{G9EE$NM(^{&@V^xx2;Rw-tWuw^x5_aogm-a!Yd0 z$3L6>``1RlpJiQc3-+m{-OlvXOFMzStk*+ZXPr4V^)LJNYIb1Uh;7`mYuBy|_6wPTQPUf~fe4>q_1>r;F^OO_ltx1d ze=#wdLPk@_XbM58tq9euqgiG&%Zz53(JVt`Lwtl57yp^&xK-?lH7H7800K`}KbLh* G2~7YPbe$^z diff --git a/test/src/components/badge/golden/priority_pill_low.png b/test/src/components/badge/golden/priority_pill_low.png index ebdc35f8cee5e380aac8e36be8d18bf2698b4ba3..6199e19f5fe7c15228ce57418b33df4f680f3eb1 100644 GIT binary patch delta 806 zcmV+>1KIqY9-bbML4U|eL_t(|obBDu>)!<(!134j>zvvm5n3x-mMcsbEfF*-sZj8s z{Wx}t71E`H=%pW{TZagQBBBnSwng*@gvAKWGH3}yBn_J~(B(F|G-2`eJ8hjBY_YNI z^L@rXJs$Vhi`VtZoA>*@vcA54X3q1*nSacqM-I)w+z6MskM>ElOcWo72pZ9C@H zZ8y#x@BF~rd*f|$#megWqW}N^7qoJIfV_C}#O!|b2lI!&{Q07Tcf9+i*?aE;^ZskM zZRmjj0KoD%CqN$guZ-Zyk+y%^YGnYp8G#^*M=Pk001nHvjOs>XAaDR z2OfD-OTK^4SAXWKyY5-&VE_QY@>!jkdEw-V+4K0mH@#%f}HA005W2)!!ex_}8xf z6N}sh001nX)hAwlc45m79y`3ST>t>U@>zZAmBmHFQ?Gae0ssJ9*g}70zV`a*MXmz? z0G7<^u6Mj|Vapb|3jhFEKC8R7Eigb9xC;OPSU#&C*}AxBSmZ7M0ATs7es0I@vvcbW z|MjAq-+#V+KELDk1)Kx`04%FbZ@u!W*>~Rq^YQ)PnDsYapHrvT<`*v>x}@P#r`Kj? zX7d%B=BJ;1XtrE=)kfY5003O(R@T?o&&yPbyQ%k;k*Y0`fw$Ci|FaQ8x z`J4@qnVBCyb71!TdjFhSU%RB?Yp>oi58wTz*?)b@r#I|C003ZloD(23Ge=(i>)ij# zAI_66J$KQ;J8#%IKe_M0xqi!a8+srB0I)p%EkOR|`M({T-yD5*e*5yD=66S*n=@x- zKJlJg=FaUq=TqBv&dt|dU*8G<09@uS7$5)u0E@Qzzdir}0QmnQKmY)Mi~s=u05Spu k0JE+GSqqb(19TSu1jB{G0g3O!0000007*qoM6N<$f_~noNB{r; delta 806 zcmV+>1KIqZ9-SVLL4U_dL_t(|obBD;%ieVz$MN@lJLhatf!U)iQ=yvFf}jNv zi0N@s70zH5ucVliiVaq-eTccJ#*38`q@tb003Um+Svi}#9vR$?GJuse)05?SADp9`!(~x&7Yf{ufK9b z4+H=JR>#W%{E_dM|V`TIZrF*7qaZNFxI{)sQn`r6ut9SZ;eT-Y`p zJbvV5ADmyhY4con#aqtl@uizKp9zpdPam0s$B)bh-hX`Uh8zk209^Ri4<7&h(#Dp# z1pol7p7o#n>9M7a9eU>I(zXBqfYr19=<(%6!=uNaSlSi<0I+(N`YZEOFPvWH8~^~Y zV%Fci?X622Tjmx30I+)2uYcp!OB-9}761USde(2)w!COq<`w_|uzJ>S-MM>qU9sc8 z9=i4o+kfY_oi{DvBme+lRc*TL;w|&-Tke|o-GBF-e({Al`TVJQ=-98%>G8?uPtDBC z=8HDXcW=FCwqAV6M&1el09@eK7K_DVX6DPk{NCL2@HfwE(B$`c?n{-~#uG0RjL3ux#u9>jMA)fd3x?1ONcY2oL}OAR|Bk k0JEOV07*qoM6N<$g5asD7XSbN diff --git a/test/src/components/badge/golden/priority_pill_medium.png b/test/src/components/badge/golden/priority_pill_medium.png index c56cd408ade3a3166ef2e475ef9f4c52684557e4..e5a1ab11c0bc8dc12d0426bfb0a9b30818a57f97 100644 GIT binary patch literal 4059 zcmeHI`#0NX7=IOG&9ELl9M#d&AKLC9M%;1|qAp7vJM47K-P9$K;}%U3$0f#eU0Xzt zEmWo3T5QuKi%f}D&>po-A_sGcMBEcS2}-iWH$nFGU+jmxzr5#t-sgEf&*goe&v&24 z;O$PII}HG^i@FwZ9RSM<0Gvv+eGisAEUhKOn+4@MJ`AuY&%cEaR+O-)I9qsC+GgJY zz@a`W;%XfA(e{$4N0H+)vZul_QLp{Ht?d?VlfH?&GPCij^~Xq;t7lv2z8Qnf^xUbC zr}dFqn?G`YvMqejLUKkvxJY_Zdn4+K78!)j`f~EVuTqGf$;|z1JW#PY5u|}UA1hY} zX;N?fk!-kgc6QcL<1{x%bb}@qv0C9G_E^1#CR3~I-6XATZ4>=ogn8YB!r*`uGjIY@ zh-P&&iLYjLSpdN3?F>ZF*IiM1Y-xV=LC+J)N@qivU;cdKn5_Ku9RJ85;=K&&7QYWb zs#Oev-r$IGI4msLF^o+?Gq`zi?$#`Zp=5jKceIysgwxaL@)!VCE|QaL4z+*H^0Q2< zZS@02Mz0ZT_Zv(&p_2s2dovFG&P;H_S*42yaEo0NdDr2co5Zpc~ z3WeRIZU2MwXC96lWXCJfO3x5NjGJ=s#N`?vh56eW4k^_Mg;Keq`j=?Bakl(VkG#tY zosGTNfHAsb03e@9VYcy&+$@cDbe#ibD(A+qhV2fb->u!I^ww~Ex>q9(ORL zHCWn0d?Fm>$0_Hr(~+YZyt)Q}kY|7I=B+lxL~1tATf(f}5hQd~Q|6VBZO_c#^-+G%x^wW+pzA_dzFTMCd z`6f?nLc&nw8!5?YX~8}yjnq=5k+_>G(vvX7G0qFUy?#xVsw$q+lD%RLLoNMUQOuE+ zNMw|mMhd2qq>#6l-EjaQgOIMjq;1D>eH~;5xum!E)?8ixGfz=n|4^CWxpc|{&h6JAY%Bycq=%5WG#vLwFkNlHR0->=;C^H^#p;7Oq$*&m! z@~z9=lD;gTWk@y$z3C1R_cEB40B|&27W=q76>1n#?Lp8?kLG|kt{hqY7fs#Brl$%D zd=hpB@^#g@IRY*Bdq^8U!ONV1?Wm4Lt{33Ht-Mc#H_IHA&8@lgi+LKvZN*1UoFF_CMK9 BX^;Q_ literal 4071 zcmeHK`BT$J6yIwg$D5dtIfTIwIK!UaykRt<(FyRPy!j(q&N@7R?T|52}{UQ6yzI{8p@9k$l`#!VP zpGJqFElyeh0MHTPA+Z1$Is;&E#moeHSk%gV*rCX=VL_mM++hTzK%av3c>rO4| zvv5nDp-HHn_4^jKM4O3F!kzferUX>H)>x5|%Ny?Vjh-uPaXtM1(+3CCmKLu^7 zE>ZF-b_#%sOXA5I zc1A<92cvFc*|FQu38j^_Hoq!38_(7a3_^&kBZV4r=oxfR~=>J$*^z3Suw0CBw;kvto zd(IFADvr;3p$cSGtzl1Nq^W65Px95jQ$ zWa?VCk?JJn=yDhO6dDFe^A?TH7tQf`vSk@QpRR1RMS4X|Wg)@X{^bc;`nq_fN7Eck zUd_=+AJsR}Pt?OZXK#2b0($VNhnsh?uUBtR)k&i=9mQb*+`L3q7)LdiKv%9M7Y=i2 z`|%xv1`x#;DWs=#}42x4tujUeFg zIlq8!%{gM51Cakk;`~vFoiiq2Gwuo;ew2jkoFqI6b|LOSS_zv5k2G*u#Ua`)eyCFVcwd3lu|2)Ft)_KdN^7yD@9gB)5GUBi2XtAKmr zH19nvWD9VM`~u-Kt5lYHJkI}b2#kl<5yfDy^OROSkX(XrTJYv#Zr}OtWDQHbF&FLs zhc9H&@TxJ&(+d#_I>zHJ$e99s@ms#}_8&Wvch%8&2u!9<1ei?UPH&`bPBk_|=X*lt z(+Pi3IlL_XONkuWENsO8Q1;3JfFh0^`p&OyP8{`qS`tn1#P85J89zX%9-P F{1>QCmfQdU diff --git a/test/src/components/badge/golden/status_label_custom.png b/test/src/components/badge/golden/status_label_custom.png index 7e5e24dad2966b316bc86fd68e067d8750210382..dd961c4f1bbffd4975d3b52d00c761a1312e1666 100644 GIT binary patch delta 1510 zcmV80Pti_8-E~29++g`yN3+3$s7MDx$Gy#SPjl!_uiV^{o&-|S0``#%TsyI^Uivq z5ddH+{GR~%%Eu?Uw3KKWb8(Jv=I z|JRGz_EJ|v005p6AO}7%$tQ0d@{U`QomV{dz)$~va(~}#EBhu_T$fz^q1CJj=db&2 zOYXiYdEfrUY~3Y70D$Q>`^1AI4-C2Uh9TGfO|s+i@fLdUp$D_Du(0C!xpnKZaPs7e z=hv-Umy@fQpPik}sZ*y`Jf9?!*+~{pEv|TewdY{VmMz)7ZTpJn7nc@u=+L1R&nM%b zgVnwc=6~kqa>>P)Bsm@6ON+_v@0{d)pIOS>#uYy;0Kj=~Hc6HjlYQ@*8t^Y_2dFW>M>Irz1M-~ZtM_^G{D<)81`zvB6;_Fk3!tC+uR*JU~M zjn)0~z1rtk?K!ya7q83j-uS^4&p-CqW4Y$-Z+~9#d@}wySncaz&+a|>hrj#O_db8s z`;&+7Pxk-8Y~FIy>H-x2;CwclB=>!Ek_%pzy!e`P8+zsS$;J!Le9Zijl?4c_Rd4x| z$+-`G{MVAX=brhPh5uaLVz5@tA36JtJOKdKs@WZ{SkB=u%;ch1 zp8L>)_x%4Y1Z&;lFC0Dmxw z*-Nin%74vI^6mSR9cQ>7$kiV@{Q<1py|*NnU%Q;i+}N7{0E}ap8Isrk&QkvA564~w z*0vMJl6!AWuKdkYW3K`LFq$Dre)w&R`R=jg^S6z?PBNLyu4;amS>+w3S2@4h{hx{F z82cQ|Wc7FXKHty5)9rufZzM1OxqoGUfDQmmwV8#5h2vdzT1#83IHzg1JZSvkvEoSR3w|_qe0QlZp zu%7J57l(Z8y^}nDPx6{yNiKTT7^}hg>nnF8_x$s9}{ij2IU{msca}S$!?ZZ@on-!Ka_pPQfjg6f`;)DgCO`Rm zi`o4KS3Lj#p6rYP@`OWo4L&*e=^=;zeI}1ToE(27IeDV79z6T4-<)jNo^0Nk?7DI( zyRTl(g_jEt0Dz}+P5}Y{0Psv0&VC300KhXtvvCJR3bP;wvjGbmxFaQ7m delta 1454 zcmV;f1yTBeB+Da^L4S2gL_t(|obBCNjGc7>#^JZ8)3MSGgbJmA6bmL|kf^vuY;2@R zVg!v*R4zcH;CkT}F)opKLkJhfB_SGOyl{yd0*XqBfC`FR1QiuTKtWm)3QVnZVZ0ct z5=mQT@cr7E=SiB(OwRwDH(#d7`Atvf%$uB?oXl?Ax<2{C_kWT<|1^2v?qu`EWZRbA zor1Yx;nHN$@?`1CWYvq3r<|M|a@^3X008z*^L7;=*MB;>=7MD5lH}-h$x&;PB`cD} zPfW%aHD|)!YshYpXvg8?tg~QCf8n&9R8f-m7huWJ8)L$3h<7}nU%5B~bA++qX~qe3Hx`o1Y!q zcTD^IOs~PRWy`Yspyks(zvH1Dx$U;wrhPsc{u<2m`(S*0JVzXUM3Sihe`rVY`BRg# ze~^qXo`3e;0s!pu#*(QgM_+tha>@mJ79Y=hYqD_Ju5a^?`;zNE`RE6o{f;-~mRoOm z^auat#cS5)s_(C#_W8AI)@J<-&aXOhRc`y!%$|JD^gd>K4bD8{%)I|SADH&}`|rO$ zr<`{3w9hBQUxS%`AFO`z>U`_#SN!|)6W%x#`G4OzH+k8|r+v2o0QT=>-VPRxdq2`PB20=f6EU@aUn}000bQ^xy-@RUb=Ee9zER zV0If@IQ6fGm%n@HB>(`!8Qt{Ng2vZ54{8cU>Ku2u1{94 z9e;WT%nb|nOAdc_a{G^lUIG9xjM2v5C5H_7Td!cQS@HB_<8Oyv0RS+J(dG@w(nE)y z0dvRFmC3}0p;rI^3}ZC0Az60V&@*7}Sh`~Bx5NPe%tfPlqh#`-p=ZF{F&guC4gi?D zMvImwoBuZS446A6Htha=bN~QmtFcAPr+=Oh?SI6cAG+ji$@qS|zRlLZ&ukdXRulIK z5CCBA8awp(=RR{XkASZ|V;)eK&k2dHU(e{PCfe000bQG=FcD ztT{Ki@*_h}f!S@#rsRgtCNFy5&`SUShBHc%r@bQi$EM_`7Y{urnLmGQM(0QK=FM!t z4A0MW|6_37e8Q%~e000kroyf7LC8JUDh0~K$Kbai)!l7ot>~QUc$&Fu5-f(5|gjGYY0RR}@ zzh8p&-~M`I@}<`&2d++@drorL2}4YSeb;XT}8C_aAx@0Dr*V;SmF5 zr=MJuTz!7>xW&oQ>yo3^BuiE#OAbyJ?B<=&VXoM6Z!)nV*>rny^JU2`>yrbXl&t-5 za`Z_h zIDY6=004WZJqi#20D#BBXb1N<0RRAaY_o9(dJ3`!egPK$1V|WDPWNNa$p8QV07*qo IM6N<$f?ARIc>n+a diff --git a/test/src/components/badge/golden/status_label_default.png b/test/src/components/badge/golden/status_label_default.png index 2b8606dc587185c1288ca901459c30371cf5d0ca..00459554ee1af7e0edf7c1a42281f25c55f18ba8 100644 GIT binary patch delta 1461 zcmV;m1xos&Bhe#}L4SKmL_t(|obBC9jGcFV#_?y~GZVrN2 zU!Tc=yOV?alBGjOTLt4dX>)SQS;-k&rn&H{X`c3ym7H?!QBQLK019RvEkM5Z;Yt4Y zpNBkgQ*!au$%WgJP3I-2oSmF-a&t_0>=yPW3-ig|?y=}S2J7R{J<07KOz!xPu>*^$*13voO*up@{ca%38#)d5dgr(^E(0Z zgIg#0+zmrs@$bn6mybCX92?8`CI9vAWZw^yH+^ww?0<0p05+Tl17!Z&Lq2}pB(M5J za^9uu_XI!t`OmVrxVY-|C(O-dacTAcD9+8zWoZrTXJ==#yu7^X^+~dI>()$$$*R}y z+rKaO-h1z=*B=k>!DM!l!^?+Py?(9d!D*+Rma{gWb>zV`x#dmC+=0syEP z77rx5-Z$im8^#_5y3To4a`rQmFMnwD+v5NLczlNMeR`73Pfeb5(IX#p=vNQ_1HbS7 z^fk#hKQ@d#1^~c@G5hnc%;ci&k9@$=q2ym4;X~=~_)#)<;;|VF8n(P3`SmZ8-|Rnf z2Y+<{0FJHM{Xd+^)2}`Hfe($1r9;UFFFv+|LBr&P+uz0Dz5Qc4kPXk74J@psIoE+r}OP#_^L~$+^!?PS`Z|Bme*#!|+EhSjqhh$uGY(_9)Qz)ek3^ztPnX0Dpj% zVP;6K_?wmd&p(Vk3UvKsS90i{M!oU9y9Uh}D?vBv=b z*pMFFg7r}I-x>1B*H7}Ki<0O4b@JrrjxidnkNXcK|M!U_-+1*Wubk$p_kXzZ0RS+T zhYgSi-0_h~ZvViLCu~YCzB;*ZTe9iAWYamx+)2$b;jvrTn=H&H`|nJ?e`~UPXL8B4 z(_HoUD>?HbA36sB7}KK$$OHE58nXMphurmznH;z~Ik@l0b{04uowPYQd2@2+)@lBD z`!pB7cqN<8Kk8`?06@WG3Jwqe0D$!{9Q_ag0D$!&vk?Y+3zHxQd=~r`TegT%xvi~X P00000NkvXXu0mjfS;+VG delta 1414 zcmV;11$p|>BcdaaL4Qn1L_t(|obBCvsNQt}$MMg3cIIu)X>MMogcCK(E>=X+#b%nf zZd!qMk*NHmjQXb=8i7<2lz)^Uf&?opv@p9!H%c)jFg3HXi}x^7w~1&wW9l|fe;gDg zb$ZU(=Qn*`FBt5=^L?Jrc{qRU&3@1MO-xTuPiG5myDYioH-E`p*Cp%jN!G7THg4F` zDHz70rOBdY$!;r>1CC4%en+y)@}XA&0FWdT&lDh6pO;*DcCy3bCwllQ(`kIqbBd zX2JZs@8;wur_EfBbb zdsFi9tCCC%y$AqcygVKt_x>eWbzE}tMakZ;oWB>i^MBuW=8;Dpnf3YY7B0*q8#m7S z{KAC`vvCgRCnqPfY15`zpHGq%D^_H|Xu+({uf1<=9(?e@S)bn)-h%~`3$l6B=2@Sg z>(9ZGB}=kw>9UzGrjv_5mMq*cIq7?|eo6oUW?^D_dV2cN&B-~3CP$o+yyW=#eSzao zJT|x9c7N-v&%br$k-7Ye%VvH4$dyOtvN@bzvEPc^@vl2(eLhM4aOJhxZP(pqeg13T zI4i3zST*bO+roP=*XNk)&%sAd`AAOx+!r7JdecM6s^gQDrzfv?->jb&0D$LclqA=l zpX_DZf zhF$^yFg`{%{wP^`&@7Tu2=7YTOe6`=3lKgK0OMh_{Ltj?KMg$t zhVkg8Wc7{7KCc^k2>`%&7`^P>$v-b0dIk*R_A8RTUX|>yc<3bn0OMh_;_&3*spOu& z3_S(-Kj&b000;tqlrg2wg zlYjgyx%IN-rSD9RIx|^%(9r7u0LI%h2FPP>yF9u1SIK{_PuAU&tY15GISXuy7A;M7 zTAI9Q|Kz}008r0wB?5Y007JnvmpnX3bW7#T>%#6e>%@! UJ#+P(kpKVy07*qoM6N<$f@3Aub^rhX diff --git a/test/src/components/badge/golden/tag_left.png b/test/src/components/badge/golden/tag_left.png index 4ac7894a6e5c3c066c0ac40c5d1f234eb2c9cb83..879b23a6cdc273e23c2760cf6dc42aa7f35aed6b 100644 GIT binary patch delta 550 zcmV+>0@?kt9Q+%QL4T%6L_t(|obBC9jv7}OfYDn8^e*g)vyvV=tBuFKl6d0m0t{q; z)R7-FG>@<4_#BB56uPR}r~2#OX}w%- zf4JNK-tjTU;T~+y&NTo4;Cp8U$bLV@W_$0Y{2KNG1ONaoc7HNJ_CtIC006gfGC(%l zLxcbT09qn0M`SN9~*PDwMw0c;L%^P0-@UR;1-oL;2dH?|6xars~SexzP zrR&%F^W(?y`R~scFX-{{aXdXez1j62{`fHd`t<4O_wzKyYH{)30|3Bp?WZGH+uddH z0RRB-k{<%Zc7MA70KmO`6CgX=?E(M*ck~<}&iViV0Pbxb!&x5y06=3NV~nrP`Tzg` z0`qQf$14B;pmFjfbN~Q=TbbwSaJU`-0KmP?V;oNQo0}j$?X~VP^Bh;IIl_aJnQ*2pS+q^n)y84><`QC<~WYaGG40RF4tq8r*n@1007V4{LtXmM007`|&F3EAS8-gHaew`Ff9^2=0N_~@Am2G0 zmvOy2oO=ua0C=|6cU|z$$B$#TyZPxGTx>4J%^A;cHW%af*RSt={r+$qyZtmaYi$Mq z0H-#6`nDJ4xVpMJ+xa(tycvJJfB(bhwwu*huS5s{0GyI1 z?Ei7SJB-88XMgDc0B}kI*;*fKw76w^+uv^}HGc002%xfZXA@EaS`0dR_nk zI0XT64@c{H0RZ461js$@567{)5g`Bo@DKvz2kiF8bB_Q308g3#0RR9p0^|qycXR*% zcoG@T3Wldzj~GY&Yw3j{yJxPk){Oxx+k7@c{q; zr!;-~yj#va#II(vo^8AW0Dwo}6|DbQufzuc06Z1}@}1Q@jqOH!006*a5g^~p(=@i1 z*6jiSz$#;!ZFw4Fn!c^uJ@+600PxJsn~V9yubO?ev2GUt01DHxEVf_)000T!vw;I; g3bT*{PyrVC7p0be%mf!txBvhE07*qoM6N<$g0$Zk^UiX?U@ zOo5Py9eaF@!a34(^E9t~*JFJ%egAR)H2!nzJ z0099qcJcABx%4go0O0i#Aiq34i4Xt)I5z?Eo9)vWkK0S{0)GGiUa!@@8@}D$jr;qD zqaU!oT91bduD`lkkGJpM9en?0JH|A|SV}Vh0GQphZwl6@j~~bF*W05XaD9C}Zfw@mUIJtf z<9Pu9U_Jum0Ds2w0sz1~1jvCl+ua2K031(%yujnuWGnyxIE4TK001%qA14F= zfKv#N11%T33jhE(o+I@E7SrzS2LJ$Y8prBArfH1z^3uBi0D#v)fIMRw;sXEx<|II# zv0CmT1ONb-$KC*0EmtQ!V46-l!k@bS*!{1UCSCymz)0Mt??3K+TJH}l6R!XO;4B=o z|6trM005kiqxNr%+XVoC^K#t&#kgGn060GZGK|{=0Dy`B8OH4b06=B+=Cmoh00007 l^9Hk_0$>Z1Z~{~o%ufcPQmgPc-IM?T002ovPDHLkV1i1r(~$rG delta 571 zcmV-B0>u5$8An=bi-s0C?ek86eBDj8AtDvjPEfamgEfLON+002CvZvkT6E&u@V+~zT?+XVms8uJ*(t=k0v z0C=qVcJnYE#0LNX5ZL=AbN~Q=r!-%!S7S9#=bi%q0Qe2eV~p|Y>SD|y1ONbdX7d8X@PL1^@tf(Y`x`K7Y^Ccy)Dgu2}#8fEVtEEm*60 z8dvMpIc5O>0A9GCuHju@%wv6V+=kwZ)oD*qPCbWm>iwtA4*&q{HZ9At^DBg(Zts1h z@IO}bG_Jj-1^@s@+54EodR_nk;3@455bJpX0D!0T%Yz=)^8x?>PvxMK=GOB9002+n z;8j=F^ArLA0H@l!1q%QG;3*yVu@3+MfFrZ<0?7)K5Ci8H%oi&6io3zel~Diy002ov JPDHLkV1lzs30?pI diff --git a/test/src/components/button/golden/button_disabled.png b/test/src/components/button/golden/button_disabled.png index fd36246939e4b5cbfb5be99cf4c3ca1cf4dc7839..ed2720f9cf12faf8af2bc7f71099d4c40c4cad7f 100644 GIT binary patch literal 4231 zcmeH}|5MU;9LL{a3FRg3>awMxtJPLH9p(8Y(KD+vZ!?>9X+`3qFw;R~3MnG#ZL>t! z&UrRayw0pEQ)ZM{AmKX6uF!KVmDoo>EWaRM4G}fj$GhG3-~PczdWAr z_v_k`!zt_5Ze9xjSeJU}Kn4IlVE`br(7tdFzqsNeTp$WFQj$S?fAAFCSXG#udJGLG zCi-j@00Fqv1N)9K8qAQCLVAv18w{Up`=-zq3?iF|H|{glkeV6Kg7a&xG?flKAhVfkLig z_3xh)n2QP75Lc^pX6e2YUdpyjZmf1^VX>Ur+UAZM)gJ+N8AAj#1rp#JS&B`!xIrQ{gOi&7Xv{0cpAHb_*a(4-(!eC1BE(^gHw{lWulf$DMVqqof1q* zk2@+zVE(W_R|0W0KE*prCg!}>L^R6wv?xHExPniJ(L(S ziAk?|o=~=|`HVET-bkeklgcC?qpIEAL=<34zEEy5E;&BP&E4|HA?0q94*R}h*3B%4 zb`eK+r>RF0^~j~0MvrY#SEE~gH|)ZCT;)rJOuH!3ny@@GbD2OOjFv9Rbx(WGBwFTV zvZ;ac1!HVn_VV~ZBay(%Y!a^Cg9P)8uSuMalc%iyp8Q8of{t%P0(|?Fg(7xQZyEMK zgv`nd-J`B3_%!RL-VLqZD61Yo0fmuY5VO|$ZWaM-UAI*}*w25Mpe(XOqyR9q4>jlj zMt$3gSu-E|pk*hXu7&y$jR5e@^J^AECw)VG-0(og?L3y}Xq(}&046R$|7Q^Ztn>Ws zftj`lWC+mH(q><*xJyC-20`6(MsAH$piH)$4(ks1qIRhrlR3IVHfCt>=87j0e+9!X zKP2^671_duEgs}?a9n?#b&Cmi{F(O11yn8Oe#FPfMTnl?RYCh7Kad- z?l)KSZA6yS{S_UB09Z|wa?`9k>To)DE+KF}CpZ$*3;S5l5TmS`sXwmfe z<#*tHgm;@K4o33E0W=ZbML$?Q>~t}Fs_`B+X7Eh zV#*(_&wXyRCD3~-CdOfqo1XZ=_P1D<8(*}h_lNH@H1AFm+o#oH+-&d$ps3};3k`)z z>99ha?$=#1dE3OQyKe`3=4Wb;+7Tdtk;`UUVWgRh3-|b#TiFdEyg*?o67(&dWy7>W z5Sc)LxF&(ta6egC`F7C2pmheL`WFB=)Sby@QpFl>b*q3@)P3o~-lwr*oYHO|jE#@G z)E5R6!lnDbO>K2TUGft(&XPTyQfP!iCrPwx)+eIXQ9p?F8i25^N$~T-`S0~X2Y5TZ2lCHXpEZA$W!0 e6~g}q&mP}M&y6xchTjB$Q|iIP2ilW!D*guP{1aCI literal 4266 zcmeHK{a4ag7{7{|vzc|8rDnqVp|ul7@^p$ydC}a|%vvuqUA}bGNt$G&CNUDrZPrl_ zZ8bH)*2!k4nTn&7LdE6+ni(@vA%!o5;fxniMBWtkZTk!MJNJkC+~@PdeV*q&FQ0R- zd~qNlFd!@d01%jz7=IW51PTD}G=D!BX*zf53@p4#4kyHcju+uGu;Nn^mvq!0UUdJw z%K)rCniL;hqB#2~$W01*4H z1^~t787{V2Xc?J`+BO}lE2G0TD=FMDcBdL79)IGt)rB1>EcH!r9qDtK2aK}6#BMxHTG_i7ogVTw-Qs^EY$LI zQ7>L#s((q3@f9UFH49TG(b_m4aBHC)5l=N;AI|4e=nn`7vcdz_fJ*Tvh&-;mcDz{0 z)&NDRf*i(+imHEPq+aZq9x@T}3i1 zy&0sMjr56J*hV_RPYj3H3H3r+v}sH4g>rlcZrTs1VwXZt#ZWWfwb2C~C&dB~@kdT= zRQ=E>DU!O4kQ?>n$Hw&a=#;lC2Ivwk+Op!k6C<$$TS1f1u?jgbOIujhCkq%gPwD7}9=9E;cDp*=;ngdg1gBNmAC1fw>8I_APxW|t3DaYQ5{Jwm)U&5fM_$UNXK+_DQN&$Pd*+rPpZ=YLc(WK z6QsU3W_pz(E!ux=-wMFPNa>M8)e)aPU|_jPYqocjDie}#!5(xLkVsvIP}Rt5g+jjQ z55U1cOR1cm_sAX@r1%ecz-?qUe>cQY6~hBEx-i_E8waVYWu_{21zSf#WPMApocWIG*x7Y zH&ZyG?zaIz1q5RV?gC}%;;C)I#^HR;+h-%)A{hU%;=`*2O?8;;e%Zg36oU&}Srhuc zZnAM-8~#4SVE68t97A);5~`h=DVf^~R94TA5XV%8;0%c1E`5e zUvWq--SVy!t&NOT+Zzu`ZH~4hr^>xRgsjMXMZt%gy|=<#0oU}{_SknP7{&DEcky(% z{qdnF!memRI3&QgX)nGSy4FG|)C2>fmW0TwjXGW5HfPl5u(RnVPTb9J2dnz#=BLD5 zJODXA2crmS?PD5)+)iag#@j^OS<9Rm!%2M_cO~Ei3$_qlFGnrIJRUFX*f=(~PhM-G z;o!_}Qy+reYiyM_wif7(kwWzor3{)-EW!zwDBBV66jC)fp6%#`hf+{%CA^1vc>|E= z11Iw88WaG;&pn{$K|ICaX#~$?@JvMyBY4=*!-gI<^swRoW<%HdBA=f)dv9EZzgGYx NeRd$eBkshde*hlu1hN1C diff --git a/test/src/components/button/golden/button_negative.png b/test/src/components/button/golden/button_negative.png index b0283c1eead01c7478839b90a74542bf867b91cd..aa2882ae2b419464ea910668089cfcba9594219d 100644 GIT binary patch literal 3715 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 literal 3849 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`$cr;B4q#hkad&v)M`mp%UR{29MZcXNW0CoDPIz4ymrcGqfwD^&rv zocD4wvhv$j1bzrGP|t4_JJ|f+(N*B1(h~Qr0UusCdf0lbXrH#tWSMVH-J86!eg9a! zW^kTAIpO%@e{ykW-aPy*la_wj#J7G=QTd)<)1x1s`tAPs*xgKq|F{30yjk(_hUsecRp`+WoYVCHKGcYJ9J1{Ub^e`|oFc<+v8BTBr;1xWRH23l2rxNw`?=#jis+Xlb zeo+zi^WTdKDIi;Vcm1n7=PY(_uR6ZB_;E$ekCR1Df8RZtBXcME`CsYBN6wvko_&A) z@1Oe14Ud@|tLdHc@6%-UV|^m*3?6Gl73A+l^{xN=>Q)r9-DZ3F>v?PcG5q_Hyt(l6 zyI1@hUf=uw?9t7S&FSC5_Wl3)`oHARXb<6lmz%U_x1ekoi0eBX7wd3V3?Ffe%7u-vz2W?<;&Vq{`qNMYe%V3;7N zz`)?()&NYok^}^2&bKy||G#hVoiBVhyyWlBJhn4>uN%^yF_x04LFvyd`>?*~qneFVdQ&MBb@0Il@$*Z=?k diff --git a/test/src/components/button/golden/button_outline_subtle.png b/test/src/components/button/golden/button_outline_subtle.png index 536c285b10c71b4a7ab8eb5fe3f970f3bc40f47c..0fa2b83de26ec113d2da254b9db50337dccf6f08 100644 GIT binary patch literal 3555 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHxY}#WAE}&f8mi^Rz=n8ZH_?R{V3PLu1i$2N4mEJ&dxf{k<-(j*f?| z8`f~#ogI^;YIc6Y#;?8s*H-OK-^T~O9?T0f#20vRX4y5k!F)}eQq_A)>FieP) zo4+lNF>ZURUEkd`R~Z@f5+##+{{G8*ZTlc}*WSG!trZy#uv$hjGB8LYGzls&FgUn1 z0FA;bIP@=jZ-^_*?$?cK*IN+yB4i>-+ZqySIMc{(W`kb~QWV zZTElu96jxBMOD=QfBFxf&##k-ulaX#nKc8$p3r|ytgvt(;3cg7L=vnFZ154^@vx+` zdr#v3|HrrgHNR2E%+RnsyXt>|#oO=Y(eD}8UwZrY?2f2oH_q1SurTakS+2#vprGu) zz|hdc01RFuCKd*U6C46~1_psnr6=%iSX+JH>Hixk@>}Yvi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHxY}#WAE}&f8lX^ORFX8ZO@dmJ(T}tfc){tfPsk(|p0=2OB4@(9p>E zChHK^Vs>+b_oIiBMt%D@f6Td6{;X=*%=7ck+MNFkG?*jjdK{3lkY{3HU^u}cz`&qj zeD~h}&ENPwEZV#8MsMb&R}2j26Qz=S4nItLYx}_U*8BCxBzAAT&cN{F{)f$a3=9(l z6&M&C+!}zUNHQ`pFr=_>;1ZlU@6*G|dB-0E%L@#Dvje!l&-Ovb;0!M^n0@Avy;@7Mgz`}ik+|9<)U zKa~+S^_4%%?%cblJ1_qCFW<{~Ha0r@|DS)jT)ti+e_zesS9}Z%&rfMb5bGrZo}a1C zdg7U+-;T<@<~bYx|9cw!UwX}cMur1FZ`J(xQE4ZWckLc?+>*clviAIZl;ktno|}!%$ zJUREA^V~}(Xw=}qeSrWFobg`zNdTWH0Ph@vAC6qDu4m($7w0534Z0qMFX0zoPFlt( z0={Yq=RO128JLltdaCBy%5%!s*SUL#F>Mlwq)Z&Y8GJBTd?Vtis3%cUg`N$n*QD-A z^-qmIqPdYrt$L`N*R|8?n?rV?UrGqCC!UBUr22gDepzSElbmD6X_cmmyJba{wAJzFbGhP!edOC8#{Wd8hyh7UyzCV_d>5c?{> za`_-Y^%%M#p|tV*3sqQi%*_HXD5Q^VeYD!s!G&stZE^_7v$$wVKfH|Wg=6Abwh7Sb zT&6UrmG~Emy&Q-482wLg-o5}2P#MpwrkCd&yokKLKHIB7mpCOVNlBJg*9dT4;O#qi zZzsiS#m4z2MyXBes{N3>=}aKiM1!bJTeaf>!mK0Pb>l6x8q8eFJdft{wwkO-hKb3R zhl@hjrVLwmDekU0qt^vBv%)Dyt6b_G-I>f zLdBX>n*5@%V(qawQ#~ZmJ2!?0eKOUoH@;VGJ`J2=jo43XUHkQVld$|+GS}8$ELiWQ zNJ+$kzU6o>YjuD7#^d|9JNWzz65~FyQ2OL7IU9h7&S-X=;TzfLCM!9 zSoZ-86j%QuzwcJiA?KjD$b~Fw$^g)-Gk2tvBx}fUQwe2D)~gbQ$6-aKH+ z-x2bsO+AEo2yxF7j~KR#S&utB?(n$7Gfe;cz4au6CmH^~$?%g4&gg#>({35g0KPKb Lp`~}F71sX&D)3hb literal 3927 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq|dV)5S5QV$R#U{vC75B@cYOe=cuZws3A%^x~-zx17BXuq|ePy_G$a zRghIbPQ-t!>#McX<)U-_<%`pt)$<*_=+kCd$vsr&nd|Fvrs@?qa>eEG4T-r~#Rm>Ckz{}9t*U{FwYU|?wIVPIrnFk)h1 zU^ubHcP~TCdb{fP&5sZA-`{=V&CBiQd+yJ-tnD>tV%YJKQ=mfL{@{ol3e z&7aTvfB&rbw%tCu;@|T4Kj$pUUNp8ozi(BaS5xx;VC(bk&#jY7Q#(IzfAVM3`u|%$ zT|`-nKCrYp4XpnQ1r*O^>r5ieyrag z`^|8^RmuN~r?c<(n*qbb@F&)QGI`qj0_K!J(dL-R~*W?$#}kg?SY>W?=02k z$A6O1v9?#U`*-QH_q_kv52OCbGBa$LG4nh9*v@vpi4~YPSU4CMCI~73GmcvWP#BV7Mg>O$WHd31 z=8n;lVYE~ntr13R!_nGsv^E^A4N0yIpVd!DIdv{*B4Z3N`7n68`njxgN@xNA2$B{> diff --git a/test/src/components/button/golden/button_primary.png b/test/src/components/button/golden/button_primary.png index c2dd825ee514cdc79809381d995c3a9eddb8ec4b..124eed1b7ce2020106c0d512eeadfb4a7f8a0c89 100644 GIT binary patch delta 685 zcmV;e0#f~m9giK5L4P?(L_t(|obBB`i(F+GfZ=y`HoF_ypr!~B1+mc-Hfo_(>8vem zEVL0sYe^%v7P76sKwC=#A{P1w#7csl;8(OUALe7+-LbJ%$jow|&E~r5dFMPcX9mvA znK@^+SS*$U001DcG4%id0KkJofB*mh836(S0Ax1D7~}Gl#edlQ`u6z#>i+oij=zNP zVB6iAjSJ`Ii**>^XWuYG!b>N((8`uNq|@%D>5Q;z`vaAIui zeRFH-8Q|F3`{wr4BLD!LC>vLPKbU$3IJSPeb}+8r^|M3(fTOZ;&3``NKOG#7@t0fW z000~rSHS`R0Dm$91ONcY2oL}OAR|Bk0Dz1D0RR9p0t5g6$ZX!rgHO%Jc;)HswKjNX ze>rwGXDhGY-kgoQ`>S6Tb=~#f{`~j&_4?t;>z_TpIi7rUzViB8i{*G|>;8TJ*4_V` z|0eVP>bqck`NQ4ux7*(U08HYZ0_3T)o8$Ah&aSn=#Yn+&Y|U3c06jPyW4^|Dn|0TJ z_|?tv!524HUjNDKkBsLYKeh7u-)+b)f@XSYlj355kpL7NQfCrVI zU;&eH14lOQDL@XF>u+$m=5wq&!u`H}T~p6L_3IzwXgId^0RZ4cnJpHJ<>f1jvG?`u@%`2P@#mf8)HA`PcDH8Z!nyf) z=cS$T<_kMhj{^X3qRbYHh2j7J01~c(1pokK1PA~CkP#pNvupze3zIMePZs7M-+q<2 Tc18eo00000NkvXXu0mjfv{P2d delta 683 zcmV;c0#yBv9f%!}L4PtyL_t(|obBB`i(F+GfZ=y$C$34>&mxJ4h>a4k5wuV%8+);` zQm_#%Eo{V2&|hFH{sEg5BBKAmMiRkR{0J6Cvzo8nJvO!qnHlc0#_Ov0+4IbtJ#cPj zIkT9iX&L|k0D;+%c9P zeziaM4sdL_J^%o=Yx(WvgSmHrW9$1XhvWC_o>UD0ur15q++4vwIy@TVkDIO$0Dx`r z6f6J$AR|Bk0Dpjt00961G6Dnu0LTas001B(KmY)M%<6W2_{7c_FFwAz(E+a?Oylm= zV(t0e)neQ@SpTu8o6djz!>#et??-FTKY4C79(`bE?fE}%PUF;F|K0a*)APUjJDCsG zKLz9S?{17+hwIM+0I3XsPhT#XB_Ke*8WZyrwLu0x&mZ$J-^#@N~5bDK@)-~VEN zy!+YJwdX&1<^J*1!zb3B|M}|CICszbFJSKXZ`1R?4NrXd%lPgWU%&|fFbDsF1(N{; zM>n~x06CgAKj5_C@7Q#O|N8u<=H7qq*FVN~{*D0vSkGd-{iEA4_!mFEcXm8i_`UQ5MrQO>-{+008_ycnTH(0FV(N002NnfB*mh8MFTbdJ2<}1J@UszX0X}mIK#h R8)Ei1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr0OUr;B4q#hkZyZ9ATnGai3<|IEH0ld2!`3EOm5iFJw__y(y=U9_OL zmCLM&YncG6w{padrJpWn&28;%ZCx6!VWzIZBD8@kdxOPOuH+|iHecSQ<(KQW98EfT zwq^Et`O{QQhe3=AnO91IK-1Qi$<9NZd! zqLK)~n=;8g+Sb#Lt)8ymmz}@Q?%lnehF{g>jG}L=AG>*6uV?xE|L-bZ&CK_)WoKwG zo%Qz5%W(GTbsw*;EI%NT+;hI}<>r`^H%4bJQT-uo=b@W5hr ze06sEE8c<^*Uqj^F8m%Je4c?J!S`9WwfXXU4DEd1z8`z{=srZShFc8g#I(;V?9Z8R zJN8q3|AtGVv6YXvC)ekHZ|nhjq;I)0^OG+({d@HHe|SB0-HYe;|DNplcTJilveYyaJQWS?C8yV-mG{PX6={{7?nUVij*_3rJ*k8$UmrJatxb9*$-uDYs%DP%N-jHVD+dv3HsK{U5VONP;sVaSyXKlM-Y XudTZByzL{fA;jS6>gTe~DWM4f2z2*T literal 3865 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr0O^r;B4q#hkZyZ9ATnGq!)cf974<)jMwsJKg+y=D8{@UmzA}IJN86 z4GC+<4@)~&q%I2GB@%eSYr_TsYiq}KfhxB&p6IB~apPR%Xk&VBZu`5tZ{PN{Zivvi z=d+{o->&aJr|jN8^XEB(vxoPb73)5l1aiT%V16L=PL7F%f#C#)00V=9vI7G{Lk|NZ z1A`GlaI@tx3H>-5dp(=qXDWVP`uzCVyQwS93#Z?_WoP)V{=uD!?~CJQ^6Q^m4nEJw zkkFg9|L4>1;`Tq@B?rH6Fgzw9|L@55W7hZo|6G~Qz_3B>bNrt#tAq0!oW<)N{p4UM zm~-}j*~>>)q#s<^y1HJ%eEt90SCR}2Yfk<-_7$wGyZP_N^3U?Y=NT9hd~3MH7#Jo9 zDljlOqLqi{96~ z&3*hSK5mEdVxadPzdXSZIsImi-MtUbzOOBr8C|_Qx%l-}@A>o3n;kotRG<4?|NqbM z$G_e^U3&ig96RfGcP%%6`5A5g-_q=T<=IQmpMUNxEZA`9Z|uiE|L(oJ5%KWj{Imc5 zuG@F?QNqj9e_nn+zqUkg0VJw{H7v|NCL^|qjS2G5NANLKk^mVx0w?1K~A6ZTGuU;54a8j$-|<|o&Q zsr&zx)jU2KxtA3foX=`Ffa*@1+4t{AgpV!LzsryP{}$faU7QAvsm5?@i3XgK&eZ%4 zUB2udLwg!9%+7y12~7dNVY>gTe~DWM4fSynd{ diff --git a/test/src/components/button/golden/button_text.png b/test/src/components/button/golden/button_text.png index 7276f3b31fa8d9e538d1b575cf517237ca5eabe8..36c7c960f207f39357b148dd19498302c2420d9b 100644 GIT binary patch literal 3916 zcmeHJ|4-9L7=Bwi=s;;@LxyOJ5FFW1!Z%@32C_0FIx-OwN*Kiza40QI7%dapf=qNP zD+>{+AZA&hivkfaR0h)GmllW6W!+L08p|3eM4&ANTZB)$)BOeez4y!A``%sNd!Kur zd+*Zc>8aa2cXX5I7KqV|3fTKkjcYOd#Daff02QGldhF;IGjNo0J$~12E|jXlLG;gJ{6*| zL>F=1SVhr9H%2I1yB23-a-R*dS<{0J+84j&+0kj`^nVmg_TbTAXGL- z1rF<`jI=wRHqwbFCR%D;VA>1=f^HA7bDp!yIT}B2id7B==UAUuR1T+> zE$VCh`WSUYH)?Uq<2)lpq;wjXt3KVr`7_oVWTG5ahx zkFQo+X)iZx$`E8)7KN2<@;06H-wBGvNlo&epE~ z*#KZZERnIxulRN7XV64Xl}O7hxb~&0X>PnUk~&oSsLvqQ9V{GOwM+!?md4Hq-Ws5y z6U6FfW=arkbR6y?t2TCSWn~J5Ra{DVEW9)A#mv!WRRgq--LGrK_<~0UVQfm18?>u_ z@!bd_IL=X8F%(OjitF#a886R`F(Ou0)yzrgD~_{0gX}0TB9s-GYC>;Fon?&=JV3FL zF!bSlo$gv^Xzq9HY31^A&w@J;X~P>T>}+=-SMPp z0PuqIV%%0grZA9>x8&WO_&4AIj1$QKfx$@tLJ|CjsLSaB#6<@5w77)e5`s$zE+M!| lr0aX&`Wm^a;s2?IR;uLt#8)4^o1O=#rKP0Pdz16){slLgM|=PP literal 3501 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s43jj#WAE}&f6Q-T_S-DZ5N~O_VK$&x&#>CZRnh7EqJGUhuFoX5>h*u zm=i^KYaS)f(cAtYgg2hM*zZn#=*6oC|5nXqLZaZ#f?53Y-yEx`E!p#`js13}%=|Om-;b+*wz%O}ef$3Ijk4|G)5>q( zKCk}x@bc(_ z#~=MYyj%SEY4iQ!@4x^3ySDa!`ok9|*B1Vs#l*;PgMGOH1A~IH0|P@t4+A3ugAo%8 z1H%ap0n!D}tYk{DYL?Cmk4rILyZgYczo&lQnDhDXH+zqJn}5hMGi*3xa{lw4_wB&& zJlFpJ!T$^fh6j5D6etQ~3ZrOLdjl{w$V%O#K{pz7WE6^{$!0X!j3yh(8yBPbXfz*< m=A+SkL`esQKp8S~fBlxAqgxL>NCmbL89ZJ6T-G@yGywqi5)?%M diff --git a/test/src/components/checkbox/golden/checkbox_disabled.png b/test/src/components/checkbox/golden/checkbox_disabled.png index 0ecfd7bfe7a9772b392f09ff4babddb4787ff4af..6dfe17b6329f653c612257c0c47ca719a84e4b32 100644 GIT binary patch delta 457 zcmV;)0XF{A8`&F>K~;lEL_t(|obBCBiyTD&fZ=Kpvb*#MA{xnA0#Sdv7mxl8KOl&B z2!YjzG21)I&Sg9aK~~AkHm|$x^IU7Hs;@88RXy!?yZrzF00_MIUq1i<0C0bkQ35o7 z%=^bodbPYBm)onc-|vswbeg6ypFJ3x`Shsy006+z@$L6d-)ZibpFbWC zKmO<+*8%_l{@;!|1M;?I*^ZZgT)gu-Z{H3O007{Axp9E}<%7*UzIgK4wPWA?@Z)%O zv8=Tf003}Dtrj4srzhjlr=MIq_S4VL1PA~C;5(Ch0UCd`Td>Z5c`?5F`kQOVd~gr| z02pJ%02xDQ00030Zrbg32UWxK^WRr}fJYBMTy;GF0O0m=1_S^A$OsSs03dU4fK1c0 z+U9Gn1polteg_B0eD+|q&F8a|)z$(40B*m7Z^7Ekr(=vUmhIKiw_Z)tH0HCDv6%%3 z007)42j2;T1pokWEQinmvjGFV3X^~W;uib~0oGs&QZQD{00000NkvXXu0mjfbDG(A delta 472 zcmca9eOY>fV`#0Xi(^Q|oVRxmc8Rz%G(3Ez+P>rU84krjrvu$ANuS>AtoUM@#3JZ< zpxZ6+y5#lQbAugHl+P{sx%qY7{jIxJ{rcrxe%0jsXB!3v1}69a-?@SG_4dgVnM~?y zN>41gY`%Nr-F?#UpZ{Fo+rKPxP5ANT&32XxppW1-G7U``rl{w zuVZCksJY4ai~Wi7?z=xNY;V_n+bqw<0W^MZ{h#LyKaW?H7XSHkc`x^IIomp`dpYIa zxj-E;f!(YpdZpw0-@mUZe|TfF{XA{~phdO{3=9tL4L~1AG6LO^!U8mBf*?pRZDa6; zxIHzdb+sQp9NKuZwHc^7!ocB}fE19i-1qams~?_!p5DFhz+HL0eby`t3_m{o2xkY< zCpdrxD{L-rknz1-G+Td%7|>-u-^wbio_!qXy(r!75P@2*YirM*l(;N$`|Zz)`Ufk+ z-7lM5Tm5)rveK%Eo&Wzopr0L&KGaR2}S diff --git a/test/src/components/checkbox/golden/checkbox_enabled.png b/test/src/components/checkbox/golden/checkbox_enabled.png index eac35ed1ae4dbe7bbf92ec42c8b2286d0e5e1235..ad258d31450594417988c5f753ff1b6d6d88bb1e 100644 GIT binary patch literal 3604 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-?4i(^Q|oVRy3cE!3fG(6my9dq+ESCh~NkL2m+jyd_N8a@zyBABDH z(s!b1ujU(*wfql+IW}%E6bswe+}qkZA$7Wp$GXb)P62m^5O8siZ4$p zWbAJDoISH~wc)XU*{ch`AG^1szPNVYQ$~gc?krQ^%WK*!Dr!vR{#9%_@#woxQ!`Jte->Z4*le|9u@Ao40=Rn{_uw#!H_k{cN_etFUSM=-Q7ytY5+yV>?2kIRd7#jK*fCd{eu`n>4 z-~b9LD1!vgByCUFTmJUy$3LsL``2#U9F--?!0&MI+z>geGX`K&ioA&RHG1ajYXJFXy7bur5|3-J) zkGcHQXLBi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA;>Wi(^Q|oVRy3u99_SXn1&2CC*@8g93}rr5j5(Zxm256Z*c9KSX3os5PfIJG^}JFJ zXjx0^GEC1x+qyt8AQi_a z;DfGR)7Pv1{9)05&h7pBjERAP@BSm@h}-S{c{BEW{g!_H+{p;)hB|qO>9=}%u=v9XQj6kniVfE_jTGrQ7wa@ps&)>h} z^Ua-^YeRuSb2(=#gQRl?NN3)x=c)gd=iBYr|BCxe{F{5GK$FhNm4gEC%p-=GVK!-7 zpT#gR9C!$H@$AK4S0$d^36wg#-NNBs_1m3S#p?gxswxKRY0v+t`o-|rj<0viYJNU0 z%lSX+_@#rFO^z)E24zL9vE9CXk-JQQLD}_IQ~_x3?+>CnBt?`m$VEg&>8MI#68>l? zjfN5#<>hFy8BI2$$!4_X8m)^7HZ4bs%F&{7C>NFW%=eB(mqdIC2KE>j7(8A5T-G@y GGywo1G<1ys diff --git a/test/src/components/dialpad/golden/dialpad_disabled.png b/test/src/components/dialpad/golden/dialpad_disabled.png index e2357d55bbb87bdccd91ad080de75564549a9a02..5ee42187fe4268ea5ce61ab1da2bb74cea5c4acc 100644 GIT binary patch literal 11188 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 P2IRP@rAf)rv)BF$Tg3QZ literal 12517 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 diff --git a/test/src/components/dialpad/golden/dialpad_enabled.png b/test/src/components/dialpad/golden/dialpad_enabled.png index e2357d55bbb87bdccd91ad080de75564549a9a02..5ee42187fe4268ea5ce61ab1da2bb74cea5c4acc 100644 GIT binary patch literal 11188 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 P2IRP@rAf)rv)BF$Tg3QZ literal 12517 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 diff --git a/test/src/components/dialpad/golden/dialpadbutton.png b/test/src/components/dialpad/golden/dialpadbutton.png index b7c289fcf7e5b0a112d1191a5339e065fd2d5e70..7bbc925e25b8127a7558cc62e7e3f9cc4306d4e2 100644 GIT binary patch delta 1812 zcmW+$dsNd$79PTax~OTpD^Cen*2Pu}7EIXkMpUdvp;kf&F+@d0l0uM|LI}UK^gy>P zkRIEmpaB#pC6ENf@N8gRw160hV8{|kf(3bnBtQs|2xLe9nR905esjP3-EVIG!Rf!T zLy*0np9qP(eNUsHMC>P&_r9XoDK2%y9oc?@YbPhf_MY)BDJ68Kwjb80?GxM%{$(uu zic{Q;qY|>v&fYKlkEVaVA_WH&f9vEnVB+`%`qnP|D?B2iv*Q#QFVq<0Wg;^%ogP$A zU0o}F@l>VCQ61AE)&NZ8OsO{_JRekPkiqW2S(VxMw30azg{^9(T=^3KNutAh*w@wr z{rS&2ze`Z%_kI6?1z?fp&!DO`TwBc>w^_vTW?;_sd5-nZ}Kx_3z>2;lyq-~72b{Q zg<*j`HMfF0_zOppCl>NGkpJMo^=&A*TuJ${#pQzIXp|Y`Eu#USkD(k+L z?>+aOrFH5NEX?ZD6J}X0a`W3+K*F4d50q?PW~C`KwDx#wT+DQ8`S|=I{qeO#oC9T&(+? zi;8VRqurqTkvh~gUzc;S(FTP8u$5`&8k!Z%I8C#Hm&{wJEN>XWqAt21tww6xC ziDc{c035X!r?k&8@|2G>4|VSYaOsP(=8-#H@pIyoo1^QSVwwE*bc-DkWV3#m6V7$cD}1@$_W2)lu zxw%HTH*4LTzuW5GByWcvAaOn})))GRKpzAII(LtVw)#mj{0$@xWBL`uea zvTXD#oSN}h0PG*BtWM*lJ^5%Ff(XKu&qwqZ+wb`3v$jn5fb5M%9rW>~rR}4^Q3Qf| zd8*eiGU6`v7#j8_mu9s8T2UTYr%)*L<4OejC3fpFE0W{#RIXI=-GjE1{V3w`bi;J7 zj>ce&^JbyhL$i+sa|dv_MfIgggD!n4p}A^?yJ~1#d?c5|r7+Rd-~WRujat zdijK${|22j!~gH&?EyK%_~3doQKQv%B)X4 zU)OTEF+^gWSS-$3nhe2;-79LLTv=w!C8!^nWeG9L=qkk)x-Jt(Bk5Ha%W&y3bJpqHsxxWKs`BGSyU95P1dF1>KW^! zG%q6Wr{%V&sNb=USiIe`Bwd=G_(@4YjEAi-`kr)o`Mk4uR=2~skjkVnMOsxi#mUKu zfb|04y|fyOl>3R}zJY;!V|J|GxTzTIyH?mcRVKcU<%H94cgHlabdoj(HQfr^r-r)O z7M$d8ILswtI>zx%|8(vU{0TASt%p;jw{!c0U9fj7?#F^6RP*Is=v~c?J6uq9GiHl{ XFDOgGK*kL?aKPs$!%y&!U;5_%W{!}~ delta 1848 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 N-x+@&#_8y*{|C($qb&dc diff --git a/test/src/components/fabs/golden/FAB_inverse.png b/test/src/components/fabs/golden/FAB_inverse.png index fed07d539b2211cc0eab01fea2fc6e8d3ecae997..41bf5c0f2bb19182a90763d2cac9cf67d3ab9219 100644 GIT binary patch delta 1455 zcmYLJX;70_6nzj76*Xm0DNDq)7G)8Ih(Lm(mcbUNr4G?pz)6Qi*+Q`p;LC@06s<9# zjeu;)xHL=v!H9%tkWgf)Y%vb9$ZmjC3<+CELbiU4o$>v;Gw?mg$+cYSBh&b(uA zMevDZKW3E9ju2^_%NN?`O^xKO&9p9gb?%9{vj-|~CVD4+PefaBl3;7+_15@5GrwtdIgPf4~p|x z^BEzv=22A@?Ux=rNe+!rqyr@90F@H}176g`94FtjxbskVopfP8{vfOnDsxrUZWF61 z?hWJm`I(5aLj?r|92N=yrY_$sb-d{cSwb|DhqD*q5MF#IW&T#A�DO&zPE;;+6x@ z^pNUuG)ZWnlO-i%*wuiGO$-*Mvk#0yuUbiJg)N6=j(};OfwNJf^iq*p*^Ws!j@>EY zSHZT%Idt2WLQ%4OfQMCW2HiU$PnW`O1o;KaGRX`eN?P#j~g2N@syD> zBv}t8Jj@K_^d`_e-60cf)f)6~(-o8yau#II*aMJPGCL-MvuCb5mXGpMk~B-VNhYHq zTnvyB`E(5gt^LZ6N35Azfd+=#c9AwJEt7 zAb8b6It459WpnB>0ItP@jgXEr`uK4v4uD%Ro3ZRH0PXu!mNn^tfMujHqbz)3MoDJV zapST#jAI#};$GD?s%Dim2Be>vJcm#&PACS?qLmcs&9IEX)JICwxRtpDGW_^fR{*x} zI*PPQ0|?l`l4<+AsHp;Cvg4S+q}(RS@}Clv)0m;dhOgZaQRpq4O?m3b%t1|82pe}_ z?K9gea#B8@e7`;@-Ufh_-NRQcnUXc9!;9KOaN~z5{d?>fFLTk(lB}*62WtSZw?Z)6 zNo&_4-a4gELj&-$1rp~CdYL^z^x9Kn34p$fLs>KVw6M%ug>*RX$&aU^ke3r6X0pW* zCe>meQ(>ia(Q7{gd!BN&HLwJ>0{tuCZv)biW8^h|l_bx7;AoEFzaxg$s@L6`tHgWD*&uN zl$+KWHrAMgyjXE~`S6o3j2Z^Z(|thqjvI@}w42{8TeNb{oPQxyILJf_l{71T#CwY4 z_E95cI7U!4Pk7It`y#G}SA9R>!O}n6dmGLa?;%krlnNZNZ)Rpju*4p7!vjEwtBumP zuyA1*wsF#1dRDAwx-2IIi=m!Z(v?dAczS?Q@c%k0wpQi(Woza%y&DhHSJfRzSC1fD zegSd6^mei!r4*X}K*H+&>O+B?Ym1jqlkg6!P1~GIsjWe6-fTgVlfUM{#eQX7ette# zv0v<9Cx>PU`02Y`88Q@S{)X8?N|gQ$OcM_;JtKEMs;961St~0qq(+?*c2y^424ODu z5{N{MUteEa@ZK_?P(x)Q&8}?WDmT^)L0Iy$L~PRZ$6Pexggl$=ptgOD%X(&$m9t%u ZGphCVxAdKud=)@W@X62<)q&Ah{{xVS?-u|7 delta 1471 zcmYjReNfV89DgWH%_iHN_CjWJJ3TYC^#VE(%IU20txKC2p%gRPnHpIlFNtoet`nu5 zXDd;dtt2-KUzYEJm4Rhy?mW>UXv3Ej!4N?Vf&J*}+8@t7&*%Gm@ALV7zt8ji7WiED zxpsh6cPR2eQeK5dfoE4=I3d;9M3mgCVGUvGCf^-pj)b7UnhtqnpbI0ri4LEr3lBzA zjoih>p~sBheo7j`d93BZae+GK_LFzFWR~Bme$e@7U0X(?`*~SP3N@YTXQmJSmbU}x zI!>-w*0+{Zck40YRpB(3#=9A(UtwbMqgiPyb24dMnus=*E7y<=U4`{+bmG>~bCXny z@uS(>rSV$=WQ*HY8z_rU;pKEU0BRB9efvwi!jM)g3B}GBw}>dLnMx-$0rBXm zANF*|(z9M^QR-P8?%1)n{;^urx}F3#uPs8lK`jxFE#C7-W`>aYh9QapVa?r{t@zsT z82~qigpNJDaEA1#kggeNBrha!k+%u$@m|@CUWD{MK@cDA2!O9X2G&5I=*oL~Cz;(j zZeH+5W#Txjyl(GeIBTM97T@4jBjX>}kpc|u9FRC6VE~Gg3;+so? znOb*})UEj>4AkLHk=QyTH8p^RiNJ=QKi#1!&k*on0JO$A!M9al4fA?QJxN-vY&eX} zR-#2l4yt5oYN|#6!2VOYy(n=Y#`o;ft3e8M47bZ3>=Wq{Y-q#fOH=bOfZN-M&$eiX z5T4f?od9w0xltp>ez?16X6=24HbbtzM|0vkPn-y40N~j-uM|4~Fd_Q9w9w(p(rXSL zEHrTrMs1&b61<5#pPzK@9$swbtKM+((XE~UymnRl?hmr{#z?*A$8H{1Uojh9K8C7L zfUg6ffDNFOcCUd5duqAl{rRPGTgHINYGc}dR;sGtj8`FVA4o8=Rt;z~`((vj z5mWEdDQz7HA$P3AC6BvA7eP$!FFkjbVjPYn+M}`kiW1MxQC3YlcRFV@mIMP`^!od2 zzuy3Z?ZmnlM zKck=SOU%aM`nQ3Cs6FzP39tX5R{g^dC``pxd_auFQeFsDUBgl%A8CM6KiJpLT;y~Rfj%! zYjnxhO8P*=NJF~5WmYl(wa<6eyfpySjBc`-WjA;%U5-H6uq%kBbA93jfa~mx&BZbm z%$ObNH2;#AmEz1=y%Eg`5VoAL%kH{rZ~Xk_qA;!LVaw#-y;3jgD)CtyV%T4RW-^z) zSU|{|Gr4q@{imPI9oPt`^>~+LD6PZw9T(I|3}mfF-c+0+q;X9E5Ucv~4esq!?71=1 zlZ0ZdrBoVUPyXhO-mfAQvpkBB*g5C?A=R3+Hb*tD#2bsjSZ)q*#0+V>#A?C*LCtgy z%dKVqnW~eiZn^UJoN7$V2nPTc!h$A+Huu$wmlOpIebcgh`Ck}8}16g@Eu!n0rW2_oZ-IE)_B_~%BAtJlM~EyWpm(c>}3z1 RkWt7E4n@UB-j5*u_#dJx-3R~x diff --git a/test/src/components/fabs/golden/FAB_secondary.png b/test/src/components/fabs/golden/FAB_secondary.png index df6727436b8de3c2dacfcccee811eef5ace68ebf..40f2cf3ba1d760f5282a78a9f44b82509eaf100d 100644 GIT binary patch literal 3599 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA;FCi(^Q|oVRzayXT}zG(0R%FZcb>prJYGnDb;O4yP{BU`|GFPwgd_ z{B*XS@ec^Paf|aGV}0`>GqI>!M-(De7F2Mg@f&YT+B);+j&$|v*snI{zi%_Y|JyKn zeyx!hvtQ=>XLCPZJ8S*g4(KB3tZna@fsT0I&cMjPV8q12z;J>?fPq0l*@1zfp$E61 z^=iEvdq4cyvF-aqk#tG>H}#f%a{oM<}pcoS*qpclK(>|W*jcR)G*x_k2c?`q8< za)qqiFe^5H5?%BE_pfg0<@?-9pI+U5{I`7l?<41DP<7@f%MP?p9 zdGg_ndv$3qfByWFawhF|_U!+^&o_U(!##cay#HUPzds&czFyy!pMl|Y0m3zeJPZyR zpMU-@@?-YfuG_PzeAWGZB`;rH>1StPIJe;>^OLjE^1ge87#J$Nb~LdvFrO*r}| zrK{LyAJE4Z)nWUZN(<`iYyQ2wCXx;e>v=`em8{ttXZUYSxyqV7FaGMT`TPtADouX6 zzi7QL|L@6Kpst(+y*12CKw6CvNT#rGFfdFIRA69maBBd@nIt)aH?3@JV%GcyM)854 z4|u6yAcgK3)lPO)jt1Rm&{3;c7)?u~X=yYqQC_`{=A+SkG@6e_Vm_K#&luktl~{Py RXb}Stc)I$ztaD0e0swT;O2hyF literal 3598 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-3%i(^Q|oVRyvyJJ!%8XlIXm-nu4oFd}+*nP4SN25ri?^HF-qhT8^ z`RQ!EX1`#`hONSXnE$o0Y}w^x^Kx*mG|^PKH_E#D_@ zv-@A6!#3x_y|wLt(J#@!R$)TU3Q=&&haraF)*aCa4;}T5L94baByn?ib~=Z zEDMX>Q2lOc;nQF2!E;h;_W!?XQS&KdQY-_*ftQ<$8e(=-q~59deNH4@lE3bjJpa4< zvs1(w7z%#vXkvxg6Zwt4n8#k>9g_T2pTuHx~hx69}KUcY$p z{^RG)efB>YRV51B%Rh#`pQk~6FOSStzAJ4JVjz4Jiqq4r{6x=|BtS6-rmKW^bI~ zzcJ-1YxcbOtGnj&GaQIC`RV?m^}hVS7i+m07;+Z$)-VHIn4^X}B8ZPNu*#cJI%3_W z@<2l^r1vo5^eFK`GOCi8gfkjSqoIVqXc8&C~KkAu272o+QnpXF~*O?CHtfApLgHMz4!di zIlpu6x$o@f(Gkn+UF-n>%OZD$?*YKZ9RTY%yTwrQU0!hpd|74hi3kHXg|2e=VVfNm zxz`Rp6uaba0B{gRhJU)3RHGd3r60^MxT78!V%NqlArSU-?D_I=(wg-xmv3BixqdY4 z)TsxiMai+(Xr(Iqh3?bZm_~`{=Q6#bURX&8lh=E@#va9J_7Sn5hJVo@UD7=FTdaJYFzFR^F~qC`eDf zpAZo03UVk4M-08*Y^oD!`E$lf#F3^KNk=NGL5ERcC+zF|29YysJkEi(Q(?{Y*Kl`rLB-sMcO0#nSz}+JhE-3|Y%1{hcM?fYPcI_|k>$00d=4j2i+t2SK3-D0f>27N zXf6||1Y_+4022Rzj3Vw6gGS0R|21sWd*bnR@6uFn! zv$X?YZVCMm1X67?Vl{uztgH7f^G(Igv>}Q769kH$JyAX?gZzuK1P24=7EUTtXbrWM>E9^N?=mB}Z~|a}B>b^Ziv@p>B^X2`JFs zuUAjiM@6ug!l1U#d*-}>m!BhhT|8cx*^`4VHTa|q4oV;XI4GSK3dMtib#nomVxyv> zqz|sk#Y1t}#H$610y3?h)0uT<8(jy)|S&STICl?Fpz$dF$Z@5 zLU$HHelEAN1|WHX2j@Rn5T-oFhm*YX^7E1LyG>Yy>)rlwCWl3q%rk}=J_m8SBf(RK z?app4Fo7^Zv{}U;>S>M$6U2vn?@7sr0~X8oYX9~`{&rzZLqC(n%9hOYcys7oCYMW* zWG8ZUomXU5z-i#D{rO1|u@tG(4P6mtsz*J}oU2+2H;%n&7#Wh`NhY>>tRlvhWJ>6x zrgEROhhRx2RvneXow?6nNjiawRLvviFLVPjv@JqLV4!Fv0JwE-zd&nVo>DJ_@D<7T zY-Y_ha3DTDVCIvn{qid^&x&!j5UX|RA^)S;|J(=x6z$k*=HD*AH^9QW@hO^?f~L$H zRAY4mBC0DWMAH_^3*%ZKbnBhNjtkCxsmGrQt4lEFyOK9+wOSc(@rECGJfjb{)dBeL zgk*@`U5PN1oP|INwc24OH%KkZ0g|`_I=?H#TGW-uCljVrDtb%HMP|?eT}m1=Kou7+Ud)vB*hmGvgHmNaO@n%PW?&QI<6Rn}cOz%q#I9bA&shtTue)2} zpMN}e!4z<2tYGbbnN+Wf$cr`dEdy#<9{Q$r`Yo%WC2$rhzDZMK@sh<$mJ;-i`V-4> zW;xE_)#;t|y8kaORm{$|Fk5m{Q8H{gJ;e_nGMH^`+tyBmWaV*9f+iUc1N-V?9vlkh z=`}0+5uD~v9Xf}1<8V0AQ4b8gx3{c71^-;sIQS7!mrA^OoFpH|mh#O8DdDSamzCzx z7Qclnd{=9sQbZt=x2aabi>%|}^z>ZHjDf8dOrZ>j{%W@$Q{w) JH^UAU{|#eDa~uEw literal 4390 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 JPDHLkV1ki;!fF5j diff --git a/test/src/components/in_page_banner/golden/in_page_banner_negative.png b/test/src/components/in_page_banner/golden/in_page_banner_negative.png index 406c1b0f83f3b40ece62c983d2fced42bd42b5a0..5f808d4846d11e152ced62b40d068fb93bf34f62 100644 GIT binary patch delta 927 zcmV;Q17Q5^9`7EIL4O%ZL_t(|obBDqi{57$fZ=xzCY^+)GfgL{hg~bJ|A9zByQqk| zapeKD2E|$-l^{(T0tTfZjf$X9j3TzU5J6C^DCoii)gro2)fQZ6&7n!BiJ7#YnT!jU z!juftd(6yrt>5Q+pWpK4J55a{lhx%P|9mWc_3`oQslSeE7k@7e004lEFumvIvGZ+j z9rH&X8oSdg}xCkDEX6-p$?(007vcF8%0d`LziYGi0RRBDuwCzb z$C&*2`7yn+^dj<@-o0zH_W=L^wy>F7=f}!ROJjPo7XbhOwhsXU003kJlZFBxe|Eit z|Ni?6W996N>zbX}ciVWwTi*1V=dQf+$~gAum#+KuS5{WW>R27KGuQWc_1qX^JbLVr zv1@Mby5|4@;6}9W0J-q>Z;zM0^}Th?E_~{vWB-ZcuX%1VnT#L)q#E_kXai*^httgX4=wk8H>u8xkN34}5IQ-o9_mGgnWa6(9fr zu+8}h761TjGoSgyfpN>8wLii1^2Lke@$YKmXId|@L z2@wAS0ssJH1PA~CkP#pN06<270000P0RjL3WCRER0Fc>`pW%JslZVFi?ppvpgxpT*O@WB0>y#@dPNNgz&J#uW!&CRWO=E{{Tugl%*4v_sPj*tB(j&I~H002PX znLqw%)9&^qbN~P#Gj(b#uHL=$+-C0q003-p&(7cJ9S{HjptF$!Jqwf215bZU&n(Q3 zl?zLoy$1jQu!XH$SQ;}6^J99)U3ZM--#)Y1`v3p{TiEh%em{2Hb;p=pIDBxNdGO(} zI+={!_ueyR7WZ!UZU6wl7IF3T*>U;TzZ>U1|Jc}f@+)I%GMTI{KlO{T^w>AXtEc`l zu3h@qX73090BjL6^S6v0ci$g57LFVobML!v{0Bzv(Lr1KtbqUk002ovPDHLkV1n8P B+WP2#X79HXuOfk;7naRUWU zE?_k%jrPzG0x@mCpcKViiXvhyV%38PqEvCYxlk>l_te^h2d&ejNvB!cF_WJMkHVB0 zrtdK`uh;qc{GQME_~y4wO(v7crJwv_oICZ6@#^Vk$Mp*r2Y&znz($z9^_H>o?Qa|N z4<8;kf9QQ<_R^ET9*Ykg8w+1NHul_m&zRk}u-Q8T003LWwHMBg%fESQEZ%=~>>pEO z>hJG(|K#>V_l;XV{DIBh4FCYxqAvdQm*f0n-yhS<&-`uddC$8ydmjJ*U<=#*u6K^* zzdkpnSC(EL(;9nrZ}vU_0KgVDbNk#_d1+}(Z}uVp0KoPklYs;zf6T6T@ZbMsYAn2gDoomt!C)pKKv@yLneWB0CIYn}rD zfE&@e1LXYIA0ID$`v>cq-FyEh#=cW0U-R7Z^78oc&wjqHJ8l#wj~yLDfB*onO{_aW z004j+$3OqII9@z=e{Nl~cg)X^H@|WJhU~E+0WyE&vtxSh)>Y43U%D{PJ^HPUxDEgS zSfj_D_}+Nphd)}^?595Vk@2O6KEEM*Y)F9YJ#^og-GAq*XRa-t5g-5nu+8}h761Tj zGY@?F;JEG9)jz@X@`VfIo8S5FhTknf003Z{Ir#C9j(rOY3#*=a;q2MhB|!WSlVJfL zI75Dh_xaBp8Pj`quX^VC~#X*mvsWM(zRt z00f@?^ItaYZeKzN001&mr^mwN?xp88dk+8rV2gWZ?tphd004lFvvCAq3bT*|D*=Bq zJ+pUitejuk>^%SgfGuq0{L+}&J2$3x+;w1F`Tf(Iy$=8Yu!UXu-5L< diff --git a/test/src/components/in_page_banner/golden/in_page_banner_positive.png b/test/src/components/in_page_banner/golden/in_page_banner_positive.png index 7c12198be318eee4d87e4107fae6828d648e8189..2ec287daa8984d9b1312785cd7f3b712f0df2060 100644 GIT binary patch delta 762 zcmVTv6)HI(6m93X3;2A3sUg|VnM_# z1dA?W#f`WSL5Ly*q}UdU3YFr*KcL#IM4=18l)4CR;>V&`>cXP5Dz+7)rIIG0NjvE@ zLtMBKgp>^9J!W!U>)&(EbCx&fyu901S643||I1VJy{8_Z=YLM0npfX=eEWPoJ2DKb}4{pLq8NHhUic z0ALII*lq8dKO?>J_gOf1@wM4?!_sE&0{{SQVK*<|IA>Qb%)(|b0ssJ9Ka(K?B!8L3 z^$xyx_T_o$!kKl=zH|4@bKBl`yydxzD;MYC2OqlX>#wb?&0L<@zPSDWdTwUsfrlQP z<(VrcKGO9o?BgAohN?s_`2?Kt+@A__s#MM z5C8zK4?e*H001)UegpEKzVQA-vo3e}#w(sVyK;Vh^t+QAaXSD2;2O0d0dnt0KRf&P z?7QNbQ?H&DAOHYxo%0D6lc57BY&PVN2tW7O!?W{kOIJMe`kNOw;#L3vz%^_`0_4xH z{9_|7^Iw*hcFfTSzJAqnYnLv~%*^)1t9!h9Zsy<52mk=riwy~o|CJkd?3gbe`O;>u z0RRAOkaY*hvBO8_*x{oaxeEXQu*LZiIsg|HjH@?+5?@ sY!Npt?V2L@?At&0AG~Kib>M^ZF9+MGrIP+7x&QzG07*qoM6N<$g6o-##Q*>R delta 804 zcmV+<1Ka$89{(MXL4T=9L_t(|obBCTsGoHm!12${PHtzL!|5tQ153dMVFU&(BHBd| z2z9``i7p~SB7;FlHINDnyXd;;;#@_67e6f6-pUeV$E&1>6vqf(?vHy zFxlbsKJD!Fy8eEi=kr{?d7dA?9qa4s>pyiEegX63g(pM^i3dSO0x+xxeA9{>Pg z8~ezu@0~xr{C~GuID6sM*?ZmYt=G#tqmOOq9#@M8zW&u&8UX?Tz_r0ASO5S(X2Wkl{?ljPcVrGM zU4Pj#XI9V64}W)JGj0a}09>UuB|skd@I7(f@!Z;_OEWXGbMeX^ub!Lv_cH~q6i670%-Cvp=>+9?5$De&_zWtj==j5s9=iKY7TfHLy0I*HmuzT;kBIn>O ibL>O+&L?iWYyJg(HmDspaV?+#0000sgNoF diff --git a/test/src/components/password/golden/password_default.png b/test/src/components/password/golden/password_default.png index 91231e82dede2f6c446cdd35ee83d44887474814..87a49c788148fb7341411493cc2d89ca117dc9ef 100644 GIT binary patch delta 568 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 literal 3648 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOgobi(^Q|oVRy3=81$ev|ZdSw)QUTL^VyOJe`j`jM|Spg;+eq>V(`m zHq80r8OP}QOi_bZb5hrqW#5I0KF1rj#i+xI*98;jVfo6OUE8W_62 zK0MrhQ#e8+oj<~ek%@sJCGU(J!w1V-H*QFjzrSbu{p;$hSv^;?)|@{lR`^#Uc~9l% zv^lX4es%A7^}W95^j>?0@RH;$@yEW@86TI-(O#^dB0Zn-T%~k z@(rucC`T|bIJh+c!%h-x3kwGW!vsMERKY#$EDipfHg7iGx2N>=o$J+x@(jrw0t|K+ zKZ~E&FWD>pnbDxleFFnS!vqFK1_mQgIL)(VN@!cZZ=Y>76Zg04^WUfWGt4-ouW%qK zH!trTlCR(0`Im<5>lYUf!+iapkx}gJj~`zvK7PuWGiQ(N^5x4nKQHLb&CTt7`_}sL z$;a)<<=_9kv1GUmbj!J?4<6jK`0??kyZ!C@UFP4ue}Cl45aTL$km*4TkaO(c<^S$& zKNub;0X_Kq+kFl}d4`xPy*HT|c0~P?m3hS6(EUkXfPq2bv7io+RCWM*rU&d9CKd*U z6F>__1xEwKXf!d5W`xm_0a(P3W`xmqz diff --git a/test/src/components/tooltip/golden/arrow_left.png b/test/src/components/tooltip/golden/arrow_left.png index e15b340ed943963f1bbb478f927ebaa31b0f72d1..05f2c4fbe0e12fba45bd3caea593151a506da15f 100644 GIT binary patch delta 587 zcmV-R0<`_g9KRfpL4WBB=3M?@eDL645>+LcU#!$Q1DVkfPcJt^~X5)>2RufSYt1K zIT=r${5bU(006Ae{N{zz)0b1s0rnmMz#3Qzkhkytnqm&H_W%Iaz*2x*UV7$(Y1n%J z0C(R~fB*mhtjagHSv;T5$Ii~qXRn{lW@F4|v>-^Ty_{*STR z`vU;L*Y8#V@_+5Ud*j#Ne_Pcocf#XGkH_Ed->>Am@523G<^2Hw;OqC%U$CAXpG-9e z006KCJ_N|K*S+@2%jDu3Xm^! z^89vZsW_Mq0DyJkA#?x$AR|Bk0D#PFu~=OH`@(~VKTI_XjCXJUoO%QR09I(}7m$sO zjVa~;dk+9$4J-x7!w26_F$dUt003)XDM0r3_okQw>^%U0HL&yy$QWasoxL6}PG64m z^Yd|WaU(g!T&#)B&5g0OwKWd*_r~t-qp8OM0AR&F86W@v0IT3NytAPLlM1t712zE` Z{sCq*om4`Hb;bYy002ovPDHLkV1hyL9j5>Q delta 599 zcmV-d0;v7J9LgM!L4Wi~L_t(|obBDgZd6qqz~M6!x9v`>8(j$9G~pS9#_%LcfP~m5 zsUZPU-K(!aOu=VhS#Y5%+?IXEg$dD)MjD;p#oq5*&YVpCb8rA0JII2RM5G05h-_ATM72G{qd?>;VAGz*>O3e*Joi zIl$Qi0GNTb00961*p&A!vUs^%j_cR2zxDdXVll>IF;-`1vsgdI7|)+SA7>X>e-Z!p z{U2kq`vU;LyMOOO0rLKpE92YmzuVL-m%@!tZ;W4Gz1qlUUxxkPAfW}gM0000Lf5Qs^0A!X22lvOpm-nZh z0{{S+f#n!uh!6k(pz!87AO{D(2Z;MY{++$Oz477B&VO64_h3E%0On+|TCG-peBq;y zum0`g4|aCOvmc*re5g6O$bg> z!2$rd+}3^p+1lEgVh(Wj003rSEkLea{bY(cz}W);n1QtbxpU|C6mx*H2LLbwYxjVR zF~;%n(=YMx(a|_Lc`;5;Pp6oRnb_Xm9=p5O#=X0@$Nv7!smB2TV8i}0KmY&$Ho@QU l0<)n5hzhen13&>5`3?O#s7FaB#OMG3002ovPDHLkV1jE6AtnF- diff --git a/test/src/components/tooltip/golden/arrow_right.png b/test/src/components/tooltip/golden/arrow_right.png index 12a63dee30af88aac3fe90aa3c059ab7e6a4fe4a..c329440c59723b30f4d470818a0fe5fdc98d09cd 100644 GIT binary patch literal 3641 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOhn%i(^Q|oVRxkvt-g4+8)-MXD-z{ra4KePpkP{g7y!#gXRK79fj*A zXuI4va;$a|_l%N5=>?OW%B&jic(ol63)(g1TbJwmlnbA?SnJ3izQ1R~=FJgn!=}5t zuRs1-T>tpTj~^|pt>r(|Z``}rw5+V`*y85D8@HF|zp`Xt$jSKl>gxRI{dE;KU-^D4 zdA{FHmS3*M{3{OwgV~3h?fn1$)KvYddnNn9Q(ayC@x#OKm(OElIKVb7|NdXwuWS+B zo4FVa>Q8?zK3`+Ne@=_xz#rY^azHQMk(por=J3-Z%d+zF>;E<#O)@-|WT>aFmv`iA za?i(SXJ;1{w!U8fXxZKWhU>o9F)udLlzs+^4 zVPH5jo8jh#%jx0O0=K%qnJL>bFg!c!zkz|Fp@)Hyfx)PI{l0z0mR~s{uJ7Jn?`zA* z(7>y+ecQHW_ZYGZ!x$N!<^Oy;Hy^>PEZATV51{U=S*4XFU#e{CKNiWz%lB{I{CTDM z!TN36w;wxq?p#I52K#T{-uc?H1I^S8TRpY?0?_o9{SR4z)-tg$Fr45JU|>*Cc7VHO zRB$vvMiawm?iei@MoUFV?KD~=jMfOFHNt3(Fj^xF#v0+XeyiiW@P8*w&H(#H44$rj JF6*2UngGcsmcal3 literal 3642 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOgEPi(^Q|oVRx!`$SS1+8*wY-fnEosaMi`CQay^f)9_mL5u_E1c9B6 z<_820EU5m)Xzd0EW{IO{|y2z&HN5(r&pbH!uHfZqguU2tlU=Z_Z*kGZ=!jQ0&g`*oJFwL_8 z7|fE4hm>r8Jo{Ji;laN<#taM=%8Z8|b?`GZJhl32tFY((zkmOJ{P^^=cm4N8d*6b@ zQ-u|xtNuLsICC9bHj!tHk(eP_GTv6+iuL(OaJ^1SnV8Oi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOhz*i(^Q|oVRxkvt-g4+8)-sMy>2FymdpX$uWI`XpM*>t5cB}cW1;3 z{~~tbhsG;BHXJJ?- zpuphsDY52{cMHRYuGVx1hGo0=)R@N2iSKz@WVvpA{YZQ*QRV{G?>f4 zIOE0F+54Z(J20!rjA5Cu0)z0~I~C8G|3A-R@KJYQU})$O7i6koi;j*?&d<;P^tJnF zQqR$(JA13YyT;fblL!wFe|(qg`ue1+_y6zv&hVj-iRFRuk6#CyKfZpy|Ez8DTHCwz zR{!dLe~a7qJGk!u?>o!~j_+jUW?(qMA;7?(pbWNwfsuj1h=~PN@OuNpgo;m3PX2iI z@bJm&_rG^DUC-q|Fx?3#Y+-91`|{WCy1)m!-ZK6O+JP`{^NziH_s*_nIiObY<;U)w z>Kl&T+w-sZ9VdhIL3^Ora`W@g+cug$h4@Xa>d%YYKsC$e@HV_;;W*&p?%rPPpWtgL z&2YJrjU|C~`ti1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOh7pi(^Q|oVRy3c7>!fv^}h!w#7R3h>54*-L!+*9eM|~JzZKG!Z&T& zp*Q=BXP)DsD#2;1H7A|glKg(jZ6|?q9lz&E*38RmJN&`$&)L&+9_n0s{k4kW09#+b z|1pVVo61k8&v-N3FpWQJ%g}JQsHVoKZ~nZPy<&lGOc zS{WDY^yulrUw>+1;`Yg{zMA#U@=V6gn7-!b+mAmkW`F$R z#l1Vl3}tN$j5A&w?cRUP-`;*sHCyzH?eXW2{rzo!&XzereFrOd!lKQaKkroEuyhV@ z!%G&911{_D|FQkfvTe#{MuWK^y?1w)7yBo8TS_xr<`iIHP z-|?3pug||9cRIcP)c5+i)eJu@wkI$$Fi0{oF)*aCa4;}T5Cq1OgIfbILXZSM$_OwB zwYRrFo;}-KJ-+@fKi8dYwhZxHj7$!XZob^yyKetGcGkSxat->e(Hj^T8hRLjh8lH$ zt=c=Un&p7rk8iu9f&S?J`}_Rto$3s4SoSwC_-xs~-yYeo-`2i=KJUP^A~S|%Kz9q< z*8E6#$C;y<&YWQNpONv#0U`q&Xm8#@pl^(rSQr>iaDYNh*#YjPQNhsw8BGkMxns0s y7%decmDFgBFj^yw)(E3D!f1^!z%{~Wd#i7YBn~W+Yy$Q@7(8A5T-G@yGywoof}Ujn diff --git a/test/src/zeta_provider_test.dart b/test/src/zeta_provider_test.dart index 1d39bcf1..efbe26f9 100644 --- a/test/src/zeta_provider_test.dart +++ b/test/src/zeta_provider_test.dart @@ -25,7 +25,7 @@ void main() { final providerState = tester.state(find.byType(ZetaProvider)); expect(providerState.widget.initialThemeMode, ThemeMode.system); expect(providerState.widget.initialContrast, ZetaContrast.aa); - expect(providerState.widget.initialThemeData, isNotNull); + expect(providerState.widget.initialZetaThemeData, isNotNull); }); testWidgets('initializes with provided values', (WidgetTester tester) async { @@ -42,7 +42,7 @@ void main() { final providerState = tester.state(find.byType(ZetaProvider)); expect(providerState.widget.initialThemeMode, ThemeMode.light); expect(providerState.widget.initialContrast, ZetaContrast.aaa); - expect(providerState.widget.initialThemeData, initialThemeData); + expect(providerState.widget.initialZetaThemeData, initialThemeData); expect(providerState.widget.themeService, mockThemeService); }); @@ -216,7 +216,7 @@ void main() { ), ), ); - +//TODO: This does not work as expected await tester.pumpAndSettle(const Duration(milliseconds: 250)); // Verifying through the public interface of Zeta widget diff --git a/test/test_utils/test_app.dart b/test/test_utils/test_app.dart index a84dc976..97272772 100644 --- a/test/test_utils/test_app.dart +++ b/test/test_utils/test_app.dart @@ -22,6 +22,7 @@ class TestApp extends StatelessWidget { Widget build(BuildContext context) { return ZetaProvider.base( initialThemeMode: themeMode ?? ThemeMode.system, + initialRounded: rounded ?? true, builder: (context, lightTheme, darkTheme, themeMode) { return MaterialApp( theme: lightTheme, From 6294ac2c472bc4d76887799caad7a24c16586045 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 3 Jul 2024 12:36:06 +0100 Subject: [PATCH 7/9] fix text themes being applied properly --- example/example.md | 11 ++- example/lib/main.dart | 5 -- .../pages/components/progress_example.dart | 1 - .../lib/pages/components/stepper_example.dart | 33 -------- example/lib/utils/rounded_switch.dart | 2 +- example/lib/utils/theme_color_switch.dart | 1 - lib/src/theme/constants.dart | 9 +- lib/src/zeta_provider.dart | 78 +++++++++++++----- .../golden/in_page_banner_negative.png | Bin 3951 -> 3944 bytes test/src/zeta_provider_test.dart | 2 +- 10 files changed, 72 insertions(+), 70 deletions(-) diff --git a/example/example.md b/example/example.md index b15b08dc..2b3abf32 100644 --- a/example/example.md +++ b/example/example.md @@ -3,10 +3,13 @@ To use Zeta components in you app, first the whole app must be wrapped with `ZetaProvider`. The easiest way to do this is with the custom builder `ZetaProvider.custom`. You can provide initial values for `ThemeData`, `ThemeMode`, `contrast` and `ZetaThemeData`. -* `initialThemeData` allows you to extend an existing Flutter themeData to use alongside the `Zeta` theme. -* `initialThemeMode` sets whether the app starts in light or dark mode, or uses the device default. -* `initialContrast` sets whether the app starts with standard (WCAG AA) contrast, or if it attempts to use the more accessible contrast (WCAG AAA). -* `initialZetaThemeData` allows you to override the Zeta theme with a custom theme. +* `initialThemeData` (optional) allows you to extend an existing Flutter themeData to use alongside the `Zeta` theme. +* `initialThemeMode` (optional) sets whether the app starts in light or dark mode, or uses the device default. +* `initialContrast` (optional) sets whether the app starts with standard (WCAG AA) contrast, or if it attempts to use the more accessible contrast (WCAG AAA). +* `initialZetaThemeData` (optional) allows you to override the Zeta theme with a custom theme. +* `initialLightThemeData` and `initialDarkThemeData` (optional) allows you to use existing ThemeData objects withing zeta +* `builder` (required) is used to construct the app with all Zeta themes injected. + ```dart return ZetaProvider.base( diff --git a/example/lib/main.dart b/example/lib/main.dart index 3692f8f5..3bffbb27 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -37,15 +37,10 @@ class ZetaExample extends StatelessWidget { @override Widget build(BuildContext context) { - final initialThemeData = null; - final initialRounded = true; - return ZetaProvider.base( initialZetaThemeData: initialZetaThemeData, initialThemeMode: initialThemeMode, initialContrast: initialContrast, - initialThemeData: initialThemeData, - initialRounded: initialRounded, builder: (context, lightTheme, darkTheme, themeMode) { return MaterialApp.router( routerConfig: router, diff --git a/example/lib/pages/components/progress_example.dart b/example/lib/pages/components/progress_example.dart index fdc0ef81..18309cb3 100644 --- a/example/lib/pages/components/progress_example.dart +++ b/example/lib/pages/components/progress_example.dart @@ -84,7 +84,6 @@ class Wrapper extends StatefulWidget { }); final int stepsCompleted; - final ZetaProgressBarType? type; final bool? isThin; final String? label; diff --git a/example/lib/pages/components/stepper_example.dart b/example/lib/pages/components/stepper_example.dart index b0bcd1b5..e782f386 100644 --- a/example/lib/pages/components/stepper_example.dart +++ b/example/lib/pages/components/stepper_example.dart @@ -12,7 +12,6 @@ class StepperExample extends StatefulWidget { } class _StepperExampleState extends State { - int edHorizontalStep = 0; int _sharpHorizontalStep = 0; int _verticalStep = 0; @@ -33,38 +32,6 @@ class _StepperExampleState extends State { child: SingleChildScrollView( child: Column( children: [ - SizedBox( - height: 150, - child: ZetaStepper( - currentStep: edHorizontalStep, - onStepTapped: (index) => setState(() => edHorizontalStep = index), - steps: [ - ZetaStep( - type: _getForStepIndex( - currentStep: edHorizontalStep, - stepIndex: 0, - ), - title: Text("Title"), - content: Text("Content"), - ), - ZetaStep( - type: _getForStepIndex( - currentStep: edHorizontalStep, - stepIndex: 1, - ), - title: Text("Title 2"), - ), - ZetaStep( - type: _getForStepIndex( - currentStep: edHorizontalStep, - stepIndex: 2, - ), - title: Text("Title 3"), - content: Text("Content 3"), - ), - ], - ), - ), SizedBox( height: 150, child: ZetaStepper( diff --git a/example/lib/utils/rounded_switch.dart b/example/lib/utils/rounded_switch.dart index 21410853..66a67aed 100644 --- a/example/lib/utils/rounded_switch.dart +++ b/example/lib/utils/rounded_switch.dart @@ -23,7 +23,7 @@ class ZetaRoundedSwitch extends StatelessWidget { size: ZetaAvatarSize.xxs, initials: e ? '●' : '■', initialTextStyle: TextStyle( - fontSize: 14, + fontSize: 28, letterSpacing: ZetaSpacing.none, color: Zeta.of(context).colors.primary, fontWeight: FontWeight.w500, diff --git a/example/lib/utils/theme_color_switch.dart b/example/lib/utils/theme_color_switch.dart index 1de614cc..c205ed11 100644 --- a/example/lib/utils/theme_color_switch.dart +++ b/example/lib/utils/theme_color_switch.dart @@ -40,7 +40,6 @@ class ZetaThemeColorSwitch extends StatelessWidget { child: DropdownButton( value: zeta.themeData.identifier, elevation: 0, - alignment: Alignment.center, padding: EdgeInsets.all(8), icon: Nothing(), dropdownColor: zeta.colors.borderDisabled, diff --git a/lib/src/theme/constants.dart b/lib/src/theme/constants.dart index 92d3d64b..bbb6f11e 100644 --- a/lib/src/theme/constants.dart +++ b/lib/src/theme/constants.dart @@ -1,12 +1,12 @@ import 'color_swatch.dart'; -/// Default font family for Zeta System +/// Default font family for Zeta System. const kZetaFontFamily = 'packages/zeta_flutter/IBMPlexSans'; -/// Primary color shade index for [ZetaColorSwatch] +/// Primary color shade index for [ZetaColorSwatch]. const kZetaSwatchPrimaryIndex = 60; -/// Target contrast values for different color shades of [ZetaColorSwatch] +/// Target contrast values for different color shades of [ZetaColorSwatch]. const kZetaSwatchTargetContrasts = { 100: 17.42, 90: 13.99, @@ -19,3 +19,6 @@ const kZetaSwatchTargetContrasts = { 20: 1.09, 10: 1.02, }; + +/// Default icon size for Zeta System. +const double kZetaIconSize = 24; diff --git a/lib/src/zeta_provider.dart b/lib/src/zeta_provider.dart index 520418f0..c94c9ff0 100644 --- a/lib/src/zeta_provider.dart +++ b/lib/src/zeta_provider.dart @@ -39,19 +39,21 @@ class ZetaProvider extends StatefulWidget with Diagnosticable { this.initialRounded = true, }) : initialZetaThemeData = initialThemeData ?? ZetaThemeData(), baseBuilder = _emptyBase, - initialThemeData = null; + initialLightThemeData = null, + initialDarkThemeData = null; /// ZetaProvider constructor that returns light and dark [ThemeData]s ready to be consumed. /// /// The [builder] argument is required. The [initialThemeMode], [initialContrast], - /// and [initialThemeData] arguments provide initial values. + /// and [initialLightThemeData] arguments provide initial values. ZetaProvider.base({ super.key, required ZetaBaseAppBuilder builder, this.initialThemeMode = ThemeMode.system, this.initialContrast = ZetaContrast.aa, ZetaThemeData? initialZetaThemeData, - this.initialThemeData, + this.initialLightThemeData, + this.initialDarkThemeData, this.initialRounded = true, }) : baseBuilder = builder, initialZetaThemeData = initialZetaThemeData ?? ZetaThemeData(), @@ -91,8 +93,11 @@ class ZetaProvider extends StatefulWidget with Diagnosticable { /// It provides the structure for loading and saving themes in Zeta application. final ZetaThemeService? themeService; - /// [ThemeData] used in [ZetaProvider.base] constructor as the foundation for a custom theme. - final ThemeData? initialThemeData; + /// Light [ThemeData] used in [ZetaProvider.base] constructor as the foundation for a custom theme. + final ThemeData? initialLightThemeData; + + /// Dark [ThemeData] used in [ZetaProvider.base] constructor as the foundation for a custom theme. + final ThemeData? initialDarkThemeData; /// Sets whether app should start with components in their rounded or sharp variants. final bool initialRounded; @@ -110,8 +115,9 @@ class ZetaProvider extends StatefulWidget with Diagnosticable { ..add(EnumProperty('initialContrast', initialContrast)) ..add(DiagnosticsProperty('themeService', themeService)) ..add(ObjectFlagProperty.has('customBuilder', baseBuilder)) - ..add(DiagnosticsProperty('initialThemeData', initialThemeData)) - ..add(DiagnosticsProperty('initialRounded', initialRounded)); + ..add(DiagnosticsProperty('initialThemeData', initialLightThemeData)) + ..add(DiagnosticsProperty('initialRounded', initialRounded)) + ..add(DiagnosticsProperty('initialDarkThemeData', initialDarkThemeData)); } /// Retrieves the [ZetaProviderState] from the provided context. @@ -158,8 +164,11 @@ class ZetaProviderState extends State with Diagnosticable, Widgets /// {@macro zeta-component-rounded} late bool _rounded; - /// Represents the late initialization of the ThemeData object. - late ThemeData? _themeData; + /// Represents the late initialization of the light [ThemeData] object. + late ThemeData? _lightThemeData; + + /// Represents the late initialization of the dark [ThemeData] object. + late ThemeData? _darkThemeData; /// Represents a nullable brightness value to be used for brightness change debouncing. Brightness? _debounceBrightness; @@ -194,8 +203,11 @@ class ZetaProviderState extends State with Diagnosticable, Widgets // Apply the initial contrast to the theme data. _zetaThemeData = widget.initialZetaThemeData.apply(contrast: _contrast); - // Set the initial theme data. - _themeData = widget.initialThemeData; + // Set the initial light [ThemeData]. + _lightThemeData = widget.initialLightThemeData; + + // Set the initial light [ThemeData]. + _darkThemeData = widget.initialDarkThemeData; } /// Clean up function to be called when this object is removed from the tree. @@ -256,11 +268,13 @@ class ZetaProviderState extends State with Diagnosticable, Widgets context, generateZetaTheme( brightness: Brightness.light, - existingTheme: _themeData ?? ThemeData(colorScheme: _zetaThemeData.colorsLight.toScheme()), + existingTheme: _lightThemeData, + colorScheme: _lightThemeData?.colorScheme ?? _zetaThemeData.colorsLight.toScheme(), ), generateZetaTheme( brightness: Brightness.dark, - existingTheme: _themeData ?? ThemeData(colorScheme: _zetaThemeData.colorsDark.toScheme()), + existingTheme: _darkThemeData, + colorScheme: _darkThemeData?.colorScheme ?? _zetaThemeData.colorsDark.toScheme(), ), _themeMode, ), @@ -282,14 +296,14 @@ class ZetaProviderState extends State with Diagnosticable, Widgets super.didUpdateWidget(oldWidget); if (oldWidget.initialContrast != widget.initialContrast || oldWidget.initialThemeMode != widget.initialThemeMode || - oldWidget.initialThemeData != widget.initialThemeData || + oldWidget.initialLightThemeData != widget.initialLightThemeData || oldWidget.initialZetaThemeData != widget.initialZetaThemeData || oldWidget.initialRounded != widget.initialRounded) { setState(() { _themeMode = widget.initialThemeMode; _contrast = widget.initialContrast; _zetaThemeData = widget.initialZetaThemeData.apply(contrast: _contrast); - _themeData = widget.initialThemeData; + _lightThemeData = widget.initialLightThemeData; _rounded = widget.initialRounded; }); } @@ -352,16 +366,38 @@ class ZetaProviderState extends State with Diagnosticable, Widgets /// Creates a variant of [ThemeData] with added [Zeta] styles. ThemeData generateZetaTheme({ required Brightness brightness, + required ColorScheme colorScheme, ThemeData? existingTheme, String? fontFamily, }) { + if (existingTheme != null) { + // Apply the Zeta styles to the existing theme, ignoring fields that are the same as the default ThemeData. + return ThemeData( + brightness: brightness, + useMaterial3: existingTheme.useMaterial3, + fontFamily: fontFamily ?? + (existingTheme.textTheme.bodyMedium?.fontFamily == ThemeData().textTheme.bodyMedium?.fontFamily + ? null + : existingTheme.textTheme.bodyMedium?.fontFamily), + scaffoldBackgroundColor: (existingTheme.colorScheme.surfaceTertiary == ThemeData().colorScheme.surfaceTertiary + ? null + : existingTheme.colorScheme.surfaceTertiary) ?? + colorScheme.surfaceTertiary, + colorScheme: + ((existingTheme.colorScheme == ThemeData().colorScheme ? null : existingTheme.colorScheme) ?? colorScheme) + .copyWith(brightness: brightness), + textTheme: (existingTheme.textTheme == ThemeData().textTheme ? null : existingTheme.textTheme) ?? zetaTextTheme, + iconTheme: (existingTheme.iconTheme == ThemeData().iconTheme ? null : existingTheme.iconTheme) ?? + const IconThemeData(size: kZetaIconSize), + ); + } return ThemeData( - useMaterial3: existingTheme?.useMaterial3 ?? true, + useMaterial3: true, fontFamily: fontFamily ?? kZetaFontFamily, - brightness: existingTheme?.brightness ?? brightness, - scaffoldBackgroundColor: existingTheme?.colorScheme.surfaceTertiary, - colorScheme: existingTheme?.colorScheme, - textTheme: existingTheme?.textTheme ?? zetaTextTheme, - iconTheme: existingTheme?.iconTheme ?? const IconThemeData(size: 20), + brightness: brightness, + scaffoldBackgroundColor: colorScheme.surfaceTertiary, + colorScheme: colorScheme.copyWith(brightness: brightness), + textTheme: zetaTextTheme, + iconTheme: const IconThemeData(size: kZetaIconSize), ); } diff --git a/test/src/components/in_page_banner/golden/in_page_banner_negative.png b/test/src/components/in_page_banner/golden/in_page_banner_negative.png index 5f808d4846d11e152ced62b40d068fb93bf34f62..3088dce8aab8cb247f2b5755900cf2c48f486bae 100644 GIT binary patch literal 3944 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`Gh)5S5QV$R#UzTNZEB^w@A+xg7mS!=v@<`tnkTQ2?Lcj3C_>UyO& z`=V0Ik%qt~lUz-SmL{{%rnMct+J)L0VIn1oQ&;@p4%*t}(eZP|$r~1zznM-hd>Ayt z=_?FfcT%HK@HlH~BsL zJ^N?#e>}SJ|D^lzH`4ZhpYEvov$F8PYW3rHl==H_HnVT5c4uHnXx~x!^Hs#Zt2+z7 z-gul`_-d!&*X#UsId9)B?(em>|N8OmJzfTe8w>OPyhwk1tNXtE<;mf3vc>X$Pn5l9 zW?*=e@Z0{+Lc^br;QCR4+A3ugAtnGnKxACq`IbNPIk-{0Tf{vgA^aHr2qR^j@*|Mzy(ePf?JE7s!E z%)$>}R&KX7pXqaqzy8yuW$$*x&awLW)R2XPfnoQNWz0ZF?Wq0p_E2l#&r?%<&&tKb z$h@~M$?*PmV-my8=SQ9&|MDmH^}L;1zx?`feCGSSqooWC2iR=C|JifaK?<#$ljlFg+0-QYoPQht{mj~@ zQ`hbQCe|Ijxt1$N0X1fq_Am5g64eps<}FsKCJB z;06+u92Fc5kkQ02nh{1zhS5@Sv_=@M4M%Ik(b{mdHl%fJm{ygRShprF`qn#JV0TM4 z=j*LYGa_fmU#^zhQ@`fVv+uX}0^9Bzn%DmMRi1pl`FsD(*2%|@KTYoM-+D6TjP0in zGb{_vm%Rt}dfy0`>&Hr-*8g7?^Y_%|Ax)ZhY@_KVHv}^y$Lqn#j5bz|H`Jr>mdKI;Vst0E{p+ A?EnA( literal 3951 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`Gr)5S5QV$R#Ur@QZ^OEx?#=Tn>8vdq|5ePw&B_S*lA9*(-w)u;0RYjkSAe*E}q<^H~GaeZC}hK62)z0aR* z{G6LF``KMiYWKbR`!n`_x*XqE%--L3R9{AJ_xru+XWqr%c_Yin(4hP1)y(3@pVrTl zdoEW~@n-g~PcweqzI}gl)obSO{j=>q+&g;@Xy%PYdVgP}KR$F){rHzBH=iGSSH3@c z^LIuDhHV>S-`5FfdFI z1O};tTLUokB+&%Z%Jw$@|M#0a`RSYP*R$r{EWcfGIQrg~S)wK(~I z=i~L2c}6pPLqIy??*>`T6nJ-{e+*?=#>3 z@f+{WWM`(7_Y3{|U;ebsp0{&bN#UITx6I8SSpluFnp^Yeo=^s*< zf6fUxX(0t}{+gUK_x9zVH4gWmFADVNhO<98#26TIjOYJ6(pY$U-d6jAUp^h}e*E!$ zP5I&XVqg_AKTfnC`*-xH>G?U9?;>URLea$!FuXBz46Np^JA-*|1(+_`|Enzdti?$ sN6`55_8!^t`<7yTGBU;Qcjy0McYAlyG5Xhzopr0P-_dZ~y=R diff --git a/test/src/zeta_provider_test.dart b/test/src/zeta_provider_test.dart index efbe26f9..38f65a99 100644 --- a/test/src/zeta_provider_test.dart +++ b/test/src/zeta_provider_test.dart @@ -216,7 +216,7 @@ void main() { ), ), ); -//TODO: This does not work as expected + await tester.pumpAndSettle(const Duration(milliseconds: 250)); // Verifying through the public interface of Zeta widget From 097b57fd49a5b5492b029dda5cfbff22057fb137 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 3 Jul 2024 12:42:17 +0100 Subject: [PATCH 8/9] refactor: Update icons example page to match widgetbook --- example/lib/pages/assets/icons_example.dart | 63 +++++++++++++++++---- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/example/lib/pages/assets/icons_example.dart b/example/lib/pages/assets/icons_example.dart index 6d15709a..6decbdb4 100644 --- a/example/lib/pages/assets/icons_example.dart +++ b/example/lib/pages/assets/icons_example.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:zeta_flutter/zeta_flutter.dart'; import '../../widgets.dart'; @@ -15,22 +16,62 @@ class IconsExample extends StatefulWidget { class _IconsExampleState extends State { bool showGeneratedColors = false; -//TODO: LUKE ADD NAMES TO ICONS @override Widget build(BuildContext context) { return ExampleScaffold( name: IconsExample.name, child: SingleChildScrollView( - padding: EdgeInsets.all(ZetaSpacing.medium), - child: Column( - children: [ - Wrap( - spacing: 20, - runSpacing: 20, - children: icons.values.map((e) => ZetaIcon(e, size: 48)).toList(), - ), - const SizedBox(height: 20), - ], + key: PageStorageKey(0), + child: Center( + child: Column( + children: [ + Text('Zeta Icons v' + zetaIconsVersion, style: ZetaTextStyles.displayMedium).paddingAll(ZetaSpacing.xl_4), + Text('Tap icon to copy name to clipboard', style: ZetaTextStyles.titleMedium) + .paddingAll(ZetaSpacing.xl_4), + Wrap( + spacing: ZetaSpacing.xl_4, + runSpacing: ZetaSpacing.xl_4, + children: icons.entries.map( + (e) { + final nameArr = (e.key.split('_')).join(' ').capitalize(); + return Container( + width: 120, + height: 120, + child: InkWell( + borderRadius: ZetaRadius.rounded, + hoverColor: Zeta.of(context).colors.surfaceHover, + onTap: () async { + await Clipboard.setData(ClipboardData(text: 'ZetaIcons.' + e.key)); + ScaffoldMessenger.of(context).showMaterialBanner( + ZetaBanner(context: context, title: 'Icon name copied'), + ); + await Future.delayed(Duration(seconds: 4)); + ScaffoldMessenger.of(context).clearMaterialBanners(); + }, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ZetaIcon( + IconData( + e.value.codePoint, + fontFamily: context.rounded ? ZetaIcons.familyRound : ZetaIcons.familySharp, + fontPackage: ZetaIcons.package, + ), + size: ZetaSpacing.xl_6, + ), + Text( + nameArr, + textAlign: TextAlign.center, + ) + ], + ), + ), + ); + }, + ).toList(), + ), + ], + ), ), ), ); From 9b9f6e1c5d07050157190bef00124788dd57c9cf Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 3 Jul 2024 11:44:02 +0000 Subject: [PATCH 9/9] chore(automated): Lint commit and format --- coverage/lcov.info | 667 ++++++++++++++++++++++++--------------------- 1 file changed, 363 insertions(+), 304 deletions(-) diff --git a/coverage/lcov.info b/coverage/lcov.info index ef6d5bf9..0eee5239 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -77,178 +77,180 @@ LF:74 LH:53 end_of_record SF:lib/src/utils/rounded.dart -DA:9,7 -DA:19,12 -DA:20,12 -DA:23,1 -DA:24,3 +DA:11,7 +DA:21,12 +DA:22,12 DA:25,1 +DA:26,3 DA:27,1 -DA:28,3 -DA:35,218 -DA:40,8 +DA:29,1 +DA:30,3 +DA:37,218 DA:42,8 -DA:43,24 -DA:50,5 -DA:55,3 +DA:44,8 +DA:45,24 +DA:52,5 DA:57,3 -DA:58,9 -DA:65,13 -DA:67,44 -DA:68,12 -DA:71,8 -DA:74,41 +DA:59,3 +DA:60,9 +DA:67,13 +DA:69,44 +DA:70,12 +DA:73,16 +DA:76,41 LF:21 LH:21 end_of_record SF:lib/src/components/avatars/avatar.dart -DA:38,0 -DA:53,0 -DA:67,0 -DA:81,0 -DA:93,0 -DA:136,0 -DA:145,0 -DA:146,0 -DA:147,0 -DA:148,0 -DA:149,0 -DA:150,0 -DA:151,0 -DA:152,0 -DA:156,0 -DA:158,0 -DA:160,0 -DA:162,0 +DA:39,0 +DA:55,0 +DA:70,0 +DA:85,0 +DA:98,0 +DA:154,0 DA:163,0 DA:164,0 +DA:165,0 DA:166,0 DA:167,0 DA:168,0 DA:169,0 DA:170,0 -DA:171,0 -DA:172,0 DA:174,0 +DA:176,0 +DA:178,0 +DA:180,0 DA:181,0 +DA:182,0 +DA:184,0 +DA:185,0 DA:186,0 DA:187,0 DA:188,0 DA:189,0 DA:190,0 DA:191,0 -DA:192,0 DA:193,0 -DA:196,0 -DA:197,0 -DA:199,0 -DA:201,0 -DA:202,0 +DA:200,0 DA:205,0 DA:206,0 DA:207,0 +DA:208,0 +DA:209,0 DA:210,0 +DA:211,0 +DA:212,0 DA:215,0 DA:216,0 DA:218,0 DA:220,0 +DA:221,0 +DA:224,0 +DA:225,0 DA:226,0 -DA:227,0 DA:229,0 -DA:230,0 -DA:231,0 -DA:232,0 -DA:236,0 +DA:234,0 +DA:235,0 DA:237,0 -DA:240,0 -DA:241,0 -DA:242,0 -DA:252,0 -DA:254,0 +DA:239,0 +DA:245,0 +DA:246,0 +DA:248,0 +DA:249,0 +DA:250,0 +DA:251,0 +DA:255,0 DA:256,0 -DA:257,0 -DA:258,0 DA:259,0 DA:260,0 DA:261,0 -DA:262,0 -DA:263,0 -DA:264,0 -DA:269,0 DA:271,0 DA:273,0 DA:275,0 +DA:276,0 DA:277,0 +DA:278,0 DA:279,0 +DA:280,0 DA:281,0 +DA:282,0 DA:283,0 -DA:285,0 -DA:287,0 -DA:292,0 -DA:294,0 -DA:296,0 +DA:284,0 +DA:289,0 +DA:291,0 +DA:293,0 +DA:295,0 DA:297,0 -DA:298,0 DA:299,0 -DA:302,0 +DA:301,0 DA:303,0 -DA:304,0 DA:305,0 -DA:310,0 -DA:311,0 -DA:329,0 -DA:338,0 +DA:307,0 +DA:312,0 +DA:314,0 +DA:316,0 +DA:317,0 +DA:318,0 +DA:319,0 +DA:322,0 +DA:323,0 +DA:324,0 +DA:325,0 +DA:330,0 +DA:331,0 DA:349,0 -DA:360,0 -DA:388,0 -DA:396,0 -DA:397,0 -DA:398,0 -DA:399,0 -DA:400,0 -DA:401,0 -DA:402,0 -DA:403,0 -DA:407,0 -DA:409,0 -DA:411,0 -DA:412,0 -DA:413,0 -DA:414,0 +DA:358,0 +DA:369,0 +DA:380,0 +DA:408,0 DA:416,0 +DA:417,0 DA:418,0 +DA:419,0 +DA:420,0 +DA:421,0 DA:422,0 DA:423,0 -DA:424,0 -DA:425,0 -DA:426,0 DA:427,0 -DA:428,0 +DA:429,0 +DA:431,0 +DA:432,0 DA:433,0 DA:434,0 -DA:435,0 DA:436,0 -DA:437,0 +DA:438,0 DA:442,0 DA:443,0 DA:444,0 DA:445,0 +DA:446,0 DA:447,0 DA:448,0 -DA:450,0 -DA:458,0 -DA:459,0 +DA:453,0 +DA:454,0 +DA:455,0 +DA:456,0 +DA:457,0 DA:462,0 DA:463,0 -DA:466,0 +DA:464,0 +DA:465,0 +DA:467,0 DA:468,0 DA:470,0 -DA:471,0 -DA:472,0 -DA:473,0 -DA:474,0 -DA:475,0 -LF:146 +DA:478,0 +DA:479,0 +DA:482,0 +DA:483,0 +DA:486,0 +DA:488,0 +DA:490,0 +DA:491,0 +DA:492,0 +DA:493,0 +DA:494,0 +DA:495,0 +LF:148 LH:0 end_of_record SF:lib/src/components/badges/indicator.dart @@ -473,15 +475,15 @@ DA:137,1 DA:140,1 DA:141,2 DA:142,1 -DA:145,7 +DA:145,6 DA:146,1 -DA:147,3 +DA:147,2 DA:148,2 -DA:149,3 +DA:149,2 DA:150,3 -DA:151,3 +DA:151,2 DA:152,2 -DA:155,3 +DA:155,4 DA:159,2 DA:160,3 DA:161,1 @@ -3927,188 +3929,188 @@ LH:0 end_of_record SF:lib/src/zeta.dart DA:15,18 -DA:44,14 -DA:45,28 -DA:46,58 -DA:47,4 -DA:48,2 -DA:50,4 -DA:55,39 -DA:62,2 -DA:63,4 -DA:64,2 -DA:65,2 -DA:72,2 -DA:74,6 -DA:75,6 -DA:76,3 -DA:77,3 -DA:84,16 -DA:85,16 -DA:89,1 -DA:90,1 -DA:91,1 -DA:92,1 +DA:52,14 +DA:53,28 +DA:54,58 +DA:55,4 +DA:56,2 +DA:58,4 +DA:67,2 +DA:68,4 +DA:69,2 +DA:70,2 +DA:77,2 +DA:79,6 +DA:80,6 +DA:81,3 +DA:82,3 +DA:83,3 +DA:90,16 +DA:91,16 DA:95,1 DA:96,1 -DA:97,2 +DA:97,1 DA:98,1 -DA:99,1 -DA:107,1 -DA:109,1 -DA:111,3 -DA:112,3 -DA:113,3 -DA:114,3 -DA:115,3 -DA:116,3 +DA:101,1 +DA:102,1 +DA:103,2 +DA:104,1 +DA:105,1 +DA:113,1 +DA:115,1 DA:117,3 +DA:118,3 +DA:119,3 +DA:120,3 +DA:121,3 +DA:122,3 +DA:123,3 LF:37 LH:37 end_of_record SF:lib/src/components/snack_bar/snack_bar.dart DA:38,0 -DA:80,0 -DA:83,0 -DA:84,0 -DA:87,0 -DA:91,0 -DA:92,0 +DA:82,0 +DA:85,0 +DA:86,0 +DA:89,0 DA:93,0 +DA:94,0 DA:95,0 DA:97,0 -DA:98,0 DA:99,0 DA:100,0 DA:101,0 DA:102,0 DA:103,0 +DA:104,0 DA:105,0 -DA:111,0 -DA:125,0 -DA:129,0 -DA:132,0 -DA:133,0 +DA:107,0 +DA:113,0 +DA:127,0 +DA:131,0 DA:134,0 DA:135,0 DA:136,0 DA:137,0 -DA:143,0 -DA:148,0 +DA:138,0 +DA:139,0 +DA:145,0 DA:150,0 DA:152,0 -DA:153,0 -DA:156,0 -DA:161,0 -DA:162,0 +DA:154,0 +DA:155,0 +DA:158,0 DA:163,0 DA:164,0 DA:165,0 DA:166,0 DA:167,0 DA:168,0 -DA:172,0 +DA:169,0 +DA:170,0 DA:174,0 DA:176,0 -DA:177,0 DA:178,0 +DA:179,0 DA:180,0 -DA:186,0 -DA:202,0 +DA:182,0 +DA:188,0 DA:204,0 DA:206,0 -DA:207,0 DA:208,0 DA:209,0 DA:210,0 DA:211,0 -DA:214,0 +DA:212,0 +DA:213,0 DA:216,0 DA:218,0 DA:220,0 -DA:221,0 DA:222,0 DA:223,0 -DA:227,0 -DA:228,0 +DA:224,0 +DA:225,0 +DA:229,0 DA:230,0 -DA:233,0 -DA:234,0 +DA:232,0 DA:235,0 DA:236,0 DA:237,0 +DA:238,0 DA:239,0 -DA:240,0 +DA:241,0 DA:242,0 DA:244,0 -DA:245,0 DA:246,0 DA:247,0 DA:248,0 DA:249,0 DA:250,0 +DA:251,0 DA:252,0 -DA:253,0 +DA:254,0 DA:255,0 DA:257,0 -DA:258,0 +DA:259,0 DA:260,0 DA:262,0 -DA:263,0 +DA:264,0 DA:265,0 -DA:268,0 -DA:274,0 -DA:282,0 +DA:267,0 +DA:270,0 +DA:276,0 DA:284,0 DA:286,0 -DA:287,0 -DA:290,0 +DA:288,0 +DA:289,0 DA:292,0 DA:294,0 -DA:295,0 -DA:300,0 -DA:301,0 -DA:308,0 -DA:318,0 +DA:296,0 +DA:297,0 +DA:302,0 +DA:303,0 +DA:310,0 DA:320,0 DA:322,0 -DA:323,0 DA:324,0 -DA:327,0 +DA:325,0 +DA:326,0 DA:329,0 DA:331,0 -DA:332,0 -DA:341,0 -DA:342,0 +DA:333,0 +DA:334,0 DA:343,0 DA:344,0 DA:345,0 -DA:355,0 -DA:360,0 +DA:346,0 +DA:347,0 +DA:357,0 DA:362,0 -DA:363,0 -DA:366,0 +DA:364,0 +DA:365,0 DA:368,0 -DA:369,0 DA:370,0 DA:371,0 DA:372,0 DA:373,0 -DA:377,0 +DA:374,0 +DA:375,0 DA:379,0 -DA:380,0 DA:381,0 DA:382,0 DA:383,0 DA:384,0 -DA:389,0 +DA:385,0 +DA:386,0 DA:391,0 DA:393,0 -DA:394,0 DA:395,0 DA:396,0 DA:397,0 +DA:398,0 DA:399,0 +DA:401,0 LF:142 LH:0 end_of_record @@ -6033,7 +6035,7 @@ DA:700,5 DA:701,5 DA:702,5 DA:703,5 -DA:741,2 +DA:741,34 DA:744,2 DA:751,1 DA:752,4 @@ -6055,8 +6057,8 @@ DA:848,1 DA:849,4 DA:855,1 DA:856,4 -DA:863,1 -DA:864,4 +DA:863,17 +DA:864,52 DA:871,1 DA:872,4 DA:879,5 @@ -6136,33 +6138,32 @@ LH:243 end_of_record SF:lib/src/theme/theme_data.dart DA:22,19 -DA:32,1 +DA:31,1 +DA:33,1 DA:34,1 -DA:35,1 +DA:36,19 DA:37,19 -DA:38,19 -DA:40,1 +DA:39,1 +DA:41,1 DA:42,1 -DA:43,1 +DA:44,19 DA:45,19 -DA:46,19 -DA:65,38 -DA:72,38 +DA:64,38 +DA:71,38 +DA:74,18 +DA:77,18 +DA:79,18 +DA:80,18 +DA:81,18 DA:82,18 -DA:85,18 -DA:87,18 -DA:88,18 -DA:89,18 -DA:90,18 -DA:91,18 -DA:95,3 -DA:96,3 -DA:97,3 -DA:98,3 -DA:99,3 -DA:100,3 -LF:26 -LH:26 +DA:86,3 +DA:87,3 +DA:88,3 +DA:89,3 +DA:90,3 +DA:91,3 +LF:25 +LH:25 end_of_record SF:lib/src/utils/debounce.dart DA:10,2 @@ -6226,89 +6227,147 @@ DA:111,10 LF:46 LH:46 end_of_record +SF:lib/src/utils/nothing.dart +DA:6,326 +DA:8,1 +LF:2 +LH:2 +end_of_record SF:lib/src/zeta_provider.dart -DA:21,17 -DA:28,1 -DA:58,17 -DA:59,17 -DA:61,1 -DA:63,1 -DA:65,3 -DA:66,3 -DA:67,3 -DA:68,3 -DA:69,3 -DA:73,1 -DA:74,1 -DA:78,1 -DA:79,1 -DA:80,1 -DA:81,1 -DA:84,1 -DA:85,1 -DA:86,2 -DA:87,1 -DA:88,1 -DA:126,17 -DA:128,17 -DA:129,34 -DA:132,102 -DA:135,51 -DA:138,51 -DA:141,85 -DA:147,17 -DA:149,34 -DA:150,17 -DA:157,1 -DA:159,1 -DA:162,1 -DA:166,3 -DA:169,3 -DA:173,1 -DA:176,3 -DA:178,4 -DA:180,2 -DA:182,2 -DA:189,17 -DA:191,17 -DA:192,17 -DA:193,17 -DA:194,17 -DA:195,17 -DA:196,85 -DA:200,1 -DA:202,1 -DA:203,4 -DA:204,4 -DA:205,4 -DA:206,2 -DA:207,3 -DA:208,3 -DA:209,5 -DA:215,1 -DA:216,2 -DA:217,1 -DA:218,1 -DA:223,1 -DA:224,2 -DA:225,3 +DA:23,32 +DA:24,34 +DA:32,1 +DA:40,1 +DA:41,1 +DA:49,16 +DA:59,16 +DA:60,16 +DA:105,17 +DA:106,17 +DA:108,1 +DA:110,1 +DA:112,3 +DA:113,3 +DA:114,3 +DA:115,3 +DA:116,3 +DA:117,3 +DA:118,3 +DA:119,3 +DA:120,3 +DA:124,1 +DA:125,1 +DA:129,1 +DA:130,1 +DA:131,1 +DA:132,1 +DA:135,1 +DA:136,1 +DA:137,2 +DA:138,1 +DA:139,1 +DA:186,17 +DA:188,17 +DA:189,34 +DA:192,102 +DA:195,51 +DA:198,51 +DA:201,51 +DA:204,85 +DA:207,51 +DA:210,51 +DA:216,17 +DA:218,34 +DA:219,17 DA:226,1 +DA:228,1 DA:231,1 -DA:232,2 -DA:233,1 -DA:234,3 -DA:235,1 -DA:239,1 -DA:240,1 -DA:241,3 +DA:235,3 +DA:238,3 DA:242,1 -DA:243,1 -DA:244,1 -DA:249,1 -DA:251,1 -DA:253,3 -DA:254,3 -DA:255,3 -LF:82 -LH:82 +DA:245,3 +DA:247,4 +DA:249,2 +DA:251,2 +DA:258,17 +DA:260,68 +DA:261,16 +DA:262,16 +DA:263,16 +DA:264,16 +DA:265,16 +DA:266,16 +DA:267,48 +DA:269,16 +DA:271,16 +DA:272,64 +DA:274,16 +DA:276,16 +DA:277,64 +DA:279,16 +DA:284,1 +DA:285,1 +DA:286,1 +DA:287,1 +DA:288,1 +DA:289,1 +DA:290,5 +DA:294,1 +DA:296,1 +DA:297,4 +DA:298,4 +DA:299,4 +DA:300,4 +DA:301,0 +DA:302,2 +DA:303,3 +DA:304,3 +DA:305,5 +DA:306,3 +DA:307,3 +DA:313,1 +DA:314,2 +DA:315,1 +DA:316,1 +DA:321,1 +DA:322,2 +DA:323,3 +DA:324,1 +DA:329,1 +DA:330,2 +DA:331,1 +DA:332,3 +DA:333,1 +DA:339,0 +DA:340,0 +DA:341,0 +DA:342,0 +DA:346,1 +DA:347,1 +DA:348,3 +DA:349,1 +DA:350,1 +DA:351,1 +DA:356,1 +DA:358,1 +DA:360,3 +DA:361,3 +DA:362,3 +DA:367,16 +DA:375,0 +DA:377,0 +DA:379,0 +DA:381,0 +DA:382,0 +DA:384,0 +DA:385,0 +DA:387,0 +DA:388,0 +DA:389,0 +DA:390,0 +DA:394,16 +DA:398,16 +DA:399,16 +LF:134 +LH:118 end_of_record