ui_kit-ui_components/feat/export-ui-kit #157

Merged
hugo merged 5 commits from ui_kit-ui_components/feat/export-ui-kit into master 2023-02-23 09:40:45 +00:00
17 changed files with 410 additions and 83 deletions

View File

@ -15,6 +15,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/src/core/utils/theme_helper.dart';
import 'package:wyatt_ui_components/src/domain/entities/theme_style.dart';
/// {@template theme_resolver}
@ -38,52 +39,34 @@ abstract class ThemeResolver<S extends ThemeStyle<S>, T, E> {
S? Function(BuildContext context, {E? extra}) get customStyleFn;
/// Compute default value from Flutter Theme or with hardcoded values.
S computeDefaultValue(BuildContext context, {E? extra});
S? computeExtensionValueFn(
BuildContext context,
T themeExtension, {
S computeDefaultValue(
BuildContext context, {
E? extra,
});
/// Compute values from the extension if found
S? _computeExtensionValue(
BuildContext context, {
/// Compute extension value from custom component extension.
S? computeExtensionValueFn(
BuildContext context,
T? themeExtension, {
E? extra,
}) {
final themeExtension = Theme.of(context).extension<T>();
if (themeExtension != null) {
return computeExtensionValueFn(
context,
themeExtension,
extra: extra,
);
}
return null;
}
/// Compute custom value
S? _computeCustomValue(
BuildContext context, {
E? extra,
}) {
final customStyle = customStyleFn(
context,
extra: extra,
);
if (customStyle != null) {
return customStyle;
}
return null;
}
});
/// Choose most suitable style for a given context.
S negotiate(BuildContext context, {E? extra}) {
S style = computeDefaultValue(context, extra: extra);
style =
style.mergeWith(_computeExtensionValue(context, extra: extra)) ?? style;
style =
style.mergeWith(_computeCustomValue(context, extra: extra)) ?? style;
return style;
final style = computeDefaultValue(context, extra: extra);
return ThemeHelper.getThemeElement<S, S>(
[
style,
computeExtensionValueFn(
context,
Theme.of(context).extension<T>(),
extra: extra,
),
customStyleFn(context, extra: extra)
malo marked this conversation as resolved
Review

remove this useless

remove this useless
],
transform: (value) => value,
combine: (value, element) => value?.mergeWith(element),
) ??
style;
}
}

View File

@ -16,4 +16,5 @@
export 'multi_color.dart';
export 'text_wrapper.dart';
export 'theme_helper.dart';
export 'theme_resolver.dart';

View File

@ -14,9 +14,49 @@
// 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:copy_with_extension/copy_with_extension.dart';
import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
part 'component_theme_data.g.dart';
@CopyWith()
malo marked this conversation as resolved
Review

no need to merge ComponentThemeData? in which case you should not use this extension.

no need to merge ComponentThemeData? in which case you should not use this extension.
class ComponentThemeData {
factory ComponentThemeData({
TopAppBarComponent? appBar,
TopNavigationBarComponent? topNavigationBarComponent,
BottomNavigationBarComponent? bottomNavigationBar,
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(
appBar: appBar,
topNavigationBarComponent: topNavigationBarComponent,
bottomNavigationBar: bottomNavigationBar,
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,
);
const ComponentThemeData.raw({
this.appBar,
this.topNavigationBarComponent,
@ -35,11 +75,11 @@ class ComponentThemeData {
this.quoteCardComponent,
this.skillCardComponent,
});
final TopAppBarComponent? appBar;
final TopNavigationBarComponent? topNavigationBarComponent;
final BottomNavigationBarComponent? bottomNavigationBar;
final ErrorWidgetComponent? errorWidget;
final LoadingWidgetComponent? loadingWidget;
final LoaderComponent? loaderComponent;

View File

@ -0,0 +1,265 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'component_theme_data.dart';
// **************************************************************************
// CopyWithGenerator
// **************************************************************************
abstract class _$ComponentThemeDataCWProxy {
ComponentThemeData appBar(TopAppBarComponent? appBar);
ComponentThemeData topNavigationBarComponent(
TopNavigationBarComponent? topNavigationBarComponent);
ComponentThemeData bottomNavigationBar(
BottomNavigationBarComponent? bottomNavigationBar);
ComponentThemeData errorWidget(ErrorWidgetComponent? errorWidget);
ComponentThemeData loadingWidget(LoadingWidgetComponent? loadingWidget);
ComponentThemeData loaderComponent(LoaderComponent? loaderComponent);
ComponentThemeData richTextBuilderComponent(
RichTextBuilderComponent? richTextBuilderComponent);
ComponentThemeData textInputComponent(TextInputComponent? textInputComponent);
ComponentThemeData fileSelectionButtonComponent(
FileSelectionButtonComponent? fileSelectionButtonComponent);
ComponentThemeData flatButtonComponent(
FlatButtonComponent? flatButtonComponent);
ComponentThemeData simpleIconButtonComponent(
SimpleIconButtonComponent? simpleIconButtonComponent);
ComponentThemeData symbolButtonComponent(
SymbolButtonComponent? symbolButtonComponent);
ComponentThemeData informationCardComponent(
InformationCardComponent? informationCardComponent);
ComponentThemeData portfolioCardComponent(
PortfolioCardComponent? portfolioCardComponent);
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.
///
/// Usage
/// ```dart
/// ComponentThemeData(...).copyWith(id: 12, name: "My name")
/// ````
ComponentThemeData call({
TopAppBarComponent? appBar,
TopNavigationBarComponent? topNavigationBarComponent,
BottomNavigationBarComponent? bottomNavigationBar,
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,
});
}
/// Proxy class for `copyWith` functionality. This is a callable class and can be used as follows: `instanceOfComponentThemeData.copyWith(...)`. Additionally contains functions for specific fields e.g. `instanceOfComponentThemeData.copyWith.fieldName(...)`
class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
const _$ComponentThemeDataCWProxyImpl(this._value);
final ComponentThemeData _value;
@override
ComponentThemeData appBar(TopAppBarComponent? appBar) => this(appBar: appBar);
@override
ComponentThemeData topNavigationBarComponent(
TopNavigationBarComponent? topNavigationBarComponent) =>
this(topNavigationBarComponent: topNavigationBarComponent);
@override
ComponentThemeData bottomNavigationBar(
BottomNavigationBarComponent? bottomNavigationBar) =>
this(bottomNavigationBar: bottomNavigationBar);
@override
ComponentThemeData errorWidget(ErrorWidgetComponent? errorWidget) =>
this(errorWidget: errorWidget);
@override
ComponentThemeData loadingWidget(LoadingWidgetComponent? loadingWidget) =>
this(loadingWidget: loadingWidget);
@override
ComponentThemeData loaderComponent(LoaderComponent? loaderComponent) =>
this(loaderComponent: loaderComponent);
@override
ComponentThemeData richTextBuilderComponent(
RichTextBuilderComponent? richTextBuilderComponent) =>
this(richTextBuilderComponent: richTextBuilderComponent);
@override
ComponentThemeData textInputComponent(
TextInputComponent? textInputComponent) =>
this(textInputComponent: textInputComponent);
@override
ComponentThemeData fileSelectionButtonComponent(
FileSelectionButtonComponent? fileSelectionButtonComponent) =>
this(fileSelectionButtonComponent: fileSelectionButtonComponent);
@override
ComponentThemeData flatButtonComponent(
FlatButtonComponent? flatButtonComponent) =>
this(flatButtonComponent: flatButtonComponent);
@override
ComponentThemeData simpleIconButtonComponent(
SimpleIconButtonComponent? simpleIconButtonComponent) =>
this(simpleIconButtonComponent: simpleIconButtonComponent);
@override
ComponentThemeData symbolButtonComponent(
SymbolButtonComponent? symbolButtonComponent) =>
this(symbolButtonComponent: symbolButtonComponent);
@override
ComponentThemeData informationCardComponent(
InformationCardComponent? informationCardComponent) =>
this(informationCardComponent: informationCardComponent);
@override
ComponentThemeData portfolioCardComponent(
PortfolioCardComponent? portfolioCardComponent) =>
this(portfolioCardComponent: portfolioCardComponent);
@override
ComponentThemeData quoteCardComponent(
QuoteCardComponent? quoteCardComponent) =>
this(quoteCardComponent: quoteCardComponent);
@override
ComponentThemeData skillCardComponent(
SkillCardComponent? skillCardComponent) =>
this(skillCardComponent: skillCardComponent);
@override
/// 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.
///
/// Usage
/// ```dart
/// ComponentThemeData(...).copyWith(id: 12, name: "My name")
/// ````
ComponentThemeData call({
Object? appBar = const $CopyWithPlaceholder(),
Object? topNavigationBarComponent = const $CopyWithPlaceholder(),
Object? bottomNavigationBar = 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(
appBar: appBar == const $CopyWithPlaceholder()
? _value.appBar
// ignore: cast_nullable_to_non_nullable
: appBar as TopAppBarComponent?,
topNavigationBarComponent:
topNavigationBarComponent == const $CopyWithPlaceholder()
? _value.topNavigationBarComponent
// ignore: cast_nullable_to_non_nullable
: topNavigationBarComponent as TopNavigationBarComponent?,
bottomNavigationBar: bottomNavigationBar == const $CopyWithPlaceholder()
? _value.bottomNavigationBar
// ignore: cast_nullable_to_non_nullable
: bottomNavigationBar as BottomNavigationBarComponent?,
errorWidget: errorWidget == const $CopyWithPlaceholder()
? _value.errorWidget
// ignore: cast_nullable_to_non_nullable
: errorWidget as ErrorWidgetComponent?,
loadingWidget: loadingWidget == const $CopyWithPlaceholder()
? _value.loadingWidget
// ignore: cast_nullable_to_non_nullable
: loadingWidget as LoadingWidgetComponent?,
loaderComponent: loaderComponent == const $CopyWithPlaceholder()
? _value.loaderComponent
// ignore: cast_nullable_to_non_nullable
: loaderComponent as LoaderComponent?,
richTextBuilderComponent:
richTextBuilderComponent == const $CopyWithPlaceholder()
? _value.richTextBuilderComponent
// ignore: cast_nullable_to_non_nullable
: richTextBuilderComponent as RichTextBuilderComponent?,
textInputComponent: textInputComponent == const $CopyWithPlaceholder()
? _value.textInputComponent
// ignore: cast_nullable_to_non_nullable
: textInputComponent as TextInputComponent?,
fileSelectionButtonComponent:
fileSelectionButtonComponent == const $CopyWithPlaceholder()
? _value.fileSelectionButtonComponent
// ignore: cast_nullable_to_non_nullable
: fileSelectionButtonComponent as FileSelectionButtonComponent?,
flatButtonComponent: flatButtonComponent == const $CopyWithPlaceholder()
? _value.flatButtonComponent
// ignore: cast_nullable_to_non_nullable
: flatButtonComponent as FlatButtonComponent?,
simpleIconButtonComponent:
simpleIconButtonComponent == const $CopyWithPlaceholder()
? _value.simpleIconButtonComponent
// ignore: cast_nullable_to_non_nullable
: simpleIconButtonComponent as SimpleIconButtonComponent?,
symbolButtonComponent:
symbolButtonComponent == const $CopyWithPlaceholder()
? _value.symbolButtonComponent
// ignore: cast_nullable_to_non_nullable
: symbolButtonComponent as SymbolButtonComponent?,
informationCardComponent:
informationCardComponent == const $CopyWithPlaceholder()
? _value.informationCardComponent
// ignore: cast_nullable_to_non_nullable
: informationCardComponent as InformationCardComponent?,
portfolioCardComponent:
portfolioCardComponent == const $CopyWithPlaceholder()
? _value.portfolioCardComponent
// ignore: cast_nullable_to_non_nullable
: portfolioCardComponent as PortfolioCardComponent?,
quoteCardComponent: quoteCardComponent == const $CopyWithPlaceholder()
? _value.quoteCardComponent
// ignore: cast_nullable_to_non_nullable
: quoteCardComponent as QuoteCardComponent?,
skillCardComponent: skillCardComponent == const $CopyWithPlaceholder()
? _value.skillCardComponent
// ignore: cast_nullable_to_non_nullable
: skillCardComponent as SkillCardComponent?,
);
}
}
extension $ComponentThemeDataCopyWith on ComponentThemeData {
/// Returns a callable class that can be used as follows: `instanceOfComponentThemeData.copyWith(...)` or like so:`instanceOfComponentThemeData.copyWith.fieldName(...)`.
// ignore: library_private_types_in_public_api
_$ComponentThemeDataCWProxy get copyWith =>
_$ComponentThemeDataCWProxyImpl(this);
}

View File

@ -10,17 +10,20 @@ environment:
dependencies:
flutter: { sdk: flutter }
copy_with_extension: ^5.0.0
wyatt_component_copy_with_extension:
git:
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
path: packages/wyatt_component_copy_with_extension
dev_dependencies:
build_runner: ^2.3.3
flutter_test: { sdk: flutter }
wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.4.0
build_runner: ^2.3.3
copy_with_extension_gen: ^5.0.0
wyatt_component_copy_with_gen:
git:
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git

View File

@ -42,7 +42,7 @@ class NavigationItem extends StatelessWidget {
context
.themeExtension<TopBarThemeExtension>()
?.secondaryColor,
Theme.of(context).primaryColor,
context.colorScheme.primary
],
valueValidator: (value) => value != null,
transform: (value) => value,

View File

@ -80,33 +80,33 @@ class FileSelectionButtonThemeResolver extends ThemeResolver<
@override
FileSelectionButtonStyle? computeExtensionValueFn(
BuildContext context,
FileSelectionButtonThemeExtension themeExtension, {
FileSelectionButtonThemeExtension? themeExtension, {
ButtonState? extra,
}) {
FileSelectionButtonStyle? style;
switch (extra?.state) {
case ControlState.disabled:
style = themeExtension.disabledStyle;
style = themeExtension?.disabledStyle;
break;
case ControlState.focused:
style = themeExtension.focusedStyle;
style = themeExtension?.focusedStyle;
break;
case ControlState.hovered:
style = themeExtension.hoveredStyle;
style = themeExtension?.hoveredStyle;
break;
case ControlState.tapped:
style = themeExtension.tappedStyle;
style = themeExtension?.tappedStyle;
break;
case ControlState.normal:
case null:
style = themeExtension.normalStyle;
style = themeExtension?.normalStyle;
break;
}
if (extra?.isSelected ?? false) {
style = themeExtension.selectedStyle;
style = themeExtension?.selectedStyle;
}
if (extra?.isInvalid ?? false) {
style = themeExtension.invalidStyle;
style = themeExtension?.invalidStyle;
}
return style;
}

View File

@ -76,21 +76,21 @@ class FlatButtonThemeResolver extends ThemeResolver<FlatButtonStyle,
@override
FlatButtonStyle? computeExtensionValueFn(
BuildContext context,
FlatButtonThemeExtension themeExtension, {
FlatButtonThemeExtension? themeExtension, {
ControlState? extra,
}) {
switch (extra) {
case ControlState.disabled:
return themeExtension.disabledStyle;
return themeExtension?.disabledStyle;
case ControlState.focused:
return themeExtension.focusedStyle;
return themeExtension?.focusedStyle;
case ControlState.hovered:
return themeExtension.hoveredStyle;
return themeExtension?.hoveredStyle;
case ControlState.tapped:
return themeExtension.tappedStyle;
return themeExtension?.tappedStyle;
case ControlState.normal:
case null:
return themeExtension.normalStyle;
return themeExtension?.normalStyle;
}
}
}

View File

@ -74,21 +74,21 @@ class SimpleIconButtonThemeResolver extends ThemeResolver<SimpleIconButtonStyle,
@override
SimpleIconButtonStyle? computeExtensionValueFn(
BuildContext context,
SimpleIconButtonThemeExtension themeExtension, {
SimpleIconButtonThemeExtension? themeExtension, {
ControlState? extra,
}) {
switch (extra) {
case ControlState.disabled:
return themeExtension.disabledStyle;
return themeExtension?.disabledStyle;
case ControlState.focused:
return themeExtension.focusedStyle;
return themeExtension?.focusedStyle;
case ControlState.hovered:
return themeExtension.hoveredStyle;
return themeExtension?.hoveredStyle;
case ControlState.tapped:
return themeExtension.tappedStyle;
return themeExtension?.tappedStyle;
case ControlState.normal:
case null:
return themeExtension.normalStyle;
return themeExtension?.normalStyle;
}
}
}

View File

@ -76,30 +76,30 @@ class SymbolButtonThemeResolver extends ThemeResolver<SymbolButtonStyle,
@override
SymbolButtonStyle? computeExtensionValueFn(
BuildContext context,
SymbolButtonThemeExtension themeExtension, {
SymbolButtonThemeExtension? themeExtension, {
ButtonState? extra,
}) {
SymbolButtonStyle? style;
switch (extra?.state) {
case ControlState.disabled:
style = themeExtension.disabledStyle;
style = themeExtension?.disabledStyle;
break;
case ControlState.focused:
style = themeExtension.focusedStyle;
style = themeExtension?.focusedStyle;
break;
case ControlState.hovered:
style = themeExtension.hoveredStyle;
style = themeExtension?.hoveredStyle;
break;
case ControlState.tapped:
style = themeExtension.tappedStyle;
style = themeExtension?.tappedStyle;
break;
case ControlState.normal:
case null:
style = themeExtension.normalStyle;
style = themeExtension?.normalStyle;
break;
}
if (extra?.isSelected ?? false) {
style = themeExtension.selectedStyle;
style = themeExtension?.selectedStyle;
}
return style;

View File

@ -48,11 +48,11 @@ class LoaderThemeResolver
@override
LoaderStyle? computeExtensionValueFn(
BuildContext context,
LoaderThemeExtension themeExtension, {
LoaderThemeExtension? themeExtension, {
void extra,
}) =>
LoaderStyle(
colors: themeExtension.colors,
stroke: themeExtension.stroke,
colors: themeExtension?.colors,
stroke: themeExtension?.stroke,
);
}

View File

@ -43,11 +43,11 @@ class RichTextBuilderThemeResolver extends ThemeResolver<RichTextBuilderStyle,
@override
RichTextBuilderStyle? computeExtensionValueFn(
BuildContext context,
RichTextBuilderThemeExtension themeExtension, {
RichTextBuilderThemeExtension? themeExtension, {
void extra,
}) =>
RichTextBuilderStyle(
defaultStyle: themeExtension.defaultStyle,
styles: themeExtension.styles,
defaultStyle: themeExtension?.defaultStyle,
styles: themeExtension?.styles,
);
}

View File

@ -25,7 +25,7 @@ part 'text_input.g.dart';
@ComponentCopyWithExtension()
class TextInput extends TextInputComponent with $TextInputCWMixin {
TextInput({
const TextInput({
super.expand,
super.validator,
super.key,

View File

@ -118,19 +118,19 @@ class TextInputThemeResolver extends ThemeResolver<TextInputStyle,
@override
TextInputStyle? computeExtensionValueFn(
BuildContext context,
TextInputThemeExtension themeExtension, {
TextInputThemeExtension? themeExtension, {
TextInputState? extra,
}) {
TextInputStyle? textInputStyle;
switch (extra?.controlState) {
case ControlState.focused:
textInputStyle = themeExtension.focusedStyle;
textInputStyle = themeExtension?.focusedStyle;
break;
case ControlState.disabled:
textInputStyle = themeExtension.disableStyle;
textInputStyle = themeExtension?.disableStyle;
break;
case ControlState.normal:
textInputStyle = themeExtension.normalStyle;
textInputStyle = themeExtension?.normalStyle;
break;
case ControlState.hovered:
case ControlState.tapped:
@ -141,7 +141,7 @@ class TextInputThemeResolver extends ThemeResolver<TextInputStyle,
TextInputStyle? style;
switch (extra?.statusState) {
case StatusState.error:
style = themeExtension.errorStyle;
style = themeExtension?.errorStyle;
break;
case StatusState.initial:
case StatusState.success:

View File

@ -15,4 +15,3 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
export './linear_gradient_helper.dart';
export './theme_helper.dart';
malo marked this conversation as resolved Outdated
Outdated
Review

why remove this exort?

why remove this exort?

View File

@ -0,0 +1,36 @@
// 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:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
class WyattComponentThemeData {
static ComponentThemeData get wyattComponentThemeData => ComponentThemeData(
appBar: const TopAppBar(),
topNavigationBarComponent: const TopNavigationBar(),
loaderComponent: const Loader(),
richTextBuilderComponent: const RichTextBuilder(),
textInputComponent: const TextInput(),
fileSelectionButtonComponent: FileSelectionButton(),
flatButtonComponent: FlatButton(),
simpleIconButtonComponent: SimpleIconButton(),
symbolButtonComponent: SymbolButton(),
informationCardComponent: const InformationCard(),
portfolioCardComponent: const PortfolioCard(),
quoteCardComponent: const QuoteCard(),
skillCardComponent: const SkillCard(),
);
}