@rokkit/themes 1.0.3 → 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 (252) 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/density.css +3 -3
  6. package/src/base/gradient-border.css +32 -0
  7. package/src/base/index.css +3 -0
  8. package/src/base/input.css +9 -5
  9. package/src/base/item.css +13 -0
  10. package/src/base/layout.css +17 -0
  11. package/src/base/nav-content.css +3 -3
  12. package/src/base/radius.css +41 -0
  13. package/src/base/stepper.css +9 -14
  14. package/src/frosted/button.css +6 -11
  15. package/src/frosted/card.css +5 -9
  16. package/src/frosted/dropdown.css +5 -10
  17. package/src/frosted/floating-action.css +2 -2
  18. package/src/frosted/input.css +2 -3
  19. package/src/frosted/list.css +25 -0
  20. package/src/frosted/menu.css +4 -8
  21. package/src/frosted/range.css +2 -2
  22. package/src/frosted/select.css +1 -1
  23. package/src/frosted/step-indicator.css +1 -2
  24. package/src/frosted/switch.css +2 -3
  25. package/src/frosted/timeline.css +1 -2
  26. package/src/index.css +2 -0
  27. package/src/index.js +0 -1
  28. package/src/material/floating-action.css +2 -2
  29. package/src/material/list.css +14 -0
  30. package/src/material/range.css +2 -2
  31. package/src/material/select.css +1 -1
  32. package/src/material/step-indicator.css +1 -2
  33. package/src/material/switch.css +1 -1
  34. package/src/material/tabs.css +2 -2
  35. package/src/material/timeline.css +1 -2
  36. package/src/material/toggle.css +2 -2
  37. package/src/minimal/floating-action.css +1 -1
  38. package/src/minimal/list.css +14 -0
  39. package/src/minimal/select.css +1 -13
  40. package/src/rokkit/floating-action.css +5 -5
  41. package/src/rokkit/floating-navigation.css +1 -1
  42. package/src/rokkit/index.css +0 -1
  43. package/src/rokkit/input.css +1 -1
  44. package/src/rokkit/list.css +25 -0
  45. package/src/rokkit/range.css +2 -2
  46. package/src/rokkit/select.css +1 -1
  47. package/src/rokkit/step-indicator.css +1 -2
  48. package/src/rokkit/swatch.css +1 -1
  49. package/src/rokkit/switch.css +1 -1
  50. package/src/rokkit/timeline.css +1 -2
  51. package/src/rokkit/upload-progress.css +4 -4
  52. package/src/zen-sumi/button.css +176 -0
  53. package/src/zen-sumi/card.css +104 -0
  54. package/src/zen-sumi/chart.css +41 -0
  55. package/src/zen-sumi/dropdown.css +53 -0
  56. package/src/zen-sumi/floating-action.css +68 -0
  57. package/src/zen-sumi/floating-navigation.css +74 -0
  58. package/src/{grada-ui → zen-sumi}/index.css +25 -30
  59. package/src/zen-sumi/input.css +145 -0
  60. package/src/zen-sumi/list.css +128 -0
  61. package/src/zen-sumi/menu.css +91 -0
  62. package/src/zen-sumi/message.css +37 -0
  63. package/src/zen-sumi/range.css +62 -0
  64. package/src/zen-sumi/search-filter.css +49 -0
  65. package/src/zen-sumi/select.css +160 -0
  66. package/src/zen-sumi/status-list.css +66 -0
  67. package/src/zen-sumi/step-indicator.css +40 -0
  68. package/src/zen-sumi/swatch.css +21 -0
  69. package/src/zen-sumi/switch.css +34 -0
  70. package/src/zen-sumi/table.css +118 -0
  71. package/src/zen-sumi/tabs.css +78 -0
  72. package/src/zen-sumi/timeline.css +46 -0
  73. package/src/zen-sumi/toc.css +22 -0
  74. package/src/zen-sumi/toggle.css +51 -0
  75. package/src/zen-sumi/toolbar.css +86 -0
  76. package/src/zen-sumi/tree.css +137 -0
  77. package/dist/ant-design.css +0 -2129
  78. package/dist/base.css +0 -6378
  79. package/dist/bits-ui.css +0 -2113
  80. package/dist/carbon.css +0 -2123
  81. package/dist/daisy-ui.css +0 -2138
  82. package/dist/frosted.css +0 -1953
  83. package/dist/grada-ui.css +0 -1915
  84. package/dist/index.css +0 -27231
  85. package/dist/material.css +0 -1924
  86. package/dist/minimal.css +0 -1978
  87. package/dist/rokkit.css +0 -2471
  88. package/dist/shadcn.css +0 -2099
  89. package/src/ant-design/button.css +0 -190
  90. package/src/ant-design/card.css +0 -100
  91. package/src/ant-design/chart.css +0 -34
  92. package/src/ant-design/connector.css +0 -11
  93. package/src/ant-design/dropdown.css +0 -50
  94. package/src/ant-design/floating-action.css +0 -63
  95. package/src/ant-design/floating-navigation.css +0 -70
  96. package/src/ant-design/grid.css +0 -46
  97. package/src/ant-design/index.css +0 -35
  98. package/src/ant-design/input.css +0 -151
  99. package/src/ant-design/list.css +0 -126
  100. package/src/ant-design/menu.css +0 -88
  101. package/src/ant-design/message.css +0 -35
  102. package/src/ant-design/range.css +0 -61
  103. package/src/ant-design/search-filter.css +0 -49
  104. package/src/ant-design/select.css +0 -158
  105. package/src/ant-design/status-list.css +0 -66
  106. package/src/ant-design/step-indicator.css +0 -38
  107. package/src/ant-design/switch.css +0 -29
  108. package/src/ant-design/table.css +0 -91
  109. package/src/ant-design/tabs.css +0 -153
  110. package/src/ant-design/timeline.css +0 -45
  111. package/src/ant-design/toc.css +0 -18
  112. package/src/ant-design/toggle.css +0 -48
  113. package/src/ant-design/toolbar.css +0 -85
  114. package/src/ant-design/tree.css +0 -137
  115. package/src/ant-design/upload-progress.css +0 -102
  116. package/src/ant-design/upload-target.css +0 -50
  117. package/src/bits-ui/button.css +0 -176
  118. package/src/bits-ui/card.css +0 -99
  119. package/src/bits-ui/chart.css +0 -34
  120. package/src/bits-ui/connector.css +0 -11
  121. package/src/bits-ui/dropdown.css +0 -50
  122. package/src/bits-ui/floating-action.css +0 -63
  123. package/src/bits-ui/floating-navigation.css +0 -70
  124. package/src/bits-ui/grid.css +0 -46
  125. package/src/bits-ui/index.css +0 -35
  126. package/src/bits-ui/input.css +0 -154
  127. package/src/bits-ui/list.css +0 -126
  128. package/src/bits-ui/menu.css +0 -88
  129. package/src/bits-ui/message.css +0 -35
  130. package/src/bits-ui/range.css +0 -61
  131. package/src/bits-ui/search-filter.css +0 -49
  132. package/src/bits-ui/select.css +0 -158
  133. package/src/bits-ui/status-list.css +0 -66
  134. package/src/bits-ui/step-indicator.css +0 -40
  135. package/src/bits-ui/switch.css +0 -29
  136. package/src/bits-ui/table.css +0 -89
  137. package/src/bits-ui/tabs.css +0 -151
  138. package/src/bits-ui/timeline.css +0 -45
  139. package/src/bits-ui/toc.css +0 -18
  140. package/src/bits-ui/toggle.css +0 -48
  141. package/src/bits-ui/toolbar.css +0 -85
  142. package/src/bits-ui/tree.css +0 -135
  143. package/src/bits-ui/upload-progress.css +0 -102
  144. package/src/bits-ui/upload-target.css +0 -50
  145. package/src/carbon/button.css +0 -186
  146. package/src/carbon/card.css +0 -97
  147. package/src/carbon/chart.css +0 -34
  148. package/src/carbon/connector.css +0 -11
  149. package/src/carbon/dropdown.css +0 -50
  150. package/src/carbon/floating-action.css +0 -63
  151. package/src/carbon/floating-navigation.css +0 -70
  152. package/src/carbon/grid.css +0 -46
  153. package/src/carbon/index.css +0 -34
  154. package/src/carbon/input.css +0 -148
  155. package/src/carbon/list.css +0 -124
  156. package/src/carbon/menu.css +0 -88
  157. package/src/carbon/message.css +0 -37
  158. package/src/carbon/range.css +0 -61
  159. package/src/carbon/search-filter.css +0 -49
  160. package/src/carbon/select.css +0 -158
  161. package/src/carbon/status-list.css +0 -66
  162. package/src/carbon/step-indicator.css +0 -40
  163. package/src/carbon/switch.css +0 -31
  164. package/src/carbon/table.css +0 -93
  165. package/src/carbon/tabs.css +0 -151
  166. package/src/carbon/timeline.css +0 -45
  167. package/src/carbon/toc.css +0 -22
  168. package/src/carbon/toggle.css +0 -48
  169. package/src/carbon/toolbar.css +0 -84
  170. package/src/carbon/tree.css +0 -135
  171. package/src/carbon/upload-progress.css +0 -102
  172. package/src/carbon/upload-target.css +0 -50
  173. package/src/daisy-ui/button.css +0 -196
  174. package/src/daisy-ui/card.css +0 -99
  175. package/src/daisy-ui/chart.css +0 -34
  176. package/src/daisy-ui/connector.css +0 -11
  177. package/src/daisy-ui/dropdown.css +0 -50
  178. package/src/daisy-ui/floating-action.css +0 -63
  179. package/src/daisy-ui/floating-navigation.css +0 -70
  180. package/src/daisy-ui/grid.css +0 -46
  181. package/src/daisy-ui/index.css +0 -34
  182. package/src/daisy-ui/input.css +0 -148
  183. package/src/daisy-ui/list.css +0 -127
  184. package/src/daisy-ui/menu.css +0 -88
  185. package/src/daisy-ui/message.css +0 -37
  186. package/src/daisy-ui/range.css +0 -61
  187. package/src/daisy-ui/search-filter.css +0 -49
  188. package/src/daisy-ui/select.css +0 -158
  189. package/src/daisy-ui/status-list.css +0 -66
  190. package/src/daisy-ui/step-indicator.css +0 -37
  191. package/src/daisy-ui/switch.css +0 -31
  192. package/src/daisy-ui/table.css +0 -91
  193. package/src/daisy-ui/tabs.css +0 -153
  194. package/src/daisy-ui/timeline.css +0 -45
  195. package/src/daisy-ui/toc.css +0 -22
  196. package/src/daisy-ui/toggle.css +0 -48
  197. package/src/daisy-ui/toolbar.css +0 -85
  198. package/src/daisy-ui/tree.css +0 -137
  199. package/src/daisy-ui/upload-progress.css +0 -102
  200. package/src/daisy-ui/upload-target.css +0 -50
  201. package/src/grada-ui/button.css +0 -249
  202. package/src/grada-ui/card.css +0 -96
  203. package/src/grada-ui/chart.css +0 -34
  204. package/src/grada-ui/dropdown.css +0 -58
  205. package/src/grada-ui/floating-action.css +0 -66
  206. package/src/grada-ui/floating-navigation.css +0 -69
  207. package/src/grada-ui/input.css +0 -154
  208. package/src/grada-ui/list.css +0 -124
  209. package/src/grada-ui/menu.css +0 -81
  210. package/src/grada-ui/message.css +0 -48
  211. package/src/grada-ui/range.css +0 -59
  212. package/src/grada-ui/search-filter.css +0 -47
  213. package/src/grada-ui/select.css +0 -190
  214. package/src/grada-ui/status-list.css +0 -66
  215. package/src/grada-ui/step-indicator.css +0 -37
  216. package/src/grada-ui/switch.css +0 -35
  217. package/src/grada-ui/table.css +0 -79
  218. package/src/grada-ui/tabs.css +0 -59
  219. package/src/grada-ui/timeline.css +0 -46
  220. package/src/grada-ui/toc.css +0 -24
  221. package/src/grada-ui/toggle.css +0 -47
  222. package/src/grada-ui/toolbar.css +0 -91
  223. package/src/grada-ui/tree.css +0 -100
  224. package/src/rokkit/stack.css +0 -6
  225. package/src/shadcn/button.css +0 -175
  226. package/src/shadcn/card.css +0 -99
  227. package/src/shadcn/chart.css +0 -34
  228. package/src/shadcn/connector.css +0 -11
  229. package/src/shadcn/dropdown.css +0 -50
  230. package/src/shadcn/floating-action.css +0 -63
  231. package/src/shadcn/floating-navigation.css +0 -70
  232. package/src/shadcn/grid.css +0 -46
  233. package/src/shadcn/index.css +0 -35
  234. package/src/shadcn/input.css +0 -143
  235. package/src/shadcn/list.css +0 -124
  236. package/src/shadcn/menu.css +0 -88
  237. package/src/shadcn/message.css +0 -35
  238. package/src/shadcn/range.css +0 -61
  239. package/src/shadcn/search-filter.css +0 -49
  240. package/src/shadcn/select.css +0 -158
  241. package/src/shadcn/status-list.css +0 -66
  242. package/src/shadcn/step-indicator.css +0 -37
  243. package/src/shadcn/switch.css +0 -31
  244. package/src/shadcn/table.css +0 -89
  245. package/src/shadcn/tabs.css +0 -151
  246. package/src/shadcn/timeline.css +0 -45
  247. package/src/shadcn/toc.css +0 -20
  248. package/src/shadcn/toggle.css +0 -48
  249. package/src/shadcn/toolbar.css +0 -84
  250. package/src/shadcn/tree.css +0 -135
  251. package/src/shadcn/upload-progress.css +0 -102
  252. 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.3",
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.3"
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;
@@ -19,7 +19,7 @@
19
19
  --density-line-height: 1.5;
20
20
  --density-icon-size: 1.25rem;
21
21
  --density-border-width: 1px;
22
- --density-radius-base: var(--radius-md, 0.375rem);
22
+ --density-radius-base: var(--radius-md);
23
23
  }
24
24
 
25
25
  [data-density='compact'] {
@@ -33,7 +33,7 @@
33
33
  --density-line-height: 1.375;
34
34
  --density-icon-size: 1rem;
35
35
  --density-border-width: 1px;
36
- --density-radius-base: var(--radius-sm, 0.25rem);
36
+ --density-radius-base: var(--radius-sm);
37
37
  }
38
38
 
39
39
  [data-density='cozy'] {
@@ -47,5 +47,5 @@
47
47
  --density-line-height: 1.75;
48
48
  --density-icon-size: 1.5rem;
49
49
  --density-border-width: 1px;
50
- --density-radius-base: var(--radius-lg, 0.5rem);
50
+ --density-radius-base: var(--radius-lg);
51
51
  }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Gradient Border Wrapper — Base Structural CSS
3
+ *
4
+ * Usage:
5
+ * <div data-gradient-border>
6
+ * <div data-gradient-border-inner>content</div>
7
+ * </div>
8
+ *
9
+ * Themes set the gradient on [data-gradient-border] background.
10
+ * Non-gradient themes set background: transparent and use regular border.
11
+ */
12
+
13
+ [data-gradient-border] {
14
+ padding: var(--density-border-width, 1px);
15
+ border-radius: var(--density-radius-base, var(--radius-md));
16
+ background: var(--gradient-border-bg, transparent);
17
+ }
18
+
19
+ [data-gradient-border-inner] {
20
+ border-radius: calc(var(--density-radius-base, var(--radius-md)) - var(--density-border-width, 1px));
21
+ background: var(--gradient-border-inner-bg, inherit);
22
+ }
23
+
24
+ /* Fallback: when no gradient, use a standard border */
25
+ [data-gradient-border]:not([style*='--gradient-border-bg']) {
26
+ padding: 0;
27
+ border: var(--density-border-width, 1px) solid var(--gradient-border-color, currentColor);
28
+ }
29
+
30
+ [data-gradient-border]:not([style*='--gradient-border-bg']) [data-gradient-border-inner] {
31
+ border-radius: var(--density-radius-base, var(--radius-md));
32
+ }
@@ -7,6 +7,9 @@
7
7
 
8
8
  @import './typography.css';
9
9
  @import './density.css';
10
+ @import './radius.css';
11
+ @import './layout.css';
12
+ @import './gradient-border.css';
10
13
  @import './button.css';
11
14
  @import './item.css';
12
15
  @import './menu.css';
@@ -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%;
package/src/base/item.css CHANGED
@@ -13,6 +13,19 @@
13
13
  flex-shrink: 0;
14
14
  }
15
15
 
16
+
17
+ /* =============================================================================
18
+ Item Icon — Literal (kanji, emoji, text)
19
+ ============================================================================= */
20
+
21
+ [data-item-icon-literal] {
22
+ flex-shrink: 0;
23
+ width: var(--density-icon-size, 1.25rem);
24
+ text-align: center;
25
+ line-height: 1;
26
+ font-size: var(--density-icon-size, 1.25rem);
27
+ }
28
+
16
29
  /* =============================================================================
17
30
  Item Avatar
18
31
  ============================================================================= */
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Layout Tokens — App-Level Spacing
3
+ *
4
+ * Structural layout dimensions for app shells.
5
+ * Override per-app by redefining these custom properties.
6
+ */
7
+
8
+ :root {
9
+ --layout-sidebar-width: 240px;
10
+ --layout-sidebar-collapsed: 64px;
11
+ --layout-header-height: 56px;
12
+ --layout-content-max-width: 1280px;
13
+ --layout-section-gap: 2rem;
14
+ --layout-section-padding: 1.5rem;
15
+ --layout-content-padding: 2rem;
16
+ --layout-card-gap: 1rem;
17
+ }
@@ -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
  }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Roundedness Axis — CSS Custom Property Scale
3
+ *
4
+ * Decoupled from density. Place data-radius on any container;
5
+ * descendants inherit automatically.
6
+ *
7
+ * Presets: sharp → soft (default) → rounded → pill
8
+ */
9
+
10
+ :root,
11
+ [data-radius='soft'] {
12
+ --radius-sm: 0.125rem;
13
+ --radius-md: 0.375rem;
14
+ --radius-lg: 0.625rem;
15
+ --radius-xl: 0.75rem;
16
+ --radius-full: 9999px;
17
+ }
18
+
19
+ [data-radius='sharp'] {
20
+ --radius-sm: 0;
21
+ --radius-md: 0;
22
+ --radius-lg: 0;
23
+ --radius-xl: 0;
24
+ --radius-full: 9999px;
25
+ }
26
+
27
+ [data-radius='rounded'] {
28
+ --radius-sm: 0.25rem;
29
+ --radius-md: 0.5rem;
30
+ --radius-lg: 0.75rem;
31
+ --radius-xl: 1rem;
32
+ --radius-full: 9999px;
33
+ }
34
+
35
+ [data-radius='pill'] {
36
+ --radius-sm: 9999px;
37
+ --radius-md: 9999px;
38
+ --radius-lg: 9999px;
39
+ --radius-xl: 9999px;
40
+ --radius-full: 9999px;
41
+ }
@@ -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),