diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/bars/bars.dart b/packages/wyatt_ui_components/lib/src/domain/entities/bars/bars.dart index 16fbd451..5bd04fd5 100644 --- a/packages/wyatt_ui_components/lib/src/domain/entities/bars/bars.dart +++ b/packages/wyatt_ui_components/lib/src/domain/entities/bars/bars.dart @@ -14,6 +14,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export 'top_app_bar_component.dart'; export './bottom_navigation_bar_component.dart'; export './top_navigation_bar_component.dart'; +export 'top_app_bar_component.dart'; diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.dart index a5cc6977..3f9304ec 100644 --- a/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.dart +++ b/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.dart @@ -15,9 +15,10 @@ // along with this program. If not, see . import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart'; -import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart'; import 'package:wyatt_ui_components/src/domain/entities/bars/top_bar_component.dart'; +import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; part 'top_navigation_bar_component.g.dart'; @@ -25,6 +26,7 @@ part 'top_navigation_bar_component.g.dart'; abstract class TopNavigationBarComponent extends TopBarComponent with CopyWithMixin<$TopNavigationBarComponentCWProxy> { const TopNavigationBarComponent({ + this.navigationItems, this.onTap, this.currentIndex = 0, super.shape, @@ -48,6 +50,7 @@ abstract class TopNavigationBarComponent extends TopBarComponent super.key, }); + final List? navigationItems; final int currentIndex; final void Function(BuildContext, int)? onTap; } diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.g.dart b/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.g.dart index 591c9a6e..7d51e749 100644 --- a/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.g.dart +++ b/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.g.dart @@ -7,16 +7,54 @@ part of 'top_navigation_bar_component.dart'; // ************************************************************************** abstract class $TopNavigationBarComponentCWProxy { - TopNavigationBarComponent leading(Widget? leading); - TopNavigationBarComponent actions(List? actions); + TopNavigationBarComponent navigationItems(List? navigationItems); TopNavigationBarComponent onTap(void Function(BuildContext, int)? onTap); TopNavigationBarComponent currentIndex(int? currentIndex); + TopNavigationBarComponent shape(ShapeBorder? shape); + TopNavigationBarComponent systemOverlayStyle( + SystemUiOverlayStyle? systemOverlayStyle); + TopNavigationBarComponent automaticallyImplyLeading( + bool? automaticallyImplyLeading); + TopNavigationBarComponent flexibleSpace(Widget? flexibleSpace); + TopNavigationBarComponent bottom(PreferredSizeWidget? bottom); + TopNavigationBarComponent elevation(double? elevation); + TopNavigationBarComponent scrolledUnderElevation( + double? scrolledUnderElevation); + TopNavigationBarComponent shadowColor(Color? shadowColor); + TopNavigationBarComponent surfaceTintColor(Color? surfaceTintColor); + TopNavigationBarComponent backgroundColor(MultiColor? backgroundColor); + TopNavigationBarComponent iconTheme(IconThemeData? iconTheme); + TopNavigationBarComponent primary(bool? primary); + TopNavigationBarComponent excludeHeaderSemantics( + bool? excludeHeaderSemantics); + TopNavigationBarComponent toolbarHeight(double? toolbarHeight); + TopNavigationBarComponent leadingWidth(double? leadingWidth); + TopNavigationBarComponent leading(Widget? leading); + TopNavigationBarComponent actions(List? actions); + TopNavigationBarComponent expandedWidget(List? expandedWidget); TopNavigationBarComponent key(Key? key); TopNavigationBarComponent call({ - Widget? leading, - List? actions, + List? navigationItems, void Function(BuildContext, int)? onTap, int? currentIndex, + ShapeBorder? shape, + SystemUiOverlayStyle? systemOverlayStyle, + bool? automaticallyImplyLeading, + Widget? flexibleSpace, + PreferredSizeWidget? bottom, + double? elevation, + double? scrolledUnderElevation, + Color? shadowColor, + Color? surfaceTintColor, + MultiColor? backgroundColor, + IconThemeData? iconTheme, + bool? primary, + bool? excludeHeaderSemantics, + double? toolbarHeight, + double? leadingWidth, + Widget? leading, + List? actions, + List? expandedWidget, Key? key, }); } diff --git a/packages/wyatt_ui_kit/example/assets/images/studio_long_logo.png b/packages/wyatt_ui_kit/example/assets/images/studio_long_logo.png new file mode 100644 index 00000000..8534fdf9 Binary files /dev/null and b/packages/wyatt_ui_kit/example/assets/images/studio_long_logo.png differ diff --git a/packages/wyatt_ui_kit/example/lib/bars/bars.dart b/packages/wyatt_ui_kit/example/lib/bars/bars.dart index 2290e006..c2254916 100644 --- a/packages/wyatt_ui_kit/example/lib/bars/bars.dart +++ b/packages/wyatt_ui_kit/example/lib/bars/bars.dart @@ -61,6 +61,28 @@ class Bars extends DemoPage { ) ], ), + const Gap(20), + TopNavigationBar( + leading: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Image.asset('assets/images/studio_long_logo.png'), + ), + actions: [ + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 20, vertical: 25), + child: FlatButton( + label: 'Estimer mon projet'.wrap(), + ), + ), + ], + navigationItems: [ + 'ACCEUIL'.wrap(), + 'VOTRE PROGRAMME'.wrap(), + 'LE STUDIO'.wrap(), + 'SAVOIR FAIRE'.wrap() + ].whereType().toList(), + ), ], ); diff --git a/packages/wyatt_ui_kit/example/lib/theme/themes.dart b/packages/wyatt_ui_kit/example/lib/theme/themes.dart index e36014d6..08c00bd2 100644 --- a/packages/wyatt_ui_kit/example/lib/theme/themes.dart +++ b/packages/wyatt_ui_kit/example/lib/theme/themes.dart @@ -25,7 +25,7 @@ import 'package:wyatt_ui_kit_example/theme/rich_text_builder_theme.dart'; import 'package:wyatt_ui_kit_example/theme/simple_icon_button_theme.dart'; import 'package:wyatt_ui_kit_example/theme/symbol_button_theme.dart'; import 'package:wyatt_ui_kit_example/theme/text_input_theme.dart'; -import 'package:wyatt_ui_kit_example/theme/top_app_bar_theme.dart'; +import 'package:wyatt_ui_kit_example/theme/top_bar_theme.dart'; /// Easely switch between Material and Studio themes. abstract class Themes { diff --git a/packages/wyatt_ui_kit/example/lib/theme/top_app_bar_theme.dart b/packages/wyatt_ui_kit/example/lib/theme/top_bar_theme.dart similarity index 64% rename from packages/wyatt_ui_kit/example/lib/theme/top_app_bar_theme.dart rename to packages/wyatt_ui_kit/example/lib/theme/top_bar_theme.dart index 8be94e42..218f223e 100644 --- a/packages/wyatt_ui_kit/example/lib/theme/top_app_bar_theme.dart +++ b/packages/wyatt_ui_kit/example/lib/theme/top_bar_theme.dart @@ -3,24 +3,31 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; import 'package:wyatt_ui_kit/wyatt_ui_kit.dart'; -class TopAppBarTheme extends TopAppBarThemeExtension { +class TopAppBarTheme extends TopBarThemeExtension { const TopAppBarTheme({ super.iconTheme, super.backgroundColors, - super.expandedDividerStyle, + super.secondaryColor, super.titleStyle, + super.subTitleStyle, }); factory TopAppBarTheme.light() => TopAppBarTheme( backgroundColors: const MultiColor.single( Color.fromRGBO(246, 246, 246, 1), ), - expandedDividerStyle: Colors.black.withOpacity(0.1), + secondaryColor: const Color.fromRGBO(36, 38, 42, 1), titleStyle: GoogleFonts.montserrat( fontWeight: FontWeight.bold, + color: const Color.fromRGBO(36, 38, 42, 1), fontSize: 18, ), - iconTheme: const IconThemeData(color: Colors.black), + subTitleStyle: GoogleFonts.montserrat( + fontWeight: FontWeight.w400, + color: const Color.fromRGBO(36, 38, 42, 1), + fontSize: 18, + ), + iconTheme: const IconThemeData(color: Color.fromRGBO(36, 38, 42, 1)), ); factory TopAppBarTheme.dark() => TopAppBarTheme( @@ -29,31 +36,35 @@ class TopAppBarTheme extends TopAppBarThemeExtension { Color.fromRGBO(39, 47, 61, 1), Color.fromRGBO(44, 50, 56, 1), ]), - expandedDividerStyle: Colors.white.withOpacity(0.1), + secondaryColor: Colors.white, titleStyle: GoogleFonts.montserrat( fontWeight: FontWeight.bold, fontSize: 18, ), + subTitleStyle: GoogleFonts.montserrat( + fontWeight: FontWeight.w400, + fontSize: 18, + ), iconTheme: const IconThemeData(color: Colors.white), ); @override - ThemeExtension copyWith({ + ThemeExtension copyWith({ IconThemeData? iconTheme, MultiColor? backgroundColors, - Color? expandedDividerStyle, + Color? secondaryColor, TextStyle? titleStyle, }) => TopAppBarTheme( iconTheme: iconTheme ?? this.iconTheme, backgroundColors: backgroundColors ?? this.backgroundColors, - expandedDividerStyle: expandedDividerStyle ?? this.expandedDividerStyle, + secondaryColor: secondaryColor ?? this.secondaryColor, titleStyle: titleStyle ?? this.titleStyle, ); @override - ThemeExtension lerp( - covariant ThemeExtension? other, + ThemeExtension lerp( + covariant ThemeExtension? other, double t, ) { if (other is! TopAppBarTheme) { @@ -63,8 +74,7 @@ class TopAppBarTheme extends TopAppBarThemeExtension { iconTheme: IconThemeData.lerp(iconTheme, other.iconTheme, t), backgroundColors: MultiColor.lerp(backgroundColors, other.backgroundColors, t), - expandedDividerStyle: - Color.lerp(expandedDividerStyle, other.expandedDividerStyle, t), + secondaryColor: Color.lerp(secondaryColor, other.secondaryColor, t), titleStyle: TextStyle.lerp(titleStyle, other.titleStyle, t), ); } diff --git a/packages/wyatt_ui_kit/lib/src/components/app_bars/app_bars.dart b/packages/wyatt_ui_kit/lib/src/components/bars/bars.dart similarity index 91% rename from packages/wyatt_ui_kit/lib/src/components/app_bars/app_bars.dart rename to packages/wyatt_ui_kit/lib/src/components/bars/bars.dart index a7a986ee..f3f8f557 100644 --- a/packages/wyatt_ui_kit/lib/src/components/app_bars/app_bars.dart +++ b/packages/wyatt_ui_kit/lib/src/components/bars/bars.dart @@ -14,4 +14,5 @@ // You should have received a copy of the GNU General Public License // along with super program. If not, see . -export 'top_app_bar.dart'; +export './top_app_bar.dart'; +export './top_navigation_bar.dart'; diff --git a/packages/wyatt_ui_kit/lib/src/components/app_bars/top_app_bar.dart b/packages/wyatt_ui_kit/lib/src/components/bars/top_app_bar.dart similarity index 88% rename from packages/wyatt_ui_kit/lib/src/components/app_bars/top_app_bar.dart rename to packages/wyatt_ui_kit/lib/src/components/bars/top_app_bar.dart index 4e15d145..f915cff7 100644 --- a/packages/wyatt_ui_kit/lib/src/components/app_bars/top_app_bar.dart +++ b/packages/wyatt_ui_kit/lib/src/components/bars/top_app_bar.dart @@ -24,6 +24,8 @@ part 'top_app_bar.g.dart'; @ComponentCopyWithExtension() class TopAppBar extends TopAppBarComponent with $TopAppBarCWMixin { const TopAppBar({ + super.title, + super.centerTitle, super.systemOverlayStyle, super.automaticallyImplyLeading, super.flexibleSpace, @@ -38,10 +40,8 @@ class TopAppBar extends TopAppBarComponent with $TopAppBarCWMixin { super.excludeHeaderSemantics, super.toolbarHeight, super.leadingWidth, - super.title, super.leading, super.actions, - super.centerTitle, super.shape, super.expandedWidget, super.key, @@ -53,9 +53,7 @@ class TopAppBar extends TopAppBarComponent with $TopAppBarCWMixin { gradient: ThemeHelper.getThemeElement( [ backgroundColor, - context - .themeExtension() - ?.backgroundColors, + context.themeExtension()?.backgroundColors, ], valueValidator: (value) => value?.isGradient, transform: (value) => @@ -65,9 +63,7 @@ class TopAppBar extends TopAppBarComponent with $TopAppBarCWMixin { color: ThemeHelper.getThemeElement( [ backgroundColor, - context - .themeExtension() - ?.backgroundColors, + context.themeExtension()?.backgroundColors, ], valueValidator: (value) => value?.isColor, transform: (value) => value?.color, @@ -91,7 +87,7 @@ class TopAppBar extends TopAppBarComponent with $TopAppBarCWMixin { ThemeHelper.getThemeElement( [ iconTheme, - context.themeExtension()?.iconTheme, + context.themeExtension()?.iconTheme, ], valueValidator: (value) => value != null, transform: (value) => value, @@ -105,9 +101,7 @@ class TopAppBar extends TopAppBarComponent with $TopAppBarCWMixin { style: ThemeHelper.getThemeElement( [ title?.style, - context - .themeExtension() - ?.titleStyle + context.themeExtension()?.titleStyle ], valueValidator: (value) => value != null, transform: (value) => value, @@ -123,8 +117,9 @@ class TopAppBar extends TopAppBarComponent with $TopAppBarCWMixin { color: ThemeHelper.getThemeElement( [ context - .themeExtension() - ?.expandedDividerStyle, + .themeExtension() + ?.secondaryColor + ?.withOpacity(0.1), ], valueValidator: (value) => value != null, transform: (value) => value, diff --git a/packages/wyatt_ui_kit/lib/src/components/app_bars/top_app_bar.g.dart b/packages/wyatt_ui_kit/lib/src/components/bars/top_app_bar.g.dart similarity index 100% rename from packages/wyatt_ui_kit/lib/src/components/app_bars/top_app_bar.g.dart rename to packages/wyatt_ui_kit/lib/src/components/bars/top_app_bar.g.dart index fe0baa7a..366e5bbf 100644 --- a/packages/wyatt_ui_kit/lib/src/components/app_bars/top_app_bar.g.dart +++ b/packages/wyatt_ui_kit/lib/src/components/bars/top_app_bar.g.dart @@ -86,6 +86,8 @@ class $TopAppBarCWProxyImpl implements $TopAppBarComponentCWProxy { Key? key, }) => TopAppBar( + title: title ?? _value.title, + centerTitle: centerTitle ?? _value.centerTitle, systemOverlayStyle: systemOverlayStyle ?? _value.systemOverlayStyle, automaticallyImplyLeading: automaticallyImplyLeading ?? _value.automaticallyImplyLeading, @@ -103,10 +105,8 @@ class $TopAppBarCWProxyImpl implements $TopAppBarComponentCWProxy { excludeHeaderSemantics ?? _value.excludeHeaderSemantics, toolbarHeight: toolbarHeight ?? _value.toolbarHeight, leadingWidth: leadingWidth ?? _value.leadingWidth, - title: title ?? _value.title, leading: leading ?? _value.leading, actions: actions ?? _value.actions, - centerTitle: centerTitle ?? _value.centerTitle, shape: shape ?? _value.shape, expandedWidget: expandedWidget ?? _value.expandedWidget, key: key ?? _value.key, diff --git a/packages/wyatt_ui_kit/lib/src/components/bars/top_navigation_bar.dart b/packages/wyatt_ui_kit/lib/src/components/bars/top_navigation_bar.dart new file mode 100644 index 00000000..87d26a6d --- /dev/null +++ b/packages/wyatt_ui_kit/lib/src/components/bars/top_navigation_bar.dart @@ -0,0 +1,135 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart'; +import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; +import 'package:wyatt_ui_kit/src/components/bars/widgets/navigation_item.dart'; +import 'package:wyatt_ui_kit/wyatt_ui_kit.dart'; + +part 'top_navigation_bar.g.dart'; + +@ComponentCopyWithExtension() +class TopNavigationBar extends TopNavigationBarComponent + with $TopNavigationBarCWMixin { + const TopNavigationBar({ + super.navigationItems, + super.onTap, + super.currentIndex = 0, + super.systemOverlayStyle, + super.automaticallyImplyLeading, + super.flexibleSpace, + super.bottom, + super.elevation, + super.scrolledUnderElevation, + super.shadowColor, + super.surfaceTintColor, + super.backgroundColor, + super.iconTheme, + super.primary, + super.excludeHeaderSemantics, + super.toolbarHeight, + super.leadingWidth, + super.leading, + super.actions, + super.shape, + super.expandedWidget, + super.key, + }); + + @override + Widget build(BuildContext context) => DecoratedBox( + decoration: BoxDecoration( + gradient: ThemeHelper.getThemeElement( + [ + backgroundColor, + context.themeExtension()?.backgroundColors, + ], + valueValidator: (value) => value?.isGradient, + transform: (value) => + LinearGradientHelper.fromNullableColors(value?.colors), + defaultValue: null, + ), + color: ThemeHelper.getThemeElement( + [ + backgroundColor, + context.themeExtension()?.backgroundColors, + ], + valueValidator: (value) => value?.isColor, + transform: (value) => value?.color, + defaultValue: Theme.of(context).appBarTheme.backgroundColor, + ), + ), + child: AppBar( + toolbarHeight: 100, + titleSpacing: 0, + backgroundColor: Colors.transparent, + systemOverlayStyle: systemOverlayStyle, + automaticallyImplyLeading: automaticallyImplyLeading ?? true, + flexibleSpace: flexibleSpace, + bottom: bottom, + elevation: elevation ?? 0, + scrolledUnderElevation: scrolledUnderElevation, + shadowColor: shadowColor, + surfaceTintColor: surfaceTintColor, + iconTheme: ThemeHelper.getThemeElement( + [ + iconTheme, + context.themeExtension()?.iconTheme, + ], + valueValidator: (value) => value != null, + transform: (value) => value, + defaultValue: Theme.of(context).iconTheme, + ), + primary: primary ?? true, + excludeHeaderSemantics: excludeHeaderSemantics ?? false, + leadingWidth: 200, + title: Row( + mainAxisSize: MainAxisSize.min, + children: navigationItems != null + ? navigationItems! + .asMap() + .map( + (key, value) => MapEntry( + key, + Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: GestureDetector( + onTap: () { + onTap?.call(context, key); + }, + child: NavigationItem( + item: value, + selected: key == currentIndex, + ), + ), + ), + ), + ), + ) + .values + .toList() + : [], + ), + leading: leading, + actions: actions, + centerTitle: true, + ), + ); +} diff --git a/packages/wyatt_ui_kit/lib/src/components/top_navigation_bars/top_navigation_bar.g.dart b/packages/wyatt_ui_kit/lib/src/components/bars/top_navigation_bar.g.dart similarity index 74% rename from packages/wyatt_ui_kit/lib/src/components/top_navigation_bars/top_navigation_bar.g.dart rename to packages/wyatt_ui_kit/lib/src/components/bars/top_navigation_bar.g.dart index f6e95da2..591b8704 100644 --- a/packages/wyatt_ui_kit/lib/src/components/top_navigation_bars/top_navigation_bar.g.dart +++ b/packages/wyatt_ui_kit/lib/src/components/bars/top_navigation_bar.g.dart @@ -11,6 +11,9 @@ class $TopNavigationBarCWProxyImpl const $TopNavigationBarCWProxyImpl(this._value); final TopNavigationBar _value; @override + TopNavigationBar navigationItems(List? navigationItems) => + this(navigationItems: navigationItems); + @override TopNavigationBar onTap(void Function(BuildContext, int)? onTap) => this(onTap: onTap); @override @@ -69,6 +72,7 @@ class $TopNavigationBarCWProxyImpl TopNavigationBar key(Key? key) => this(key: key); @override TopNavigationBar call({ + List? navigationItems, void Function(BuildContext, int)? onTap, int? currentIndex, ShapeBorder? shape, @@ -92,10 +96,30 @@ class $TopNavigationBarCWProxyImpl Key? key, }) => TopNavigationBar( - leading: leading ?? _value.leading, - actions: actions ?? _value.actions, + navigationItems: navigationItems ?? _value.navigationItems, onTap: onTap ?? _value.onTap, currentIndex: currentIndex ?? _value.currentIndex, + systemOverlayStyle: systemOverlayStyle ?? _value.systemOverlayStyle, + automaticallyImplyLeading: + automaticallyImplyLeading ?? _value.automaticallyImplyLeading, + flexibleSpace: flexibleSpace ?? _value.flexibleSpace, + bottom: bottom ?? _value.bottom, + elevation: elevation ?? _value.elevation, + scrolledUnderElevation: + scrolledUnderElevation ?? _value.scrolledUnderElevation, + shadowColor: shadowColor ?? _value.shadowColor, + surfaceTintColor: surfaceTintColor ?? _value.surfaceTintColor, + backgroundColor: backgroundColor ?? _value.backgroundColor, + iconTheme: iconTheme ?? _value.iconTheme, + primary: primary ?? _value.primary, + excludeHeaderSemantics: + excludeHeaderSemantics ?? _value.excludeHeaderSemantics, + toolbarHeight: toolbarHeight ?? _value.toolbarHeight, + leadingWidth: leadingWidth ?? _value.leadingWidth, + leading: leading ?? _value.leading, + actions: actions ?? _value.actions, + shape: shape ?? _value.shape, + expandedWidget: expandedWidget ?? _value.expandedWidget, key: key ?? _value.key, ); } diff --git a/packages/wyatt_ui_kit/lib/src/components/bars/widgets/navigation_item.dart b/packages/wyatt_ui_kit/lib/src/components/bars/widgets/navigation_item.dart new file mode 100644 index 00000000..8269445f --- /dev/null +++ b/packages/wyatt_ui_kit/lib/src/components/bars/widgets/navigation_item.dart @@ -0,0 +1,73 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// super program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// super program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with super program. If not, see . + +import 'package:flutter/material.dart'; +import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; +import 'package:wyatt_ui_kit/wyatt_ui_kit.dart'; + +class NavigationItem extends StatelessWidget { + const NavigationItem({ + required this.item, + required this.selected, + super.key, + }); + final TextWrapper item; + final bool selected; + + @override + Widget build(BuildContext context) => Stack( + alignment: Alignment.bottomCenter, + children: [ + if (selected) + Container( + height: 5, + width: 70, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(100), + color: ThemeHelper.getThemeElement( + [ + context + .themeExtension() + ?.secondaryColor + ], + valueValidator: (value) => value != null, + transform: (value) => value, + defaultValue: Theme.of(context).primaryColor, + ), + ), + ), + SizedBox( + height: 50, + child: Center( + child: Text( + item.data, + style: ThemeHelper.getThemeElement( + [ + item.style, + context + .themeExtension() + ?.subTitleStyle + ], + valueValidator: (value) => value != null, + transform: (value) => value, + defaultValue: context.textTheme.titleMedium, + ), + ), + ), + ), + ], + ); +} diff --git a/packages/wyatt_ui_kit/lib/src/components/components.dart b/packages/wyatt_ui_kit/lib/src/components/components.dart index 9b4c399c..486e2f93 100644 --- a/packages/wyatt_ui_kit/lib/src/components/components.dart +++ b/packages/wyatt_ui_kit/lib/src/components/components.dart @@ -14,10 +14,10 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export './app_bars/app_bars.dart'; export './buttons/buttons.dart'; export './cards/cards.dart'; export './gradients/gradients.dart'; export './loader/loader.dart'; export './rich_text_builder/rich_text_builder.dart'; export './text_inputs/text_input.dart'; +export 'bars/bars.dart'; diff --git a/packages/wyatt_ui_kit/lib/src/components/top_navigation_bars/top_navigation_bar.dart b/packages/wyatt_ui_kit/lib/src/components/top_navigation_bars/top_navigation_bar.dart deleted file mode 100644 index d236b884..00000000 --- a/packages/wyatt_ui_kit/lib/src/components/top_navigation_bars/top_navigation_bar.dart +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (C) 2023 WYATT GROUP -// Please see the AUTHORS file for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -import 'package:flutter/material.dart'; -import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart'; -import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; -part 'top_navigation_bar.g.dart'; - -@ComponentCopyWithExtension() -class TopNavigationBar extends TopNavigationBarComponent - with $TopNavigationBarCWMixin { - const TopNavigationBar({ - super.leading, - super.actions, - super.onTap, - super.currentIndex = 0, - super.key, - }); - - @override - Widget build(BuildContext context) => const Placeholder(); -} diff --git a/packages/wyatt_ui_kit/lib/src/domain/domain.dart b/packages/wyatt_ui_kit/lib/src/domain/domain.dart index 8433530b..6c7c9ab3 100644 --- a/packages/wyatt_ui_kit/lib/src/domain/domain.dart +++ b/packages/wyatt_ui_kit/lib/src/domain/domain.dart @@ -19,4 +19,4 @@ export './card_theme_extension.dart'; export './loader_theme_extension.dart'; export './rich_text_builder_theme_extension.dart'; export './text_input_theme_extension.dart'; -export './top_app_bar_extension.dart'; +export 'top_bar_theme_extension.dart'; diff --git a/packages/wyatt_ui_kit/lib/src/domain/top_app_bar_extension.dart b/packages/wyatt_ui_kit/lib/src/domain/top_bar_theme_extension.dart similarity index 81% rename from packages/wyatt_ui_kit/lib/src/domain/top_app_bar_extension.dart rename to packages/wyatt_ui_kit/lib/src/domain/top_bar_theme_extension.dart index ea6718bb..9bfd3389 100644 --- a/packages/wyatt_ui_kit/lib/src/domain/top_app_bar_extension.dart +++ b/packages/wyatt_ui_kit/lib/src/domain/top_bar_theme_extension.dart @@ -17,18 +17,20 @@ import 'package:flutter/material.dart'; import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; -abstract class TopAppBarThemeExtension - extends ThemeExtension { - const TopAppBarThemeExtension({ +abstract class TopBarThemeExtension + extends ThemeExtension { + const TopBarThemeExtension({ this.iconTheme, this.backgroundColors, - this.expandedDividerStyle, + this.secondaryColor, this.titleStyle, + this.subTitleStyle, }); final MultiColor? backgroundColors; final IconThemeData? iconTheme; - final Color? expandedDividerStyle; + final Color? secondaryColor; final TextStyle? titleStyle; + final TextStyle? subTitleStyle; }