@rokkit/themes 1.0.4 → 1.1.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 (335) hide show
  1. package/README.md +11 -19
  2. package/build.mjs +7 -21
  3. package/package.json +24 -132
  4. package/src/base/carousel.css +2 -2
  5. package/src/base/code-block.css +76 -0
  6. package/src/base/display.css +16 -8
  7. package/src/base/frame.css +36 -0
  8. package/src/base/index.css +2 -0
  9. package/src/base/input.css +57 -14
  10. package/src/base/nav-content.css +3 -3
  11. package/src/base/stepper.css +16 -14
  12. package/src/base/tabs.css +15 -2
  13. package/src/base/typography.css +32 -13
  14. package/src/frosted/button.css +27 -32
  15. package/src/frosted/card.css +8 -12
  16. package/src/frosted/chart.css +6 -6
  17. package/src/frosted/code-block.css +33 -0
  18. package/src/frosted/dropdown.css +9 -14
  19. package/src/frosted/floating-action.css +10 -10
  20. package/src/frosted/floating-navigation.css +13 -13
  21. package/src/frosted/frame.css +17 -0
  22. package/src/frosted/index.css +2 -0
  23. package/src/frosted/input.css +16 -17
  24. package/src/frosted/list.css +46 -21
  25. package/src/frosted/menu.css +13 -17
  26. package/src/frosted/message.css +8 -8
  27. package/src/frosted/range.css +8 -8
  28. package/src/frosted/search-filter.css +8 -8
  29. package/src/frosted/select.css +31 -31
  30. package/src/frosted/status-list.css +17 -17
  31. package/src/frosted/step-indicator.css +8 -9
  32. package/src/frosted/swatch.css +3 -3
  33. package/src/frosted/switch.css +3 -4
  34. package/src/frosted/table.css +16 -16
  35. package/src/frosted/tabs.css +8 -8
  36. package/src/frosted/timeline.css +5 -6
  37. package/src/frosted/toc.css +4 -4
  38. package/src/frosted/toggle.css +7 -7
  39. package/src/frosted/toolbar.css +15 -15
  40. package/src/frosted/tree.css +19 -19
  41. package/src/index.css +2 -0
  42. package/src/index.js +0 -1
  43. package/src/material/button.css +29 -29
  44. package/src/material/card.css +12 -12
  45. package/src/material/chart.css +6 -6
  46. package/src/material/code-block.css +33 -0
  47. package/src/material/dropdown.css +11 -11
  48. package/src/material/floating-action.css +10 -10
  49. package/src/material/floating-navigation.css +13 -13
  50. package/src/material/frame.css +17 -0
  51. package/src/material/index.css +2 -0
  52. package/src/material/input.css +21 -21
  53. package/src/material/list.css +34 -20
  54. package/src/material/menu.css +16 -16
  55. package/src/material/message.css +8 -8
  56. package/src/material/range.css +8 -8
  57. package/src/material/search-filter.css +8 -8
  58. package/src/material/select.css +31 -31
  59. package/src/material/status-list.css +17 -17
  60. package/src/material/step-indicator.css +8 -9
  61. package/src/material/swatch.css +3 -3
  62. package/src/material/switch.css +6 -6
  63. package/src/material/table.css +16 -16
  64. package/src/material/tabs.css +8 -8
  65. package/src/material/timeline.css +5 -6
  66. package/src/material/toc.css +4 -4
  67. package/src/material/toggle.css +7 -7
  68. package/src/material/toolbar.css +11 -11
  69. package/src/material/tree.css +17 -17
  70. package/src/minimal/button.css +30 -30
  71. package/src/minimal/card.css +13 -13
  72. package/src/minimal/chart.css +6 -6
  73. package/src/minimal/code-block.css +33 -0
  74. package/src/minimal/dropdown.css +11 -11
  75. package/src/minimal/floating-action.css +10 -10
  76. package/src/minimal/floating-navigation.css +12 -12
  77. package/src/minimal/frame.css +17 -0
  78. package/src/minimal/index.css +2 -0
  79. package/src/minimal/input.css +24 -24
  80. package/src/minimal/list.css +63 -23
  81. package/src/minimal/menu.css +15 -15
  82. package/src/minimal/message.css +8 -8
  83. package/src/minimal/range.css +7 -7
  84. package/src/minimal/search-filter.css +8 -8
  85. package/src/minimal/select.css +27 -39
  86. package/src/minimal/status-list.css +17 -17
  87. package/src/minimal/step-indicator.css +8 -8
  88. package/src/minimal/swatch.css +3 -3
  89. package/src/minimal/switch.css +6 -6
  90. package/src/minimal/table.css +16 -16
  91. package/src/minimal/tabs.css +14 -14
  92. package/src/minimal/timeline.css +4 -4
  93. package/src/minimal/toc.css +4 -4
  94. package/src/minimal/toggle.css +7 -7
  95. package/src/minimal/toolbar.css +14 -14
  96. package/src/minimal/tree.css +24 -18
  97. package/src/rokkit/avatar.css +6 -6
  98. package/src/rokkit/badge.css +5 -5
  99. package/src/rokkit/button.css +55 -37
  100. package/src/rokkit/card.css +11 -11
  101. package/src/rokkit/chart.css +6 -6
  102. package/src/rokkit/code-block.css +33 -0
  103. package/src/rokkit/connector.css +1 -1
  104. package/src/rokkit/divider.css +5 -5
  105. package/src/rokkit/dropdown.css +11 -11
  106. package/src/rokkit/floating-action.css +11 -11
  107. package/src/rokkit/floating-navigation.css +15 -15
  108. package/src/rokkit/frame.css +17 -0
  109. package/src/rokkit/grid.css +8 -8
  110. package/src/rokkit/index.css +2 -1
  111. package/src/rokkit/input.css +17 -17
  112. package/src/rokkit/list.css +46 -21
  113. package/src/rokkit/menu.css +14 -14
  114. package/src/rokkit/message.css +12 -12
  115. package/src/rokkit/range.css +10 -10
  116. package/src/rokkit/search-filter.css +8 -8
  117. package/src/rokkit/select.css +34 -34
  118. package/src/rokkit/status-list.css +17 -17
  119. package/src/rokkit/step-indicator.css +8 -9
  120. package/src/rokkit/swatch.css +3 -3
  121. package/src/rokkit/switch.css +6 -6
  122. package/src/rokkit/table.css +16 -16
  123. package/src/rokkit/tabs.css +31 -28
  124. package/src/rokkit/timeline.css +5 -6
  125. package/src/rokkit/toc.css +4 -4
  126. package/src/rokkit/toggle.css +21 -10
  127. package/src/rokkit/toolbar.css +15 -15
  128. package/src/rokkit/tooltip.css +1 -1
  129. package/src/rokkit/tree.css +23 -23
  130. package/src/rokkit/upload-progress.css +18 -18
  131. package/src/rokkit/upload-target.css +8 -8
  132. package/src/zen-sumi/button.css +176 -0
  133. package/src/zen-sumi/card.css +104 -0
  134. package/src/zen-sumi/chart.css +41 -0
  135. package/src/zen-sumi/code-block.css +35 -0
  136. package/src/zen-sumi/dropdown.css +53 -0
  137. package/src/zen-sumi/floating-action.css +68 -0
  138. package/src/zen-sumi/floating-navigation.css +74 -0
  139. package/src/zen-sumi/frame.css +20 -0
  140. package/src/zen-sumi/index.css +53 -0
  141. package/src/zen-sumi/input.css +171 -0
  142. package/src/zen-sumi/list.css +128 -0
  143. package/src/zen-sumi/menu.css +91 -0
  144. package/src/zen-sumi/message.css +37 -0
  145. package/src/zen-sumi/range.css +62 -0
  146. package/src/zen-sumi/search-filter.css +49 -0
  147. package/src/zen-sumi/select.css +160 -0
  148. package/src/zen-sumi/status-list.css +66 -0
  149. package/src/zen-sumi/step-indicator.css +40 -0
  150. package/src/zen-sumi/swatch.css +21 -0
  151. package/src/zen-sumi/switch.css +34 -0
  152. package/src/zen-sumi/table.css +118 -0
  153. package/src/zen-sumi/tabs.css +78 -0
  154. package/src/zen-sumi/timeline.css +46 -0
  155. package/src/zen-sumi/toc.css +22 -0
  156. package/src/zen-sumi/toggle.css +59 -0
  157. package/src/zen-sumi/toolbar.css +86 -0
  158. package/src/zen-sumi/tree.css +137 -0
  159. package/dist/ant-design.css +0 -2129
  160. package/dist/base.css +0 -6506
  161. package/dist/bits-ui.css +0 -2113
  162. package/dist/carbon.css +0 -2123
  163. package/dist/daisy-ui.css +0 -2138
  164. package/dist/frosted.css +0 -1953
  165. package/dist/grada-ui.css +0 -1915
  166. package/dist/index.css +0 -27359
  167. package/dist/material.css +0 -1924
  168. package/dist/minimal.css +0 -1978
  169. package/dist/rokkit.css +0 -2471
  170. package/dist/shadcn.css +0 -2099
  171. package/src/ant-design/button.css +0 -190
  172. package/src/ant-design/card.css +0 -100
  173. package/src/ant-design/chart.css +0 -34
  174. package/src/ant-design/connector.css +0 -11
  175. package/src/ant-design/dropdown.css +0 -50
  176. package/src/ant-design/floating-action.css +0 -63
  177. package/src/ant-design/floating-navigation.css +0 -70
  178. package/src/ant-design/grid.css +0 -46
  179. package/src/ant-design/index.css +0 -35
  180. package/src/ant-design/input.css +0 -151
  181. package/src/ant-design/list.css +0 -126
  182. package/src/ant-design/menu.css +0 -88
  183. package/src/ant-design/message.css +0 -35
  184. package/src/ant-design/range.css +0 -61
  185. package/src/ant-design/search-filter.css +0 -49
  186. package/src/ant-design/select.css +0 -158
  187. package/src/ant-design/status-list.css +0 -66
  188. package/src/ant-design/step-indicator.css +0 -38
  189. package/src/ant-design/switch.css +0 -29
  190. package/src/ant-design/table.css +0 -91
  191. package/src/ant-design/tabs.css +0 -153
  192. package/src/ant-design/timeline.css +0 -45
  193. package/src/ant-design/toc.css +0 -18
  194. package/src/ant-design/toggle.css +0 -48
  195. package/src/ant-design/toolbar.css +0 -85
  196. package/src/ant-design/tree.css +0 -137
  197. package/src/ant-design/upload-progress.css +0 -102
  198. package/src/ant-design/upload-target.css +0 -50
  199. package/src/bits-ui/button.css +0 -176
  200. package/src/bits-ui/card.css +0 -99
  201. package/src/bits-ui/chart.css +0 -34
  202. package/src/bits-ui/connector.css +0 -11
  203. package/src/bits-ui/dropdown.css +0 -50
  204. package/src/bits-ui/floating-action.css +0 -63
  205. package/src/bits-ui/floating-navigation.css +0 -70
  206. package/src/bits-ui/grid.css +0 -46
  207. package/src/bits-ui/index.css +0 -35
  208. package/src/bits-ui/input.css +0 -154
  209. package/src/bits-ui/list.css +0 -126
  210. package/src/bits-ui/menu.css +0 -88
  211. package/src/bits-ui/message.css +0 -35
  212. package/src/bits-ui/range.css +0 -61
  213. package/src/bits-ui/search-filter.css +0 -49
  214. package/src/bits-ui/select.css +0 -158
  215. package/src/bits-ui/status-list.css +0 -66
  216. package/src/bits-ui/step-indicator.css +0 -40
  217. package/src/bits-ui/switch.css +0 -29
  218. package/src/bits-ui/table.css +0 -89
  219. package/src/bits-ui/tabs.css +0 -151
  220. package/src/bits-ui/timeline.css +0 -45
  221. package/src/bits-ui/toc.css +0 -18
  222. package/src/bits-ui/toggle.css +0 -48
  223. package/src/bits-ui/toolbar.css +0 -85
  224. package/src/bits-ui/tree.css +0 -135
  225. package/src/bits-ui/upload-progress.css +0 -102
  226. package/src/bits-ui/upload-target.css +0 -50
  227. package/src/carbon/button.css +0 -186
  228. package/src/carbon/card.css +0 -97
  229. package/src/carbon/chart.css +0 -34
  230. package/src/carbon/connector.css +0 -11
  231. package/src/carbon/dropdown.css +0 -50
  232. package/src/carbon/floating-action.css +0 -63
  233. package/src/carbon/floating-navigation.css +0 -70
  234. package/src/carbon/grid.css +0 -46
  235. package/src/carbon/index.css +0 -34
  236. package/src/carbon/input.css +0 -148
  237. package/src/carbon/list.css +0 -124
  238. package/src/carbon/menu.css +0 -88
  239. package/src/carbon/message.css +0 -37
  240. package/src/carbon/range.css +0 -61
  241. package/src/carbon/search-filter.css +0 -49
  242. package/src/carbon/select.css +0 -158
  243. package/src/carbon/status-list.css +0 -66
  244. package/src/carbon/step-indicator.css +0 -40
  245. package/src/carbon/switch.css +0 -31
  246. package/src/carbon/table.css +0 -93
  247. package/src/carbon/tabs.css +0 -151
  248. package/src/carbon/timeline.css +0 -45
  249. package/src/carbon/toc.css +0 -22
  250. package/src/carbon/toggle.css +0 -48
  251. package/src/carbon/toolbar.css +0 -84
  252. package/src/carbon/tree.css +0 -135
  253. package/src/carbon/upload-progress.css +0 -102
  254. package/src/carbon/upload-target.css +0 -50
  255. package/src/daisy-ui/button.css +0 -196
  256. package/src/daisy-ui/card.css +0 -99
  257. package/src/daisy-ui/chart.css +0 -34
  258. package/src/daisy-ui/connector.css +0 -11
  259. package/src/daisy-ui/dropdown.css +0 -50
  260. package/src/daisy-ui/floating-action.css +0 -63
  261. package/src/daisy-ui/floating-navigation.css +0 -70
  262. package/src/daisy-ui/grid.css +0 -46
  263. package/src/daisy-ui/index.css +0 -34
  264. package/src/daisy-ui/input.css +0 -148
  265. package/src/daisy-ui/list.css +0 -127
  266. package/src/daisy-ui/menu.css +0 -88
  267. package/src/daisy-ui/message.css +0 -37
  268. package/src/daisy-ui/range.css +0 -61
  269. package/src/daisy-ui/search-filter.css +0 -49
  270. package/src/daisy-ui/select.css +0 -158
  271. package/src/daisy-ui/status-list.css +0 -66
  272. package/src/daisy-ui/step-indicator.css +0 -37
  273. package/src/daisy-ui/switch.css +0 -31
  274. package/src/daisy-ui/table.css +0 -91
  275. package/src/daisy-ui/tabs.css +0 -153
  276. package/src/daisy-ui/timeline.css +0 -45
  277. package/src/daisy-ui/toc.css +0 -22
  278. package/src/daisy-ui/toggle.css +0 -48
  279. package/src/daisy-ui/toolbar.css +0 -85
  280. package/src/daisy-ui/tree.css +0 -137
  281. package/src/daisy-ui/upload-progress.css +0 -102
  282. package/src/daisy-ui/upload-target.css +0 -50
  283. package/src/grada-ui/button.css +0 -249
  284. package/src/grada-ui/card.css +0 -96
  285. package/src/grada-ui/chart.css +0 -34
  286. package/src/grada-ui/dropdown.css +0 -58
  287. package/src/grada-ui/floating-action.css +0 -66
  288. package/src/grada-ui/floating-navigation.css +0 -69
  289. package/src/grada-ui/index.css +0 -56
  290. package/src/grada-ui/input.css +0 -154
  291. package/src/grada-ui/list.css +0 -124
  292. package/src/grada-ui/menu.css +0 -81
  293. package/src/grada-ui/message.css +0 -48
  294. package/src/grada-ui/range.css +0 -59
  295. package/src/grada-ui/search-filter.css +0 -47
  296. package/src/grada-ui/select.css +0 -190
  297. package/src/grada-ui/status-list.css +0 -66
  298. package/src/grada-ui/step-indicator.css +0 -37
  299. package/src/grada-ui/switch.css +0 -35
  300. package/src/grada-ui/table.css +0 -79
  301. package/src/grada-ui/tabs.css +0 -59
  302. package/src/grada-ui/timeline.css +0 -46
  303. package/src/grada-ui/toc.css +0 -24
  304. package/src/grada-ui/toggle.css +0 -47
  305. package/src/grada-ui/toolbar.css +0 -91
  306. package/src/grada-ui/tree.css +0 -100
  307. package/src/rokkit/stack.css +0 -6
  308. package/src/shadcn/button.css +0 -175
  309. package/src/shadcn/card.css +0 -99
  310. package/src/shadcn/chart.css +0 -34
  311. package/src/shadcn/connector.css +0 -11
  312. package/src/shadcn/dropdown.css +0 -50
  313. package/src/shadcn/floating-action.css +0 -63
  314. package/src/shadcn/floating-navigation.css +0 -70
  315. package/src/shadcn/grid.css +0 -46
  316. package/src/shadcn/index.css +0 -35
  317. package/src/shadcn/input.css +0 -143
  318. package/src/shadcn/list.css +0 -124
  319. package/src/shadcn/menu.css +0 -88
  320. package/src/shadcn/message.css +0 -35
  321. package/src/shadcn/range.css +0 -61
  322. package/src/shadcn/search-filter.css +0 -49
  323. package/src/shadcn/select.css +0 -158
  324. package/src/shadcn/status-list.css +0 -66
  325. package/src/shadcn/step-indicator.css +0 -37
  326. package/src/shadcn/switch.css +0 -31
  327. package/src/shadcn/table.css +0 -89
  328. package/src/shadcn/tabs.css +0 -151
  329. package/src/shadcn/timeline.css +0 -45
  330. package/src/shadcn/toc.css +0 -20
  331. package/src/shadcn/toggle.css +0 -48
  332. package/src/shadcn/toolbar.css +0 -84
  333. package/src/shadcn/tree.css +0 -135
  334. package/src/shadcn/upload-progress.css +0 -102
  335. package/src/shadcn/upload-target.css +0 -50
@@ -12,12 +12,14 @@
12
12
 
13
13
  /* Separator between form fields */
14
14
  [data-form-separator] {
15
- @apply border-surface-z2 my-1 border-t;
15
+ border-top-color: var(--paper-mute);
16
+ @apply my-1 border-t;
16
17
  }
17
18
 
18
19
  /* Form group (fieldset for nested objects) */
19
20
  [data-form-group] {
20
- @apply border-surface-z2 m-0 flex flex-col gap-3 border-l border-none p-0 pl-3;
21
+ border-left-color: var(--paper-mute);
22
+ @apply m-0 flex flex-col gap-3 border-l border-none p-0 pl-3;
21
23
  }
22
24
 
23
25
  [data-form-group-label] {
@@ -46,7 +48,8 @@
46
48
  }
47
49
 
48
50
  [data-severity='error'] [data-validation-count] {
49
- @apply bg-error-z1 text-error-z7;
51
+ background-color: var(--error-soft);
52
+ color: var(--error);
50
53
  }
51
54
 
52
55
  [data-severity='warning'] > [data-validation-group-header] {
@@ -54,7 +57,8 @@
54
57
  }
55
58
 
56
59
  [data-severity='warning'] [data-validation-count] {
57
- @apply bg-warning-z1 text-warning-z7;
60
+ background-color: var(--warning-soft);
61
+ color: var(--warning);
58
62
  }
59
63
 
60
64
  [data-severity='info'] > [data-validation-group-header] {
@@ -62,7 +66,8 @@
62
66
  }
63
67
 
64
68
  [data-severity='info'] [data-validation-count] {
65
- @apply bg-info-z1 text-info-z7;
69
+ background-color: var(--info-soft);
70
+ color: var(--info);
66
71
  }
67
72
 
68
73
  [data-severity='success'] > [data-validation-group-header] {
@@ -70,7 +75,8 @@
70
75
  }
71
76
 
72
77
  [data-severity='success'] [data-validation-count] {
73
- @apply bg-success-z1 text-success-z7;
78
+ background-color: var(--success-soft);
79
+ color: var(--success);
74
80
  }
75
81
 
76
82
  [data-validation-item] {
@@ -78,7 +84,11 @@
78
84
  }
79
85
 
80
86
  button[data-validation-item] {
81
- @apply hover:bg-surface-z1 cursor-pointer border-none bg-transparent;
87
+ @apply cursor-pointer border-none bg-transparent;
88
+ }
89
+
90
+ button[data-validation-item]:hover {
91
+ background-color: var(--paper-soft);
82
92
  }
83
93
 
84
94
  /* Form actions (submit/reset buttons) */
@@ -88,11 +98,21 @@ button[data-validation-item] {
88
98
 
89
99
  button[data-form-submit],
90
100
  button[data-form-reset] {
91
- @apply border-surface-z3 bg-surface-z1 hover:bg-surface-z2 cursor-pointer rounded border px-4 py-1.5 text-sm transition-colors;
101
+ border-color: var(--paper-mute);
102
+ background-color: var(--paper-soft);
103
+ @apply cursor-pointer rounded border px-4 py-1.5 text-sm transition-colors;
104
+ }
105
+
106
+ button[data-form-submit]:hover,
107
+ button[data-form-reset]:hover {
108
+ background-color: var(--paper-mute);
92
109
  }
93
110
 
94
111
  button[data-form-submit] {
95
- @apply bg-primary text-on-primary border-primary hover:opacity-90;
112
+ background-color: var(--primary);
113
+ color: var(--on-primary);
114
+ border-color: var(--primary);
115
+ @apply hover:opacity-90;
96
116
  }
97
117
 
98
118
  button[data-form-submit]:disabled,
@@ -122,6 +142,24 @@ button[data-form-reset]:disabled {
122
142
  @apply flex-row items-center justify-between gap-2;
123
143
  }
124
144
 
145
+ /* Inline layout variant — opt in per field via the `variant='inline'`
146
+ prop on InputField (or the equivalent `variant` field on a
147
+ FormRenderer layout element). Label sits in a fixed leading column,
148
+ the input takes the remaining row. Useful for control-panel
149
+ contexts (playground knobs, settings dialogs, tweak editors) where
150
+ the form-page rhythm reads as overkill. */
151
+ [data-field-root][data-field-layout='inline'] > [data-field] {
152
+ @apply flex-row items-center gap-3;
153
+ }
154
+
155
+ [data-field-root][data-field-layout='inline'] > [data-field] > label {
156
+ @apply flex-none w-32 text-xs;
157
+ }
158
+
159
+ [data-field-root][data-field-layout='inline'] > [data-field] > :not(label) {
160
+ @apply flex-1 min-w-0;
161
+ }
162
+
125
163
  /* Select: stretch to fill input wrapper — display:flex eliminates inline-block gap */
126
164
  [data-input-root] [data-select] {
127
165
  @apply flex-1 self-stretch;
@@ -192,13 +230,17 @@ button[data-form-reset]:disabled {
192
230
  @apply focus:outline-none;
193
231
  }
194
232
 
195
- /* Range slider thumb */
233
+ /* Range slider thumb — theme layer sets --range-thumb via @apply on [data-range-thumb] */
234
+ input[type='range'] {
235
+ --range-thumb: var(--color-primary);
236
+ }
237
+
196
238
  input[type='range']::-webkit-slider-thumb {
197
239
  appearance: none;
198
240
  height: 16px;
199
241
  width: 16px;
200
242
  border-radius: 50%;
201
- background: rgba(var(--color-primary-500));
243
+ background: var(--range-thumb);
202
244
  cursor: pointer;
203
245
  }
204
246
 
@@ -206,7 +248,7 @@ input[type='range']::-moz-range-thumb {
206
248
  height: 16px;
207
249
  width: 16px;
208
250
  border-radius: 50%;
209
- background: rgba(var(--color-primary-500));
251
+ background: var(--range-thumb);
210
252
  cursor: pointer;
211
253
  border: none;
212
254
  }
@@ -246,7 +288,8 @@ input[type='radio'] {
246
288
  }
247
289
 
248
290
  input[type='radio']:checked {
249
- border-color: rgba(var(--color-primary-500), 1);
291
+ border-color: var(--primary);
292
+ color: var(--primary);
250
293
  }
251
294
 
252
295
  input[type='radio']:checked::before {
@@ -255,7 +298,7 @@ input[type='radio']:checked::before {
255
298
  width: 0.5rem;
256
299
  height: 0.5rem;
257
300
  border-radius: 50%;
258
- background: rgba(var(--color-primary-500), 1);
301
+ background: currentColor;
259
302
  position: absolute;
260
303
  top: 50%;
261
304
  left: 50%;
@@ -21,11 +21,11 @@
21
21
 
22
22
  [data-nav-content][data-orientation='horizontal'] [data-nav-content-nav] {
23
23
  width: var(--nav-size, 280px);
24
- border-right: 1px solid var(--color-surface-z3, #e0e0e0);
24
+ border-right: 1px solid var(--paper-mute);
25
25
  }
26
26
 
27
27
  [data-nav-content][data-orientation='vertical'] [data-nav-content-nav] {
28
- border-bottom: 1px solid var(--color-surface-z3, #e0e0e0);
28
+ border-bottom: 1px solid var(--paper-mute);
29
29
  }
30
30
 
31
31
  [data-nav-content-main] {
@@ -43,6 +43,6 @@
43
43
  [data-nav-content][data-collapsible][data-orientation='horizontal'] [data-nav-content-nav] {
44
44
  width: 100%;
45
45
  border-right: none;
46
- border-bottom: 1px solid var(--color-surface-z3, #e0e0e0);
46
+ border-bottom: 1px solid var(--paper-mute);
47
47
  }
48
48
  }
@@ -47,32 +47,32 @@
47
47
  }
48
48
 
49
49
  [data-stepper-step][data-completed] [data-stepper-circle] {
50
- background-color: var(--color-primary-500, #3b82f6);
51
- border-color: var(--color-primary-500, #3b82f6);
52
- color: white;
50
+ background-color: var(--primary);
51
+ border-color: var(--primary);
52
+ color: var(--paper);
53
53
  }
54
54
 
55
55
  [data-stepper-step][data-active] [data-stepper-circle] {
56
- border-color: var(--color-primary-500, #3b82f6);
57
- color: var(--color-primary-500, #3b82f6);
58
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary-500, #3b82f6) 20%, transparent);
56
+ border-color: var(--primary);
57
+ color: var(--primary);
58
+ @apply ring-primary/20 ring-3;
59
59
  }
60
60
 
61
61
  /* ─── Connector line ─── */
62
62
 
63
63
  [data-stepper-connector] {
64
+ background-color: var(--paper-mute);
64
65
  flex: 1;
65
66
  height: 2px;
66
67
  min-width: 2rem;
67
68
  align-self: center;
68
69
  /* Vertically center with the circle (half of 2.5rem) */
69
70
  margin-top: 1.25rem;
70
- background-color: var(--color-surface-300, #d1d5db);
71
71
  transition: background-color 0.2s ease;
72
72
  }
73
73
 
74
74
  [data-stepper-connector][data-completed] {
75
- background-color: var(--color-primary-500, #3b82f6);
75
+ background-color: var(--primary);
76
76
  }
77
77
 
78
78
  /* Vertical orientation connectors */
@@ -104,10 +104,12 @@
104
104
  }
105
105
 
106
106
  [data-stepper-dot] {
107
+ border-color: var(--paper-edge);
107
108
  width: 0.5rem;
108
109
  height: 0.5rem;
109
110
  border-radius: 9999px;
110
- border: 1px solid var(--color-surface-400, #9ca3af);
111
+ border-width: 1px;
112
+ border-style: solid;
111
113
  background: transparent;
112
114
  cursor: pointer;
113
115
  padding: 0;
@@ -122,14 +124,14 @@
122
124
  }
123
125
 
124
126
  [data-stepper-dot][data-completed] {
125
- background-color: var(--color-primary-500, #3b82f6);
126
- border-color: var(--color-primary-500, #3b82f6);
127
+ background-color: var(--primary);
128
+ border-color: var(--primary);
127
129
  }
128
130
 
129
131
  [data-stepper-dot][data-active] {
130
- border-color: var(--color-primary-500, #3b82f6);
131
- background-color: var(--color-primary-500, #3b82f6);
132
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-primary-500, #3b82f6) 25%, transparent);
132
+ background-color: var(--primary);
133
+ border-color: var(--primary);
134
+ @apply ring-primary/25 ring-2;
133
135
  }
134
136
 
135
137
  /* ─── Content area ─── */
package/src/base/tabs.css CHANGED
@@ -45,9 +45,15 @@
45
45
 
46
46
  [data-tabs][data-orientation='vertical'] [data-tabs-list] {
47
47
  flex-direction: column;
48
+ /* In vertical mode the list is a flex item perpendicular to the
49
+ * row-direction parent. Stretching it gives `justify-content` a
50
+ * height to distribute — without this the column collapses to
51
+ * fit-content and `align=center / end` have no spare space to
52
+ * move the tabs into. */
53
+ align-self: stretch;
48
54
  }
49
55
 
50
- /* Alignment */
56
+ /* Alignment — main-axis distribution within the list */
51
57
  [data-tabs][data-align='center'] [data-tabs-list] {
52
58
  justify-content: center;
53
59
  }
@@ -66,7 +72,14 @@
66
72
  gap: 0.375rem;
67
73
  padding: 0.5rem 0.75rem;
68
74
  cursor: pointer;
69
- border: none;
75
+ /* `border: none` expands to `border-width: medium` (= 3px) which leaks
76
+ * a 3px ring on every side as soon as a theme sets `border-style: solid`.
77
+ * Spell the safe baseline out: zero width on all sides, solid style so
78
+ * any `border-{side}-[Npx]` from a theme renders without needing to
79
+ * re-declare the style. */
80
+ border-width: 0;
81
+ border-style: solid;
82
+ border-color: currentcolor;
70
83
  background: transparent;
71
84
  font-weight: 500;
72
85
  font-size: 0.875rem;
@@ -2,25 +2,37 @@
2
2
  * Typography & Shape Tokens
3
3
  *
4
4
  * CSS custom properties for font families and border-radius scale.
5
- * Override these in your application stylesheet to customize typography and shape.
5
+ *
6
+ * Canonical names match the named-token vocabulary's semantic intent:
7
+ * --font-display — heading / display typeface
8
+ * --font-ui — body / UI typeface
9
+ * --font-mono — code, eyebrows, kbd shortcuts
10
+ *
11
+ * Legacy aliases `--font-heading` and `--font-sans` are emitted as
12
+ * `var(--font-display)` and `var(--font-ui)` for backward compatibility
13
+ * with any consumer that still reads the old names. Both stay in sync.
14
+ *
15
+ * Override these in your application stylesheet or via the preset's
16
+ * `typography: { display, ui, mono }` config to customize.
6
17
  *
7
18
  * @example
8
19
  * :root {
9
- * --font-sans: 'Inter', system-ui, sans-serif;
10
- * --font-mono: 'JetBrains Mono', monospace;
11
- * --font-heading: 'Cal Sans', 'Inter', sans-serif;
12
- *
13
- * --radius-sm: 0; --* sharp corners *--
14
- * --radius-md: 0;
15
- * --radius-lg: 0;
20
+ * --font-display: 'Fraunces', serif;
21
+ * --font-ui: 'Inter', system-ui, sans-serif;
22
+ * --font-mono: 'JetBrains Mono', monospace;
16
23
  * }
17
24
  */
18
25
 
19
- :root {
20
- /* Font families */
21
- --font-sans: 'Open Sans', -apple-system, system-ui, 'Segoe UI', ui-serif, sans-serif;
22
- --font-mono: 'Victor Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
23
- --font-heading: 'Open Sans', sans-serif;
26
+ /* Defaults wrapped in :where() so specificity is 0 — any explicit :root
27
+ declaration (from the preset emit, an app stylesheet, or another theme)
28
+ wins without needing extra weight. Without :where(), this file would
29
+ override later preset emissions since both are :root, same specificity,
30
+ and the source order has this CSS loading after the preset preflight. */
31
+ :where(:root) {
32
+ /* Font families — canonical names */
33
+ --font-display: 'Open Sans', sans-serif;
34
+ --font-ui: 'Open Sans', -apple-system, system-ui, 'Segoe UI', ui-serif, sans-serif;
35
+ --font-mono: 'Victor Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
24
36
 
25
37
  /* Border-radius scale */
26
38
  --radius-sm: 0.25rem;
@@ -29,3 +41,10 @@
29
41
  --radius-xl: 0.75rem;
30
42
  --radius-full: 9999px;
31
43
  }
44
+
45
+ /* Legacy aliases — outside the :where() so they ALWAYS reflect whichever
46
+ --font-display / --font-ui value won in the cascade (default or preset). */
47
+ :root {
48
+ --font-heading: var(--font-display);
49
+ --font-sans: var(--font-ui);
50
+ }
@@ -13,8 +13,7 @@
13
13
  [data-style='frosted'] [data-button]:not([data-style])[data-variant='default'],
14
14
  [data-style='frosted'] [data-button][data-style='default']:not([data-variant]),
15
15
  [data-style='frosted'] [data-button]:not([data-style]):not([data-variant]) {
16
- @apply text-surface-z9 border backdrop-blur-xl;
17
- background: color-mix(in srgb, var(--color-surface-z4, #888) 28%, transparent);
16
+ @apply text-ink border backdrop-blur-xl bg-paper-edge/28;
18
17
  border-color: rgba(255, 255, 255, 0.22);
19
18
  box-shadow:
20
19
  inset 0 1px 0 rgba(255, 255, 255, 0.2),
@@ -23,8 +22,7 @@
23
22
 
24
23
  [data-style='frosted'] [data-button][data-style='default'][data-variant='primary'],
25
24
  [data-style='frosted'] [data-button]:not([data-style])[data-variant='primary'] {
26
- @apply text-on-primary border backdrop-blur-xl;
27
- background: color-mix(in srgb, var(--color-primary-500, #6366f1) 60%, transparent);
25
+ @apply text-on-primary border backdrop-blur-xl bg-primary/60;
28
26
  border-color: rgba(255, 255, 255, 0.25);
29
27
  box-shadow:
30
28
  inset 0 1px 0 rgba(255, 255, 255, 0.25),
@@ -33,8 +31,7 @@
33
31
 
34
32
  [data-style='frosted'] [data-button][data-style='default'][data-variant='secondary'],
35
33
  [data-style='frosted'] [data-button]:not([data-style])[data-variant='secondary'] {
36
- @apply text-on-secondary border backdrop-blur-xl;
37
- background: color-mix(in srgb, var(--color-secondary-500, #ec4899) 60%, transparent);
34
+ @apply text-on-primary border backdrop-blur-xl bg-accent/60;
38
35
  border-color: rgba(255, 255, 255, 0.25);
39
36
  box-shadow:
40
37
  inset 0 1px 0 rgba(255, 255, 255, 0.25),
@@ -43,8 +40,7 @@
43
40
 
44
41
  [data-style='frosted'] [data-button][data-style='default'][data-variant='accent'],
45
42
  [data-style='frosted'] [data-button]:not([data-style])[data-variant='accent'] {
46
- @apply text-on-accent border backdrop-blur-xl;
47
- background: color-mix(in srgb, var(--color-accent-500, #f59e0b) 60%, transparent);
43
+ @apply text-on-accent border backdrop-blur-xl bg-accent/60;
48
44
  border-color: rgba(255, 255, 255, 0.25);
49
45
  box-shadow:
50
46
  inset 0 1px 0 rgba(255, 255, 255, 0.25),
@@ -53,8 +49,7 @@
53
49
 
54
50
  [data-style='frosted'] [data-button][data-style='default'][data-variant='danger'],
55
51
  [data-style='frosted'] [data-button]:not([data-style])[data-variant='danger'] {
56
- @apply text-on-danger border backdrop-blur-xl;
57
- background: color-mix(in srgb, var(--color-danger-500, #ef4444) 60%, transparent);
52
+ @apply text-on-danger border backdrop-blur-xl bg-danger/60;
58
53
  border-color: rgba(255, 255, 255, 0.25);
59
54
  box-shadow:
60
55
  inset 0 1px 0 rgba(255, 255, 255, 0.25),
@@ -67,28 +62,28 @@
67
62
 
68
63
  [data-style='frosted'] [data-button][data-style='outline'][data-variant='default'],
69
64
  [data-style='frosted'] [data-button][data-style='outline']:not([data-variant]) {
70
- @apply text-surface-z8 border bg-transparent;
65
+ @apply text-ink-mute border bg-transparent;
71
66
  border-color: rgba(255, 255, 255, 0.28);
72
67
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12);
73
68
  }
74
69
 
75
70
  [data-style='frosted'] [data-button][data-style='outline'][data-variant='primary'] {
76
- @apply text-primary-z6 border bg-transparent;
71
+ @apply text-primary border bg-transparent;
77
72
  border-color: rgba(255, 255, 255, 0.28);
78
73
  }
79
74
 
80
75
  [data-style='frosted'] [data-button][data-style='outline'][data-variant='secondary'] {
81
- @apply text-secondary-z6 border bg-transparent;
76
+ @apply text-accent border bg-transparent;
82
77
  border-color: rgba(255, 255, 255, 0.28);
83
78
  }
84
79
 
85
80
  [data-style='frosted'] [data-button][data-style='outline'][data-variant='accent'] {
86
- @apply text-accent-z6 border bg-transparent;
81
+ @apply text-accent border bg-transparent;
87
82
  border-color: rgba(255, 255, 255, 0.28);
88
83
  }
89
84
 
90
85
  [data-style='frosted'] [data-button][data-style='outline'][data-variant='danger'] {
91
- @apply text-danger-z4 border bg-transparent;
86
+ @apply text-danger border bg-transparent;
92
87
  border-color: rgba(255, 255, 255, 0.28);
93
88
  }
94
89
 
@@ -102,23 +97,23 @@
102
97
 
103
98
  [data-style='frosted'] [data-button][data-style='ghost'][data-variant='default'],
104
99
  [data-style='frosted'] [data-button][data-style='ghost']:not([data-variant]) {
105
- @apply text-surface-z8;
100
+ @apply text-ink-mute;
106
101
  }
107
102
 
108
103
  [data-style='frosted'] [data-button][data-style='ghost'][data-variant='primary'] {
109
- @apply text-primary-z6;
104
+ @apply text-primary;
110
105
  }
111
106
 
112
107
  [data-style='frosted'] [data-button][data-style='ghost'][data-variant='secondary'] {
113
- @apply text-secondary-z6;
108
+ @apply text-accent;
114
109
  }
115
110
 
116
111
  [data-style='frosted'] [data-button][data-style='ghost'][data-variant='accent'] {
117
- @apply text-accent-z6;
112
+ @apply text-accent;
118
113
  }
119
114
 
120
115
  [data-style='frosted'] [data-button][data-style='ghost'][data-variant='danger'] {
121
- @apply text-danger-z4;
116
+ @apply text-danger;
122
117
  }
123
118
 
124
119
  /* =============================================================================
@@ -127,31 +122,31 @@
127
122
 
128
123
  [data-style='frosted'] [data-button][data-style='gradient'][data-variant='default'],
129
124
  [data-style='frosted'] [data-button][data-style='gradient']:not([data-variant]) {
130
- @apply from-surface-z3/70 to-surface-z1/50 text-surface-z10 bg-gradient-to-br backdrop-blur-xl;
125
+ @apply from-paper-mute/70 to-paper-soft/50 text-ink bg-gradient-to-br backdrop-blur-xl;
131
126
  border-color: rgba(255, 255, 255, 0.2);
132
127
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2);
133
128
  }
134
129
 
135
130
  [data-style='frosted'] [data-button][data-style='gradient'][data-variant='primary'] {
136
- @apply from-primary-z5/80 to-primary-z3/60 text-on-primary bg-gradient-to-br backdrop-blur-xl;
131
+ @apply from-primary/80 to-primary/60 text-on-primary bg-gradient-to-br backdrop-blur-xl;
137
132
  border-color: rgba(255, 255, 255, 0.25);
138
133
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
139
134
  }
140
135
 
141
136
  [data-style='frosted'] [data-button][data-style='gradient'][data-variant='secondary'] {
142
- @apply from-secondary-z5/80 to-secondary-z3/60 text-on-secondary bg-gradient-to-br backdrop-blur-xl;
137
+ @apply from-accent/80 to-accent/60 text-on-primary bg-gradient-to-br backdrop-blur-xl;
143
138
  border-color: rgba(255, 255, 255, 0.25);
144
139
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
145
140
  }
146
141
 
147
142
  [data-style='frosted'] [data-button][data-style='gradient'][data-variant='accent'] {
148
- @apply from-accent-z5/80 to-accent-z3/60 text-on-accent bg-gradient-to-br backdrop-blur-xl;
143
+ @apply from-accent/80 to-accent/60 text-on-accent bg-gradient-to-br backdrop-blur-xl;
149
144
  border-color: rgba(255, 255, 255, 0.25);
150
145
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
151
146
  }
152
147
 
153
148
  [data-style='frosted'] [data-button][data-style='gradient'][data-variant='danger'] {
154
- @apply from-danger-z5/80 to-danger-z3/60 text-on-danger bg-gradient-to-br backdrop-blur-xl;
149
+ @apply from-danger/80 to-danger/60 text-on-danger bg-gradient-to-br backdrop-blur-xl;
155
150
  border-color: rgba(255, 255, 255, 0.25);
156
151
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
157
152
  }
@@ -167,27 +162,27 @@
167
162
 
168
163
  [data-style='frosted'] [data-button][data-style='link'][data-variant='default'],
169
164
  [data-style='frosted'] [data-button][data-style='link']:not([data-variant]) {
170
- @apply text-surface-z8;
165
+ @apply text-ink-mute;
171
166
  }
172
167
 
173
168
  [data-style='frosted'] [data-button][data-style='link'][data-variant='primary'] {
174
- @apply text-primary-z6;
169
+ @apply text-primary;
175
170
  }
176
171
 
177
172
  [data-style='frosted'] [data-button][data-style='link'][data-variant='secondary'] {
178
- @apply text-secondary-z6;
173
+ @apply text-accent;
179
174
  }
180
175
 
181
176
  [data-style='frosted'] [data-button][data-style='link'][data-variant='accent'] {
182
- @apply text-accent-z6;
177
+ @apply text-accent;
183
178
  }
184
179
 
185
180
  [data-style='frosted'] [data-button][data-style='link'][data-variant='danger'] {
186
- @apply text-danger-z4;
181
+ @apply text-danger;
187
182
  }
188
183
 
189
184
  [data-style='frosted'] [data-button][data-style='link']:hover:not(:disabled):not([data-disabled]) {
190
- @apply text-primary-z7;
185
+ @apply text-primary;
191
186
  }
192
187
 
193
188
  /* =============================================================================
@@ -196,7 +191,7 @@
196
191
 
197
192
  [data-style='frosted'] [data-button][data-style='default']:hover:not(:disabled):not([data-disabled]),
198
193
  [data-style='frosted'] [data-button]:not([data-style]):hover:not(:disabled):not([data-disabled]) {
199
- background: color-mix(in srgb, var(--color-surface-z4, #888) 38%, transparent);
194
+ @apply bg-paper-edge/38;
200
195
  border-color: rgba(255, 255, 255, 0.3);
201
196
  box-shadow:
202
197
  inset 0 1px 0 rgba(255, 255, 255, 0.28),
@@ -10,8 +10,7 @@
10
10
  ============================================================================= */
11
11
 
12
12
  [data-style='frosted'] [data-card] {
13
- @apply text-surface-z9 border shadow-lg backdrop-blur-xl;
14
- background: color-mix(in srgb, var(--color-surface-z3, #888) 30%, transparent);
13
+ @apply text-ink border shadow-lg backdrop-blur-xl bg-paper-mute/30;
15
14
  border-color: rgba(255, 255, 255, 0.18);
16
15
  box-shadow:
17
16
  inset 0 1px 0 rgba(255, 255, 255, 0.22),
@@ -28,7 +27,7 @@
28
27
  }
29
28
 
30
29
  [data-style='frosted'] [data-card][data-card-interactive]:hover {
31
- background: color-mix(in srgb, var(--color-surface-z3, #888) 42%, transparent);
30
+ @apply bg-paper-mute/42;
32
31
  box-shadow:
33
32
  inset 0 1px 0 rgba(255, 255, 255, 0.28),
34
33
  0 16px 40px rgba(0, 0, 0, 0.14);
@@ -51,11 +50,11 @@
51
50
  }
52
51
 
53
52
  [data-style='frosted'] [data-card-body] {
54
- @apply text-surface-z8;
53
+ @apply text-ink-mute;
55
54
  }
56
55
 
57
56
  [data-style='frosted'] [data-card-footer] {
58
- @apply text-surface-z7;
57
+ @apply text-ink-mute;
59
58
  border-top: 1px solid rgba(255, 255, 255, 0.12);
60
59
  }
61
60
 
@@ -86,8 +85,7 @@
86
85
 
87
86
  /* Primary — tinted primary glass */
88
87
  [data-style='frosted'] [data-card][data-variant='primary'] {
89
- @apply text-on-primary border shadow-lg backdrop-blur-xl;
90
- background: color-mix(in srgb, var(--color-primary-500, #6366f1) 45%, transparent);
88
+ @apply text-on-primary border shadow-lg backdrop-blur-xl bg-primary/45;
91
89
  border-color: rgba(255, 255, 255, 0.22);
92
90
  box-shadow:
93
91
  inset 0 1px 0 rgba(255, 255, 255, 0.28),
@@ -105,8 +103,7 @@
105
103
 
106
104
  /* Secondary — tinted secondary glass */
107
105
  [data-style='frosted'] [data-card][data-variant='secondary'] {
108
- @apply text-on-secondary border shadow-lg backdrop-blur-xl;
109
- background: color-mix(in srgb, var(--color-secondary-500, #ec4899) 45%, transparent);
106
+ @apply text-on-primary border shadow-lg backdrop-blur-xl bg-accent/45;
110
107
  border-color: rgba(255, 255, 255, 0.22);
111
108
  box-shadow:
112
109
  inset 0 1px 0 rgba(255, 255, 255, 0.28),
@@ -119,12 +116,11 @@
119
116
  }
120
117
 
121
118
  [data-style='frosted'] [data-card][data-variant='secondary'] [data-card-body] {
122
- @apply text-on-secondary/80;
119
+ @apply text-on-primary/80;
123
120
  }
124
121
 
125
122
  /* Tertiary — barely-there frosted glass */
126
123
  [data-style='frosted'] [data-card][data-variant='tertiary'] {
127
- @apply text-surface-z7 border backdrop-blur-xl;
128
- background: color-mix(in srgb, var(--color-surface-z3, #888) 16%, transparent);
124
+ @apply text-ink-mute border backdrop-blur-xl bg-paper-mute/16;
129
125
  border-color: rgba(255, 255, 255, 0.12);
130
126
  }
@@ -4,25 +4,25 @@
4
4
 
5
5
  [data-style='frosted'] [data-chart-axis-line],
6
6
  [data-style='frosted'] [data-chart-tick] line {
7
- @apply stroke-surface-z3;
7
+ @apply stroke-paper-mute;
8
8
  }
9
9
 
10
10
  [data-style='frosted'] [data-chart-tick-label] {
11
- @apply fill-surface-z5;
11
+ @apply fill-ink-soft;
12
12
  }
13
13
 
14
14
  [data-style='frosted'] [data-chart-grid-line] {
15
- @apply stroke-surface-z3;
15
+ @apply stroke-paper-mute;
16
16
  stroke-opacity: 0.5;
17
17
  stroke-dasharray: 2 4;
18
18
  }
19
19
 
20
20
  [data-style='frosted'] [data-chart-legend-label] {
21
- @apply fill-surface-z5;
21
+ @apply fill-ink-soft;
22
22
  }
23
23
 
24
24
  [data-style='frosted'] [data-chart-legend-item]:hover {
25
- @apply text-surface-z8;
25
+ @apply text-ink-mute;
26
26
  }
27
27
 
28
28
  [data-style='frosted'] [data-plot-element='bar'][data-dimmed],
@@ -34,5 +34,5 @@
34
34
  }
35
35
 
36
36
  [data-style='frosted'] [data-facet-title] {
37
- @apply text-surface-z5;
37
+ @apply text-ink-soft;
38
38
  }