@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,180 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cn } from "../utils/cn";
4
+ import { focusRingClasses } from "../utils/focus-ring";
5
+ import { cva } from "class-variance-authority";
6
+ import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
7
+ import {
8
+ createContext,
9
+ forwardRef,
10
+ useContext
11
+ } from "react";
12
+ const ToggleGroupContext = createContext({
13
+ variant: "default",
14
+ size: "md"
15
+ });
16
+ function useToggleGroupContext() {
17
+ return useContext(ToggleGroupContext);
18
+ }
19
+ const toggleGroupVariants = cva(
20
+ // Base styles — shared across all orientations
21
+ [
22
+ // Layout
23
+ "inline-flex items-center",
24
+ // Gap between items
25
+ "gap-1"
26
+ ],
27
+ {
28
+ variants: {
29
+ // -----------------------------------------------------------------
30
+ // Orientation Variants
31
+ // -----------------------------------------------------------------
32
+ orientation: {
33
+ horizontal: "flex-row",
34
+ vertical: "flex-col"
35
+ }
36
+ },
37
+ defaultVariants: {
38
+ orientation: "horizontal"
39
+ }
40
+ }
41
+ );
42
+ const toggleGroupItemVariants = cva(
43
+ // Base styles — shared across all variants and sizes
44
+ [
45
+ // Layout
46
+ "inline-flex items-center justify-center gap-2",
47
+ // Typography
48
+ "text-sm font-medium leading-5",
49
+ // Shape
50
+ "rounded-md",
51
+ // Transition (uses design system motion tokens)
52
+ "transition-[color,background-color,border-color,box-shadow,opacity]",
53
+ "duration-fast ease-standard",
54
+ // Focus ring — WCAG AA compliant, visible on keyboard navigation only
55
+ focusRingClasses,
56
+ // Disabled — consistent across all variants
57
+ "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed",
58
+ // Cursor
59
+ "cursor-pointer",
60
+ // Prevent text selection on rapid clicks
61
+ "select-none",
62
+ // Shrink protection
63
+ "shrink-0"
64
+ ],
65
+ {
66
+ variants: {
67
+ // -----------------------------------------------------------------
68
+ // Visual Variants
69
+ // -----------------------------------------------------------------
70
+ variant: {
71
+ /**
72
+ * Default — transparent background, fills on press.
73
+ */
74
+ default: [
75
+ "bg-transparent text-muted-foreground",
76
+ "hover:bg-muted hover:text-foreground",
77
+ "data-[state=on]:bg-secondary data-[state=on]:text-foreground"
78
+ ],
79
+ /**
80
+ * Outline — bordered item with visible boundary.
81
+ */
82
+ outline: [
83
+ "border border-border",
84
+ "bg-transparent text-muted-foreground",
85
+ "hover:bg-muted hover:text-foreground",
86
+ "data-[state=on]:bg-secondary data-[state=on]:text-foreground",
87
+ "data-[state=on]:border-border-strong"
88
+ ],
89
+ /**
90
+ * Ghost — minimal visual weight.
91
+ */
92
+ ghost: [
93
+ "bg-transparent text-muted-foreground",
94
+ "hover:bg-muted hover:text-foreground",
95
+ "data-[state=on]:bg-transparent data-[state=on]:text-foreground"
96
+ ]
97
+ },
98
+ // -----------------------------------------------------------------
99
+ // Size Variants
100
+ // -----------------------------------------------------------------
101
+ size: {
102
+ /**
103
+ * Small — compact for dense UIs, toolbars.
104
+ * Height: 32px (h-8)
105
+ */
106
+ sm: "h-8 px-2 text-xs gap-1.5",
107
+ /**
108
+ * Medium — default size for most toggle groups.
109
+ * Height: 36px (h-9)
110
+ */
111
+ md: "h-9 px-3 text-sm gap-2",
112
+ /**
113
+ * Large — prominent for larger touch targets.
114
+ * Height: 40px (h-10)
115
+ */
116
+ lg: "h-10 px-4 text-sm gap-2"
117
+ }
118
+ },
119
+ defaultVariants: {
120
+ variant: "default",
121
+ size: "md"
122
+ }
123
+ }
124
+ );
125
+ const ToggleGroup = forwardRef(function ToggleGroup2({
126
+ variant = "default",
127
+ size = "md",
128
+ orientation = "horizontal",
129
+ className,
130
+ children,
131
+ ...rest
132
+ }, ref) {
133
+ return /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx(
134
+ ToggleGroupPrimitive.Root,
135
+ {
136
+ ref,
137
+ orientation,
138
+ className: cn(toggleGroupVariants({ orientation }), className),
139
+ "data-ds": "",
140
+ "data-ds-component": "toggle-group",
141
+ "data-ds-variant": variant,
142
+ "data-ds-size": size,
143
+ "data-ds-orientation": orientation,
144
+ ...rest,
145
+ children
146
+ }
147
+ ) });
148
+ });
149
+ ToggleGroup.displayName = "ToggleGroup";
150
+ const ToggleGroupItem = forwardRef(function ToggleGroupItem2({ variant: variantProp, size: sizeProp, className, children, ...rest }, ref) {
151
+ const context = useToggleGroupContext();
152
+ const variant = variantProp ?? context.variant;
153
+ const size = sizeProp ?? context.size;
154
+ const iconSizeClass = size === "sm" ? "[&>svg]:size-3.5" : "[&>svg]:size-4";
155
+ return /* @__PURE__ */ jsx(
156
+ ToggleGroupPrimitive.Item,
157
+ {
158
+ ref,
159
+ className: cn(
160
+ toggleGroupItemVariants({ variant, size }),
161
+ iconSizeClass,
162
+ className
163
+ ),
164
+ "data-ds": "",
165
+ "data-ds-component": "toggle-group-item",
166
+ "data-ds-variant": variant,
167
+ "data-ds-size": size,
168
+ ...rest,
169
+ children
170
+ }
171
+ );
172
+ });
173
+ ToggleGroupItem.displayName = "ToggleGroupItem";
174
+ export {
175
+ ToggleGroup,
176
+ ToggleGroupItem,
177
+ toggleGroupItemVariants,
178
+ toggleGroupVariants,
179
+ useToggleGroupContext
180
+ };
@@ -0,0 +1,155 @@
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 toggle_exports = {};
21
+ __export(toggle_exports, {
22
+ Toggle: () => Toggle,
23
+ toggleVariants: () => toggleVariants
24
+ });
25
+ module.exports = __toCommonJS(toggle_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_radix_ui = require("radix-ui");
31
+ var import_react = require("react");
32
+ const toggleVariants = (0, import_class_variance_authority.cva)(
33
+ // Base styles — shared across all variants and sizes
34
+ [
35
+ // Layout
36
+ "inline-flex items-center justify-center gap-2",
37
+ // Typography
38
+ "text-sm font-medium leading-5",
39
+ // Shape
40
+ "rounded-md",
41
+ // Transition (uses design system motion tokens)
42
+ "transition-[color,background-color,border-color,box-shadow,opacity]",
43
+ "duration-fast ease-standard",
44
+ // Focus ring — WCAG AA compliant, visible on keyboard navigation only
45
+ import_focus_ring.focusRingClasses,
46
+ // Disabled — consistent across all variants
47
+ "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed",
48
+ // Cursor
49
+ "cursor-pointer",
50
+ // Prevent text selection on rapid clicks
51
+ "select-none",
52
+ // Shrink protection
53
+ "shrink-0"
54
+ ],
55
+ {
56
+ variants: {
57
+ // -----------------------------------------------------------------
58
+ // Visual Variants
59
+ // -----------------------------------------------------------------
60
+ variant: {
61
+ /**
62
+ * Default — transparent background, fills on press.
63
+ * Medium visual prominence. The most common toggle style.
64
+ */
65
+ default: [
66
+ "bg-transparent text-muted-foreground",
67
+ "hover:bg-muted hover:text-foreground",
68
+ "data-[state=on]:bg-secondary data-[state=on]:text-foreground"
69
+ ],
70
+ /**
71
+ * Outline — bordered toggle with visible boundary.
72
+ * Medium-high visual prominence. Use for toolbar-style toggles.
73
+ */
74
+ outline: [
75
+ "border border-border",
76
+ "bg-transparent text-muted-foreground",
77
+ "hover:bg-muted hover:text-foreground",
78
+ "data-[state=on]:bg-secondary data-[state=on]:text-foreground",
79
+ "data-[state=on]:border-border-strong"
80
+ ],
81
+ /**
82
+ * Ghost — minimal visual weight. No background until hover.
83
+ * Low visual prominence. Use for subtle inline toggles.
84
+ */
85
+ ghost: [
86
+ "bg-transparent text-muted-foreground",
87
+ "hover:bg-muted hover:text-foreground",
88
+ "data-[state=on]:bg-transparent data-[state=on]:text-foreground"
89
+ ]
90
+ },
91
+ // -----------------------------------------------------------------
92
+ // Size Variants
93
+ // -----------------------------------------------------------------
94
+ size: {
95
+ /**
96
+ * Small — compact toggles for dense UIs, toolbars.
97
+ * Height: 32px (h-8), Padding: 8px horizontal
98
+ */
99
+ sm: "h-8 px-2 text-xs gap-1.5",
100
+ /**
101
+ * Medium — default size for most toggles.
102
+ * Height: 36px (h-9), Padding: 12px horizontal
103
+ */
104
+ md: "h-9 px-3 text-sm gap-2",
105
+ /**
106
+ * Large — prominent toggles for larger touch targets.
107
+ * Height: 40px (h-10), Padding: 16px horizontal
108
+ */
109
+ lg: "h-10 px-4 text-sm gap-2"
110
+ }
111
+ },
112
+ defaultVariants: {
113
+ variant: "default",
114
+ size: "md"
115
+ }
116
+ }
117
+ );
118
+ const Toggle = (0, import_react.forwardRef)(function Toggle2({
119
+ variant = "default",
120
+ size = "md",
121
+ iconLeft,
122
+ iconRight,
123
+ className,
124
+ children,
125
+ ...rest
126
+ }, ref) {
127
+ const iconSizeClass = size === "sm" ? "[&>svg]:size-3.5" : "[&>svg]:size-4";
128
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
129
+ import_radix_ui.Toggle.Root,
130
+ {
131
+ ref,
132
+ className: (0, import_cn.cn)(
133
+ toggleVariants({ variant, size }),
134
+ iconSizeClass,
135
+ className
136
+ ),
137
+ "data-ds": "",
138
+ "data-ds-component": "toggle",
139
+ "data-ds-variant": variant,
140
+ "data-ds-size": size,
141
+ ...rest,
142
+ children: [
143
+ iconLeft && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0", "aria-hidden": "true", children: iconLeft }),
144
+ children,
145
+ iconRight && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0", "aria-hidden": "true", children: iconRight })
146
+ ]
147
+ }
148
+ );
149
+ });
150
+ Toggle.displayName = "Toggle";
151
+ // Annotate the CommonJS export names for ESM import in node:
152
+ 0 && (module.exports = {
153
+ Toggle,
154
+ toggleVariants
155
+ });
@@ -0,0 +1,100 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+ import * as class_variance_authority_types from 'class-variance-authority/types';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import { Toggle as Toggle$1 } from 'radix-ui';
6
+
7
+ declare const toggleVariants: (props?: ({
8
+ variant?: "outline" | "default" | "ghost" | null | undefined;
9
+ size?: "sm" | "md" | "lg" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+ type ToggleVariant = "default" | "outline" | "ghost";
12
+ type ToggleSize = "sm" | "md" | "lg";
13
+ interface ToggleProps extends Omit<React.ComponentPropsWithoutRef<typeof Toggle$1.Root>, "asChild">, VariantProps<typeof toggleVariants> {
14
+ /**
15
+ * Visual variant of the toggle.
16
+ * @default "default"
17
+ */
18
+ variant?: ToggleVariant;
19
+ /**
20
+ * Size of the toggle.
21
+ * @default "md"
22
+ */
23
+ size?: ToggleSize;
24
+ /**
25
+ * Icon to display before the toggle label.
26
+ */
27
+ iconLeft?: ReactNode;
28
+ /**
29
+ * Icon to display after the toggle label.
30
+ */
31
+ iconRight?: ReactNode;
32
+ /** Content to render inside the toggle. */
33
+ children?: ReactNode;
34
+ /** Additional CSS classes to merge. */
35
+ className?: string;
36
+ }
37
+ /**
38
+ * Toggle — a pressable on/off button for binary states.
39
+ *
40
+ * Built on Radix UI's Toggle primitive for accessibility and the design
41
+ * system's token layer for styling. Use for toolbar actions (bold, italic),
42
+ * view mode switches, mute/unmute, and other binary toggleable actions.
43
+ *
44
+ * Distinct from Switch: Toggle looks and behaves like a button that stays
45
+ * pressed. Switch looks like a sliding track and is better for settings/preferences.
46
+ *
47
+ * Accessibility:
48
+ * - Radix handles `aria-pressed` state management
49
+ * - Focus ring visible on keyboard navigation (focus-visible)
50
+ * - Disabled state uses both `disabled` attribute and `data-disabled`
51
+ * - Keyboard toggle via Space and Enter keys (Radix)
52
+ * - When used as icon-only, provide `aria-label`
53
+ *
54
+ * @example
55
+ * ```tsx
56
+ * // Icon-only toggle (must have aria-label)
57
+ * <Toggle aria-label="Toggle bold">
58
+ * <BoldIcon className="size-4" />
59
+ * </Toggle>
60
+ *
61
+ * // With text label
62
+ * <Toggle variant="outline">
63
+ * <BoldIcon className="size-4" />
64
+ * Bold
65
+ * </Toggle>
66
+ *
67
+ * // Controlled
68
+ * <Toggle
69
+ * pressed={isMuted}
70
+ * onPressedChange={setIsMuted}
71
+ * aria-label="Toggle mute"
72
+ * >
73
+ * {isMuted ? <VolumeOffIcon /> : <VolumeIcon />}
74
+ * </Toggle>
75
+ *
76
+ * // Sizes
77
+ * <Toggle size="sm" aria-label="Small toggle">
78
+ * <StarIcon className="size-3.5" />
79
+ * </Toggle>
80
+ * <Toggle size="md" aria-label="Medium toggle">
81
+ * <StarIcon className="size-4" />
82
+ * </Toggle>
83
+ * <Toggle size="lg" aria-label="Large toggle">
84
+ * <StarIcon className="size-4" />
85
+ * </Toggle>
86
+ *
87
+ * // Disabled
88
+ * <Toggle disabled aria-label="Disabled toggle">
89
+ * <LockIcon className="size-4" />
90
+ * </Toggle>
91
+ *
92
+ * // Ghost variant
93
+ * <Toggle variant="ghost" aria-label="Bookmark">
94
+ * <BookmarkIcon className="size-4" />
95
+ * </Toggle>
96
+ * ```
97
+ */
98
+ declare const Toggle: react.ForwardRefExoticComponent<ToggleProps & react.RefAttributes<HTMLButtonElement>>;
99
+
100
+ export { Toggle, type ToggleProps, type ToggleSize, type ToggleVariant, toggleVariants };
@@ -0,0 +1,100 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+ import * as class_variance_authority_types from 'class-variance-authority/types';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import { Toggle as Toggle$1 } from 'radix-ui';
6
+
7
+ declare const toggleVariants: (props?: ({
8
+ variant?: "outline" | "default" | "ghost" | null | undefined;
9
+ size?: "sm" | "md" | "lg" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+ type ToggleVariant = "default" | "outline" | "ghost";
12
+ type ToggleSize = "sm" | "md" | "lg";
13
+ interface ToggleProps extends Omit<React.ComponentPropsWithoutRef<typeof Toggle$1.Root>, "asChild">, VariantProps<typeof toggleVariants> {
14
+ /**
15
+ * Visual variant of the toggle.
16
+ * @default "default"
17
+ */
18
+ variant?: ToggleVariant;
19
+ /**
20
+ * Size of the toggle.
21
+ * @default "md"
22
+ */
23
+ size?: ToggleSize;
24
+ /**
25
+ * Icon to display before the toggle label.
26
+ */
27
+ iconLeft?: ReactNode;
28
+ /**
29
+ * Icon to display after the toggle label.
30
+ */
31
+ iconRight?: ReactNode;
32
+ /** Content to render inside the toggle. */
33
+ children?: ReactNode;
34
+ /** Additional CSS classes to merge. */
35
+ className?: string;
36
+ }
37
+ /**
38
+ * Toggle — a pressable on/off button for binary states.
39
+ *
40
+ * Built on Radix UI's Toggle primitive for accessibility and the design
41
+ * system's token layer for styling. Use for toolbar actions (bold, italic),
42
+ * view mode switches, mute/unmute, and other binary toggleable actions.
43
+ *
44
+ * Distinct from Switch: Toggle looks and behaves like a button that stays
45
+ * pressed. Switch looks like a sliding track and is better for settings/preferences.
46
+ *
47
+ * Accessibility:
48
+ * - Radix handles `aria-pressed` state management
49
+ * - Focus ring visible on keyboard navigation (focus-visible)
50
+ * - Disabled state uses both `disabled` attribute and `data-disabled`
51
+ * - Keyboard toggle via Space and Enter keys (Radix)
52
+ * - When used as icon-only, provide `aria-label`
53
+ *
54
+ * @example
55
+ * ```tsx
56
+ * // Icon-only toggle (must have aria-label)
57
+ * <Toggle aria-label="Toggle bold">
58
+ * <BoldIcon className="size-4" />
59
+ * </Toggle>
60
+ *
61
+ * // With text label
62
+ * <Toggle variant="outline">
63
+ * <BoldIcon className="size-4" />
64
+ * Bold
65
+ * </Toggle>
66
+ *
67
+ * // Controlled
68
+ * <Toggle
69
+ * pressed={isMuted}
70
+ * onPressedChange={setIsMuted}
71
+ * aria-label="Toggle mute"
72
+ * >
73
+ * {isMuted ? <VolumeOffIcon /> : <VolumeIcon />}
74
+ * </Toggle>
75
+ *
76
+ * // Sizes
77
+ * <Toggle size="sm" aria-label="Small toggle">
78
+ * <StarIcon className="size-3.5" />
79
+ * </Toggle>
80
+ * <Toggle size="md" aria-label="Medium toggle">
81
+ * <StarIcon className="size-4" />
82
+ * </Toggle>
83
+ * <Toggle size="lg" aria-label="Large toggle">
84
+ * <StarIcon className="size-4" />
85
+ * </Toggle>
86
+ *
87
+ * // Disabled
88
+ * <Toggle disabled aria-label="Disabled toggle">
89
+ * <LockIcon className="size-4" />
90
+ * </Toggle>
91
+ *
92
+ * // Ghost variant
93
+ * <Toggle variant="ghost" aria-label="Bookmark">
94
+ * <BookmarkIcon className="size-4" />
95
+ * </Toggle>
96
+ * ```
97
+ */
98
+ declare const Toggle: react.ForwardRefExoticComponent<ToggleProps & react.RefAttributes<HTMLButtonElement>>;
99
+
100
+ export { Toggle, type ToggleProps, type ToggleSize, type ToggleVariant, toggleVariants };
@@ -0,0 +1,130 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../utils/cn";
4
+ import { focusRingClasses } from "../utils/focus-ring";
5
+ import { cva } from "class-variance-authority";
6
+ import { Toggle as TogglePrimitive } from "radix-ui";
7
+ import { forwardRef } from "react";
8
+ const toggleVariants = cva(
9
+ // Base styles — shared across all variants and sizes
10
+ [
11
+ // Layout
12
+ "inline-flex items-center justify-center gap-2",
13
+ // Typography
14
+ "text-sm font-medium leading-5",
15
+ // Shape
16
+ "rounded-md",
17
+ // Transition (uses design system motion tokens)
18
+ "transition-[color,background-color,border-color,box-shadow,opacity]",
19
+ "duration-fast ease-standard",
20
+ // Focus ring — WCAG AA compliant, visible on keyboard navigation only
21
+ focusRingClasses,
22
+ // Disabled — consistent across all variants
23
+ "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed",
24
+ // Cursor
25
+ "cursor-pointer",
26
+ // Prevent text selection on rapid clicks
27
+ "select-none",
28
+ // Shrink protection
29
+ "shrink-0"
30
+ ],
31
+ {
32
+ variants: {
33
+ // -----------------------------------------------------------------
34
+ // Visual Variants
35
+ // -----------------------------------------------------------------
36
+ variant: {
37
+ /**
38
+ * Default — transparent background, fills on press.
39
+ * Medium visual prominence. The most common toggle style.
40
+ */
41
+ default: [
42
+ "bg-transparent text-muted-foreground",
43
+ "hover:bg-muted hover:text-foreground",
44
+ "data-[state=on]:bg-secondary data-[state=on]:text-foreground"
45
+ ],
46
+ /**
47
+ * Outline — bordered toggle with visible boundary.
48
+ * Medium-high visual prominence. Use for toolbar-style toggles.
49
+ */
50
+ outline: [
51
+ "border border-border",
52
+ "bg-transparent text-muted-foreground",
53
+ "hover:bg-muted hover:text-foreground",
54
+ "data-[state=on]:bg-secondary data-[state=on]:text-foreground",
55
+ "data-[state=on]:border-border-strong"
56
+ ],
57
+ /**
58
+ * Ghost — minimal visual weight. No background until hover.
59
+ * Low visual prominence. Use for subtle inline toggles.
60
+ */
61
+ ghost: [
62
+ "bg-transparent text-muted-foreground",
63
+ "hover:bg-muted hover:text-foreground",
64
+ "data-[state=on]:bg-transparent data-[state=on]:text-foreground"
65
+ ]
66
+ },
67
+ // -----------------------------------------------------------------
68
+ // Size Variants
69
+ // -----------------------------------------------------------------
70
+ size: {
71
+ /**
72
+ * Small — compact toggles for dense UIs, toolbars.
73
+ * Height: 32px (h-8), Padding: 8px horizontal
74
+ */
75
+ sm: "h-8 px-2 text-xs gap-1.5",
76
+ /**
77
+ * Medium — default size for most toggles.
78
+ * Height: 36px (h-9), Padding: 12px horizontal
79
+ */
80
+ md: "h-9 px-3 text-sm gap-2",
81
+ /**
82
+ * Large — prominent toggles for larger touch targets.
83
+ * Height: 40px (h-10), Padding: 16px horizontal
84
+ */
85
+ lg: "h-10 px-4 text-sm gap-2"
86
+ }
87
+ },
88
+ defaultVariants: {
89
+ variant: "default",
90
+ size: "md"
91
+ }
92
+ }
93
+ );
94
+ const Toggle = forwardRef(function Toggle2({
95
+ variant = "default",
96
+ size = "md",
97
+ iconLeft,
98
+ iconRight,
99
+ className,
100
+ children,
101
+ ...rest
102
+ }, ref) {
103
+ const iconSizeClass = size === "sm" ? "[&>svg]:size-3.5" : "[&>svg]:size-4";
104
+ return /* @__PURE__ */ jsxs(
105
+ TogglePrimitive.Root,
106
+ {
107
+ ref,
108
+ className: cn(
109
+ toggleVariants({ variant, size }),
110
+ iconSizeClass,
111
+ className
112
+ ),
113
+ "data-ds": "",
114
+ "data-ds-component": "toggle",
115
+ "data-ds-variant": variant,
116
+ "data-ds-size": size,
117
+ ...rest,
118
+ children: [
119
+ iconLeft && /* @__PURE__ */ jsx("span", { className: "shrink-0", "aria-hidden": "true", children: iconLeft }),
120
+ children,
121
+ iconRight && /* @__PURE__ */ jsx("span", { className: "shrink-0", "aria-hidden": "true", children: iconRight })
122
+ ]
123
+ }
124
+ );
125
+ });
126
+ Toggle.displayName = "Toggle";
127
+ export {
128
+ Toggle,
129
+ toggleVariants
130
+ };