@bigbinary/neeto-atoms 1.0.8 → 1.0.10

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 (660) hide show
  1. package/dist/Accordion-BzfsJePA.js +22 -0
  2. package/dist/Accordion-BzfsJePA.js.map +1 -0
  3. package/dist/Alert-D_FV8xxo.js +65 -0
  4. package/dist/Alert-D_FV8xxo.js.map +1 -0
  5. package/dist/Avatar-D5YGlXVF.js +50 -0
  6. package/dist/Avatar-D5YGlXVF.js.map +1 -0
  7. package/dist/Badge-8FkscqDt.js +59 -0
  8. package/dist/Badge-8FkscqDt.js.map +1 -0
  9. package/dist/Button-Q7MPG6ph.js +92 -0
  10. package/dist/Button-Q7MPG6ph.js.map +1 -0
  11. package/dist/Calendar-pDD7nRF-.js +8025 -0
  12. package/dist/Calendar-pDD7nRF-.js.map +1 -0
  13. package/dist/Callout-B0w4GQtx.js +65 -0
  14. package/dist/Callout-B0w4GQtx.js.map +1 -0
  15. package/dist/Checkbox-zCxgcZiC.js +24 -0
  16. package/dist/Checkbox-zCxgcZiC.js.map +1 -0
  17. package/dist/ColorPicker-D-7QGnf9.js +277 -0
  18. package/dist/ColorPicker-D-7QGnf9.js.map +1 -0
  19. package/dist/{DataTable-BKe9K5XP.js → DataTable-DWR9gX9d.js} +11 -3
  20. package/dist/{DataTable-BKe9K5XP.js.map → DataTable-DWR9gX9d.js.map} +1 -1
  21. package/dist/DatePicker-COxwHPIZ.js +2960 -0
  22. package/dist/DatePicker-COxwHPIZ.js.map +1 -0
  23. package/dist/Dialog-BURSzxaP.js +61 -0
  24. package/dist/Dialog-BURSzxaP.js.map +1 -0
  25. package/dist/Empty-B2JwFmru.js +26 -0
  26. package/dist/Empty-B2JwFmru.js.map +1 -0
  27. package/dist/Input-C1gcv9o2.js +147 -0
  28. package/dist/Input-C1gcv9o2.js.map +1 -0
  29. package/dist/Kbd-EqbC0bua.js +36 -0
  30. package/dist/Kbd-EqbC0bua.js.map +1 -0
  31. package/dist/Label-BVy4hy9Z.js +58 -0
  32. package/dist/Label-BVy4hy9Z.js.map +1 -0
  33. package/dist/MultiEmailInput-SCTYovtX.js +139 -0
  34. package/dist/MultiEmailInput-SCTYovtX.js.map +1 -0
  35. package/dist/Pagination-DSc9yXPy.js +61 -0
  36. package/dist/Pagination-DSc9yXPy.js.map +1 -0
  37. package/dist/Popover-BFMrtVPq.js +95 -0
  38. package/dist/Popover-BFMrtVPq.js.map +1 -0
  39. package/dist/Progress-B9NlUm6e.js +13 -0
  40. package/dist/Progress-B9NlUm6e.js.map +1 -0
  41. package/dist/RadioGroup-BNeYQAoT.js +34 -0
  42. package/dist/RadioGroup-BNeYQAoT.js.map +1 -0
  43. package/dist/Select-BGODpJGc.js +561 -0
  44. package/dist/Select-BGODpJGc.js.map +1 -0
  45. package/dist/{components/SelectFieldWrapper.js → SelectFieldWrapper-BJzq9aCY.js} +3 -11
  46. package/dist/SelectFieldWrapper-BJzq9aCY.js.map +1 -0
  47. package/dist/Sheet-QFC_mHyj.js +63 -0
  48. package/dist/Sheet-QFC_mHyj.js.map +1 -0
  49. package/dist/Slider-BCQXhs0Q.js +25 -0
  50. package/dist/Slider-BCQXhs0Q.js.map +1 -0
  51. package/dist/Spinner-C8HSac-2.js +17 -0
  52. package/dist/Spinner-C8HSac-2.js.map +1 -0
  53. package/dist/Stepper-BoGkmkY0.js +29 -0
  54. package/dist/Stepper-BoGkmkY0.js.map +1 -0
  55. package/dist/Switch-B83TGxJ_.js +20 -0
  56. package/dist/Switch-B83TGxJ_.js.map +1 -0
  57. package/dist/Tabs-DWfKnl3S.js +38 -0
  58. package/dist/Tabs-DWfKnl3S.js.map +1 -0
  59. package/dist/Textarea-C0z50h0N.js +73 -0
  60. package/dist/Textarea-C0z50h0N.js.map +1 -0
  61. package/dist/TimePicker-C4x62jI1.js +142 -0
  62. package/dist/TimePicker-C4x62jI1.js.map +1 -0
  63. package/dist/TimePickerPanel-CiF0RExY.js +126 -0
  64. package/dist/TimePickerPanel-CiF0RExY.js.map +1 -0
  65. package/dist/Toastr-DYqpSaMd.js +115 -0
  66. package/dist/Toastr-DYqpSaMd.js.map +1 -0
  67. package/dist/Tooltip-DhwIZnOU.js +80 -0
  68. package/dist/Tooltip-DhwIZnOU.js.map +1 -0
  69. package/dist/TranslationProvider-Ba9rn47H.js +96 -0
  70. package/dist/TranslationProvider-Ba9rn47H.js.map +1 -0
  71. package/dist/Tree-Dkr11OPy.js +7977 -0
  72. package/dist/Tree-Dkr11OPy.js.map +1 -0
  73. package/dist/TreeSelect-Cmc90YWJ.js +168 -0
  74. package/dist/TreeSelect-Cmc90YWJ.js.map +1 -0
  75. package/dist/Typography-D5TjXEfu.js +82 -0
  76. package/dist/Typography-D5TjXEfu.js.map +1 -0
  77. package/dist/cjs/Accordion-BX5I9ypV.js +28 -0
  78. package/dist/cjs/Accordion-BX5I9ypV.js.map +1 -0
  79. package/dist/cjs/Alert-BVvLyM_d.js +67 -0
  80. package/dist/cjs/Alert-BVvLyM_d.js.map +1 -0
  81. package/dist/cjs/Avatar-CNao5gvP.js +52 -0
  82. package/dist/cjs/Avatar-CNao5gvP.js.map +1 -0
  83. package/dist/cjs/Badge-STBHzYLs.js +61 -0
  84. package/dist/cjs/Badge-STBHzYLs.js.map +1 -0
  85. package/dist/cjs/Button-Bt_AElge.js +94 -0
  86. package/dist/cjs/Button-Bt_AElge.js.map +1 -0
  87. package/dist/cjs/Calendar-Nk76Y9yP.js +8066 -0
  88. package/dist/cjs/Calendar-Nk76Y9yP.js.map +1 -0
  89. package/dist/cjs/Callout-CS2U6pM7.js +67 -0
  90. package/dist/cjs/Callout-CS2U6pM7.js.map +1 -0
  91. package/dist/cjs/Checkbox-DOlS2oCD.js +26 -0
  92. package/dist/cjs/Checkbox-DOlS2oCD.js.map +1 -0
  93. package/dist/cjs/{ColorPicker-DN8aynGh.js → ColorPicker-DEELmqH8.js} +7 -10
  94. package/dist/cjs/ColorPicker-DEELmqH8.js.map +1 -0
  95. package/dist/cjs/{DataTable-BQt_mXDX.js → DataTable-CWs96k8n.js} +11 -3
  96. package/dist/cjs/{DataTable-BQt_mXDX.js.map → DataTable-CWs96k8n.js.map} +1 -1
  97. package/dist/cjs/DatePicker-DpijPndg.js +2962 -0
  98. package/dist/cjs/DatePicker-DpijPndg.js.map +1 -0
  99. package/dist/cjs/Dialog-CtI_yWsJ.js +63 -0
  100. package/dist/cjs/Dialog-CtI_yWsJ.js.map +1 -0
  101. package/dist/cjs/Empty-qzle6YvT.js +28 -0
  102. package/dist/cjs/Empty-qzle6YvT.js.map +1 -0
  103. package/dist/cjs/Input-pkugjUb0.js +149 -0
  104. package/dist/cjs/Input-pkugjUb0.js.map +1 -0
  105. package/dist/cjs/Kbd-DHirsI--.js +38 -0
  106. package/dist/cjs/Kbd-DHirsI--.js.map +1 -0
  107. package/dist/cjs/Label-DpyfZsiT.js +60 -0
  108. package/dist/cjs/Label-DpyfZsiT.js.map +1 -0
  109. package/dist/cjs/MultiEmailInput-l0_YVjbp.js +141 -0
  110. package/dist/cjs/MultiEmailInput-l0_YVjbp.js.map +1 -0
  111. package/dist/cjs/Pagination-Byzt9Kmj.js +63 -0
  112. package/dist/cjs/Pagination-Byzt9Kmj.js.map +1 -0
  113. package/dist/cjs/Popover-LIxANoTc.js +101 -0
  114. package/dist/cjs/Popover-LIxANoTc.js.map +1 -0
  115. package/dist/cjs/Progress-DoCxZ_ZH.js +15 -0
  116. package/dist/cjs/Progress-DoCxZ_ZH.js.map +1 -0
  117. package/dist/cjs/RadioGroup-1RAoe38m.js +36 -0
  118. package/dist/cjs/RadioGroup-1RAoe38m.js.map +1 -0
  119. package/dist/cjs/Select-DOPZHlqc.js +567 -0
  120. package/dist/cjs/Select-DOPZHlqc.js.map +1 -0
  121. package/dist/cjs/{components/SelectFieldWrapper.js → SelectFieldWrapper-DEA--2wj.js} +2 -10
  122. package/dist/cjs/SelectFieldWrapper-DEA--2wj.js.map +1 -0
  123. package/dist/cjs/Sheet-CIhtNCBV.js +65 -0
  124. package/dist/cjs/Sheet-CIhtNCBV.js.map +1 -0
  125. package/dist/cjs/Slider-jNUS9vt8.js +27 -0
  126. package/dist/cjs/Slider-jNUS9vt8.js.map +1 -0
  127. package/dist/cjs/Spinner-DQutDMQq.js +19 -0
  128. package/dist/cjs/Spinner-DQutDMQq.js.map +1 -0
  129. package/dist/cjs/Stepper-DCoLl2ZS.js +35 -0
  130. package/dist/cjs/Stepper-DCoLl2ZS.js.map +1 -0
  131. package/dist/cjs/Switch-CFf8DtB_.js +22 -0
  132. package/dist/cjs/Switch-CFf8DtB_.js.map +1 -0
  133. package/dist/cjs/Tabs-D2247rd7.js +40 -0
  134. package/dist/cjs/Tabs-D2247rd7.js.map +1 -0
  135. package/dist/cjs/Textarea-BfdlAJ59.js +75 -0
  136. package/dist/cjs/Textarea-BfdlAJ59.js.map +1 -0
  137. package/dist/cjs/TimePicker-Ba2FdT1O.js +144 -0
  138. package/dist/cjs/TimePicker-Ba2FdT1O.js.map +1 -0
  139. package/dist/cjs/TimePickerPanel-DGNr97cj.js +132 -0
  140. package/dist/cjs/TimePickerPanel-DGNr97cj.js.map +1 -0
  141. package/dist/cjs/Toastr-BGp7-kmf.js +117 -0
  142. package/dist/cjs/Toastr-BGp7-kmf.js.map +1 -0
  143. package/dist/cjs/Tooltip-CtxI7QBY.js +86 -0
  144. package/dist/cjs/Tooltip-CtxI7QBY.js.map +1 -0
  145. package/dist/cjs/TranslationProvider-DBZHXmzX.js +103 -0
  146. package/dist/cjs/TranslationProvider-DBZHXmzX.js.map +1 -0
  147. package/dist/cjs/Tree-qpOcsGL9.js +7985 -0
  148. package/dist/cjs/Tree-qpOcsGL9.js.map +1 -0
  149. package/dist/cjs/TreeSelect-DiIEdiAU.js +170 -0
  150. package/dist/cjs/TreeSelect-DiIEdiAU.js.map +1 -0
  151. package/dist/cjs/Typography-C3rGpmAY.js +104 -0
  152. package/dist/cjs/Typography-C3rGpmAY.js.map +1 -0
  153. package/dist/cjs/components/Accordion.js +6 -28
  154. package/dist/cjs/components/Accordion.js.map +1 -1
  155. package/dist/cjs/components/Alert.js +10 -67
  156. package/dist/cjs/components/Alert.js.map +1 -1
  157. package/dist/cjs/components/Avatar.js +32 -0
  158. package/dist/cjs/components/Avatar.js.map +1 -0
  159. package/dist/cjs/components/Badge.js +10 -62
  160. package/dist/cjs/components/Badge.js.map +1 -1
  161. package/dist/cjs/components/Button.js +11 -94
  162. package/dist/cjs/components/Button.js.map +1 -1
  163. package/dist/cjs/components/Callout.js +16 -0
  164. package/dist/cjs/components/Callout.js.map +1 -0
  165. package/dist/cjs/components/Checkbox.js +8 -24
  166. package/dist/cjs/components/Checkbox.js.map +1 -1
  167. package/dist/cjs/components/ColorPicker.js +3 -1
  168. package/dist/cjs/components/ColorPicker.js.map +1 -1
  169. package/dist/cjs/components/DataTable.js +3 -2
  170. package/dist/cjs/components/DataTable.js.map +1 -1
  171. package/dist/cjs/components/DatePicker.js +45 -0
  172. package/dist/cjs/components/DatePicker.js.map +1 -0
  173. package/dist/cjs/components/Dialog.js +9 -64
  174. package/dist/cjs/components/Dialog.js.map +1 -1
  175. package/dist/cjs/components/DropdownMenu.js +3 -1
  176. package/dist/cjs/components/DropdownMenu.js.map +1 -1
  177. package/dist/cjs/components/Empty.js +40 -0
  178. package/dist/cjs/components/Empty.js.map +1 -0
  179. package/dist/cjs/components/Input.js +8 -151
  180. package/dist/cjs/components/Input.js.map +1 -1
  181. package/dist/cjs/components/Kbd.js +30 -0
  182. package/dist/cjs/components/Kbd.js.map +1 -0
  183. package/dist/cjs/components/Label.js +43 -0
  184. package/dist/cjs/components/Label.js.map +1 -0
  185. package/dist/cjs/components/MultiEmailInput.js +20 -0
  186. package/dist/cjs/components/MultiEmailInput.js.map +1 -0
  187. package/dist/cjs/components/Pagination.js +21 -0
  188. package/dist/cjs/components/Pagination.js.map +1 -0
  189. package/dist/cjs/components/Popover.js +7 -103
  190. package/dist/cjs/components/Popover.js.map +1 -1
  191. package/dist/cjs/components/Progress.js +16 -0
  192. package/dist/cjs/components/Progress.js.map +1 -0
  193. package/dist/cjs/components/RadioGroup.js +9 -40
  194. package/dist/cjs/components/RadioGroup.js.map +1 -1
  195. package/dist/cjs/components/Select.js +33 -0
  196. package/dist/cjs/components/Select.js.map +1 -1
  197. package/dist/cjs/components/Sheet.js +9 -66
  198. package/dist/cjs/components/Sheet.js.map +1 -1
  199. package/dist/cjs/components/Slider.js +28 -0
  200. package/dist/cjs/components/Slider.js.map +1 -0
  201. package/dist/cjs/components/Spinner.js +15 -0
  202. package/dist/cjs/components/Spinner.js.map +1 -0
  203. package/dist/cjs/components/Stepper.js +13 -0
  204. package/dist/cjs/components/Stepper.js.map +1 -0
  205. package/dist/cjs/components/Switch.js +8 -20
  206. package/dist/cjs/components/Switch.js.map +1 -1
  207. package/dist/cjs/components/Tabs.js +8 -55
  208. package/dist/cjs/components/Tabs.js.map +1 -1
  209. package/dist/cjs/components/Textarea.js +8 -77
  210. package/dist/cjs/components/Textarea.js.map +1 -1
  211. package/dist/cjs/components/TimePicker.js +42 -0
  212. package/dist/cjs/components/TimePicker.js.map +1 -0
  213. package/dist/cjs/components/Toastr.js +4 -126
  214. package/dist/cjs/components/Toastr.js.map +1 -1
  215. package/dist/cjs/components/Tooltip.js +5 -85
  216. package/dist/cjs/components/Tooltip.js.map +1 -1
  217. package/dist/cjs/components/TranslationProvider.js +12 -0
  218. package/dist/cjs/components/TranslationProvider.js.map +1 -0
  219. package/dist/cjs/components/Tree.js +62 -0
  220. package/dist/cjs/components/Tree.js.map +1 -0
  221. package/dist/cjs/components/TreeSelect.js +45 -0
  222. package/dist/cjs/components/TreeSelect.js.map +1 -0
  223. package/dist/cjs/components/Typography.js +8 -98
  224. package/dist/cjs/components/Typography.js.map +1 -1
  225. package/dist/cjs/{dialog-CF2GBHOG.js → dialog-Bvyrshz3.js} +4 -2
  226. package/dist/cjs/dialog-Bvyrshz3.js.map +1 -0
  227. package/dist/cjs/formik/Button.js +45 -0
  228. package/dist/cjs/formik/Button.js.map +1 -0
  229. package/dist/cjs/formik/Checkbox.js +38 -0
  230. package/dist/cjs/formik/Checkbox.js.map +1 -0
  231. package/dist/cjs/formik/Form.js +116 -0
  232. package/dist/cjs/formik/Form.js.map +1 -0
  233. package/dist/cjs/formik/Input.js +38 -0
  234. package/dist/cjs/formik/Input.js.map +1 -0
  235. package/dist/cjs/formik/MultiEmailInput.js +31 -0
  236. package/dist/cjs/formik/MultiEmailInput.js.map +1 -0
  237. package/dist/cjs/formik/RadioGroup.js +44 -0
  238. package/dist/cjs/formik/RadioGroup.js.map +1 -0
  239. package/dist/cjs/formik/Select.js +61 -0
  240. package/dist/cjs/formik/Select.js.map +1 -0
  241. package/dist/cjs/formik/Slider.js +39 -0
  242. package/dist/cjs/formik/Slider.js.map +1 -0
  243. package/dist/cjs/formik/Switch.js +33 -0
  244. package/dist/cjs/formik/Switch.js.map +1 -0
  245. package/dist/cjs/formik/Textarea.js +34 -0
  246. package/dist/cjs/formik/Textarea.js.map +1 -0
  247. package/dist/cjs/formik/TreeSelect.js +56 -0
  248. package/dist/cjs/formik/TreeSelect.js.map +1 -0
  249. package/dist/cjs/formik/index.js +101 -0
  250. package/dist/cjs/formik/index.js.map +1 -0
  251. package/dist/cjs/index.js +332 -408
  252. package/dist/cjs/index.js.map +1 -1
  253. package/dist/cjs/primitives/Breadcrumb.js +5 -2
  254. package/dist/cjs/primitives/Breadcrumb.js.map +1 -1
  255. package/dist/cjs/primitives/Calendar.js +10 -8020
  256. package/dist/cjs/primitives/Calendar.js.map +1 -1
  257. package/dist/cjs/primitives/Carousel.js +5 -2
  258. package/dist/cjs/primitives/Carousel.js.map +1 -1
  259. package/dist/cjs/primitives/Chart.js +410 -207
  260. package/dist/cjs/primitives/Chart.js.map +1 -1
  261. package/dist/cjs/primitives/Combobox.js +783 -1096
  262. package/dist/cjs/primitives/Combobox.js.map +1 -1
  263. package/dist/cjs/primitives/Command.js +6 -2
  264. package/dist/cjs/primitives/Command.js.map +1 -1
  265. package/dist/cjs/primitives/Dialog.js +2 -1
  266. package/dist/cjs/primitives/Dialog.js.map +1 -1
  267. package/dist/cjs/primitives/Pagination.js +12 -6
  268. package/dist/cjs/primitives/Pagination.js.map +1 -1
  269. package/dist/cjs/primitives/Resizable.js +799 -778
  270. package/dist/cjs/primitives/Resizable.js.map +1 -1
  271. package/dist/cjs/primitives/ScrollArea.js +10 -10
  272. package/dist/cjs/primitives/Select.js +77 -77
  273. package/dist/cjs/primitives/Sheet.js +2 -1
  274. package/dist/cjs/primitives/Sheet.js.map +1 -1
  275. package/dist/cjs/primitives/Sidebar.js +8 -4
  276. package/dist/cjs/primitives/Sidebar.js.map +1 -1
  277. package/dist/cjs/primitives/Sonner.js +7 -42
  278. package/dist/cjs/primitives/Sonner.js.map +1 -1
  279. package/dist/cjs/primitives/Spinner.js +3 -1
  280. package/dist/cjs/primitives/Spinner.js.map +1 -1
  281. package/dist/cjs/primitives/index.js +7 -4
  282. package/dist/cjs/primitives/index.js.map +1 -1
  283. package/dist/cjs/redux-DEF7lAd1.js +240 -0
  284. package/dist/cjs/redux-DEF7lAd1.js.map +1 -0
  285. package/dist/cjs/{sheet-CkCrHmVA.js → sheet-BZHMKVH1.js} +4 -2
  286. package/dist/cjs/sheet-BZHMKVH1.js.map +1 -0
  287. package/dist/cjs/triangle-alert-ZUMRpmzW.js +43 -0
  288. package/dist/cjs/triangle-alert-ZUMRpmzW.js.map +1 -0
  289. package/dist/cjs/with-selector-DeKHbQY7.js +121 -0
  290. package/dist/cjs/with-selector-DeKHbQY7.js.map +1 -0
  291. package/dist/components/Accordion/index.d.ts +2 -0
  292. package/dist/components/Accordion.js +5 -27
  293. package/dist/components/Accordion.js.map +1 -1
  294. package/dist/components/{Alert.d.ts → Alert/Alert.d.ts} +2 -2
  295. package/dist/components/Alert/constants.d.ts +3 -0
  296. package/dist/components/Alert/index.d.ts +2 -0
  297. package/dist/components/Alert.js +11 -72
  298. package/dist/components/Alert.js.map +1 -1
  299. package/dist/components/Avatar/Avatar.d.ts +31 -0
  300. package/dist/components/Avatar/constants.d.ts +3 -0
  301. package/dist/components/Avatar/index.d.ts +2 -0
  302. package/dist/components/Avatar/utils.d.ts +1 -0
  303. package/dist/components/Avatar.js +26 -0
  304. package/dist/components/Avatar.js.map +1 -0
  305. package/dist/components/{Badge.d.ts → Badge/Badge.d.ts} +1 -1
  306. package/dist/components/Badge/constants.d.ts +25 -0
  307. package/dist/components/Badge/index.d.ts +2 -0
  308. package/dist/components/Badge.js +8 -64
  309. package/dist/components/Badge.js.map +1 -1
  310. package/dist/components/Button/constants.d.ts +5 -0
  311. package/dist/components/Button/index.d.ts +2 -0
  312. package/dist/components/Button.js +12 -99
  313. package/dist/components/Button.js.map +1 -1
  314. package/dist/components/Callout/Callout.d.ts +17 -0
  315. package/dist/components/Callout/constants.d.ts +8 -0
  316. package/dist/components/Callout/index.d.ts +2 -0
  317. package/dist/components/Callout.js +10 -0
  318. package/dist/components/Callout.js.map +1 -0
  319. package/dist/components/Checkbox/index.d.ts +2 -0
  320. package/dist/components/Checkbox.js +6 -26
  321. package/dist/components/Checkbox.js.map +1 -1
  322. package/dist/components/ColorPicker.js +5 -3
  323. package/dist/components/ColorPicker.js.map +1 -1
  324. package/dist/components/DataTable/components/EmptyState.d.ts +1 -1
  325. package/dist/components/DataTable.js +6 -5
  326. package/dist/components/DataTable.js.map +1 -1
  327. package/dist/components/DatePicker/DatePicker.d.ts +4 -0
  328. package/dist/components/DatePicker/DatePickerFooter.d.ts +12 -0
  329. package/dist/components/DatePicker/TimezoneSelect.d.ts +8 -0
  330. package/dist/components/DatePicker/constants.d.ts +17 -0
  331. package/dist/components/DatePicker/index.d.ts +2 -0
  332. package/dist/components/DatePicker/types.d.ts +56 -0
  333. package/dist/components/DatePicker/utils.d.ts +6 -0
  334. package/dist/components/DatePicker.js +39 -0
  335. package/dist/components/DatePicker.js.map +1 -0
  336. package/dist/components/{Dialog.d.ts → Dialog/Dialog.d.ts} +1 -1
  337. package/dist/components/Dialog/constants.d.ts +2 -0
  338. package/dist/components/Dialog/index.d.ts +2 -0
  339. package/dist/components/Dialog.js +7 -66
  340. package/dist/components/Dialog.js.map +1 -1
  341. package/dist/components/DropdownMenu.js +6 -4
  342. package/dist/components/DropdownMenu.js.map +1 -1
  343. package/dist/components/Empty/Empty.d.ts +27 -0
  344. package/dist/components/Empty/index.d.ts +2 -0
  345. package/dist/components/Empty.js +34 -0
  346. package/dist/components/Empty.js.map +1 -0
  347. package/dist/components/Input/constants.d.ts +17 -0
  348. package/dist/components/Input/index.d.ts +2 -0
  349. package/dist/components/Input/utils.d.ts +7 -0
  350. package/dist/components/Input.js +6 -153
  351. package/dist/components/Input.js.map +1 -1
  352. package/dist/components/Kbd/Kbd.d.ts +15 -0
  353. package/dist/components/Kbd/constants.d.ts +1 -0
  354. package/dist/components/Kbd/index.d.ts +2 -0
  355. package/dist/components/Kbd.js +24 -0
  356. package/dist/components/Kbd.js.map +1 -0
  357. package/dist/components/Label/Label.d.ts +40 -0
  358. package/dist/components/Label/constants.d.ts +1 -0
  359. package/dist/components/Label/index.d.ts +2 -0
  360. package/dist/components/Label.js +37 -0
  361. package/dist/components/Label.js.map +1 -0
  362. package/dist/components/MultiEmailInput/MultiEmailInput.d.ts +3 -0
  363. package/dist/components/MultiEmailInput/constants.d.ts +3 -0
  364. package/dist/components/MultiEmailInput/index.d.ts +2 -0
  365. package/dist/components/MultiEmailInput/types.d.ts +53 -0
  366. package/dist/components/MultiEmailInput/useMultiEmailState.d.ts +18 -0
  367. package/dist/components/MultiEmailInput/utils.d.ts +9 -0
  368. package/dist/components/MultiEmailInput.js +14 -0
  369. package/dist/components/MultiEmailInput.js.map +1 -0
  370. package/dist/components/Pagination/Pagination.d.ts +18 -0
  371. package/dist/components/Pagination/constants.d.ts +1 -0
  372. package/dist/components/Pagination/hooks/usePaginationRange.d.ts +7 -0
  373. package/dist/components/Pagination/index.d.ts +2 -0
  374. package/dist/components/Pagination/utils.d.ts +1 -0
  375. package/dist/components/Pagination.js +15 -0
  376. package/dist/components/Pagination.js.map +1 -0
  377. package/dist/components/Popover/constants.d.ts +2 -0
  378. package/dist/components/Popover/index.d.ts +2 -0
  379. package/dist/components/Popover.js +8 -104
  380. package/dist/components/Popover.js.map +1 -1
  381. package/dist/components/Progress/Progress.d.ts +12 -0
  382. package/dist/components/Progress/index.d.ts +2 -0
  383. package/dist/components/Progress.js +10 -0
  384. package/dist/components/Progress.js.map +1 -0
  385. package/dist/components/RadioGroup/index.d.ts +2 -0
  386. package/dist/components/RadioGroup.js +7 -42
  387. package/dist/components/RadioGroup.js.map +1 -1
  388. package/dist/components/Select/MultiSelectCombobox.d.ts +2 -0
  389. package/dist/components/{MultiSelectCombobox.types.d.ts → Select/MultiSelectCombobox.types.d.ts} +3 -13
  390. package/dist/components/{OptionItem.d.ts → Select/OptionItem.d.ts} +1 -1
  391. package/dist/components/Select/Select.d.ts +5 -0
  392. package/dist/components/Select/SelectCombobox.d.ts +2 -0
  393. package/dist/components/Select/SelectCombobox.types.d.ts +73 -0
  394. package/dist/components/Select/dropdown.types.d.ts +12 -0
  395. package/dist/components/Select/index.d.ts +2 -0
  396. package/dist/components/Select/types.d.ts +148 -0
  397. package/dist/components/{MultiSelect.utils.d.ts → Select/utils.d.ts} +1 -1
  398. package/dist/components/Select.js +29 -1
  399. package/dist/components/Select.js.map +1 -1
  400. package/dist/components/Sheet/constants.d.ts +3 -0
  401. package/dist/components/Sheet/index.d.ts +2 -0
  402. package/dist/components/Sheet.js +7 -68
  403. package/dist/components/Sheet.js.map +1 -1
  404. package/dist/components/Slider/Slider.d.ts +19 -0
  405. package/dist/components/Slider/index.d.ts +2 -0
  406. package/dist/components/Slider.js +22 -0
  407. package/dist/components/Slider.js.map +1 -0
  408. package/dist/components/Spinner/Spinner.d.ts +10 -0
  409. package/dist/components/Spinner/constants.d.ts +1 -0
  410. package/dist/components/Spinner/index.d.ts +2 -0
  411. package/dist/components/Spinner.js +9 -0
  412. package/dist/components/Spinner.js.map +1 -0
  413. package/dist/components/Stepper/Stepper.d.ts +18 -0
  414. package/dist/components/Stepper/index.d.ts +2 -0
  415. package/dist/components/Stepper.js +7 -0
  416. package/dist/components/Stepper.js.map +1 -0
  417. package/dist/components/Switch/index.d.ts +2 -0
  418. package/dist/components/Switch.js +6 -22
  419. package/dist/components/Switch.js.map +1 -1
  420. package/dist/components/Tabs/constants.d.ts +5 -0
  421. package/dist/components/Tabs/index.d.ts +2 -0
  422. package/dist/components/Tabs.js +6 -57
  423. package/dist/components/Tabs.js.map +1 -1
  424. package/dist/components/{Textarea.d.ts → Textarea/Textarea.d.ts} +1 -1
  425. package/dist/components/Textarea/constants.d.ts +5 -0
  426. package/dist/components/Textarea/index.d.ts +2 -0
  427. package/dist/components/Textarea/utils.d.ts +2 -0
  428. package/dist/components/Textarea.js +6 -79
  429. package/dist/components/Textarea.js.map +1 -1
  430. package/dist/components/TimePicker/TimeColumn.d.ts +11 -0
  431. package/dist/components/TimePicker/TimePicker.d.ts +4 -0
  432. package/dist/components/TimePicker/TimePickerPanel.d.ts +4 -0
  433. package/dist/components/TimePicker/constants.d.ts +3 -0
  434. package/dist/components/TimePicker/index.d.ts +3 -0
  435. package/dist/components/TimePicker/types.d.ts +61 -0
  436. package/dist/components/TimePicker/utils.d.ts +11 -0
  437. package/dist/components/TimePicker.js +35 -0
  438. package/dist/components/TimePicker.js.map +1 -0
  439. package/dist/components/{Toastr.d.ts → Toastr/Toastr.d.ts} +2 -2
  440. package/dist/components/Toastr/index.d.ts +2 -0
  441. package/dist/components/Toastr/utils.d.ts +10 -0
  442. package/dist/components/Toastr.js +2 -128
  443. package/dist/components/Toastr.js.map +1 -1
  444. package/dist/components/Tooltip/constants.d.ts +2 -0
  445. package/dist/components/Tooltip/index.d.ts +2 -0
  446. package/dist/components/Tooltip.js +7 -87
  447. package/dist/components/Tooltip.js.map +1 -1
  448. package/dist/components/TranslationProvider/TranslationProvider.d.ts +6 -0
  449. package/dist/components/TranslationProvider/i18n.d.ts +1 -0
  450. package/dist/components/TranslationProvider/index.d.ts +2 -0
  451. package/dist/components/TranslationProvider/types.d.ts +7 -0
  452. package/dist/components/TranslationProvider.js +6 -0
  453. package/dist/components/TranslationProvider.js.map +1 -0
  454. package/dist/components/Tree/Tree.d.ts +2 -0
  455. package/dist/components/Tree/TreeContext.d.ts +26 -0
  456. package/dist/components/Tree/components/SwitcherIcon.d.ts +6 -0
  457. package/dist/components/Tree/components/TreeCheckbox.d.ts +8 -0
  458. package/dist/components/Tree/components/TreeNode.d.ts +3 -0
  459. package/dist/components/Tree/constants.d.ts +3 -0
  460. package/dist/components/Tree/hooks/useTreeCheck.d.ts +18 -0
  461. package/dist/components/Tree/hooks/useTreeExpansion.d.ts +18 -0
  462. package/dist/components/Tree/hooks/useTreeSelection.d.ts +16 -0
  463. package/dist/components/Tree/index.d.ts +3 -0
  464. package/dist/components/Tree/types.d.ts +110 -0
  465. package/dist/components/Tree/utils/adapter.d.ts +10 -0
  466. package/dist/components/Tree/utils/checkCascade.d.ts +5 -0
  467. package/dist/components/Tree/utils/search.d.ts +10 -0
  468. package/dist/components/Tree.js +57 -0
  469. package/dist/components/Tree.js.map +1 -0
  470. package/dist/components/TreeSelect/TreeSelect.d.ts +3 -0
  471. package/dist/components/TreeSelect/TreeSelectTrigger.d.ts +14 -0
  472. package/dist/components/{Select.constants.d.ts → TreeSelect/constants.d.ts} +2 -2
  473. package/dist/components/TreeSelect/hooks/useTreeSelectState.d.ts +30 -0
  474. package/dist/components/TreeSelect/hooks/useTreeSelectValue.d.ts +19 -0
  475. package/dist/components/TreeSelect/index.d.ts +2 -0
  476. package/dist/components/TreeSelect/types.d.ts +49 -0
  477. package/dist/components/TreeSelect/utils/pruneTree.d.ts +2 -0
  478. package/dist/components/TreeSelect/utils/resolveFieldNames.d.ts +5 -0
  479. package/dist/components/TreeSelect.js +39 -0
  480. package/dist/components/TreeSelect.js.map +1 -0
  481. package/dist/components/{Typography.d.ts → Typography/Typography.d.ts} +2 -2
  482. package/dist/components/Typography/index.d.ts +1 -0
  483. package/dist/components/Typography.js +6 -81
  484. package/dist/components/Typography.js.map +1 -1
  485. package/dist/{dialog-Civ9r6wD.js → dialog-CrB6N_2a.js} +4 -2
  486. package/dist/dialog-CrB6N_2a.js.map +1 -0
  487. package/dist/{floating-ui.react-dom-CcGbtPEK.js → floating-ui.react-dom-D8_f_WWh.js} +2 -2
  488. package/dist/{floating-ui.react-dom-CcGbtPEK.js.map → floating-ui.react-dom-D8_f_WWh.js.map} +1 -1
  489. package/dist/formik/Button.d.ts +7 -0
  490. package/dist/formik/Button.js +43 -0
  491. package/dist/formik/Button.js.map +1 -0
  492. package/dist/formik/Checkbox.d.ts +8 -0
  493. package/dist/formik/Checkbox.js +36 -0
  494. package/dist/formik/Checkbox.js.map +1 -0
  495. package/dist/formik/Form/FormWrapper.d.ts +9 -0
  496. package/dist/formik/Form/ScrollToErrorField/index.d.ts +5 -0
  497. package/dist/formik/Form/ScrollToErrorField/utils.d.ts +2 -0
  498. package/dist/formik/Form/index.d.ts +16 -0
  499. package/dist/formik/Form.js +114 -0
  500. package/dist/formik/Form.js.map +1 -0
  501. package/dist/formik/Input.d.ts +8 -0
  502. package/dist/formik/Input.js +36 -0
  503. package/dist/formik/Input.js.map +1 -0
  504. package/dist/formik/MultiEmailInput.d.ts +7 -0
  505. package/dist/formik/MultiEmailInput.js +29 -0
  506. package/dist/formik/MultiEmailInput.js.map +1 -0
  507. package/dist/formik/RadioGroup.js +42 -0
  508. package/dist/formik/RadioGroup.js.map +1 -0
  509. package/dist/formik/Select.d.ts +7 -0
  510. package/dist/formik/Select.js +59 -0
  511. package/dist/formik/Select.js.map +1 -0
  512. package/dist/formik/Slider.d.ts +8 -0
  513. package/dist/formik/Slider.js +37 -0
  514. package/dist/formik/Slider.js.map +1 -0
  515. package/dist/formik/Switch.d.ts +10 -0
  516. package/dist/formik/Switch.js +31 -0
  517. package/dist/formik/Switch.js.map +1 -0
  518. package/dist/formik/Textarea.d.ts +8 -0
  519. package/dist/formik/Textarea.js +32 -0
  520. package/dist/formik/Textarea.js.map +1 -0
  521. package/dist/formik/TreeSelect.d.ts +7 -0
  522. package/dist/formik/TreeSelect.js +54 -0
  523. package/dist/formik/TreeSelect.js.map +1 -0
  524. package/dist/formik/index.d.ts +22 -0
  525. package/dist/formik/index.js +85 -0
  526. package/dist/formik/index.js.map +1 -0
  527. package/dist/hooks/useAsyncOptions.d.ts +4 -4
  528. package/dist/hooks/useComboboxAnchor.d.ts +6 -0
  529. package/dist/hooks/useCreatableItems.d.ts +1 -1
  530. package/dist/hooks/useMultiSelectOptions.d.ts +22 -4
  531. package/dist/hooks/useMultiSelectState.d.ts +7 -4
  532. package/dist/hooks/useSelectState.d.ts +39 -14
  533. package/dist/{index-ByEpUy7w.js → index-C3hByjk3.js} +2 -2
  534. package/dist/{index-ByEpUy7w.js.map → index-C3hByjk3.js.map} +1 -1
  535. package/dist/{index-KzJfsx-e.js → index-DLPtgEJ_.js} +2 -2
  536. package/dist/{index-KzJfsx-e.js.map → index-DLPtgEJ_.js.map} +1 -1
  537. package/dist/index.css +2 -1
  538. package/dist/index.d.ts +34 -2
  539. package/dist/index.js +294 -392
  540. package/dist/index.js.map +1 -1
  541. package/dist/primitives/Breadcrumb.js +5 -2
  542. package/dist/primitives/Breadcrumb.js.map +1 -1
  543. package/dist/primitives/Calendar.js +8 -8003
  544. package/dist/primitives/Calendar.js.map +1 -1
  545. package/dist/primitives/Carousel.js +5 -2
  546. package/dist/primitives/Carousel.js.map +1 -1
  547. package/dist/primitives/Chart.js +253 -50
  548. package/dist/primitives/Chart.js.map +1 -1
  549. package/dist/primitives/Combobox.d.ts +3 -3
  550. package/dist/primitives/Combobox.js +787 -1100
  551. package/dist/primitives/Combobox.js.map +1 -1
  552. package/dist/primitives/Command.js +6 -2
  553. package/dist/primitives/Command.js.map +1 -1
  554. package/dist/primitives/ContextMenu.js +3 -3
  555. package/dist/primitives/Dialog.js +2 -1
  556. package/dist/primitives/Dialog.js.map +1 -1
  557. package/dist/primitives/DropdownMenu.js +3 -3
  558. package/dist/primitives/HoverCard.js +2 -2
  559. package/dist/primitives/Menubar.js +3 -3
  560. package/dist/primitives/Pagination.js +12 -6
  561. package/dist/primitives/Pagination.js.map +1 -1
  562. package/dist/primitives/Popover.js +2 -2
  563. package/dist/primitives/Resizable.js +799 -778
  564. package/dist/primitives/Resizable.js.map +1 -1
  565. package/dist/primitives/Select.js +4 -4
  566. package/dist/primitives/Sheet.js +2 -1
  567. package/dist/primitives/Sheet.js.map +1 -1
  568. package/dist/primitives/Sidebar.js +11 -7
  569. package/dist/primitives/Sidebar.js.map +1 -1
  570. package/dist/primitives/Sonner.js +5 -40
  571. package/dist/primitives/Sonner.js.map +1 -1
  572. package/dist/primitives/Spinner.js +3 -1
  573. package/dist/primitives/Spinner.js.map +1 -1
  574. package/dist/primitives/Tooltip.js +3 -3
  575. package/dist/primitives/index.js +11 -8
  576. package/dist/primitives/index.js.map +1 -1
  577. package/dist/redux-BKH6DnBB.js +235 -0
  578. package/dist/redux-BKH6DnBB.js.map +1 -0
  579. package/dist/shadcn/components/combobox.d.ts +1 -1
  580. package/dist/shadcn/components/command.d.ts +1 -1
  581. package/dist/shadcn/components/pagination.d.ts +2 -2
  582. package/dist/shadcn/components/typography.d.ts +4 -4
  583. package/dist/{sheet-COcn22fC.js → sheet-C763FqIh.js} +4 -2
  584. package/dist/sheet-C763FqIh.js.map +1 -0
  585. package/dist/{tooltip-DzjIJacP.js → tooltip-XkHLgxlU.js} +2 -2
  586. package/dist/{tooltip-DzjIJacP.js.map → tooltip-XkHLgxlU.js.map} +1 -1
  587. package/dist/translations/index.d.ts +66 -0
  588. package/dist/triangle-alert-PXnNWQy_.js +40 -0
  589. package/dist/triangle-alert-PXnNWQy_.js.map +1 -0
  590. package/dist/utils/dayjs/index.d.ts +4 -0
  591. package/dist/utils/dayjs/timezonePlugin.d.ts +3 -0
  592. package/dist/with-selector-Dv0G_V_o.js +115 -0
  593. package/dist/with-selector-Dv0G_V_o.js.map +1 -0
  594. package/package.json +54 -36
  595. package/dist/ColorPicker-BPvxDGDM.js +0 -276
  596. package/dist/ColorPicker-BPvxDGDM.js.map +0 -1
  597. package/dist/cjs/ColorPicker-DN8aynGh.js.map +0 -1
  598. package/dist/cjs/components/MultiSelect.js +0 -13
  599. package/dist/cjs/components/MultiSelect.js.map +0 -1
  600. package/dist/cjs/components/MultiSelectCombobox.js +0 -3
  601. package/dist/cjs/components/MultiSelectCombobox.js.map +0 -1
  602. package/dist/cjs/components/MultiSelectDropdown.js +0 -37
  603. package/dist/cjs/components/MultiSelectDropdown.js.map +0 -1
  604. package/dist/cjs/components/OptionItem.js +0 -34
  605. package/dist/cjs/components/OptionItem.js.map +0 -1
  606. package/dist/cjs/components/SelectFieldWrapper.js.map +0 -1
  607. package/dist/cjs/components/SelectOptions.js +0 -43
  608. package/dist/cjs/components/SelectOptions.js.map +0 -1
  609. package/dist/cjs/components/SelectTriggerContent.js +0 -43
  610. package/dist/cjs/components/SelectTriggerContent.js.map +0 -1
  611. package/dist/cjs/components/shared.js +0 -8
  612. package/dist/cjs/components/shared.js.map +0 -1
  613. package/dist/cjs/dialog-CF2GBHOG.js.map +0 -1
  614. package/dist/cjs/sheet-CkCrHmVA.js.map +0 -1
  615. package/dist/cjs/useCreatableItems-BTHtd7uo.js +0 -100
  616. package/dist/cjs/useCreatableItems-BTHtd7uo.js.map +0 -1
  617. package/dist/cjs/with-selector-u4xTSzCv.js +0 -457
  618. package/dist/cjs/with-selector-u4xTSzCv.js.map +0 -1
  619. package/dist/components/MultiSelect.d.ts +0 -4
  620. package/dist/components/MultiSelect.js +0 -4
  621. package/dist/components/MultiSelect.js.map +0 -1
  622. package/dist/components/MultiSelect.types.d.ts +0 -121
  623. package/dist/components/MultiSelectCombobox.d.ts +0 -3
  624. package/dist/components/MultiSelectCombobox.js +0 -2
  625. package/dist/components/MultiSelectCombobox.js.map +0 -1
  626. package/dist/components/MultiSelectDropdown.js +0 -35
  627. package/dist/components/MultiSelectDropdown.js.map +0 -1
  628. package/dist/components/OptionItem.js +0 -32
  629. package/dist/components/OptionItem.js.map +0 -1
  630. package/dist/components/Select.d.ts +0 -4
  631. package/dist/components/Select.types.d.ts +0 -58
  632. package/dist/components/SelectFieldWrapper.js.map +0 -1
  633. package/dist/components/SelectOptions.d.ts +0 -2
  634. package/dist/components/SelectOptions.js +0 -41
  635. package/dist/components/SelectOptions.js.map +0 -1
  636. package/dist/components/SelectTriggerContent.d.ts +0 -18
  637. package/dist/components/SelectTriggerContent.js +0 -41
  638. package/dist/components/SelectTriggerContent.js.map +0 -1
  639. package/dist/components/shared.js +0 -6
  640. package/dist/components/shared.js.map +0 -1
  641. package/dist/components/shared.types.d.ts +0 -16
  642. package/dist/dialog-Civ9r6wD.js.map +0 -1
  643. package/dist/sheet-COcn22fC.js.map +0 -1
  644. package/dist/useCreatableItems-B0seQA1_.js +0 -89
  645. package/dist/useCreatableItems-B0seQA1_.js.map +0 -1
  646. package/dist/with-selector--fY1NrB9.js +0 -448
  647. package/dist/with-selector--fY1NrB9.js.map +0 -1
  648. /package/dist/components/{Accordion.d.ts → Accordion/Accordion.d.ts} +0 -0
  649. /package/dist/components/{Button.d.ts → Button/Button.d.ts} +0 -0
  650. /package/dist/components/{Checkbox.d.ts → Checkbox/Checkbox.d.ts} +0 -0
  651. /package/dist/components/{Input.d.ts → Input/Input.d.ts} +0 -0
  652. /package/dist/components/{Popover.d.ts → Popover/Popover.d.ts} +0 -0
  653. /package/dist/components/{RadioGroup.d.ts → RadioGroup/RadioGroup.d.ts} +0 -0
  654. /package/dist/components/{MultiSelectDropdown.d.ts → Select/MultiSelectDropdown.d.ts} +0 -0
  655. /package/dist/components/{SelectFieldWrapper.d.ts → Select/SelectFieldWrapper.d.ts} +0 -0
  656. /package/dist/components/{MultiSelect.constants.d.ts → Select/constants.d.ts} +0 -0
  657. /package/dist/components/{Sheet.d.ts → Sheet/Sheet.d.ts} +0 -0
  658. /package/dist/components/{Switch.d.ts → Switch/Switch.d.ts} +0 -0
  659. /package/dist/components/{Tabs.d.ts → Tabs/Tabs.d.ts} +0 -0
  660. /package/dist/components/{Tooltip.d.ts → Tooltip/Tooltip.d.ts} +0 -0
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var utils = require('./utils-CTr7wn5d.js');
6
+ var primitives_Field = require('./primitives/Field.js');
7
+ var primitives_Textarea = require('./primitives/Textarea.js');
8
+
9
+ const SIZE_ROWS = {
10
+ small: 1,
11
+ medium: 3,
12
+ large: 4,
13
+ };
14
+ const SIZE_MIN_HEIGHT = {
15
+ small: "min-h-8",
16
+ medium: "min-h-20",
17
+ large: "min-h-28",
18
+ };
19
+
20
+ function getTrimmedValue(value, disableTrimOnBlur) {
21
+ if (disableTrimOnBlur || typeof value !== "string")
22
+ return value;
23
+ return value.trim();
24
+ }
25
+
26
+ const Textarea = React.forwardRef(({ size = "medium", resize = "vertical", label = "", error = "", helpText = "", disabled = false, required = false, maxLength, unlimitedChars = false, disableTrimOnBlur = false, prefix, suffix, nakedTextarea = false, labelProps, className = "", rows: rowsProp, onBlur, onChange, value: controlledValue, ...otherProps }, ref) => {
27
+ const generatedId = React.useId();
28
+ const id = otherProps.id ?? generatedId;
29
+ const errorId = `error_${id}`;
30
+ const helpTextId = `helpText_${id}`;
31
+ // Controlled / uncontrolled value tracking
32
+ const [valueInternal, setValueInternal] = React.useState(controlledValue ?? "");
33
+ const isControlled = controlledValue !== undefined;
34
+ const value = isControlled ? controlledValue : valueInternal;
35
+ const valueLength = value?.toString().length || 0;
36
+ const isMaxLengthPresent = !!maxLength || maxLength === 0;
37
+ const isCharacterLimitVisible = isMaxLengthPresent && valueLength >= maxLength * 0.85;
38
+ const maxLengthError = unlimitedChars && valueLength > maxLength;
39
+ const rows = rowsProp ?? SIZE_ROWS[size];
40
+ // --- Handlers ---
41
+ const handleChange = (e) => {
42
+ if (!isControlled) {
43
+ setValueInternal(e.target.value);
44
+ }
45
+ onChange?.(e);
46
+ };
47
+ const handleBlur = (e) => {
48
+ const trimmedValue = getTrimmedValue(value ?? "", disableTrimOnBlur);
49
+ if (trimmedValue !== value) {
50
+ e.target.value = trimmedValue.toString();
51
+ handleChange(e);
52
+ }
53
+ onBlur?.(e);
54
+ };
55
+ // --- aria-describedby ---
56
+ const ariaDescribedBy = [error ? errorId : null, helpText ? helpTextId : null]
57
+ .filter(Boolean)
58
+ .join(" ") || undefined;
59
+ // --- Textarea element ---
60
+ const hasField = !!(label || error || helpText);
61
+ const textareaElement = (jsxRuntime.jsx(primitives_Textarea.Textarea, { ref: ref, id: id, rows: rows, disabled: disabled, required: required, "aria-invalid": !!error || undefined, "aria-describedby": ariaDescribedBy, className: utils.cn(
62
+ // Override shadcn's field-sizing-content and min-h-16 so rows works
63
+ "!field-sizing-normal", SIZE_MIN_HEIGHT[size], resize === "none" && "resize-none", resize === "vertical" && "resize-y", nakedTextarea &&
64
+ "border-transparent shadow-none px-0 py-0 focus-visible:border-transparent focus-visible:ring-0", !!error && "border-destructive ring-destructive/20 ring-3"), value: value, onBlur: handleBlur, onChange: handleChange, ...(isMaxLengthPresent && !unlimitedChars ? { maxLength } : {}), ...otherProps }));
65
+ const hasPrefixSuffix = !!(prefix || suffix);
66
+ const textareaWithAffixes = hasPrefixSuffix ? (jsxRuntime.jsxs("div", { className: utils.cn("flex items-start gap-2 rounded-lg border border-input px-2.5 py-2 focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50", !!error && "border-destructive ring-destructive/20 ring-3", nakedTextarea && "border-transparent shadow-none"), children: [prefix && (jsxRuntime.jsx("div", { className: "shrink-0 pt-0.5 text-muted-foreground", children: prefix })), jsxRuntime.jsx(primitives_Textarea.Textarea, { ref: ref, id: id, rows: rows, disabled: disabled, required: required, "aria-invalid": !!error || undefined, "aria-describedby": ariaDescribedBy, className: utils.cn("!field-sizing-normal border-0 p-0 shadow-none focus-visible:border-0 focus-visible:ring-0", SIZE_MIN_HEIGHT[size], resize === "none" && "resize-none", resize === "vertical" && "resize-y"), value: value, onBlur: handleBlur, onChange: handleChange, ...(isMaxLengthPresent && !unlimitedChars ? { maxLength } : {}), ...otherProps }), suffix && (jsxRuntime.jsx("div", { className: "shrink-0 pt-0.5 text-muted-foreground", children: suffix }))] })) : (textareaElement);
67
+ if (!hasField) {
68
+ return jsxRuntime.jsx("div", { className: utils.cn(className), children: textareaWithAffixes });
69
+ }
70
+ return (jsxRuntime.jsxs(primitives_Field.Field, { "data-disabled": disabled || undefined, "data-invalid": !!error || undefined, className: className, children: [(label || isCharacterLimitVisible) && (jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [label && (jsxRuntime.jsxs(primitives_Field.FieldLabel, { htmlFor: id, ...labelProps, children: [label, required && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" }))] })), isCharacterLimitVisible && (jsxRuntime.jsxs("span", { className: utils.cn("text-xs tabular-nums", maxLengthError ? "text-destructive" : "text-muted-foreground"), children: [valueLength, "/", maxLength] }))] })), jsxRuntime.jsxs(primitives_Field.FieldContent, { children: [textareaWithAffixes, !!error && jsxRuntime.jsx(primitives_Field.FieldError, { id: errorId, children: error }), helpText && (jsxRuntime.jsx(primitives_Field.FieldDescription, { id: helpTextId, children: helpText }))] })] }));
71
+ });
72
+ Textarea.displayName = "Textarea";
73
+
74
+ exports.Textarea = Textarea;
75
+ //# sourceMappingURL=Textarea-BfdlAJ59.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea-BfdlAJ59.js","sources":["../../../src/components/Textarea/constants.ts","../../../src/components/Textarea/utils.ts","../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["type TextareaSize = \"small\" | \"medium\" | \"large\";\n\nconst SIZE_ROWS: Record<TextareaSize, number> = {\n small: 1,\n medium: 3,\n large: 4,\n};\n\nconst SIZE_MIN_HEIGHT: Record<TextareaSize, string> = {\n small: \"min-h-8\",\n medium: \"min-h-20\",\n large: \"min-h-28\",\n};\n\nexport { SIZE_ROWS, SIZE_MIN_HEIGHT };\nexport type { TextareaSize };\n","function getTrimmedValue(\n value: string | number,\n disableTrimOnBlur: boolean\n): string | number {\n if (disableTrimOnBlur || typeof value !== \"string\") return value;\n return value.trim();\n}\n\nexport { getTrimmedValue };\n","import React, { forwardRef, useId, useState } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { Textarea as PrimitiveTextarea } from \"src/primitives/Textarea\";\n\nimport { SIZE_ROWS, SIZE_MIN_HEIGHT } from \"./constants\";\nimport { getTrimmedValue } from \"./utils\";\n\nimport type { TextareaSize } from \"./constants\";\n\ntype TextareaResize = \"vertical\" | \"none\";\n\ntype PrimitiveTextareaProps = React.ComponentProps<typeof PrimitiveTextarea>;\n\nexport interface TextareaProps extends Omit<\n PrimitiveTextareaProps,\n \"size\" | \"children\"\n> {\n /** Size of the textarea. Controls default rows: small=1, medium=3, large=4. */\n size?: TextareaSize;\n /** Resize behavior. */\n resize?: TextareaResize;\n /** Label displayed above the textarea. */\n label?: string;\n /** Error message displayed below the textarea. */\n error?: string;\n /** Help text displayed below the textarea. Accepts string or ReactNode. */\n helpText?: React.ReactNode;\n /** Maximum character limit. Counter visible at 85% capacity. */\n maxLength?: number;\n /** Allow typing past maxLength, show error styling on count. */\n unlimitedChars?: boolean;\n /** Prevent trimming whitespace on blur. */\n disableTrimOnBlur?: boolean;\n /** Content to display before the textarea. */\n prefix?: React.ReactNode;\n /** Content to display after the textarea. */\n suffix?: React.ReactNode;\n /** Render the textarea without borders. */\n nakedTextarea?: boolean;\n /** Props forwarded to the Label element. */\n labelProps?: React.ComponentProps<typeof FieldLabel>;\n /** Additional class name for the outermost wrapper. */\n className?: string;\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n size = \"medium\",\n resize = \"vertical\",\n label = \"\",\n error = \"\",\n helpText = \"\",\n disabled = false,\n required = false,\n maxLength,\n unlimitedChars = false,\n disableTrimOnBlur = false,\n prefix,\n suffix,\n nakedTextarea = false,\n labelProps,\n className = \"\",\n rows: rowsProp,\n onBlur,\n onChange,\n value: controlledValue,\n ...otherProps\n },\n ref\n ) => {\n const generatedId = useId();\n const id = otherProps.id ?? generatedId;\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n\n // Controlled / uncontrolled value tracking\n const [valueInternal, setValueInternal] = useState(controlledValue ?? \"\");\n const isControlled = controlledValue !== undefined;\n\n const value = isControlled ? controlledValue : valueInternal;\n const valueLength = value?.toString().length || 0;\n\n const isMaxLengthPresent = !!maxLength || maxLength === 0;\n const isCharacterLimitVisible =\n isMaxLengthPresent && valueLength >= maxLength! * 0.85;\n const maxLengthError = unlimitedChars && valueLength > maxLength!;\n\n const rows = rowsProp ?? SIZE_ROWS[size];\n\n // --- Handlers ---\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setValueInternal(e.target.value);\n }\n onChange?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n const trimmedValue = getTrimmedValue(value ?? \"\", disableTrimOnBlur);\n\n if (trimmedValue !== value) {\n e.target.value = trimmedValue.toString();\n handleChange(e as unknown as React.ChangeEvent<HTMLTextAreaElement>);\n }\n\n onBlur?.(e);\n };\n\n // --- aria-describedby ---\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // --- Textarea element ---\n\n const hasField = !!(label || error || helpText);\n\n const textareaElement = (\n <PrimitiveTextarea\n ref={ref}\n id={id}\n rows={rows}\n disabled={disabled}\n required={required}\n aria-invalid={!!error || undefined}\n aria-describedby={ariaDescribedBy}\n className={cn(\n // Override shadcn's field-sizing-content and min-h-16 so rows works\n \"!field-sizing-normal\",\n SIZE_MIN_HEIGHT[size],\n resize === \"none\" && \"resize-none\",\n resize === \"vertical\" && \"resize-y\",\n nakedTextarea &&\n \"border-transparent shadow-none px-0 py-0 focus-visible:border-transparent focus-visible:ring-0\",\n !!error && \"border-destructive ring-destructive/20 ring-3\"\n )}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n {...(isMaxLengthPresent && !unlimitedChars ? { maxLength } : {})}\n {...otherProps}\n />\n );\n\n const hasPrefixSuffix = !!(prefix || suffix);\n\n const textareaWithAffixes = hasPrefixSuffix ? (\n <div\n className={cn(\n \"flex items-start gap-2 rounded-lg border border-input px-2.5 py-2 focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50\",\n !!error && \"border-destructive ring-destructive/20 ring-3\",\n nakedTextarea && \"border-transparent shadow-none\"\n )}\n >\n {prefix && (\n <div className=\"shrink-0 pt-0.5 text-muted-foreground\">{prefix}</div>\n )}\n <PrimitiveTextarea\n ref={ref}\n id={id}\n rows={rows}\n disabled={disabled}\n required={required}\n aria-invalid={!!error || undefined}\n aria-describedby={ariaDescribedBy}\n className={cn(\n \"!field-sizing-normal border-0 p-0 shadow-none focus-visible:border-0 focus-visible:ring-0\",\n SIZE_MIN_HEIGHT[size],\n resize === \"none\" && \"resize-none\",\n resize === \"vertical\" && \"resize-y\"\n )}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n {...(isMaxLengthPresent && !unlimitedChars ? { maxLength } : {})}\n {...otherProps}\n />\n {suffix && (\n <div className=\"shrink-0 pt-0.5 text-muted-foreground\">{suffix}</div>\n )}\n </div>\n ) : (\n textareaElement\n );\n\n if (!hasField) {\n return <div className={cn(className)}>{textareaWithAffixes}</div>;\n }\n\n return (\n <Field\n data-disabled={disabled || undefined}\n data-invalid={!!error || undefined}\n className={className}\n >\n {(label || isCharacterLimitVisible) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <FieldLabel htmlFor={id} {...labelProps}>\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n {isCharacterLimitVisible && (\n <span\n className={cn(\n \"text-xs tabular-nums\",\n maxLengthError ? \"text-destructive\" : \"text-muted-foreground\"\n )}\n >\n {valueLength}/{maxLength}\n </span>\n )}\n </div>\n )}\n <FieldContent>\n {textareaWithAffixes}\n {!!error && <FieldError id={errorId}>{error}</FieldError>}\n {helpText && (\n <FieldDescription id={helpTextId}>{helpText}</FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n"],"names":["forwardRef","useId","useState","_jsx","PrimitiveTextarea","cn","_jsxs","Field","FieldLabel","FieldContent","FieldError","FieldDescription"],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var primitives_Popover = require('./primitives/Popover.js');
6
+ var primitives_Field = require('./primitives/Field.js');
7
+ var utils = require('./utils-CTr7wn5d.js');
8
+ var TimePickerPanel = require('./TimePickerPanel-DGNr97cj.js');
9
+ var createLucideIcon = require('./createLucideIcon-D0tRgV6l.js');
10
+ var x = require('./x-Brw3FJst.js');
11
+
12
+ /**
13
+ * @license lucide-react v0.577.0 - ISC
14
+ *
15
+ * This source code is licensed under the ISC license.
16
+ * See the LICENSE file in the root directory of this source tree.
17
+ */
18
+
19
+
20
+ const __iconNode = [
21
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
22
+ ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
23
+ ];
24
+ const Clock = createLucideIcon.createLucideIcon("clock", __iconNode);
25
+
26
+ const SIZE_CONFIG = {
27
+ small: { trigger: "h-7 text-xs", icon: "size-3.5" },
28
+ medium: { trigger: "h-8 text-sm", icon: "size-4" },
29
+ large: { trigger: "h-10 text-sm", icon: "size-4" },
30
+ };
31
+ const TimePicker = React.forwardRef(({ value, onChange, format = "24", showSeconds = false, minuteStep = 1, secondStep = 1, disabled = false, placeholder, label, error, helpText, size = "medium", required = false, timezone, labelProps, className, }, ref) => {
32
+ const generatedId = React.useId();
33
+ const errorId = `error_${generatedId}`;
34
+ const helpTextId = `helpText_${generatedId}`;
35
+ const containerRef = React.useRef(null);
36
+ const popoverContentId = React.useRef(`timepicker-popover-${generatedId}`).current;
37
+ const [open, setOpen] = React.useState(false);
38
+ const getInitialTime = React.useCallback(() => {
39
+ if (!value)
40
+ return null;
41
+ if (value instanceof Date)
42
+ return TimePickerPanel.dateToTimeValue(value);
43
+ return {
44
+ hours: value.hours,
45
+ minutes: value.minutes,
46
+ seconds: value.seconds ?? 0,
47
+ };
48
+ }, [value]);
49
+ const [internalTime, setInternalTime] = React.useState(getInitialTime);
50
+ const [inputText, setInputText] = React.useState("");
51
+ const formatTimeDisplay = React.useCallback((time) => {
52
+ if (!time)
53
+ return "";
54
+ if (format === "12") {
55
+ const { hour12, period } = TimePickerPanel.to12Hour(time.hours);
56
+ const parts = [TimePickerPanel.padNumber(hour12), TimePickerPanel.padNumber(time.minutes)];
57
+ if (showSeconds)
58
+ parts.push(TimePickerPanel.padNumber(time.seconds ?? 0));
59
+ return `${parts.join(":")} ${period}`;
60
+ }
61
+ const parts = [TimePickerPanel.padNumber(time.hours), TimePickerPanel.padNumber(time.minutes)];
62
+ if (showSeconds)
63
+ parts.push(TimePickerPanel.padNumber(time.seconds ?? 0));
64
+ return parts.join(":");
65
+ }, [format, showSeconds]);
66
+ React.useEffect(() => {
67
+ const newTime = getInitialTime();
68
+ setInternalTime(newTime);
69
+ setInputText(formatTimeDisplay(newTime));
70
+ }, [getInitialTime, formatTimeDisplay]);
71
+ // Close on outside click
72
+ React.useEffect(() => {
73
+ if (!open)
74
+ return;
75
+ const handlePointerDown = (e) => {
76
+ const target = e.target;
77
+ if (containerRef.current?.contains(target))
78
+ return;
79
+ const popoverEl = document.getElementById(popoverContentId);
80
+ if (popoverEl?.contains(target))
81
+ return;
82
+ setOpen(false);
83
+ setInputText(formatTimeDisplay(internalTime));
84
+ };
85
+ document.addEventListener("pointerdown", handlePointerDown);
86
+ return () => document.removeEventListener("pointerdown", handlePointerDown);
87
+ }, [open, internalTime, formatTimeDisplay]);
88
+ const defaultPlaceholder = showSeconds
89
+ ? format === "12"
90
+ ? "hh:mm:ss AA"
91
+ : "HH:mm:ss"
92
+ : format === "12"
93
+ ? "hh:mm AA"
94
+ : "HH:mm";
95
+ const handlePanelChange = (time) => {
96
+ setInternalTime(time);
97
+ setInputText(formatTimeDisplay(time));
98
+ onChange?.(time);
99
+ };
100
+ const handleInputChange = (e) => {
101
+ const text = e.target.value;
102
+ setInputText(text);
103
+ const parsed = TimePickerPanel.parseTimeString(text, format);
104
+ if (parsed) {
105
+ setInternalTime(parsed);
106
+ onChange?.(parsed);
107
+ }
108
+ };
109
+ const handleInputKeyDown = (e) => {
110
+ if (e.key === "Enter") {
111
+ setInputText(formatTimeDisplay(internalTime));
112
+ setOpen(false);
113
+ }
114
+ else if (e.key === "Escape") {
115
+ setInputText(formatTimeDisplay(internalTime));
116
+ setOpen(false);
117
+ }
118
+ };
119
+ const handleInputFocus = () => {
120
+ if (!open)
121
+ setOpen(true);
122
+ };
123
+ const handleClear = (e) => {
124
+ e.stopPropagation();
125
+ e.preventDefault();
126
+ setInternalTime(null);
127
+ setInputText("");
128
+ onChange?.({ hours: 0, minutes: 0, seconds: 0 });
129
+ };
130
+ const hasField = !!(label || error || helpText);
131
+ const sizeConfig = SIZE_CONFIG[size];
132
+ const ariaDescribedBy = [error ? errorId : null, helpText ? helpTextId : null]
133
+ .filter(Boolean)
134
+ .join(" ") || undefined;
135
+ const triggerContent = (jsxRuntime.jsxs(primitives_Popover.Popover, { open: open, children: [jsxRuntime.jsx(primitives_Popover.PopoverAnchor, { asChild: true, children: jsxRuntime.jsxs("div", { ref: containerRef, className: utils.cn("relative flex w-full items-center gap-2 rounded-md border border-input bg-background pe-8 ps-3", "focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2", disabled && "cursor-not-allowed opacity-50", !!error && "border-destructive ring-destructive/20 ring-3", sizeConfig.trigger, !hasField && className), children: [timezone ? (jsxRuntime.jsx("span", { className: "shrink-0 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground", children: timezone.toUpperCase() })) : (jsxRuntime.jsx(Clock, { className: utils.cn("shrink-0 text-muted-foreground", sizeConfig.icon) })), jsxRuntime.jsx("input", { type: "text", disabled: disabled, "aria-label": label || "Pick a time", "aria-describedby": ariaDescribedBy, "aria-invalid": !!error || undefined, placeholder: placeholder ?? defaultPlaceholder, value: inputText, onChange: handleInputChange, onKeyDown: handleInputKeyDown, onFocus: handleInputFocus, className: utils.cn("min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground", "disabled:cursor-not-allowed", sizeConfig.trigger.split(" ").find(c => c.startsWith("text-"))) }), jsxRuntime.jsx("button", { type: "button", onPointerDown: e => e.preventDefault(), onClick: handleClear, className: utils.cn("absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none", !(inputText && !disabled) && "invisible"), "aria-label": "Clear time", tabIndex: -1, children: jsxRuntime.jsx(x.X, { className: sizeConfig.icon }) })] }) }), open && (jsxRuntime.jsx(primitives_Popover.PopoverContent, { id: popoverContentId, className: "w-auto p-0", align: "start", onOpenAutoFocus: e => e.preventDefault(), onCloseAutoFocus: e => e.preventDefault(), onPointerDownOutside: e => e.preventDefault(), onInteractOutside: e => e.preventDefault(), children: jsxRuntime.jsx(TimePickerPanel.TimePickerPanel, { value: internalTime ?? undefined, onChange: handlePanelChange, format: format, showSeconds: showSeconds, minuteStep: minuteStep, secondStep: secondStep, disabled: disabled }) }))] }));
136
+ if (!hasField) {
137
+ return (jsxRuntime.jsx("div", { ref: ref, className: className, children: triggerContent }));
138
+ }
139
+ return (jsxRuntime.jsxs(primitives_Field.Field, { ref: ref, "data-disabled": disabled || undefined, "data-invalid": !!error || undefined, className: className, children: [label && (jsxRuntime.jsxs(primitives_Field.FieldLabel, { ...labelProps, children: [label, required && (jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" }))] })), jsxRuntime.jsxs(primitives_Field.FieldContent, { children: [triggerContent, !!error && jsxRuntime.jsx(primitives_Field.FieldError, { id: errorId, children: error }), helpText && (jsxRuntime.jsx(primitives_Field.FieldDescription, { id: helpTextId, children: helpText }))] })] }));
140
+ });
141
+ TimePicker.displayName = "TimePicker";
142
+
143
+ exports.TimePicker = TimePicker;
144
+ //# sourceMappingURL=TimePicker-Ba2FdT1O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker-Ba2FdT1O.js","sources":["../../node_modules/lucide-react/dist/esm/icons/clock.js","../../../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 6v6l4 2\", key: \"mmk7yg\" }]\n];\nconst Clock = createLucideIcon(\"clock\", __iconNode);\n\nexport { __iconNode, Clock as default };\n//# sourceMappingURL=clock.js.map\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\n\nimport { Clock, X } from \"lucide-react\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"src/primitives/Popover\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { TimePickerPanel } from \"./TimePickerPanel\";\nimport type { TimePickerProps, TimeValue } from \"./types\";\nimport { dateToTimeValue, padNumber, parseTimeString, to12Hour } from \"./utils\";\n\nconst SIZE_CONFIG = {\n small: { trigger: \"h-7 text-xs\", icon: \"size-3.5\" },\n medium: { trigger: \"h-8 text-sm\", icon: \"size-4\" },\n large: { trigger: \"h-10 text-sm\", icon: \"size-4\" },\n} as const;\n\nconst TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value,\n onChange,\n format = \"24\",\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n required = false,\n timezone,\n labelProps,\n className,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n const popoverContentId = useRef(\n `timepicker-popover-${generatedId}`\n ).current;\n\n const [open, setOpen] = useState(false);\n\n const getInitialTime = useCallback((): TimeValue | null => {\n if (!value) return null;\n if (value instanceof Date) return dateToTimeValue(value);\n\n return {\n hours: value.hours,\n minutes: value.minutes,\n seconds: value.seconds ?? 0,\n };\n }, [value]);\n\n const [internalTime, setInternalTime] = useState<TimeValue | null>(\n getInitialTime\n );\n const [inputText, setInputText] = useState(\"\");\n\n const formatTimeDisplay = useCallback(\n (time: TimeValue | null): string => {\n if (!time) return \"\";\n\n if (format === \"12\") {\n const { hour12, period } = to12Hour(time.hours);\n const parts = [padNumber(hour12), padNumber(time.minutes)];\n if (showSeconds) parts.push(padNumber(time.seconds ?? 0));\n\n return `${parts.join(\":\")} ${period}`;\n }\n\n const parts = [padNumber(time.hours), padNumber(time.minutes)];\n if (showSeconds) parts.push(padNumber(time.seconds ?? 0));\n\n return parts.join(\":\");\n },\n [format, showSeconds]\n );\n\n useEffect(() => {\n const newTime = getInitialTime();\n setInternalTime(newTime);\n setInputText(formatTimeDisplay(newTime));\n }, [getInitialTime, formatTimeDisplay]);\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n\n const handlePointerDown = (e: PointerEvent) => {\n const target = e.target as HTMLElement;\n if (containerRef.current?.contains(target)) return;\n\n const popoverEl = document.getElementById(popoverContentId);\n if (popoverEl?.contains(target)) return;\n\n setOpen(false);\n setInputText(formatTimeDisplay(internalTime));\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n\n return () =>\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n }, [open, internalTime, formatTimeDisplay]);\n\n const defaultPlaceholder = showSeconds\n ? format === \"12\"\n ? \"hh:mm:ss AA\"\n : \"HH:mm:ss\"\n : format === \"12\"\n ? \"hh:mm AA\"\n : \"HH:mm\";\n\n const handlePanelChange = (time: TimeValue) => {\n setInternalTime(time);\n setInputText(formatTimeDisplay(time));\n onChange?.(time);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const text = e.target.value;\n setInputText(text);\n\n const parsed = parseTimeString(text, format);\n if (parsed) {\n setInternalTime(parsed);\n onChange?.(parsed);\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n setInputText(formatTimeDisplay(internalTime));\n setOpen(false);\n } else if (e.key === \"Escape\") {\n setInputText(formatTimeDisplay(internalTime));\n setOpen(false);\n }\n };\n\n const handleInputFocus = () => {\n if (!open) setOpen(true);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n setInternalTime(null);\n setInputText(\"\");\n onChange?.({ hours: 0, minutes: 0, seconds: 0 });\n };\n\n const hasField = !!(label || error || helpText);\n const sizeConfig = SIZE_CONFIG[size];\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const triggerContent = (\n <Popover open={open}>\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full items-center gap-2 rounded-md border border-input bg-background pe-8 ps-3\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\",\n !!error && \"border-destructive ring-destructive/20 ring-3\",\n sizeConfig.trigger,\n !hasField && className\n )}\n >\n {timezone ? (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground\">\n {timezone.toUpperCase()}\n </span>\n ) : (\n <Clock\n className={cn(\n \"shrink-0 text-muted-foreground\",\n sizeConfig.icon\n )}\n />\n )}\n <input\n type=\"text\"\n disabled={disabled}\n aria-label={label || \"Pick a time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? defaultPlaceholder}\n value={inputText}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n onFocus={handleInputFocus}\n className={cn(\n \"min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed\",\n sizeConfig.trigger.split(\" \").find(c => c.startsWith(\"text-\"))\n )}\n />\n <button\n type=\"button\"\n onPointerDown={e => e.preventDefault()}\n onClick={handleClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(inputText && !disabled) && \"invisible\"\n )}\n aria-label=\"Clear time\"\n tabIndex={-1}\n >\n <X className={sizeConfig.icon} />\n </button>\n </div>\n </PopoverAnchor>\n {open && (\n <PopoverContent\n id={popoverContentId}\n className=\"w-auto p-0\"\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <TimePickerPanel\n value={internalTime ?? undefined}\n onChange={handlePanelChange}\n format={format}\n showSeconds={showSeconds}\n minuteStep={minuteStep}\n secondStep={secondStep}\n disabled={disabled}\n />\n </PopoverContent>\n )}\n </Popover>\n );\n\n if (!hasField) {\n return (\n <div ref={ref} className={className}>\n {triggerContent}\n </div>\n );\n }\n\n return (\n <Field\n ref={ref}\n data-disabled={disabled || undefined}\n data-invalid={!!error || undefined}\n className={className}\n >\n {label && (\n <FieldLabel\n {...(labelProps as React.ComponentProps<typeof FieldLabel>)}\n >\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <FieldContent>\n {triggerContent}\n {!!error && <FieldError id={errorId}>{error}</FieldError>}\n {helpText && (\n <FieldDescription id={helpTextId}>{helpText}</FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n"],"names":["createLucideIcon","forwardRef","useId","useRef","useState","useCallback","dateToTimeValue","to12Hour","padNumber","useEffect","parseTimeString","_jsxs","Popover","_jsx","PopoverAnchor","cn","X","PopoverContent","TimePickerPanel","Field","FieldLabel","FieldContent","FieldError","FieldDescription"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,132 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var utils = require('./utils-CTr7wn5d.js');
6
+ var primitives_Button = require('./primitives/Button.js');
7
+ var primitives_ScrollArea = require('./primitives/ScrollArea.js');
8
+
9
+ const COLUMN_HEIGHT = 224;
10
+ const ITEM_HEIGHT = 32;
11
+ const PERIODS = ["AM", "PM"];
12
+
13
+ const generateRange = (start, end, step = 1) => {
14
+ const result = [];
15
+ for (let i = start; i <= end; i += step) {
16
+ result.push(i);
17
+ }
18
+ return result;
19
+ };
20
+ const to12Hour = (hour24) => {
21
+ const period = hour24 >= 12 ? "PM" : "AM";
22
+ const hour12 = hour24 % 12 || 12;
23
+ return { hour12, period };
24
+ };
25
+ const to24Hour = (hour12, period) => {
26
+ if (period === "AM") {
27
+ return hour12 === 12 ? 0 : hour12;
28
+ }
29
+ return hour12 === 12 ? 12 : hour12 + 12;
30
+ };
31
+ const dateToTimeValue = (date) => ({
32
+ hours: date.getHours(),
33
+ minutes: date.getMinutes(),
34
+ seconds: date.getSeconds(),
35
+ });
36
+ const padNumber = (num, length = 2) => String(num).padStart(length, "0");
37
+ const parseTimeString = (input, format) => {
38
+ const trimmed = input.trim();
39
+ if (!trimmed)
40
+ return null;
41
+ if (format === "12") {
42
+ // Accept: "2:30 PM", "02:30 PM", "2:3 PM", "2:30:15 PM"
43
+ const match = trimmed.match(/^(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?\s*(AM|PM)$/i);
44
+ if (!match)
45
+ return null;
46
+ const hour12 = parseInt(match[1], 10);
47
+ const minutes = parseInt(match[2], 10);
48
+ const seconds = match[3] ? parseInt(match[3], 10) : 0;
49
+ const period = match[4].toUpperCase();
50
+ if (hour12 < 1 || hour12 > 12 || minutes > 59 || seconds > 59)
51
+ return null;
52
+ return { hours: to24Hour(hour12, period), minutes, seconds };
53
+ }
54
+ // Accept: "14:3", "14:30", "2:5", "14:30:05"
55
+ const match = trimmed.match(/^(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/);
56
+ if (!match)
57
+ return null;
58
+ const hours = parseInt(match[1], 10);
59
+ const minutes = parseInt(match[2], 10);
60
+ const seconds = match[3] ? parseInt(match[3], 10) : 0;
61
+ if (hours > 23 || minutes > 59 || seconds > 59)
62
+ return null;
63
+ return { hours, minutes, seconds };
64
+ };
65
+
66
+ const TimeColumn = ({ items, selected, onSelect, disabled = false, className, padStart = 2, }) => {
67
+ const selectedRef = React.useRef(null);
68
+ React.useEffect(() => {
69
+ if (selectedRef.current) {
70
+ selectedRef.current.scrollIntoView({
71
+ block: "center",
72
+ behavior: "smooth",
73
+ });
74
+ }
75
+ }, [selected]);
76
+ return (jsxRuntime.jsx(primitives_ScrollArea.ScrollArea, { className: utils.cn("w-16", className), style: { height: COLUMN_HEIGHT }, children: jsxRuntime.jsx("div", { className: "flex flex-col items-center py-2", role: "listbox", "aria-label": "Time selection", children: items.map(item => {
77
+ const isSelected = item === selected;
78
+ const displayValue = typeof item === "number" ? padNumber(item, padStart) : item;
79
+ return (jsxRuntime.jsx(primitives_Button.Button, { ref: isSelected ? selectedRef : undefined, variant: isSelected ? "default" : "ghost", size: "sm", role: "option", "aria-selected": isSelected, disabled: disabled, className: utils.cn("w-12 justify-center font-mono text-sm", !isSelected && "text-muted-foreground"), style: { height: ITEM_HEIGHT }, onClick: () => onSelect(item), children: displayValue }, item));
80
+ }) }) }));
81
+ };
82
+ TimeColumn.displayName = "TimeColumn";
83
+
84
+ const TimePickerPanel = React.forwardRef(({ value, onChange, format = "24", showSeconds = false, minuteStep = 1, secondStep = 1, disabled = false, className, }, ref) => {
85
+ const getInitialTime = React.useCallback(() => ({
86
+ hours: value?.hours ?? 0,
87
+ minutes: value?.minutes ?? 0,
88
+ seconds: value?.seconds ?? 0,
89
+ }), [value]);
90
+ const [internalTime, setInternalTime] = React.useState(getInitialTime);
91
+ React.useEffect(() => {
92
+ setInternalTime(getInitialTime());
93
+ }, [getInitialTime]);
94
+ const hours = format === "12" ? generateRange(1, 12) : generateRange(0, 23);
95
+ const minutes = generateRange(0, 59, minuteStep);
96
+ const seconds = generateRange(0, 59, secondStep);
97
+ const { hour12, period } = format === "12"
98
+ ? to12Hour(internalTime.hours)
99
+ : { hour12: internalTime.hours, period: "AM" };
100
+ const handleHourSelect = (hourValue) => {
101
+ const hour = Number(hourValue);
102
+ const newHours = format === "12" ? to24Hour(hour, period) : hour;
103
+ const newTime = { ...internalTime, hours: newHours };
104
+ setInternalTime(newTime);
105
+ onChange?.(newTime);
106
+ };
107
+ const handleMinuteSelect = (minuteValue) => {
108
+ const newTime = { ...internalTime, minutes: Number(minuteValue) };
109
+ setInternalTime(newTime);
110
+ onChange?.(newTime);
111
+ };
112
+ const handleSecondSelect = (secondValue) => {
113
+ const newTime = { ...internalTime, seconds: Number(secondValue) };
114
+ setInternalTime(newTime);
115
+ onChange?.(newTime);
116
+ };
117
+ const handlePeriodSelect = (newPeriod) => {
118
+ const newHours = to24Hour(hour12, newPeriod);
119
+ const newTime = { ...internalTime, hours: newHours };
120
+ setInternalTime(newTime);
121
+ onChange?.(newTime);
122
+ };
123
+ return (jsxRuntime.jsxs("div", { ref: ref, className: utils.cn("flex", className), role: "group", "aria-label": "Time picker", children: [jsxRuntime.jsx(TimeColumn, { items: hours, selected: format === "12" ? hour12 : internalTime.hours, onSelect: handleHourSelect, disabled: disabled }), jsxRuntime.jsx("div", { className: "border-inline-end border-border" }), jsxRuntime.jsx(TimeColumn, { items: minutes, selected: internalTime.minutes, onSelect: handleMinuteSelect, disabled: disabled }), showSeconds && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: "border-inline-end border-border" }), jsxRuntime.jsx(TimeColumn, { items: seconds, selected: internalTime.seconds ?? 0, onSelect: handleSecondSelect, disabled: disabled })] })), format === "12" && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: "border-inline-end border-border" }), jsxRuntime.jsx(TimeColumn, { items: [...PERIODS], selected: period, onSelect: handlePeriodSelect, disabled: disabled, padStart: 0 })] }))] }));
124
+ });
125
+ TimePickerPanel.displayName = "TimePickerPanel";
126
+
127
+ exports.TimePickerPanel = TimePickerPanel;
128
+ exports.dateToTimeValue = dateToTimeValue;
129
+ exports.padNumber = padNumber;
130
+ exports.parseTimeString = parseTimeString;
131
+ exports.to12Hour = to12Hour;
132
+ //# sourceMappingURL=TimePickerPanel-DGNr97cj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePickerPanel-DGNr97cj.js","sources":["../../../src/components/TimePicker/constants.ts","../../../src/components/TimePicker/utils.ts","../../../src/components/TimePicker/TimeColumn.tsx","../../../src/components/TimePicker/TimePickerPanel.tsx"],"sourcesContent":["export const COLUMN_HEIGHT = 224;\nexport const ITEM_HEIGHT = 32;\nexport const PERIODS = [\"AM\", \"PM\"] as const;\n","import type { TimeValue } from \"./types\";\n\nexport const generateRange = (\n start: number,\n end: number,\n step = 1\n): number[] => {\n const result: number[] = [];\n for (let i = start; i <= end; i += step) {\n result.push(i);\n }\n\n return result;\n};\n\nexport const to12Hour = (\n hour24: number\n): { hour12: number; period: \"AM\" | \"PM\" } => {\n const period = hour24 >= 12 ? \"PM\" : \"AM\";\n const hour12 = hour24 % 12 || 12;\n\n return { hour12, period };\n};\n\nexport const to24Hour = (hour12: number, period: \"AM\" | \"PM\"): number => {\n if (period === \"AM\") {\n return hour12 === 12 ? 0 : hour12;\n }\n\n return hour12 === 12 ? 12 : hour12 + 12;\n};\n\nexport const dateToTimeValue = (date: Date): TimeValue => ({\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n});\n\nexport const timeValueToDate = (date: Date, time: TimeValue): Date => {\n const result = new Date(date);\n result.setHours(time.hours, time.minutes, time.seconds ?? 0, 0);\n\n return result;\n};\n\nexport const padNumber = (num: number, length = 2): string =>\n String(num).padStart(length, \"0\");\n\nexport const parseTimeString = (\n input: string,\n format: \"12\" | \"24\"\n): TimeValue | null => {\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n if (format === \"12\") {\n // Accept: \"2:30 PM\", \"02:30 PM\", \"2:3 PM\", \"2:30:15 PM\"\n const match = trimmed.match(\n /^(\\d{1,2}):(\\d{1,2})(?::(\\d{1,2}))?\\s*(AM|PM)$/i\n );\n if (!match) return null;\n\n const hour12 = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n const seconds = match[3] ? parseInt(match[3], 10) : 0;\n const period = match[4].toUpperCase() as \"AM\" | \"PM\";\n\n if (hour12 < 1 || hour12 > 12 || minutes > 59 || seconds > 59) return null;\n\n return { hours: to24Hour(hour12, period), minutes, seconds };\n }\n\n // Accept: \"14:3\", \"14:30\", \"2:5\", \"14:30:05\"\n const match = trimmed.match(/^(\\d{1,2}):(\\d{1,2})(?::(\\d{1,2}))?$/);\n if (!match) return null;\n\n const hours = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n const seconds = match[3] ? parseInt(match[3], 10) : 0;\n\n if (hours > 23 || minutes > 59 || seconds > 59) return null;\n\n return { hours, minutes, seconds };\n};\n","import React, { useEffect, useRef } from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { ScrollArea } from \"src/primitives/ScrollArea\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { COLUMN_HEIGHT, ITEM_HEIGHT } from \"./constants\";\nimport { padNumber } from \"./utils\";\n\ninterface TimeColumnProps {\n items: (number | string)[];\n selected: number | string;\n onSelect: (value: number | string) => void;\n disabled?: boolean;\n className?: string;\n padStart?: number;\n}\n\nconst TimeColumn: React.FC<TimeColumnProps> = ({\n items,\n selected,\n onSelect,\n disabled = false,\n className,\n padStart = 2,\n}) => {\n const selectedRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (selectedRef.current) {\n selectedRef.current.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\",\n });\n }\n }, [selected]);\n\n return (\n <ScrollArea\n className={cn(\"w-16\", className)}\n style={{ height: COLUMN_HEIGHT }}\n >\n <div\n className=\"flex flex-col items-center py-2\"\n role=\"listbox\"\n aria-label=\"Time selection\"\n >\n {items.map(item => {\n const isSelected = item === selected;\n const displayValue =\n typeof item === \"number\" ? padNumber(item, padStart) : item;\n\n return (\n <Button\n key={item}\n ref={isSelected ? selectedRef : undefined}\n variant={isSelected ? \"default\" : \"ghost\"}\n size=\"sm\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={disabled}\n className={cn(\n \"w-12 justify-center font-mono text-sm\",\n !isSelected && \"text-muted-foreground\"\n )}\n style={{ height: ITEM_HEIGHT }}\n onClick={() => onSelect(item)}\n >\n {displayValue}\n </Button>\n );\n })}\n </div>\n </ScrollArea>\n );\n};\n\nTimeColumn.displayName = \"TimeColumn\";\n\nexport { TimeColumn };\n","import React, { forwardRef, useCallback, useEffect, useState } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { PERIODS } from \"./constants\";\nimport { TimeColumn } from \"./TimeColumn\";\nimport type { TimePickerPanelProps, TimeValue } from \"./types\";\nimport { generateRange, to12Hour, to24Hour } from \"./utils\";\n\nconst TimePickerPanel = forwardRef<HTMLDivElement, TimePickerPanelProps>(\n (\n {\n value,\n onChange,\n format = \"24\",\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n className,\n },\n ref\n ) => {\n const getInitialTime = useCallback(\n (): TimeValue => ({\n hours: value?.hours ?? 0,\n minutes: value?.minutes ?? 0,\n seconds: value?.seconds ?? 0,\n }),\n [value]\n );\n\n const [internalTime, setInternalTime] = useState<TimeValue>(getInitialTime);\n\n useEffect(() => {\n setInternalTime(getInitialTime());\n }, [getInitialTime]);\n\n const hours = format === \"12\" ? generateRange(1, 12) : generateRange(0, 23);\n const minutes = generateRange(0, 59, minuteStep);\n const seconds = generateRange(0, 59, secondStep);\n\n const { hour12, period } =\n format === \"12\"\n ? to12Hour(internalTime.hours)\n : { hour12: internalTime.hours, period: \"AM\" as const };\n\n const handleHourSelect = (hourValue: number | string) => {\n const hour = Number(hourValue);\n const newHours = format === \"12\" ? to24Hour(hour, period) : hour;\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleMinuteSelect = (minuteValue: number | string) => {\n const newTime = { ...internalTime, minutes: Number(minuteValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleSecondSelect = (secondValue: number | string) => {\n const newTime = { ...internalTime, seconds: Number(secondValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handlePeriodSelect = (newPeriod: number | string) => {\n const newHours = to24Hour(hour12, newPeriod as \"AM\" | \"PM\");\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex\", className)}\n role=\"group\"\n aria-label=\"Time picker\"\n >\n <TimeColumn\n items={hours}\n selected={format === \"12\" ? hour12 : internalTime.hours}\n onSelect={handleHourSelect}\n disabled={disabled}\n />\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={minutes}\n selected={internalTime.minutes}\n onSelect={handleMinuteSelect}\n disabled={disabled}\n />\n {showSeconds && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={seconds}\n selected={internalTime.seconds ?? 0}\n onSelect={handleSecondSelect}\n disabled={disabled}\n />\n </>\n )}\n {format === \"12\" && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={[...PERIODS]}\n selected={period}\n onSelect={handlePeriodSelect}\n disabled={disabled}\n padStart={0}\n />\n </>\n )}\n </div>\n );\n }\n);\n\nTimePickerPanel.displayName = \"TimePickerPanel\";\n\nexport { TimePickerPanel };\n"],"names":["useRef","useEffect","_jsx","ScrollArea","cn","Button","forwardRef","useCallback","useState","_jsxs","_Fragment"],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-Vlwnyfvs.js');
4
+
5
+ const activeToasts = new Set();
6
+ function toastKey(type, message, buttonLabel) {
7
+ return `${type}::${message}::${buttonLabel ?? ""}`;
8
+ }
9
+ function getContentDir() {
10
+ if (typeof document === "undefined")
11
+ return "ltr";
12
+ return (document.documentElement.getAttribute("dir") ??
13
+ document.body.getAttribute("dir") ??
14
+ "ltr");
15
+ }
16
+ function resolveMessage(message) {
17
+ if (typeof message === "string")
18
+ return message;
19
+ if (message && typeof message === "object") {
20
+ if (message.customMessage)
21
+ return message.customMessage;
22
+ if (message.notice)
23
+ return message.notice;
24
+ if (message.noticeCode)
25
+ return message.noticeCode;
26
+ }
27
+ return String(message);
28
+ }
29
+ function resolveErrorMessage(errorObject) {
30
+ if (typeof errorObject === "string")
31
+ return errorObject;
32
+ if (errorObject && typeof errorObject === "object") {
33
+ // Axios-style error
34
+ const axiosLike = errorObject;
35
+ if (axiosLike.response?.data) {
36
+ const data = axiosLike.response.data;
37
+ if (data.customMessage)
38
+ return String(data.customMessage);
39
+ if (data.error)
40
+ return String(data.error);
41
+ if (Array.isArray(data.errors))
42
+ return data.errors.join("\n");
43
+ if (data.noticeCode)
44
+ return String(data.noticeCode);
45
+ }
46
+ if (axiosLike.isAxiosError && axiosLike.message)
47
+ return axiosLike.message;
48
+ // Native Error
49
+ if (errorObject instanceof Error)
50
+ return errorObject.message;
51
+ // ToastrMessage object
52
+ return resolveMessage(errorObject);
53
+ }
54
+ return "Something went wrong.";
55
+ }
56
+ function showToast(type, message, config) {
57
+ const { buttonLabel, onClick, showIcon, ...restConfig } = config ?? {};
58
+ const key = toastKey(type, message, buttonLabel);
59
+ if (activeToasts.has(key))
60
+ return undefined;
61
+ activeToasts.add(key);
62
+ const options = {
63
+ onDismiss: () => activeToasts.delete(key),
64
+ onAutoClose: () => activeToasts.delete(key),
65
+ position: getContentDir() === "rtl" ? "bottom-right" : "bottom-left",
66
+ ...restConfig,
67
+ };
68
+ if (buttonLabel) {
69
+ options.action = {
70
+ label: buttonLabel,
71
+ onClick: onClick ?? (() => { }),
72
+ };
73
+ }
74
+ // When showIcon is explicitly false, hide the type icon
75
+ if (showIcon === false) {
76
+ options.icon = null;
77
+ }
78
+ return index.toast[type](message, options);
79
+ }
80
+ function parseConfig(args) {
81
+ if (args.length === 0)
82
+ return {};
83
+ const first = args[0];
84
+ if (typeof first === "object" && first !== null && !Array.isArray(first)) {
85
+ return first;
86
+ }
87
+ // Legacy positional args: buttonLabel, onClick, customConfig, showIcon
88
+ const [buttonLabel, onClick, customConfig, showIcon] = args;
89
+ return {
90
+ ...(buttonLabel ? { buttonLabel } : {}),
91
+ ...(onClick ? { onClick } : {}),
92
+ ...(showIcon !== undefined ? { showIcon } : {}),
93
+ ...(customConfig ?? {}),
94
+ };
95
+ }
96
+
97
+ const Toastr = {
98
+ success(message, ...args) {
99
+ return showToast("success", resolveMessage(message), parseConfig(args));
100
+ },
101
+ info(message, ...args) {
102
+ return showToast("info", resolveMessage(message), parseConfig(args));
103
+ },
104
+ show(message, ...args) {
105
+ return showToast("info", resolveMessage(message), parseConfig(args));
106
+ },
107
+ warning(message, ...args) {
108
+ return showToast("warning", resolveMessage(message), parseConfig(args));
109
+ },
110
+ error(errorObject, ...args) {
111
+ const msg = resolveErrorMessage(errorObject);
112
+ return showToast("error", msg, parseConfig(args));
113
+ },
114
+ };
115
+
116
+ exports.Toastr = Toastr;
117
+ //# sourceMappingURL=Toastr-BGp7-kmf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toastr-BGp7-kmf.js","sources":["../../../src/components/Toastr/utils.ts","../../../src/components/Toastr/Toastr.tsx"],"sourcesContent":["import { toast } from \"sonner\";\n\nimport type { ToastrConfig, ToastrErrorInput, ToastrMessage } from \"./Toastr\";\n\ntype SonnerType = \"success\" | \"info\" | \"warning\" | \"error\";\n\nconst activeToasts = new Set<string>();\n\nfunction toastKey(type: string, message: string, buttonLabel?: string): string {\n return `${type}::${message}::${buttonLabel ?? \"\"}`;\n}\n\nfunction getContentDir(): \"ltr\" | \"rtl\" {\n if (typeof document === \"undefined\") return \"ltr\";\n return (\n (document.documentElement.getAttribute(\"dir\") as \"ltr\" | \"rtl\") ??\n (document.body.getAttribute(\"dir\") as \"ltr\" | \"rtl\") ??\n \"ltr\"\n );\n}\n\nfunction resolveMessage(message: ToastrMessage): string {\n if (typeof message === \"string\") return message;\n if (message && typeof message === \"object\") {\n if (message.customMessage) return message.customMessage;\n if (message.notice) return message.notice;\n if (message.noticeCode) return message.noticeCode;\n }\n return String(message);\n}\n\nfunction resolveErrorMessage(errorObject: ToastrErrorInput): string {\n if (typeof errorObject === \"string\") return errorObject;\n\n if (errorObject && typeof errorObject === \"object\") {\n // Axios-style error\n const axiosLike = errorObject as {\n response?: { data?: Record<string, unknown> };\n message?: string;\n isAxiosError?: boolean;\n };\n\n if (axiosLike.response?.data) {\n const data = axiosLike.response.data;\n if (data.customMessage) return String(data.customMessage);\n if (data.error) return String(data.error);\n if (Array.isArray(data.errors)) return data.errors.join(\"\\n\");\n if (data.noticeCode) return String(data.noticeCode);\n }\n\n if (axiosLike.isAxiosError && axiosLike.message) return axiosLike.message;\n\n // Native Error\n if (errorObject instanceof Error) return errorObject.message;\n\n // ToastrMessage object\n return resolveMessage(errorObject as ToastrMessage);\n }\n\n return \"Something went wrong.\";\n}\n\nfunction showToast(\n type: SonnerType,\n message: string,\n config?: ToastrConfig\n): string | number | undefined {\n const { buttonLabel, onClick, showIcon, ...restConfig } = config ?? {};\n\n const key = toastKey(type, message, buttonLabel);\n\n if (activeToasts.has(key)) return undefined;\n activeToasts.add(key);\n\n const options: Record<string, unknown> = {\n onDismiss: () => activeToasts.delete(key),\n onAutoClose: () => activeToasts.delete(key),\n position: getContentDir() === \"rtl\" ? \"bottom-right\" : \"bottom-left\",\n ...restConfig,\n };\n\n if (buttonLabel) {\n options.action = {\n label: buttonLabel,\n onClick: onClick ?? (() => {}),\n };\n }\n\n // When showIcon is explicitly false, hide the type icon\n if (showIcon === false) {\n options.icon = null;\n }\n\n return toast[type](message, options);\n}\n\nfunction parseConfig(args: unknown[]): ToastrConfig {\n if (args.length === 0) return {};\n\n const first = args[0];\n if (typeof first === \"object\" && first !== null && !Array.isArray(first)) {\n return first as ToastrConfig;\n }\n\n // Legacy positional args: buttonLabel, onClick, customConfig, showIcon\n const [buttonLabel, onClick, customConfig, showIcon] = args as [\n string?,\n (() => void)?,\n Record<string, unknown>?,\n boolean?,\n ];\n\n return {\n ...(buttonLabel ? { buttonLabel } : {}),\n ...(onClick ? { onClick } : {}),\n ...(showIcon !== undefined ? { showIcon } : {}),\n ...(customConfig ?? {}),\n };\n}\n\nexport {\n activeToasts,\n getContentDir,\n parseConfig,\n resolveErrorMessage,\n resolveMessage,\n showToast,\n toastKey,\n};\n","import {\n parseConfig,\n resolveErrorMessage,\n resolveMessage,\n showToast,\n} from \"./utils\";\n\nexport interface ToastrConfig {\n /** Label for an action button inside the toast. */\n buttonLabel?: string;\n /** Callback when the action button is clicked. */\n onClick?: () => void;\n /** Whether to show the type icon in the toast. */\n showIcon?: boolean;\n /** Additional sonner toast options (duration, position, dismissible, etc.). */\n [key: string]: unknown;\n}\n\nexport type ToastrMessage =\n | string\n | { noticeCode?: string; customMessage?: string; notice?: string };\n\nexport type ToastrErrorInput =\n | string\n | Error\n | {\n response?: { data?: Record<string, unknown> };\n message?: string;\n isAxiosError?: boolean;\n }\n | ToastrMessage;\n\nconst Toastr = {\n success(message: ToastrMessage, ...args: unknown[]) {\n return showToast(\"success\", resolveMessage(message), parseConfig(args));\n },\n\n info(message: ToastrMessage, ...args: unknown[]) {\n return showToast(\"info\", resolveMessage(message), parseConfig(args));\n },\n\n show(message: ToastrMessage, ...args: unknown[]) {\n return showToast(\"info\", resolveMessage(message), parseConfig(args));\n },\n\n warning(message: ToastrMessage, ...args: unknown[]) {\n return showToast(\"warning\", resolveMessage(message), parseConfig(args));\n },\n\n error(errorObject: ToastrErrorInput, ...args: unknown[]) {\n const msg = resolveErrorMessage(errorObject);\n return showToast(\"error\", msg, parseConfig(args));\n },\n};\n\nexport { Toastr };\n"],"names":["toast"],"mappings":"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"}