@openvoxproject/voxblocks 0.9.0 → 0.11.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.
Files changed (49) hide show
  1. package/README.md +17 -9
  2. package/dist/cdn/voxblocks.css +1 -1
  3. package/dist/cdn/voxblocks.js +1987 -1279
  4. package/dist/types/components/accordion/vox-accordion.d.ts +2 -0
  5. package/dist/types/components/alert/vox-alert.d.ts +2 -1
  6. package/dist/types/components/callout/vox-callout.d.ts +2 -1
  7. package/dist/types/components/disclosure/vox-disclosure.d.ts +2 -0
  8. package/dist/types/components/dropdown/vox-dropdown.d.ts +3 -0
  9. package/dist/types/components/header/vox-header.d.ts +11 -1
  10. package/dist/types/components/icon/icon-paths.d.ts +30 -0
  11. package/dist/types/components/icon/vox-icon.d.ts +22 -0
  12. package/dist/types/components/link-hub/vox-link-hub.d.ts +3 -0
  13. package/dist/types/components/pagination/vox-pagination.d.ts +6 -4
  14. package/dist/types/components/sidenav/vox-sidenav.d.ts +20 -0
  15. package/dist/types/components/toc/vox-toc.d.ts +43 -0
  16. package/dist/types/index.d.ts +4 -0
  17. package/dist/types/internal/field.d.ts +4 -0
  18. package/dist/voxblocks.css +1 -1
  19. package/dist/voxblocks.js +1705 -997
  20. package/package.json +9 -6
  21. package/src/components/accordion/vox-accordion.ts +6 -1
  22. package/src/components/alert/vox-alert.ts +46 -2
  23. package/src/components/avatar/vox-avatar.ts +9 -2
  24. package/src/components/callout/vox-callout.ts +53 -3
  25. package/src/components/card/vox-card.ts +6 -1
  26. package/src/components/checkbox/vox-checkbox.ts +4 -3
  27. package/src/components/dialog/vox-dialog.ts +2 -2
  28. package/src/components/disclosure/vox-disclosure.ts +6 -1
  29. package/src/components/dropdown/vox-dropdown.ts +32 -8
  30. package/src/components/empty-state/vox-empty-state.ts +1 -1
  31. package/src/components/file-input/vox-file-input.ts +4 -1
  32. package/src/components/header/vox-header.ts +142 -7
  33. package/src/components/icon/icon-paths.ts +287 -0
  34. package/src/components/icon/vox-icon.ts +78 -0
  35. package/src/components/input/vox-input.ts +2 -0
  36. package/src/components/link-hub/vox-link-hub.ts +21 -0
  37. package/src/components/pagination/vox-pagination.ts +9 -6
  38. package/src/components/radio/vox-radio-group.ts +17 -6
  39. package/src/components/select/vox-select.ts +3 -0
  40. package/src/components/sidenav/vox-sidenav.ts +164 -4
  41. package/src/components/step-indicator/vox-step-indicator.ts +16 -2
  42. package/src/components/tabs/vox-tabs.ts +26 -2
  43. package/src/components/textarea/vox-textarea.ts +2 -0
  44. package/src/components/toc/vox-toc.ts +140 -0
  45. package/src/index.ts +6 -0
  46. package/src/internal/field.ts +20 -2
  47. package/src/styles/utilities.css +158 -0
  48. package/src/tokens/palette.css +95 -0
  49. package/src/tokens/tokens.css +7 -7
@@ -124,6 +124,19 @@
124
124
  color: var(--vox-color-brand-2);
125
125
  }
126
126
 
127
+ /* Container ------------------------------------------------------------ */
128
+
129
+ /* Centers content at the same 1280px measure and horizontal padding that
130
+ vox-header and vox-footer already use internally, so page sections built
131
+ from other components (vox-hero, vox-grid, etc.) line up with them
132
+ instead of running edge-to-edge. */
133
+ .vox-container {
134
+ max-width: 1280px;
135
+ margin: 0 auto;
136
+ padding-left: var(--vox-space-6);
137
+ padding-right: var(--vox-space-6);
138
+ }
139
+
127
140
  /* Spacing: margin ---------------------------------------------------- */
128
141
 
129
142
  .vox-m-all-none { margin: 0 !important; }
@@ -289,6 +302,151 @@
289
302
  .vox-bg-warning-soft { background-color: var(--vox-color-warning-soft) !important; }
290
303
  .vox-bg-danger-soft { background-color: var(--vox-color-danger-soft) !important; }
291
304
 
305
+ /* Color: extended palette --------------------------------------------
306
+ Fixed swatches (see src/tokens/palette.css), not theme-adaptive.
307
+ Pair a light step's text with the same hue's 900 step, or use a
308
+ 600+ step as a solid fill with white text (vox-color-text-inverse). */
309
+
310
+ /* gray */
311
+ .vox-color-gray-100 { color: var(--vox-palette-gray-100) !important; }
312
+ .vox-color-gray-200 { color: var(--vox-palette-gray-200) !important; }
313
+ .vox-color-gray-300 { color: var(--vox-palette-gray-300) !important; }
314
+ .vox-color-gray-400 { color: var(--vox-palette-gray-400) !important; }
315
+ .vox-color-gray-500 { color: var(--vox-palette-gray-500) !important; }
316
+ .vox-color-gray-600 { color: var(--vox-palette-gray-600) !important; }
317
+ .vox-color-gray-700 { color: var(--vox-palette-gray-700) !important; }
318
+ .vox-color-gray-800 { color: var(--vox-palette-gray-800) !important; }
319
+ .vox-color-gray-900 { color: var(--vox-palette-gray-900) !important; }
320
+ .vox-bg-gray-100 { background-color: var(--vox-palette-gray-100) !important; }
321
+ .vox-bg-gray-200 { background-color: var(--vox-palette-gray-200) !important; }
322
+ .vox-bg-gray-300 { background-color: var(--vox-palette-gray-300) !important; }
323
+ .vox-bg-gray-400 { background-color: var(--vox-palette-gray-400) !important; }
324
+ .vox-bg-gray-500 { background-color: var(--vox-palette-gray-500) !important; }
325
+ .vox-bg-gray-600 { background-color: var(--vox-palette-gray-600) !important; }
326
+ .vox-bg-gray-700 { background-color: var(--vox-palette-gray-700) !important; }
327
+ .vox-bg-gray-800 { background-color: var(--vox-palette-gray-800) !important; }
328
+ .vox-bg-gray-900 { background-color: var(--vox-palette-gray-900) !important; }
329
+
330
+ /* teal */
331
+ .vox-color-teal-100 { color: var(--vox-palette-teal-100) !important; }
332
+ .vox-color-teal-200 { color: var(--vox-palette-teal-200) !important; }
333
+ .vox-color-teal-300 { color: var(--vox-palette-teal-300) !important; }
334
+ .vox-color-teal-400 { color: var(--vox-palette-teal-400) !important; }
335
+ .vox-color-teal-500 { color: var(--vox-palette-teal-500) !important; }
336
+ .vox-color-teal-600 { color: var(--vox-palette-teal-600) !important; }
337
+ .vox-color-teal-700 { color: var(--vox-palette-teal-700) !important; }
338
+ .vox-color-teal-800 { color: var(--vox-palette-teal-800) !important; }
339
+ .vox-color-teal-900 { color: var(--vox-palette-teal-900) !important; }
340
+ .vox-bg-teal-100 { background-color: var(--vox-palette-teal-100) !important; }
341
+ .vox-bg-teal-200 { background-color: var(--vox-palette-teal-200) !important; }
342
+ .vox-bg-teal-300 { background-color: var(--vox-palette-teal-300) !important; }
343
+ .vox-bg-teal-400 { background-color: var(--vox-palette-teal-400) !important; }
344
+ .vox-bg-teal-500 { background-color: var(--vox-palette-teal-500) !important; }
345
+ .vox-bg-teal-600 { background-color: var(--vox-palette-teal-600) !important; }
346
+ .vox-bg-teal-700 { background-color: var(--vox-palette-teal-700) !important; }
347
+ .vox-bg-teal-800 { background-color: var(--vox-palette-teal-800) !important; }
348
+ .vox-bg-teal-900 { background-color: var(--vox-palette-teal-900) !important; }
349
+
350
+ /* blue */
351
+ .vox-color-blue-100 { color: var(--vox-palette-blue-100) !important; }
352
+ .vox-color-blue-200 { color: var(--vox-palette-blue-200) !important; }
353
+ .vox-color-blue-300 { color: var(--vox-palette-blue-300) !important; }
354
+ .vox-color-blue-400 { color: var(--vox-palette-blue-400) !important; }
355
+ .vox-color-blue-500 { color: var(--vox-palette-blue-500) !important; }
356
+ .vox-color-blue-600 { color: var(--vox-palette-blue-600) !important; }
357
+ .vox-color-blue-700 { color: var(--vox-palette-blue-700) !important; }
358
+ .vox-color-blue-800 { color: var(--vox-palette-blue-800) !important; }
359
+ .vox-color-blue-900 { color: var(--vox-palette-blue-900) !important; }
360
+ .vox-bg-blue-100 { background-color: var(--vox-palette-blue-100) !important; }
361
+ .vox-bg-blue-200 { background-color: var(--vox-palette-blue-200) !important; }
362
+ .vox-bg-blue-300 { background-color: var(--vox-palette-blue-300) !important; }
363
+ .vox-bg-blue-400 { background-color: var(--vox-palette-blue-400) !important; }
364
+ .vox-bg-blue-500 { background-color: var(--vox-palette-blue-500) !important; }
365
+ .vox-bg-blue-600 { background-color: var(--vox-palette-blue-600) !important; }
366
+ .vox-bg-blue-700 { background-color: var(--vox-palette-blue-700) !important; }
367
+ .vox-bg-blue-800 { background-color: var(--vox-palette-blue-800) !important; }
368
+ .vox-bg-blue-900 { background-color: var(--vox-palette-blue-900) !important; }
369
+
370
+ /* green */
371
+ .vox-color-green-100 { color: var(--vox-palette-green-100) !important; }
372
+ .vox-color-green-200 { color: var(--vox-palette-green-200) !important; }
373
+ .vox-color-green-300 { color: var(--vox-palette-green-300) !important; }
374
+ .vox-color-green-400 { color: var(--vox-palette-green-400) !important; }
375
+ .vox-color-green-500 { color: var(--vox-palette-green-500) !important; }
376
+ .vox-color-green-600 { color: var(--vox-palette-green-600) !important; }
377
+ .vox-color-green-700 { color: var(--vox-palette-green-700) !important; }
378
+ .vox-color-green-800 { color: var(--vox-palette-green-800) !important; }
379
+ .vox-color-green-900 { color: var(--vox-palette-green-900) !important; }
380
+ .vox-bg-green-100 { background-color: var(--vox-palette-green-100) !important; }
381
+ .vox-bg-green-200 { background-color: var(--vox-palette-green-200) !important; }
382
+ .vox-bg-green-300 { background-color: var(--vox-palette-green-300) !important; }
383
+ .vox-bg-green-400 { background-color: var(--vox-palette-green-400) !important; }
384
+ .vox-bg-green-500 { background-color: var(--vox-palette-green-500) !important; }
385
+ .vox-bg-green-600 { background-color: var(--vox-palette-green-600) !important; }
386
+ .vox-bg-green-700 { background-color: var(--vox-palette-green-700) !important; }
387
+ .vox-bg-green-800 { background-color: var(--vox-palette-green-800) !important; }
388
+ .vox-bg-green-900 { background-color: var(--vox-palette-green-900) !important; }
389
+
390
+ /* gold */
391
+ .vox-color-gold-100 { color: var(--vox-palette-gold-100) !important; }
392
+ .vox-color-gold-200 { color: var(--vox-palette-gold-200) !important; }
393
+ .vox-color-gold-300 { color: var(--vox-palette-gold-300) !important; }
394
+ .vox-color-gold-400 { color: var(--vox-palette-gold-400) !important; }
395
+ .vox-color-gold-500 { color: var(--vox-palette-gold-500) !important; }
396
+ .vox-color-gold-600 { color: var(--vox-palette-gold-600) !important; }
397
+ .vox-color-gold-700 { color: var(--vox-palette-gold-700) !important; }
398
+ .vox-color-gold-800 { color: var(--vox-palette-gold-800) !important; }
399
+ .vox-color-gold-900 { color: var(--vox-palette-gold-900) !important; }
400
+ .vox-bg-gold-100 { background-color: var(--vox-palette-gold-100) !important; }
401
+ .vox-bg-gold-200 { background-color: var(--vox-palette-gold-200) !important; }
402
+ .vox-bg-gold-300 { background-color: var(--vox-palette-gold-300) !important; }
403
+ .vox-bg-gold-400 { background-color: var(--vox-palette-gold-400) !important; }
404
+ .vox-bg-gold-500 { background-color: var(--vox-palette-gold-500) !important; }
405
+ .vox-bg-gold-600 { background-color: var(--vox-palette-gold-600) !important; }
406
+ .vox-bg-gold-700 { background-color: var(--vox-palette-gold-700) !important; }
407
+ .vox-bg-gold-800 { background-color: var(--vox-palette-gold-800) !important; }
408
+ .vox-bg-gold-900 { background-color: var(--vox-palette-gold-900) !important; }
409
+
410
+ /* red */
411
+ .vox-color-red-100 { color: var(--vox-palette-red-100) !important; }
412
+ .vox-color-red-200 { color: var(--vox-palette-red-200) !important; }
413
+ .vox-color-red-300 { color: var(--vox-palette-red-300) !important; }
414
+ .vox-color-red-400 { color: var(--vox-palette-red-400) !important; }
415
+ .vox-color-red-500 { color: var(--vox-palette-red-500) !important; }
416
+ .vox-color-red-600 { color: var(--vox-palette-red-600) !important; }
417
+ .vox-color-red-700 { color: var(--vox-palette-red-700) !important; }
418
+ .vox-color-red-800 { color: var(--vox-palette-red-800) !important; }
419
+ .vox-color-red-900 { color: var(--vox-palette-red-900) !important; }
420
+ .vox-bg-red-100 { background-color: var(--vox-palette-red-100) !important; }
421
+ .vox-bg-red-200 { background-color: var(--vox-palette-red-200) !important; }
422
+ .vox-bg-red-300 { background-color: var(--vox-palette-red-300) !important; }
423
+ .vox-bg-red-400 { background-color: var(--vox-palette-red-400) !important; }
424
+ .vox-bg-red-500 { background-color: var(--vox-palette-red-500) !important; }
425
+ .vox-bg-red-600 { background-color: var(--vox-palette-red-600) !important; }
426
+ .vox-bg-red-700 { background-color: var(--vox-palette-red-700) !important; }
427
+ .vox-bg-red-800 { background-color: var(--vox-palette-red-800) !important; }
428
+ .vox-bg-red-900 { background-color: var(--vox-palette-red-900) !important; }
429
+
430
+ /* purple */
431
+ .vox-color-purple-100 { color: var(--vox-palette-purple-100) !important; }
432
+ .vox-color-purple-200 { color: var(--vox-palette-purple-200) !important; }
433
+ .vox-color-purple-300 { color: var(--vox-palette-purple-300) !important; }
434
+ .vox-color-purple-400 { color: var(--vox-palette-purple-400) !important; }
435
+ .vox-color-purple-500 { color: var(--vox-palette-purple-500) !important; }
436
+ .vox-color-purple-600 { color: var(--vox-palette-purple-600) !important; }
437
+ .vox-color-purple-700 { color: var(--vox-palette-purple-700) !important; }
438
+ .vox-color-purple-800 { color: var(--vox-palette-purple-800) !important; }
439
+ .vox-color-purple-900 { color: var(--vox-palette-purple-900) !important; }
440
+ .vox-bg-purple-100 { background-color: var(--vox-palette-purple-100) !important; }
441
+ .vox-bg-purple-200 { background-color: var(--vox-palette-purple-200) !important; }
442
+ .vox-bg-purple-300 { background-color: var(--vox-palette-purple-300) !important; }
443
+ .vox-bg-purple-400 { background-color: var(--vox-palette-purple-400) !important; }
444
+ .vox-bg-purple-500 { background-color: var(--vox-palette-purple-500) !important; }
445
+ .vox-bg-purple-600 { background-color: var(--vox-palette-purple-600) !important; }
446
+ .vox-bg-purple-700 { background-color: var(--vox-palette-purple-700) !important; }
447
+ .vox-bg-purple-800 { background-color: var(--vox-palette-purple-800) !important; }
448
+ .vox-bg-purple-900 { background-color: var(--vox-palette-purple-900) !important; }
449
+
292
450
  /* Border ------------------------------------------------------------- */
293
451
 
294
452
  .vox-border-all { border: 1px solid var(--vox-color-divider) !important; }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * VoxBlocks extended color palette.
3
+ *
4
+ * Seven hues (gray, teal, blue, green, gold, red, purple), each a fixed
5
+ * 100-900 tint/shade scale. Unlike the semantic --vox-color-* tokens in
6
+ * tokens.css, these are raw swatches: constant across light and dark mode,
7
+ * the same way a can of paint doesn't change color when the lights dim.
8
+ * Reach for these when a component needs a specific hue rather than a
9
+ * themed role — data viz series, tags/badges, status chips.
10
+ *
11
+ * Every step passes WCAG AA (>=4.5:1) as text against its own scale's
12
+ * 100 step when paired at least 800 steps apart — e.g. teal-900 text on a
13
+ * teal-100 background — see docs/guide/colors.md for the full pairing
14
+ * guidance. Steps 600-900 are dark enough to pair with white text
15
+ * (--vox-color-text-inverse) as a solid fill.
16
+ */
17
+
18
+ :root {
19
+ /* gray */
20
+ --vox-palette-gray-100: #f1f3f4;
21
+ --vox-palette-gray-200: #dde1e3;
22
+ --vox-palette-gray-300: #c1c9cd;
23
+ --vox-palette-gray-400: #a0abb1;
24
+ --vox-palette-gray-500: #7e8e95;
25
+ --vox-palette-gray-600: #67777e;
26
+ --vox-palette-gray-700: #535f65;
27
+ --vox-palette-gray-800: #404a4f;
28
+ --vox-palette-gray-900: #2c3235;
29
+
30
+ /* teal */
31
+ --vox-palette-teal-100: #eafaf9;
32
+ --vox-palette-teal-200: #cdf3f1;
33
+ --vox-palette-teal-300: #a4eae5;
34
+ --vox-palette-teal-400: #73ded7;
35
+ --vox-palette-teal-500: #41d2c9;
36
+ --vox-palette-teal-600: #2cbab0;
37
+ --vox-palette-teal-700: #23958d;
38
+ --vox-palette-teal-800: #1b746e;
39
+ --vox-palette-teal-900: #124e4a;
40
+
41
+ /* blue */
42
+ --vox-palette-blue-100: #e9f2fb;
43
+ --vox-palette-blue-200: #cadff6;
44
+ --vox-palette-blue-300: #9fc4ef;
45
+ --vox-palette-blue-400: #6aa4e7;
46
+ --vox-palette-blue-500: #3584de;
47
+ --vox-palette-blue-600: #206dc5;
48
+ --vox-palette-blue-700: #1a579e;
49
+ --vox-palette-blue-800: #14447b;
50
+ --vox-palette-blue-900: #0e2e53;
51
+
52
+ /* green */
53
+ --vox-palette-green-100: #ecf9f1;
54
+ --vox-palette-green-200: #d1f0dc;
55
+ --vox-palette-green-300: #abe3bf;
56
+ --vox-palette-green-400: #7dd49d;
57
+ --vox-palette-green-500: #4fc47a;
58
+ --vox-palette-green-600: #39ac63;
59
+ --vox-palette-green-700: #2e8a50;
60
+ --vox-palette-green-800: #246b3e;
61
+ --vox-palette-green-900: #18492a;
62
+
63
+ /* gold */
64
+ --vox-palette-gold-100: #fdf6e8;
65
+ --vox-palette-gold-200: #f9e9c7;
66
+ --vox-palette-gold-300: #f5d699;
67
+ --vox-palette-gold-400: #efc061;
68
+ --vox-palette-gold-500: #eaaa2a;
69
+ --vox-palette-gold-600: #d19215;
70
+ --vox-palette-gold-700: #a77511;
71
+ --vox-palette-gold-800: #825b0d;
72
+ --vox-palette-gold-900: #583e09;
73
+
74
+ /* red */
75
+ --vox-palette-red-100: #fbeaeb;
76
+ --vox-palette-red-200: #f5cccf;
77
+ --vox-palette-red-300: #eda1a7;
78
+ --vox-palette-red-400: #e36d77;
79
+ --vox-palette-red-500: #d93a47;
80
+ --vox-palette-red-600: #c12532;
81
+ --vox-palette-red-700: #9a1d28;
82
+ --vox-palette-red-800: #78171f;
83
+ --vox-palette-red-900: #511015;
84
+
85
+ /* purple */
86
+ --vox-palette-purple-100: #f1ecf9;
87
+ --vox-palette-purple-200: #ded1f0;
88
+ --vox-palette-purple-300: #c2abe3;
89
+ --vox-palette-purple-400: #a17dd4;
90
+ --vox-palette-purple-500: #804fc4;
91
+ --vox-palette-purple-600: #6939ac;
92
+ --vox-palette-purple-700: #542e8a;
93
+ --vox-palette-purple-800: #41246b;
94
+ --vox-palette-purple-900: #2c1849;
95
+ }
@@ -29,8 +29,8 @@
29
29
  --vox-color-warning-1: #915930;
30
30
  --vox-color-warning-soft: rgba(234, 179, 8, 0.14);
31
31
  --vox-color-danger-1: #b8272c;
32
- --vox-color-danger-2: #d5393e;
33
- --vox-color-danger-3: #e0575b;
32
+ --vox-color-danger-2: #c9333a;
33
+ --vox-color-danger-3: #d5393e;
34
34
  --vox-color-danger-soft: rgba(244, 63, 94, 0.14);
35
35
 
36
36
  /* Surfaces */
@@ -42,12 +42,12 @@
42
42
  /* Text */
43
43
  --vox-color-text-1: #12262c;
44
44
  --vox-color-text-2: #4c6469;
45
- --vox-color-text-3: #86999c;
45
+ --vox-color-text-3: #5c7377;
46
46
  --vox-color-text-inverse: #ffffff;
47
47
 
48
48
  /* Lines */
49
49
  --vox-color-divider: rgba(18, 38, 44, 0.12);
50
- --vox-color-border: rgba(18, 38, 44, 0.28);
50
+ --vox-color-border: rgba(18, 38, 44, 0.55);
51
51
 
52
52
  /* Typography */
53
53
  --vox-font-family-base: 'Inter', ui-sans-serif, system-ui, -apple-system,
@@ -92,7 +92,7 @@
92
92
  --vox-color-warning-1: #f9b44e;
93
93
  --vox-color-warning-soft: rgba(234, 179, 8, 0.16);
94
94
  --vox-color-danger-1: #f66f81;
95
- --vox-color-danger-2: #f14158;
95
+ --vox-color-danger-2: #d13b52;
96
96
  --vox-color-danger-3: #b62a3c;
97
97
  --vox-color-danger-soft: rgba(244, 63, 94, 0.16);
98
98
 
@@ -103,11 +103,11 @@
103
103
 
104
104
  --vox-color-text-1: #dff3f0;
105
105
  --vox-color-text-2: #9fb8bb;
106
- --vox-color-text-3: #5f7275;
106
+ --vox-color-text-3: #88999c;
107
107
  --vox-color-text-inverse: #ffffff;
108
108
 
109
109
  --vox-color-divider: rgba(159, 184, 187, 0.24);
110
- --vox-color-border: rgba(159, 184, 187, 0.5);
110
+ --vox-color-border: rgba(159, 184, 187, 0.6);
111
111
 
112
112
  --vox-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.24);
113
113
  --vox-shadow-2: 0 3px 12px rgba(0, 0, 0, 0.26), 0 1px 4px rgba(0, 0, 0, 0.26);