@fastwork/xosmoz-theme 0.54.0 → 0.56.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.
package/README.md CHANGED
@@ -61,17 +61,19 @@ Surface and layout colors that adapt between light and dark themes.
61
61
 
62
62
  | Variable | Purpose |
63
63
  |----------|---------|
64
+ | `--xz-color-surface-50` | Base white surface |
64
65
  | `--xz-color-surface-100` | Primary page background |
65
66
  | `--xz-color-surface-200` | Elevated surface (cards, modals) |
66
67
  | `--xz-color-surface-300` | Table headers, sidebars |
67
68
  | `--xz-color-surface-400` | Popovers, tooltips |
68
69
  | `--xz-color-text-100` | Primary text |
69
70
  | `--xz-color-text-200` | Secondary/muted text (70% opacity) |
70
- | `--xz-color-text-300` | Tertiary/disabled text (50% opacity) |
71
+ | `--xz-color-text-300` | Tertiary/disabled text (60% opacity) |
71
72
  | `--xz-color-bg-100` | Extreme base background (near-black in light, near-white in dark) |
73
+ | `--xz-color-bg-200` | Darker base background |
72
74
  | `--xz-color-fg-100` | Text on `bg-100` (white in light, black in dark) |
73
- | `--xz-color-soft-100` | Very subtle overlay (5% opacity of bg) |
74
- | `--xz-color-soft-200` | Subtle overlay (10% opacity of bg) |
75
+ | `--xz-color-soft-100` | Very subtle overlay (4% opacity of bg) |
76
+ | `--xz-color-soft-200` | Subtle overlay (7% opacity of bg) |
75
77
  | `--xz-color-line-50` | Subtle borders |
76
78
  | `--xz-color-line-100` | Default borders |
77
79
  | `--xz-color-line-200` | Strong/emphasized borders |
@@ -87,6 +89,8 @@ Each category follows the same token structure — replace `{name}` with the cat
87
89
  |----------|---------|
88
90
  | `--xz-color-{name}-soft-100` | Lightest tinted background (badges, highlights) |
89
91
  | `--xz-color-{name}-soft-200` | Stronger tinted background (hover states) |
92
+ | `--xz-color-{name}-soft-solid-100` | Light color-mixed background (solid, no transparency) |
93
+ | `--xz-color-{name}-soft-solid-200` | Stronger color-mixed background (solid, no transparency) |
90
94
  | `--xz-color-{name}-line-100` | Subtle colored border |
91
95
  | `--xz-color-{name}-line-200` | Default colored border (input focus) |
92
96
  | `--xz-color-{name}-line-300` | Strong colored border (active states) |
@@ -94,8 +98,7 @@ Each category follows the same token structure — replace `{name}` with the cat
94
98
  | `--xz-color-{name}-bg-200` | Darker solid fill (hover state) |
95
99
  | `--xz-color-{name}-fg-100` | Text on solid backgrounds — pair with `bg-100`/`bg-200` (typically white) |
96
100
  | `--xz-color-{name}-text-100` | Colored text on surfaces (links, labels) |
97
-
98
- > **`neutral` exception:** also includes `--xz-color-neutral-text-200` — Muted neutral text, lighter than `text-100`.
101
+ | `--xz-color-{name}-text-200` | Darker colored text on surfaces |
99
102
 
100
103
  **Usage example:**
101
104
 
@@ -117,6 +120,16 @@ Each category follows the same token structure — replace `{name}` with the cat
117
120
  }
118
121
  ```
119
122
 
123
+ ### Alpha Overlays
124
+
125
+ Three alpha overlay scales with steps from 100 (10% opacity) to 1000 (100% opacity):
126
+
127
+ ```css
128
+ --xz-color-black-alpha-{100-1000} /* black with increasing opacity */
129
+ --xz-color-white-alpha-{100-1000} /* white with increasing opacity */
130
+ --xz-color-overlay-{100-1000} /* overlay (black-based) with increasing opacity */
131
+ ```
132
+
120
133
  ### Raw Color Palettes
121
134
 
122
135
  Single base color per palette. Available palettes: `fastwork`, `gray`, `green`, `yellow`, `red`, `orange`, `purple`, `cyan`.
@@ -154,8 +167,8 @@ Each palette color is defined using OKLCH
154
167
  **Font families:**
155
168
 
156
169
  ```css
157
- --xz-font-family-primary /* system-ui sans-serif stack */
158
- --xz-font-family-secondary /* "Fastwork" + "Noto Sans Thai" + system fallbacks */
170
+ --xz-font-family-primary /* "Google Sans" + system sans-serif stack */
171
+ --xz-font-family-secondary /* "Google Sans" + "Fastwork" + "Noto Sans Thai" + system fallbacks */
159
172
  ```
160
173
 
161
174
  **Line heights:**
@@ -169,10 +182,10 @@ Each palette color is defined using OKLCH
169
182
  --xz-line-height-200pct /* 2 */
170
183
  ```
171
184
 
172
- **Font shorthand tokens** — responsive, with desktop sizes scaling down on mobile (≤768px):
185
+ **Font shorthand tokens** — headings are responsive (scale down on mobile ≤768px), other tokens use fixed sizes:
173
186
 
174
187
  ```css
175
- /* Headings — secondary font, bold */
188
+ /* Headings — secondary font, bold, responsive */
176
189
  --xz-font-heading1 /* 72px desktop / 48px mobile */
177
190
  --xz-font-heading2 /* 64px desktop / 43px mobile */
178
191
  --xz-font-heading3 /* 56px desktop / 38px mobile */
@@ -181,24 +194,24 @@ Each palette color is defined using OKLCH
181
194
  --xz-font-heading6 /* 32px desktop / 24px mobile */
182
195
 
183
196
  /* Titles — primary font, bold */
184
- --xz-font-title1 /* 24px desktop / 20px mobile */
185
- --xz-font-title2 /* 20px desktop / 18px mobile */
186
- --xz-font-title3 /* 18px desktop / 16px mobile */
187
- --xz-font-title4 /* 16px desktop / 14px mobile */
197
+ --xz-font-title1 /* 24px */
198
+ --xz-font-title2 /* 20px */
199
+ --xz-font-title3 /* 18px */
200
+ --xz-font-title4 /* 16px */
188
201
 
189
202
  /* Subtitles — primary font, bold or regular */
190
203
  --xz-font-subtitle1-bold
191
- --xz-font-subtitle1-regular /* 16px desktop / 14px mobile */
204
+ --xz-font-subtitle1-regular /* 16px */
192
205
  --xz-font-subtitle2-bold
193
- --xz-font-subtitle2-regular /* 14px desktop / 12px mobile */
206
+ --xz-font-subtitle2-regular /* 14px */
194
207
  --xz-font-subtitle3-bold
195
- --xz-font-subtitle3-regular /* 12px desktop / 10px mobile */
208
+ --xz-font-subtitle3-regular /* 12px */
196
209
 
197
210
  /* Body — primary font, regular */
198
- --xz-font-body1 /* 16px desktop / 14px mobile */
199
- --xz-font-body2 /* 14px desktop / 12px mobile */
200
- --xz-font-body3 /* 12px desktop / 10px mobile */
201
- --xz-font-body4 /* 10px desktop / 8px mobile */
211
+ --xz-font-body1 /* 16px */
212
+ --xz-font-body2 /* 14px */
213
+ --xz-font-body3 /* 12px */
214
+ --xz-font-body4 /* 10px */
202
215
  ```
203
216
 
204
217
  Usage: `font: var(--xz-font-heading1);`
@@ -224,7 +237,7 @@ lightTheme.palette.fastwork.value // 'oklch(0.57 0.237 260.608)'
224
237
 
225
238
  // Access semantic colors
226
239
  lightTheme.colors.primary.bg[100] // solid fill color
227
- lightTheme.colors.primary.fg[100] // 'oklch(1 0 0 / 0.95)' — white for text on solid bg
240
+ lightTheme.colors.primary.fg[100] // 'oklch(1 0 0 / 1)' — white for text on solid bg
228
241
  lightTheme.colors.primary.text[100] // colored text
229
242
  lightTheme.colors.orange.bg[100] // orange solid fill
230
243
  lightTheme.colors.purple.soft[100] // purple tinted background
@@ -251,8 +264,8 @@ import { fontSize, fontWeight, fontFamily, lineHeight, font, typography } from '
251
264
  fontSize[400] // '1rem'
252
265
  fontSize[700] // '1.5rem'
253
266
  fontWeight[700] // 700
254
- fontFamily.primary // system sans-serif stack
255
- fontFamily.secondary // "Fastwork" + fallbacks
267
+ fontFamily.primary // "Google Sans" + system sans-serif stack
268
+ fontFamily.secondary // "Google Sans" + "Fastwork" + "Noto Sans Thai" + fallbacks
256
269
  lineHeight['150pct'] // '1.5'
257
270
 
258
271
  // Semantic font tokens
@@ -393,6 +406,7 @@ Then activate it:
393
406
  | `@fastwork/xosmoz-theme/themes.css` | All themes (light + dark) |
394
407
  | `@fastwork/xosmoz-theme/themes/light.css` | Light theme colors only |
395
408
  | `@fastwork/xosmoz-theme/themes/dark.css` | Dark theme colors only |
409
+ | `@fastwork/xosmoz-theme/llms.txt` | LLM context file for AI tooling |
396
410
 
397
411
  ## Development
398
412
 
@@ -179,6 +179,19 @@ class XzColors {
179
179
  300: Color(0xF7BABEC4),
180
180
  }),
181
181
  primary: XzRoleColor(
182
+ soft: {
183
+ 100: Color(0x140057D8),
184
+ 200: Color(0x1F0057D8),
185
+ },
186
+ softSolid: {
187
+ 100: Color(0xFFE1E9F7),
188
+ 200: Color(0xFFD3E0F6),
189
+ },
190
+ line: {
191
+ 100: Color(0xFFBED2F4),
192
+ 200: Color(0xFF84ACED),
193
+ 300: Color(0xFF6294E8),
194
+ },
182
195
  bg: {
183
196
  100: Color(0xFF0669FF),
184
197
  200: Color(0xFF005CE4),
@@ -192,6 +205,19 @@ class XzColors {
192
205
  },
193
206
  ),
194
207
  danger: XzRoleColor(
208
+ soft: {
209
+ 100: Color(0x14BC0002),
210
+ 200: Color(0x1FBC0002),
211
+ },
212
+ softSolid: {
213
+ 100: Color(0xFFF6E4E1),
214
+ 200: Color(0xFFF4D7D3),
215
+ },
216
+ line: {
217
+ 100: Color(0xFFF1C5BE),
218
+ 200: Color(0xFFE49285),
219
+ 300: Color(0xFFDA7264),
220
+ },
195
221
  bg: {
196
222
  100: Color(0xFFE32A20),
197
223
  200: Color(0xFFD10606),
@@ -205,6 +231,19 @@ class XzColors {
205
231
  },
206
232
  ),
207
233
  success: XzRoleColor(
234
+ soft: {
235
+ 100: Color(0x14007915),
236
+ 200: Color(0x1F007915),
237
+ },
238
+ softSolid: {
239
+ 100: Color(0xFFE2ECE2),
240
+ 200: Color(0xFFD5E4D4),
241
+ },
242
+ line: {
243
+ 100: Color(0xFFC2D8C1),
244
+ 200: Color(0xFF8CB98A),
245
+ 300: Color(0xFF6BA66A),
246
+ },
208
247
  bg: {
209
248
  100: Color(0xFF15C02D),
210
249
  200: Color(0xFF00AE23),
@@ -218,6 +257,19 @@ class XzColors {
218
257
  },
219
258
  ),
220
259
  warning: XzRoleColor(
260
+ soft: {
261
+ 100: Color(0x14835B00),
262
+ 200: Color(0x1F835B00),
263
+ },
264
+ softSolid: {
265
+ 100: Color(0xFFECE8E1),
266
+ 200: Color(0xFFE5DED3),
267
+ },
268
+ line: {
269
+ 100: Color(0xFFDACFBF),
270
+ 200: Color(0xFFBDA886),
271
+ 300: Color(0xFFAB9065),
272
+ },
221
273
  bg: {
222
274
  100: Color(0xFFFFB508),
223
275
  200: Color(0xFFEBA600),
@@ -231,6 +283,19 @@ class XzColors {
231
283
  },
232
284
  ),
233
285
  info: XzRoleColor(
286
+ soft: {
287
+ 100: Color(0x14007081),
288
+ 200: Color(0x1F007081),
289
+ },
290
+ softSolid: {
291
+ 100: Color(0xFFE2EAEC),
292
+ 200: Color(0xFFD5E2E5),
293
+ },
294
+ line: {
295
+ 100: Color(0xFFC2D5DA),
296
+ 200: Color(0xFF8CB3BB),
297
+ 300: Color(0xFF6B9EAA),
298
+ },
234
299
  bg: {
235
300
  100: Color(0xFF00CAE7),
236
301
  200: Color(0xFF00B9D3),
@@ -244,6 +309,19 @@ class XzColors {
244
309
  },
245
310
  ),
246
311
  neutral: XzRoleColor(
312
+ soft: {
313
+ 100: Color(0x14596476),
314
+ 200: Color(0x1F596476),
315
+ },
316
+ softSolid: {
317
+ 100: Color(0xFFE7E8EB),
318
+ 200: Color(0xFFDDDFE2),
319
+ },
320
+ line: {
321
+ 100: Color(0xFFCED1D6),
322
+ 200: Color(0xFFA5ABB5),
323
+ 300: Color(0xFF8D95A2),
324
+ },
247
325
  bg: {
248
326
  100: Color(0xFF798598),
249
327
  200: Color(0xFF6A7689),
@@ -290,6 +368,19 @@ class XzColors {
290
368
  300: Color(0xF2757A87),
291
369
  }),
292
370
  primary: XzRoleColor(
371
+ soft: {
372
+ 100: Color(0x147EAEFF),
373
+ 200: Color(0x1F7EAEFF),
374
+ },
375
+ softSolid: {
376
+ 100: Color(0xFF32394A),
377
+ 200: Color(0xFF364054),
378
+ },
379
+ line: {
380
+ 100: Color(0xFF3E4B65),
381
+ 200: Color(0xFF526A95),
382
+ 300: Color(0xFF5F7EB4),
383
+ },
293
384
  bg: {
294
385
  100: Color(0xFF0669FF),
295
386
  200: Color(0xFF347EFF),
@@ -297,8 +388,25 @@ class XzColors {
297
388
  fg: {
298
389
  100: Color(0xFFFFFFFF),
299
390
  },
391
+ text: {
392
+ 100: Color(0xFF7EAEFF),
393
+ 200: Color(0xFFB2CFFF),
394
+ },
300
395
  ),
301
396
  danger: XzRoleColor(
397
+ soft: {
398
+ 100: Color(0x14FF8575),
399
+ 200: Color(0x1FFF8575),
400
+ },
401
+ softSolid: {
402
+ 100: Color(0xFF3D363F),
403
+ 200: Color(0xFF493C43),
404
+ },
405
+ line: {
406
+ 100: Color(0xFF5B4448),
407
+ 200: Color(0xFF8F5A58),
408
+ 300: Color(0xFFB06761),
409
+ },
302
410
  bg: {
303
411
  100: Color(0xFFE32A20),
304
412
  200: Color(0xFFF64032),
@@ -306,8 +414,25 @@ class XzColors {
306
414
  fg: {
307
415
  100: Color(0xFFFFFFFF),
308
416
  },
417
+ text: {
418
+ 100: Color(0xFFFF8575),
419
+ 200: Color(0xFFFFBAAF),
420
+ },
309
421
  ),
310
422
  success: XzRoleColor(
423
+ soft: {
424
+ 100: Color(0x144BCD51),
425
+ 200: Color(0x1F4BCD51),
426
+ },
427
+ softSolid: {
428
+ 100: Color(0xFF2F3C3D),
429
+ 200: Color(0xFF324540),
430
+ },
431
+ line: {
432
+ 100: Color(0xFF365343),
433
+ 200: Color(0xFF3F794B),
434
+ 300: Color(0xFF44924F),
435
+ },
311
436
  bg: {
312
437
  100: Color(0xFF15C02D),
313
438
  200: Color(0xFF35D141),
@@ -315,8 +440,25 @@ class XzColors {
315
440
  fg: {
316
441
  100: Color(0xF2000000),
317
442
  },
443
+ text: {
444
+ 100: Color(0xFF4BCD51),
445
+ 200: Color(0xFF6FEE72),
446
+ },
318
447
  ),
319
448
  warning: XzRoleColor(
449
+ soft: {
450
+ 100: Color(0x14E2A000),
451
+ 200: Color(0x1FE2A000),
452
+ },
453
+ softSolid: {
454
+ 100: Color(0xFF3A393B),
455
+ 200: Color(0xFF443F3C),
456
+ },
457
+ line: {
458
+ 100: Color(0xFF53493D),
459
+ 200: Color(0xFF80653B),
460
+ 300: Color(0xFF9D7736),
461
+ },
320
462
  bg: {
321
463
  100: Color(0xFFFFB508),
322
464
  200: Color(0xFFFFCC76),
@@ -324,8 +466,25 @@ class XzColors {
324
466
  fg: {
325
467
  100: Color(0xF2000000),
326
468
  },
469
+ text: {
470
+ 100: Color(0xFFE2A000),
471
+ 200: Color(0xFFFFC257),
472
+ },
327
473
  ),
328
474
  info: XzRoleColor(
475
+ soft: {
476
+ 100: Color(0x1400C3DF),
477
+ 200: Color(0x1F00C3DF),
478
+ },
479
+ softSolid: {
480
+ 100: Color(0xFF2D3B47),
481
+ 200: Color(0xFF2F4350),
482
+ },
483
+ line: {
484
+ 100: Color(0xFF32505E),
485
+ 200: Color(0xFF337487),
486
+ 300: Color(0xFF308BA0),
487
+ },
329
488
  bg: {
330
489
  100: Color(0xFF00CAE7),
331
490
  200: Color(0xFF31DBF8),
@@ -333,8 +492,25 @@ class XzColors {
333
492
  fg: {
334
493
  100: Color(0xF2000000),
335
494
  },
495
+ text: {
496
+ 100: Color(0xFF00C3DF),
497
+ 200: Color(0xFF50E3FF),
498
+ },
336
499
  ),
337
500
  neutral: XzRoleColor(
501
+ soft: {
502
+ 100: Color(0x14A2AFC3),
503
+ 200: Color(0x1FA2AFC3),
504
+ },
505
+ softSolid: {
506
+ 100: Color(0xFF343945),
507
+ 200: Color(0xFF3B404C),
508
+ },
509
+ line: {
510
+ 100: Color(0xFF454B58),
511
+ 200: Color(0xFF626B7A),
512
+ 300: Color(0xFF757F8F),
513
+ },
338
514
  bg: {
339
515
  100: Color(0xFF798598),
340
516
  200: Color(0xFF8894A7),
@@ -342,6 +518,10 @@ class XzColors {
342
518
  fg: {
343
519
  100: Color(0xFFFFFFFF),
344
520
  },
521
+ text: {
522
+ 100: Color(0xFFA2AFC3),
523
+ 200: Color(0xFFC2CFE3),
524
+ },
345
525
  ),
346
526
  );
347
527
 
Binary file