@fastwork/xosmoz-theme 0.34.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,580 @@
1
+ // Auto-generated from @fastwork/xosmoz-theme DTCG tokens
2
+ // Do not edit directly
3
+ // ignore_for_file: constant_identifier_names
4
+
5
+ import 'package:flutter/widgets.dart';
6
+
7
+ /// A color swatch with named shade getters (shade100–shade1000).
8
+ class XzColorSwatch {
9
+ const XzColorSwatch(this._shades);
10
+ final Map<int, Color> _shades;
11
+
12
+ Color operator [](int step) => _shades[step]!;
13
+
14
+ Color get shade100 => _shades[100]!;
15
+ Color get shade200 => _shades[200]!;
16
+ Color get shade300 => _shades[300]!;
17
+ Color get shade400 => _shades[400]!;
18
+ Color get shade500 => _shades[500]!;
19
+ Color get shade600 => _shades[600]!;
20
+ Color get shade700 => _shades[700]!;
21
+ Color get shade800 => _shades[800]!;
22
+ Color get shade900 => _shades[900]!;
23
+ Color get shade1000 => _shades[1000]!;
24
+ }
25
+
26
+ /// A semantic base color scale with variable step counts.
27
+ class XzBaseScale {
28
+ const XzBaseScale(this._shades);
29
+ final Map<int, Color> _shades;
30
+
31
+ Color operator [](int step) => _shades[step]!;
32
+
33
+ Color get shade50 => _shades[50]!;
34
+ Color get shade100 => _shades[100]!;
35
+ Color get shade200 => _shades[200]!;
36
+ Color get shade300 => _shades[300]!;
37
+ Color get shade400 => _shades[400]!;
38
+ }
39
+
40
+ /// Semantic role color with soft, line, bg, fg, text sub-groups.
41
+ class XzRoleColor {
42
+ const XzRoleColor({
43
+ this.soft = const {},
44
+ this.line = const {},
45
+ this.bg = const {},
46
+ this.fg = const {},
47
+ this.text = const {},
48
+ });
49
+
50
+ final Map<int, Color> soft;
51
+ final Map<int, Color> line;
52
+ final Map<int, Color> bg;
53
+ final Map<int, Color> fg;
54
+ final Map<int, Color> text;
55
+
56
+ Color get soft100 => soft[100]!;
57
+ Color get soft200 => soft[200]!;
58
+ Color get line100 => line[100]!;
59
+ Color get line200 => line[200]!;
60
+ Color get line300 => line[300]!;
61
+ Color get bg100 => bg[100]!;
62
+ Color get bg200 => bg[200]!;
63
+ Color get fg100 => fg[100]!;
64
+ Color get text100 => text[100]!;
65
+ }
66
+
67
+ /// Palette colors — theme-independent. Access directly: XzPalette.fastwork.shade600
68
+ abstract class XzPalette {
69
+ static const fastwork = XzColorSwatch({
70
+ 100: Color(0xFFE6F0FF),
71
+ 200: Color(0xFFBDD6FF),
72
+ 300: Color(0xFF94BCFF),
73
+ 400: Color(0xFF6BA1FF),
74
+ 500: Color(0xFF508FFF),
75
+ 600: Color(0xFF2F7CFF),
76
+ 700: Color(0xFF0B53C5),
77
+ 800: Color(0xFF053F9A),
78
+ 900: Color(0xFF042D72),
79
+ 1000: Color(0xFF021B4A),
80
+ });
81
+
82
+ static const gray = XzColorSwatch({
83
+ 100: Color(0xFFEFEFEF),
84
+ 200: Color(0xFFD3D5D6),
85
+ 300: Color(0xFFB9BBBF),
86
+ 400: Color(0xFF9FA3A9),
87
+ 500: Color(0xFF8A94A3),
88
+ 600: Color(0xFF798598),
89
+ 700: Color(0xFF4F5D72),
90
+ 800: Color(0xFF3E4856),
91
+ 900: Color(0xFF2B333E),
92
+ 1000: Color(0xFF191F28),
93
+ });
94
+
95
+ static const green = XzColorSwatch({
96
+ 100: Color(0xFFE5F4E5),
97
+ 200: Color(0xFFB9E1B9),
98
+ 300: Color(0xFF84D08D),
99
+ 400: Color(0xFF47BF55),
100
+ 500: Color(0xFF00B231),
101
+ 600: Color(0xFF00A01F),
102
+ 700: Color(0xFF007113),
103
+ 800: Color(0xFF00570C),
104
+ 900: Color(0xFF003F06),
105
+ 1000: Color(0xFF002703),
106
+ });
107
+
108
+ static const mint = XzColorSwatch({
109
+ 100: Color(0xFFE0F5EB),
110
+ 200: Color(0xFFAAE4C9),
111
+ 300: Color(0xFF65D4A8),
112
+ 400: Color(0xFF00BF8B),
113
+ 500: Color(0xFF00AE7E),
114
+ 600: Color(0xFF009C6D),
115
+ 700: Color(0xFF006F43),
116
+ 800: Color(0xFF005630),
117
+ 900: Color(0xFF003E21),
118
+ 1000: Color(0xFF002614),
119
+ });
120
+
121
+ static const amber = XzColorSwatch({
122
+ 100: Color(0xFFF5EEDC),
123
+ 200: Color(0xFFE7D3A1),
124
+ 300: Color(0xFFDBB758),
125
+ 400: Color(0xFFCA9B00),
126
+ 500: Color(0xFFBA8B00),
127
+ 600: Color(0xFFAD7900),
128
+ 700: Color(0xFF844E00),
129
+ 800: Color(0xFF673B00),
130
+ 900: Color(0xFF4A2A00),
131
+ 1000: Color(0xFF2D1A00),
132
+ });
133
+
134
+ static const red = XzColorSwatch({
135
+ 100: Color(0xFFFFE9E5),
136
+ 200: Color(0xFFFFC4BA),
137
+ 300: Color(0xFFFF9D8C),
138
+ 400: Color(0xFFFF6E5A),
139
+ 500: Color(0xFFFF4733),
140
+ 600: Color(0xFFF02816),
141
+ 700: Color(0xFFAE0D00),
142
+ 800: Color(0xFF880700),
143
+ 900: Color(0xFF640400),
144
+ 1000: Color(0xFF410200),
145
+ });
146
+
147
+ static const orange = XzColorSwatch({
148
+ 100: Color(0xFFFFEDDA),
149
+ 200: Color(0xFFFFE0BE),
150
+ 300: Color(0xFFFFD4A8),
151
+ 400: Color(0xFFFFC287),
152
+ 500: Color(0xFFFFAC62),
153
+ 600: Color(0xFFFB8520),
154
+ 700: Color(0xFFE76E00),
155
+ 800: Color(0xFFD95F00),
156
+ 900: Color(0xFFA24600),
157
+ 1000: Color(0xFF683000),
158
+ });
159
+
160
+ static const purple = XzColorSwatch({
161
+ 100: Color(0xFFF1EBFE),
162
+ 200: Color(0xFFDBCBFC),
163
+ 300: Color(0xFFC6A9FE),
164
+ 400: Color(0xFFAF88FF),
165
+ 500: Color(0xFFA171FF),
166
+ 600: Color(0xFF9059FF),
167
+ 700: Color(0xFF673ABA),
168
+ 800: Color(0xFF502A91),
169
+ 900: Color(0xFF3A1D6B),
170
+ 1000: Color(0xFF231045),
171
+ });
172
+
173
+ static const cyan = XzColorSwatch({
174
+ 100: Color(0xFFDEF3FC),
175
+ 200: Color(0xFF9FE2EE),
176
+ 300: Color(0xFF42D0E6),
177
+ 400: Color(0xFF00B7CD),
178
+ 500: Color(0xFF00A6BA),
179
+ 600: Color(0xFF0094AA),
180
+ 700: Color(0xFF00677E),
181
+ 800: Color(0xFF004F63),
182
+ 900: Color(0xFF003948),
183
+ 1000: Color(0xFF00232C),
184
+ });
185
+
186
+ }
187
+
188
+ /// Xosmoz color tokens synced from web theme.
189
+ ///
190
+ /// Palette (static): XzColors.fastwork.shade600
191
+ /// Theme-aware: XzColors.of(context).primary.bg100
192
+ class XzColors {
193
+ const XzColors._({
194
+ required this.bg,
195
+ required this.surface,
196
+ required this.fg,
197
+ required this.soft,
198
+ required this.text,
199
+ required this.line,
200
+ required this.primary,
201
+ required this.danger,
202
+ required this.success,
203
+ required this.warning,
204
+ required this.info,
205
+ required this.neutral,
206
+ });
207
+
208
+ // ── Palette (static, theme-independent) ──
209
+ static const fastwork = XzPalette.fastwork;
210
+ static const gray = XzPalette.gray;
211
+ static const green = XzPalette.green;
212
+ static const mint = XzPalette.mint;
213
+ static const amber = XzPalette.amber;
214
+ static const red = XzPalette.red;
215
+ static const orange = XzPalette.orange;
216
+ static const purple = XzPalette.purple;
217
+ static const cyan = XzPalette.cyan;
218
+
219
+ // ── Semantic base (theme-dependent) ──
220
+ final XzBaseScale bg;
221
+ final XzBaseScale surface;
222
+ final XzBaseScale fg;
223
+ final XzBaseScale soft;
224
+ final XzBaseScale text;
225
+ final XzBaseScale line;
226
+
227
+ // ── Semantic role (theme-dependent) ──
228
+ final XzRoleColor primary;
229
+ final XzRoleColor danger;
230
+ final XzRoleColor success;
231
+ final XzRoleColor warning;
232
+ final XzRoleColor info;
233
+ final XzRoleColor neutral;
234
+
235
+ // ── Light theme ──
236
+ static const light = XzColors._(
237
+ bg: XzBaseScale({
238
+ 100: Color(0xFF0D1014),
239
+ 200: Color(0xFF373B40),
240
+ }),
241
+ surface: XzBaseScale({
242
+ 50: Color(0xFFFFFFFF),
243
+ 100: Color(0xFFF6F9FC),
244
+ 200: Color(0xFFEEF2F9),
245
+ 300: Color(0xFFEBEFF5),
246
+ 400: Color(0xFFE1E5EB),
247
+ }),
248
+ fg: XzBaseScale({
249
+ 100: Color(0xFFFFFFFF),
250
+ }),
251
+ soft: XzBaseScale({
252
+ 100: Color(0x060D1014),
253
+ 200: Color(0x0D0D1014),
254
+ }),
255
+ text: XzBaseScale({
256
+ 100: Color(0xFF18181B),
257
+ 200: Color(0xB318181B),
258
+ 300: Color(0x8018181B),
259
+ }),
260
+ line: XzBaseScale({
261
+ 100: Color(0xF2E9EDF4),
262
+ 200: Color(0xF2DADEE5),
263
+ 300: Color(0xF2CACED4),
264
+ }),
265
+ primary: XzRoleColor(
266
+ soft: {
267
+ 100: Color(0x1A2F7CFF),
268
+ 200: Color(0x292F7CFF),
269
+ },
270
+ line: {
271
+ 100: Color(0xFFC6DBFF),
272
+ 200: Color(0xFF97BEFF),
273
+ 300: Color(0xFF7AABFF),
274
+ },
275
+ bg: {
276
+ 100: Color(0xFF2F7CFF),
277
+ 200: Color(0xFF176FFF),
278
+ },
279
+ fg: {
280
+ 100: Color(0xF2FFFFFF),
281
+ },
282
+ text: {
283
+ 100: Color(0xFF2F7CFF),
284
+ },
285
+ ),
286
+ danger: XzRoleColor(
287
+ soft: {
288
+ 100: Color(0x1AF02816),
289
+ 200: Color(0x29F02816),
290
+ },
291
+ line: {
292
+ 100: Color(0xFFFDCDC6),
293
+ 200: Color(0xFFFEA092),
294
+ 300: Color(0xFFFC8372),
295
+ },
296
+ bg: {
297
+ 100: Color(0xFFF02816),
298
+ 200: Color(0xFFE51401),
299
+ },
300
+ fg: {
301
+ 100: Color(0xF2FFFFFF),
302
+ },
303
+ text: {
304
+ 100: Color(0xFFF02816),
305
+ },
306
+ ),
307
+ success: XzRoleColor(
308
+ soft: {
309
+ 100: Color(0x1A00A01F),
310
+ 200: Color(0x2900A01F),
311
+ },
312
+ line: {
313
+ 100: Color(0xFFC2E5C5),
314
+ 200: Color(0xFF8CD08E),
315
+ 300: Color(0xFF69C46C),
316
+ },
317
+ bg: {
318
+ 100: Color(0xFF00A01F),
319
+ 200: Color(0xFF00961C),
320
+ },
321
+ fg: {
322
+ 100: Color(0xF2FFFFFF),
323
+ },
324
+ text: {
325
+ 100: Color(0xFF00A01F),
326
+ },
327
+ ),
328
+ warning: XzRoleColor(
329
+ soft: {
330
+ 100: Color(0x1AAD7900),
331
+ 200: Color(0x29AD7900),
332
+ },
333
+ line: {
334
+ 100: Color(0xFFEED7B2),
335
+ 200: Color(0xFFE4B463),
336
+ 300: Color(0xFFDD9E16),
337
+ },
338
+ bg: {
339
+ 100: Color(0xFFAD7900),
340
+ 200: Color(0xFFA17100),
341
+ },
342
+ fg: {
343
+ 100: Color(0xF2FFFFFF),
344
+ },
345
+ text: {
346
+ 100: Color(0xFFAD7900),
347
+ },
348
+ ),
349
+ info: XzRoleColor(
350
+ soft: {
351
+ 100: Color(0x1A0094AA),
352
+ 200: Color(0x290094AA),
353
+ },
354
+ line: {
355
+ 100: Color(0xFFADE5F4),
356
+ 200: Color(0xFF4CD0EA),
357
+ 300: Color(0xFF00C0DC),
358
+ },
359
+ bg: {
360
+ 100: Color(0xFF0094AA),
361
+ 200: Color(0xFF008A9F),
362
+ },
363
+ fg: {
364
+ 100: Color(0xF2FFFFFF),
365
+ },
366
+ text: {
367
+ 100: Color(0xFF0094AA),
368
+ },
369
+ ),
370
+ neutral: XzRoleColor(
371
+ soft: {
372
+ 100: Color(0x1A798598),
373
+ 200: Color(0x29798598),
374
+ },
375
+ line: {
376
+ 100: Color(0xFFD6DAE2),
377
+ 200: Color(0xFFB6BDC9),
378
+ 300: Color(0xFFA3ACBA),
379
+ },
380
+ bg: {
381
+ 100: Color(0xFF798598),
382
+ 200: Color(0xFF707C8F),
383
+ },
384
+ fg: {
385
+ 100: Color(0xFFFFFFFF),
386
+ },
387
+ text: {
388
+ 100: Color(0xFF798598),
389
+ },
390
+ ),
391
+ );
392
+
393
+ // ── Dark theme ──
394
+ static const dark = XzColors._(
395
+ bg: XzBaseScale({
396
+ 100: Color(0xFFEEF2F9),
397
+ 200: Color(0xFFE1E5EB),
398
+ }),
399
+ surface: XzBaseScale({
400
+ 50: Color(0xFF20242E),
401
+ 100: Color(0xFF2A2E38),
402
+ 200: Color(0xFF313540),
403
+ 300: Color(0xFF373C47),
404
+ 400: Color(0xFF3B3F4B),
405
+ }),
406
+ fg: XzBaseScale({
407
+ 100: Color(0xFF000000),
408
+ }),
409
+ soft: XzBaseScale({
410
+ 100: Color(0x06EEF2F9),
411
+ 200: Color(0x0DEEF2F9),
412
+ }),
413
+ text: XzBaseScale({
414
+ 100: Color(0xFFEEF2F9),
415
+ 200: Color(0x99EEF2F9),
416
+ 300: Color(0x80EEF2F9),
417
+ }),
418
+ line: XzBaseScale({
419
+ 100: Color(0xF23E424D),
420
+ 200: Color(0xF2484D58),
421
+ 300: Color(0xF25E636F),
422
+ }),
423
+ primary: XzRoleColor(
424
+ soft: {
425
+ 100: Color(0x1A2F7CFF),
426
+ 200: Color(0x292F7CFF),
427
+ },
428
+ line: {
429
+ 100: Color(0xFF2C4169),
430
+ 200: Color(0xFF2C549C),
431
+ 300: Color(0xFF2B5FBD),
432
+ },
433
+ bg: {
434
+ 100: Color(0xFF2F7CFF),
435
+ 200: Color(0xFF4F8FFF),
436
+ },
437
+ fg: {
438
+ 100: Color(0xF2FFFFFF),
439
+ },
440
+ text: {
441
+ 100: Color(0xFF85B2FF),
442
+ },
443
+ ),
444
+ danger: XzRoleColor(
445
+ soft: {
446
+ 100: Color(0x1AF02816),
447
+ 200: Color(0x29F02816),
448
+ },
449
+ line: {
450
+ 100: Color(0xFF5A3638),
451
+ 200: Color(0xFF8B3A35),
452
+ 300: Color(0xFFA83931),
453
+ },
454
+ bg: {
455
+ 100: Color(0xFFF02816),
456
+ 200: Color(0xFFFF4632),
457
+ },
458
+ fg: {
459
+ 100: Color(0xF2FFFFFF),
460
+ },
461
+ text: {
462
+ 100: Color(0xFFFF8D7B),
463
+ },
464
+ ),
465
+ success: XzRoleColor(
466
+ soft: {
467
+ 100: Color(0x1A00A01F),
468
+ 200: Color(0x2900A01F),
469
+ },
470
+ line: {
471
+ 100: Color(0xFF294A37),
472
+ 200: Color(0xFF1F6731),
473
+ 300: Color(0xFF0E7929),
474
+ },
475
+ bg: {
476
+ 100: Color(0xFF00A01F),
477
+ 200: Color(0xFF00B224),
478
+ },
479
+ fg: {
480
+ 100: Color(0xF2FFFFFF),
481
+ },
482
+ text: {
483
+ 100: Color(0xFF2CD53D),
484
+ },
485
+ ),
486
+ warning: XzRoleColor(
487
+ soft: {
488
+ 100: Color(0x1AAD7900),
489
+ 200: Color(0x29AD7900),
490
+ },
491
+ line: {
492
+ 100: Color(0xFF4F3F27),
493
+ 200: Color(0xFF744F00),
494
+ 300: Color(0xFF845B00),
495
+ },
496
+ bg: {
497
+ 100: Color(0xFFAD7900),
498
+ 200: Color(0xFFC08700),
499
+ },
500
+ fg: {
501
+ 100: Color(0xF2FFFFFF),
502
+ },
503
+ text: {
504
+ 100: Color(0xFFE7A400),
505
+ },
506
+ ),
507
+ info: XzRoleColor(
508
+ soft: {
509
+ 100: Color(0x1A0094AA),
510
+ 200: Color(0x290094AA),
511
+ },
512
+ line: {
513
+ 100: Color(0xFF07495C),
514
+ 200: Color(0xFF006274),
515
+ 300: Color(0xFF007184),
516
+ },
517
+ bg: {
518
+ 100: Color(0xFF0094AA),
519
+ 200: Color(0xFF00A5BD),
520
+ },
521
+ fg: {
522
+ 100: Color(0xF2FFFFFF),
523
+ },
524
+ text: {
525
+ 100: Color(0xFF00C7E4),
526
+ },
527
+ ),
528
+ neutral: XzRoleColor(
529
+ soft: {
530
+ 100: Color(0x1A798598),
531
+ 200: Color(0x29798598),
532
+ },
533
+ line: {
534
+ 100: Color(0xFF3C424E),
535
+ 200: Color(0xFF505766),
536
+ 300: Color(0xFF5C6575),
537
+ },
538
+ bg: {
539
+ 100: Color(0xFF798598),
540
+ 200: Color(0xFF8894A7),
541
+ },
542
+ fg: {
543
+ 100: Color(0xFFFFFFFF),
544
+ },
545
+ text: {
546
+ 100: Color(0xFFA6B3C7),
547
+ },
548
+ ),
549
+ );
550
+
551
+ /// Get the current [XzColors] from the widget tree.
552
+ /// Requires an [XzColorsTheme] ancestor.
553
+ static XzColors of(BuildContext context) {
554
+ final theme = context.dependOnInheritedWidgetOfExactType<XzColorsTheme>();
555
+ assert(theme != null, 'No XzColorsTheme found in context');
556
+ return theme!.data;
557
+ }
558
+ }
559
+
560
+ /// Provides [XzColors] to descendant widgets.
561
+ ///
562
+ /// Usage:
563
+ /// ```dart
564
+ /// XzColorsTheme(
565
+ /// data: brightness == Brightness.dark ? XzColors.dark : XzColors.light,
566
+ /// child: MyApp(),
567
+ /// )
568
+ /// ```
569
+ class XzColorsTheme extends InheritedWidget {
570
+ const XzColorsTheme({
571
+ super.key,
572
+ required this.data,
573
+ required super.child,
574
+ });
575
+
576
+ final XzColors data;
577
+
578
+ @override
579
+ bool updateShouldNotify(XzColorsTheme oldWidget) => data != oldWidget.data;
580
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fastwork/xosmoz-theme",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "description": "Xosmoz Theme - Design tokens and theming system for Xosmoz",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -22,6 +22,7 @@
22
22
  "./themes/light.css": "./dist/themes/light.css",
23
23
  "./themes/dark.css": "./dist/themes/dark.css",
24
24
  "./figma-tokens/*": "./dist/figma-tokens/*",
25
+ "./dart/*": "./dist/dart/*",
25
26
  "./llms.txt": "./llms.txt"
26
27
  },
27
28
  "files": [
@@ -29,8 +30,9 @@
29
30
  "llms.txt"
30
31
  ],
31
32
  "scripts": {
32
- "build": "yarn build:ts && yarn build:fonts && yarn build:css && yarn build:themes && yarn build:figma",
33
+ "build": "yarn build:ts && yarn build:fonts && yarn build:css && yarn build:themes && yarn build:figma && yarn build:dart",
33
34
  "build:figma": "node scripts/generate-figma-variables.mjs --dry-run",
35
+ "build:dart": "node scripts/generate-dart-tokens.mjs",
34
36
  "build:ts": "tsup",
35
37
  "build:fonts": "mkdir -p dist/fonts && cp assets/fonts/* dist/fonts/",
36
38
  "build:css": "node scripts/generate-css.mjs",