Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Rewrite Fortaleza theme using the new code gen for tokens #528

Merged
merged 33 commits into from
Dec 5, 2024
Merged
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
9028b78
generate color token
tilucasoli Nov 12, 2024
54e8381
checkpoint1
tilucasoli Nov 13, 2024
774ddfe
annotation improvements
tilucasoli Nov 18, 2024
fc6555c
improve the SwatchColorToken
tilucasoli Nov 18, 2024
0dc47d4
Update mixable_tokens_generator.dart
tilucasoli Nov 18, 2024
3b02008
Update mixable_tokens_generator.dart
tilucasoli Nov 18, 2024
9548c51
improve tests
tilucasoli Nov 19, 2024
a2652f4
refactor the fortaleza theme
tilucasoli Nov 18, 2024
1d9a631
remove unused classes
tilucasoli Nov 18, 2024
2313745
create a test for theme
tilucasoli Nov 19, 2024
a97a2aa
fixing the theme
tilucasoli Nov 19, 2024
b9a5f9f
generate color token
tilucasoli Nov 12, 2024
2557bf8
checkpoint1
tilucasoli Nov 13, 2024
f61a08e
annotation improvements
tilucasoli Nov 18, 2024
44f157b
improve the SwatchColorToken
tilucasoli Nov 18, 2024
c448351
improve tests
tilucasoli Nov 19, 2024
63e5320
refactor the fortaleza theme
tilucasoli Nov 18, 2024
74ee14d
remove unused classes
tilucasoli Nov 18, 2024
b7be240
create a test for theme
tilucasoli Nov 19, 2024
8f42ed1
fixing the theme
tilucasoli Nov 19, 2024
e8dfd2e
Update field_info.dart
tilucasoli Nov 26, 2024
207f35f
Merge branch 'refactor/remix-theme' of https://github.com/conceptadev…
tilucasoli Nov 26, 2024
ce95ae6
remove token
tilucasoli Nov 26, 2024
58f9f7f
improve remixTheme
tilucasoli Nov 26, 2024
cfd6f99
Update card_use_case.dart
tilucasoli Nov 26, 2024
a488c35
Update toast_layer.dart
tilucasoli Nov 26, 2024
49fa5ec
textfield
tilucasoli Nov 26, 2024
8cd968f
Merge branch 'main' into refactor/remix-theme
tilucasoli Nov 26, 2024
16f9bf3
Update component.dart
tilucasoli Nov 26, 2024
a458122
Delete remix_theme.dart
tilucasoli Nov 26, 2024
98a5f27
some adjustments
tilucasoli Dec 5, 2024
a6a8b0f
Update main.dart
tilucasoli Dec 5, 2024
9898b6a
Merge branch 'main' into refactor/remix-theme
tilucasoli Dec 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
some adjustments
tilucasoli committed Dec 5, 2024
commit 98a5f277dad1d9de6ced70cefbfad3d9bf1ef068
44 changes: 30 additions & 14 deletions packages/remix/demo/lib/addons/brightness_addon.dart
Original file line number Diff line number Diff line change
@@ -1,43 +1,59 @@
import 'package:flutter/material.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart';

class BrightnessAddon extends WidgetbookAddon<Brightness> {
final Brightness initialBrightness;
class WidgetBookBrightness {
static const light = 'light';
static const dark = 'dark';
}

class BrightnessAddon extends WidgetbookAddon<String> {
final String initialBrightness;

BrightnessAddon({
this.initialBrightness = Brightness.light,
}) : super(name: 'Brightness');
this.initialBrightness = WidgetBookBrightness.light,
}) : super(name: 'brightness');

@override
Widget buildUseCase(
BuildContext context,
Widget child,
Brightness setting,
String setting,
) {
return Theme(
data: ThemeData(
brightness: setting,
return MediaQuery(
data: MediaQueryData(
platformBrightness: setting == WidgetBookBrightness.light
? Brightness.light
: Brightness.dark,
),
child: child,
);
}

@override
List<Field<Brightness>> get fields {
List<Field<String>> get fields {
return [
ListField<Brightness>(
ListField<String>(
name: 'brightness',
initialValue: initialBrightness,
values: [
Brightness.light,
Brightness.dark,
WidgetBookBrightness.light,
WidgetBookBrightness.dark,
],
)
];
}

@override
Brightness valueFromQueryGroup(Map<String, String> group) {
return valueOf<Brightness>('brightness', group)!;
String valueFromQueryGroup(Map<String, String> group) {
return valueOf<String>('brightness', group)!;
}
}

class BrightnessAddonConfig extends AddonConfig {
const BrightnessAddonConfig(String value)
: super(
'brightness',
'brightness:$value',
);
}
70 changes: 70 additions & 0 deletions packages/remix/demo/lib/addons/theme_addon.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import 'package:flutter/widgets.dart';
import 'package:remix/remix.dart';
import 'package:remix/themes/fortaleza.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart';

typedef ThemeMultiBrightness = ({RemixThemeData light, RemixThemeData dark});

final Map<String, ThemeMultiBrightness> themes = {
'fortaleza': (
light: FortalezaThemeData.light(),
dark: FortalezaThemeData.dark(),
),
'base': (
light: RemixThemeData.baseLight(),
dark: RemixThemeData.baseDark(),
),
};

class ComponentTheme {
static const fortaleza = 'fortaleza';
static const base = 'base';
}

class ComponentThemeAddon extends WidgetbookAddon<String> {
final String initialBrightness;

ComponentThemeAddon({
this.initialBrightness = ComponentTheme.fortaleza,
}) : super(name: 'component theme');

@override
Widget buildUseCase(
BuildContext context,
Widget child,
String setting,
) {
final theme = themes[setting];
return RemixApp(
debugShowCheckedModeBanner: false,
darkTheme: theme!.dark,
theme: theme.light,
home: child,
);
}

@override
List<Field<String>> get fields {
return [
ListField<String>(
name: 'brightness',
initialValue: initialBrightness,
values: [
ComponentTheme.fortaleza,
ComponentTheme.base,
],
)
];
}

@override
String valueFromQueryGroup(Map<String, String> group) {
return valueOf<String>('brightness', group)!;
}
}

class ComponentThemeAddonConfig extends AddonConfig {
const ComponentThemeAddonConfig(String value)
: super('component theme', 'component theme:$value');
}
18 changes: 15 additions & 3 deletions packages/remix/demo/lib/components/card_use_case.dart
Original file line number Diff line number Diff line change
@@ -33,13 +33,25 @@ Widget buildCard(BuildContext context) {
children: [
StyledText(
'Leo Farias',
style: Style($text.style.$text3()),
style: Style(
$text.chain
..style.fontSize(14)
..style.fontWeight.bold()
..style.color.black87(),
$on.dark(
$text.style.color.white(),
),
),
),
StyledText(
'Flutter Engineer',
style: Style(
$text.style.$text2(),
$text.style.color.$neutral(10),
$text.chain
..style.fontSize(12)
..style.color.black54(),
$on.dark(
$text.style.color.white70(),
),
),
),
],
23 changes: 0 additions & 23 deletions packages/remix/demo/lib/helpers/theme_addon.dart

This file was deleted.

68 changes: 24 additions & 44 deletions packages/remix/demo/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,33 @@
import 'package:demo/helpers/theme_addon.dart';
import 'package:demo/addons/theme_addon.dart';
import 'package:flutter/material.dart' hide Scaffold, ThemeMode;
import 'package:remix/remix.dart';

Check warning on line 3 in packages/remix/demo/lib/main.dart

GitHub Actions / Test Min SDK

Unused import: 'package:remix/remix.dart'.

Try removing the import directive. See https://dart.dev/diagnostics/unused_import to learn more about this problem.

Check warning on line 3 in packages/remix/demo/lib/main.dart

GitHub Actions / Test

Unused import: 'package:remix/remix.dart'.

Try removing the import directive. See https://dart.dev/diagnostics/unused_import to learn more about this problem.
import 'package:remix/themes/fortaleza.dart';

Check warning on line 4 in packages/remix/demo/lib/main.dart

GitHub Actions / Test Min SDK

Unused import: 'package:remix/themes/fortaleza.dart'.

Try removing the import directive. See https://dart.dev/diagnostics/unused_import to learn more about this problem.

Check warning on line 4 in packages/remix/demo/lib/main.dart

GitHub Actions / Test

Unused import: 'package:remix/themes/fortaleza.dart'.

Try removing the import directive. See https://dart.dev/diagnostics/unused_import to learn more about this problem.
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;

import 'addons/brightness_addon.dart';
import 'main.directories.g.dart';

@widgetbook.App()
@widgetbook.App(
cloudAddonsConfigs: {
'dark fortaleza': [
BrightnessAddonConfig(WidgetBookBrightness.dark),
ComponentThemeAddonConfig(ComponentTheme.fortaleza),
],
'light fortaleza': [
BrightnessAddonConfig(WidgetBookBrightness.light),
ComponentThemeAddonConfig(ComponentTheme.fortaleza),
],
'dark base': [
BrightnessAddonConfig(WidgetBookBrightness.dark),
ComponentThemeAddonConfig(ComponentTheme.base),
],
'light base': [
BrightnessAddonConfig(WidgetBookBrightness.light),
ComponentThemeAddonConfig(ComponentTheme.base),
],
},
)
void main() {
runApp(const HotReload());
}
@@ -19,48 +39,8 @@
Widget build(BuildContext context) {
return Widgetbook(
addons: [
ThemeAddon<Brightness>(
themes: [
const WidgetbookTheme(
name: 'Light',
data: Brightness.light,
),
const WidgetbookTheme(
name: 'Dark',
data: Brightness.dark,
),
],
initialTheme: const WidgetbookTheme(
name: 'Light',
data: Brightness.light,
),
themeBuilder: (context, Brightness theme, child) {
return MediaQuery(
data: MediaQueryData(
platformBrightness: theme,
),
child: child,
);
},
),
RemixComponentThemeAddon(
themes: [
WidgetbookTheme(
name: 'Fortaleza',
data: (
light: FortalezaThemeData.light(),
dark: FortalezaThemeData.dark(),
),
),
WidgetbookTheme(
name: 'Base',
data: (
light: RemixThemeData.baseLight(),
dark: RemixThemeData.baseDark(),
),
),
],
),
BrightnessAddon(),
ComponentThemeAddon(),
InspectorAddon(),
],
appBuilder: (context, child) => child,
6 changes: 3 additions & 3 deletions packages/remix/lib/src/components/button/button_widget.dart
Original file line number Diff line number Diff line change
@@ -118,7 +118,7 @@ class ButtonSpecWidget extends StatelessWidget {
}

Widget _buildChildren(ButtonSpec spec) {
final flexboxWidget = spec.container(
final flexWidget = spec.container.flex(
direction: Axis.horizontal,
children: [
if (iconLeft != null) spec.icon(iconLeft),
@@ -128,13 +128,13 @@ class ButtonSpecWidget extends StatelessWidget {
],
);

return loading ? _buildLoadingOverlay(spec, flexboxWidget) : flexboxWidget;
return loading ? _buildLoadingOverlay(spec, flexWidget) : flexWidget;
}

@override
Widget build(BuildContext context) {
final spec = this.spec ?? const ButtonSpec();

return _buildChildren(spec);
return spec.container.box(child: _buildChildren(spec));
}
}
55 changes: 2 additions & 53 deletions packages/remix/lib/src/themes/fortaleza/components.dart
Original file line number Diff line number Diff line change
@@ -48,7 +48,7 @@ class FortalezaComponentTheme extends RemixComponentTheme {
required super.slider,
});

factory FortalezaComponentTheme.light() {
static RemixComponentTheme light() {
return const FortalezaComponentTheme(
accordion: FortalezaAccordionStyle(),
avatar: FortalezaAvatarStyle(),
@@ -75,7 +75,7 @@ class FortalezaComponentTheme extends RemixComponentTheme {
);
}

factory FortalezaComponentTheme.dark() {
static RemixComponentTheme dark() {
return FortalezaComponentTheme.light().copyWith(
avatar: const FortalezaDarkAvatarStyle(),
badge: const FortalezaDarkBadgeStyle(),
@@ -84,55 +84,4 @@ class FortalezaComponentTheme extends RemixComponentTheme {
switchComponent: const FortalezaDarkSwitchStyle(),
);
}

@override
FortalezaComponentTheme copyWith({
covariant FortalezaAccordionStyle? accordion,
covariant FortalezaAvatarStyle? avatar,
covariant FortalezaBadgeStyle? badge,
covariant FortalezaButtonStyle? button,
covariant FortalezaCalloutStyle? callout,
covariant FortalezaCardStyle? card,
covariant FortalezaCheckboxStyle? checkbox,
covariant FortalezaDialogStyle? dialog,
covariant FortalezaChipStyle? chip,
covariant FortalezaDividerStyle? divider,
covariant FortalezaIconButtonStyle? iconButton,
covariant FortalezaMenuItemStyle? menuItem,
covariant FortalezaProgressStyle? progress,
covariant FortalezaRadioStyle? radio,
covariant FortalezaScaffoldStyle? scaffold,
covariant FortalezaSegmentedControlStyle? segmentedControl,
covariant FortalezaSelectStyle? select,
covariant FortalezaSpinnerStyle? spinner,
covariant FortalezaSwitchStyle? switchComponent,
covariant FortalezaTextFieldStyle? textField,
covariant FortalezaToastStyle? toast,
covariant FortalezaSliderStyle? slider,
}) {
return FortalezaComponentTheme(
accordion: accordion ?? this.accordion,
avatar: avatar ?? this.avatar,
badge: badge ?? this.badge,
button: button ?? this.button,
callout: callout ?? this.callout,
card: card ?? this.card,
checkbox: checkbox ?? this.checkbox,
dialog: dialog ?? this.dialog,
chip: chip ?? this.chip,
divider: divider ?? this.divider,
iconButton: iconButton ?? this.iconButton,
menuItem: menuItem ?? this.menuItem,
progress: progress ?? this.progress,
radio: radio ?? this.radio,
scaffold: scaffold ?? this.scaffold,
segmentedControl: segmentedControl ?? this.segmentedControl,
select: select ?? this.select,
spinner: spinner ?? this.spinner,
switchComponent: switchComponent ?? this.switchComponent,
textField: textField ?? this.textField,
toast: toast ?? this.toast,
slider: slider ?? this.slider,
);
}
}
Original file line number Diff line number Diff line change
@@ -103,6 +103,6 @@ class FortalezaButtonStyle extends ButtonStyle {
surface(surfaceVariant()),
ghost(ghostVariant()),
],
);
).animate(duration: const Duration(milliseconds: 200));
}
}
Loading
Loading