@work-rjkashyap/unified-ui 0.3.3 → 0.3.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 (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 -1933
  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-IVZAB7BV.mjs → tokens/colors.cjs} +212 -86
  372. package/dist/{z-index-Dd8IllRx.d.cts → tokens/colors.d.cts} +235 -72
  373. package/dist/{z-index-Dd8IllRx.d.ts → tokens/colors.d.ts} +235 -72
  374. package/dist/{chunk-ZBGR7MUW.cjs → tokens/colors.mjs} +165 -104
  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-5TP7J7T4.cjs +0 -1766
  428. package/dist/chunk-A2DGHQL2.cjs +0 -21808
  429. package/dist/chunk-EQWESXRH.mjs +0 -1735
  430. package/dist/chunk-F4JJFWWU.cjs +0 -604
  431. package/dist/chunk-FUWXGHWQ.cjs +0 -468
  432. package/dist/chunk-MBYCK2JJ.mjs +0 -37
  433. package/dist/chunk-OHEH57BV.mjs +0 -455
  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 -131
  446. package/dist/theme.d.cts +0 -414
  447. package/dist/theme.d.ts +0 -414
  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,159 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
5
+ /**
6
+ * Custom separator to render between items.
7
+ * Defaults to a chevron-right icon.
8
+ */
9
+ separator?: ReactNode;
10
+ /**
11
+ * Accessible label for the breadcrumb navigation landmark.
12
+ * @default "Breadcrumb"
13
+ */
14
+ "aria-label"?: string;
15
+ /** Additional CSS classes. */
16
+ className?: string;
17
+ }
18
+ /**
19
+ * Breadcrumb — the root `<nav>` container for breadcrumb navigation.
20
+ *
21
+ * Wraps children in a semantic navigation landmark. Use with
22
+ * `BreadcrumbList`, `BreadcrumbItem`, `BreadcrumbLink`, etc.
23
+ */
24
+ declare const Breadcrumb: react.ForwardRefExoticComponent<BreadcrumbProps & react.RefAttributes<HTMLElement>>;
25
+ interface BreadcrumbListProps extends React.HTMLAttributes<HTMLOListElement> {
26
+ /** Additional CSS classes. */
27
+ className?: string;
28
+ /** List children. */
29
+ children?: ReactNode;
30
+ }
31
+ /**
32
+ * BreadcrumbList — an ordered list containing breadcrumb items.
33
+ */
34
+ declare const BreadcrumbList: react.ForwardRefExoticComponent<BreadcrumbListProps & react.RefAttributes<HTMLOListElement>>;
35
+ interface BreadcrumbItemProps extends React.LiHTMLAttributes<HTMLLIElement> {
36
+ /** Additional CSS classes. */
37
+ className?: string;
38
+ }
39
+ /**
40
+ * BreadcrumbItem — a single item in the breadcrumb trail.
41
+ */
42
+ declare const BreadcrumbItem: react.ForwardRefExoticComponent<BreadcrumbItemProps & react.RefAttributes<HTMLLIElement>>;
43
+ interface BreadcrumbLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
44
+ /** Additional CSS classes. */
45
+ className?: string;
46
+ }
47
+ /**
48
+ * BreadcrumbLink — a navigable link within a breadcrumb item.
49
+ *
50
+ * Renders as an `<a>` element. For framework-specific link components
51
+ * (e.g. Next.js `Link`), wrap the framework component or pass it via
52
+ * composition:
53
+ *
54
+ * ```tsx
55
+ * <BreadcrumbItem>
56
+ * <Link href="/docs" className="...breadcrumb link styles...">Docs</Link>
57
+ * </BreadcrumbItem>
58
+ * ```
59
+ */
60
+ declare const BreadcrumbLink: react.ForwardRefExoticComponent<BreadcrumbLinkProps & react.RefAttributes<HTMLAnchorElement>>;
61
+ interface BreadcrumbPageProps extends React.HTMLAttributes<HTMLSpanElement> {
62
+ /** Additional CSS classes. */
63
+ className?: string;
64
+ }
65
+ /**
66
+ * BreadcrumbPage — the current (non-linked) page in the breadcrumb trail.
67
+ *
68
+ * Rendered with `aria-current="page"` and a distinct foreground color
69
+ * to indicate the user's current location.
70
+ */
71
+ declare const BreadcrumbPage: react.ForwardRefExoticComponent<BreadcrumbPageProps & react.RefAttributes<HTMLSpanElement>>;
72
+ interface BreadcrumbSeparatorProps extends React.LiHTMLAttributes<HTMLLIElement> {
73
+ /** Custom separator content. Defaults to a chevron-right icon. */
74
+ children?: ReactNode;
75
+ /** Additional CSS classes. */
76
+ className?: string;
77
+ }
78
+ /**
79
+ * BreadcrumbSeparator — visual divider between breadcrumb items.
80
+ *
81
+ * Defaults to a chevron-right icon. Pass custom children (string or
82
+ * ReactNode) to use a different separator.
83
+ */
84
+ declare const BreadcrumbSeparator: react.ForwardRefExoticComponent<BreadcrumbSeparatorProps & react.RefAttributes<HTMLLIElement>>;
85
+ interface BreadcrumbEllipsisProps extends React.HTMLAttributes<HTMLSpanElement> {
86
+ /** Additional CSS classes. */
87
+ className?: string;
88
+ }
89
+ /**
90
+ * BreadcrumbEllipsis — a "…" placeholder indicating truncated items.
91
+ *
92
+ * Used by `BreadcrumbNav` when items exceed `maxItems`. Can also be
93
+ * used manually in the composable API.
94
+ */
95
+ declare const BreadcrumbEllipsis: react.ForwardRefExoticComponent<BreadcrumbEllipsisProps & react.RefAttributes<HTMLSpanElement>>;
96
+ interface BreadcrumbNavItem {
97
+ /** Display label for the breadcrumb segment. */
98
+ label: ReactNode;
99
+ /**
100
+ * URL to navigate to. When omitted, the item is rendered as the
101
+ * current page (non-linked, last item).
102
+ */
103
+ href?: string;
104
+ }
105
+ interface BreadcrumbNavProps extends Omit<BreadcrumbProps, "children"> {
106
+ /** Breadcrumb items in order from root to current page. */
107
+ items: BreadcrumbNavItem[];
108
+ /**
109
+ * Maximum number of items to show before collapsing middle items
110
+ * into an ellipsis. Set to 0 or Infinity to disable truncation.
111
+ *
112
+ * When truncating, the first item and the last `maxItems - 2` items
113
+ * are always visible, with an ellipsis in between.
114
+ *
115
+ * @default Infinity (no truncation)
116
+ */
117
+ maxItems?: number;
118
+ /**
119
+ * Custom separator to use between items.
120
+ * @default <ChevronRightIcon /> (via BreadcrumbSeparator)
121
+ */
122
+ separator?: ReactNode;
123
+ /** Additional CSS classes on the root nav. */
124
+ className?: string;
125
+ }
126
+ /**
127
+ * BreadcrumbNav — a composed breadcrumb component that renders a full
128
+ * breadcrumb trail from an array of items.
129
+ *
130
+ * Handles separator insertion, truncation with ellipsis, and
131
+ * current-page detection automatically.
132
+ *
133
+ * @example
134
+ * ```tsx
135
+ * <BreadcrumbNav
136
+ * items={[
137
+ * { label: "Home", href: "/" },
138
+ * { label: "Products", href: "/products" },
139
+ * { label: "Electronics", href: "/products/electronics" },
140
+ * { label: "Laptops", href: "/products/electronics/laptops" },
141
+ * { label: "MacBook Pro" },
142
+ * ]}
143
+ * maxItems={4}
144
+ * />
145
+ * // Renders: Home > … > Laptops > MacBook Pro
146
+ *
147
+ * <BreadcrumbNav
148
+ * items={[
149
+ * { label: "Home", href: "/" },
150
+ * { label: "Docs", href: "/docs" },
151
+ * { label: "Getting Started" },
152
+ * ]}
153
+ * />
154
+ * // Renders: Home > Docs > Getting Started
155
+ * ```
156
+ */
157
+ declare const BreadcrumbNav: react.ForwardRefExoticComponent<BreadcrumbNavProps & react.RefAttributes<HTMLElement>>;
158
+
159
+ export { Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEllipsisProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbNav, type BreadcrumbNavItem, type BreadcrumbNavProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps };
@@ -0,0 +1,235 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../utils/cn";
4
+ import { focusRingCompactClasses } from "../utils/focus-ring";
5
+ import { forwardRef, useMemo } from "react";
6
+ function ChevronRightIcon({ className }) {
7
+ return /* @__PURE__ */ jsx(
8
+ "svg",
9
+ {
10
+ className,
11
+ xmlns: "http://www.w3.org/2000/svg",
12
+ viewBox: "0 0 24 24",
13
+ fill: "none",
14
+ stroke: "currentColor",
15
+ strokeWidth: "2",
16
+ strokeLinecap: "round",
17
+ strokeLinejoin: "round",
18
+ "aria-hidden": "true",
19
+ children: /* @__PURE__ */ jsx("path", { d: "m9 18 6-6-6-6" })
20
+ }
21
+ );
22
+ }
23
+ function MoreHorizontalIcon({ className }) {
24
+ return /* @__PURE__ */ jsxs(
25
+ "svg",
26
+ {
27
+ className,
28
+ xmlns: "http://www.w3.org/2000/svg",
29
+ viewBox: "0 0 24 24",
30
+ fill: "none",
31
+ stroke: "currentColor",
32
+ strokeWidth: "2",
33
+ strokeLinecap: "round",
34
+ strokeLinejoin: "round",
35
+ "aria-hidden": "true",
36
+ children: [
37
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "1" }),
38
+ /* @__PURE__ */ jsx("circle", { cx: "19", cy: "12", r: "1" }),
39
+ /* @__PURE__ */ jsx("circle", { cx: "5", cy: "12", r: "1" })
40
+ ]
41
+ }
42
+ );
43
+ }
44
+ const Breadcrumb = forwardRef(
45
+ function Breadcrumb2({ "aria-label": ariaLabel = "Breadcrumb", className, children, ...rest }, ref) {
46
+ return /* @__PURE__ */ jsx(
47
+ "nav",
48
+ {
49
+ ref,
50
+ "aria-label": ariaLabel,
51
+ className: cn("not-prose", className),
52
+ "data-ds": "",
53
+ "data-ds-component": "breadcrumb",
54
+ ...rest,
55
+ children
56
+ }
57
+ );
58
+ }
59
+ );
60
+ Breadcrumb.displayName = "Breadcrumb";
61
+ const BreadcrumbList = forwardRef(
62
+ function BreadcrumbList2({ className, children, ...rest }, ref) {
63
+ return /* @__PURE__ */ jsx(
64
+ "ol",
65
+ {
66
+ ref,
67
+ className: cn(
68
+ "flex flex-wrap items-center gap-1.5",
69
+ "text-xs leading-4 tracking-wide",
70
+ "text-muted-foreground",
71
+ className
72
+ ),
73
+ "data-ds": "",
74
+ "data-ds-component": "breadcrumb-list",
75
+ ...rest,
76
+ children
77
+ }
78
+ );
79
+ }
80
+ );
81
+ BreadcrumbList.displayName = "BreadcrumbList";
82
+ const BreadcrumbItem = forwardRef(
83
+ function BreadcrumbItem2({ className, children, ...rest }, ref) {
84
+ return /* @__PURE__ */ jsx(
85
+ "li",
86
+ {
87
+ ref,
88
+ className: cn("inline-flex items-center gap-1.5", className),
89
+ "data-ds": "",
90
+ "data-ds-component": "breadcrumb-item",
91
+ ...rest,
92
+ children
93
+ }
94
+ );
95
+ }
96
+ );
97
+ BreadcrumbItem.displayName = "BreadcrumbItem";
98
+ const BreadcrumbLink = forwardRef(function BreadcrumbLink2({ className, children, ...rest }, ref) {
99
+ return /* @__PURE__ */ jsx(
100
+ "a",
101
+ {
102
+ ref,
103
+ className: cn(
104
+ "no-underline",
105
+ "text-muted-foreground",
106
+ "transition-colors duration-fast",
107
+ "hover:text-foreground",
108
+ focusRingCompactClasses,
109
+ "rounded-sm",
110
+ className
111
+ ),
112
+ "data-ds": "",
113
+ "data-ds-component": "breadcrumb-link",
114
+ ...rest,
115
+ children
116
+ }
117
+ );
118
+ });
119
+ BreadcrumbLink.displayName = "BreadcrumbLink";
120
+ const BreadcrumbPage = forwardRef(
121
+ function BreadcrumbPage2({ className, children, ...rest }, ref) {
122
+ return /* @__PURE__ */ jsx(
123
+ "span",
124
+ {
125
+ ref,
126
+ "aria-current": "page",
127
+ className: cn("font-medium", "text-foreground", className),
128
+ "data-ds": "",
129
+ "data-ds-component": "breadcrumb-page",
130
+ ...rest,
131
+ children
132
+ }
133
+ );
134
+ }
135
+ );
136
+ BreadcrumbPage.displayName = "BreadcrumbPage";
137
+ const BreadcrumbSeparator = forwardRef(function BreadcrumbSeparator2({ className, children, ...rest }, ref) {
138
+ return /* @__PURE__ */ jsx(
139
+ "li",
140
+ {
141
+ ref,
142
+ role: "presentation",
143
+ "aria-hidden": "true",
144
+ className: cn(
145
+ "inline-flex items-center",
146
+ "text-muted-foreground/60",
147
+ "[&>svg]:size-3",
148
+ className
149
+ ),
150
+ "data-ds": "",
151
+ "data-ds-component": "breadcrumb-separator",
152
+ ...rest,
153
+ children: children ?? /* @__PURE__ */ jsx(ChevronRightIcon, {})
154
+ }
155
+ );
156
+ });
157
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
158
+ const BreadcrumbEllipsis = forwardRef(function BreadcrumbEllipsis2({ className, ...rest }, ref) {
159
+ return /* @__PURE__ */ jsxs(
160
+ "span",
161
+ {
162
+ ref,
163
+ role: "presentation",
164
+ "aria-hidden": "true",
165
+ className: cn(
166
+ "inline-flex items-center justify-center size-5",
167
+ "text-muted-foreground",
168
+ className
169
+ ),
170
+ "data-ds": "",
171
+ "data-ds-component": "breadcrumb-ellipsis",
172
+ ...rest,
173
+ children: [
174
+ /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-4" }),
175
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
176
+ ]
177
+ }
178
+ );
179
+ });
180
+ BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
181
+ const BreadcrumbNav = forwardRef(
182
+ function BreadcrumbNav2({
183
+ items,
184
+ maxItems = Number.POSITIVE_INFINITY,
185
+ separator,
186
+ className,
187
+ ...rest
188
+ }, ref) {
189
+ const visibleItems = useMemo(() => {
190
+ if (items.length <= maxItems || maxItems < 2 || !Number.isFinite(maxItems)) {
191
+ return { items, truncated: false };
192
+ }
193
+ const tailCount = maxItems - 2;
194
+ const first = items[0];
195
+ const tail = items.slice(items.length - Math.max(tailCount, 1));
196
+ return {
197
+ items: [first, ...tail],
198
+ truncated: true
199
+ };
200
+ }, [items, maxItems]);
201
+ return /* @__PURE__ */ jsx(Breadcrumb, { ref, className, ...rest, children: /* @__PURE__ */ jsx(BreadcrumbList, { children: visibleItems.items.flatMap((item, index) => {
202
+ const itemKey = item.href ?? `page-${index}`;
203
+ const isLast = index === visibleItems.items.length - 1;
204
+ const isFirst = index === 0;
205
+ const showEllipsis = visibleItems.truncated && isFirst;
206
+ const elements = [];
207
+ elements.push(
208
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: isLast && !item.href ? /* @__PURE__ */ jsx(BreadcrumbPage, { children: item.label }) : /* @__PURE__ */ jsx(BreadcrumbLink, { href: item.href, children: item.label }) }, `item-${itemKey}`)
209
+ );
210
+ if (showEllipsis) {
211
+ elements.push(
212
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, { children: separator }, "sep-ellipsis-before"),
213
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbEllipsis, {}) }, "ellipsis")
214
+ );
215
+ }
216
+ if (!isLast) {
217
+ elements.push(
218
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, { children: separator }, `sep-${itemKey}`)
219
+ );
220
+ }
221
+ return elements;
222
+ }) }) });
223
+ }
224
+ );
225
+ BreadcrumbNav.displayName = "BreadcrumbNav";
226
+ export {
227
+ Breadcrumb,
228
+ BreadcrumbEllipsis,
229
+ BreadcrumbItem,
230
+ BreadcrumbLink,
231
+ BreadcrumbList,
232
+ BreadcrumbNav,
233
+ BreadcrumbPage,
234
+ BreadcrumbSeparator
235
+ };
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ "use client";
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 button_exports = {};
21
+ __export(button_exports, {
22
+ Button: () => Button,
23
+ buttonVariants: () => buttonVariants
24
+ });
25
+ module.exports = __toCommonJS(button_exports);
26
+ var import_jsx_runtime = require("react/jsx-runtime");
27
+ var import_cn = require("../utils/cn");
28
+ var import_focus_ring = require("../utils/focus-ring");
29
+ var import_class_variance_authority = require("class-variance-authority");
30
+ var import_react = require("react");
31
+ const buttonVariants = (0, import_class_variance_authority.cva)(
32
+ // Base styles — shared across all variants and sizes
33
+ [
34
+ // Opt out of prose typography overrides (prevents underline on <a> buttons)
35
+ "not-prose no-underline",
36
+ // Layout
37
+ "inline-flex items-center justify-center gap-2",
38
+ // Typography
39
+ "text-sm font-medium leading-5",
40
+ // Shape
41
+ "rounded-md",
42
+ // Transition (uses design system motion tokens)
43
+ "transition-[color,background-color,border-color,box-shadow,opacity,transform]",
44
+ "duration-fast ease-standard",
45
+ // Focus ring — WCAG AA compliant, visible on keyboard navigation only
46
+ import_focus_ring.focusRingClasses,
47
+ // Disabled — consistent across all variants
48
+ "disabled:pointer-events-none disabled:opacity-50",
49
+ // Cursor
50
+ "cursor-pointer disabled:cursor-not-allowed",
51
+ // Prevent text selection on rapid clicks
52
+ "select-none",
53
+ // Smooth press feedback
54
+ "active:scale-[0.98] disabled:active:scale-100"
55
+ ],
56
+ {
57
+ variants: {
58
+ // -----------------------------------------------------------------
59
+ // Visual Variants
60
+ // -----------------------------------------------------------------
61
+ variant: {
62
+ /**
63
+ * Primary — the main call-to-action. Uses brand color.
64
+ * High visual prominence. Use sparingly (1–2 per view).
65
+ */
66
+ primary: [
67
+ "bg-primary text-primary-foreground",
68
+ "hover:bg-primary-hover",
69
+ "active:bg-primary-active"
70
+ ],
71
+ /**
72
+ * Secondary — for secondary actions. Uses muted surface color.
73
+ * Medium visual prominence. Pairs with primary buttons.
74
+ */
75
+ secondary: [
76
+ "bg-secondary text-secondary-foreground",
77
+ "border border-border",
78
+ "hover:bg-secondary-hover",
79
+ "active:bg-secondary-active"
80
+ ],
81
+ /**
82
+ * Ghost — minimal visual weight. No background until hover.
83
+ * Low visual prominence. Use for tertiary actions, toolbars, nav.
84
+ */
85
+ ghost: [
86
+ "bg-transparent text-foreground",
87
+ "hover:bg-muted hover:text-foreground",
88
+ "active:bg-secondary-active"
89
+ ],
90
+ /**
91
+ * Danger — destructive actions. Uses danger (red) color.
92
+ * High visual prominence. Use for delete, remove, revoke actions.
93
+ */
94
+ danger: [
95
+ "bg-danger text-danger-foreground",
96
+ "hover:bg-danger-hover",
97
+ "active:bg-danger-active"
98
+ ]
99
+ },
100
+ // -----------------------------------------------------------------
101
+ // Size Variants
102
+ // -----------------------------------------------------------------
103
+ size: {
104
+ /**
105
+ * Small — compact buttons for dense UIs, tables, toolbars.
106
+ * Height: 32px (h-8), Padding: 12px horizontal, Font: 12px
107
+ */
108
+ sm: "h-8 px-3 text-xs gap-1.5",
109
+ /**
110
+ * Medium — default size for most buttons.
111
+ * Height: var(--ds-control-height), Padding: var(--ds-padding-button-x), Font: 14px
112
+ */
113
+ md: "h-(--ds-control-height) px-(--ds-padding-button-x) text-sm gap-2",
114
+ /**
115
+ * Large — prominent buttons for hero sections, forms.
116
+ * Height: 40px (h-10), Padding: 20px horizontal, Font: 14px
117
+ */
118
+ lg: "h-10 px-5 text-sm gap-2"
119
+ },
120
+ // -----------------------------------------------------------------
121
+ // Width Variants
122
+ // -----------------------------------------------------------------
123
+ fullWidth: {
124
+ true: "w-full",
125
+ false: ""
126
+ },
127
+ // -----------------------------------------------------------------
128
+ // Icon-Only Variant
129
+ // -----------------------------------------------------------------
130
+ iconOnly: {
131
+ true: "!px-0",
132
+ false: ""
133
+ }
134
+ },
135
+ // -------------------------------------------------------------------
136
+ // Compound Variants
137
+ // -------------------------------------------------------------------
138
+ // Handle special combinations that can't be expressed as individual
139
+ // variant values.
140
+ // -------------------------------------------------------------------
141
+ compoundVariants: [
142
+ // Icon-only buttons are square (width = height)
143
+ { iconOnly: true, size: "sm", className: "w-8" },
144
+ { iconOnly: true, size: "md", className: "w-9" },
145
+ { iconOnly: true, size: "lg", className: "w-10" }
146
+ ],
147
+ // -------------------------------------------------------------------
148
+ // Default Variants
149
+ // -------------------------------------------------------------------
150
+ defaultVariants: {
151
+ variant: "primary",
152
+ size: "md",
153
+ fullWidth: false,
154
+ iconOnly: false
155
+ }
156
+ }
157
+ );
158
+ function ButtonSpinner({ className }) {
159
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
160
+ "svg",
161
+ {
162
+ className: (0, import_cn.cn)("animate-spin size-4", className),
163
+ xmlns: "http://www.w3.org/2000/svg",
164
+ fill: "none",
165
+ viewBox: "0 0 24 24",
166
+ "aria-hidden": "true",
167
+ children: [
168
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
169
+ "circle",
170
+ {
171
+ className: "opacity-25",
172
+ cx: "12",
173
+ cy: "12",
174
+ r: "10",
175
+ stroke: "currentColor",
176
+ strokeWidth: "4"
177
+ }
178
+ ),
179
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
180
+ "path",
181
+ {
182
+ className: "opacity-75",
183
+ fill: "currentColor",
184
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
185
+ }
186
+ )
187
+ ]
188
+ }
189
+ );
190
+ }
191
+ const Button = (0, import_react.forwardRef)(
192
+ function Button2({
193
+ variant = "primary",
194
+ size = "md",
195
+ fullWidth = false,
196
+ loading = false,
197
+ loadingText,
198
+ iconLeft,
199
+ iconRight,
200
+ iconOnly = false,
201
+ disabled = false,
202
+ as: Component = "button",
203
+ className,
204
+ children,
205
+ ...rest
206
+ }, ref) {
207
+ const isDisabled = disabled || loading;
208
+ const iconSizeClass = size === "sm" ? "[&>svg]:size-3.5" : "[&>svg]:size-4";
209
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
210
+ Component,
211
+ {
212
+ ref,
213
+ type: Component === "button" ? "button" : void 0,
214
+ disabled: isDisabled,
215
+ "aria-disabled": isDisabled || void 0,
216
+ "aria-busy": loading || void 0,
217
+ className: (0, import_cn.cn)(
218
+ buttonVariants({ variant, size, fullWidth, iconOnly }),
219
+ iconSizeClass,
220
+ className
221
+ ),
222
+ "data-ds": "",
223
+ "data-ds-component": "button",
224
+ "data-ds-variant": variant,
225
+ "data-ds-size": size,
226
+ ...loading ? { "data-ds-loading": "" } : {},
227
+ ...rest,
228
+ children: [
229
+ loading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonSpinner, { className: size === "sm" ? "size-3.5" : "size-4" }),
230
+ loading && loadingText ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: loadingText }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
231
+ !loading && iconLeft && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0", "aria-hidden": "true", children: iconLeft }),
232
+ children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
233
+ "span",
234
+ {
235
+ className: (0, import_cn.cn)(
236
+ "inline-flex items-center gap-[inherit]",
237
+ loading && !loadingText && "invisible"
238
+ ),
239
+ children
240
+ }
241
+ ),
242
+ !loading && iconRight && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0", "aria-hidden": "true", children: iconRight })
243
+ ] })
244
+ ]
245
+ }
246
+ );
247
+ }
248
+ );
249
+ Button.displayName = "Button";
250
+ // Annotate the CommonJS export names for ESM import in node:
251
+ 0 && (module.exports = {
252
+ Button,
253
+ buttonVariants
254
+ });