@gryt/ui 0.6.0 → 0.7.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/dist/theme.css CHANGED
@@ -25,6 +25,120 @@
25
25
  --color-gryt-danger-light: #fca5a5;
26
26
  --color-gryt-warning: #fbbf24;
27
27
 
28
+ /* The scales as Tailwind colours: bg-gryt-neutral-3, text-gryt-accent-11,
29
+ border-gryt-neutral-7. The same values as the raw names below — both
30
+ lists come out of one generator, so they cannot drift apart. */
31
+ /* GENERATED: scales — bun scripts/generate-theme.ts --color-gryt */
32
+ /* neutral */
33
+ --color-gryt-neutral-1: #111318;
34
+ --color-gryt-neutral-2: #1a1d24;
35
+ --color-gryt-neutral-3: #1e2028;
36
+ --color-gryt-neutral-4: #22262f;
37
+ --color-gryt-neutral-5: #262b36;
38
+ --color-gryt-neutral-6: #2b303d;
39
+ --color-gryt-neutral-7: #363c4a;
40
+ --color-gryt-neutral-8: #484e5d;
41
+ --color-gryt-neutral-9: #646975;
42
+ --color-gryt-neutral-10: #74777f;
43
+ --color-gryt-neutral-11: #888888;
44
+ --color-gryt-neutral-12: #e0e0e6;
45
+
46
+ /* accent */
47
+ --color-gryt-accent-1: #14141b;
48
+ --color-gryt-accent-2: #1e1e2b;
49
+ --color-gryt-accent-3: #242439;
50
+ --color-gryt-accent-4: #2b2a47;
51
+ --color-gryt-accent-5: #323054;
52
+ --color-gryt-accent-6: #3c3a64;
53
+ --color-gryt-accent-7: #4b487c;
54
+ --color-gryt-accent-8: #6360a0;
55
+ --color-gryt-accent-9: #968ff8;
56
+ --color-gryt-accent-10: #b4afff;
57
+ --color-gryt-accent-11: #c3c1ff;
58
+ --color-gryt-accent-12: #e3e4ff;
59
+
60
+ /* secondary */
61
+ --color-gryt-secondary-1: #0e161a;
62
+ --color-gryt-secondary-2: #122229;
63
+ --color-gryt-secondary-3: #0f2a36;
64
+ --color-gryt-secondary-4: #0b3243;
65
+ --color-gryt-secondary-5: #063b4f;
66
+ --color-gryt-secondary-6: #04465e;
67
+ --color-gryt-secondary-7: #055775;
68
+ --color-gryt-secondary-8: #0f7397;
69
+ --color-gryt-secondary-9: #7dd3fc;
70
+ --color-gryt-secondary-10: #bae6fd;
71
+ --color-gryt-secondary-11: #9afaff;
72
+ --color-gryt-secondary-12: #d4ffff;
73
+
74
+ /* success */
75
+ --color-gryt-success-1: #101712;
76
+ --color-gryt-success-2: #162319;
77
+ --color-gryt-success-3: #172c1d;
78
+ --color-gryt-success-4: #183520;
79
+ --color-gryt-success-5: #193e25;
80
+ --color-gryt-success-6: #1e4a2c;
81
+ --color-gryt-success-7: #275d38;
82
+ --color-gryt-success-8: #36794b;
83
+ --color-gryt-success-9: #4ade80;
84
+ --color-gryt-success-10: #4ade80;
85
+ --color-gryt-success-11: #93e0a7;
86
+ --color-gryt-success-12: #cef3d6;
87
+
88
+ /* danger */
89
+ --color-gryt-danger-1: #1b1212;
90
+ --color-gryt-danger-2: #2b1a1a;
91
+ --color-gryt-danger-3: #381e1d;
92
+ --color-gryt-danger-4: #442322;
93
+ --color-gryt-danger-5: #512727;
94
+ --color-gryt-danger-6: #602f2e;
95
+ --color-gryt-danger-7: #773b3a;
96
+ --color-gryt-danger-8: #9a504e;
97
+ --color-gryt-danger-9: #f87171;
98
+ --color-gryt-danger-10: #fca5a5;
99
+ --color-gryt-danger-11: #ffb0ac;
100
+ --color-gryt-danger-12: #ffdad7;
101
+
102
+ /* warning */
103
+ --color-gryt-warning-1: #18140e;
104
+ --color-gryt-warning-2: #251e11;
105
+ --color-gryt-warning-3: #30250e;
106
+ --color-gryt-warning-4: #3a2b0a;
107
+ --color-gryt-warning-5: #443207;
108
+ --color-gryt-warning-6: #513c06;
109
+ --color-gryt-warning-7: #654b09;
110
+ --color-gryt-warning-8: #846313;
111
+ --color-gryt-warning-9: #fbbf24;
112
+ --color-gryt-warning-10: #fbbf24;
113
+ --color-gryt-warning-11: #f8d17f;
114
+ --color-gryt-warning-12: #fce8c1;
115
+
116
+ --color-gryt-neutral-a1: transparent;
117
+ --color-gryt-neutral-a2: rgb(190 212 255 / 5.2%);
118
+ --color-gryt-neutral-a3: rgb(205 207 255 / 6.9%);
119
+ --color-gryt-neutral-a4: rgb(188 210 255 / 10.0%);
120
+ --color-gryt-neutral-a5: rgb(179 204 255 / 13.0%);
121
+ --color-gryt-neutral-a6: rgb(179 200 255 / 16.0%);
122
+ --color-gryt-neutral-a7: rgb(188 208 255 / 21.6%);
123
+ --color-gryt-neutral-a8: rgb(201 217 255 / 29.9%);
124
+ --color-gryt-neutral-a9: rgb(223 233 255 / 40.3%);
125
+ --color-gryt-neutral-a10: rgb(239 243 255 / 44.6%);
126
+ --color-gryt-neutral-a11: rgb(255 253 248 / 50.0%);
127
+ --color-gryt-neutral-a12: rgb(249 249 255 / 89.2%);
128
+
129
+ --color-gryt-accent-a1: rgb(248 96 255 / 1.3%);
130
+ --color-gryt-accent-a2: rgb(175 153 255 / 8.2%);
131
+ --color-gryt-accent-a3: rgb(150 138 255 / 14.3%);
132
+ --color-gryt-accent-a4: rgb(145 132 255 / 20.3%);
133
+ --color-gryt-accent-a5: rgb(144 131 255 / 26.0%);
134
+ --color-gryt-accent-a6: rgb(148 138 255 / 32.9%);
135
+ --color-gryt-accent-a7: rgb(151 141 255 / 43.3%);
136
+ --color-gryt-accent-a8: rgb(156 150 255 / 58.9%);
137
+ --color-gryt-accent-a9: rgb(154 147 255 / 97.0%);
138
+ --color-gryt-accent-a10: rgb(180 175 255 / 100.0%);
139
+ --color-gryt-accent-a11: rgb(195 193 255 / 100.0%);
140
+ --color-gryt-accent-a12: rgb(227 228 255 / 100.0%);
141
+ /* END GENERATED */
28
142
  /* Surface one step above --color-gryt-surface-raised, for hover states. */
29
143
  --color-gryt-surface-hover: #334155;
30
144
 
@@ -84,18 +198,159 @@
84
198
  and so will any app that writes the same. Keeping both here makes this one
85
199
  file the whole token surface. */
86
200
  :root {
87
- --gryt-bg: #111318;
88
- --gryt-surface: #1a1d24;
89
- --gryt-surface-raised: #1e2028;
90
- --gryt-border: #2b303d;
91
- --gryt-text: #e0e0e6;
92
- --gryt-muted: #888888;
93
- --gryt-accent: #968ff8;
94
- --gryt-accent-light: #b4afff;
95
- --gryt-secondary: #7dd3fc;
96
- --gryt-success: #4ade80;
97
- --gryt-danger: #f87171;
98
- --gryt-warning: #fbbf24;
201
+ /* The flat names are aliases onto the scale now. They are what most call
202
+ sites use and what the docs document, so they stay — but a colour has one
203
+ definition, and it lives on the scale. */
204
+ --gryt-bg: var(--gryt-neutral-1);
205
+ --gryt-surface: var(--gryt-neutral-2);
206
+ --gryt-surface-raised: var(--gryt-neutral-3);
207
+ --gryt-border: var(--gryt-neutral-6);
208
+ --gryt-text: var(--gryt-neutral-12);
209
+ --gryt-muted: var(--gryt-neutral-11);
210
+ --gryt-accent: var(--gryt-accent-9);
211
+ --gryt-accent-light: var(--gryt-accent-10);
212
+ --gryt-secondary: var(--gryt-secondary-9);
213
+ --gryt-success: var(--gryt-success-9);
214
+ --gryt-danger: var(--gryt-danger-9);
215
+ --gryt-warning: var(--gryt-warning-9);
216
+ /* ── the scales ─────────────────────────────────────────────
217
+ Twelve steps per family, each step meaning the same thing wherever it
218
+ appears:
219
+
220
+ 1 app background 7 border
221
+ 2 subtle background 8 border, hovered
222
+ 3 component background 9 solid
223
+ 4 component, hovered 10 solid, hovered
224
+ 5 component, active 11 low-contrast text
225
+ 6 subtle border 12 high-contrast text
226
+
227
+ Generated in OKLCH from the tokens this library already shipped, not
228
+ copied from anywhere: every step an existing token covered *is* that
229
+ token, unchanged — 1, 2, 3, 6, 11 and 12 on the neutral scale, 9 and 10
230
+ on each hue — and the rest are interpolated so the ramp is perceptually
231
+ even rather than evenly spaced in hex.
232
+
233
+ Steps 11 and 12 are placed relative to 10 rather than at a fixed
234
+ lightness. The -light tokens differ family to family (accent's sits at
235
+ L 0.79, secondary's at 0.90), so a fixed value put the text step above
236
+ the fill in one scale and below it in another, and the ramp changed
237
+ direction depending on the hue.
238
+
239
+ Contrast is measured, not assumed. Neutral 11 clears 4.5:1 on steps 1, 2
240
+ and 3 (5.24, 4.76, 4.58); neutral 12 clears 12:1 on all three; every
241
+ hue's step 11 clears 11:1 on the app background. AA for body text
242
+ everywhere the scale is meant to carry it. */
243
+ /* GENERATED: scales — bun scripts/generate-theme.ts --gryt */
244
+ /* neutral */
245
+ --gryt-neutral-1: #111318;
246
+ --gryt-neutral-2: #1a1d24;
247
+ --gryt-neutral-3: #1e2028;
248
+ --gryt-neutral-4: #22262f;
249
+ --gryt-neutral-5: #262b36;
250
+ --gryt-neutral-6: #2b303d;
251
+ --gryt-neutral-7: #363c4a;
252
+ --gryt-neutral-8: #484e5d;
253
+ --gryt-neutral-9: #646975;
254
+ --gryt-neutral-10: #74777f;
255
+ --gryt-neutral-11: #888888;
256
+ --gryt-neutral-12: #e0e0e6;
257
+
258
+ /* accent */
259
+ --gryt-accent-1: #14141b;
260
+ --gryt-accent-2: #1e1e2b;
261
+ --gryt-accent-3: #242439;
262
+ --gryt-accent-4: #2b2a47;
263
+ --gryt-accent-5: #323054;
264
+ --gryt-accent-6: #3c3a64;
265
+ --gryt-accent-7: #4b487c;
266
+ --gryt-accent-8: #6360a0;
267
+ --gryt-accent-9: #968ff8;
268
+ --gryt-accent-10: #b4afff;
269
+ --gryt-accent-11: #c3c1ff;
270
+ --gryt-accent-12: #e3e4ff;
271
+
272
+ /* secondary */
273
+ --gryt-secondary-1: #0e161a;
274
+ --gryt-secondary-2: #122229;
275
+ --gryt-secondary-3: #0f2a36;
276
+ --gryt-secondary-4: #0b3243;
277
+ --gryt-secondary-5: #063b4f;
278
+ --gryt-secondary-6: #04465e;
279
+ --gryt-secondary-7: #055775;
280
+ --gryt-secondary-8: #0f7397;
281
+ --gryt-secondary-9: #7dd3fc;
282
+ --gryt-secondary-10: #bae6fd;
283
+ --gryt-secondary-11: #9afaff;
284
+ --gryt-secondary-12: #d4ffff;
285
+
286
+ /* success */
287
+ --gryt-success-1: #101712;
288
+ --gryt-success-2: #162319;
289
+ --gryt-success-3: #172c1d;
290
+ --gryt-success-4: #183520;
291
+ --gryt-success-5: #193e25;
292
+ --gryt-success-6: #1e4a2c;
293
+ --gryt-success-7: #275d38;
294
+ --gryt-success-8: #36794b;
295
+ --gryt-success-9: #4ade80;
296
+ --gryt-success-10: #4ade80;
297
+ --gryt-success-11: #93e0a7;
298
+ --gryt-success-12: #cef3d6;
299
+
300
+ /* danger */
301
+ --gryt-danger-1: #1b1212;
302
+ --gryt-danger-2: #2b1a1a;
303
+ --gryt-danger-3: #381e1d;
304
+ --gryt-danger-4: #442322;
305
+ --gryt-danger-5: #512727;
306
+ --gryt-danger-6: #602f2e;
307
+ --gryt-danger-7: #773b3a;
308
+ --gryt-danger-8: #9a504e;
309
+ --gryt-danger-9: #f87171;
310
+ --gryt-danger-10: #fca5a5;
311
+ --gryt-danger-11: #ffb0ac;
312
+ --gryt-danger-12: #ffdad7;
313
+
314
+ /* warning */
315
+ --gryt-warning-1: #18140e;
316
+ --gryt-warning-2: #251e11;
317
+ --gryt-warning-3: #30250e;
318
+ --gryt-warning-4: #3a2b0a;
319
+ --gryt-warning-5: #443207;
320
+ --gryt-warning-6: #513c06;
321
+ --gryt-warning-7: #654b09;
322
+ --gryt-warning-8: #846313;
323
+ --gryt-warning-9: #fbbf24;
324
+ --gryt-warning-10: #fbbf24;
325
+ --gryt-warning-11: #f8d17f;
326
+ --gryt-warning-12: #fce8c1;
327
+
328
+ --gryt-neutral-a1: transparent;
329
+ --gryt-neutral-a2: rgb(190 212 255 / 5.2%);
330
+ --gryt-neutral-a3: rgb(205 207 255 / 6.9%);
331
+ --gryt-neutral-a4: rgb(188 210 255 / 10.0%);
332
+ --gryt-neutral-a5: rgb(179 204 255 / 13.0%);
333
+ --gryt-neutral-a6: rgb(179 200 255 / 16.0%);
334
+ --gryt-neutral-a7: rgb(188 208 255 / 21.6%);
335
+ --gryt-neutral-a8: rgb(201 217 255 / 29.9%);
336
+ --gryt-neutral-a9: rgb(223 233 255 / 40.3%);
337
+ --gryt-neutral-a10: rgb(239 243 255 / 44.6%);
338
+ --gryt-neutral-a11: rgb(255 253 248 / 50.0%);
339
+ --gryt-neutral-a12: rgb(249 249 255 / 89.2%);
340
+
341
+ --gryt-accent-a1: rgb(248 96 255 / 1.3%);
342
+ --gryt-accent-a2: rgb(175 153 255 / 8.2%);
343
+ --gryt-accent-a3: rgb(150 138 255 / 14.3%);
344
+ --gryt-accent-a4: rgb(145 132 255 / 20.3%);
345
+ --gryt-accent-a5: rgb(144 131 255 / 26.0%);
346
+ --gryt-accent-a6: rgb(148 138 255 / 32.9%);
347
+ --gryt-accent-a7: rgb(151 141 255 / 43.3%);
348
+ --gryt-accent-a8: rgb(156 150 255 / 58.9%);
349
+ --gryt-accent-a9: rgb(154 147 255 / 97.0%);
350
+ --gryt-accent-a10: rgb(180 175 255 / 100.0%);
351
+ --gryt-accent-a11: rgb(195 193 255 / 100.0%);
352
+ --gryt-accent-a12: rgb(227 228 255 / 100.0%);
353
+ /* END GENERATED */
99
354
  --gryt-radius-sm: 8px;
100
355
  --gryt-radius-md: 12px;
101
356
  --gryt-radius-lg: 20px;
@@ -118,3 +373,248 @@
118
373
  --gryt-drawer-bleed: 4rem;
119
374
 
120
375
  }
376
+
377
+ /* ── light ──────────────────────────────────────────────────────────────────
378
+ Dark is what :root carries, because it is what Gryt is. An app that offers a
379
+ light appearance puts .light on an ancestor — the root element is the usual
380
+ place, since overlays portal to document.body and would otherwise miss it —
381
+ and every scale value swaps underneath it.
382
+
383
+ Not a mirror of the dark ramps. In dark a surface sits *lighter* than the
384
+ page; in light it is white and the page is the grey one, so neutral 1 and 2
385
+ run light-grey then white and the ramp is deliberately not monotonic across
386
+ them. That step is the elevation.
387
+
388
+ Contrast measured on this set, not assumed from the other: neutral 11 clears
389
+ 4.5:1 on both the page and a white panel, neutral 12 clears 14:1, and every
390
+ hue's step 11 clears 4.5:1 on both. */
391
+ .light {
392
+ /* GENERATED: scales — bun scripts/generate-theme.ts --light */
393
+ /* neutral */
394
+ --gryt-neutral-1: #f1f2f7;
395
+ --gryt-neutral-2: #ffffff;
396
+ --gryt-neutral-3: #f7f8fb;
397
+ --gryt-neutral-4: #edeff4;
398
+ --gryt-neutral-5: #e5e7ee;
399
+ --gryt-neutral-6: #dadde6;
400
+ --gryt-neutral-7: #cbcfda;
401
+ --gryt-neutral-8: #b6bac7;
402
+ --gryt-neutral-9: #8e929c;
403
+ --gryt-neutral-10: #80838c;
404
+ --gryt-neutral-11: #5b5d65;
405
+ --gryt-neutral-12: #1f2129;
406
+
407
+ /* accent */
408
+ --gryt-accent-1: #f6f6ff;
409
+ --gryt-accent-2: #eeeeff;
410
+ --gryt-accent-3: #e4e5ff;
411
+ --gryt-accent-4: #dbdcff;
412
+ --gryt-accent-5: #d2d2ff;
413
+ --gryt-accent-6: #c6c6fb;
414
+ --gryt-accent-7: #b5b4f4;
415
+ --gryt-accent-8: #9d9be7;
416
+ --gryt-accent-9: #968ff8;
417
+ --gryt-accent-10: #8179e0;
418
+ --gryt-accent-11: #5d52b4;
419
+ --gryt-accent-12: #322b66;
420
+
421
+ /* secondary */
422
+ --gryt-secondary-1: #eff8fd;
423
+ --gryt-secondary-2: #e1f4fe;
424
+ --gryt-secondary-3: #cfedfd;
425
+ --gryt-secondary-4: #bfe7fb;
426
+ --gryt-secondary-5: #aedff8;
427
+ --gryt-secondary-6: #9ad6f4;
428
+ --gryt-secondary-7: #7dc7eb;
429
+ --gryt-secondary-8: #50b1dc;
430
+ --gryt-secondary-9: #7dd3fc;
431
+ --gryt-secondary-10: #66bce4;
432
+ --gryt-secondary-11: #006fa7;
433
+ --gryt-secondary-12: #003c5e;
434
+
435
+ /* success */
436
+ --gryt-success-1: #f1f9f3;
437
+ --gryt-success-2: #e5f5e8;
438
+ --gryt-success-3: #d6f0dc;
439
+ --gryt-success-4: #c8eacf;
440
+ --gryt-success-5: #bae3c3;
441
+ --gryt-success-6: #a9dbb4;
442
+ --gryt-success-7: #90cd9f;
443
+ --gryt-success-8: #6db882;
444
+ --gryt-success-9: #4ade80;
445
+ --gryt-success-10: #28c76a;
446
+ --gryt-success-11: #007a33;
447
+ --gryt-success-12: #004318;
448
+
449
+ /* danger */
450
+ --gryt-danger-1: #fff4f3;
451
+ --gryt-danger-2: #ffeae9;
452
+ --gryt-danger-3: #ffdfdc;
453
+ --gryt-danger-4: #ffd3d1;
454
+ --gryt-danger-5: #fdc7c4;
455
+ --gryt-danger-6: #f9bab6;
456
+ --gryt-danger-7: #f1a5a2;
457
+ --gryt-danger-8: #e18885;
458
+ --gryt-danger-9: #f87171;
459
+ --gryt-danger-10: #df5b5c;
460
+ --gryt-danger-11: #a8353a;
461
+ --gryt-danger-12: #5f1a1c;
462
+
463
+ /* warning */
464
+ --gryt-warning-1: #fbf6ee;
465
+ --gryt-warning-2: #f8efde;
466
+ --gryt-warning-3: #f4e6cc;
467
+ --gryt-warning-4: #efdebb;
468
+ --gryt-warning-5: #ead4a9;
469
+ --gryt-warning-6: #e3c995;
470
+ --gryt-warning-7: #d7b878;
471
+ --gryt-warning-8: #c59f4d;
472
+ --gryt-warning-9: #fbbf24;
473
+ --gryt-warning-10: #e3a800;
474
+ --gryt-warning-11: #8a5800;
475
+ --gryt-warning-12: #4d2f00;
476
+
477
+ --gryt-neutral-a1: transparent;
478
+ --gryt-neutral-a2: rgb(255 255 255 / 100.0%);
479
+ --gryt-neutral-a3: rgb(253 254 255 / 50.0%);
480
+ --gryt-neutral-a4: rgb(0 61 66 / 1.7%);
481
+ --gryt-neutral-a5: rgb(0 21 66 / 5.0%);
482
+ --gryt-neutral-a6: rgb(0 22 69 / 9.5%);
483
+ --gryt-neutral-a7: rgb(0 20 63 / 15.8%);
484
+ --gryt-neutral-a8: rgb(0 13 51 / 24.5%);
485
+ --gryt-neutral-a9: rgb(0 8 25 / 41.1%);
486
+ --gryt-neutral-a10: rgb(0 5 19 / 46.9%);
487
+ --gryt-neutral-a11: rgb(0 3 12 / 62.2%);
488
+ --gryt-neutral-a12: rgb(0 2 11 / 87.1%);
489
+
490
+ --gryt-accent-a1: rgb(246 246 255 / 100.0%);
491
+ --gryt-accent-a2: rgb(238 238 255 / 100.0%);
492
+ --gryt-accent-a3: rgb(228 229 255 / 100.0%);
493
+ --gryt-accent-a4: rgb(219 220 255 / 100.0%);
494
+ --gryt-accent-a5: rgb(210 210 255 / 100.0%);
495
+ --gryt-accent-a6: rgb(155 154 255 / 50.0%);
496
+ --gryt-accent-a7: rgb(7 0 235 / 25.6%);
497
+ --gryt-accent-a8: rgb(7 0 202 / 36.0%);
498
+ --gryt-accent-a9: rgb(19 0 249 / 40.9%);
499
+ --gryt-accent-a10: rgb(17 0 201 / 50.0%);
500
+ --gryt-accent-a11: rgb(17 0 146 / 66.1%);
501
+ --gryt-accent-a12: rgb(9 0 71 / 82.2%);
502
+
503
+ /* neutral */
504
+ --color-gryt-neutral-1: #f1f2f7;
505
+ --color-gryt-neutral-2: #ffffff;
506
+ --color-gryt-neutral-3: #f7f8fb;
507
+ --color-gryt-neutral-4: #edeff4;
508
+ --color-gryt-neutral-5: #e5e7ee;
509
+ --color-gryt-neutral-6: #dadde6;
510
+ --color-gryt-neutral-7: #cbcfda;
511
+ --color-gryt-neutral-8: #b6bac7;
512
+ --color-gryt-neutral-9: #8e929c;
513
+ --color-gryt-neutral-10: #80838c;
514
+ --color-gryt-neutral-11: #5b5d65;
515
+ --color-gryt-neutral-12: #1f2129;
516
+
517
+ /* accent */
518
+ --color-gryt-accent-1: #f6f6ff;
519
+ --color-gryt-accent-2: #eeeeff;
520
+ --color-gryt-accent-3: #e4e5ff;
521
+ --color-gryt-accent-4: #dbdcff;
522
+ --color-gryt-accent-5: #d2d2ff;
523
+ --color-gryt-accent-6: #c6c6fb;
524
+ --color-gryt-accent-7: #b5b4f4;
525
+ --color-gryt-accent-8: #9d9be7;
526
+ --color-gryt-accent-9: #968ff8;
527
+ --color-gryt-accent-10: #8179e0;
528
+ --color-gryt-accent-11: #5d52b4;
529
+ --color-gryt-accent-12: #322b66;
530
+
531
+ /* secondary */
532
+ --color-gryt-secondary-1: #eff8fd;
533
+ --color-gryt-secondary-2: #e1f4fe;
534
+ --color-gryt-secondary-3: #cfedfd;
535
+ --color-gryt-secondary-4: #bfe7fb;
536
+ --color-gryt-secondary-5: #aedff8;
537
+ --color-gryt-secondary-6: #9ad6f4;
538
+ --color-gryt-secondary-7: #7dc7eb;
539
+ --color-gryt-secondary-8: #50b1dc;
540
+ --color-gryt-secondary-9: #7dd3fc;
541
+ --color-gryt-secondary-10: #66bce4;
542
+ --color-gryt-secondary-11: #006fa7;
543
+ --color-gryt-secondary-12: #003c5e;
544
+
545
+ /* success */
546
+ --color-gryt-success-1: #f1f9f3;
547
+ --color-gryt-success-2: #e5f5e8;
548
+ --color-gryt-success-3: #d6f0dc;
549
+ --color-gryt-success-4: #c8eacf;
550
+ --color-gryt-success-5: #bae3c3;
551
+ --color-gryt-success-6: #a9dbb4;
552
+ --color-gryt-success-7: #90cd9f;
553
+ --color-gryt-success-8: #6db882;
554
+ --color-gryt-success-9: #4ade80;
555
+ --color-gryt-success-10: #28c76a;
556
+ --color-gryt-success-11: #007a33;
557
+ --color-gryt-success-12: #004318;
558
+
559
+ /* danger */
560
+ --color-gryt-danger-1: #fff4f3;
561
+ --color-gryt-danger-2: #ffeae9;
562
+ --color-gryt-danger-3: #ffdfdc;
563
+ --color-gryt-danger-4: #ffd3d1;
564
+ --color-gryt-danger-5: #fdc7c4;
565
+ --color-gryt-danger-6: #f9bab6;
566
+ --color-gryt-danger-7: #f1a5a2;
567
+ --color-gryt-danger-8: #e18885;
568
+ --color-gryt-danger-9: #f87171;
569
+ --color-gryt-danger-10: #df5b5c;
570
+ --color-gryt-danger-11: #a8353a;
571
+ --color-gryt-danger-12: #5f1a1c;
572
+
573
+ /* warning */
574
+ --color-gryt-warning-1: #fbf6ee;
575
+ --color-gryt-warning-2: #f8efde;
576
+ --color-gryt-warning-3: #f4e6cc;
577
+ --color-gryt-warning-4: #efdebb;
578
+ --color-gryt-warning-5: #ead4a9;
579
+ --color-gryt-warning-6: #e3c995;
580
+ --color-gryt-warning-7: #d7b878;
581
+ --color-gryt-warning-8: #c59f4d;
582
+ --color-gryt-warning-9: #fbbf24;
583
+ --color-gryt-warning-10: #e3a800;
584
+ --color-gryt-warning-11: #8a5800;
585
+ --color-gryt-warning-12: #4d2f00;
586
+
587
+ --color-gryt-neutral-a1: transparent;
588
+ --color-gryt-neutral-a2: rgb(255 255 255 / 100.0%);
589
+ --color-gryt-neutral-a3: rgb(253 254 255 / 50.0%);
590
+ --color-gryt-neutral-a4: rgb(0 61 66 / 1.7%);
591
+ --color-gryt-neutral-a5: rgb(0 21 66 / 5.0%);
592
+ --color-gryt-neutral-a6: rgb(0 22 69 / 9.5%);
593
+ --color-gryt-neutral-a7: rgb(0 20 63 / 15.8%);
594
+ --color-gryt-neutral-a8: rgb(0 13 51 / 24.5%);
595
+ --color-gryt-neutral-a9: rgb(0 8 25 / 41.1%);
596
+ --color-gryt-neutral-a10: rgb(0 5 19 / 46.9%);
597
+ --color-gryt-neutral-a11: rgb(0 3 12 / 62.2%);
598
+ --color-gryt-neutral-a12: rgb(0 2 11 / 87.1%);
599
+
600
+ --color-gryt-accent-a1: rgb(246 246 255 / 100.0%);
601
+ --color-gryt-accent-a2: rgb(238 238 255 / 100.0%);
602
+ --color-gryt-accent-a3: rgb(228 229 255 / 100.0%);
603
+ --color-gryt-accent-a4: rgb(219 220 255 / 100.0%);
604
+ --color-gryt-accent-a5: rgb(210 210 255 / 100.0%);
605
+ --color-gryt-accent-a6: rgb(155 154 255 / 50.0%);
606
+ --color-gryt-accent-a7: rgb(7 0 235 / 25.6%);
607
+ --color-gryt-accent-a8: rgb(7 0 202 / 36.0%);
608
+ --color-gryt-accent-a9: rgb(19 0 249 / 40.9%);
609
+ --color-gryt-accent-a10: rgb(17 0 201 / 50.0%);
610
+ --color-gryt-accent-a11: rgb(17 0 146 / 66.1%);
611
+ --color-gryt-accent-a12: rgb(9 0 71 / 82.2%);
612
+
613
+ --gryt-bg: var(--gryt-neutral-1);
614
+ --gryt-surface: var(--gryt-neutral-2);
615
+ --gryt-surface-raised: var(--gryt-neutral-3);
616
+ --gryt-border: var(--gryt-neutral-6);
617
+ --gryt-muted: var(--gryt-neutral-11);
618
+ --gryt-text: var(--gryt-neutral-12);
619
+ /* END GENERATED */
620
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gryt/ui",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "React component library for Gryt, the open-source WebRTC voice chat platform.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -54,6 +54,7 @@
54
54
  "scripts": {
55
55
  "dev": "vite build --watch",
56
56
  "build": "vite build && bun scripts/fix-declarations.ts",
57
+ "generate-theme": "bun scripts/generate-theme.ts",
57
58
  "typecheck": "tsc -p tsconfig.json --noEmit",
58
59
  "test": "vitest run",
59
60
  "prepublishOnly": "bun run typecheck && bun run test && bun run build"
@@ -73,6 +74,7 @@
73
74
  "@testing-library/dom": "^10.4.1",
74
75
  "@testing-library/jest-dom": "^6.9.1",
75
76
  "@testing-library/react": "^16.3.0",
77
+ "@types/node": "^24.10.1",
76
78
  "@types/react": "^19.2.7",
77
79
  "@types/react-dom": "^19.2.3",
78
80
  "@vitejs/plugin-react": "^5.1.2",