erp-pro-ui 0.2.6 → 0.2.7

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 (422) hide show
  1. package/dist/accordion.cjs +1 -1
  2. package/dist/accordion.mjs +1 -1
  3. package/dist/alert.cjs +1 -1
  4. package/dist/alert.mjs +1 -1
  5. package/dist/animated-content.cjs +1 -1
  6. package/dist/animated-content.mjs +1 -1
  7. package/dist/ascii-text.cjs +1 -1
  8. package/dist/ascii-text.mjs +1 -1
  9. package/dist/background-gradient-animation.cjs +1 -1
  10. package/dist/background-gradient-animation.mjs +1 -1
  11. package/dist/button-hover-border-gradient.cjs +1 -1
  12. package/dist/button-hover-border-gradient.mjs +1 -1
  13. package/dist/button.cjs +1 -1
  14. package/dist/button.mjs +1 -1
  15. package/dist/calendar.cjs +1 -1
  16. package/dist/calendar.mjs +1 -1
  17. package/dist/card.cjs +1 -1
  18. package/dist/card.mjs +1 -1
  19. package/dist/carousel.cjs +1 -1
  20. package/dist/carousel.mjs +1 -1
  21. package/dist/catalog.cjs +7 -0
  22. package/dist/catalog.cjs.map +1 -1
  23. package/dist/catalog.d.ts +13 -1
  24. package/dist/catalog.d.ts.map +1 -1
  25. package/dist/catalog.mjs +7 -0
  26. package/dist/catalog.mjs.map +1 -1
  27. package/dist/charts.cjs +1 -1
  28. package/dist/charts.mjs +1 -1
  29. package/dist/checkbox.cjs +1 -1
  30. package/dist/checkbox.mjs +1 -1
  31. package/dist/chip.cjs +1 -1
  32. package/dist/chip.mjs +1 -1
  33. package/dist/chroma-grid.cjs +1 -1
  34. package/dist/chroma-grid.mjs +1 -1
  35. package/dist/chunks/{Drawer-Y0_sJni5.mjs → Drawer-BhTTQV8Q.mjs} +2 -2
  36. package/dist/chunks/{Drawer-Y0_sJni5.mjs.map → Drawer-BhTTQV8Q.mjs.map} +1 -1
  37. package/dist/chunks/{Drawer-D72Xi2Gq.cjs → Drawer-C_DLqrus.cjs} +2 -3
  38. package/dist/chunks/{Drawer-D72Xi2Gq.cjs.map → Drawer-C_DLqrus.cjs.map} +1 -1
  39. package/dist/chunks/{DropdownMenu-BQ4WlaGp.mjs → DropdownMenu-B18BI5l7.mjs} +2 -2
  40. package/dist/chunks/{DropdownMenu-BQ4WlaGp.mjs.map → DropdownMenu-B18BI5l7.mjs.map} +1 -1
  41. package/dist/chunks/{DropdownMenu-yh04burS.cjs → DropdownMenu-CEmlmX7P.cjs} +2 -3
  42. package/dist/chunks/{DropdownMenu-yh04burS.cjs.map → DropdownMenu-CEmlmX7P.cjs.map} +1 -1
  43. package/dist/chunks/{HoverBorderGradient-DEtm3owk.mjs → HoverBorderGradient-CGKcviEd.mjs} +2 -2
  44. package/dist/chunks/{HoverBorderGradient-DEtm3owk.mjs.map → HoverBorderGradient-CGKcviEd.mjs.map} +1 -1
  45. package/dist/chunks/{HoverBorderGradient-DMMyr2L3.cjs → HoverBorderGradient-DTKasFZO.cjs} +2 -3
  46. package/dist/chunks/{HoverBorderGradient-DMMyr2L3.cjs.map → HoverBorderGradient-DTKasFZO.cjs.map} +1 -1
  47. package/dist/chunks/{SunToMoonButton-BOKHzC1H.mjs → SunToMoonButton-DIMK53fW.mjs} +2 -2
  48. package/dist/chunks/{SunToMoonButton-BOKHzC1H.mjs.map → SunToMoonButton-DIMK53fW.mjs.map} +1 -1
  49. package/dist/chunks/{SunToMoonButton-gX4Kk_5B.cjs → SunToMoonButton-DUuIqw22.cjs} +2 -3
  50. package/dist/chunks/{SunToMoonButton-gX4Kk_5B.cjs.map → SunToMoonButton-DUuIqw22.cjs.map} +1 -1
  51. package/dist/chunks/{Tooltip-nnaiqJTT.cjs → Tooltip-1yPGRJ2Q.cjs} +1 -2
  52. package/dist/chunks/{Tooltip-nnaiqJTT.cjs.map → Tooltip-1yPGRJ2Q.cjs.map} +1 -1
  53. package/dist/chunks/{Tooltip-LbOKP__2.mjs → Tooltip-CEj-I4JO.mjs} +1 -1
  54. package/dist/chunks/{Tooltip-LbOKP__2.mjs.map → Tooltip-CEj-I4JO.mjs.map} +1 -1
  55. package/dist/chunks/{accordion-CLcjNX_X.mjs → accordion-Cf-Q3rec.mjs} +2 -2
  56. package/dist/chunks/{accordion-CLcjNX_X.mjs.map → accordion-Cf-Q3rec.mjs.map} +1 -1
  57. package/dist/chunks/{accordion-Bj3Sj0mC.cjs → accordion-X4PNqWkW.cjs} +2 -3
  58. package/dist/chunks/{accordion-Bj3Sj0mC.cjs.map → accordion-X4PNqWkW.cjs.map} +1 -1
  59. package/dist/chunks/{alert-BBA4Sh4e.cjs → alert-BEMULPIi.cjs} +2 -3
  60. package/dist/chunks/{alert-BBA4Sh4e.cjs.map → alert-BEMULPIi.cjs.map} +1 -1
  61. package/dist/chunks/{alert-oUz79MGc.mjs → alert-GImBqaCY.mjs} +2 -2
  62. package/dist/chunks/{alert-oUz79MGc.mjs.map → alert-GImBqaCY.mjs.map} +1 -1
  63. package/dist/chunks/{animated-content-CiNJLgbq.mjs → animated-content-Bp-Yt0_7.mjs} +1 -1
  64. package/dist/chunks/{animated-content-CiNJLgbq.mjs.map → animated-content-Bp-Yt0_7.mjs.map} +1 -1
  65. package/dist/chunks/{animated-content-B3wbiWQI.cjs → animated-content-tSHXDZq2.cjs} +1 -2
  66. package/dist/chunks/{animated-content-B3wbiWQI.cjs.map → animated-content-tSHXDZq2.cjs.map} +1 -1
  67. package/dist/chunks/{ascii-text-KwVE41Hw.cjs → ascii-text-Ctua6ucZ.cjs} +2 -2
  68. package/dist/chunks/{ascii-text-KwVE41Hw.cjs.map → ascii-text-Ctua6ucZ.cjs.map} +1 -1
  69. package/dist/chunks/{ascii-text-C6JegLhP.mjs → ascii-text-QyP7JU7g.mjs} +1 -1
  70. package/dist/chunks/{ascii-text-C6JegLhP.mjs.map → ascii-text-QyP7JU7g.mjs.map} +1 -1
  71. package/dist/chunks/{background-gradient-animation-CTc2ZR74.mjs → background-gradient-animation-CZUD_aq2.mjs} +2 -2
  72. package/dist/chunks/{background-gradient-animation-CTc2ZR74.mjs.map → background-gradient-animation-CZUD_aq2.mjs.map} +1 -1
  73. package/dist/chunks/{background-gradient-animation-1LZY3DYT.cjs → background-gradient-animation-PvM0i88k.cjs} +2 -3
  74. package/dist/chunks/{background-gradient-animation-1LZY3DYT.cjs.map → background-gradient-animation-PvM0i88k.cjs.map} +1 -1
  75. package/dist/chunks/{button-IDShmQqA.mjs → button-CAU9ej3h.mjs} +2 -2
  76. package/dist/chunks/{button-IDShmQqA.mjs.map → button-CAU9ej3h.mjs.map} +1 -1
  77. package/dist/chunks/{button-uD87K76W.cjs → button-D2ZYmVda.cjs} +2 -3
  78. package/dist/chunks/{button-uD87K76W.cjs.map → button-D2ZYmVda.cjs.map} +1 -1
  79. package/dist/chunks/{button-hover-border-gradient-DGZqd8je.cjs → button-hover-border-gradient-D12Zjmd3.cjs} +2 -3
  80. package/dist/chunks/{button-hover-border-gradient-DGZqd8je.cjs.map → button-hover-border-gradient-D12Zjmd3.cjs.map} +1 -1
  81. package/dist/chunks/{button-hover-border-gradient-B2ebbDek.mjs → button-hover-border-gradient-VNEg4V0o.mjs} +2 -2
  82. package/dist/chunks/{button-hover-border-gradient-B2ebbDek.mjs.map → button-hover-border-gradient-VNEg4V0o.mjs.map} +1 -1
  83. package/dist/chunks/calendar-BlUhssD4.mjs +203 -0
  84. package/dist/chunks/calendar-BlUhssD4.mjs.map +1 -0
  85. package/dist/chunks/calendar-CdKKhdx5.cjs +208 -0
  86. package/dist/chunks/calendar-CdKKhdx5.cjs.map +1 -0
  87. package/dist/chunks/{card-Cuud0jIt.cjs → card-C_Qr7E6E.cjs} +1 -2
  88. package/dist/chunks/{card-Cuud0jIt.cjs.map → card-C_Qr7E6E.cjs.map} +1 -1
  89. package/dist/chunks/{card-DNeC6jqk.mjs → card-DYHDNCPK.mjs} +1 -1
  90. package/dist/chunks/{card-DNeC6jqk.mjs.map → card-DYHDNCPK.mjs.map} +1 -1
  91. package/dist/chunks/{carousel-xHkrV_pt.cjs → carousel-DtOJEbEU.cjs} +4 -5
  92. package/dist/chunks/{carousel-xHkrV_pt.cjs.map → carousel-DtOJEbEU.cjs.map} +1 -1
  93. package/dist/chunks/{carousel-Dpe5QLJK.mjs → carousel-eeqWZZHE.mjs} +4 -4
  94. package/dist/chunks/{carousel-Dpe5QLJK.mjs.map → carousel-eeqWZZHE.mjs.map} +1 -1
  95. package/dist/chunks/{chartStyles-BADmRKZo.cjs → chartStyles-2mTluDoo.cjs} +1 -1
  96. package/dist/chunks/{chartStyles-BADmRKZo.cjs.map → chartStyles-2mTluDoo.cjs.map} +1 -1
  97. package/dist/chunks/{chartStyles-DPXgYmGn.mjs → chartStyles-DrHVYS5N.mjs} +1 -1
  98. package/dist/chunks/{chartStyles-DPXgYmGn.mjs.map → chartStyles-DrHVYS5N.mjs.map} +1 -1
  99. package/dist/chunks/{charts-COx3IbI2.cjs → charts-DMu4zp8j.cjs} +4 -4
  100. package/dist/chunks/{charts-COx3IbI2.cjs.map → charts-DMu4zp8j.cjs.map} +1 -1
  101. package/dist/chunks/{charts-C-KQ3Nk5.mjs → charts-DlskmT1J.mjs} +3 -3
  102. package/dist/chunks/{charts-C-KQ3Nk5.mjs.map → charts-DlskmT1J.mjs.map} +1 -1
  103. package/dist/chunks/{checkbox-Y04NlzB8.mjs → checkbox-D7EJQbqC.mjs} +1 -1
  104. package/dist/chunks/{checkbox-Y04NlzB8.mjs.map → checkbox-D7EJQbqC.mjs.map} +1 -1
  105. package/dist/chunks/{checkbox-CDknzh89.cjs → checkbox-Lw2UqyNE.cjs} +1 -2
  106. package/dist/chunks/{checkbox-CDknzh89.cjs.map → checkbox-Lw2UqyNE.cjs.map} +1 -1
  107. package/dist/chunks/{chip-sfQlzrbo.cjs → chip-D5i9VT9O.cjs} +4 -5
  108. package/dist/chunks/{chip-sfQlzrbo.cjs.map → chip-D5i9VT9O.cjs.map} +1 -1
  109. package/dist/chunks/{chip-B3j6R6sO.mjs → chip-DBlSQcqR.mjs} +4 -4
  110. package/dist/chunks/{chip-B3j6R6sO.mjs.map → chip-DBlSQcqR.mjs.map} +1 -1
  111. package/dist/chunks/{chroma-grid-Bp55pKEm.cjs → chroma-grid-CTDtdFUm.cjs} +2 -3
  112. package/dist/chunks/{chroma-grid-Bp55pKEm.cjs.map → chroma-grid-CTDtdFUm.cjs.map} +1 -1
  113. package/dist/chunks/{chroma-grid-BHS9qAn_.mjs → chroma-grid-DuLTfGVP.mjs} +2 -2
  114. package/dist/chunks/{chroma-grid-BHS9qAn_.mjs.map → chroma-grid-DuLTfGVP.mjs.map} +1 -1
  115. package/dist/chunks/{color-palette-Duud5Iqq.cjs → color-palette-DQQ9UV0N.cjs} +2 -2
  116. package/dist/chunks/{color-palette-Duud5Iqq.cjs.map → color-palette-DQQ9UV0N.cjs.map} +1 -1
  117. package/dist/chunks/{color-palette-D9Qlw2Cx.mjs → color-palette-G1HUXWJP.mjs} +1 -1
  118. package/dist/chunks/{color-palette-D9Qlw2Cx.mjs.map → color-palette-G1HUXWJP.mjs.map} +1 -1
  119. package/dist/chunks/{combobox-C3a2iogC.cjs → combobox-CkNzH1YV.cjs} +6 -6
  120. package/dist/chunks/{combobox-C3a2iogC.cjs.map → combobox-CkNzH1YV.cjs.map} +1 -1
  121. package/dist/chunks/{combobox-neBItbtz.mjs → combobox-xNmFFHd6.mjs} +5 -5
  122. package/dist/chunks/{combobox-neBItbtz.mjs.map → combobox-xNmFFHd6.mjs.map} +1 -1
  123. package/dist/chunks/dashboard-cards-Bww66_5K.cjs +6570 -0
  124. package/dist/chunks/dashboard-cards-Bww66_5K.cjs.map +1 -0
  125. package/dist/chunks/dashboard-cards-lnifLEyj.mjs +6385 -0
  126. package/dist/chunks/dashboard-cards-lnifLEyj.mjs.map +1 -0
  127. package/dist/chunks/{data-table-BZEiSZI2.cjs → data-table-BCVbzkLo.cjs} +16 -17
  128. package/dist/chunks/{data-table-BZEiSZI2.cjs.map → data-table-BCVbzkLo.cjs.map} +1 -1
  129. package/dist/chunks/{data-table-EfGKkerd.mjs → data-table-C25KHEn4.mjs} +14 -15
  130. package/dist/chunks/{data-table-EfGKkerd.mjs.map → data-table-C25KHEn4.mjs.map} +1 -1
  131. package/dist/chunks/date-picker--cqsgsIV.mjs +587 -0
  132. package/dist/chunks/date-picker--cqsgsIV.mjs.map +1 -0
  133. package/dist/chunks/date-picker-BJQdFyqr.cjs +592 -0
  134. package/dist/chunks/date-picker-BJQdFyqr.cjs.map +1 -0
  135. package/dist/chunks/{dialog-B60BjJz0.mjs → dialog-BHIeG3Sg.mjs} +3 -3
  136. package/dist/chunks/{dialog-B60BjJz0.mjs.map → dialog-BHIeG3Sg.mjs.map} +1 -1
  137. package/dist/chunks/{dialog-i9LdkXmF.cjs → dialog-CLKU0cXX.cjs} +3 -4
  138. package/dist/chunks/{dialog-i9LdkXmF.cjs.map → dialog-CLKU0cXX.cjs.map} +1 -1
  139. package/dist/chunks/draggable-grid-2L_eHKfp.cjs +245 -0
  140. package/dist/chunks/draggable-grid-2L_eHKfp.cjs.map +1 -0
  141. package/dist/chunks/draggable-grid-IuCMSOsE.mjs +240 -0
  142. package/dist/chunks/draggable-grid-IuCMSOsE.mjs.map +1 -0
  143. package/dist/chunks/{event-calendar-BbFOUDov.mjs → event-calendar-CO2doGJW.mjs} +11 -11
  144. package/dist/chunks/{event-calendar-BbFOUDov.mjs.map → event-calendar-CO2doGJW.mjs.map} +1 -1
  145. package/dist/chunks/{event-calendar-Bljd_7PI.cjs → event-calendar-CvficOuV.cjs} +11 -12
  146. package/dist/chunks/{event-calendar-Bljd_7PI.cjs.map → event-calendar-CvficOuV.cjs.map} +1 -1
  147. package/dist/chunks/{form-DGwdlSW2.cjs → form-DARN6jtX.cjs} +1 -2
  148. package/dist/chunks/{form-DGwdlSW2.cjs.map → form-DARN6jtX.cjs.map} +1 -1
  149. package/dist/chunks/{form-CDc9UM3r.mjs → form-DNuFklNR.mjs} +1 -1
  150. package/dist/chunks/{form-CDc9UM3r.mjs.map → form-DNuFklNR.mjs.map} +1 -1
  151. package/dist/chunks/{gradual-blur-BNYVlqb1.cjs → gradual-blur-BBLbpXD4.cjs} +2 -3
  152. package/dist/chunks/{gradual-blur-BNYVlqb1.cjs.map → gradual-blur-BBLbpXD4.cjs.map} +1 -1
  153. package/dist/chunks/{gradual-blur-Bw2KNmXb.mjs → gradual-blur-BPx2MSWI.mjs} +2 -2
  154. package/dist/chunks/{gradual-blur-Bw2KNmXb.mjs.map → gradual-blur-BPx2MSWI.mjs.map} +1 -1
  155. package/dist/chunks/{hover-card-G66SUyjq.mjs → hover-card-BkVHGXz6.mjs} +1 -1
  156. package/dist/chunks/{hover-card-G66SUyjq.mjs.map → hover-card-BkVHGXz6.mjs.map} +1 -1
  157. package/dist/chunks/{hover-card-Dp6Y2h2J.cjs → hover-card-DwZFtu8w.cjs} +1 -2
  158. package/dist/chunks/{hover-card-Dp6Y2h2J.cjs.map → hover-card-DwZFtu8w.cjs.map} +1 -1
  159. package/dist/chunks/{icons-ub9iu-JG.cjs → icons-Ci8yEvvF.cjs} +48 -2
  160. package/dist/chunks/icons-Ci8yEvvF.cjs.map +1 -0
  161. package/dist/chunks/{icons-JzMKLygv.mjs → icons-CkVHNbbN.mjs} +43 -2
  162. package/dist/chunks/icons-CkVHNbbN.mjs.map +1 -0
  163. package/dist/chunks/{input-CRc3MKb_.mjs → input-B-XSdnfh.mjs} +4 -4
  164. package/dist/chunks/{input-CRc3MKb_.mjs.map → input-B-XSdnfh.mjs.map} +1 -1
  165. package/dist/chunks/{input-DMTwz27q.cjs → input-EH7x0pQY.cjs} +4 -5
  166. package/dist/chunks/{input-DMTwz27q.cjs.map → input-EH7x0pQY.cjs.map} +1 -1
  167. package/dist/chunks/{label-Bc_r54NU.mjs → label-CcsncrKQ.mjs} +1 -1
  168. package/dist/chunks/{label-Bc_r54NU.mjs.map → label-CcsncrKQ.mjs.map} +1 -1
  169. package/dist/chunks/{label-B5Ugq0Nk.cjs → label-Du-5H7wd.cjs} +1 -2
  170. package/dist/chunks/{label-B5Ugq0Nk.cjs.map → label-Du-5H7wd.cjs.map} +1 -1
  171. package/dist/chunks/{loading-ll2L6lc7.mjs → loading-2Lh_355V.mjs} +2 -2
  172. package/dist/chunks/{loading-ll2L6lc7.mjs.map → loading-2Lh_355V.mjs.map} +1 -1
  173. package/dist/chunks/{loading-DZKJc3e7.cjs → loading-DeGHTDO2.cjs} +2 -3
  174. package/dist/chunks/{loading-DZKJc3e7.cjs.map → loading-DeGHTDO2.cjs.map} +1 -1
  175. package/dist/chunks/{multi-select-combobox-C_8sxaiL.mjs → multi-select-combobox-BOdKmPj2.mjs} +4 -4
  176. package/dist/chunks/{multi-select-combobox-C_8sxaiL.mjs.map → multi-select-combobox-BOdKmPj2.mjs.map} +1 -1
  177. package/dist/chunks/{multi-select-combobox-CFJGq1hn.cjs → multi-select-combobox-PPYRcaPg.cjs} +5 -5
  178. package/dist/chunks/{multi-select-combobox-CFJGq1hn.cjs.map → multi-select-combobox-PPYRcaPg.cjs.map} +1 -1
  179. package/dist/chunks/{otp-input-BpcTJOmU.mjs → otp-input--_itTXaL.mjs} +1 -1
  180. package/dist/chunks/{otp-input-BpcTJOmU.mjs.map → otp-input--_itTXaL.mjs.map} +1 -1
  181. package/dist/chunks/{otp-input-B5-tuc0q.cjs → otp-input-Dgw_47Z7.cjs} +1 -2
  182. package/dist/chunks/{otp-input-B5-tuc0q.cjs.map → otp-input-Dgw_47Z7.cjs.map} +1 -1
  183. package/dist/chunks/{overlay-DzE_GyYf.cjs → overlay-15EzdrIu.cjs} +1 -2
  184. package/dist/chunks/{overlay-DzE_GyYf.cjs.map → overlay-15EzdrIu.cjs.map} +1 -1
  185. package/dist/chunks/{overlay-CG1dMYtO.mjs → overlay-BMbhF-EC.mjs} +1 -1
  186. package/dist/chunks/{overlay-CG1dMYtO.mjs.map → overlay-BMbhF-EC.mjs.map} +1 -1
  187. package/dist/chunks/{password-strength-meter-_o1T1HLO.cjs → password-strength-meter-Be1c-dnK.cjs} +2 -3
  188. package/dist/chunks/{password-strength-meter-_o1T1HLO.cjs.map → password-strength-meter-Be1c-dnK.cjs.map} +1 -1
  189. package/dist/chunks/{password-strength-meter-CH6uQAuK.mjs → password-strength-meter-Q1Qr-4tz.mjs} +2 -2
  190. package/dist/chunks/{password-strength-meter-CH6uQAuK.mjs.map → password-strength-meter-Q1Qr-4tz.mjs.map} +1 -1
  191. package/dist/chunks/{progress-bar-FfdFVvTT.cjs → progress-bar-BsnX079N.cjs} +3 -3
  192. package/dist/chunks/{progress-bar-FfdFVvTT.cjs.map → progress-bar-BsnX079N.cjs.map} +1 -1
  193. package/dist/chunks/{progress-bar-BAvRSW1b.mjs → progress-bar-l5WpbpZf.mjs} +2 -2
  194. package/dist/chunks/{progress-bar-BAvRSW1b.mjs.map → progress-bar-l5WpbpZf.mjs.map} +1 -1
  195. package/dist/chunks/{radio-BMOnxnUS.mjs → radio-B94_TGtz.mjs} +2 -2
  196. package/dist/chunks/{radio-BMOnxnUS.mjs.map → radio-B94_TGtz.mjs.map} +1 -1
  197. package/dist/chunks/{radio-wagafWwx.cjs → radio-W_NiS_dO.cjs} +2 -3
  198. package/dist/chunks/{radio-wagafWwx.cjs.map → radio-W_NiS_dO.cjs.map} +1 -1
  199. package/dist/chunks/{select-zFFyNmlY.cjs → select-C5lkcrSB.cjs} +5 -6
  200. package/dist/chunks/{select-zFFyNmlY.cjs.map → select-C5lkcrSB.cjs.map} +1 -1
  201. package/dist/chunks/{select--DeSgPdn.mjs → select-DnSSxddm.mjs} +5 -5
  202. package/dist/chunks/{select--DeSgPdn.mjs.map → select-DnSSxddm.mjs.map} +1 -1
  203. package/dist/chunks/{sidebar-oemmRzCL.mjs → sidebar-C3Sx87wD.mjs} +10 -11
  204. package/dist/chunks/{sidebar-oemmRzCL.mjs.map → sidebar-C3Sx87wD.mjs.map} +1 -1
  205. package/dist/chunks/{sidebar-Cq7UbKJT.cjs → sidebar-DDRWkz5k.cjs} +10 -12
  206. package/dist/chunks/{sidebar-Cq7UbKJT.cjs.map → sidebar-DDRWkz5k.cjs.map} +1 -1
  207. package/dist/chunks/{skeleton-DWvVc17T.cjs → skeleton-B2u9c1xJ.cjs} +2 -3
  208. package/dist/chunks/{skeleton-DWvVc17T.cjs.map → skeleton-B2u9c1xJ.cjs.map} +1 -1
  209. package/dist/chunks/{skeleton-BsDMlWZG.mjs → skeleton-DVAlrOq2.mjs} +2 -2
  210. package/dist/chunks/{skeleton-BsDMlWZG.mjs.map → skeleton-DVAlrOq2.mjs.map} +1 -1
  211. package/dist/chunks/{spinners-DlMcokJa.mjs → spinners-BQtIp2ov.mjs} +2 -2
  212. package/dist/chunks/{spinners-DlMcokJa.mjs.map → spinners-BQtIp2ov.mjs.map} +1 -1
  213. package/dist/chunks/{spinners-DBAJliAj.cjs → spinners-BiebALzS.cjs} +2 -3
  214. package/dist/chunks/{spinners-DBAJliAj.cjs.map → spinners-BiebALzS.cjs.map} +1 -1
  215. package/dist/chunks/{splash-cursor-CQ6_HwHV.cjs → splash-cursor-8b7ORB2k.cjs} +2 -3
  216. package/dist/chunks/{splash-cursor-CQ6_HwHV.cjs.map → splash-cursor-8b7ORB2k.cjs.map} +1 -1
  217. package/dist/chunks/{splash-cursor-Bb7LSzaO.mjs → splash-cursor-CeZffMed.mjs} +2 -2
  218. package/dist/chunks/{splash-cursor-Bb7LSzaO.mjs.map → splash-cursor-CeZffMed.mjs.map} +1 -1
  219. package/dist/chunks/{spotlight-card-COfSD7ns.cjs → spotlight-card-BQjp7hO1.cjs} +2 -3
  220. package/dist/chunks/{spotlight-card-COfSD7ns.cjs.map → spotlight-card-BQjp7hO1.cjs.map} +1 -1
  221. package/dist/chunks/{spotlight-card-Bs0iiSLc.mjs → spotlight-card-DiPtBCAK.mjs} +2 -2
  222. package/dist/chunks/{spotlight-card-Bs0iiSLc.mjs.map → spotlight-card-DiPtBCAK.mjs.map} +1 -1
  223. package/dist/chunks/{stepper-CTteR-Kj.cjs → stepper-BuhQfQTH.cjs} +5 -6
  224. package/dist/chunks/{stepper-CTteR-Kj.cjs.map → stepper-BuhQfQTH.cjs.map} +1 -1
  225. package/dist/chunks/{stepper-B9NdZ6ZV.mjs → stepper-CVNcexxq.mjs} +5 -5
  226. package/dist/chunks/{stepper-B9NdZ6ZV.mjs.map → stepper-CVNcexxq.mjs.map} +1 -1
  227. package/dist/chunks/{sun-to-moon-button-lt-1vmWm.cjs → sun-to-moon-button-BzYGFhrg.cjs} +4 -5
  228. package/dist/chunks/{sun-to-moon-button-lt-1vmWm.cjs.map → sun-to-moon-button-BzYGFhrg.cjs.map} +1 -1
  229. package/dist/chunks/{sun-to-moon-button-DWHDpP5B.mjs → sun-to-moon-button-CRXBMFZb.mjs} +4 -4
  230. package/dist/chunks/{sun-to-moon-button-DWHDpP5B.mjs.map → sun-to-moon-button-CRXBMFZb.mjs.map} +1 -1
  231. package/dist/chunks/{switch-BbFl5b4t.cjs → switch-CEoT3MgX.cjs} +1 -2
  232. package/dist/chunks/{switch-BbFl5b4t.cjs.map → switch-CEoT3MgX.cjs.map} +1 -1
  233. package/dist/chunks/{switch--68scepb.mjs → switch-DUnNe4xP.mjs} +1 -1
  234. package/dist/chunks/{switch--68scepb.mjs.map → switch-DUnNe4xP.mjs.map} +1 -1
  235. package/dist/chunks/{textarea-U_JeSWI3.cjs → textarea-Bschfj24.cjs} +2 -3
  236. package/dist/chunks/{textarea-U_JeSWI3.cjs.map → textarea-Bschfj24.cjs.map} +1 -1
  237. package/dist/chunks/{textarea-CEj9voUJ.mjs → textarea-CfeKo5HA.mjs} +2 -2
  238. package/dist/chunks/{textarea-CEj9voUJ.mjs.map → textarea-CfeKo5HA.mjs.map} +1 -1
  239. package/dist/chunks/{theme-koPrLKQv.mjs → theme-BXML6jHE.mjs} +1 -1
  240. package/dist/chunks/{theme-koPrLKQv.mjs.map → theme-BXML6jHE.mjs.map} +1 -1
  241. package/dist/chunks/{theme-D6B-FaoE.cjs → theme-BzTaXYZ8.cjs} +1 -2
  242. package/dist/chunks/{theme-D6B-FaoE.cjs.map → theme-BzTaXYZ8.cjs.map} +1 -1
  243. package/dist/chunks/{toast-CyY8VZN7.mjs → toast-D1W0BvoH.mjs} +2 -2
  244. package/dist/chunks/{toast-CyY8VZN7.mjs.map → toast-D1W0BvoH.mjs.map} +1 -1
  245. package/dist/chunks/{toast-2yq4Q7-q.cjs → toast-DL8svc6q.cjs} +2 -3
  246. package/dist/chunks/{toast-2yq4Q7-q.cjs.map → toast-DL8svc6q.cjs.map} +1 -1
  247. package/dist/chunks/{truncated-text-CswjmrHZ.cjs → truncated-text-D0t4atw5.cjs} +3 -3
  248. package/dist/chunks/{truncated-text-CswjmrHZ.cjs.map → truncated-text-D0t4atw5.cjs.map} +1 -1
  249. package/dist/chunks/{truncated-text-DUYTW1KP.mjs → truncated-text-DIkg-8Vo.mjs} +2 -2
  250. package/dist/chunks/{truncated-text-DUYTW1KP.mjs.map → truncated-text-DIkg-8Vo.mjs.map} +1 -1
  251. package/dist/chunks/{typography-CFIiYk1d.cjs → typography-C5fYwhp2.cjs} +3 -3
  252. package/dist/chunks/{typography-CFIiYk1d.cjs.map → typography-C5fYwhp2.cjs.map} +1 -1
  253. package/dist/chunks/{typography-DHE9sUZ8.mjs → typography-Czi7t5y4.mjs} +2 -2
  254. package/dist/chunks/{typography-DHE9sUZ8.mjs.map → typography-Czi7t5y4.mjs.map} +1 -1
  255. package/dist/chunks/{utils-LRbEQHYs.cjs → utils-CoA0q63n.cjs} +84 -4
  256. package/dist/chunks/utils-CoA0q63n.cjs.map +1 -0
  257. package/dist/chunks/{utils-7S0u48mU.mjs → utils-Dc7j29ec.mjs} +84 -4
  258. package/dist/chunks/utils-Dc7j29ec.mjs.map +1 -0
  259. package/dist/color-palette.cjs +1 -1
  260. package/dist/color-palette.mjs +1 -1
  261. package/dist/combobox.cjs +1 -1
  262. package/dist/combobox.mjs +1 -1
  263. package/dist/components/data-display/dashboard-cards/AIFeatureAdoptionCard.d.ts +26 -0
  264. package/dist/components/data-display/dashboard-cards/AIFeatureAdoptionCard.d.ts.map +1 -0
  265. package/dist/components/data-display/dashboard-cards/AIInsightsCard.d.ts +30 -0
  266. package/dist/components/data-display/dashboard-cards/AIInsightsCard.d.ts.map +1 -0
  267. package/dist/components/data-display/dashboard-cards/AcquisitionChannelCard.d.ts +24 -0
  268. package/dist/components/data-display/dashboard-cards/AcquisitionChannelCard.d.ts.map +1 -0
  269. package/dist/components/data-display/dashboard-cards/BarBreakdownCard.d.ts +49 -0
  270. package/dist/components/data-display/dashboard-cards/BarBreakdownCard.d.ts.map +1 -0
  271. package/dist/components/data-display/dashboard-cards/CustomerLifecycleCard.d.ts +24 -0
  272. package/dist/components/data-display/dashboard-cards/CustomerLifecycleCard.d.ts.map +1 -0
  273. package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts +111 -2
  274. package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts.map +1 -1
  275. package/dist/components/data-display/dashboard-cards/FinancialPLCard.d.ts +78 -0
  276. package/dist/components/data-display/dashboard-cards/FinancialPLCard.d.ts.map +1 -0
  277. package/dist/components/data-display/dashboard-cards/InventoryCards.d.ts +44 -0
  278. package/dist/components/data-display/dashboard-cards/InventoryCards.d.ts.map +1 -0
  279. package/dist/components/data-display/dashboard-cards/PaymentSummaryCard.d.ts +45 -0
  280. package/dist/components/data-display/dashboard-cards/PaymentSummaryCard.d.ts.map +1 -0
  281. package/dist/components/data-display/dashboard-cards/SalesHeatmapCard.d.ts +36 -0
  282. package/dist/components/data-display/dashboard-cards/SalesHeatmapCard.d.ts.map +1 -0
  283. package/dist/components/data-display/dashboard-cards/SeatUtilizationCard.d.ts +22 -0
  284. package/dist/components/data-display/dashboard-cards/SeatUtilizationCard.d.ts.map +1 -0
  285. package/dist/components/data-display/dashboard-cards/SubscriptionHealthCard.d.ts +23 -0
  286. package/dist/components/data-display/dashboard-cards/SubscriptionHealthCard.d.ts.map +1 -0
  287. package/dist/components/data-display/dashboard-cards/ToolUsageOverviewCard.d.ts +22 -0
  288. package/dist/components/data-display/dashboard-cards/ToolUsageOverviewCard.d.ts.map +1 -0
  289. package/dist/components/data-display/dashboard-cards/TopPlansCard.d.ts +23 -0
  290. package/dist/components/data-display/dashboard-cards/TopPlansCard.d.ts.map +1 -0
  291. package/dist/components/data-display/dashboard-cards/TopSellingItemsCard.d.ts +42 -0
  292. package/dist/components/data-display/dashboard-cards/TopSellingItemsCard.d.ts.map +1 -0
  293. package/dist/components/data-display/dashboard-cards/TopToolsCard.d.ts +22 -0
  294. package/dist/components/data-display/dashboard-cards/TopToolsCard.d.ts.map +1 -0
  295. package/dist/components/data-display/dashboard-cards/_PLCardHeader.d.ts +63 -0
  296. package/dist/components/data-display/dashboard-cards/_PLCardHeader.d.ts.map +1 -0
  297. package/dist/components/data-display/dashboard-cards/_PLCharts.d.ts +33 -0
  298. package/dist/components/data-display/dashboard-cards/_PLCharts.d.ts.map +1 -0
  299. package/dist/components/data-display/dashboard-cards/_PLKpiStrip.d.ts +11 -0
  300. package/dist/components/data-display/dashboard-cards/_PLKpiStrip.d.ts.map +1 -0
  301. package/dist/components/data-display/dashboard-cards/_PLOverview.d.ts +9 -0
  302. package/dist/components/data-display/dashboard-cards/_PLOverview.d.ts.map +1 -0
  303. package/dist/components/data-display/dashboard-cards/_TabTooltip.d.ts +8 -0
  304. package/dist/components/data-display/dashboard-cards/_TabTooltip.d.ts.map +1 -0
  305. package/dist/components/data-display/dashboard-cards/index.d.ts +32 -1
  306. package/dist/components/data-display/dashboard-cards/index.d.ts.map +1 -1
  307. package/dist/components/forms/calendar/Calendar.d.ts +1 -1
  308. package/dist/components/forms/calendar/Calendar.d.ts.map +1 -1
  309. package/dist/components/forms/calendar/types.d.ts +6 -0
  310. package/dist/components/forms/calendar/types.d.ts.map +1 -1
  311. package/dist/components/forms/date-picker/DatePicker.d.ts.map +1 -1
  312. package/dist/components/layout/draggable-grid/DraggableGrid.d.ts +20 -0
  313. package/dist/components/layout/draggable-grid/DraggableGrid.d.ts.map +1 -0
  314. package/dist/components/layout/draggable-grid/index.d.ts +3 -0
  315. package/dist/components/layout/draggable-grid/index.d.ts.map +1 -0
  316. package/dist/components/navigation/sidebar/DashboardSidebarShell.d.ts.map +1 -1
  317. package/dist/dashboard-cards.cjs +16 -1
  318. package/dist/dashboard-cards.mjs +2 -2
  319. package/dist/data-table.cjs +1 -1
  320. package/dist/data-table.mjs +1 -1
  321. package/dist/date-picker.cjs +1 -1
  322. package/dist/date-picker.mjs +1 -1
  323. package/dist/dialog.cjs +1 -1
  324. package/dist/dialog.mjs +1 -1
  325. package/dist/docs.cjs +13 -0
  326. package/dist/docs.cjs.map +1 -1
  327. package/dist/docs.d.ts.map +1 -1
  328. package/dist/docs.mjs +13 -0
  329. package/dist/docs.mjs.map +1 -1
  330. package/dist/draggable-grid.cjs +3 -0
  331. package/dist/draggable-grid.d.ts +2 -0
  332. package/dist/draggable-grid.mjs +2 -0
  333. package/dist/drawer.cjs +1 -1
  334. package/dist/drawer.mjs +1 -1
  335. package/dist/event-calendar.cjs +1 -1
  336. package/dist/event-calendar.mjs +1 -1
  337. package/dist/form.cjs +1 -1
  338. package/dist/form.mjs +1 -1
  339. package/dist/gradual-blur.cjs +1 -1
  340. package/dist/gradual-blur.mjs +1 -1
  341. package/dist/hover-border-gradient.cjs +1 -1
  342. package/dist/hover-border-gradient.mjs +1 -1
  343. package/dist/hover-card.cjs +1 -1
  344. package/dist/hover-card.mjs +1 -1
  345. package/dist/icons.cjs +2 -3
  346. package/dist/icons.mjs +1 -2
  347. package/dist/index.cjs +71 -56
  348. package/dist/index.cjs.map +1 -1
  349. package/dist/index.d.ts +7 -2
  350. package/dist/index.d.ts.map +1 -1
  351. package/dist/index.mjs +55 -55
  352. package/dist/index.mjs.map +1 -1
  353. package/dist/input.cjs +1 -1
  354. package/dist/input.mjs +1 -1
  355. package/dist/label.cjs +1 -1
  356. package/dist/label.mjs +1 -1
  357. package/dist/loading.cjs +1 -1
  358. package/dist/loading.mjs +1 -1
  359. package/dist/multi-select-combobox.cjs +1 -1
  360. package/dist/multi-select-combobox.mjs +1 -1
  361. package/dist/otp-input.cjs +1 -1
  362. package/dist/otp-input.mjs +1 -1
  363. package/dist/password-strength-meter.cjs +1 -1
  364. package/dist/password-strength-meter.mjs +1 -1
  365. package/dist/progress-bar.cjs +1 -1
  366. package/dist/progress-bar.mjs +1 -1
  367. package/dist/radio.cjs +1 -1
  368. package/dist/radio.mjs +1 -1
  369. package/dist/select.cjs +1 -1
  370. package/dist/select.mjs +1 -1
  371. package/dist/sidebar.cjs +1 -1
  372. package/dist/sidebar.mjs +1 -1
  373. package/dist/skeleton.cjs +1 -1
  374. package/dist/skeleton.mjs +1 -1
  375. package/dist/spinners.cjs +1 -1
  376. package/dist/spinners.mjs +1 -1
  377. package/dist/splash-cursor.cjs +1 -1
  378. package/dist/splash-cursor.mjs +1 -1
  379. package/dist/spotlight-card.cjs +1 -1
  380. package/dist/spotlight-card.mjs +1 -1
  381. package/dist/stepper.cjs +1 -1
  382. package/dist/stepper.mjs +1 -1
  383. package/dist/sun-to-moon-button.cjs +2 -2
  384. package/dist/sun-to-moon-button.mjs +2 -2
  385. package/dist/switch.cjs +1 -1
  386. package/dist/switch.mjs +1 -1
  387. package/dist/textarea.cjs +1 -1
  388. package/dist/textarea.mjs +1 -1
  389. package/dist/theme.cjs +1 -1
  390. package/dist/theme.mjs +1 -1
  391. package/dist/toast.cjs +1 -1
  392. package/dist/toast.mjs +1 -1
  393. package/dist/tooltip.cjs +1 -1
  394. package/dist/tooltip.mjs +1 -1
  395. package/dist/truncated-text.cjs +1 -1
  396. package/dist/truncated-text.mjs +1 -1
  397. package/dist/typography.cjs +1 -1
  398. package/dist/typography.mjs +1 -1
  399. package/dist/utils.cjs +1 -1
  400. package/dist/utils.mjs +1 -1
  401. package/package.json +34 -13
  402. package/dist/chunks/EllipsisVerticalIcon-BJw3MNkg.cjs +0 -51
  403. package/dist/chunks/EllipsisVerticalIcon-BJw3MNkg.cjs.map +0 -1
  404. package/dist/chunks/EllipsisVerticalIcon-C2b2KMfE.mjs +0 -45
  405. package/dist/chunks/EllipsisVerticalIcon-C2b2KMfE.mjs.map +0 -1
  406. package/dist/chunks/calendar-DCkikZYb.cjs +0 -184
  407. package/dist/chunks/calendar-DCkikZYb.cjs.map +0 -1
  408. package/dist/chunks/calendar-FxAmm_ao.mjs +0 -178
  409. package/dist/chunks/calendar-FxAmm_ao.mjs.map +0 -1
  410. package/dist/chunks/dashboard-cards-BnPt0gDW.mjs +0 -2428
  411. package/dist/chunks/dashboard-cards-BnPt0gDW.mjs.map +0 -1
  412. package/dist/chunks/dashboard-cards-DNWJPKRu.cjs +0 -2524
  413. package/dist/chunks/dashboard-cards-DNWJPKRu.cjs.map +0 -1
  414. package/dist/chunks/date-picker-3IDSmb9Z.mjs +0 -228
  415. package/dist/chunks/date-picker-3IDSmb9Z.mjs.map +0 -1
  416. package/dist/chunks/date-picker-_EVYpGga.cjs +0 -234
  417. package/dist/chunks/date-picker-_EVYpGga.cjs.map +0 -1
  418. package/dist/chunks/icons-JzMKLygv.mjs.map +0 -1
  419. package/dist/chunks/icons-ub9iu-JG.cjs.map +0 -1
  420. package/dist/chunks/utils-7S0u48mU.mjs.map +0 -1
  421. package/dist/chunks/utils-LRbEQHYs.cjs.map +0 -1
  422. /package/dist/chunks/{chunk-B_GkZjkl.cjs → chunk-D6vf50IK.cjs} +0 -0
@@ -0,0 +1,587 @@
1
+ import { n as mergeClassNames } from "./utils-Dc7j29ec.mjs";
2
+ import { q as CloseIcon } from "./icons-CkVHNbbN.mjs";
3
+ import { t as Calendar } from "./calendar-BlUhssD4.mjs";
4
+ import { useEffect, useMemo, useRef, useState } from "react";
5
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import { motion, useMotionTemplate, useMotionValue } from "framer-motion";
7
+ import { createPortal } from "react-dom";
8
+ //#region src/components/forms/date-picker/DatePicker.tsx
9
+ function startOfDay(d) {
10
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate());
11
+ }
12
+ var SHORT_MONTHS = Array.from({ length: 12 }, (_, i) => new Date(2026, i, 1).toLocaleString(void 0, { month: "short" }));
13
+ function formatDate(d) {
14
+ return d?.toLocaleDateString(void 0, {
15
+ month: "short",
16
+ day: "numeric",
17
+ year: "numeric"
18
+ }) ?? "";
19
+ }
20
+ function parseDate(str) {
21
+ const trimmed = str.trim();
22
+ if (!trimmed) return null;
23
+ const d = new Date(trimmed);
24
+ return isNaN(d.getTime()) ? null : startOfDay(d);
25
+ }
26
+ var isRangeValue = (v) => typeof v === "object" && v !== null && "start" in v && "end" in v;
27
+ var emptyRange = {
28
+ start: null,
29
+ end: null
30
+ };
31
+ var RANGE_PRESETS = [
32
+ {
33
+ label: "Today",
34
+ getValue() {
35
+ const t = startOfDay(/* @__PURE__ */ new Date());
36
+ return {
37
+ start: t,
38
+ end: t
39
+ };
40
+ }
41
+ },
42
+ {
43
+ label: "Yesterday",
44
+ getValue() {
45
+ const d = startOfDay(/* @__PURE__ */ new Date());
46
+ d.setDate(d.getDate() - 1);
47
+ return {
48
+ start: d,
49
+ end: d
50
+ };
51
+ }
52
+ },
53
+ {
54
+ label: "Last 7 days",
55
+ getValue() {
56
+ const end = startOfDay(/* @__PURE__ */ new Date());
57
+ const start = new Date(end);
58
+ start.setDate(start.getDate() - 6);
59
+ return {
60
+ start,
61
+ end
62
+ };
63
+ }
64
+ },
65
+ {
66
+ label: "Last 30 days",
67
+ getValue() {
68
+ const end = startOfDay(/* @__PURE__ */ new Date());
69
+ const start = new Date(end);
70
+ start.setDate(start.getDate() - 29);
71
+ return {
72
+ start,
73
+ end
74
+ };
75
+ }
76
+ },
77
+ {
78
+ label: "Last quarter",
79
+ getValue() {
80
+ const now = /* @__PURE__ */ new Date();
81
+ const q = Math.floor(now.getMonth() / 3);
82
+ const pq = q === 0 ? 3 : q - 1;
83
+ const pqYear = q === 0 ? now.getFullYear() - 1 : now.getFullYear();
84
+ return {
85
+ start: new Date(pqYear, pq * 3, 1),
86
+ end: new Date(pqYear, pq * 3 + 3, 0)
87
+ };
88
+ }
89
+ }
90
+ ];
91
+ var INNER_CAL = "w-auto max-w-none rounded-none border-0 bg-transparent p-0 shadow-none backdrop-blur-none";
92
+ var PANEL_GAP = 8;
93
+ var VMARGIN = 12;
94
+ var DatePicker = ({ mode = "single", value, onChange, label, placeholder = "Pick a date", helperText, disabled = false, className = "", presets }) => {
95
+ const [open, setOpen] = useState(false);
96
+ const [visible, setVisible] = useState(false);
97
+ const [isMobile, setIsMobile] = useState(false);
98
+ const [hoverDate, setHoverDate] = useState(null);
99
+ const [startInput, setStartInput] = useState("");
100
+ const [endInput, setEndInput] = useState("");
101
+ const todayDate = useMemo(() => /* @__PURE__ */ new Date(), []);
102
+ const [leftMonth, setLeftMonth] = useState(todayDate.getMonth());
103
+ const [leftYear, setLeftYear] = useState(todayDate.getFullYear());
104
+ const rightDate = new Date(leftYear, leftMonth + 1, 1);
105
+ const rightMonth = rightDate.getMonth();
106
+ const rightYear = rightDate.getFullYear();
107
+ const isControlled = value !== void 0;
108
+ const [internal, setInternal] = useState(value ?? (mode === "range" ? emptyRange : null));
109
+ const current = isControlled ? value : internal;
110
+ const singleValue = mode === "range" ? null : current;
111
+ const rangeValue = mode === "range" && isRangeValue(current) ? current : { ...emptyRange };
112
+ const displayValue = useMemo(() => {
113
+ if (mode === "range") {
114
+ if (rangeValue.start && rangeValue.end) return `${formatDate(rangeValue.start)} — ${formatDate(rangeValue.end)}`;
115
+ if (rangeValue.start) return `${formatDate(rangeValue.start)} — …`;
116
+ return "";
117
+ }
118
+ return formatDate(singleValue);
119
+ }, [
120
+ mode,
121
+ rangeValue.start,
122
+ rangeValue.end,
123
+ singleValue
124
+ ]);
125
+ const hasSelection = mode === "range" ? Boolean(rangeValue.start || rangeValue.end) : Boolean(singleValue);
126
+ const updateValue = (next) => {
127
+ if (!isControlled) setInternal(next);
128
+ onChange?.(next);
129
+ };
130
+ useEffect(() => {
131
+ if (typeof window === "undefined") return;
132
+ const mq = window.matchMedia("(max-width: 640px)");
133
+ setIsMobile(mq.matches);
134
+ const handler = (e) => setIsMobile(e.matches);
135
+ mq.addEventListener("change", handler);
136
+ return () => mq.removeEventListener("change", handler);
137
+ }, []);
138
+ useEffect(() => {
139
+ setStartInput(rangeValue.start ? formatDate(rangeValue.start) : "");
140
+ setEndInput(rangeValue.end ? formatDate(rangeValue.end) : "");
141
+ }, [rangeValue.start, rangeValue.end]);
142
+ const containerRef = useRef(null);
143
+ const triggerRef = useRef(null);
144
+ const panelRef = useRef(null);
145
+ useEffect(() => {
146
+ const inside = (event) => {
147
+ return (typeof event.composedPath === "function" ? event.composedPath() : []).some((t) => t instanceof Node && (containerRef.current?.contains(t) || panelRef.current?.contains(t)));
148
+ };
149
+ const onPointer = (e) => {
150
+ if (e.target instanceof Node && (containerRef.current?.contains(e.target) || panelRef.current?.contains(e.target)) || inside(e)) return;
151
+ setOpen(false);
152
+ };
153
+ const onFocus = (e) => {
154
+ if (e.target instanceof Node && (containerRef.current?.contains(e.target) || panelRef.current?.contains(e.target)) || inside(e)) return;
155
+ setOpen(false);
156
+ };
157
+ if (open) {
158
+ document.addEventListener("pointerdown", onPointer, true);
159
+ document.addEventListener("focusin", onFocus, true);
160
+ }
161
+ return () => {
162
+ document.removeEventListener("pointerdown", onPointer, true);
163
+ document.removeEventListener("focusin", onFocus, true);
164
+ };
165
+ }, [open]);
166
+ const [panelPos, setPanelPos] = useState({
167
+ top: 0,
168
+ left: 0,
169
+ minWidth: 320
170
+ });
171
+ useEffect(() => {
172
+ if (!open) return;
173
+ const update = () => {
174
+ const tRect = triggerRef.current?.getBoundingClientRect();
175
+ if (!tRect) return;
176
+ const panelH = panelRef.current?.offsetHeight ?? 400;
177
+ const panelW = panelRef.current?.offsetWidth ?? 320;
178
+ const openAbove = window.innerHeight - tRect.bottom < panelH + PANEL_GAP && tRect.top > panelH + PANEL_GAP;
179
+ const maxLeft = Math.max(VMARGIN, window.innerWidth - panelW - VMARGIN);
180
+ const left = Math.min(Math.max(tRect.left, VMARGIN), maxLeft);
181
+ setPanelPos({
182
+ top: openAbove ? Math.max(VMARGIN, tRect.top - panelH - PANEL_GAP) : Math.min(tRect.bottom + PANEL_GAP, window.innerHeight - panelH - VMARGIN),
183
+ left,
184
+ minWidth: Math.max(tRect.width, 320)
185
+ });
186
+ };
187
+ update();
188
+ const id = requestAnimationFrame(update);
189
+ window.addEventListener("resize", update);
190
+ window.addEventListener("scroll", update, true);
191
+ return () => {
192
+ cancelAnimationFrame(id);
193
+ window.removeEventListener("resize", update);
194
+ window.removeEventListener("scroll", update, true);
195
+ };
196
+ }, [open]);
197
+ const mouseX = useMotionValue(0);
198
+ const mouseY = useMotionValue(0);
199
+ const motionBg = useMotionTemplate`radial-gradient(${visible ? "100px" : "0px"} circle at ${mouseX}px ${mouseY}px, var(--ds-color-accent), transparent 90%)`;
200
+ const handleMouseMove = (e) => {
201
+ const { left, top } = e.currentTarget.getBoundingClientRect();
202
+ mouseX.set(e.clientX - left);
203
+ mouseY.set(e.clientY - top);
204
+ };
205
+ const handleClear = () => {
206
+ if (disabled) return;
207
+ updateValue(mode === "range" ? { ...emptyRange } : null);
208
+ setOpen(false);
209
+ };
210
+ const handleRangeSelect = (next) => {
211
+ updateValue(next);
212
+ if (next.start && next.end) {
213
+ setOpen(false);
214
+ setHoverDate(null);
215
+ }
216
+ };
217
+ const handlePreset = (p) => {
218
+ updateValue(p.getValue());
219
+ setOpen(false);
220
+ };
221
+ const commitStartInput = () => {
222
+ const d = parseDate(startInput);
223
+ if (d) updateValue({
224
+ start: d,
225
+ end: rangeValue.end
226
+ });
227
+ else setStartInput(rangeValue.start ? formatDate(rangeValue.start) : "");
228
+ };
229
+ const commitEndInput = () => {
230
+ const d = parseDate(endInput);
231
+ if (d) {
232
+ updateValue({
233
+ start: rangeValue.start,
234
+ end: d
235
+ });
236
+ if (rangeValue.start && d) setOpen(false);
237
+ } else setEndInput(rangeValue.end ? formatDate(rangeValue.end) : "");
238
+ };
239
+ const panelKeyDown = (e) => {
240
+ if (e.key === "Escape") {
241
+ setOpen(false);
242
+ triggerRef.current?.focus();
243
+ }
244
+ if (e.key === "Enter" && mode === "range" && rangeValue.start && rangeValue.end) {
245
+ setOpen(false);
246
+ triggerRef.current?.focus();
247
+ }
248
+ };
249
+ const isPresetActive = (p) => {
250
+ const r = p.getValue();
251
+ return rangeValue.start?.toDateString() === r.start?.toDateString() && rangeValue.end?.toDateString() === r.end?.toDateString();
252
+ };
253
+ const presetBtn = (p, compact = false) => /* @__PURE__ */ jsx("button", {
254
+ type: "button",
255
+ onClick: () => handlePreset(p),
256
+ className: mergeClassNames("rounded-md text-left text-xs font-medium transition-colors", compact ? "px-2 py-1.5" : "rounded-full border px-3 py-1", isPresetActive(p) ? "bg-ds-accent-subtle text-ds-accent" + (compact ? "" : " border-ds-accent") : compact ? "text-ds-2 hover:bg-ds-surface-2 hover:text-ds-1" : "border-ds-border-2 bg-ds-surface-2 text-ds-2 hover:border-ds-border-accent hover:text-ds-1"),
257
+ children: p.label
258
+ }, p.label);
259
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
260
+ /* @__PURE__ */ jsxs("div", {
261
+ ref: containerRef,
262
+ className: mergeClassNames("w-full space-y-2", className),
263
+ children: [
264
+ label && /* @__PURE__ */ jsx("p", {
265
+ className: "text-sm font-medium text-ds-1",
266
+ children: label
267
+ }),
268
+ /* @__PURE__ */ jsx("div", {
269
+ className: "relative",
270
+ children: /* @__PURE__ */ jsx(motion.div, {
271
+ style: { backgroundImage: disabled ? "none" : motionBg },
272
+ onMouseMove: !disabled ? handleMouseMove : void 0,
273
+ onMouseEnter: !disabled ? () => setVisible(true) : void 0,
274
+ onMouseLeave: !disabled ? () => setVisible(false) : void 0,
275
+ className: disabled ? "group/date-picker rounded-lg border-none bg-ds-surface-1 p-[2px]" : "group/date-picker rounded-lg border-ds-border-2 p-[2px]",
276
+ children: /* @__PURE__ */ jsxs("div", {
277
+ className: "relative",
278
+ children: [/* @__PURE__ */ jsx("button", {
279
+ ref: triggerRef,
280
+ type: "button",
281
+ className: mergeClassNames("flex w-full items-center justify-between rounded-md border border-ds-border-field bg-ds-surface-1 px-3 py-2 text-sm transition duration-400 ease-in-out", disabled && "cursor-not-allowed opacity-50"),
282
+ style: { paddingInlineEnd: "2.5rem" },
283
+ onClick: () => !disabled && setOpen((p) => !p),
284
+ "aria-haspopup": "dialog",
285
+ "aria-expanded": open,
286
+ disabled,
287
+ children: /* @__PURE__ */ jsx("span", {
288
+ className: displayValue ? "text-ds-1" : "text-ds-2",
289
+ children: displayValue || placeholder
290
+ })
291
+ }), hasSelection && !disabled ? /* @__PURE__ */ jsx("button", {
292
+ type: "button",
293
+ className: "absolute top-1/2 inline-flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded-full text-ds-2 transition-colors hover:bg-ds-accent-subtle hover:text-ds-1",
294
+ style: { insetInlineEnd: "0.75rem" },
295
+ onClick: handleClear,
296
+ "aria-label": mode === "range" ? "Clear selected date range" : "Clear selected date",
297
+ children: /* @__PURE__ */ jsx(CloseIcon, {
298
+ className: "h-3.5 w-3.5",
299
+ "aria-hidden": "true"
300
+ })
301
+ }) : /* @__PURE__ */ jsx("span", {
302
+ className: "pointer-events-none absolute top-1/2 -translate-y-1/2 text-ds-2",
303
+ style: { insetInlineEnd: "0.75rem" },
304
+ "aria-hidden": "true",
305
+ children: "📅"
306
+ })]
307
+ })
308
+ })
309
+ }),
310
+ helperText && /* @__PURE__ */ jsx("p", {
311
+ className: "text-xs text-ds-2",
312
+ children: helperText
313
+ })
314
+ ]
315
+ }),
316
+ isMobile && open && mode === "range" && !disabled && typeof document !== "undefined" ? createPortal(/* @__PURE__ */ jsxs("div", {
317
+ className: "fixed inset-0 z-50 flex flex-col",
318
+ role: "dialog",
319
+ "aria-modal": "true",
320
+ children: [/* @__PURE__ */ jsx("div", {
321
+ className: "flex-1 bg-black/40",
322
+ onClick: () => setOpen(false)
323
+ }), /* @__PURE__ */ jsxs(motion.div, {
324
+ initial: { y: "100%" },
325
+ animate: { y: 0 },
326
+ exit: { y: "100%" },
327
+ transition: {
328
+ type: "spring",
329
+ damping: 30,
330
+ stiffness: 300
331
+ },
332
+ className: "flex max-h-[90vh] flex-col rounded-t-2xl bg-ds-surface-1 shadow-2xl",
333
+ children: [
334
+ /* @__PURE__ */ jsxs("div", {
335
+ className: "flex items-center justify-between px-5 pb-3 pt-5",
336
+ children: [/* @__PURE__ */ jsx("p", {
337
+ className: "text-base font-semibold text-ds-1",
338
+ children: "Select date range"
339
+ }), /* @__PURE__ */ jsx("button", {
340
+ type: "button",
341
+ onClick: () => setOpen(false),
342
+ className: "flex h-7 w-7 items-center justify-center rounded-full text-ds-3 hover:bg-ds-surface-2 hover:text-ds-1",
343
+ "aria-label": "Close",
344
+ children: /* @__PURE__ */ jsx(CloseIcon, { className: "h-4 w-4" })
345
+ })]
346
+ }),
347
+ /* @__PURE__ */ jsx("div", {
348
+ className: "flex flex-wrap gap-2 px-5 pb-3",
349
+ children: RANGE_PRESETS.map((p) => presetBtn(p, false))
350
+ }),
351
+ /* @__PURE__ */ jsx("div", {
352
+ className: "flex-1 overflow-y-auto px-5 pb-4",
353
+ children: [
354
+ 0,
355
+ 1,
356
+ 2
357
+ ].map((offset) => {
358
+ const d = new Date(todayDate.getFullYear(), todayDate.getMonth() + offset, 1);
359
+ const m = d.getMonth();
360
+ const y = d.getFullYear();
361
+ return /* @__PURE__ */ jsxs("div", {
362
+ className: "mb-4",
363
+ children: [/* @__PURE__ */ jsxs("p", {
364
+ className: "mb-2 text-sm font-semibold text-ds-1",
365
+ children: [
366
+ SHORT_MONTHS[m],
367
+ " ",
368
+ y
369
+ ]
370
+ }), /* @__PURE__ */ jsx(Calendar, {
371
+ className: INNER_CAL,
372
+ showNav: false,
373
+ selectionMode: "range",
374
+ month: m,
375
+ year: y,
376
+ range: rangeValue,
377
+ onRangeSelect: handleRangeSelect,
378
+ hoverDate,
379
+ onHoverDate: setHoverDate
380
+ })]
381
+ }, `${m}-${y}`);
382
+ })
383
+ }),
384
+ /* @__PURE__ */ jsxs("div", {
385
+ className: "flex gap-3 border-t border-ds-border-2 px-5 py-4",
386
+ children: [/* @__PURE__ */ jsx("button", {
387
+ type: "button",
388
+ onClick: () => updateValue({ ...emptyRange }),
389
+ className: "flex-1 rounded-lg border border-ds-border-2 bg-ds-surface-2 py-2.5 text-sm font-medium text-ds-2 transition-colors hover:bg-ds-surface-3 hover:text-ds-1",
390
+ children: "Clear"
391
+ }), /* @__PURE__ */ jsx("button", {
392
+ type: "button",
393
+ onClick: () => setOpen(false),
394
+ className: "flex-1 rounded-lg bg-ds-accent py-2.5 text-sm font-semibold text-ds-on-accent transition-opacity hover:opacity-90",
395
+ children: "Apply"
396
+ })]
397
+ })
398
+ ]
399
+ })]
400
+ }), document.body) : null,
401
+ !isMobile && open && mode === "range" && !disabled && typeof document !== "undefined" ? createPortal(/* @__PURE__ */ jsxs("div", {
402
+ className: "fixed inset-0 z-60",
403
+ children: [/* @__PURE__ */ jsx("div", {
404
+ className: "absolute inset-0",
405
+ "aria-hidden": "true",
406
+ onPointerDown: () => setOpen(false)
407
+ }), /* @__PURE__ */ jsx("div", {
408
+ ref: panelRef,
409
+ className: "dropdown-panel absolute z-10 overflow-hidden rounded-xl border border-ds-border-2 bg-ds-surface-1/95 shadow-xl backdrop-blur-xl",
410
+ style: {
411
+ top: panelPos.top,
412
+ left: panelPos.left
413
+ },
414
+ role: "dialog",
415
+ "aria-modal": "false",
416
+ onKeyDown: panelKeyDown,
417
+ tabIndex: -1,
418
+ children: /* @__PURE__ */ jsxs("div", {
419
+ className: "flex",
420
+ children: [/* @__PURE__ */ jsxs("div", {
421
+ className: "flex w-36 flex-col gap-0.5 border-r border-ds-border-2 p-2",
422
+ children: [/* @__PURE__ */ jsx("p", {
423
+ className: "mb-1 px-2 text-[10px] font-semibold uppercase tracking-wider text-ds-3",
424
+ children: "Quick select"
425
+ }), RANGE_PRESETS.map((p) => presetBtn(p, true))]
426
+ }), /* @__PURE__ */ jsxs("div", {
427
+ className: "p-4",
428
+ children: [/* @__PURE__ */ jsxs("div", {
429
+ className: "mb-3 flex items-center gap-2",
430
+ children: [
431
+ /* @__PURE__ */ jsx("input", {
432
+ type: "text",
433
+ value: startInput,
434
+ onChange: (e) => setStartInput(e.target.value),
435
+ onBlur: commitStartInput,
436
+ onKeyDown: (e) => {
437
+ if (e.key === "Enter") {
438
+ e.stopPropagation();
439
+ commitStartInput();
440
+ }
441
+ if (e.key === "Escape") setOpen(false);
442
+ },
443
+ placeholder: "Start date",
444
+ "aria-label": "Start date",
445
+ className: "w-32 rounded-md border border-ds-border-field bg-ds-surface-1 px-2.5 py-1.5 text-xs text-ds-1 placeholder:text-ds-3 transition-colors focus:border-ds-border-accent focus:outline-none"
446
+ }),
447
+ /* @__PURE__ */ jsx("span", {
448
+ className: "text-xs text-ds-3",
449
+ children: "→"
450
+ }),
451
+ /* @__PURE__ */ jsx("input", {
452
+ type: "text",
453
+ value: endInput,
454
+ onChange: (e) => setEndInput(e.target.value),
455
+ onBlur: commitEndInput,
456
+ onKeyDown: (e) => {
457
+ if (e.key === "Enter") {
458
+ e.stopPropagation();
459
+ commitEndInput();
460
+ }
461
+ if (e.key === "Escape") setOpen(false);
462
+ },
463
+ placeholder: "End date",
464
+ "aria-label": "End date",
465
+ className: "w-32 rounded-md border border-ds-border-field bg-ds-surface-1 px-2.5 py-1.5 text-xs text-ds-1 placeholder:text-ds-3 transition-colors focus:border-ds-border-accent focus:outline-none"
466
+ })
467
+ ]
468
+ }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
469
+ className: "mb-2 flex items-center justify-between",
470
+ children: [
471
+ /* @__PURE__ */ jsx("button", {
472
+ type: "button",
473
+ onClick: () => {
474
+ const d = new Date(leftYear, leftMonth - 1, 1);
475
+ setLeftMonth(d.getMonth());
476
+ setLeftYear(d.getFullYear());
477
+ },
478
+ className: "inline-flex h-7 w-7 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1",
479
+ "aria-label": "Previous month",
480
+ children: "←"
481
+ }),
482
+ /* @__PURE__ */ jsxs("div", {
483
+ className: "flex flex-1 justify-around px-2",
484
+ children: [/* @__PURE__ */ jsxs("span", {
485
+ className: "text-sm font-semibold text-ds-1",
486
+ children: [
487
+ SHORT_MONTHS[leftMonth],
488
+ " ",
489
+ leftYear
490
+ ]
491
+ }), /* @__PURE__ */ jsxs("span", {
492
+ className: "text-sm font-semibold text-ds-1",
493
+ children: [
494
+ SHORT_MONTHS[rightMonth],
495
+ " ",
496
+ rightYear
497
+ ]
498
+ })]
499
+ }),
500
+ /* @__PURE__ */ jsx("button", {
501
+ type: "button",
502
+ onClick: () => {
503
+ const d = new Date(leftYear, leftMonth + 1, 1);
504
+ setLeftMonth(d.getMonth());
505
+ setLeftYear(d.getFullYear());
506
+ },
507
+ className: "inline-flex h-7 w-7 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1",
508
+ "aria-label": "Next month",
509
+ children: "→"
510
+ })
511
+ ]
512
+ }), /* @__PURE__ */ jsxs("div", {
513
+ className: "flex gap-5",
514
+ children: [
515
+ /* @__PURE__ */ jsx(Calendar, {
516
+ className: INNER_CAL,
517
+ showNav: false,
518
+ selectionMode: "range",
519
+ month: leftMonth,
520
+ year: leftYear,
521
+ range: rangeValue,
522
+ onRangeSelect: handleRangeSelect,
523
+ hoverDate,
524
+ onHoverDate: setHoverDate
525
+ }),
526
+ /* @__PURE__ */ jsx("div", { className: "w-px self-stretch bg-ds-border-2" }),
527
+ /* @__PURE__ */ jsx(Calendar, {
528
+ className: INNER_CAL,
529
+ showNav: false,
530
+ selectionMode: "range",
531
+ month: rightMonth,
532
+ year: rightYear,
533
+ range: rangeValue,
534
+ onRangeSelect: handleRangeSelect,
535
+ hoverDate,
536
+ onHoverDate: setHoverDate
537
+ })
538
+ ]
539
+ })] })]
540
+ })]
541
+ })
542
+ })]
543
+ }), document.body) : null,
544
+ open && mode === "single" && !disabled && typeof document !== "undefined" ? createPortal(/* @__PURE__ */ jsxs("div", {
545
+ className: "fixed inset-0 z-60",
546
+ children: [/* @__PURE__ */ jsx("div", {
547
+ className: "absolute inset-0",
548
+ "aria-hidden": "true",
549
+ onPointerDown: () => setOpen(false)
550
+ }), /* @__PURE__ */ jsxs("div", {
551
+ ref: panelRef,
552
+ className: "dropdown-panel absolute z-10",
553
+ style: {
554
+ top: panelPos.top,
555
+ left: panelPos.left,
556
+ minWidth: panelPos.minWidth
557
+ },
558
+ role: "dialog",
559
+ "aria-modal": "false",
560
+ onKeyDown: panelKeyDown,
561
+ children: [/* @__PURE__ */ jsx(Calendar, {
562
+ value: singleValue ?? null,
563
+ selectionMode: "single",
564
+ onSelect: (date) => {
565
+ updateValue(date);
566
+ setOpen(false);
567
+ }
568
+ }), presets?.length ? /* @__PURE__ */ jsx("div", {
569
+ className: "mt-3 flex flex-wrap gap-2 rounded-lg border border-ds-border-2 bg-ds-surface-1/95 p-3 shadow-xl backdrop-blur-xl",
570
+ children: presets.map((p) => /* @__PURE__ */ jsx("button", {
571
+ type: "button",
572
+ className: "rounded-full border border-ds-border-field px-3 py-1 text-xs text-ds-2 transition-colors hover:border-ds-border-accent hover:bg-ds-accent-subtle hover:text-ds-1",
573
+ onClick: () => {
574
+ updateValue(p.value());
575
+ setOpen(false);
576
+ },
577
+ children: p.label
578
+ }, p.label))
579
+ }) : null]
580
+ })]
581
+ }), document.body) : null
582
+ ] });
583
+ };
584
+ //#endregion
585
+ export { DatePicker as t };
586
+
587
+ //# sourceMappingURL=date-picker--cqsgsIV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker--cqsgsIV.mjs","names":[],"sources":["../../src/components/forms/date-picker/DatePicker.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { motion, useMotionTemplate, useMotionValue } from \"framer-motion\";\n\nimport { Calendar } from \"../calendar\";\nimport { CloseIcon } from \"../../icons\";\nimport { mergeClassNames } from \"../../../utils\";\n\nimport type { DatePickerProps, DatePickerValue, DateRangeValue } from \"./types\";\n\n// ── Utilities ─────────────────────────────────────────────────────────────────\n\nfunction startOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\nconst SHORT_MONTHS = Array.from({ length: 12 }, (_, i) =>\n new Date(2026, i, 1).toLocaleString(undefined, { month: \"short\" }),\n);\n\nfunction formatDate(d: Date | null) {\n return d?.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\", year: \"numeric\" }) ?? \"\";\n}\n\nfunction parseDate(str: string): Date | null {\n const trimmed = str.trim();\n if (!trimmed) return null;\n const d = new Date(trimmed);\n return isNaN(d.getTime()) ? null : startOfDay(d);\n}\n\nconst isRangeValue = (v: DatePickerValue): v is DateRangeValue =>\n typeof v === \"object\" && v !== null && \"start\" in v && \"end\" in v;\n\nconst emptyRange: DateRangeValue = { start: null, end: null };\n\n// ── Built-in range presets ────────────────────────────────────────────────────\n\ninterface BuiltInPreset {\n label: string;\n getValue: () => DateRangeValue;\n}\n\nconst RANGE_PRESETS: BuiltInPreset[] = [\n {\n label: \"Today\",\n getValue() { const t = startOfDay(new Date()); return { start: t, end: t }; },\n },\n {\n label: \"Yesterday\",\n getValue() {\n const d = startOfDay(new Date()); d.setDate(d.getDate() - 1);\n return { start: d, end: d };\n },\n },\n {\n label: \"Last 7 days\",\n getValue() {\n const end = startOfDay(new Date());\n const start = new Date(end); start.setDate(start.getDate() - 6);\n return { start, end };\n },\n },\n {\n label: \"Last 30 days\",\n getValue() {\n const end = startOfDay(new Date());\n const start = new Date(end); start.setDate(start.getDate() - 29);\n return { start, end };\n },\n },\n {\n label: \"Last quarter\",\n getValue() {\n const now = new Date();\n const q = Math.floor(now.getMonth() / 3);\n const pq = q === 0 ? 3 : q - 1;\n const pqYear = q === 0 ? now.getFullYear() - 1 : now.getFullYear();\n return {\n start: new Date(pqYear, pq * 3, 1),\n end: new Date(pqYear, pq * 3 + 3, 0),\n };\n },\n },\n];\n\n// ── Class constant for Calendar rendered inside a panel (no own border/bg) ───\n\nconst INNER_CAL = \"w-auto max-w-none rounded-none border-0 bg-transparent p-0 shadow-none backdrop-blur-none\";\n\n// ── Panel positioning constants ───────────────────────────────────────────────\n\nconst PANEL_GAP = 8;\nconst VMARGIN = 12;\n\n// ── DatePicker ────────────────────────────────────────────────────────────────\n\nexport const DatePicker = ({\n mode = \"single\",\n value,\n onChange,\n label,\n placeholder = \"Pick a date\",\n helperText,\n disabled = false,\n className = \"\",\n presets,\n}: DatePickerProps) => {\n const [open, setOpen] = useState(false);\n const [visible, setVisible] = useState(false);\n const [isMobile, setIsMobile] = useState(false);\n const [hoverDate, setHoverDate] = useState<Date | null>(null);\n\n // Text inputs for direct date entry (range mode only)\n const [startInput, setStartInput] = useState(\"\");\n const [endInput, setEndInput] = useState(\"\");\n\n // Dual-month nav state — left calendar, right = left+1\n const todayDate = useMemo(() => new Date(), []);\n const [leftMonth, setLeftMonth] = useState(todayDate.getMonth());\n const [leftYear, setLeftYear] = useState(todayDate.getFullYear());\n\n const rightDate = new Date(leftYear, leftMonth + 1, 1);\n const rightMonth = rightDate.getMonth();\n const rightYear = rightDate.getFullYear();\n\n // Value state\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<DatePickerValue>(\n value ?? (mode === \"range\" ? emptyRange : null),\n );\n const current = isControlled ? value : internal;\n const singleValue = mode === \"range\" ? null : (current as Date | null);\n const rangeValue = mode === \"range\" && isRangeValue(current) ? current : { ...emptyRange };\n\n const displayValue = useMemo(() => {\n if (mode === \"range\") {\n if (rangeValue.start && rangeValue.end)\n return `${formatDate(rangeValue.start)} — ${formatDate(rangeValue.end)}`;\n if (rangeValue.start) return `${formatDate(rangeValue.start)} — …`;\n return \"\";\n }\n return formatDate(singleValue);\n }, [mode, rangeValue.start, rangeValue.end, singleValue]);\n\n const hasSelection = mode === \"range\"\n ? Boolean(rangeValue.start || rangeValue.end)\n : Boolean(singleValue);\n\n const updateValue = (next: DatePickerValue) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n // ── Side effects ─────────────────────────────────────────────────────────────\n\n // Mobile detection\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(max-width: 640px)\");\n setIsMobile(mq.matches);\n const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, []);\n\n // Sync text inputs with range value\n useEffect(() => {\n setStartInput(rangeValue.start ? formatDate(rangeValue.start) : \"\");\n setEndInput(rangeValue.end ? formatDate(rangeValue.end) : \"\");\n }, [rangeValue.start, rangeValue.end]);\n\n // Close on outside click / focus\n const containerRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const inside = (event: Event) => {\n const path = typeof event.composedPath === \"function\" ? event.composedPath() : [];\n return path.some(\n (t) => t instanceof Node && (containerRef.current?.contains(t) || panelRef.current?.contains(t)),\n );\n };\n\n const onPointer = (e: PointerEvent) => {\n if ((e.target instanceof Node && (containerRef.current?.contains(e.target) || panelRef.current?.contains(e.target))) || inside(e)) return;\n setOpen(false);\n };\n const onFocus = (e: FocusEvent) => {\n if ((e.target instanceof Node && (containerRef.current?.contains(e.target) || panelRef.current?.contains(e.target))) || inside(e)) return;\n setOpen(false);\n };\n\n if (open) {\n document.addEventListener(\"pointerdown\", onPointer, true);\n document.addEventListener(\"focusin\", onFocus, true);\n }\n return () => {\n document.removeEventListener(\"pointerdown\", onPointer, true);\n document.removeEventListener(\"focusin\", onFocus, true);\n };\n }, [open]);\n\n // Panel positioning\n const [panelPos, setPanelPos] = useState({ top: 0, left: 0, minWidth: 320 });\n\n useEffect(() => {\n if (!open) return;\n\n const update = () => {\n const tRect = triggerRef.current?.getBoundingClientRect();\n if (!tRect) return;\n\n const panelH = panelRef.current?.offsetHeight ?? 400;\n const panelW = panelRef.current?.offsetWidth ?? 320;\n const spaceBelow = window.innerHeight - tRect.bottom;\n const openAbove = spaceBelow < panelH + PANEL_GAP && tRect.top > panelH + PANEL_GAP;\n\n const maxLeft = Math.max(VMARGIN, window.innerWidth - panelW - VMARGIN);\n const left = Math.min(Math.max(tRect.left, VMARGIN), maxLeft);\n\n setPanelPos({\n top: openAbove\n ? Math.max(VMARGIN, tRect.top - panelH - PANEL_GAP)\n : Math.min(tRect.bottom + PANEL_GAP, window.innerHeight - panelH - VMARGIN),\n left,\n minWidth: Math.max(tRect.width, 320),\n });\n };\n\n update();\n const id = requestAnimationFrame(update);\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n return () => {\n cancelAnimationFrame(id);\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n };\n }, [open]);\n\n // ── Motion ────────────────────────────────────────────────────────────────────\n\n const mouseX = useMotionValue(0);\n const mouseY = useMotionValue(0);\n const motionBg = useMotionTemplate`radial-gradient(${visible ? \"100px\" : \"0px\"} circle at ${mouseX}px ${mouseY}px, var(--ds-color-accent), transparent 90%)`;\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n const { left, top } = e.currentTarget.getBoundingClientRect();\n mouseX.set(e.clientX - left);\n mouseY.set(e.clientY - top);\n };\n\n // ── Handlers ─────────────────────────────────────────────────────────────────\n\n const handleClear = () => {\n if (disabled) return;\n updateValue(mode === \"range\" ? { ...emptyRange } : null);\n setOpen(false);\n };\n\n const handleRangeSelect = (next: DateRangeValue) => {\n updateValue(next);\n if (next.start && next.end) { setOpen(false); setHoverDate(null); }\n };\n\n const handlePreset = (p: BuiltInPreset) => {\n updateValue(p.getValue());\n setOpen(false);\n };\n\n const commitStartInput = () => {\n const d = parseDate(startInput);\n if (d) updateValue({ start: d, end: rangeValue.end });\n else setStartInput(rangeValue.start ? formatDate(rangeValue.start) : \"\");\n };\n\n const commitEndInput = () => {\n const d = parseDate(endInput);\n if (d) {\n updateValue({ start: rangeValue.start, end: d });\n if (rangeValue.start && d) setOpen(false);\n } else {\n setEndInput(rangeValue.end ? formatDate(rangeValue.end) : \"\");\n }\n };\n\n const panelKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Escape\") { setOpen(false); triggerRef.current?.focus(); }\n if (e.key === \"Enter\" && mode === \"range\" && rangeValue.start && rangeValue.end) {\n setOpen(false); triggerRef.current?.focus();\n }\n };\n\n const isPresetActive = (p: BuiltInPreset) => {\n const r = p.getValue();\n return (\n rangeValue.start?.toDateString() === r.start?.toDateString() &&\n rangeValue.end?.toDateString() === r.end?.toDateString()\n );\n };\n\n const presetBtn = (p: BuiltInPreset, compact = false) => (\n <button\n key={p.label}\n type=\"button\"\n onClick={() => handlePreset(p)}\n className={mergeClassNames(\n \"rounded-md text-left text-xs font-medium transition-colors\",\n compact ? \"px-2 py-1.5\" : \"rounded-full border px-3 py-1\",\n isPresetActive(p)\n ? \"bg-ds-accent-subtle text-ds-accent\" + (compact ? \"\" : \" border-ds-accent\")\n : compact\n ? \"text-ds-2 hover:bg-ds-surface-2 hover:text-ds-1\"\n : \"border-ds-border-2 bg-ds-surface-2 text-ds-2 hover:border-ds-border-accent hover:text-ds-1\",\n )}\n >\n {p.label}\n </button>\n );\n\n // ── Trigger ───────────────────────────────────────────────────────────────────\n\n const trigger = (\n <div ref={containerRef} className={mergeClassNames(\"w-full space-y-2\", className)}>\n {label && <p className=\"text-sm font-medium text-ds-1\">{label}</p>}\n <div className=\"relative\">\n <motion.div\n style={{ backgroundImage: disabled ? \"none\" : motionBg }}\n onMouseMove={!disabled ? handleMouseMove : undefined}\n onMouseEnter={!disabled ? () => setVisible(true) : undefined}\n onMouseLeave={!disabled ? () => setVisible(false) : undefined}\n className={\n disabled\n ? \"group/date-picker rounded-lg border-none bg-ds-surface-1 p-[2px]\"\n : \"group/date-picker rounded-lg border-ds-border-2 p-[2px]\"\n }\n >\n <div className=\"relative\">\n <button\n ref={triggerRef}\n type=\"button\"\n className={mergeClassNames(\n \"flex w-full items-center justify-between rounded-md border border-ds-border-field bg-ds-surface-1 px-3 py-2 text-sm transition duration-400 ease-in-out\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n style={{ paddingInlineEnd: \"2.5rem\" }}\n onClick={() => !disabled && setOpen((p) => !p)}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={disabled}\n >\n <span className={displayValue ? \"text-ds-1\" : \"text-ds-2\"}>\n {displayValue || placeholder}\n </span>\n </button>\n\n {hasSelection && !disabled ? (\n <button\n type=\"button\"\n className=\"absolute top-1/2 inline-flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded-full text-ds-2 transition-colors hover:bg-ds-accent-subtle hover:text-ds-1\"\n style={{ insetInlineEnd: \"0.75rem\" }}\n onClick={handleClear}\n aria-label={mode === \"range\" ? \"Clear selected date range\" : \"Clear selected date\"}\n >\n <CloseIcon className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </button>\n ) : (\n <span\n className=\"pointer-events-none absolute top-1/2 -translate-y-1/2 text-ds-2\"\n style={{ insetInlineEnd: \"0.75rem\" }}\n aria-hidden=\"true\"\n >\n 📅\n </span>\n )}\n </div>\n </motion.div>\n </div>\n {helperText && <p className=\"text-xs text-ds-2\">{helperText}</p>}\n </div>\n );\n\n // ── Mobile bottom sheet (range mode) ─────────────────────────────────────────\n\n const mobileSheet =\n isMobile && open && mode === \"range\" && !disabled && typeof document !== \"undefined\"\n ? createPortal(\n <div className=\"fixed inset-0 z-50 flex flex-col\" role=\"dialog\" aria-modal=\"true\">\n <div className=\"flex-1 bg-black/40\" onClick={() => setOpen(false)} />\n <motion.div\n initial={{ y: \"100%\" }}\n animate={{ y: 0 }}\n exit={{ y: \"100%\" }}\n transition={{ type: \"spring\", damping: 30, stiffness: 300 }}\n className=\"flex max-h-[90vh] flex-col rounded-t-2xl bg-ds-surface-1 shadow-2xl\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-5 pb-3 pt-5\">\n <p className=\"text-base font-semibold text-ds-1\">Select date range</p>\n <button\n type=\"button\"\n onClick={() => setOpen(false)}\n className=\"flex h-7 w-7 items-center justify-center rounded-full text-ds-3 hover:bg-ds-surface-2 hover:text-ds-1\"\n aria-label=\"Close\"\n >\n <CloseIcon className=\"h-4 w-4\" />\n </button>\n </div>\n\n {/* Preset chips */}\n <div className=\"flex flex-wrap gap-2 px-5 pb-3\">\n {RANGE_PRESETS.map((p) => presetBtn(p, false))}\n </div>\n\n {/* Scrollable months */}\n <div className=\"flex-1 overflow-y-auto px-5 pb-4\">\n {[0, 1, 2].map((offset) => {\n const d = new Date(todayDate.getFullYear(), todayDate.getMonth() + offset, 1);\n const m = d.getMonth();\n const y = d.getFullYear();\n return (\n <div key={`${m}-${y}`} className=\"mb-4\">\n <p className=\"mb-2 text-sm font-semibold text-ds-1\">\n {SHORT_MONTHS[m]} {y}\n </p>\n <Calendar\n className={INNER_CAL}\n showNav={false}\n selectionMode=\"range\"\n month={m}\n year={y}\n range={rangeValue}\n onRangeSelect={handleRangeSelect}\n hoverDate={hoverDate}\n onHoverDate={setHoverDate}\n />\n </div>\n );\n })}\n </div>\n\n {/* Footer buttons */}\n <div className=\"flex gap-3 border-t border-ds-border-2 px-5 py-4\">\n <button\n type=\"button\"\n onClick={() => updateValue({ ...emptyRange })}\n className=\"flex-1 rounded-lg border border-ds-border-2 bg-ds-surface-2 py-2.5 text-sm font-medium text-ds-2 transition-colors hover:bg-ds-surface-3 hover:text-ds-1\"\n >\n Clear\n </button>\n <button\n type=\"button\"\n onClick={() => setOpen(false)}\n className=\"flex-1 rounded-lg bg-ds-accent py-2.5 text-sm font-semibold text-ds-on-accent transition-opacity hover:opacity-90\"\n >\n Apply\n </button>\n </div>\n </motion.div>\n </div>,\n document.body,\n )\n : null;\n\n // ── Desktop range panel ───────────────────────────────────────────────────────\n\n const desktopRangePanel =\n !isMobile && open && mode === \"range\" && !disabled && typeof document !== \"undefined\"\n ? createPortal(\n <div className=\"fixed inset-0 z-60\">\n <div className=\"absolute inset-0\" aria-hidden=\"true\" onPointerDown={() => setOpen(false)} />\n <div\n ref={panelRef}\n className=\"dropdown-panel absolute z-10 overflow-hidden rounded-xl border border-ds-border-2 bg-ds-surface-1/95 shadow-xl backdrop-blur-xl\"\n style={{ top: panelPos.top, left: panelPos.left }}\n role=\"dialog\"\n aria-modal=\"false\"\n onKeyDown={panelKeyDown}\n tabIndex={-1}\n >\n <div className=\"flex\">\n {/* Preset sidebar */}\n <div className=\"flex w-36 flex-col gap-0.5 border-r border-ds-border-2 p-2\">\n <p className=\"mb-1 px-2 text-[10px] font-semibold uppercase tracking-wider text-ds-3\">\n Quick select\n </p>\n {RANGE_PRESETS.map((p) => presetBtn(p, true))}\n </div>\n\n {/* Calendar area */}\n <div className=\"p-4\">\n {/* Text inputs */}\n <div className=\"mb-3 flex items-center gap-2\">\n <input\n type=\"text\"\n value={startInput}\n onChange={(e) => setStartInput(e.target.value)}\n onBlur={commitStartInput}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") { e.stopPropagation(); commitStartInput(); }\n if (e.key === \"Escape\") setOpen(false);\n }}\n placeholder=\"Start date\"\n aria-label=\"Start date\"\n className=\"w-32 rounded-md border border-ds-border-field bg-ds-surface-1 px-2.5 py-1.5 text-xs text-ds-1 placeholder:text-ds-3 transition-colors focus:border-ds-border-accent focus:outline-none\"\n />\n <span className=\"text-xs text-ds-3\">→</span>\n <input\n type=\"text\"\n value={endInput}\n onChange={(e) => setEndInput(e.target.value)}\n onBlur={commitEndInput}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") { e.stopPropagation(); commitEndInput(); }\n if (e.key === \"Escape\") setOpen(false);\n }}\n placeholder=\"End date\"\n aria-label=\"End date\"\n className=\"w-32 rounded-md border border-ds-border-field bg-ds-surface-1 px-2.5 py-1.5 text-xs text-ds-1 placeholder:text-ds-3 transition-colors focus:border-ds-border-accent focus:outline-none\"\n />\n </div>\n\n {/* Dual calendar */}\n <div>\n {/* Shared nav row */}\n <div className=\"mb-2 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={() => { const d = new Date(leftYear, leftMonth - 1, 1); setLeftMonth(d.getMonth()); setLeftYear(d.getFullYear()); }}\n className=\"inline-flex h-7 w-7 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1\"\n aria-label=\"Previous month\"\n >\n ←\n </button>\n <div className=\"flex flex-1 justify-around px-2\">\n <span className=\"text-sm font-semibold text-ds-1\">\n {SHORT_MONTHS[leftMonth]} {leftYear}\n </span>\n <span className=\"text-sm font-semibold text-ds-1\">\n {SHORT_MONTHS[rightMonth]} {rightYear}\n </span>\n </div>\n <button\n type=\"button\"\n onClick={() => { const d = new Date(leftYear, leftMonth + 1, 1); setLeftMonth(d.getMonth()); setLeftYear(d.getFullYear()); }}\n className=\"inline-flex h-7 w-7 items-center justify-center rounded-md border border-ds-border-field bg-ds-surface-1 text-sm text-ds-2 transition-colors hover:border-ds-border-accent hover:text-ds-1\"\n aria-label=\"Next month\"\n >\n →\n </button>\n </div>\n\n {/* Two months side by side */}\n <div className=\"flex gap-5\">\n <Calendar\n className={INNER_CAL}\n showNav={false}\n selectionMode=\"range\"\n month={leftMonth}\n year={leftYear}\n range={rangeValue}\n onRangeSelect={handleRangeSelect}\n hoverDate={hoverDate}\n onHoverDate={setHoverDate}\n />\n <div className=\"w-px self-stretch bg-ds-border-2\" />\n <Calendar\n className={INNER_CAL}\n showNav={false}\n selectionMode=\"range\"\n month={rightMonth}\n year={rightYear}\n range={rangeValue}\n onRangeSelect={handleRangeSelect}\n hoverDate={hoverDate}\n onHoverDate={setHoverDate}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>,\n document.body,\n )\n : null;\n\n // ── Single-date panel (& mobile single) ──────────────────────────────────────\n\n const singlePanel =\n open && mode === \"single\" && !disabled && typeof document !== \"undefined\"\n ? createPortal(\n <div className=\"fixed inset-0 z-60\">\n <div className=\"absolute inset-0\" aria-hidden=\"true\" onPointerDown={() => setOpen(false)} />\n <div\n ref={panelRef}\n className=\"dropdown-panel absolute z-10\"\n style={{ top: panelPos.top, left: panelPos.left, minWidth: panelPos.minWidth }}\n role=\"dialog\"\n aria-modal=\"false\"\n onKeyDown={panelKeyDown}\n >\n <Calendar\n value={singleValue ?? null}\n selectionMode=\"single\"\n onSelect={(date) => { updateValue(date); setOpen(false); }}\n />\n {presets?.length ? (\n <div className=\"mt-3 flex flex-wrap gap-2 rounded-lg border border-ds-border-2 bg-ds-surface-1/95 p-3 shadow-xl backdrop-blur-xl\">\n {presets.map((p) => (\n <button\n key={p.label}\n type=\"button\"\n className=\"rounded-full border border-ds-border-field px-3 py-1 text-xs text-ds-2 transition-colors hover:border-ds-border-accent hover:bg-ds-accent-subtle hover:text-ds-1\"\n onClick={() => { updateValue(p.value()); setOpen(false); }}\n >\n {p.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n </div>,\n document.body,\n )\n : null;\n\n // ── Render ────────────────────────────────────────────────────────────────────\n\n return (\n <>\n {trigger}\n {mobileSheet}\n {desktopRangePanel}\n {singlePanel}\n </>\n );\n};\n"],"mappings":"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"}