@fastwork/xosmoz-theme 0.55.0 → 0.57.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,14 +179,6 @@ 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
182
  line: {
191
183
  100: Color(0xFFBED2F4),
192
184
  200: Color(0xFF84ACED),
@@ -205,14 +197,6 @@ class XzColors {
205
197
  },
206
198
  ),
207
199
  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
200
  line: {
217
201
  100: Color(0xFFF1C5BE),
218
202
  200: Color(0xFFE49285),
@@ -231,14 +215,6 @@ class XzColors {
231
215
  },
232
216
  ),
233
217
  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
218
  line: {
243
219
  100: Color(0xFFC2D8C1),
244
220
  200: Color(0xFF8CB98A),
@@ -257,14 +233,6 @@ class XzColors {
257
233
  },
258
234
  ),
259
235
  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
236
  line: {
269
237
  100: Color(0xFFDACFBF),
270
238
  200: Color(0xFFBDA886),
@@ -283,14 +251,6 @@ class XzColors {
283
251
  },
284
252
  ),
285
253
  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
254
  line: {
295
255
  100: Color(0xFFC2D5DA),
296
256
  200: Color(0xFF8CB3BB),
@@ -310,12 +270,12 @@ class XzColors {
310
270
  ),
311
271
  neutral: XzRoleColor(
312
272
  soft: {
313
- 100: Color(0x140059D2),
314
- 200: Color(0x1F0059D2),
273
+ 100: Color(0x14596476),
274
+ 200: Color(0x1F596476),
315
275
  },
316
276
  softSolid: {
317
- 100: Color(0xFFE1E9F6),
318
- 200: Color(0xFFD3E0F5),
277
+ 100: Color(0xFFE7E8EB),
278
+ 200: Color(0xFFDDDFE2),
319
279
  },
320
280
  line: {
321
281
  100: Color(0xFFBED2F3),
@@ -368,14 +328,6 @@ class XzColors {
368
328
  300: Color(0xF2757A87),
369
329
  }),
370
330
  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
331
  line: {
380
332
  100: Color(0xFF3E4B65),
381
333
  200: Color(0xFF526A95),
@@ -394,14 +346,6 @@ class XzColors {
394
346
  },
395
347
  ),
396
348
  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
349
  line: {
406
350
  100: Color(0xFF5B4448),
407
351
  200: Color(0xFF8F5A58),
@@ -420,14 +364,6 @@ class XzColors {
420
364
  },
421
365
  ),
422
366
  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
367
  line: {
432
368
  100: Color(0xFF365343),
433
369
  200: Color(0xFF3F794B),
@@ -446,14 +382,6 @@ class XzColors {
446
382
  },
447
383
  ),
448
384
  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
385
  line: {
458
386
  100: Color(0xFF53493D),
459
387
  200: Color(0xFF80653B),
@@ -472,14 +400,6 @@ class XzColors {
472
400
  },
473
401
  ),
474
402
  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
403
  line: {
484
404
  100: Color(0xFF32505E),
485
405
  200: Color(0xFF337487),
@@ -498,18 +418,10 @@ class XzColors {
498
418
  },
499
419
  ),
500
420
  neutral: XzRoleColor(
501
- soft: {
502
- 100: Color(0x147CAEFF),
503
- 200: Color(0x1F7CAEFF),
504
- },
505
- softSolid: {
506
- 100: Color(0xFF31394A),
507
- 200: Color(0xFF364054),
508
- },
509
421
  line: {
510
- 100: Color(0xFF3D4B65),
511
- 200: Color(0xFF526A95),
512
- 300: Color(0xFF5E7EB4),
422
+ 100: Color(0xFF454B58),
423
+ 200: Color(0xFF626B7A),
424
+ 300: Color(0xFF757F8F),
513
425
  },
514
426
  bg: {
515
427
  100: Color(0xFF798598),
@@ -519,8 +431,8 @@ class XzColors {
519
431
  100: Color(0xFFFFFFFF),
520
432
  },
521
433
  text: {
522
- 100: Color(0xFF7CAEFF),
523
- 200: Color(0xFFB1CFFF),
434
+ 100: Color(0xFFA2AFC3),
435
+ 200: Color(0xFFC2CFE3),
524
436
  },
525
437
  ),
526
438
  );
Binary file