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;
}