@solace-health/ui 0.10.689 → 0.10.690

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 (392) hide show
  1. package/dist/Animate/style.cjs +2 -2
  2. package/dist/Animate/style.js +1 -1
  3. package/dist/Avatar/index.cjs +1 -1
  4. package/dist/Avatar/index.js +1 -1
  5. package/dist/Avatar/style.cjs +1 -1
  6. package/dist/Avatar/style.js +1 -1
  7. package/dist/BackLink/BackLink.cjs +1 -1
  8. package/dist/BackLink/BackLink.js +1 -1
  9. package/dist/Card/illustrations/Clock.cjs +1 -1
  10. package/dist/Card/illustrations/Clock.js +1 -1
  11. package/dist/Card/illustrations/Coffee.cjs +1 -1
  12. package/dist/Card/illustrations/Coffee.js +1 -1
  13. package/dist/Card/illustrations/Laptop.cjs +1 -1
  14. package/dist/Card/illustrations/Laptop.js +1 -1
  15. package/dist/Card/illustrations/Medication.cjs +1 -1
  16. package/dist/Card/illustrations/Medication.js +1 -1
  17. package/dist/Card/illustrations/Notepad.cjs +1 -1
  18. package/dist/Card/illustrations/Notepad.js +1 -1
  19. package/dist/Card/illustrations/index.cjs +1 -1
  20. package/dist/Card/illustrations/index.js +1 -1
  21. package/dist/Card/index.cjs +1 -1
  22. package/dist/Card/index.js +1 -1
  23. package/dist/Checkbox/index.cjs +1 -1
  24. package/dist/Checkbox/index.js +1 -1
  25. package/dist/Checkbox/style.cjs +1 -1
  26. package/dist/Checkbox/style.js +1 -1
  27. package/dist/DateDropdown/index.cjs +1 -1
  28. package/dist/DateDropdown/index.js +1 -1
  29. package/dist/DateSelectCalendar/DateSelectCalendar.cjs +1 -1
  30. package/dist/DateSelectCalendar/DateSelectCalendar.js +1 -1
  31. package/dist/Error/index.cjs +1 -1
  32. package/dist/Error/index.js +1 -1
  33. package/dist/ExpandableDrawer/index.cjs +1 -1
  34. package/dist/ExpandableDrawer/index.js +1 -1
  35. package/dist/File/index.cjs +1 -1
  36. package/dist/File/index.js +1 -1
  37. package/dist/Form/AddressSelect/index.cjs +1 -1
  38. package/dist/Form/AddressSelect/index.js +1 -1
  39. package/dist/Form/Checkbox/index.cjs +1 -1
  40. package/dist/Form/Checkbox/index.js +1 -1
  41. package/dist/Form/Checkbox/styles.cjs +1 -1
  42. package/dist/Form/Checkbox/styles.js +1 -1
  43. package/dist/Form/DateDropdown/index.cjs +1 -1
  44. package/dist/Form/DateDropdown/index.js +1 -1
  45. package/dist/Form/DateDropdown/styles.cjs +1 -1
  46. package/dist/Form/DateDropdown/styles.js +1 -1
  47. package/dist/Form/DateSelect/index.cjs +1 -1
  48. package/dist/Form/DateSelect/index.js +1 -1
  49. package/dist/Form/DateTextMaskInput/index.cjs +1 -1
  50. package/dist/Form/DateTextMaskInput/index.js +1 -1
  51. package/dist/Form/FileUpload/index.cjs +1 -1
  52. package/dist/Form/FileUpload/index.js +1 -1
  53. package/dist/Form/FileUpload/styles.cjs +1 -1
  54. package/dist/Form/FileUpload/styles.js +1 -1
  55. package/dist/Form/Keyword/index.cjs +1 -1
  56. package/dist/Form/Keyword/index.js +1 -1
  57. package/dist/Form/LocationSelect/index.cjs +1 -1
  58. package/dist/Form/LocationSelect/index.js +1 -1
  59. package/dist/Form/LocationSelect/style.cjs +1 -1
  60. package/dist/Form/LocationSelect/style.js +1 -1
  61. package/dist/Form/Number/index.cjs +1 -1
  62. package/dist/Form/Number/index.js +1 -1
  63. package/dist/Form/OTP/index.cjs +1 -1
  64. package/dist/Form/OTP/index.js +1 -1
  65. package/dist/Form/Radio/index.cjs +1 -1
  66. package/dist/Form/Radio/index.js +1 -1
  67. package/dist/Form/Radio/styles.cjs +1 -1
  68. package/dist/Form/Radio/styles.js +1 -1
  69. package/dist/Form/Select/index.cjs +1 -1
  70. package/dist/Form/Select/index.js +1 -1
  71. package/dist/Form/Select/styles.cjs +1 -1
  72. package/dist/Form/Select/styles.js +1 -1
  73. package/dist/Form/SelectMenu/index.cjs +1 -1
  74. package/dist/Form/SelectMenu/index.js +1 -1
  75. package/dist/Form/SentimentSelector/index.cjs +1 -1
  76. package/dist/Form/SentimentSelector/index.js +1 -1
  77. package/dist/Form/Signature/index.cjs +1 -1
  78. package/dist/Form/Signature/index.js +1 -1
  79. package/dist/Form/Signature/styles.cjs +1 -1
  80. package/dist/Form/Signature/styles.js +1 -1
  81. package/dist/Form/Text/index.cjs +1 -1
  82. package/dist/Form/Text/index.js +1 -1
  83. package/dist/Form/TextInput/index.cjs +1 -1
  84. package/dist/Form/TextInput/index.js +1 -1
  85. package/dist/Form/TextInput/styles.cjs +1 -1
  86. package/dist/Form/TextInput/styles.js +1 -1
  87. package/dist/Form/TimePicker/index.cjs +1 -1
  88. package/dist/Form/TimePicker/index.js +1 -1
  89. package/dist/Form/TimeSelect/index.cjs +1 -1
  90. package/dist/Form/TimeSelect/index.js +1 -1
  91. package/dist/Form/Tree/index.cjs +1 -1
  92. package/dist/Form/Tree/index.js +1 -1
  93. package/dist/Form/index.cjs +1 -1
  94. package/dist/Form/index.js +1 -1
  95. package/dist/Form/shared/FormInputLabel.cjs +1 -1
  96. package/dist/Form/shared/FormInputLabel.js +1 -1
  97. package/dist/Form/shared/HelpModal.cjs +1 -1
  98. package/dist/Form/shared/HelpModal.js +1 -1
  99. package/dist/Form/shared/styles.cjs +1 -1
  100. package/dist/Form/shared/styles.js +1 -1
  101. package/dist/IconSelector/IconSelector.cjs +1 -1
  102. package/dist/IconSelector/IconSelector.js +1 -1
  103. package/dist/Icons/index.cjs +1 -1
  104. package/dist/Icons/index.js +1 -1
  105. package/dist/Illustration/index.cjs +1 -1
  106. package/dist/Illustration/index.js +1 -1
  107. package/dist/InfoContainer/index.cjs +1 -1
  108. package/dist/InfoContainer/index.js +1 -1
  109. package/dist/InfoContainer/style.cjs +1 -1
  110. package/dist/InfoContainer/style.js +1 -1
  111. package/dist/Input/index.cjs +1 -1
  112. package/dist/Input/index.js +1 -1
  113. package/dist/Menu/ExpandIcon.cjs +1 -1
  114. package/dist/Menu/ExpandIcon.js +1 -1
  115. package/dist/Menu/index.cjs +1 -1
  116. package/dist/Menu/index.js +1 -1
  117. package/dist/Molecules/ButtonWithIcon/index.cjs +1 -1
  118. package/dist/Molecules/ButtonWithIcon/index.js +1 -1
  119. package/dist/Molecules/ButtonWithIcon/style.cjs +1 -1
  120. package/dist/Molecules/ButtonWithIcon/style.js +1 -1
  121. package/dist/Molecules/FilterPopover/FiltersMenu/FiltersMenu.cjs +1 -1
  122. package/dist/Molecules/FilterPopover/FiltersMenu/FiltersMenu.js +1 -1
  123. package/dist/Molecules/FilterPopover/index.cjs +1 -1
  124. package/dist/Molecules/FilterPopover/index.js +1 -1
  125. package/dist/NavigationMenu/ExpandIcon.cjs +1 -1
  126. package/dist/NavigationMenu/ExpandIcon.js +1 -1
  127. package/dist/NavigationMenu/index.cjs +1 -1
  128. package/dist/NavigationMenu/index.js +1 -1
  129. package/dist/Overlay/OverlayTitle.cjs +1 -1
  130. package/dist/Overlay/OverlayTitle.js +1 -1
  131. package/dist/PreviewDrawer/PreviewDrawer.cjs +1 -1
  132. package/dist/PreviewDrawer/PreviewDrawer.js +1 -1
  133. package/dist/Radio/index.cjs +1 -1
  134. package/dist/Radio/index.js +1 -1
  135. package/dist/Radio/style.cjs +1 -1
  136. package/dist/Radio/style.js +1 -1
  137. package/dist/Search/index.cjs +1 -1
  138. package/dist/Search/index.js +1 -1
  139. package/dist/SelectClient/index.cjs +2 -2
  140. package/dist/SelectClient/index.js +1 -1
  141. package/dist/SentimentSelector/index.cjs +1 -1
  142. package/dist/SentimentSelector/index.js +1 -1
  143. package/dist/SortableList/index.cjs +1 -1
  144. package/dist/SortableList/index.js +1 -1
  145. package/dist/Table/index.cjs +1 -1
  146. package/dist/Table/index.js +1 -1
  147. package/dist/TimeSelect/styles.cjs +4 -4
  148. package/dist/TimeSelect/styles.js +1 -1
  149. package/dist/Tree/index.cjs +1 -1
  150. package/dist/Tree/index.js +1 -1
  151. package/dist/Typography/Body/index.stories.cjs +1 -1
  152. package/dist/Typography/Body/index.stories.js +1 -1
  153. package/dist/Typography/Display/index.stories.cjs +1 -1
  154. package/dist/Typography/Display/index.stories.js +1 -1
  155. package/dist/Typography/Header/index.stories.cjs +1 -1
  156. package/dist/Typography/Header/index.stories.js +1 -1
  157. package/dist/Typography/Truncated/index.stories.cjs +1 -1
  158. package/dist/Typography/Truncated/index.stories.js +1 -1
  159. package/dist/Typography/index.cjs +1 -1
  160. package/dist/Typography/index.js +1 -1
  161. package/dist/VantaLogo/index.cjs +1 -1
  162. package/dist/VantaLogo/index.js +1 -1
  163. package/dist/assets/styles/tailwindTheme.css +4 -0
  164. package/dist/chunk-235PPUQG.cjs +2 -0
  165. package/dist/{chunk-S5RP7WP6.cjs.map → chunk-235PPUQG.cjs.map} +1 -1
  166. package/dist/{chunk-HCMJMPCZ.cjs → chunk-2KZYFEKJ.cjs} +3 -3
  167. package/dist/{chunk-HCMJMPCZ.cjs.map → chunk-2KZYFEKJ.cjs.map} +1 -1
  168. package/dist/{chunk-OLSQSENG.cjs → chunk-37ZBWDAM.cjs} +4 -4
  169. package/dist/{chunk-OLSQSENG.cjs.map → chunk-37ZBWDAM.cjs.map} +1 -1
  170. package/dist/{chunk-VEWNFQHY.cjs → chunk-3FZJQG2B.cjs} +2 -2
  171. package/dist/{chunk-VEWNFQHY.cjs.map → chunk-3FZJQG2B.cjs.map} +1 -1
  172. package/dist/{chunk-TN52VRCL.js → chunk-3G7SS66G.js} +3 -3
  173. package/dist/{chunk-TN52VRCL.js.map → chunk-3G7SS66G.js.map} +1 -1
  174. package/dist/{chunk-GXFQI54D.cjs → chunk-3GIDWNKV.cjs} +2 -2
  175. package/dist/{chunk-GXFQI54D.cjs.map → chunk-3GIDWNKV.cjs.map} +1 -1
  176. package/dist/{chunk-OM3Q2L5Q.js → chunk-423PLNWS.js} +2 -2
  177. package/dist/{chunk-OM3Q2L5Q.js.map → chunk-423PLNWS.js.map} +1 -1
  178. package/dist/{chunk-NYTBUWDI.cjs → chunk-4KPX5CGU.cjs} +2 -2
  179. package/dist/{chunk-NYTBUWDI.cjs.map → chunk-4KPX5CGU.cjs.map} +1 -1
  180. package/dist/chunk-4NKACID5.js +2 -0
  181. package/dist/{chunk-IFGTEXJY.js.map → chunk-4NKACID5.js.map} +1 -1
  182. package/dist/{chunk-QZUVN273.js → chunk-4XCWRXFC.js} +3 -3
  183. package/dist/{chunk-QZUVN273.js.map → chunk-4XCWRXFC.js.map} +1 -1
  184. package/dist/{chunk-KMSGL5NL.cjs → chunk-5HEV6W56.cjs} +4 -4
  185. package/dist/{chunk-KMSGL5NL.cjs.map → chunk-5HEV6W56.cjs.map} +1 -1
  186. package/dist/{chunk-GKNMP3SV.js → chunk-6QK6I5EA.js} +3 -3
  187. package/dist/{chunk-GKNMP3SV.js.map → chunk-6QK6I5EA.js.map} +1 -1
  188. package/dist/{chunk-HESPDH7F.js → chunk-6RXIAXFG.js} +2 -2
  189. package/dist/{chunk-HESPDH7F.js.map → chunk-6RXIAXFG.js.map} +1 -1
  190. package/dist/{chunk-ATVHJXYR.cjs → chunk-6W3BDNS5.cjs} +4 -4
  191. package/dist/{chunk-ATVHJXYR.cjs.map → chunk-6W3BDNS5.cjs.map} +1 -1
  192. package/dist/{chunk-BMYWJ2AF.js → chunk-73MK7SSN.js} +2 -2
  193. package/dist/{chunk-BMYWJ2AF.js.map → chunk-73MK7SSN.js.map} +1 -1
  194. package/dist/{chunk-LT74ZCYF.js → chunk-7HNYJJ7D.js} +3 -3
  195. package/dist/{chunk-LT74ZCYF.js.map → chunk-7HNYJJ7D.js.map} +1 -1
  196. package/dist/{chunk-6RALAWQM.js → chunk-AGYGDR6Q.js} +3 -3
  197. package/dist/{chunk-6RALAWQM.js.map → chunk-AGYGDR6Q.js.map} +1 -1
  198. package/dist/{chunk-O43APBND.js → chunk-BBAPBMNZ.js} +2 -2
  199. package/dist/{chunk-O43APBND.js.map → chunk-BBAPBMNZ.js.map} +1 -1
  200. package/dist/chunk-BDFUOPI3.cjs +2 -0
  201. package/dist/{chunk-GA6MRNGB.cjs.map → chunk-BDFUOPI3.cjs.map} +1 -1
  202. package/dist/{chunk-WTGHWP7T.cjs → chunk-BFHEVJNW.cjs} +2 -2
  203. package/dist/{chunk-WTGHWP7T.cjs.map → chunk-BFHEVJNW.cjs.map} +1 -1
  204. package/dist/{chunk-BACT2F73.cjs → chunk-CUHDYBE2.cjs} +4 -4
  205. package/dist/{chunk-BACT2F73.cjs.map → chunk-CUHDYBE2.cjs.map} +1 -1
  206. package/dist/{chunk-KEYF7NZY.js → chunk-D7LFSLIU.js} +3 -3
  207. package/dist/{chunk-KEYF7NZY.js.map → chunk-D7LFSLIU.js.map} +1 -1
  208. package/dist/{chunk-CAHCYVFJ.cjs → chunk-DICQABMR.cjs} +4 -4
  209. package/dist/{chunk-CAHCYVFJ.cjs.map → chunk-DICQABMR.cjs.map} +1 -1
  210. package/dist/{chunk-HEL72LHE.cjs → chunk-DUCZWW5U.cjs} +5 -5
  211. package/dist/{chunk-HEL72LHE.cjs.map → chunk-DUCZWW5U.cjs.map} +1 -1
  212. package/dist/{chunk-NN627YY4.cjs → chunk-EBXW2SLV.cjs} +2 -2
  213. package/dist/{chunk-NN627YY4.cjs.map → chunk-EBXW2SLV.cjs.map} +1 -1
  214. package/dist/chunk-EJVR3XRG.cjs +2 -0
  215. package/dist/chunk-EJVR3XRG.cjs.map +1 -0
  216. package/dist/{chunk-KJ6SBPS3.cjs → chunk-F67MXJ2E.cjs} +2 -2
  217. package/dist/{chunk-KJ6SBPS3.cjs.map → chunk-F67MXJ2E.cjs.map} +1 -1
  218. package/dist/{chunk-LXRAIIGD.cjs → chunk-FQRTURQN.cjs} +10 -10
  219. package/dist/{chunk-LXRAIIGD.cjs.map → chunk-FQRTURQN.cjs.map} +1 -1
  220. package/dist/{chunk-QKH3FV44.js → chunk-GE7ZHYHF.js} +2 -2
  221. package/dist/{chunk-QKH3FV44.js.map → chunk-GE7ZHYHF.js.map} +1 -1
  222. package/dist/{chunk-SWPS26TU.cjs → chunk-GGUOYLDM.cjs} +5 -5
  223. package/dist/{chunk-SWPS26TU.cjs.map → chunk-GGUOYLDM.cjs.map} +1 -1
  224. package/dist/{chunk-7OKSLNLM.js → chunk-HLHHTNKY.js} +3 -3
  225. package/dist/{chunk-7OKSLNLM.js.map → chunk-HLHHTNKY.js.map} +1 -1
  226. package/dist/chunk-HMLC4WBV.js +2 -0
  227. package/dist/{chunk-EANBBNS3.js.map → chunk-HMLC4WBV.js.map} +1 -1
  228. package/dist/{chunk-G4NTJXGK.cjs → chunk-IBQWP337.cjs} +2 -2
  229. package/dist/{chunk-G4NTJXGK.cjs.map → chunk-IBQWP337.cjs.map} +1 -1
  230. package/dist/{chunk-3KO6CKKG.cjs → chunk-J7PDITKU.cjs} +4 -4
  231. package/dist/{chunk-3KO6CKKG.cjs.map → chunk-J7PDITKU.cjs.map} +1 -1
  232. package/dist/{chunk-ITSXBXNL.cjs → chunk-KCAUXXHX.cjs} +5 -5
  233. package/dist/{chunk-ITSXBXNL.cjs.map → chunk-KCAUXXHX.cjs.map} +1 -1
  234. package/dist/{chunk-26AWTUM2.js → chunk-KCR4MI3K.js} +3 -3
  235. package/dist/{chunk-26AWTUM2.js.map → chunk-KCR4MI3K.js.map} +1 -1
  236. package/dist/{chunk-P4TOP5DA.cjs → chunk-KJULJRWW.cjs} +2 -2
  237. package/dist/{chunk-P4TOP5DA.cjs.map → chunk-KJULJRWW.cjs.map} +1 -1
  238. package/dist/{chunk-JTOJMLMA.js → chunk-KPBWHCJ2.js} +2 -2
  239. package/dist/{chunk-JTOJMLMA.js.map → chunk-KPBWHCJ2.js.map} +1 -1
  240. package/dist/{chunk-BINN2QL2.cjs → chunk-KUVXQ3QB.cjs} +5 -5
  241. package/dist/{chunk-BINN2QL2.cjs.map → chunk-KUVXQ3QB.cjs.map} +1 -1
  242. package/dist/{chunk-PRQHLEQJ.js → chunk-L6YTU45G.js} +2 -2
  243. package/dist/{chunk-PRQHLEQJ.js.map → chunk-L6YTU45G.js.map} +1 -1
  244. package/dist/{chunk-C33TQBWM.cjs → chunk-LDRMLLKD.cjs} +3 -3
  245. package/dist/{chunk-C33TQBWM.cjs.map → chunk-LDRMLLKD.cjs.map} +1 -1
  246. package/dist/{chunk-IHOXNPOV.js → chunk-LR2FXFVC.js} +2 -2
  247. package/dist/{chunk-IHOXNPOV.js.map → chunk-LR2FXFVC.js.map} +1 -1
  248. package/dist/{chunk-QN6ZLLO3.js → chunk-LU4YBIG2.js} +2 -2
  249. package/dist/{chunk-QN6ZLLO3.js.map → chunk-LU4YBIG2.js.map} +1 -1
  250. package/dist/{chunk-FTPAMVPB.cjs → chunk-LVCOLESY.cjs} +2 -2
  251. package/dist/{chunk-FTPAMVPB.cjs.map → chunk-LVCOLESY.cjs.map} +1 -1
  252. package/dist/{chunk-J2LGWFLN.cjs → chunk-MCWOWMO7.cjs} +2 -2
  253. package/dist/{chunk-J2LGWFLN.cjs.map → chunk-MCWOWMO7.cjs.map} +1 -1
  254. package/dist/{chunk-QA5JXTX4.js → chunk-MESFO57T.js} +2 -2
  255. package/dist/{chunk-QA5JXTX4.js.map → chunk-MESFO57T.js.map} +1 -1
  256. package/dist/chunk-N53WJOKF.js +2 -0
  257. package/dist/{chunk-IN7MQOHF.js.map → chunk-N53WJOKF.js.map} +1 -1
  258. package/dist/{chunk-4LUT5BLZ.js → chunk-OEBWDDEI.js} +3 -3
  259. package/dist/{chunk-4LUT5BLZ.js.map → chunk-OEBWDDEI.js.map} +1 -1
  260. package/dist/{chunk-MCZJEAEQ.js → chunk-OMP4PKTZ.js} +2 -2
  261. package/dist/{chunk-MCZJEAEQ.js.map → chunk-OMP4PKTZ.js.map} +1 -1
  262. package/dist/{chunk-57TQHFOX.js → chunk-OS3C4IYO.js} +3 -3
  263. package/dist/{chunk-57TQHFOX.js.map → chunk-OS3C4IYO.js.map} +1 -1
  264. package/dist/{chunk-XN7TZP35.js → chunk-QFJFQRIG.js} +2 -2
  265. package/dist/{chunk-XN7TZP35.js.map → chunk-QFJFQRIG.js.map} +1 -1
  266. package/dist/{chunk-MFPBIU7U.cjs → chunk-QNRAGVW4.cjs} +2 -2
  267. package/dist/{chunk-MFPBIU7U.cjs.map → chunk-QNRAGVW4.cjs.map} +1 -1
  268. package/dist/chunk-RJWUWZ7X.cjs +2 -0
  269. package/dist/{chunk-RNEJ3X5S.cjs.map → chunk-RJWUWZ7X.cjs.map} +1 -1
  270. package/dist/{chunk-XRFMBGKD.cjs → chunk-SDDUYEAZ.cjs} +4 -4
  271. package/dist/{chunk-XRFMBGKD.cjs.map → chunk-SDDUYEAZ.cjs.map} +1 -1
  272. package/dist/{chunk-AEW7XUUN.cjs → chunk-SJ5MNA6P.cjs} +2 -2
  273. package/dist/{chunk-AEW7XUUN.cjs.map → chunk-SJ5MNA6P.cjs.map} +1 -1
  274. package/dist/{chunk-637KMRX5.cjs → chunk-SO3DVCCI.cjs} +3 -3
  275. package/dist/{chunk-637KMRX5.cjs.map → chunk-SO3DVCCI.cjs.map} +1 -1
  276. package/dist/{chunk-335TK4HI.js → chunk-TDKHKKUE.js} +3 -3
  277. package/dist/{chunk-335TK4HI.js.map → chunk-TDKHKKUE.js.map} +1 -1
  278. package/dist/{chunk-ZWRW73XY.cjs → chunk-TKAISLRS.cjs} +2 -2
  279. package/dist/{chunk-ZWRW73XY.cjs.map → chunk-TKAISLRS.cjs.map} +1 -1
  280. package/dist/{chunk-J3MQKZ4I.js → chunk-TSBGTEEN.js} +3 -3
  281. package/dist/{chunk-J3MQKZ4I.js.map → chunk-TSBGTEEN.js.map} +1 -1
  282. package/dist/chunk-UJVC7JDT.js +2 -0
  283. package/dist/chunk-UJVC7JDT.js.map +1 -0
  284. package/dist/chunk-UMIGXP5H.cjs +2 -0
  285. package/dist/{chunk-BJ75ZI5R.cjs.map → chunk-UMIGXP5H.cjs.map} +1 -1
  286. package/dist/chunk-UOJ2V7M2.js +2 -0
  287. package/dist/{chunk-WBCK7PUI.js.map → chunk-UOJ2V7M2.js.map} +1 -1
  288. package/dist/chunk-URZASRF7.cjs +2 -0
  289. package/dist/{chunk-RHSEUQ24.cjs.map → chunk-URZASRF7.cjs.map} +1 -1
  290. package/dist/{chunk-QAODRAVT.cjs → chunk-UV5LI6P4.cjs} +3 -3
  291. package/dist/{chunk-QAODRAVT.cjs.map → chunk-UV5LI6P4.cjs.map} +1 -1
  292. package/dist/{chunk-YWSN55IS.cjs → chunk-VNVSITY5.cjs} +5 -5
  293. package/dist/{chunk-YWSN55IS.cjs.map → chunk-VNVSITY5.cjs.map} +1 -1
  294. package/dist/{chunk-VUICODT4.js → chunk-VRNWKIGB.js} +2 -2
  295. package/dist/{chunk-VUICODT4.js.map → chunk-VRNWKIGB.js.map} +1 -1
  296. package/dist/{chunk-SF235PBP.js → chunk-WMULB3MB.js} +3 -3
  297. package/dist/{chunk-SF235PBP.js.map → chunk-WMULB3MB.js.map} +1 -1
  298. package/dist/{chunk-7IHTM5PN.js → chunk-X6F6RSZW.js} +2 -2
  299. package/dist/{chunk-7IHTM5PN.js.map → chunk-X6F6RSZW.js.map} +1 -1
  300. package/dist/{chunk-FHYXLHT2.js → chunk-X6VSGUS3.js} +2 -2
  301. package/dist/{chunk-FHYXLHT2.js.map → chunk-X6VSGUS3.js.map} +1 -1
  302. package/dist/chunk-XE6CF6SQ.cjs +2 -0
  303. package/dist/{chunk-XN7HXB3L.cjs.map → chunk-XE6CF6SQ.cjs.map} +1 -1
  304. package/dist/chunk-Y5JXMGN6.cjs +2 -0
  305. package/dist/{chunk-BBZ2JUWF.cjs.map → chunk-Y5JXMGN6.cjs.map} +1 -1
  306. package/dist/{chunk-E2CBSOU7.js → chunk-YIWQZTY6.js} +3 -3
  307. package/dist/{chunk-E2CBSOU7.js.map → chunk-YIWQZTY6.js.map} +1 -1
  308. package/dist/{chunk-KB6OHHOK.cjs → chunk-YM3NQKVL.cjs} +2 -2
  309. package/dist/{chunk-KB6OHHOK.cjs.map → chunk-YM3NQKVL.cjs.map} +1 -1
  310. package/dist/{chunk-6BQ6VWX4.js → chunk-YNMPPS4U.js} +2 -2
  311. package/dist/{chunk-6BQ6VWX4.js.map → chunk-YNMPPS4U.js.map} +1 -1
  312. package/dist/chunk-YP2GOYHR.js +2 -0
  313. package/dist/{chunk-DMPPXMMA.js.map → chunk-YP2GOYHR.js.map} +1 -1
  314. package/dist/{chunk-3RP3DX6B.js → chunk-YVJY6PKY.js} +3 -3
  315. package/dist/{chunk-3RP3DX6B.js.map → chunk-YVJY6PKY.js.map} +1 -1
  316. package/dist/{chunk-KSV4G4PR.cjs → chunk-Z7HO25CY.cjs} +4 -4
  317. package/dist/{chunk-KSV4G4PR.cjs.map → chunk-Z7HO25CY.cjs.map} +1 -1
  318. package/dist/{chunk-MC35MNVI.js → chunk-ZDOL37NV.js} +3 -3
  319. package/dist/{chunk-MC35MNVI.js.map → chunk-ZDOL37NV.js.map} +1 -1
  320. package/dist/{chunk-JLEVRYCV.js → chunk-ZGR3AQC3.js} +2 -2
  321. package/dist/{chunk-JLEVRYCV.js.map → chunk-ZGR3AQC3.js.map} +1 -1
  322. package/dist/{chunk-QTVAPJXT.js → chunk-ZJHETJOT.js} +3 -3
  323. package/dist/{chunk-QTVAPJXT.js.map → chunk-ZJHETJOT.js.map} +1 -1
  324. package/dist/{chunk-WWVOH3Z2.js → chunk-ZR73XT3A.js} +3 -3
  325. package/dist/{chunk-WWVOH3Z2.js.map → chunk-ZR73XT3A.js.map} +1 -1
  326. package/dist/chunk-ZRQSE7OH.cjs +2 -0
  327. package/dist/{chunk-VGISWMU7.cjs.map → chunk-ZRQSE7OH.cjs.map} +1 -1
  328. package/dist/index.cjs +1 -1
  329. package/dist/index.js +1 -1
  330. package/dist/metafile-cjs.json +1 -1
  331. package/dist/metafile-esm.json +1 -1
  332. package/dist/v2/button/button.cjs +1 -1
  333. package/dist/v2/button/button.js +1 -1
  334. package/dist/v2/calendar/calendar.cjs +1 -1
  335. package/dist/v2/calendar/calendar.js +1 -1
  336. package/dist/v2/carousel/carousel.cjs +1 -1
  337. package/dist/v2/carousel/carousel.js +1 -1
  338. package/dist/v2/checkbox/button-checkbox.cjs +1 -1
  339. package/dist/v2/checkbox/button-checkbox.js +1 -1
  340. package/dist/v2/checkbox-group/checkbox-group.cjs +1 -1
  341. package/dist/v2/checkbox-group/checkbox-group.js +1 -1
  342. package/dist/v2/combobox/combobox.cjs +1 -1
  343. package/dist/v2/combobox/combobox.js +1 -1
  344. package/dist/v2/command/command.cjs +1 -1
  345. package/dist/v2/command/command.js +1 -1
  346. package/dist/v2/date-picker/date-picker-input.cjs +1 -1
  347. package/dist/v2/date-picker/date-picker-input.js +1 -1
  348. package/dist/v2/date-picker/date-picker.cjs +1 -1
  349. package/dist/v2/date-picker/date-picker.js +1 -1
  350. package/dist/v2/dialog/dialog.cjs +1 -1
  351. package/dist/v2/dialog/dialog.js +1 -1
  352. package/dist/v2/drawer/drawer.cjs +1 -1
  353. package/dist/v2/drawer/drawer.js +1 -1
  354. package/dist/v2/dropzone/dropzone.cjs +1 -1
  355. package/dist/v2/dropzone/dropzone.js +1 -1
  356. package/dist/v2/flex-drawer/flex-drawer.cjs +1 -1
  357. package/dist/v2/flex-drawer/flex-drawer.js +1 -1
  358. package/dist/v2/image-preview/image-preview.cjs +1 -1
  359. package/dist/v2/image-preview/image-preview.js +1 -1
  360. package/dist/v2/index.cjs +1 -1
  361. package/dist/v2/index.js +1 -1
  362. package/dist/v2/multiselect/components/MultiSelectCommandGroup.cjs +1 -1
  363. package/dist/v2/multiselect/components/MultiSelectCommandGroup.js +1 -1
  364. package/dist/v2/multiselect/components/MultiSelectDropdown.cjs +1 -1
  365. package/dist/v2/multiselect/components/MultiSelectDropdown.js +1 -1
  366. package/dist/v2/multiselect/multiselect.cjs +1 -1
  367. package/dist/v2/multiselect/multiselect.js +1 -1
  368. package/dist/v2/time-select/time-select.cjs +1 -1
  369. package/dist/v2/time-select/time-select.js +1 -1
  370. package/dist/v2/toast/toaster.cjs +1 -1
  371. package/dist/v2/toast/toaster.d.ts +1 -1
  372. package/dist/v2/toast/toaster.js +1 -1
  373. package/dist/v2/verified-advocate/verified-advocate.cjs +1 -1
  374. package/dist/v2/verified-advocate/verified-advocate.js +1 -1
  375. package/package.json +1 -1
  376. package/dist/chunk-5WQX5YUM.js +0 -2
  377. package/dist/chunk-5WQX5YUM.js.map +0 -1
  378. package/dist/chunk-BBZ2JUWF.cjs +0 -2
  379. package/dist/chunk-BJ75ZI5R.cjs +0 -2
  380. package/dist/chunk-DMPPXMMA.js +0 -2
  381. package/dist/chunk-EANBBNS3.js +0 -2
  382. package/dist/chunk-GA6MRNGB.cjs +0 -2
  383. package/dist/chunk-IFGTEXJY.js +0 -2
  384. package/dist/chunk-IN7MQOHF.js +0 -2
  385. package/dist/chunk-KAZK3PAB.cjs +0 -2
  386. package/dist/chunk-KAZK3PAB.cjs.map +0 -1
  387. package/dist/chunk-RHSEUQ24.cjs +0 -2
  388. package/dist/chunk-RNEJ3X5S.cjs +0 -2
  389. package/dist/chunk-S5RP7WP6.cjs +0 -2
  390. package/dist/chunk-VGISWMU7.cjs +0 -2
  391. package/dist/chunk-WBCK7PUI.js +0 -2
  392. package/dist/chunk-XN7HXB3L.cjs +0 -2
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkUM5IERUP_cjs=require('./chunk-UM5IERUP.cjs'),chunkQAGOBPAT_cjs=require('./chunk-QAGOBPAT.cjs'),chunkSV7GB6CH_cjs=require('./chunk-SV7GB6CH.cjs'),chunkSOCTL7OO_cjs=require('./chunk-SOCTL7OO.cjs'),chunk4JAIMZSZ_cjs=require('./chunk-4JAIMZSZ.cjs'),chunk2DLCWPKO_cjs=require('./chunk-2DLCWPKO.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),react=require('react'),lu=require('react-icons/lu'),M=require('dayjs'),Te=require('dayjs/plugin/customParseFormat.js'),reactImask=require('react-imask'),reactDayPicker=require('react-day-picker'),jsxRuntime=require('react/jsx-runtime'),Se=require('react-easy-crop'),luxon=require('luxon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var M__default=/*#__PURE__*/_interopDefault(M);var Te__default=/*#__PURE__*/_interopDefault(Te);var Se__default=/*#__PURE__*/_interopDefault(Se);function fe(a){let o=a.replace(/\D/g,"").slice(0,8);return o.length<=2?o:o.length<=4?`${o.slice(0,2)}/${o.slice(2)}`:`${o.slice(0,2)}/${o.slice(2,4)}/${o.slice(4)}`}function ge(a){if(a.length!==10)return;let o=a.split("/");if(o.length!==3||o[2].length!==4)return;let e=parseInt(o[0],10),n=parseInt(o[1],10),t=parseInt(o[2],10);if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return;let l=new Date(t,e-1,n);if(!(l.getFullYear()!==t||l.getMonth()!==e-1||l.getDate()!==n))return l}function Ce({className:a,wrapperClassName:o,value:e,onChange:n,disabled:t=false,calendarProps:l,placeholder:b="MM/DD/YYYY",variant:g}){let[c,u]=react.useState(false),[S,h]=react.useState(e),[w,i]=react.useState(e?M__default.default(e).format("MM/DD/YYYY"):""),p=react.useRef(e?M__default.default(e).format("MM/DD/YYYY"):"");react.useEffect(()=>{let r=e?M__default.default(e).format("MM/DD/YYYY"):"";r!==p.current&&(p.current=r,i(r),e&&h(e));},[e]);let C=r=>{let f=fe(r.target.value);i(f);let T=ge(f);T?(p.current=f,n?.(T)):f===""&&(p.current="",n?.(void 0));},d=r=>{r.key==="ArrowDown"&&(r.preventDefault(),u(true)),!/[0-9/]/.test(r.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(r.key)&&!r.metaKey&&!r.ctrlKey&&r.preventDefault();};return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative w-full",o),children:[jsxRuntime.jsx("input",{type:"text","data-slot":"input",className:chunkQRO22BPZ_cjs.a(chunk2DLCWPKO_cjs.a({variant:g}),"pr-10",a),value:w,placeholder:b,onChange:C,onKeyDown:d,disabled:t}),jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!t&&c,onOpenChange:u,children:[jsxRuntime.jsx(chunkSV7GB6CH_cjs.b,{asChild:true,children:jsxRuntime.jsx(chunk4JAIMZSZ_cjs.b,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:t,"aria-label":"Select date",type:"button",children:jsxRuntime.jsx(lu.LuCalendar,{})})}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsxRuntime.jsx(chunkSOCTL7OO_cjs.b,{mode:"single",selected:e,month:S,onMonthChange:h,onSelect:r=>{let f=r?M__default.default(r).format("MM/DD/YYYY"):"";p.current=f,i(f),n?.(r),u(false);},...l})})]})]})}var ye=({alt:a,className:o="",containerClassName:e="",imagePreview:n=void 0,cropper:t=void 0})=>{let[l,b]=react.useState(false),g=!n||!l,c=!!t;return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("flex max-w-[386px] flex-col",o),children:[jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative h-60 rounded-md border",e),children:[n&&c?jsxRuntime.jsx(Se__default.default,{image:n,crop:t.crop,zoom:t.zoom,aspect:t.aspect,objectFit:"contain",onCropChange:t.setCrop,onZoomChange:t.setZoom,onCropComplete:t.onCropComplete,onMediaLoaded:()=>b(true),showGrid:false}):n&&jsxRuntime.jsx("img",{alt:a,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${l?"opacity-100":"opacity-0"}`,src:n,onLoad:()=>b(true),draggable:false}),g&&jsxRuntime.jsx("div",{"aria-label":n?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!g&&c&&jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center gap-3",children:[jsxRuntime.jsx(chunk4JAIMZSZ_cjs.b,{"aria-label":"zoom out",onClick:()=>t.setZoom(Math.max(t.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsxRuntime.jsx(lu.LuZoomOut,{})}),jsxRuntime.jsx(chunkQAGOBPAT_cjs.a,{value:[t.zoom],min:1,max:3,step:.01,onValueChange:u=>t.setZoom(u[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsxRuntime.jsx(chunk4JAIMZSZ_cjs.b,{"aria-label":"zoom in",onClick:()=>t.setZoom(Math.min(t.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsxRuntime.jsx(lu.LuZoomIn,{})})]}),jsxRuntime.jsxs(chunk4JAIMZSZ_cjs.b,{onClick:t.reset,variant:"ghost",className:"h-8 p-2",children:[jsxRuntime.jsx(lu.LuRefreshCcw,{}),"Reset"]})]})]})};var W="00:00",ee="24:00",te=a=>luxon.DateTime.fromFormat(a,"HH:mm").isValid,oe=({startTime:a=W,endTime:o=ee,interval:e=30,onChange:n=void 0,className:t="",placeholder:l="Select one",size:b="default",portal:g=true,triggerIcon:c,getSublabel:u,...S})=>{te(a)||(console.error(`Invalid startTime: ${a}`),a=W),te(o)||(console.error(`Invalid endTime: ${o}`),o=ee);let h=react.useMemo(()=>{let i=luxon.DateTime.fromFormat(o,"HH:mm"),p=luxon.Duration.fromObject({minutes:e}),C=[],d=luxon.DateTime.fromFormat(a,"HH:mm");for(;d<=i;){let r=d.toFormat("HH:mm");r==="00:00"&&d.equals(i)&&(r="24:00"),C.push({label:d.toFormat("h:mm a"),value:{hour:d.toFormat("HH"),min:d.toFormat("mm"),raw:r,formatted:d.toFormat("h:mm a")}}),d=d.plus(p);}return C},[a,o,e]);return jsxRuntime.jsxs(chunkUM5IERUP_cjs.a,{onValueChange:i=>{let p=h.find(C=>C.value.raw===i);p&&n?.(p);},...S,children:[jsxRuntime.jsx(chunkUM5IERUP_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",t),size:b,triggerIcon:c,children:jsxRuntime.jsx(chunkUM5IERUP_cjs.c,{placeholder:l})}),jsxRuntime.jsx(chunkUM5IERUP_cjs.g,{position:"popper",className:"max-h-90",portal:g,children:h.map(i=>{let p=u?.(i);return jsxRuntime.jsx(chunkUM5IERUP_cjs.i,{className:chunkQRO22BPZ_cjs.a(p?"h-auto py-2":"h-10"),value:i.value.raw,sublabel:p,children:i.label},i.value.raw)})})]})},Qe=oe;M__default.default.extend(Te__default.default);var ae="MM/DD/YYYY",ke="00/00/0000",X=["MM/DD/YYYY","MM/D/YYYY","M/DD/YYYY","M/D/YYYY","YYYY-MM-DD"];function I(a){return a?M__default.default(a).format(ae):""}function Me({className:a="",wrapperClassName:o="",value:e=void 0,onChange:n=void 0,disabled:t=false,calendarProps:l=void 0,placeholder:b,inputProps:g=void 0,showCalendarIcon:c=true,editable:u=false}){let[S,h]=react.useState(false),w=b??(u?ae:"Pick a date"),[i,p]=react.useState(void 0),C=react.useRef(e);e!==C.current&&(C.current=e,i!==void 0&&p(void 0));let d=i??e,r=s=>l?.disabled?!reactDayPicker.isMatch(s,l.disabled):true,f=react.useRef(n);f.current=n;let T=react.useRef(r);T.current=r;let{ref:q,setValue:L}=reactImask.useIMask({mask:ke,lazy:true,overwrite:false},{onComplete:s=>{let D=M__default.default(s,X,true);D.isValid()&&T.current(D.toDate())&&f.current?.(D.toDate());}}),ie=s=>{n?.(s),L(I(s)),h(false);},pe=s=>{let D=s.clipboardData.getData("text").trim(),V=M__default.default(D,X,true);if(V.isValid()&&r(V.toDate())){s.preventDefault();let J=V.toDate();n?.(J),L(I(J));}},se=()=>{L(I(e));},le=()=>{let s=q.current?.value??"";if(s===""){e!==void 0&&n?.(void 0);return}let D=M__default.default(s,X,true);D.isValid()&&r(D.toDate())&&n?.(D.toDate()),L(I(e));},me=chunkQRO22BPZ_cjs.a(chunk2DLCWPKO_cjs.a(),c&&"pl-10",S?"border-dark-green":"",a);return jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!t&&S,onOpenChange:h,children:[jsxRuntime.jsx(chunkSV7GB6CH_cjs.b,{asChild:true,children:jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative flex w-full items-center rounded-md",o),children:[u?jsxRuntime.jsx("input",{ref:q,defaultValue:I(e),className:me,placeholder:w,disabled:t,onFocus:se,onPaste:pe,onBlur:s=>{le(),g?.onBlur?.(s);}}):jsxRuntime.jsx(chunk2DLCWPKO_cjs.b,{className:chunkQRO22BPZ_cjs.a(c&&"pl-10",S?"border-dark-green":"",a),...g,value:I(e),placeholder:w,readOnly:true,disabled:t}),c&&jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",t?"text-gray-400":"cursor-pointer text-black"),children:jsxRuntime.jsx(lu.LuCalendar,{size:16})})]})}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"start",onOpenAutoFocus:u?s=>s.preventDefault():void 0,children:jsxRuntime.jsx(chunkSOCTL7OO_cjs.b,{mode:"single",selected:e?M__default.default(e).toDate():void 0,onSelect:ie,...u?{month:d,onMonthChange:p}:{},...l})})]})}exports.a=Me;exports.b=Ce;exports.c=ye;exports.d=oe;exports.e=Qe;//# sourceMappingURL=chunk-NN627YY4.cjs.map
2
- //# sourceMappingURL=chunk-NN627YY4.cjs.map
1
+ 'use strict';var chunkUM5IERUP_cjs=require('./chunk-UM5IERUP.cjs'),chunkQAGOBPAT_cjs=require('./chunk-QAGOBPAT.cjs'),chunk2DLCWPKO_cjs=require('./chunk-2DLCWPKO.cjs'),chunkSV7GB6CH_cjs=require('./chunk-SV7GB6CH.cjs'),chunkSOCTL7OO_cjs=require('./chunk-SOCTL7OO.cjs'),chunk4JAIMZSZ_cjs=require('./chunk-4JAIMZSZ.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),react=require('react'),lu=require('react-icons/lu'),M=require('dayjs'),Te=require('dayjs/plugin/customParseFormat.js'),reactImask=require('react-imask'),reactDayPicker=require('react-day-picker'),jsxRuntime=require('react/jsx-runtime'),Se=require('react-easy-crop'),luxon=require('luxon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var M__default=/*#__PURE__*/_interopDefault(M);var Te__default=/*#__PURE__*/_interopDefault(Te);var Se__default=/*#__PURE__*/_interopDefault(Se);function fe(a){let o=a.replace(/\D/g,"").slice(0,8);return o.length<=2?o:o.length<=4?`${o.slice(0,2)}/${o.slice(2)}`:`${o.slice(0,2)}/${o.slice(2,4)}/${o.slice(4)}`}function ge(a){if(a.length!==10)return;let o=a.split("/");if(o.length!==3||o[2].length!==4)return;let e=parseInt(o[0],10),n=parseInt(o[1],10),t=parseInt(o[2],10);if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return;let l=new Date(t,e-1,n);if(!(l.getFullYear()!==t||l.getMonth()!==e-1||l.getDate()!==n))return l}function Ce({className:a,wrapperClassName:o,value:e,onChange:n,disabled:t=false,calendarProps:l,placeholder:b="MM/DD/YYYY",variant:g}){let[c,u]=react.useState(false),[S,h]=react.useState(e),[w,i]=react.useState(e?M__default.default(e).format("MM/DD/YYYY"):""),p=react.useRef(e?M__default.default(e).format("MM/DD/YYYY"):"");react.useEffect(()=>{let r=e?M__default.default(e).format("MM/DD/YYYY"):"";r!==p.current&&(p.current=r,i(r),e&&h(e));},[e]);let C=r=>{let f=fe(r.target.value);i(f);let T=ge(f);T?(p.current=f,n?.(T)):f===""&&(p.current="",n?.(void 0));},d=r=>{r.key==="ArrowDown"&&(r.preventDefault(),u(true)),!/[0-9/]/.test(r.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(r.key)&&!r.metaKey&&!r.ctrlKey&&r.preventDefault();};return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative w-full",o),children:[jsxRuntime.jsx("input",{type:"text","data-slot":"input",className:chunkQRO22BPZ_cjs.a(chunk2DLCWPKO_cjs.a({variant:g}),"pr-10",a),value:w,placeholder:b,onChange:C,onKeyDown:d,disabled:t}),jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!t&&c,onOpenChange:u,children:[jsxRuntime.jsx(chunkSV7GB6CH_cjs.b,{asChild:true,children:jsxRuntime.jsx(chunk4JAIMZSZ_cjs.b,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:t,"aria-label":"Select date",type:"button",children:jsxRuntime.jsx(lu.LuCalendar,{})})}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsxRuntime.jsx(chunkSOCTL7OO_cjs.b,{mode:"single",selected:e,month:S,onMonthChange:h,onSelect:r=>{let f=r?M__default.default(r).format("MM/DD/YYYY"):"";p.current=f,i(f),n?.(r),u(false);},...l})})]})]})}var ye=({alt:a,className:o="",containerClassName:e="",imagePreview:n=void 0,cropper:t=void 0})=>{let[l,b]=react.useState(false),g=!n||!l,c=!!t;return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("flex max-w-[386px] flex-col",o),children:[jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative h-60 rounded-md border",e),children:[n&&c?jsxRuntime.jsx(Se__default.default,{image:n,crop:t.crop,zoom:t.zoom,aspect:t.aspect,objectFit:"contain",onCropChange:t.setCrop,onZoomChange:t.setZoom,onCropComplete:t.onCropComplete,onMediaLoaded:()=>b(true),showGrid:false}):n&&jsxRuntime.jsx("img",{alt:a,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${l?"opacity-100":"opacity-0"}`,src:n,onLoad:()=>b(true),draggable:false}),g&&jsxRuntime.jsx("div",{"aria-label":n?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!g&&c&&jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center gap-3",children:[jsxRuntime.jsx(chunk4JAIMZSZ_cjs.b,{"aria-label":"zoom out",onClick:()=>t.setZoom(Math.max(t.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsxRuntime.jsx(lu.LuZoomOut,{})}),jsxRuntime.jsx(chunkQAGOBPAT_cjs.a,{value:[t.zoom],min:1,max:3,step:.01,onValueChange:u=>t.setZoom(u[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsxRuntime.jsx(chunk4JAIMZSZ_cjs.b,{"aria-label":"zoom in",onClick:()=>t.setZoom(Math.min(t.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsxRuntime.jsx(lu.LuZoomIn,{})})]}),jsxRuntime.jsxs(chunk4JAIMZSZ_cjs.b,{onClick:t.reset,variant:"ghost",className:"h-8 p-2",children:[jsxRuntime.jsx(lu.LuRefreshCcw,{}),"Reset"]})]})]})};var W="00:00",ee="24:00",te=a=>luxon.DateTime.fromFormat(a,"HH:mm").isValid,oe=({startTime:a=W,endTime:o=ee,interval:e=30,onChange:n=void 0,className:t="",placeholder:l="Select one",size:b="default",portal:g=true,triggerIcon:c,getSublabel:u,...S})=>{te(a)||(console.error(`Invalid startTime: ${a}`),a=W),te(o)||(console.error(`Invalid endTime: ${o}`),o=ee);let h=react.useMemo(()=>{let i=luxon.DateTime.fromFormat(o,"HH:mm"),p=luxon.Duration.fromObject({minutes:e}),C=[],d=luxon.DateTime.fromFormat(a,"HH:mm");for(;d<=i;){let r=d.toFormat("HH:mm");r==="00:00"&&d.equals(i)&&(r="24:00"),C.push({label:d.toFormat("h:mm a"),value:{hour:d.toFormat("HH"),min:d.toFormat("mm"),raw:r,formatted:d.toFormat("h:mm a")}}),d=d.plus(p);}return C},[a,o,e]);return jsxRuntime.jsxs(chunkUM5IERUP_cjs.a,{onValueChange:i=>{let p=h.find(C=>C.value.raw===i);p&&n?.(p);},...S,children:[jsxRuntime.jsx(chunkUM5IERUP_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",t),size:b,triggerIcon:c,children:jsxRuntime.jsx(chunkUM5IERUP_cjs.c,{placeholder:l})}),jsxRuntime.jsx(chunkUM5IERUP_cjs.g,{position:"popper",className:"max-h-90",portal:g,children:h.map(i=>{let p=u?.(i);return jsxRuntime.jsx(chunkUM5IERUP_cjs.i,{className:chunkQRO22BPZ_cjs.a(p?"h-auto py-2":"h-10"),value:i.value.raw,sublabel:p,children:i.label},i.value.raw)})})]})},Qe=oe;M__default.default.extend(Te__default.default);var ae="MM/DD/YYYY",ke="00/00/0000",X=["MM/DD/YYYY","MM/D/YYYY","M/DD/YYYY","M/D/YYYY","YYYY-MM-DD"];function I(a){return a?M__default.default(a).format(ae):""}function Me({className:a="",wrapperClassName:o="",value:e=void 0,onChange:n=void 0,disabled:t=false,calendarProps:l=void 0,placeholder:b,inputProps:g=void 0,showCalendarIcon:c=true,editable:u=false}){let[S,h]=react.useState(false),w=b??(u?ae:"Pick a date"),[i,p]=react.useState(void 0),C=react.useRef(e);e!==C.current&&(C.current=e,i!==void 0&&p(void 0));let d=i??e,r=s=>l?.disabled?!reactDayPicker.isMatch(s,l.disabled):true,f=react.useRef(n);f.current=n;let T=react.useRef(r);T.current=r;let{ref:q,setValue:L}=reactImask.useIMask({mask:ke,lazy:true,overwrite:false},{onComplete:s=>{let D=M__default.default(s,X,true);D.isValid()&&T.current(D.toDate())&&f.current?.(D.toDate());}}),ie=s=>{n?.(s),L(I(s)),h(false);},pe=s=>{let D=s.clipboardData.getData("text").trim(),V=M__default.default(D,X,true);if(V.isValid()&&r(V.toDate())){s.preventDefault();let J=V.toDate();n?.(J),L(I(J));}},se=()=>{L(I(e));},le=()=>{let s=q.current?.value??"";if(s===""){e!==void 0&&n?.(void 0);return}let D=M__default.default(s,X,true);D.isValid()&&r(D.toDate())&&n?.(D.toDate()),L(I(e));},me=chunkQRO22BPZ_cjs.a(chunk2DLCWPKO_cjs.a(),c&&"pl-10",S?"border-dark-green":"",a);return jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!t&&S,onOpenChange:h,children:[jsxRuntime.jsx(chunkSV7GB6CH_cjs.b,{asChild:true,children:jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative flex w-full items-center rounded-md",o),children:[u?jsxRuntime.jsx("input",{ref:q,defaultValue:I(e),className:me,placeholder:w,disabled:t,onFocus:se,onPaste:pe,onBlur:s=>{le(),g?.onBlur?.(s);}}):jsxRuntime.jsx(chunk2DLCWPKO_cjs.b,{className:chunkQRO22BPZ_cjs.a(c&&"pl-10",S?"border-dark-green":"",a),...g,value:I(e),placeholder:w,readOnly:true,disabled:t}),c&&jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",t?"text-gray-400":"cursor-pointer text-black"),children:jsxRuntime.jsx(lu.LuCalendar,{size:16})})]})}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"start",onOpenAutoFocus:u?s=>s.preventDefault():void 0,children:jsxRuntime.jsx(chunkSOCTL7OO_cjs.b,{mode:"single",selected:e?M__default.default(e).toDate():void 0,onSelect:ie,...u?{month:d,onMonthChange:p}:{},...l})})]})}exports.a=Me;exports.b=Ce;exports.c=ye;exports.d=oe;exports.e=Qe;//# sourceMappingURL=chunk-EBXW2SLV.cjs.map
2
+ //# sourceMappingURL=chunk-EBXW2SLV.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/date-picker/date-picker.tsx"],"names":["maskDate","value","digits","parseDate","parts","month","day","year","date","DatePickerInput","className","wrapperClassName","onChange","disabled","calendarProps","placeholder","variant","open","setOpen","useState","setMonth","inputValue","setInputValue","dayjs","lastSyncedRef","useRef","useEffect","formatted","handleInputChange","e","masked","parsed","handleKeyDown","jsxs","cn","jsx","inputVariants","Popover","PopoverTrigger","Button","LuCalendar","PopoverContent","Calendar","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","triggerIcon","getSublabel","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","Select","SelectTrigger","SelectValue","SelectContent","sublabel","SelectItem","time_select_default","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","DatePicker","placeholderProp","showCalendarIcon","editable","navigatedMonth","setNavigatedMonth","prevValueForMonth","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","handleSelect","val","handlePaste","pasted","handleFocus","handleBlur","current","inputClasses","Input"],"mappings":"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","file":"chunk-NN627YY4.cjs","sourcesContent":["import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n triggerIcon?: ReactElement;\n getSublabel?: (interval: Interval) => ReactNode;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n placeholder = 'Select one',\n size = 'default',\n portal = true,\n triggerIcon,\n getSublabel,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger\n className={cn('max-w-[240px] md:w-[150px]', className)}\n size={size}\n triggerIcon={triggerIcon}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {intervals.map((time) => {\n const sublabel = getSublabel?.(time);\n return (\n <SelectItem\n className={cn(sublabel ? 'h-auto py-2' : 'h-10')}\n key={time.value.raw}\n value={time.value.raw}\n sublabel={sublabel}\n >\n {time.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import { ComponentProps, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { useIMask } from 'react-imask';\nimport { isMatch } from 'react-day-picker';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '@/v2/input/input';\nimport type { InputProps } from '@/v2/input/input';\n\ndayjs.extend(customParseFormat);\n\n/** Display and input format for dates. Also used as the placeholder when `editable` is true. */\nconst DISPLAY_FORMAT = 'MM/DD/YYYY';\n\n/** IMask pattern — each `0` is a required digit, slashes are fixed literals. */\nconst INPUT_MASK = '00/00/0000';\n\n/**\n * Formats accepted when parsing typed or pasted input (dayjs strict mode).\n * Ordered from most specific to least specific to avoid ambiguous matches.\n */\nconst ACCEPTED_INPUT_FORMATS = ['MM/DD/YYYY', 'MM/D/YYYY', 'M/DD/YYYY', 'M/D/YYYY', 'YYYY-MM-DD'];\n\nexport type DatePickerProps = {\n /** Additional class name(s) applied to the input element. */\n className?: string;\n /** Additional class name(s) applied to the outer popover trigger wrapper. */\n wrapperClassName?: string;\n /** The currently selected date. `undefined` means no date is selected. */\n value?: Date;\n /** Called when the selected date changes. Receives `undefined` when the date is cleared. */\n onChange?: (value: Date | undefined) => void;\n /** When `true`, the picker is non-interactive. */\n disabled?: boolean;\n /**\n * Props forwarded to the underlying `Calendar` component (react-day-picker).\n * Use `disabled` within this object to restrict selectable dates — these\n * constraints apply to both calendar clicks and typed input when `editable` is `true`.\n *\n * @example\n * ```tsx\n * <DatePicker calendarProps={{ disabled: [{ before: new Date() }] }} />\n * ```\n */\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n /**\n * Input placeholder text. Defaults to `\"Pick a date\"` in read-only mode\n * and `\"MM/DD/YYYY\"` when `editable` is `true`.\n */\n placeholder?: string;\n /** Props forwarded to the underlying `Input` component. */\n inputProps?: InputProps;\n /** Whether to show the calendar icon inside the input. @default true */\n showCalendarIcon?: boolean;\n /**\n * When `true`, the input accepts typed and pasted dates in `MM/DD/YYYY` format.\n * Slashes are auto-inserted, non-numeric characters are rejected, and common\n * formats like `M/D/YYYY` and `YYYY-MM-DD` are accepted on paste.\n * Dates that fall in `calendarProps.disabled` ranges are rejected.\n *\n * When `false` (default), the input is read-only and dates can only be\n * selected via the calendar popover.\n *\n * @default false\n */\n editable?: boolean;\n};\n\nfunction formatDate(date: Date | undefined): string {\n return date ? dayjs(date).format(DISPLAY_FORMAT) : '';\n}\n\n/**\n * A date picker that combines a text input with a calendar popover.\n *\n * By default the input is read-only — dates are selected via the calendar.\n * Set `editable` to allow typing or pasting dates in `MM/DD/YYYY` format.\n */\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder: placeholderProp,\n inputProps = undefined,\n showCalendarIcon = true,\n editable = false,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const placeholder = placeholderProp ?? (editable ? DISPLAY_FORMAT : 'Pick a date');\n\n // Calendar month: derived from value, with user navigation override.\n // When value changes, navigation resets to the new value's month.\n const [navigatedMonth, setNavigatedMonth] = useState<Date | undefined>(undefined);\n const prevValueForMonth = useRef(value);\n if (value !== prevValueForMonth.current) {\n prevValueForMonth.current = value;\n if (navigatedMonth !== undefined) {\n setNavigatedMonth(undefined);\n }\n }\n const calendarMonth = navigatedMonth ?? value;\n\n const isDateAllowed = (date: Date): boolean => {\n if (!calendarProps?.disabled) {\n return true;\n }\n return !isMatch(date, calendarProps.disabled);\n };\n\n // Refs ensure IMask callbacks always see the latest values without re-creating the mask\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const isDateAllowedRef = useRef(isDateAllowed);\n isDateAllowedRef.current = isDateAllowed;\n\n const { ref: maskRef, setValue: setMaskValue } = useIMask<HTMLInputElement>(\n { mask: INPUT_MASK, lazy: true, overwrite: false },\n {\n onComplete: (maskedValue) => {\n const parsed = dayjs(maskedValue, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowedRef.current(parsed.toDate())) {\n onChangeRef.current?.(parsed.toDate());\n }\n },\n },\n );\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setMaskValue(formatDate(val));\n setOpen(false);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').trim();\n const parsed = dayjs(pasted, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n e.preventDefault();\n const date = parsed.toDate();\n onChange?.(date);\n setMaskValue(formatDate(date));\n }\n // If we can't parse it, let IMask handle it naturally\n };\n\n const handleFocus = () => {\n // Sync the mask to the current value on focus — handles external parent resets\n setMaskValue(formatDate(value));\n };\n\n const handleBlur = () => {\n const current = maskRef.current?.value ?? '';\n if (current === '') {\n if (value !== undefined) {\n onChange?.(undefined);\n }\n return;\n }\n const parsed = dayjs(current, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n onChange?.(parsed.toDate());\n }\n // Revert to last valid display value\n setMaskValue(formatDate(value));\n };\n\n const inputClasses = cn(\n inputVariants(),\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n );\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div className={cn('relative flex w-full items-center rounded-md', wrapperClassName)}>\n {editable ? (\n <input\n ref={maskRef}\n defaultValue={formatDate(value)}\n className={inputClasses}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onBlur={(e) => {\n handleBlur();\n inputProps?.onBlur?.(e);\n }}\n />\n ) : (\n <Input\n className={cn(\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n )}\n {...inputProps}\n value={formatDate(value)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n />\n )}\n {showCalendarIcon && (\n <div\n className={cn(\n 'absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2',\n disabled ? 'text-gray-400' : 'cursor-pointer text-black',\n )}\n >\n <LuCalendar size={16} />\n </div>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto overflow-hidden p-0\"\n align=\"start\"\n onOpenAutoFocus={editable ? (e) => e.preventDefault() : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...(editable ? { month: calendarMonth, onMonthChange: setNavigatedMonth } : {})}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/date-picker/date-picker.tsx"],"names":["maskDate","value","digits","parseDate","parts","month","day","year","date","DatePickerInput","className","wrapperClassName","onChange","disabled","calendarProps","placeholder","variant","open","setOpen","useState","setMonth","inputValue","setInputValue","dayjs","lastSyncedRef","useRef","useEffect","formatted","handleInputChange","e","masked","parsed","handleKeyDown","jsxs","cn","jsx","inputVariants","Popover","PopoverTrigger","Button","LuCalendar","PopoverContent","Calendar","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","triggerIcon","getSublabel","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","Select","SelectTrigger","SelectValue","SelectContent","sublabel","SelectItem","time_select_default","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","DatePicker","placeholderProp","showCalendarIcon","editable","navigatedMonth","setNavigatedMonth","prevValueForMonth","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","handleSelect","val","handlePaste","pasted","handleFocus","handleBlur","current","inputClasses","Input"],"mappings":"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","file":"chunk-EBXW2SLV.cjs","sourcesContent":["import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n triggerIcon?: ReactElement;\n getSublabel?: (interval: Interval) => ReactNode;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n placeholder = 'Select one',\n size = 'default',\n portal = true,\n triggerIcon,\n getSublabel,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger\n className={cn('max-w-[240px] md:w-[150px]', className)}\n size={size}\n triggerIcon={triggerIcon}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {intervals.map((time) => {\n const sublabel = getSublabel?.(time);\n return (\n <SelectItem\n className={cn(sublabel ? 'h-auto py-2' : 'h-10')}\n key={time.value.raw}\n value={time.value.raw}\n sublabel={sublabel}\n >\n {time.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import { ComponentProps, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { useIMask } from 'react-imask';\nimport { isMatch } from 'react-day-picker';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '@/v2/input/input';\nimport type { InputProps } from '@/v2/input/input';\n\ndayjs.extend(customParseFormat);\n\n/** Display and input format for dates. Also used as the placeholder when `editable` is true. */\nconst DISPLAY_FORMAT = 'MM/DD/YYYY';\n\n/** IMask pattern — each `0` is a required digit, slashes are fixed literals. */\nconst INPUT_MASK = '00/00/0000';\n\n/**\n * Formats accepted when parsing typed or pasted input (dayjs strict mode).\n * Ordered from most specific to least specific to avoid ambiguous matches.\n */\nconst ACCEPTED_INPUT_FORMATS = ['MM/DD/YYYY', 'MM/D/YYYY', 'M/DD/YYYY', 'M/D/YYYY', 'YYYY-MM-DD'];\n\nexport type DatePickerProps = {\n /** Additional class name(s) applied to the input element. */\n className?: string;\n /** Additional class name(s) applied to the outer popover trigger wrapper. */\n wrapperClassName?: string;\n /** The currently selected date. `undefined` means no date is selected. */\n value?: Date;\n /** Called when the selected date changes. Receives `undefined` when the date is cleared. */\n onChange?: (value: Date | undefined) => void;\n /** When `true`, the picker is non-interactive. */\n disabled?: boolean;\n /**\n * Props forwarded to the underlying `Calendar` component (react-day-picker).\n * Use `disabled` within this object to restrict selectable dates — these\n * constraints apply to both calendar clicks and typed input when `editable` is `true`.\n *\n * @example\n * ```tsx\n * <DatePicker calendarProps={{ disabled: [{ before: new Date() }] }} />\n * ```\n */\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n /**\n * Input placeholder text. Defaults to `\"Pick a date\"` in read-only mode\n * and `\"MM/DD/YYYY\"` when `editable` is `true`.\n */\n placeholder?: string;\n /** Props forwarded to the underlying `Input` component. */\n inputProps?: InputProps;\n /** Whether to show the calendar icon inside the input. @default true */\n showCalendarIcon?: boolean;\n /**\n * When `true`, the input accepts typed and pasted dates in `MM/DD/YYYY` format.\n * Slashes are auto-inserted, non-numeric characters are rejected, and common\n * formats like `M/D/YYYY` and `YYYY-MM-DD` are accepted on paste.\n * Dates that fall in `calendarProps.disabled` ranges are rejected.\n *\n * When `false` (default), the input is read-only and dates can only be\n * selected via the calendar popover.\n *\n * @default false\n */\n editable?: boolean;\n};\n\nfunction formatDate(date: Date | undefined): string {\n return date ? dayjs(date).format(DISPLAY_FORMAT) : '';\n}\n\n/**\n * A date picker that combines a text input with a calendar popover.\n *\n * By default the input is read-only — dates are selected via the calendar.\n * Set `editable` to allow typing or pasting dates in `MM/DD/YYYY` format.\n */\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder: placeholderProp,\n inputProps = undefined,\n showCalendarIcon = true,\n editable = false,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const placeholder = placeholderProp ?? (editable ? DISPLAY_FORMAT : 'Pick a date');\n\n // Calendar month: derived from value, with user navigation override.\n // When value changes, navigation resets to the new value's month.\n const [navigatedMonth, setNavigatedMonth] = useState<Date | undefined>(undefined);\n const prevValueForMonth = useRef(value);\n if (value !== prevValueForMonth.current) {\n prevValueForMonth.current = value;\n if (navigatedMonth !== undefined) {\n setNavigatedMonth(undefined);\n }\n }\n const calendarMonth = navigatedMonth ?? value;\n\n const isDateAllowed = (date: Date): boolean => {\n if (!calendarProps?.disabled) {\n return true;\n }\n return !isMatch(date, calendarProps.disabled);\n };\n\n // Refs ensure IMask callbacks always see the latest values without re-creating the mask\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const isDateAllowedRef = useRef(isDateAllowed);\n isDateAllowedRef.current = isDateAllowed;\n\n const { ref: maskRef, setValue: setMaskValue } = useIMask<HTMLInputElement>(\n { mask: INPUT_MASK, lazy: true, overwrite: false },\n {\n onComplete: (maskedValue) => {\n const parsed = dayjs(maskedValue, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowedRef.current(parsed.toDate())) {\n onChangeRef.current?.(parsed.toDate());\n }\n },\n },\n );\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setMaskValue(formatDate(val));\n setOpen(false);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').trim();\n const parsed = dayjs(pasted, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n e.preventDefault();\n const date = parsed.toDate();\n onChange?.(date);\n setMaskValue(formatDate(date));\n }\n // If we can't parse it, let IMask handle it naturally\n };\n\n const handleFocus = () => {\n // Sync the mask to the current value on focus — handles external parent resets\n setMaskValue(formatDate(value));\n };\n\n const handleBlur = () => {\n const current = maskRef.current?.value ?? '';\n if (current === '') {\n if (value !== undefined) {\n onChange?.(undefined);\n }\n return;\n }\n const parsed = dayjs(current, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n onChange?.(parsed.toDate());\n }\n // Revert to last valid display value\n setMaskValue(formatDate(value));\n };\n\n const inputClasses = cn(\n inputVariants(),\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n );\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div className={cn('relative flex w-full items-center rounded-md', wrapperClassName)}>\n {editable ? (\n <input\n ref={maskRef}\n defaultValue={formatDate(value)}\n className={inputClasses}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onBlur={(e) => {\n handleBlur();\n inputProps?.onBlur?.(e);\n }}\n />\n ) : (\n <Input\n className={cn(\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n )}\n {...inputProps}\n value={formatDate(value)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n />\n )}\n {showCalendarIcon && (\n <div\n className={cn(\n 'absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2',\n disabled ? 'text-gray-400' : 'cursor-pointer text-black',\n )}\n >\n <LuCalendar size={16} />\n </div>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto overflow-hidden p-0\"\n align=\"start\"\n onOpenAutoFocus={editable ? (e) => e.preventDefault() : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...(editable ? { month: calendarMonth, onMonthChange: setNavigatedMonth } : {})}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),chunkNALIS6SG_cjs=require('./chunk-NALIS6SG.cjs'),lu=require('react-icons/lu'),sonner=require('sonner'),jsxRuntime=require('react/jsx-runtime');var x=4e3,z=({className:o,duration:r=x,toastOptions:e,position:i,closeButton:c=true,...l})=>{let{isMobile:m}=chunkNALIS6SG_cjs.a(992),d=i??(m?"top-center":"bottom-left"),u={fontFamily:"var(--font-lato)",fontSize:"0.875rem","--toast-duration":`${e?.duration??r}ms`,...e?.style};return jsxRuntime.jsx(sonner.Toaster,{className:chunkQRO22BPZ_cjs.a("toaster group",o),duration:r,position:d,icons:{success:jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-green-500",children:jsxRuntime.jsx(lu.LuCheck,{className:"size-4 text-green-900"})}),info:jsxRuntime.jsx("div",{className:"bg-grey-300 flex h-8 w-8 items-center justify-center rounded-full",children:jsxRuntime.jsx(lu.LuInfo,{className:"size-4 text-gray-800"})}),warning:jsxRuntime.jsx("div",{className:"bg-gold-300 flex h-8 w-8 items-center justify-center rounded-full",children:jsxRuntime.jsx(lu.LuTriangleAlert,{className:"text-gold-900 size-4"})}),error:jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-red-200",children:jsxRuntime.jsx(lu.LuX,{className:"size-4 text-red-600"})}),loading:jsxRuntime.jsx(lu.LuLoaderCircle,{className:"size-5 animate-spin text-green-600"})},toastOptions:{...e,style:u,classNames:{...e?.classNames,toast:chunkQRO22BPZ_cjs.a("toast-progress overflow-visible!",e?.classNames?.toast),default:chunkQRO22BPZ_cjs.a("text-primary! bg-toast-success! w-[350px]! items-center! rounded-md! border text-sm! md:w-[440px]!",e?.classNames?.default),success:chunkQRO22BPZ_cjs.a("border-green-600!",e?.classNames?.success),error:chunkQRO22BPZ_cjs.a("border-red-300!",e?.classNames?.error),warning:chunkQRO22BPZ_cjs.a("bg-gold-100! border-gold-500!",e?.classNames?.warning),info:chunkQRO22BPZ_cjs.a("border-gray-500!",e?.classNames?.info),title:chunkQRO22BPZ_cjs.a("text-base! font-bold!",e?.classNames?.title),description:chunkQRO22BPZ_cjs.a("text-secondary! text-sm!",e?.classNames?.description),icon:chunkQRO22BPZ_cjs.a("size-8! shrink-0! self-start!",e?.classNames?.icon),actionButton:chunkQRO22BPZ_cjs.a("text-secondary! focus-visible:border-ring! focus-visible:ring-ring/50! mt-auto! h-8! rounded-md! border-none! bg-transparent! py-0! pr-0! pl-0! text-base! font-bold! hover:bg-gray-200! focus:ring-0! focus-visible:ring-[3px]! active:bg-gray-200! md:pr-3! md:pl-3!",e?.classNames?.actionButton),closeButton:"absolute -top-0.5! -right-4! left-auto!"}},closeButton:c,...l})},L=Object.assign((o,r)=>sonner.toast.success(o,r),sonner.toast,{misc:(o,r)=>sonner.toast(o,{...r,icon:r?.icon??jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-sky-300",children:jsxRuntime.jsx(lu.LuIterationCcw,{className:"size-4 text-sky-900"})}),className:chunkQRO22BPZ_cjs.a("toast-misc",r?.className)})});exports.a=z;exports.b=L;//# sourceMappingURL=chunk-EJVR3XRG.cjs.map
2
+ //# sourceMappingURL=chunk-EJVR3XRG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/toast/toaster.tsx"],"names":["DEFAULT_TOAST_DURATION","Toaster","className","duration","toastOptions","position","closeButton","props","isMobile","useIsMobile","resolvedPosition","toastStyle","jsx","Sonner","cn","LuCheck","LuInfo","LuTriangleAlert","LuX","LuLoaderCircle","toast","message","options","sonnerToast","LuIterationCcw"],"mappings":"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","file":"chunk-EJVR3XRG.cjs","sourcesContent":["import type { CSSProperties } from 'react';\nimport {\n LuCheck,\n LuInfo,\n LuIterationCcw,\n LuLoaderCircle,\n LuTriangleAlert,\n LuX,\n} from 'react-icons/lu';\nimport { Toaster as Sonner, type ToasterProps, toast as sonnerToast } from 'sonner';\nimport { cn } from '@/lib/utils';\nimport { useIsMobile } from '@/hooks/useIsMobile';\n\nconst DEFAULT_TOAST_DURATION = 4000;\n\ntype ToastProgressStyle = CSSProperties & {\n '--toast-duration'?: string;\n};\n\nconst Toaster = ({\n className,\n duration = DEFAULT_TOAST_DURATION,\n toastOptions,\n position,\n closeButton = true,\n ...props\n}: ToasterProps) => {\n const { isMobile } = useIsMobile(992); // \"lg\" media query size - makes tablets use 'top-center' positioning\n const resolvedPosition = position ?? (isMobile ? 'top-center' : 'bottom-left');\n const toastDuration = toastOptions?.duration ?? duration;\n const toastStyle: ToastProgressStyle = {\n fontFamily: 'var(--font-lato)',\n fontSize: '0.875rem',\n '--toast-duration': `${toastDuration}ms`,\n ...toastOptions?.style,\n };\n\n return (\n <Sonner\n className={cn('toaster group', className)}\n duration={duration}\n position={resolvedPosition}\n icons={{\n success: (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-green-500\">\n <LuCheck className=\"size-4 text-green-900\" />\n </div>\n ),\n info: (\n <div className=\"bg-grey-300 flex h-8 w-8 items-center justify-center rounded-full\">\n <LuInfo className=\"size-4 text-gray-800\" />\n </div>\n ),\n warning: (\n <div className=\"bg-gold-300 flex h-8 w-8 items-center justify-center rounded-full\">\n <LuTriangleAlert className=\"text-gold-900 size-4\" />\n </div>\n ),\n error: (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-red-200\">\n <LuX className=\"size-4 text-red-600\" />\n </div>\n ),\n loading: <LuLoaderCircle className=\"size-5 animate-spin text-green-600\" />,\n }}\n toastOptions={{\n ...toastOptions,\n style: toastStyle,\n classNames: {\n ...toastOptions?.classNames,\n toast: cn('toast-progress overflow-visible!', toastOptions?.classNames?.toast),\n default: cn(\n 'text-primary! bg-toast-success! w-[350px]! items-center! rounded-md! border text-sm! md:w-[440px]!',\n toastOptions?.classNames?.default,\n ),\n success: cn('border-green-600!', toastOptions?.classNames?.success),\n error: cn('border-red-300!', toastOptions?.classNames?.error),\n warning: cn('bg-gold-100! border-gold-500!', toastOptions?.classNames?.warning),\n info: cn('border-gray-500!', toastOptions?.classNames?.info),\n title: cn('text-base! font-bold!', toastOptions?.classNames?.title),\n description: cn('text-secondary! text-sm!', toastOptions?.classNames?.description),\n icon: cn('size-8! shrink-0! self-start!', toastOptions?.classNames?.icon),\n actionButton: cn(\n 'text-secondary! focus-visible:border-ring! focus-visible:ring-ring/50! mt-auto! h-8! rounded-md! border-none! bg-transparent! py-0! pr-0! pl-0! text-base! font-bold! hover:bg-gray-200! focus:ring-0! focus-visible:ring-[3px]! active:bg-gray-200! md:pr-3! md:pl-3!',\n toastOptions?.classNames?.actionButton,\n ),\n closeButton: 'absolute -top-0.5! -right-4! left-auto!',\n },\n }}\n closeButton={closeButton}\n {...props}\n />\n );\n};\n\ntype SonnerToast = typeof sonnerToast;\ntype ToastMessage = Parameters<SonnerToast>[0];\ntype ToastOptions = Parameters<SonnerToast>[1];\ntype ToastReturn = ReturnType<SonnerToast>;\n\ntype SolaceToast = SonnerToast & {\n misc: (message: ToastMessage, options?: ToastOptions) => ToastReturn;\n};\n\nconst toast = Object.assign(\n (message: ToastMessage, options?: ToastOptions) => sonnerToast.success(message, options),\n sonnerToast,\n {\n misc: (message: ToastMessage, options?: ToastOptions) =>\n sonnerToast(message, {\n ...options,\n icon: options?.icon ?? (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-sky-300\">\n <LuIterationCcw className=\"size-4 text-sky-900\" />\n </div>\n ),\n className: cn('toast-misc', options?.className),\n }),\n },\n) as SolaceToast;\n\nexport { Toaster, toast };\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkKAZK3PAB_cjs=require('./chunk-KAZK3PAB.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),reactDropzone=require('react-dropzone'),lu=require('react-icons/lu'),jsxRuntime=require('react/jsx-runtime');var P={"image/jpeg":[".jpeg",".jpg"],"image/png":[".png"],"image/avif":[".avif"],"image/heic":[".heic"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/csv":[".csv"],"application/xml":[".xml",".xlsx"],"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},A=[],F={},j=()=>null,L=({accept:m=P,files:n=A,maxFiles:o=5,maxSizeInMb:l=10,onDrop:f=j,className:g=void 0,wrapperClassName:u=void 0,extraInputProps:c=F,isLoading:d=false,icon:b=void 0,title:x=void 0,subtitle:v=void 0})=>{let i=n.length>=o,{getRootProps:y,getInputProps:h,isDragActive:p}=reactDropzone.useDropzone({maxFiles:o,multiple:o>1,onDrop:f,maxSize:l*1024*1024,accept:m,onDropRejected:r=>{r.length>0&&r[0].errors[0].code==="too-many-files"?chunkKAZK3PAB_cjs.b.error(`Too many files. Please upload up to ${o} files at a time.`):r.length>0&&r[0].errors[0].code==="file-too-large"?chunkKAZK3PAB_cjs.b.error(`File is too large. Please upload files smaller than ${l} MB.`):chunkKAZK3PAB_cjs.b.error("File type not supported");},disabled:n.length>=o}),N={...h(),...c,disabled:d||c.disabled};return jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("flex min-h-48 flex-col gap-4 hover:cursor-pointer",p&&"border-grey-700 opacity-75",i&&"hover:cursor-not-allowed",u),...y(),children:jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center",i&&!p&&"border-red-300",g),children:i?jsxRuntime.jsxs("div",{className:"text flex flex-col items-center",children:[jsxRuntime.jsx(lu.LuFileWarning,{className:"h-8 w-8 text-red-500"}),jsxRuntime.jsxs("div",{className:"strong mt-4",children:["Maximum ",o," file limit reached"]})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("input",{...N}),d?jsxRuntime.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700"}):b??jsxRuntime.jsx(lu.LuUpload,{className:"h-8 w-8 text-gray-700"}),jsxRuntime.jsxs("div",{className:"text-grey-700 mt-4 flex flex-col gap-1",children:[x??jsxRuntime.jsx("p",{className:"text-body-lg",children:"Drag an image or click to browse"}),v??jsxRuntime.jsxs("p",{className:"text-body-sm",children:[l," MB max file size"]})]})]})})})};exports.a=L;//# sourceMappingURL=chunk-KJ6SBPS3.cjs.map
2
- //# sourceMappingURL=chunk-KJ6SBPS3.cjs.map
1
+ 'use strict';var chunkEJVR3XRG_cjs=require('./chunk-EJVR3XRG.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),reactDropzone=require('react-dropzone'),lu=require('react-icons/lu'),jsxRuntime=require('react/jsx-runtime');var P={"image/jpeg":[".jpeg",".jpg"],"image/png":[".png"],"image/avif":[".avif"],"image/heic":[".heic"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/csv":[".csv"],"application/xml":[".xml",".xlsx"],"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},A=[],F={},j=()=>null,L=({accept:m=P,files:n=A,maxFiles:o=5,maxSizeInMb:l=10,onDrop:f=j,className:g=void 0,wrapperClassName:u=void 0,extraInputProps:c=F,isLoading:d=false,icon:b=void 0,title:x=void 0,subtitle:v=void 0})=>{let i=n.length>=o,{getRootProps:y,getInputProps:h,isDragActive:p}=reactDropzone.useDropzone({maxFiles:o,multiple:o>1,onDrop:f,maxSize:l*1024*1024,accept:m,onDropRejected:r=>{r.length>0&&r[0].errors[0].code==="too-many-files"?chunkEJVR3XRG_cjs.b.error(`Too many files. Please upload up to ${o} files at a time.`):r.length>0&&r[0].errors[0].code==="file-too-large"?chunkEJVR3XRG_cjs.b.error(`File is too large. Please upload files smaller than ${l} MB.`):chunkEJVR3XRG_cjs.b.error("File type not supported");},disabled:n.length>=o}),N={...h(),...c,disabled:d||c.disabled};return jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("flex min-h-48 flex-col gap-4 hover:cursor-pointer",p&&"border-grey-700 opacity-75",i&&"hover:cursor-not-allowed",u),...y(),children:jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center",i&&!p&&"border-red-300",g),children:i?jsxRuntime.jsxs("div",{className:"text flex flex-col items-center",children:[jsxRuntime.jsx(lu.LuFileWarning,{className:"h-8 w-8 text-red-500"}),jsxRuntime.jsxs("div",{className:"strong mt-4",children:["Maximum ",o," file limit reached"]})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("input",{...N}),d?jsxRuntime.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700"}):b??jsxRuntime.jsx(lu.LuUpload,{className:"h-8 w-8 text-gray-700"}),jsxRuntime.jsxs("div",{className:"text-grey-700 mt-4 flex flex-col gap-1",children:[x??jsxRuntime.jsx("p",{className:"text-body-lg",children:"Drag an image or click to browse"}),v??jsxRuntime.jsxs("p",{className:"text-body-sm",children:[l," MB max file size"]})]})]})})})};exports.a=L;//# sourceMappingURL=chunk-F67MXJ2E.cjs.map
2
+ //# sourceMappingURL=chunk-F67MXJ2E.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/dropzone/dropzone.tsx"],"names":["defaultAcceptedFileTypes","stableArray","stableObject","stableFunc","Dropzone","accept","files","maxFiles","maxSizeInMb","onDrop","className","wrapperClassName","extraInputProps","isLoading","icon","title","subtitle","overMaxFileLimit","getRootProps","getInputProps","isDragActive","useDropzone","errorList","toast","inputProps","jsx","cn","jsxs","LuFileWarning","Fragment","LuUpload"],"mappings":"kOAKA,IAAMA,CAAAA,CAA2B,CAC/B,YAAA,CAAc,CAAC,QAAS,MAAM,CAAA,CAC9B,WAAA,CAAa,CAAC,MAAM,CAAA,CACpB,YAAA,CAAc,CAAC,OAAO,EACtB,YAAA,CAAc,CAAC,OAAO,CAAA,CACtB,YAAA,CAAc,CAAC,OAAO,CAAA,CACtB,kBAAmB,CAAC,MAAM,CAAA,CAC1B,UAAA,CAAY,CAAC,MAAM,CAAA,CACnB,iBAAA,CAAmB,CAAC,OAAQ,OAAO,CAAA,CACnC,oBAAA,CAAsB,CAAC,MAAM,CAAA,CAC7B,yEAAA,CAA2E,CAAC,OAAO,CACrF,CAAA,CACMC,CAAAA,CAAsB,GACtBC,CAAAA,CAAe,EAAC,CAChBC,CAAAA,CAAa,IAAM,IAAA,CAiBZC,CAAAA,CAAW,CAAC,CACvB,MAAA,CAAAC,CAAAA,CAASL,CAAAA,CACT,KAAA,CAAAM,EAAQL,CAAAA,CACR,QAAA,CAAAM,CAAAA,CAAW,CAAA,CACX,WAAA,CAAAC,CAAAA,CAAc,EAAA,CACd,MAAA,CAAAC,EAASN,CAAAA,CACT,SAAA,CAAAO,CAAAA,CAAY,MAAA,CACZ,gBAAA,CAAAC,CAAAA,CAAmB,MAAA,CACnB,eAAA,CAAAC,EAAkBV,CAAAA,CAClB,SAAA,CAAAW,CAAAA,CAAY,KAAA,CACZ,KAAAC,CAAAA,CAAO,MAAA,CACP,KAAA,CAAAC,CAAAA,CAAQ,OACR,QAAA,CAAAC,CAAAA,CAAW,MACb,CAAA,GAAqB,CACnB,IAAMC,CAAAA,CAAmBX,CAAAA,CAAM,QAAUC,CAAAA,CAEnC,CAAE,YAAA,CAAAW,CAAAA,CAAc,cAAAC,CAAAA,CAAe,YAAA,CAAAC,CAAa,CAAA,CAAIC,0BAAY,CAChE,QAAA,CAAAd,CAAAA,CACA,QAAA,CAAUA,CAAAA,CAAW,CAAA,CACrB,MAAA,CAAAE,CAAAA,CACA,QAASD,CAAAA,CAAc,IAAA,CAAO,IAAA,CAC9B,MAAA,CAAAH,EACA,cAAA,CAAiBiB,CAAAA,EAAc,CACzBA,CAAAA,CAAU,OAAS,CAAA,EAAKA,CAAAA,CAAU,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,GAAS,iBAC1DC,mBAAAA,CAAM,KAAA,CAAM,CAAA,oCAAA,EAAuChB,CAAQ,CAAA,iBAAA,CAAmB,CAAA,CACrEe,CAAAA,CAAU,MAAA,CAAS,GAAKA,CAAAA,CAAU,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,GAAS,gBAAA,CACjEC,oBAAM,KAAA,CAAM,CAAA,oDAAA,EAAuDf,CAAW,CAAA,IAAA,CAAM,EAEpFe,mBAAAA,CAAM,KAAA,CAAM,yBAAyB,EAEzC,EACA,QAAA,CAAUjB,CAAAA,CAAM,MAAA,EAAUC,CAC5B,CAAC,CAAA,CAEKiB,CAAAA,CAAa,CACjB,GAAGL,CAAAA,EAAc,CACjB,GAAGP,CAAAA,CACH,SAAUC,CAAAA,EAAaD,CAAAA,CAAgB,QACzC,CAAA,CAEA,OACEa,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWC,mBAAAA,CACT,mDAAA,CACAN,CAAAA,EAAgB,4BAAA,CAChBH,CAAAA,EAAoB,2BACpBN,CACF,CAAA,CACC,GAAGO,CAAAA,GAEJ,QAAA,CAAAO,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWC,oBACT,kIAAA,CACAT,CAAAA,EAAoB,CAACG,CAAAA,EAAgB,gBAAA,CACrCV,CACF,CAAA,CAEC,QAAA,CAAAO,EACCU,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iCAAA,CACb,QAAA,CAAA,CAAAF,cAAAA,CAACG,gBAAAA,CAAA,CAAc,UAAU,sBAAA,CAAuB,CAAA,CAChDD,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CAAc,QAAA,CAAA,CAAA,UAAA,CAASpB,CAAAA,CAAS,uBAAmB,CAAA,CAAA,CACpE,CAAA,CAEAoB,eAAAA,CAAAE,mBAAAA,CAAA,CACE,QAAA,CAAA,CAAAJ,cAAAA,CAAC,OAAA,CAAA,CAAO,GAAGD,EAAY,CAAA,CACtBX,CAAAA,CACCY,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8EAAA,CAA+E,CAAA,CAE7FX,CAAAA,EAAQW,eAACK,WAAAA,CAAA,CAAS,SAAA,CAAU,uBAAA,CAAwB,EAEvDH,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCAAA,CACZ,UAAAZ,CAAAA,EAASU,cAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,cAAA,CAAe,QAAA,CAAA,kCAAA,CAAgC,CAAA,CACrET,CAAAA,EAAYW,gBAAC,GAAA,CAAA,CAAE,SAAA,CAAU,cAAA,CAAgB,QAAA,CAAA,CAAAnB,EAAY,mBAAA,CAAA,CAAiB,CAAA,CAAA,CACzE,CAAA,CAAA,CACF,CAAA,CAEJ,EACF,CAEJ","file":"chunk-KJ6SBPS3.cjs","sourcesContent":["import { Accept, useDropzone } from 'react-dropzone';\nimport { LuFileWarning, LuUpload } from 'react-icons/lu';\nimport { toast } from '@/v2/toast/toaster';\nimport { cn } from '@/lib/utils';\n\nconst defaultAcceptedFileTypes = {\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/png': ['.png'],\n 'image/avif': ['.avif'],\n 'image/heic': ['.heic'],\n 'image/webp': ['.webp'],\n 'application/pdf': ['.pdf'],\n 'text/csv': ['.csv'],\n 'application/xml': ['.xml', '.xlsx'],\n 'application/msword': ['.doc'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],\n};\nconst stableArray: File[] = [];\nconst stableObject = {};\nconst stableFunc = () => null;\n\nexport type DropzoneProps = {\n accept?: Accept;\n files?: File[];\n maxFiles?: number;\n maxSizeInMb?: number;\n onDrop?: (acceptedFiles: File[]) => void;\n className?: string;\n wrapperClassName?: string;\n extraInputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n isLoading?: boolean;\n icon?: React.ReactNode;\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n};\n\nexport const Dropzone = ({\n accept = defaultAcceptedFileTypes,\n files = stableArray,\n maxFiles = 5,\n maxSizeInMb = 10,\n onDrop = stableFunc,\n className = undefined,\n wrapperClassName = undefined,\n extraInputProps = stableObject,\n isLoading = false,\n icon = undefined,\n title = undefined,\n subtitle = undefined,\n}: DropzoneProps) => {\n const overMaxFileLimit = files.length >= maxFiles;\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n maxFiles,\n multiple: maxFiles > 1,\n onDrop,\n maxSize: maxSizeInMb * 1024 * 1024,\n accept,\n onDropRejected: (errorList) => {\n if (errorList.length > 0 && errorList[0].errors[0].code === 'too-many-files') {\n toast.error(`Too many files. Please upload up to ${maxFiles} files at a time.`);\n } else if (errorList.length > 0 && errorList[0].errors[0].code === 'file-too-large') {\n toast.error(`File is too large. Please upload files smaller than ${maxSizeInMb} MB.`);\n } else {\n toast.error('File type not supported');\n }\n },\n disabled: files.length >= maxFiles,\n });\n\n const inputProps = {\n ...getInputProps(),\n ...extraInputProps,\n disabled: isLoading || extraInputProps.disabled,\n };\n\n return (\n <div\n className={cn(\n 'flex min-h-48 flex-col gap-4 hover:cursor-pointer',\n isDragActive && 'border-grey-700 opacity-75',\n overMaxFileLimit && 'hover:cursor-not-allowed',\n wrapperClassName,\n )}\n {...getRootProps()}\n >\n <div\n className={cn(\n 'bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center',\n overMaxFileLimit && !isDragActive && 'border-red-300',\n className,\n )}\n >\n {overMaxFileLimit ? (\n <div className=\"text flex flex-col items-center\">\n <LuFileWarning className=\"h-8 w-8 text-red-500\" />\n <div className=\"strong mt-4\">Maximum {maxFiles} file limit reached</div>\n </div>\n ) : (\n <>\n <input {...inputProps} />\n {isLoading ? (\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700\" />\n ) : (\n (icon ?? <LuUpload className=\"h-8 w-8 text-gray-700\" />)\n )}\n <div className=\"text-grey-700 mt-4 flex flex-col gap-1\">\n {title ?? <p className=\"text-body-lg\">Drag an image or click to browse</p>}\n {subtitle ?? <p className=\"text-body-sm\">{maxSizeInMb} MB max file size</p>}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/v2/dropzone/dropzone.tsx"],"names":["defaultAcceptedFileTypes","stableArray","stableObject","stableFunc","Dropzone","accept","files","maxFiles","maxSizeInMb","onDrop","className","wrapperClassName","extraInputProps","isLoading","icon","title","subtitle","overMaxFileLimit","getRootProps","getInputProps","isDragActive","useDropzone","errorList","toast","inputProps","jsx","cn","jsxs","LuFileWarning","Fragment","LuUpload"],"mappings":"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","file":"chunk-F67MXJ2E.cjs","sourcesContent":["import { Accept, useDropzone } from 'react-dropzone';\nimport { LuFileWarning, LuUpload } from 'react-icons/lu';\nimport { toast } from '@/v2/toast/toaster';\nimport { cn } from '@/lib/utils';\n\nconst defaultAcceptedFileTypes = {\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/png': ['.png'],\n 'image/avif': ['.avif'],\n 'image/heic': ['.heic'],\n 'image/webp': ['.webp'],\n 'application/pdf': ['.pdf'],\n 'text/csv': ['.csv'],\n 'application/xml': ['.xml', '.xlsx'],\n 'application/msword': ['.doc'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],\n};\nconst stableArray: File[] = [];\nconst stableObject = {};\nconst stableFunc = () => null;\n\nexport type DropzoneProps = {\n accept?: Accept;\n files?: File[];\n maxFiles?: number;\n maxSizeInMb?: number;\n onDrop?: (acceptedFiles: File[]) => void;\n className?: string;\n wrapperClassName?: string;\n extraInputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n isLoading?: boolean;\n icon?: React.ReactNode;\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n};\n\nexport const Dropzone = ({\n accept = defaultAcceptedFileTypes,\n files = stableArray,\n maxFiles = 5,\n maxSizeInMb = 10,\n onDrop = stableFunc,\n className = undefined,\n wrapperClassName = undefined,\n extraInputProps = stableObject,\n isLoading = false,\n icon = undefined,\n title = undefined,\n subtitle = undefined,\n}: DropzoneProps) => {\n const overMaxFileLimit = files.length >= maxFiles;\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n maxFiles,\n multiple: maxFiles > 1,\n onDrop,\n maxSize: maxSizeInMb * 1024 * 1024,\n accept,\n onDropRejected: (errorList) => {\n if (errorList.length > 0 && errorList[0].errors[0].code === 'too-many-files') {\n toast.error(`Too many files. Please upload up to ${maxFiles} files at a time.`);\n } else if (errorList.length > 0 && errorList[0].errors[0].code === 'file-too-large') {\n toast.error(`File is too large. Please upload files smaller than ${maxSizeInMb} MB.`);\n } else {\n toast.error('File type not supported');\n }\n },\n disabled: files.length >= maxFiles,\n });\n\n const inputProps = {\n ...getInputProps(),\n ...extraInputProps,\n disabled: isLoading || extraInputProps.disabled,\n };\n\n return (\n <div\n className={cn(\n 'flex min-h-48 flex-col gap-4 hover:cursor-pointer',\n isDragActive && 'border-grey-700 opacity-75',\n overMaxFileLimit && 'hover:cursor-not-allowed',\n wrapperClassName,\n )}\n {...getRootProps()}\n >\n <div\n className={cn(\n 'bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center',\n overMaxFileLimit && !isDragActive && 'border-red-300',\n className,\n )}\n >\n {overMaxFileLimit ? (\n <div className=\"text flex flex-col items-center\">\n <LuFileWarning className=\"h-8 w-8 text-red-500\" />\n <div className=\"strong mt-4\">Maximum {maxFiles} file limit reached</div>\n </div>\n ) : (\n <>\n <input {...inputProps} />\n {isLoading ? (\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700\" />\n ) : (\n (icon ?? <LuUpload className=\"h-8 w-8 text-gray-700\" />)\n )}\n <div className=\"text-grey-700 mt-4 flex flex-col gap-1\">\n {title ?? <p className=\"text-body-lg\">Drag an image or click to browse</p>}\n {subtitle ?? <p className=\"text-body-sm\">{maxSizeInMb} MB max file size</p>}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n"]}