@rokkit/themes 1.0.4 → 1.0.5

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 (246) hide show
  1. package/README.md +11 -19
  2. package/build.mjs +5 -21
  3. package/package.json +23 -132
  4. package/src/base/carousel.css +1 -2
  5. package/src/base/input.css +9 -5
  6. package/src/base/nav-content.css +3 -3
  7. package/src/base/stepper.css +9 -14
  8. package/src/frosted/button.css +6 -11
  9. package/src/frosted/card.css +5 -9
  10. package/src/frosted/dropdown.css +5 -10
  11. package/src/frosted/floating-action.css +2 -2
  12. package/src/frosted/input.css +2 -3
  13. package/src/frosted/list.css +25 -0
  14. package/src/frosted/menu.css +4 -8
  15. package/src/frosted/range.css +2 -2
  16. package/src/frosted/select.css +1 -1
  17. package/src/frosted/step-indicator.css +1 -2
  18. package/src/frosted/switch.css +2 -3
  19. package/src/frosted/timeline.css +1 -2
  20. package/src/index.css +2 -0
  21. package/src/index.js +0 -1
  22. package/src/material/floating-action.css +2 -2
  23. package/src/material/list.css +14 -0
  24. package/src/material/range.css +2 -2
  25. package/src/material/select.css +1 -1
  26. package/src/material/step-indicator.css +1 -2
  27. package/src/material/switch.css +1 -1
  28. package/src/material/tabs.css +2 -2
  29. package/src/material/timeline.css +1 -2
  30. package/src/material/toggle.css +2 -2
  31. package/src/minimal/floating-action.css +1 -1
  32. package/src/minimal/list.css +14 -0
  33. package/src/minimal/select.css +1 -13
  34. package/src/rokkit/floating-action.css +5 -5
  35. package/src/rokkit/floating-navigation.css +1 -1
  36. package/src/rokkit/index.css +0 -1
  37. package/src/rokkit/input.css +1 -1
  38. package/src/rokkit/list.css +25 -0
  39. package/src/rokkit/range.css +2 -2
  40. package/src/rokkit/select.css +1 -1
  41. package/src/rokkit/step-indicator.css +1 -2
  42. package/src/rokkit/swatch.css +1 -1
  43. package/src/rokkit/switch.css +1 -1
  44. package/src/rokkit/timeline.css +1 -2
  45. package/src/rokkit/upload-progress.css +4 -4
  46. package/src/zen-sumi/button.css +176 -0
  47. package/src/zen-sumi/card.css +104 -0
  48. package/src/zen-sumi/chart.css +41 -0
  49. package/src/zen-sumi/dropdown.css +53 -0
  50. package/src/zen-sumi/floating-action.css +68 -0
  51. package/src/zen-sumi/floating-navigation.css +74 -0
  52. package/src/{grada-ui → zen-sumi}/index.css +25 -30
  53. package/src/zen-sumi/input.css +145 -0
  54. package/src/zen-sumi/list.css +128 -0
  55. package/src/zen-sumi/menu.css +91 -0
  56. package/src/zen-sumi/message.css +37 -0
  57. package/src/zen-sumi/range.css +62 -0
  58. package/src/zen-sumi/search-filter.css +49 -0
  59. package/src/zen-sumi/select.css +160 -0
  60. package/src/zen-sumi/status-list.css +66 -0
  61. package/src/zen-sumi/step-indicator.css +40 -0
  62. package/src/zen-sumi/swatch.css +21 -0
  63. package/src/zen-sumi/switch.css +34 -0
  64. package/src/zen-sumi/table.css +118 -0
  65. package/src/zen-sumi/tabs.css +78 -0
  66. package/src/zen-sumi/timeline.css +46 -0
  67. package/src/zen-sumi/toc.css +22 -0
  68. package/src/zen-sumi/toggle.css +51 -0
  69. package/src/zen-sumi/toolbar.css +86 -0
  70. package/src/zen-sumi/tree.css +137 -0
  71. package/dist/ant-design.css +0 -2129
  72. package/dist/base.css +0 -6506
  73. package/dist/bits-ui.css +0 -2113
  74. package/dist/carbon.css +0 -2123
  75. package/dist/daisy-ui.css +0 -2138
  76. package/dist/frosted.css +0 -1953
  77. package/dist/grada-ui.css +0 -1915
  78. package/dist/index.css +0 -27359
  79. package/dist/material.css +0 -1924
  80. package/dist/minimal.css +0 -1978
  81. package/dist/rokkit.css +0 -2471
  82. package/dist/shadcn.css +0 -2099
  83. package/src/ant-design/button.css +0 -190
  84. package/src/ant-design/card.css +0 -100
  85. package/src/ant-design/chart.css +0 -34
  86. package/src/ant-design/connector.css +0 -11
  87. package/src/ant-design/dropdown.css +0 -50
  88. package/src/ant-design/floating-action.css +0 -63
  89. package/src/ant-design/floating-navigation.css +0 -70
  90. package/src/ant-design/grid.css +0 -46
  91. package/src/ant-design/index.css +0 -35
  92. package/src/ant-design/input.css +0 -151
  93. package/src/ant-design/list.css +0 -126
  94. package/src/ant-design/menu.css +0 -88
  95. package/src/ant-design/message.css +0 -35
  96. package/src/ant-design/range.css +0 -61
  97. package/src/ant-design/search-filter.css +0 -49
  98. package/src/ant-design/select.css +0 -158
  99. package/src/ant-design/status-list.css +0 -66
  100. package/src/ant-design/step-indicator.css +0 -38
  101. package/src/ant-design/switch.css +0 -29
  102. package/src/ant-design/table.css +0 -91
  103. package/src/ant-design/tabs.css +0 -153
  104. package/src/ant-design/timeline.css +0 -45
  105. package/src/ant-design/toc.css +0 -18
  106. package/src/ant-design/toggle.css +0 -48
  107. package/src/ant-design/toolbar.css +0 -85
  108. package/src/ant-design/tree.css +0 -137
  109. package/src/ant-design/upload-progress.css +0 -102
  110. package/src/ant-design/upload-target.css +0 -50
  111. package/src/bits-ui/button.css +0 -176
  112. package/src/bits-ui/card.css +0 -99
  113. package/src/bits-ui/chart.css +0 -34
  114. package/src/bits-ui/connector.css +0 -11
  115. package/src/bits-ui/dropdown.css +0 -50
  116. package/src/bits-ui/floating-action.css +0 -63
  117. package/src/bits-ui/floating-navigation.css +0 -70
  118. package/src/bits-ui/grid.css +0 -46
  119. package/src/bits-ui/index.css +0 -35
  120. package/src/bits-ui/input.css +0 -154
  121. package/src/bits-ui/list.css +0 -126
  122. package/src/bits-ui/menu.css +0 -88
  123. package/src/bits-ui/message.css +0 -35
  124. package/src/bits-ui/range.css +0 -61
  125. package/src/bits-ui/search-filter.css +0 -49
  126. package/src/bits-ui/select.css +0 -158
  127. package/src/bits-ui/status-list.css +0 -66
  128. package/src/bits-ui/step-indicator.css +0 -40
  129. package/src/bits-ui/switch.css +0 -29
  130. package/src/bits-ui/table.css +0 -89
  131. package/src/bits-ui/tabs.css +0 -151
  132. package/src/bits-ui/timeline.css +0 -45
  133. package/src/bits-ui/toc.css +0 -18
  134. package/src/bits-ui/toggle.css +0 -48
  135. package/src/bits-ui/toolbar.css +0 -85
  136. package/src/bits-ui/tree.css +0 -135
  137. package/src/bits-ui/upload-progress.css +0 -102
  138. package/src/bits-ui/upload-target.css +0 -50
  139. package/src/carbon/button.css +0 -186
  140. package/src/carbon/card.css +0 -97
  141. package/src/carbon/chart.css +0 -34
  142. package/src/carbon/connector.css +0 -11
  143. package/src/carbon/dropdown.css +0 -50
  144. package/src/carbon/floating-action.css +0 -63
  145. package/src/carbon/floating-navigation.css +0 -70
  146. package/src/carbon/grid.css +0 -46
  147. package/src/carbon/index.css +0 -34
  148. package/src/carbon/input.css +0 -148
  149. package/src/carbon/list.css +0 -124
  150. package/src/carbon/menu.css +0 -88
  151. package/src/carbon/message.css +0 -37
  152. package/src/carbon/range.css +0 -61
  153. package/src/carbon/search-filter.css +0 -49
  154. package/src/carbon/select.css +0 -158
  155. package/src/carbon/status-list.css +0 -66
  156. package/src/carbon/step-indicator.css +0 -40
  157. package/src/carbon/switch.css +0 -31
  158. package/src/carbon/table.css +0 -93
  159. package/src/carbon/tabs.css +0 -151
  160. package/src/carbon/timeline.css +0 -45
  161. package/src/carbon/toc.css +0 -22
  162. package/src/carbon/toggle.css +0 -48
  163. package/src/carbon/toolbar.css +0 -84
  164. package/src/carbon/tree.css +0 -135
  165. package/src/carbon/upload-progress.css +0 -102
  166. package/src/carbon/upload-target.css +0 -50
  167. package/src/daisy-ui/button.css +0 -196
  168. package/src/daisy-ui/card.css +0 -99
  169. package/src/daisy-ui/chart.css +0 -34
  170. package/src/daisy-ui/connector.css +0 -11
  171. package/src/daisy-ui/dropdown.css +0 -50
  172. package/src/daisy-ui/floating-action.css +0 -63
  173. package/src/daisy-ui/floating-navigation.css +0 -70
  174. package/src/daisy-ui/grid.css +0 -46
  175. package/src/daisy-ui/index.css +0 -34
  176. package/src/daisy-ui/input.css +0 -148
  177. package/src/daisy-ui/list.css +0 -127
  178. package/src/daisy-ui/menu.css +0 -88
  179. package/src/daisy-ui/message.css +0 -37
  180. package/src/daisy-ui/range.css +0 -61
  181. package/src/daisy-ui/search-filter.css +0 -49
  182. package/src/daisy-ui/select.css +0 -158
  183. package/src/daisy-ui/status-list.css +0 -66
  184. package/src/daisy-ui/step-indicator.css +0 -37
  185. package/src/daisy-ui/switch.css +0 -31
  186. package/src/daisy-ui/table.css +0 -91
  187. package/src/daisy-ui/tabs.css +0 -153
  188. package/src/daisy-ui/timeline.css +0 -45
  189. package/src/daisy-ui/toc.css +0 -22
  190. package/src/daisy-ui/toggle.css +0 -48
  191. package/src/daisy-ui/toolbar.css +0 -85
  192. package/src/daisy-ui/tree.css +0 -137
  193. package/src/daisy-ui/upload-progress.css +0 -102
  194. package/src/daisy-ui/upload-target.css +0 -50
  195. package/src/grada-ui/button.css +0 -249
  196. package/src/grada-ui/card.css +0 -96
  197. package/src/grada-ui/chart.css +0 -34
  198. package/src/grada-ui/dropdown.css +0 -58
  199. package/src/grada-ui/floating-action.css +0 -66
  200. package/src/grada-ui/floating-navigation.css +0 -69
  201. package/src/grada-ui/input.css +0 -154
  202. package/src/grada-ui/list.css +0 -124
  203. package/src/grada-ui/menu.css +0 -81
  204. package/src/grada-ui/message.css +0 -48
  205. package/src/grada-ui/range.css +0 -59
  206. package/src/grada-ui/search-filter.css +0 -47
  207. package/src/grada-ui/select.css +0 -190
  208. package/src/grada-ui/status-list.css +0 -66
  209. package/src/grada-ui/step-indicator.css +0 -37
  210. package/src/grada-ui/switch.css +0 -35
  211. package/src/grada-ui/table.css +0 -79
  212. package/src/grada-ui/tabs.css +0 -59
  213. package/src/grada-ui/timeline.css +0 -46
  214. package/src/grada-ui/toc.css +0 -24
  215. package/src/grada-ui/toggle.css +0 -47
  216. package/src/grada-ui/toolbar.css +0 -91
  217. package/src/grada-ui/tree.css +0 -100
  218. package/src/rokkit/stack.css +0 -6
  219. package/src/shadcn/button.css +0 -175
  220. package/src/shadcn/card.css +0 -99
  221. package/src/shadcn/chart.css +0 -34
  222. package/src/shadcn/connector.css +0 -11
  223. package/src/shadcn/dropdown.css +0 -50
  224. package/src/shadcn/floating-action.css +0 -63
  225. package/src/shadcn/floating-navigation.css +0 -70
  226. package/src/shadcn/grid.css +0 -46
  227. package/src/shadcn/index.css +0 -35
  228. package/src/shadcn/input.css +0 -143
  229. package/src/shadcn/list.css +0 -124
  230. package/src/shadcn/menu.css +0 -88
  231. package/src/shadcn/message.css +0 -35
  232. package/src/shadcn/range.css +0 -61
  233. package/src/shadcn/search-filter.css +0 -49
  234. package/src/shadcn/select.css +0 -158
  235. package/src/shadcn/status-list.css +0 -66
  236. package/src/shadcn/step-indicator.css +0 -37
  237. package/src/shadcn/switch.css +0 -31
  238. package/src/shadcn/table.css +0 -89
  239. package/src/shadcn/tabs.css +0 -151
  240. package/src/shadcn/timeline.css +0 -45
  241. package/src/shadcn/toc.css +0 -20
  242. package/src/shadcn/toggle.css +0 -48
  243. package/src/shadcn/toolbar.css +0 -84
  244. package/src/shadcn/tree.css +0 -135
  245. package/src/shadcn/upload-progress.css +0 -102
  246. package/src/shadcn/upload-target.css +0 -50
package/README.md CHANGED
@@ -16,19 +16,14 @@ bun add @rokkit/themes
16
16
 
17
17
  Available themes:
18
18
 
19
- | Theme | Description |
20
- | ------------ | -------------------------------------------------------------------- |
21
- | `rokkit` | Default — gradients and glowing borders |
22
- | `minimal` | Clean and subtle |
23
- | `material` | Elevation and shadows |
24
- | `frosted` | Frosted glass and blur |
25
- | `shadcn` | Flat borders and ring focus |
26
- | `daisy-ui` | Rounded-full and bold fills |
27
- | `bits-ui` | Rounded-lg and shadow-sm |
28
- | `carbon` | Square corners and bottom-border inputs |
29
- | `ant-design` | Thin borders and dense layout |
30
- | `grada-ui` | Coral/purple gradient identity |
31
- | `base` | Structural styles only (layout and positioning, no visual treatment) |
19
+ | Theme | Description |
20
+ | ---------- | -------------------------------------------------------------------- |
21
+ | `rokkit` | Default — gradients and glowing borders |
22
+ | `minimal` | Clean and subtle |
23
+ | `material` | Elevation and shadows |
24
+ | `frosted` | Frosted glass and blur |
25
+ | `zen-sumi` | Ink on paper no shadows, no gradients |
26
+ | `base` | Structural styles only (layout and positioning, no visual treatment) |
32
27
 
33
28
  ## Usage
34
29
 
@@ -54,6 +49,8 @@ import '@rokkit/themes'
54
49
  @import '@rokkit/themes/material.css';
55
50
  /* or */
56
51
  @import '@rokkit/themes/frosted.css';
52
+ /* or */
53
+ @import '@rokkit/themes/zen-sumi.css';
57
54
  ```
58
55
 
59
56
  ### Base structural styles only
@@ -108,12 +105,7 @@ src/
108
105
  minimal/ -- Clean + subtle theme
109
106
  material/ -- Elevation + shadows theme
110
107
  frosted/ -- Frosted glass + blur theme
111
- shadcn/ -- Flat borders + ring focus theme
112
- daisy-ui/ -- Rounded-full + bold fills theme
113
- bits-ui/ -- Rounded-lg + shadow-sm theme
114
- carbon/ -- Square + bottom-border inputs theme
115
- ant-design/ -- Thin borders + dense layout theme
116
- grada-ui/ -- Coral/purple gradient identity theme
108
+ zen-sumi/ -- Ink on paper theme (no shadows, no gradients)
117
109
  index.css -- Full bundle entry point
118
110
  ```
119
111
 
package/build.mjs CHANGED
@@ -49,14 +49,7 @@ const uno = await createGenerator({
49
49
  ...theme.getShortcuts('warning'),
50
50
  ...theme.getShortcuts('danger'),
51
51
  ...theme.getShortcuts('error'),
52
- ...theme.getShortcuts('info'),
53
- [/^text-on-primary(\/\d+)?$/, ([, end]) => `text-surface-50${end || ''}`],
54
- [/^text-on-secondary(\/\d+)?$/, ([, end]) => `text-surface-50${end || ''}`],
55
- [/^text-on-info(\/\d+)?$/, ([, end]) => `text-surface-50${end || ''}`],
56
- [/^text-on-success(\/\d+)?$/, ([, end]) => `text-surface-50${end || ''}`],
57
- [/^text-on-warning(\/\d+)?$/, ([, end]) => `text-surface-50${end || ''}`],
58
- [/^text-on-error(\/\d+)?$/, ([, end]) => `text-surface-50${end || ''}`],
59
- [/^text-on-surface(\/\d+)?$/, ([, end]) => `text-surface-50${end || ''}`]
52
+ ...theme.getShortcuts('info')
60
53
  ],
61
54
  theme: {
62
55
  colors: theme.getColorRules()
@@ -190,7 +183,7 @@ async function buildFile(inputPath, outputName, label) {
190
183
  const fullCSS = resolveImports(inputPath)
191
184
  const compiled = await processCSS(fullCSS, outputName)
192
185
  const fixed = fixModeSelectors(compiled)
193
- writeFileSync(join(distDir, outputName), fixed, 'utf-8')
186
+ writeFileSync(join(distDir, outputName), fixed, 'utf-8') // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal — outputName is derived from a hardcoded string array, not user input
194
187
  console.log(`✓ dist/${outputName} (${label})`)
195
188
  }
196
189
 
@@ -213,12 +206,7 @@ async function build() {
213
206
  ['minimal', 'clean + subtle'],
214
207
  ['material', 'elevation + shadows'],
215
208
  ['frosted', 'frosted glass + blur'],
216
- ['grada-ui', 'coral/purple gradient identity'],
217
- ['shadcn', 'flat borders + ring focus'],
218
- ['daisy-ui', 'rounded-full + bold fills'],
219
- ['bits-ui', 'rounded-lg + shadow-sm'],
220
- ['carbon', 'square + bottom-border inputs'],
221
- ['ant-design', 'thin borders + dense layout']
209
+ ['zen-sumi', 'ink on paper — no shadows, no gradients']
222
210
  ]) {
223
211
  await buildFile(join(srcDir, name, 'index.css'), `${name}.css`, label)
224
212
  }
@@ -230,13 +218,9 @@ async function build() {
230
218
  'minimal',
231
219
  'material',
232
220
  'frosted',
233
- 'grada-ui',
234
- 'shadcn',
235
- 'daisy-ui',
236
- 'bits-ui',
237
- 'carbon',
238
- 'ant-design'
221
+ 'zen-sumi'
239
222
  ]
223
+ // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal — name is from a hardcoded string array, not user input
240
224
  const bundleParts = allThemes.map((name) => readFileSync(join(distDir, `${name}.css`), 'utf-8'))
241
225
  writeFileSync(join(distDir, 'index.css'), bundleParts.join('\n'), 'utf-8')
242
226
  console.log('✓ dist/index.css (full bundle)')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rokkit/themes",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Theme styles for @rokkit/ui components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,97 +18,29 @@
18
18
  "style": "./src/index.css",
19
19
  "default": "./src/index.css"
20
20
  },
21
- "./dist": {
22
- "style": "./dist/index.css",
23
- "default": "./dist/index.css"
24
- },
25
- "./dist/base": {
26
- "style": "./dist/base.css",
27
- "default": "./dist/base.css"
28
- },
29
- "./dist/rokkit": {
30
- "style": "./dist/rokkit.css",
31
- "default": "./dist/rokkit.css"
32
- },
33
- "./dist/minimal": {
34
- "style": "./dist/minimal.css",
35
- "default": "./dist/minimal.css"
36
- },
37
- "./dist/material": {
38
- "style": "./dist/material.css",
39
- "default": "./dist/material.css"
40
- },
41
- "./dist/frosted": {
42
- "style": "./dist/frosted.css",
43
- "default": "./dist/frosted.css"
44
- },
45
- "./dist/grada-ui": {
46
- "style": "./dist/grada-ui.css",
47
- "default": "./dist/grada-ui.css"
48
- },
49
- "./dist/daisy-ui": {
50
- "style": "./dist/daisy-ui.css",
51
- "default": "./dist/daisy-ui.css"
52
- },
53
- "./dist/shadcn": {
54
- "style": "./dist/shadcn.css",
55
- "default": "./dist/shadcn.css"
56
- },
57
- "./dist/bits-ui": {
58
- "style": "./dist/bits-ui.css",
59
- "default": "./dist/bits-ui.css"
60
- },
61
- "./dist/carbon": {
62
- "style": "./dist/carbon.css",
63
- "default": "./dist/carbon.css"
64
- },
65
- "./dist/ant-design": {
66
- "style": "./dist/ant-design.css",
67
- "default": "./dist/ant-design.css"
68
- },
69
- "./base.css": {
70
- "style": "./dist/base.css",
71
- "default": "./dist/base.css"
21
+ "./base.css": {
22
+ "style": "./src/base/index.css",
23
+ "default": "./src/base/index.css"
72
24
  },
73
25
  "./rokkit.css": {
74
- "style": "./dist/rokkit.css",
75
- "default": "./dist/rokkit.css"
26
+ "style": "./src/rokkit/index.css",
27
+ "default": "./src/rokkit/index.css"
76
28
  },
77
29
  "./minimal.css": {
78
- "style": "./dist/minimal.css",
79
- "default": "./dist/minimal.css"
30
+ "style": "./src/minimal/index.css",
31
+ "default": "./src/minimal/index.css"
80
32
  },
81
33
  "./material.css": {
82
- "style": "./dist/material.css",
83
- "default": "./dist/material.css"
34
+ "style": "./src/material/index.css",
35
+ "default": "./src/material/index.css"
84
36
  },
85
37
  "./frosted.css": {
86
- "style": "./dist/frosted.css",
87
- "default": "./dist/frosted.css"
88
- },
89
- "./grada-ui.css": {
90
- "style": "./dist/grada-ui.css",
91
- "default": "./dist/grada-ui.css"
92
- },
93
- "./daisy-ui.css": {
94
- "style": "./dist/daisy-ui.css",
95
- "default": "./dist/daisy-ui.css"
96
- },
97
- "./shadcn.css": {
98
- "style": "./dist/shadcn.css",
99
- "default": "./dist/shadcn.css"
100
- },
101
- "./bits-ui.css": {
102
- "style": "./dist/bits-ui.css",
103
- "default": "./dist/bits-ui.css"
104
- },
105
- "./carbon.css": {
106
- "style": "./dist/carbon.css",
107
- "default": "./dist/carbon.css"
38
+ "style": "./src/frosted/index.css",
39
+ "default": "./src/frosted/index.css"
108
40
  },
109
- "./ant-design.css": {
110
- "style": "./dist/ant-design.css",
111
- "default": "./dist/ant-design.css"
41
+ "./zen-sumi.css": {
42
+ "style": "./src/zen-sumi/index.css",
43
+ "default": "./src/zen-sumi/index.css"
112
44
  },
113
45
  "./base": {
114
46
  "style": "./src/base/index.css",
@@ -150,69 +82,28 @@
150
82
  "style": "./src/frosted/*.css",
151
83
  "default": "./src/frosted/*.css"
152
84
  },
153
- "./grada-ui": {
154
- "style": "./src/grada-ui/index.css",
155
- "default": "./src/grada-ui/index.css"
156
- },
157
- "./grada-ui/*": {
158
- "style": "./src/grada-ui/*.css",
159
- "default": "./src/grada-ui/*.css"
160
- },
161
- "./daisy-ui": {
162
- "style": "./src/daisy-ui/index.css",
163
- "default": "./src/daisy-ui/index.css"
164
- },
165
- "./daisy-ui/*": {
166
- "style": "./src/daisy-ui/*.css",
167
- "default": "./src/daisy-ui/*.css"
168
- },
169
- "./shadcn": {
170
- "style": "./src/shadcn/index.css",
171
- "default": "./src/shadcn/index.css"
172
- },
173
- "./shadcn/*": {
174
- "style": "./src/shadcn/*.css",
175
- "default": "./src/shadcn/*.css"
176
- },
177
- "./bits-ui": {
178
- "style": "./src/bits-ui/index.css",
179
- "default": "./src/bits-ui/index.css"
180
- },
181
- "./bits-ui/*": {
182
- "style": "./src/bits-ui/*.css",
183
- "default": "./src/bits-ui/*.css"
184
- },
185
- "./carbon": {
186
- "style": "./src/carbon/index.css",
187
- "default": "./src/carbon/index.css"
188
- },
189
- "./carbon/*": {
190
- "style": "./src/carbon/*.css",
191
- "default": "./src/carbon/*.css"
192
- },
193
- "./ant-design": {
194
- "style": "./src/ant-design/index.css",
195
- "default": "./src/ant-design/index.css"
85
+ "./zen-sumi": {
86
+ "style": "./src/zen-sumi/index.css",
87
+ "default": "./src/zen-sumi/index.css"
196
88
  },
197
- "./ant-design/*": {
198
- "style": "./src/ant-design/*.css",
199
- "default": "./src/ant-design/*.css"
89
+ "./zen-sumi/*": {
90
+ "style": "./src/zen-sumi/*.css",
91
+ "default": "./src/zen-sumi/*.css"
200
92
  }
201
93
  },
202
94
  "files": [
203
95
  "src",
204
- "dist",
205
96
  "build.mjs",
206
97
  "README.md",
207
98
  "LICENSE"
208
99
  ],
209
100
  "scripts": {
210
- "prepublishOnly": "cp ../../LICENSE . && bun run build.mjs",
101
+ "prepublishOnly": "cp ../../LICENSE .",
211
102
  "postpublish": "rm -f LICENSE",
212
103
  "build": "bun run build.mjs"
213
104
  },
214
105
  "dependencies": {
215
- "@rokkit/core": "1.0.4"
106
+ "@rokkit/core": "1.0.5"
216
107
  },
217
108
  "devDependencies": {
218
109
  "magic-string": "^0.30.21",
@@ -71,8 +71,7 @@
71
71
  border: none;
72
72
  border-radius: 9999px;
73
73
  cursor: pointer;
74
- background: rgba(0, 0, 0, 0.3);
75
- color: white;
74
+ @apply bg-surface-z10/30 text-surface-z0;
76
75
  font-size: 1.25rem;
77
76
  z-index: 1;
78
77
  opacity: 0.7;
@@ -192,13 +192,17 @@ button[data-form-reset]:disabled {
192
192
  @apply focus:outline-none;
193
193
  }
194
194
 
195
- /* Range slider thumb */
195
+ /* Range slider thumb — theme layer sets --range-thumb via @apply on [data-range-thumb] */
196
+ input[type='range'] {
197
+ --range-thumb: var(--color-primary);
198
+ }
199
+
196
200
  input[type='range']::-webkit-slider-thumb {
197
201
  appearance: none;
198
202
  height: 16px;
199
203
  width: 16px;
200
204
  border-radius: 50%;
201
- background: rgba(var(--color-primary-500));
205
+ background: var(--range-thumb);
202
206
  cursor: pointer;
203
207
  }
204
208
 
@@ -206,7 +210,7 @@ input[type='range']::-moz-range-thumb {
206
210
  height: 16px;
207
211
  width: 16px;
208
212
  border-radius: 50%;
209
- background: rgba(var(--color-primary-500));
213
+ background: var(--range-thumb);
210
214
  cursor: pointer;
211
215
  border: none;
212
216
  }
@@ -246,7 +250,7 @@ input[type='radio'] {
246
250
  }
247
251
 
248
252
  input[type='radio']:checked {
249
- border-color: rgba(var(--color-primary-500), 1);
253
+ @apply border-primary-z5 text-primary-z5;
250
254
  }
251
255
 
252
256
  input[type='radio']:checked::before {
@@ -255,7 +259,7 @@ input[type='radio']:checked::before {
255
259
  width: 0.5rem;
256
260
  height: 0.5rem;
257
261
  border-radius: 50%;
258
- background: rgba(var(--color-primary-500), 1);
262
+ background: currentColor;
259
263
  position: absolute;
260
264
  top: 50%;
261
265
  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
+ @apply border-r border-surface-z3;
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
+ @apply border-b border-surface-z3;
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
+ @apply border-b border-surface-z3;
47
47
  }
48
48
  }
@@ -47,32 +47,28 @@
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
+ @apply bg-primary-z5 border-primary-z5 text-surface-z0;
53
51
  }
54
52
 
55
53
  [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);
54
+ @apply border-primary-z5 text-primary-z5 ring-primary-z5/20 ring-3;
59
55
  }
60
56
 
61
57
  /* ─── Connector line ─── */
62
58
 
63
59
  [data-stepper-connector] {
60
+ @apply bg-surface-z3;
64
61
  flex: 1;
65
62
  height: 2px;
66
63
  min-width: 2rem;
67
64
  align-self: center;
68
65
  /* Vertically center with the circle (half of 2.5rem) */
69
66
  margin-top: 1.25rem;
70
- background-color: var(--color-surface-300, #d1d5db);
71
67
  transition: background-color 0.2s ease;
72
68
  }
73
69
 
74
70
  [data-stepper-connector][data-completed] {
75
- background-color: var(--color-primary-500, #3b82f6);
71
+ @apply bg-primary-z5;
76
72
  }
77
73
 
78
74
  /* Vertical orientation connectors */
@@ -104,10 +100,12 @@
104
100
  }
105
101
 
106
102
  [data-stepper-dot] {
103
+ @apply border-surface-z4;
107
104
  width: 0.5rem;
108
105
  height: 0.5rem;
109
106
  border-radius: 9999px;
110
- border: 1px solid var(--color-surface-400, #9ca3af);
107
+ border-width: 1px;
108
+ border-style: solid;
111
109
  background: transparent;
112
110
  cursor: pointer;
113
111
  padding: 0;
@@ -122,14 +120,11 @@
122
120
  }
123
121
 
124
122
  [data-stepper-dot][data-completed] {
125
- background-color: var(--color-primary-500, #3b82f6);
126
- border-color: var(--color-primary-500, #3b82f6);
123
+ @apply bg-primary-z5 border-primary-z5;
127
124
  }
128
125
 
129
126
  [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);
127
+ @apply bg-primary-z5 border-primary-z5 ring-primary-z5/25 ring-2;
133
128
  }
134
129
 
135
130
  /* ─── Content area ─── */
@@ -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-surface-z9 border backdrop-blur-xl bg-surface-z4/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-z5/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-secondary border backdrop-blur-xl bg-secondary-z5/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-z5/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-z5/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),
@@ -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-surface-z4/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-surface-z9 border shadow-lg backdrop-blur-xl bg-surface-z3/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-surface-z3/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);
@@ -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-z5/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-secondary border shadow-lg backdrop-blur-xl bg-secondary-z5/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),
@@ -124,7 +121,6 @@
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-surface-z7 border backdrop-blur-xl bg-surface-z3/16;
129
125
  border-color: rgba(255, 255, 255, 0.12);
130
126
  }
@@ -5,15 +5,13 @@
5
5
  */
6
6
 
7
7
  [data-style='frosted'] [data-dropdown-trigger] {
8
- @apply text-surface-z8 border bg-none backdrop-blur-xl;
9
- background: color-mix(in srgb, var(--color-surface-z3, #888) 25%, transparent);
8
+ @apply text-surface-z8 border bg-none backdrop-blur-xl bg-surface-z3/25;
10
9
  border-color: rgba(255, 255, 255, 0.2);
11
10
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.16);
12
11
  }
13
12
 
14
13
  [data-style='frosted'] [data-dropdown-trigger]:hover:not(:disabled) {
15
- @apply text-surface-z10 bg-none;
16
- background: color-mix(in srgb, var(--color-surface-z3, #888) 36%, transparent);
14
+ @apply text-surface-z10 bg-none bg-surface-z3/36;
17
15
  border-color: rgba(255, 255, 255, 0.28);
18
16
  }
19
17
 
@@ -23,8 +21,7 @@
23
21
  }
24
22
 
25
23
  [data-style='frosted'] [data-dropdown][data-open='true'] [data-dropdown-trigger] {
26
- @apply bg-none;
27
- background: color-mix(in srgb, var(--color-primary-500, #6366f1) 35%, transparent);
24
+ @apply bg-none bg-primary-z5/35;
28
25
  border-color: rgba(255, 255, 255, 0.3);
29
26
  }
30
27
 
@@ -37,8 +34,7 @@
37
34
  }
38
35
 
39
36
  [data-style='frosted'] [data-dropdown-panel] {
40
- @apply border bg-none shadow-xl backdrop-blur-2xl;
41
- background: color-mix(in srgb, var(--color-surface-z2, #888) 45%, transparent);
37
+ @apply border bg-none shadow-xl backdrop-blur-2xl bg-surface-z2/45;
42
38
  border-color: rgba(255, 255, 255, 0.2);
43
39
  box-shadow:
44
40
  inset 0 1px 0 rgba(255, 255, 255, 0.2),
@@ -56,8 +52,7 @@
56
52
  }
57
53
 
58
54
  [data-style='frosted'] [data-dropdown-option][data-active='true'] {
59
- @apply text-surface-z10 bg-none;
60
- background: color-mix(in srgb, var(--color-primary-500, #6366f1) 22%, transparent);
55
+ @apply text-surface-z10 bg-none bg-primary-z5/22;
61
56
  }
62
57
 
63
58
  [data-style='frosted'] [data-dropdown-separator] {
@@ -9,7 +9,7 @@
9
9
  ============================================================================= */
10
10
 
11
11
  [data-style='frosted'] [data-fab-trigger] {
12
- @apply bg-primary-z5/80 text-white shadow-lg backdrop-blur-md;
12
+ @apply bg-primary-z5/80 text-on-primary shadow-lg backdrop-blur-md;
13
13
  }
14
14
 
15
15
  [data-style='frosted'] [data-fab-trigger]:hover:not(:disabled) {
@@ -56,6 +56,6 @@
56
56
  ============================================================================= */
57
57
 
58
58
  [data-style='frosted'] [data-fab-backdrop] {
59
- background: rgba(0, 0, 0, 0.3);
59
+ @apply bg-surface-z10/30;
60
60
  backdrop-filter: blur(4px);
61
61
  }
@@ -35,8 +35,7 @@
35
35
  * No backdrop-blur here: it creates a stacking context that traps select dropdowns.
36
36
  * The semi-transparent background + specular border provides the liquid glass look. */
37
37
  [data-style='frosted'] [data-input-root] {
38
- @apply flex items-center rounded-md border p-0.5 transition-all;
39
- background: color-mix(in srgb, var(--color-surface-z3, #888) 22%, transparent);
38
+ @apply flex items-center rounded-md border p-0.5 transition-all bg-surface-z3/22;
40
39
  background-image: none;
41
40
  border-color: rgba(255, 255, 255, 0.2);
42
41
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14);
@@ -47,7 +46,7 @@
47
46
  }
48
47
 
49
48
  [data-style='frosted'] [data-input-root]:focus-within {
50
- background: color-mix(in srgb, var(--color-surface-z3, #888) 28%, transparent);
49
+ @apply bg-surface-z3/28;
51
50
  background-image: none;
52
51
  border-color: rgba(255, 255, 255, 0.35);
53
52
  box-shadow: