@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,304 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../utils/cn.mjs";
4
+ import { focusRingClasses } from "../utils/focus-ring.mjs";
5
+ import { cva } from "class-variance-authority";
6
+ import { motion, useReducedMotion } from "framer-motion";
7
+ import { Tabs as TabsPrimitive } from "radix-ui";
8
+ import {
9
+ createContext,
10
+ forwardRef,
11
+ useCallback,
12
+ useContext,
13
+ useId,
14
+ useState
15
+ } from "react";
16
+ const TabsContext = createContext({
17
+ variant: "underline",
18
+ size: "md",
19
+ orientation: "horizontal",
20
+ layoutId: "",
21
+ activeValue: ""
22
+ });
23
+ function useTabsContext() {
24
+ return useContext(TabsContext);
25
+ }
26
+ const tabsListVariants = cva(["inline-flex items-center", "shrink-0"], {
27
+ variants: {
28
+ variant: {
29
+ underline: ["border-b border-border", "gap-0"],
30
+ pills: ["gap-1", "rounded-md", "bg-muted", "p-1"],
31
+ enclosed: ["border-b border-border", "gap-0"]
32
+ },
33
+ orientation: {
34
+ horizontal: "flex-row w-full",
35
+ vertical: "flex-col w-auto border-b-0"
36
+ },
37
+ fullWidth: {
38
+ true: "",
39
+ false: ""
40
+ }
41
+ },
42
+ compoundVariants: [
43
+ // Vertical orientation adjustments
44
+ {
45
+ variant: "underline",
46
+ orientation: "vertical",
47
+ className: "border-b-0 border-r border-border"
48
+ },
49
+ {
50
+ variant: "enclosed",
51
+ orientation: "vertical",
52
+ className: "border-b-0 border-r border-border"
53
+ }
54
+ ],
55
+ defaultVariants: {
56
+ variant: "underline",
57
+ orientation: "horizontal",
58
+ fullWidth: false
59
+ }
60
+ });
61
+ const tabsTriggerVariants = cva(
62
+ [
63
+ // Layout
64
+ "relative inline-flex items-center justify-center gap-1.5",
65
+ // Typography
66
+ "font-medium leading-5 whitespace-nowrap",
67
+ // Transition
68
+ "transition-[color,background-color,border-color,box-shadow,opacity]",
69
+ "duration-fast ease-standard",
70
+ // Focus ring
71
+ focusRingClasses,
72
+ // Disabled
73
+ "disabled:pointer-events-none disabled:opacity-50",
74
+ // Cursor
75
+ "cursor-pointer select-none"
76
+ ],
77
+ {
78
+ variants: {
79
+ variant: {
80
+ underline: [
81
+ "bg-transparent",
82
+ "text-muted-foreground",
83
+ "hover:text-foreground",
84
+ "data-[state=active]:text-foreground",
85
+ // Bottom border space for the active indicator
86
+ "border-b-2 border-transparent -mb-px"
87
+ ],
88
+ pills: [
89
+ "rounded-sm",
90
+ "text-muted-foreground",
91
+ "hover:text-foreground hover:bg-background/60",
92
+ "data-[state=active]:text-foreground"
93
+ ],
94
+ enclosed: [
95
+ "bg-transparent",
96
+ "text-muted-foreground",
97
+ "border border-transparent",
98
+ "hover:text-foreground",
99
+ "data-[state=active]:text-foreground",
100
+ "data-[state=active]:bg-background",
101
+ "data-[state=active]:border-border",
102
+ "data-[state=active]:border-b-transparent",
103
+ "-mb-px"
104
+ ]
105
+ },
106
+ size: {
107
+ sm: "text-xs px-3 py-1.5",
108
+ md: "text-sm px-4 py-2"
109
+ }
110
+ },
111
+ defaultVariants: {
112
+ variant: "underline",
113
+ size: "md"
114
+ }
115
+ }
116
+ );
117
+ const tabsContentVariants = cva(["mt-2", focusRingClasses, "rounded-sm"], {
118
+ variants: {
119
+ orientation: {
120
+ horizontal: "mt-2",
121
+ vertical: "mt-0 ml-4"
122
+ }
123
+ },
124
+ defaultVariants: {
125
+ orientation: "horizontal"
126
+ }
127
+ });
128
+ const MotionSpan = motion.create("span");
129
+ const indicatorSpringConfig = {
130
+ type: "spring",
131
+ stiffness: 500,
132
+ damping: 35,
133
+ mass: 0.5
134
+ };
135
+ const indicatorInstantConfig = {
136
+ type: "tween",
137
+ duration: 0
138
+ };
139
+ function ActiveIndicator({
140
+ variant,
141
+ layoutId
142
+ }) {
143
+ const prefersReduced = useReducedMotion();
144
+ const transition = prefersReduced ? indicatorInstantConfig : indicatorSpringConfig;
145
+ if (variant === "enclosed") {
146
+ return null;
147
+ }
148
+ if (variant === "underline") {
149
+ return /* @__PURE__ */ jsx(
150
+ MotionSpan,
151
+ {
152
+ layoutId,
153
+ className: cn(
154
+ "absolute bottom-0 left-0 right-0 h-0.5",
155
+ "bg-primary",
156
+ "rounded-full"
157
+ ),
158
+ transition
159
+ }
160
+ );
161
+ }
162
+ return /* @__PURE__ */ jsx(
163
+ MotionSpan,
164
+ {
165
+ layoutId,
166
+ className: cn(
167
+ "absolute inset-0",
168
+ "bg-background",
169
+ "rounded-sm",
170
+ "shadow-sm"
171
+ ),
172
+ transition
173
+ }
174
+ );
175
+ }
176
+ const Tabs = forwardRef(function Tabs2({
177
+ variant = "underline",
178
+ size = "md",
179
+ orientation = "horizontal",
180
+ className,
181
+ children,
182
+ value: controlledValue,
183
+ defaultValue,
184
+ onValueChange,
185
+ ...rest
186
+ }, ref) {
187
+ const autoId = useId();
188
+ const layoutId = `tabs-indicator-${autoId}`;
189
+ const [internalValue, setInternalValue] = useState(
190
+ controlledValue ?? defaultValue ?? ""
191
+ );
192
+ const activeValue = controlledValue !== void 0 ? controlledValue : internalValue;
193
+ const handleValueChange = useCallback(
194
+ (newValue) => {
195
+ if (controlledValue === void 0) {
196
+ setInternalValue(newValue);
197
+ }
198
+ onValueChange?.(newValue);
199
+ },
200
+ [controlledValue, onValueChange]
201
+ );
202
+ return /* @__PURE__ */ jsx(
203
+ TabsContext.Provider,
204
+ {
205
+ value: { variant, size, orientation, layoutId, activeValue },
206
+ children: /* @__PURE__ */ jsx(
207
+ TabsPrimitive.Root,
208
+ {
209
+ ref,
210
+ orientation,
211
+ value: controlledValue,
212
+ defaultValue: controlledValue !== void 0 ? void 0 : defaultValue,
213
+ onValueChange: handleValueChange,
214
+ className: cn(
215
+ "not-prose",
216
+ orientation === "vertical" && "flex flex-row",
217
+ className
218
+ ),
219
+ "data-ds": "",
220
+ "data-ds-component": "tabs",
221
+ "data-ds-variant": variant,
222
+ "data-ds-size": size,
223
+ "data-ds-orientation": orientation,
224
+ ...rest,
225
+ children
226
+ }
227
+ )
228
+ }
229
+ );
230
+ });
231
+ Tabs.displayName = "Tabs";
232
+ const TabsList = forwardRef(function TabsList2({ fullWidth = false, className, children, ...rest }, ref) {
233
+ const { variant, orientation } = useTabsContext();
234
+ return /* @__PURE__ */ jsx(
235
+ TabsPrimitive.List,
236
+ {
237
+ ref,
238
+ className: cn(
239
+ tabsListVariants({ variant, orientation, fullWidth }),
240
+ fullWidth && orientation === "horizontal" && "[&>*]:flex-1",
241
+ className
242
+ ),
243
+ "data-ds": "",
244
+ "data-ds-component": "tabs-list",
245
+ ...rest,
246
+ children
247
+ }
248
+ );
249
+ });
250
+ TabsList.displayName = "TabsList";
251
+ const TabsTrigger = forwardRef(function TabsTrigger2({ className, icon, children, disabled, value, ...rest }, ref) {
252
+ const { variant, size, layoutId, activeValue } = useTabsContext();
253
+ const iconSizeClass = size === "sm" ? "[&>svg]:size-3.5" : "[&>svg]:size-4";
254
+ const isActive = value === activeValue;
255
+ return /* @__PURE__ */ jsxs(
256
+ TabsPrimitive.Trigger,
257
+ {
258
+ ref,
259
+ value,
260
+ disabled,
261
+ className: cn(
262
+ tabsTriggerVariants({ variant, size }),
263
+ iconSizeClass,
264
+ // For underline variant, make border transparent — the motion indicator handles the active line
265
+ variant === "underline" && "data-[state=active]:border-transparent",
266
+ className
267
+ ),
268
+ "data-ds": "",
269
+ "data-ds-component": "tabs-trigger",
270
+ ...rest,
271
+ children: [
272
+ variant !== "enclosed" && isActive && /* @__PURE__ */ jsx("span", { className: "absolute inset-0 pointer-events-none", children: /* @__PURE__ */ jsx(ActiveIndicator, { variant, layoutId }) }),
273
+ /* @__PURE__ */ jsxs("span", { className: cn("relative z-[1] inline-flex items-center gap-1.5"), children: [
274
+ icon && /* @__PURE__ */ jsx("span", { className: "shrink-0", "aria-hidden": "true", children: icon }),
275
+ children
276
+ ] })
277
+ ]
278
+ }
279
+ );
280
+ });
281
+ TabsTrigger.displayName = "TabsTrigger";
282
+ const TabsContent = forwardRef(function TabsContent2({ className, children, ...rest }, ref) {
283
+ const { orientation } = useTabsContext();
284
+ return /* @__PURE__ */ jsx(
285
+ TabsPrimitive.Content,
286
+ {
287
+ ref,
288
+ className: cn(tabsContentVariants({ orientation }), className),
289
+ "data-ds": "",
290
+ "data-ds-component": "tabs-content",
291
+ ...rest,
292
+ children
293
+ }
294
+ );
295
+ });
296
+ TabsContent.displayName = "TabsContent";
297
+ export {
298
+ Tabs,
299
+ TabsContent,
300
+ TabsList,
301
+ TabsTrigger,
302
+ tabsListVariants,
303
+ tabsTriggerVariants
304
+ };
@@ -0,0 +1,258 @@
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 textarea_exports = {};
21
+ __export(textarea_exports, {
22
+ Textarea: () => Textarea,
23
+ textareaVariants: () => textareaVariants
24
+ });
25
+ module.exports = __toCommonJS(textarea_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 textareaVariants = (0, import_class_variance_authority.cva)(
32
+ // Base styles — shared across all variants and sizes
33
+ [
34
+ // Layout
35
+ "flex w-full min-h-[60px]",
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
+ // Resize handle
55
+ "resize-vertical"
56
+ ],
57
+ {
58
+ variants: {
59
+ // -----------------------------------------------------------------
60
+ // Visual Variants
61
+ // -----------------------------------------------------------------
62
+ variant: {
63
+ /**
64
+ * Default — standard textarea 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.
96
+ * Padding and font match Input sm.
97
+ */
98
+ sm: "px-2.5 py-1.5 text-xs",
99
+ /**
100
+ * Medium — default size for most textareas.
101
+ * Padding and font match Input md.
102
+ */
103
+ md: "px-3 py-2 text-sm",
104
+ /**
105
+ * Large — prominent textareas for long-form content.
106
+ * Padding and font match Input lg.
107
+ */
108
+ lg: "px-3.5 py-2.5 text-sm"
109
+ }
110
+ },
111
+ defaultVariants: {
112
+ variant: "default",
113
+ size: "md"
114
+ }
115
+ }
116
+ );
117
+ function useAutoResize(textareaRef, autoResize, maxHeight) {
118
+ const adjustHeight = (0, import_react.useCallback)(() => {
119
+ const textarea = textareaRef.current;
120
+ if (!textarea || !autoResize) return;
121
+ textarea.style.height = "auto";
122
+ const newHeight = textarea.scrollHeight;
123
+ if (maxHeight && newHeight > maxHeight) {
124
+ textarea.style.height = `${maxHeight}px`;
125
+ textarea.style.overflowY = "auto";
126
+ } else {
127
+ textarea.style.height = `${newHeight}px`;
128
+ textarea.style.overflowY = "hidden";
129
+ }
130
+ }, [textareaRef, autoResize, maxHeight]);
131
+ (0, import_react.useEffect)(() => {
132
+ adjustHeight();
133
+ }, [adjustHeight]);
134
+ return adjustHeight;
135
+ }
136
+ function CharacterCount({
137
+ current,
138
+ max,
139
+ variant,
140
+ className
141
+ }) {
142
+ const isOverLimit = max !== void 0 && current > max;
143
+ const isNearLimit = max !== void 0 && current >= max * 0.9;
144
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
145
+ "span",
146
+ {
147
+ className: (0, import_cn.cn)(
148
+ "text-xs leading-4 tabular-nums select-none",
149
+ // Default muted text
150
+ "text-muted-foreground",
151
+ // Near limit warning
152
+ isNearLimit && !isOverLimit && "text-warning",
153
+ // Over limit or error variant
154
+ (isOverLimit || variant === "error") && "text-danger",
155
+ className
156
+ ),
157
+ "aria-live": "polite",
158
+ "aria-atomic": "true",
159
+ children: max !== void 0 ? `${current} / ${max}` : current
160
+ }
161
+ );
162
+ }
163
+ const Textarea = (0, import_react.forwardRef)(
164
+ function Textarea2({
165
+ variant = "default",
166
+ size = "md",
167
+ autoResize = false,
168
+ maxHeight,
169
+ minRows = 3,
170
+ showCount = false,
171
+ wrapperClassName,
172
+ countClassName,
173
+ className,
174
+ disabled,
175
+ readOnly,
176
+ value,
177
+ defaultValue,
178
+ maxLength,
179
+ onChange,
180
+ "aria-invalid": ariaInvalid,
181
+ ...rest
182
+ }, ref) {
183
+ const internalRef = (0, import_react.useRef)(null);
184
+ const [uncontrolledCharCount, setUncontrolledCharCount] = (0, import_react.useState)(
185
+ () => {
186
+ if (defaultValue !== void 0) return String(defaultValue).length;
187
+ return 0;
188
+ }
189
+ );
190
+ const charCount = value !== void 0 ? String(value).length : uncontrolledCharCount;
191
+ const adjustHeight = useAutoResize(internalRef, autoResize, maxHeight);
192
+ const handleChange = (0, import_react.useCallback)(
193
+ (e) => {
194
+ setUncontrolledCharCount(e.target.value.length);
195
+ adjustHeight();
196
+ onChange?.(e);
197
+ },
198
+ [onChange, adjustHeight]
199
+ );
200
+ const resolvedAriaInvalid = ariaInvalid !== void 0 ? ariaInvalid : variant === "error" ? true : void 0;
201
+ const textareaClasses = (0, import_cn.cn)(
202
+ textareaVariants({ variant, size }),
203
+ autoResize && "resize-none overflow-hidden",
204
+ className
205
+ );
206
+ const textareaElement = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
207
+ "textarea",
208
+ {
209
+ ref: (0, import_cn.composeRefs)(internalRef, ref),
210
+ rows: minRows,
211
+ disabled,
212
+ readOnly,
213
+ value,
214
+ defaultValue,
215
+ maxLength,
216
+ onChange: handleChange,
217
+ "aria-invalid": resolvedAriaInvalid,
218
+ "aria-disabled": disabled || void 0,
219
+ className: textareaClasses,
220
+ "data-ds": "",
221
+ "data-ds-component": "textarea",
222
+ "data-ds-variant": variant,
223
+ "data-ds-size": size,
224
+ ...autoResize ? { "data-ds-auto-resize": "" } : {},
225
+ ...rest
226
+ }
227
+ );
228
+ if (!showCount) {
229
+ return textareaElement;
230
+ }
231
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
232
+ "div",
233
+ {
234
+ className: (0, import_cn.cn)("flex flex-col gap-1.5 w-full", wrapperClassName),
235
+ "data-ds": "",
236
+ "data-ds-component": "textarea-wrapper",
237
+ children: [
238
+ textareaElement,
239
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex justify-end px-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
240
+ CharacterCount,
241
+ {
242
+ current: charCount,
243
+ max: maxLength,
244
+ variant,
245
+ className: countClassName
246
+ }
247
+ ) })
248
+ ]
249
+ }
250
+ );
251
+ }
252
+ );
253
+ Textarea.displayName = "Textarea";
254
+ // Annotate the CommonJS export names for ESM import in node:
255
+ 0 && (module.exports = {
256
+ Textarea,
257
+ textareaVariants
258
+ });
@@ -0,0 +1,112 @@
1
+ import * as react from 'react';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import { VariantProps } from 'class-variance-authority';
4
+
5
+ declare const textareaVariants: (props?: ({
6
+ variant?: "success" | "default" | "error" | null | undefined;
7
+ size?: "sm" | "md" | "lg" | null | undefined;
8
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
9
+ type TextareaVariant = "default" | "error" | "success";
10
+ type TextareaSize = "sm" | "md" | "lg";
11
+ interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "size">, VariantProps<typeof textareaVariants> {
12
+ /**
13
+ * Visual variant of the textarea.
14
+ * @default "default"
15
+ */
16
+ variant?: TextareaVariant;
17
+ /**
18
+ * Size of the textarea.
19
+ * @default "md"
20
+ */
21
+ size?: TextareaSize;
22
+ /**
23
+ * Whether the textarea should automatically resize to fit its content.
24
+ * When enabled, the native resize handle is hidden and the textarea
25
+ * grows vertically as the user types.
26
+ * @default false
27
+ */
28
+ autoResize?: boolean;
29
+ /**
30
+ * Maximum height (in pixels) for the textarea when `autoResize` is enabled.
31
+ * After reaching this height, the textarea will scroll instead of growing.
32
+ * Only applies when `autoResize` is true.
33
+ * @default undefined (no max height constraint)
34
+ */
35
+ maxHeight?: number;
36
+ /**
37
+ * Minimum number of rows to display.
38
+ * This sets the initial height of the textarea.
39
+ * @default 3
40
+ */
41
+ minRows?: number;
42
+ /**
43
+ * Whether to show the character count below the textarea.
44
+ * When `maxLength` is also set, displays "current / max".
45
+ * Otherwise, displays just the current count.
46
+ * @default false
47
+ */
48
+ showCount?: boolean;
49
+ /**
50
+ * Additional CSS classes for the outer wrapper element.
51
+ * Use this when you need to control the width/margin of the textarea group.
52
+ */
53
+ wrapperClassName?: string;
54
+ /**
55
+ * Additional CSS classes for the character count text.
56
+ */
57
+ countClassName?: string;
58
+ /** Additional CSS classes to merge on the textarea element. */
59
+ className?: string;
60
+ }
61
+ /**
62
+ * Textarea — a multi-line text input for capturing longer user content.
63
+ *
64
+ * Built on the design system's token layer with CVA for variant composition.
65
+ * Shares the same visual language as the Input component for consistency.
66
+ * All colors, radii, spacing, and transitions come from CSS custom properties
67
+ * defined in design-system.css.
68
+ *
69
+ * Accessibility:
70
+ * - Focus ring visible on keyboard navigation (focus-visible)
71
+ * - Disabled state uses both `disabled` attribute and `aria-disabled`
72
+ * - Error variant sets `aria-invalid="true"` automatically
73
+ * - Supports `aria-describedby` for linking to error/helper messages
74
+ * - Character count uses `aria-live="polite"` for screen reader updates
75
+ *
76
+ * @example
77
+ * ```tsx
78
+ * // Basic usage
79
+ * <Textarea placeholder="Write something..." />
80
+ *
81
+ * // With variant
82
+ * <Textarea variant="error" aria-describedby="desc-error" />
83
+ * <Textarea variant="success" />
84
+ *
85
+ * // Auto-resize
86
+ * <Textarea autoResize placeholder="This will grow as you type..." />
87
+ * <Textarea autoResize maxHeight={200} placeholder="Grows up to 200px" />
88
+ *
89
+ * // Character count
90
+ * <Textarea showCount placeholder="With counter" />
91
+ * <Textarea showCount maxLength={500} placeholder="Max 500 chars" />
92
+ *
93
+ * // Sizes
94
+ * <Textarea size="sm" placeholder="Small" />
95
+ * <Textarea size="md" placeholder="Medium" />
96
+ * <Textarea size="lg" placeholder="Large" />
97
+ *
98
+ * // Controlled with min rows
99
+ * <Textarea
100
+ * minRows={5}
101
+ * value={text}
102
+ * onChange={(e) => setText(e.target.value)}
103
+ * />
104
+ *
105
+ * // Disabled / Read-only
106
+ * <Textarea disabled placeholder="Disabled" />
107
+ * <Textarea readOnly value="Read-only value" />
108
+ * ```
109
+ */
110
+ declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
111
+
112
+ export { Textarea, type TextareaProps, type TextareaSize, type TextareaVariant, textareaVariants };