@me1a/ui 2.2.0 → 2.2.2

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 (376) hide show
  1. package/dist/atoms/accordion.d.mts +94 -0
  2. package/dist/atoms/accordion.d.ts +94 -0
  3. package/dist/atoms/accordion.js +2 -0
  4. package/dist/atoms/accordion.js.map +1 -0
  5. package/dist/atoms/accordion.mjs +2 -0
  6. package/dist/atoms/accordion.mjs.map +1 -0
  7. package/dist/atoms/avatar.d.mts +34 -0
  8. package/dist/atoms/avatar.d.ts +34 -0
  9. package/dist/atoms/avatar.js +2 -0
  10. package/dist/atoms/avatar.js.map +1 -0
  11. package/dist/atoms/avatar.mjs +2 -0
  12. package/dist/atoms/avatar.mjs.map +1 -0
  13. package/dist/atoms/badge.d.mts +40 -0
  14. package/dist/atoms/badge.d.ts +40 -0
  15. package/dist/atoms/badge.js +2 -0
  16. package/dist/atoms/badge.js.map +1 -0
  17. package/dist/atoms/badge.mjs +2 -0
  18. package/dist/atoms/badge.mjs.map +1 -0
  19. package/dist/atoms/box.d.mts +50 -0
  20. package/dist/atoms/box.d.ts +50 -0
  21. package/dist/atoms/box.js +2 -0
  22. package/dist/atoms/box.js.map +1 -0
  23. package/dist/atoms/box.mjs +2 -0
  24. package/dist/atoms/box.mjs.map +1 -0
  25. package/dist/atoms/breadcrumb.d.mts +35 -0
  26. package/dist/atoms/breadcrumb.d.ts +35 -0
  27. package/dist/atoms/breadcrumb.js +2 -0
  28. package/dist/atoms/breadcrumb.js.map +1 -0
  29. package/dist/atoms/breadcrumb.mjs +2 -0
  30. package/dist/atoms/breadcrumb.mjs.map +1 -0
  31. package/dist/{tooltip-B4jzaurK.d.mts → atoms/button.d.mts} +1 -23
  32. package/dist/{tooltip-B4jzaurK.d.ts → atoms/button.d.ts} +1 -23
  33. package/dist/atoms/button.js +2 -0
  34. package/dist/atoms/button.js.map +1 -0
  35. package/dist/atoms/button.mjs +2 -0
  36. package/dist/atoms/button.mjs.map +1 -0
  37. package/dist/atoms/checkbox.d.mts +21 -0
  38. package/dist/atoms/checkbox.d.ts +21 -0
  39. package/dist/atoms/checkbox.js +2 -0
  40. package/dist/atoms/checkbox.js.map +1 -0
  41. package/dist/atoms/checkbox.mjs +2 -0
  42. package/dist/atoms/checkbox.mjs.map +1 -0
  43. package/dist/atoms/collapsible.d.mts +26 -0
  44. package/dist/atoms/collapsible.d.ts +26 -0
  45. package/dist/atoms/collapsible.js +2 -0
  46. package/dist/atoms/collapsible.js.map +1 -0
  47. package/dist/atoms/collapsible.mjs +2 -0
  48. package/dist/atoms/collapsible.mjs.map +1 -0
  49. package/dist/atoms/command.d.mts +122 -0
  50. package/dist/atoms/command.d.ts +122 -0
  51. package/dist/atoms/command.js +2 -0
  52. package/dist/atoms/command.js.map +1 -0
  53. package/dist/atoms/command.mjs +2 -0
  54. package/dist/atoms/command.mjs.map +1 -0
  55. package/dist/atoms/container.js +2 -0
  56. package/dist/atoms/container.js.map +1 -0
  57. package/dist/atoms/container.mjs +2 -0
  58. package/dist/atoms/container.mjs.map +1 -0
  59. package/dist/atoms/dialog.d.mts +35 -0
  60. package/dist/atoms/dialog.d.ts +35 -0
  61. package/dist/atoms/dialog.js +2 -0
  62. package/dist/atoms/dialog.js.map +1 -0
  63. package/dist/atoms/dialog.mjs +2 -0
  64. package/dist/atoms/dialog.mjs.map +1 -0
  65. package/dist/atoms/input.d.mts +12 -0
  66. package/dist/atoms/input.d.ts +12 -0
  67. package/dist/atoms/input.js +2 -0
  68. package/dist/atoms/input.js.map +1 -0
  69. package/dist/atoms/input.mjs +2 -0
  70. package/dist/atoms/input.mjs.map +1 -0
  71. package/dist/atoms/label.d.mts +18 -0
  72. package/dist/atoms/label.d.ts +18 -0
  73. package/dist/atoms/label.js +2 -0
  74. package/dist/atoms/label.js.map +1 -0
  75. package/dist/atoms/label.mjs +2 -0
  76. package/dist/atoms/label.mjs.map +1 -0
  77. package/dist/atoms/page-loader.d.mts +29 -0
  78. package/dist/atoms/page-loader.d.ts +29 -0
  79. package/dist/atoms/page-loader.js +2 -0
  80. package/dist/atoms/page-loader.js.map +1 -0
  81. package/dist/atoms/page-loader.mjs +2 -0
  82. package/dist/atoms/page-loader.mjs.map +1 -0
  83. package/dist/atoms/pagination.d.mts +105 -0
  84. package/dist/atoms/pagination.d.ts +105 -0
  85. package/dist/atoms/pagination.js +2 -0
  86. package/dist/atoms/pagination.js.map +1 -0
  87. package/dist/atoms/pagination.mjs +2 -0
  88. package/dist/atoms/pagination.mjs.map +1 -0
  89. package/dist/atoms/popover.d.mts +30 -0
  90. package/dist/atoms/popover.d.ts +30 -0
  91. package/dist/atoms/popover.js +2 -0
  92. package/dist/atoms/popover.js.map +1 -0
  93. package/dist/atoms/popover.mjs +2 -0
  94. package/dist/atoms/popover.mjs.map +1 -0
  95. package/dist/{checkbox-DxgDKaHx.d.mts → atoms/radio-group.d.mts} +4 -50
  96. package/dist/{checkbox-DxgDKaHx.d.ts → atoms/radio-group.d.ts} +4 -50
  97. package/dist/atoms/radio-group.js +2 -0
  98. package/dist/atoms/radio-group.js.map +1 -0
  99. package/dist/atoms/radio-group.mjs +2 -0
  100. package/dist/atoms/radio-group.mjs.map +1 -0
  101. package/dist/atoms/resizable.d.mts +53 -0
  102. package/dist/atoms/resizable.d.ts +53 -0
  103. package/dist/atoms/resizable.js +2 -0
  104. package/dist/atoms/resizable.js.map +1 -0
  105. package/dist/atoms/resizable.mjs +2 -0
  106. package/dist/atoms/resizable.mjs.map +1 -0
  107. package/dist/atoms/separator.d.mts +13 -0
  108. package/dist/atoms/separator.d.ts +13 -0
  109. package/dist/atoms/separator.js +2 -0
  110. package/dist/atoms/separator.js.map +1 -0
  111. package/dist/atoms/separator.mjs +2 -0
  112. package/dist/atoms/separator.mjs.map +1 -0
  113. package/dist/atoms/sheet.d.mts +42 -0
  114. package/dist/atoms/sheet.d.ts +42 -0
  115. package/dist/atoms/sheet.js +2 -0
  116. package/dist/atoms/sheet.js.map +1 -0
  117. package/dist/atoms/sheet.mjs +2 -0
  118. package/dist/atoms/sheet.mjs.map +1 -0
  119. package/dist/atoms/skeleton.js +2 -0
  120. package/dist/atoms/skeleton.js.map +1 -0
  121. package/dist/atoms/skeleton.mjs +2 -0
  122. package/dist/atoms/skeleton.mjs.map +1 -0
  123. package/dist/atoms/stack.d.mts +121 -0
  124. package/dist/atoms/stack.d.ts +121 -0
  125. package/dist/atoms/stack.js +2 -0
  126. package/dist/atoms/stack.js.map +1 -0
  127. package/dist/atoms/stack.mjs +2 -0
  128. package/dist/atoms/stack.mjs.map +1 -0
  129. package/dist/atoms/switch.d.mts +21 -0
  130. package/dist/atoms/switch.d.ts +21 -0
  131. package/dist/atoms/switch.js +2 -0
  132. package/dist/atoms/switch.js.map +1 -0
  133. package/dist/atoms/switch.mjs +2 -0
  134. package/dist/atoms/switch.mjs.map +1 -0
  135. package/dist/atoms/table.d.mts +53 -0
  136. package/dist/atoms/table.d.ts +53 -0
  137. package/dist/atoms/table.js +2 -0
  138. package/dist/atoms/table.js.map +1 -0
  139. package/dist/atoms/table.mjs +2 -0
  140. package/dist/atoms/table.mjs.map +1 -0
  141. package/dist/atoms/text-field.d.mts +65 -0
  142. package/dist/atoms/text-field.d.ts +65 -0
  143. package/dist/atoms/text-field.js +2 -0
  144. package/dist/atoms/text-field.js.map +1 -0
  145. package/dist/atoms/text-field.mjs +2 -0
  146. package/dist/atoms/text-field.mjs.map +1 -0
  147. package/dist/atoms/textarea.js +2 -0
  148. package/dist/atoms/textarea.js.map +1 -0
  149. package/dist/atoms/textarea.mjs +2 -0
  150. package/dist/atoms/textarea.mjs.map +1 -0
  151. package/dist/{toast-2xT7L1tJ.d.mts → atoms/toast.d.mts} +1 -1
  152. package/dist/{toast-2xT7L1tJ.d.ts → atoms/toast.d.ts} +1 -1
  153. package/dist/atoms/toast.js +2 -0
  154. package/dist/atoms/toast.js.map +1 -0
  155. package/dist/atoms/toast.mjs +2 -0
  156. package/dist/atoms/toast.mjs.map +1 -0
  157. package/dist/atoms/toaster.d.mts +26 -0
  158. package/dist/atoms/toaster.d.ts +26 -0
  159. package/dist/atoms/toaster.js +2 -0
  160. package/dist/atoms/toaster.js.map +1 -0
  161. package/dist/atoms/toaster.mjs +2 -0
  162. package/dist/atoms/toaster.mjs.map +1 -0
  163. package/dist/atoms/tooltip.d.mts +25 -0
  164. package/dist/atoms/tooltip.d.ts +25 -0
  165. package/dist/atoms/tooltip.js +2 -0
  166. package/dist/atoms/tooltip.js.map +1 -0
  167. package/dist/atoms/tooltip.mjs +2 -0
  168. package/dist/atoms/tooltip.mjs.map +1 -0
  169. package/dist/atoms/typography.d.mts +24 -0
  170. package/dist/atoms/typography.d.ts +24 -0
  171. package/dist/atoms/typography.js +2 -0
  172. package/dist/atoms/typography.js.map +1 -0
  173. package/dist/atoms/typography.mjs +2 -0
  174. package/dist/atoms/typography.mjs.map +1 -0
  175. package/dist/atoms.d.mts +213 -27
  176. package/dist/atoms.d.ts +213 -27
  177. package/dist/atoms.js +2 -0
  178. package/dist/atoms.js.map +1 -0
  179. package/dist/atoms.mjs +2 -0
  180. package/dist/atoms.mjs.map +1 -0
  181. package/dist/hooks.d.mts +10 -4
  182. package/dist/hooks.d.ts +10 -4
  183. package/dist/hooks.js +2 -0
  184. package/dist/hooks.js.map +1 -0
  185. package/dist/hooks.mjs +2 -0
  186. package/dist/hooks.mjs.map +1 -0
  187. package/dist/index.d.mts +2619 -30
  188. package/dist/index.d.ts +2619 -30
  189. package/dist/index.js +2 -0
  190. package/dist/index.js.map +1 -0
  191. package/dist/index.mjs +2 -0
  192. package/dist/index.mjs.map +1 -0
  193. package/dist/molecules/card.d.mts +72 -0
  194. package/dist/molecules/card.d.ts +72 -0
  195. package/dist/molecules/card.js +2 -0
  196. package/dist/molecules/card.js.map +1 -0
  197. package/dist/molecules/card.mjs +2 -0
  198. package/dist/molecules/card.mjs.map +1 -0
  199. package/dist/molecules/navigation-menu.d.mts +103 -0
  200. package/dist/molecules/navigation-menu.d.ts +103 -0
  201. package/dist/molecules/navigation-menu.js +2 -0
  202. package/dist/molecules/navigation-menu.js.map +1 -0
  203. package/dist/molecules/navigation-menu.mjs +2 -0
  204. package/dist/molecules/navigation-menu.mjs.map +1 -0
  205. package/dist/molecules/tabs.d.mts +32 -0
  206. package/dist/molecules/tabs.d.ts +32 -0
  207. package/dist/molecules/tabs.js +2 -0
  208. package/dist/molecules/tabs.js.map +1 -0
  209. package/dist/molecules/tabs.mjs +2 -0
  210. package/dist/molecules/tabs.mjs.map +1 -0
  211. package/dist/molecules.d.mts +1 -1
  212. package/dist/molecules.d.ts +1 -1
  213. package/dist/molecules.js +2 -0
  214. package/dist/molecules.js.map +1 -0
  215. package/dist/molecules.mjs +2 -0
  216. package/dist/molecules.mjs.map +1 -0
  217. package/dist/organisms/drawer.d.mts +63 -0
  218. package/dist/organisms/drawer.d.ts +63 -0
  219. package/dist/organisms/drawer.js +2 -0
  220. package/dist/organisms/drawer.js.map +1 -0
  221. package/dist/organisms/drawer.mjs +2 -0
  222. package/dist/organisms/drawer.mjs.map +1 -0
  223. package/dist/organisms/dropdown-menu.d.mts +335 -0
  224. package/dist/organisms/dropdown-menu.d.ts +335 -0
  225. package/dist/organisms/dropdown-menu.js +2 -0
  226. package/dist/organisms/dropdown-menu.js.map +1 -0
  227. package/dist/organisms/dropdown-menu.mjs +2 -0
  228. package/dist/organisms/dropdown-menu.mjs.map +1 -0
  229. package/dist/organisms/sidebar.d.mts +328 -0
  230. package/dist/organisms/sidebar.d.ts +328 -0
  231. package/dist/organisms/sidebar.js +2 -0
  232. package/dist/organisms/sidebar.js.map +1 -0
  233. package/dist/organisms/sidebar.mjs +2 -0
  234. package/dist/organisms/sidebar.mjs.map +1 -0
  235. package/dist/organisms.d.mts +56 -12
  236. package/dist/organisms.d.ts +56 -12
  237. package/dist/organisms.js +2 -0
  238. package/dist/organisms.js.map +1 -0
  239. package/dist/organisms.mjs +2 -0
  240. package/dist/organisms.mjs.map +1 -0
  241. package/dist/rhf/form.d.mts +96 -0
  242. package/dist/rhf/form.d.ts +96 -0
  243. package/dist/rhf/form.js +2 -0
  244. package/dist/rhf/form.js.map +1 -0
  245. package/dist/rhf/form.mjs +2 -0
  246. package/dist/rhf/form.mjs.map +1 -0
  247. package/dist/rhf/rhf-checkbox.d.mts +57 -0
  248. package/dist/rhf/rhf-checkbox.d.ts +57 -0
  249. package/dist/rhf/rhf-checkbox.js +2 -0
  250. package/dist/rhf/rhf-checkbox.js.map +1 -0
  251. package/dist/rhf/rhf-checkbox.mjs +2 -0
  252. package/dist/rhf/rhf-checkbox.mjs.map +1 -0
  253. package/dist/rhf/rhf-multi-select.d.mts +84 -0
  254. package/dist/rhf/rhf-multi-select.d.ts +84 -0
  255. package/dist/rhf/rhf-multi-select.js +2 -0
  256. package/dist/rhf/rhf-multi-select.js.map +1 -0
  257. package/dist/rhf/rhf-multi-select.mjs +2 -0
  258. package/dist/rhf/rhf-multi-select.mjs.map +1 -0
  259. package/dist/rhf/rhf-radio-button-group.d.mts +73 -0
  260. package/dist/rhf/rhf-radio-button-group.d.ts +73 -0
  261. package/dist/rhf/rhf-radio-button-group.js +2 -0
  262. package/dist/rhf/rhf-radio-button-group.js.map +1 -0
  263. package/dist/rhf/rhf-radio-button-group.mjs +2 -0
  264. package/dist/rhf/rhf-radio-button-group.mjs.map +1 -0
  265. package/dist/rhf/rhf-radio-group.d.mts +103 -0
  266. package/dist/rhf/rhf-radio-group.d.ts +103 -0
  267. package/dist/rhf/rhf-radio-group.js +2 -0
  268. package/dist/rhf/rhf-radio-group.js.map +1 -0
  269. package/dist/rhf/rhf-radio-group.mjs +2 -0
  270. package/dist/rhf/rhf-radio-group.mjs.map +1 -0
  271. package/dist/rhf/rhf-select.d.mts +80 -0
  272. package/dist/rhf/rhf-select.d.ts +80 -0
  273. package/dist/rhf/rhf-select.js +2 -0
  274. package/dist/rhf/rhf-select.js.map +1 -0
  275. package/dist/rhf/rhf-select.mjs +2 -0
  276. package/dist/rhf/rhf-select.mjs.map +1 -0
  277. package/dist/rhf/rhf-switch.d.mts +57 -0
  278. package/dist/rhf/rhf-switch.d.ts +57 -0
  279. package/dist/rhf/rhf-switch.js +2 -0
  280. package/dist/rhf/rhf-switch.js.map +1 -0
  281. package/dist/rhf/rhf-switch.mjs +2 -0
  282. package/dist/rhf/rhf-switch.mjs.map +1 -0
  283. package/dist/rhf/rhf-textarea.d.mts +66 -0
  284. package/dist/rhf/rhf-textarea.d.ts +66 -0
  285. package/dist/rhf/rhf-textarea.js +2 -0
  286. package/dist/rhf/rhf-textarea.js.map +1 -0
  287. package/dist/rhf/rhf-textarea.mjs +2 -0
  288. package/dist/rhf/rhf-textarea.mjs.map +1 -0
  289. package/dist/rhf.d.mts +213 -7
  290. package/dist/rhf.d.ts +213 -7
  291. package/dist/rhf.js +2 -0
  292. package/dist/rhf.js.map +1 -0
  293. package/dist/rhf.mjs +2 -0
  294. package/dist/rhf.mjs.map +1 -0
  295. package/dist/types.js +2 -0
  296. package/dist/{types.cjs.js.map → types.js.map} +1 -1
  297. package/dist/types.mjs +2 -0
  298. package/dist/{types.esm.js.map → types.mjs.map} +1 -1
  299. package/dist/{chunk-SL2ZUI4G.cjs.js → utils.js} +2 -2
  300. package/dist/utils.js.map +1 -0
  301. package/dist/utils.mjs +2 -0
  302. package/dist/utils.mjs.map +1 -0
  303. package/package.json +241 -15
  304. package/dist/atoms.cjs.js +0 -2
  305. package/dist/atoms.cjs.js.map +0 -1
  306. package/dist/atoms.esm.js +0 -2
  307. package/dist/atoms.esm.js.map +0 -1
  308. package/dist/chunk-23T2PH5G.esm.js +0 -2
  309. package/dist/chunk-23T2PH5G.esm.js.map +0 -1
  310. package/dist/chunk-2QG3QTSW.cjs.js +0 -2
  311. package/dist/chunk-2QG3QTSW.cjs.js.map +0 -1
  312. package/dist/chunk-C26U3FL4.esm.js +0 -2
  313. package/dist/chunk-C26U3FL4.esm.js.map +0 -1
  314. package/dist/chunk-DTM5LZHM.cjs.js +0 -2
  315. package/dist/chunk-DTM5LZHM.cjs.js.map +0 -1
  316. package/dist/chunk-HW32JE75.cjs.js +0 -2
  317. package/dist/chunk-HW32JE75.cjs.js.map +0 -1
  318. package/dist/chunk-J5A6PILI.cjs.js +0 -2
  319. package/dist/chunk-J5A6PILI.cjs.js.map +0 -1
  320. package/dist/chunk-JIRS6MWF.cjs.js +0 -2
  321. package/dist/chunk-JIRS6MWF.cjs.js.map +0 -1
  322. package/dist/chunk-JKTYFZ5M.esm.js +0 -2
  323. package/dist/chunk-JKTYFZ5M.esm.js.map +0 -1
  324. package/dist/chunk-JUZG25DH.esm.js +0 -2
  325. package/dist/chunk-JUZG25DH.esm.js.map +0 -1
  326. package/dist/chunk-KOYJODOP.cjs.js +0 -2
  327. package/dist/chunk-KOYJODOP.cjs.js.map +0 -1
  328. package/dist/chunk-M4S5YZ56.esm.js +0 -2
  329. package/dist/chunk-M4S5YZ56.esm.js.map +0 -1
  330. package/dist/chunk-MOYOCJW6.esm.js +0 -2
  331. package/dist/chunk-MOYOCJW6.esm.js.map +0 -1
  332. package/dist/chunk-MVWMLXLL.cjs.js +0 -2
  333. package/dist/chunk-MVWMLXLL.cjs.js.map +0 -1
  334. package/dist/chunk-Q76IMLQ3.esm.js +0 -2
  335. package/dist/chunk-Q76IMLQ3.esm.js.map +0 -1
  336. package/dist/chunk-SL2ZUI4G.cjs.js.map +0 -1
  337. package/dist/chunk-STRDPP3B.esm.js +0 -2
  338. package/dist/chunk-STRDPP3B.esm.js.map +0 -1
  339. package/dist/chunk-U4NMIMU7.esm.js +0 -2
  340. package/dist/chunk-U4NMIMU7.esm.js.map +0 -1
  341. package/dist/chunk-UK47BFA3.cjs.js +0 -2
  342. package/dist/chunk-UK47BFA3.cjs.js.map +0 -1
  343. package/dist/chunk-WJNYKJP6.cjs.js +0 -2
  344. package/dist/chunk-WJNYKJP6.cjs.js.map +0 -1
  345. package/dist/chunk-YEZB7AOJ.esm.js +0 -2
  346. package/dist/chunk-YEZB7AOJ.esm.js.map +0 -1
  347. package/dist/hooks.cjs.js +0 -2
  348. package/dist/hooks.cjs.js.map +0 -1
  349. package/dist/hooks.esm.js +0 -2
  350. package/dist/hooks.esm.js.map +0 -1
  351. package/dist/index.cjs.js +0 -2
  352. package/dist/index.cjs.js.map +0 -1
  353. package/dist/index.esm.js +0 -2
  354. package/dist/index.esm.js.map +0 -1
  355. package/dist/molecules.cjs.js +0 -2
  356. package/dist/molecules.cjs.js.map +0 -1
  357. package/dist/molecules.esm.js +0 -2
  358. package/dist/molecules.esm.js.map +0 -1
  359. package/dist/organisms.cjs.js +0 -2
  360. package/dist/organisms.cjs.js.map +0 -1
  361. package/dist/organisms.esm.js +0 -2
  362. package/dist/organisms.esm.js.map +0 -1
  363. package/dist/rhf.cjs.js +0 -2
  364. package/dist/rhf.cjs.js.map +0 -1
  365. package/dist/rhf.esm.js +0 -2
  366. package/dist/rhf.esm.js.map +0 -1
  367. package/dist/types.cjs.js +0 -2
  368. package/dist/types.d.mts +0 -2
  369. package/dist/types.d.ts +0 -2
  370. package/dist/types.esm.js +0 -2
  371. package/dist/utils.cjs.js +0 -2
  372. package/dist/utils.cjs.js.map +0 -1
  373. package/dist/utils.d.mts +0 -5
  374. package/dist/utils.d.ts +0 -5
  375. package/dist/utils.esm.js +0 -2
  376. package/dist/utils.esm.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/textarea/textarea.tsx","../../src/components/atoms/label/label.tsx","../../src/components/rhf/form/form.tsx","../../src/components/rhf/rhf-textarea/rhf-textarea.tsx"],"names":["cn","inputs","twMerge","clsx","Textarea","c","className","autoResize","props","ref","internalRef","textarea","resizeTextarea","jsx","labelVariants","cva","Label","V","C","FormFieldContext","s","FormField","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","formState","useFormContext","fieldState","id","FormItem","FormLabel","error","formItemId","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","children","body","RHFTextarea","name","label","description","warningText","required","disabled","readOnly","placeholder","ariaLabel","ariaDescribedby","onBlur","other","control","field","jsxs","e"],"mappings":"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","file":"rhf-textarea.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cn } from \"@/utils/index\"\nimport { TextareaProps } from \"./textarea.types\"\n\n/**\n * Textarea component for creating accessible text areas.\n * Built on top of shadcn/ui's Textarea component.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-textarea--docs\n *\n * @example\n * ```tsx\n * <Textarea placeholder=\"Enter text\" />\n * ```\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, autoResize = false, ...props }, ref) => {\n const internalRef = React.useRef<HTMLTextAreaElement>(null)\n\n React.useEffect(() => {\n if (!autoResize || !internalRef.current) return\n\n const textarea = internalRef.current\n const resizeTextarea = () => {\n textarea.style.height = \"auto\"\n textarea.style.height = `${textarea.scrollHeight}px`\n }\n\n textarea.addEventListener(\"input\", resizeTextarea)\n resizeTextarea() // Initial resize\n\n return () => textarea.removeEventListener(\"input\", resizeTextarea)\n }, [autoResize])\n\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/utils/index\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nexport interface LabelProps\n extends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n VariantProps<typeof labelVariants> {}\n\n/**\n * Label component for creating accessible labels.\n * Built on top of Radix UI's Label primitive.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-label--docs\n *\n */\nconst Label = React.forwardRef<React.ElementRef<typeof LabelPrimitive.Root>, LabelProps>(\n ({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n )\n)\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n type ControllerProps,\n type FieldPath,\n type FieldValues\n} from \"react-hook-form\"\n\nimport { cn } from \"@/utils/cn\"\nimport { Label } from \"@/components/atoms/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue)\n\nconst FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n )\n }\n)\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-sm font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField\n}\n","import * as React from \"react\"\nimport { useFormContext, type FieldValues, type FieldPath } from \"react-hook-form\"\nimport { Textarea } from \"@/components/atoms/textarea\"\nimport { cn } from \"@/utils/cn\"\nimport {\n FormControl,\n FormItem,\n FormMessage,\n FormLabel,\n FormDescription,\n FormField\n} from \"@/components/rhf/form\"\nimport { type RHFTextareaProps } from \"./rhf-textarea.types\"\n\n// ----------------------------------------------------------------------\n\n/**\n * A textarea component that integrates with React Hook Form.\n * Provides form validation, error handling, and accessibility features.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/molecules-rhf-rhftextarea--docs\n *\n * @example\n * ```tsx\n * <Form>\n * <RHFTextarea name=\"description\" label=\"Description\" />\n * </Form>\n * ```\n */\nexport function RHFTextarea<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n name,\n label,\n description,\n className,\n warningText,\n required,\n disabled,\n readOnly,\n placeholder,\n autoResize,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedby,\n onBlur,\n ...other\n}: RHFTextareaProps<TFieldValues, TName>) {\n const { control } = useFormContext<TFieldValues>()\n\n return (\n <FormField\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormItem>\n {label && (\n <FormLabel>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FormLabel>\n )}\n <FormControl>\n <Textarea\n {...field}\n value={field.value}\n onChange={(e) => {\n field.onChange(e.target.value)\n }}\n onBlur={(e) => {\n // trim if a string\n if (typeof field.value === \"string\") {\n field.onChange(field.value.trim())\n }\n field.onBlur() // pass to react-hook-form\n onBlur?.(e) // pass to wrapper\n }}\n className={cn(\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n placeholder={placeholder}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n aria-invalid={!!error}\n aria-required={required}\n autoResize={autoResize}\n {...other}\n />\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {error && <FormMessage>{error.message}</FormMessage>}\n {!error && warningText && (\n <p className=\"text-sm text-yellow-600 dark:text-yellow-500\" role=\"alert\">\n {warningText}\n </p>\n )}\n </FormItem>\n )}\n />\n )\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {useFormContext,Controller}from'react-hook-form';import*as s from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';import {Slot}from'@radix-ui/react-slot';import*as C from'@radix-ui/react-label';import {cva}from'class-variance-authority';function i(...e){return twMerge(clsx(e))}var v=s.forwardRef(({className:e,autoResize:t=false,...r},a)=>{let m=s.useRef(null);return s.useEffect(()=>{if(!t||!m.current)return;let o=m.current,l=()=>{o.style.height="auto",o.style.height=`${o.scrollHeight}px`;};return o.addEventListener("input",l),l(),()=>o.removeEventListener("input",l)},[t]),jsx("textarea",{className:i("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:a,...r})});v.displayName="Textarea";var z=cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),f=s.forwardRef(({className:e,...t},r)=>jsx(C.Root,{ref:r,className:i(z(),e),...t}));f.displayName=C.Root.displayName;var L=s.createContext({}),g=({...e})=>jsx(L.Provider,{value:{name:e.name},children:jsx(Controller,{...e})}),u=()=>{let e=s.useContext(L),t=s.useContext(h),{getFieldState:r,formState:a}=useFormContext(),m=r(e.name,a);if(!e)throw new Error("useFormField should be used within <FormField>");let{id:o}=t;return {id:o,name:e.name,formItemId:`${o}-form-item`,formDescriptionId:`${o}-form-item-description`,formMessageId:`${o}-form-item-message`,...m}},h=s.createContext({}),x=s.forwardRef(({className:e,...t},r)=>{let a=s.useId();return jsx(h.Provider,{value:{id:a},children:jsx("div",{ref:r,className:i("space-y-2",e),...t})})});x.displayName="FormItem";var R=s.forwardRef(({className:e,...t},r)=>{let{error:a,formItemId:m}=u();return jsx(f,{ref:r,className:i(a&&"text-destructive",e),htmlFor:m,...t})});R.displayName="FormLabel";var b=s.forwardRef(({...e},t)=>{let{error:r,formItemId:a,formDescriptionId:m,formMessageId:o}=u();return jsx(Slot,{ref:t,id:a,"aria-describedby":r?`${m} ${o}`:`${m}`,"aria-invalid":!!r,...e})});b.displayName="FormControl";var P=s.forwardRef(({className:e,...t},r)=>{let{formDescriptionId:a}=u();return jsx("p",{ref:r,id:a,className:i("text-sm text-muted-foreground",e),...t})});P.displayName="FormDescription";var y=s.forwardRef(({className:e,children:t,...r},a)=>{let{error:m,formMessageId:o}=u(),l=m?String(m?.message??""):t;return l?jsx("p",{ref:a,id:o,className:i("text-sm font-medium text-destructive",e),...r,children:l}):null});y.displayName="FormMessage";function Te({name:e,label:t,description:r,className:a,warningText:m,required:o,disabled:l,readOnly:N,placeholder:M,autoResize:w,"aria-label":E,"aria-describedby":H,onBlur:D,...S}){let{control:$}=useFormContext();return jsx(g,{name:e,control:$,render:({field:d,fieldState:{error:F}})=>jsxs(x,{children:[t&&jsxs(R,{children:[t,o&&jsx("span",{className:"text-destructive ml-1",children:"*"})]}),jsx(b,{children:jsx(v,{...d,value:d.value,onChange:T=>{d.onChange(T.target.value);},onBlur:T=>{typeof d.value=="string"&&d.onChange(d.value.trim()),d.onBlur(),D?.(T);},className:i(F&&"border-destructive focus-visible:ring-destructive",a),disabled:l,readOnly:N,required:o,placeholder:M,"aria-label":E,"aria-describedby":H,"aria-invalid":!!F,"aria-required":o,autoResize:w,...S})}),r&&jsx(P,{children:r}),F&&jsx(y,{children:F.message}),!F&&m&&jsx("p",{className:"text-sm text-yellow-600 dark:text-yellow-500",role:"alert",children:m})]})})}export{Te as RHFTextarea};//# sourceMappingURL=rhf-textarea.mjs.map
2
+ //# sourceMappingURL=rhf-textarea.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/components/atoms/textarea/textarea.tsx","../../src/components/atoms/label/label.tsx","../../src/components/rhf/form/form.tsx","../../src/components/rhf/rhf-textarea/rhf-textarea.tsx"],"names":["cn","inputs","twMerge","clsx","Textarea","c","className","autoResize","props","ref","internalRef","textarea","resizeTextarea","jsx","labelVariants","cva","Label","V","FormFieldContext","FormField","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","formState","useFormContext","fieldState","id","FormItem","FormLabel","error","formItemId","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","children","body","RHFTextarea","name","label","description","warningText","required","disabled","readOnly","placeholder","ariaLabel","ariaDescribedby","onBlur","other","control","field","jsxs","e"],"mappings":"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","file":"rhf-textarea.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cn } from \"@/utils/index\"\nimport { TextareaProps } from \"./textarea.types\"\n\n/**\n * Textarea component for creating accessible text areas.\n * Built on top of shadcn/ui's Textarea component.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-textarea--docs\n *\n * @example\n * ```tsx\n * <Textarea placeholder=\"Enter text\" />\n * ```\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, autoResize = false, ...props }, ref) => {\n const internalRef = React.useRef<HTMLTextAreaElement>(null)\n\n React.useEffect(() => {\n if (!autoResize || !internalRef.current) return\n\n const textarea = internalRef.current\n const resizeTextarea = () => {\n textarea.style.height = \"auto\"\n textarea.style.height = `${textarea.scrollHeight}px`\n }\n\n textarea.addEventListener(\"input\", resizeTextarea)\n resizeTextarea() // Initial resize\n\n return () => textarea.removeEventListener(\"input\", resizeTextarea)\n }, [autoResize])\n\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/utils/index\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nexport interface LabelProps\n extends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n VariantProps<typeof labelVariants> {}\n\n/**\n * Label component for creating accessible labels.\n * Built on top of Radix UI's Label primitive.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-label--docs\n *\n */\nconst Label = React.forwardRef<React.ElementRef<typeof LabelPrimitive.Root>, LabelProps>(\n ({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n )\n)\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n type ControllerProps,\n type FieldPath,\n type FieldValues\n} from \"react-hook-form\"\n\nimport { cn } from \"@/utils/cn\"\nimport { Label } from \"@/components/atoms/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue)\n\nconst FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n )\n }\n)\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-sm font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField\n}\n","import * as React from \"react\"\nimport { useFormContext, type FieldValues, type FieldPath } from \"react-hook-form\"\nimport { Textarea } from \"@/components/atoms/textarea\"\nimport { cn } from \"@/utils/cn\"\nimport {\n FormControl,\n FormItem,\n FormMessage,\n FormLabel,\n FormDescription,\n FormField\n} from \"@/components/rhf/form\"\nimport { type RHFTextareaProps } from \"./rhf-textarea.types\"\n\n// ----------------------------------------------------------------------\n\n/**\n * A textarea component that integrates with React Hook Form.\n * Provides form validation, error handling, and accessibility features.\n *\n * @url https://sergii-melnykov.github.io/ui/?path=/docs/molecules-rhf-rhftextarea--docs\n *\n * @example\n * ```tsx\n * <Form>\n * <RHFTextarea name=\"description\" label=\"Description\" />\n * </Form>\n * ```\n */\nexport function RHFTextarea<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n name,\n label,\n description,\n className,\n warningText,\n required,\n disabled,\n readOnly,\n placeholder,\n autoResize,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedby,\n onBlur,\n ...other\n}: RHFTextareaProps<TFieldValues, TName>) {\n const { control } = useFormContext<TFieldValues>()\n\n return (\n <FormField\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FormItem>\n {label && (\n <FormLabel>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </FormLabel>\n )}\n <FormControl>\n <Textarea\n {...field}\n value={field.value}\n onChange={(e) => {\n field.onChange(e.target.value)\n }}\n onBlur={(e) => {\n // trim if a string\n if (typeof field.value === \"string\") {\n field.onChange(field.value.trim())\n }\n field.onBlur() // pass to react-hook-form\n onBlur?.(e) // pass to wrapper\n }}\n className={cn(\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n placeholder={placeholder}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n aria-invalid={!!error}\n aria-required={required}\n autoResize={autoResize}\n {...other}\n />\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {error && <FormMessage>{error.message}</FormMessage>}\n {!error && warningText && (\n <p className=\"text-sm text-yellow-600 dark:text-yellow-500\" role=\"alert\">\n {warningText}\n </p>\n )}\n </FormItem>\n )}\n />\n )\n}\n"]}
package/dist/rhf.d.mts CHANGED
@@ -3,15 +3,21 @@ import * as react_hook_form from 'react-hook-form';
3
3
  import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
4
4
  import * as React from 'react';
5
5
  import { TextareaHTMLAttributes } from 'react';
6
- import { I as Input, C as Checkbox, S as Switch, R as RadioGroup } from './checkbox-DxgDKaHx.mjs';
6
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
7
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
8
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
7
9
  import * as _radix_ui_react_slot from '@radix-ui/react-slot';
8
10
  import { Slot } from '@radix-ui/react-slot';
9
11
  import * as LabelPrimitive from '@radix-ui/react-label';
10
- import '@radix-ui/react-switch';
11
- import 'class-variance-authority/types';
12
- import 'class-variance-authority';
13
- import '@radix-ui/react-radio-group';
14
- import '@radix-ui/react-checkbox';
12
+
13
+ /**
14
+ * Input component for creating accessible input fields.
15
+ * Built on top of shadcn/ui's Input component.
16
+ *
17
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-input--docs
18
+ *
19
+ */
20
+ declare const Input: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
15
21
 
16
22
  interface RHFTextFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<React.ComponentProps<typeof Input>, "name"> {
17
23
  /** The name of the field in the form */
@@ -114,6 +120,21 @@ interface RHFTextareaProps<TFieldValues extends FieldValues = FieldValues, TName
114
120
  */
115
121
  declare function RHFTextarea<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, placeholder, autoResize, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, onBlur, ...other }: RHFTextareaProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
116
122
 
123
+ /**
124
+ * Checkbox component built on top of Radix UI's Checkbox primitive.
125
+ * Provides a customizable checkbox input with proper accessibility and keyboard navigation.
126
+ *
127
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-checkbox--docs
128
+ *
129
+ * @example
130
+ * ```tsx
131
+ * <Checkbox id="terms" name="terms" />
132
+ * <label htmlFor="terms">Accept terms and conditions</label>
133
+ * ```
134
+ */
135
+
136
+ declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
137
+
117
138
  interface RHFCheckboxProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<React.ComponentProps<typeof Checkbox>, "name"> {
118
139
  /** The name of the field in the form */
119
140
  name: TName;
@@ -150,6 +171,21 @@ interface RHFCheckboxProps<TFieldValues extends FieldValues = FieldValues, TName
150
171
  */
151
172
  declare function RHFCheckbox<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, ...other }: RHFCheckboxProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
152
173
 
174
+ /**
175
+ * Switch component that provides a toggle input control.
176
+ * Built on top of Radix UI's Switch primitive.
177
+ *
178
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-switch--docs
179
+ *
180
+ * @example
181
+ * ```tsx
182
+ * <Switch />
183
+ * <Switch defaultChecked />
184
+ * <Switch disabled />
185
+ * ```
186
+ */
187
+ declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
188
+
153
189
  interface RHFSwitchProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<React.ComponentProps<typeof Switch>, "name"> {
154
190
  /** The name of the field in the form */
155
191
  name: TName;
@@ -186,6 +222,22 @@ interface RHFSwitchProps<TFieldValues extends FieldValues = FieldValues, TName e
186
222
  */
187
223
  declare function RHFSwitch<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, ...other }: RHFSwitchProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
188
224
 
225
+ /**
226
+ * RadioGroup component that allows users to select a single option from a list.
227
+ * Built on top of Radix UI's RadioGroup primitive.
228
+ *
229
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-radio-group--docs
230
+ *
231
+ * @example
232
+ * ```tsx
233
+ * <RadioGroup defaultValue="option-1">
234
+ * <RadioGroupItem value="option-1">Option 1</RadioGroupItem>
235
+ * <RadioGroupItem value="option-2">Option 2</RadioGroupItem>
236
+ * </RadioGroup>
237
+ * ```
238
+ */
239
+ declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
240
+
189
241
  interface RHFRadioGroupOption {
190
242
  label: string;
191
243
  id: string;
@@ -405,4 +457,158 @@ type FormItemContextValue = {
405
457
  id: string;
406
458
  };
407
459
 
408
- export { Form, FormControl, type FormControlProps, FormDescription, type FormDescriptionProps, FormField, type FormFieldContextValue, type FormFieldProps, FormItem, type FormItemContextValue, type FormItemProps, FormLabel, type FormLabelProps, FormMessage, type FormMessageProps, type FormProps, RHFCheckbox, RHFRadioButtonGroup, type RHFRadioButtonGroupOption, type RHFRadioButtonGroupProps, RHFRadioGroup, RHFSwitch, RHFTextField, RHFTextarea, useFormField };
460
+ type SelectOption = {
461
+ id: string;
462
+ label: string;
463
+ startIcon?: React.ReactNode;
464
+ endIcon?: React.ReactNode;
465
+ className?: string;
466
+ disabled?: boolean;
467
+ };
468
+ type SelectProps = {
469
+ /** Whether the select is searchable */
470
+ searchable?: boolean;
471
+ /** Whether the select should take up the full width of its container */
472
+ fullWidth?: boolean;
473
+ /** Currently selected value */
474
+ value: string;
475
+ /** Array of options to display in the select */
476
+ options: SelectOption[];
477
+ /** Callback fired when the value changes */
478
+ onChange: (value: string) => void;
479
+ /** Render a custom CommandList for the select, if not provided, the select will render a default CommandList with the options */
480
+ renderCommandList?: (options: SelectOption[]) => React.ReactNode;
481
+ /** Placeholder text to show when no value is selected */
482
+ placeholder?: string;
483
+ /** Whether the select is disabled */
484
+ disabled?: boolean;
485
+ /** Whether the select is required */
486
+ required?: boolean;
487
+ /** Error message to display */
488
+ error?: string;
489
+ /** Additional class name for the select */
490
+ className?: string;
491
+ /** ID for the select element */
492
+ id?: string;
493
+ };
494
+
495
+ type MultiSelectOption = {
496
+ id: string;
497
+ label: string;
498
+ startIcon?: React.ReactNode;
499
+ endIcon?: React.ReactNode;
500
+ className?: string;
501
+ disabled?: boolean;
502
+ };
503
+ type MultiSelectProps = {
504
+ /** Whether the select is searchable */
505
+ searchable?: boolean;
506
+ /** Whether the select should take up the full width of its container */
507
+ fullWidth?: boolean;
508
+ /** Array of options to display in the select */
509
+ options: MultiSelectOption[];
510
+ /** Currently selected values */
511
+ value: string[];
512
+ /** Callback fired when the values change */
513
+ onChange: (value: string[]) => void;
514
+ /** Render a custom CommandList for the select, if not provided, the select will render a default CommandList with the options */
515
+ renderCommandList?: (options: MultiSelectOption[]) => React.ReactNode;
516
+ /** Placeholder text to show when no value is selected */
517
+ placeholder?: string;
518
+ /** Whether the select is disabled */
519
+ disabled?: boolean;
520
+ /** Whether the select is required */
521
+ required?: boolean;
522
+ /** Error message to display */
523
+ error?: string;
524
+ /** Additional class name for the select */
525
+ className?: string;
526
+ /** ID for the select element */
527
+ id?: string;
528
+ /** Maximum number of selections allowed */
529
+ maxSelections?: number;
530
+ /** Whether to show the select all option */
531
+ showSelectAll?: boolean;
532
+ };
533
+
534
+ interface RHFMultiSelectProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<MultiSelectProps, "name" | "value" | "onChange"> {
535
+ /** The name of the field in the form */
536
+ name: TName;
537
+ /** Optional label for the field */
538
+ label?: string;
539
+ /** Optional description text below the field */
540
+ description?: string;
541
+ /** Optional warning text to display */
542
+ warningText?: string;
543
+ /** Whether the field is read-only */
544
+ readOnly?: boolean;
545
+ /** Optional aria-label for accessibility */
546
+ "aria-label"?: string;
547
+ /** Optional aria-describedby for accessibility */
548
+ "aria-describedby"?: string;
549
+ }
550
+
551
+ /**
552
+ * A multi-select component that integrates with React Hook Form.
553
+ * Provides form validation, error handling, and accessibility features.
554
+ *
555
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/molecules-rhf-rhfmultiselect--docs
556
+ *
557
+ * @example
558
+ * ```tsx
559
+ * <Form>
560
+ * <RHFMultiSelect
561
+ * name="countries"
562
+ * label="Countries"
563
+ * options={[
564
+ * { id: "us", label: "United States" },
565
+ * { id: "ca", label: "Canada" }
566
+ * ]}
567
+ *
568
+ * />
569
+ * </Form>
570
+ * ```
571
+ */
572
+ declare function RHFMultiSelect<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, placeholder, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, options, ...other }: RHFMultiSelectProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
573
+
574
+ type RHFSelectOption = SelectOption;
575
+ interface RHFSelectProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<SelectProps, "name" | "value" | "onChange"> {
576
+ /** The name of the field in the form */
577
+ name: TName;
578
+ /** Optional label for the field */
579
+ label?: string;
580
+ /** Optional description text below the field */
581
+ description?: string;
582
+ /** Optional warning text to display */
583
+ warningText?: string;
584
+ /** Whether the field is read-only */
585
+ readOnly?: boolean;
586
+ /** Optional aria-label for accessibility */
587
+ "aria-label"?: string;
588
+ /** Optional aria-describedby for accessibility */
589
+ "aria-describedby"?: string;
590
+ }
591
+
592
+ /**
593
+ * A select component that integrates with React Hook Form.
594
+ * Provides form validation, error handling, and accessibility features.
595
+ *
596
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/molecules-rhf-rhfselect--docs
597
+ *
598
+ * @example
599
+ * ```tsx
600
+ * <Form>
601
+ * <RHFSelect
602
+ * name="country"
603
+ * label="Country"
604
+ * options={[
605
+ * { id: "us", label: "United States" },
606
+ * { id: "ca", label: "Canada" }
607
+ * ]}
608
+ * />
609
+ * </Form>
610
+ * ```
611
+ */
612
+ declare function RHFSelect<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, placeholder, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, options, ...other }: RHFSelectProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
613
+
614
+ export { Form, FormControl, type FormControlProps, FormDescription, type FormDescriptionProps, FormField, type FormFieldContextValue, type FormFieldProps, FormItem, type FormItemContextValue, type FormItemProps, FormLabel, type FormLabelProps, FormMessage, type FormMessageProps, type FormProps, RHFCheckbox, RHFMultiSelect, RHFRadioButtonGroup, type RHFRadioButtonGroupOption, type RHFRadioButtonGroupProps, RHFRadioGroup, RHFSelect, type RHFSelectOption, type RHFSelectProps, RHFSwitch, RHFTextField, RHFTextarea, useFormField };
package/dist/rhf.d.ts CHANGED
@@ -3,15 +3,21 @@ import * as react_hook_form from 'react-hook-form';
3
3
  import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
4
4
  import * as React from 'react';
5
5
  import { TextareaHTMLAttributes } from 'react';
6
- import { I as Input, C as Checkbox, S as Switch, R as RadioGroup } from './checkbox-DxgDKaHx.js';
6
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
7
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
8
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
7
9
  import * as _radix_ui_react_slot from '@radix-ui/react-slot';
8
10
  import { Slot } from '@radix-ui/react-slot';
9
11
  import * as LabelPrimitive from '@radix-ui/react-label';
10
- import '@radix-ui/react-switch';
11
- import 'class-variance-authority/types';
12
- import 'class-variance-authority';
13
- import '@radix-ui/react-radio-group';
14
- import '@radix-ui/react-checkbox';
12
+
13
+ /**
14
+ * Input component for creating accessible input fields.
15
+ * Built on top of shadcn/ui's Input component.
16
+ *
17
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-input--docs
18
+ *
19
+ */
20
+ declare const Input: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
15
21
 
16
22
  interface RHFTextFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<React.ComponentProps<typeof Input>, "name"> {
17
23
  /** The name of the field in the form */
@@ -114,6 +120,21 @@ interface RHFTextareaProps<TFieldValues extends FieldValues = FieldValues, TName
114
120
  */
115
121
  declare function RHFTextarea<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, placeholder, autoResize, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, onBlur, ...other }: RHFTextareaProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
116
122
 
123
+ /**
124
+ * Checkbox component built on top of Radix UI's Checkbox primitive.
125
+ * Provides a customizable checkbox input with proper accessibility and keyboard navigation.
126
+ *
127
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-checkbox--docs
128
+ *
129
+ * @example
130
+ * ```tsx
131
+ * <Checkbox id="terms" name="terms" />
132
+ * <label htmlFor="terms">Accept terms and conditions</label>
133
+ * ```
134
+ */
135
+
136
+ declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
137
+
117
138
  interface RHFCheckboxProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<React.ComponentProps<typeof Checkbox>, "name"> {
118
139
  /** The name of the field in the form */
119
140
  name: TName;
@@ -150,6 +171,21 @@ interface RHFCheckboxProps<TFieldValues extends FieldValues = FieldValues, TName
150
171
  */
151
172
  declare function RHFCheckbox<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, ...other }: RHFCheckboxProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
152
173
 
174
+ /**
175
+ * Switch component that provides a toggle input control.
176
+ * Built on top of Radix UI's Switch primitive.
177
+ *
178
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-switch--docs
179
+ *
180
+ * @example
181
+ * ```tsx
182
+ * <Switch />
183
+ * <Switch defaultChecked />
184
+ * <Switch disabled />
185
+ * ```
186
+ */
187
+ declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
188
+
153
189
  interface RHFSwitchProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<React.ComponentProps<typeof Switch>, "name"> {
154
190
  /** The name of the field in the form */
155
191
  name: TName;
@@ -186,6 +222,22 @@ interface RHFSwitchProps<TFieldValues extends FieldValues = FieldValues, TName e
186
222
  */
187
223
  declare function RHFSwitch<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, ...other }: RHFSwitchProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
188
224
 
225
+ /**
226
+ * RadioGroup component that allows users to select a single option from a list.
227
+ * Built on top of Radix UI's RadioGroup primitive.
228
+ *
229
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/atoms-radio-group--docs
230
+ *
231
+ * @example
232
+ * ```tsx
233
+ * <RadioGroup defaultValue="option-1">
234
+ * <RadioGroupItem value="option-1">Option 1</RadioGroupItem>
235
+ * <RadioGroupItem value="option-2">Option 2</RadioGroupItem>
236
+ * </RadioGroup>
237
+ * ```
238
+ */
239
+ declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
240
+
189
241
  interface RHFRadioGroupOption {
190
242
  label: string;
191
243
  id: string;
@@ -405,4 +457,158 @@ type FormItemContextValue = {
405
457
  id: string;
406
458
  };
407
459
 
408
- export { Form, FormControl, type FormControlProps, FormDescription, type FormDescriptionProps, FormField, type FormFieldContextValue, type FormFieldProps, FormItem, type FormItemContextValue, type FormItemProps, FormLabel, type FormLabelProps, FormMessage, type FormMessageProps, type FormProps, RHFCheckbox, RHFRadioButtonGroup, type RHFRadioButtonGroupOption, type RHFRadioButtonGroupProps, RHFRadioGroup, RHFSwitch, RHFTextField, RHFTextarea, useFormField };
460
+ type SelectOption = {
461
+ id: string;
462
+ label: string;
463
+ startIcon?: React.ReactNode;
464
+ endIcon?: React.ReactNode;
465
+ className?: string;
466
+ disabled?: boolean;
467
+ };
468
+ type SelectProps = {
469
+ /** Whether the select is searchable */
470
+ searchable?: boolean;
471
+ /** Whether the select should take up the full width of its container */
472
+ fullWidth?: boolean;
473
+ /** Currently selected value */
474
+ value: string;
475
+ /** Array of options to display in the select */
476
+ options: SelectOption[];
477
+ /** Callback fired when the value changes */
478
+ onChange: (value: string) => void;
479
+ /** Render a custom CommandList for the select, if not provided, the select will render a default CommandList with the options */
480
+ renderCommandList?: (options: SelectOption[]) => React.ReactNode;
481
+ /** Placeholder text to show when no value is selected */
482
+ placeholder?: string;
483
+ /** Whether the select is disabled */
484
+ disabled?: boolean;
485
+ /** Whether the select is required */
486
+ required?: boolean;
487
+ /** Error message to display */
488
+ error?: string;
489
+ /** Additional class name for the select */
490
+ className?: string;
491
+ /** ID for the select element */
492
+ id?: string;
493
+ };
494
+
495
+ type MultiSelectOption = {
496
+ id: string;
497
+ label: string;
498
+ startIcon?: React.ReactNode;
499
+ endIcon?: React.ReactNode;
500
+ className?: string;
501
+ disabled?: boolean;
502
+ };
503
+ type MultiSelectProps = {
504
+ /** Whether the select is searchable */
505
+ searchable?: boolean;
506
+ /** Whether the select should take up the full width of its container */
507
+ fullWidth?: boolean;
508
+ /** Array of options to display in the select */
509
+ options: MultiSelectOption[];
510
+ /** Currently selected values */
511
+ value: string[];
512
+ /** Callback fired when the values change */
513
+ onChange: (value: string[]) => void;
514
+ /** Render a custom CommandList for the select, if not provided, the select will render a default CommandList with the options */
515
+ renderCommandList?: (options: MultiSelectOption[]) => React.ReactNode;
516
+ /** Placeholder text to show when no value is selected */
517
+ placeholder?: string;
518
+ /** Whether the select is disabled */
519
+ disabled?: boolean;
520
+ /** Whether the select is required */
521
+ required?: boolean;
522
+ /** Error message to display */
523
+ error?: string;
524
+ /** Additional class name for the select */
525
+ className?: string;
526
+ /** ID for the select element */
527
+ id?: string;
528
+ /** Maximum number of selections allowed */
529
+ maxSelections?: number;
530
+ /** Whether to show the select all option */
531
+ showSelectAll?: boolean;
532
+ };
533
+
534
+ interface RHFMultiSelectProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<MultiSelectProps, "name" | "value" | "onChange"> {
535
+ /** The name of the field in the form */
536
+ name: TName;
537
+ /** Optional label for the field */
538
+ label?: string;
539
+ /** Optional description text below the field */
540
+ description?: string;
541
+ /** Optional warning text to display */
542
+ warningText?: string;
543
+ /** Whether the field is read-only */
544
+ readOnly?: boolean;
545
+ /** Optional aria-label for accessibility */
546
+ "aria-label"?: string;
547
+ /** Optional aria-describedby for accessibility */
548
+ "aria-describedby"?: string;
549
+ }
550
+
551
+ /**
552
+ * A multi-select component that integrates with React Hook Form.
553
+ * Provides form validation, error handling, and accessibility features.
554
+ *
555
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/molecules-rhf-rhfmultiselect--docs
556
+ *
557
+ * @example
558
+ * ```tsx
559
+ * <Form>
560
+ * <RHFMultiSelect
561
+ * name="countries"
562
+ * label="Countries"
563
+ * options={[
564
+ * { id: "us", label: "United States" },
565
+ * { id: "ca", label: "Canada" }
566
+ * ]}
567
+ *
568
+ * />
569
+ * </Form>
570
+ * ```
571
+ */
572
+ declare function RHFMultiSelect<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, placeholder, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, options, ...other }: RHFMultiSelectProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
573
+
574
+ type RHFSelectOption = SelectOption;
575
+ interface RHFSelectProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<SelectProps, "name" | "value" | "onChange"> {
576
+ /** The name of the field in the form */
577
+ name: TName;
578
+ /** Optional label for the field */
579
+ label?: string;
580
+ /** Optional description text below the field */
581
+ description?: string;
582
+ /** Optional warning text to display */
583
+ warningText?: string;
584
+ /** Whether the field is read-only */
585
+ readOnly?: boolean;
586
+ /** Optional aria-label for accessibility */
587
+ "aria-label"?: string;
588
+ /** Optional aria-describedby for accessibility */
589
+ "aria-describedby"?: string;
590
+ }
591
+
592
+ /**
593
+ * A select component that integrates with React Hook Form.
594
+ * Provides form validation, error handling, and accessibility features.
595
+ *
596
+ * @url https://sergii-melnykov.github.io/ui/?path=/docs/molecules-rhf-rhfselect--docs
597
+ *
598
+ * @example
599
+ * ```tsx
600
+ * <Form>
601
+ * <RHFSelect
602
+ * name="country"
603
+ * label="Country"
604
+ * options={[
605
+ * { id: "us", label: "United States" },
606
+ * { id: "ca", label: "Canada" }
607
+ * ]}
608
+ * />
609
+ * </Form>
610
+ * ```
611
+ */
612
+ declare function RHFSelect<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, description, className, warningText, required, disabled, readOnly, placeholder, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, options, ...other }: RHFSelectProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
613
+
614
+ export { Form, FormControl, type FormControlProps, FormDescription, type FormDescriptionProps, FormField, type FormFieldContextValue, type FormFieldProps, FormItem, type FormItemContextValue, type FormItemProps, FormLabel, type FormLabelProps, FormMessage, type FormMessageProps, type FormProps, RHFCheckbox, RHFMultiSelect, RHFRadioButtonGroup, type RHFRadioButtonGroupOption, type RHFRadioButtonGroupProps, RHFRadioGroup, RHFSelect, type RHFSelectOption, type RHFSelectProps, RHFSwitch, RHFTextField, RHFTextarea, useFormField };