From 65b38f110b4aadd2ede37c9193b496ed1b74ed25 Mon Sep 17 00:00:00 2001 From: Joe Date: Thu, 27 Jun 2024 18:57:31 +0800 Subject: [PATCH 01/14] Implement nested header --- forui/example/lib/example.dart | 62 ++++++ forui/example/lib/main.dart | 78 ++----- forui/lib/forui.dart | 1 + forui/lib/src/theme/theme_data.dart | 10 + forui/lib/src/widgets/header/header.dart | 28 ++- .../lib/src/widgets/header/header_action.dart | 32 +-- .../widgets/nested_header/nested_header.dart | 202 ++++++++++++++++++ .../nested_header/nested_header_action.dart | 121 +++++++++++ 8 files changed, 438 insertions(+), 96 deletions(-) create mode 100644 forui/example/lib/example.dart create mode 100644 forui/lib/src/widgets/nested_header/nested_header.dart create mode 100644 forui/lib/src/widgets/nested_header/nested_header_action.dart diff --git a/forui/example/lib/example.dart b/forui/example/lib/example.dart new file mode 100644 index 000000000..643295ef5 --- /dev/null +++ b/forui/example/lib/example.dart @@ -0,0 +1,62 @@ +import 'package:flutter/material.dart'; + +import 'package:forui/forui.dart'; + +class Example extends StatefulWidget { + const Example({super.key}); + + @override + State createState() => _ExampleState(); +} + +class _ExampleState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) => Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Expanded( + child: FTabs( + tabs: [ + FTabEntry( + label: 'Account', + content: FCard( + title: 'Account', + subtitle: 'Make changes to your account here. Click save when you are done.', + child: Column( + children: [ + Container( + color: Colors.red, + height: 100, + ), + ], + ), + ), + ), + FTabEntry( + label: 'Password', + content: FCard( + title: 'Password', + subtitle: 'Change your password here. After saving, you will be logged out.', + child: Column( + children: [ + Container( + color: Colors.blue, + height: 100, + ) + ], + ), + ), + ), + ], + ), + ), + ], + ); +} diff --git a/forui/example/lib/main.dart b/forui/example/lib/main.dart index ab9f066fa..22a3ebafe 100644 --- a/forui/example/lib/main.dart +++ b/forui/example/lib/main.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:forui/forui.dart'; +import 'package:forui_example/example.dart'; + void main() { runApp(const Application()); } @@ -15,72 +17,18 @@ class Application extends StatelessWidget { Widget build(BuildContext context) => MaterialApp( home: FTheme( data: FThemes.zinc.light, - child: const FScaffold( - header: FHeader(title: 'Example'), - content: ExampleWidget(), - ), - ), - ); -} - -class ExampleWidget extends StatefulWidget { - const ExampleWidget({super.key}); - - @override - State createState() => _ExampleWidgetState(); -} - -class _ExampleWidgetState extends State { - @override - void initState() { - super.initState(); - } - - @override - Widget build(BuildContext context) => Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 10), - Expanded( - child: FTabs( - tabs: [ - FTabEntry( - label: 'Account', - content: FCard( - title: 'Account', - subtitle: 'Make changes to your account here. Click save when you are done.', - child: Column( - children: [ - Container( - color: Colors.red, - height: 100, - ), - ], - ), - ), - ), - FTabEntry( - label: 'Password', - content: FCard( - title: 'Password', - subtitle: 'Change your password here. After saving, you will be logged out.', - child: Column( - children: [ - Container( - color: Colors.blue, - height: 100, - ) - ], - ), - ), - ), - ], - ), + child: FScaffold( + header: FHeader( + title: 'Example Example Example Example', + actions: [ + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], ), - ], + content: const Example(), + ), ), ); } diff --git a/forui/lib/forui.dart b/forui/lib/forui.dart index a9e3d7982..82ce85605 100644 --- a/forui/lib/forui.dart +++ b/forui/lib/forui.dart @@ -25,6 +25,7 @@ export 'src/widgets/button/button.dart' hide FButtonContent, Variant; export 'src/widgets/card/card.dart' hide FCardContent; export 'src/widgets/dialog/dialog.dart' hide FDialogContent, FHorizontalDialogContent, FVerticalDialogContent; export 'src/widgets/header/header.dart'; +export 'src/widgets/nested_header/nested_header.dart'; export 'src/widgets/tabs/tabs.dart'; export 'src/widgets/text_field/text_field.dart'; export 'src/widgets/scaffold.dart'; diff --git a/forui/lib/src/theme/theme_data.dart b/forui/lib/src/theme/theme_data.dart index c988abee1..33b37ff89 100644 --- a/forui/lib/src/theme/theme_data.dart +++ b/forui/lib/src/theme/theme_data.dart @@ -40,6 +40,9 @@ final class FThemeData with Diagnosticable { /// The header styles. final FHeaderStyle headerStyle; + /// The nested header styles. + final FNestedHeaderStyle nestedHeaderStyle; + /// The tabs styles. final FTabsStyle tabsStyle; @@ -68,6 +71,7 @@ final class FThemeData with Diagnosticable { required this.cardStyle, required this.dialogStyle, required this.headerStyle, + required this.nestedHeaderStyle, required this.tabsStyle, required this.textFieldStyle, required this.scaffoldStyle, @@ -94,6 +98,7 @@ final class FThemeData with Diagnosticable { cardStyle: FCardStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), dialogStyle: FDialogStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), headerStyle: FHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), + nestedHeaderStyle: FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), tabsStyle: FTabsStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), textFieldStyle: FTextFieldStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), scaffoldStyle: FScaffoldStyle.inherit(colorScheme: colorScheme, style: style), @@ -128,6 +133,7 @@ final class FThemeData with Diagnosticable { FCardStyle? cardStyle, FDialogStyle? dialogStyle, FHeaderStyle? headerStyle, + FNestedHeaderStyle? nestedHeaderStyle, FTabsStyle? tabsStyle, FTextFieldStyle? textFieldStyle, FScaffoldStyle? scaffoldStyle, @@ -143,6 +149,7 @@ final class FThemeData with Diagnosticable { cardStyle: cardStyle ?? this.cardStyle, dialogStyle: dialogStyle ?? this.dialogStyle, headerStyle: headerStyle ?? this.headerStyle, + nestedHeaderStyle: nestedHeaderStyle ?? this.nestedHeaderStyle, tabsStyle: tabsStyle ?? this.tabsStyle, textFieldStyle: textFieldStyle ?? this.textFieldStyle, scaffoldStyle: scaffoldStyle ?? this.scaffoldStyle, @@ -162,6 +169,7 @@ final class FThemeData with Diagnosticable { ..add(DiagnosticsProperty('cardStyle', cardStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('dialogStyle', dialogStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('headerStyle', headerStyle, level: DiagnosticLevel.debug)) + ..add(DiagnosticsProperty('nestedHeaderStyle', nestedHeaderStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('tabsStyle', tabsStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('textFieldStyle', textFieldStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('scaffoldStyle', scaffoldStyle, level: DiagnosticLevel.debug)) @@ -182,6 +190,7 @@ final class FThemeData with Diagnosticable { cardStyle == other.cardStyle && dialogStyle == other.dialogStyle && headerStyle == other.headerStyle && + nestedHeaderStyle == other.nestedHeaderStyle && tabsStyle == other.tabsStyle && textFieldStyle == other.textFieldStyle && scaffoldStyle == other.scaffoldStyle && @@ -198,6 +207,7 @@ final class FThemeData with Diagnosticable { cardStyle.hashCode ^ dialogStyle.hashCode ^ headerStyle.hashCode ^ + nestedHeaderStyle.hashCode ^ tabsStyle.hashCode ^ textFieldStyle.hashCode ^ scaffoldStyle.hashCode ^ diff --git a/forui/lib/src/widgets/header/header.dart b/forui/lib/src/widgets/header/header.dart index d3e0c4f5e..63bc7ec72 100644 --- a/forui/lib/src/widgets/header/header.dart +++ b/forui/lib/src/widgets/header/header.dart @@ -10,13 +10,13 @@ part 'header_action.dart'; /// A header. /// -/// A header contains the page's title and navigation actions. It is typically used on pages at the root of the -/// navigation stack. +/// A header contains the page's title and navigation actions. +/// It is typically used on pages at the root of the navigation stack. /// /// See: /// * https://forui.dev/docs/header for working examples. /// * [FHeaderStyle] for customizing a header's appearance. -class FHeader extends StatelessWidget { +final class FHeader extends StatelessWidget { /// The header's style. Defaults to [FThemeData.headerStyle]. final FHeaderStyle? style; @@ -79,7 +79,7 @@ class FHeader extends StatelessWidget { child: title, ), ), - Row(children: actions), + Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), ], ), ), @@ -102,7 +102,10 @@ final class FHeaderStyle with Diagnosticable { final TextStyle titleTextStyle; /// The [FHeaderAction]'s style. - final FHeaderActionStyle action; + final FHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; /// The padding. final EdgeInsets padding; @@ -110,7 +113,8 @@ final class FHeaderStyle with Diagnosticable { /// Creates a [FHeaderStyle]. FHeaderStyle({ required this.titleTextStyle, - required this.action, + required this.actionStyle, + required this.actionSpacing, required this.padding, }); @@ -124,7 +128,8 @@ final class FHeaderStyle with Diagnosticable { fontWeight: FontWeight.w700, height: 1, ), - action = FHeaderActionStyle.inherit(colorScheme: colorScheme), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme), + actionSpacing = 10, padding = style.pagePadding.copyWith(bottom: 15); /// Returns a copy of this [FHeaderStyle] with the given properties replaced. @@ -145,12 +150,14 @@ final class FHeaderStyle with Diagnosticable { @useResult FHeaderStyle copyWith({ TextStyle? titleTextStyle, - FHeaderActionStyle? action, + FHeaderActionStyle? actionStyle, + double? actionSpacing, EdgeInsets? padding, }) => FHeaderStyle( titleTextStyle: titleTextStyle ?? this.titleTextStyle, - action: action ?? this.action, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, padding: padding ?? this.padding, ); @@ -159,7 +166,8 @@ final class FHeaderStyle with Diagnosticable { super.debugFillProperties(properties); properties ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) - ..add(DiagnosticsProperty('action', action)) + ..add(DiagnosticsProperty('action', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) ..add(DiagnosticsProperty('padding', padding)); } } diff --git a/forui/lib/src/widgets/header/header_action.dart b/forui/lib/src/widgets/header/header_action.dart index 9c16973af..64ebf5e59 100644 --- a/forui/lib/src/widgets/header/header_action.dart +++ b/forui/lib/src/widgets/header/header_action.dart @@ -31,20 +31,17 @@ class FHeaderAction extends StatelessWidget { @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle.action; + final style = this.style ?? context.theme.headerStyle.actionStyle; final enabled = onPress != null || onLongPress != null; - return Padding( - padding: style.padding, - child: MouseRegion( - cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, - child: FTappable( - onTap: onPress, - onLongPress: onLongPress, - child: icon( - height: style.size, - colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), - ), + return MouseRegion( + cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, + child: FTappable( + onTap: onPress, + onLongPress: onLongPress, + child: icon( + height: style.size, + colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), ), ), ); @@ -72,23 +69,18 @@ class FHeaderActionStyle with Diagnosticable { /// The icon's size. Defaults to 30. final double size; - /// The padding. Defaults to `EdgeInsets.only(left: 10)`. - final EdgeInsets padding; - /// Creates a [FHeaderActionStyle]. FHeaderActionStyle({ required this.enabledColor, required this.disabledColor, this.size = 30, - this.padding = const EdgeInsets.only(left: 10), }); /// Creates a [FHeaderActionStyle] that inherits its properties from the given [FColorScheme]. FHeaderActionStyle.inherit({required FColorScheme colorScheme}) : enabledColor = colorScheme.foreground, disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 30, - padding = const EdgeInsets.only(left: 10); + size = 30; /// Returns a copy of this [FHeaderActionStyle] with the given properties replaced. /// @@ -116,7 +108,6 @@ class FHeaderActionStyle with Diagnosticable { enabledColor: enabledColor ?? this.enabledColor, disabledColor: disabledColor ?? this.disabledColor, size: size ?? this.size, - padding: padding ?? this.padding, ); @override @@ -125,7 +116,6 @@ class FHeaderActionStyle with Diagnosticable { properties ..add(ColorProperty('enabledColor', enabledColor)) ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)) - ..add(DiagnosticsProperty('padding', padding, defaultValue: const EdgeInsets.only(left: 10))); + ..add(DoubleProperty('size', size, defaultValue: 30)); } } diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/nested_header/nested_header.dart new file mode 100644 index 000000000..987054c5b --- /dev/null +++ b/forui/lib/src/widgets/nested_header/nested_header.dart @@ -0,0 +1,202 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; + +import 'package:forui/forui.dart'; +import 'package:forui/src/foundation/tappable.dart'; +import 'package:meta/meta.dart'; + +part 'nested_header_action.dart'; + +/// A nested header. +/// +/// A nested header contains the page's title and navigation actions. +/// It is typically used on pages that are not at the root of the navigation stack. +/// +/// See: +/// * https://forui.dev/docs/nested-header for working examples. +/// * [FNestedHeaderStyle] for customizing a header's appearance. +final class FNestedHeader extends StatelessWidget { + /// The style. Defaults to [FThemeData.nestedHeaderStyle]. + final FNestedHeaderStyle? style; + + /// The title, aligned to the center. + /// + /// ## Contract: + /// Throws [AssertionError]: + /// * if [title] and [rawTitle] are both not null + /// * if [title] and [rawTitle] are both null + final String? title; + + /// The title, aligned to the center. + /// + /// ## Contract: + /// Throws [AssertionError]: + /// * if [title] and [rawTitle] are both not null + /// * if [title] and [rawTitle] are both null + final Widget? rawTitle; + + /// The actions, aligned to the left. Defaults to an empty list. + final List leftActions; + + /// The actions, aligned to the right. Defaults to an empty list. + final List rightActions; + + /// Creates a [FNestedHeader] with an [onPop] callback. + /// + /// ## Contract: + /// Throws [AssertionError] if: + /// * [title] and [rawTitle] are both not null. + FNestedHeader({ + required VoidCallback? onPop, + this.style, + this.title, + this.rawTitle, + this.rightActions = const [], + super.key, + }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'), + leftActions = [ + if (onPop != null) + FNestedHeaderAction( + icon: FAssets.icons.arrowLeft, + onPress: onPop, + ), + ]; + + /// Creates a [FNestedHeader]. + /// + /// ## Contract: + /// Throws [AssertionError] if: + /// * [title] and [rawTitle] are both not null. + const FNestedHeader.raw({ + this.style, + this.title, + this.rawTitle, + this.leftActions = const [], + this.rightActions = const [], + super.key, + }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.nestedHeaderStyle; + + final title = switch ((this.title, rawTitle)) { + (final String title, _) => Text(title), + (_, final Widget title) => title, + _ => const Placeholder(), + }; + + return SafeArea( + bottom: false, + child: Padding( + padding: style.padding, + child: Stack( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), + ], + ), + Positioned.fill( + child: Align( + child: DefaultTextStyle.merge( + overflow: TextOverflow.fade, + maxLines: 1, + softWrap: false, + style: style.titleTextStyle, + child: title, + ), + ), + ), + ], + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(StringProperty('title', title)) + ..add(DiagnosticsProperty('rawTitle', rawTitle)); + } +} + +/// [FNestedHeader]'s style. +final class FNestedHeaderStyle with Diagnosticable { + /// The title's [TextStyle]. + final TextStyle titleTextStyle; + + /// The [FHeaderAction]'s style for [FNestedHeader.leftActions] and [FNestedHeader.rightActions]. + final FNestedHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; + + /// The padding. + final EdgeInsets padding; + + /// Creates a [FNestedHeaderStyle]. + const FNestedHeaderStyle({ + required this.titleTextStyle, + required this.actionStyle, + required this.actionSpacing, + required this.padding, + }); + + /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. + FNestedHeaderStyle.inherit({ + required FColorScheme colorScheme, + required FTypography typography, + required FStyle style, + }) : titleTextStyle = typography.xl.copyWith( + color: colorScheme.foreground, + fontWeight: FontWeight.w600, + height: 1, + ), + actionStyle = FNestedHeaderActionStyle.inherit(colorScheme: colorScheme), + actionSpacing = 10, + padding = style.pagePadding.copyWith(bottom: 15); + + /// Returns a copy of this [FNestedHeaderStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FNestedHeaderStyle( + /// titleTextStyle: ..., + /// leftAction: ..., + /// ); + /// + /// final copy = style.copyWith( + /// leftAction: ..., + /// ); + /// + /// print(style.titleTextStyle == copy.titleTextStyle); // true + /// print(style.leftAction == copy.leftAction); // false + /// ``` + FNestedHeaderStyle copyWith({ + TextStyle? titleTextStyle, + FNestedHeaderActionStyle? actionStyle, + double? actionSpacing, + EdgeInsets? padding, + }) => + FNestedHeaderStyle( + titleTextStyle: titleTextStyle ?? this.titleTextStyle, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, + padding: padding ?? this.padding, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) + ..add(DiagnosticsProperty('actionStyle', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) + ..add(DiagnosticsProperty('padding', padding)); + } +} diff --git a/forui/lib/src/widgets/nested_header/nested_header_action.dart b/forui/lib/src/widgets/nested_header/nested_header_action.dart new file mode 100644 index 000000000..b385df0db --- /dev/null +++ b/forui/lib/src/widgets/nested_header/nested_header_action.dart @@ -0,0 +1,121 @@ +part of 'nested_header.dart'; + +/// A [FNestedHeader] action. +/// +/// If the [onPress] and [onLongPress] callbacks are null, then this action will be disabled, it will not react to touch. +class FNestedHeaderAction extends StatelessWidget { + /// The style. + final FNestedHeaderActionStyle? style; + + /// The icon. + final SvgAsset icon; + + /// A callback for when the button is pressed. + /// + /// The action will be disabled if both [onPress] and [onLongPress] are null. + final VoidCallback? onPress; + + /// A callback for when the button is long pressed. + /// + /// The action will be disabled if both [onPress] and [onLongPress] are null. + final VoidCallback? onLongPress; + + /// Creates a [FNestedHeaderAction] from the given SVG [icon]. + const FNestedHeaderAction({ + required this.icon, + required this.onPress, + this.onLongPress, + this.style, + super.key, + }); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.nestedHeaderStyle.actionStyle; + final enabled = onPress != null || onLongPress != null; + + return MouseRegion( + cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, + child: FTappable( + onTap: onPress, + onLongPress: onLongPress, + child: icon( + height: style.size, + colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(DiagnosticsProperty('icon', icon)) + ..add(DiagnosticsProperty('onPress', onPress)) + ..add(DiagnosticsProperty('onLongPress', onLongPress)); + } +} + +/// [FNestedHeaderAction]'s style. +class FNestedHeaderActionStyle with Diagnosticable { + /// The icon's color when this action is enabled. + final Color enabledColor; + + /// The icon's color when this action is disabled. + final Color disabledColor; + + /// The icon's size. Defaults to 20. + final double size; + + /// Creates a [FNestedHeaderActionStyle]. + FNestedHeaderActionStyle({ + required this.enabledColor, + required this.disabledColor, + this.size = 25, + }); + + /// Creates a [FNestedHeaderActionStyle] that inherits its properties from the given [FColorScheme]. + FNestedHeaderActionStyle.inherit({required FColorScheme colorScheme}) + : enabledColor = colorScheme.foreground, + disabledColor = colorScheme.foreground.withOpacity(0.5), + size = 25; + + /// Returns a copy of this [FNestedHeaderActionStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FNestedHeaderActionStyle( + /// enabledColor: Colors.black, + /// disabledColor: Colors.white, + /// ); + /// + /// final copy = style.copyWith( + /// disabledColor: Colors.blue, + /// ); + /// + /// print(copy.enabledColor); // black + /// print(copy.disabledColor); // blue + /// ``` + @useResult + FNestedHeaderActionStyle copyWith({ + Color? enabledColor, + Color? disabledColor, + double? size, + EdgeInsets? padding, + }) => + FNestedHeaderActionStyle( + enabledColor: enabledColor ?? this.enabledColor, + disabledColor: disabledColor ?? this.disabledColor, + size: size ?? this.size, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(ColorProperty('enabledColor', enabledColor)) + ..add(ColorProperty('disabledColor', disabledColor)) + ..add(DoubleProperty('size', size, defaultValue: 30)); + } +} From 1fd771b5d95045bf62a901441e9000510fb8054a Mon Sep 17 00:00:00 2001 From: Joe Date: Fri, 28 Jun 2024 00:05:29 +0800 Subject: [PATCH 02/14] Add tests --- forui/CHANGELOG.md | 9 ++ .../golden/nested-header/zinc-dark-header.png | Bin 0 -> 28334 bytes .../zinc-dark-raw-constructor.png | Bin 0 -> 33831 bytes .../nested-header/zinc-dark-raw-title.png | Bin 0 -> 27510 bytes .../nested-header/zinc-light-header.png | Bin 0 -> 28168 bytes .../zinc-light-raw-constructor.png | Bin 0 -> 33644 bytes .../nested-header/zinc-light-raw-title.png | Bin 0 -> 27368 bytes .../widgets/header/header_golden_test.dart | 2 +- .../test/src/widgets/header/header_test.dart | 2 +- .../nested_header_golden_test.dart | 114 ++++++++++++++++++ .../nested_header/nested_header_test.dart | 41 +++++++ 11 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 forui/test/golden/nested-header/zinc-dark-header.png create mode 100644 forui/test/golden/nested-header/zinc-dark-raw-constructor.png create mode 100644 forui/test/golden/nested-header/zinc-dark-raw-title.png create mode 100644 forui/test/golden/nested-header/zinc-light-header.png create mode 100644 forui/test/golden/nested-header/zinc-light-raw-constructor.png create mode 100644 forui/test/golden/nested-header/zinc-light-raw-title.png create mode 100644 forui/test/src/widgets/nested_header/nested_header_golden_test.dart create mode 100644 forui/test/src/widgets/nested_header/nested_header_test.dart diff --git a/forui/CHANGELOG.md b/forui/CHANGELOG.md index 3a4ed739f..896d446c0 100644 --- a/forui/CHANGELOG.md +++ b/forui/CHANGELOG.md @@ -1,3 +1,12 @@ +## 0.2.0 + +* Add `NestedHeader` widget. + +### Breaking changes + +* `FHeaderActionStyle.action` parameter has been renamed to `FHeaderStyle.actionStyle`. +* `FHeaderActionStyle.padding` parameter has been moved to `FHeaderStyle.actionSpacing`. + ## 0.1.0 * Initial release! 🚀 diff --git a/forui/test/golden/nested-header/zinc-dark-header.png b/forui/test/golden/nested-header/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..5404af175d154d04f32e6813c8dbafc069418b7c GIT binary patch literal 28334 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 T=gwI=a^2JV#wW6Wv%C3Uv(Ol1 literal 0 HcmV?d00001 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-constructor.png b/forui/test/golden/nested-header/zinc-dark-raw-constructor.png new file mode 100644 index 0000000000000000000000000000000000000000..020000c67e6edcca243ea1138cfb1d48d62ce210 GIT binary patch literal 33831 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 literal 0 HcmV?d00001 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-title.png b/forui/test/golden/nested-header/zinc-dark-raw-title.png new file mode 100644 index 0000000000000000000000000000000000000000..aef0c48d45271e9b3a2ad8b45b00de611f8e7d1b GIT binary patch literal 27510 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 literal 0 HcmV?d00001 diff --git a/forui/test/golden/nested-header/zinc-light-raw-constructor.png b/forui/test/golden/nested-header/zinc-light-raw-constructor.png new file mode 100644 index 0000000000000000000000000000000000000000..9255de717e7e360e73c33f22746b9c2e988e821a GIT binary patch literal 33644 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 XCQnZsaeLi?mZK!Eb}9XW!NdOrcpF^l literal 0 HcmV?d00001 diff --git a/forui/test/golden/nested-header/zinc-light-raw-title.png b/forui/test/golden/nested-header/zinc-light-raw-title.png new file mode 100644 index 0000000000000000000000000000000000000000..218408e1139d84154fa0c87bf4877647e78022aa GIT binary patch literal 27368 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 FNestedHeader( + title: title, + rawTitle: rawTitle, + onPop: null, + ), + returnsNormally, + ); + }); + } + + for (final (title, rawTitle) in [ + (null, null), + ('', const SizedBox()), + ]) { + testWidgets('constructor throws error', (tester) async { + expect( + () => FNestedHeader( + title: title, + rawTitle: rawTitle, + onPop: () {}, + ), + throwsAssertionError, + ); + }); + } + }); +} From 389bd0316f1a931e7507a7429300dda641f5fb64 Mon Sep 17 00:00:00 2001 From: Joe Date: Fri, 28 Jun 2024 12:03:51 +0800 Subject: [PATCH 03/14] Add documentation --- .../forui___update_golden_test_images.xml | 8 -- .idea/runConfigurations/samples___run.xml | 1 + docs/.env.development | 3 +- docs/components/widget.tsx | 4 +- docs/pages/docs/button.mdx | 3 +- docs/pages/docs/header.mdx | 5 +- docs/pages/docs/nested-header.mdx | 81 ++++++++++++++++++ .../widgets/nested_header/nested_header.dart | 25 +----- .../nested_header/nested_header_action.dart | 26 ++++++ .../zinc-dark-raw-constructor.png | Bin 33831 -> 0 bytes .../nested-header/zinc-dark-raw-title.png | Bin 27510 -> 29778 bytes .../zinc-light-raw-constructor.png | Bin 33644 -> 0 bytes .../nested-header/zinc-light-raw-title.png | Bin 27368 -> 29696 bytes .../nested_header_golden_test.dart | 51 ++--------- .../nested_header/nested_header_test.dart | 2 - samples/lib/main.dart | 8 ++ samples/lib/widgets/header.dart | 29 +++---- samples/lib/widgets/nested_header.dart | 75 ++++++++++++++++ samples/pubspec.lock | 7 +- 19 files changed, 226 insertions(+), 102 deletions(-) delete mode 100644 .idea/runConfigurations/forui___update_golden_test_images.xml create mode 100644 docs/pages/docs/nested-header.mdx delete mode 100644 forui/test/golden/nested-header/zinc-dark-raw-constructor.png delete mode 100644 forui/test/golden/nested-header/zinc-light-raw-constructor.png create mode 100644 samples/lib/widgets/nested_header.dart diff --git a/.idea/runConfigurations/forui___update_golden_test_images.xml b/.idea/runConfigurations/forui___update_golden_test_images.xml deleted file mode 100644 index 5f492b8c1..000000000 --- a/.idea/runConfigurations/forui___update_golden_test_images.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/samples___run.xml b/.idea/runConfigurations/samples___run.xml index 2d69cd950..4014714a0 100644 --- a/.idea/runConfigurations/samples___run.xml +++ b/.idea/runConfigurations/samples___run.xml @@ -1,5 +1,6 @@ + diff --git a/docs/.env.development b/docs/.env.development index 809b1576c..680bb5f21 100644 --- a/docs/.env.development +++ b/docs/.env.development @@ -1,2 +1 @@ -NEXT_PUBLIC_DEMO_URL=https://dev.demo.forui.dev -NEXT_PUBLIC_DEMO_URL=http://localhost:51624 \ No newline at end of file +NEXT_PUBLIC_DEMO_URL=http://localhost:3001 diff --git a/docs/components/widget.tsx b/docs/components/widget.tsx index 3048f588f..a63826ec4 100644 --- a/docs/components/widget.tsx +++ b/docs/components/widget.tsx @@ -4,10 +4,10 @@ interface Props { name: string; variant?: string; height?: number; - query: Record; + query?: Record; } -export function Widget({name, variant = 'default', height = 200, query}: Props) { +export function Widget({name, variant = 'default', height = 200, query = {}}: Props) { const {resolvedTheme} = useTheme(); query['theme'] = `zinc-${resolvedTheme}`; diff --git a/docs/pages/docs/button.mdx b/docs/pages/docs/button.mdx index 0e046eb8d..36a85097d 100644 --- a/docs/pages/docs/button.mdx +++ b/docs/pages/docs/button.mdx @@ -34,9 +34,10 @@ FButton( ```dart FButton.raw( child: Text('Button'), - onPress: () {}; + onPress: () {}, ); ``` + ## Examples ### Primary diff --git a/docs/pages/docs/header.mdx b/docs/pages/docs/header.mdx index c7500eff2..d842dc704 100644 --- a/docs/pages/docs/header.mdx +++ b/docs/pages/docs/header.mdx @@ -3,10 +3,11 @@ import { Widget } from "../../components/widget"; # Header A header contains the page's title and navigation actions. +It is typically used on pages at the root of the navigation stack. - + ```dart @@ -45,4 +46,4 @@ FHeader( ), ], ) -``` \ No newline at end of file +``` diff --git a/docs/pages/docs/nested-header.mdx b/docs/pages/docs/nested-header.mdx new file mode 100644 index 000000000..101238060 --- /dev/null +++ b/docs/pages/docs/nested-header.mdx @@ -0,0 +1,81 @@ +import { Tabs } from 'nextra/components'; +import { Widget } from "../../components/widget"; + +# Nested Header +A nested header contains the page's title and actions (including pop navigation). +It is typically used on pages that are not at the root of the navigation stack. + + + + + + + ```dart + FNestedHeader( + title: 'Appointment', + leftActions: [ + FNestedHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FNestedHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +## Usage + +### `FNestedHeader(...)` + +```dart +FNestedHeader( + title: 'Appointment', + leftActions: [ + FNestedHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FNestedHeaderAction( + icon: FAssets.icons.info, + onPress: null, + ), + FNestedHeaderAction.x(onPress: () {}), + ], +); +``` + +## Examples + +### With X icon to exit + + + + + + ```dart + FNestedHeader( + title: 'Climate', + leftActions: [ + FNestedHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FNestedHeaderAction.x(onPress: () {}), + ], + ); + ``` + + diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/nested_header/nested_header.dart index 987054c5b..0bad5ace2 100644 --- a/forui/lib/src/widgets/nested_header/nested_header.dart +++ b/forui/lib/src/widgets/nested_header/nested_header.dart @@ -9,7 +9,7 @@ part 'nested_header_action.dart'; /// A nested header. /// -/// A nested header contains the page's title and navigation actions. +/// A nested header contains the page's title and actions (including pop navigation). /// It is typically used on pages that are not at the root of the navigation stack. /// /// See: @@ -41,33 +41,12 @@ final class FNestedHeader extends StatelessWidget { /// The actions, aligned to the right. Defaults to an empty list. final List rightActions; - /// Creates a [FNestedHeader] with an [onPop] callback. - /// - /// ## Contract: - /// Throws [AssertionError] if: - /// * [title] and [rawTitle] are both not null. - FNestedHeader({ - required VoidCallback? onPop, - this.style, - this.title, - this.rawTitle, - this.rightActions = const [], - super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'), - leftActions = [ - if (onPop != null) - FNestedHeaderAction( - icon: FAssets.icons.arrowLeft, - onPress: onPop, - ), - ]; - /// Creates a [FNestedHeader]. /// /// ## Contract: /// Throws [AssertionError] if: /// * [title] and [rawTitle] are both not null. - const FNestedHeader.raw({ + const FNestedHeader({ this.style, this.title, this.rawTitle, diff --git a/forui/lib/src/widgets/nested_header/nested_header_action.dart b/forui/lib/src/widgets/nested_header/nested_header_action.dart index b385df0db..9cdc26772 100644 --- a/forui/lib/src/widgets/nested_header/nested_header_action.dart +++ b/forui/lib/src/widgets/nested_header/nested_header_action.dart @@ -29,6 +29,32 @@ class FNestedHeaderAction extends StatelessWidget { super.key, }); + /// Creates a [FNestedHeaderAction] with [FAssets.icons.arrowLeft]. + factory FNestedHeaderAction.back({ + required VoidCallback? onPress, + FNestedHeaderActionStyle? style, + Key? key, + }) => + FNestedHeaderAction( + icon: FAssets.icons.arrowLeft, + onPress: onPress, + style: style, + key: key, + ); + + /// Creates a [FNestedHeaderAction] with [FAssets.icons.x]. + factory FNestedHeaderAction.x({ + required VoidCallback? onPress, + FNestedHeaderActionStyle? style, + Key? key, + }) => + FNestedHeaderAction( + icon: FAssets.icons.x, + onPress: onPress, + style: style, + key: key, + ); + @override Widget build(BuildContext context) { final style = this.style ?? context.theme.nestedHeaderStyle.actionStyle; diff --git a/forui/test/golden/nested-header/zinc-dark-raw-constructor.png b/forui/test/golden/nested-header/zinc-dark-raw-constructor.png deleted file mode 100644 index 020000c67e6edcca243ea1138cfb1d48d62ce210..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33831 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 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-title.png b/forui/test/golden/nested-header/zinc-dark-raw-title.png index aef0c48d45271e9b3a2ad8b45b00de611f8e7d1b..9eea2c8305d6589fe80b9a4bceac2a38026e132c 100644 GIT binary patch literal 29778 zcmeHQ`8$;R`=4_@crd;UGrR*%g{W}yx;fxzVFxaejbJXrK`#IJMZr(6pBsj zoccu+YWrmrYU{RbTi`ckl;z*x+br|HH^)PrAkY`oro;_@#Wuhq94+jtpN&${?VELdS-Wy_CT zU=ua6t7gM8Z6xf+z`$=Zy?yW+0TV{Vxey42bvrXoq%AHEZp#4Rid#4iT zH$N20)=0>$Dj|7jK$wb)1t z7Pa{Q$?(_X2#6FAJ6ayLEwuN*guDLM4{q{gDf-_WS?WepxLSBJe-fTT;Dy z1yQR{s8nj9=`o_Lj_p&mh_$sf`r@L3pkP1*#Zk`H)s@)R)>dM_fh4OY{Y}?q-{cR{l<+G?7MbZ zuU2+D6YJ{Y3eEG@-=6sX9uz8o;nlmzr@Y(wWHT8Z%~*D|u*C9h-MY0mc`i3CEzKRf zhRyBt9-5qN>+1F;(6n$LYzlcYGBVKJm2F>h8!)X*!reE&{r>B%-?&Ld)4%+Yzo

y6s|H>* z@T!4V4IlzMD&SE8j|zBHz@q}*Ao))f{LiOo;%L<;@P`HbIDaF6S1`PS;T6pPqG0}i zDiSwR{69Yovz=i_xE|o8{L9Z@g^>8~kLy8B^S-^FbY4u>8Odmo8B5O`rCR;9O&DV5VPm{@VTj0jHgDj{pDw diff --git a/forui/test/golden/nested-header/zinc-dark-header.png b/forui/test/golden/nested-header/zinc-dark-header.png deleted file mode 100644 index 5404af175d154d04f32e6813c8dbafc069418b7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28334 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 T=gwI=a^2JV#wW6Wv%C3Uv(Ol1 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-title.png b/forui/test/golden/nested-header/zinc-dark-raw-title.png deleted file mode 100644 index 9eea2c8305d6589fe80b9a4bceac2a38026e132c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29778 zcmeHQ`8$;R`=4_@crd;UGrR*%g{W}yx;fxzVFxaejbJXrK`#IJMZr(6pBsj zoccu+YWrmrYU{RbTi`ckl;z*x+br|HH^)PrAkY`oro;_@#Wuhq94+jtpN&${?VELdS-Wy_CT zU=ua6t7gM8Z6xf+z`$=Zy?yW+0TV{Vxey42bvrXoq%AHEZp#4Rid#4iT zH$N20)=0>$Dj|7jK$wb)1t z7Pa{Q$?(_X2#6FAJ6ayLEwuN*guDLM4{q{gDf-_WS?WepxLSBJe-fTT;Dy z1yQR{s8nj9=`o_Lj_p&mh_$sf`r@L3pkP1*#Zk`H)s@)R)>dM_fh4OY{Y}?q-{cR{l<+G?7MbZ zuU2+D6YJ{Y3eEG@-=6sX9uz8o;nlmzr@Y(wWHT8Z%~*D|u*C9h-MY0mc`i3CEzKRf zhRyBt9-5qN>+1F;(6n$LYzlcYGBVKJm2F>h8!)X*!reE&{r>B%-?&Ld)4%+Yzo

81D8eRr|fHd=MCj@vq9idq@y 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 diff --git a/forui/test/golden/nested-header/zinc-light-raw-title.png b/forui/test/golden/nested-header/zinc-light-raw-title.png deleted file mode 100644 index fdcb32118f542c3d5f8a3103ecdf4a081d161089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29696 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 FHeader( - title: title, - rawTitle: rawTitle, - ), - returnsNormally, - ); - }); - } - - for (final (title, rawTitle) in [ - (null, null), - ('', const SizedBox()), - ]) { - testWidgets('constructor throws error', (tester) async { - expect( - () => FHeader( - title: title, - rawTitle: rawTitle, - ), - throwsAssertionError, - ); - }); - } - }); -} diff --git a/forui/test/src/widgets/header/nested_header_golden_test.dart b/forui/test/src/widgets/header/nested_header_golden_test.dart new file mode 100644 index 000000000..bca8ffa74 --- /dev/null +++ b/forui/test/src/widgets/header/nested_header_golden_test.dart @@ -0,0 +1,48 @@ +@Tags(['golden']) +library; + +import 'package:flutter/widgets.dart'; + +import 'package:flutter_test/flutter_test.dart'; + +import 'package:forui/forui.dart'; +import '../../test_scaffold.dart'; + +void main() { + group('FNestedHeader', () { + for (final (name, theme, _) in TestScaffold.themes) { + testWidgets('$name with FNestedHeader actions', (tester) async { + await tester.pumpWidget( + TestScaffold( + data: theme, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: FHeader.nested( + title: const Text('Title'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + FHeaderAction.x(onPress: () {}), + ], + ), + ), + ), + ); + + await expectLater( + find.byType(TestScaffold), + matchesGoldenFile('header/nested/$name-header.png'), + ); + }); + } + }); +} diff --git a/forui/test/src/widgets/header/header_golden_test.dart b/forui/test/src/widgets/header/root_header_golden_test.dart similarity index 54% rename from forui/test/src/widgets/header/header_golden_test.dart rename to forui/test/src/widgets/header/root_header_golden_test.dart index 46b7e9f11..bc1645ad4 100644 --- a/forui/test/src/widgets/header/header_golden_test.dart +++ b/forui/test/src/widgets/header/root_header_golden_test.dart @@ -12,16 +12,16 @@ const title = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'; void main() { - group('FHeader', () { + group('FRootHeader', () { for (final (name, theme, _) in TestScaffold.themes) { - testWidgets('$name with FHeader actions', (tester) async { + testWidgets('$name with FRootHeader actions', (tester) async { await tester.pumpWidget( TestScaffold( data: theme, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: FHeader( - title: title, + title: const Text(title), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -39,36 +39,7 @@ void main() { await expectLater( find.byType(TestScaffold), - matchesGoldenFile('header/$name-header.png'), - ); - }); - - testWidgets('$name with raw title', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FHeader( - rawTitle: const Text('Title'), - actions: [ - FHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: null, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('header/$name-raw-title.png'), + matchesGoldenFile('header/root/$name-header.png'), ); }); } diff --git a/forui/test/src/widgets/nested_header/nested_header_golden_test.dart b/forui/test/src/widgets/nested_header/nested_header_golden_test.dart deleted file mode 100644 index 674fd1447..000000000 --- a/forui/test/src/widgets/nested_header/nested_header_golden_test.dart +++ /dev/null @@ -1,79 +0,0 @@ -@Tags(['golden']) -library; - -import 'package:flutter/widgets.dart'; - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:forui/forui.dart'; -import '../../test_scaffold.dart'; - -void main() { - group('FNestedHeader', () { - for (final (name, theme, _) in TestScaffold.themes) { - testWidgets('$name with FNestedHeader actions', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FNestedHeader( - title: 'Title', - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: null, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('nested-header/$name-header.png'), - ); - }); - - testWidgets('$name with raw title', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FNestedHeader( - rawTitle: const Text('Title'), - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.cookingPot, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('nested-header/$name-raw-title.png'), - ); - }); - } - }); -} diff --git a/forui/test/src/widgets/nested_header/nested_header_test.dart b/forui/test/src/widgets/nested_header/nested_header_test.dart deleted file mode 100644 index a70b8875b..000000000 --- a/forui/test/src/widgets/nested_header/nested_header_test.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:forui/forui.dart'; - -void main() { - group('FNestedHeader', () { - for (final (title, rawTitle) in [ - ('', null), - (null, const SizedBox()), - ]) { - testWidgets('constructor does not throw error', (tester) async { - expect( - () => FNestedHeader( - title: title, - rawTitle: rawTitle, - ), - returnsNormally, - ); - }); - } - - for (final (title, rawTitle) in [ - (null, null), - ('', const SizedBox()), - ]) { - testWidgets('constructor throws error', (tester) async { - expect( - () => FNestedHeader( - title: title, - rawTitle: rawTitle, - ), - throwsAssertionError, - ); - }); - } - }); -} diff --git a/samples/lib/main.dart b/samples/lib/main.dart index 08ce6eab2..acb2aac51 100644 --- a/samples/lib/main.dart +++ b/samples/lib/main.dart @@ -60,14 +60,14 @@ class _AppRouter extends $_AppRouter { ), AutoRoute( path: '/header/default', - page: HeaderRoute.page, + page: RootHeaderRoute.page, ), AutoRoute( - path: '/nested-header/default', + path: '/header/nested', page: NestedHeaderRoute.page, ), AutoRoute( - path: '/nested-header/x', + path: '/header/nested-x', page: XNestedHeaderRoute.page, ), AutoRoute( diff --git a/samples/lib/widgets/header.dart b/samples/lib/widgets/header.dart index ce3324781..0bb8f3c7e 100644 --- a/samples/lib/widgets/header.dart +++ b/samples/lib/widgets/header.dart @@ -6,14 +6,14 @@ import 'package:forui/forui.dart'; import 'package:forui_samples/sample_scaffold.dart'; @RoutePage() -class HeaderPage extends SampleScaffold { - HeaderPage({ +class RootHeaderPage extends SampleScaffold { + RootHeaderPage({ @queryParam super.theme, }); @override Widget child(BuildContext context) => FHeader( - title: 'Edit Alarm', + title: const Text('Edit Alarm'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -26,3 +26,53 @@ class HeaderPage extends SampleScaffold { ], ); } + +@RoutePage() +class NestedHeaderPage extends SampleScaffold { + NestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); +} + +@RoutePage() +class XNestedHeaderPage extends SampleScaffold { + XNestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FHeader.nested( + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], + ); +} diff --git a/samples/lib/widgets/nested_header.dart b/samples/lib/widgets/nested_header.dart deleted file mode 100644 index e713ee1b8..000000000 --- a/samples/lib/widgets/nested_header.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import 'package:auto_route/auto_route.dart'; -import 'package:forui/forui.dart'; - -import 'package:forui_samples/sample_scaffold.dart'; - -@RoutePage() -class NestedHeaderPage extends SampleScaffold { - NestedHeaderPage({ - @queryParam super.theme, - }); - - @override - Widget child(BuildContext context) => FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ); -} - -@RoutePage() -class XNestedHeaderPage extends SampleScaffold { - XNestedHeaderPage({ - @queryParam super.theme, - }); - - @override - Widget child(BuildContext context) => FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ); -} - -void t() { -FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], -); -} diff --git a/samples/lib/widgets/scaffold.dart b/samples/lib/widgets/scaffold.dart index d9e8ba725..15b496541 100644 --- a/samples/lib/widgets/scaffold.dart +++ b/samples/lib/widgets/scaffold.dart @@ -20,7 +20,7 @@ class ScaffoldPage extends SampleScaffold { height: 420, child: FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, From af7bc937710500f74a260ff52b82fa9c42041441 Mon Sep 17 00:00:00 2001 From: Joe Date: Sat, 29 Jun 2024 16:18:54 +0800 Subject: [PATCH 06/14] Refactor code to use FHeader.nested() --- docs/pages/docs/header.mdx | 136 +++++++++++++- docs/pages/docs/nested-header.mdx | 81 -------- docs/pages/docs/scaffold.mdx | 4 +- forui/example/lib/main.dart | 2 +- forui/lib/forui.dart | 1 - forui/lib/src/theme/theme_data.dart | 9 - forui/lib/src/widgets/header/header.dart | 177 ++++++------------ .../lib/src/widgets/header/header_action.dart | 66 ++++++- .../nested_header.dart | 96 ++++------ forui/lib/src/widgets/header/root_header.dart | 156 +++++++++++++++ .../nested_header/nested_header_action.dart | 147 --------------- .../golden/header/nested/zinc-dark-header.png | Bin 0 -> 29211 bytes .../nested}/zinc-light-header.png | Bin 28168 -> 29077 bytes .../golden/header/root/zinc-dark-header.png | Bin 0 -> 55550 bytes .../golden/header/root/zinc-light-header.png | Bin 0 -> 54542 bytes forui/test/golden/header/zinc-dark-header.png | Bin 45617 -> 0 bytes .../golden/header/zinc-dark-raw-title.png | Bin 28218 -> 0 bytes .../test/golden/header/zinc-light-header.png | Bin 44935 -> 0 bytes .../golden/header/zinc-light-raw-title.png | Bin 28143 -> 0 bytes .../golden/nested-header/zinc-dark-header.png | Bin 28334 -> 0 bytes .../nested-header/zinc-dark-raw-title.png | Bin 29778 -> 0 bytes .../nested-header/zinc-light-raw-title.png | Bin 29696 -> 0 bytes .../test/src/widgets/header/header_test.dart | 39 ---- .../header/nested_header_golden_test.dart | 48 +++++ ...test.dart => root_header_golden_test.dart} | 37 +--- .../nested_header_golden_test.dart | 79 -------- .../nested_header/nested_header_test.dart | 39 ---- samples/lib/main.dart | 6 +- samples/lib/widgets/header.dart | 56 +++++- samples/lib/widgets/nested_header.dart | 75 -------- samples/lib/widgets/scaffold.dart | 2 +- 31 files changed, 557 insertions(+), 699 deletions(-) delete mode 100644 docs/pages/docs/nested-header.mdx rename forui/lib/src/widgets/{nested_header => header}/nested_header.dart (62%) create mode 100644 forui/lib/src/widgets/header/root_header.dart delete mode 100644 forui/lib/src/widgets/nested_header/nested_header_action.dart create mode 100644 forui/test/golden/header/nested/zinc-dark-header.png rename forui/test/golden/{nested-header => header/nested}/zinc-light-header.png (50%) create mode 100644 forui/test/golden/header/root/zinc-dark-header.png create mode 100644 forui/test/golden/header/root/zinc-light-header.png delete mode 100644 forui/test/golden/header/zinc-dark-header.png delete mode 100644 forui/test/golden/header/zinc-dark-raw-title.png delete mode 100644 forui/test/golden/header/zinc-light-header.png delete mode 100644 forui/test/golden/header/zinc-light-raw-title.png delete mode 100644 forui/test/golden/nested-header/zinc-dark-header.png delete mode 100644 forui/test/golden/nested-header/zinc-dark-raw-title.png delete mode 100644 forui/test/golden/nested-header/zinc-light-raw-title.png delete mode 100644 forui/test/src/widgets/header/header_test.dart create mode 100644 forui/test/src/widgets/header/nested_header_golden_test.dart rename forui/test/src/widgets/header/{header_golden_test.dart => root_header_golden_test.dart} (54%) delete mode 100644 forui/test/src/widgets/nested_header/nested_header_golden_test.dart delete mode 100644 forui/test/src/widgets/nested_header/nested_header_test.dart delete mode 100644 samples/lib/widgets/nested_header.dart diff --git a/docs/pages/docs/header.mdx b/docs/pages/docs/header.mdx index d842dc704..dea4c9ac6 100644 --- a/docs/pages/docs/header.mdx +++ b/docs/pages/docs/header.mdx @@ -12,7 +12,7 @@ It is typically used on pages at the root of the navigation stack. ```dart FHeader( - title: 'Edit Alarm', + title: const Text('Edit Alarm'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -23,18 +23,48 @@ It is typically used on pages at the root of the navigation stack. onPress: () {}, ), ], - ) + ); ``` +## Nested Header + +It is typically used on nested pages or sheets. + + + + + + + ```dart + FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + ## Usage ### `FHeader(...)` ```dart FHeader( - title: 'Edit Alarm', + title: const Text('Title'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -45,5 +75,103 @@ FHeader( onPress: () {}, ), ], -) +); ``` + +### `FHeader.nested(...)` + +```dart +FHeader.nested( + title: const Text('Title'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction.x(onPress: () {}), + ], +); +``` + +## Examples + +### Header + + + + + + ```dart + FHeader( + title: const Text('Edit Alarm'), + actions: [ + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +### Nested Header with back icon + + + + + + ```dart + FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +### Nested Header with X icon + + + + + + ```dart + FHeader.nested( + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], + ); + ``` + + diff --git a/docs/pages/docs/nested-header.mdx b/docs/pages/docs/nested-header.mdx deleted file mode 100644 index 101238060..000000000 --- a/docs/pages/docs/nested-header.mdx +++ /dev/null @@ -1,81 +0,0 @@ -import { Tabs } from 'nextra/components'; -import { Widget } from "../../components/widget"; - -# Nested Header -A nested header contains the page's title and actions (including pop navigation). -It is typically used on pages that are not at the root of the navigation stack. - - - - - - - ```dart - FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ); - ``` - - - -## Usage - -### `FNestedHeader(...)` - -```dart -FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: null, - ), - FNestedHeaderAction.x(onPress: () {}), - ], -); -``` - -## Examples - -### With X icon to exit - - - - - - ```dart - FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ); - ``` - - diff --git a/docs/pages/docs/scaffold.mdx b/docs/pages/docs/scaffold.mdx index 2b46303e2..af16760f5 100644 --- a/docs/pages/docs/scaffold.mdx +++ b/docs/pages/docs/scaffold.mdx @@ -12,7 +12,7 @@ Creates a visual scaffold for Forui widgets. ```dart FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, @@ -63,7 +63,7 @@ Creates a visual scaffold for Forui widgets. ```dart FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, diff --git a/forui/example/lib/main.dart b/forui/example/lib/main.dart index 22a3ebafe..c9a91b563 100644 --- a/forui/example/lib/main.dart +++ b/forui/example/lib/main.dart @@ -19,7 +19,7 @@ class Application extends StatelessWidget { data: FThemes.zinc.light, child: FScaffold( header: FHeader( - title: 'Example Example Example Example', + title: const Text('Example Example Example Example'), actions: [ FHeaderAction( icon: FAssets.icons.plus, diff --git a/forui/lib/forui.dart b/forui/lib/forui.dart index 82ce85605..a9e3d7982 100644 --- a/forui/lib/forui.dart +++ b/forui/lib/forui.dart @@ -25,7 +25,6 @@ export 'src/widgets/button/button.dart' hide FButtonContent, Variant; export 'src/widgets/card/card.dart' hide FCardContent; export 'src/widgets/dialog/dialog.dart' hide FDialogContent, FHorizontalDialogContent, FVerticalDialogContent; export 'src/widgets/header/header.dart'; -export 'src/widgets/nested_header/nested_header.dart'; export 'src/widgets/tabs/tabs.dart'; export 'src/widgets/text_field/text_field.dart'; export 'src/widgets/scaffold.dart'; diff --git a/forui/lib/src/theme/theme_data.dart b/forui/lib/src/theme/theme_data.dart index 33b37ff89..0d5f6e41b 100644 --- a/forui/lib/src/theme/theme_data.dart +++ b/forui/lib/src/theme/theme_data.dart @@ -40,9 +40,6 @@ final class FThemeData with Diagnosticable { /// The header styles. final FHeaderStyle headerStyle; - /// The nested header styles. - final FNestedHeaderStyle nestedHeaderStyle; - /// The tabs styles. final FTabsStyle tabsStyle; @@ -71,7 +68,6 @@ final class FThemeData with Diagnosticable { required this.cardStyle, required this.dialogStyle, required this.headerStyle, - required this.nestedHeaderStyle, required this.tabsStyle, required this.textFieldStyle, required this.scaffoldStyle, @@ -98,7 +94,6 @@ final class FThemeData with Diagnosticable { cardStyle: FCardStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), dialogStyle: FDialogStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), headerStyle: FHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), - nestedHeaderStyle: FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), tabsStyle: FTabsStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), textFieldStyle: FTextFieldStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), scaffoldStyle: FScaffoldStyle.inherit(colorScheme: colorScheme, style: style), @@ -149,7 +144,6 @@ final class FThemeData with Diagnosticable { cardStyle: cardStyle ?? this.cardStyle, dialogStyle: dialogStyle ?? this.dialogStyle, headerStyle: headerStyle ?? this.headerStyle, - nestedHeaderStyle: nestedHeaderStyle ?? this.nestedHeaderStyle, tabsStyle: tabsStyle ?? this.tabsStyle, textFieldStyle: textFieldStyle ?? this.textFieldStyle, scaffoldStyle: scaffoldStyle ?? this.scaffoldStyle, @@ -169,7 +163,6 @@ final class FThemeData with Diagnosticable { ..add(DiagnosticsProperty('cardStyle', cardStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('dialogStyle', dialogStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('headerStyle', headerStyle, level: DiagnosticLevel.debug)) - ..add(DiagnosticsProperty('nestedHeaderStyle', nestedHeaderStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('tabsStyle', tabsStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('textFieldStyle', textFieldStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('scaffoldStyle', scaffoldStyle, level: DiagnosticLevel.debug)) @@ -190,7 +183,6 @@ final class FThemeData with Diagnosticable { cardStyle == other.cardStyle && dialogStyle == other.dialogStyle && headerStyle == other.headerStyle && - nestedHeaderStyle == other.nestedHeaderStyle && tabsStyle == other.tabsStyle && textFieldStyle == other.textFieldStyle && scaffoldStyle == other.scaffoldStyle && @@ -207,7 +199,6 @@ final class FThemeData with Diagnosticable { cardStyle.hashCode ^ dialogStyle.hashCode ^ headerStyle.hashCode ^ - nestedHeaderStyle.hashCode ^ tabsStyle.hashCode ^ textFieldStyle.hashCode ^ scaffoldStyle.hashCode ^ diff --git a/forui/lib/src/widgets/header/header.dart b/forui/lib/src/widgets/header/header.dart index 63bc7ec72..1a7c32faf 100644 --- a/forui/lib/src/widgets/header/header.dart +++ b/forui/lib/src/widgets/header/header.dart @@ -8,166 +8,105 @@ import 'package:forui/src/foundation/tappable.dart'; part 'header_action.dart'; +part 'root_header.dart'; + +part 'nested_header.dart'; + /// A header. /// -/// A header contains the page's title and navigation actions. -/// It is typically used on pages at the root of the navigation stack. +/// A header contains the page's title and actions. + /// /// See: /// * https://forui.dev/docs/header for working examples. /// * [FHeaderStyle] for customizing a header's appearance. -final class FHeader extends StatelessWidget { - /// The header's style. Defaults to [FThemeData.headerStyle]. - final FHeaderStyle? style; +sealed class FHeader extends StatelessWidget { + const FHeader._({super.key}); - /// The title, aligned to the left. + /// Creates a header. /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final String? title; - - /// The title, aligned to the left. + /// It is typically used on pages at the root of the navigation stack. + const factory FHeader({ + required Widget title, + FRootHeaderStyle? style, + List actions, + Key? key, + }) = _FRootHeader; + + /// Creates a nested header. /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final Widget? rawTitle; - - /// The actions, aligned to the right. Defaults to an empty list. - final List actions; - - /// Creates a [FHeader]. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - const FHeader({ - this.style, - this.title, - this.rawTitle, - this.actions = const [], - super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); - - @override - Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle; - - final title = switch ((this.title, rawTitle)) { - (final String title, _) => Text(title), - (_, final Widget title) => title, - _ => const Placeholder(), - }; - - return SafeArea( - bottom: false, - child: Padding( - padding: style.padding, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: DefaultTextStyle.merge( - overflow: TextOverflow.fade, - maxLines: 1, - softWrap: false, - style: style.titleTextStyle, - child: title, - ), - ), - Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), - ], - ), - ), - ); - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(DiagnosticsProperty('style', style)) - ..add(StringProperty('title', title)) - ..add(IterableProperty('actions', actions)); - } + /// It is typically used on pages NOT at the root of the navigation stack. + const factory FHeader.nested({ + required Widget title, + FNestedHeaderStyle? style, + List leftActions, + List rightActions, + Key? key, + }) = _FNestedHeader; } /// [FHeader]'s style. final class FHeaderStyle with Diagnosticable { - /// The title's [TextStyle]. - final TextStyle titleTextStyle; - - /// The [FHeaderAction]'s style. - final FHeaderActionStyle actionStyle; + /// The root header style. + final FRootHeaderStyle rootStyle; - /// The spacing between [FHeaderAction]s. - final double actionSpacing; - - /// The padding. - final EdgeInsets padding; + /// The nested header style. + final FNestedHeaderStyle nestedStyle; /// Creates a [FHeaderStyle]. - FHeaderStyle({ - required this.titleTextStyle, - required this.actionStyle, - required this.actionSpacing, - required this.padding, + const FHeaderStyle({ + required this.rootStyle, + required this.nestedStyle, }); - /// Creates a [FHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. + /// Creates a [FRootHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. FHeaderStyle.inherit({ required FColorScheme colorScheme, required FTypography typography, required FStyle style, - }) : titleTextStyle = typography.xl3.copyWith( - color: colorScheme.foreground, - fontWeight: FontWeight.w700, - height: 1, - ), - actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme), - actionSpacing = 10, - padding = style.pagePadding.copyWith(bottom: 15); + }) : rootStyle = FRootHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), + nestedStyle = FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style); /// Returns a copy of this [FHeaderStyle] with the given properties replaced. /// /// ```dart /// final style = FHeaderStyle( - /// titleTextStyle: ..., - /// action: ..., + /// rootStyle: ..., + /// nestedStyle: ..., /// ); /// /// final copy = style.copyWith( - /// action: ..., + /// nestedStyle: ..., /// ); /// - /// print(style.titleTextStyle == copy.titleTextStyle); // true - /// print(style.action == copy.action); // false + /// print(style.rootStyle == copy.rootStyle); // true + /// print(style.nestedStyle == copy.nestedStyle); // false /// ``` - @useResult FHeaderStyle copyWith({ - TextStyle? titleTextStyle, - FHeaderActionStyle? actionStyle, - double? actionSpacing, - EdgeInsets? padding, + FRootHeaderStyle? rootStyle, + FNestedHeaderStyle? nestedStyle, }) => FHeaderStyle( - titleTextStyle: titleTextStyle ?? this.titleTextStyle, - actionStyle: actionStyle ?? this.actionStyle, - actionSpacing: actionSpacing ?? this.actionSpacing, - padding: padding ?? this.padding, + rootStyle: rootStyle ?? this.rootStyle, + nestedStyle: nestedStyle ?? this.nestedStyle, ); @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties - ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) - ..add(DiagnosticsProperty('action', actionStyle)) - ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) - ..add(DiagnosticsProperty('padding', padding)); + ..add(DiagnosticsProperty('rootStyle', rootStyle)) + ..add(DiagnosticsProperty('nestedStyle', nestedStyle)); } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FHeaderStyle && + runtimeType == other.runtimeType && + rootStyle == other.rootStyle && + nestedStyle == other.nestedStyle; + + @override + int get hashCode => rootStyle.hashCode ^ nestedStyle.hashCode; } diff --git a/forui/lib/src/widgets/header/header_action.dart b/forui/lib/src/widgets/header/header_action.dart index 64ebf5e59..15ed8471a 100644 --- a/forui/lib/src/widgets/header/header_action.dart +++ b/forui/lib/src/widgets/header/header_action.dart @@ -29,9 +29,35 @@ class FHeaderAction extends StatelessWidget { super.key, }); + /// Creates a [FHeaderAction] with [FAssets.icons.arrowLeft]. + factory FHeaderAction.back({ + required VoidCallback? onPress, + FHeaderActionStyle? style, + Key? key, + }) => + FHeaderAction( + icon: FAssets.icons.arrowLeft, + onPress: onPress, + style: style, + key: key, + ); + + /// Creates a [FHeaderAction] with [FAssets.icons.x]. + factory FHeaderAction.x({ + required VoidCallback? onPress, + FHeaderActionStyle? style, + Key? key, + }) => + FHeaderAction( + icon: FAssets.icons.x, + onPress: onPress, + style: style, + key: key, + ); + @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle.actionStyle; + final style = FHeaderActionStyle._of(context); final enabled = onPress != null || onLongPress != null; return MouseRegion( @@ -60,27 +86,35 @@ class FHeaderAction extends StatelessWidget { /// [FHeaderAction]'s style. class FHeaderActionStyle with Diagnosticable { + @useResult + static FHeaderActionStyle _of(BuildContext context) => + context.dependOnInheritedWidgetOfExactType<_InheritedActionStyle>()?.style ?? + context.theme.headerStyle.rootStyle.actionStyle; + /// The icon's color when this action is enabled. final Color enabledColor; /// The icon's color when this action is disabled. final Color disabledColor; - /// The icon's size. Defaults to 30. + /// The icon's size. + /// + /// Defaults to: + /// * 30 for [FHeader]. + /// * 25 for [FHeader.nested] final double size; /// Creates a [FHeaderActionStyle]. FHeaderActionStyle({ required this.enabledColor, required this.disabledColor, - this.size = 30, + required this.size, }); /// Creates a [FHeaderActionStyle] that inherits its properties from the given [FColorScheme]. - FHeaderActionStyle.inherit({required FColorScheme colorScheme}) + FHeaderActionStyle.inherit({required FColorScheme colorScheme, required this.size}) : enabledColor = colorScheme.foreground, - disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 30; + disabledColor = colorScheme.foreground.withOpacity(0.5); /// Returns a copy of this [FHeaderActionStyle] with the given properties replaced. /// @@ -116,6 +150,24 @@ class FHeaderActionStyle with Diagnosticable { properties ..add(ColorProperty('enabledColor', enabledColor)) ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)); + ..add(DoubleProperty('size', size)); + } +} + +class _InheritedActionStyle extends InheritedWidget { + final FHeaderActionStyle style; + + const _InheritedActionStyle({ + required this.style, + required super.child, + }); + + @override + bool updateShouldNotify(_InheritedActionStyle oldWidget) => style != oldWidget.style; + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('style', style)); } } diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/header/nested_header.dart similarity index 62% rename from forui/lib/src/widgets/nested_header/nested_header.dart rename to forui/lib/src/widgets/header/nested_header.dart index c4caaa9c3..93d81c196 100644 --- a/forui/lib/src/widgets/nested_header/nested_header.dart +++ b/forui/lib/src/widgets/header/nested_header.dart @@ -1,12 +1,4 @@ -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; - -import 'package:meta/meta.dart'; - -import 'package:forui/forui.dart'; -import 'package:forui/src/foundation/tappable.dart'; - -part 'nested_header_action.dart'; +part of 'header.dart'; /// A nested header. /// @@ -14,27 +6,14 @@ part 'nested_header_action.dart'; /// It is typically used on pages that are not at the root of the navigation stack. /// /// See: -/// * https://forui.dev/docs/nested-header for working examples. +/// * https://forui.dev/docs/header for working examples. /// * [FNestedHeaderStyle] for customizing a header's appearance. -final class FNestedHeader extends StatelessWidget { - /// The style. Defaults to [FThemeData.nestedHeaderStyle]. +final class _FNestedHeader extends FHeader { + /// The style. Defaults to [FThemeData.headerStyle.nestedStyle]. final FNestedHeaderStyle? style; /// The title, aligned to the center. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final String? title; - - /// The title, aligned to the center. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final Widget? rawTitle; + final Widget title; /// The actions, aligned to the left. Defaults to an empty list. final List leftActions; @@ -42,29 +21,18 @@ final class FNestedHeader extends StatelessWidget { /// The actions, aligned to the right. Defaults to an empty list. final List rightActions; - /// Creates a [FNestedHeader]. - /// - /// ## Contract: - /// Throws [AssertionError] if: - /// * [title] and [rawTitle] are both not null. - const FNestedHeader({ + /// Creates a [_FNestedHeader]. + const _FNestedHeader({ + required this.title, this.style, - this.title, - this.rawTitle, this.leftActions = const [], this.rightActions = const [], super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); + }) : super._(); @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.nestedHeaderStyle; - - final title = switch ((this.title, rawTitle)) { - (final String title, _) => Text(title), - (_, final Widget title) => title, - _ => const Placeholder(), - }; + final style = this.style ?? context.theme.headerStyle.nestedStyle; return SafeArea( bottom: false, @@ -72,12 +40,15 @@ final class FNestedHeader extends StatelessWidget { padding: style.padding, child: Stack( children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), - Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), - ], + _InheritedActionStyle( + style: style.actionStyle, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), + ], + ), ), Positioned.fill( child: Align( @@ -101,18 +72,18 @@ final class FNestedHeader extends StatelessWidget { super.debugFillProperties(properties); properties ..add(DiagnosticsProperty('style', style)) - ..add(StringProperty('title', title)) - ..add(DiagnosticsProperty('rawTitle', rawTitle)); + ..add(IterableProperty('leftActions', leftActions)) + ..add(IterableProperty('rightActions', rightActions)); } } -/// [FNestedHeader]'s style. +/// [_FNestedHeader]'s style. final class FNestedHeaderStyle with Diagnosticable { /// The title's [TextStyle]. final TextStyle titleTextStyle; - /// The [FHeaderAction]'s style for [FNestedHeader.leftActions] and [FNestedHeader.rightActions]. - final FNestedHeaderActionStyle actionStyle; + /// The [FHeaderAction]'s style for [_FNestedHeader.leftActions] and [_FNestedHeader.rightActions]. + final FHeaderActionStyle actionStyle; /// The spacing between [FHeaderAction]s. final double actionSpacing; @@ -128,7 +99,7 @@ final class FNestedHeaderStyle with Diagnosticable { required this.padding, }); - /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. + /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. FNestedHeaderStyle.inherit({ required FColorScheme colorScheme, required FTypography typography, @@ -138,7 +109,7 @@ final class FNestedHeaderStyle with Diagnosticable { fontWeight: FontWeight.w600, height: 1, ), - actionStyle = FNestedHeaderActionStyle.inherit(colorScheme: colorScheme), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme, size: 25), actionSpacing = 10, padding = style.pagePadding.copyWith(bottom: 15); @@ -159,7 +130,7 @@ final class FNestedHeaderStyle with Diagnosticable { /// ``` FNestedHeaderStyle copyWith({ TextStyle? titleTextStyle, - FNestedHeaderActionStyle? actionStyle, + FHeaderActionStyle? actionStyle, double? actionSpacing, EdgeInsets? padding, }) => @@ -179,4 +150,17 @@ final class FNestedHeaderStyle with Diagnosticable { ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) ..add(DiagnosticsProperty('padding', padding)); } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FNestedHeaderStyle && + runtimeType == other.runtimeType && + titleTextStyle == other.titleTextStyle && + actionStyle == other.actionStyle && + actionSpacing == other.actionSpacing && + padding == other.padding; + + @override + int get hashCode => titleTextStyle.hashCode ^ actionStyle.hashCode ^ actionSpacing.hashCode ^ padding.hashCode; } diff --git a/forui/lib/src/widgets/header/root_header.dart b/forui/lib/src/widgets/header/root_header.dart new file mode 100644 index 000000000..76ae91489 --- /dev/null +++ b/forui/lib/src/widgets/header/root_header.dart @@ -0,0 +1,156 @@ +part of 'header.dart'; + +/// A root header. +/// +/// A root header contains the page's title and actions. +/// It is typically used on pages at the root of the navigation stack. +/// +/// See: +/// * https://forui.dev/docs/header for working examples. +/// * [FRootHeaderStyle] for customizing a header's appearance. +final class _FRootHeader extends FHeader { + /// The header's style. Defaults to [FThemeData.headerStyle]. + final FRootHeaderStyle? style; + + /// The title, aligned to the left. + final Widget title; + + /// The actions, aligned to the right. Defaults to an empty list. + final List actions; + + /// Creates a [FHeader]. + const _FRootHeader({ + required this.title, + this.style, + this.actions = const [], + super.key, + }) : super._(); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.headerStyle.rootStyle; + + return SafeArea( + bottom: false, + child: Padding( + padding: style.padding, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: DefaultTextStyle.merge( + overflow: TextOverflow.fade, + maxLines: 1, + softWrap: false, + style: style.titleTextStyle, + child: title, + ), + ), + _InheritedActionStyle( + style: style.actionStyle, + child: Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + ), + ], + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(DiagnosticsProperty('title', title)) + ..add(IterableProperty('actions', actions)); + } +} + +/// [_FRootHeader]'s style. +final class FRootHeaderStyle with Diagnosticable { + /// The title's [TextStyle]. + final TextStyle titleTextStyle; + + /// The [FHeaderAction]'s style. + final FHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; + + /// The padding. + final EdgeInsets padding; + + /// Creates a [FRootHeaderStyle]. + FRootHeaderStyle({ + required this.titleTextStyle, + required this.actionStyle, + required this.actionSpacing, + required this.padding, + }); + + /// Creates a [FRootHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. + FRootHeaderStyle.inherit({ + required FColorScheme colorScheme, + required FTypography typography, + required FStyle style, + }) : titleTextStyle = typography.xl3.copyWith( + color: colorScheme.foreground, + fontWeight: FontWeight.w700, + height: 1, + ), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme, size: 30), + actionSpacing = 10, + padding = style.pagePadding.copyWith(bottom: 15); + + /// Returns a copy of this [FRootHeaderStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FHeaderStyle( + /// titleTextStyle: ..., + /// action: ..., + /// ); + /// + /// final copy = style.copyWith( + /// action: ..., + /// ); + /// + /// print(style.titleTextStyle == copy.titleTextStyle); // true + /// print(style.action == copy.action); // false + /// ``` + @useResult + FRootHeaderStyle copyWith({ + TextStyle? titleTextStyle, + FHeaderActionStyle? actionStyle, + double? actionSpacing, + EdgeInsets? padding, + }) => + FRootHeaderStyle( + titleTextStyle: titleTextStyle ?? this.titleTextStyle, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, + padding: padding ?? this.padding, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) + ..add(DiagnosticsProperty('action', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) + ..add(DiagnosticsProperty('padding', padding)); + } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FRootHeaderStyle && + runtimeType == other.runtimeType && + titleTextStyle == other.titleTextStyle && + actionStyle == other.actionStyle && + actionSpacing == other.actionSpacing && + padding == other.padding; + + @override + int get hashCode => titleTextStyle.hashCode ^ actionStyle.hashCode ^ actionSpacing.hashCode ^ padding.hashCode; +} diff --git a/forui/lib/src/widgets/nested_header/nested_header_action.dart b/forui/lib/src/widgets/nested_header/nested_header_action.dart deleted file mode 100644 index 9cdc26772..000000000 --- a/forui/lib/src/widgets/nested_header/nested_header_action.dart +++ /dev/null @@ -1,147 +0,0 @@ -part of 'nested_header.dart'; - -/// A [FNestedHeader] action. -/// -/// If the [onPress] and [onLongPress] callbacks are null, then this action will be disabled, it will not react to touch. -class FNestedHeaderAction extends StatelessWidget { - /// The style. - final FNestedHeaderActionStyle? style; - - /// The icon. - final SvgAsset icon; - - /// A callback for when the button is pressed. - /// - /// The action will be disabled if both [onPress] and [onLongPress] are null. - final VoidCallback? onPress; - - /// A callback for when the button is long pressed. - /// - /// The action will be disabled if both [onPress] and [onLongPress] are null. - final VoidCallback? onLongPress; - - /// Creates a [FNestedHeaderAction] from the given SVG [icon]. - const FNestedHeaderAction({ - required this.icon, - required this.onPress, - this.onLongPress, - this.style, - super.key, - }); - - /// Creates a [FNestedHeaderAction] with [FAssets.icons.arrowLeft]. - factory FNestedHeaderAction.back({ - required VoidCallback? onPress, - FNestedHeaderActionStyle? style, - Key? key, - }) => - FNestedHeaderAction( - icon: FAssets.icons.arrowLeft, - onPress: onPress, - style: style, - key: key, - ); - - /// Creates a [FNestedHeaderAction] with [FAssets.icons.x]. - factory FNestedHeaderAction.x({ - required VoidCallback? onPress, - FNestedHeaderActionStyle? style, - Key? key, - }) => - FNestedHeaderAction( - icon: FAssets.icons.x, - onPress: onPress, - style: style, - key: key, - ); - - @override - Widget build(BuildContext context) { - final style = this.style ?? context.theme.nestedHeaderStyle.actionStyle; - final enabled = onPress != null || onLongPress != null; - - return MouseRegion( - cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, - child: FTappable( - onTap: onPress, - onLongPress: onLongPress, - child: icon( - height: style.size, - colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), - ), - ), - ); - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(DiagnosticsProperty('style', style)) - ..add(DiagnosticsProperty('icon', icon)) - ..add(DiagnosticsProperty('onPress', onPress)) - ..add(DiagnosticsProperty('onLongPress', onLongPress)); - } -} - -/// [FNestedHeaderAction]'s style. -class FNestedHeaderActionStyle with Diagnosticable { - /// The icon's color when this action is enabled. - final Color enabledColor; - - /// The icon's color when this action is disabled. - final Color disabledColor; - - /// The icon's size. Defaults to 20. - final double size; - - /// Creates a [FNestedHeaderActionStyle]. - FNestedHeaderActionStyle({ - required this.enabledColor, - required this.disabledColor, - this.size = 25, - }); - - /// Creates a [FNestedHeaderActionStyle] that inherits its properties from the given [FColorScheme]. - FNestedHeaderActionStyle.inherit({required FColorScheme colorScheme}) - : enabledColor = colorScheme.foreground, - disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 25; - - /// Returns a copy of this [FNestedHeaderActionStyle] with the given properties replaced. - /// - /// ```dart - /// final style = FNestedHeaderActionStyle( - /// enabledColor: Colors.black, - /// disabledColor: Colors.white, - /// ); - /// - /// final copy = style.copyWith( - /// disabledColor: Colors.blue, - /// ); - /// - /// print(copy.enabledColor); // black - /// print(copy.disabledColor); // blue - /// ``` - @useResult - FNestedHeaderActionStyle copyWith({ - Color? enabledColor, - Color? disabledColor, - double? size, - EdgeInsets? padding, - }) => - FNestedHeaderActionStyle( - enabledColor: enabledColor ?? this.enabledColor, - disabledColor: disabledColor ?? this.disabledColor, - size: size ?? this.size, - ); - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(ColorProperty('enabledColor', enabledColor)) - ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)); - } -} diff --git a/forui/test/golden/header/nested/zinc-dark-header.png b/forui/test/golden/header/nested/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5ff59811a3fdbd2bae53997b82ba0eda2e4007 GIT binary patch literal 29211 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 U4eAJSL9SX`Lr*>D^yS)j`M|2JJN?kxwl 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 diff --git a/forui/test/golden/header/root/zinc-dark-header.png b/forui/test/golden/header/root/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..51bd97489a9a1bede8d0a17220f952a9c74f23c9 GIT binary patch literal 55550 zcmeGEWmuJK*98otf&!uuUDDm%-Sy73 z@9lHnzrOGH`yO%}o4r)H)^(ldJm(y9j4{`zx8kpEq2EJCLPEMF{8~T?2?UH>=(*6@<_}>*PsaO0+Ii1AI@CRfoeqk9@_;N(m@j*g*h$JlVLdGs`ZREwRnuka= z&l`iHfTQZT@@lKWp)KS^h@Lzp?Q55dF<9|AxZf zl>4_>{2K~?Yv^BS@oy;nMO=S@=)a-x7efE-EdC9JzYW*lKJ-s0{B6(wvKIfw!e3(H z|E0u2jo#wLi}kEK?6)tmd@Fk%lYVY~6Y)q7U2^f~^%cw&rAQ-hO3&B5=_2cLCFpq8 z!MDHSn>1MG8w&~ckoF*ZyN*zhzC=}NzF$Xic((k-;AZ%O2U;{WA5|1Qg)%JlGWwES5L zq~O1Y=+9dC{LL+Ymg4!}l>28XkjVa4qCaba`L{s-Sqj&`(Bdz&_%|5-*3kco@Bja5 zC=*T0(?4DSBqV{qp!82d`3p+_c6R^9!e8|Dmk0Pa6#l}D|F01{OAezvNUr1Sd&|AE zp7_qp2_IJa*d33y6x7v85}gi?OF!(d*zI=k`4<%xttX%&pL>w^Av$HLcj~BxwpDVk@>Mg@D;`!-e(BZ^so87@MiSz2yI}f-Ca;r{a zEw*PGo~T?$%44bAZrp4dF61L|I9NN*t?pXf-QFm7d4NxUX4I}%_(Tn1)#LV$ROjXE zjN@QQ?Om2nY>5*8uFV|nzij;sz8bwroLS}MT z`D;$K^>Xg)+OSn@1v-+(;>lcS=IpOeR3s}S$|Yt2(%%y%<^NdE+*VN&4>8BY_T1UD=RCM zbXSig26Hd9iFrO)e`R5)+$-F!z2P$YO%O@h+|bZ)ZM4LE+Ujs)oCv;R^9hN#7>7 zVrO-G%!==Xv*4tdP2=1l&St)KvZ=LIq>KW|mhj5JZR`2grrEic(3^?nE|(VyYPGCJbJkCm^wo z{P^+O13u^GzGBV#M!TcW*-uD4F!@p8n^Z^|vpiL}$famV45KDlvDtWP-Wv$Ce22qM ztpRq*G}U#6Q;Nk@eCpYp*Ig&C-+Wymkl_NBfddO-fqV|F_~Q7+aoQ?7P)`uA`C z`Rj*#iXss|ZB`xoAAF8)m)*M@9~+CB=@aDT?eET%@45`hMS94{h*{}yD7UXNu7d6)kO?vodizv+DP_4SI3 z#Frk$XHd%+YwRy#rj$s)c=@uQ{!m(4nn|-xAiRm(1NFPj>cCQe=J(chv$0aQr^Xj} z56R&7f7bo_g}l4i^)VnIpw*O0JkBF54ChKx4}*47pj&lyb?f>wvoRmhNPc7=AIv25 z2y}(*?d^BAwkIq5454MdqAMp`)7M0!I2$G>NlZtOTgDq}Yp;};PfAJ)oV|OO_UQ1u z*z~5HbD7I!6=xl(hXIF34VedKQbjqGe3WY7UdBor4-_qTvM(NK&btOW0E`K6x}YXA~l%&DkxgJ9|d;&E>54) zwC(2Psv6nI>ER}>8T>xxqYy`K$D`M`?!vkg{=4q01Ev~AhYKAa%iEklp*vFR3 z@rZF}XGg{iP7-8p@hfETX#d%8k!P?{up#`;&KL6QIuus8PUj09v2io~dWb;FQRVXF zYm18`9xF>$?uUq@TYF|{X*p*`j`is`{NvG)jJ&jr2d1eYngU!>#&T_lDURKOKjoQJ zI*#g3YwX8}z4O3a508oQwU}*$TyU_)@mgH`Kb!i`U3}BgPInEDi16aOINHq|)P;Mv zxcvIkJ2)bu@m_}9?(XhOh`ewS9WIL*WM1d9G_SOy{q5OT@IF%0wq(Jm>!T&!iHV8# zlE^#^XqDVQ!y~tz9IOYGzc;TR9#)(#hI^4t6>Io-<4zwY;Xg}qFkGNZdyma5Yp=%@ zVyPyC!Uc^O7x7PsyOm|)Aw@ZcDB<4 zpP9PjAQsgE9^1qF)fRJ3Ss8~&IL&@PAJP$2VEIdCW@h#v!Uqp-U%Qqs6<%e)!SCFk zE=_dh$`vG6s0Oo*x6ZREU+rD{C-+DyIy>_^I-N7=w(5w*u-?_O*hay{#>Vc>R(>xa zB$Up<|DVNVHW_*cwS;7KAluW^(>{MxM^8^{u32)Z`qDKfnf(9u_BQOT=R((=Mu^z0 z-L6m#9i1~-=E&EN_-$>UL9_)y_1nh(fhTD@Tw6CsOW*Q3MKsdO+xrH@?ex-8nq^O% z42__c7FkkK5+)&`=iZ)mDm!}h4Z+Fx)0Q5BqnQ1KL`2%>CpJsJzn<&ol5kk!z#2=I z(mf)L;r}NfqB>&PNHXQJ8`&m*2-JJsnp$5E`0;~v>?bZFXU?4L6UE#PMl8C3aU8cj z7Cn7jpP$VnX+T=Y#*Npa-OEY>{1`i@Z2Pa!pLKrl+UT?%cT}lcv#i=5Q6= zxk+4H{GFvGe_OCd%XJ=omFYF3|fJkx%|fMF0Kv`cqBORXO2DIy>PhDHJi!OwrBF8Hz5%Ayr?6 zt8+V_5s;F8J=&W7D76mPvfJ2@jsE{}tyd^nA-~$%Zmy5IR1&LLh{v&~TNg;COQrly zlO*p;o4%8;&`u$s2PdyTQ{Ed=`o=`1AFX^284HWFX1Vtrk{5K(o{tur;v7s?IXTQN zERZrYhveq%tI5gX^*VSM-20zG`zKaWsqdy;jo1;1qz|}#KTNcW)Ae;0`M)E2q}h{0DQ@$;rsB20h>rQc{XZt)C4qDtfxom;TY!H6|}V zzZRg_XGl~x?mU=k42W%p!*8+%fTgaf=|)1r14d@%I;cQU(p^hS?H*B4y@VxrR{S$M zI=U8q6oQbEjqR149dcb=-PXyzac!furKNjyH3>I2_viTdfW@vva$epm5(xt2Pu7z) zW<$CN2?%P2htXs+WIX-+SX#rVKSo6nj8!_|Lkt;ka;FT9jMTNXpallre)sO3Yj`+r zPfyR*!MbvVQ>;5Y%j|HW!ng1G2AncUNca6%>j91w8R4qDB_berNJ@Hzi7DUb)2Ht8 zU0;4&8X4E1pgVA`HMO+dmzE4XyuHbv9Ym`+Ro#3+hnFmZ%Vy``kPNA-xwBJ9K;RL; zG5>Gh9=-8yqJ;$1m!){E$av7Ju#kn<@yNBWPlnrm2Pcxjd!=vD*VB`O_Q_?}obL&EWIz^3{TcS;R8%+aknsMB=X#HPO7x78(e?Xxs%&n~Q%h5;yhlt-ytOgT^{b(QoVRK!ky(Nd`&`T191j0` zxPFpKnPpyav5=6^buBHeyF^5=>I&JDxqi|i3j@A1@C0Y)=hO4^X!#2MK0dFxKkT7G zTn$-mDh`cAAhM2%3ULB&KrI|x>lI=pqUBNEm#m_R zIrdj-dJ0(M;#H@XmQbmvUJVTm;Y5==`$aN@V&dYaV7pMQBxKUI;O1f6x}|AgfSRv> zkuKv4k2yC#-!divcY|^5+O;yLjGt>?;Q0YHr{!nJ@4#_LQm?LJ|FHMCuAUsn3^2aa z>qp1vk>sqbtR4_dkOABEOFb~3yhKwFpe-^Rzn3f&;89qJZDP_|)1HNcaZ7hI2kR4Z zBCk^&APPhR}7axonQDaGMpY)FW^@nDYTe5)+9wD)$S__fc+E1XX8pk0+U8V#qF z|Dwn;U;HG)cyPnV=kbL{DeO7{&j*~J?>D{BacP>@saROB0j9FQn|kPc>6Fme77fW| zrhM}xS+P(r?d@0hvDxWJW)_yTfKD&NX=DKyeA|=G;^5%0+h4&&oc-A*2`$*q3f?UZNEm>G zXt*yQi?>B&`#R0^)YKrcnW=b3E2ig8WXhytNyot*q27__mK;fHU{gx8TUt>fymsTZ zKJub8mX^31PBg0CsUga;FDR*lhFxo=q)~PobwTJlgH5{`~oK z4J)Pk%0TwVM3)4Q)^Jr#W991$3k&F7xfEDvY87^FH}UDU07o)+?J8KW4&YiXw9_B( z3{)=~^=D9@IXLew+=^i}Z0xJ%g}=b{x_uu*U0og4o7!gVah#vX>(@0APn7e`#yPaM}nC zhcYA-^uQBZx+JL-UlG~$#}#_7g@tQtKYHhx3|m4y*~RLDw__(<%@@#W;@$ylK`yuoV7Y?S~NqlgUZ+L1u?sl-H$)xvOo;==2oU7JJ zch5!1ovd__U)YcT`jyng#6-i)>^4$j13a$$HQ4=O2=-S8 z<&8!ebaiwdGBcy6r>8eJzlNIK=%ViCZY*nMbyESdD+IZ2YnU4(y!Q5XnR`tTaq*ls z{D9gmmZf~^)^Aq72Z%QEE>H;dZbX_4^=?SyNaj4`ldI9OnTp-5TolaQwI^!r_3la@XN*`|USe)!FUtUa3OgsRnDzLlI5yshl z3hiQCoQlkYlFzxh3=5s{9~%RRwnG#XAW<&&>T7f*RK}gstdvYHXhDe5l$>sqyRqAC z{npP_REW~PII~|GFE44uH~ohnu$XnOtM|SWJ~B~PN6ez%DFD5`EN?n34lZs0i3{yXi-mPEY@C{!I+Uk*f27zn)6(TR6j6Yf z+ieV?{T~X`1pV-$n6&Q!#)+n~_6>#13#a!XJ9|{5b~5L|4SOl6iL|iKat0S?8fDmu zo=XbfDx1i3eHyg+(|4U`JD?CoGSDVeJQjx?x=TpdV9c$RPe3k&(bOEw zSJ&MgY~=#|7j)YHZfWyhVjyeGpN5XHlr^u zE!Ehb5loZ*PA?K!Je56JQNayt#cdHp{v^%<2c)@fBhoU$+@Mu85I_z0Zzf&92Jhv z^ZA8^nZ9&s0xnzb#a0%+OKvpj@8Z+Mp&3VF93ssuC)IOv!PuD|kKqCvvf6wKgXx4m zRL_q!HP1WG(^i0|g$MrBerU*>V|QZPaTCX}sw1B325^+G;6T~09>S4?(8a`~Q%D;S z@f~56rwV?3A^JRq-2&@Bj2nbTDFT!(Bafrp-_7mMo@ z>U)>_?9kt+Q+)Al&|>H0tZQ#ys}{(vE3Nj={c?G^nY*O&<6ezv%a)o-BErwwnl&jok0e0NApWUp!d;u_0WHwR;mh1(zmVQo~JM(P@gE=2#$jJmaM&t*B!q_1qpyujh;^X^m zR+H4WA>V!b`4gZ~hq0>rUN`P+OqXv~&8DdHLROf*I4?KoPAZ#P6}#N3KlJg(cxA9e z!D>3Vjt z!UwdD#?h8$93>xMZU`j8v-87y3%svud#`VAcSVKfy1IXV38&f5`_AUGlym}Sry*2bfj%$0fmnGc=!uO`0wu`(+_0Cl31j?`ISShaq= zTbK<=9U2{-t#LaqeZP5Iso11t^_J+DslsZ>WG@IKB%tjAX=F>~6DjKQ^B9||FE2h) zNhJLS!gB&~_3C*V*)c}_P7`jI1XskSC{H>@aUaVA%De&FrNw#R*Pvw$bgY(E0;2Us zFS$J3dB0Z45Yc4|wx zucaW zS5PJgm%5XID+!!$i!_|a665b}a`G~`qgu7_gcay3XjqBKUtKgC@8G`8Q~CwjWNS_s z2eN5u1jkL&*i2x;WK|rVA6RzJC}A|W9GQn%Ir)v#S*VWGv$uTNSf zd=@j`q*~;?yu6l1OL9e84-XFb zp$vwJa96_KLRU{ct8e2Tl8Z`xMPx#er<+DJg03-`-1{y8!DEA~A<*kZJUP7yAWQZq zUFL5SQ&S7ThPAVZJq;ilyi3fTXgG|m8~#KYk5-PZDf!hMyV$;k41jj*)=Lk~@fBWr z-wuvFVg#HEc`9xYEmW=Y!%S=V+w5U;8{u3vo_y0$JT(_vH#axCv!lBZo%XARpP?u0 zOyu)}T$*8O`NMRy*zSN%&X}ru9|aNg>mx2q#sgw%R6!#}#@@ewiz+>(-dJ9CTUvSz ziTbc&0`({)Kc5MjBp>K$lB^cR-2;-%#>?N=Lox1#qws=CI~%aKUOR&7F_0ze^1Qh? zwXl$}%qVj(sO|!Sgv#a55RQd$>pe!9w`Xegi>AlmX_+n&X!L#>9eq~&?#X0 zr=_7Dot&U^Mldh5M`!O8s1`s)g&eP_hZUhf*Z2v$321r=wMN=Cs|MeBg#sNWb0_C? z^GV)PCoYT^FJ6e@-U}ne`hv)NtzCwBD7xmH1*gUX<_VXs*sKR%)( zWcDf&J8I1No zpF%)Tk>BT_JAv!En&5^&q)DK*_fMg8p?tFEV~S8B6*eN&>;sRcNx;Nak` zy**6pxFq8H_qUh2ud$kqy*Aax`>x$|d#KWZYLiV1u)90o<=F{kEqo79cRr3D%tx2a zRlEQ7t4Z5Hm<+VJHIpv6cXgP1M@H^xYO>kK;}k;s0TGOeiCLqZ*or{I1-dSpopHlP zB;}93Xa|2F1fbHBa&u{-GWOy5>B$Kh>t4u1r_2oft_P*I>lt4@$*VK7vi^c3mv7L` zUlc$c22`pB#4Ac=@D2sYePg8-_f>y7W)?H)azK(iJ3C{&?N)g3}VEHy+;dipz)d0W)BiG3nRH@KB zz{u}TZKE{UJb<~PYhG-HLYQaNFH%Gy?k7Oj9`h6%8lUbA9n+mMzDpH3^=%LMwJrxH0V()8yj7N({_cT~3y-3q;0g~yxNXXNzs z;^|doK7M}nsc&N60sfcb`v`d^Nf>*$tsbx8q>#*GiT9i*luD@$B1BR$7$~5hLX9QG z#Q@m{fjpNF@V|ppeaRas{Yh4LZ*BORe6AWEcS|NaP!FJuV^WI8eL2W?bKfb0h84$z z-?;g6ZQ}U5Xs-9SKOC%)HY<3Jjb{SpoOciW$^hIFVr^eEF+!98d}Gvj?$YUWd~`Im zF+S=}f{jB6J2Q~0{=J)E?-nGjwt)dWARJvmqxv!{17Qe_D5f=rAS8V+my2U%?a&=W zQ30%>mWh$(2VHKCT4mM%g_|!TpuBFa`n~xg6A26T1=i*sQ6ez@96-2cZ~G#FiU1`z zaNr4*Vh<#rI1Ve3WZYv=0&O?O0!f^Y)Yi2R;b~ubp@y13s)0I?+7*$;`+frhfbdOb zH3X~jRkhrG{e2)bet=R~qPqzCimb*=&rV!6tj9=o$tz z0s8o=n zK7P^0U74&V0i5tPBHwzrCA6uZS(p-*(qvdlT=aJst^92`u>CQQyrB0)-O;fX7HlHh z=d@b*G1XR%bB{@j9Vm(9hZc#(6SURvdbI`k33-p4U46c)$7JjkjcyYUKw)Sb+g+0?bbW zsJ9b>KJ4R2JlZv^b=P=titpEOsY+D>T;IgRgnOX8L2v4g3@lY}TcJG()D&sRs8x^HDgSBcnik$xAODnp(Lwc;D$m2Y}_oMynK*rGz$ zqN+lp0fa*9c@<7WQ8G2-Rw7VA`|bGmH(j%rw~ZkwBl_6vbzUs!wq8>z;=28 zUI@Bt!3Kb|D8g+}-kMG-mq}ZwzN14nTRR8dRjKKkD@2CzS*oQZcud&scS=+1-;O{Q zWZn5zMCa`6Y?S+0zSu-DyYx!7FHke+YEG|Y0m=4c?5>CCw1%~8?dIaQv zBn1#3lLJkHO!6HFF-Atl8eiNtWRlF!!NGSI=f%YnxN{Ctlys=otGI7J;Qq4Ah>Cu2 zll~KnBWQI`zCV(RQKtP3xT1)X6|}cmkaWaM_qSDq)E6Jf16r{Q$CHIBB5xeRRN8~c z&LohXQP49uoiEQ(-*|6Fg9dAP!qx3r#yNnl&?*ygvSULJg}xuS4?wb()g*%3+lpvy z5dJ(L_GIiP?qOs5!L!hWA3gF*P9_I#%u}hz$l@p8-p05CV*9!hctXqL-Q2Dqc-5Yi zr>D=6Nd>qJyZSl19YBF|gMyt}f7A+vvG1f$15_cD)lsR>KzmJ1#*1ym9VZ%4cA zdcFx8(RP=k;Vjhi9Wa0?Qg(S7O2y>(g>o3a_`I#|Z(EG;Zv^rp6E=~gT)8}zYc#L!m{-a6PHSvw5vDcgkDxbo1MxCLH!EHGdzvn> zwzf8KtWu}UA0XLi=iI|3=2p+XqxCr1Vpb@MS+^jy{&DvYi)zp;*=^TQt)vJ#vT=`Q zgZTQM$&o_an##fB#Pv@xrF?TQ8QdA%LJdKNy{So%m||{!#C970_fR3lJ=ntaef_BJ z>r0b6I7_W6_l;5L?88$^>5UasR9c<0-`1+>ITp;E?bz_5prF*YXN8TKhJ=LV1G1c( zn_~*gJabZr4tcvvV3+>*`cY`Lu1+*vo&)4K#mPa}2xe zmyh{?Zik@1_?*f?8wgnAYkg;J-PgQhbm9TKQs{E2RwQ@XgA8yLfsA`Kn}HE|o&7=T zOcat><7d*3Pw#t)0ejxly31zDXuC#`T}iD4={lOFXqH_;ikLl5J(H#ir~jvoaSsiCjzt;BXolkCjeOL5$a2Lc!P2xz&-+A zM*{P6!#ZdTF$oBo%M!tQ0l;VmEE%QmrpfB+>w`l=>dGd8+R0X?7mzpHeX|iF@(4>4 zC=;a?vy?*qM-TQ_**xM^Ie;j`XVGi_)e=gz zz0yxBetw7GccQdIQiWbeOcH31;-Fn&0n>oE>6)|S+9)1}+r{RSZjkdx85n}3CqZZh z$gt3NgZhh+tOU>#5E(&{vyLJn=wxJM??9FTe2tBUhSuECF+a8m;Jw9(@7c46U4l6) z#|?b`<(_%va4a@Mvo~DG*RQ8pcV?O|GM{iBmRc>|&dxDWN|&OD&t6H+J;fk(WP+Rw zo*s@v?EB})2y;k*ZX1)+2}YKB^#g>AekAF<rQPH>PY6P>e ztnbXMaZV;6D9gz%*jlJ#+snOF;P3-o-oHlSl zXYRHKrgw^aIXpJjk3#gKZl&KCgy@sWRS+pr(TxHCwzu2cdmQgBPH#<zcn6f-uTwv7B6EI|a7JtHBq$_AN=JtQ3fn6wDJ*Ut9?8lNHmo2NfU&b8AUUJT z>2#|=K-JEUy)oz#jm>=GWNq^&fN_WsJg7O1hSdn={$zi3YyABf)$QXSx^0vSii#F1 zFKNPOj<#o`xb10XW@q^vy1@AbXl6R@^H7$eG(rP%IHXBz&)meoz+gY$$WgC$gPnQ! zPjPW3 z0LE%YMwEX4!UnE5h@=<1u~t!0QFRkl+~&A7GCT=6$|VuKi`Hgl^noONZm`kNvrlIp zHfS+H|LBwGe6On_%oL0x^J-LU ztr#0q`IeGG3K`Iq5i6YT zd9z*6tjac5+jvK?c1629xIYvy(+e(-D~k zq9agM5IMC#cZZ=_TRTy+#&vTFbXWbZ1kD)a+ZY%gVSY}vivqfd)?_s_P9W@h;XR4b24yeqAQQCnD(2jFD{R{;orQ|-|#VA;MSCMG8HAXAmA-j`63 z5EbQvhD|vQ`>S5b21|9e*K4PSo&N|64QhT6G}LD+r`GS@)gH=Yw1XDjCBMXjlP=>WZUgDHWk#y?XT>WY63Q z2RJ+Vrp(MZE)lI*c(%$5`k@7Tx`{v=J$@!k^q756N7#s3jD~b2#dNUZd96NrW_NOv z2I%1EB{y%YxstyMM6k`N#@C>Wh19Dxm@|%E(qB}@$s2K#?i*>n=v)Z@lWezW(*Qu_g=gETm=#nmKH}_cT3A;1uH+?!X&Oh zLRjQi7%dfVd?NcE0~LEX61>$Z zA-TRlG*XmWQ+pU9Bo(G2^2B8AV8$bb37yHR^E5@4sZ6wZhHSOU>kl40FmkzC#P5j? z@L$IaVP%09t3|AehK85-0YLp15TUzvpj8mCZ*eUgI1+)M^82q5Fdjc-%!_EB%S-~n zG6?LT52>iU?YZR#Tk{GFwavO{XlU*sFr>FPzVo>aGr&wwhrqKZ9Y)N?8_YD~$fkQ@mJ56eLhm1=mMx>@sDJ!Cr#^uzq;wl55B9-~g1& zRl5e-x!3L+T7CWbP6jB!&5m(=E*Dob1kUJfUN5XzO^KL@?NO z+1@VJm!n!TG?&THkx1fy@9EX3TypTUcW1}WJR*uw4rKt3D99!+lZD zc+&rd?Zt!5uheB@5|)Zx2IUxLgoSiozQouYr+=l+@&qhL!r!Bbg0nDGOQ&IXIH7pq5FW!?X&7TC*%vVx;!Tt9|C;+Jf+Q+K!K${An3C20r01B$mL{TwXPOm=xYlP(`VT)%qFnD$I{XL&I(Tsb6_ z9SSX28zPjwE<}OLN>i^U{eJ!q+_dec$It8-PeZ>M8j?tsm^p=K*aOLxEd9MRj`tOC z$~9vV4S<2)f^{KUqQf{OF_A>N9Kc=p&)TyTD7KM?lWflxs{EOPa}9eb#n{>)e|O51 zX@ZC>YbM=1KK`*Rn+6&-pbMPQOZ)8pqB5(M?zq3ENDPGE_q`}s*P}gZzulr_04-&klVw);Bz(?utX`C``452SjVuo+ zFE5Wtg2@an;40jg2XjfRqNl+bV!hHAoxTp6X~V>Xw#TnI72q_};(-kW*6PA(|NY zU3g!2gp>`gDMo<4F!+IUpVL|(Td4?K^%%6YM4b}6*qnH14S+hpyV|}E1}g8)_-fg* zaUcU=)+54RMb>7c-Ig91X|!asrayB~#w-#hB)+~JPE^?2dgl!-8e~z(G8o_Iac4GglzV5OZeWYkw&wMmJGm|Iyzc1DFAgojGc;S=9==PaJZBp&gFRt*!h) z4_YUOe0+SSDk_$tK*(m`Jk@Jgfaydx`wH-6J|1iA=?Ph0d=mV6jvgh=A8b=vA6#i3 z`-~Qp3NV4`PbND<#nWr1J&Gwb{X^?QhjLU`I_?u`AbWN?;y6T8M7*EBz{S+1`PG`V zX7BZ%m?e+2+7ykfB!1NX#|ywO^Yefn2Oq!5@wSlHJbP9Q zhD@-Yu_=|@uKWG9p3&ieI7_wsHl&?eC}nrSvo$xT<9HSo2x;tWr!7}(R`?NCs{QTf zWj7vKTjT_S7vEyEO=Lk!cw(V?kmEt+R`WVRh``~|UX|t5>h-p!m zC`05WMB~7H0BK=+G0{&}oN{@z^JsyBimHBMLT$bn*c>n;*TI>MZd$A_wOCu^U{I^50fIbwR3c`N1@xZQ zA7_$fmh)5K07|D}Q32`|^qQ+Lnx=eh2(JJob?wGMvXeu9B=_;*WYH1)CpL>UjR4~G z^nvz?9`d2-Qor=*USo!tu)ExZZN{8ZWk05;wFqbQ}gj5MrfKO_yY9r z6`CkEwB-j9vcxREw?5f31gAy_MON1tm`kI$6^pt?GGq<;)eN#uQIIN}&+i!zoON&? z>@BmrTkb&#AC=9atL9|x$Zm-U3;Shlih%@%q*o>;7*IxbRWeMQs`8=efYoFKSY$FeTEt4>H-UB^t6mx}} zdn>EyD7y0a42*cRhYAQn;0LCMbV4HrycC2N60qE*t)>X~PuoxdP-6+{@ic81IAHs1 zl4)cIfVTUIJ<^ZR={-Q-@Pyx&ArNFRWyMq?PpLUQ&UH{-4b~-X5Xhr54esuLg*xo+ z?jALo`t2J6!pAj|FwHoKuZJ@kVmb7?)_Vs%d=j9{VNQ>&4)psx>oXFl+O=a5tKUu` zV{*vK9v$nOE!O%1yxm()KAsFF1FHd3i77A*{QUHF!^6={KCgwlzrJ)(i}-@sTIZP| zZ`{$^s#T>J8+D|TGOuuR{Aa^OUNAG?tAVZ<=unu7PJ4j&ljU`R2`;J80uu^Z;6$QF zE#tj`bV_J#34Z>fpI*@b$|n8d9smFfVB!`IS|7=*w84x(C(p&%?xTTs02A(lv6rRf z2D&pZ-91)=8bcME-yqB^-BvAIkYxk9IfbSJ?^X1!m1jah*Yb%g<+$b{lF_o6}@(uk;(3n)*Q~3zZOIliWoU($RUuKv)O*KXAt; z66nQ7{a8&wna*ER>F6b7@%oERiBfGrKAqEb{PIO6CxfC~Rdt?kx}_iJwdfH+0f8i- zVrfcd3o3*F0DQkQ6sVxvsLC1AIsNR8sb<|x_{2MNim^$sx5aq_@LM0t*Ez78HOW*7i6n~DOYM9@F zelNtZg=hechc|zN9GYc>4RLWB+JZXA-r)I7bzE2kEj8Qc@n(}%9qE;TpkOEnJaZ&k zkRU-XBvWHKP%8se^%{>!#8pC}5QATDP(Y4Gc) z16+_2qBkL-Nc0TEF$;8}x_A7~dB4!6{*odaNs1~CBv&`QfWCS(f{Ao&Ga z>L<|X->>+EiG|gg-s(<9M=^cnAvC@K`{yXUV8jY0jZ-bT@)hWo7Awf`@D|!b^&Q__ z2Ll8`6rgs?79;F8TgWt8?$LEW=!yh(iRBXGCiL*&%c>h3#4ptA_ywV|HP?cTPzPXc z^96u23dTqc$byI|vhklbz+;ocFDT~Ugsou{JKu+=@q|utMJF(ZHt$^-_IN`4wt&6=bgx4yk~*gjkSbQ85-+F z-&}x$`evE!RjL1pkLLLgenAv<7sre0!0{=}+h%-1AgA}2sFMfx_50iq8SVHX}bnt#A1ndbI_^Hq%e`xn%-YMBqH&Sa7 zSbs8T?K~wCdDA(V_klyiasRleIaT9!?+fdu@TKnH3dIlgZ{ln$yqqAh-EKy-d zd7&8Q8Rsdyz^Ke9VV%eOG~FM%)(QGK1zNEzg<7ZMmpL?YSZvLrsE7Jk491EKvJ_!+Qniru&B> zHjtkv01*Hm3BlZ4j!Kz3G^x8GaYA7)o5(a36~gq4B11##M<;8c)kAqxqxI&hPk>XS zG6vXD+SzZ0s)HOABx=Q5al00ZDZ>7t>`ls^=%2X;<^o@hL2| zgc?MnDZonO(hTi#@?{15?IB)4GcWrMpI}=bj2?M z)OWV^amBcoR+J780N#Uxg99*O5Q3}53t|(v8z}SpLqBb3WzR7&@B4Y^8ns4L96|4A z&ZJWMPSUK!kRF}(bw2p$Xv{6Z=}r9c`YkP^)#>S+d}KQMezHK~>CKjOA~rKd3JtX2 zthcX0*nuqSzTZ`n=p5t2qA!ld=>@ixf6WP+?NQy(0NP!gae(RY6UbNH1)iLUj}L$@ z4It~SDfpNRn12G12+h)e;1TD0S_I7OC1oruPDQ5s`tJCQ4;;Ti!CT%713I&_A66k? zxdq4)dE*eg3wh*fcF5ImBTsXg!5-u$mtExsoGE z>ZB*ZP`#kVvV4E;=0rYUUcGF()DCv6qP*{KAz|U2YJAh&tPXFmFdK0q7a0!bAU=d5 z+;H+cYxhlD+Jfv?UGE92fs9MFO%W~BU8Vil70VtGv8Jo~G{DA?jel;s0C_YLibM3M zT*kK}0+?*U(9umVS@{g-!_mnp-(*-9(*ZZ zW~uweyQaO4e~8ALf-urZ(!yfIzAzq^*`e zE?0oErixe^2A=H#k{|PCCT$ftMpOPqd2;t^BANpKBzsp!hal)bPvxjve*eZqI2pjE zw|!<$hVY36v!hDlM*hN~7iGhxqNR-;yg)B2FMN`Xymk7BFOq^OE`B()xl}3@{VSa# zFLi8OJMX8Z<(8^D&B=cK$DFon?Wa%OX)R}KbreMe@-^8Tlvo|k-N*{1^qz`6u z4%peE14`t(*CPdp-e7--9uDyr)p{_=c5%dSWqk5tunVz<-MyhsEmAfz;=MK}rCpfg zU;PFv1pC3b2mY{M2zN60B;t=9diwvd0yUU2{0D=8j{TG5fWEa|?7%)zhNeFgnNCnt zGt%S6(O!1X7jBAW2a2<=iXvpFqN22^wr3Jp`8+99cz#6}FQo<(S5mVy$&l&U%B#cR z!yCqmK}!%ZeGlqxib29Xht~aFnV4v?lbrL-G|j^a4ELV0OO_@@qGIo@u2$EyZKECYz?$Ob)2-n3|Z_`3oE(c+Xq+SbsGI#kgqoz-$Cm&5yz4 zE`8RIDFVTI_<*-U0_`2LoZQdyAHnpKVFR`!P^GA1lzT~j!Z-s+H7YqJtct1v_)9>E z_@0mSVXGBIpG33P2`^ovQB}P$LQsqQ;Ka(=|=^VwlamI-(qMWBoQ@uEeD8bMa zwnNe!$QlNC{xP*4a|}$lOvVEyZ@gbvV~!?OcsvG^e@mFEiCO374e4m+HMZQ4&`|hH z8kerb-IBh0q$lqCXwx&Gelx27_?B8FZFmZKdls}EC?PjhREHxwr#?b83?%08S1MY0 z2=3tId`zjh#jfGV8@j5Ef_PseWbKbbDt*HXaF4x1$O|yl(5Nvc zRyip7f7<&Ft|+r@TePJO7#js6v~30fm83+)fPjL80wgOUl5?g&G0;j<5fDi#BB6+q zV_`r96eNcth)67Q&UNQ!+vmLZ58ike#yI0NHL&Wdz4uCU%{4b@n`2w=yZ!C$?UCsq zXbP$|yj%5+!(gP1buIY9=k_;e%SEO<*^J5mEZg4YJc8$$m@L}fkUDnH`b>~Grim){~M^WW$4T&BW%OUMQMx67Vf z5w-eKR#x2?{pT%@4NUjXND1#=b;zTl^E?vxAuof+GvG1?oEioI-f&+GUa^X*7=Z}8SN#G z=_L%Q#b^BB-pvrQvrF{#>s-!K@)LbSZ$GMpuI_Z7tE;PjOVwtlh1r02QFkdM%J1lF zpg}k)l$bYkf2gxC{W3rjj8?CpGeE|+Zp(F@d84P#`i?nlHS4M5MB3*mp9>}?8OFzh zgP&dYS0}}nt(A#V@?lih5P$Sa#$#F5_GpeJ-n|MDc5 zEW|WD=+Io#iR!1*bg@xmA6B)M?MAIM)};Fa6K-7@ouvUCJnMN&v{F)1@`_%}HuRSq zS-*aMU$T|VD<5Cq?>y_tD7eLIDD_Mn96AkX=R!R}@DERL1woG!JZ3NR1`Dd=XQnHw zPyxR0WbJHVxlqa(?9qdqTD&72hRb@Q5 zBO`Tcn8pmIjgF`+V!Q{Fk=jg5iHQM60dNYK)NM{oG*3=D{3YAn0E0E_-@av8(Mv;{ z+lKRMih868jrB`ONy!!GxU!<6yO~=NY+3tD-lF>=1;}uqZE?{puSgNuMpuSHxL7C8 zdXiNv2L?#Ut#JzYzp&Ua6|T+!E%i14n)*P&w}PiaXm=oG-hJ@kDjl70G%uCQ49|d% zgWCGmr}MJUSUu3JC+JFYx`1u@bPEX3#Byp-n~=hRf7$~cVbJ3JSut|yGKSpvr9i^RI=MeskUuFJ_Jp5LBJk zStu#&!dWJYYvSEQge_voI;Z}NH5_^%M~!pi(blk6dKkAR=#+};xqJO_3Yg&s9eLxA zrn&0q!@m*6=5<2yMBn#!I#J#|LUl^z;9eg@zk~1S z_y8>^$n6@jgT`v$q_-qpKtBHjJwKLnQVQ>JYs#T8-;?c@ul;5>^rdO@O`yM=u4Tw)>|;h8(ucP#DZ# zZtlfDl2xJ(_Qu#6wR0SF#|R!kHD46_cWKTpE>?+mq7IfE-?Jx7nQ>=hi!=e~q8xZi z%P^^D!?U*UJdNV^DXqXY_=A(H9r%CuFiKQ90I~+b#$nmGY4c!flILErAfpM? zsVgHTrN8*30cO!VpkalYV%$9m)SBmL4fKFV3EIP2%n^Juh#xB0aT6ahT2&v^SD)mG zp6rp#ZvJ-PoHP@;uF{Yd*qq-U}%m0aT^*&V_!=B7{#q*Pia!u5GS?z{Hr?xCm&sk`n^}`#;G$a zHmRQ~lGUsv#mE1ZI2f0kV{f3%tbOL>X7$4{H<{Hgom{r*Ox!Y$Dw*BOq@06i7T)r? zDV{$z7Rp~cMbF8~`V<;{=fd@Jv2KZo?!C21{co3cB- zWh|z#*Mu#jtc5eB{ZErcBs){_ge?P@(|L_6TI179F z^@?snt2<)K`18{gL$Y_e;Pm_K3(1M%&)ixc`1p`qUGq8z9)Jr^*~Z^I zr=_8y@@j|0PP07m*vu7loBdCdIl5i^542e{*R@;rB)Kny0E!s2*HlpDW%-aUQoTmq zP_*F9k)RSrwh?nY#6s?RdeYtuWY29$j$5x+o21(oXd)C4yXs1|#%gY1VKt1vMOCUJ zFN_(r%J_4|N#?_jAAEO7ZqFR3jP&HONw&_62sq1YA!1n=Ut0e6rah+NtG`L^zmU~v z&3Wh$xuuD3F|$AMX6J+N->;HKirAkWA6cJnR4sr1{>AZ1X)m6(-L#iyy|_3l%J`{~ z?~T8YdCI|m0r!41ehSG(_R|R; zeOP^(2Aa|}(N`5(uN!O{^4riMUf#g>?UuRPfc9!ZQQh!))nZ}koI8HyQTy%DtNW}L zYGB$n&yIOYu2oY}skuC-Z??{`W56a@PunGJ)TyjA+wCqgq3i``^okthNDuP&sYmcH z-kZoOtc&z)^!*L};=abzAjN6fQPZ;xC$%X22{-LBI=ETR1|Lbdx#f>PuIAZ|H-2=G zwp$ht3Rj4Hu>pn$pGmsklA}K^DG`72P%k5}I?pMUi_?%rifKjiw@sKjQ^MGqBCVl8 z9iUuI)ihjdA1%|*YVL$hYnnhoCd5GhinPbKAVD4DOX{-u_fX+9$@T-6ZF?rq!GptI z1EwJH65Z5&2c`rHHtvpX+VB_VA5*Q`BF|~-Hw%e~G-b#Nt`dX23YpU|AOH?}Rn@eD z#EimSPnV2`{nDJ|Yt55yS8^tcEwb>5;qaAK6!W5GaKwBLU9ig>?p1rore1E46ks&I z7hmsrT0wjwjiAy%w5G%D<;&)zaHjgFE53)xM<-@ojfu*Y=Vm!w=#Hj9MNA8M>f#&1 zOhD)sG@q-I>xx*$t>SRB%XH0}HC)<~*n`@Uk3UU>SL50wS*EJRq0PW)esN)LM>>B( zUHiqiv!NrX8r-8zktDSO(*xo z9!S4dqSTRsxu6prtfBa311-7rj;0o%s-`2@l5#U#9Bz1edeQ?m_xGgNFX}t32RpFt z_6CXPp`rRB&f_s?;enU;0-))x6V_*tn@^U6cT6wDDMx4QznG(@9KBc;Lzb1*)wVoU zONxklV?Uq~m% zRCCFTK|0RCiZr-bV}N%b^>h0=gLEr@luYdquc#0m5`%v@4@MOKc2N-#jnkewS87xr z>o^%av(n5(d9BTV{b^XY_g1T@!Tc$mji{KR+1M@P8H!a!8)Cl#R|!^O=l z*W0^IRzaa2!-fID!M&+F_@Rd7dMq(1f3nHlyNv;A#47+OH`*jpE!$qnOmY47Zh`TH zRyFu97hr09+#7~y#xu-3`}6$CM@VRIkT_n{b3zBZ(PB@F@TO+6@ZPwxS-|r6&L(P` z=$86~JC(O5PUs)-AK-KMf@4sPmQSOZ$;!zIf&$iYH1g$36$rd^OxCW3yQW-;t)`LK zx{j@OAek}@m6mZIK764&!o2`F)sM-ns@O3$e}>=asPzJ@EI@U)m#?p?t7|A=TJNq- z-v=92?P!}IWR%n5ASLAitvco24oC?HI_zDxae9^BTm5kIq*KS)m*9A5J9Tn;b1{WF zv^s4+`Y!KGPJq9+oR}^weyBeA*J4r&%$^$2U><% z`3IdD3sdw*(#_OQd&A;hThDq5IjCfAsRQib-KEn0!gKK@W8Ux{jJ(;nI@Rz^l+~sN zWOoTr3yZi%~(Z<1U8S zpEJ{S>NJRC5w40gdolmQqZ-N`(MHueM`thJy?3uKDoCeldcqs9Zskc&^(`s%W1!m4OkqPFD&uk;2MvA?+4OC5v%10|37#MKz@+w}ra!X=i zT)D-rUOe!l{n?hBLERdb-&I=~;2;VZmLHxNk}Mp^0NXW(u{hUaen2KRmSn;IsYyd` zO$Gvwmdoca;zqq=b$k5gFWPkF8L31K)~bCm&w{#JjG`zjlI1#N0N%8f9X223?M+?E zoVE1$V_%{>u#jO)a_V_O-I_F!^%p#0e*Ifd1>X>>TNpfZdnwq zG127v95NO7*xx0qwo8}ctO)tBG=W4>FlMeaPeRAM+LJSfApy~hf!X(*_jdTv`82N{ z-?=_PXCd8c4noa6zM}hcS_T)U+EUY=E@JDqWv<(gR^u9I2F~SkA39Xx$h}gA)LNt- z(D$yiwafCjH%-U6H%h4d!*T7H}@JT_J)W2XbwDUtUgawajfP z=H#=>t&+PtL8nqit?KHQD<_AQt)Mq`?6AmU%;^w~!lvXa`LqD<#rbZTJ`C?yK9yYf z(HdwYA3bxT{rRce-Za^_bD=46^@(+v!}{WbQ_+wm{y6ldveM4BjEB`UyfS#XSwgw* zz;bRCwtH{%bp{uAVP9DI^1cojw+NclrH#7-6HVlz4xv1AN%zn>ckUi!f}TUZK$k2o zDXGgzPHPy5P&|MBd_Yn#EW*gh#k*_GpII9V*ZhU8T!Y4WUqs(woxFyssWB>pM;T?i zwul5=AbJo=NQ6h8<~l@Q)@T^Li@5fYoh)M8^SnY*_qxiYW8uwZANLsun>GDNP1rg- zw+TndX9v}$*ZiYRg}7RqYid(gl@znu;Cfq!xA9U4l{(Hwaf-B+98XPaAPt^0 z`84js$B)=f)t>tYI3($JUxGYOc=a^Q#%Q|?9F)`F?U*Dn)RuYb7v^!N{dh5(1cV;#r0{dT3SujSK) zf(}H?M2 zMJZ!vd+Vxs_sne$gEm}3tnf=y6Wtj0y+tiZwXs^G5 z(`*DG-N3k8uETFVYdPLGX?$BvI3R5oh>7?{eRIBg^<}}_pk`2o=wJ?AUVOG^&&Q7J z+#=**E4_nRHvSd}tJ{@P7SLIMIRc6~LfH)7H)Rjyol z;kz@|Rr)btrhWT@NpxYmALnzfm%E;ZnbboKFAY;EUqWZ@0U>M|q`zaKaZ5-fRuw}Y zFaF&-Deh|KjeA$=F+YllIoSDQ=R{M)=g)nalg?e+#(31Z3ZjAV_6DfwB#xf0#|Vzy zw?c`ZNwA~ppzCPVRGaR#<_u}SLD`Ef?W3N3m?$%8d{dEjqtfN$fk#LvI3w+E=AzDp z*ok)ZJ~=iDrmzgfI5;_zg86mTjQiH7n;0(qU?gO=CQd$0q6#H_I%eK{e1WbzsGXJ# z$L}4NrJ|mC-7LKr2cas9u?7mJIrKzPyYU;ZkqgAY%xgzG8P#W>yg;;4SG-Rjt z^#zblOf}o2+tJxzSTVYB*~kHnaCUQ`jo1I|r5qAyAGZVY+IrKa2|~yTt1{aX`E$Om zY;!_ZLekJMt`UN79P6egU>L?STL}_d9ckcxXHr&^jx=_ChvL*ZeVOREpm>dm09ePk zoZV|Q7fjIa-G0LQjumy$93A{~?1BmoIPlnBH^R`l#IGZ#X-YNB1aH|?tQ?aJ>F5<1 z`{^U;ThWny;Ygx*U|^u}``=9>GC}xxi3SzYiPx&mk8V;$pZf_4{`&DwFo^tr7gx0Dqg$HxA1<4`v$* zqM?k!Y`XLM6jXIvtcuUr4K&q8NvQj=XuYN-BbPVLbmIVt4>6$DxHT`h(s6K2+W(b2 zUQW14+Ku&rDvTm#Q_7uxlOaMZsss4NuV0UJ%!Kpum^lRaP0{NsC?v%8AM{0d}HGe%;o z`-(Z0F_KEb!P0hYzbh+iY*^-bb9{XK=DOd-Cu*v=CbmGFQEO@TguJQGfEmpy^rE`?&H8R$gh%dZ^Ql*JJ*MaIVqv0 zgeOpR%pzOd-nVZbFNrr;f}9iOHI9LWdL(Ru80T1+YvWUMc4+E5)wLCa8>v!o(bJ{ILFLp z&lV2X;ZymerDcJ$gd`M52Cp$W0_C|D5y#=@rKP1c;5tBY_Z*LgK&Ds)Vh7IQK;YbJ zHhLYI0$xvToIysIGDVfg?#HLyJX%?o+~;VK0jlkgQNK-O>3#KlMODkcd2-IG)xLt{ zlDaV`_IMkA`C|5s!RE|7joQ7E)RR~%`&@0jOS*Mu(02aoS^>9$P(t-0&eg+m@(Nb1 zrSDwt3BtF2tj7mV#N0OQ@IpCSV(Y974 z>x8OGi_0zVUV@8*f`MN$5>oq8UTl|X-%BDew0jfGj_a|0Jv}1MxH4wK&wXASbh@To zhX|Ccwu9N-ga}wh=mCl0!p%Xx|C$-#uU6MFo~Aq}|ELkPsW7#3oOmGoQ)1cR(F1T- z1{;sYR<-@2E#L-w+p``#cu=7AFF_n5Kk>;J4wwE)ehyKm(QD~cI%3cXZDb=+dSyPs zt6ak zYAmCh7OSy&9CLEdz<+0sp+l5G^zuhXkKtm1xcGQ2oSn|jPA)z^25Ev!iSTltzLJW( zmegw(1T}5Q&0KDCXXHm&_f+Z!1ZI?tdScw} zJl6XnJZ-Acbw)8Dz6ad*np%@GcS^cx3Ac%zvY?uodEJ78>)~^Ey5v4ncKfk>m_Wm} zOONDRqSj6mi3(`e^hX7p&OKLx1`8GBXpumpx3-<&lfh_qwZ5Nt9CdNx3Z`#+a6n5- zMdEVoBGI`J$9PJvicXeDQr@vIQMvns&6{JIoBiEV4K}$+np4Ry;UTYSZku@caASwp z-tae&ln|dE)}5$PR?rxv$oTI!hTIFD>)QLzZf0<`&QmQ@rbG2{nXS&6sI!y+Ysf9! zL5h3m5X@di=u3Y+hojyDj6?K4D)_B-yf?{s^xD`ZUF0nvy|+c;)(kqvsY}btE0KV2 z-gfykFo;X0rlCATngB<~D5VyU!3E%nuI_zwvhv~XAQN!&GNv?x!KsR53bc(w{Nj+dPd7uavwcfndJw#bYjRoWp;|H zUKPv22KXY-()uoZlK5Qw9LXCKW(KsK@@kpp+9--+V`4sa3I%D~2NM}K2!fbO<+=Q( z=9+ULatU4GX3Nt7TTW_kL4}O^TdpD{6*v0aELfb~5#&c;3M*(oF$Hi|b^XLfW1{+0 zwjejNgNZCEovq=8!*ibtX{@_@Kz^t2dOcELh<&I;)rBd!`LLOhzcR{madR1 z`MC>+u3R)f*KYNZRAOMh!+6@0CL*O7h?SxNU=-^D` zJLxuBav-o+Kv7Gp-`}d86IhWg&e*i`b`D|kEX9p%*iho{l(RU?Kh!kAUa#X4)|v3P zSTD_@p6(-jea3maTX(QwI7vq4ey1BU(ak${PypS$0QEHnV}r!$HDf@f;L_BXU961rCYRx50f53m+tQb zucigzMAt6Van|9%N{k;R<6nTv6DzsnA2s zv^h(WF;lTtSD_;wD9USg-OxU|QNz{dtdY`^qcq9p9f{dp8bNWrOt(Jt+V-KYvZ8z; zIwpr%2R1B@_!YOzlF8HU)Et#%pXGr(IMWj{^F{X0R}g3ok7l0k_r_jZXS=r}8{D_H zXR?IWYuWg;m0x@eglJyqPt{A8p2HK&VjpAE(p3B;W}hZSD@MU>9}={SPKvftWz5#g zVY|?}A~p>dY*}dX>g>tdCFc0GGojh_3KFA_r)cnL8u_y(A%?c4-`)mg+vVj3+?g7Z z{8l$&55X1W{vBiy&r;WkTG_~iM0HJ;!*88=S>sLo-h1ly26gWQ0W+sFP}7GdIsWy% zP(xHwtu#6{W}E31^c!~_vcbJQd@#VIZRxo_WDu|&-bhj^SMqcOZxC((IfA{gYdr)tG_+(*wAP8G37 z$0a9!HR*tkvGM$LNWM@w1v-|>11}#)s%KjVsAXQXsl`J13|(i4KLw7=qg&8iUwxe7 z;j#SUQ%f)GODqBHNwYDrvhHYXH6)?hPQOvPQfHU)AHqH>o&z!L3>uO~9=HAIcP=@y z7y^mevoA?@L#^)|P7`Q4f$f=w)*b@304&sBuK0Jl&FgoF{#U9^-M-ZJ9U(lWG^btC z_Sd`eW?Z(eGO@EaWmkV&UaIsuAPKV^?h`|CUA=wOi>QhL&}PAujp?=uR^Upn z(8DJ=T|ka6WZKXZwQbp|&1le&fX!D9wip$J-veUSsbyUfaBuy$T ze!IQFu3p<=&UyRvt_CQ5wUVdAlYBB=9G<wfcH5ThNc8$sXSn(nBujsJSQ#Pqk*x(cVOVyFBH$jXN!%2G1e z)ICPD_N&+95sJx+V%|B^fiX>fJW{cI6jJmAUJAfK&FYgQDUKbXwx(-LzT?zQ!TN z4&s_Yo^b*Fz*IX^QQUsji;%D8(yXSNFix2gVp_b##Foc}ZfHx6_N%)rZ6m#6NZelt znKezsg03a*~3sB;H>+LgJ8V_c6XL5R$&M&A}cyi0;%?(u%tD~!9iEl7F zF}cDRGB<0WXlF6y3Y&^V{bVoQ$WvB<(LQo>f8nS18+5t)OQ|~uO_H;*3Hf$rd8j>6- zWLIT;shZ>~rzzsRJUm|xXqqh_c8AHbX12~A03hEYapH1>=oHUHf1_wmri%WZEc8PgSkT!GIuwA170`MGwEiLKapX^zT5#lipc@K@fo2%Afx$+m)e{@+C?h) zA|4B%rWd8C(C5AjPEIp@t>VEOgpX5-yn=2(9fqUPUQT49)gC4)rgZn+F3k*6MI^Fh zrOST_PrX995DAqN7qV$?-b`1BtW0*pf%f_bECHbZOwBgjijRpoUs94k-Wwe;Ys zwI)U1klG?OZ3?``!ll;7i*L}-#63|xb5OIzx-0>Q5~|OL=(2LZzE@7f^o37oZu>eSWWWGbAEnsCxKatmIou$k_bl$_5|1gjKgU@Pmr6ttcvZE>hu^=l;O(W0WKDs;5)fU zPf1|1d7)^om?e{hB}L!Af}eo8yIcAeVWNF<nk|bbi6U_VTdY8j2dH&o0sO z3<(HG#sL_(QS^Y%jIJy)VKdN>;$L58vnLr!h^J7{WiG6jfqSb)vqlXCk)?T1kl` z9gG+>b`J>)*HiR0Nm^R*fIw-^@-+oy7uu|KvCB|?63rr_=h0mk7$L-}`tSzH`4-bq zFD|ofzq>2n+5fbTPQiW!x07g7k9;yAqi>Ej;VMmv=Gv{6_sfc*7EbHb-@q~cxk#6S z8x+wEWXaDU>mr5zSrD$@`6Fd&19}f~N5X&h9>9$N2+WQoPnx5bk%`cO{4xsO+9f`& z8P6VrcF^aH#jE=ITQ+TKx6johmqRf}nn;2*Pp1&2lxA@%{5xQ{XgS_&6>uXsdfhRQ zMA$=>?@HAfx<;50^I+)b^}qEp+!<~_TBZCX7wr8#xx`n8Q_w5&|L``Kj^O0n2YE zH>^_i$cVkh(8NM{J56|xLJ^uVLt z8FK~^`{xz9DG?Tsi&&hkr^a4RWy3UaGAM}#Gg6V&z4+L<@sB%FpM*Bck!N2WM7?y8 zUx@Vr`@P#fd~QNO8vGAPKF66$yIK@vu66+sO(g^uYhTImYunWd>SR}Qqxp)qD{|d+ zw!q_!fCFT>4%>@_;Y>UPh?oHPTJy%h1o`0Sd)w3oh%@}*!^fQVdm#k$lG$|Kz`&^V z$;w({DtGi#BnLNXV09kbjE<92cDVZ@GdAi%M=_&vppS3MkQEW03Fipy&kQs3xyi;k zjmPlFID4;9P8va@#hj5C_6618_@_O7ea$vI2!ooB>m#WK=Ce@2BdR5-X-C>rn8hGJ zem81whOhzSuD&SjqZ)bc{_I%9(3o?;?a~$1CIoXVl6Y5e{4@$&v&}SxaF8ybWJ@{c zlY@cW2ugRjOKYIp#l{)e2!2Cfg4KlPjtMfqb1d<&eWIGAbzQ@}iLRQixGZMKps1z0 zT{6kW+S+zuLKrgetr__rhuWxZfo@!^2Thn4uVW+vgUJueB_$Or#Kz)zYMG%dhklbW z$WZyPkCz7`TuV)s6(G55aT$uJg+M3aR6h$M`85wqC z;wymB(P?)OafV3Ek-(6oq{!ps8|)|mCb1T(O`7&t{9P(l^q9ah!$DbEL3pK zg4OIaKV_G;)%D45*c0p;D7wI(&ix`LPpn?*kt!gnL0kX?*qwyJ3y^g}Ku%nBl$;^K zg&Qb{jEodCZ8(CeGZhXjws~o7tD-F+R{7Efa_#7Ss#$9XX;kXygF2G< z@6#HePIT8?y{$AI_2fxGAMX1Ag)0`9I>vywBzyjEHGE$LC?LGnn6aj#9VlYGR~uRa z=+{1Tn;(%TPc|M)vgp|IHvv_fHeABa$-~wHTErgjGYCHEbA+Twq;v}*w0&qkJ3cOEl0fF(L zwt4_)od^N)@)@X#2ouM}q6NB#r7#iP`_hXSpr9xLih_`??ChL_v?vA&U(|DJmVv)L2!9;fe42Itg-aN4 zCon}I{0Z=4=$R1JRN|YflM4 zHldyjMX&G?4kausMsnc}w2*g+SpWFDfU)R;8w`v2_%5aXw`zy-<}26<*NGFCfuYAi z-2)r5g@Ypzk(WhWr~d|G9vjTxmdx{6FKF3szu&-q8#fG#VS97| zRL5N&+llrbN=1Tl#cv$3r1RSzI$Spy_6EkYHR7O$YY)rCYg#r;q(6KV>#Tck_PXC)*8FzDu zW2RL6Zy6JQv>bpI^`Tei(A$9S z!@j-K<`gBo{^vtftznPHLy`kdcXm?O>4weX8MRmIIi04u9YRVFlt2~V2%8wWnSW-`>~C3@zph_vdEpHjua9@s)ft?@ca?n~zT4~?LJokpSLbS^3dnB@gT z`}72l!+M#Px(dW2;pe71(L*RJp4B9=-m*dqH!VcWJGpCv3d9_7yHy3arpYmX4)Pk{0!s-AJ=s}ZP&EDRZ{d(^+jBDUG z7Y&GEA-t{MdHgvjK@{A^XiNhL^)_ma9+St8Wru%#m?5;Zl(ClDB9lK##9-w`@A-+3 z^ica#wXm-_d-kg$%CoKt-RCgy#XdR|o$F9zP0VyNlo5uaU#lkor6qt>0`+am7adUZ z144d@u`uLLLMSkkgaa6_*}QDUDvSgC^P!gafP7}V_Tzww9cRUBe@@@MbLUg9?e8kg z@j$3mXB^K?_o3@Z})U!JmD6){-EPGpYl z4y>ApWFT)-2BHyjiBSfWtnhjov1p>gVa5(ziHB8#Jgb9i1(gwI2r9kY0BZYJ%q(og zfl~I_E?Dk-L8FO7GaT#?90G!ou!xQn1g6=rDQ9uB0djUWKSuE7BlWW& z+IyR)VOc2Y|1cq{77haME;S&6D0!S6h42<9hgm+XQD?fzIL*ZJ&nFcoY1ucP#7boJ z+ia*HPUke)GIKP5s)B6`mHO|W0piWJZHCGAwg(gcl)3?bakKE;fBu4xNON%HNG@8) zdC(JazH$zKcXBv#IUCaoq5mwsn-#bp*|x$9{f#zxM|R*(zD?c2Lv3sz2r|T5<7bh$ z3KPRVV-o`S?PeRe3L8&^$#dx~J9+c3pN<{6xE_@&J%KSf>k(h=pPz65n6JKm{i-Xa z4*oCbkp3!m6BIa4C-*l@H~H^`+Q{=5v;I1e|NN7iw=Vt1AOCun;! zbRd|PtYOI-mSV%NGw{FD8ak+VBbk`C>dBlrrSiXeA(p;8R$wV0{5l3p>Crz6v2-Ao z4#ZN1@aqgLxyOGOV#z%&xyS#d)^Kv5DTUbl!av>VC;EAPf0@MoWxsm4OiX%z{7c(l zVp@9npY>Tjbp@}P>Kp^F U= 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 S-LA*TuT@jgQqE8^5Be`C+=6%j diff --git a/forui/test/golden/header/zinc-dark-raw-title.png b/forui/test/golden/header/zinc-dark-raw-title.png deleted file mode 100644 index f8f0847cf39f4d3b6a810d351537a5362805c0c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28218 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 aKp65nJ=`LGJ#-5B3k~&)XR&8&Z~Yfd1E=Ev diff --git a/forui/test/golden/header/zinc-light-raw-title.png b/forui/test/golden/header/zinc-light-raw-title.png deleted file mode 100644 index 88810b55a9fad4bee196d23d8923c17a7afa11c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28143 zcmeHwXIPVI6lLs=hzx^@NV5SdAR<+|N*M-$L6jmT3Sy85NS6}8GDt@U5$P%_NDGl3 zNU%VHQX(y(g(#s12ptk2**8NN=g&U-?Ec!_C*L1Gc>KzH@44rmd)@$1f0`Nb?>e{( z0)g-w|E_-t0{P_{1hQl2&h6kkm7UD3;Ga!CmyFIsidw|Rz!zJ6&KqCe367ARHzFaB zLl9&AbC>U?PxPGQhaCR(!w2eWu%q%ffx{^le{OP6Qj!FhtRHw*@1~7&2=dIef4|V* zF1PXh@P_bh8|S}@6mOhDj%?Y#ajtjc!{&|i$lW#@r;sO`_%_ZD@ov5m3SL-vXxYF5 zuZVcu!o>oQa(T^y3k6;e#ciy zt-Dw6(r;G7(vGxlrJV zQl34+g~I>S>Z?Ag%tj8^o@0)8LOl=Sd~oicqo&iyQXpK{PHw+50--ZSUJ29+U0t4L z+*TEZ!=dqT5>}$Iu~Fz0=L2<|BV0G+4meIP>^$HcTUhvrii`7P|K^CfrJ5F(rdBJO zpP#js(7678A&~ErTW!*J_V)Ht+un4Bt*s3YN9^3N&%(d_Qf&4Z+``$@({o$|KQ-Qo zj1OTC)W>)+W=D+rLl)k4-&UQXuwBx%gBNRC((1_7x|q2XK4BdZSy@^7b^eW~Btd9f zt3ub(ylBKFOM<$;0+i)HxYFF*j4Jo{eZ8Ps;mMv(@FE%e4L9NGA;ZdSh4m{xtjtby zm!MFnvx`eh_yf-NHOpf*4i4fbCMH4(a7Rp#iiFm(pH|SkYpf!!%4Y|WNCG}DHZmrK0$(bUw$*KorV-hLxs=}V>02>$c3TdZPvMF1{DM>1zdCzXVRCNM%m z4?yD-aV!?g2AY*XCd&w&+7f@{!$3z6Yn9O<#9hzx2Kod!_|CJTjOiK4W9fhY`RB{< zH->|*T80LtnJ@g@-RdsL%Wn4XkM_^;&~ynvlZlJufbuI7A2WJT@M^!_TZMlXmhDs2 za~JHmba{`L`qoWb_`Ux;XLm2$dnaAefqd0?R?9k5>nuV?DfU7U4U44Asb@D$XRH(z z6~%*PO8B|=mQSLb>c3_emBAX56%rx5UM$*#l4F+tTV5(8D}jhxVExH_^e#jS<6;zo_d#;Dom~xt{cnAdiE$P z{Nm1HSD$3Zpj&Nz$qtJF#w5(_S6MHDHif{{*chAjdastb`DG);SK-=0^N}S49ZdnD zAz~M5q;7Vok^24P1JkMC70q9-pIiC9?_p_GTU%S@$`t*kUvpDRg^{hTt*j|Gr+UG2 zVAZg_Py_wTR#t`-EW$4ERUfUl!t=6~V`ghVh**&L;ZmW@aD(d82Cx< z$#EeBvu4HG*w{FRpf&W=a$x#LM68n%@@P{bEHhB`nF3ToP;eyO$1FXdzfv_bGX6Yx zwxTm`#CiJrN3SI^B?cs8sUSHy89$=4)cstGfmVIKXFbN@<&VeUJC3q`gO(jL?7;+^ z7eLwPYo?vqP&^ z>(^J6m6iNCTh?FWP}Zy^#wha@XFVI``LQ)O?3(|9X08#c4M<+!EK=usGT4ys|hsQzsPTR2L~Y^FzQq z^4^vmH$yNxWp%9zuO^jl_Y}HTb~K=$Fs2V%T>Zsp*llI?$6V=gp~Y6x1<>}o?Vv>mK5 z{dXIpR8&PpMFel1l#~n;6P@g>P{<4#AIk+584(fjEVk=NzBMwc3=SWdC?Q1iDb$>f zj*d>n49~Zl$3#SYwz#5#?8f+vw8Tkh@1hPSnzz(fI-Jka!6XvDyZ>v!zi{XR`EE*? zb2SW>l~qVkB4{aPW9%wC;&w=`8q_d`)8s`IU&nY4w%<>#t_mZXp@7rsc8+F~Yhc zCeP%IQ{Plps^elsgz(}4xAzJs>w{8y`gE_6@fT?3$+7@?KbvtyGI(h!jsy*pCl&@D z2B}Q$Jj>6|KhtnDp{^xE(|L8-B$dowgn3S>#BJNQ&9-^dYoTkc!)|VF1L;03%}n%A zV-{R_)ffY_1epj^cD7V13ut^MA0uVL`c*)Cz7gcEg~@zpnN!zk4c!O&WXz^5+e<$^ zTo0HYObsCJ_^DIzOeQnC$Qn?IMTp<>^pE9EWavIo)!R+us{o0((bjC|`B4kSyVKvL zmn4EGP+k)#JeCIAw{IWH86V$OeEmWJwDz$7RA0(WH&}XH~Tv^{6D{&Tf%2 z$MORcZZ2wUJ8oue_a9Dy;hr2d za_X;P&~5VzYP5nDCsLGkA7ePs`lgzfmpAaf@#FwbG^aux%d`vVn~75g%tz&eE+==D z!L7~cTp8f&anvY2_E!7bdcf`3#l@$$3rL8m^_`ag+SsUsX8m{+mgE)Uw>pEzcf7N7 z>M4D9HVVli?$DXO_gvNe>ctEVsd!zTk`+%fT0V3k9||k2sHs`arF2FL9=&=-^|6%s zhx?~)l8PK=;yeMCt43A|Lx~(3cyG0`%a zHhVclU>J-~kdzd*pMF_D_}yzDN(Pssv+!6%NW=lk9=v|? zh16D?Z`(RLI`mzJ_PJ~StMD4C$khROLKsU=85~uf0NjcQW}H`(BK}xbnMxa0lvM+eqoZJb`U6MBdU2-9uk?rm=ms}u-9G}5FoRk zK_(KbC(C<#C(0hgr6`Y~bMy1zG{yC&hVSvf$BSFo+4T-)Vi7C2!7qu4)cnXum&Rwc zGT7)yPL;~pm1{AufJqbsXZ6=b25t`wg}(~Y)kBX6F9UH zI1(2#Fu-1u3`MN<-vxzY=S%PPsMemsEIpD><-&fnCv>HkqFUu>V{^drt-Yjyfq}dR z3?Gl9=Da1IvABGBZ=wuTSeNm|oC<_j+>~AAo$GyfKJ&|K@VSZu754@R9~OuBOUa$Nv+ zPEw@)#+L27BSn;SBsu!eYp$97cp-le9lH{|(d!O<`Sh2$a#bjEEC=84%2xtf~S|DteuB$rSKG=weCM&9!4l z@Gj4_S6Igt6bR$!ZG8Ld-n%ruM{|DA2prdFM0XTuyoRLe0J=o7y|=N1%-1-RQ&q>% zel+4JGardP*jrvUk@QG!>X+gdLa9nHGa~6JP-fx*O|b(51Fw}h)Y%`*mZj02$uTap z1+L#%k5qR3GgF#G(4ZCErK~WAZ>9E)QEJ1|1BX*gr*2J^Y+=ZJxNkO!*JT+KNqzpk zB)ioqD(79#&Mg)c83$exUcb?|vO)*D_R*{7&YiOlnK1}Vm##R4U48|s!qpeC#^eu7 z-`?;L!l#h}&}!i4=VwK_4B`y3>Eq2(A=zgvs5oBWs{9*nfB*q|PZ^RLznaDCAee(* zuli1&I1$yFZKQ@~^}vz!S?tvjEwio4M&a8sn)0sXzsKHW&YKTStOB6r=H@nxr#?+t zZ!F0B%1*NX+rV$Gp+mGo<@9GVL9ID6+9PTbao(1Xh(fC|14BgAO zU#{UU8||ksI3KdUxEFJ7n!nGmdxwRH=;Cx!qNKTyA3dgg(*{Gf*dF9^0IzCh3RZ zG(ArW_V~$@U*~QxfU?If4+z)p<*1$B+Ywjttqct6@mCjO$J%r7YPEqzIqaqG6u(vW zID`(U#RNTdZ-+$Fm>3wp2yS5@EoOur>r2+ic{>2Or8QfVMcYA91;I1iQV+<<)-gdK+9?LG=`QCh?%L=3wH9rXAo*Kp{}fA!TjzMW z1Xm`!=u{TImh|-L;H|%j)|W2z4Ki748M+^WhLWs%f*#h4{gG9s^z$PS;^(b*6*B?* z4F>su+n;v*_M%+kuqV0=HW~Y`o3Hn%7)(TlB%pO?)xWTVXoVG5hp?P%gON!M-QN+= zYHROh;9{5XSj}Oq#NTkE{2?zcxQ@RwcVC##w{{Ga3SFZaT^;JLuaB#ZxI@7*tx^V8zGX^SSisly~9Z{?k``zR>#GQ_qu_OTnkNv3qwOJ@-s|Fz(mVkf!?EU z9kPtn=%lOTeLi?qhH_p-p(92*2YIv)6C98YudjEX`)cqVqqT`ou*jL~~t{L)NK$#g2hPomSeqy*uGQKFRz|2x1Ibr`j)Vm2=ev z3M2|leMW(SfkaYgXJ^?bWo`tju3T!Hx6A?qpB*CN+=K1)rMKG8L>B{YN#W?nwzJKM z{hq(yU%UYL>Y_otQ3>|uSlgSz)4!}=uje5i(C1}gW79Pnq_Y{++2IS@@%(BRV>tFu zbpWVxW7ut=CR@usefo6Z^fkRU#JxTtumB&TZMW{G{5-c%*^Atbs>gPq{d=_;e?I6y z0nx8n?12ZSxJ-Yq)dx%eB_CQFYD);XZL_C_XFkLIeyw@u@<7ZvA% zXuiLV&#CoQJx6b*H%%`fDf>NZW^kIdk{Z6QyMbYqK@pG)ZL5}eWNT&hEYXL{wJn~5 z4Np+lKjREZaJX7M=-C<4UZR$sDtspz}}WTma}V=ZkcIy^)W_>R_3jVU0|*aiY$X5b5>j zekT+}uKCz+!9=j!Vv~Y2nYC3CUX^EM2WkCz$ zch?q3q7IT8^IKX0$e+dX4L*nPo$=+^DQGmhT;k|aA?erzz(obfG!?kN_rohtsHD=( zRZBUW;zKmJLgn`hwotCU;p>oXsIs;TTOT7_4;C`3+zbV8RR1Q~@gPT!am*|5wF@Ev zO!qc5%U`6I?yemw1)T?-4uT`)U=3_YnXHgM`us=%&LGzH_$Y7Z`sjV@nB&{EYamvsrGcuy-h&$|&OPX-yrOwx7G#aq7~6zHavlEC z=Y#+RmT1qE_ooU_}@FK+5S`PP5mH3R(+FsvExD(<&(aLAaWk0CiC5r`MNNfsA^BYq#Z zNk)%kh3WKz29jMwB9ZXU30LaDRGu{QrL8GNNv1z!uGx?Tm`Mcuw@?Y0&1Z)8J@hr^ zENNuP9vc$aLhrr=w7|@_3j*Z}2jZA50j%soqxA%3u~=Brn)4rnf>bK+wXZjcPz z$^B5)Y_fL{0oZ>)L^O_R`?%m@2^IM};loY6n4n+R-`EuexT+HPQmJG$SW7m_f3ipG z;?oRJC3RqUN+YWQYB??^*YsImZ`Y>%4n$q{oUQ?2Rx^6lt@h#ceud;7lZOi+7QkW2 z0Njsx$!n(?{=87pp1qv3Yrc%~Qeb6^bOs!QjY1iMN|C{Zc&I_J@gy^Wwyc z^LWRJvsDz1f*jN-y!Gkfj3TTBNquIglNi6ba(3gh02NBGmKtpiyTyuYs(Qk>{Ow?r zAfY_~hSp|Rx+JSuS>o>ZkLq`)ugRJ(IC6~99TIm>XCfB6V;3dER%aZwcZ!EYVoo6e zrB0z~nln^Mc5c0S1bQTsKH{23RJrycoZ~6tXNL%7ZjmZJ!;>hNMvm7>F!J*9%Fo!K z5_dSUAc`?J0;{PlFINqne!!0I%qNu&T&9=1b>=O96ky4^!Ii>F+JMrPtYtJ)3)S~M z<~w5?Sz8l-XLgY0G*Bn&G&4{StSuiWVD#9MvtPYB!kGa$4RH5?(=U>wn+w6@@Xy;M zW9N||DCvN-C4t^{ZPm^(%lOS2intOhs#f$lgsXt{@MU0w;C1Z?M@MKeN3&7BV{OZ$ zM!E;zypbvWK^?UUsfczQe})e)R>HadEwEk_p`HN=D1!n^_MeYOQwY%d(q-R zsQ+#!uxYZj$f4S4Zn)XPuKL6{Z3#MWw7)B9oqR{ED%O4#N4FzxZ43hY8N$5mD&2(`BE+}H#S z-vgT&ka7O8Ic%-DHfRXSUV&z#Kh>{b%pVZ7FH9^aC8vxVt1Q)8e5YP6SrB&-(K4bq&t05ckzzT(Cho zxq!a-0(eqj`-O(A)zMl0_>#VQ`*TDb>duc(oMvn1Qy0roS2Ir%LexR;V6+fGUxcr& zj_4*l*dd@Ai~w#%I%3hb@a&PthkwT9a9=Pz3=byjp218B?VviK=mwUlk7{6rz~lk( z65)(>6O`K8GTiM;78VxvzO4pci`_7T3J-FB32QO2I5no2V-L3HP`a)BlC)kP!UgDUJ1EuX|F%)*FG4OKavaMM|=Rug#gQvPGr$6y! z1JM>YB?uVku|CC3isaqB`~(u9x?Sh z9SgIwvz4o}2}5p|Uu^qNF7JS;b(zj)S=6wYG&(bo-jAV1h`y~~p|Dwl!L*BR^_ODE@-%1PC-$Jq`!6{TDzKGBao`LWEa}^TD8$=&FfPuI zwaYO2^``z)6WKt90e8)Mrp-jbK%cWuBgAQ*0D{j;lsNMP2QX^=caJVkbPIXbpfvsI zEDDq})BwB8ur_p!HIhXS9$C8ZXb;%I2pYWoj5E%LG8!LI!DW$=k*u{9d>JWJYr8

y6s|H>* z@T!4V4IlzMD&SE8j|zBHz@q}*Ao))f{LiOo;%L<;@P`HbIDaF6S1`PS;T6pPqG0}i zDiSwR{69Yovz=i_xE|o8{L9Z@g^>8~kLy8B^S-^FbY4u>8Odmo8B5O`rCR;9O&DV5VPm{@VTj0jHgDj{pDw diff --git a/forui/test/golden/nested-header/zinc-dark-header.png b/forui/test/golden/nested-header/zinc-dark-header.png deleted file mode 100644 index 5404af175d154d04f32e6813c8dbafc069418b7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28334 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 T=gwI=a^2JV#wW6Wv%C3Uv(Ol1 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-title.png b/forui/test/golden/nested-header/zinc-dark-raw-title.png deleted file mode 100644 index 9eea2c8305d6589fe80b9a4bceac2a38026e132c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29778 zcmeHQ`8$;R`=4_@crd;UGrR*%g{W}yx;fxzVFxaejbJXrK`#IJMZr(6pBsj zoccu+YWrmrYU{RbTi`ckl;z*x+br|HH^)PrAkY`oro;_@#Wuhq94+jtpN&${?VELdS-Wy_CT zU=ua6t7gM8Z6xf+z`$=Zy?yW+0TV{Vxey42bvrXoq%AHEZp#4Rid#4iT zH$N20)=0>$Dj|7jK$wb)1t z7Pa{Q$?(_X2#6FAJ6ayLEwuN*guDLM4{q{gDf-_WS?WepxLSBJe-fTT;Dy z1yQR{s8nj9=`o_Lj_p&mh_$sf`r@L3pkP1*#Zk`H)s@)R)>dM_fh4OY{Y}?q-{cR{l<+G?7MbZ zuU2+D6YJ{Y3eEG@-=6sX9uz8o;nlmzr@Y(wWHT8Z%~*D|u*C9h-MY0mc`i3CEzKRf zhRyBt9-5qN>+1F;(6n$LYzlcYGBVKJm2F>h8!)X*!reE&{r>B%-?&Ld)4%+Yzo

81D8eRr|fHd=MCj@vq9idq@y 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 diff --git a/forui/test/golden/nested-header/zinc-light-raw-title.png b/forui/test/golden/nested-header/zinc-light-raw-title.png deleted file mode 100644 index fdcb32118f542c3d5f8a3103ecdf4a081d161089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29696 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 FHeader( - title: title, - rawTitle: rawTitle, - ), - returnsNormally, - ); - }); - } - - for (final (title, rawTitle) in [ - (null, null), - ('', const SizedBox()), - ]) { - testWidgets('constructor throws error', (tester) async { - expect( - () => FHeader( - title: title, - rawTitle: rawTitle, - ), - throwsAssertionError, - ); - }); - } - }); -} diff --git a/forui/test/src/widgets/header/nested_header_golden_test.dart b/forui/test/src/widgets/header/nested_header_golden_test.dart new file mode 100644 index 000000000..bca8ffa74 --- /dev/null +++ b/forui/test/src/widgets/header/nested_header_golden_test.dart @@ -0,0 +1,48 @@ +@Tags(['golden']) +library; + +import 'package:flutter/widgets.dart'; + +import 'package:flutter_test/flutter_test.dart'; + +import 'package:forui/forui.dart'; +import '../../test_scaffold.dart'; + +void main() { + group('FNestedHeader', () { + for (final (name, theme, _) in TestScaffold.themes) { + testWidgets('$name with FNestedHeader actions', (tester) async { + await tester.pumpWidget( + TestScaffold( + data: theme, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: FHeader.nested( + title: const Text('Title'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + FHeaderAction.x(onPress: () {}), + ], + ), + ), + ), + ); + + await expectLater( + find.byType(TestScaffold), + matchesGoldenFile('header/nested/$name-header.png'), + ); + }); + } + }); +} diff --git a/forui/test/src/widgets/header/header_golden_test.dart b/forui/test/src/widgets/header/root_header_golden_test.dart similarity index 54% rename from forui/test/src/widgets/header/header_golden_test.dart rename to forui/test/src/widgets/header/root_header_golden_test.dart index 46b7e9f11..bc1645ad4 100644 --- a/forui/test/src/widgets/header/header_golden_test.dart +++ b/forui/test/src/widgets/header/root_header_golden_test.dart @@ -12,16 +12,16 @@ const title = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'; void main() { - group('FHeader', () { + group('FRootHeader', () { for (final (name, theme, _) in TestScaffold.themes) { - testWidgets('$name with FHeader actions', (tester) async { + testWidgets('$name with FRootHeader actions', (tester) async { await tester.pumpWidget( TestScaffold( data: theme, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: FHeader( - title: title, + title: const Text(title), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -39,36 +39,7 @@ void main() { await expectLater( find.byType(TestScaffold), - matchesGoldenFile('header/$name-header.png'), - ); - }); - - testWidgets('$name with raw title', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FHeader( - rawTitle: const Text('Title'), - actions: [ - FHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: null, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('header/$name-raw-title.png'), + matchesGoldenFile('header/root/$name-header.png'), ); }); } diff --git a/forui/test/src/widgets/nested_header/nested_header_golden_test.dart b/forui/test/src/widgets/nested_header/nested_header_golden_test.dart deleted file mode 100644 index 674fd1447..000000000 --- a/forui/test/src/widgets/nested_header/nested_header_golden_test.dart +++ /dev/null @@ -1,79 +0,0 @@ -@Tags(['golden']) -library; - -import 'package:flutter/widgets.dart'; - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:forui/forui.dart'; -import '../../test_scaffold.dart'; - -void main() { - group('FNestedHeader', () { - for (final (name, theme, _) in TestScaffold.themes) { - testWidgets('$name with FNestedHeader actions', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FNestedHeader( - title: 'Title', - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: null, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('nested-header/$name-header.png'), - ); - }); - - testWidgets('$name with raw title', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FNestedHeader( - rawTitle: const Text('Title'), - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.cookingPot, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('nested-header/$name-raw-title.png'), - ); - }); - } - }); -} diff --git a/forui/test/src/widgets/nested_header/nested_header_test.dart b/forui/test/src/widgets/nested_header/nested_header_test.dart deleted file mode 100644 index a70b8875b..000000000 --- a/forui/test/src/widgets/nested_header/nested_header_test.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:forui/forui.dart'; - -void main() { - group('FNestedHeader', () { - for (final (title, rawTitle) in [ - ('', null), - (null, const SizedBox()), - ]) { - testWidgets('constructor does not throw error', (tester) async { - expect( - () => FNestedHeader( - title: title, - rawTitle: rawTitle, - ), - returnsNormally, - ); - }); - } - - for (final (title, rawTitle) in [ - (null, null), - ('', const SizedBox()), - ]) { - testWidgets('constructor throws error', (tester) async { - expect( - () => FNestedHeader( - title: title, - rawTitle: rawTitle, - ), - throwsAssertionError, - ); - }); - } - }); -} diff --git a/samples/lib/main.dart b/samples/lib/main.dart index 08ce6eab2..acb2aac51 100644 --- a/samples/lib/main.dart +++ b/samples/lib/main.dart @@ -60,14 +60,14 @@ class _AppRouter extends $_AppRouter { ), AutoRoute( path: '/header/default', - page: HeaderRoute.page, + page: RootHeaderRoute.page, ), AutoRoute( - path: '/nested-header/default', + path: '/header/nested', page: NestedHeaderRoute.page, ), AutoRoute( - path: '/nested-header/x', + path: '/header/nested-x', page: XNestedHeaderRoute.page, ), AutoRoute( diff --git a/samples/lib/widgets/header.dart b/samples/lib/widgets/header.dart index ce3324781..0bb8f3c7e 100644 --- a/samples/lib/widgets/header.dart +++ b/samples/lib/widgets/header.dart @@ -6,14 +6,14 @@ import 'package:forui/forui.dart'; import 'package:forui_samples/sample_scaffold.dart'; @RoutePage() -class HeaderPage extends SampleScaffold { - HeaderPage({ +class RootHeaderPage extends SampleScaffold { + RootHeaderPage({ @queryParam super.theme, }); @override Widget child(BuildContext context) => FHeader( - title: 'Edit Alarm', + title: const Text('Edit Alarm'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -26,3 +26,53 @@ class HeaderPage extends SampleScaffold { ], ); } + +@RoutePage() +class NestedHeaderPage extends SampleScaffold { + NestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); +} + +@RoutePage() +class XNestedHeaderPage extends SampleScaffold { + XNestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FHeader.nested( + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], + ); +} diff --git a/samples/lib/widgets/nested_header.dart b/samples/lib/widgets/nested_header.dart deleted file mode 100644 index e713ee1b8..000000000 --- a/samples/lib/widgets/nested_header.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import 'package:auto_route/auto_route.dart'; -import 'package:forui/forui.dart'; - -import 'package:forui_samples/sample_scaffold.dart'; - -@RoutePage() -class NestedHeaderPage extends SampleScaffold { - NestedHeaderPage({ - @queryParam super.theme, - }); - - @override - Widget child(BuildContext context) => FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ); -} - -@RoutePage() -class XNestedHeaderPage extends SampleScaffold { - XNestedHeaderPage({ - @queryParam super.theme, - }); - - @override - Widget child(BuildContext context) => FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ); -} - -void t() { -FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], -); -} diff --git a/samples/lib/widgets/scaffold.dart b/samples/lib/widgets/scaffold.dart index d9e8ba725..15b496541 100644 --- a/samples/lib/widgets/scaffold.dart +++ b/samples/lib/widgets/scaffold.dart @@ -20,7 +20,7 @@ class ScaffoldPage extends SampleScaffold { height: 420, child: FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, From 70daa4b2202fd026077afd5aa152d9b911e256c0 Mon Sep 17 00:00:00 2001 From: Joe Date: Thu, 27 Jun 2024 18:57:31 +0800 Subject: [PATCH 07/14] Implement nested header --- forui/example/lib/example.dart | 62 ++++++ forui/example/lib/main.dart | 78 ++----- forui/lib/forui.dart | 1 + forui/lib/src/theme/theme_data.dart | 10 + forui/lib/src/widgets/header/header.dart | 28 ++- .../lib/src/widgets/header/header_action.dart | 32 +-- .../widgets/nested_header/nested_header.dart | 202 ++++++++++++++++++ .../nested_header/nested_header_action.dart | 121 +++++++++++ 8 files changed, 438 insertions(+), 96 deletions(-) create mode 100644 forui/example/lib/example.dart create mode 100644 forui/lib/src/widgets/nested_header/nested_header.dart create mode 100644 forui/lib/src/widgets/nested_header/nested_header_action.dart diff --git a/forui/example/lib/example.dart b/forui/example/lib/example.dart new file mode 100644 index 000000000..643295ef5 --- /dev/null +++ b/forui/example/lib/example.dart @@ -0,0 +1,62 @@ +import 'package:flutter/material.dart'; + +import 'package:forui/forui.dart'; + +class Example extends StatefulWidget { + const Example({super.key}); + + @override + State createState() => _ExampleState(); +} + +class _ExampleState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) => Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Expanded( + child: FTabs( + tabs: [ + FTabEntry( + label: 'Account', + content: FCard( + title: 'Account', + subtitle: 'Make changes to your account here. Click save when you are done.', + child: Column( + children: [ + Container( + color: Colors.red, + height: 100, + ), + ], + ), + ), + ), + FTabEntry( + label: 'Password', + content: FCard( + title: 'Password', + subtitle: 'Change your password here. After saving, you will be logged out.', + child: Column( + children: [ + Container( + color: Colors.blue, + height: 100, + ) + ], + ), + ), + ), + ], + ), + ), + ], + ); +} diff --git a/forui/example/lib/main.dart b/forui/example/lib/main.dart index ab9f066fa..22a3ebafe 100644 --- a/forui/example/lib/main.dart +++ b/forui/example/lib/main.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:forui/forui.dart'; +import 'package:forui_example/example.dart'; + void main() { runApp(const Application()); } @@ -15,72 +17,18 @@ class Application extends StatelessWidget { Widget build(BuildContext context) => MaterialApp( home: FTheme( data: FThemes.zinc.light, - child: const FScaffold( - header: FHeader(title: 'Example'), - content: ExampleWidget(), - ), - ), - ); -} - -class ExampleWidget extends StatefulWidget { - const ExampleWidget({super.key}); - - @override - State createState() => _ExampleWidgetState(); -} - -class _ExampleWidgetState extends State { - @override - void initState() { - super.initState(); - } - - @override - Widget build(BuildContext context) => Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 10), - Expanded( - child: FTabs( - tabs: [ - FTabEntry( - label: 'Account', - content: FCard( - title: 'Account', - subtitle: 'Make changes to your account here. Click save when you are done.', - child: Column( - children: [ - Container( - color: Colors.red, - height: 100, - ), - ], - ), - ), - ), - FTabEntry( - label: 'Password', - content: FCard( - title: 'Password', - subtitle: 'Change your password here. After saving, you will be logged out.', - child: Column( - children: [ - Container( - color: Colors.blue, - height: 100, - ) - ], - ), - ), - ), - ], - ), + child: FScaffold( + header: FHeader( + title: 'Example Example Example Example', + actions: [ + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], ), - ], + content: const Example(), + ), ), ); } diff --git a/forui/lib/forui.dart b/forui/lib/forui.dart index a9e3d7982..82ce85605 100644 --- a/forui/lib/forui.dart +++ b/forui/lib/forui.dart @@ -25,6 +25,7 @@ export 'src/widgets/button/button.dart' hide FButtonContent, Variant; export 'src/widgets/card/card.dart' hide FCardContent; export 'src/widgets/dialog/dialog.dart' hide FDialogContent, FHorizontalDialogContent, FVerticalDialogContent; export 'src/widgets/header/header.dart'; +export 'src/widgets/nested_header/nested_header.dart'; export 'src/widgets/tabs/tabs.dart'; export 'src/widgets/text_field/text_field.dart'; export 'src/widgets/scaffold.dart'; diff --git a/forui/lib/src/theme/theme_data.dart b/forui/lib/src/theme/theme_data.dart index c988abee1..33b37ff89 100644 --- a/forui/lib/src/theme/theme_data.dart +++ b/forui/lib/src/theme/theme_data.dart @@ -40,6 +40,9 @@ final class FThemeData with Diagnosticable { /// The header styles. final FHeaderStyle headerStyle; + /// The nested header styles. + final FNestedHeaderStyle nestedHeaderStyle; + /// The tabs styles. final FTabsStyle tabsStyle; @@ -68,6 +71,7 @@ final class FThemeData with Diagnosticable { required this.cardStyle, required this.dialogStyle, required this.headerStyle, + required this.nestedHeaderStyle, required this.tabsStyle, required this.textFieldStyle, required this.scaffoldStyle, @@ -94,6 +98,7 @@ final class FThemeData with Diagnosticable { cardStyle: FCardStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), dialogStyle: FDialogStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), headerStyle: FHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), + nestedHeaderStyle: FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), tabsStyle: FTabsStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), textFieldStyle: FTextFieldStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), scaffoldStyle: FScaffoldStyle.inherit(colorScheme: colorScheme, style: style), @@ -128,6 +133,7 @@ final class FThemeData with Diagnosticable { FCardStyle? cardStyle, FDialogStyle? dialogStyle, FHeaderStyle? headerStyle, + FNestedHeaderStyle? nestedHeaderStyle, FTabsStyle? tabsStyle, FTextFieldStyle? textFieldStyle, FScaffoldStyle? scaffoldStyle, @@ -143,6 +149,7 @@ final class FThemeData with Diagnosticable { cardStyle: cardStyle ?? this.cardStyle, dialogStyle: dialogStyle ?? this.dialogStyle, headerStyle: headerStyle ?? this.headerStyle, + nestedHeaderStyle: nestedHeaderStyle ?? this.nestedHeaderStyle, tabsStyle: tabsStyle ?? this.tabsStyle, textFieldStyle: textFieldStyle ?? this.textFieldStyle, scaffoldStyle: scaffoldStyle ?? this.scaffoldStyle, @@ -162,6 +169,7 @@ final class FThemeData with Diagnosticable { ..add(DiagnosticsProperty('cardStyle', cardStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('dialogStyle', dialogStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('headerStyle', headerStyle, level: DiagnosticLevel.debug)) + ..add(DiagnosticsProperty('nestedHeaderStyle', nestedHeaderStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('tabsStyle', tabsStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('textFieldStyle', textFieldStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('scaffoldStyle', scaffoldStyle, level: DiagnosticLevel.debug)) @@ -182,6 +190,7 @@ final class FThemeData with Diagnosticable { cardStyle == other.cardStyle && dialogStyle == other.dialogStyle && headerStyle == other.headerStyle && + nestedHeaderStyle == other.nestedHeaderStyle && tabsStyle == other.tabsStyle && textFieldStyle == other.textFieldStyle && scaffoldStyle == other.scaffoldStyle && @@ -198,6 +207,7 @@ final class FThemeData with Diagnosticable { cardStyle.hashCode ^ dialogStyle.hashCode ^ headerStyle.hashCode ^ + nestedHeaderStyle.hashCode ^ tabsStyle.hashCode ^ textFieldStyle.hashCode ^ scaffoldStyle.hashCode ^ diff --git a/forui/lib/src/widgets/header/header.dart b/forui/lib/src/widgets/header/header.dart index d3e0c4f5e..63bc7ec72 100644 --- a/forui/lib/src/widgets/header/header.dart +++ b/forui/lib/src/widgets/header/header.dart @@ -10,13 +10,13 @@ part 'header_action.dart'; /// A header. /// -/// A header contains the page's title and navigation actions. It is typically used on pages at the root of the -/// navigation stack. +/// A header contains the page's title and navigation actions. +/// It is typically used on pages at the root of the navigation stack. /// /// See: /// * https://forui.dev/docs/header for working examples. /// * [FHeaderStyle] for customizing a header's appearance. -class FHeader extends StatelessWidget { +final class FHeader extends StatelessWidget { /// The header's style. Defaults to [FThemeData.headerStyle]. final FHeaderStyle? style; @@ -79,7 +79,7 @@ class FHeader extends StatelessWidget { child: title, ), ), - Row(children: actions), + Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), ], ), ), @@ -102,7 +102,10 @@ final class FHeaderStyle with Diagnosticable { final TextStyle titleTextStyle; /// The [FHeaderAction]'s style. - final FHeaderActionStyle action; + final FHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; /// The padding. final EdgeInsets padding; @@ -110,7 +113,8 @@ final class FHeaderStyle with Diagnosticable { /// Creates a [FHeaderStyle]. FHeaderStyle({ required this.titleTextStyle, - required this.action, + required this.actionStyle, + required this.actionSpacing, required this.padding, }); @@ -124,7 +128,8 @@ final class FHeaderStyle with Diagnosticable { fontWeight: FontWeight.w700, height: 1, ), - action = FHeaderActionStyle.inherit(colorScheme: colorScheme), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme), + actionSpacing = 10, padding = style.pagePadding.copyWith(bottom: 15); /// Returns a copy of this [FHeaderStyle] with the given properties replaced. @@ -145,12 +150,14 @@ final class FHeaderStyle with Diagnosticable { @useResult FHeaderStyle copyWith({ TextStyle? titleTextStyle, - FHeaderActionStyle? action, + FHeaderActionStyle? actionStyle, + double? actionSpacing, EdgeInsets? padding, }) => FHeaderStyle( titleTextStyle: titleTextStyle ?? this.titleTextStyle, - action: action ?? this.action, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, padding: padding ?? this.padding, ); @@ -159,7 +166,8 @@ final class FHeaderStyle with Diagnosticable { super.debugFillProperties(properties); properties ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) - ..add(DiagnosticsProperty('action', action)) + ..add(DiagnosticsProperty('action', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) ..add(DiagnosticsProperty('padding', padding)); } } diff --git a/forui/lib/src/widgets/header/header_action.dart b/forui/lib/src/widgets/header/header_action.dart index 9c16973af..64ebf5e59 100644 --- a/forui/lib/src/widgets/header/header_action.dart +++ b/forui/lib/src/widgets/header/header_action.dart @@ -31,20 +31,17 @@ class FHeaderAction extends StatelessWidget { @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle.action; + final style = this.style ?? context.theme.headerStyle.actionStyle; final enabled = onPress != null || onLongPress != null; - return Padding( - padding: style.padding, - child: MouseRegion( - cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, - child: FTappable( - onTap: onPress, - onLongPress: onLongPress, - child: icon( - height: style.size, - colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), - ), + return MouseRegion( + cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, + child: FTappable( + onTap: onPress, + onLongPress: onLongPress, + child: icon( + height: style.size, + colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), ), ), ); @@ -72,23 +69,18 @@ class FHeaderActionStyle with Diagnosticable { /// The icon's size. Defaults to 30. final double size; - /// The padding. Defaults to `EdgeInsets.only(left: 10)`. - final EdgeInsets padding; - /// Creates a [FHeaderActionStyle]. FHeaderActionStyle({ required this.enabledColor, required this.disabledColor, this.size = 30, - this.padding = const EdgeInsets.only(left: 10), }); /// Creates a [FHeaderActionStyle] that inherits its properties from the given [FColorScheme]. FHeaderActionStyle.inherit({required FColorScheme colorScheme}) : enabledColor = colorScheme.foreground, disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 30, - padding = const EdgeInsets.only(left: 10); + size = 30; /// Returns a copy of this [FHeaderActionStyle] with the given properties replaced. /// @@ -116,7 +108,6 @@ class FHeaderActionStyle with Diagnosticable { enabledColor: enabledColor ?? this.enabledColor, disabledColor: disabledColor ?? this.disabledColor, size: size ?? this.size, - padding: padding ?? this.padding, ); @override @@ -125,7 +116,6 @@ class FHeaderActionStyle with Diagnosticable { properties ..add(ColorProperty('enabledColor', enabledColor)) ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)) - ..add(DiagnosticsProperty('padding', padding, defaultValue: const EdgeInsets.only(left: 10))); + ..add(DoubleProperty('size', size, defaultValue: 30)); } } diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/nested_header/nested_header.dart new file mode 100644 index 000000000..987054c5b --- /dev/null +++ b/forui/lib/src/widgets/nested_header/nested_header.dart @@ -0,0 +1,202 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; + +import 'package:forui/forui.dart'; +import 'package:forui/src/foundation/tappable.dart'; +import 'package:meta/meta.dart'; + +part 'nested_header_action.dart'; + +/// A nested header. +/// +/// A nested header contains the page's title and navigation actions. +/// It is typically used on pages that are not at the root of the navigation stack. +/// +/// See: +/// * https://forui.dev/docs/nested-header for working examples. +/// * [FNestedHeaderStyle] for customizing a header's appearance. +final class FNestedHeader extends StatelessWidget { + /// The style. Defaults to [FThemeData.nestedHeaderStyle]. + final FNestedHeaderStyle? style; + + /// The title, aligned to the center. + /// + /// ## Contract: + /// Throws [AssertionError]: + /// * if [title] and [rawTitle] are both not null + /// * if [title] and [rawTitle] are both null + final String? title; + + /// The title, aligned to the center. + /// + /// ## Contract: + /// Throws [AssertionError]: + /// * if [title] and [rawTitle] are both not null + /// * if [title] and [rawTitle] are both null + final Widget? rawTitle; + + /// The actions, aligned to the left. Defaults to an empty list. + final List leftActions; + + /// The actions, aligned to the right. Defaults to an empty list. + final List rightActions; + + /// Creates a [FNestedHeader] with an [onPop] callback. + /// + /// ## Contract: + /// Throws [AssertionError] if: + /// * [title] and [rawTitle] are both not null. + FNestedHeader({ + required VoidCallback? onPop, + this.style, + this.title, + this.rawTitle, + this.rightActions = const [], + super.key, + }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'), + leftActions = [ + if (onPop != null) + FNestedHeaderAction( + icon: FAssets.icons.arrowLeft, + onPress: onPop, + ), + ]; + + /// Creates a [FNestedHeader]. + /// + /// ## Contract: + /// Throws [AssertionError] if: + /// * [title] and [rawTitle] are both not null. + const FNestedHeader.raw({ + this.style, + this.title, + this.rawTitle, + this.leftActions = const [], + this.rightActions = const [], + super.key, + }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.nestedHeaderStyle; + + final title = switch ((this.title, rawTitle)) { + (final String title, _) => Text(title), + (_, final Widget title) => title, + _ => const Placeholder(), + }; + + return SafeArea( + bottom: false, + child: Padding( + padding: style.padding, + child: Stack( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), + ], + ), + Positioned.fill( + child: Align( + child: DefaultTextStyle.merge( + overflow: TextOverflow.fade, + maxLines: 1, + softWrap: false, + style: style.titleTextStyle, + child: title, + ), + ), + ), + ], + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(StringProperty('title', title)) + ..add(DiagnosticsProperty('rawTitle', rawTitle)); + } +} + +/// [FNestedHeader]'s style. +final class FNestedHeaderStyle with Diagnosticable { + /// The title's [TextStyle]. + final TextStyle titleTextStyle; + + /// The [FHeaderAction]'s style for [FNestedHeader.leftActions] and [FNestedHeader.rightActions]. + final FNestedHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; + + /// The padding. + final EdgeInsets padding; + + /// Creates a [FNestedHeaderStyle]. + const FNestedHeaderStyle({ + required this.titleTextStyle, + required this.actionStyle, + required this.actionSpacing, + required this.padding, + }); + + /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. + FNestedHeaderStyle.inherit({ + required FColorScheme colorScheme, + required FTypography typography, + required FStyle style, + }) : titleTextStyle = typography.xl.copyWith( + color: colorScheme.foreground, + fontWeight: FontWeight.w600, + height: 1, + ), + actionStyle = FNestedHeaderActionStyle.inherit(colorScheme: colorScheme), + actionSpacing = 10, + padding = style.pagePadding.copyWith(bottom: 15); + + /// Returns a copy of this [FNestedHeaderStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FNestedHeaderStyle( + /// titleTextStyle: ..., + /// leftAction: ..., + /// ); + /// + /// final copy = style.copyWith( + /// leftAction: ..., + /// ); + /// + /// print(style.titleTextStyle == copy.titleTextStyle); // true + /// print(style.leftAction == copy.leftAction); // false + /// ``` + FNestedHeaderStyle copyWith({ + TextStyle? titleTextStyle, + FNestedHeaderActionStyle? actionStyle, + double? actionSpacing, + EdgeInsets? padding, + }) => + FNestedHeaderStyle( + titleTextStyle: titleTextStyle ?? this.titleTextStyle, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, + padding: padding ?? this.padding, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) + ..add(DiagnosticsProperty('actionStyle', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) + ..add(DiagnosticsProperty('padding', padding)); + } +} diff --git a/forui/lib/src/widgets/nested_header/nested_header_action.dart b/forui/lib/src/widgets/nested_header/nested_header_action.dart new file mode 100644 index 000000000..b385df0db --- /dev/null +++ b/forui/lib/src/widgets/nested_header/nested_header_action.dart @@ -0,0 +1,121 @@ +part of 'nested_header.dart'; + +/// A [FNestedHeader] action. +/// +/// If the [onPress] and [onLongPress] callbacks are null, then this action will be disabled, it will not react to touch. +class FNestedHeaderAction extends StatelessWidget { + /// The style. + final FNestedHeaderActionStyle? style; + + /// The icon. + final SvgAsset icon; + + /// A callback for when the button is pressed. + /// + /// The action will be disabled if both [onPress] and [onLongPress] are null. + final VoidCallback? onPress; + + /// A callback for when the button is long pressed. + /// + /// The action will be disabled if both [onPress] and [onLongPress] are null. + final VoidCallback? onLongPress; + + /// Creates a [FNestedHeaderAction] from the given SVG [icon]. + const FNestedHeaderAction({ + required this.icon, + required this.onPress, + this.onLongPress, + this.style, + super.key, + }); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.nestedHeaderStyle.actionStyle; + final enabled = onPress != null || onLongPress != null; + + return MouseRegion( + cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, + child: FTappable( + onTap: onPress, + onLongPress: onLongPress, + child: icon( + height: style.size, + colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(DiagnosticsProperty('icon', icon)) + ..add(DiagnosticsProperty('onPress', onPress)) + ..add(DiagnosticsProperty('onLongPress', onLongPress)); + } +} + +/// [FNestedHeaderAction]'s style. +class FNestedHeaderActionStyle with Diagnosticable { + /// The icon's color when this action is enabled. + final Color enabledColor; + + /// The icon's color when this action is disabled. + final Color disabledColor; + + /// The icon's size. Defaults to 20. + final double size; + + /// Creates a [FNestedHeaderActionStyle]. + FNestedHeaderActionStyle({ + required this.enabledColor, + required this.disabledColor, + this.size = 25, + }); + + /// Creates a [FNestedHeaderActionStyle] that inherits its properties from the given [FColorScheme]. + FNestedHeaderActionStyle.inherit({required FColorScheme colorScheme}) + : enabledColor = colorScheme.foreground, + disabledColor = colorScheme.foreground.withOpacity(0.5), + size = 25; + + /// Returns a copy of this [FNestedHeaderActionStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FNestedHeaderActionStyle( + /// enabledColor: Colors.black, + /// disabledColor: Colors.white, + /// ); + /// + /// final copy = style.copyWith( + /// disabledColor: Colors.blue, + /// ); + /// + /// print(copy.enabledColor); // black + /// print(copy.disabledColor); // blue + /// ``` + @useResult + FNestedHeaderActionStyle copyWith({ + Color? enabledColor, + Color? disabledColor, + double? size, + EdgeInsets? padding, + }) => + FNestedHeaderActionStyle( + enabledColor: enabledColor ?? this.enabledColor, + disabledColor: disabledColor ?? this.disabledColor, + size: size ?? this.size, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(ColorProperty('enabledColor', enabledColor)) + ..add(ColorProperty('disabledColor', disabledColor)) + ..add(DoubleProperty('size', size, defaultValue: 30)); + } +} From b9c962e56cf8a20cf782a28c04d2360b29bb2034 Mon Sep 17 00:00:00 2001 From: Joe Date: Fri, 28 Jun 2024 00:05:29 +0800 Subject: [PATCH 08/14] Add tests --- forui/CHANGELOG.md | 9 ++ .../golden/nested-header/zinc-dark-header.png | Bin 0 -> 28334 bytes .../zinc-dark-raw-constructor.png | Bin 0 -> 33831 bytes .../nested-header/zinc-dark-raw-title.png | Bin 0 -> 27510 bytes .../nested-header/zinc-light-header.png | Bin 0 -> 28168 bytes .../zinc-light-raw-constructor.png | Bin 0 -> 33644 bytes .../nested-header/zinc-light-raw-title.png | Bin 0 -> 27368 bytes .../widgets/header/header_golden_test.dart | 2 +- .../test/src/widgets/header/header_test.dart | 2 +- .../nested_header_golden_test.dart | 114 ++++++++++++++++++ .../nested_header/nested_header_test.dart | 41 +++++++ 11 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 forui/test/golden/nested-header/zinc-dark-header.png create mode 100644 forui/test/golden/nested-header/zinc-dark-raw-constructor.png create mode 100644 forui/test/golden/nested-header/zinc-dark-raw-title.png create mode 100644 forui/test/golden/nested-header/zinc-light-header.png create mode 100644 forui/test/golden/nested-header/zinc-light-raw-constructor.png create mode 100644 forui/test/golden/nested-header/zinc-light-raw-title.png create mode 100644 forui/test/src/widgets/nested_header/nested_header_golden_test.dart create mode 100644 forui/test/src/widgets/nested_header/nested_header_test.dart diff --git a/forui/CHANGELOG.md b/forui/CHANGELOG.md index 3a4ed739f..896d446c0 100644 --- a/forui/CHANGELOG.md +++ b/forui/CHANGELOG.md @@ -1,3 +1,12 @@ +## 0.2.0 + +* Add `NestedHeader` widget. + +### Breaking changes + +* `FHeaderActionStyle.action` parameter has been renamed to `FHeaderStyle.actionStyle`. +* `FHeaderActionStyle.padding` parameter has been moved to `FHeaderStyle.actionSpacing`. + ## 0.1.0 * Initial release! 🚀 diff --git a/forui/test/golden/nested-header/zinc-dark-header.png b/forui/test/golden/nested-header/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..5404af175d154d04f32e6813c8dbafc069418b7c GIT binary patch literal 28334 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 T=gwI=a^2JV#wW6Wv%C3Uv(Ol1 literal 0 HcmV?d00001 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-constructor.png b/forui/test/golden/nested-header/zinc-dark-raw-constructor.png new file mode 100644 index 0000000000000000000000000000000000000000..020000c67e6edcca243ea1138cfb1d48d62ce210 GIT binary patch literal 33831 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 literal 0 HcmV?d00001 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-title.png b/forui/test/golden/nested-header/zinc-dark-raw-title.png new file mode 100644 index 0000000000000000000000000000000000000000..aef0c48d45271e9b3a2ad8b45b00de611f8e7d1b GIT binary patch literal 27510 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 literal 0 HcmV?d00001 diff --git a/forui/test/golden/nested-header/zinc-light-raw-constructor.png b/forui/test/golden/nested-header/zinc-light-raw-constructor.png new file mode 100644 index 0000000000000000000000000000000000000000..9255de717e7e360e73c33f22746b9c2e988e821a GIT binary patch literal 33644 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 XCQnZsaeLi?mZK!Eb}9XW!NdOrcpF^l literal 0 HcmV?d00001 diff --git a/forui/test/golden/nested-header/zinc-light-raw-title.png b/forui/test/golden/nested-header/zinc-light-raw-title.png new file mode 100644 index 0000000000000000000000000000000000000000..218408e1139d84154fa0c87bf4877647e78022aa GIT binary patch literal 27368 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 FNestedHeader( + title: title, + rawTitle: rawTitle, + onPop: null, + ), + returnsNormally, + ); + }); + } + + for (final (title, rawTitle) in [ + (null, null), + ('', const SizedBox()), + ]) { + testWidgets('constructor throws error', (tester) async { + expect( + () => FNestedHeader( + title: title, + rawTitle: rawTitle, + onPop: () {}, + ), + throwsAssertionError, + ); + }); + } + }); +} From a4953ef7b16a9a0d9f833274f26f546ce2264d3f Mon Sep 17 00:00:00 2001 From: Joe Date: Fri, 28 Jun 2024 12:03:51 +0800 Subject: [PATCH 09/14] Add documentation --- .../forui___update_golden_test_images.xml | 8 -- .idea/runConfigurations/samples___run.xml | 1 + docs/.env.development | 3 +- docs/components/widget.tsx | 4 +- docs/pages/docs/button.mdx | 3 +- docs/pages/docs/header.mdx | 5 +- docs/pages/docs/nested-header.mdx | 81 ++++++++++++++++++ .../widgets/nested_header/nested_header.dart | 25 +----- .../nested_header/nested_header_action.dart | 26 ++++++ .../zinc-dark-raw-constructor.png | Bin 33831 -> 0 bytes .../nested-header/zinc-dark-raw-title.png | Bin 27510 -> 29778 bytes .../zinc-light-raw-constructor.png | Bin 33644 -> 0 bytes .../nested-header/zinc-light-raw-title.png | Bin 27368 -> 29696 bytes .../nested_header_golden_test.dart | 51 ++--------- .../nested_header/nested_header_test.dart | 2 - samples/lib/main.dart | 8 ++ samples/lib/widgets/header.dart | 29 +++---- samples/lib/widgets/nested_header.dart | 75 ++++++++++++++++ samples/pubspec.lock | 7 +- 19 files changed, 226 insertions(+), 102 deletions(-) delete mode 100644 .idea/runConfigurations/forui___update_golden_test_images.xml create mode 100644 docs/pages/docs/nested-header.mdx delete mode 100644 forui/test/golden/nested-header/zinc-dark-raw-constructor.png delete mode 100644 forui/test/golden/nested-header/zinc-light-raw-constructor.png create mode 100644 samples/lib/widgets/nested_header.dart diff --git a/.idea/runConfigurations/forui___update_golden_test_images.xml b/.idea/runConfigurations/forui___update_golden_test_images.xml deleted file mode 100644 index 5f492b8c1..000000000 --- a/.idea/runConfigurations/forui___update_golden_test_images.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/samples___run.xml b/.idea/runConfigurations/samples___run.xml index 2d69cd950..4014714a0 100644 --- a/.idea/runConfigurations/samples___run.xml +++ b/.idea/runConfigurations/samples___run.xml @@ -1,5 +1,6 @@ + diff --git a/docs/.env.development b/docs/.env.development index 809b1576c..680bb5f21 100644 --- a/docs/.env.development +++ b/docs/.env.development @@ -1,2 +1 @@ -NEXT_PUBLIC_DEMO_URL=https://dev.demo.forui.dev -NEXT_PUBLIC_DEMO_URL=http://localhost:51624 \ No newline at end of file +NEXT_PUBLIC_DEMO_URL=http://localhost:3001 diff --git a/docs/components/widget.tsx b/docs/components/widget.tsx index 3048f588f..a63826ec4 100644 --- a/docs/components/widget.tsx +++ b/docs/components/widget.tsx @@ -4,10 +4,10 @@ interface Props { name: string; variant?: string; height?: number; - query: Record; + query?: Record; } -export function Widget({name, variant = 'default', height = 200, query}: Props) { +export function Widget({name, variant = 'default', height = 200, query = {}}: Props) { const {resolvedTheme} = useTheme(); query['theme'] = `zinc-${resolvedTheme}`; diff --git a/docs/pages/docs/button.mdx b/docs/pages/docs/button.mdx index 0e046eb8d..36a85097d 100644 --- a/docs/pages/docs/button.mdx +++ b/docs/pages/docs/button.mdx @@ -34,9 +34,10 @@ FButton( ```dart FButton.raw( child: Text('Button'), - onPress: () {}; + onPress: () {}, ); ``` + ## Examples ### Primary diff --git a/docs/pages/docs/header.mdx b/docs/pages/docs/header.mdx index c7500eff2..d842dc704 100644 --- a/docs/pages/docs/header.mdx +++ b/docs/pages/docs/header.mdx @@ -3,10 +3,11 @@ import { Widget } from "../../components/widget"; # Header A header contains the page's title and navigation actions. +It is typically used on pages at the root of the navigation stack. - + ```dart @@ -45,4 +46,4 @@ FHeader( ), ], ) -``` \ No newline at end of file +``` diff --git a/docs/pages/docs/nested-header.mdx b/docs/pages/docs/nested-header.mdx new file mode 100644 index 000000000..101238060 --- /dev/null +++ b/docs/pages/docs/nested-header.mdx @@ -0,0 +1,81 @@ +import { Tabs } from 'nextra/components'; +import { Widget } from "../../components/widget"; + +# Nested Header +A nested header contains the page's title and actions (including pop navigation). +It is typically used on pages that are not at the root of the navigation stack. + + + + + + + ```dart + FNestedHeader( + title: 'Appointment', + leftActions: [ + FNestedHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FNestedHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +## Usage + +### `FNestedHeader(...)` + +```dart +FNestedHeader( + title: 'Appointment', + leftActions: [ + FNestedHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FNestedHeaderAction( + icon: FAssets.icons.info, + onPress: null, + ), + FNestedHeaderAction.x(onPress: () {}), + ], +); +``` + +## Examples + +### With X icon to exit + + + + + + ```dart + FNestedHeader( + title: 'Climate', + leftActions: [ + FNestedHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FNestedHeaderAction.x(onPress: () {}), + ], + ); + ``` + + diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/nested_header/nested_header.dart index 987054c5b..0bad5ace2 100644 --- a/forui/lib/src/widgets/nested_header/nested_header.dart +++ b/forui/lib/src/widgets/nested_header/nested_header.dart @@ -9,7 +9,7 @@ part 'nested_header_action.dart'; /// A nested header. /// -/// A nested header contains the page's title and navigation actions. +/// A nested header contains the page's title and actions (including pop navigation). /// It is typically used on pages that are not at the root of the navigation stack. /// /// See: @@ -41,33 +41,12 @@ final class FNestedHeader extends StatelessWidget { /// The actions, aligned to the right. Defaults to an empty list. final List rightActions; - /// Creates a [FNestedHeader] with an [onPop] callback. - /// - /// ## Contract: - /// Throws [AssertionError] if: - /// * [title] and [rawTitle] are both not null. - FNestedHeader({ - required VoidCallback? onPop, - this.style, - this.title, - this.rawTitle, - this.rightActions = const [], - super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'), - leftActions = [ - if (onPop != null) - FNestedHeaderAction( - icon: FAssets.icons.arrowLeft, - onPress: onPop, - ), - ]; - /// Creates a [FNestedHeader]. /// /// ## Contract: /// Throws [AssertionError] if: /// * [title] and [rawTitle] are both not null. - const FNestedHeader.raw({ + const FNestedHeader({ this.style, this.title, this.rawTitle, diff --git a/forui/lib/src/widgets/nested_header/nested_header_action.dart b/forui/lib/src/widgets/nested_header/nested_header_action.dart index b385df0db..9cdc26772 100644 --- a/forui/lib/src/widgets/nested_header/nested_header_action.dart +++ b/forui/lib/src/widgets/nested_header/nested_header_action.dart @@ -29,6 +29,32 @@ class FNestedHeaderAction extends StatelessWidget { super.key, }); + /// Creates a [FNestedHeaderAction] with [FAssets.icons.arrowLeft]. + factory FNestedHeaderAction.back({ + required VoidCallback? onPress, + FNestedHeaderActionStyle? style, + Key? key, + }) => + FNestedHeaderAction( + icon: FAssets.icons.arrowLeft, + onPress: onPress, + style: style, + key: key, + ); + + /// Creates a [FNestedHeaderAction] with [FAssets.icons.x]. + factory FNestedHeaderAction.x({ + required VoidCallback? onPress, + FNestedHeaderActionStyle? style, + Key? key, + }) => + FNestedHeaderAction( + icon: FAssets.icons.x, + onPress: onPress, + style: style, + key: key, + ); + @override Widget build(BuildContext context) { final style = this.style ?? context.theme.nestedHeaderStyle.actionStyle; diff --git a/forui/test/golden/nested-header/zinc-dark-raw-constructor.png b/forui/test/golden/nested-header/zinc-dark-raw-constructor.png deleted file mode 100644 index 020000c67e6edcca243ea1138cfb1d48d62ce210..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33831 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 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-title.png b/forui/test/golden/nested-header/zinc-dark-raw-title.png index aef0c48d45271e9b3a2ad8b45b00de611f8e7d1b..9eea2c8305d6589fe80b9a4bceac2a38026e132c 100644 GIT binary patch literal 29778 zcmeHQ`8$;R`=4_@crd;UGrR*%g{W}yx;fxzVFxaejbJXrK`#IJMZr(6pBsj zoccu+YWrmrYU{RbTi`ckl;z*x+br|HH^)PrAkY`oro;_@#Wuhq94+jtpN&${?VELdS-Wy_CT zU=ua6t7gM8Z6xf+z`$=Zy?yW+0TV{Vxey42bvrXoq%AHEZp#4Rid#4iT zH$N20)=0>$Dj|7jK$wb)1t z7Pa{Q$?(_X2#6FAJ6ayLEwuN*guDLM4{q{gDf-_WS?WepxLSBJe-fTT;Dy z1yQR{s8nj9=`o_Lj_p&mh_$sf`r@L3pkP1*#Zk`H)s@)R)>dM_fh4OY{Y}?q-{cR{l<+G?7MbZ zuU2+D6YJ{Y3eEG@-=6sX9uz8o;nlmzr@Y(wWHT8Z%~*D|u*C9h-MY0mc`i3CEzKRf zhRyBt9-5qN>+1F;(6n$LYzlcYGBVKJm2F>h8!)X*!reE&{r>B%-?&Ld)4%+Yzo

81D8eRr|fHd=MCj@vq9idq@y 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 literal 27510 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 XCQnZsaeLi?mZK!Eb}9XW!NdOrcpF^l diff --git a/forui/test/golden/nested-header/zinc-light-raw-title.png b/forui/test/golden/nested-header/zinc-light-raw-title.png index 218408e1139d84154fa0c87bf4877647e78022aa..fdcb32118f542c3d5f8a3103ecdf4a081d161089 100644 GIT binary patch literal 29696 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 FNestedHeader( title: title, rawTitle: rawTitle, - onPop: null, ), returnsNormally, ); @@ -31,7 +30,6 @@ void main() { () => FNestedHeader( title: title, rawTitle: rawTitle, - onPop: () {}, ), throwsAssertionError, ); diff --git a/samples/lib/main.dart b/samples/lib/main.dart index a0c62dbcf..08ce6eab2 100644 --- a/samples/lib/main.dart +++ b/samples/lib/main.dart @@ -62,6 +62,14 @@ class _AppRouter extends $_AppRouter { path: '/header/default', page: HeaderRoute.page, ), + AutoRoute( + path: '/nested-header/default', + page: NestedHeaderRoute.page, + ), + AutoRoute( + path: '/nested-header/x', + page: XNestedHeaderRoute.page, + ), AutoRoute( path: '/tabs/default', page: TabsRoute.page, diff --git a/samples/lib/widgets/header.dart b/samples/lib/widgets/header.dart index 88f763b8f..ce3324781 100644 --- a/samples/lib/widgets/header.dart +++ b/samples/lib/widgets/header.dart @@ -12,20 +12,17 @@ class HeaderPage extends SampleScaffold { }); @override - Widget child(BuildContext context) => Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FHeader( - title: 'Edit Alarm', - actions: [ - FHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: () {}, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ), - ); + Widget child(BuildContext context) => FHeader( + title: 'Edit Alarm', + actions: [ + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); } diff --git a/samples/lib/widgets/nested_header.dart b/samples/lib/widgets/nested_header.dart new file mode 100644 index 000000000..e713ee1b8 --- /dev/null +++ b/samples/lib/widgets/nested_header.dart @@ -0,0 +1,75 @@ +import 'package:flutter/widgets.dart'; + +import 'package:auto_route/auto_route.dart'; +import 'package:forui/forui.dart'; + +import 'package:forui_samples/sample_scaffold.dart'; + +@RoutePage() +class NestedHeaderPage extends SampleScaffold { + NestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FNestedHeader( + title: 'Appointment', + leftActions: [ + FNestedHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FNestedHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); +} + +@RoutePage() +class XNestedHeaderPage extends SampleScaffold { + XNestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FNestedHeader( + title: 'Climate', + leftActions: [ + FNestedHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FNestedHeaderAction.x(onPress: () {}), + ], + ); +} + +void t() { +FNestedHeader( + title: 'Climate', + leftActions: [ + FNestedHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FNestedHeaderAction.x(onPress: () {}), + ], +); +} diff --git a/samples/pubspec.lock b/samples/pubspec.lock index 19ef9c15f..1968c4c27 100644 --- a/samples/pubspec.lock +++ b/samples/pubspec.lock @@ -271,9 +271,10 @@ packages: forui_assets: dependency: transitive description: - path: "../forui_assets" - relative: true - source: path + name: forui_assets + sha256: a68dcbb7e6f669f495a0bcf6464f6e28197744318aabeb28aa0bb3c8435cde14 + url: "https://pub.dev" + source: hosted version: "0.1.0" frontend_server_client: dependency: transitive From 86902df908cdda67b7da390cc81c9b633f3c1df4 Mon Sep 17 00:00:00 2001 From: kawaijoe Date: Fri, 28 Jun 2024 04:04:48 +0000 Subject: [PATCH 10/14] Commit from GitHub Actions (Forui Presubmit) --- forui/example/lib/example.dart | 74 +++++++++---------- .../widgets/nested_header/nested_header.dart | 3 +- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/forui/example/lib/example.dart b/forui/example/lib/example.dart index 643295ef5..fe4a300cd 100644 --- a/forui/example/lib/example.dart +++ b/forui/example/lib/example.dart @@ -17,46 +17,46 @@ class _ExampleState extends State { @override Widget build(BuildContext context) => Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 10), - Expanded( - child: FTabs( - tabs: [ - FTabEntry( - label: 'Account', - content: FCard( - title: 'Account', - subtitle: 'Make changes to your account here. Click save when you are done.', - child: Column( - children: [ - Container( - color: Colors.red, - height: 100, - ), - ], + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Expanded( + child: FTabs( + tabs: [ + FTabEntry( + label: 'Account', + content: FCard( + title: 'Account', + subtitle: 'Make changes to your account here. Click save when you are done.', + child: Column( + children: [ + Container( + color: Colors.red, + height: 100, + ), + ], + ), ), ), - ), - FTabEntry( - label: 'Password', - content: FCard( - title: 'Password', - subtitle: 'Change your password here. After saving, you will be logged out.', - child: Column( - children: [ - Container( - color: Colors.blue, - height: 100, - ) - ], + FTabEntry( + label: 'Password', + content: FCard( + title: 'Password', + subtitle: 'Change your password here. After saving, you will be logged out.', + child: Column( + children: [ + Container( + color: Colors.blue, + height: 100, + ) + ], + ), ), ), - ), - ], + ], + ), ), - ), - ], - ); + ], + ); } diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/nested_header/nested_header.dart index 0bad5ace2..c4caaa9c3 100644 --- a/forui/lib/src/widgets/nested_header/nested_header.dart +++ b/forui/lib/src/widgets/nested_header/nested_header.dart @@ -1,9 +1,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; +import 'package:meta/meta.dart'; + import 'package:forui/forui.dart'; import 'package:forui/src/foundation/tappable.dart'; -import 'package:meta/meta.dart'; part 'nested_header_action.dart'; From e79cdba18421e86a682e6566e8bb73ae8db4fe27 Mon Sep 17 00:00:00 2001 From: Joe Date: Sat, 29 Jun 2024 16:18:54 +0800 Subject: [PATCH 11/14] Refactor code to use Header.nested() --- docs/pages/docs/header.mdx | 136 +++++++++++++- docs/pages/docs/nested-header.mdx | 81 -------- docs/pages/docs/scaffold.mdx | 4 +- forui/example/lib/main.dart | 2 +- forui/lib/forui.dart | 1 - forui/lib/src/theme/theme_data.dart | 9 - forui/lib/src/widgets/header/header.dart | 177 ++++++------------ .../lib/src/widgets/header/header_action.dart | 66 ++++++- .../nested_header.dart | 96 ++++------ forui/lib/src/widgets/header/root_header.dart | 156 +++++++++++++++ .../nested_header/nested_header_action.dart | 147 --------------- .../golden/header/nested/zinc-dark-header.png | Bin 0 -> 29211 bytes .../nested}/zinc-light-header.png | Bin 28168 -> 29077 bytes .../golden/header/root/zinc-dark-header.png | Bin 0 -> 55550 bytes .../golden/header/root/zinc-light-header.png | Bin 0 -> 54542 bytes forui/test/golden/header/zinc-dark-header.png | Bin 45617 -> 0 bytes .../golden/header/zinc-dark-raw-title.png | Bin 28218 -> 0 bytes .../test/golden/header/zinc-light-header.png | Bin 44935 -> 0 bytes .../golden/header/zinc-light-raw-title.png | Bin 28143 -> 0 bytes .../golden/nested-header/zinc-dark-header.png | Bin 28334 -> 0 bytes .../nested-header/zinc-dark-raw-title.png | Bin 29778 -> 0 bytes .../nested-header/zinc-light-raw-title.png | Bin 29696 -> 0 bytes .../test/src/widgets/header/header_test.dart | 39 ---- .../header/nested_header_golden_test.dart | 48 +++++ ...test.dart => root_header_golden_test.dart} | 37 +--- .../nested_header_golden_test.dart | 79 -------- .../nested_header/nested_header_test.dart | 39 ---- samples/lib/main.dart | 6 +- samples/lib/widgets/header.dart | 56 +++++- samples/lib/widgets/nested_header.dart | 75 -------- samples/lib/widgets/scaffold.dart | 2 +- 31 files changed, 557 insertions(+), 699 deletions(-) delete mode 100644 docs/pages/docs/nested-header.mdx rename forui/lib/src/widgets/{nested_header => header}/nested_header.dart (62%) create mode 100644 forui/lib/src/widgets/header/root_header.dart delete mode 100644 forui/lib/src/widgets/nested_header/nested_header_action.dart create mode 100644 forui/test/golden/header/nested/zinc-dark-header.png rename forui/test/golden/{nested-header => header/nested}/zinc-light-header.png (50%) create mode 100644 forui/test/golden/header/root/zinc-dark-header.png create mode 100644 forui/test/golden/header/root/zinc-light-header.png delete mode 100644 forui/test/golden/header/zinc-dark-header.png delete mode 100644 forui/test/golden/header/zinc-dark-raw-title.png delete mode 100644 forui/test/golden/header/zinc-light-header.png delete mode 100644 forui/test/golden/header/zinc-light-raw-title.png delete mode 100644 forui/test/golden/nested-header/zinc-dark-header.png delete mode 100644 forui/test/golden/nested-header/zinc-dark-raw-title.png delete mode 100644 forui/test/golden/nested-header/zinc-light-raw-title.png delete mode 100644 forui/test/src/widgets/header/header_test.dart create mode 100644 forui/test/src/widgets/header/nested_header_golden_test.dart rename forui/test/src/widgets/header/{header_golden_test.dart => root_header_golden_test.dart} (54%) delete mode 100644 forui/test/src/widgets/nested_header/nested_header_golden_test.dart delete mode 100644 forui/test/src/widgets/nested_header/nested_header_test.dart delete mode 100644 samples/lib/widgets/nested_header.dart diff --git a/docs/pages/docs/header.mdx b/docs/pages/docs/header.mdx index d842dc704..dea4c9ac6 100644 --- a/docs/pages/docs/header.mdx +++ b/docs/pages/docs/header.mdx @@ -12,7 +12,7 @@ It is typically used on pages at the root of the navigation stack. ```dart FHeader( - title: 'Edit Alarm', + title: const Text('Edit Alarm'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -23,18 +23,48 @@ It is typically used on pages at the root of the navigation stack. onPress: () {}, ), ], - ) + ); ``` +## Nested Header + +It is typically used on nested pages or sheets. + + + + + + + ```dart + FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + ## Usage ### `FHeader(...)` ```dart FHeader( - title: 'Edit Alarm', + title: const Text('Title'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -45,5 +75,103 @@ FHeader( onPress: () {}, ), ], -) +); ``` + +### `FHeader.nested(...)` + +```dart +FHeader.nested( + title: const Text('Title'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction.x(onPress: () {}), + ], +); +``` + +## Examples + +### Header + + + + + + ```dart + FHeader( + title: const Text('Edit Alarm'), + actions: [ + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +### Nested Header with back icon + + + + + + ```dart + FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +### Nested Header with X icon + + + + + + ```dart + FHeader.nested( + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], + ); + ``` + + diff --git a/docs/pages/docs/nested-header.mdx b/docs/pages/docs/nested-header.mdx deleted file mode 100644 index 101238060..000000000 --- a/docs/pages/docs/nested-header.mdx +++ /dev/null @@ -1,81 +0,0 @@ -import { Tabs } from 'nextra/components'; -import { Widget } from "../../components/widget"; - -# Nested Header -A nested header contains the page's title and actions (including pop navigation). -It is typically used on pages that are not at the root of the navigation stack. - - - - - - - ```dart - FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ); - ``` - - - -## Usage - -### `FNestedHeader(...)` - -```dart -FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: null, - ), - FNestedHeaderAction.x(onPress: () {}), - ], -); -``` - -## Examples - -### With X icon to exit - - - - - - ```dart - FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ); - ``` - - diff --git a/docs/pages/docs/scaffold.mdx b/docs/pages/docs/scaffold.mdx index 2b46303e2..af16760f5 100644 --- a/docs/pages/docs/scaffold.mdx +++ b/docs/pages/docs/scaffold.mdx @@ -12,7 +12,7 @@ Creates a visual scaffold for Forui widgets. ```dart FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, @@ -63,7 +63,7 @@ Creates a visual scaffold for Forui widgets. ```dart FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, diff --git a/forui/example/lib/main.dart b/forui/example/lib/main.dart index 22a3ebafe..c9a91b563 100644 --- a/forui/example/lib/main.dart +++ b/forui/example/lib/main.dart @@ -19,7 +19,7 @@ class Application extends StatelessWidget { data: FThemes.zinc.light, child: FScaffold( header: FHeader( - title: 'Example Example Example Example', + title: const Text('Example Example Example Example'), actions: [ FHeaderAction( icon: FAssets.icons.plus, diff --git a/forui/lib/forui.dart b/forui/lib/forui.dart index 82ce85605..a9e3d7982 100644 --- a/forui/lib/forui.dart +++ b/forui/lib/forui.dart @@ -25,7 +25,6 @@ export 'src/widgets/button/button.dart' hide FButtonContent, Variant; export 'src/widgets/card/card.dart' hide FCardContent; export 'src/widgets/dialog/dialog.dart' hide FDialogContent, FHorizontalDialogContent, FVerticalDialogContent; export 'src/widgets/header/header.dart'; -export 'src/widgets/nested_header/nested_header.dart'; export 'src/widgets/tabs/tabs.dart'; export 'src/widgets/text_field/text_field.dart'; export 'src/widgets/scaffold.dart'; diff --git a/forui/lib/src/theme/theme_data.dart b/forui/lib/src/theme/theme_data.dart index 33b37ff89..0d5f6e41b 100644 --- a/forui/lib/src/theme/theme_data.dart +++ b/forui/lib/src/theme/theme_data.dart @@ -40,9 +40,6 @@ final class FThemeData with Diagnosticable { /// The header styles. final FHeaderStyle headerStyle; - /// The nested header styles. - final FNestedHeaderStyle nestedHeaderStyle; - /// The tabs styles. final FTabsStyle tabsStyle; @@ -71,7 +68,6 @@ final class FThemeData with Diagnosticable { required this.cardStyle, required this.dialogStyle, required this.headerStyle, - required this.nestedHeaderStyle, required this.tabsStyle, required this.textFieldStyle, required this.scaffoldStyle, @@ -98,7 +94,6 @@ final class FThemeData with Diagnosticable { cardStyle: FCardStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), dialogStyle: FDialogStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), headerStyle: FHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), - nestedHeaderStyle: FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), tabsStyle: FTabsStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), textFieldStyle: FTextFieldStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), scaffoldStyle: FScaffoldStyle.inherit(colorScheme: colorScheme, style: style), @@ -149,7 +144,6 @@ final class FThemeData with Diagnosticable { cardStyle: cardStyle ?? this.cardStyle, dialogStyle: dialogStyle ?? this.dialogStyle, headerStyle: headerStyle ?? this.headerStyle, - nestedHeaderStyle: nestedHeaderStyle ?? this.nestedHeaderStyle, tabsStyle: tabsStyle ?? this.tabsStyle, textFieldStyle: textFieldStyle ?? this.textFieldStyle, scaffoldStyle: scaffoldStyle ?? this.scaffoldStyle, @@ -169,7 +163,6 @@ final class FThemeData with Diagnosticable { ..add(DiagnosticsProperty('cardStyle', cardStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('dialogStyle', dialogStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('headerStyle', headerStyle, level: DiagnosticLevel.debug)) - ..add(DiagnosticsProperty('nestedHeaderStyle', nestedHeaderStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('tabsStyle', tabsStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('textFieldStyle', textFieldStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('scaffoldStyle', scaffoldStyle, level: DiagnosticLevel.debug)) @@ -190,7 +183,6 @@ final class FThemeData with Diagnosticable { cardStyle == other.cardStyle && dialogStyle == other.dialogStyle && headerStyle == other.headerStyle && - nestedHeaderStyle == other.nestedHeaderStyle && tabsStyle == other.tabsStyle && textFieldStyle == other.textFieldStyle && scaffoldStyle == other.scaffoldStyle && @@ -207,7 +199,6 @@ final class FThemeData with Diagnosticable { cardStyle.hashCode ^ dialogStyle.hashCode ^ headerStyle.hashCode ^ - nestedHeaderStyle.hashCode ^ tabsStyle.hashCode ^ textFieldStyle.hashCode ^ scaffoldStyle.hashCode ^ diff --git a/forui/lib/src/widgets/header/header.dart b/forui/lib/src/widgets/header/header.dart index 63bc7ec72..1a7c32faf 100644 --- a/forui/lib/src/widgets/header/header.dart +++ b/forui/lib/src/widgets/header/header.dart @@ -8,166 +8,105 @@ import 'package:forui/src/foundation/tappable.dart'; part 'header_action.dart'; +part 'root_header.dart'; + +part 'nested_header.dart'; + /// A header. /// -/// A header contains the page's title and navigation actions. -/// It is typically used on pages at the root of the navigation stack. +/// A header contains the page's title and actions. + /// /// See: /// * https://forui.dev/docs/header for working examples. /// * [FHeaderStyle] for customizing a header's appearance. -final class FHeader extends StatelessWidget { - /// The header's style. Defaults to [FThemeData.headerStyle]. - final FHeaderStyle? style; +sealed class FHeader extends StatelessWidget { + const FHeader._({super.key}); - /// The title, aligned to the left. + /// Creates a header. /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final String? title; - - /// The title, aligned to the left. + /// It is typically used on pages at the root of the navigation stack. + const factory FHeader({ + required Widget title, + FRootHeaderStyle? style, + List actions, + Key? key, + }) = _FRootHeader; + + /// Creates a nested header. /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final Widget? rawTitle; - - /// The actions, aligned to the right. Defaults to an empty list. - final List actions; - - /// Creates a [FHeader]. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - const FHeader({ - this.style, - this.title, - this.rawTitle, - this.actions = const [], - super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); - - @override - Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle; - - final title = switch ((this.title, rawTitle)) { - (final String title, _) => Text(title), - (_, final Widget title) => title, - _ => const Placeholder(), - }; - - return SafeArea( - bottom: false, - child: Padding( - padding: style.padding, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: DefaultTextStyle.merge( - overflow: TextOverflow.fade, - maxLines: 1, - softWrap: false, - style: style.titleTextStyle, - child: title, - ), - ), - Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), - ], - ), - ), - ); - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(DiagnosticsProperty('style', style)) - ..add(StringProperty('title', title)) - ..add(IterableProperty('actions', actions)); - } + /// It is typically used on pages NOT at the root of the navigation stack. + const factory FHeader.nested({ + required Widget title, + FNestedHeaderStyle? style, + List leftActions, + List rightActions, + Key? key, + }) = _FNestedHeader; } /// [FHeader]'s style. final class FHeaderStyle with Diagnosticable { - /// The title's [TextStyle]. - final TextStyle titleTextStyle; - - /// The [FHeaderAction]'s style. - final FHeaderActionStyle actionStyle; + /// The root header style. + final FRootHeaderStyle rootStyle; - /// The spacing between [FHeaderAction]s. - final double actionSpacing; - - /// The padding. - final EdgeInsets padding; + /// The nested header style. + final FNestedHeaderStyle nestedStyle; /// Creates a [FHeaderStyle]. - FHeaderStyle({ - required this.titleTextStyle, - required this.actionStyle, - required this.actionSpacing, - required this.padding, + const FHeaderStyle({ + required this.rootStyle, + required this.nestedStyle, }); - /// Creates a [FHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. + /// Creates a [FRootHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. FHeaderStyle.inherit({ required FColorScheme colorScheme, required FTypography typography, required FStyle style, - }) : titleTextStyle = typography.xl3.copyWith( - color: colorScheme.foreground, - fontWeight: FontWeight.w700, - height: 1, - ), - actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme), - actionSpacing = 10, - padding = style.pagePadding.copyWith(bottom: 15); + }) : rootStyle = FRootHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), + nestedStyle = FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style); /// Returns a copy of this [FHeaderStyle] with the given properties replaced. /// /// ```dart /// final style = FHeaderStyle( - /// titleTextStyle: ..., - /// action: ..., + /// rootStyle: ..., + /// nestedStyle: ..., /// ); /// /// final copy = style.copyWith( - /// action: ..., + /// nestedStyle: ..., /// ); /// - /// print(style.titleTextStyle == copy.titleTextStyle); // true - /// print(style.action == copy.action); // false + /// print(style.rootStyle == copy.rootStyle); // true + /// print(style.nestedStyle == copy.nestedStyle); // false /// ``` - @useResult FHeaderStyle copyWith({ - TextStyle? titleTextStyle, - FHeaderActionStyle? actionStyle, - double? actionSpacing, - EdgeInsets? padding, + FRootHeaderStyle? rootStyle, + FNestedHeaderStyle? nestedStyle, }) => FHeaderStyle( - titleTextStyle: titleTextStyle ?? this.titleTextStyle, - actionStyle: actionStyle ?? this.actionStyle, - actionSpacing: actionSpacing ?? this.actionSpacing, - padding: padding ?? this.padding, + rootStyle: rootStyle ?? this.rootStyle, + nestedStyle: nestedStyle ?? this.nestedStyle, ); @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties - ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) - ..add(DiagnosticsProperty('action', actionStyle)) - ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) - ..add(DiagnosticsProperty('padding', padding)); + ..add(DiagnosticsProperty('rootStyle', rootStyle)) + ..add(DiagnosticsProperty('nestedStyle', nestedStyle)); } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FHeaderStyle && + runtimeType == other.runtimeType && + rootStyle == other.rootStyle && + nestedStyle == other.nestedStyle; + + @override + int get hashCode => rootStyle.hashCode ^ nestedStyle.hashCode; } diff --git a/forui/lib/src/widgets/header/header_action.dart b/forui/lib/src/widgets/header/header_action.dart index 64ebf5e59..15ed8471a 100644 --- a/forui/lib/src/widgets/header/header_action.dart +++ b/forui/lib/src/widgets/header/header_action.dart @@ -29,9 +29,35 @@ class FHeaderAction extends StatelessWidget { super.key, }); + /// Creates a [FHeaderAction] with [FAssets.icons.arrowLeft]. + factory FHeaderAction.back({ + required VoidCallback? onPress, + FHeaderActionStyle? style, + Key? key, + }) => + FHeaderAction( + icon: FAssets.icons.arrowLeft, + onPress: onPress, + style: style, + key: key, + ); + + /// Creates a [FHeaderAction] with [FAssets.icons.x]. + factory FHeaderAction.x({ + required VoidCallback? onPress, + FHeaderActionStyle? style, + Key? key, + }) => + FHeaderAction( + icon: FAssets.icons.x, + onPress: onPress, + style: style, + key: key, + ); + @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle.actionStyle; + final style = FHeaderActionStyle._of(context); final enabled = onPress != null || onLongPress != null; return MouseRegion( @@ -60,27 +86,35 @@ class FHeaderAction extends StatelessWidget { /// [FHeaderAction]'s style. class FHeaderActionStyle with Diagnosticable { + @useResult + static FHeaderActionStyle _of(BuildContext context) => + context.dependOnInheritedWidgetOfExactType<_InheritedActionStyle>()?.style ?? + context.theme.headerStyle.rootStyle.actionStyle; + /// The icon's color when this action is enabled. final Color enabledColor; /// The icon's color when this action is disabled. final Color disabledColor; - /// The icon's size. Defaults to 30. + /// The icon's size. + /// + /// Defaults to: + /// * 30 for [FHeader]. + /// * 25 for [FHeader.nested] final double size; /// Creates a [FHeaderActionStyle]. FHeaderActionStyle({ required this.enabledColor, required this.disabledColor, - this.size = 30, + required this.size, }); /// Creates a [FHeaderActionStyle] that inherits its properties from the given [FColorScheme]. - FHeaderActionStyle.inherit({required FColorScheme colorScheme}) + FHeaderActionStyle.inherit({required FColorScheme colorScheme, required this.size}) : enabledColor = colorScheme.foreground, - disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 30; + disabledColor = colorScheme.foreground.withOpacity(0.5); /// Returns a copy of this [FHeaderActionStyle] with the given properties replaced. /// @@ -116,6 +150,24 @@ class FHeaderActionStyle with Diagnosticable { properties ..add(ColorProperty('enabledColor', enabledColor)) ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)); + ..add(DoubleProperty('size', size)); + } +} + +class _InheritedActionStyle extends InheritedWidget { + final FHeaderActionStyle style; + + const _InheritedActionStyle({ + required this.style, + required super.child, + }); + + @override + bool updateShouldNotify(_InheritedActionStyle oldWidget) => style != oldWidget.style; + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('style', style)); } } diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/header/nested_header.dart similarity index 62% rename from forui/lib/src/widgets/nested_header/nested_header.dart rename to forui/lib/src/widgets/header/nested_header.dart index c4caaa9c3..93d81c196 100644 --- a/forui/lib/src/widgets/nested_header/nested_header.dart +++ b/forui/lib/src/widgets/header/nested_header.dart @@ -1,12 +1,4 @@ -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; - -import 'package:meta/meta.dart'; - -import 'package:forui/forui.dart'; -import 'package:forui/src/foundation/tappable.dart'; - -part 'nested_header_action.dart'; +part of 'header.dart'; /// A nested header. /// @@ -14,27 +6,14 @@ part 'nested_header_action.dart'; /// It is typically used on pages that are not at the root of the navigation stack. /// /// See: -/// * https://forui.dev/docs/nested-header for working examples. +/// * https://forui.dev/docs/header for working examples. /// * [FNestedHeaderStyle] for customizing a header's appearance. -final class FNestedHeader extends StatelessWidget { - /// The style. Defaults to [FThemeData.nestedHeaderStyle]. +final class _FNestedHeader extends FHeader { + /// The style. Defaults to [FThemeData.headerStyle.nestedStyle]. final FNestedHeaderStyle? style; /// The title, aligned to the center. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final String? title; - - /// The title, aligned to the center. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final Widget? rawTitle; + final Widget title; /// The actions, aligned to the left. Defaults to an empty list. final List leftActions; @@ -42,29 +21,18 @@ final class FNestedHeader extends StatelessWidget { /// The actions, aligned to the right. Defaults to an empty list. final List rightActions; - /// Creates a [FNestedHeader]. - /// - /// ## Contract: - /// Throws [AssertionError] if: - /// * [title] and [rawTitle] are both not null. - const FNestedHeader({ + /// Creates a [_FNestedHeader]. + const _FNestedHeader({ + required this.title, this.style, - this.title, - this.rawTitle, this.leftActions = const [], this.rightActions = const [], super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); + }) : super._(); @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.nestedHeaderStyle; - - final title = switch ((this.title, rawTitle)) { - (final String title, _) => Text(title), - (_, final Widget title) => title, - _ => const Placeholder(), - }; + final style = this.style ?? context.theme.headerStyle.nestedStyle; return SafeArea( bottom: false, @@ -72,12 +40,15 @@ final class FNestedHeader extends StatelessWidget { padding: style.padding, child: Stack( children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), - Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), - ], + _InheritedActionStyle( + style: style.actionStyle, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), + ], + ), ), Positioned.fill( child: Align( @@ -101,18 +72,18 @@ final class FNestedHeader extends StatelessWidget { super.debugFillProperties(properties); properties ..add(DiagnosticsProperty('style', style)) - ..add(StringProperty('title', title)) - ..add(DiagnosticsProperty('rawTitle', rawTitle)); + ..add(IterableProperty('leftActions', leftActions)) + ..add(IterableProperty('rightActions', rightActions)); } } -/// [FNestedHeader]'s style. +/// [_FNestedHeader]'s style. final class FNestedHeaderStyle with Diagnosticable { /// The title's [TextStyle]. final TextStyle titleTextStyle; - /// The [FHeaderAction]'s style for [FNestedHeader.leftActions] and [FNestedHeader.rightActions]. - final FNestedHeaderActionStyle actionStyle; + /// The [FHeaderAction]'s style for [_FNestedHeader.leftActions] and [_FNestedHeader.rightActions]. + final FHeaderActionStyle actionStyle; /// The spacing between [FHeaderAction]s. final double actionSpacing; @@ -128,7 +99,7 @@ final class FNestedHeaderStyle with Diagnosticable { required this.padding, }); - /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. + /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. FNestedHeaderStyle.inherit({ required FColorScheme colorScheme, required FTypography typography, @@ -138,7 +109,7 @@ final class FNestedHeaderStyle with Diagnosticable { fontWeight: FontWeight.w600, height: 1, ), - actionStyle = FNestedHeaderActionStyle.inherit(colorScheme: colorScheme), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme, size: 25), actionSpacing = 10, padding = style.pagePadding.copyWith(bottom: 15); @@ -159,7 +130,7 @@ final class FNestedHeaderStyle with Diagnosticable { /// ``` FNestedHeaderStyle copyWith({ TextStyle? titleTextStyle, - FNestedHeaderActionStyle? actionStyle, + FHeaderActionStyle? actionStyle, double? actionSpacing, EdgeInsets? padding, }) => @@ -179,4 +150,17 @@ final class FNestedHeaderStyle with Diagnosticable { ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) ..add(DiagnosticsProperty('padding', padding)); } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FNestedHeaderStyle && + runtimeType == other.runtimeType && + titleTextStyle == other.titleTextStyle && + actionStyle == other.actionStyle && + actionSpacing == other.actionSpacing && + padding == other.padding; + + @override + int get hashCode => titleTextStyle.hashCode ^ actionStyle.hashCode ^ actionSpacing.hashCode ^ padding.hashCode; } diff --git a/forui/lib/src/widgets/header/root_header.dart b/forui/lib/src/widgets/header/root_header.dart new file mode 100644 index 000000000..76ae91489 --- /dev/null +++ b/forui/lib/src/widgets/header/root_header.dart @@ -0,0 +1,156 @@ +part of 'header.dart'; + +/// A root header. +/// +/// A root header contains the page's title and actions. +/// It is typically used on pages at the root of the navigation stack. +/// +/// See: +/// * https://forui.dev/docs/header for working examples. +/// * [FRootHeaderStyle] for customizing a header's appearance. +final class _FRootHeader extends FHeader { + /// The header's style. Defaults to [FThemeData.headerStyle]. + final FRootHeaderStyle? style; + + /// The title, aligned to the left. + final Widget title; + + /// The actions, aligned to the right. Defaults to an empty list. + final List actions; + + /// Creates a [FHeader]. + const _FRootHeader({ + required this.title, + this.style, + this.actions = const [], + super.key, + }) : super._(); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.headerStyle.rootStyle; + + return SafeArea( + bottom: false, + child: Padding( + padding: style.padding, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: DefaultTextStyle.merge( + overflow: TextOverflow.fade, + maxLines: 1, + softWrap: false, + style: style.titleTextStyle, + child: title, + ), + ), + _InheritedActionStyle( + style: style.actionStyle, + child: Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + ), + ], + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(DiagnosticsProperty('title', title)) + ..add(IterableProperty('actions', actions)); + } +} + +/// [_FRootHeader]'s style. +final class FRootHeaderStyle with Diagnosticable { + /// The title's [TextStyle]. + final TextStyle titleTextStyle; + + /// The [FHeaderAction]'s style. + final FHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; + + /// The padding. + final EdgeInsets padding; + + /// Creates a [FRootHeaderStyle]. + FRootHeaderStyle({ + required this.titleTextStyle, + required this.actionStyle, + required this.actionSpacing, + required this.padding, + }); + + /// Creates a [FRootHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. + FRootHeaderStyle.inherit({ + required FColorScheme colorScheme, + required FTypography typography, + required FStyle style, + }) : titleTextStyle = typography.xl3.copyWith( + color: colorScheme.foreground, + fontWeight: FontWeight.w700, + height: 1, + ), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme, size: 30), + actionSpacing = 10, + padding = style.pagePadding.copyWith(bottom: 15); + + /// Returns a copy of this [FRootHeaderStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FHeaderStyle( + /// titleTextStyle: ..., + /// action: ..., + /// ); + /// + /// final copy = style.copyWith( + /// action: ..., + /// ); + /// + /// print(style.titleTextStyle == copy.titleTextStyle); // true + /// print(style.action == copy.action); // false + /// ``` + @useResult + FRootHeaderStyle copyWith({ + TextStyle? titleTextStyle, + FHeaderActionStyle? actionStyle, + double? actionSpacing, + EdgeInsets? padding, + }) => + FRootHeaderStyle( + titleTextStyle: titleTextStyle ?? this.titleTextStyle, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, + padding: padding ?? this.padding, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) + ..add(DiagnosticsProperty('action', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) + ..add(DiagnosticsProperty('padding', padding)); + } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FRootHeaderStyle && + runtimeType == other.runtimeType && + titleTextStyle == other.titleTextStyle && + actionStyle == other.actionStyle && + actionSpacing == other.actionSpacing && + padding == other.padding; + + @override + int get hashCode => titleTextStyle.hashCode ^ actionStyle.hashCode ^ actionSpacing.hashCode ^ padding.hashCode; +} diff --git a/forui/lib/src/widgets/nested_header/nested_header_action.dart b/forui/lib/src/widgets/nested_header/nested_header_action.dart deleted file mode 100644 index 9cdc26772..000000000 --- a/forui/lib/src/widgets/nested_header/nested_header_action.dart +++ /dev/null @@ -1,147 +0,0 @@ -part of 'nested_header.dart'; - -/// A [FNestedHeader] action. -/// -/// If the [onPress] and [onLongPress] callbacks are null, then this action will be disabled, it will not react to touch. -class FNestedHeaderAction extends StatelessWidget { - /// The style. - final FNestedHeaderActionStyle? style; - - /// The icon. - final SvgAsset icon; - - /// A callback for when the button is pressed. - /// - /// The action will be disabled if both [onPress] and [onLongPress] are null. - final VoidCallback? onPress; - - /// A callback for when the button is long pressed. - /// - /// The action will be disabled if both [onPress] and [onLongPress] are null. - final VoidCallback? onLongPress; - - /// Creates a [FNestedHeaderAction] from the given SVG [icon]. - const FNestedHeaderAction({ - required this.icon, - required this.onPress, - this.onLongPress, - this.style, - super.key, - }); - - /// Creates a [FNestedHeaderAction] with [FAssets.icons.arrowLeft]. - factory FNestedHeaderAction.back({ - required VoidCallback? onPress, - FNestedHeaderActionStyle? style, - Key? key, - }) => - FNestedHeaderAction( - icon: FAssets.icons.arrowLeft, - onPress: onPress, - style: style, - key: key, - ); - - /// Creates a [FNestedHeaderAction] with [FAssets.icons.x]. - factory FNestedHeaderAction.x({ - required VoidCallback? onPress, - FNestedHeaderActionStyle? style, - Key? key, - }) => - FNestedHeaderAction( - icon: FAssets.icons.x, - onPress: onPress, - style: style, - key: key, - ); - - @override - Widget build(BuildContext context) { - final style = this.style ?? context.theme.nestedHeaderStyle.actionStyle; - final enabled = onPress != null || onLongPress != null; - - return MouseRegion( - cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, - child: FTappable( - onTap: onPress, - onLongPress: onLongPress, - child: icon( - height: style.size, - colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), - ), - ), - ); - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(DiagnosticsProperty('style', style)) - ..add(DiagnosticsProperty('icon', icon)) - ..add(DiagnosticsProperty('onPress', onPress)) - ..add(DiagnosticsProperty('onLongPress', onLongPress)); - } -} - -/// [FNestedHeaderAction]'s style. -class FNestedHeaderActionStyle with Diagnosticable { - /// The icon's color when this action is enabled. - final Color enabledColor; - - /// The icon's color when this action is disabled. - final Color disabledColor; - - /// The icon's size. Defaults to 20. - final double size; - - /// Creates a [FNestedHeaderActionStyle]. - FNestedHeaderActionStyle({ - required this.enabledColor, - required this.disabledColor, - this.size = 25, - }); - - /// Creates a [FNestedHeaderActionStyle] that inherits its properties from the given [FColorScheme]. - FNestedHeaderActionStyle.inherit({required FColorScheme colorScheme}) - : enabledColor = colorScheme.foreground, - disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 25; - - /// Returns a copy of this [FNestedHeaderActionStyle] with the given properties replaced. - /// - /// ```dart - /// final style = FNestedHeaderActionStyle( - /// enabledColor: Colors.black, - /// disabledColor: Colors.white, - /// ); - /// - /// final copy = style.copyWith( - /// disabledColor: Colors.blue, - /// ); - /// - /// print(copy.enabledColor); // black - /// print(copy.disabledColor); // blue - /// ``` - @useResult - FNestedHeaderActionStyle copyWith({ - Color? enabledColor, - Color? disabledColor, - double? size, - EdgeInsets? padding, - }) => - FNestedHeaderActionStyle( - enabledColor: enabledColor ?? this.enabledColor, - disabledColor: disabledColor ?? this.disabledColor, - size: size ?? this.size, - ); - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(ColorProperty('enabledColor', enabledColor)) - ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)); - } -} diff --git a/forui/test/golden/header/nested/zinc-dark-header.png b/forui/test/golden/header/nested/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5ff59811a3fdbd2bae53997b82ba0eda2e4007 GIT binary patch literal 29211 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 U4eAJSL9SX`Lr*>D^yS)j`M|2JJN?kxwl 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 diff --git a/forui/test/golden/header/root/zinc-dark-header.png b/forui/test/golden/header/root/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..51bd97489a9a1bede8d0a17220f952a9c74f23c9 GIT binary patch literal 55550 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 U= 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 S-LA*TuT@jgQqE8^5Be`C+=6%j diff --git a/forui/test/golden/header/zinc-dark-raw-title.png b/forui/test/golden/header/zinc-dark-raw-title.png deleted file mode 100644 index f8f0847cf39f4d3b6a810d351537a5362805c0c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28218 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 aKp65nJ=`LGJ#-5B3k~&)XR&8&Z~Yfd1E=Ev diff --git a/forui/test/golden/header/zinc-light-raw-title.png b/forui/test/golden/header/zinc-light-raw-title.png deleted file mode 100644 index 88810b55a9fad4bee196d23d8923c17a7afa11c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28143 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

y6s|H>* z@T!4V4IlzMD&SE8j|zBHz@q}*Ao))f{LiOo;%L<;@P`HbIDaF6S1`PS;T6pPqG0}i zDiSwR{69Yovz=i_xE|o8{L9Z@g^>8~kLy8B^S-^FbY4u>8Odmo8B5O`rCR;9O&DV5VPm{@VTj0jHgDj{pDw diff --git a/forui/test/golden/nested-header/zinc-dark-header.png b/forui/test/golden/nested-header/zinc-dark-header.png deleted file mode 100644 index 5404af175d154d04f32e6813c8dbafc069418b7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28334 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 T=gwI=a^2JV#wW6Wv%C3Uv(Ol1 diff --git a/forui/test/golden/nested-header/zinc-dark-raw-title.png b/forui/test/golden/nested-header/zinc-dark-raw-title.png deleted file mode 100644 index 9eea2c8305d6589fe80b9a4bceac2a38026e132c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29778 zcmeHQ`8$;R`=4_@crd;UGrR*%g{W}yx;fxzVFxaejbJXrK`#IJMZr(6pBsj zoccu+YWrmrYU{RbTi`ckl;z*x+br|HH^)PrAkY`oro;_@#Wuhq94+jtpN&${?VELdS-Wy_CT zU=ua6t7gM8Z6xf+z`$=Zy?yW+0TV{Vxey42bvrXoq%AHEZp#4Rid#4iT zH$N20)=0>$Dj|7jK$wb)1t z7Pa{Q$?(_X2#6FAJ6ayLEwuN*guDLM4{q{gDf-_WS?WepxLSBJe-fTT;Dy z1yQR{s8nj9=`o_Lj_p&mh_$sf`r@L3pkP1*#Zk`H)s@)R)>dM_fh4OY{Y}?q-{cR{l<+G?7MbZ zuU2+D6YJ{Y3eEG@-=6sX9uz8o;nlmzr@Y(wWHT8Z%~*D|u*C9h-MY0mc`i3CEzKRf zhRyBt9-5qN>+1F;(6n$LYzlcYGBVKJm2F>h8!)X*!reE&{r>B%-?&Ld)4%+Yzo

81D8eRr|fHd=MCj@vq9idq@y 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 diff --git a/forui/test/golden/nested-header/zinc-light-raw-title.png b/forui/test/golden/nested-header/zinc-light-raw-title.png deleted file mode 100644 index fdcb32118f542c3d5f8a3103ecdf4a081d161089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29696 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 FHeader( - title: title, - rawTitle: rawTitle, - ), - returnsNormally, - ); - }); - } - - for (final (title, rawTitle) in [ - (null, null), - ('', const SizedBox()), - ]) { - testWidgets('constructor throws error', (tester) async { - expect( - () => FHeader( - title: title, - rawTitle: rawTitle, - ), - throwsAssertionError, - ); - }); - } - }); -} diff --git a/forui/test/src/widgets/header/nested_header_golden_test.dart b/forui/test/src/widgets/header/nested_header_golden_test.dart new file mode 100644 index 000000000..bca8ffa74 --- /dev/null +++ b/forui/test/src/widgets/header/nested_header_golden_test.dart @@ -0,0 +1,48 @@ +@Tags(['golden']) +library; + +import 'package:flutter/widgets.dart'; + +import 'package:flutter_test/flutter_test.dart'; + +import 'package:forui/forui.dart'; +import '../../test_scaffold.dart'; + +void main() { + group('FNestedHeader', () { + for (final (name, theme, _) in TestScaffold.themes) { + testWidgets('$name with FNestedHeader actions', (tester) async { + await tester.pumpWidget( + TestScaffold( + data: theme, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: FHeader.nested( + title: const Text('Title'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + FHeaderAction.x(onPress: () {}), + ], + ), + ), + ), + ); + + await expectLater( + find.byType(TestScaffold), + matchesGoldenFile('header/nested/$name-header.png'), + ); + }); + } + }); +} diff --git a/forui/test/src/widgets/header/header_golden_test.dart b/forui/test/src/widgets/header/root_header_golden_test.dart similarity index 54% rename from forui/test/src/widgets/header/header_golden_test.dart rename to forui/test/src/widgets/header/root_header_golden_test.dart index 46b7e9f11..bc1645ad4 100644 --- a/forui/test/src/widgets/header/header_golden_test.dart +++ b/forui/test/src/widgets/header/root_header_golden_test.dart @@ -12,16 +12,16 @@ const title = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'; void main() { - group('FHeader', () { + group('FRootHeader', () { for (final (name, theme, _) in TestScaffold.themes) { - testWidgets('$name with FHeader actions', (tester) async { + testWidgets('$name with FRootHeader actions', (tester) async { await tester.pumpWidget( TestScaffold( data: theme, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: FHeader( - title: title, + title: const Text(title), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -39,36 +39,7 @@ void main() { await expectLater( find.byType(TestScaffold), - matchesGoldenFile('header/$name-header.png'), - ); - }); - - testWidgets('$name with raw title', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FHeader( - rawTitle: const Text('Title'), - actions: [ - FHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: null, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('header/$name-raw-title.png'), + matchesGoldenFile('header/root/$name-header.png'), ); }); } diff --git a/forui/test/src/widgets/nested_header/nested_header_golden_test.dart b/forui/test/src/widgets/nested_header/nested_header_golden_test.dart deleted file mode 100644 index 674fd1447..000000000 --- a/forui/test/src/widgets/nested_header/nested_header_golden_test.dart +++ /dev/null @@ -1,79 +0,0 @@ -@Tags(['golden']) -library; - -import 'package:flutter/widgets.dart'; - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:forui/forui.dart'; -import '../../test_scaffold.dart'; - -void main() { - group('FNestedHeader', () { - for (final (name, theme, _) in TestScaffold.themes) { - testWidgets('$name with FNestedHeader actions', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FNestedHeader( - title: 'Title', - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: null, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('nested-header/$name-header.png'), - ); - }); - - testWidgets('$name with raw title', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FNestedHeader( - rawTitle: const Text('Title'), - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.cookingPot, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('nested-header/$name-raw-title.png'), - ); - }); - } - }); -} diff --git a/forui/test/src/widgets/nested_header/nested_header_test.dart b/forui/test/src/widgets/nested_header/nested_header_test.dart deleted file mode 100644 index a70b8875b..000000000 --- a/forui/test/src/widgets/nested_header/nested_header_test.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:forui/forui.dart'; - -void main() { - group('FNestedHeader', () { - for (final (title, rawTitle) in [ - ('', null), - (null, const SizedBox()), - ]) { - testWidgets('constructor does not throw error', (tester) async { - expect( - () => FNestedHeader( - title: title, - rawTitle: rawTitle, - ), - returnsNormally, - ); - }); - } - - for (final (title, rawTitle) in [ - (null, null), - ('', const SizedBox()), - ]) { - testWidgets('constructor throws error', (tester) async { - expect( - () => FNestedHeader( - title: title, - rawTitle: rawTitle, - ), - throwsAssertionError, - ); - }); - } - }); -} diff --git a/samples/lib/main.dart b/samples/lib/main.dart index 08ce6eab2..acb2aac51 100644 --- a/samples/lib/main.dart +++ b/samples/lib/main.dart @@ -60,14 +60,14 @@ class _AppRouter extends $_AppRouter { ), AutoRoute( path: '/header/default', - page: HeaderRoute.page, + page: RootHeaderRoute.page, ), AutoRoute( - path: '/nested-header/default', + path: '/header/nested', page: NestedHeaderRoute.page, ), AutoRoute( - path: '/nested-header/x', + path: '/header/nested-x', page: XNestedHeaderRoute.page, ), AutoRoute( diff --git a/samples/lib/widgets/header.dart b/samples/lib/widgets/header.dart index ce3324781..0bb8f3c7e 100644 --- a/samples/lib/widgets/header.dart +++ b/samples/lib/widgets/header.dart @@ -6,14 +6,14 @@ import 'package:forui/forui.dart'; import 'package:forui_samples/sample_scaffold.dart'; @RoutePage() -class HeaderPage extends SampleScaffold { - HeaderPage({ +class RootHeaderPage extends SampleScaffold { + RootHeaderPage({ @queryParam super.theme, }); @override Widget child(BuildContext context) => FHeader( - title: 'Edit Alarm', + title: const Text('Edit Alarm'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -26,3 +26,53 @@ class HeaderPage extends SampleScaffold { ], ); } + +@RoutePage() +class NestedHeaderPage extends SampleScaffold { + NestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); +} + +@RoutePage() +class XNestedHeaderPage extends SampleScaffold { + XNestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FHeader.nested( + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], + ); +} diff --git a/samples/lib/widgets/nested_header.dart b/samples/lib/widgets/nested_header.dart deleted file mode 100644 index e713ee1b8..000000000 --- a/samples/lib/widgets/nested_header.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import 'package:auto_route/auto_route.dart'; -import 'package:forui/forui.dart'; - -import 'package:forui_samples/sample_scaffold.dart'; - -@RoutePage() -class NestedHeaderPage extends SampleScaffold { - NestedHeaderPage({ - @queryParam super.theme, - }); - - @override - Widget child(BuildContext context) => FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ); -} - -@RoutePage() -class XNestedHeaderPage extends SampleScaffold { - XNestedHeaderPage({ - @queryParam super.theme, - }); - - @override - Widget child(BuildContext context) => FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ); -} - -void t() { -FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], -); -} diff --git a/samples/lib/widgets/scaffold.dart b/samples/lib/widgets/scaffold.dart index d9e8ba725..15b496541 100644 --- a/samples/lib/widgets/scaffold.dart +++ b/samples/lib/widgets/scaffold.dart @@ -20,7 +20,7 @@ class ScaffoldPage extends SampleScaffold { height: 420, child: FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, From 782203c426deaccc9d654b5ffe57858ff46e03ef Mon Sep 17 00:00:00 2001 From: kawaijoe Date: Sat, 29 Jun 2024 08:22:18 +0000 Subject: [PATCH 12/14] Commit from GitHub Actions (Forui Samples Presubmit) --- samples/lib/widgets/header.dart | 84 ++++++++++++++++----------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/samples/lib/widgets/header.dart b/samples/lib/widgets/header.dart index 0bb8f3c7e..41412d02c 100644 --- a/samples/lib/widgets/header.dart +++ b/samples/lib/widgets/header.dart @@ -13,18 +13,18 @@ class RootHeaderPage extends SampleScaffold { @override Widget child(BuildContext context) => FHeader( - title: const Text('Edit Alarm'), - actions: [ - FHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: () {}, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ); + title: const Text('Edit Alarm'), + actions: [ + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); } @RoutePage() @@ -35,21 +35,21 @@ class NestedHeaderPage extends SampleScaffold { @override Widget child(BuildContext context) => FHeader.nested( - title: const Text('Appointment'), - leftActions: [ - FHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FHeaderAction( - icon: FAssets.icons.info, - onPress: () {}, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ); + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); } @RoutePage() @@ -60,19 +60,19 @@ class XNestedHeaderPage extends SampleScaffold { @override Widget child(BuildContext context) => FHeader.nested( - title: const Text('Climate'), - leftActions: [ - FHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FHeaderAction.x(onPress: () {}), - ], - ); + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], + ); } From 7d6ba708f6c18d8ae0bb318c18cd14dfee7b6f8d Mon Sep 17 00:00:00 2001 From: Joe Date: Sun, 30 Jun 2024 16:46:04 +0800 Subject: [PATCH 13/14] Fix pr issues --- forui/CHANGELOG.md | 7 ++++--- forui/lib/src/theme/theme_data.dart | 7 +++---- forui/lib/src/widgets/header/header.dart | 21 +++++++++---------- .../lib/src/widgets/header/nested_header.dart | 2 +- forui/lib/src/widgets/header/root_header.dart | 4 ++-- 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/forui/CHANGELOG.md b/forui/CHANGELOG.md index 896d446c0..68f6bb14c 100644 --- a/forui/CHANGELOG.md +++ b/forui/CHANGELOG.md @@ -1,11 +1,12 @@ ## 0.2.0 -* Add `NestedHeader` widget. +* Add `Header.nested` widget. ### Breaking changes -* `FHeaderActionStyle.action` parameter has been renamed to `FHeaderStyle.actionStyle`. -* `FHeaderActionStyle.padding` parameter has been moved to `FHeaderStyle.actionSpacing`. +* `FHeaderStyle` have been nested in `FHeaderStyles.rootStyle`. +* `FHeaderActionStyle.action` parameter has been renamed to `FRootHeaderStyle.actionStyle`. +* `FHeaderActionStyle.padding` parameter has been moved to `FRootHeaderStyle.actionSpacing`. ## 0.1.0 diff --git a/forui/lib/src/theme/theme_data.dart b/forui/lib/src/theme/theme_data.dart index 0d5f6e41b..f40f628a2 100644 --- a/forui/lib/src/theme/theme_data.dart +++ b/forui/lib/src/theme/theme_data.dart @@ -38,7 +38,7 @@ final class FThemeData with Diagnosticable { final FDialogStyle dialogStyle; /// The header styles. - final FHeaderStyle headerStyle; + final FHeaderStyles headerStyle; /// The tabs styles. final FTabsStyle tabsStyle; @@ -93,7 +93,7 @@ final class FThemeData with Diagnosticable { buttonStyles: FButtonStyles.inherit(colorScheme: colorScheme, typography: typography, style: style), cardStyle: FCardStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), dialogStyle: FDialogStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), - headerStyle: FHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), + headerStyle: FHeaderStyles.inherit(colorScheme: colorScheme, typography: typography, style: style), tabsStyle: FTabsStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), textFieldStyle: FTextFieldStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), scaffoldStyle: FScaffoldStyle.inherit(colorScheme: colorScheme, style: style), @@ -127,8 +127,7 @@ final class FThemeData with Diagnosticable { FButtonStyles? buttonStyles, FCardStyle? cardStyle, FDialogStyle? dialogStyle, - FHeaderStyle? headerStyle, - FNestedHeaderStyle? nestedHeaderStyle, + FHeaderStyles? headerStyle, FTabsStyle? tabsStyle, FTextFieldStyle? textFieldStyle, FScaffoldStyle? scaffoldStyle, diff --git a/forui/lib/src/widgets/header/header.dart b/forui/lib/src/widgets/header/header.dart index 1a7c32faf..d355aeee8 100644 --- a/forui/lib/src/widgets/header/header.dart +++ b/forui/lib/src/widgets/header/header.dart @@ -15,11 +15,10 @@ part 'nested_header.dart'; /// A header. /// /// A header contains the page's title and actions. - /// /// See: /// * https://forui.dev/docs/header for working examples. -/// * [FHeaderStyle] for customizing a header's appearance. +/// * [FHeaderStyles] and [FNestedHeaderStyle] for customizing a header's appearance. sealed class FHeader extends StatelessWidget { const FHeader._({super.key}); @@ -46,28 +45,28 @@ sealed class FHeader extends StatelessWidget { } /// [FHeader]'s style. -final class FHeaderStyle with Diagnosticable { +final class FHeaderStyles with Diagnosticable { /// The root header style. final FRootHeaderStyle rootStyle; /// The nested header style. final FNestedHeaderStyle nestedStyle; - /// Creates a [FHeaderStyle]. - const FHeaderStyle({ + /// Creates a [FHeaderStyles]. + const FHeaderStyles({ required this.rootStyle, required this.nestedStyle, }); - /// Creates a [FRootHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. - FHeaderStyle.inherit({ + /// Creates a [FHeaderStyles] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. + FHeaderStyles.inherit({ required FColorScheme colorScheme, required FTypography typography, required FStyle style, }) : rootStyle = FRootHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), nestedStyle = FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style); - /// Returns a copy of this [FHeaderStyle] with the given properties replaced. + /// Returns a copy of this [FHeaderStyles] with the given properties replaced. /// /// ```dart /// final style = FHeaderStyle( @@ -82,11 +81,11 @@ final class FHeaderStyle with Diagnosticable { /// print(style.rootStyle == copy.rootStyle); // true /// print(style.nestedStyle == copy.nestedStyle); // false /// ``` - FHeaderStyle copyWith({ + FHeaderStyles copyWith({ FRootHeaderStyle? rootStyle, FNestedHeaderStyle? nestedStyle, }) => - FHeaderStyle( + FHeaderStyles( rootStyle: rootStyle ?? this.rootStyle, nestedStyle: nestedStyle ?? this.nestedStyle, ); @@ -102,7 +101,7 @@ final class FHeaderStyle with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is FHeaderStyle && + other is FHeaderStyles && runtimeType == other.runtimeType && rootStyle == other.rootStyle && nestedStyle == other.nestedStyle; diff --git a/forui/lib/src/widgets/header/nested_header.dart b/forui/lib/src/widgets/header/nested_header.dart index 93d81c196..1ba689454 100644 --- a/forui/lib/src/widgets/header/nested_header.dart +++ b/forui/lib/src/widgets/header/nested_header.dart @@ -77,7 +77,7 @@ final class _FNestedHeader extends FHeader { } } -/// [_FNestedHeader]'s style. +/// [FHeader.nested]'s style. final class FNestedHeaderStyle with Diagnosticable { /// The title's [TextStyle]. final TextStyle titleTextStyle; diff --git a/forui/lib/src/widgets/header/root_header.dart b/forui/lib/src/widgets/header/root_header.dart index 76ae91489..ffeb51e77 100644 --- a/forui/lib/src/widgets/header/root_header.dart +++ b/forui/lib/src/widgets/header/root_header.dart @@ -9,7 +9,7 @@ part of 'header.dart'; /// * https://forui.dev/docs/header for working examples. /// * [FRootHeaderStyle] for customizing a header's appearance. final class _FRootHeader extends FHeader { - /// The header's style. Defaults to [FThemeData.headerStyle]. + /// The header's style. Defaults to [FThemeData.headerStyle.rootStyle]. final FRootHeaderStyle? style; /// The title, aligned to the left. @@ -66,7 +66,7 @@ final class _FRootHeader extends FHeader { } } -/// [_FRootHeader]'s style. +/// [FHeader.new]'s style. final class FRootHeaderStyle with Diagnosticable { /// The title's [TextStyle]. final TextStyle titleTextStyle; From be081c824561f082d2beeabd70b5b11efd67bc70 Mon Sep 17 00:00:00 2001 From: Joe Kawai Date: Sun, 30 Jun 2024 19:54:45 +0800 Subject: [PATCH 14/14] Apply suggestions from code review Co-authored-by: Matthias Ngeo --- forui/lib/src/widgets/header/header.dart | 8 ++++---- forui/lib/src/widgets/header/nested_header.dart | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/forui/lib/src/widgets/header/header.dart b/forui/lib/src/widgets/header/header.dart index d355aeee8..c7439b761 100644 --- a/forui/lib/src/widgets/header/header.dart +++ b/forui/lib/src/widgets/header/header.dart @@ -18,7 +18,7 @@ part 'nested_header.dart'; /// /// See: /// * https://forui.dev/docs/header for working examples. -/// * [FHeaderStyles] and [FNestedHeaderStyle] for customizing a header's appearance. +/// * [FRootHeaderStyle] and [FNestedHeaderStyle] for customizing a header's appearance. sealed class FHeader extends StatelessWidget { const FHeader._({super.key}); @@ -44,12 +44,12 @@ sealed class FHeader extends StatelessWidget { }) = _FNestedHeader; } -/// [FHeader]'s style. +/// [FHeader]'s styles. final class FHeaderStyles with Diagnosticable { - /// The root header style. + /// The root header's style. final FRootHeaderStyle rootStyle; - /// The nested header style. + /// The nested header's style. final FNestedHeaderStyle nestedStyle; /// Creates a [FHeaderStyles]. diff --git a/forui/lib/src/widgets/header/nested_header.dart b/forui/lib/src/widgets/header/nested_header.dart index 1ba689454..2e578b5d0 100644 --- a/forui/lib/src/widgets/header/nested_header.dart +++ b/forui/lib/src/widgets/header/nested_header.dart @@ -82,7 +82,7 @@ final class FNestedHeaderStyle with Diagnosticable { /// The title's [TextStyle]. final TextStyle titleTextStyle; - /// The [FHeaderAction]'s style for [_FNestedHeader.leftActions] and [_FNestedHeader.rightActions]. + /// The [FHeaderAction]s' style. final FHeaderActionStyle actionStyle; /// The spacing between [FHeaderAction]s.

81D8eRr|fHd=MCj@vq9idq@y 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 literal 27510 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 XCQnZsaeLi?mZK!Eb}9XW!NdOrcpF^l diff --git a/forui/test/golden/nested-header/zinc-light-raw-title.png b/forui/test/golden/nested-header/zinc-light-raw-title.png index 218408e1139d84154fa0c87bf4877647e78022aa..fdcb32118f542c3d5f8a3103ecdf4a081d161089 100644 GIT binary patch literal 29696 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 FNestedHeader( title: title, rawTitle: rawTitle, - onPop: null, ), returnsNormally, ); @@ -31,7 +30,6 @@ void main() { () => FNestedHeader( title: title, rawTitle: rawTitle, - onPop: () {}, ), throwsAssertionError, ); diff --git a/samples/lib/main.dart b/samples/lib/main.dart index a0c62dbcf..08ce6eab2 100644 --- a/samples/lib/main.dart +++ b/samples/lib/main.dart @@ -62,6 +62,14 @@ class _AppRouter extends $_AppRouter { path: '/header/default', page: HeaderRoute.page, ), + AutoRoute( + path: '/nested-header/default', + page: NestedHeaderRoute.page, + ), + AutoRoute( + path: '/nested-header/x', + page: XNestedHeaderRoute.page, + ), AutoRoute( path: '/tabs/default', page: TabsRoute.page, diff --git a/samples/lib/widgets/header.dart b/samples/lib/widgets/header.dart index 88f763b8f..ce3324781 100644 --- a/samples/lib/widgets/header.dart +++ b/samples/lib/widgets/header.dart @@ -12,20 +12,17 @@ class HeaderPage extends SampleScaffold { }); @override - Widget child(BuildContext context) => Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FHeader( - title: 'Edit Alarm', - actions: [ - FHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: () {}, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ), - ); + Widget child(BuildContext context) => FHeader( + title: 'Edit Alarm', + actions: [ + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); } diff --git a/samples/lib/widgets/nested_header.dart b/samples/lib/widgets/nested_header.dart new file mode 100644 index 000000000..e713ee1b8 --- /dev/null +++ b/samples/lib/widgets/nested_header.dart @@ -0,0 +1,75 @@ +import 'package:flutter/widgets.dart'; + +import 'package:auto_route/auto_route.dart'; +import 'package:forui/forui.dart'; + +import 'package:forui_samples/sample_scaffold.dart'; + +@RoutePage() +class NestedHeaderPage extends SampleScaffold { + NestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FNestedHeader( + title: 'Appointment', + leftActions: [ + FNestedHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FNestedHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); +} + +@RoutePage() +class XNestedHeaderPage extends SampleScaffold { + XNestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FNestedHeader( + title: 'Climate', + leftActions: [ + FNestedHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FNestedHeaderAction.x(onPress: () {}), + ], + ); +} + +void t() { +FNestedHeader( + title: 'Climate', + leftActions: [ + FNestedHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FNestedHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FNestedHeaderAction.x(onPress: () {}), + ], +); +} diff --git a/samples/pubspec.lock b/samples/pubspec.lock index 19ef9c15f..1968c4c27 100644 --- a/samples/pubspec.lock +++ b/samples/pubspec.lock @@ -271,9 +271,10 @@ packages: forui_assets: dependency: transitive description: - path: "../forui_assets" - relative: true - source: path + name: forui_assets + sha256: a68dcbb7e6f669f495a0bcf6464f6e28197744318aabeb28aa0bb3c8435cde14 + url: "https://pub.dev" + source: hosted version: "0.1.0" frontend_server_client: dependency: transitive From 5fbece2964b68ffc5402a30e956e33d82ef73fee Mon Sep 17 00:00:00 2001 From: kawaijoe Date: Fri, 28 Jun 2024 04:04:48 +0000 Subject: [PATCH 04/14] Commit from GitHub Actions (Forui Presubmit) --- forui/example/lib/example.dart | 74 +++++++++---------- .../widgets/nested_header/nested_header.dart | 3 +- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/forui/example/lib/example.dart b/forui/example/lib/example.dart index 643295ef5..fe4a300cd 100644 --- a/forui/example/lib/example.dart +++ b/forui/example/lib/example.dart @@ -17,46 +17,46 @@ class _ExampleState extends State { @override Widget build(BuildContext context) => Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 10), - Expanded( - child: FTabs( - tabs: [ - FTabEntry( - label: 'Account', - content: FCard( - title: 'Account', - subtitle: 'Make changes to your account here. Click save when you are done.', - child: Column( - children: [ - Container( - color: Colors.red, - height: 100, - ), - ], + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Expanded( + child: FTabs( + tabs: [ + FTabEntry( + label: 'Account', + content: FCard( + title: 'Account', + subtitle: 'Make changes to your account here. Click save when you are done.', + child: Column( + children: [ + Container( + color: Colors.red, + height: 100, + ), + ], + ), ), ), - ), - FTabEntry( - label: 'Password', - content: FCard( - title: 'Password', - subtitle: 'Change your password here. After saving, you will be logged out.', - child: Column( - children: [ - Container( - color: Colors.blue, - height: 100, - ) - ], + FTabEntry( + label: 'Password', + content: FCard( + title: 'Password', + subtitle: 'Change your password here. After saving, you will be logged out.', + child: Column( + children: [ + Container( + color: Colors.blue, + height: 100, + ) + ], + ), ), ), - ), - ], + ], + ), ), - ), - ], - ); + ], + ); } diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/nested_header/nested_header.dart index 0bad5ace2..c4caaa9c3 100644 --- a/forui/lib/src/widgets/nested_header/nested_header.dart +++ b/forui/lib/src/widgets/nested_header/nested_header.dart @@ -1,9 +1,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; +import 'package:meta/meta.dart'; + import 'package:forui/forui.dart'; import 'package:forui/src/foundation/tappable.dart'; -import 'package:meta/meta.dart'; part 'nested_header_action.dart'; From a623852446a9e8924bb9cc3c3e59cb6c298966a6 Mon Sep 17 00:00:00 2001 From: Joe Date: Sat, 29 Jun 2024 16:18:54 +0800 Subject: [PATCH 05/14] Refactor code to use Header.nested() --- docs/pages/docs/header.mdx | 136 +++++++++++++- docs/pages/docs/nested-header.mdx | 81 -------- docs/pages/docs/scaffold.mdx | 4 +- forui/example/lib/main.dart | 2 +- forui/lib/forui.dart | 1 - forui/lib/src/theme/theme_data.dart | 9 - forui/lib/src/widgets/header/header.dart | 177 ++++++------------ .../lib/src/widgets/header/header_action.dart | 66 ++++++- .../nested_header.dart | 96 ++++------ forui/lib/src/widgets/header/root_header.dart | 156 +++++++++++++++ .../nested_header/nested_header_action.dart | 147 --------------- .../golden/header/nested/zinc-dark-header.png | Bin 0 -> 29211 bytes .../nested}/zinc-light-header.png | Bin 28168 -> 29077 bytes .../golden/header/root/zinc-dark-header.png | Bin 0 -> 55550 bytes .../golden/header/root/zinc-light-header.png | Bin 0 -> 54542 bytes forui/test/golden/header/zinc-dark-header.png | Bin 45617 -> 0 bytes .../golden/header/zinc-dark-raw-title.png | Bin 28218 -> 0 bytes .../test/golden/header/zinc-light-header.png | Bin 44935 -> 0 bytes .../golden/header/zinc-light-raw-title.png | Bin 28143 -> 0 bytes .../golden/nested-header/zinc-dark-header.png | Bin 28334 -> 0 bytes .../nested-header/zinc-dark-raw-title.png | Bin 29778 -> 0 bytes .../nested-header/zinc-light-raw-title.png | Bin 29696 -> 0 bytes .../test/src/widgets/header/header_test.dart | 39 ---- .../header/nested_header_golden_test.dart | 48 +++++ ...test.dart => root_header_golden_test.dart} | 37 +--- .../nested_header_golden_test.dart | 79 -------- .../nested_header/nested_header_test.dart | 39 ---- samples/lib/main.dart | 6 +- samples/lib/widgets/header.dart | 56 +++++- samples/lib/widgets/nested_header.dart | 75 -------- samples/lib/widgets/scaffold.dart | 2 +- 31 files changed, 557 insertions(+), 699 deletions(-) delete mode 100644 docs/pages/docs/nested-header.mdx rename forui/lib/src/widgets/{nested_header => header}/nested_header.dart (62%) create mode 100644 forui/lib/src/widgets/header/root_header.dart delete mode 100644 forui/lib/src/widgets/nested_header/nested_header_action.dart create mode 100644 forui/test/golden/header/nested/zinc-dark-header.png rename forui/test/golden/{nested-header => header/nested}/zinc-light-header.png (50%) create mode 100644 forui/test/golden/header/root/zinc-dark-header.png create mode 100644 forui/test/golden/header/root/zinc-light-header.png delete mode 100644 forui/test/golden/header/zinc-dark-header.png delete mode 100644 forui/test/golden/header/zinc-dark-raw-title.png delete mode 100644 forui/test/golden/header/zinc-light-header.png delete mode 100644 forui/test/golden/header/zinc-light-raw-title.png delete mode 100644 forui/test/golden/nested-header/zinc-dark-header.png delete mode 100644 forui/test/golden/nested-header/zinc-dark-raw-title.png delete mode 100644 forui/test/golden/nested-header/zinc-light-raw-title.png delete mode 100644 forui/test/src/widgets/header/header_test.dart create mode 100644 forui/test/src/widgets/header/nested_header_golden_test.dart rename forui/test/src/widgets/header/{header_golden_test.dart => root_header_golden_test.dart} (54%) delete mode 100644 forui/test/src/widgets/nested_header/nested_header_golden_test.dart delete mode 100644 forui/test/src/widgets/nested_header/nested_header_test.dart delete mode 100644 samples/lib/widgets/nested_header.dart diff --git a/docs/pages/docs/header.mdx b/docs/pages/docs/header.mdx index d842dc704..dea4c9ac6 100644 --- a/docs/pages/docs/header.mdx +++ b/docs/pages/docs/header.mdx @@ -12,7 +12,7 @@ It is typically used on pages at the root of the navigation stack. ```dart FHeader( - title: 'Edit Alarm', + title: const Text('Edit Alarm'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -23,18 +23,48 @@ It is typically used on pages at the root of the navigation stack. onPress: () {}, ), ], - ) + ); ``` +## Nested Header + +It is typically used on nested pages or sheets. + + + + + + + ```dart + FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + ## Usage ### `FHeader(...)` ```dart FHeader( - title: 'Edit Alarm', + title: const Text('Title'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -45,5 +75,103 @@ FHeader( onPress: () {}, ), ], -) +); ``` + +### `FHeader.nested(...)` + +```dart +FHeader.nested( + title: const Text('Title'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction.x(onPress: () {}), + ], +); +``` + +## Examples + +### Header + + + + + + ```dart + FHeader( + title: const Text('Edit Alarm'), + actions: [ + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +### Nested Header with back icon + + + + + + ```dart + FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +### Nested Header with X icon + + + + + + ```dart + FHeader.nested( + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], + ); + ``` + + diff --git a/docs/pages/docs/nested-header.mdx b/docs/pages/docs/nested-header.mdx deleted file mode 100644 index 101238060..000000000 --- a/docs/pages/docs/nested-header.mdx +++ /dev/null @@ -1,81 +0,0 @@ -import { Tabs } from 'nextra/components'; -import { Widget } from "../../components/widget"; - -# Nested Header -A nested header contains the page's title and actions (including pop navigation). -It is typically used on pages that are not at the root of the navigation stack. - - - - - - - ```dart - FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ); - ``` - - - -## Usage - -### `FNestedHeader(...)` - -```dart -FNestedHeader( - title: 'Appointment', - leftActions: [ - FNestedHeaderAction.back(onPress: () {}), - ], - rightActions: [ - FNestedHeaderAction( - icon: FAssets.icons.info, - onPress: null, - ), - FNestedHeaderAction.x(onPress: () {}), - ], -); -``` - -## Examples - -### With X icon to exit - - - - - - ```dart - FNestedHeader( - title: 'Climate', - leftActions: [ - FNestedHeaderAction( - icon: FAssets.icons.thermometer, - onPress: () {}, - ), - FNestedHeaderAction( - icon: FAssets.icons.wind, - onPress: null, - ), - ], - rightActions: [ - FNestedHeaderAction.x(onPress: () {}), - ], - ); - ``` - - diff --git a/docs/pages/docs/scaffold.mdx b/docs/pages/docs/scaffold.mdx index 2b46303e2..af16760f5 100644 --- a/docs/pages/docs/scaffold.mdx +++ b/docs/pages/docs/scaffold.mdx @@ -12,7 +12,7 @@ Creates a visual scaffold for Forui widgets. ```dart FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, @@ -63,7 +63,7 @@ Creates a visual scaffold for Forui widgets. ```dart FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, diff --git a/forui/example/lib/main.dart b/forui/example/lib/main.dart index 22a3ebafe..c9a91b563 100644 --- a/forui/example/lib/main.dart +++ b/forui/example/lib/main.dart @@ -19,7 +19,7 @@ class Application extends StatelessWidget { data: FThemes.zinc.light, child: FScaffold( header: FHeader( - title: 'Example Example Example Example', + title: const Text('Example Example Example Example'), actions: [ FHeaderAction( icon: FAssets.icons.plus, diff --git a/forui/lib/forui.dart b/forui/lib/forui.dart index 82ce85605..a9e3d7982 100644 --- a/forui/lib/forui.dart +++ b/forui/lib/forui.dart @@ -25,7 +25,6 @@ export 'src/widgets/button/button.dart' hide FButtonContent, Variant; export 'src/widgets/card/card.dart' hide FCardContent; export 'src/widgets/dialog/dialog.dart' hide FDialogContent, FHorizontalDialogContent, FVerticalDialogContent; export 'src/widgets/header/header.dart'; -export 'src/widgets/nested_header/nested_header.dart'; export 'src/widgets/tabs/tabs.dart'; export 'src/widgets/text_field/text_field.dart'; export 'src/widgets/scaffold.dart'; diff --git a/forui/lib/src/theme/theme_data.dart b/forui/lib/src/theme/theme_data.dart index 33b37ff89..0d5f6e41b 100644 --- a/forui/lib/src/theme/theme_data.dart +++ b/forui/lib/src/theme/theme_data.dart @@ -40,9 +40,6 @@ final class FThemeData with Diagnosticable { /// The header styles. final FHeaderStyle headerStyle; - /// The nested header styles. - final FNestedHeaderStyle nestedHeaderStyle; - /// The tabs styles. final FTabsStyle tabsStyle; @@ -71,7 +68,6 @@ final class FThemeData with Diagnosticable { required this.cardStyle, required this.dialogStyle, required this.headerStyle, - required this.nestedHeaderStyle, required this.tabsStyle, required this.textFieldStyle, required this.scaffoldStyle, @@ -98,7 +94,6 @@ final class FThemeData with Diagnosticable { cardStyle: FCardStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), dialogStyle: FDialogStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), headerStyle: FHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), - nestedHeaderStyle: FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), tabsStyle: FTabsStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), textFieldStyle: FTextFieldStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), scaffoldStyle: FScaffoldStyle.inherit(colorScheme: colorScheme, style: style), @@ -149,7 +144,6 @@ final class FThemeData with Diagnosticable { cardStyle: cardStyle ?? this.cardStyle, dialogStyle: dialogStyle ?? this.dialogStyle, headerStyle: headerStyle ?? this.headerStyle, - nestedHeaderStyle: nestedHeaderStyle ?? this.nestedHeaderStyle, tabsStyle: tabsStyle ?? this.tabsStyle, textFieldStyle: textFieldStyle ?? this.textFieldStyle, scaffoldStyle: scaffoldStyle ?? this.scaffoldStyle, @@ -169,7 +163,6 @@ final class FThemeData with Diagnosticable { ..add(DiagnosticsProperty('cardStyle', cardStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('dialogStyle', dialogStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('headerStyle', headerStyle, level: DiagnosticLevel.debug)) - ..add(DiagnosticsProperty('nestedHeaderStyle', nestedHeaderStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('tabsStyle', tabsStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('textFieldStyle', textFieldStyle, level: DiagnosticLevel.debug)) ..add(DiagnosticsProperty('scaffoldStyle', scaffoldStyle, level: DiagnosticLevel.debug)) @@ -190,7 +183,6 @@ final class FThemeData with Diagnosticable { cardStyle == other.cardStyle && dialogStyle == other.dialogStyle && headerStyle == other.headerStyle && - nestedHeaderStyle == other.nestedHeaderStyle && tabsStyle == other.tabsStyle && textFieldStyle == other.textFieldStyle && scaffoldStyle == other.scaffoldStyle && @@ -207,7 +199,6 @@ final class FThemeData with Diagnosticable { cardStyle.hashCode ^ dialogStyle.hashCode ^ headerStyle.hashCode ^ - nestedHeaderStyle.hashCode ^ tabsStyle.hashCode ^ textFieldStyle.hashCode ^ scaffoldStyle.hashCode ^ diff --git a/forui/lib/src/widgets/header/header.dart b/forui/lib/src/widgets/header/header.dart index 63bc7ec72..1a7c32faf 100644 --- a/forui/lib/src/widgets/header/header.dart +++ b/forui/lib/src/widgets/header/header.dart @@ -8,166 +8,105 @@ import 'package:forui/src/foundation/tappable.dart'; part 'header_action.dart'; +part 'root_header.dart'; + +part 'nested_header.dart'; + /// A header. /// -/// A header contains the page's title and navigation actions. -/// It is typically used on pages at the root of the navigation stack. +/// A header contains the page's title and actions. + /// /// See: /// * https://forui.dev/docs/header for working examples. /// * [FHeaderStyle] for customizing a header's appearance. -final class FHeader extends StatelessWidget { - /// The header's style. Defaults to [FThemeData.headerStyle]. - final FHeaderStyle? style; +sealed class FHeader extends StatelessWidget { + const FHeader._({super.key}); - /// The title, aligned to the left. + /// Creates a header. /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final String? title; - - /// The title, aligned to the left. + /// It is typically used on pages at the root of the navigation stack. + const factory FHeader({ + required Widget title, + FRootHeaderStyle? style, + List actions, + Key? key, + }) = _FRootHeader; + + /// Creates a nested header. /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final Widget? rawTitle; - - /// The actions, aligned to the right. Defaults to an empty list. - final List actions; - - /// Creates a [FHeader]. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - const FHeader({ - this.style, - this.title, - this.rawTitle, - this.actions = const [], - super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); - - @override - Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle; - - final title = switch ((this.title, rawTitle)) { - (final String title, _) => Text(title), - (_, final Widget title) => title, - _ => const Placeholder(), - }; - - return SafeArea( - bottom: false, - child: Padding( - padding: style.padding, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: DefaultTextStyle.merge( - overflow: TextOverflow.fade, - maxLines: 1, - softWrap: false, - style: style.titleTextStyle, - child: title, - ), - ), - Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), - ], - ), - ), - ); - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(DiagnosticsProperty('style', style)) - ..add(StringProperty('title', title)) - ..add(IterableProperty('actions', actions)); - } + /// It is typically used on pages NOT at the root of the navigation stack. + const factory FHeader.nested({ + required Widget title, + FNestedHeaderStyle? style, + List leftActions, + List rightActions, + Key? key, + }) = _FNestedHeader; } /// [FHeader]'s style. final class FHeaderStyle with Diagnosticable { - /// The title's [TextStyle]. - final TextStyle titleTextStyle; - - /// The [FHeaderAction]'s style. - final FHeaderActionStyle actionStyle; + /// The root header style. + final FRootHeaderStyle rootStyle; - /// The spacing between [FHeaderAction]s. - final double actionSpacing; - - /// The padding. - final EdgeInsets padding; + /// The nested header style. + final FNestedHeaderStyle nestedStyle; /// Creates a [FHeaderStyle]. - FHeaderStyle({ - required this.titleTextStyle, - required this.actionStyle, - required this.actionSpacing, - required this.padding, + const FHeaderStyle({ + required this.rootStyle, + required this.nestedStyle, }); - /// Creates a [FHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. + /// Creates a [FRootHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. FHeaderStyle.inherit({ required FColorScheme colorScheme, required FTypography typography, required FStyle style, - }) : titleTextStyle = typography.xl3.copyWith( - color: colorScheme.foreground, - fontWeight: FontWeight.w700, - height: 1, - ), - actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme), - actionSpacing = 10, - padding = style.pagePadding.copyWith(bottom: 15); + }) : rootStyle = FRootHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), + nestedStyle = FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style); /// Returns a copy of this [FHeaderStyle] with the given properties replaced. /// /// ```dart /// final style = FHeaderStyle( - /// titleTextStyle: ..., - /// action: ..., + /// rootStyle: ..., + /// nestedStyle: ..., /// ); /// /// final copy = style.copyWith( - /// action: ..., + /// nestedStyle: ..., /// ); /// - /// print(style.titleTextStyle == copy.titleTextStyle); // true - /// print(style.action == copy.action); // false + /// print(style.rootStyle == copy.rootStyle); // true + /// print(style.nestedStyle == copy.nestedStyle); // false /// ``` - @useResult FHeaderStyle copyWith({ - TextStyle? titleTextStyle, - FHeaderActionStyle? actionStyle, - double? actionSpacing, - EdgeInsets? padding, + FRootHeaderStyle? rootStyle, + FNestedHeaderStyle? nestedStyle, }) => FHeaderStyle( - titleTextStyle: titleTextStyle ?? this.titleTextStyle, - actionStyle: actionStyle ?? this.actionStyle, - actionSpacing: actionSpacing ?? this.actionSpacing, - padding: padding ?? this.padding, + rootStyle: rootStyle ?? this.rootStyle, + nestedStyle: nestedStyle ?? this.nestedStyle, ); @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties - ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) - ..add(DiagnosticsProperty('action', actionStyle)) - ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) - ..add(DiagnosticsProperty('padding', padding)); + ..add(DiagnosticsProperty('rootStyle', rootStyle)) + ..add(DiagnosticsProperty('nestedStyle', nestedStyle)); } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FHeaderStyle && + runtimeType == other.runtimeType && + rootStyle == other.rootStyle && + nestedStyle == other.nestedStyle; + + @override + int get hashCode => rootStyle.hashCode ^ nestedStyle.hashCode; } diff --git a/forui/lib/src/widgets/header/header_action.dart b/forui/lib/src/widgets/header/header_action.dart index 64ebf5e59..15ed8471a 100644 --- a/forui/lib/src/widgets/header/header_action.dart +++ b/forui/lib/src/widgets/header/header_action.dart @@ -29,9 +29,35 @@ class FHeaderAction extends StatelessWidget { super.key, }); + /// Creates a [FHeaderAction] with [FAssets.icons.arrowLeft]. + factory FHeaderAction.back({ + required VoidCallback? onPress, + FHeaderActionStyle? style, + Key? key, + }) => + FHeaderAction( + icon: FAssets.icons.arrowLeft, + onPress: onPress, + style: style, + key: key, + ); + + /// Creates a [FHeaderAction] with [FAssets.icons.x]. + factory FHeaderAction.x({ + required VoidCallback? onPress, + FHeaderActionStyle? style, + Key? key, + }) => + FHeaderAction( + icon: FAssets.icons.x, + onPress: onPress, + style: style, + key: key, + ); + @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle.actionStyle; + final style = FHeaderActionStyle._of(context); final enabled = onPress != null || onLongPress != null; return MouseRegion( @@ -60,27 +86,35 @@ class FHeaderAction extends StatelessWidget { /// [FHeaderAction]'s style. class FHeaderActionStyle with Diagnosticable { + @useResult + static FHeaderActionStyle _of(BuildContext context) => + context.dependOnInheritedWidgetOfExactType<_InheritedActionStyle>()?.style ?? + context.theme.headerStyle.rootStyle.actionStyle; + /// The icon's color when this action is enabled. final Color enabledColor; /// The icon's color when this action is disabled. final Color disabledColor; - /// The icon's size. Defaults to 30. + /// The icon's size. + /// + /// Defaults to: + /// * 30 for [FHeader]. + /// * 25 for [FHeader.nested] final double size; /// Creates a [FHeaderActionStyle]. FHeaderActionStyle({ required this.enabledColor, required this.disabledColor, - this.size = 30, + required this.size, }); /// Creates a [FHeaderActionStyle] that inherits its properties from the given [FColorScheme]. - FHeaderActionStyle.inherit({required FColorScheme colorScheme}) + FHeaderActionStyle.inherit({required FColorScheme colorScheme, required this.size}) : enabledColor = colorScheme.foreground, - disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 30; + disabledColor = colorScheme.foreground.withOpacity(0.5); /// Returns a copy of this [FHeaderActionStyle] with the given properties replaced. /// @@ -116,6 +150,24 @@ class FHeaderActionStyle with Diagnosticable { properties ..add(ColorProperty('enabledColor', enabledColor)) ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)); + ..add(DoubleProperty('size', size)); + } +} + +class _InheritedActionStyle extends InheritedWidget { + final FHeaderActionStyle style; + + const _InheritedActionStyle({ + required this.style, + required super.child, + }); + + @override + bool updateShouldNotify(_InheritedActionStyle oldWidget) => style != oldWidget.style; + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('style', style)); } } diff --git a/forui/lib/src/widgets/nested_header/nested_header.dart b/forui/lib/src/widgets/header/nested_header.dart similarity index 62% rename from forui/lib/src/widgets/nested_header/nested_header.dart rename to forui/lib/src/widgets/header/nested_header.dart index c4caaa9c3..93d81c196 100644 --- a/forui/lib/src/widgets/nested_header/nested_header.dart +++ b/forui/lib/src/widgets/header/nested_header.dart @@ -1,12 +1,4 @@ -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; - -import 'package:meta/meta.dart'; - -import 'package:forui/forui.dart'; -import 'package:forui/src/foundation/tappable.dart'; - -part 'nested_header_action.dart'; +part of 'header.dart'; /// A nested header. /// @@ -14,27 +6,14 @@ part 'nested_header_action.dart'; /// It is typically used on pages that are not at the root of the navigation stack. /// /// See: -/// * https://forui.dev/docs/nested-header for working examples. +/// * https://forui.dev/docs/header for working examples. /// * [FNestedHeaderStyle] for customizing a header's appearance. -final class FNestedHeader extends StatelessWidget { - /// The style. Defaults to [FThemeData.nestedHeaderStyle]. +final class _FNestedHeader extends FHeader { + /// The style. Defaults to [FThemeData.headerStyle.nestedStyle]. final FNestedHeaderStyle? style; /// The title, aligned to the center. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final String? title; - - /// The title, aligned to the center. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final Widget? rawTitle; + final Widget title; /// The actions, aligned to the left. Defaults to an empty list. final List leftActions; @@ -42,29 +21,18 @@ final class FNestedHeader extends StatelessWidget { /// The actions, aligned to the right. Defaults to an empty list. final List rightActions; - /// Creates a [FNestedHeader]. - /// - /// ## Contract: - /// Throws [AssertionError] if: - /// * [title] and [rawTitle] are both not null. - const FNestedHeader({ + /// Creates a [_FNestedHeader]. + const _FNestedHeader({ + required this.title, this.style, - this.title, - this.rawTitle, this.leftActions = const [], this.rightActions = const [], super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); + }) : super._(); @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.nestedHeaderStyle; - - final title = switch ((this.title, rawTitle)) { - (final String title, _) => Text(title), - (_, final Widget title) => title, - _ => const Placeholder(), - }; + final style = this.style ?? context.theme.headerStyle.nestedStyle; return SafeArea( bottom: false, @@ -72,12 +40,15 @@ final class FNestedHeader extends StatelessWidget { padding: style.padding, child: Stack( children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), - Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), - ], + _InheritedActionStyle( + style: style.actionStyle, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), + ], + ), ), Positioned.fill( child: Align( @@ -101,18 +72,18 @@ final class FNestedHeader extends StatelessWidget { super.debugFillProperties(properties); properties ..add(DiagnosticsProperty('style', style)) - ..add(StringProperty('title', title)) - ..add(DiagnosticsProperty('rawTitle', rawTitle)); + ..add(IterableProperty('leftActions', leftActions)) + ..add(IterableProperty('rightActions', rightActions)); } } -/// [FNestedHeader]'s style. +/// [_FNestedHeader]'s style. final class FNestedHeaderStyle with Diagnosticable { /// The title's [TextStyle]. final TextStyle titleTextStyle; - /// The [FHeaderAction]'s style for [FNestedHeader.leftActions] and [FNestedHeader.rightActions]. - final FNestedHeaderActionStyle actionStyle; + /// The [FHeaderAction]'s style for [_FNestedHeader.leftActions] and [_FNestedHeader.rightActions]. + final FHeaderActionStyle actionStyle; /// The spacing between [FHeaderAction]s. final double actionSpacing; @@ -128,7 +99,7 @@ final class FNestedHeaderStyle with Diagnosticable { required this.padding, }); - /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. + /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. FNestedHeaderStyle.inherit({ required FColorScheme colorScheme, required FTypography typography, @@ -138,7 +109,7 @@ final class FNestedHeaderStyle with Diagnosticable { fontWeight: FontWeight.w600, height: 1, ), - actionStyle = FNestedHeaderActionStyle.inherit(colorScheme: colorScheme), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme, size: 25), actionSpacing = 10, padding = style.pagePadding.copyWith(bottom: 15); @@ -159,7 +130,7 @@ final class FNestedHeaderStyle with Diagnosticable { /// ``` FNestedHeaderStyle copyWith({ TextStyle? titleTextStyle, - FNestedHeaderActionStyle? actionStyle, + FHeaderActionStyle? actionStyle, double? actionSpacing, EdgeInsets? padding, }) => @@ -179,4 +150,17 @@ final class FNestedHeaderStyle with Diagnosticable { ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) ..add(DiagnosticsProperty('padding', padding)); } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FNestedHeaderStyle && + runtimeType == other.runtimeType && + titleTextStyle == other.titleTextStyle && + actionStyle == other.actionStyle && + actionSpacing == other.actionSpacing && + padding == other.padding; + + @override + int get hashCode => titleTextStyle.hashCode ^ actionStyle.hashCode ^ actionSpacing.hashCode ^ padding.hashCode; } diff --git a/forui/lib/src/widgets/header/root_header.dart b/forui/lib/src/widgets/header/root_header.dart new file mode 100644 index 000000000..76ae91489 --- /dev/null +++ b/forui/lib/src/widgets/header/root_header.dart @@ -0,0 +1,156 @@ +part of 'header.dart'; + +/// A root header. +/// +/// A root header contains the page's title and actions. +/// It is typically used on pages at the root of the navigation stack. +/// +/// See: +/// * https://forui.dev/docs/header for working examples. +/// * [FRootHeaderStyle] for customizing a header's appearance. +final class _FRootHeader extends FHeader { + /// The header's style. Defaults to [FThemeData.headerStyle]. + final FRootHeaderStyle? style; + + /// The title, aligned to the left. + final Widget title; + + /// The actions, aligned to the right. Defaults to an empty list. + final List actions; + + /// Creates a [FHeader]. + const _FRootHeader({ + required this.title, + this.style, + this.actions = const [], + super.key, + }) : super._(); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.headerStyle.rootStyle; + + return SafeArea( + bottom: false, + child: Padding( + padding: style.padding, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: DefaultTextStyle.merge( + overflow: TextOverflow.fade, + maxLines: 1, + softWrap: false, + style: style.titleTextStyle, + child: title, + ), + ), + _InheritedActionStyle( + style: style.actionStyle, + child: Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + ), + ], + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(DiagnosticsProperty('title', title)) + ..add(IterableProperty('actions', actions)); + } +} + +/// [_FRootHeader]'s style. +final class FRootHeaderStyle with Diagnosticable { + /// The title's [TextStyle]. + final TextStyle titleTextStyle; + + /// The [FHeaderAction]'s style. + final FHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; + + /// The padding. + final EdgeInsets padding; + + /// Creates a [FRootHeaderStyle]. + FRootHeaderStyle({ + required this.titleTextStyle, + required this.actionStyle, + required this.actionSpacing, + required this.padding, + }); + + /// Creates a [FRootHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. + FRootHeaderStyle.inherit({ + required FColorScheme colorScheme, + required FTypography typography, + required FStyle style, + }) : titleTextStyle = typography.xl3.copyWith( + color: colorScheme.foreground, + fontWeight: FontWeight.w700, + height: 1, + ), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme, size: 30), + actionSpacing = 10, + padding = style.pagePadding.copyWith(bottom: 15); + + /// Returns a copy of this [FRootHeaderStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FHeaderStyle( + /// titleTextStyle: ..., + /// action: ..., + /// ); + /// + /// final copy = style.copyWith( + /// action: ..., + /// ); + /// + /// print(style.titleTextStyle == copy.titleTextStyle); // true + /// print(style.action == copy.action); // false + /// ``` + @useResult + FRootHeaderStyle copyWith({ + TextStyle? titleTextStyle, + FHeaderActionStyle? actionStyle, + double? actionSpacing, + EdgeInsets? padding, + }) => + FRootHeaderStyle( + titleTextStyle: titleTextStyle ?? this.titleTextStyle, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, + padding: padding ?? this.padding, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) + ..add(DiagnosticsProperty('action', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) + ..add(DiagnosticsProperty('padding', padding)); + } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FRootHeaderStyle && + runtimeType == other.runtimeType && + titleTextStyle == other.titleTextStyle && + actionStyle == other.actionStyle && + actionSpacing == other.actionSpacing && + padding == other.padding; + + @override + int get hashCode => titleTextStyle.hashCode ^ actionStyle.hashCode ^ actionSpacing.hashCode ^ padding.hashCode; +} diff --git a/forui/lib/src/widgets/nested_header/nested_header_action.dart b/forui/lib/src/widgets/nested_header/nested_header_action.dart deleted file mode 100644 index 9cdc26772..000000000 --- a/forui/lib/src/widgets/nested_header/nested_header_action.dart +++ /dev/null @@ -1,147 +0,0 @@ -part of 'nested_header.dart'; - -/// A [FNestedHeader] action. -/// -/// If the [onPress] and [onLongPress] callbacks are null, then this action will be disabled, it will not react to touch. -class FNestedHeaderAction extends StatelessWidget { - /// The style. - final FNestedHeaderActionStyle? style; - - /// The icon. - final SvgAsset icon; - - /// A callback for when the button is pressed. - /// - /// The action will be disabled if both [onPress] and [onLongPress] are null. - final VoidCallback? onPress; - - /// A callback for when the button is long pressed. - /// - /// The action will be disabled if both [onPress] and [onLongPress] are null. - final VoidCallback? onLongPress; - - /// Creates a [FNestedHeaderAction] from the given SVG [icon]. - const FNestedHeaderAction({ - required this.icon, - required this.onPress, - this.onLongPress, - this.style, - super.key, - }); - - /// Creates a [FNestedHeaderAction] with [FAssets.icons.arrowLeft]. - factory FNestedHeaderAction.back({ - required VoidCallback? onPress, - FNestedHeaderActionStyle? style, - Key? key, - }) => - FNestedHeaderAction( - icon: FAssets.icons.arrowLeft, - onPress: onPress, - style: style, - key: key, - ); - - /// Creates a [FNestedHeaderAction] with [FAssets.icons.x]. - factory FNestedHeaderAction.x({ - required VoidCallback? onPress, - FNestedHeaderActionStyle? style, - Key? key, - }) => - FNestedHeaderAction( - icon: FAssets.icons.x, - onPress: onPress, - style: style, - key: key, - ); - - @override - Widget build(BuildContext context) { - final style = this.style ?? context.theme.nestedHeaderStyle.actionStyle; - final enabled = onPress != null || onLongPress != null; - - return MouseRegion( - cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, - child: FTappable( - onTap: onPress, - onLongPress: onLongPress, - child: icon( - height: style.size, - colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), - ), - ), - ); - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(DiagnosticsProperty('style', style)) - ..add(DiagnosticsProperty('icon', icon)) - ..add(DiagnosticsProperty('onPress', onPress)) - ..add(DiagnosticsProperty('onLongPress', onLongPress)); - } -} - -/// [FNestedHeaderAction]'s style. -class FNestedHeaderActionStyle with Diagnosticable { - /// The icon's color when this action is enabled. - final Color enabledColor; - - /// The icon's color when this action is disabled. - final Color disabledColor; - - /// The icon's size. Defaults to 20. - final double size; - - /// Creates a [FNestedHeaderActionStyle]. - FNestedHeaderActionStyle({ - required this.enabledColor, - required this.disabledColor, - this.size = 25, - }); - - /// Creates a [FNestedHeaderActionStyle] that inherits its properties from the given [FColorScheme]. - FNestedHeaderActionStyle.inherit({required FColorScheme colorScheme}) - : enabledColor = colorScheme.foreground, - disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 25; - - /// Returns a copy of this [FNestedHeaderActionStyle] with the given properties replaced. - /// - /// ```dart - /// final style = FNestedHeaderActionStyle( - /// enabledColor: Colors.black, - /// disabledColor: Colors.white, - /// ); - /// - /// final copy = style.copyWith( - /// disabledColor: Colors.blue, - /// ); - /// - /// print(copy.enabledColor); // black - /// print(copy.disabledColor); // blue - /// ``` - @useResult - FNestedHeaderActionStyle copyWith({ - Color? enabledColor, - Color? disabledColor, - double? size, - EdgeInsets? padding, - }) => - FNestedHeaderActionStyle( - enabledColor: enabledColor ?? this.enabledColor, - disabledColor: disabledColor ?? this.disabledColor, - size: size ?? this.size, - ); - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(ColorProperty('enabledColor', enabledColor)) - ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)); - } -} diff --git a/forui/test/golden/header/nested/zinc-dark-header.png b/forui/test/golden/header/nested/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5ff59811a3fdbd2bae53997b82ba0eda2e4007 GIT binary patch literal 29211 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 U4eAJSL9SX`Lr*>D^yS)j`M|2JJN?kxwl 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 diff --git a/forui/test/golden/header/root/zinc-dark-header.png b/forui/test/golden/header/root/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..51bd97489a9a1bede8d0a17220f952a9c74f23c9 GIT binary patch literal 55550 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 U= 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 S-LA*TuT@jgQqE8^5Be`C+=6%j diff --git a/forui/test/golden/header/zinc-dark-raw-title.png b/forui/test/golden/header/zinc-dark-raw-title.png deleted file mode 100644 index f8f0847cf39f4d3b6a810d351537a5362805c0c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28218 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 aKp65nJ=`LGJ#-5B3k~&)XR&8&Z~Yfd1E=Ev diff --git a/forui/test/golden/header/zinc-light-raw-title.png b/forui/test/golden/header/zinc-light-raw-title.png deleted file mode 100644 index 88810b55a9fad4bee196d23d8923c17a7afa11c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28143 zcmeHwXIPVI6lLs=hzx^@NV5SdAR<+|N*M-$L6jmT3Sy85NS6}8GDt@U5$P%_NDGl3 zNU%VHQX(y(g(#s12ptk2**8NN=g&U-?Ec!_C*L1Gc>KzH@44rmd)@$1f0`Nb?>e{( z0)g-w|E_-t0{P_{1hQl2&h6kkm7UD3;Ga!CmyFIsidw|Rz!zJ6&KqCe367ARHzFaB zLl9&AbC>U?PxPGQhaCR(!w2eWu%q%ffx{^le{OP6Qj!FhtRHw*@1~7&2=dIef4|V* zF1PXh@P_bh8|S}@6mOhDj%?Y#ajtjc!{&|i$lW#@r;sO`_%_ZD@ov5m3SL-vXxYF5 zuZVcu!o>oQa(T^y3k6;e#ciy zt-Dw6(r;G7(vGxlrJV zQl34+g~I>S>Z?Ag%tj8^o@0)8LOl=Sd~oicqo&iyQXpK{PHw+50--ZSUJ29+U0t4L z+*TEZ!=dqT5>}$Iu~Fz0=L2<|BV0G+4meIP>^$HcTUhvrii`7P|K^CfrJ5F(rdBJO zpP#js(7678A&~ErTW!*J_V)Ht+un4Bt*s3YN9^3N&%(d_Qf&4Z+``$@({o$|KQ-Qo zj1OTC)W>)+W=D+rLl)k4-&UQXuwBx%gBNRC((1_7x|q2XK4BdZSy@^7b^eW~Btd9f zt3ub(ylBKFOM<$;0+i)HxYFF*j4Jo{eZ8Ps;mMv(@FE%e4L9NGA;ZdSh4m{xtjtby zm!MFnvx`eh_yf-NHOpf*4i4fbCMH4(a7Rp#iiFm(pH|SkYpf!!%4Y|WNCG}DHZmrK0$(bUw$*KorV-hLxs=}V>02>$c3TdZPvMF1{DM>1zdCzXVRCNM%m z4?yD-aV!?g2AY*XCd&w&+7f@{!$3z6Yn9O<#9hzx2Kod!_|CJTjOiK4W9fhY`RB{< zH->|*T80LtnJ@g@-RdsL%Wn4XkM_^;&~ynvlZlJufbuI7A2WJT@M^!_TZMlXmhDs2 za~JHmba{`L`qoWb_`Ux;XLm2$dnaAefqd0?R?9k5>nuV?DfU7U4U44Asb@D$XRH(z z6~%*PO8B|=mQSLb>c3_emBAX56%rx5UM$*#l4F+tTV5(8D}jhxVExH_^e#jS<6;zo_d#;Dom~xt{cnAdiE$P z{Nm1HSD$3Zpj&Nz$qtJF#w5(_S6MHDHif{{*chAjdastb`DG);SK-=0^N}S49ZdnD zAz~M5q;7Vok^24P1JkMC70q9-pIiC9?_p_GTU%S@$`t*kUvpDRg^{hTt*j|Gr+UG2 zVAZg_Py_wTR#t`-EW$4ERUfUl!t=6~V`ghVh**&L;ZmW@aD(d82Cx< z$#EeBvu4HG*w{FRpf&W=a$x#LM68n%@@P{bEHhB`nF3ToP;eyO$1FXdzfv_bGX6Yx zwxTm`#CiJrN3SI^B?cs8sUSHy89$=4)cstGfmVIKXFbN@<&VeUJC3q`gO(jL?7;+^ z7eLwPYo?vqP&^ z>(^J6m6iNCTh?FWP}Zy^#wha@XFVI``LQ)O?3(|9X08#c4M<+!EK=usGT4ys|hsQzsPTR2L~Y^FzQq z^4^vmH$yNxWp%9zuO^jl_Y}HTb~K=$Fs2V%T>Zsp*llI?$6V=gp~Y6x1<>}o?Vv>mK5 z{dXIpR8&PpMFel1l#~n;6P@g>P{<4#AIk+584(fjEVk=NzBMwc3=SWdC?Q1iDb$>f zj*d>n49~Zl$3#SYwz#5#?8f+vw8Tkh@1hPSnzz(fI-Jka!6XvDyZ>v!zi{XR`EE*? zb2SW>l~qVkB4{aPW9%wC;&w=`8q_d`)8s`IU&nY4w%<>#t_mZXp@7rsc8+F~Yhc zCeP%IQ{Plps^elsgz(}4xAzJs>w{8y`gE_6@fT?3$+7@?KbvtyGI(h!jsy*pCl&@D z2B}Q$Jj>6|KhtnDp{^xE(|L8-B$dowgn3S>#BJNQ&9-^dYoTkc!)|VF1L;03%}n%A zV-{R_)ffY_1epj^cD7V13ut^MA0uVL`c*)Cz7gcEg~@zpnN!zk4c!O&WXz^5+e<$^ zTo0HYObsCJ_^DIzOeQnC$Qn?IMTp<>^pE9EWavIo)!R+us{o0((bjC|`B4kSyVKvL zmn4EGP+k)#JeCIAw{IWH86V$OeEmWJwDz$7RA0(WH&}XH~Tv^{6D{&Tf%2 z$MORcZZ2wUJ8oue_a9Dy;hr2d za_X;P&~5VzYP5nDCsLGkA7ePs`lgzfmpAaf@#FwbG^aux%d`vVn~75g%tz&eE+==D z!L7~cTp8f&anvY2_E!7bdcf`3#l@$$3rL8m^_`ag+SsUsX8m{+mgE)Uw>pEzcf7N7 z>M4D9HVVli?$DXO_gvNe>ctEVsd!zTk`+%fT0V3k9||k2sHs`arF2FL9=&=-^|6%s zhx?~)l8PK=;yeMCt43A|Lx~(3cyG0`%a zHhVclU>J-~kdzd*pMF_D_}yzDN(Pssv+!6%NW=lk9=v|? zh16D?Z`(RLI`mzJ_PJ~StMD4C$khROLKsU=85~uf0NjcQW}H`(BK}xbnMxa0lvM+eqoZJb`U6MBdU2-9uk?rm=ms}u-9G}5FoRk zK_(KbC(C<#C(0hgr6`Y~bMy1zG{yC&hVSvf$BSFo+4T-)Vi7C2!7qu4)cnXum&Rwc zGT7)yPL;~pm1{AufJqbsXZ6=b25t`wg}(~Y)kBX6F9UH zI1(2#Fu-1u3`MN<-vxzY=S%PPsMemsEIpD><-&fnCv>HkqFUu>V{^drt-Yjyfq}dR z3?Gl9=Da1IvABGBZ=wuTSeNm|oC<_j+>~AAo$GyfKJ&|K@VSZu754@R9~OuBOUa$Nv+ zPEw@)#+L27BSn;SBsu!eYp$97cp-le9lH{|(d!O<`Sh2$a#bjEEC=84%2xtf~S|DteuB$rSKG=weCM&9!4l z@Gj4_S6Igt6bR$!ZG8Ld-n%ruM{|DA2prdFM0XTuyoRLe0J=o7y|=N1%-1-RQ&q>% zel+4JGardP*jrvUk@QG!>X+gdLa9nHGa~6JP-fx*O|b(51Fw}h)Y%`*mZj02$uTap z1+L#%k5qR3GgF#G(4ZCErK~WAZ>9E)QEJ1|1BX*gr*2J^Y+=ZJxNkO!*JT+KNqzpk zB)ioqD(79#&Mg)c83$exUcb?|vO)*D_R*{7&YiOlnK1}Vm##R4U48|s!qpeC#^eu7 z-`?;L!l#h}&}!i4=VwK_4B`y3>Eq2(A=zgvs5oBWs{9*nfB*q|PZ^RLznaDCAee(* zuli1&I1$yFZKQ@~^}vz!S?tvjEwio4M&a8sn)0sXzsKHW&YKTStOB6r=H@nxr#?+t zZ!F0B%1*NX+rV$Gp+mGo<@9GVL9ID6+9PTbao(1Xh(fC|14BgAO zU#{UU8||ksI3KdUxEFJ7n!nGmdxwRH=;Cx!qNKTyA3dgg(*{Gf*dF9^0IzCh3RZ zG(ArW_V~$@U*~QxfU?If4+z)p<*1$B+Ywjttqct6@mCjO$J%r7YPEqzIqaqG6u(vW zID`(U#RNTdZ-+$Fm>3wp2yS5@EoOur>r2+ic{>2Or8QfVMcYA91;I1iQV+<<)-gdK+9?LG=`QCh?%L=3wH9rXAo*Kp{}fA!TjzMW z1Xm`!=u{TImh|-L;H|%j)|W2z4Ki748M+^WhLWs%f*#h4{gG9s^z$PS;^(b*6*B?* z4F>su+n;v*_M%+kuqV0=HW~Y`o3Hn%7)(TlB%pO?)xWTVXoVG5hp?P%gON!M-QN+= zYHROh;9{5XSj}Oq#NTkE{2?zcxQ@RwcVC##w{{Ga3SFZaT^;JLuaB#ZxI@7*tx^V8zGX^SSisly~9Z{?k``zR>#GQ_qu_OTnkNv3qwOJ@-s|Fz(mVkf!?EU z9kPtn=%lOTeLi?qhH_p-p(92*2YIv)6C98YudjEX`)cqVqqT`ou*jL~~t{L)NK$#g2hPomSeqy*uGQKFRz|2x1Ibr`j)Vm2=ev z3M2|leMW(SfkaYgXJ^?bWo`tju3T!Hx6A?qpB*CN+=K1)rMKG8L>B{YN#W?nwzJKM z{hq(yU%UYL>Y_otQ3>|uSlgSz)4!}=uje5i(C1}gW79Pnq_Y{++2IS@@%(BRV>tFu zbpWVxW7ut=CR@usefo6Z^fkRU#JxTtumB&TZMW{G{5-c%*^Atbs>gPq{d=_;e?I6y z0nx8n?12ZSxJ-Yq)dx%eB_CQFYD);XZL_C_XFkLIeyw@u@<7ZvA% zXuiLV&#CoQJx6b*H%%`fDf>NZW^kIdk{Z6QyMbYqK@pG)ZL5}eWNT&hEYXL{wJn~5 z4Np+lKjREZaJX7M=-C<4UZR$sDtspz}}WTma}V=ZkcIy^)W_>R_3jVU0|*aiY$X5b5>j zekT+}uKCz+!9=j!Vv~Y2nYC3CUX^EM2WkCz$ zch?q3q7IT8^IKX0$e+dX4L*nPo$=+^DQGmhT;k|aA?erzz(obfG!?kN_rohtsHD=( zRZBUW;zKmJLgn`hwotCU;p>oXsIs;TTOT7_4;C`3+zbV8RR1Q~@gPT!am*|5wF@Ev zO!qc5%U`6I?yemw1)T?-4uT`)U=3_YnXHgM`us=%&LGzH_$Y7Z`sjV@nB&{EYamvsrGcuy-h&$|&OPX-yrOwx7G#aq7~6zHavlEC z=Y#+RmT1qE_ooU_}@FK+5S`PP5mH3R(+FsvExD(<&(aLAaWk0CiC5r`MNNfsA^BYq#Z zNk)%kh3WKz29jMwB9ZXU30LaDRGu{QrL8GNNv1z!uGx?Tm`Mcuw@?Y0&1Z)8J@hr^ zENNuP9vc$aLhrr=w7|@_3j*Z}2jZA50j%soqxA%3u~=Brn)4rnf>bK+wXZjcPz z$^B5)Y_fL{0oZ>)L^O_R`?%m@2^IM};loY6n4n+R-`EuexT+HPQmJG$SW7m_f3ipG z;?oRJC3RqUN+YWQYB??^*YsImZ`Y>%4n$q{oUQ?2Rx^6lt@h#ceud;7lZOi+7QkW2 z0Njsx$!n(?{=87pp1qv3Yrc%~Qeb6^bOs!QjY1iMN|C{Zc&I_J@gy^Wwyc z^LWRJvsDz1f*jN-y!Gkfj3TTBNquIglNi6ba(3gh02NBGmKtpiyTyuYs(Qk>{Ow?r zAfY_~hSp|Rx+JSuS>o>ZkLq`)ugRJ(IC6~99TIm>XCfB6V;3dER%aZwcZ!EYVoo6e zrB0z~nln^Mc5c0S1bQTsKH{23RJrycoZ~6tXNL%7ZjmZJ!;>hNMvm7>F!J*9%Fo!K z5_dSUAc`?J0;{PlFINqne!!0I%qNu&T&9=1b>=O96ky4^!Ii>F+JMrPtYtJ)3)S~M z<~w5?Sz8l-XLgY0G*Bn&G&4{StSuiWVD#9MvtPYB!kGa$4RH5?(=U>wn+w6@@Xy;M zW9N||DCvN-C4t^{ZPm^(%lOS2intOhs#f$lgsXt{@MU0w;C1Z?M@MKeN3&7BV{OZ$ zM!E;zypbvWK^?UUsfczQe})e)R>HadEwEk_p`HN=D1!n^_MeYOQwY%d(q-R zsQ+#!uxYZj$f4S4Zn)XPuKL6{Z3#MWw7)B9oqR{ED%O4#N4FzxZ43hY8N$5mD&2(`BE+}H#S z-vgT&ka7O8Ic%-DHfRXSUV&z#Kh>{b%pVZ7FH9^aC8vxVt1Q)8e5YP6SrB&-(K4bq&t05ckzzT(Cho zxq!a-0(eqj`-O(A)zMl0_>#VQ`*TDb>duc(oMvn1Qy0roS2Ir%LexR;V6+fGUxcr& zj_4*l*dd@Ai~w#%I%3hb@a&PthkwT9a9=Pz3=byjp218B?VviK=mwUlk7{6rz~lk( z65)(>6O`K8GTiM;78VxvzO4pci`_7T3J-FB32QO2I5no2V-L3HP`a)BlC)kP!UgDUJ1EuX|F%)*FG4OKavaMM|=Rug#gQvPGr$6y! z1JM>YB?uVku|CC3isaqB`~(u9x?Sh z9SgIwvz4o}2}5p|Uu^qNF7JS;b(zj)S=6wYG&(bo-jAV1h`y~~p|Dwl!L*BR^_ODE@-%1PC-$Jq`!6{TDzKGBao`LWEa}^TD8$=&FfPuI zwaYO2^``z)6WKt90e8)Mrp-jbK%cWuBgAQ*0D{j;lsNMP2QX^=caJVkbPIXbpfvsI zEDDq})BwB8ur_p!HIhXS9$C8ZXb;%I2pYWoj5E%LG8!LI!DW$=k*u{9d>JWJYr8