@work-rjkashyap/unified-ui 0.3.4 → 0.3.6

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 (456) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/LICENSE +21 -0
  3. package/dist/components/accordion.cjs +225 -0
  4. package/dist/components/accordion.d.cts +157 -0
  5. package/dist/components/accordion.d.ts +157 -0
  6. package/dist/components/accordion.mjs +199 -0
  7. package/dist/components/alert-dialog.cjs +246 -0
  8. package/dist/components/alert-dialog.d.cts +61 -0
  9. package/dist/components/alert-dialog.d.ts +61 -0
  10. package/dist/components/alert-dialog.mjs +218 -0
  11. package/dist/components/alert.cjs +401 -0
  12. package/dist/components/alert.d.cts +217 -0
  13. package/dist/components/alert.d.ts +217 -0
  14. package/dist/components/alert.mjs +374 -0
  15. package/dist/components/aspect-ratio.cjs +45 -0
  16. package/dist/components/aspect-ratio.d.cts +10 -0
  17. package/dist/components/aspect-ratio.d.ts +10 -0
  18. package/dist/components/aspect-ratio.mjs +23 -0
  19. package/dist/components/avatar.cjs +348 -0
  20. package/dist/components/avatar.d.cts +198 -0
  21. package/dist/components/avatar.d.ts +198 -0
  22. package/dist/components/avatar.mjs +329 -0
  23. package/dist/components/badge.cjs +325 -0
  24. package/dist/components/badge.d.cts +259 -0
  25. package/dist/components/badge.d.ts +259 -0
  26. package/dist/components/badge.mjs +298 -0
  27. package/dist/components/banner.cjs +147 -0
  28. package/dist/components/banner.d.cts +31 -0
  29. package/dist/components/banner.d.ts +31 -0
  30. package/dist/components/banner.mjs +122 -0
  31. package/dist/components/breadcrumb.cjs +266 -0
  32. package/dist/components/breadcrumb.d.cts +159 -0
  33. package/dist/components/breadcrumb.d.ts +159 -0
  34. package/dist/components/breadcrumb.mjs +235 -0
  35. package/dist/components/button.cjs +254 -0
  36. package/dist/components/button.d.cts +126 -0
  37. package/dist/components/button.d.ts +126 -0
  38. package/dist/components/button.mjs +229 -0
  39. package/dist/components/calendar.cjs +511 -0
  40. package/dist/components/calendar.d.cts +94 -0
  41. package/dist/components/calendar.d.ts +94 -0
  42. package/dist/components/calendar.mjs +492 -0
  43. package/dist/components/card.cjs +234 -0
  44. package/dist/components/card.d.cts +190 -0
  45. package/dist/components/card.d.ts +190 -0
  46. package/dist/components/card.mjs +210 -0
  47. package/dist/components/carousel.cjs +234 -0
  48. package/dist/components/carousel.d.cts +30 -0
  49. package/dist/components/carousel.d.ts +30 -0
  50. package/dist/components/carousel.mjs +217 -0
  51. package/dist/components/chart.cjs +122 -0
  52. package/dist/components/chart.d.cts +103 -0
  53. package/dist/components/chart.d.ts +103 -0
  54. package/dist/components/chart.mjs +96 -0
  55. package/dist/components/checkbox.cjs +318 -0
  56. package/dist/components/checkbox.d.cts +182 -0
  57. package/dist/components/checkbox.d.ts +182 -0
  58. package/dist/components/checkbox.mjs +296 -0
  59. package/dist/components/code-highlight.cjs +335 -0
  60. package/dist/components/code-highlight.d.cts +18 -0
  61. package/dist/components/code-highlight.d.ts +18 -0
  62. package/dist/components/code-highlight.mjs +308 -0
  63. package/dist/components/code.cjs +265 -0
  64. package/dist/components/code.d.cts +40 -0
  65. package/dist/components/code.d.ts +40 -0
  66. package/dist/components/code.mjs +243 -0
  67. package/dist/components/collapsible.cjs +143 -0
  68. package/dist/components/collapsible.d.cts +159 -0
  69. package/dist/components/collapsible.d.ts +159 -0
  70. package/dist/components/collapsible.mjs +123 -0
  71. package/dist/components/color-picker.cjs +348 -0
  72. package/dist/components/color-picker.d.cts +35 -0
  73. package/dist/components/color-picker.d.ts +35 -0
  74. package/dist/components/color-picker.mjs +331 -0
  75. package/dist/components/combobox.cjs +584 -0
  76. package/dist/components/combobox.d.cts +183 -0
  77. package/dist/components/combobox.d.ts +183 -0
  78. package/dist/components/combobox.mjs +571 -0
  79. package/dist/components/command.cjs +329 -0
  80. package/dist/components/command.d.cts +97 -0
  81. package/dist/components/command.d.ts +97 -0
  82. package/dist/components/command.mjs +311 -0
  83. package/dist/components/confirm-dialog.cjs +100 -0
  84. package/dist/components/confirm-dialog.d.cts +25 -0
  85. package/dist/components/confirm-dialog.d.ts +25 -0
  86. package/dist/components/confirm-dialog.mjs +86 -0
  87. package/dist/components/context-menu.cjs +325 -0
  88. package/dist/components/context-menu.d.cts +259 -0
  89. package/dist/components/context-menu.d.ts +259 -0
  90. package/dist/components/context-menu.mjs +290 -0
  91. package/dist/components/copy-button.cjs +203 -0
  92. package/dist/components/copy-button.d.cts +22 -0
  93. package/dist/components/copy-button.d.ts +22 -0
  94. package/dist/components/copy-button.mjs +178 -0
  95. package/dist/components/data-list.cjs +140 -0
  96. package/dist/components/data-list.d.cts +36 -0
  97. package/dist/components/data-list.d.ts +36 -0
  98. package/dist/components/data-list.mjs +113 -0
  99. package/dist/components/data-table-toolbar.cjs +338 -0
  100. package/dist/components/data-table-toolbar.d.cts +84 -0
  101. package/dist/components/data-table-toolbar.d.ts +84 -0
  102. package/dist/components/data-table-toolbar.mjs +320 -0
  103. package/dist/components/data-table.cjs +1324 -0
  104. package/dist/components/data-table.d.cts +349 -0
  105. package/dist/components/data-table.d.ts +349 -0
  106. package/dist/components/data-table.mjs +1323 -0
  107. package/dist/components/date-picker.cjs +282 -0
  108. package/dist/components/date-picker.d.cts +97 -0
  109. package/dist/components/date-picker.d.ts +97 -0
  110. package/dist/components/date-picker.mjs +258 -0
  111. package/dist/components/dialog.cjs +319 -0
  112. package/dist/components/dialog.d.cts +74 -0
  113. package/dist/components/dialog.d.ts +74 -0
  114. package/dist/components/dialog.mjs +292 -0
  115. package/dist/components/drawer.cjs +262 -0
  116. package/dist/components/drawer.d.cts +113 -0
  117. package/dist/components/drawer.d.ts +113 -0
  118. package/dist/components/drawer.mjs +230 -0
  119. package/dist/components/dropdown-menu.cjs +328 -0
  120. package/dist/components/dropdown-menu.d.cts +95 -0
  121. package/dist/components/dropdown-menu.d.ts +95 -0
  122. package/dist/components/dropdown-menu.mjs +293 -0
  123. package/dist/components/empty-state.cjs +123 -0
  124. package/dist/components/empty-state.d.cts +15 -0
  125. package/dist/components/empty-state.d.ts +15 -0
  126. package/dist/components/empty-state.mjs +99 -0
  127. package/dist/components/file-upload.cjs +442 -0
  128. package/dist/components/file-upload.d.cts +35 -0
  129. package/dist/components/file-upload.d.ts +35 -0
  130. package/dist/components/file-upload.mjs +423 -0
  131. package/dist/components/form-field.cjs +191 -0
  132. package/dist/components/form-field.d.cts +163 -0
  133. package/dist/components/form-field.d.ts +163 -0
  134. package/dist/components/form-field.mjs +167 -0
  135. package/dist/components/hover-card.cjs +99 -0
  136. package/dist/components/hover-card.d.cts +28 -0
  137. package/dist/components/hover-card.d.ts +28 -0
  138. package/dist/components/hover-card.mjs +75 -0
  139. package/dist/components/image-gallery.cjs +359 -0
  140. package/dist/components/image-gallery.d.cts +46 -0
  141. package/dist/components/image-gallery.d.ts +46 -0
  142. package/dist/components/image-gallery.mjs +340 -0
  143. package/dist/components/index.cjs +719 -0
  144. package/dist/components/index.d.cts +84 -0
  145. package/dist/components/index.d.ts +84 -0
  146. package/dist/components/index.mjs +771 -0
  147. package/dist/components/infinite-scroll.cjs +95 -0
  148. package/dist/components/infinite-scroll.d.cts +54 -0
  149. package/dist/components/infinite-scroll.d.ts +54 -0
  150. package/dist/components/infinite-scroll.mjs +71 -0
  151. package/dist/components/input-group.cjs +202 -0
  152. package/dist/components/input-group.d.cts +22 -0
  153. package/dist/components/input-group.d.ts +22 -0
  154. package/dist/components/input-group.mjs +178 -0
  155. package/dist/components/input.cjs +318 -0
  156. package/dist/components/input.d.cts +99 -0
  157. package/dist/components/input.d.ts +99 -0
  158. package/dist/components/input.mjs +296 -0
  159. package/dist/components/kbd.cjs +69 -0
  160. package/dist/components/kbd.d.cts +25 -0
  161. package/dist/components/kbd.d.ts +25 -0
  162. package/dist/components/kbd.mjs +44 -0
  163. package/dist/components/label.cjs +138 -0
  164. package/dist/components/label.d.cts +91 -0
  165. package/dist/components/label.d.ts +91 -0
  166. package/dist/components/label.mjs +113 -0
  167. package/dist/components/markdown.cjs +179 -0
  168. package/dist/components/markdown.d.cts +41 -0
  169. package/dist/components/markdown.d.ts +41 -0
  170. package/dist/components/markdown.mjs +155 -0
  171. package/dist/components/menubar.cjs +365 -0
  172. package/dist/components/menubar.d.cts +88 -0
  173. package/dist/components/menubar.d.ts +88 -0
  174. package/dist/components/menubar.mjs +329 -0
  175. package/dist/components/navigation-menu.cjs +280 -0
  176. package/dist/components/navigation-menu.d.cts +123 -0
  177. package/dist/components/navigation-menu.d.ts +123 -0
  178. package/dist/components/navigation-menu.mjs +250 -0
  179. package/dist/components/number-input.cjs +419 -0
  180. package/dist/components/number-input.d.cts +111 -0
  181. package/dist/components/number-input.d.ts +111 -0
  182. package/dist/components/number-input.mjs +400 -0
  183. package/dist/components/pagination.cjs +322 -0
  184. package/dist/components/pagination.d.cts +119 -0
  185. package/dist/components/pagination.d.ts +119 -0
  186. package/dist/components/pagination.mjs +297 -0
  187. package/dist/components/pin-input.cjs +321 -0
  188. package/dist/components/pin-input.d.cts +112 -0
  189. package/dist/components/pin-input.d.ts +112 -0
  190. package/dist/components/pin-input.mjs +303 -0
  191. package/dist/components/popover.cjs +194 -0
  192. package/dist/components/popover.d.cts +108 -0
  193. package/dist/components/popover.d.ts +108 -0
  194. package/dist/components/popover.mjs +168 -0
  195. package/dist/components/progress.cjs +237 -0
  196. package/dist/components/progress.d.cts +137 -0
  197. package/dist/components/progress.d.ts +137 -0
  198. package/dist/components/progress.mjs +211 -0
  199. package/dist/components/radio.cjs +344 -0
  200. package/dist/components/radio.d.cts +145 -0
  201. package/dist/components/radio.d.ts +145 -0
  202. package/dist/components/radio.mjs +320 -0
  203. package/dist/components/resizable.cjs +121 -0
  204. package/dist/components/resizable.d.cts +23 -0
  205. package/dist/components/resizable.d.ts +23 -0
  206. package/dist/components/resizable.mjs +99 -0
  207. package/dist/components/scroll-area.cjs +168 -0
  208. package/dist/components/scroll-area.d.cts +131 -0
  209. package/dist/components/scroll-area.d.ts +131 -0
  210. package/dist/components/scroll-area.mjs +143 -0
  211. package/dist/components/search-input.cjs +261 -0
  212. package/dist/components/search-input.d.cts +26 -0
  213. package/dist/components/search-input.d.ts +26 -0
  214. package/dist/components/search-input.mjs +243 -0
  215. package/dist/components/select.cjs +320 -0
  216. package/dist/components/select.d.cts +55 -0
  217. package/dist/components/select.d.ts +55 -0
  218. package/dist/components/select.mjs +288 -0
  219. package/dist/components/separator.cjs +193 -0
  220. package/dist/components/separator.d.cts +92 -0
  221. package/dist/components/separator.d.ts +92 -0
  222. package/dist/components/separator.mjs +170 -0
  223. package/dist/components/sheet.cjs +399 -0
  224. package/dist/components/sheet.d.cts +219 -0
  225. package/dist/components/sheet.d.ts +219 -0
  226. package/dist/components/sheet.mjs +379 -0
  227. package/dist/components/sidebar.cjs +1077 -0
  228. package/dist/components/sidebar.d.cts +733 -0
  229. package/dist/components/sidebar.d.ts +733 -0
  230. package/dist/components/sidebar.mjs +1033 -0
  231. package/dist/components/skeleton.cjs +210 -0
  232. package/dist/components/skeleton.d.cts +202 -0
  233. package/dist/components/skeleton.d.ts +202 -0
  234. package/dist/components/skeleton.mjs +182 -0
  235. package/dist/components/slider.cjs +319 -0
  236. package/dist/components/slider.d.cts +82 -0
  237. package/dist/components/slider.d.ts +82 -0
  238. package/dist/components/slider.mjs +296 -0
  239. package/dist/components/sonner.cjs +119 -0
  240. package/dist/components/sonner.d.cts +60 -0
  241. package/dist/components/sonner.d.ts +60 -0
  242. package/dist/components/sonner.mjs +94 -0
  243. package/dist/components/spinner.cjs +238 -0
  244. package/dist/components/spinner.d.cts +101 -0
  245. package/dist/components/spinner.d.ts +101 -0
  246. package/dist/components/spinner.mjs +213 -0
  247. package/dist/components/stat.cjs +180 -0
  248. package/dist/components/stat.d.cts +21 -0
  249. package/dist/components/stat.d.ts +21 -0
  250. package/dist/components/stat.mjs +161 -0
  251. package/dist/components/steps.cjs +228 -0
  252. package/dist/components/steps.d.cts +76 -0
  253. package/dist/components/steps.d.ts +76 -0
  254. package/dist/components/steps.mjs +207 -0
  255. package/dist/components/switch.cjs +243 -0
  256. package/dist/components/switch.d.cts +90 -0
  257. package/dist/components/switch.d.ts +90 -0
  258. package/dist/components/switch.mjs +228 -0
  259. package/dist/components/table.cjs +381 -0
  260. package/dist/components/table.d.cts +181 -0
  261. package/dist/components/table.d.ts +181 -0
  262. package/dist/components/table.mjs +349 -0
  263. package/dist/components/tabs.cjs +326 -0
  264. package/dist/components/tabs.d.cts +154 -0
  265. package/dist/components/tabs.d.ts +154 -0
  266. package/dist/components/tabs.mjs +304 -0
  267. package/dist/components/textarea.cjs +258 -0
  268. package/dist/components/textarea.d.cts +112 -0
  269. package/dist/components/textarea.d.ts +112 -0
  270. package/dist/components/textarea.mjs +233 -0
  271. package/dist/components/theme-toggle.cjs +282 -0
  272. package/dist/components/theme-toggle.d.cts +58 -0
  273. package/dist/components/theme-toggle.d.ts +58 -0
  274. package/dist/components/theme-toggle.mjs +258 -0
  275. package/dist/components/timeline.cjs +178 -0
  276. package/dist/components/timeline.d.cts +41 -0
  277. package/dist/components/timeline.d.ts +41 -0
  278. package/dist/components/timeline.mjs +157 -0
  279. package/dist/components/toast.cjs +546 -0
  280. package/dist/components/toast.d.cts +169 -0
  281. package/dist/components/toast.d.ts +169 -0
  282. package/dist/components/toast.mjs +528 -0
  283. package/dist/components/toggle-group.cjs +204 -0
  284. package/dist/components/toggle-group.d.cts +215 -0
  285. package/dist/components/toggle-group.d.ts +215 -0
  286. package/dist/components/toggle-group.mjs +180 -0
  287. package/dist/components/toggle.cjs +155 -0
  288. package/dist/components/toggle.d.cts +100 -0
  289. package/dist/components/toggle.d.ts +100 -0
  290. package/dist/components/toggle.mjs +130 -0
  291. package/dist/components/tooltip.cjs +155 -0
  292. package/dist/components/tooltip.d.cts +129 -0
  293. package/dist/components/tooltip.d.ts +129 -0
  294. package/dist/components/tooltip.mjs +132 -0
  295. package/dist/components/tree-view.cjs +450 -0
  296. package/dist/components/tree-view.d.cts +67 -0
  297. package/dist/components/tree-view.d.ts +67 -0
  298. package/dist/components/tree-view.mjs +433 -0
  299. package/dist/components/video-player.cjs +344 -0
  300. package/dist/components/video-player.d.cts +34 -0
  301. package/dist/components/video-player.d.ts +34 -0
  302. package/dist/components/video-player.mjs +320 -0
  303. package/dist/components/virtual-list.cjs +153 -0
  304. package/dist/components/virtual-list.d.cts +53 -0
  305. package/dist/components/virtual-list.d.ts +53 -0
  306. package/dist/components/virtual-list.mjs +136 -0
  307. package/dist/components/visually-hidden.cjs +43 -0
  308. package/dist/components/visually-hidden.d.cts +9 -0
  309. package/dist/components/visually-hidden.d.ts +9 -0
  310. package/dist/components/visually-hidden.mjs +21 -0
  311. package/dist/index.cjs +1081 -1957
  312. package/dist/index.d.cts +99 -11
  313. package/dist/index.d.ts +99 -11
  314. package/dist/index.mjs +1138 -16
  315. package/dist/motion/hooks.cjs +98 -0
  316. package/dist/motion/hooks.d.cts +32 -0
  317. package/dist/motion/hooks.d.ts +32 -0
  318. package/dist/motion/hooks.mjs +70 -0
  319. package/dist/motion/index.cjs +157 -0
  320. package/dist/motion/index.d.cts +5 -0
  321. package/dist/motion/index.d.ts +5 -0
  322. package/dist/motion/index.mjs +137 -0
  323. package/dist/motion/presets.cjs +609 -0
  324. package/dist/{motion.d.ts → motion/presets.d.cts} +1 -30
  325. package/dist/{motion.d.cts → motion/presets.d.ts} +1 -30
  326. package/dist/{chunk-PLRSH37T.mjs → motion/presets.mjs} +119 -126
  327. package/dist/primitives/container.cjs +88 -0
  328. package/dist/primitives/container.d.cts +82 -0
  329. package/dist/primitives/container.d.ts +82 -0
  330. package/dist/primitives/container.mjs +64 -0
  331. package/dist/primitives/divider.cjs +74 -0
  332. package/dist/primitives/divider.d.cts +30 -0
  333. package/dist/primitives/divider.d.ts +30 -0
  334. package/dist/primitives/divider.mjs +50 -0
  335. package/dist/primitives/index.cjs +54 -0
  336. package/dist/primitives/index.d.cts +6 -0
  337. package/dist/primitives/index.d.ts +6 -0
  338. package/dist/primitives/index.mjs +33 -0
  339. package/dist/primitives/stack.cjs +167 -0
  340. package/dist/primitives/stack.d.cts +132 -0
  341. package/dist/primitives/stack.d.ts +132 -0
  342. package/dist/primitives/stack.mjs +142 -0
  343. package/dist/primitives/typography.cjs +260 -0
  344. package/dist/primitives/typography.d.cts +157 -0
  345. package/dist/primitives/typography.d.ts +157 -0
  346. package/dist/primitives/typography.mjs +229 -0
  347. package/dist/theme/contract.cjs +246 -0
  348. package/dist/theme/contract.d.cts +76 -0
  349. package/dist/theme/contract.d.ts +76 -0
  350. package/dist/theme/contract.mjs +221 -0
  351. package/dist/theme/customizer-store.cjs +266 -0
  352. package/dist/theme/customizer-store.d.cts +76 -0
  353. package/dist/theme/customizer-store.d.ts +76 -0
  354. package/dist/theme/customizer-store.mjs +261 -0
  355. package/dist/theme/customizer.cjs +812 -0
  356. package/dist/theme/customizer.d.cts +13 -0
  357. package/dist/theme/customizer.d.ts +13 -0
  358. package/dist/theme/customizer.mjs +803 -0
  359. package/dist/theme/index.cjs +105 -0
  360. package/dist/theme/index.d.cts +13 -0
  361. package/dist/theme/index.d.ts +13 -0
  362. package/dist/theme/index.mjs +87 -0
  363. package/dist/theme/presets.cjs +1205 -0
  364. package/dist/theme/presets.d.cts +232 -0
  365. package/dist/theme/presets.d.ts +232 -0
  366. package/dist/theme/presets.mjs +1175 -0
  367. package/dist/theme/provider.cjs +122 -0
  368. package/dist/theme/provider.d.cts +57 -0
  369. package/dist/theme/provider.d.ts +57 -0
  370. package/dist/theme/provider.mjs +104 -0
  371. package/dist/{chunk-AAEWG5VR.mjs → tokens/colors.cjs} +94 -94
  372. package/dist/{z-index-DmLl6FUD.d.ts → tokens/colors.d.cts} +118 -72
  373. package/dist/{z-index-DmLl6FUD.d.cts → tokens/colors.d.ts} +118 -72
  374. package/dist/{chunk-6ZZZBOCH.cjs → tokens/colors.mjs} +47 -121
  375. package/dist/tokens/index.cjs +96 -0
  376. package/dist/tokens/index.d.cts +7 -0
  377. package/dist/tokens/index.d.ts +7 -0
  378. package/dist/tokens/index.mjs +71 -0
  379. package/dist/{chunk-XCKK6P46.cjs → tokens/motion.cjs} +46 -18
  380. package/dist/{motion-D9wQbcKL.d.cts → tokens/motion.d.cts} +1 -1
  381. package/dist/{motion-D9wQbcKL.d.ts → tokens/motion.d.ts} +1 -1
  382. package/dist/{chunk-EZ2L3XPS.mjs → tokens/motion.mjs} +16 -10
  383. package/dist/tokens/radius.cjs +41 -0
  384. package/dist/tokens/radius.d.cts +18 -0
  385. package/dist/tokens/radius.d.ts +18 -0
  386. package/dist/tokens/radius.mjs +17 -0
  387. package/dist/tokens/shadows.cjs +57 -0
  388. package/dist/tokens/shadows.d.cts +32 -0
  389. package/dist/tokens/shadows.d.ts +32 -0
  390. package/dist/tokens/shadows.mjs +32 -0
  391. package/dist/tokens/spacing.cjs +51 -0
  392. package/dist/tokens/spacing.d.cts +26 -0
  393. package/dist/tokens/spacing.d.ts +26 -0
  394. package/dist/{chunk-NMPHV6ZD.mjs → tokens/spacing.mjs} +4 -4
  395. package/dist/{chunk-ECIGDEAH.cjs → tokens/typography.cjs} +43 -16
  396. package/dist/{typography-DlvVjEdE.d.ts → tokens/typography.d.cts} +1 -1
  397. package/dist/{typography-DlvVjEdE.d.cts → tokens/typography.d.ts} +1 -1
  398. package/dist/{chunk-ITBG42M5.mjs → tokens/typography.mjs} +14 -9
  399. package/dist/tokens/z-index.cjs +47 -0
  400. package/dist/tokens/z-index.d.cts +24 -0
  401. package/dist/tokens/z-index.d.ts +24 -0
  402. package/dist/tokens/z-index.mjs +23 -0
  403. package/dist/utils/cn.cjs +102 -0
  404. package/dist/utils/cn.d.cts +84 -0
  405. package/dist/utils/cn.d.ts +84 -0
  406. package/dist/{chunk-ZT3PCXDF.mjs → utils/cn.mjs} +14 -7
  407. package/dist/{chunk-33QEKXRQ.cjs → utils/contrast.cjs} +68 -38
  408. package/dist/utils/contrast.d.cts +209 -0
  409. package/dist/utils/contrast.d.ts +209 -0
  410. package/dist/{chunk-5NZDQWRV.mjs → utils/contrast.mjs} +27 -18
  411. package/dist/utils/focus-ring.cjs +81 -0
  412. package/dist/utils/focus-ring.d.cts +80 -0
  413. package/dist/utils/focus-ring.d.ts +80 -0
  414. package/dist/utils/focus-ring.mjs +47 -0
  415. package/dist/utils/index.cjs +107 -0
  416. package/dist/utils/index.d.cts +6 -0
  417. package/dist/utils/index.d.ts +6 -0
  418. package/dist/utils/index.mjs +88 -0
  419. package/dist/utils/types.cjs +38 -0
  420. package/dist/utils/types.d.cts +187 -0
  421. package/dist/utils/types.d.ts +187 -0
  422. package/dist/utils/types.mjs +13 -0
  423. package/package.json +191 -191
  424. package/dist/chunk-2JFREULQ.cjs +0 -29
  425. package/dist/chunk-3EHT6IOA.cjs +0 -49
  426. package/dist/chunk-4ON3M3OM.cjs +0 -73
  427. package/dist/chunk-A2DGHQL2.cjs +0 -21808
  428. package/dist/chunk-BJ55D5IK.mjs +0 -2433
  429. package/dist/chunk-F4JJFWWU.cjs +0 -604
  430. package/dist/chunk-FUWXGHWQ.cjs +0 -468
  431. package/dist/chunk-MBYCK2JJ.mjs +0 -37
  432. package/dist/chunk-OHEH57BV.mjs +0 -455
  433. package/dist/chunk-RUG3BW2B.cjs +0 -2471
  434. package/dist/chunk-XAIUX2YS.mjs +0 -21477
  435. package/dist/components.cjs +0 -1247
  436. package/dist/components.d.cts +0 -7881
  437. package/dist/components.d.ts +0 -7881
  438. package/dist/components.mjs +0 -6
  439. package/dist/motion.cjs +0 -264
  440. package/dist/motion.mjs +0 -3
  441. package/dist/primitives.cjs +0 -57
  442. package/dist/primitives.d.cts +0 -390
  443. package/dist/primitives.d.ts +0 -390
  444. package/dist/primitives.mjs +0 -4
  445. package/dist/theme.cjs +0 -159
  446. package/dist/theme.d.cts +0 -440
  447. package/dist/theme.d.ts +0 -440
  448. package/dist/theme.mjs +0 -6
  449. package/dist/tokens.cjs +0 -137
  450. package/dist/tokens.d.cts +0 -30
  451. package/dist/tokens.d.ts +0 -30
  452. package/dist/tokens.mjs +0 -4
  453. package/dist/utils.cjs +0 -164
  454. package/dist/utils.d.cts +0 -525
  455. package/dist/utils.d.ts +0 -525
  456. package/dist/utils.mjs +0 -3
@@ -0,0 +1,1205 @@
1
+ "use client";
2
+ "use strict";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var presets_exports = {};
21
+ __export(presets_exports, {
22
+ COLOR_PRESETS: () => COLOR_PRESETS,
23
+ COLOR_PRESET_KEYS: () => COLOR_PRESET_KEYS,
24
+ DEFAULT_FONT_KEY: () => DEFAULT_FONT_KEY,
25
+ DEFAULT_MENU_ACCENT_KEY: () => DEFAULT_MENU_ACCENT_KEY,
26
+ DEFAULT_MENU_COLOR_KEY: () => DEFAULT_MENU_COLOR_KEY,
27
+ DEFAULT_RADIUS_KEY: () => DEFAULT_RADIUS_KEY,
28
+ DEFAULT_SHADOW_KEY: () => DEFAULT_SHADOW_KEY,
29
+ DEFAULT_STYLE_KEY: () => DEFAULT_STYLE_KEY,
30
+ DEFAULT_SURFACE_STYLE_KEY: () => DEFAULT_SURFACE_STYLE_KEY,
31
+ DEFAULT_THEME_CONFIG: () => DEFAULT_THEME_CONFIG,
32
+ FONT_PRESETS: () => FONT_PRESETS,
33
+ MENU_ACCENT_PRESETS: () => MENU_ACCENT_PRESETS,
34
+ MENU_COLOR_PRESETS: () => MENU_COLOR_PRESETS,
35
+ RADIUS_PRESETS: () => RADIUS_PRESETS,
36
+ SHADOW_PRESETS: () => SHADOW_PRESETS,
37
+ STYLE_PRESETS: () => STYLE_PRESETS,
38
+ SURFACE_STYLE_PRESETS: () => SURFACE_STYLE_PRESETS,
39
+ buildThemeOverrides: () => buildThemeOverrides,
40
+ generateThemeCSS: () => generateThemeCSS,
41
+ getColorPreset: () => getColorPreset,
42
+ getFontPreset: () => getFontPreset,
43
+ getMenuAccentPreset: () => getMenuAccentPreset,
44
+ getMenuColorPreset: () => getMenuColorPreset,
45
+ getRadiusPreset: () => getRadiusPreset,
46
+ getShadowPreset: () => getShadowPreset,
47
+ getStylePreset: () => getStylePreset
48
+ });
49
+ module.exports = __toCommonJS(presets_exports);
50
+ var import_colors = require("../tokens/colors.cjs");
51
+ const STATUS_LIGHT = {
52
+ success: import_colors.green[600],
53
+ successForeground: "oklch(0.145 0 0)",
54
+ successMuted: import_colors.green[50],
55
+ successMutedForeground: import_colors.green[700],
56
+ warning: import_colors.amber[500],
57
+ warningForeground: "oklch(0.145 0 0)",
58
+ warningMuted: import_colors.amber[50],
59
+ warningMutedForeground: import_colors.amber[700],
60
+ danger: import_colors.red[600],
61
+ dangerForeground: "oklch(0.985 0 0)",
62
+ dangerHover: import_colors.red[700],
63
+ dangerActive: import_colors.red[800],
64
+ dangerMuted: import_colors.red[50],
65
+ dangerMutedForeground: import_colors.red[700],
66
+ destructive: import_colors.red[600],
67
+ destructiveForeground: "oklch(0.985 0 0)",
68
+ info: import_colors.blue[600],
69
+ infoForeground: "oklch(0.985 0 0)",
70
+ infoMuted: import_colors.blue[50],
71
+ infoMutedForeground: import_colors.blue[700]
72
+ };
73
+ const STATUS_DARK = {
74
+ success: import_colors.green[500],
75
+ successForeground: "oklch(0.145 0 0)",
76
+ successMuted: import_colors.green[950],
77
+ successMutedForeground: import_colors.green[300],
78
+ warning: import_colors.amber[400],
79
+ warningForeground: "oklch(0.145 0 0)",
80
+ warningMuted: import_colors.amber[950],
81
+ warningMutedForeground: import_colors.amber[300],
82
+ danger: import_colors.red[500],
83
+ dangerForeground: "oklch(0.985 0 0)",
84
+ dangerHover: import_colors.red[400],
85
+ dangerActive: import_colors.red[300],
86
+ dangerMuted: import_colors.red[950],
87
+ dangerMutedForeground: import_colors.red[300],
88
+ destructive: import_colors.red[500],
89
+ destructiveForeground: "oklch(0.985 0 0)",
90
+ info: import_colors.blue[400],
91
+ infoForeground: "oklch(0.145 0 0)",
92
+ infoMuted: import_colors.blue[950],
93
+ infoMutedForeground: import_colors.blue[300]
94
+ };
95
+ const CHART_LIGHT = {
96
+ chart1: "oklch(0.646 0.222 41.116)",
97
+ chart2: "oklch(0.6 0.118 184.704)",
98
+ chart3: "oklch(0.398 0.07 227.392)",
99
+ chart4: "oklch(0.828 0.189 84.429)",
100
+ chart5: "oklch(0.769 0.188 70.08)"
101
+ };
102
+ const CHART_DARK = {
103
+ chart1: "oklch(0.488 0.243 264.376)",
104
+ chart2: "oklch(0.696 0.17 162.48)",
105
+ chart3: "oklch(0.769 0.188 70.08)",
106
+ chart4: "oklch(0.627 0.265 303.9)",
107
+ chart5: "oklch(0.645 0.246 16.439)"
108
+ };
109
+ const stone = {
110
+ 50: "oklch(0.985 0.001 106.424)",
111
+ 100: "oklch(0.97 0.001 106.424)",
112
+ 200: "oklch(0.923 0.003 48.717)",
113
+ 300: "oklch(0.869 0.005 56.366)",
114
+ 400: "oklch(0.709 0.01 56.259)",
115
+ 500: "oklch(0.553 0.013 58.071)",
116
+ 600: "oklch(0.444 0.011 73.639)",
117
+ 700: "oklch(0.374 0.01 67.558)",
118
+ 800: "oklch(0.268 0.007 34.298)",
119
+ 900: "oklch(0.216 0.006 56.043)",
120
+ 950: "oklch(0.147 0.004 49.25)"
121
+ };
122
+ const neutral = {
123
+ 50: "oklch(0.985 0 0)",
124
+ 100: "oklch(0.97 0 0)",
125
+ 200: "oklch(0.922 0 0)",
126
+ 300: "oklch(0.87 0 0)",
127
+ 400: "oklch(0.708 0 0)",
128
+ 500: "oklch(0.556 0 0)",
129
+ 600: "oklch(0.439 0 0)",
130
+ 700: "oklch(0.371 0 0)",
131
+ 800: "oklch(0.269 0 0)",
132
+ 900: "oklch(0.205 0 0)",
133
+ 950: "oklch(0.145 0 0)"
134
+ };
135
+ const violet = {
136
+ 50: "oklch(0.969 0.016 293.756)",
137
+ 100: "oklch(0.943 0.029 294.588)",
138
+ 200: "oklch(0.894 0.057 293.283)",
139
+ 300: "oklch(0.811 0.111 293.571)",
140
+ 400: "oklch(0.702 0.183 293.541)",
141
+ 500: "oklch(0.606 0.25 292.717)",
142
+ 600: "oklch(0.541 0.281 293.009)",
143
+ 700: "oklch(0.491 0.27 292.581)",
144
+ 800: "oklch(0.432 0.232 292.759)",
145
+ 900: "oklch(0.38 0.189 293.745)",
146
+ 950: "oklch(0.283 0.141 291.089)"
147
+ };
148
+ const rose = {
149
+ 50: "oklch(0.969 0.015 12.422)",
150
+ 100: "oklch(0.941 0.03 12.58)",
151
+ 200: "oklch(0.892 0.058 10.001)",
152
+ 300: "oklch(0.81 0.117 11.638)",
153
+ 400: "oklch(0.712 0.194 13.428)",
154
+ 500: "oklch(0.645 0.246 16.439)",
155
+ 600: "oklch(0.586 0.253 17.585)",
156
+ 700: "oklch(0.514 0.222 16.935)",
157
+ 800: "oklch(0.455 0.188 13.697)",
158
+ 900: "oklch(0.41 0.159 10.539)",
159
+ 950: "oklch(0.271 0.105 12.094)"
160
+ };
161
+ const orange = {
162
+ 50: "oklch(0.98 0.016 73.684)",
163
+ 100: "oklch(0.954 0.038 75.164)",
164
+ 200: "oklch(0.901 0.076 70.697)",
165
+ 300: "oklch(0.837 0.128 66.29)",
166
+ 400: "oklch(0.75 0.183 55.934)",
167
+ 500: "oklch(0.705 0.213 47.604)",
168
+ 600: "oklch(0.646 0.222 41.116)",
169
+ 700: "oklch(0.553 0.195 38.402)",
170
+ 800: "oklch(0.47 0.157 37.304)",
171
+ 900: "oklch(0.408 0.123 38.172)",
172
+ 950: "oklch(0.266 0.079 36.259)"
173
+ };
174
+ function buildNeutralPreset(name, key, palette) {
175
+ return {
176
+ name,
177
+ key,
178
+ chromatic: false,
179
+ light: {
180
+ background: "oklch(1 0 0)",
181
+ foreground: palette[950],
182
+ surface: palette[50],
183
+ surfaceRaised: "oklch(1 0 0)",
184
+ surfaceOverlay: palette[100],
185
+ card: "oklch(1 0 0)",
186
+ cardForeground: palette[950],
187
+ popover: "oklch(1 0 0)",
188
+ popoverForeground: palette[950],
189
+ muted: palette[100],
190
+ mutedForeground: palette[500],
191
+ primary: palette[900],
192
+ primaryForeground: palette[50],
193
+ primaryHover: palette[800],
194
+ primaryActive: palette[700],
195
+ primaryMuted: palette[100],
196
+ primaryMutedForeground: palette[900],
197
+ secondary: palette[100],
198
+ secondaryForeground: palette[900],
199
+ secondaryHover: palette[200],
200
+ secondaryActive: palette[300],
201
+ accent: palette[100],
202
+ accentForeground: palette[900],
203
+ ...STATUS_LIGHT,
204
+ ...CHART_LIGHT,
205
+ border: palette[200],
206
+ borderMuted: palette[100],
207
+ borderStrong: palette[400],
208
+ focusRing: palette[400],
209
+ ring: palette[400],
210
+ input: palette[200],
211
+ inputForeground: palette[900],
212
+ inputPlaceholder: palette[500],
213
+ disabled: palette[100],
214
+ disabledForeground: palette[500],
215
+ sidebar: palette[50],
216
+ sidebarForeground: palette[950],
217
+ sidebarPrimary: palette[900],
218
+ sidebarPrimaryForeground: palette[50],
219
+ sidebarAccent: palette[100],
220
+ sidebarAccentForeground: palette[900],
221
+ sidebarBorder: palette[200],
222
+ sidebarRing: palette[400]
223
+ },
224
+ dark: {
225
+ background: palette[950],
226
+ foreground: palette[50],
227
+ surface: palette[900],
228
+ surfaceRaised: palette[800],
229
+ surfaceOverlay: palette[800],
230
+ card: palette[900],
231
+ cardForeground: palette[50],
232
+ popover: palette[800],
233
+ popoverForeground: palette[50],
234
+ muted: palette[800],
235
+ mutedForeground: palette[400],
236
+ primary: palette[50],
237
+ primaryForeground: palette[900],
238
+ primaryHover: palette[200],
239
+ primaryActive: palette[300],
240
+ primaryMuted: palette[800],
241
+ primaryMutedForeground: palette[50],
242
+ secondary: palette[800],
243
+ secondaryForeground: palette[50],
244
+ secondaryHover: palette[700],
245
+ secondaryActive: palette[600],
246
+ accent: palette[700],
247
+ accentForeground: palette[50],
248
+ ...STATUS_DARK,
249
+ ...CHART_DARK,
250
+ border: `color-mix(in oklch, ${palette[50]} 10%, transparent)`,
251
+ borderMuted: palette[800],
252
+ borderStrong: palette[500],
253
+ focusRing: palette[500],
254
+ ring: palette[500],
255
+ input: `color-mix(in oklch, ${palette[50]} 15%, transparent)`,
256
+ inputForeground: palette[50],
257
+ inputPlaceholder: palette[500],
258
+ disabled: palette[800],
259
+ disabledForeground: palette[600],
260
+ sidebar: palette[900],
261
+ sidebarForeground: palette[50],
262
+ sidebarPrimary: import_colors.blue[600],
263
+ sidebarPrimaryForeground: palette[50],
264
+ sidebarAccent: palette[800],
265
+ sidebarAccentForeground: palette[50],
266
+ sidebarBorder: `color-mix(in oklch, ${palette[50]} 10%, transparent)`,
267
+ sidebarRing: palette[600]
268
+ }
269
+ };
270
+ }
271
+ function buildChromaticPreset(name, key, primary, surface = import_colors.zinc) {
272
+ return {
273
+ name,
274
+ key,
275
+ chromatic: true,
276
+ light: {
277
+ background: "oklch(1 0 0)",
278
+ foreground: surface[950],
279
+ surface: surface[50],
280
+ surfaceRaised: "oklch(1 0 0)",
281
+ surfaceOverlay: surface[100],
282
+ card: "oklch(1 0 0)",
283
+ cardForeground: surface[950],
284
+ popover: "oklch(1 0 0)",
285
+ popoverForeground: surface[950],
286
+ muted: surface[100],
287
+ mutedForeground: surface[500],
288
+ primary: primary[600],
289
+ primaryForeground: "oklch(0.985 0 0)",
290
+ primaryHover: primary[700],
291
+ primaryActive: primary[800],
292
+ primaryMuted: primary[50],
293
+ primaryMutedForeground: primary[700],
294
+ secondary: surface[100],
295
+ secondaryForeground: surface[900],
296
+ secondaryHover: surface[200],
297
+ secondaryActive: surface[300],
298
+ accent: primary[50],
299
+ accentForeground: primary[700],
300
+ ...STATUS_LIGHT,
301
+ ...CHART_LIGHT,
302
+ border: surface[200],
303
+ borderMuted: surface[100],
304
+ borderStrong: surface[400],
305
+ focusRing: primary[500],
306
+ ring: primary[500],
307
+ input: surface[200],
308
+ inputForeground: surface[900],
309
+ inputPlaceholder: surface[500],
310
+ disabled: surface[100],
311
+ disabledForeground: surface[500],
312
+ sidebar: surface[50],
313
+ sidebarForeground: surface[950],
314
+ sidebarPrimary: primary[600],
315
+ sidebarPrimaryForeground: "oklch(0.985 0 0)",
316
+ sidebarAccent: primary[50],
317
+ sidebarAccentForeground: primary[700],
318
+ sidebarBorder: surface[200],
319
+ sidebarRing: primary[500]
320
+ },
321
+ dark: {
322
+ background: surface[950],
323
+ foreground: surface[50],
324
+ surface: surface[900],
325
+ surfaceRaised: surface[800],
326
+ surfaceOverlay: surface[800],
327
+ card: surface[900],
328
+ cardForeground: surface[50],
329
+ popover: surface[800],
330
+ popoverForeground: surface[50],
331
+ muted: surface[800],
332
+ mutedForeground: surface[400],
333
+ primary: primary[500],
334
+ primaryForeground: "oklch(0.985 0 0)",
335
+ primaryHover: primary[400],
336
+ primaryActive: primary[300],
337
+ primaryMuted: primary[950],
338
+ primaryMutedForeground: primary[300],
339
+ secondary: surface[800],
340
+ secondaryForeground: surface[50],
341
+ secondaryHover: surface[700],
342
+ secondaryActive: surface[600],
343
+ accent: primary[950],
344
+ accentForeground: primary[300],
345
+ ...STATUS_DARK,
346
+ ...CHART_DARK,
347
+ border: `color-mix(in oklch, ${surface[50]} 10%, transparent)`,
348
+ borderMuted: surface[800],
349
+ borderStrong: surface[500],
350
+ focusRing: primary[500],
351
+ ring: primary[500],
352
+ input: `color-mix(in oklch, ${surface[50]} 15%, transparent)`,
353
+ inputForeground: surface[50],
354
+ inputPlaceholder: surface[500],
355
+ disabled: surface[800],
356
+ disabledForeground: surface[600],
357
+ sidebar: surface[900],
358
+ sidebarForeground: surface[50],
359
+ sidebarPrimary: primary[500],
360
+ sidebarPrimaryForeground: "oklch(0.985 0 0)",
361
+ sidebarAccent: primary[950],
362
+ sidebarAccentForeground: primary[300],
363
+ sidebarBorder: `color-mix(in oklch, ${surface[50]} 10%, transparent)`,
364
+ sidebarRing: primary[500]
365
+ }
366
+ };
367
+ }
368
+ const COLOR_PRESETS = [
369
+ // -------------------------------------------------------------------------
370
+ // Neutral Presets (achromatic primaries)
371
+ // -------------------------------------------------------------------------
372
+ {
373
+ swatch: import_colors.zinc[900],
374
+ ...buildNeutralPreset("Zinc", "zinc", import_colors.zinc)
375
+ },
376
+ {
377
+ swatch: import_colors.slate[900],
378
+ ...buildNeutralPreset("Slate", "slate", import_colors.slate)
379
+ },
380
+ {
381
+ swatch: import_colors.gray[900],
382
+ ...buildNeutralPreset("Gray", "gray", import_colors.gray)
383
+ },
384
+ {
385
+ swatch: stone[900],
386
+ ...buildNeutralPreset("Stone", "stone", stone)
387
+ },
388
+ {
389
+ swatch: neutral[900],
390
+ ...buildNeutralPreset("Neutral", "neutral", neutral)
391
+ },
392
+ // -------------------------------------------------------------------------
393
+ // Chromatic Presets (colored primaries)
394
+ // -------------------------------------------------------------------------
395
+ {
396
+ swatch: import_colors.blue[600],
397
+ ...buildChromaticPreset("Blue", "blue", import_colors.blue)
398
+ },
399
+ {
400
+ swatch: import_colors.green[600],
401
+ ...buildChromaticPreset("Green", "green", import_colors.green)
402
+ },
403
+ {
404
+ swatch: violet[600],
405
+ ...buildChromaticPreset("Violet", "violet", violet)
406
+ },
407
+ {
408
+ swatch: rose[600],
409
+ ...buildChromaticPreset("Rose", "rose", rose)
410
+ },
411
+ {
412
+ swatch: orange[600],
413
+ ...buildChromaticPreset("Orange", "orange", orange)
414
+ },
415
+ {
416
+ swatch: import_colors.red[600],
417
+ ...buildChromaticPreset("Red", "red", import_colors.red)
418
+ },
419
+ {
420
+ swatch: import_colors.teal[600],
421
+ ...buildChromaticPreset("Teal", "teal", import_colors.teal)
422
+ },
423
+ {
424
+ swatch: import_colors.brand[600],
425
+ ...buildChromaticPreset("Brand", "brand", import_colors.brand)
426
+ },
427
+ {
428
+ swatch: import_colors.indigo[600],
429
+ ...buildChromaticPreset("Indigo", "indigo", import_colors.indigo)
430
+ },
431
+ {
432
+ swatch: import_colors.purple[600],
433
+ ...buildChromaticPreset("Purple", "purple", import_colors.purple)
434
+ },
435
+ {
436
+ swatch: import_colors.pink[600],
437
+ ...buildChromaticPreset("Pink", "pink", import_colors.pink)
438
+ },
439
+ {
440
+ swatch: import_colors.cyan[600],
441
+ ...buildChromaticPreset("Cyan", "cyan", import_colors.cyan)
442
+ },
443
+ {
444
+ swatch: import_colors.emerald[600],
445
+ ...buildChromaticPreset("Emerald", "emerald", import_colors.emerald)
446
+ },
447
+ {
448
+ swatch: import_colors.yellow[600],
449
+ ...buildChromaticPreset("Yellow", "yellow", import_colors.yellow)
450
+ },
451
+ {
452
+ swatch: import_colors.fuchsia[600],
453
+ ...buildChromaticPreset("Fuchsia", "fuchsia", import_colors.fuchsia)
454
+ },
455
+ {
456
+ swatch: import_colors.sky[600],
457
+ ...buildChromaticPreset("Sky", "sky", import_colors.sky)
458
+ },
459
+ {
460
+ swatch: import_colors.lime[600],
461
+ ...buildChromaticPreset("Lime", "lime", import_colors.lime)
462
+ },
463
+ {
464
+ swatch: import_colors.amber[600],
465
+ ...buildChromaticPreset("Amber", "amber", import_colors.amber)
466
+ }
467
+ ];
468
+ function getColorPreset(key) {
469
+ return COLOR_PRESETS.find((p) => p.key === key) ?? COLOR_PRESETS[0];
470
+ }
471
+ const COLOR_PRESET_KEYS = COLOR_PRESETS.map((p) => p.key);
472
+ const RADIUS_PRESETS = [
473
+ { name: "None", key: "0", value: "0px", label: "0px" },
474
+ { name: "Subtle", key: "0.25", value: "0.25rem", label: "4px" },
475
+ { name: "Small", key: "0.375", value: "0.375rem", label: "6px" },
476
+ { name: "Medium", key: "0.5", value: "0.5rem", label: "8px" },
477
+ { name: "Default", key: "0.625", value: "0.625rem", label: "10px" },
478
+ { name: "Large", key: "0.75", value: "0.75rem", label: "12px" },
479
+ { name: "XL", key: "1", value: "1rem", label: "16px" }
480
+ ];
481
+ const DEFAULT_RADIUS_KEY = "0.625";
482
+ function getRadiusPreset(key) {
483
+ return RADIUS_PRESETS.find((r) => r.key === key) ?? RADIUS_PRESETS[4];
484
+ }
485
+ const FONT_PRESETS = [
486
+ // ---- Built-in fonts (loaded via next/font in the docs app) ----
487
+ {
488
+ name: "Outfit",
489
+ key: "outfit",
490
+ value: 'var(--font-outfit), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
491
+ sample: "Aa"
492
+ },
493
+ {
494
+ name: "Inter",
495
+ key: "inter",
496
+ value: 'var(--font-inter), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
497
+ sample: "Aa"
498
+ },
499
+ {
500
+ name: "Geist Sans",
501
+ key: "geist-sans",
502
+ value: 'var(--font-geist-sans), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
503
+ sample: "Aa"
504
+ },
505
+ {
506
+ name: "DM Sans",
507
+ key: "dm-sans",
508
+ value: 'var(--font-dm-sans), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
509
+ sample: "Aa"
510
+ },
511
+ {
512
+ name: "Plus Jakarta Sans",
513
+ key: "plus-jakarta-sans",
514
+ value: 'var(--font-plus-jakarta-sans), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
515
+ sample: "Aa"
516
+ },
517
+ {
518
+ name: "Open Sans",
519
+ key: "open-sans",
520
+ value: 'var(--font-open-sans), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
521
+ sample: "Aa"
522
+ },
523
+ {
524
+ name: "Poppins",
525
+ key: "poppins",
526
+ value: 'var(--font-poppins), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
527
+ sample: "Aa"
528
+ },
529
+ {
530
+ name: "Montserrat",
531
+ key: "montserrat",
532
+ value: 'var(--font-montserrat), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
533
+ sample: "Aa"
534
+ },
535
+ {
536
+ name: "Lato",
537
+ key: "lato",
538
+ value: 'var(--font-lato), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
539
+ sample: "Aa"
540
+ },
541
+ {
542
+ name: "Nunito",
543
+ key: "nunito",
544
+ value: 'var(--font-nunito), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
545
+ sample: "Aa"
546
+ },
547
+ {
548
+ name: "Raleway",
549
+ key: "raleway",
550
+ value: 'var(--font-raleway), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
551
+ sample: "Aa"
552
+ },
553
+ {
554
+ name: "Rubik",
555
+ key: "rubik",
556
+ value: 'var(--font-rubik), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
557
+ sample: "Aa"
558
+ },
559
+ {
560
+ name: "Source Sans 3",
561
+ key: "source-sans-3",
562
+ value: 'var(--font-source-sans-3), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
563
+ sample: "Aa"
564
+ },
565
+ {
566
+ name: "Work Sans",
567
+ key: "work-sans",
568
+ value: 'var(--font-work-sans), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
569
+ sample: "Aa"
570
+ },
571
+ {
572
+ name: "Manrope",
573
+ key: "manrope",
574
+ value: 'var(--font-manrope), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
575
+ sample: "Aa"
576
+ },
577
+ {
578
+ name: "Space Grotesk",
579
+ key: "space-grotesk",
580
+ value: 'var(--font-space-grotesk), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
581
+ sample: "Aa"
582
+ },
583
+ // ---- Additional popular fonts ----
584
+ {
585
+ name: "Figtree",
586
+ key: "figtree",
587
+ value: 'var(--font-figtree), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
588
+ sample: "Aa"
589
+ },
590
+ {
591
+ name: "IBM Plex Sans",
592
+ key: "ibm-plex-sans",
593
+ value: 'var(--font-ibm-plex-sans), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
594
+ sample: "Aa"
595
+ },
596
+ {
597
+ name: "Quicksand",
598
+ key: "quicksand",
599
+ value: 'var(--font-quicksand), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
600
+ sample: "Aa"
601
+ },
602
+ {
603
+ name: "Cabin",
604
+ key: "cabin",
605
+ value: 'var(--font-cabin), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
606
+ sample: "Aa"
607
+ },
608
+ {
609
+ name: "Barlow",
610
+ key: "barlow",
611
+ value: 'var(--font-barlow), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
612
+ sample: "Aa"
613
+ },
614
+ {
615
+ name: "Josefin Sans",
616
+ key: "josefin-sans",
617
+ value: 'var(--font-josefin-sans), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
618
+ sample: "Aa"
619
+ },
620
+ {
621
+ name: "Karla",
622
+ key: "karla",
623
+ value: 'var(--font-karla), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
624
+ sample: "Aa"
625
+ },
626
+ {
627
+ name: "Mulish",
628
+ key: "mulish",
629
+ value: 'var(--font-mulish), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
630
+ sample: "Aa"
631
+ },
632
+ {
633
+ name: "Noto Sans",
634
+ key: "noto-sans",
635
+ value: 'var(--font-noto-sans), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
636
+ sample: "Aa"
637
+ },
638
+ {
639
+ name: "Ubuntu",
640
+ key: "ubuntu",
641
+ value: 'var(--font-ubuntu), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
642
+ sample: "Aa"
643
+ },
644
+ {
645
+ name: "Sora",
646
+ key: "sora",
647
+ value: 'var(--font-sora), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
648
+ sample: "Aa"
649
+ },
650
+ {
651
+ name: "Lexend",
652
+ key: "lexend",
653
+ value: 'var(--font-lexend), system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
654
+ sample: "Aa"
655
+ },
656
+ // ---- Generic stacks ----
657
+ {
658
+ name: "System",
659
+ key: "system",
660
+ value: 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
661
+ sample: "Aa"
662
+ },
663
+ {
664
+ name: "Serif",
665
+ key: "serif",
666
+ value: 'var(--font-lora), Georgia, "Times New Roman", serif',
667
+ sample: "Aa"
668
+ },
669
+ {
670
+ name: "Mono",
671
+ key: "mono",
672
+ value: 'var(--font-jetbrains), "Fira Code", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace',
673
+ sample: "Aa"
674
+ }
675
+ ];
676
+ const DEFAULT_FONT_KEY = "outfit";
677
+ function getFontPreset(key) {
678
+ return FONT_PRESETS.find((f) => f.key === key) ?? FONT_PRESETS[0];
679
+ }
680
+ const SHADOW_PRESETS = [
681
+ {
682
+ name: "None",
683
+ key: "none",
684
+ description: "No shadows \u2014 flat design",
685
+ light: {
686
+ none: "none",
687
+ xs: "none",
688
+ sm: "none",
689
+ md: "none",
690
+ lg: "none",
691
+ xl: "none",
692
+ "2xl": "none"
693
+ },
694
+ dark: {
695
+ none: "none",
696
+ xs: "none",
697
+ sm: "none",
698
+ md: "none",
699
+ lg: "none",
700
+ xl: "none",
701
+ "2xl": "none"
702
+ }
703
+ },
704
+ {
705
+ name: "Subtle",
706
+ key: "subtle",
707
+ description: "Soft, minimal shadows",
708
+ light: {
709
+ none: "none",
710
+ xs: "0 1px 1px 0 oklch(0 0 0 / 0.03)",
711
+ sm: "0 1px 2px 0 oklch(0 0 0 / 0.05), 0 1px 1px -1px oklch(0 0 0 / 0.05)",
712
+ md: "0 2px 4px -1px oklch(0 0 0 / 0.06), 0 1px 2px -1px oklch(0 0 0 / 0.04)",
713
+ lg: "0 6px 10px -2px oklch(0 0 0 / 0.06), 0 2px 4px -2px oklch(0 0 0 / 0.04)",
714
+ xl: "0 12px 16px -4px oklch(0 0 0 / 0.06), 0 4px 6px -3px oklch(0 0 0 / 0.04)",
715
+ "2xl": "0 16px 32px -8px oklch(0 0 0 / 0.12)"
716
+ },
717
+ dark: {
718
+ none: "none",
719
+ xs: "0 1px 1px 0 oklch(0 0 0 / 0.1)",
720
+ sm: "0 1px 2px 0 oklch(0 0 0 / 0.15), 0 1px 1px -1px oklch(0 0 0 / 0.15)",
721
+ md: "0 2px 4px -1px oklch(0 0 0 / 0.2), 0 1px 2px -1px oklch(0 0 0 / 0.15)",
722
+ lg: "0 6px 10px -2px oklch(0 0 0 / 0.2), 0 2px 4px -2px oklch(0 0 0 / 0.15)",
723
+ xl: "0 12px 16px -4px oklch(0 0 0 / 0.25), 0 4px 6px -3px oklch(0 0 0 / 0.2)",
724
+ "2xl": "0 16px 32px -8px oklch(0 0 0 / 0.3)"
725
+ }
726
+ },
727
+ {
728
+ name: "Default",
729
+ key: "default",
730
+ description: "Standard shadow depth",
731
+ light: {
732
+ none: "none",
733
+ xs: "0 1px 2px 0 oklch(0 0 0 / 0.05)",
734
+ sm: "0 1px 3px 0 oklch(0 0 0 / 0.1), 0 1px 2px -1px oklch(0 0 0 / 0.1)",
735
+ md: "0 4px 6px -1px oklch(0 0 0 / 0.1), 0 2px 4px -2px oklch(0 0 0 / 0.1)",
736
+ lg: "0 10px 15px -3px oklch(0 0 0 / 0.1), 0 4px 6px -4px oklch(0 0 0 / 0.1)",
737
+ xl: "0 20px 25px -5px oklch(0 0 0 / 0.1), 0 8px 10px -6px oklch(0 0 0 / 0.1)",
738
+ "2xl": "0 25px 50px -12px oklch(0 0 0 / 0.25)"
739
+ },
740
+ dark: {
741
+ none: "none",
742
+ xs: "0 1px 2px 0 oklch(0 0 0 / 0.2)",
743
+ sm: "0 1px 3px 0 oklch(0 0 0 / 0.3), 0 1px 2px -1px oklch(0 0 0 / 0.3)",
744
+ md: "0 4px 6px -1px oklch(0 0 0 / 0.35), 0 2px 4px -2px oklch(0 0 0 / 0.3)",
745
+ lg: "0 10px 15px -3px oklch(0 0 0 / 0.35), 0 4px 6px -4px oklch(0 0 0 / 0.3)",
746
+ xl: "0 20px 25px -5px oklch(0 0 0 / 0.4), 0 8px 10px -6px oklch(0 0 0 / 0.35)",
747
+ "2xl": "0 25px 50px -12px oklch(0 0 0 / 0.5)"
748
+ }
749
+ },
750
+ {
751
+ name: "Heavy",
752
+ key: "heavy",
753
+ description: "Bold, pronounced shadows",
754
+ light: {
755
+ none: "none",
756
+ xs: "0 1px 3px 0 oklch(0 0 0 / 0.08)",
757
+ sm: "0 2px 4px 0 oklch(0 0 0 / 0.14), 0 1px 3px -1px oklch(0 0 0 / 0.12)",
758
+ md: "0 6px 10px -1px oklch(0 0 0 / 0.14), 0 3px 6px -2px oklch(0 0 0 / 0.12)",
759
+ lg: "0 14px 20px -4px oklch(0 0 0 / 0.14), 0 6px 8px -4px oklch(0 0 0 / 0.12)",
760
+ xl: "0 24px 32px -6px oklch(0 0 0 / 0.14), 0 10px 14px -6px oklch(0 0 0 / 0.12)",
761
+ "2xl": "0 32px 60px -16px oklch(0 0 0 / 0.35)"
762
+ },
763
+ dark: {
764
+ none: "none",
765
+ xs: "0 1px 3px 0 oklch(0 0 0 / 0.3)",
766
+ sm: "0 2px 4px 0 oklch(0 0 0 / 0.4), 0 1px 3px -1px oklch(0 0 0 / 0.4)",
767
+ md: "0 6px 10px -1px oklch(0 0 0 / 0.45), 0 3px 6px -2px oklch(0 0 0 / 0.4)",
768
+ lg: "0 14px 20px -4px oklch(0 0 0 / 0.45), 0 6px 8px -4px oklch(0 0 0 / 0.4)",
769
+ xl: "0 24px 32px -6px oklch(0 0 0 / 0.5), 0 10px 14px -6px oklch(0 0 0 / 0.45)",
770
+ "2xl": "0 32px 60px -16px oklch(0 0 0 / 0.6)"
771
+ }
772
+ }
773
+ ];
774
+ const DEFAULT_SHADOW_KEY = "default";
775
+ function getShadowPreset(key) {
776
+ return SHADOW_PRESETS.find((s) => s.key === key) ?? SHADOW_PRESETS[2];
777
+ }
778
+ const SURFACE_STYLE_PRESETS = [
779
+ {
780
+ name: "Bordered",
781
+ key: "bordered",
782
+ description: "Cards and surfaces use borders for separation"
783
+ },
784
+ {
785
+ name: "Elevated",
786
+ key: "elevated",
787
+ description: "Cards and surfaces use shadows for depth"
788
+ },
789
+ {
790
+ name: "Mixed",
791
+ key: "mixed",
792
+ description: "Combines borders with subtle shadows"
793
+ }
794
+ ];
795
+ const DEFAULT_SURFACE_STYLE_KEY = "bordered";
796
+ const MENU_COLOR_PRESETS = [
797
+ {
798
+ name: "Default",
799
+ key: "default",
800
+ description: "Uses the color preset's built-in sidebar colors"
801
+ },
802
+ {
803
+ name: "Muted",
804
+ key: "muted",
805
+ description: "Sidebar matches the muted/surface tone \u2014 blends with content"
806
+ },
807
+ {
808
+ name: "Inverted",
809
+ key: "inverted",
810
+ description: "Dark sidebar in light mode, lighter sidebar in dark mode for contrast"
811
+ },
812
+ {
813
+ name: "Primary",
814
+ key: "primary",
815
+ description: "Sidebar uses the primary color as its background"
816
+ }
817
+ ];
818
+ const DEFAULT_MENU_COLOR_KEY = "default";
819
+ function getMenuColorPreset(key) {
820
+ return MENU_COLOR_PRESETS.find((p) => p.key === key) ?? MENU_COLOR_PRESETS[0];
821
+ }
822
+ const MENU_ACCENT_PRESETS = [
823
+ {
824
+ name: "None",
825
+ key: "none",
826
+ description: "No visual accent highlight on sidebar items"
827
+ },
828
+ {
829
+ name: "Subtle",
830
+ key: "subtle",
831
+ description: "Soft background tint on hover and active sidebar items"
832
+ },
833
+ {
834
+ name: "Bold",
835
+ key: "bold",
836
+ description: "Prominent primary-colored accent on active sidebar items"
837
+ }
838
+ ];
839
+ const DEFAULT_MENU_ACCENT_KEY = "subtle";
840
+ function getMenuAccentPreset(key) {
841
+ return MENU_ACCENT_PRESETS.find((p) => p.key === key) ?? MENU_ACCENT_PRESETS[1];
842
+ }
843
+ const STYLE_PRESETS = [
844
+ {
845
+ name: "Vega",
846
+ key: "vega",
847
+ description: "The classic shadcn/ui look. Clean, neutral, and familiar.",
848
+ iconPath: "M3 3h18v18H3V3zm2 2v14h14V5H7z",
849
+ defaults: {
850
+ radius: "0.625",
851
+ font: "outfit",
852
+ shadow: "default",
853
+ surfaceStyle: "bordered"
854
+ },
855
+ vars: {
856
+ spacingUnit: "1",
857
+ paddingCard: "1.5rem",
858
+ paddingButtonX: "1rem",
859
+ paddingButtonY: "0.5rem",
860
+ gapDefault: "0.75rem",
861
+ borderWidth: "1px",
862
+ controlHeight: "2.25rem"
863
+ }
864
+ },
865
+ {
866
+ name: "Nova",
867
+ key: "nova",
868
+ description: "Reduced padding and margins for compact layouts.",
869
+ iconPath: "M4 4h16v16H4V4zm1.5 1.5v13h13v-13h-13z",
870
+ defaults: {
871
+ radius: "0.5",
872
+ font: "inter",
873
+ shadow: "subtle",
874
+ surfaceStyle: "bordered"
875
+ },
876
+ vars: {
877
+ spacingUnit: "0.875",
878
+ paddingCard: "1rem",
879
+ paddingButtonX: "0.75rem",
880
+ paddingButtonY: "0.375rem",
881
+ gapDefault: "0.5rem",
882
+ borderWidth: "1px",
883
+ controlHeight: "2rem"
884
+ }
885
+ },
886
+ {
887
+ name: "Maia",
888
+ key: "maia",
889
+ description: "Soft and rounded, with generous spacing.",
890
+ iconPath: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z",
891
+ defaults: {
892
+ radius: "0.75",
893
+ font: "outfit",
894
+ shadow: "default",
895
+ surfaceStyle: "mixed"
896
+ },
897
+ vars: {
898
+ spacingUnit: "1.125",
899
+ paddingCard: "1.75rem",
900
+ paddingButtonX: "1.25rem",
901
+ paddingButtonY: "0.625rem",
902
+ gapDefault: "1rem",
903
+ borderWidth: "1px",
904
+ controlHeight: "2.5rem"
905
+ }
906
+ },
907
+ {
908
+ name: "Lyra",
909
+ key: "lyra",
910
+ description: "Boxy and sharp. Pairs well with mono fonts.",
911
+ iconPath: "M3 3h18v18H3V3zm1 1v16h16V4H4z",
912
+ defaults: {
913
+ radius: "0",
914
+ font: "system",
915
+ shadow: "none",
916
+ surfaceStyle: "bordered"
917
+ },
918
+ vars: {
919
+ spacingUnit: "1",
920
+ paddingCard: "1.25rem",
921
+ paddingButtonX: "1rem",
922
+ paddingButtonY: "0.5rem",
923
+ gapDefault: "0.75rem",
924
+ borderWidth: "1px",
925
+ controlHeight: "2.25rem"
926
+ }
927
+ },
928
+ {
929
+ name: "Mira",
930
+ key: "mira",
931
+ description: "Compact. Made for dense interfaces.",
932
+ iconPath: "M5 3h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2zm0 2v14h14V5H5zm2 2h10v2H7V7zm0 4h10v2H7v-2zm0 4h7v2H7v-2z",
933
+ defaults: {
934
+ radius: "0.375",
935
+ font: "inter",
936
+ shadow: "none",
937
+ surfaceStyle: "bordered"
938
+ },
939
+ vars: {
940
+ spacingUnit: "0.75",
941
+ paddingCard: "0.75rem",
942
+ paddingButtonX: "0.625rem",
943
+ paddingButtonY: "0.25rem",
944
+ gapDefault: "0.375rem",
945
+ borderWidth: "1px",
946
+ controlHeight: "1.75rem"
947
+ }
948
+ }
949
+ ];
950
+ const DEFAULT_STYLE_KEY = "vega";
951
+ function getStylePreset(key) {
952
+ return STYLE_PRESETS.find((s) => s.key === key) ?? STYLE_PRESETS[0];
953
+ }
954
+ const DEFAULT_THEME_CONFIG = {
955
+ style: DEFAULT_STYLE_KEY,
956
+ colorPreset: "zinc",
957
+ radius: DEFAULT_RADIUS_KEY,
958
+ font: DEFAULT_FONT_KEY,
959
+ shadow: DEFAULT_SHADOW_KEY,
960
+ surfaceStyle: DEFAULT_SURFACE_STYLE_KEY,
961
+ menuColor: DEFAULT_MENU_COLOR_KEY,
962
+ menuAccent: DEFAULT_MENU_ACCENT_KEY
963
+ };
964
+ function buildThemeOverrides(config, mode) {
965
+ const vars = {};
966
+ const colorPreset = getColorPreset(config.colorPreset);
967
+ const colors = mode === "dark" ? colorPreset.dark : colorPreset.light;
968
+ const colorMapping = {
969
+ background: "--background",
970
+ foreground: "--foreground",
971
+ surface: "--surface",
972
+ surfaceRaised: "--surface-raised",
973
+ surfaceOverlay: "--surface-overlay",
974
+ card: "--card",
975
+ cardForeground: "--card-foreground",
976
+ popover: "--popover",
977
+ popoverForeground: "--popover-foreground",
978
+ muted: "--muted",
979
+ mutedForeground: "--muted-foreground",
980
+ primary: "--primary",
981
+ primaryForeground: "--primary-foreground",
982
+ primaryHover: "--primary-hover",
983
+ primaryActive: "--primary-active",
984
+ primaryMuted: "--primary-muted",
985
+ primaryMutedForeground: "--primary-muted-foreground",
986
+ secondary: "--secondary",
987
+ secondaryForeground: "--secondary-foreground",
988
+ secondaryHover: "--secondary-hover",
989
+ secondaryActive: "--secondary-active",
990
+ accent: "--accent",
991
+ accentForeground: "--accent-foreground",
992
+ success: "--success",
993
+ successForeground: "--success-foreground",
994
+ successMuted: "--success-muted",
995
+ successMutedForeground: "--success-muted-foreground",
996
+ warning: "--warning",
997
+ warningForeground: "--warning-foreground",
998
+ warningMuted: "--warning-muted",
999
+ warningMutedForeground: "--warning-muted-foreground",
1000
+ danger: "--danger",
1001
+ dangerForeground: "--danger-foreground",
1002
+ dangerHover: "--danger-hover",
1003
+ dangerActive: "--danger-active",
1004
+ dangerMuted: "--danger-muted",
1005
+ dangerMutedForeground: "--danger-muted-foreground",
1006
+ destructive: "--destructive",
1007
+ destructiveForeground: "--destructive-foreground",
1008
+ info: "--info",
1009
+ infoForeground: "--info-foreground",
1010
+ infoMuted: "--info-muted",
1011
+ infoMutedForeground: "--info-muted-foreground",
1012
+ border: "--border",
1013
+ borderMuted: "--border-muted",
1014
+ borderStrong: "--border-strong",
1015
+ focusRing: "--focus-ring",
1016
+ ring: "--ring",
1017
+ input: "--input",
1018
+ inputForeground: "--input-foreground",
1019
+ inputPlaceholder: "--input-placeholder",
1020
+ disabled: "--disabled",
1021
+ disabledForeground: "--disabled-foreground",
1022
+ chart1: "--chart-1",
1023
+ chart2: "--chart-2",
1024
+ chart3: "--chart-3",
1025
+ chart4: "--chart-4",
1026
+ chart5: "--chart-5",
1027
+ sidebar: "--sidebar",
1028
+ sidebarForeground: "--sidebar-foreground",
1029
+ sidebarPrimary: "--sidebar-primary",
1030
+ sidebarPrimaryForeground: "--sidebar-primary-foreground",
1031
+ sidebarAccent: "--sidebar-accent",
1032
+ sidebarAccentForeground: "--sidebar-accent-foreground",
1033
+ sidebarBorder: "--sidebar-border",
1034
+ sidebarRing: "--sidebar-ring"
1035
+ };
1036
+ for (const [tokenKey, cssVar] of Object.entries(colorMapping)) {
1037
+ const value = colors[tokenKey];
1038
+ if (value) {
1039
+ vars[cssVar] = value;
1040
+ }
1041
+ }
1042
+ const radiusPreset = getRadiusPreset(config.radius);
1043
+ const baseRem = Number.parseFloat(radiusPreset.value);
1044
+ const isZero = radiusPreset.key === "0";
1045
+ vars["--radius"] = radiusPreset.value;
1046
+ vars["--radius-none"] = "0px";
1047
+ vars["--radius-sm"] = isZero ? "0px" : `${Math.max(baseRem * 0.4, 0.125)}rem`;
1048
+ vars["--radius-md"] = isZero ? "0px" : `${Math.max(baseRem * 0.6, 0.25)}rem`;
1049
+ vars["--radius-lg"] = isZero ? "0px" : `${Math.max(baseRem * 0.8, 0.375)}rem`;
1050
+ vars["--radius-xl"] = isZero ? "0px" : `${Math.max(baseRem * 1.2, 0.5)}rem`;
1051
+ vars["--radius-full"] = "9999px";
1052
+ const fontPreset = getFontPreset(config.font);
1053
+ vars["--font-sans"] = fontPreset.value;
1054
+ const shadowPreset = getShadowPreset(config.shadow);
1055
+ const shadows = mode === "dark" ? shadowPreset.dark : shadowPreset.light;
1056
+ vars["--shadow-none"] = shadows.none;
1057
+ vars["--shadow-xs"] = shadows.xs;
1058
+ vars["--shadow-sm"] = shadows.sm;
1059
+ vars["--shadow-md"] = shadows.md;
1060
+ vars["--shadow-lg"] = shadows.lg;
1061
+ vars["--shadow-xl"] = shadows.xl;
1062
+ vars["--shadow-2xl"] = shadows["2xl"];
1063
+ const stylePreset = getStylePreset(config.style);
1064
+ const sv = stylePreset.vars;
1065
+ vars["--ds-spacing-unit"] = sv.spacingUnit;
1066
+ vars["--ds-padding-card"] = sv.paddingCard;
1067
+ vars["--ds-padding-button-x"] = sv.paddingButtonX;
1068
+ vars["--ds-padding-button-y"] = sv.paddingButtonY;
1069
+ vars["--ds-gap-default"] = sv.gapDefault;
1070
+ vars["--ds-border-width"] = sv.borderWidth;
1071
+ vars["--ds-control-height"] = sv.controlHeight;
1072
+ const colorPresetObj = getColorPreset(config.colorPreset);
1073
+ const presetColors = mode === "dark" ? colorPresetObj.dark : colorPresetObj.light;
1074
+ if (config.menuColor === "muted") {
1075
+ if (mode === "light") {
1076
+ vars["--sidebar"] = presetColors.muted;
1077
+ vars["--sidebar-foreground"] = presetColors.foreground;
1078
+ vars["--sidebar-border"] = presetColors.border;
1079
+ } else {
1080
+ vars["--sidebar"] = presetColors.muted;
1081
+ vars["--sidebar-foreground"] = presetColors.foreground;
1082
+ vars["--sidebar-border"] = presetColors.border;
1083
+ }
1084
+ } else if (config.menuColor === "inverted") {
1085
+ if (mode === "light") {
1086
+ vars["--sidebar"] = "oklch(0.205 0 0)";
1087
+ vars["--sidebar-foreground"] = "oklch(0.95 0 0)";
1088
+ vars["--sidebar-primary"] = presetColors.primary;
1089
+ vars["--sidebar-primary-foreground"] = "oklch(0.985 0 0)";
1090
+ vars["--sidebar-border"] = "oklch(1 0 0 / 10%)";
1091
+ vars["--sidebar-ring"] = "oklch(0.439 0 0)";
1092
+ } else {
1093
+ vars["--sidebar"] = "oklch(0.269 0 0)";
1094
+ vars["--sidebar-foreground"] = "oklch(0.95 0 0)";
1095
+ vars["--sidebar-primary"] = presetColors.primary;
1096
+ vars["--sidebar-primary-foreground"] = "oklch(0.985 0 0)";
1097
+ vars["--sidebar-border"] = "oklch(1 0 0 / 8%)";
1098
+ vars["--sidebar-ring"] = "oklch(0.5 0 0)";
1099
+ }
1100
+ } else if (config.menuColor === "primary") {
1101
+ if (mode === "light") {
1102
+ vars["--sidebar"] = presetColors.primary;
1103
+ vars["--sidebar-foreground"] = presetColors.primaryForeground;
1104
+ vars["--sidebar-primary"] = presetColors.primaryForeground;
1105
+ vars["--sidebar-primary-foreground"] = presetColors.primary;
1106
+ vars["--sidebar-border"] = `color-mix(in oklch, ${presetColors.primaryForeground} 15%, transparent)`;
1107
+ vars["--sidebar-ring"] = presetColors.primaryForeground;
1108
+ } else {
1109
+ vars["--sidebar"] = presetColors.primary;
1110
+ vars["--sidebar-foreground"] = presetColors.primaryForeground;
1111
+ vars["--sidebar-primary"] = presetColors.primaryForeground;
1112
+ vars["--sidebar-primary-foreground"] = presetColors.primary;
1113
+ vars["--sidebar-border"] = `color-mix(in oklch, ${presetColors.primaryForeground} 15%, transparent)`;
1114
+ vars["--sidebar-ring"] = presetColors.primaryForeground;
1115
+ }
1116
+ }
1117
+ if (config.menuAccent === "none") {
1118
+ vars["--sidebar-accent"] = "transparent";
1119
+ vars["--sidebar-accent-foreground"] = vars["--sidebar-foreground"] ?? presetColors.sidebarForeground;
1120
+ } else if (config.menuAccent === "bold") {
1121
+ if (config.menuColor === "primary") {
1122
+ if (mode === "light") {
1123
+ vars["--sidebar-accent"] = `color-mix(in oklch, ${presetColors.primaryForeground} 20%, transparent)`;
1124
+ vars["--sidebar-accent-foreground"] = presetColors.primaryForeground;
1125
+ } else {
1126
+ vars["--sidebar-accent"] = `color-mix(in oklch, ${presetColors.primaryForeground} 20%, transparent)`;
1127
+ vars["--sidebar-accent-foreground"] = presetColors.primaryForeground;
1128
+ }
1129
+ } else if (config.menuColor === "inverted") {
1130
+ vars["--sidebar-accent"] = presetColors.primary;
1131
+ vars["--sidebar-accent-foreground"] = presetColors.primaryForeground;
1132
+ } else {
1133
+ if (mode === "light") {
1134
+ vars["--sidebar-accent"] = presetColors.primaryMuted;
1135
+ vars["--sidebar-accent-foreground"] = presetColors.primary;
1136
+ } else {
1137
+ vars["--sidebar-accent"] = presetColors.primaryMuted;
1138
+ vars["--sidebar-accent-foreground"] = presetColors.primaryMutedForeground;
1139
+ }
1140
+ }
1141
+ }
1142
+ if (config.surfaceStyle === "elevated") {
1143
+ vars["--card"] = mode === "dark" ? "oklch(0.205 0 0)" : "oklch(1 0 0)";
1144
+ vars["--border"] = mode === "dark" ? "oklch(0.205 0 0 / 0)" : "oklch(0.922 0 0 / 0)";
1145
+ vars["--border-muted"] = mode === "dark" ? "oklch(0.205 0 0 / 0)" : "oklch(0.922 0 0 / 0)";
1146
+ } else if (config.surfaceStyle === "mixed") {
1147
+ vars["--border"] = mode === "dark" ? "oklch(0.4 0 0 / 0.15)" : "oklch(0.8 0 0 / 0.3)";
1148
+ vars["--border-muted"] = mode === "dark" ? "oklch(0.4 0 0 / 0.1)" : "oklch(0.85 0 0 / 0.25)";
1149
+ }
1150
+ return vars;
1151
+ }
1152
+ function generateThemeCSS(config) {
1153
+ const lightVars = buildThemeOverrides(config, "light");
1154
+ const darkVars = buildThemeOverrides(config, "dark");
1155
+ const formatVars = (vars) => Object.entries(vars).map(([prop, value]) => ` ${prop}: ${value};`).join("\n");
1156
+ return [
1157
+ "/* ============================================",
1158
+ " * Unified UI \u2014 Custom Theme",
1159
+ ` * Preset: ${getColorPreset(config.colorPreset).name}`,
1160
+ ` * Style: ${getStylePreset(config.style).name}`,
1161
+ ` * Radius: ${getRadiusPreset(config.radius).label}`,
1162
+ ` * Font: ${getFontPreset(config.font).name}`,
1163
+ ` * Shadows: ${getShadowPreset(config.shadow).name}`,
1164
+ ` * Menu Color: ${getMenuColorPreset(config.menuColor).name}`,
1165
+ ` * Menu Accent: ${getMenuAccentPreset(config.menuAccent).name}`,
1166
+ " * ============================================ */",
1167
+ "",
1168
+ ":root {",
1169
+ formatVars(lightVars),
1170
+ "}",
1171
+ "",
1172
+ ".dark {",
1173
+ formatVars(darkVars),
1174
+ "}"
1175
+ ].filter(Boolean).join("\n");
1176
+ }
1177
+ // Annotate the CommonJS export names for ESM import in node:
1178
+ 0 && (module.exports = {
1179
+ COLOR_PRESETS,
1180
+ COLOR_PRESET_KEYS,
1181
+ DEFAULT_FONT_KEY,
1182
+ DEFAULT_MENU_ACCENT_KEY,
1183
+ DEFAULT_MENU_COLOR_KEY,
1184
+ DEFAULT_RADIUS_KEY,
1185
+ DEFAULT_SHADOW_KEY,
1186
+ DEFAULT_STYLE_KEY,
1187
+ DEFAULT_SURFACE_STYLE_KEY,
1188
+ DEFAULT_THEME_CONFIG,
1189
+ FONT_PRESETS,
1190
+ MENU_ACCENT_PRESETS,
1191
+ MENU_COLOR_PRESETS,
1192
+ RADIUS_PRESETS,
1193
+ SHADOW_PRESETS,
1194
+ STYLE_PRESETS,
1195
+ SURFACE_STYLE_PRESETS,
1196
+ buildThemeOverrides,
1197
+ generateThemeCSS,
1198
+ getColorPreset,
1199
+ getFontPreset,
1200
+ getMenuAccentPreset,
1201
+ getMenuColorPreset,
1202
+ getRadiusPreset,
1203
+ getShadowPreset,
1204
+ getStylePreset
1205
+ });