Skip to content

Commit e9de199

Browse files
authored
refactor: Rewrite Fortaleza theme using the new code gen for tokens (#528)
1 parent 70111fc commit e9de199

File tree

85 files changed

+1884
-1480
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+1884
-1480
lines changed

packages/mix/lib/src/theme/mix/mix_theme.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import '../tokens/space_token.dart';
1111
import '../tokens/text_style_token.dart';
1212

1313
class MixTheme extends InheritedWidget {
14-
const MixTheme({required super.child, required this.data, super.key});
14+
const MixTheme({required this.data, super.key, required super.child});
1515

1616
static MixThemeData of(BuildContext context) {
1717
final themeData =

packages/mix_generator/lib/src/helpers/builder_utils.dart

-13
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,6 @@ extension EnumElementX on EnumElement {
131131
}
132132
}
133133

134-
class TokenAnnotationContext extends AnnotationContext {
135-
final Object? type;
136-
137-
TokenAnnotationContext({
138-
required super.element,
139-
required this.type,
140-
});
141-
142-
String get name => element.name;
143-
144-
String get generatedName => element.generatedName;
145-
}
146-
147134
extension ClassElementX on ClassElement {
148135
bool get isConst => unnamedConstructor?.isConst ?? false;
149136

Original file line numberDiff line numberDiff line change
@@ -1,43 +1,59 @@
11
import 'package:flutter/material.dart';
22
import 'package:widgetbook/widgetbook.dart';
3+
import 'package:widgetbook_annotation/widgetbook_annotation.dart';
34

4-
class BrightnessAddon extends WidgetbookAddon<Brightness> {
5-
final Brightness initialBrightness;
5+
class WidgetBookBrightness {
6+
static const light = 'light';
7+
static const dark = 'dark';
8+
}
9+
10+
class BrightnessAddon extends WidgetbookAddon<String> {
11+
final String initialBrightness;
612

713
BrightnessAddon({
8-
this.initialBrightness = Brightness.light,
9-
}) : super(name: 'Brightness');
14+
this.initialBrightness = WidgetBookBrightness.light,
15+
}) : super(name: 'brightness');
1016

1117
@override
1218
Widget buildUseCase(
1319
BuildContext context,
1420
Widget child,
15-
Brightness setting,
21+
String setting,
1622
) {
17-
return Theme(
18-
data: ThemeData(
19-
brightness: setting,
23+
return MediaQuery(
24+
data: MediaQueryData(
25+
platformBrightness: setting == WidgetBookBrightness.light
26+
? Brightness.light
27+
: Brightness.dark,
2028
),
2129
child: child,
2230
);
2331
}
2432

2533
@override
26-
List<Field<Brightness>> get fields {
34+
List<Field<String>> get fields {
2735
return [
28-
ListField<Brightness>(
36+
ListField<String>(
2937
name: 'brightness',
3038
initialValue: initialBrightness,
3139
values: [
32-
Brightness.light,
33-
Brightness.dark,
40+
WidgetBookBrightness.light,
41+
WidgetBookBrightness.dark,
3442
],
3543
)
3644
];
3745
}
3846

3947
@override
40-
Brightness valueFromQueryGroup(Map<String, String> group) {
41-
return valueOf<Brightness>('brightness', group)!;
48+
String valueFromQueryGroup(Map<String, String> group) {
49+
return valueOf<String>('brightness', group)!;
4250
}
4351
}
52+
53+
class BrightnessAddonConfig extends AddonConfig {
54+
const BrightnessAddonConfig(String value)
55+
: super(
56+
'brightness',
57+
'brightness:$value',
58+
);
59+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import 'package:flutter/widgets.dart';
2+
import 'package:remix/remix.dart';
3+
import 'package:remix/themes/fortaleza.dart';
4+
import 'package:widgetbook/widgetbook.dart';
5+
import 'package:widgetbook_annotation/widgetbook_annotation.dart';
6+
7+
typedef ThemeMultiBrightness = ({RemixThemeData light, RemixThemeData dark});
8+
9+
final Map<String, ThemeMultiBrightness> themes = {
10+
'fortaleza': (
11+
light: FortalezaThemeData.light(),
12+
dark: FortalezaThemeData.dark(),
13+
),
14+
'base': (
15+
light: RemixThemeData.baseLight(),
16+
dark: RemixThemeData.baseDark(),
17+
),
18+
};
19+
20+
class ComponentTheme {
21+
static const fortaleza = 'fortaleza';
22+
static const base = 'base';
23+
}
24+
25+
class ComponentThemeAddon extends WidgetbookAddon<String> {
26+
final String initialBrightness;
27+
28+
ComponentThemeAddon({
29+
this.initialBrightness = ComponentTheme.fortaleza,
30+
}) : super(name: 'component theme');
31+
32+
@override
33+
Widget buildUseCase(
34+
BuildContext context,
35+
Widget child,
36+
String setting,
37+
) {
38+
final theme = themes[setting];
39+
return RemixApp(
40+
debugShowCheckedModeBanner: false,
41+
darkTheme: theme!.dark,
42+
theme: theme.light,
43+
home: child,
44+
);
45+
}
46+
47+
@override
48+
List<Field<String>> get fields {
49+
return [
50+
ListField<String>(
51+
name: 'brightness',
52+
initialValue: initialBrightness,
53+
values: [
54+
ComponentTheme.fortaleza,
55+
ComponentTheme.base,
56+
],
57+
)
58+
];
59+
}
60+
61+
@override
62+
String valueFromQueryGroup(Map<String, String> group) {
63+
return valueOf<String>('brightness', group)!;
64+
}
65+
}
66+
67+
class ComponentThemeAddonConfig extends AddonConfig {
68+
const ComponentThemeAddonConfig(String value)
69+
: super('component theme', 'component theme:$value');
70+
}

packages/remix/demo/lib/components/avatar_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:demo/helpers/knob_builder.dart';
22
import 'package:flutter/widgets.dart';
33
import 'package:remix/remix.dart';
4+
import 'package:remix/themes/fortaleza.dart';
45
import 'package:widgetbook/widgetbook.dart';
56
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
67

packages/remix/demo/lib/components/badge_use_case.dart

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
import 'package:demo/helpers/knob_builder.dart';
12
import 'package:flutter/widgets.dart';
23
import 'package:remix/remix.dart';
4+
import 'package:remix/themes/fortaleza.dart';
35
import 'package:widgetbook/widgetbook.dart';
46
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
57

@@ -15,8 +17,8 @@ Widget buildAvatarUseCase(BuildContext context) {
1517
label: 'Label',
1618
initialValue: 'New',
1719
),
18-
variants: const [
19-
// context.knobs.variant(FortalezaBadgeStyle.variants),
20+
variants: [
21+
context.knobs.variant(FortalezaBadgeStyle.variants),
2022
],
2123
),
2224
),

packages/remix/demo/lib/components/button_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:demo/addons/icon_data_knob.dart';
22
import 'package:demo/helpers/knob_builder.dart';
33
import 'package:flutter/widgets.dart';
44
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
56
import 'package:widgetbook/widgetbook.dart';
67
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
78

packages/remix/demo/lib/components/callout_use_case.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import 'package:demo/helpers/knob_builder.dart';
22
import 'package:flutter/material.dart' as m;
33
import 'package:flutter/widgets.dart';
4-
54
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
66
import 'package:widgetbook/widgetbook.dart';
77
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
88

packages/remix/demo/lib/components/card_use_case.dart

+16-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:demo/helpers/knob_builder.dart';
22
import 'package:flutter/widgets.dart';
33
import 'package:mix/mix.dart';
44
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
56
import 'package:widgetbook/widgetbook.dart';
67
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
78

@@ -32,13 +33,25 @@ Widget buildCard(BuildContext context) {
3233
children: [
3334
StyledText(
3435
'Leo Farias',
35-
style: Style($text.style.ref($rx.text.text3)),
36+
style: Style(
37+
$text.chain
38+
..style.fontSize(14)
39+
..style.fontWeight.bold()
40+
..style.color.black87(),
41+
$on.dark(
42+
$text.style.color.white(),
43+
),
44+
),
3645
),
3746
StyledText(
3847
'Flutter Engineer',
3948
style: Style(
40-
$text.style.ref($rx.text.text2),
41-
$text.style.color.$neutral(10),
49+
$text.chain
50+
..style.fontSize(12)
51+
..style.color.black54(),
52+
$on.dark(
53+
$text.style.color.white70(),
54+
),
4255
),
4356
),
4457
],

packages/remix/demo/lib/components/checkbox_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:demo/helpers/knob_builder.dart';
22
import 'package:demo/helpers/use_case_state.dart';
33
import 'package:flutter/widgets.dart';
44
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
56
import 'package:widgetbook/widgetbook.dart';
67
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
78

packages/remix/demo/lib/components/chip_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'package:demo/helpers/knob_builder.dart';
33
import 'package:demo/helpers/use_case_state.dart';
44
import 'package:flutter/widgets.dart';
55
import 'package:remix/remix.dart';
6+
import 'package:remix/themes/fortaleza.dart';
67
import 'package:widgetbook/widgetbook.dart';
78
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
89

packages/remix/demo/lib/components/icon_button_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart' as m;
33
import 'package:flutter/widgets.dart';
44
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
56
import 'package:widgetbook/widgetbook.dart';
67
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
78

packages/remix/demo/lib/components/progress_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:demo/helpers/knob_builder.dart';
22
import 'package:flutter/widgets.dart';
33
import 'package:remix/remix.dart';
4+
import 'package:remix/themes/fortaleza.dart';
45
import 'package:widgetbook/widgetbook.dart';
56
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
67

packages/remix/demo/lib/components/radio_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:demo/helpers/knob_builder.dart';
22
import 'package:demo/helpers/string.dart';
33
import 'package:flutter/widgets.dart';
44
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
56
import 'package:widgetbook/widgetbook.dart';
67
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
78

packages/remix/demo/lib/components/select_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:demo/helpers/knob_builder.dart';
22
import 'package:flutter/material.dart' as m;
33
import 'package:flutter/widgets.dart';
44
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
56
import 'package:widgetbook/widgetbook.dart';
67
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
78

packages/remix/demo/lib/components/spinner_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:demo/helpers/knob_builder.dart';
22
import 'package:flutter/widgets.dart';
33
import 'package:remix/remix.dart';
4+
import 'package:remix/themes/fortaleza.dart';
45
import 'package:widgetbook/widgetbook.dart';
56
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
67

packages/remix/demo/lib/components/switch_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:demo/helpers/knob_builder.dart';
22
import 'package:demo/helpers/use_case_state.dart';
33
import 'package:flutter/widgets.dart';
44
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
56
import 'package:widgetbook/widgetbook.dart';
67
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
78

packages/remix/demo/lib/components/textfield_use_case.dart

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:demo/addons/icon_data_knob.dart';
22
import 'package:flutter/material.dart' as m;
33
import 'package:flutter/widgets.dart';
44
import 'package:remix/remix.dart';
5+
import 'package:remix/themes/fortaleza.dart';
56
import 'package:widgetbook/widgetbook.dart';
67
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
78

packages/remix/demo/lib/helpers/theme_addon.dart

-32
This file was deleted.

0 commit comments

Comments
 (0)