@epilot/spark-ui 0.18.1 → 0.19.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 (160) hide show
  1. package/dist/components/attachment.d.cts +1 -1
  2. package/dist/components/attachment.d.ts +1 -1
  3. package/dist/components/bar-chart.cjs +1 -1
  4. package/dist/components/bar-chart.js +2 -2
  5. package/dist/components/breadcrumbs.cjs +1 -1
  6. package/dist/components/breadcrumbs.cjs.map +1 -1
  7. package/dist/components/breadcrumbs.js +1 -1
  8. package/dist/components/breadcrumbs.js.map +1 -1
  9. package/dist/components/bubble.d.cts +1 -1
  10. package/dist/components/bubble.d.ts +1 -1
  11. package/dist/components/button-group.cjs +1 -1
  12. package/dist/components/button-group.cjs.map +1 -1
  13. package/dist/components/button-group.js +1 -1
  14. package/dist/components/button-group.js.map +1 -1
  15. package/dist/components/button.d.cts +2 -2
  16. package/dist/components/button.d.ts +2 -2
  17. package/dist/components/calendar.cjs +4 -4
  18. package/dist/components/calendar.cjs.map +1 -1
  19. package/dist/components/calendar.js +4 -4
  20. package/dist/components/calendar.js.map +1 -1
  21. package/dist/components/checkbox.cjs +1 -1
  22. package/dist/components/checkbox.cjs.map +1 -1
  23. package/dist/components/checkbox.js +1 -1
  24. package/dist/components/checkbox.js.map +1 -1
  25. package/dist/components/day-of-week-picker.cjs +2 -2
  26. package/dist/components/day-of-week-picker.cjs.map +1 -1
  27. package/dist/components/day-of-week-picker.js +2 -2
  28. package/dist/components/day-of-week-picker.js.map +1 -1
  29. package/dist/components/dropdown-menu.cjs +8 -8
  30. package/dist/components/dropdown-menu.cjs.map +1 -1
  31. package/dist/components/dropdown-menu.js +8 -8
  32. package/dist/components/dropdown-menu.js.map +1 -1
  33. package/dist/components/field.cjs +1 -1
  34. package/dist/components/field.cjs.map +1 -1
  35. package/dist/components/field.js +1 -1
  36. package/dist/components/field.js.map +1 -1
  37. package/dist/components/input-date.cjs +6 -6
  38. package/dist/components/input-date.cjs.map +1 -1
  39. package/dist/components/input-date.d.cts +2 -1
  40. package/dist/components/input-date.d.ts +2 -1
  41. package/dist/components/input-date.js +6 -6
  42. package/dist/components/input-date.js.map +1 -1
  43. package/dist/components/input-otp.cjs +2 -2
  44. package/dist/components/input-otp.cjs.map +1 -1
  45. package/dist/components/input-otp.js +2 -2
  46. package/dist/components/input-otp.js.map +1 -1
  47. package/dist/components/input.cjs +2 -2
  48. package/dist/components/input.cjs.map +1 -1
  49. package/dist/components/input.js +2 -2
  50. package/dist/components/input.js.map +1 -1
  51. package/dist/components/label.cjs +1 -1
  52. package/dist/components/label.cjs.map +1 -1
  53. package/dist/components/label.js +1 -1
  54. package/dist/components/label.js.map +1 -1
  55. package/dist/components/line-chart.cjs +3 -3
  56. package/dist/components/line-chart.js +4 -4
  57. package/dist/components/list.cjs +2 -2
  58. package/dist/components/list.cjs.map +1 -1
  59. package/dist/components/list.js +2 -2
  60. package/dist/components/list.js.map +1 -1
  61. package/dist/components/marker.cjs +2 -2
  62. package/dist/components/marker.cjs.map +1 -1
  63. package/dist/components/marker.d.cts +1 -1
  64. package/dist/components/marker.d.ts +1 -1
  65. package/dist/components/marker.js +2 -2
  66. package/dist/components/marker.js.map +1 -1
  67. package/dist/components/message-scroller.cjs +1 -1
  68. package/dist/components/message-scroller.js +2 -2
  69. package/dist/components/on-off-button.cjs +1 -1
  70. package/dist/components/on-off-button.cjs.map +1 -1
  71. package/dist/components/on-off-button.js +1 -1
  72. package/dist/components/on-off-button.js.map +1 -1
  73. package/dist/components/page-header.d.cts +1 -1
  74. package/dist/components/page-header.d.ts +1 -1
  75. package/dist/components/power-history-chart.cjs +3 -3
  76. package/dist/components/power-history-chart.js +4 -4
  77. package/dist/components/power-history.cjs +1 -1
  78. package/dist/components/power-history.js +1 -1
  79. package/dist/components/power-network.js +1 -1
  80. package/dist/components/radio.cjs +1 -1
  81. package/dist/components/radio.cjs.map +1 -1
  82. package/dist/components/radio.js +1 -1
  83. package/dist/components/radio.js.map +1 -1
  84. package/dist/components/schedule-list.cjs +1 -1
  85. package/dist/components/schedule-list.cjs.map +1 -1
  86. package/dist/components/schedule-list.js +1 -1
  87. package/dist/components/schedule-list.js.map +1 -1
  88. package/dist/components/scroll-area.cjs +2 -2
  89. package/dist/components/scroll-area.cjs.map +1 -1
  90. package/dist/components/scroll-area.js +2 -2
  91. package/dist/components/scroll-area.js.map +1 -1
  92. package/dist/components/segmented-control.cjs +1 -1
  93. package/dist/components/segmented-control.cjs.map +1 -1
  94. package/dist/components/segmented-control.js +1 -1
  95. package/dist/components/segmented-control.js.map +1 -1
  96. package/dist/components/select.cjs +6 -6
  97. package/dist/components/select.cjs.map +1 -1
  98. package/dist/components/select.js +6 -6
  99. package/dist/components/select.js.map +1 -1
  100. package/dist/components/series-legend.cjs +2 -2
  101. package/dist/components/series-legend.cjs.map +1 -1
  102. package/dist/components/series-legend.js +2 -2
  103. package/dist/components/series-legend.js.map +1 -1
  104. package/dist/components/slider.cjs +1 -1
  105. package/dist/components/slider.cjs.map +1 -1
  106. package/dist/components/slider.js +1 -1
  107. package/dist/components/slider.js.map +1 -1
  108. package/dist/components/smart-toggle-button.cjs +1 -1
  109. package/dist/components/smart-toggle-button.cjs.map +1 -1
  110. package/dist/components/smart-toggle-button.js +1 -1
  111. package/dist/components/smart-toggle-button.js.map +1 -1
  112. package/dist/components/solar-forecast-chart.js +1 -1
  113. package/dist/components/stepper.cjs +2 -2
  114. package/dist/components/stepper.cjs.map +1 -1
  115. package/dist/components/stepper.js +2 -2
  116. package/dist/components/stepper.js.map +1 -1
  117. package/dist/components/switch.cjs +1 -1
  118. package/dist/components/switch.cjs.map +1 -1
  119. package/dist/components/switch.js +1 -1
  120. package/dist/components/switch.js.map +1 -1
  121. package/dist/components/table.cjs +147 -0
  122. package/dist/components/table.cjs.map +1 -0
  123. package/dist/components/table.d.cts +75 -0
  124. package/dist/components/table.d.ts +75 -0
  125. package/dist/components/table.js +138 -0
  126. package/dist/components/table.js.map +1 -0
  127. package/dist/components/tabs.cjs +2 -2
  128. package/dist/components/tabs.cjs.map +1 -1
  129. package/dist/components/tabs.js +2 -2
  130. package/dist/components/tabs.js.map +1 -1
  131. package/dist/components/textarea.cjs +2 -2
  132. package/dist/components/textarea.cjs.map +1 -1
  133. package/dist/components/textarea.js +2 -2
  134. package/dist/components/textarea.js.map +1 -1
  135. package/dist/components/theme.cjs.map +1 -1
  136. package/dist/components/theme.d.cts +2 -2
  137. package/dist/components/theme.d.ts +2 -2
  138. package/dist/components/theme.js.map +1 -1
  139. package/dist/components/time-picker.cjs +1 -1
  140. package/dist/components/time-picker.cjs.map +1 -1
  141. package/dist/components/time-picker.js +1 -1
  142. package/dist/components/time-picker.js.map +1 -1
  143. package/dist/components/tooltip.cjs +1 -1
  144. package/dist/components/tooltip.cjs.map +1 -1
  145. package/dist/components/tooltip.js +1 -1
  146. package/dist/components/tooltip.js.map +1 -1
  147. package/dist/lib/accent-theme.cjs +199 -12
  148. package/dist/lib/accent-theme.cjs.map +1 -1
  149. package/dist/lib/accent-theme.d.cts +45 -2
  150. package/dist/lib/accent-theme.d.ts +45 -2
  151. package/dist/lib/accent-theme.js +195 -13
  152. package/dist/lib/accent-theme.js.map +1 -1
  153. package/dist/lib/container-chrome.cjs +1 -1
  154. package/dist/lib/container-chrome.cjs.map +1 -1
  155. package/dist/lib/container-chrome.js +1 -1
  156. package/dist/lib/container-chrome.js.map +1 -1
  157. package/dist/styles/index.css +9 -27
  158. package/dist/styles/spark-default.css +373 -19
  159. package/dist/styles/theme.css +2 -2
  160. package/package.json +17 -1
@@ -21,7 +21,7 @@
21
21
  --spark-8: #7aabe7;
22
22
  --spark-9: #005eb4;
23
23
  --spark-10: #004fa3;
24
- --spark-11: #0f65bc;
24
+ --spark-11: #0862b8;
25
25
  --spark-12: #113157;
26
26
 
27
27
  --spark-a1: #0055aa03;
@@ -34,7 +34,7 @@
34
34
  --spark-a8: #005ed185;
35
35
  --spark-a9: #005eb4;
36
36
  --spark-a10: #004fa3;
37
- --spark-a11: #005bb8f0;
37
+ --spark-a11: #005db6f7;
38
38
  --spark-a12: #00224bee;
39
39
 
40
40
  --spark-contrast: #ffffff;
@@ -44,20 +44,123 @@
44
44
  --spark-indicator: #005eb4;
45
45
  --spark-track: #005eb4;
46
46
 
47
- /* Companion tokens for the colour axis (Button color="neutral"|"danger").
48
- These reference gamut-aware scales / flip per appearance, so one declaration
49
- covers sRGB + p3 and light + dark. --neutral-contrast tracks the neutral knob;
50
- --red-contrast is white (clears 3:1 on the appearance-stable red-9). */
47
+ /* The colour axis (Button color="neutral"|"danger"|"success"|"warning"),
48
+ generated the same way as --spark-* above: generateRadixColors() seeded with
49
+ the brand hex, which the generator pins at step 9. Radix's stock step 9
50
+ (#e5484d/#30a46c/#f76b15) is too light to carry white text (WCAG 2.97-3.91),
51
+ and dark ink on it clears WCAG only by exploiting its blind spot for
52
+ saturated mid-tones (APCA Lc 38-46, under the ~60 body-text floor). Seeding
53
+ the generator with a darker step 9 satisfies both metrics (WCAG 4.68-5.55,
54
+ Lc 77-82) and re-derives 1-8/11-12 and every alpha step around it, so the
55
+ ramp stays internally consistent -- aN still composites to step N over the
56
+ canvas. -surface stays step 2, the static families' convention (see
57
+ neutralSparkVars in accent-theme.ts), not the generator's translucent
58
+ surface. Declared per appearance because Radix's `<scale>.css` and
59
+ `<scale>-dark.css` sit in this same layer. --neutral-* is untouched: it
60
+ tracks the neutral knob. spark-default-parity.test.ts re-derives every value
61
+ below from the same generator call, so drift fails the suite. */
62
+ --red-1: #fffcfc;
63
+ --red-2: #fff7f6;
64
+ --red-3: #ffebe8;
65
+ --red-4: #ffdbd5;
66
+ --red-5: #ffcdc5;
67
+ --red-6: #ffbcb4;
68
+ --red-7: #f8a89e;
69
+ --red-8: #f08d82;
70
+ --red-9: #cf161c;
71
+ --red-10: #be0006;
72
+ --red-11: #be0006;
73
+ --red-12: #671512;
74
+ --red-a1: #ff000003;
75
+ --red-a2: #ff1d0009;
76
+ --red-a3: #ff220017;
77
+ --red-a4: #ff25002a;
78
+ --red-a5: #ff24003a;
79
+ --red-a6: #ff1c014b;
80
+ --red-a7: #ed1b0061;
81
+ --red-a8: #e117007d;
82
+ --red-a9: #cb0007e9;
83
+ --red-a10: #be0006;
84
+ --red-a11: #be0006;
85
+ --red-a12: #5b0300ed;
51
86
  --red-contrast: #fff;
52
87
  --red-on-solid: #fff;
53
88
  --red-surface: var(--red-2);
89
+
90
+ --green-1: #fbfefc;
91
+ --green-2: #f5fbf7;
92
+ --green-3: #e7f6ec;
93
+ --green-4: #d8f0e0;
94
+ --green-5: #c7e8d2;
95
+ --green-6: #b2dcc0;
96
+ --green-7: #94cca8;
97
+ --green-8: #69b787;
98
+ --green-9: #147a49;
99
+ --green-10: #006b3c;
100
+ --green-11: #007040;
101
+ --green-12: #203a2a;
102
+ --green-a1: #00c04004;
103
+ --green-a2: #0099330a;
104
+ --green-a3: #00a03618;
105
+ --green-a4: #009d3527;
106
+ --green-a5: #00973338;
107
+ --green-a6: #008c2f4d;
108
+ --green-a7: #0186306b;
109
+ --green-a8: #00853396;
110
+ --green-a9: #006f3aeb;
111
+ --green-a10: #006b3c;
112
+ --green-a11: #007040;
113
+ --green-a12: #001e0cdf;
54
114
  --green-contrast: #fff;
55
115
  --green-on-solid: #fff;
56
116
  --green-surface: var(--green-2);
117
+
118
+ --orange-1: #fefcfb;
119
+ --orange-2: #fff6f2;
120
+ --orange-3: #ffebe2;
121
+ --orange-4: #ffd8c3;
122
+ --orange-5: #ffc9af;
123
+ --orange-6: #ffbca0;
124
+ --orange-7: #f5ab8d;
125
+ --orange-8: #ea936f;
126
+ --orange-9: #c84c00;
127
+ --orange-10: #b93d00;
128
+ --orange-11: #ab3000;
129
+ --orange-12: #562e1e;
130
+ --orange-a1: #c0400004;
131
+ --orange-a2: #ff4f000d;
132
+ --orange-a3: #ff50001d;
133
+ --orange-a4: #ff5a003c;
134
+ --orange-a5: #ff530050;
135
+ --orange-a6: #ff4c005f;
136
+ --orange-a7: #e9440072;
137
+ --orange-a8: #da400090;
138
+ --orange-a9: #c84c00;
139
+ --orange-a10: #b93d00;
140
+ --orange-a11: #ab3000;
141
+ --orange-a12: #401200e1;
57
142
  --orange-contrast: #fff;
58
143
  --orange-on-solid: #fff;
59
144
  --orange-surface: var(--orange-2);
60
- --neutral-contrast: var(--neutral-12);
145
+ /* Solid-fill ink per neutral family, so [data-neutral-color] swaps the ink
146
+ with the ramp. Light step 9 is a desaturated mid-grey, where no ink
147
+ satisfies both metrics: white reads best at APCA Lc 65.9-66.5 but only
148
+ WCAG 3.30-3.36, while black -- the WCAG-optimal ink at 6.26-6.36 -- caps
149
+ at Lc 43.7, so Lc 60 is unreachable for anything that passes WCAG.
150
+ We take the perceptual win; the resulting axe color-contrast violations
151
+ are baselined deliberately in apps/docs/a11y/a11y-baseline.json. */
152
+ --slate-contrast: #fff;
153
+ --mauve-contrast: #fff;
154
+ --gray-contrast: #fff;
155
+ --sage-contrast: #fff;
156
+ --olive-contrast: #fff;
157
+ --sand-contrast: #fff;
158
+ --slate-placeholder: #00071696;
159
+ --mauve-placeholder: #06001393;
160
+ --gray-placeholder: #00000092;
161
+ --sage-placeholder: #000a0797;
162
+ --olive-placeholder: #020a0097;
163
+ --sand-placeholder: #0a0a0098;
61
164
  --neutral-on-solid: #fff;
62
165
  --neutral-surface: var(--neutral-2);
63
166
 
@@ -97,7 +200,7 @@
97
200
  --spark-8: oklch(73% 0.102 254.2);
98
201
  --spark-9: oklch(48.6% 0.1556 254.2);
99
202
  --spark-10: oklch(43.5% 0.1556 254.2);
100
- --spark-11: oklch(51% 0.1556 254.2);
203
+ --spark-11: oklch(49.9% 0.1556 254.2);
101
204
  --spark-12: oklch(31.3% 0.077 254.2);
102
205
 
103
206
  --spark-a1: color(display-p3 0.0235 0.349 0.6745 / 0.012);
@@ -110,7 +213,7 @@
110
213
  --spark-a8: color(display-p3 0.0039 0.3098 0.7647 / 0.483);
111
214
  --spark-a9: color(display-p3 0 0.2471 0.6235 / 0.848);
112
215
  --spark-a10: color(display-p3 0 0.2118 0.5608 / 0.879);
113
- --spark-a11: color(display-p3 0 0.2549 0.651 / 0.82);
216
+ --spark-a11: color(display-p3 0 0.251 0.6353 / 0.832);
114
217
  --spark-a12: color(display-p3 0 0.098 0.2549 / 0.899);
115
218
 
116
219
  --spark-contrast: #ffffff;
@@ -119,6 +222,82 @@
119
222
  --spark-background: #ffffff;
120
223
  --spark-indicator: oklch(48.6% 0.1556 254.2);
121
224
  --spark-track: oklch(48.6% 0.1556 254.2);
225
+
226
+ /* Colour axis, wide-gamut twin (light). */
227
+ --red-1: oklch(99.4% 0.0033 27.27);
228
+ --red-2: oklch(98.3% 0.0088 27.27);
229
+ --red-3: oklch(95.6% 0.0226 27.27);
230
+ --red-4: oklch(92.8% 0.0508 27.27);
231
+ --red-5: oklch(89.6% 0.0666 27.27);
232
+ --red-6: oklch(85.7% 0.0802 27.27);
233
+ --red-7: oklch(80.7% 0.0963 27.27);
234
+ --red-8: oklch(74.5% 0.1219 27.27);
235
+ --red-9: oklch(54.4% 0.2125 27.27);
236
+ --red-10: oklch(49.8% 0.2125 27.27);
237
+ --red-11: oklch(49.9% 0.2125 27.27);
238
+ --red-12: oklch(33.9% 0.1158 27.27);
239
+ --red-a1: color(display-p3 0.6745 0.0235 0.0235 / 0.012);
240
+ --red-a2: color(display-p3 0.8941 0.1294 0.0235 / 0.036);
241
+ --red-a3: color(display-p3 0.8667 0.1451 0.0118 / 0.087);
242
+ --red-a4: color(display-p3 0.8549 0.149 0.0039 / 0.161);
243
+ --red-a5: color(display-p3 0.8588 0.1451 0.0039 / 0.22);
244
+ --red-a6: color(display-p3 0.8667 0.1294 0.0039 / 0.287);
245
+ --red-a7: color(display-p3 0.8 0.1098 0.0039 / 0.369);
246
+ --red-a8: color(display-p3 0.7608 0.102 0.0039 / 0.475);
247
+ --red-a9: color(display-p3 0.6941 0.0275 0 / 0.84);
248
+ --red-a10: color(display-p3 0.6471 0.0392 0 / 0.899);
249
+ --red-a11: color(display-p3 0.6471 0.0039 0 / 0.899);
250
+ --red-a12: color(display-p3 0.3059 0.0235 0 / 0.91);
251
+
252
+ --green-1: oklch(99.4% 0.0041 156);
253
+ --green-2: oklch(98.2% 0.0081 156);
254
+ --green-3: oklch(95.9% 0.0205 156);
255
+ --green-4: oklch(93.3% 0.0326 156);
256
+ --green-5: oklch(90% 0.0451 156);
257
+ --green-6: oklch(85.7% 0.0592 156);
258
+ --green-7: oklch(79.8% 0.0776 156);
259
+ --green-8: oklch(71.5% 0.1046 156);
260
+ --green-9: oklch(51.2% 0.1175 156);
261
+ --green-10: oklch(46.3% 0.1175 156);
262
+ --green-11: oklch(48% 0.1175 156);
263
+ --green-12: oklch(32.3% 0.0436 156);
264
+ --green-a1: color(display-p3 0.0235 0.6745 0.0235 / 0.012);
265
+ --green-a2: color(display-p3 0.0235 0.5647 0.1294 / 0.036);
266
+ --green-a3: color(display-p3 0.0078 0.5765 0.1529 / 0.083);
267
+ --green-a4: color(display-p3 0.0078 0.5333 0.1255 / 0.134);
268
+ --green-a5: color(display-p3 0.0078 0.5255 0.1451 / 0.197);
269
+ --green-a6: color(display-p3 0.0039 0.4824 0.1176 / 0.271);
270
+ --green-a7: color(display-p3 0.0039 0.4431 0.1176 / 0.373);
271
+ --green-a8: color(display-p3 0 0.4353 0.1176 / 0.514);
272
+ --green-a9: color(display-p3 0 0.3176 0.102 / 0.777);
273
+ --green-a10: color(display-p3 0 0.2863 0.0902 / 0.824);
274
+ --green-a11: color(display-p3 0 0.3098 0.1059 / 0.816);
275
+ --green-a12: color(display-p3 0 0.0863 0.0235 / 0.851);
276
+
277
+ --orange-1: oklch(99.2% 0.0025 42.62);
278
+ --orange-2: oklch(98% 0.0121 42.62);
279
+ --orange-3: oklch(95.7% 0.0294 42.62);
280
+ --orange-4: oklch(92.1% 0.0654 42.62);
281
+ --orange-5: oklch(89.1% 0.0867 42.62);
282
+ --orange-6: oklch(85.6% 0.0924 42.62);
283
+ --orange-7: oklch(80.5% 0.0978 42.62);
284
+ --orange-8: oklch(74.4% 0.117 42.62);
285
+ --orange-9: oklch(57.6% 0.172 42.62);
286
+ --orange-10: oklch(53.2% 0.172 42.62);
287
+ --orange-11: oklch(49.4% 0.1707 41.39);
288
+ --orange-12: oklch(34.9% 0.0649 42.62);
289
+ --orange-a1: color(display-p3 0.7569 0.2667 0.0235 / 0.016);
290
+ --orange-a2: color(display-p3 0.8392 0.2667 0.0235 / 0.048);
291
+ --orange-a3: color(display-p3 0.8941 0.3255 0.0039 / 0.11);
292
+ --orange-a4: color(display-p3 0.898 0.3373 0.0039 / 0.224);
293
+ --orange-a5: color(display-p3 0.898 0.3176 0.0039 / 0.299);
294
+ --orange-a6: color(display-p3 0.8902 0.298 0.0039 / 0.357);
295
+ --orange-a7: color(display-p3 0.8078 0.2588 0.0039 / 0.428);
296
+ --orange-a8: color(display-p3 0.7608 0.2431 0 / 0.538);
297
+ --orange-a9: color(display-p3 0.6863 0.2314 0 / 0.871);
298
+ --orange-a10: color(display-p3 0.6314 0.1843 0 / 0.891);
299
+ --orange-a11: color(display-p3 0.6196 0.2275 0);
300
+ --orange-a12: color(display-p3 0.2157 0.0667 0 / 0.871);
122
301
  }
123
302
  }
124
303
  }
@@ -158,16 +337,104 @@
158
337
  --spark-indicator: #005eb4;
159
338
  --spark-track: #005eb4;
160
339
 
340
+ /* Colour axis, dark twin -- see the light block above. */
341
+ --red-1: #000;
342
+ --red-2: #1c0a09;
343
+ --red-3: #400103;
344
+ --red-4: #5a0000;
345
+ --red-5: #6f0000;
346
+ --red-6: #840003;
347
+ --red-7: #a00f13;
348
+ --red-8: #cf151c;
349
+ --red-9: #cf161c;
350
+ --red-10: #be0006;
351
+ --red-11: #ff9083;
352
+ --red-12: #ffcdc4;
353
+ --red-a1: #00000000;
354
+ --red-a2: #ff5c521c;
355
+ --red-a3: #ff040c40;
356
+ --red-a4: #ff00005a;
357
+ --red-a5: #ff00006f;
358
+ --red-a6: #ff000684;
359
+ --red-a7: #ff181fa0;
360
+ --red-a8: #ff1a23cf;
361
+ --red-a9: #ff1b23cf;
362
+ --red-a10: #ff0008be;
363
+ --red-a11: #ff9083;
364
+ --red-a12: #ffcdc4;
161
365
  --red-contrast: #fff;
162
366
  --red-on-solid: #fff;
163
367
  --red-surface: var(--red-2);
368
+
369
+ --green-1: #000;
370
+ --green-2: #0b140e;
371
+ --green-3: #0f291a;
372
+ --green-4: #0a3a22;
373
+ --green-5: #0f492b;
374
+ --green-6: #155936;
375
+ --green-7: #1a6a41;
376
+ --green-8: #1b7e4d;
377
+ --green-9: #147a49;
378
+ --green-10: #196940;
379
+ --green-11: #74ce97;
380
+ --green-12: #aaf4c5;
381
+ --green-a1: #00000000;
382
+ --green-a2: #8dffb314;
383
+ --green-a3: #5effa229;
384
+ --green-a4: #2cff963a;
385
+ --green-a5: #35ff9749;
386
+ --green-a6: #3dff9b59;
387
+ --green-a7: #3fff9d6a;
388
+ --green-a8: #37ff9c7e;
389
+ --green-a9: #2aff997a;
390
+ --green-a10: #3dff9c69;
391
+ --green-a11: #90ffbbce;
392
+ --green-a12: #b2ffcef4;
164
393
  --green-contrast: #fff;
165
394
  --green-on-solid: #fff;
166
395
  --green-surface: var(--green-2);
396
+
397
+ --orange-1: #000;
398
+ --orange-2: #190e09;
399
+ --orange-3: #391000;
400
+ --orange-4: #530900;
401
+ --orange-5: #651100;
402
+ --orange-6: #771f00;
403
+ --orange-7: #903000;
404
+ --orange-8: #bb3f00;
405
+ --orange-9: #c84c00;
406
+ --orange-10: #b93d00;
407
+ --orange-11: #ff9564;
408
+ --orange-12: #ffd2be;
409
+ --orange-a1: #00000000;
410
+ --orange-a2: #ff8f5c19;
411
+ --orange-a3: #ff480039;
412
+ --orange-a4: #ff1c0053;
413
+ --orange-a5: #ff2b0065;
414
+ --orange-a6: #ff430077;
415
+ --orange-a7: #ff550090;
416
+ --orange-a8: #ff5600bb;
417
+ --orange-a9: #ff6100c8;
418
+ --orange-a10: #ff5400b9;
419
+ --orange-a11: #ff9564;
420
+ --orange-a12: #ffd2be;
167
421
  --orange-contrast: #fff;
168
422
  --orange-on-solid: #fff;
169
423
  --orange-surface: var(--orange-2);
170
- --neutral-contrast: var(--neutral-12);
424
+ /* Dark step 9 takes white on both metrics (WCAG 5.08-5.18, APCA 80.5-81.0);
425
+ step 12 loses on both (4.38-4.46, 69.2-69.8). No trade-off here. */
426
+ --slate-contrast: #fff;
427
+ --mauve-contrast: #fff;
428
+ --gray-contrast: #fff;
429
+ --sage-contrast: #fff;
430
+ --olive-contrast: #fff;
431
+ --sand-contrast: #fff;
432
+ --slate-placeholder: #f0f8ffaa;
433
+ --mauve-placeholder: #f4f1ffae;
434
+ --gray-placeholder: #ffffffa2;
435
+ --sage-placeholder: #f3fffba4;
436
+ --olive-placeholder: #f6fff3a4;
437
+ --sand-placeholder: #fffef4a4;
171
438
  --neutral-on-solid: #fff;
172
439
  --neutral-surface: var(--neutral-2);
173
440
 
@@ -225,6 +492,82 @@
225
492
  --spark-background: #000;
226
493
  --spark-indicator: oklch(48.6% 0.1556 254.2);
227
494
  --spark-track: oklch(48.6% 0.1556 254.2);
495
+
496
+ /* Colour axis, wide-gamut twin (dark). */
497
+ --red-1: oklch(0% 0.0193 27.27);
498
+ --red-2: oklch(17.3% 0.0312 27.27);
499
+ --red-3: oklch(23.5% 0.0933 27.27);
500
+ --red-4: oklch(28.1% 0.1391 27.27);
501
+ --red-5: oklch(32.7% 0.1546 27.27);
502
+ --red-6: oklch(38% 0.1615 27.27);
503
+ --red-7: oklch(44.9% 0.175 27.27);
504
+ --red-8: oklch(54.3% 0.2125 27.27);
505
+ --red-9: oklch(54.4% 0.2125 27.27);
506
+ --red-10: oklch(49.8% 0.2125 27.27);
507
+ --red-11: oklch(78.4% 0.2125 27.27);
508
+ --red-12: oklch(90.2% 0.0766 27.27);
509
+ --red-a1: color(display-p3 0 0 0 / 0);
510
+ --red-a2: color(display-p3 1 0.4235 0.3882 / 0.102);
511
+ --red-a3: color(display-p3 1 0.1216 0.1059 / 0.228);
512
+ --red-a4: color(display-p3 1 0.1373 0.0745 / 0.322);
513
+ --red-a5: color(display-p3 1 0.1608 0.0902 / 0.397);
514
+ --red-a6: color(display-p3 1 0.1765 0.1255 / 0.475);
515
+ --red-a7: color(display-p3 1 0.2314 0.2 / 0.577);
516
+ --red-a8: color(display-p3 1 0.2471 0.2157 / 0.746);
517
+ --red-a9: color(display-p3 1 0.2471 0.2157 / 0.746);
518
+ --red-a10: color(display-p3 1 0.2 0.149 / 0.683);
519
+ --red-a11: color(display-p3 1 0.6235 0.5608 / 0.942);
520
+ --red-a12: color(display-p3 1 0.8392 0.8 / 0.969);
521
+
522
+ --green-1: oklch(0% 0.0162 156);
523
+ --green-2: oklch(18.1% 0.0185 156);
524
+ --green-3: oklch(25.4% 0.0427 156);
525
+ --green-4: oklch(31% 0.0671 156);
526
+ --green-5: oklch(36.1% 0.0782 156);
527
+ --green-6: oklch(41.2% 0.0884 156);
528
+ --green-7: oklch(46.7% 0.1011 156);
529
+ --green-8: oklch(52.5% 0.1175 156);
530
+ --green-9: oklch(51.2% 0.1175 156);
531
+ --green-10: oklch(46.3% 0.1011 156);
532
+ --green-11: oklch(78% 0.1175 156);
533
+ --green-12: oklch(90.7% 0.098 156);
534
+ --green-a1: color(display-p3 0 0 0 / 0);
535
+ --green-a2: color(display-p3 0.6471 0.9961 0.698 / 0.079);
536
+ --green-a3: color(display-p3 0.5529 1 0.6745 / 0.157);
537
+ --green-a4: color(display-p3 0.4392 1 0.6314 / 0.224);
538
+ --green-a5: color(display-p3 0.4745 1 0.6392 / 0.283);
539
+ --green-a6: color(display-p3 0.4902 1 0.6471 / 0.346);
540
+ --green-a7: color(display-p3 0.502 1 0.6667 / 0.408);
541
+ --green-a8: color(display-p3 0.4941 1 0.6549 / 0.487);
542
+ --green-a9: color(display-p3 0.4784 1 0.6431 / 0.471);
543
+ --green-a10: color(display-p3 0.498 1 0.6627 / 0.404);
544
+ --green-a11: color(display-p3 0.6784 1 0.7608 / 0.8);
545
+ --green-a12: color(display-p3 0.7686 1 0.8275 / 0.95);
546
+
547
+ --orange-1: oklch(0% 0.0155 42.62);
548
+ --orange-2: oklch(17.7% 0.0224 42.62);
549
+ --orange-3: oklch(23.9% 0.0703 42.62);
550
+ --orange-4: oklch(28.3% 0.114 42.62);
551
+ --orange-5: oklch(32.7% 0.1271 42.62);
552
+ --orange-6: oklch(37.9% 0.1304 42.62);
553
+ --orange-7: oklch(44.7% 0.1406 42.62);
554
+ --orange-8: oklch(53.8% 0.172 42.62);
555
+ --orange-9: oklch(57.6% 0.172 42.62);
556
+ --orange-10: oklch(53.2% 0.172 42.62);
557
+ --orange-11: oklch(78.6% 0.172 42.62);
558
+ --orange-12: oklch(90.2% 0.0625 42.62);
559
+ --orange-a1: color(display-p3 0 0 0 / 0);
560
+ --orange-a2: color(display-p3 0.9922 0.6039 0.4314 / 0.091);
561
+ --orange-a3: color(display-p3 1 0.3686 0.0784 / 0.204);
562
+ --orange-a4: color(display-p3 1 0.2235 0.0824 / 0.299);
563
+ --orange-a5: color(display-p3 1 0.2745 0.098 / 0.361);
564
+ --orange-a6: color(display-p3 1 0.349 0.1216 / 0.428);
565
+ --orange-a7: color(display-p3 1 0.4157 0.1529 / 0.522);
566
+ --orange-a8: color(display-p3 1 0.4157 0.1686 / 0.679);
567
+ --orange-a9: color(display-p3 1 0.4549 0.1804 / 0.726);
568
+ --orange-a10: color(display-p3 1 0.4118 0.1647 / 0.671);
569
+ --orange-a11: color(display-p3 1 0.6392 0.4549 / 0.946);
570
+ --orange-a12: color(display-p3 1 0.8549 0.7765 / 0.973);
228
571
  }
229
572
  }
230
573
  }
@@ -339,6 +682,8 @@
339
682
  --neutral-a10: var(--slate-a10);
340
683
  --neutral-a11: var(--slate-a11);
341
684
  --neutral-a12: var(--slate-a12);
685
+ --neutral-contrast: var(--slate-contrast);
686
+ --neutral-placeholder: var(--slate-placeholder);
342
687
  }
343
688
 
344
689
  [data-neutral-color='slate'] {
@@ -366,6 +711,8 @@
366
711
  --neutral-a10: var(--slate-a10);
367
712
  --neutral-a11: var(--slate-a11);
368
713
  --neutral-a12: var(--slate-a12);
714
+ --neutral-contrast: var(--slate-contrast);
715
+ --neutral-placeholder: var(--slate-placeholder);
369
716
  }
370
717
 
371
718
  [data-neutral-color='mauve'] {
@@ -393,6 +740,8 @@
393
740
  --neutral-a10: var(--mauve-a10);
394
741
  --neutral-a11: var(--mauve-a11);
395
742
  --neutral-a12: var(--mauve-a12);
743
+ --neutral-contrast: var(--mauve-contrast);
744
+ --neutral-placeholder: var(--mauve-placeholder);
396
745
  }
397
746
 
398
747
  [data-neutral-color='gray'] {
@@ -420,6 +769,8 @@
420
769
  --neutral-a10: var(--gray-a10);
421
770
  --neutral-a11: var(--gray-a11);
422
771
  --neutral-a12: var(--gray-a12);
772
+ --neutral-contrast: var(--gray-contrast);
773
+ --neutral-placeholder: var(--gray-placeholder);
423
774
  }
424
775
 
425
776
  [data-neutral-color='sage'] {
@@ -447,6 +798,8 @@
447
798
  --neutral-a10: var(--sage-a10);
448
799
  --neutral-a11: var(--sage-a11);
449
800
  --neutral-a12: var(--sage-a12);
801
+ --neutral-contrast: var(--sage-contrast);
802
+ --neutral-placeholder: var(--sage-placeholder);
450
803
  }
451
804
 
452
805
  [data-neutral-color='olive'] {
@@ -474,6 +827,8 @@
474
827
  --neutral-a10: var(--olive-a10);
475
828
  --neutral-a11: var(--olive-a11);
476
829
  --neutral-a12: var(--olive-a12);
830
+ --neutral-contrast: var(--olive-contrast);
831
+ --neutral-placeholder: var(--olive-placeholder);
477
832
  }
478
833
 
479
834
  [data-neutral-color='sand'] {
@@ -501,13 +856,15 @@
501
856
  --neutral-a10: var(--sand-a10);
502
857
  --neutral-a11: var(--sand-a11);
503
858
  --neutral-a12: var(--sand-a12);
859
+ --neutral-contrast: var(--sand-contrast);
860
+ --neutral-placeholder: var(--sand-placeholder);
504
861
  }
505
862
 
506
863
  /*
507
864
  * Spacing density presets (between-component only). Sets --spark-spacing,
508
865
  * which feeds --spark-layout-gap (the gap between siblings in layout /
509
- * collection primitives) — NOT Tailwind's --spacing base, so component
510
- * internals stay density-independent. Cascades. No attribute = default.
866
+ * collection primitives, plus Table row height) — NOT Tailwind's --spacing
867
+ * base. Cascades. No attribute = default.
511
868
  */
512
869
  [data-spacing='dense'] {
513
870
  --spark-spacing: 0.2rem;
@@ -524,7 +881,7 @@
524
881
  /* Between-component gap base: density × zoom. On .spark-theme too, so a nested
525
882
  scope re-resolves it from its own knobs (mirrors the --spark-rounded-* calcs
526
883
  above). Layout / collection primitives read this via
527
- gap-[calc(var(--spark-layout-gap)*N)]; component internals never do. */
884
+ gap-[calc(var(--spark-layout-gap)*N)]; Table row height reads it too. */
528
885
  :root,
529
886
  .spark-theme {
530
887
  --spark-layout-gap: calc(
@@ -843,12 +1200,9 @@
843
1200
  --spark-card-bg: var(--spark-card-c-solid, var(--neutral-1));
844
1201
  --spark-card-border: transparent;
845
1202
  --spark-card-border-width: 0px;
846
- --spark-card-fg: var(--spark-card-c-contrast, var(--neutral-contrast));
847
- --spark-card-fg-muted: var(
848
- --spark-card-c-contrast,
849
- var(--neutral-contrast)
850
- );
851
- --spark-card-icon: var(--spark-card-c-contrast, var(--neutral-contrast));
1203
+ --spark-card-fg: var(--spark-card-c-contrast, var(--neutral-12));
1204
+ --spark-card-fg-muted: var(--spark-card-c-contrast, var(--neutral-12));
1205
+ --spark-card-icon: var(--spark-card-c-contrast, var(--neutral-12));
852
1206
  }
853
1207
 
854
1208
  /*
@@ -388,6 +388,7 @@
388
388
  --color-gray-light: var(--neutral-a11);
389
389
  --color-gray-contrast: #ffffff;
390
390
  --color-gray-disabled: var(--neutral-a8);
391
+ --color-gray-placeholder: var(--neutral-placeholder);
391
392
  --color-gray-active: var(--neutral-a9);
392
393
 
393
394
  --color-accent-light: var(--spark-a11);
@@ -483,8 +484,7 @@
483
484
  /* Spacing scale base (used by --spacing() function). Reads ONLY --spark-scaling
484
485
  (the [data-scaling] zoom knob), so component internals — padding, control
485
486
  sizes, icon glyphs — zoom but stay density-independent. The [data-spacing]
486
- density knob is peeled off onto --spark-layout-gap (see spark-default.css),
487
- so it affects the space BETWEEN components, not within them. */
487
+ density knob is peeled off onto --spark-layout-gap instead (see spark-default.css). */
488
488
  --spacing: calc(0.25rem * var(--spark-scaling, 1));
489
489
 
490
490
  /* Font sizes scale with the [data-scaling] zoom (--spark-scaling). Tailwind's
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/spark-ui",
3
- "version": "0.18.1",
3
+ "version": "0.19.0",
4
4
  "description": "React UI component library from Spark SDK",
5
5
  "homepage": "https://spark-ui.epilot.io/docs/ui",
6
6
  "license": "Apache-2.0",
@@ -20,6 +20,22 @@
20
20
  "sideEffects": [
21
21
  "**/*.css"
22
22
  ],
23
+ "typesVersions": {
24
+ "*": {
25
+ "utils/*": [
26
+ "dist/utils/*.d.ts"
27
+ ],
28
+ "hooks/*": [
29
+ "dist/hooks/*.d.ts"
30
+ ],
31
+ "lib/*": [
32
+ "dist/lib/*.d.ts"
33
+ ],
34
+ "*": [
35
+ "dist/components/*.d.ts"
36
+ ]
37
+ }
38
+ },
23
39
  "exports": {
24
40
  "./styles": "./dist/styles/index.css",
25
41
  "./spark-default": "./dist/styles/spark-default.css",