Compare commits
	
		
			No commits in common. "abd5e1b55851f4898719abe089498b5abff2d5c1" and "4097a420c89e8d09319cd828ca9bcdedf592440d" have entirely different histories.
		
	
	
		
			abd5e1b558
			...
			4097a420c8
		
	
		
@ -2,13 +2,13 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
import 'package:wyatt_ui_components_example/components/custom_app_bar.dart';
 | 
			
		||||
import 'package:wyatt_ui_components_example/components/custom_bottom_bar.dart';
 | 
			
		||||
import 'package:wyatt_ui_components_example/components/custom_error_widget.dart';
 | 
			
		||||
import 'package:wyatt_ui_components_example/components/custom_loader_widget.dart';
 | 
			
		||||
import 'package:wyatt_ui_components_example/components/custom_loading_widget.dart';
 | 
			
		||||
 | 
			
		||||
class AppThemeComponent {
 | 
			
		||||
  static ComponentThemeData get components => const ComponentThemeData.raw(
 | 
			
		||||
        topAppBar: CustomAppBar(),
 | 
			
		||||
        appBar: CustomAppBar(),
 | 
			
		||||
        bottomNavigationBar: CustomBottomNavigationBar(),
 | 
			
		||||
        error: CustomErrorWidget(),
 | 
			
		||||
        loader: CustomLoaderWidget(),
 | 
			
		||||
        errorWidget: CustomErrorWidget(),
 | 
			
		||||
        loadingWidget: CustomLoadingWidget(),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5,17 +5,13 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
part 'custom_error_widget.g.dart';
 | 
			
		||||
 | 
			
		||||
@ComponentCopyWithExtension()
 | 
			
		||||
class CustomErrorWidget extends ErrorComponent with $CustomErrorWidgetCWMixin {
 | 
			
		||||
  const CustomErrorWidget({
 | 
			
		||||
    super.colors,
 | 
			
		||||
    super.message,
 | 
			
		||||
    super.details,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
class CustomErrorWidget extends ErrorWidgetComponent
 | 
			
		||||
    with $CustomErrorWidgetCWMixin {
 | 
			
		||||
  const CustomErrorWidget({super.error, super.key});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) => ColoredBox(
 | 
			
		||||
        color: colors?.color ?? Colors.red,
 | 
			
		||||
        child: Center(child: Text(message?.data ?? 'Error')),
 | 
			
		||||
        color: Colors.red,
 | 
			
		||||
        child: Center(child: Text(error?.data ?? 'Error')),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -6,38 +6,25 @@ part of 'custom_error_widget.dart';
 | 
			
		||||
// ComponentCopyWithGenerator
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
 | 
			
		||||
class $CustomErrorWidgetCWProxyImpl implements $ErrorComponentCWProxy {
 | 
			
		||||
class $CustomErrorWidgetCWProxyImpl implements $ErrorWidgetComponentCWProxy {
 | 
			
		||||
  const $CustomErrorWidgetCWProxyImpl(this._value);
 | 
			
		||||
  final CustomErrorWidget _value;
 | 
			
		||||
  @override
 | 
			
		||||
  CustomErrorWidget colors(MultiColor? colors) => this(colors: colors);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomErrorWidget message(TextWrapper? message) => this(message: message);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomErrorWidget details(TextWrapper? details) => this(details: details);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomErrorWidget themeResolver(
 | 
			
		||||
          ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
 | 
			
		||||
      this(themeResolver: themeResolver);
 | 
			
		||||
  CustomErrorWidget error(TextWrapper? error) => this(error: error);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomErrorWidget key(Key? key) => this(key: key);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomErrorWidget call({
 | 
			
		||||
    MultiColor? colors,
 | 
			
		||||
    TextWrapper? message,
 | 
			
		||||
    TextWrapper? details,
 | 
			
		||||
    ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
 | 
			
		||||
    TextWrapper? error,
 | 
			
		||||
    Key? key,
 | 
			
		||||
  }) =>
 | 
			
		||||
      CustomErrorWidget(
 | 
			
		||||
        colors: colors ?? _value.colors,
 | 
			
		||||
        message: message ?? _value.message,
 | 
			
		||||
        details: details ?? _value.details,
 | 
			
		||||
        error: error ?? _value.error,
 | 
			
		||||
        key: key ?? _value.key,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mixin $CustomErrorWidgetCWMixin on Component {
 | 
			
		||||
  $ErrorComponentCWProxy get copyWith =>
 | 
			
		||||
  $ErrorWidgetComponentCWProxy get copyWith =>
 | 
			
		||||
      $CustomErrorWidgetCWProxyImpl(this as CustomErrorWidget);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,51 +0,0 @@
 | 
			
		||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
			
		||||
 | 
			
		||||
part of 'custom_loader_widget.dart';
 | 
			
		||||
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
// ComponentCopyWithGenerator
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
 | 
			
		||||
class $CustomLoaderWidgetCWProxyImpl implements $LoaderComponentCWProxy {
 | 
			
		||||
  const $CustomLoaderWidgetCWProxyImpl(this._value);
 | 
			
		||||
  final CustomLoaderWidget _value;
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoaderWidget colors(MultiColor? colors) => this(colors: colors);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoaderWidget radius(double? radius) => this(radius: radius);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoaderWidget stroke(double? stroke) => this(stroke: stroke);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoaderWidget duration(Duration? duration) => this(duration: duration);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoaderWidget flip(bool? flip) => this(flip: flip);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoaderWidget themeResolver(
 | 
			
		||||
          ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
 | 
			
		||||
      this(themeResolver: themeResolver);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoaderWidget key(Key? key) => this(key: key);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoaderWidget call({
 | 
			
		||||
    MultiColor? colors,
 | 
			
		||||
    double? radius,
 | 
			
		||||
    double? stroke,
 | 
			
		||||
    Duration? duration,
 | 
			
		||||
    bool? flip,
 | 
			
		||||
    ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
 | 
			
		||||
    Key? key,
 | 
			
		||||
  }) =>
 | 
			
		||||
      CustomLoaderWidget(
 | 
			
		||||
        colors: colors ?? _value.colors,
 | 
			
		||||
        duration: duration ?? _value.duration,
 | 
			
		||||
        flip: flip ?? _value.flip,
 | 
			
		||||
        radius: radius ?? _value.radius,
 | 
			
		||||
        stroke: stroke ?? _value.stroke,
 | 
			
		||||
        key: key ?? _value.key,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mixin $CustomLoaderWidgetCWMixin on Component {
 | 
			
		||||
  $LoaderComponentCWProxy get copyWith =>
 | 
			
		||||
      $CustomLoaderWidgetCWProxyImpl(this as CustomLoaderWidget);
 | 
			
		||||
}
 | 
			
		||||
@ -2,24 +2,17 @@ import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:wyatt_component_copy_with_extension/wyatt_component_copy_with_extension.dart';
 | 
			
		||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
 | 
			
		||||
part 'custom_loader_widget.g.dart';
 | 
			
		||||
part 'custom_loading_widget.g.dart';
 | 
			
		||||
 | 
			
		||||
@ComponentCopyWithExtension()
 | 
			
		||||
class CustomLoaderWidget extends LoaderComponent
 | 
			
		||||
    with $CustomLoaderWidgetCWMixin {
 | 
			
		||||
  const CustomLoaderWidget({
 | 
			
		||||
    super.colors,
 | 
			
		||||
    super.duration,
 | 
			
		||||
    super.flip,
 | 
			
		||||
    super.radius,
 | 
			
		||||
    super.stroke,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
class CustomLoadingWidget extends LoadingWidgetComponent
 | 
			
		||||
    with $CustomLoadingWidgetCWMixin {
 | 
			
		||||
  const CustomLoadingWidget({super.color, super.key});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) => Center(
 | 
			
		||||
        child: CircularProgressIndicator(
 | 
			
		||||
          color: colors?.color ?? Colors.blue,
 | 
			
		||||
          color: color,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,31 @@
 | 
			
		||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
			
		||||
 | 
			
		||||
part of 'custom_loading_widget.dart';
 | 
			
		||||
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
// ComponentCopyWithGenerator
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
 | 
			
		||||
class $CustomLoadingWidgetCWProxyImpl
 | 
			
		||||
    implements $LoadingWidgetComponentCWProxy {
 | 
			
		||||
  const $CustomLoadingWidgetCWProxyImpl(this._value);
 | 
			
		||||
  final CustomLoadingWidget _value;
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoadingWidget color(Color? color) => this(color: color);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoadingWidget key(Key? key) => this(key: key);
 | 
			
		||||
  @override
 | 
			
		||||
  CustomLoadingWidget call({
 | 
			
		||||
    Color? color,
 | 
			
		||||
    Key? key,
 | 
			
		||||
  }) =>
 | 
			
		||||
      CustomLoadingWidget(
 | 
			
		||||
        color: color ?? _value.color,
 | 
			
		||||
        key: key ?? _value.key,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mixin $CustomLoadingWidgetCWMixin on Component {
 | 
			
		||||
  $LoadingWidgetComponentCWProxy get copyWith =>
 | 
			
		||||
      $CustomLoadingWidgetCWProxyImpl(this as CustomLoadingWidget);
 | 
			
		||||
}
 | 
			
		||||
@ -48,23 +48,24 @@ class Home extends StatelessWidget {
 | 
			
		||||
  Widget build(BuildContext context) => Scaffold(
 | 
			
		||||
        appBar: PreferredSize(
 | 
			
		||||
          preferredSize: const Size.fromHeight(60),
 | 
			
		||||
          child: context.components.topAppBarComponent
 | 
			
		||||
              .title(const TextWrapper('Example title')),
 | 
			
		||||
          child: context.components.appBar?.copyWith
 | 
			
		||||
                  .title(const TextWrapper('Example title')) ??
 | 
			
		||||
              const SizedBox.shrink(),
 | 
			
		||||
        ),
 | 
			
		||||
        body: Column(
 | 
			
		||||
          children: [
 | 
			
		||||
            Expanded(
 | 
			
		||||
              child: context.components.errorComponent.call(
 | 
			
		||||
                message: const TextWrapper('Example error'),
 | 
			
		||||
              ),
 | 
			
		||||
              child: context.components.errorWidget
 | 
			
		||||
                      ?.copyWith(error: const TextWrapper('Example erreur')) ??
 | 
			
		||||
                  const SizedBox.shrink(),
 | 
			
		||||
            ),
 | 
			
		||||
            const SizedBox(
 | 
			
		||||
              height: 10,
 | 
			
		||||
            ),
 | 
			
		||||
            Expanded(
 | 
			
		||||
              child: context.components.loaderComponent.call(
 | 
			
		||||
                colors: const MultiColor.single(Colors.green),
 | 
			
		||||
              ),
 | 
			
		||||
              child: context.components.loadingWidget
 | 
			
		||||
                      ?.copyWith(color: Colors.green) ??
 | 
			
		||||
                  const SizedBox.shrink(),
 | 
			
		||||
            ),
 | 
			
		||||
          ],
 | 
			
		||||
        ),
 | 
			
		||||
 | 
			
		||||
@ -18,9 +18,10 @@ export './bars/bars.dart';
 | 
			
		||||
export './buttons/buttons.dart';
 | 
			
		||||
export './cards/cards.dart';
 | 
			
		||||
export './component.dart';
 | 
			
		||||
export './error/error.dart';
 | 
			
		||||
export './error_widget_component.dart';
 | 
			
		||||
export './gradients/gradients.dart';
 | 
			
		||||
export './loader/loader.dart';
 | 
			
		||||
export './loading_widget_component.dart';
 | 
			
		||||
export './rich_text_builder/rich_text_builder.dart';
 | 
			
		||||
export './text_inputs/text_inputs.dart';
 | 
			
		||||
export './theme_style.dart';
 | 
			
		||||
 | 
			
		||||
@ -1,23 +0,0 @@
 | 
			
		||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
			
		||||
 | 
			
		||||
part of 'error_component.dart';
 | 
			
		||||
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
// ComponentProxyGenerator
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
 | 
			
		||||
abstract class $ErrorComponentCWProxy {
 | 
			
		||||
  ErrorComponent colors(MultiColor? colors);
 | 
			
		||||
  ErrorComponent message(TextWrapper? message);
 | 
			
		||||
  ErrorComponent details(TextWrapper? details);
 | 
			
		||||
  ErrorComponent themeResolver(
 | 
			
		||||
      ThemeResolver<dynamic, dynamic, dynamic>? themeResolver);
 | 
			
		||||
  ErrorComponent key(Key? key);
 | 
			
		||||
  ErrorComponent call({
 | 
			
		||||
    MultiColor? colors,
 | 
			
		||||
    TextWrapper? message,
 | 
			
		||||
    TextWrapper? details,
 | 
			
		||||
    ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
 | 
			
		||||
    Key? key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -14,29 +14,15 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/widgets.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:wyatt_component_copy_with_extension/wyatt_component_copy_with_extension.dart';
 | 
			
		||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
 | 
			
		||||
part 'error_component.g.dart';
 | 
			
		||||
part 'error_widget_component.g.dart';
 | 
			
		||||
 | 
			
		||||
@ComponentProxyExtension()
 | 
			
		||||
abstract class ErrorComponent extends Component
 | 
			
		||||
    with CopyWithMixin<$ErrorComponentCWProxy> {
 | 
			
		||||
  const ErrorComponent({
 | 
			
		||||
    this.colors,
 | 
			
		||||
    this.message,
 | 
			
		||||
    this.details,
 | 
			
		||||
    super.themeResolver,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  /// Error message
 | 
			
		||||
  final TextWrapper? message;
 | 
			
		||||
 | 
			
		||||
  /// Details for the error component
 | 
			
		||||
  final TextWrapper? details;
 | 
			
		||||
 | 
			
		||||
  /// Colors for the error component
 | 
			
		||||
  final MultiColor? colors;
 | 
			
		||||
abstract class ErrorWidgetComponent extends Component
 | 
			
		||||
    with CopyWithMixin<$ErrorWidgetComponentCWProxy> {
 | 
			
		||||
  const ErrorWidgetComponent({required this.error, super.key});
 | 
			
		||||
  final TextWrapper? error;
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,16 @@
 | 
			
		||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
			
		||||
 | 
			
		||||
part of 'error_widget_component.dart';
 | 
			
		||||
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
// ComponentProxyGenerator
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
 | 
			
		||||
abstract class $ErrorWidgetComponentCWProxy {
 | 
			
		||||
  ErrorWidgetComponent error(TextWrapper? error);
 | 
			
		||||
  ErrorWidgetComponent key(Key? key);
 | 
			
		||||
  ErrorWidgetComponent call({
 | 
			
		||||
    TextWrapper? error,
 | 
			
		||||
    Key? key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -14,4 +14,16 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export './error_component.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:wyatt_component_copy_with_extension/wyatt_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/component.dart';
 | 
			
		||||
 | 
			
		||||
part 'loading_widget_component.g.dart';
 | 
			
		||||
 | 
			
		||||
@ComponentProxyExtension()
 | 
			
		||||
abstract class LoadingWidgetComponent extends Component
 | 
			
		||||
    with CopyWithMixin<$LoadingWidgetComponentCWProxy> {
 | 
			
		||||
  const LoadingWidgetComponent({required this.color, super.key});
 | 
			
		||||
  final Color? color;
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,16 @@
 | 
			
		||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
			
		||||
 | 
			
		||||
part of 'loading_widget_component.dart';
 | 
			
		||||
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
// ComponentProxyGenerator
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
 | 
			
		||||
abstract class $LoadingWidgetComponentCWProxy {
 | 
			
		||||
  LoadingWidgetComponent color(Color? color);
 | 
			
		||||
  LoadingWidgetComponent key(Key? key);
 | 
			
		||||
  LoadingWidgetComponent call({
 | 
			
		||||
    Color? color,
 | 
			
		||||
    Key? key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -84,10 +84,7 @@ class TopBarThemeExtension extends ThemeExtension<TopBarThemeExtension> {
 | 
			
		||||
      backgroundColors:
 | 
			
		||||
          MultiColor.lerp(backgroundColors, other.backgroundColors, t),
 | 
			
		||||
      selectedIndicatorColors: MultiColor.lerp(
 | 
			
		||||
        selectedIndicatorColors,
 | 
			
		||||
        other.selectedIndicatorColors,
 | 
			
		||||
        t,
 | 
			
		||||
      ),
 | 
			
		||||
          selectedIndicatorColors, other.selectedIndicatorColors, t,),
 | 
			
		||||
      dividerColor: Color.lerp(dividerColor, other.dividerColor, t),
 | 
			
		||||
      titleStyle: TextStyle.lerp(titleStyle, other.titleStyle, t),
 | 
			
		||||
      subtitleStyle: TextStyle.lerp(subtitleStyle, other.subtitleStyle, t),
 | 
			
		||||
 | 
			
		||||
@ -26,6 +26,7 @@ class ComponentTheme extends StatelessWidget {
 | 
			
		||||
  const ComponentTheme({
 | 
			
		||||
    required this.child,
 | 
			
		||||
    required this.data,
 | 
			
		||||
    this.themeExtensionProvider = const DefaultThemeExtensionProvider(),
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
@ -34,6 +35,10 @@ class ComponentTheme extends StatelessWidget {
 | 
			
		||||
  /// This contains all components instances of the theme.
 | 
			
		||||
  final ComponentThemeData data;
 | 
			
		||||
 | 
			
		||||
  /// The [ThemeExtensionProvider] that provides the extensions for the
 | 
			
		||||
  /// current theme.
 | 
			
		||||
  final ThemeExtensionProvider themeExtensionProvider;
 | 
			
		||||
 | 
			
		||||
  /// The widget below this widget in the tree.
 | 
			
		||||
  final Widget child;
 | 
			
		||||
 | 
			
		||||
@ -61,9 +66,13 @@ class ComponentTheme extends StatelessWidget {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) => _InheritedComponentTheme(
 | 
			
		||||
  Widget build(BuildContext context) => Theme(
 | 
			
		||||
        // Injections of the default extensions for the current brightness
 | 
			
		||||
        data: themeExtensionProvider.applyExtensionsTo(Theme.of(context)),
 | 
			
		||||
        child: _InheritedComponentTheme(
 | 
			
		||||
          this,
 | 
			
		||||
          child: child,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,6 @@
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:copy_with_extension/copy_with_extension.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
 | 
			
		||||
part 'component_theme_data.g.dart';
 | 
			
		||||
 | 
			
		||||
@ -24,153 +23,82 @@ part 'component_theme_data.g.dart';
 | 
			
		||||
/// {@endtemplate}
 | 
			
		||||
@CopyWith()
 | 
			
		||||
class ComponentThemeData {
 | 
			
		||||
  /// {@macro component_theme_data}
 | 
			
		||||
  factory ComponentThemeData({
 | 
			
		||||
    TopAppBarComponent? topAppBar,
 | 
			
		||||
    TopNavigationBarComponent? topNavigationBar,
 | 
			
		||||
    TopAppBarComponent? appBar,
 | 
			
		||||
    TopNavigationBarComponent? topNavigationBarComponent,
 | 
			
		||||
    BottomNavigationBarComponent? bottomNavigationBar,
 | 
			
		||||
    ErrorComponent? error,
 | 
			
		||||
    LoaderComponent? loader,
 | 
			
		||||
    RichTextBuilderComponent? richTextBuilder,
 | 
			
		||||
    TextInputComponent? textInput,
 | 
			
		||||
    FileSelectionButtonComponent? fileSelectionButton,
 | 
			
		||||
    FlatButtonComponent? flatButton,
 | 
			
		||||
    SimpleIconButtonComponent? simpleIconButton,
 | 
			
		||||
    SymbolButtonComponent? symbolButton,
 | 
			
		||||
    InformationCardComponent? informationCard,
 | 
			
		||||
    PortfolioCardComponent? portfolioCard,
 | 
			
		||||
    QuoteCardComponent? quoteCard,
 | 
			
		||||
    SkillCardComponent? skillCard,
 | 
			
		||||
    ErrorWidgetComponent? errorWidget,
 | 
			
		||||
    LoadingWidgetComponent? loadingWidget,
 | 
			
		||||
    LoaderComponent? loaderComponent,
 | 
			
		||||
    RichTextBuilderComponent? richTextBuilderComponent,
 | 
			
		||||
    TextInputComponent? textInputComponent,
 | 
			
		||||
    FileSelectionButtonComponent? fileSelectionButtonComponent,
 | 
			
		||||
    FlatButtonComponent? flatButtonComponent,
 | 
			
		||||
    SimpleIconButtonComponent? simpleIconButtonComponent,
 | 
			
		||||
    SymbolButtonComponent? symbolButtonComponent,
 | 
			
		||||
    InformationCardComponent? informationCardComponent,
 | 
			
		||||
    PortfolioCardComponent? portfolioCardComponent,
 | 
			
		||||
    QuoteCardComponent? quoteCardComponent,
 | 
			
		||||
    SkillCardComponent? skillCardComponent,
 | 
			
		||||
  }) =>
 | 
			
		||||
      ComponentThemeData.raw(
 | 
			
		||||
        topAppBar: topAppBar,
 | 
			
		||||
        topNavigationBar: topNavigationBar,
 | 
			
		||||
        appBar: appBar,
 | 
			
		||||
        topNavigationBarComponent: topNavigationBarComponent,
 | 
			
		||||
        bottomNavigationBar: bottomNavigationBar,
 | 
			
		||||
        error: error,
 | 
			
		||||
        loader: loader,
 | 
			
		||||
        richTextBuilder: richTextBuilder,
 | 
			
		||||
        textInput: textInput,
 | 
			
		||||
        fileSelectionButton: fileSelectionButton,
 | 
			
		||||
        flatButton: flatButton,
 | 
			
		||||
        simpleIconButton: simpleIconButton,
 | 
			
		||||
        symbolButton: symbolButton,
 | 
			
		||||
        informationCard: informationCard,
 | 
			
		||||
        portfolioCard: portfolioCard,
 | 
			
		||||
        quoteCard: quoteCard,
 | 
			
		||||
        skillCard: skillCard,
 | 
			
		||||
        errorWidget: errorWidget,
 | 
			
		||||
        loadingWidget: loadingWidget,
 | 
			
		||||
        loaderComponent: loaderComponent,
 | 
			
		||||
        richTextBuilderComponent: richTextBuilderComponent,
 | 
			
		||||
        textInputComponent: textInputComponent,
 | 
			
		||||
        fileSelectionButtonComponent: fileSelectionButtonComponent,
 | 
			
		||||
        flatButtonComponent: flatButtonComponent,
 | 
			
		||||
        simpleIconButtonComponent: simpleIconButtonComponent,
 | 
			
		||||
        symbolButtonComponent: symbolButtonComponent,
 | 
			
		||||
        informationCardComponent: informationCardComponent,
 | 
			
		||||
        portfolioCardComponent: portfolioCardComponent,
 | 
			
		||||
        quoteCardComponent: quoteCardComponent,
 | 
			
		||||
        skillCardComponent: skillCardComponent,
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
  /// {@macro component_theme_data}
 | 
			
		||||
  factory ComponentThemeData.fromOther(ComponentThemeData other) =>
 | 
			
		||||
      ComponentThemeData(
 | 
			
		||||
        topAppBar: other.topAppBar,
 | 
			
		||||
        topNavigationBar: other.topNavigationBar,
 | 
			
		||||
        bottomNavigationBar: other.bottomNavigationBar,
 | 
			
		||||
        error: other.error,
 | 
			
		||||
        loader: other.loader,
 | 
			
		||||
        richTextBuilder: other.richTextBuilder,
 | 
			
		||||
        textInput: other.textInput,
 | 
			
		||||
        fileSelectionButton: other.fileSelectionButton,
 | 
			
		||||
        flatButton: other.flatButton,
 | 
			
		||||
        simpleIconButton: other.simpleIconButton,
 | 
			
		||||
        symbolButton: other.symbolButton,
 | 
			
		||||
        informationCard: other.informationCard,
 | 
			
		||||
        portfolioCard: other.portfolioCard,
 | 
			
		||||
        quoteCard: other.quoteCard,
 | 
			
		||||
        skillCard: other.skillCard,
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
  /// Create a [ComponentThemeData] given a set of exact values. Most values
 | 
			
		||||
  /// must be specified.
 | 
			
		||||
  ///
 | 
			
		||||
  /// This will rarely be used directly. It is used by lerp to
 | 
			
		||||
  /// create intermediate themes based on two themes created with the
 | 
			
		||||
  /// [ComponentThemeData] constructor.
 | 
			
		||||
  const ComponentThemeData.raw({
 | 
			
		||||
    this.topAppBar,
 | 
			
		||||
    this.topNavigationBar,
 | 
			
		||||
    this.appBar,
 | 
			
		||||
    this.topNavigationBarComponent,
 | 
			
		||||
    this.bottomNavigationBar,
 | 
			
		||||
    this.error,
 | 
			
		||||
    this.loader,
 | 
			
		||||
    this.richTextBuilder,
 | 
			
		||||
    this.textInput,
 | 
			
		||||
    this.fileSelectionButton,
 | 
			
		||||
    this.flatButton,
 | 
			
		||||
    this.simpleIconButton,
 | 
			
		||||
    this.symbolButton,
 | 
			
		||||
    this.informationCard,
 | 
			
		||||
    this.portfolioCard,
 | 
			
		||||
    this.quoteCard,
 | 
			
		||||
    this.skillCard,
 | 
			
		||||
    this.errorWidget,
 | 
			
		||||
    this.loadingWidget,
 | 
			
		||||
    this.loaderComponent,
 | 
			
		||||
    this.richTextBuilderComponent,
 | 
			
		||||
    this.textInputComponent,
 | 
			
		||||
    this.fileSelectionButtonComponent,
 | 
			
		||||
    this.flatButtonComponent,
 | 
			
		||||
    this.simpleIconButtonComponent,
 | 
			
		||||
    this.symbolButtonComponent,
 | 
			
		||||
    this.informationCardComponent,
 | 
			
		||||
    this.portfolioCardComponent,
 | 
			
		||||
    this.quoteCardComponent,
 | 
			
		||||
    this.skillCardComponent,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  R _get<T extends Component, R>(T? component, R? returned) {
 | 
			
		||||
    if (component == null) {
 | 
			
		||||
      throw FlutterError('No $T component provided.\n'
 | 
			
		||||
          'Please provide a $T component in the ComponentThemeData.');
 | 
			
		||||
    }
 | 
			
		||||
  final TopAppBarComponent? appBar;
 | 
			
		||||
 | 
			
		||||
    if (returned == null) {
 | 
			
		||||
      throw FlutterError('$T does not have a CopyWith method.\n'
 | 
			
		||||
          'Please provide a $T component that implements CopyWith '
 | 
			
		||||
          'in the ComponentThemeData.');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return returned;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Bars
 | 
			
		||||
  final TopAppBarComponent? topAppBar;
 | 
			
		||||
  $TopAppBarComponentCWProxy get topAppBarComponent =>
 | 
			
		||||
      _get(topAppBar, topAppBar?.copyWith);
 | 
			
		||||
  final TopNavigationBarComponent? topNavigationBar;
 | 
			
		||||
  $TopNavigationBarComponentCWProxy get topNavigationBarComponent =>
 | 
			
		||||
      _get(topNavigationBar, topNavigationBar?.copyWith);
 | 
			
		||||
  final TopNavigationBarComponent? topNavigationBarComponent;
 | 
			
		||||
  final BottomNavigationBarComponent? bottomNavigationBar;
 | 
			
		||||
  $BottomNavigationBarComponentCWProxy get bottomNavigationBarComponent =>
 | 
			
		||||
      _get(bottomNavigationBar, bottomNavigationBar?.copyWith);
 | 
			
		||||
  final ErrorWidgetComponent? errorWidget;
 | 
			
		||||
  final LoadingWidgetComponent? loadingWidget;
 | 
			
		||||
  final LoaderComponent? loaderComponent;
 | 
			
		||||
 | 
			
		||||
  // CRUD Widgets
 | 
			
		||||
  final ErrorComponent? error;
 | 
			
		||||
  $ErrorComponentCWProxy get errorComponent => _get(error, error?.copyWith);
 | 
			
		||||
  final LoaderComponent? loader;
 | 
			
		||||
  $LoaderComponentCWProxy get loaderComponent => _get(loader, loader?.copyWith);
 | 
			
		||||
 | 
			
		||||
  // Cards
 | 
			
		||||
  final InformationCardComponent? informationCard;
 | 
			
		||||
  $InformationCardComponentCWProxy get informationCardComponent =>
 | 
			
		||||
      _get(informationCard, informationCard?.copyWith);
 | 
			
		||||
  final PortfolioCardComponent? portfolioCard;
 | 
			
		||||
  $PortfolioCardComponentCWProxy get portfolioCardComponent =>
 | 
			
		||||
      _get(portfolioCard, portfolioCard?.copyWith);
 | 
			
		||||
  final QuoteCardComponent? quoteCard;
 | 
			
		||||
  $QuoteCardComponentCWProxy get quoteCardComponent =>
 | 
			
		||||
      _get(quoteCard, quoteCard?.copyWith);
 | 
			
		||||
  final SkillCardComponent? skillCard;
 | 
			
		||||
  $SkillCardComponentCWProxy get skillCardComponent =>
 | 
			
		||||
      _get(skillCard, skillCard?.copyWith);
 | 
			
		||||
 | 
			
		||||
  // Rich Text
 | 
			
		||||
  final RichTextBuilderComponent? richTextBuilder;
 | 
			
		||||
  $RichTextBuilderComponentCWProxy get richTextBuilderComponent =>
 | 
			
		||||
      _get(richTextBuilder, richTextBuilder?.copyWith);
 | 
			
		||||
 | 
			
		||||
  // Text Inputs
 | 
			
		||||
  final TextInputComponent? textInput;
 | 
			
		||||
  $TextInputComponentCWProxy get textInputComponent =>
 | 
			
		||||
      _get(textInput, textInput?.copyWith);
 | 
			
		||||
  final RichTextBuilderComponent? richTextBuilderComponent;
 | 
			
		||||
  final TextInputComponent? textInputComponent;
 | 
			
		||||
 | 
			
		||||
  // Buttons
 | 
			
		||||
  final FileSelectionButtonComponent? fileSelectionButton;
 | 
			
		||||
  $FileSelectionButtonComponentCWProxy get fileSelectionButtonComponent =>
 | 
			
		||||
      _get(fileSelectionButton, fileSelectionButton?.copyWith);
 | 
			
		||||
  final FlatButtonComponent? flatButton;
 | 
			
		||||
  $FlatButtonComponentCWProxy get flatButtonComponent =>
 | 
			
		||||
      _get(flatButton, flatButton?.copyWith);
 | 
			
		||||
  final SimpleIconButtonComponent? simpleIconButton;
 | 
			
		||||
  $SimpleIconButtonComponentCWProxy get simpleIconButtonComponent =>
 | 
			
		||||
      _get(simpleIconButton, simpleIconButton?.copyWith);
 | 
			
		||||
  final SymbolButtonComponent? symbolButton;
 | 
			
		||||
  $SymbolButtonComponentCWProxy get symbolButtonComponent =>
 | 
			
		||||
      _get(symbolButton, symbolButton?.copyWith);
 | 
			
		||||
  final FileSelectionButtonComponent? fileSelectionButtonComponent;
 | 
			
		||||
  final FlatButtonComponent? flatButtonComponent;
 | 
			
		||||
  final SimpleIconButtonComponent? simpleIconButtonComponent;
 | 
			
		||||
  final SymbolButtonComponent? symbolButtonComponent;
 | 
			
		||||
 | 
			
		||||
  // Cards
 | 
			
		||||
  final InformationCardComponent? informationCardComponent;
 | 
			
		||||
  final PortfolioCardComponent? portfolioCardComponent;
 | 
			
		||||
  final QuoteCardComponent? quoteCardComponent;
 | 
			
		||||
  final SkillCardComponent? skillCardComponent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -7,39 +7,46 @@ part of 'component_theme_data.dart';
 | 
			
		||||
// **************************************************************************
 | 
			
		||||
 | 
			
		||||
abstract class _$ComponentThemeDataCWProxy {
 | 
			
		||||
  ComponentThemeData topAppBar(TopAppBarComponent? topAppBar);
 | 
			
		||||
  ComponentThemeData appBar(TopAppBarComponent? appBar);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData topNavigationBar(
 | 
			
		||||
      TopNavigationBarComponent? topNavigationBar);
 | 
			
		||||
  ComponentThemeData topNavigationBarComponent(
 | 
			
		||||
      TopNavigationBarComponent? topNavigationBarComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData bottomNavigationBar(
 | 
			
		||||
      BottomNavigationBarComponent? bottomNavigationBar);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData error(ErrorComponent? error);
 | 
			
		||||
  ComponentThemeData errorWidget(ErrorWidgetComponent? errorWidget);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData loader(LoaderComponent? loader);
 | 
			
		||||
  ComponentThemeData loadingWidget(LoadingWidgetComponent? loadingWidget);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData richTextBuilder(RichTextBuilderComponent? richTextBuilder);
 | 
			
		||||
  ComponentThemeData loaderComponent(LoaderComponent? loaderComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData textInput(TextInputComponent? textInput);
 | 
			
		||||
  ComponentThemeData richTextBuilderComponent(
 | 
			
		||||
      RichTextBuilderComponent? richTextBuilderComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData fileSelectionButton(
 | 
			
		||||
      FileSelectionButtonComponent? fileSelectionButton);
 | 
			
		||||
  ComponentThemeData textInputComponent(TextInputComponent? textInputComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData flatButton(FlatButtonComponent? flatButton);
 | 
			
		||||
  ComponentThemeData fileSelectionButtonComponent(
 | 
			
		||||
      FileSelectionButtonComponent? fileSelectionButtonComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData simpleIconButton(
 | 
			
		||||
      SimpleIconButtonComponent? simpleIconButton);
 | 
			
		||||
  ComponentThemeData flatButtonComponent(
 | 
			
		||||
      FlatButtonComponent? flatButtonComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData symbolButton(SymbolButtonComponent? symbolButton);
 | 
			
		||||
  ComponentThemeData simpleIconButtonComponent(
 | 
			
		||||
      SimpleIconButtonComponent? simpleIconButtonComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData informationCard(InformationCardComponent? informationCard);
 | 
			
		||||
  ComponentThemeData symbolButtonComponent(
 | 
			
		||||
      SymbolButtonComponent? symbolButtonComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData portfolioCard(PortfolioCardComponent? portfolioCard);
 | 
			
		||||
  ComponentThemeData informationCardComponent(
 | 
			
		||||
      InformationCardComponent? informationCardComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData quoteCard(QuoteCardComponent? quoteCard);
 | 
			
		||||
  ComponentThemeData portfolioCardComponent(
 | 
			
		||||
      PortfolioCardComponent? portfolioCardComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData skillCard(SkillCardComponent? skillCard);
 | 
			
		||||
  ComponentThemeData quoteCardComponent(QuoteCardComponent? quoteCardComponent);
 | 
			
		||||
 | 
			
		||||
  ComponentThemeData skillCardComponent(SkillCardComponent? skillCardComponent);
 | 
			
		||||
 | 
			
		||||
  /// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
 | 
			
		||||
  ///
 | 
			
		||||
@ -48,21 +55,22 @@ abstract class _$ComponentThemeDataCWProxy {
 | 
			
		||||
  /// ComponentThemeData(...).copyWith(id: 12, name: "My name")
 | 
			
		||||
  /// ````
 | 
			
		||||
  ComponentThemeData call({
 | 
			
		||||
    TopAppBarComponent? topAppBar,
 | 
			
		||||
    TopNavigationBarComponent? topNavigationBar,
 | 
			
		||||
    TopAppBarComponent? appBar,
 | 
			
		||||
    TopNavigationBarComponent? topNavigationBarComponent,
 | 
			
		||||
    BottomNavigationBarComponent? bottomNavigationBar,
 | 
			
		||||
    ErrorComponent? error,
 | 
			
		||||
    LoaderComponent? loader,
 | 
			
		||||
    RichTextBuilderComponent? richTextBuilder,
 | 
			
		||||
    TextInputComponent? textInput,
 | 
			
		||||
    FileSelectionButtonComponent? fileSelectionButton,
 | 
			
		||||
    FlatButtonComponent? flatButton,
 | 
			
		||||
    SimpleIconButtonComponent? simpleIconButton,
 | 
			
		||||
    SymbolButtonComponent? symbolButton,
 | 
			
		||||
    InformationCardComponent? informationCard,
 | 
			
		||||
    PortfolioCardComponent? portfolioCard,
 | 
			
		||||
    QuoteCardComponent? quoteCard,
 | 
			
		||||
    SkillCardComponent? skillCard,
 | 
			
		||||
    ErrorWidgetComponent? errorWidget,
 | 
			
		||||
    LoadingWidgetComponent? loadingWidget,
 | 
			
		||||
    LoaderComponent? loaderComponent,
 | 
			
		||||
    RichTextBuilderComponent? richTextBuilderComponent,
 | 
			
		||||
    TextInputComponent? textInputComponent,
 | 
			
		||||
    FileSelectionButtonComponent? fileSelectionButtonComponent,
 | 
			
		||||
    FlatButtonComponent? flatButtonComponent,
 | 
			
		||||
    SimpleIconButtonComponent? simpleIconButtonComponent,
 | 
			
		||||
    SymbolButtonComponent? symbolButtonComponent,
 | 
			
		||||
    InformationCardComponent? informationCardComponent,
 | 
			
		||||
    PortfolioCardComponent? portfolioCardComponent,
 | 
			
		||||
    QuoteCardComponent? quoteCardComponent,
 | 
			
		||||
    SkillCardComponent? skillCardComponent,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -73,13 +81,12 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
 | 
			
		||||
  final ComponentThemeData _value;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData topAppBar(TopAppBarComponent? topAppBar) =>
 | 
			
		||||
      this(topAppBar: topAppBar);
 | 
			
		||||
  ComponentThemeData appBar(TopAppBarComponent? appBar) => this(appBar: appBar);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData topNavigationBar(
 | 
			
		||||
          TopNavigationBarComponent? topNavigationBar) =>
 | 
			
		||||
      this(topNavigationBar: topNavigationBar);
 | 
			
		||||
  ComponentThemeData topNavigationBarComponent(
 | 
			
		||||
          TopNavigationBarComponent? topNavigationBarComponent) =>
 | 
			
		||||
      this(topNavigationBarComponent: topNavigationBarComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData bottomNavigationBar(
 | 
			
		||||
@ -87,54 +94,66 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
 | 
			
		||||
      this(bottomNavigationBar: bottomNavigationBar);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData error(ErrorComponent? error) => this(error: error);
 | 
			
		||||
  ComponentThemeData errorWidget(ErrorWidgetComponent? errorWidget) =>
 | 
			
		||||
      this(errorWidget: errorWidget);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData loader(LoaderComponent? loader) => this(loader: loader);
 | 
			
		||||
  ComponentThemeData loadingWidget(LoadingWidgetComponent? loadingWidget) =>
 | 
			
		||||
      this(loadingWidget: loadingWidget);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData richTextBuilder(
 | 
			
		||||
          RichTextBuilderComponent? richTextBuilder) =>
 | 
			
		||||
      this(richTextBuilder: richTextBuilder);
 | 
			
		||||
  ComponentThemeData loaderComponent(LoaderComponent? loaderComponent) =>
 | 
			
		||||
      this(loaderComponent: loaderComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData textInput(TextInputComponent? textInput) =>
 | 
			
		||||
      this(textInput: textInput);
 | 
			
		||||
  ComponentThemeData richTextBuilderComponent(
 | 
			
		||||
          RichTextBuilderComponent? richTextBuilderComponent) =>
 | 
			
		||||
      this(richTextBuilderComponent: richTextBuilderComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData fileSelectionButton(
 | 
			
		||||
          FileSelectionButtonComponent? fileSelectionButton) =>
 | 
			
		||||
      this(fileSelectionButton: fileSelectionButton);
 | 
			
		||||
  ComponentThemeData textInputComponent(
 | 
			
		||||
          TextInputComponent? textInputComponent) =>
 | 
			
		||||
      this(textInputComponent: textInputComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData flatButton(FlatButtonComponent? flatButton) =>
 | 
			
		||||
      this(flatButton: flatButton);
 | 
			
		||||
  ComponentThemeData fileSelectionButtonComponent(
 | 
			
		||||
          FileSelectionButtonComponent? fileSelectionButtonComponent) =>
 | 
			
		||||
      this(fileSelectionButtonComponent: fileSelectionButtonComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData simpleIconButton(
 | 
			
		||||
          SimpleIconButtonComponent? simpleIconButton) =>
 | 
			
		||||
      this(simpleIconButton: simpleIconButton);
 | 
			
		||||
  ComponentThemeData flatButtonComponent(
 | 
			
		||||
          FlatButtonComponent? flatButtonComponent) =>
 | 
			
		||||
      this(flatButtonComponent: flatButtonComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData symbolButton(SymbolButtonComponent? symbolButton) =>
 | 
			
		||||
      this(symbolButton: symbolButton);
 | 
			
		||||
  ComponentThemeData simpleIconButtonComponent(
 | 
			
		||||
          SimpleIconButtonComponent? simpleIconButtonComponent) =>
 | 
			
		||||
      this(simpleIconButtonComponent: simpleIconButtonComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData informationCard(
 | 
			
		||||
          InformationCardComponent? informationCard) =>
 | 
			
		||||
      this(informationCard: informationCard);
 | 
			
		||||
  ComponentThemeData symbolButtonComponent(
 | 
			
		||||
          SymbolButtonComponent? symbolButtonComponent) =>
 | 
			
		||||
      this(symbolButtonComponent: symbolButtonComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData portfolioCard(PortfolioCardComponent? portfolioCard) =>
 | 
			
		||||
      this(portfolioCard: portfolioCard);
 | 
			
		||||
  ComponentThemeData informationCardComponent(
 | 
			
		||||
          InformationCardComponent? informationCardComponent) =>
 | 
			
		||||
      this(informationCardComponent: informationCardComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData quoteCard(QuoteCardComponent? quoteCard) =>
 | 
			
		||||
      this(quoteCard: quoteCard);
 | 
			
		||||
  ComponentThemeData portfolioCardComponent(
 | 
			
		||||
          PortfolioCardComponent? portfolioCardComponent) =>
 | 
			
		||||
      this(portfolioCardComponent: portfolioCardComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData skillCard(SkillCardComponent? skillCard) =>
 | 
			
		||||
      this(skillCard: skillCard);
 | 
			
		||||
  ComponentThemeData quoteCardComponent(
 | 
			
		||||
          QuoteCardComponent? quoteCardComponent) =>
 | 
			
		||||
      this(quoteCardComponent: quoteCardComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ComponentThemeData skillCardComponent(
 | 
			
		||||
          SkillCardComponent? skillCardComponent) =>
 | 
			
		||||
      this(skillCardComponent: skillCardComponent);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
 | 
			
		||||
@ -145,83 +164,95 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
 | 
			
		||||
  /// ComponentThemeData(...).copyWith(id: 12, name: "My name")
 | 
			
		||||
  /// ````
 | 
			
		||||
  ComponentThemeData call({
 | 
			
		||||
    Object? topAppBar = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? topNavigationBar = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? appBar = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? topNavigationBarComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? bottomNavigationBar = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? error = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? loader = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? richTextBuilder = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? textInput = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? fileSelectionButton = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? flatButton = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? simpleIconButton = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? symbolButton = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? informationCard = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? portfolioCard = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? quoteCard = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? skillCard = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? errorWidget = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? loadingWidget = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? loaderComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? richTextBuilderComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? textInputComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? fileSelectionButtonComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? flatButtonComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? simpleIconButtonComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? symbolButtonComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? informationCardComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? portfolioCardComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? quoteCardComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
    Object? skillCardComponent = const $CopyWithPlaceholder(),
 | 
			
		||||
  }) {
 | 
			
		||||
    return ComponentThemeData(
 | 
			
		||||
      topAppBar: topAppBar == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.topAppBar
 | 
			
		||||
      appBar: appBar == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.appBar
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : topAppBar as TopAppBarComponent?,
 | 
			
		||||
      topNavigationBar: topNavigationBar == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.topNavigationBar
 | 
			
		||||
          : appBar as TopAppBarComponent?,
 | 
			
		||||
      topNavigationBarComponent:
 | 
			
		||||
          topNavigationBarComponent == const $CopyWithPlaceholder()
 | 
			
		||||
              ? _value.topNavigationBarComponent
 | 
			
		||||
              // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : topNavigationBar as TopNavigationBarComponent?,
 | 
			
		||||
              : topNavigationBarComponent as TopNavigationBarComponent?,
 | 
			
		||||
      bottomNavigationBar: bottomNavigationBar == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.bottomNavigationBar
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : bottomNavigationBar as BottomNavigationBarComponent?,
 | 
			
		||||
      error: error == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.error
 | 
			
		||||
      errorWidget: errorWidget == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.errorWidget
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : error as ErrorComponent?,
 | 
			
		||||
      loader: loader == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.loader
 | 
			
		||||
          : errorWidget as ErrorWidgetComponent?,
 | 
			
		||||
      loadingWidget: loadingWidget == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.loadingWidget
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : loader as LoaderComponent?,
 | 
			
		||||
      richTextBuilder: richTextBuilder == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.richTextBuilder
 | 
			
		||||
          : loadingWidget as LoadingWidgetComponent?,
 | 
			
		||||
      loaderComponent: loaderComponent == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.loaderComponent
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : richTextBuilder as RichTextBuilderComponent?,
 | 
			
		||||
      textInput: textInput == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.textInput
 | 
			
		||||
          : loaderComponent as LoaderComponent?,
 | 
			
		||||
      richTextBuilderComponent:
 | 
			
		||||
          richTextBuilderComponent == const $CopyWithPlaceholder()
 | 
			
		||||
              ? _value.richTextBuilderComponent
 | 
			
		||||
              // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : textInput as TextInputComponent?,
 | 
			
		||||
      fileSelectionButton: fileSelectionButton == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.fileSelectionButton
 | 
			
		||||
              : richTextBuilderComponent as RichTextBuilderComponent?,
 | 
			
		||||
      textInputComponent: textInputComponent == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.textInputComponent
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : fileSelectionButton as FileSelectionButtonComponent?,
 | 
			
		||||
      flatButton: flatButton == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.flatButton
 | 
			
		||||
          : textInputComponent as TextInputComponent?,
 | 
			
		||||
      fileSelectionButtonComponent:
 | 
			
		||||
          fileSelectionButtonComponent == const $CopyWithPlaceholder()
 | 
			
		||||
              ? _value.fileSelectionButtonComponent
 | 
			
		||||
              // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : flatButton as FlatButtonComponent?,
 | 
			
		||||
      simpleIconButton: simpleIconButton == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.simpleIconButton
 | 
			
		||||
              : fileSelectionButtonComponent as FileSelectionButtonComponent?,
 | 
			
		||||
      flatButtonComponent: flatButtonComponent == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.flatButtonComponent
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : simpleIconButton as SimpleIconButtonComponent?,
 | 
			
		||||
      symbolButton: symbolButton == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.symbolButton
 | 
			
		||||
          : flatButtonComponent as FlatButtonComponent?,
 | 
			
		||||
      simpleIconButtonComponent:
 | 
			
		||||
          simpleIconButtonComponent == const $CopyWithPlaceholder()
 | 
			
		||||
              ? _value.simpleIconButtonComponent
 | 
			
		||||
              // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : symbolButton as SymbolButtonComponent?,
 | 
			
		||||
      informationCard: informationCard == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.informationCard
 | 
			
		||||
              : simpleIconButtonComponent as SimpleIconButtonComponent?,
 | 
			
		||||
      symbolButtonComponent:
 | 
			
		||||
          symbolButtonComponent == const $CopyWithPlaceholder()
 | 
			
		||||
              ? _value.symbolButtonComponent
 | 
			
		||||
              // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : informationCard as InformationCardComponent?,
 | 
			
		||||
      portfolioCard: portfolioCard == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.portfolioCard
 | 
			
		||||
              : symbolButtonComponent as SymbolButtonComponent?,
 | 
			
		||||
      informationCardComponent:
 | 
			
		||||
          informationCardComponent == const $CopyWithPlaceholder()
 | 
			
		||||
              ? _value.informationCardComponent
 | 
			
		||||
              // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : portfolioCard as PortfolioCardComponent?,
 | 
			
		||||
      quoteCard: quoteCard == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.quoteCard
 | 
			
		||||
              : informationCardComponent as InformationCardComponent?,
 | 
			
		||||
      portfolioCardComponent:
 | 
			
		||||
          portfolioCardComponent == const $CopyWithPlaceholder()
 | 
			
		||||
              ? _value.portfolioCardComponent
 | 
			
		||||
              // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : quoteCard as QuoteCardComponent?,
 | 
			
		||||
      skillCard: skillCard == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.skillCard
 | 
			
		||||
              : portfolioCardComponent as PortfolioCardComponent?,
 | 
			
		||||
      quoteCardComponent: quoteCardComponent == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.quoteCardComponent
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : skillCard as SkillCardComponent?,
 | 
			
		||||
          : quoteCardComponent as QuoteCardComponent?,
 | 
			
		||||
      skillCardComponent: skillCardComponent == const $CopyWithPlaceholder()
 | 
			
		||||
          ? _value.skillCardComponent
 | 
			
		||||
          // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
          : skillCardComponent as SkillCardComponent?,
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,7 @@
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart';
 | 
			
		||||
import 'package:gap/gap.dart';
 | 
			
		||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/cubit/app_mode_cubit.dart';
 | 
			
		||||
 | 
			
		||||
class InformationCards extends StatelessWidget {
 | 
			
		||||
  const InformationCards({super.key});
 | 
			
		||||
@ -45,14 +43,6 @@ class InformationCards extends StatelessWidget {
 | 
			
		||||
              const Gap(20),
 | 
			
		||||
              InformationCard(
 | 
			
		||||
                background: Center(
 | 
			
		||||
                  child: ColorFiltered(
 | 
			
		||||
                    colorFilter: ColorFilter.mode(
 | 
			
		||||
                      context.watch<AppModeCubit>().state.brightness ==
 | 
			
		||||
                              Brightness.light
 | 
			
		||||
                          ? Colors.grey.withOpacity(0.2)
 | 
			
		||||
                          : Colors.white.withOpacity(0.2),
 | 
			
		||||
                      BlendMode.srcIn,
 | 
			
		||||
                    ),
 | 
			
		||||
                  child: Container(
 | 
			
		||||
                    decoration: const BoxDecoration(
 | 
			
		||||
                      image: DecorationImage(
 | 
			
		||||
@ -63,7 +53,6 @@ class InformationCards extends StatelessWidget {
 | 
			
		||||
                    ),
 | 
			
		||||
                  ),
 | 
			
		||||
                ),
 | 
			
		||||
                ),
 | 
			
		||||
                icons: const [
 | 
			
		||||
                  FlutterLogo(size: 60),
 | 
			
		||||
                  FlutterLogo(size: 60),
 | 
			
		||||
@ -121,14 +110,6 @@ class InformationCards extends StatelessWidget {
 | 
			
		||||
              const Gap(20),
 | 
			
		||||
              InformationCard(
 | 
			
		||||
                background: Center(
 | 
			
		||||
                  child: ColorFiltered(
 | 
			
		||||
                    colorFilter: ColorFilter.mode(
 | 
			
		||||
                      context.watch<AppModeCubit>().state.brightness ==
 | 
			
		||||
                              Brightness.light
 | 
			
		||||
                          ? Colors.grey.withOpacity(0.2)
 | 
			
		||||
                          : Colors.white.withOpacity(0.2),
 | 
			
		||||
                      BlendMode.srcIn,
 | 
			
		||||
                    ),
 | 
			
		||||
                  child: Container(
 | 
			
		||||
                    decoration: const BoxDecoration(
 | 
			
		||||
                      image: DecorationImage(
 | 
			
		||||
@ -139,7 +120,6 @@ class InformationCards extends StatelessWidget {
 | 
			
		||||
                    ),
 | 
			
		||||
                  ),
 | 
			
		||||
                ),
 | 
			
		||||
                ),
 | 
			
		||||
                icons: const [
 | 
			
		||||
                  FlutterLogo(size: 60),
 | 
			
		||||
                ],
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,4 @@
 | 
			
		||||
import 'package:flutter/cupertino.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:gap/gap.dart';
 | 
			
		||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
@ -30,12 +31,10 @@ class PortfolioCards extends StatelessWidget {
 | 
			
		||||
                    'quis elit ut amet velit. Incididunt fugiat proident '
 | 
			
		||||
                    'proident deserunt tempor Lorem cillum qui do '),
 | 
			
		||||
                ctas: [
 | 
			
		||||
                  context.components.flatButtonComponent.call(
 | 
			
		||||
                    label: const TextWrapper('En savoir plus'),
 | 
			
		||||
                    suffix: const Icon(
 | 
			
		||||
                      Icons.arrow_forward_ios,
 | 
			
		||||
                      size: 15,
 | 
			
		||||
                    ),
 | 
			
		||||
                  CupertinoButton(
 | 
			
		||||
                    color: Theme.of(context).primaryColor,
 | 
			
		||||
                    onPressed: () {},
 | 
			
		||||
                    child: const Text('En savoir plus >'),
 | 
			
		||||
                  ),
 | 
			
		||||
                ],
 | 
			
		||||
                assets: [
 | 
			
		||||
@ -65,12 +64,10 @@ class PortfolioCards extends StatelessWidget {
 | 
			
		||||
                    'quis elit ut amet velit. Incididunt fugiat proident '
 | 
			
		||||
                    'proident deserunt tempor Lorem cillum qui do '),
 | 
			
		||||
                ctas: [
 | 
			
		||||
                  context.components.flatButtonComponent.call(
 | 
			
		||||
                    label: const TextWrapper('En savoir plus'),
 | 
			
		||||
                    suffix: const Icon(
 | 
			
		||||
                      Icons.arrow_forward_ios,
 | 
			
		||||
                      size: 15,
 | 
			
		||||
                    ),
 | 
			
		||||
                  CupertinoButton(
 | 
			
		||||
                    color: Theme.of(context).primaryColor,
 | 
			
		||||
                    onPressed: () {},
 | 
			
		||||
                    child: const Text('En savoir plus >'),
 | 
			
		||||
                  ),
 | 
			
		||||
                ],
 | 
			
		||||
                assets: [
 | 
			
		||||
@ -100,12 +97,10 @@ class PortfolioCards extends StatelessWidget {
 | 
			
		||||
                    'quis elit ut amet velit. Incididunt fugiat proident '
 | 
			
		||||
                    'proident deserunt tempor Lorem cillum qui do '),
 | 
			
		||||
                ctas: [
 | 
			
		||||
                  context.components.flatButtonComponent.call(
 | 
			
		||||
                    label: const TextWrapper('En savoir plus'),
 | 
			
		||||
                    suffix: const Icon(
 | 
			
		||||
                      Icons.arrow_forward_ios,
 | 
			
		||||
                      size: 15,
 | 
			
		||||
                    ),
 | 
			
		||||
                  CupertinoButton(
 | 
			
		||||
                    color: Theme.of(context).primaryColor,
 | 
			
		||||
                    onPressed: () {},
 | 
			
		||||
                    child: const Text('En savoir plus >'),
 | 
			
		||||
                  ),
 | 
			
		||||
                ],
 | 
			
		||||
                assets: [
 | 
			
		||||
@ -145,12 +140,10 @@ class PortfolioCards extends StatelessWidget {
 | 
			
		||||
                    'quis elit ut amet velit. Incididunt fugiat proident '
 | 
			
		||||
                    'proident deserunt tempor Lorem cillum qui do '),
 | 
			
		||||
                ctas: [
 | 
			
		||||
                  context.components.flatButtonComponent.call(
 | 
			
		||||
                    label: const TextWrapper('En savoir plus'),
 | 
			
		||||
                    suffix: const Icon(
 | 
			
		||||
                      Icons.arrow_forward_ios,
 | 
			
		||||
                      size: 15,
 | 
			
		||||
                    ),
 | 
			
		||||
                  CupertinoButton(
 | 
			
		||||
                    color: Theme.of(context).primaryColor,
 | 
			
		||||
                    onPressed: () {},
 | 
			
		||||
                    child: const Text('En savoir plus >'),
 | 
			
		||||
                  ),
 | 
			
		||||
                ],
 | 
			
		||||
                assets: [
 | 
			
		||||
 | 
			
		||||
@ -40,7 +40,7 @@ class SkillCards extends StatelessWidget {
 | 
			
		||||
                    padding: const EdgeInsets.all(15),
 | 
			
		||||
                    decoration: BoxDecoration(
 | 
			
		||||
                      shape: BoxShape.circle,
 | 
			
		||||
                      color: Colors.grey.withOpacity(0.1),
 | 
			
		||||
                      color: Colors.white.withOpacity(0.04),
 | 
			
		||||
                    ),
 | 
			
		||||
                    child: GradientIcon(
 | 
			
		||||
                      icon: Icons.ac_unit_sharp,
 | 
			
		||||
@ -71,7 +71,7 @@ class SkillCards extends StatelessWidget {
 | 
			
		||||
                    padding: const EdgeInsets.all(15),
 | 
			
		||||
                    decoration: BoxDecoration(
 | 
			
		||||
                      shape: BoxShape.circle,
 | 
			
		||||
                      color: Colors.grey.withOpacity(0.1),
 | 
			
		||||
                      color: Colors.white.withOpacity(0.04),
 | 
			
		||||
                    ),
 | 
			
		||||
                    child: GradientIcon(
 | 
			
		||||
                      icon: Icons.ac_unit_sharp,
 | 
			
		||||
 | 
			
		||||
@ -1,24 +0,0 @@
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart';
 | 
			
		||||
 | 
			
		||||
part 'app_mode_state.dart';
 | 
			
		||||
 | 
			
		||||
class AppModeCubit extends Cubit<AppModeState> {
 | 
			
		||||
  AppModeCubit({
 | 
			
		||||
    required int theme,
 | 
			
		||||
    required Brightness brightness,
 | 
			
		||||
  }) : super(
 | 
			
		||||
          AppModeState(
 | 
			
		||||
            theme: theme,
 | 
			
		||||
            brightness: brightness,
 | 
			
		||||
          ),
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
  void changeTheme(int theme) {
 | 
			
		||||
    emit(state.copyWith(theme: theme));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void changeBrightness(Brightness brightness) {
 | 
			
		||||
    emit(state.copyWith(brightness: brightness));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -1,32 +0,0 @@
 | 
			
		||||
// ignore_for_file: avoid_equals_and_hash_code_on_mutable_classes
 | 
			
		||||
 | 
			
		||||
part of 'app_mode_cubit.dart';
 | 
			
		||||
 | 
			
		||||
class AppModeState {
 | 
			
		||||
  const AppModeState({
 | 
			
		||||
    required this.theme,
 | 
			
		||||
    required this.brightness,
 | 
			
		||||
  });
 | 
			
		||||
  final int theme;
 | 
			
		||||
  final Brightness brightness;
 | 
			
		||||
 | 
			
		||||
  AppModeState copyWith({
 | 
			
		||||
    int? theme,
 | 
			
		||||
    Brightness? brightness,
 | 
			
		||||
  }) =>
 | 
			
		||||
      AppModeState(
 | 
			
		||||
        theme: theme ?? this.theme,
 | 
			
		||||
        brightness: brightness ?? this.brightness,
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  bool operator ==(Object other) =>
 | 
			
		||||
      identical(this, other) ||
 | 
			
		||||
      other is AppModeState &&
 | 
			
		||||
          runtimeType == other.runtimeType &&
 | 
			
		||||
          theme == other.theme &&
 | 
			
		||||
          brightness == other.brightness;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  int get hashCode => theme.hashCode ^ brightness.hashCode;
 | 
			
		||||
}
 | 
			
		||||
@ -1,17 +1,16 @@
 | 
			
		||||
import 'package:adaptive_theme/adaptive_theme.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart';
 | 
			
		||||
import 'package:gap/gap.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/bars/bars.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/buttons/buttons.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/cards/cards.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/cubit/app_mode_cubit.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/demo_page.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/loaders/loaders.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/rich_text_builders/rich_text_builders.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/text_input/text_inputs.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/theme/themes.dart';
 | 
			
		||||
 | 
			
		||||
const String title = 'Wyatt UIKit Example';
 | 
			
		||||
const List<String> themes = ['Material', 'Studio'];
 | 
			
		||||
 | 
			
		||||
class Home extends StatefulWidget {
 | 
			
		||||
  const Home({super.key, this.forceIndex = 0});
 | 
			
		||||
@ -76,35 +75,35 @@ class _HomeState extends State<Home> {
 | 
			
		||||
          actions: [
 | 
			
		||||
            Row(
 | 
			
		||||
              children: [
 | 
			
		||||
                const Text('Dark'),
 | 
			
		||||
                const Text('Mode'),
 | 
			
		||||
                Switch.adaptive(
 | 
			
		||||
                  value: context.watch<AppModeCubit>().state.brightness ==
 | 
			
		||||
                      Brightness.dark,
 | 
			
		||||
                  onChanged: (value) {
 | 
			
		||||
                    context.read<AppModeCubit>().changeBrightness(
 | 
			
		||||
                          value ? Brightness.dark : Brightness.light,
 | 
			
		||||
                        );
 | 
			
		||||
                  value:
 | 
			
		||||
                      AdaptiveTheme.of(context).brightness == Brightness.dark,
 | 
			
		||||
                  onChanged: (_) {
 | 
			
		||||
                    AdaptiveTheme.of(context).brightness == Brightness.light
 | 
			
		||||
                        ? AdaptiveTheme.of(context).setDark()
 | 
			
		||||
                        : AdaptiveTheme.of(context).setLight();
 | 
			
		||||
                  },
 | 
			
		||||
                ),
 | 
			
		||||
              ],
 | 
			
		||||
            ),
 | 
			
		||||
            const Gap(30),
 | 
			
		||||
            DropdownButton<int>(
 | 
			
		||||
              items: themes
 | 
			
		||||
                  .map(
 | 
			
		||||
                    (e) => DropdownMenuItem(
 | 
			
		||||
                      value: themes.indexOf(e),
 | 
			
		||||
                      child: Text(e),
 | 
			
		||||
                    ),
 | 
			
		||||
                  )
 | 
			
		||||
                  .toList(),
 | 
			
		||||
              value: context.watch<AppModeCubit>().state.theme,
 | 
			
		||||
              onChanged: (value) {
 | 
			
		||||
                context.read<AppModeCubit>().changeTheme(value ?? 0);
 | 
			
		||||
            Row(
 | 
			
		||||
              children: [
 | 
			
		||||
                const Text('Studio'),
 | 
			
		||||
                Switch.adaptive(
 | 
			
		||||
                  value: Themes.currentThemeIndex == 1,
 | 
			
		||||
                  onChanged: (_) {
 | 
			
		||||
                    setState(() {
 | 
			
		||||
                      Themes.currentThemeIndex =
 | 
			
		||||
                          (Themes.currentThemeIndex == 1) ? 0 : 1;
 | 
			
		||||
                    });
 | 
			
		||||
                    Themes.auto(context);
 | 
			
		||||
                  },
 | 
			
		||||
              hint: const Text('Theme'),
 | 
			
		||||
                ),
 | 
			
		||||
              ],
 | 
			
		||||
            )
 | 
			
		||||
          ],
 | 
			
		||||
        ),
 | 
			
		||||
        body: Padding(
 | 
			
		||||
          padding: const EdgeInsets.symmetric(horizontal: 8),
 | 
			
		||||
 | 
			
		||||
@ -14,12 +14,11 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:adaptive_theme/adaptive_theme.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart';
 | 
			
		||||
import 'package:flutter_localizations/flutter_localizations.dart';
 | 
			
		||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/cubit/app_mode_cubit.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/home.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/theme/themes.dart';
 | 
			
		||||
 | 
			
		||||
@ -42,29 +41,20 @@ class App extends StatelessWidget {
 | 
			
		||||
  final int defaultTheme;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    final brightness = WidgetsBinding.instance.window.platformBrightness;
 | 
			
		||||
    return BlocProvider(
 | 
			
		||||
      create: (context) => AppModeCubit(
 | 
			
		||||
        theme: defaultTheme,
 | 
			
		||||
        brightness: brightness,
 | 
			
		||||
      ),
 | 
			
		||||
      child: Builder(
 | 
			
		||||
        builder: (context) => BlocBuilder<AppModeCubit, AppModeState>(
 | 
			
		||||
          builder: (context, state) {
 | 
			
		||||
            final light = Themes.lightFromTheme(state.theme);
 | 
			
		||||
            final dark = Themes.darkFromTheme(state.theme);
 | 
			
		||||
            final theme = state.brightness == Brightness.light ? light : dark;
 | 
			
		||||
            return ComponentTheme(
 | 
			
		||||
  Widget build(BuildContext context) => AdaptiveTheme(
 | 
			
		||||
        initial: AdaptiveThemeMode.light,
 | 
			
		||||
        light: Themes.lightFromTheme(defaultTheme),
 | 
			
		||||
        dark: Themes.darkFromTheme(defaultTheme),
 | 
			
		||||
        builder: (light, dark) => ComponentTheme(
 | 
			
		||||
          data: WyattComponentThemeData.wyattComponentThemeData,
 | 
			
		||||
          child: MaterialApp(
 | 
			
		||||
                debugShowCheckedModeBanner: false,
 | 
			
		||||
            localizationsDelegates: const [
 | 
			
		||||
              GlobalMaterialLocalizations.delegate,
 | 
			
		||||
              GlobalWidgetsLocalizations.delegate,
 | 
			
		||||
              GlobalCupertinoLocalizations.delegate,
 | 
			
		||||
            ],
 | 
			
		||||
                theme: theme,
 | 
			
		||||
            theme: light,
 | 
			
		||||
            darkTheme: dark,
 | 
			
		||||
            supportedLocales: const [
 | 
			
		||||
              Locale('fr', ''),
 | 
			
		||||
            ],
 | 
			
		||||
@ -73,10 +63,6 @@ class App extends StatelessWidget {
 | 
			
		||||
              forceIndex: defaultPage,
 | 
			
		||||
            ),
 | 
			
		||||
          ),
 | 
			
		||||
            );
 | 
			
		||||
          },
 | 
			
		||||
        ),
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -14,11 +14,10 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:adaptive_theme/adaptive_theme.dart';
 | 
			
		||||
import 'package:flutter/material.dart' hide CardTheme;
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart';
 | 
			
		||||
import 'package:google_fonts/google_fonts.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit_example/cubit/app_mode_cubit.dart';
 | 
			
		||||
 | 
			
		||||
/// Easely switch between Material and Studio themes.
 | 
			
		||||
abstract class Themes {
 | 
			
		||||
@ -47,11 +46,17 @@ abstract class Themes {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static void material(BuildContext context) {
 | 
			
		||||
    context.read<AppModeCubit>().changeTheme(0);
 | 
			
		||||
    AdaptiveTheme.of(context).setTheme(
 | 
			
		||||
      light: materialLight,
 | 
			
		||||
      dark: materialDark,
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static void studio(BuildContext context) {
 | 
			
		||||
    context.read<AppModeCubit>().changeTheme(1);
 | 
			
		||||
    AdaptiveTheme.of(context).setTheme(
 | 
			
		||||
      light: studioLight,
 | 
			
		||||
      dark: studioDark,
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static ThemeData get materialLight => ThemeData.light().copyWith(
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,9 @@ import FlutterMacOS
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
import path_provider_foundation
 | 
			
		||||
import shared_preferences_foundation
 | 
			
		||||
 | 
			
		||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
 | 
			
		||||
  PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
 | 
			
		||||
  SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -3,20 +3,27 @@ PODS:
 | 
			
		||||
  - path_provider_foundation (0.0.1):
 | 
			
		||||
    - Flutter
 | 
			
		||||
    - FlutterMacOS
 | 
			
		||||
  - shared_preferences_foundation (0.0.1):
 | 
			
		||||
    - Flutter
 | 
			
		||||
    - FlutterMacOS
 | 
			
		||||
 | 
			
		||||
DEPENDENCIES:
 | 
			
		||||
  - FlutterMacOS (from `Flutter/ephemeral`)
 | 
			
		||||
  - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/macos`)
 | 
			
		||||
  - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/macos`)
 | 
			
		||||
 | 
			
		||||
EXTERNAL SOURCES:
 | 
			
		||||
  FlutterMacOS:
 | 
			
		||||
    :path: Flutter/ephemeral
 | 
			
		||||
  path_provider_foundation:
 | 
			
		||||
    :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/macos
 | 
			
		||||
  shared_preferences_foundation:
 | 
			
		||||
    :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/macos
 | 
			
		||||
 | 
			
		||||
SPEC CHECKSUMS:
 | 
			
		||||
  FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
 | 
			
		||||
  path_provider_foundation: c68054786f1b4f3343858c1e1d0caaded73f0be9
 | 
			
		||||
  shared_preferences_foundation: 986fc17f3d3251412d18b0265f9c64113a8c2472
 | 
			
		||||
 | 
			
		||||
PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,7 @@ dependencies:
 | 
			
		||||
  flutter_localizations: { sdk: flutter }
 | 
			
		||||
  gap: ^2.0.1
 | 
			
		||||
  google_fonts: ^4.0.3
 | 
			
		||||
  adaptive_theme: ^3.2.0
 | 
			
		||||
 | 
			
		||||
  wyatt_ui_components:
 | 
			
		||||
    hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
 | 
			
		||||
 | 
			
		||||
@ -91,6 +91,11 @@ class PortfolioCardHeader extends StatelessWidget {
 | 
			
		||||
                          ThemeHelper.maybeGetElement<MultiColor, Gradient>(
 | 
			
		||||
                        [
 | 
			
		||||
                          keywordsBackgroundColors,
 | 
			
		||||
                          Theme.of(context)
 | 
			
		||||
                              .extension<CardThemeExtension>()
 | 
			
		||||
                              ?.borderColors,
 | 
			
		||||
                          CardThemeExtensionDefault.from(Theme.of(context))
 | 
			
		||||
                              .borderColors,
 | 
			
		||||
                        ],
 | 
			
		||||
                        valueValidator: (multiColor) => multiColor?.isGradient,
 | 
			
		||||
                        transform: (multiColor) =>
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,8 @@ part 'gradient_icon.g.dart';
 | 
			
		||||
 | 
			
		||||
@ComponentCopyWithExtension()
 | 
			
		||||
class GradientIcon extends GradientIconComponent with $GradientIconCWMixin {
 | 
			
		||||
  GradientIcon({
 | 
			
		||||
  GradientIcon(
 | 
			
		||||
    {
 | 
			
		||||
    required super.icon,
 | 
			
		||||
    required super.gradientColors,
 | 
			
		||||
    super.key,
 | 
			
		||||
 | 
			
		||||
@ -1,202 +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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/painting.dart';
 | 
			
		||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
 | 
			
		||||
class WyattColors {
 | 
			
		||||
  WyattColors._();
 | 
			
		||||
 | 
			
		||||
  /// Color: #24262A
 | 
			
		||||
  static const Color black = Color(0xFF24262A);
 | 
			
		||||
 | 
			
		||||
  /// Color: #3D92FA
 | 
			
		||||
  static const Color blue1 = Color(0xFF3D92FA);
 | 
			
		||||
 | 
			
		||||
  /// Color: #3C97FB
 | 
			
		||||
  static const Color blue1Btn = Color(0xFF3C97FB);
 | 
			
		||||
 | 
			
		||||
  /// Color: #83BEFF
 | 
			
		||||
  static const Color blue1BtnFocus = Color(0xFF83BEFF);
 | 
			
		||||
 | 
			
		||||
  /// Color: #4190E8
 | 
			
		||||
  static const Color blue1BtnHover = Color(0xFF4190E8);
 | 
			
		||||
 | 
			
		||||
  /// Color: #436EF4
 | 
			
		||||
  static const Color blue2 = Color(0xFF436EF4);
 | 
			
		||||
 | 
			
		||||
  /// Color: #446DF4
 | 
			
		||||
  static const Color blue2Btn = Color(0xFF446DF4);
 | 
			
		||||
 | 
			
		||||
  /// Color: #7897FF
 | 
			
		||||
  static const Color blue2BtnFocus = Color(0xFF7897FF);
 | 
			
		||||
 | 
			
		||||
  /// Color: #2D54D3
 | 
			
		||||
  static const Color blue2BtnHover = Color(0xFF2D54D3);
 | 
			
		||||
 | 
			
		||||
  /// Color: #4B68FF
 | 
			
		||||
  static const Color darkBlue1 = Color(0xFF4B68FF);
 | 
			
		||||
 | 
			
		||||
  /// Color: #3531F5
 | 
			
		||||
  static const Color darkBlue2 = Color(0xFF3531F5);
 | 
			
		||||
 | 
			
		||||
  /// Color: #60656A
 | 
			
		||||
  static const Color gray1 = Color(0xFF60656A);
 | 
			
		||||
 | 
			
		||||
  /// Color: #16191D
 | 
			
		||||
  static const Color gray1Bg = Color(0xFF16191D);
 | 
			
		||||
 | 
			
		||||
  /// Color: #26292D
 | 
			
		||||
  static const Color gray1BgOpacity = Color(0xFF26292D);
 | 
			
		||||
 | 
			
		||||
  /// Color: #2C3238
 | 
			
		||||
  static const Color gray1Navbar = Color(0xFF2C3238);
 | 
			
		||||
 | 
			
		||||
  /// Color: #383C40
 | 
			
		||||
  static const Color gray2 = Color(0xFF383C40);
 | 
			
		||||
 | 
			
		||||
  /// Color: #33373E
 | 
			
		||||
  static const Color gray2Bg = Color(0xFF33373E);
 | 
			
		||||
 | 
			
		||||
  /// Color: #202327
 | 
			
		||||
  static const Color gray2BgOpacity = Color(0xFF202327);
 | 
			
		||||
 | 
			
		||||
  /// Color: #272F3D
 | 
			
		||||
  static const Color gray2Navbar = Color(0xFF272F3D);
 | 
			
		||||
 | 
			
		||||
  /// Color: #2C3238
 | 
			
		||||
  static const Color gray3Navbar = Color(0xFF2C3238);
 | 
			
		||||
 | 
			
		||||
  /// Color: #50CE99
 | 
			
		||||
  static const Color green1 = Color(0xFF50CE99);
 | 
			
		||||
 | 
			
		||||
  /// Color: #339572
 | 
			
		||||
  static const Color green2 = Color(0xFF339572);
 | 
			
		||||
 | 
			
		||||
  /// Color: #F6F6F6
 | 
			
		||||
  static const Color light = Color(0xFFF6F6F6);
 | 
			
		||||
 | 
			
		||||
  /// Color: #DDE0E3
 | 
			
		||||
  static const Color light1 = Color(0xFFDDE0E3);
 | 
			
		||||
 | 
			
		||||
  /// Color: #CACCD4
 | 
			
		||||
  static const Color light2 = Color(0xFFCACCD4);
 | 
			
		||||
 | 
			
		||||
  /// Color: #E4EEF8
 | 
			
		||||
  static const Color lightGray1 = Color(0xFFE4EEF8);
 | 
			
		||||
 | 
			
		||||
  /// Color: #DADEE2
 | 
			
		||||
  static const Color lightGray2 = Color(0xFFDADEE2);
 | 
			
		||||
 | 
			
		||||
  /// Color: #B79EFF
 | 
			
		||||
  static const Color purple1 = Color(0xFFB79EFF);
 | 
			
		||||
 | 
			
		||||
  /// Color: #6865F2
 | 
			
		||||
  static const Color purple2 = Color(0xFF6865F2);
 | 
			
		||||
 | 
			
		||||
  /// Color: #FB5E3C
 | 
			
		||||
  static const Color red1 = Color(0xFFFB5E3C);
 | 
			
		||||
 | 
			
		||||
  /// Color: #F44464
 | 
			
		||||
  static const Color red2 = Color(0xFFF44464);
 | 
			
		||||
 | 
			
		||||
  /// Color: #FBAF3C
 | 
			
		||||
  static const Color yellow1 = Color(0xFFFBAF3C);
 | 
			
		||||
 | 
			
		||||
  /// Color: #F48344
 | 
			
		||||
  static const Color yellow2 = Color(0xFFF48344);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor blueGradient = MultiColor([
 | 
			
		||||
    WyattColors.blue1,
 | 
			
		||||
    WyattColors.blue2,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor blueBtnGradient = MultiColor([
 | 
			
		||||
    WyattColors.blue1Btn,
 | 
			
		||||
    WyattColors.blue2Btn,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor blueBtnFocusGradient = MultiColor([
 | 
			
		||||
    WyattColors.blue1BtnFocus,
 | 
			
		||||
    WyattColors.blue2BtnFocus,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor blueBtnHoverGradient = MultiColor([
 | 
			
		||||
    WyattColors.blue1BtnHover,
 | 
			
		||||
    WyattColors.blue2BtnHover,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor darkBlueGradient = MultiColor([
 | 
			
		||||
    WyattColors.darkBlue1,
 | 
			
		||||
    WyattColors.darkBlue2,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor grayNavbarGradient = MultiColor([
 | 
			
		||||
    WyattColors.gray1Navbar,
 | 
			
		||||
    WyattColors.gray2Navbar,
 | 
			
		||||
    WyattColors.gray3Navbar,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor lightGrayNavbarGradient = MultiColor([
 | 
			
		||||
    WyattColors.gray1Navbar,
 | 
			
		||||
    WyattColors.gray2Navbar,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor grayGradient = MultiColor([
 | 
			
		||||
    WyattColors.gray1,
 | 
			
		||||
    WyattColors.gray2,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor grayBgGradient = MultiColor([
 | 
			
		||||
    WyattColors.gray1Bg,
 | 
			
		||||
    WyattColors.gray2Bg,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor grayBgOpacityGradient = MultiColor([
 | 
			
		||||
    WyattColors.gray1BgOpacity,
 | 
			
		||||
    WyattColors.gray2BgOpacity,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor lightGrayGradient = MultiColor([
 | 
			
		||||
    WyattColors.lightGray1,
 | 
			
		||||
    WyattColors.lightGray2,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor lightGradient = MultiColor([
 | 
			
		||||
    WyattColors.light1,
 | 
			
		||||
    WyattColors.light2,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor purpleGradient = MultiColor([
 | 
			
		||||
    WyattColors.purple1,
 | 
			
		||||
    WyattColors.purple2,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor redGradient = MultiColor([
 | 
			
		||||
    WyattColors.red1,
 | 
			
		||||
    WyattColors.red2,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor yellowGradient = MultiColor([
 | 
			
		||||
    WyattColors.yellow1,
 | 
			
		||||
    WyattColors.yellow2,
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  static const MultiColor greenGradient = MultiColor([
 | 
			
		||||
    WyattColors.green1,
 | 
			
		||||
    WyattColors.green2,
 | 
			
		||||
  ]);
 | 
			
		||||
}
 | 
			
		||||
@ -16,7 +16,6 @@
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
 | 
			
		||||
import 'package:wyatt_ui_kit/src/core/design_system/colors.dart';
 | 
			
		||||
 | 
			
		||||
/// {@template card_theme_extension_impl}
 | 
			
		||||
/// Card theme extension that implements Wyatt Theme.
 | 
			
		||||
@ -48,15 +47,18 @@ class CardThemeExtensionImpl extends CardThemeExtension {
 | 
			
		||||
      radius: const BorderRadius.all(Radius.circular(12)),
 | 
			
		||||
      padding: const EdgeInsets.all(25),
 | 
			
		||||
      stroke: 1,
 | 
			
		||||
      backgroundColors: const MultiColor.single(WyattColors.light),
 | 
			
		||||
      borderColors: WyattColors.lightGradient,
 | 
			
		||||
      backgroundColors: const MultiColor.single(Color(0xFFF6F6F6)),
 | 
			
		||||
      borderColors: const MultiColor([
 | 
			
		||||
        Color(0xFFDDE0E3),
 | 
			
		||||
        Color(0xFFCACCD4),
 | 
			
		||||
      ]),
 | 
			
		||||
      titleStyle: theme.textTheme.titleLarge,
 | 
			
		||||
      subtitleStyle: theme.textTheme.titleMedium,
 | 
			
		||||
      bodyStyle: theme.textTheme.bodyMedium,
 | 
			
		||||
      minSize: const Size(330, 0),
 | 
			
		||||
      maxSize: const Size(390, double.infinity),
 | 
			
		||||
      shadow: BoxShadow(
 | 
			
		||||
        color: WyattColors.black.withOpacity(0.05),
 | 
			
		||||
        color: const Color(0xFF24262A).withOpacity(0.05),
 | 
			
		||||
        blurRadius: 30,
 | 
			
		||||
        offset: const Offset(0, 5),
 | 
			
		||||
      ),
 | 
			
		||||
@ -72,15 +74,19 @@ class CardThemeExtensionImpl extends CardThemeExtension {
 | 
			
		||||
      radius: const BorderRadius.all(Radius.circular(12)),
 | 
			
		||||
      padding: const EdgeInsets.all(25),
 | 
			
		||||
      stroke: 1,
 | 
			
		||||
      backgroundColors: WyattColors.grayBgOpacityGradient,
 | 
			
		||||
      borderColors: WyattColors.grayGradient,
 | 
			
		||||
      backgroundColors:
 | 
			
		||||
          const MultiColor([Color(0xFF26292D), Color(0xFF202327)]),
 | 
			
		||||
      borderColors: const MultiColor([
 | 
			
		||||
        Color(0xFF60656A),
 | 
			
		||||
        Color(0xFF383C40),
 | 
			
		||||
      ]),
 | 
			
		||||
      titleStyle: theme.textTheme.titleLarge,
 | 
			
		||||
      subtitleStyle: theme.textTheme.titleMedium,
 | 
			
		||||
      bodyStyle: theme.textTheme.bodyMedium,
 | 
			
		||||
      minSize: const Size(330, 0),
 | 
			
		||||
      maxSize: const Size(390, double.infinity),
 | 
			
		||||
      shadow: BoxShadow(
 | 
			
		||||
        color: WyattColors.black.withOpacity(0.15),
 | 
			
		||||
        color: const Color(0xFF24262A).withOpacity(0.15),
 | 
			
		||||
        blurRadius: 30,
 | 
			
		||||
        offset: const Offset(0, 5),
 | 
			
		||||
      ),
 | 
			
		||||
 | 
			
		||||
@ -22,22 +22,19 @@ import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
 | 
			
		||||
/// {@endtemplate}
 | 
			
		||||
abstract class WyattComponentThemeData {
 | 
			
		||||
  /// {@macro wyatt_component_theme_data}
 | 
			
		||||
  static const ComponentThemeData wyattComponentThemeData =
 | 
			
		||||
      ComponentThemeData.raw(
 | 
			
		||||
    topAppBar: TopAppBar(),
 | 
			
		||||
    topNavigationBar: TopNavigationBar(),
 | 
			
		||||
    // bottomNavigationBar: ,
 | 
			
		||||
    // error: ,
 | 
			
		||||
    loader: Loader(),
 | 
			
		||||
    richTextBuilder: RichTextBuilder(),
 | 
			
		||||
    textInput: TextInput(),
 | 
			
		||||
    fileSelectionButton: FileSelectionButton(),
 | 
			
		||||
    flatButton: FlatButton(),
 | 
			
		||||
    simpleIconButton: SimpleIconButton(),
 | 
			
		||||
    symbolButton: SymbolButton(),
 | 
			
		||||
    informationCard: InformationCard(),
 | 
			
		||||
    portfolioCard: PortfolioCard(),
 | 
			
		||||
    quoteCard: QuoteCard(),
 | 
			
		||||
    skillCard: SkillCard(),
 | 
			
		||||
  static ComponentThemeData get wyattComponentThemeData => ComponentThemeData(
 | 
			
		||||
        appBar: const TopAppBar(),
 | 
			
		||||
        topNavigationBarComponent: const TopNavigationBar(),
 | 
			
		||||
        loaderComponent: const Loader(),
 | 
			
		||||
        richTextBuilderComponent: const RichTextBuilder(),
 | 
			
		||||
        textInputComponent: const TextInput(),
 | 
			
		||||
        fileSelectionButtonComponent: const FileSelectionButton(),
 | 
			
		||||
        flatButtonComponent: const FlatButton(),
 | 
			
		||||
        simpleIconButtonComponent: const SimpleIconButton(),
 | 
			
		||||
        symbolButtonComponent: const SymbolButton(),
 | 
			
		||||
        informationCardComponent: const InformationCard(),
 | 
			
		||||
        portfolioCardComponent: const PortfolioCard(),
 | 
			
		||||
        quoteCardComponent: const QuoteCard(),
 | 
			
		||||
        skillCardComponent: const SkillCard(),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user