@work-rjkashyap/unified-ui 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/LICENSE +21 -0
  3. package/dist/components/accordion.cjs +225 -0
  4. package/dist/components/accordion.d.cts +157 -0
  5. package/dist/components/accordion.d.ts +157 -0
  6. package/dist/components/accordion.mjs +199 -0
  7. package/dist/components/alert-dialog.cjs +246 -0
  8. package/dist/components/alert-dialog.d.cts +61 -0
  9. package/dist/components/alert-dialog.d.ts +61 -0
  10. package/dist/components/alert-dialog.mjs +218 -0
  11. package/dist/components/alert.cjs +401 -0
  12. package/dist/components/alert.d.cts +217 -0
  13. package/dist/components/alert.d.ts +217 -0
  14. package/dist/components/alert.mjs +374 -0
  15. package/dist/components/aspect-ratio.cjs +45 -0
  16. package/dist/components/aspect-ratio.d.cts +10 -0
  17. package/dist/components/aspect-ratio.d.ts +10 -0
  18. package/dist/components/aspect-ratio.mjs +23 -0
  19. package/dist/components/avatar.cjs +348 -0
  20. package/dist/components/avatar.d.cts +198 -0
  21. package/dist/components/avatar.d.ts +198 -0
  22. package/dist/components/avatar.mjs +329 -0
  23. package/dist/components/badge.cjs +325 -0
  24. package/dist/components/badge.d.cts +259 -0
  25. package/dist/components/badge.d.ts +259 -0
  26. package/dist/components/badge.mjs +298 -0
  27. package/dist/components/banner.cjs +147 -0
  28. package/dist/components/banner.d.cts +31 -0
  29. package/dist/components/banner.d.ts +31 -0
  30. package/dist/components/banner.mjs +122 -0
  31. package/dist/components/breadcrumb.cjs +266 -0
  32. package/dist/components/breadcrumb.d.cts +159 -0
  33. package/dist/components/breadcrumb.d.ts +159 -0
  34. package/dist/components/breadcrumb.mjs +235 -0
  35. package/dist/components/button.cjs +254 -0
  36. package/dist/components/button.d.cts +126 -0
  37. package/dist/components/button.d.ts +126 -0
  38. package/dist/components/button.mjs +229 -0
  39. package/dist/components/calendar.cjs +511 -0
  40. package/dist/components/calendar.d.cts +94 -0
  41. package/dist/components/calendar.d.ts +94 -0
  42. package/dist/components/calendar.mjs +492 -0
  43. package/dist/components/card.cjs +234 -0
  44. package/dist/components/card.d.cts +190 -0
  45. package/dist/components/card.d.ts +190 -0
  46. package/dist/components/card.mjs +210 -0
  47. package/dist/components/carousel.cjs +234 -0
  48. package/dist/components/carousel.d.cts +30 -0
  49. package/dist/components/carousel.d.ts +30 -0
  50. package/dist/components/carousel.mjs +217 -0
  51. package/dist/components/chart.cjs +122 -0
  52. package/dist/components/chart.d.cts +103 -0
  53. package/dist/components/chart.d.ts +103 -0
  54. package/dist/components/chart.mjs +96 -0
  55. package/dist/components/checkbox.cjs +318 -0
  56. package/dist/components/checkbox.d.cts +182 -0
  57. package/dist/components/checkbox.d.ts +182 -0
  58. package/dist/components/checkbox.mjs +296 -0
  59. package/dist/components/code-highlight.cjs +335 -0
  60. package/dist/components/code-highlight.d.cts +18 -0
  61. package/dist/components/code-highlight.d.ts +18 -0
  62. package/dist/components/code-highlight.mjs +308 -0
  63. package/dist/components/code.cjs +265 -0
  64. package/dist/components/code.d.cts +40 -0
  65. package/dist/components/code.d.ts +40 -0
  66. package/dist/components/code.mjs +243 -0
  67. package/dist/components/collapsible.cjs +143 -0
  68. package/dist/components/collapsible.d.cts +159 -0
  69. package/dist/components/collapsible.d.ts +159 -0
  70. package/dist/components/collapsible.mjs +123 -0
  71. package/dist/components/color-picker.cjs +348 -0
  72. package/dist/components/color-picker.d.cts +35 -0
  73. package/dist/components/color-picker.d.ts +35 -0
  74. package/dist/components/color-picker.mjs +331 -0
  75. package/dist/components/combobox.cjs +584 -0
  76. package/dist/components/combobox.d.cts +183 -0
  77. package/dist/components/combobox.d.ts +183 -0
  78. package/dist/components/combobox.mjs +571 -0
  79. package/dist/components/command.cjs +329 -0
  80. package/dist/components/command.d.cts +97 -0
  81. package/dist/components/command.d.ts +97 -0
  82. package/dist/components/command.mjs +311 -0
  83. package/dist/components/confirm-dialog.cjs +100 -0
  84. package/dist/components/confirm-dialog.d.cts +25 -0
  85. package/dist/components/confirm-dialog.d.ts +25 -0
  86. package/dist/components/confirm-dialog.mjs +86 -0
  87. package/dist/components/context-menu.cjs +325 -0
  88. package/dist/components/context-menu.d.cts +259 -0
  89. package/dist/components/context-menu.d.ts +259 -0
  90. package/dist/components/context-menu.mjs +290 -0
  91. package/dist/components/copy-button.cjs +203 -0
  92. package/dist/components/copy-button.d.cts +22 -0
  93. package/dist/components/copy-button.d.ts +22 -0
  94. package/dist/components/copy-button.mjs +178 -0
  95. package/dist/components/data-list.cjs +140 -0
  96. package/dist/components/data-list.d.cts +36 -0
  97. package/dist/components/data-list.d.ts +36 -0
  98. package/dist/components/data-list.mjs +113 -0
  99. package/dist/components/data-table-toolbar.cjs +338 -0
  100. package/dist/components/data-table-toolbar.d.cts +84 -0
  101. package/dist/components/data-table-toolbar.d.ts +84 -0
  102. package/dist/components/data-table-toolbar.mjs +320 -0
  103. package/dist/components/data-table.cjs +1324 -0
  104. package/dist/components/data-table.d.cts +349 -0
  105. package/dist/components/data-table.d.ts +349 -0
  106. package/dist/components/data-table.mjs +1323 -0
  107. package/dist/components/date-picker.cjs +282 -0
  108. package/dist/components/date-picker.d.cts +97 -0
  109. package/dist/components/date-picker.d.ts +97 -0
  110. package/dist/components/date-picker.mjs +258 -0
  111. package/dist/components/dialog.cjs +319 -0
  112. package/dist/components/dialog.d.cts +74 -0
  113. package/dist/components/dialog.d.ts +74 -0
  114. package/dist/components/dialog.mjs +292 -0
  115. package/dist/components/drawer.cjs +262 -0
  116. package/dist/components/drawer.d.cts +113 -0
  117. package/dist/components/drawer.d.ts +113 -0
  118. package/dist/components/drawer.mjs +230 -0
  119. package/dist/components/dropdown-menu.cjs +328 -0
  120. package/dist/components/dropdown-menu.d.cts +95 -0
  121. package/dist/components/dropdown-menu.d.ts +95 -0
  122. package/dist/components/dropdown-menu.mjs +293 -0
  123. package/dist/components/empty-state.cjs +123 -0
  124. package/dist/components/empty-state.d.cts +15 -0
  125. package/dist/components/empty-state.d.ts +15 -0
  126. package/dist/components/empty-state.mjs +99 -0
  127. package/dist/components/file-upload.cjs +442 -0
  128. package/dist/components/file-upload.d.cts +35 -0
  129. package/dist/components/file-upload.d.ts +35 -0
  130. package/dist/components/file-upload.mjs +423 -0
  131. package/dist/components/form-field.cjs +191 -0
  132. package/dist/components/form-field.d.cts +163 -0
  133. package/dist/components/form-field.d.ts +163 -0
  134. package/dist/components/form-field.mjs +167 -0
  135. package/dist/components/hover-card.cjs +99 -0
  136. package/dist/components/hover-card.d.cts +28 -0
  137. package/dist/components/hover-card.d.ts +28 -0
  138. package/dist/components/hover-card.mjs +75 -0
  139. package/dist/components/image-gallery.cjs +359 -0
  140. package/dist/components/image-gallery.d.cts +46 -0
  141. package/dist/components/image-gallery.d.ts +46 -0
  142. package/dist/components/image-gallery.mjs +340 -0
  143. package/dist/components/index.cjs +719 -0
  144. package/dist/components/index.d.cts +84 -0
  145. package/dist/components/index.d.ts +84 -0
  146. package/dist/components/index.mjs +771 -0
  147. package/dist/components/infinite-scroll.cjs +95 -0
  148. package/dist/components/infinite-scroll.d.cts +54 -0
  149. package/dist/components/infinite-scroll.d.ts +54 -0
  150. package/dist/components/infinite-scroll.mjs +71 -0
  151. package/dist/components/input-group.cjs +202 -0
  152. package/dist/components/input-group.d.cts +22 -0
  153. package/dist/components/input-group.d.ts +22 -0
  154. package/dist/components/input-group.mjs +178 -0
  155. package/dist/components/input.cjs +318 -0
  156. package/dist/components/input.d.cts +99 -0
  157. package/dist/components/input.d.ts +99 -0
  158. package/dist/components/input.mjs +296 -0
  159. package/dist/components/kbd.cjs +69 -0
  160. package/dist/components/kbd.d.cts +25 -0
  161. package/dist/components/kbd.d.ts +25 -0
  162. package/dist/components/kbd.mjs +44 -0
  163. package/dist/components/label.cjs +138 -0
  164. package/dist/components/label.d.cts +91 -0
  165. package/dist/components/label.d.ts +91 -0
  166. package/dist/components/label.mjs +113 -0
  167. package/dist/components/markdown.cjs +179 -0
  168. package/dist/components/markdown.d.cts +41 -0
  169. package/dist/components/markdown.d.ts +41 -0
  170. package/dist/components/markdown.mjs +155 -0
  171. package/dist/components/menubar.cjs +365 -0
  172. package/dist/components/menubar.d.cts +88 -0
  173. package/dist/components/menubar.d.ts +88 -0
  174. package/dist/components/menubar.mjs +329 -0
  175. package/dist/components/navigation-menu.cjs +280 -0
  176. package/dist/components/navigation-menu.d.cts +123 -0
  177. package/dist/components/navigation-menu.d.ts +123 -0
  178. package/dist/components/navigation-menu.mjs +250 -0
  179. package/dist/components/number-input.cjs +419 -0
  180. package/dist/components/number-input.d.cts +111 -0
  181. package/dist/components/number-input.d.ts +111 -0
  182. package/dist/components/number-input.mjs +400 -0
  183. package/dist/components/pagination.cjs +322 -0
  184. package/dist/components/pagination.d.cts +119 -0
  185. package/dist/components/pagination.d.ts +119 -0
  186. package/dist/components/pagination.mjs +297 -0
  187. package/dist/components/pin-input.cjs +321 -0
  188. package/dist/components/pin-input.d.cts +112 -0
  189. package/dist/components/pin-input.d.ts +112 -0
  190. package/dist/components/pin-input.mjs +303 -0
  191. package/dist/components/popover.cjs +194 -0
  192. package/dist/components/popover.d.cts +108 -0
  193. package/dist/components/popover.d.ts +108 -0
  194. package/dist/components/popover.mjs +168 -0
  195. package/dist/components/progress.cjs +237 -0
  196. package/dist/components/progress.d.cts +137 -0
  197. package/dist/components/progress.d.ts +137 -0
  198. package/dist/components/progress.mjs +211 -0
  199. package/dist/components/radio.cjs +344 -0
  200. package/dist/components/radio.d.cts +145 -0
  201. package/dist/components/radio.d.ts +145 -0
  202. package/dist/components/radio.mjs +320 -0
  203. package/dist/components/resizable.cjs +121 -0
  204. package/dist/components/resizable.d.cts +23 -0
  205. package/dist/components/resizable.d.ts +23 -0
  206. package/dist/components/resizable.mjs +99 -0
  207. package/dist/components/scroll-area.cjs +168 -0
  208. package/dist/components/scroll-area.d.cts +131 -0
  209. package/dist/components/scroll-area.d.ts +131 -0
  210. package/dist/components/scroll-area.mjs +143 -0
  211. package/dist/components/search-input.cjs +261 -0
  212. package/dist/components/search-input.d.cts +26 -0
  213. package/dist/components/search-input.d.ts +26 -0
  214. package/dist/components/search-input.mjs +243 -0
  215. package/dist/components/select.cjs +320 -0
  216. package/dist/components/select.d.cts +55 -0
  217. package/dist/components/select.d.ts +55 -0
  218. package/dist/components/select.mjs +288 -0
  219. package/dist/components/separator.cjs +193 -0
  220. package/dist/components/separator.d.cts +92 -0
  221. package/dist/components/separator.d.ts +92 -0
  222. package/dist/components/separator.mjs +170 -0
  223. package/dist/components/sheet.cjs +399 -0
  224. package/dist/components/sheet.d.cts +219 -0
  225. package/dist/components/sheet.d.ts +219 -0
  226. package/dist/components/sheet.mjs +379 -0
  227. package/dist/components/sidebar.cjs +1077 -0
  228. package/dist/components/sidebar.d.cts +733 -0
  229. package/dist/components/sidebar.d.ts +733 -0
  230. package/dist/components/sidebar.mjs +1033 -0
  231. package/dist/components/skeleton.cjs +210 -0
  232. package/dist/components/skeleton.d.cts +202 -0
  233. package/dist/components/skeleton.d.ts +202 -0
  234. package/dist/components/skeleton.mjs +182 -0
  235. package/dist/components/slider.cjs +319 -0
  236. package/dist/components/slider.d.cts +82 -0
  237. package/dist/components/slider.d.ts +82 -0
  238. package/dist/components/slider.mjs +296 -0
  239. package/dist/components/sonner.cjs +119 -0
  240. package/dist/components/sonner.d.cts +60 -0
  241. package/dist/components/sonner.d.ts +60 -0
  242. package/dist/components/sonner.mjs +94 -0
  243. package/dist/components/spinner.cjs +238 -0
  244. package/dist/components/spinner.d.cts +101 -0
  245. package/dist/components/spinner.d.ts +101 -0
  246. package/dist/components/spinner.mjs +213 -0
  247. package/dist/components/stat.cjs +180 -0
  248. package/dist/components/stat.d.cts +21 -0
  249. package/dist/components/stat.d.ts +21 -0
  250. package/dist/components/stat.mjs +161 -0
  251. package/dist/components/steps.cjs +228 -0
  252. package/dist/components/steps.d.cts +76 -0
  253. package/dist/components/steps.d.ts +76 -0
  254. package/dist/components/steps.mjs +207 -0
  255. package/dist/components/switch.cjs +243 -0
  256. package/dist/components/switch.d.cts +90 -0
  257. package/dist/components/switch.d.ts +90 -0
  258. package/dist/components/switch.mjs +228 -0
  259. package/dist/components/table.cjs +381 -0
  260. package/dist/components/table.d.cts +181 -0
  261. package/dist/components/table.d.ts +181 -0
  262. package/dist/components/table.mjs +349 -0
  263. package/dist/components/tabs.cjs +326 -0
  264. package/dist/components/tabs.d.cts +154 -0
  265. package/dist/components/tabs.d.ts +154 -0
  266. package/dist/components/tabs.mjs +304 -0
  267. package/dist/components/textarea.cjs +258 -0
  268. package/dist/components/textarea.d.cts +112 -0
  269. package/dist/components/textarea.d.ts +112 -0
  270. package/dist/components/textarea.mjs +233 -0
  271. package/dist/components/theme-toggle.cjs +282 -0
  272. package/dist/components/theme-toggle.d.cts +58 -0
  273. package/dist/components/theme-toggle.d.ts +58 -0
  274. package/dist/components/theme-toggle.mjs +258 -0
  275. package/dist/components/timeline.cjs +178 -0
  276. package/dist/components/timeline.d.cts +41 -0
  277. package/dist/components/timeline.d.ts +41 -0
  278. package/dist/components/timeline.mjs +157 -0
  279. package/dist/components/toast.cjs +546 -0
  280. package/dist/components/toast.d.cts +169 -0
  281. package/dist/components/toast.d.ts +169 -0
  282. package/dist/components/toast.mjs +528 -0
  283. package/dist/components/toggle-group.cjs +204 -0
  284. package/dist/components/toggle-group.d.cts +215 -0
  285. package/dist/components/toggle-group.d.ts +215 -0
  286. package/dist/components/toggle-group.mjs +180 -0
  287. package/dist/components/toggle.cjs +155 -0
  288. package/dist/components/toggle.d.cts +100 -0
  289. package/dist/components/toggle.d.ts +100 -0
  290. package/dist/components/toggle.mjs +130 -0
  291. package/dist/components/tooltip.cjs +155 -0
  292. package/dist/components/tooltip.d.cts +129 -0
  293. package/dist/components/tooltip.d.ts +129 -0
  294. package/dist/components/tooltip.mjs +132 -0
  295. package/dist/components/tree-view.cjs +450 -0
  296. package/dist/components/tree-view.d.cts +67 -0
  297. package/dist/components/tree-view.d.ts +67 -0
  298. package/dist/components/tree-view.mjs +433 -0
  299. package/dist/components/video-player.cjs +344 -0
  300. package/dist/components/video-player.d.cts +34 -0
  301. package/dist/components/video-player.d.ts +34 -0
  302. package/dist/components/video-player.mjs +320 -0
  303. package/dist/components/virtual-list.cjs +153 -0
  304. package/dist/components/virtual-list.d.cts +53 -0
  305. package/dist/components/virtual-list.d.ts +53 -0
  306. package/dist/components/virtual-list.mjs +136 -0
  307. package/dist/components/visually-hidden.cjs +43 -0
  308. package/dist/components/visually-hidden.d.cts +9 -0
  309. package/dist/components/visually-hidden.d.ts +9 -0
  310. package/dist/components/visually-hidden.mjs +21 -0
  311. package/dist/index.cjs +1081 -1957
  312. package/dist/index.d.cts +99 -11
  313. package/dist/index.d.ts +99 -11
  314. package/dist/index.mjs +1138 -16
  315. package/dist/motion/hooks.cjs +98 -0
  316. package/dist/motion/hooks.d.cts +32 -0
  317. package/dist/motion/hooks.d.ts +32 -0
  318. package/dist/motion/hooks.mjs +70 -0
  319. package/dist/motion/index.cjs +157 -0
  320. package/dist/motion/index.d.cts +5 -0
  321. package/dist/motion/index.d.ts +5 -0
  322. package/dist/motion/index.mjs +137 -0
  323. package/dist/motion/presets.cjs +609 -0
  324. package/dist/{motion.d.ts → motion/presets.d.cts} +1 -30
  325. package/dist/{motion.d.cts → motion/presets.d.ts} +1 -30
  326. package/dist/{chunk-PLRSH37T.mjs → motion/presets.mjs} +119 -126
  327. package/dist/primitives/container.cjs +88 -0
  328. package/dist/primitives/container.d.cts +82 -0
  329. package/dist/primitives/container.d.ts +82 -0
  330. package/dist/primitives/container.mjs +64 -0
  331. package/dist/primitives/divider.cjs +74 -0
  332. package/dist/primitives/divider.d.cts +30 -0
  333. package/dist/primitives/divider.d.ts +30 -0
  334. package/dist/primitives/divider.mjs +50 -0
  335. package/dist/primitives/index.cjs +54 -0
  336. package/dist/primitives/index.d.cts +6 -0
  337. package/dist/primitives/index.d.ts +6 -0
  338. package/dist/primitives/index.mjs +33 -0
  339. package/dist/primitives/stack.cjs +167 -0
  340. package/dist/primitives/stack.d.cts +132 -0
  341. package/dist/primitives/stack.d.ts +132 -0
  342. package/dist/primitives/stack.mjs +142 -0
  343. package/dist/primitives/typography.cjs +260 -0
  344. package/dist/primitives/typography.d.cts +157 -0
  345. package/dist/primitives/typography.d.ts +157 -0
  346. package/dist/primitives/typography.mjs +229 -0
  347. package/dist/theme/contract.cjs +246 -0
  348. package/dist/theme/contract.d.cts +76 -0
  349. package/dist/theme/contract.d.ts +76 -0
  350. package/dist/theme/contract.mjs +221 -0
  351. package/dist/theme/customizer-store.cjs +266 -0
  352. package/dist/theme/customizer-store.d.cts +76 -0
  353. package/dist/theme/customizer-store.d.ts +76 -0
  354. package/dist/theme/customizer-store.mjs +261 -0
  355. package/dist/theme/customizer.cjs +812 -0
  356. package/dist/theme/customizer.d.cts +13 -0
  357. package/dist/theme/customizer.d.ts +13 -0
  358. package/dist/theme/customizer.mjs +803 -0
  359. package/dist/theme/index.cjs +105 -0
  360. package/dist/theme/index.d.cts +13 -0
  361. package/dist/theme/index.d.ts +13 -0
  362. package/dist/theme/index.mjs +87 -0
  363. package/dist/theme/presets.cjs +1205 -0
  364. package/dist/theme/presets.d.cts +232 -0
  365. package/dist/theme/presets.d.ts +232 -0
  366. package/dist/theme/presets.mjs +1175 -0
  367. package/dist/theme/provider.cjs +122 -0
  368. package/dist/theme/provider.d.cts +57 -0
  369. package/dist/theme/provider.d.ts +57 -0
  370. package/dist/theme/provider.mjs +104 -0
  371. package/dist/{chunk-AAEWG5VR.mjs → tokens/colors.cjs} +94 -94
  372. package/dist/{z-index-DmLl6FUD.d.ts → tokens/colors.d.cts} +118 -72
  373. package/dist/{z-index-DmLl6FUD.d.cts → tokens/colors.d.ts} +118 -72
  374. package/dist/{chunk-6ZZZBOCH.cjs → tokens/colors.mjs} +47 -121
  375. package/dist/tokens/index.cjs +96 -0
  376. package/dist/tokens/index.d.cts +7 -0
  377. package/dist/tokens/index.d.ts +7 -0
  378. package/dist/tokens/index.mjs +71 -0
  379. package/dist/{chunk-XCKK6P46.cjs → tokens/motion.cjs} +46 -18
  380. package/dist/{motion-D9wQbcKL.d.cts → tokens/motion.d.cts} +1 -1
  381. package/dist/{motion-D9wQbcKL.d.ts → tokens/motion.d.ts} +1 -1
  382. package/dist/{chunk-EZ2L3XPS.mjs → tokens/motion.mjs} +16 -10
  383. package/dist/tokens/radius.cjs +41 -0
  384. package/dist/tokens/radius.d.cts +18 -0
  385. package/dist/tokens/radius.d.ts +18 -0
  386. package/dist/tokens/radius.mjs +17 -0
  387. package/dist/tokens/shadows.cjs +57 -0
  388. package/dist/tokens/shadows.d.cts +32 -0
  389. package/dist/tokens/shadows.d.ts +32 -0
  390. package/dist/tokens/shadows.mjs +32 -0
  391. package/dist/tokens/spacing.cjs +51 -0
  392. package/dist/tokens/spacing.d.cts +26 -0
  393. package/dist/tokens/spacing.d.ts +26 -0
  394. package/dist/{chunk-NMPHV6ZD.mjs → tokens/spacing.mjs} +4 -4
  395. package/dist/{chunk-ECIGDEAH.cjs → tokens/typography.cjs} +43 -16
  396. package/dist/{typography-DlvVjEdE.d.ts → tokens/typography.d.cts} +1 -1
  397. package/dist/{typography-DlvVjEdE.d.cts → tokens/typography.d.ts} +1 -1
  398. package/dist/{chunk-ITBG42M5.mjs → tokens/typography.mjs} +14 -9
  399. package/dist/tokens/z-index.cjs +47 -0
  400. package/dist/tokens/z-index.d.cts +24 -0
  401. package/dist/tokens/z-index.d.ts +24 -0
  402. package/dist/tokens/z-index.mjs +23 -0
  403. package/dist/utils/cn.cjs +102 -0
  404. package/dist/utils/cn.d.cts +84 -0
  405. package/dist/utils/cn.d.ts +84 -0
  406. package/dist/{chunk-ZT3PCXDF.mjs → utils/cn.mjs} +14 -7
  407. package/dist/{chunk-33QEKXRQ.cjs → utils/contrast.cjs} +68 -38
  408. package/dist/utils/contrast.d.cts +209 -0
  409. package/dist/utils/contrast.d.ts +209 -0
  410. package/dist/{chunk-5NZDQWRV.mjs → utils/contrast.mjs} +27 -18
  411. package/dist/utils/focus-ring.cjs +81 -0
  412. package/dist/utils/focus-ring.d.cts +80 -0
  413. package/dist/utils/focus-ring.d.ts +80 -0
  414. package/dist/utils/focus-ring.mjs +47 -0
  415. package/dist/utils/index.cjs +107 -0
  416. package/dist/utils/index.d.cts +6 -0
  417. package/dist/utils/index.d.ts +6 -0
  418. package/dist/utils/index.mjs +88 -0
  419. package/dist/utils/types.cjs +38 -0
  420. package/dist/utils/types.d.cts +187 -0
  421. package/dist/utils/types.d.ts +187 -0
  422. package/dist/utils/types.mjs +13 -0
  423. package/package.json +191 -191
  424. package/dist/chunk-2JFREULQ.cjs +0 -29
  425. package/dist/chunk-3EHT6IOA.cjs +0 -49
  426. package/dist/chunk-4ON3M3OM.cjs +0 -73
  427. package/dist/chunk-A2DGHQL2.cjs +0 -21808
  428. package/dist/chunk-BJ55D5IK.mjs +0 -2433
  429. package/dist/chunk-F4JJFWWU.cjs +0 -604
  430. package/dist/chunk-FUWXGHWQ.cjs +0 -468
  431. package/dist/chunk-MBYCK2JJ.mjs +0 -37
  432. package/dist/chunk-OHEH57BV.mjs +0 -455
  433. package/dist/chunk-RUG3BW2B.cjs +0 -2471
  434. package/dist/chunk-XAIUX2YS.mjs +0 -21477
  435. package/dist/components.cjs +0 -1247
  436. package/dist/components.d.cts +0 -7881
  437. package/dist/components.d.ts +0 -7881
  438. package/dist/components.mjs +0 -6
  439. package/dist/motion.cjs +0 -264
  440. package/dist/motion.mjs +0 -3
  441. package/dist/primitives.cjs +0 -57
  442. package/dist/primitives.d.cts +0 -390
  443. package/dist/primitives.d.ts +0 -390
  444. package/dist/primitives.mjs +0 -4
  445. package/dist/theme.cjs +0 -159
  446. package/dist/theme.d.cts +0 -440
  447. package/dist/theme.d.ts +0 -440
  448. package/dist/theme.mjs +0 -6
  449. package/dist/tokens.cjs +0 -137
  450. package/dist/tokens.d.cts +0 -30
  451. package/dist/tokens.d.ts +0 -30
  452. package/dist/tokens.mjs +0 -4
  453. package/dist/utils.cjs +0 -164
  454. package/dist/utils.d.cts +0 -525
  455. package/dist/utils.d.ts +0 -525
  456. package/dist/utils.mjs +0 -3
@@ -0,0 +1,178 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../utils/cn.mjs";
4
+ import { cva } from "class-variance-authority";
5
+ import { forwardRef } from "react";
6
+ const containerVariants = cva(
7
+ [
8
+ "flex w-full items-stretch overflow-hidden",
9
+ "rounded-md border bg-background",
10
+ "transition-[border-color,box-shadow] duration-fast",
11
+ "focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/20",
12
+ "has-[:disabled]:pointer-events-none has-[:disabled]:opacity-50"
13
+ ],
14
+ {
15
+ variants: {
16
+ variant: {
17
+ default: "border-input",
18
+ filled: "border-transparent bg-muted"
19
+ },
20
+ size: {
21
+ sm: "h-8 text-xs",
22
+ md: "h-9 text-sm",
23
+ lg: "h-10 text-sm"
24
+ },
25
+ error: {
26
+ true: "border-danger focus-within:border-danger focus-within:ring-danger/20",
27
+ false: ""
28
+ }
29
+ },
30
+ defaultVariants: { variant: "default", size: "md", error: false }
31
+ }
32
+ );
33
+ const addonVariants = cva(
34
+ [
35
+ "inline-flex items-center justify-center shrink-0",
36
+ "bg-muted text-muted-foreground font-medium",
37
+ "select-none",
38
+ "border-border"
39
+ ],
40
+ {
41
+ variants: {
42
+ position: {
43
+ left: "border-r",
44
+ right: "border-l"
45
+ },
46
+ size: {
47
+ sm: "text-xs px-2",
48
+ md: "text-sm px-3",
49
+ lg: "text-sm px-3"
50
+ }
51
+ },
52
+ defaultVariants: { position: "left", size: "md" }
53
+ }
54
+ );
55
+ const iconSizeMap = {
56
+ sm: "[&>svg]:size-3.5",
57
+ md: "[&>svg]:size-4",
58
+ lg: "[&>svg]:size-4"
59
+ };
60
+ const prefixPaddingMap = {
61
+ sm: "pl-2",
62
+ md: "pl-3",
63
+ lg: "pl-3"
64
+ };
65
+ const suffixPaddingMap = {
66
+ sm: "pr-2",
67
+ md: "pr-3",
68
+ lg: "pr-3"
69
+ };
70
+ const inputLeftPaddingWithPrefix = {
71
+ sm: "pl-1.5",
72
+ md: "pl-2",
73
+ lg: "pl-2"
74
+ };
75
+ const inputLeftPaddingWithAddon = {
76
+ sm: "pl-2",
77
+ md: "pl-3",
78
+ lg: "pl-3"
79
+ };
80
+ const inputLeftPaddingWithoutPrefix = {
81
+ sm: "pl-2",
82
+ md: "pl-3",
83
+ lg: "pl-3"
84
+ };
85
+ const inputRightPaddingWithSuffix = {
86
+ sm: "pr-1.5",
87
+ md: "pr-2",
88
+ lg: "pr-2"
89
+ };
90
+ const inputRightPaddingWithAddon = {
91
+ sm: "pr-2",
92
+ md: "pr-3",
93
+ lg: "pr-3"
94
+ };
95
+ const inputRightPaddingWithoutSuffix = {
96
+ sm: "pr-2",
97
+ md: "pr-3",
98
+ lg: "pr-3"
99
+ };
100
+ const InputGroup = forwardRef(
101
+ function InputGroup2({
102
+ size = "md",
103
+ variant = "default",
104
+ prefix,
105
+ suffix,
106
+ addonLeft,
107
+ addonRight,
108
+ disabled = false,
109
+ error = false,
110
+ className,
111
+ inputClassName,
112
+ inputProps,
113
+ children
114
+ }, ref) {
115
+ const hasPrefix = !!prefix;
116
+ const hasSuffix = !!suffix;
117
+ const hasAddonRight = !!addonRight;
118
+ const inputPaddingLeft = hasPrefix ? inputLeftPaddingWithPrefix[size] : addonLeft ? inputLeftPaddingWithAddon[size] : inputLeftPaddingWithoutPrefix[size];
119
+ const inputPaddingRight = hasSuffix ? inputRightPaddingWithSuffix[size] : hasAddonRight ? inputRightPaddingWithAddon[size] : inputRightPaddingWithoutSuffix[size];
120
+ return /* @__PURE__ */ jsxs(
121
+ "div",
122
+ {
123
+ ref,
124
+ className: cn(containerVariants({ variant, size, error }), className),
125
+ "data-ds": "",
126
+ "data-ds-component": "input-group",
127
+ "data-ds-size": size,
128
+ "data-ds-error": error ? "" : void 0,
129
+ children: [
130
+ addonLeft && /* @__PURE__ */ jsx("div", { className: cn(addonVariants({ position: "left", size })), children: addonLeft }),
131
+ prefix && /* @__PURE__ */ jsx(
132
+ "span",
133
+ {
134
+ className: cn(
135
+ "inline-flex items-center justify-center shrink-0",
136
+ "text-muted-foreground pointer-events-none",
137
+ prefixPaddingMap[size],
138
+ iconSizeMap[size]
139
+ ),
140
+ children: prefix
141
+ }
142
+ ),
143
+ children ? /* @__PURE__ */ jsx("div", { className: "flex-1 flex items-center min-w-0", children }) : /* @__PURE__ */ jsx(
144
+ "input",
145
+ {
146
+ disabled,
147
+ className: cn(
148
+ "flex-1 h-full bg-transparent outline-none text-foreground min-w-0",
149
+ "placeholder:text-muted-foreground",
150
+ inputPaddingLeft,
151
+ inputPaddingRight,
152
+ inputClassName
153
+ ),
154
+ ...inputProps
155
+ }
156
+ ),
157
+ suffix && /* @__PURE__ */ jsx(
158
+ "span",
159
+ {
160
+ className: cn(
161
+ "inline-flex items-center justify-center shrink-0",
162
+ "text-muted-foreground pointer-events-none",
163
+ suffixPaddingMap[size],
164
+ iconSizeMap[size]
165
+ ),
166
+ children: suffix
167
+ }
168
+ ),
169
+ addonRight && /* @__PURE__ */ jsx("div", { className: cn(addonVariants({ position: "right", size })), children: addonRight })
170
+ ]
171
+ }
172
+ );
173
+ }
174
+ );
175
+ InputGroup.displayName = "InputGroup";
176
+ export {
177
+ InputGroup
178
+ };
@@ -0,0 +1,318 @@
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 input_exports = {};
21
+ __export(input_exports, {
22
+ Input: () => Input,
23
+ inputVariants: () => inputVariants
24
+ });
25
+ module.exports = __toCommonJS(input_exports);
26
+ var import_jsx_runtime = require("react/jsx-runtime");
27
+ var import_cn = require("../utils/cn.cjs");
28
+ var import_focus_ring = require("../utils/focus-ring.cjs");
29
+ var import_class_variance_authority = require("class-variance-authority");
30
+ var import_react = require("react");
31
+ const inputVariants = (0, import_class_variance_authority.cva)(
32
+ // Base styles — shared across all variants and sizes
33
+ [
34
+ // Layout
35
+ "flex w-full",
36
+ // Typography
37
+ "text-sm leading-5",
38
+ // Shape
39
+ "rounded-md",
40
+ // Border
41
+ "border",
42
+ // Colors
43
+ "bg-background text-input-foreground",
44
+ "placeholder:text-input-placeholder",
45
+ // Transition
46
+ "transition-[color,background-color,border-color,box-shadow,opacity]",
47
+ "duration-fast ease-standard",
48
+ // Focus ring — WCAG AA compliant, visible on keyboard navigation only
49
+ import_focus_ring.focusRingClasses,
50
+ // Disabled
51
+ "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-disabled disabled:text-disabled-foreground",
52
+ // Read-only
53
+ "read-only:bg-muted read-only:cursor-default",
54
+ // File input styling
55
+ "file:border-0 file:bg-transparent file:text-sm file:font-medium"
56
+ ],
57
+ {
58
+ variants: {
59
+ // -----------------------------------------------------------------
60
+ // Visual Variants
61
+ // -----------------------------------------------------------------
62
+ variant: {
63
+ /**
64
+ * Default — standard input with muted border.
65
+ */
66
+ default: [
67
+ "border-input",
68
+ "hover:border-border-strong",
69
+ "focus-visible:border-border-strong"
70
+ ],
71
+ /**
72
+ * Error — validation failed. Uses danger color.
73
+ */
74
+ error: [
75
+ "border-danger",
76
+ "text-foreground",
77
+ "focus-visible:border-danger",
78
+ "placeholder:text-input-placeholder"
79
+ ],
80
+ /**
81
+ * Success — validation passed. Uses success color.
82
+ */
83
+ success: [
84
+ "border-success",
85
+ "text-foreground",
86
+ "focus-visible:border-success",
87
+ "placeholder:text-input-placeholder"
88
+ ]
89
+ },
90
+ // -----------------------------------------------------------------
91
+ // Size Variants
92
+ // -----------------------------------------------------------------
93
+ size: {
94
+ /**
95
+ * Small — compact for dense UIs, tables, toolbars.
96
+ * Height: 32px (h-8)
97
+ */
98
+ sm: "h-8 px-2.5 text-xs",
99
+ /**
100
+ * Medium — default size for most inputs.
101
+ * Height: var(--ds-control-height)
102
+ */
103
+ md: "h-(--ds-control-height) px-3 text-sm",
104
+ /**
105
+ * Large — prominent inputs for hero sections, forms.
106
+ * Height: 40px (h-10)
107
+ */
108
+ lg: "h-10 px-3.5 text-sm"
109
+ }
110
+ },
111
+ defaultVariants: {
112
+ variant: "default",
113
+ size: "md"
114
+ }
115
+ }
116
+ );
117
+ const inputWrapperVariants = (0, import_class_variance_authority.cva)(["relative flex items-center w-full"], {
118
+ variants: {
119
+ size: {
120
+ sm: "",
121
+ md: "",
122
+ lg: ""
123
+ }
124
+ },
125
+ defaultVariants: {
126
+ size: "md"
127
+ }
128
+ });
129
+ const iconSizeMap = {
130
+ sm: "[&>svg]:size-3.5",
131
+ md: "[&>svg]:size-4",
132
+ lg: "[&>svg]:size-4"
133
+ };
134
+ const iconPaddingLeftMap = {
135
+ sm: "pl-7",
136
+ md: "pl-9",
137
+ lg: "pl-10"
138
+ };
139
+ const iconPaddingRightMap = {
140
+ sm: "pr-7",
141
+ md: "pr-9",
142
+ lg: "pr-10"
143
+ };
144
+ const iconLeftPositionMap = {
145
+ sm: "left-2",
146
+ md: "left-3",
147
+ lg: "left-3.5"
148
+ };
149
+ const iconRightPositionMap = {
150
+ sm: "right-2",
151
+ md: "right-3",
152
+ lg: "right-3.5"
153
+ };
154
+ function ClearButton({
155
+ size,
156
+ onClick
157
+ }) {
158
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
159
+ "button",
160
+ {
161
+ type: "button",
162
+ onClick,
163
+ className: (0, import_cn.cn)(
164
+ "absolute flex items-center justify-center",
165
+ "text-muted-foreground hover:text-foreground",
166
+ "transition-colors duration-fast",
167
+ import_focus_ring.focusRingInsetClasses,
168
+ "rounded-sm",
169
+ iconRightPositionMap[size],
170
+ iconSizeMap[size]
171
+ ),
172
+ "aria-label": "Clear input",
173
+ tabIndex: -1,
174
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
175
+ "svg",
176
+ {
177
+ xmlns: "http://www.w3.org/2000/svg",
178
+ viewBox: "0 0 24 24",
179
+ fill: "none",
180
+ stroke: "currentColor",
181
+ strokeWidth: "2",
182
+ strokeLinecap: "round",
183
+ strokeLinejoin: "round",
184
+ className: size === "sm" ? "size-3.5" : "size-4",
185
+ "aria-hidden": "true",
186
+ children: [
187
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M18 6 6 18" }),
188
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m6 6 12 12" })
189
+ ]
190
+ }
191
+ )
192
+ }
193
+ );
194
+ }
195
+ const Input = (0, import_react.forwardRef)(function Input2({
196
+ variant = "default",
197
+ size = "md",
198
+ iconLeft,
199
+ iconRight,
200
+ clearable = false,
201
+ onClear,
202
+ wrapperClassName,
203
+ className,
204
+ disabled,
205
+ readOnly,
206
+ value,
207
+ defaultValue,
208
+ "aria-invalid": ariaInvalid,
209
+ ...rest
210
+ }, ref) {
211
+ const internalRef = (0, import_react.useRef)(null);
212
+ const hasIcons = !!iconLeft || !!iconRight || clearable;
213
+ const showClear = clearable && !disabled && !readOnly && (value !== void 0 ? String(value).length > 0 : false);
214
+ const handleClear = (0, import_react.useCallback)(() => {
215
+ if (onClear) {
216
+ onClear();
217
+ } else if (internalRef.current) {
218
+ const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
219
+ window.HTMLInputElement.prototype,
220
+ "value"
221
+ )?.set;
222
+ if (nativeInputValueSetter) {
223
+ nativeInputValueSetter.call(internalRef.current, "");
224
+ internalRef.current.dispatchEvent(
225
+ new Event("input", { bubbles: true })
226
+ );
227
+ }
228
+ }
229
+ internalRef.current?.focus();
230
+ }, [onClear]);
231
+ const resolvedAriaInvalid = ariaInvalid !== void 0 ? ariaInvalid : variant === "error" ? true : void 0;
232
+ const inputClasses = (0, import_cn.cn)(
233
+ inputVariants({ variant, size }),
234
+ iconLeft && iconPaddingLeftMap[size],
235
+ (iconRight || showClear) && iconPaddingRightMap[size],
236
+ className
237
+ );
238
+ if (!hasIcons) {
239
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
240
+ "input",
241
+ {
242
+ ref: (0, import_cn.composeRefs)(internalRef, ref),
243
+ disabled,
244
+ readOnly,
245
+ value,
246
+ defaultValue,
247
+ "aria-invalid": resolvedAriaInvalid,
248
+ "aria-disabled": disabled || void 0,
249
+ className: inputClasses,
250
+ "data-ds": "",
251
+ "data-ds-component": "input",
252
+ "data-ds-variant": variant,
253
+ "data-ds-size": size,
254
+ ...rest
255
+ }
256
+ );
257
+ }
258
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
259
+ "div",
260
+ {
261
+ className: (0, import_cn.cn)(inputWrapperVariants({ size }), wrapperClassName),
262
+ "data-ds": "",
263
+ "data-ds-component": "input-wrapper",
264
+ children: [
265
+ iconLeft && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
266
+ "span",
267
+ {
268
+ className: (0, import_cn.cn)(
269
+ "pointer-events-none absolute flex items-center justify-center",
270
+ "text-muted-foreground",
271
+ iconLeftPositionMap[size],
272
+ iconSizeMap[size]
273
+ ),
274
+ "aria-hidden": "true",
275
+ children: iconLeft
276
+ }
277
+ ),
278
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
279
+ "input",
280
+ {
281
+ ref: (0, import_cn.composeRefs)(internalRef, ref),
282
+ disabled,
283
+ readOnly,
284
+ value,
285
+ defaultValue,
286
+ "aria-invalid": resolvedAriaInvalid,
287
+ "aria-disabled": disabled || void 0,
288
+ className: inputClasses,
289
+ "data-ds": "",
290
+ "data-ds-component": "input",
291
+ "data-ds-variant": variant,
292
+ "data-ds-size": size,
293
+ ...rest
294
+ }
295
+ ),
296
+ showClear ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClearButton, { size, onClick: handleClear }) : iconRight && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
297
+ "span",
298
+ {
299
+ className: (0, import_cn.cn)(
300
+ "pointer-events-none absolute flex items-center justify-center",
301
+ "text-muted-foreground",
302
+ iconRightPositionMap[size],
303
+ iconSizeMap[size]
304
+ ),
305
+ "aria-hidden": "true",
306
+ children: iconRight
307
+ }
308
+ )
309
+ ]
310
+ }
311
+ );
312
+ });
313
+ Input.displayName = "Input";
314
+ // Annotate the CommonJS export names for ESM import in node:
315
+ 0 && (module.exports = {
316
+ Input,
317
+ inputVariants
318
+ });
@@ -0,0 +1,99 @@
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
+
6
+ declare const inputVariants: (props?: ({
7
+ variant?: "success" | "default" | "error" | null | undefined;
8
+ size?: "sm" | "md" | "lg" | null | undefined;
9
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
10
+ type InputVariant = "default" | "error" | "success";
11
+ type InputSize = "sm" | "md" | "lg";
12
+ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
13
+ /**
14
+ * Visual variant of the input.
15
+ * @default "default"
16
+ */
17
+ variant?: InputVariant;
18
+ /**
19
+ * Size of the input.
20
+ * @default "md"
21
+ */
22
+ size?: InputSize;
23
+ /**
24
+ * Icon to display on the left side of the input.
25
+ * Typically a Lucide icon component rendered at the appropriate size.
26
+ */
27
+ iconLeft?: ReactNode;
28
+ /**
29
+ * Icon to display on the right side of the input.
30
+ * If `clearable` is true and there is a value, the clear button
31
+ * takes precedence over `iconRight`.
32
+ */
33
+ iconRight?: ReactNode;
34
+ /**
35
+ * Whether to show a clear button when the input has a value.
36
+ * @default false
37
+ */
38
+ clearable?: boolean;
39
+ /**
40
+ * Callback fired when the clear button is clicked.
41
+ * If not provided, the input will dispatch a native change event
42
+ * with an empty string value.
43
+ */
44
+ onClear?: () => void;
45
+ /**
46
+ * Additional CSS classes for the outer wrapper element.
47
+ * Use this when you need to control the width/margin of the input group.
48
+ */
49
+ wrapperClassName?: string;
50
+ /** Additional CSS classes to merge on the input element. */
51
+ className?: string;
52
+ }
53
+ /**
54
+ * Input — a text input for capturing user data.
55
+ *
56
+ * Built on the design system's token layer with CVA for variant composition.
57
+ * All colors, radii, spacing, and transitions come from CSS custom properties
58
+ * defined in design-system.css.
59
+ *
60
+ * Accessibility:
61
+ * - Focus ring visible on keyboard navigation (focus-visible)
62
+ * - Disabled state uses both `disabled` attribute and `aria-disabled`
63
+ * - Error variant sets `aria-invalid="true"` automatically
64
+ * - Supports `aria-describedby` for linking to error/helper messages
65
+ * - Clear button has `aria-label` and is excluded from tab order
66
+ *
67
+ * @example
68
+ * ```tsx
69
+ * // Basic usage
70
+ * <Input placeholder="Enter your name" />
71
+ *
72
+ * // With variant
73
+ * <Input variant="error" aria-describedby="email-error" />
74
+ *
75
+ * // With icons
76
+ * <Input iconLeft={<SearchIcon />} placeholder="Search..." />
77
+ * <Input iconRight={<MailIcon />} placeholder="Email" />
78
+ *
79
+ * // Clearable
80
+ * <Input
81
+ * clearable
82
+ * value={value}
83
+ * onChange={(e) => setValue(e.target.value)}
84
+ * onClear={() => setValue("")}
85
+ * />
86
+ *
87
+ * // Sizes
88
+ * <Input size="sm" placeholder="Small" />
89
+ * <Input size="md" placeholder="Medium" />
90
+ * <Input size="lg" placeholder="Large" />
91
+ *
92
+ * // Disabled / Read-only
93
+ * <Input disabled placeholder="Disabled" />
94
+ * <Input readOnly value="Read-only value" />
95
+ * ```
96
+ */
97
+ declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
98
+
99
+ export { Input, type InputProps, type InputSize, type InputVariant, inputVariants };
@@ -0,0 +1,99 @@
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
+
6
+ declare const inputVariants: (props?: ({
7
+ variant?: "success" | "default" | "error" | null | undefined;
8
+ size?: "sm" | "md" | "lg" | null | undefined;
9
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
10
+ type InputVariant = "default" | "error" | "success";
11
+ type InputSize = "sm" | "md" | "lg";
12
+ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
13
+ /**
14
+ * Visual variant of the input.
15
+ * @default "default"
16
+ */
17
+ variant?: InputVariant;
18
+ /**
19
+ * Size of the input.
20
+ * @default "md"
21
+ */
22
+ size?: InputSize;
23
+ /**
24
+ * Icon to display on the left side of the input.
25
+ * Typically a Lucide icon component rendered at the appropriate size.
26
+ */
27
+ iconLeft?: ReactNode;
28
+ /**
29
+ * Icon to display on the right side of the input.
30
+ * If `clearable` is true and there is a value, the clear button
31
+ * takes precedence over `iconRight`.
32
+ */
33
+ iconRight?: ReactNode;
34
+ /**
35
+ * Whether to show a clear button when the input has a value.
36
+ * @default false
37
+ */
38
+ clearable?: boolean;
39
+ /**
40
+ * Callback fired when the clear button is clicked.
41
+ * If not provided, the input will dispatch a native change event
42
+ * with an empty string value.
43
+ */
44
+ onClear?: () => void;
45
+ /**
46
+ * Additional CSS classes for the outer wrapper element.
47
+ * Use this when you need to control the width/margin of the input group.
48
+ */
49
+ wrapperClassName?: string;
50
+ /** Additional CSS classes to merge on the input element. */
51
+ className?: string;
52
+ }
53
+ /**
54
+ * Input — a text input for capturing user data.
55
+ *
56
+ * Built on the design system's token layer with CVA for variant composition.
57
+ * All colors, radii, spacing, and transitions come from CSS custom properties
58
+ * defined in design-system.css.
59
+ *
60
+ * Accessibility:
61
+ * - Focus ring visible on keyboard navigation (focus-visible)
62
+ * - Disabled state uses both `disabled` attribute and `aria-disabled`
63
+ * - Error variant sets `aria-invalid="true"` automatically
64
+ * - Supports `aria-describedby` for linking to error/helper messages
65
+ * - Clear button has `aria-label` and is excluded from tab order
66
+ *
67
+ * @example
68
+ * ```tsx
69
+ * // Basic usage
70
+ * <Input placeholder="Enter your name" />
71
+ *
72
+ * // With variant
73
+ * <Input variant="error" aria-describedby="email-error" />
74
+ *
75
+ * // With icons
76
+ * <Input iconLeft={<SearchIcon />} placeholder="Search..." />
77
+ * <Input iconRight={<MailIcon />} placeholder="Email" />
78
+ *
79
+ * // Clearable
80
+ * <Input
81
+ * clearable
82
+ * value={value}
83
+ * onChange={(e) => setValue(e.target.value)}
84
+ * onClear={() => setValue("")}
85
+ * />
86
+ *
87
+ * // Sizes
88
+ * <Input size="sm" placeholder="Small" />
89
+ * <Input size="md" placeholder="Medium" />
90
+ * <Input size="lg" placeholder="Large" />
91
+ *
92
+ * // Disabled / Read-only
93
+ * <Input disabled placeholder="Disabled" />
94
+ * <Input readOnly value="Read-only value" />
95
+ * ```
96
+ */
97
+ declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
98
+
99
+ export { Input, type InputProps, type InputSize, type InputVariant, inputVariants };