@itilite/lumina-ui 0.0.324 → 1.0.0-alpha

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 (273) hide show
  1. package/README.md +43 -10
  2. package/dist/AdvancedDateRangePicker-CN9WN0rH.d.mts +56 -0
  3. package/dist/AdvancedDateRangePicker-CN9WN0rH.d.ts +56 -0
  4. package/dist/AdvancedDateRangePicker-CzN1HGsC.d.mts +57 -0
  5. package/dist/AdvancedDateRangePicker-CzN1HGsC.d.ts +57 -0
  6. package/dist/AdvancedDateRangePicker-DAPxgRl3.d.mts +54 -0
  7. package/dist/AdvancedDateRangePicker-DAPxgRl3.d.ts +54 -0
  8. package/dist/AdvancedDateRangePicker-DW94285G.d.mts +56 -0
  9. package/dist/AdvancedDateRangePicker-DW94285G.d.ts +56 -0
  10. package/dist/AdvancedDateRangePicker-Eh6n4ne0.d.mts +57 -0
  11. package/dist/AdvancedDateRangePicker-Eh6n4ne0.d.ts +57 -0
  12. package/dist/Avatar-DX2JwvAs.d.mts +17 -0
  13. package/dist/Avatar-DX2JwvAs.d.ts +17 -0
  14. package/dist/Table-BA0D3p1m.d.mts +78 -0
  15. package/dist/Table-BA0D3p1m.d.ts +78 -0
  16. package/dist/Table-BLZ6c46U.d.mts +77 -0
  17. package/dist/Table-BLZ6c46U.d.ts +77 -0
  18. package/dist/Table-BMqYnFi4.d.mts +25 -0
  19. package/dist/Table-BMqYnFi4.d.ts +25 -0
  20. package/dist/Table-BOq-_9Nr.d.mts +121 -0
  21. package/dist/Table-BOq-_9Nr.d.ts +121 -0
  22. package/dist/Table-BRcthrYV.d.mts +98 -0
  23. package/dist/Table-BRcthrYV.d.ts +98 -0
  24. package/dist/Table-BWlFCfBG.d.mts +106 -0
  25. package/dist/Table-BWlFCfBG.d.ts +106 -0
  26. package/dist/Table-CHFmNrme.d.mts +77 -0
  27. package/dist/Table-CHFmNrme.d.ts +77 -0
  28. package/dist/Table-CX6UwQiD.d.mts +116 -0
  29. package/dist/Table-CX6UwQiD.d.ts +116 -0
  30. package/dist/Table-Chud2XSq.d.mts +99 -0
  31. package/dist/Table-Chud2XSq.d.ts +99 -0
  32. package/dist/Table-D5QRe_j3.d.mts +121 -0
  33. package/dist/Table-D5QRe_j3.d.ts +121 -0
  34. package/dist/Table-DAgFGahx.d.mts +39 -0
  35. package/dist/Table-DAgFGahx.d.ts +39 -0
  36. package/dist/Table-DWniK7At.d.mts +87 -0
  37. package/dist/Table-DWniK7At.d.ts +87 -0
  38. package/dist/Table-PyFlnUDu.d.mts +47 -0
  39. package/dist/Table-PyFlnUDu.d.ts +47 -0
  40. package/dist/Table-wqyg13Y9.d.mts +77 -0
  41. package/dist/Table-wqyg13Y9.d.ts +77 -0
  42. package/dist/Tag-l7I5oeyk.d.mts +13 -0
  43. package/dist/Tag-l7I5oeyk.d.ts +13 -0
  44. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.mts +2 -0
  45. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.ts +2 -0
  46. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.js +791 -0
  47. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.mjs +11 -0
  48. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.d.mts +18 -0
  49. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.d.ts +18 -0
  50. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.js +370 -0
  51. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.mjs +8 -0
  52. package/dist/atom/Avatar/Avatar.d.mts +9 -0
  53. package/dist/atom/Avatar/Avatar.d.ts +9 -0
  54. package/dist/atom/Avatar/Avatar.js +123 -0
  55. package/dist/atom/Avatar/Avatar.mjs +9 -0
  56. package/dist/{Button.js → atom/Button/Button.js} +4 -4
  57. package/dist/{Button.mjs → atom/Button/Button.mjs} +2 -2
  58. package/dist/{Checkbox.js → atom/Checkbox/Checkbox.js} +4 -4
  59. package/dist/{Checkbox.mjs → atom/Checkbox/Checkbox.mjs} +2 -2
  60. package/dist/atom/LoadingSpinner/LoadingSpinner.d.mts +19 -0
  61. package/dist/atom/LoadingSpinner/LoadingSpinner.d.ts +19 -0
  62. package/dist/atom/LoadingSpinner/LoadingSpinner.js +90 -0
  63. package/dist/atom/LoadingSpinner/LoadingSpinner.mjs +9 -0
  64. package/dist/atom/Modal/Modal.d.mts +25 -0
  65. package/dist/atom/Modal/Modal.d.ts +25 -0
  66. package/dist/atom/Modal/Modal.js +267 -0
  67. package/dist/atom/Modal/Modal.mjs +10 -0
  68. package/dist/atom/Radio/Radio.d.mts +17 -0
  69. package/dist/atom/Radio/Radio.d.ts +17 -0
  70. package/dist/atom/Radio/Radio.js +122 -0
  71. package/dist/atom/Radio/Radio.mjs +9 -0
  72. package/dist/atom/RangePicker/Chevron.d.mts +13 -0
  73. package/dist/atom/RangePicker/Chevron.d.ts +13 -0
  74. package/dist/atom/RangePicker/Chevron.js +110 -0
  75. package/dist/atom/RangePicker/Chevron.mjs +7 -0
  76. package/dist/atom/RangePicker/RangePicker.d.mts +26 -0
  77. package/dist/atom/RangePicker/RangePicker.d.ts +26 -0
  78. package/dist/atom/RangePicker/RangePicker.js +1465 -0
  79. package/dist/atom/RangePicker/RangePicker.mjs +13 -0
  80. package/dist/atom/Select/Select.d.mts +40 -0
  81. package/dist/atom/Select/Select.d.ts +40 -0
  82. package/dist/atom/Select/Select.js +805 -0
  83. package/dist/atom/Select/Select.mjs +11 -0
  84. package/dist/atom/Slider/Slider.d.mts +34 -0
  85. package/dist/atom/Slider/Slider.d.ts +34 -0
  86. package/dist/atom/Slider/Slider.js +107 -0
  87. package/dist/atom/Slider/Slider.mjs +9 -0
  88. package/dist/atom/Switch/Switch.d.mts +13 -0
  89. package/dist/atom/Switch/Switch.d.ts +13 -0
  90. package/dist/atom/Switch/Switch.js +102 -0
  91. package/dist/atom/Switch/Switch.mjs +9 -0
  92. package/dist/atom/Table/LuminaPagination.d.mts +7 -0
  93. package/dist/atom/Table/LuminaPagination.d.ts +7 -0
  94. package/dist/atom/Table/LuminaPagination.js +153 -0
  95. package/dist/atom/Table/LuminaPagination.mjs +9 -0
  96. package/dist/atom/Table/Table.d.mts +3 -0
  97. package/dist/atom/Table/Table.d.ts +3 -0
  98. package/dist/atom/Table/Table.js +306 -0
  99. package/dist/atom/Table/Table.mjs +9 -0
  100. package/dist/atom/Table/TableAccordion.d.mts +9 -0
  101. package/dist/atom/Table/TableAccordion.d.ts +9 -0
  102. package/dist/atom/Table/TableAccordion.js +91 -0
  103. package/dist/atom/Table/TableAccordion.mjs +10 -0
  104. package/dist/atom/Table/TableColumnHeader.d.mts +7 -0
  105. package/dist/atom/Table/TableColumnHeader.d.ts +7 -0
  106. package/dist/atom/Table/TableColumnHeader.js +151 -0
  107. package/dist/atom/Table/TableColumnHeader.mjs +10 -0
  108. package/dist/atom/Table/TableToolbar.d.mts +9 -0
  109. package/dist/atom/Table/TableToolbar.d.ts +9 -0
  110. package/dist/atom/Table/TableToolbar.js +114 -0
  111. package/dist/atom/Table/TableToolbar.mjs +10 -0
  112. package/dist/atom/Table/__tests__/Table.test.d.mts +2 -0
  113. package/dist/atom/Table/__tests__/Table.test.d.ts +2 -0
  114. package/dist/atom/Table/__tests__/Table.test.js +61133 -0
  115. package/dist/atom/Table/__tests__/Table.test.mjs +59522 -0
  116. package/dist/atom/TableAccordion/index.d.mts +17 -0
  117. package/dist/atom/TableAccordion/index.d.ts +17 -0
  118. package/dist/atom/TableAccordion/index.js +91 -0
  119. package/dist/atom/TableAccordion/index.mjs +9 -0
  120. package/dist/atom/TableToolbar/index.d.mts +23 -0
  121. package/dist/atom/TableToolbar/index.d.ts +23 -0
  122. package/dist/atom/TableToolbar/index.js +114 -0
  123. package/dist/atom/TableToolbar/index.mjs +9 -0
  124. package/dist/atom/Tag/Tag.d.mts +6 -0
  125. package/dist/atom/Tag/Tag.d.ts +6 -0
  126. package/dist/atom/Tag/Tag.js +108 -0
  127. package/dist/atom/Tag/Tag.mjs +9 -0
  128. package/dist/atom/Tooltip/Tooltip.d.mts +12 -0
  129. package/dist/atom/Tooltip/Tooltip.d.ts +12 -0
  130. package/dist/atom/Tooltip/Tooltip.js +97 -0
  131. package/dist/atom/Tooltip/Tooltip.mjs +9 -0
  132. package/dist/chunk-2EBPXGRY.mjs +65 -0
  133. package/dist/chunk-2PIFDGVK.mjs +420 -0
  134. package/dist/chunk-35KDS27M.mjs +618 -0
  135. package/dist/chunk-3S4X3YO2.mjs +64 -0
  136. package/dist/chunk-3XUHGVYA.mjs +77 -0
  137. package/dist/chunk-4JX54OKI.mjs +627 -0
  138. package/dist/chunk-4VZB2KR2.mjs +51 -0
  139. package/dist/chunk-5HF6Y37C.mjs +642 -0
  140. package/dist/chunk-5OGQ4YIR.mjs +238 -0
  141. package/dist/chunk-6FCSXN7R.mjs +388 -0
  142. package/dist/chunk-7W72LPSU.mjs +66 -0
  143. package/dist/chunk-A66QDQHK.mjs +627 -0
  144. package/dist/chunk-ABLIL47F.mjs +618 -0
  145. package/dist/chunk-AEPDEUGY.mjs +627 -0
  146. package/dist/chunk-AF2RKLH6.mjs +77 -0
  147. package/dist/chunk-AFLEGUF3.mjs +232 -0
  148. package/dist/chunk-APCEITHQ.mjs +232 -0
  149. package/dist/chunk-AVQBFGBT.mjs +141 -0
  150. package/dist/chunk-B5BOBELW.mjs +213 -0
  151. package/dist/chunk-BQ4PVLJ4.mjs +262 -0
  152. package/dist/chunk-D3N7VFER.mjs +73 -0
  153. package/dist/{chunk-OMYHSSPQ.mjs → chunk-DBNLBCQK.mjs} +5 -5
  154. package/dist/chunk-DLLT6V65.mjs +141 -0
  155. package/dist/chunk-DOQQRYTS.mjs +73 -0
  156. package/dist/chunk-DSVR2DVF.mjs +660 -0
  157. package/dist/chunk-DXUPULDI.mjs +424 -0
  158. package/dist/chunk-E465D6OH.mjs +644 -0
  159. package/dist/chunk-E4FCLHYA.mjs +678 -0
  160. package/dist/chunk-ENQN5BAN.mjs +225 -0
  161. package/dist/chunk-F6VMSH4N.mjs +79 -0
  162. package/dist/chunk-FKGGN3FA.mjs +412 -0
  163. package/dist/chunk-GFTO2N3Q.mjs +432 -0
  164. package/dist/chunk-GM6H6RPJ.mjs +232 -0
  165. package/dist/chunk-GU5F7Z7I.mjs +681 -0
  166. package/dist/chunk-HF3VJBMY.mjs +244 -0
  167. package/dist/{chunk-ME35H7QC.mjs → chunk-HISCHZ5H.mjs} +4 -4
  168. package/dist/chunk-HWQBE6PT.mjs +99 -0
  169. package/dist/chunk-HXM657YW.mjs +115 -0
  170. package/dist/chunk-I5VHKSQR.mjs +64 -0
  171. package/dist/chunk-ICSZZNTY.mjs +384 -0
  172. package/dist/chunk-IWO2Y5QX.mjs +89 -0
  173. package/dist/chunk-IZGLD7U3.mjs +667 -0
  174. package/dist/chunk-J7X2PZG6.mjs +232 -0
  175. package/dist/chunk-JUXBLRMQ.mjs +50 -0
  176. package/dist/chunk-JXFSGADI.mjs +678 -0
  177. package/dist/chunk-KGKRSR6D.mjs +388 -0
  178. package/dist/chunk-KQKNFGWZ.mjs +388 -0
  179. package/dist/chunk-LCH4DXJY.mjs +92 -0
  180. package/dist/chunk-LCXU3K57.mjs +232 -0
  181. package/dist/chunk-LRN4XOIR.mjs +71 -0
  182. package/dist/chunk-LROMXY35.mjs +116 -0
  183. package/dist/chunk-LUNPHYAR.mjs +681 -0
  184. package/dist/chunk-LVOTEPLC.mjs +64 -0
  185. package/dist/chunk-M2ZM3X5Y.mjs +56 -0
  186. package/dist/chunk-M4MIYHAV.mjs +43 -0
  187. package/dist/chunk-M7F7DOC4.mjs +41 -0
  188. package/dist/chunk-MHWFVML4.mjs +115 -0
  189. package/dist/chunk-MLCMZRUC.mjs +50 -0
  190. package/dist/chunk-MNARBWAJ.mjs +47 -0
  191. package/dist/chunk-MPTVYTYS.mjs +0 -0
  192. package/dist/chunk-MQFW3LZR.mjs +111 -0
  193. package/dist/chunk-N2WTNCQU.mjs +66 -0
  194. package/dist/chunk-N355RJGH.mjs +141 -0
  195. package/dist/chunk-N3YFQDW7.mjs +77 -0
  196. package/dist/chunk-N4DPPZVJ.mjs +269 -0
  197. package/dist/chunk-NGCBOOIE.mjs +225 -0
  198. package/dist/chunk-NWQQYJSP.mjs +688 -0
  199. package/dist/chunk-NYQV556V.mjs +667 -0
  200. package/dist/chunk-O5C3355V.mjs +246 -0
  201. package/dist/chunk-OCP43S7U.mjs +241 -0
  202. package/dist/chunk-OHLFRULE.mjs +432 -0
  203. package/dist/chunk-PLO46EKV.mjs +65 -0
  204. package/dist/chunk-PQ3B2FEB.mjs +249 -0
  205. package/dist/chunk-PSBEYGD4.mjs +618 -0
  206. package/dist/chunk-PWIBJI6Z.mjs +115 -0
  207. package/dist/chunk-Q5KPXEH5.mjs +223 -0
  208. package/dist/chunk-QC34HHAY.mjs +57 -0
  209. package/dist/chunk-QKTMWS4J.mjs +43 -0
  210. package/dist/chunk-QVWV36BK.mjs +73 -0
  211. package/dist/chunk-QWK3MYDM.mjs +64 -0
  212. package/dist/chunk-RE44YAMD.mjs +47 -0
  213. package/dist/chunk-RH6DAYBU.mjs +369 -0
  214. package/dist/chunk-RSSEJENT.mjs +269 -0
  215. package/dist/chunk-SJBS5QCJ.mjs +225 -0
  216. package/dist/chunk-SWRFCTJW.mjs +77 -0
  217. package/dist/chunk-T4XNCAIB.mjs +231 -0
  218. package/dist/chunk-TCX5IFQ4.mjs +627 -0
  219. package/dist/chunk-TSAUBT2F.mjs +74 -0
  220. package/dist/chunk-U7Q7ILSE.mjs +690 -0
  221. package/dist/chunk-UHTUJJH7.mjs +112 -0
  222. package/dist/chunk-UOHYCMUS.mjs +53 -0
  223. package/dist/chunk-UQJ3BDM4.mjs +141 -0
  224. package/dist/chunk-UQZBL3F7.mjs +0 -0
  225. package/dist/chunk-UQZNUEZE.mjs +64 -0
  226. package/dist/chunk-URGYNKJM.mjs +229 -0
  227. package/dist/chunk-UTMZY37A.mjs +141 -0
  228. package/dist/chunk-UUEPD2FH.mjs +141 -0
  229. package/dist/chunk-V3CHJHUX.mjs +424 -0
  230. package/dist/chunk-VQOUJQIF.mjs +249 -0
  231. package/dist/chunk-VY3QH43W.mjs +6 -0
  232. package/dist/chunk-W2N3AWY6.mjs +80 -0
  233. package/dist/chunk-WUVS6S7N.mjs +119 -0
  234. package/dist/chunk-WZS2K7X3.mjs +688 -0
  235. package/dist/chunk-X76GNSBB.mjs +87 -0
  236. package/dist/chunk-XG7CZXBW.mjs +244 -0
  237. package/dist/chunk-XXKIBYXD.mjs +109 -0
  238. package/dist/chunk-XXTUVMAY.mjs +51 -0
  239. package/dist/chunk-Y3BIY4DW.mjs +618 -0
  240. package/dist/chunk-Y7FP6ZMW.mjs +225 -0
  241. package/dist/chunk-YELLXCMY.mjs +265 -0
  242. package/dist/chunk-YQEEM26W.mjs +232 -0
  243. package/dist/chunk-ZGFE3OPJ.mjs +678 -0
  244. package/dist/chunk-ZMJ3KDDY.mjs +618 -0
  245. package/dist/chunk-ZTRM4HZJ.mjs +53 -0
  246. package/dist/chunk-ZYPWQ53U.mjs +6 -0
  247. package/dist/dist-U2IPN4FB.mjs +567 -0
  248. package/dist/index.d.mts +20 -2
  249. package/dist/index.d.ts +20 -2
  250. package/dist/index.js +2820 -13
  251. package/dist/index.mjs +59 -5
  252. package/dist/magic-string.es-XOWQCRDO.mjs +1311 -0
  253. package/dist/molecules/UserProfile/UserProfile.d.mts +23 -0
  254. package/dist/molecules/UserProfile/UserProfile.d.ts +23 -0
  255. package/dist/molecules/UserProfile/UserProfile.js +243 -0
  256. package/dist/molecules/UserProfile/UserProfile.mjs +11 -0
  257. package/dist/styles.css +1809 -1366
  258. package/dist/types-CA0Wby2L.d.mts +67 -0
  259. package/dist/types-CA0Wby2L.d.ts +67 -0
  260. package/dist/types-CncMmuJM.d.mts +44 -0
  261. package/dist/types-CncMmuJM.d.ts +44 -0
  262. package/dist/types-D4MD2w3_.d.mts +9 -0
  263. package/dist/types-D4MD2w3_.d.ts +9 -0
  264. package/dist/types-D4fdeMWQ.d.mts +62 -0
  265. package/dist/types-D4fdeMWQ.d.ts +62 -0
  266. package/dist/types-mhQmqhsR.d.mts +10 -0
  267. package/dist/types-mhQmqhsR.d.ts +10 -0
  268. package/package.json +9 -15
  269. /package/dist/{Button.d.mts → atom/Button/Button.d.mts} +0 -0
  270. /package/dist/{Button.d.ts → atom/Button/Button.d.ts} +0 -0
  271. /package/dist/{Checkbox.d.mts → atom/Checkbox/Checkbox.d.mts} +0 -0
  272. /package/dist/{Checkbox.d.ts → atom/Checkbox/Checkbox.d.ts} +0 -0
  273. /package/dist/{chunk-FUJQIYOF.mjs → chunk-FWCSY2DS.mjs} +0 -0
@@ -0,0 +1,690 @@
1
+ import {
2
+ Chevron
3
+ } from "./chunk-UOHYCMUS.mjs";
4
+
5
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.tsx
6
+ import { memo as memo2, useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
7
+ import clsx from "clsx";
8
+ import dayjs2 from "dayjs";
9
+ import customParseFormat from "dayjs/plugin/customParseFormat";
10
+ import isSameOrBefore from "dayjs/plugin/isSameOrBefore";
11
+
12
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.module.scss
13
+ var AdvancedDateRangePicker_module_default = { "root": "AdvancedDateRangePicker-module__root___udir8", "inner": "AdvancedDateRangePicker-module__inner___P4OHa", "left": "AdvancedDateRangePicker-module__left___T6E84", "sidebarItem": "AdvancedDateRangePicker-module__sidebarItem___-NXPm", "sidebarItemActive": "AdvancedDateRangePicker-module__sidebarItemActive___5GmBY", "main": "AdvancedDateRangePicker-module__main___G4MU9", "header": "AdvancedDateRangePicker-module__header___mxXEE", "headerGroup": "AdvancedDateRangePicker-module__headerGroup___J7mJB", "headerLabel": "AdvancedDateRangePicker-module__headerLabel___Yvhkr", "timezoneWrapper": "AdvancedDateRangePicker-module__timezoneWrapper___886Qm", "dateTimeWrapper": "AdvancedDateRangePicker-module__dateTimeWrapper___unDQJ", "headerSeparator": "AdvancedDateRangePicker-module__headerSeparator___Vwx6P", "timezoneSelect": "AdvancedDateRangePicker-module__timezoneSelect___f4oln", "dateTimeColumn": "AdvancedDateRangePicker-module__dateTimeColumn___tdDV3", "dateTimeGroup": "AdvancedDateRangePicker-module__dateTimeGroup___azF09", "dateInput": "AdvancedDateRangePicker-module__dateInput___0t9ww", "inputError": "AdvancedDateRangePicker-module__inputError___A5hid", "timeInput": "AdvancedDateRangePicker-module__timeInput___Jalr9", "errorMessage": "AdvancedDateRangePicker-module__errorMessage___gx7ag", "body": "AdvancedDateRangePicker-module__body___f8XYj", "footer": "AdvancedDateRangePicker-module__footer___rsJ2w", "doneBtn": "AdvancedDateRangePicker-module__doneBtn___mt-Sv" };
14
+
15
+ // src/atom/AdvancedDateRangePicker/InternalCalendar.tsx
16
+ import { memo, useEffect, useRef, useState } from "react";
17
+ import dayjs from "dayjs";
18
+ import { jsx, jsxs } from "react/jsx-runtime";
19
+ var InternalCalendar = ({
20
+ id = "",
21
+ onChange = () => {
22
+ },
23
+ dateRange = ["", ""],
24
+ showSingleCalendar: showSingleCalendarProp = false,
25
+ disablePastDates = false,
26
+ minDate = null,
27
+ maxDate = null,
28
+ minYear = 1900,
29
+ maxYear = (/* @__PURE__ */ new Date()).getFullYear() + 10,
30
+ allowSameDates = false
31
+ }) => {
32
+ const onChangeRef = useRef(onChange);
33
+ useEffect(() => {
34
+ onChangeRef.current = onChange;
35
+ }, [onChange]);
36
+ const getInitialDate = () => {
37
+ const today2 = /* @__PURE__ */ new Date();
38
+ today2.setHours(0, 0, 0, 0);
39
+ if (dateRange[0]) return new Date(dateRange[0]);
40
+ if (today2.getFullYear() >= minYear && today2.getFullYear() <= maxYear) {
41
+ return today2;
42
+ }
43
+ if (minDate) {
44
+ const minDateTime = new Date(minDate);
45
+ minDateTime.setHours(0, 0, 0, 0);
46
+ return minDateTime;
47
+ }
48
+ return today2;
49
+ };
50
+ const [currentDate, setCurrentDate] = useState(() => getInitialDate());
51
+ const [startDate, setStartDate] = useState(
52
+ dateRange[0] ? new Date(dateRange[0]) : null
53
+ );
54
+ const [endDate, setEndDate] = useState(
55
+ dateRange[0] && dateRange[1] ? new Date(dateRange[1]) : null
56
+ );
57
+ const [hoverDate, setHoverDate] = useState(null);
58
+ const [isSelectingEnd, setIsSelectingEnd] = useState(
59
+ dateRange[0] && !dateRange[1] ? true : false
60
+ );
61
+ const [isMobile, setIsMobile] = useState(false);
62
+ useEffect(() => {
63
+ const checkMobile = () => {
64
+ setIsMobile(window.innerWidth < 1024);
65
+ };
66
+ checkMobile();
67
+ window.addEventListener("resize", checkMobile);
68
+ return () => window.removeEventListener("resize", checkMobile);
69
+ }, []);
70
+ const showSingle = showSingleCalendarProp || isMobile;
71
+ useEffect(() => {
72
+ const nextStart = dateRange[0] ? new Date(dateRange[0]) : null;
73
+ const nextEnd = dateRange[1] ? new Date(dateRange[1]) : null;
74
+ setStartDate(nextStart);
75
+ setEndDate(nextEnd);
76
+ if (nextStart) {
77
+ const startMonth = nextStart.getFullYear() * 12 + nextStart.getMonth();
78
+ const currentViewMonth = currentDate.getFullYear() * 12 + currentDate.getMonth();
79
+ const isVisibleInFirst = startMonth === currentViewMonth;
80
+ const isVisibleInSecond = !showSingle && startMonth === currentViewMonth + 1;
81
+ if (!isVisibleInFirst && !isVisibleInSecond) {
82
+ setCurrentDate(new Date(nextStart.getFullYear(), nextStart.getMonth(), 1));
83
+ }
84
+ }
85
+ }, [dateRange, showSingle, currentDate]);
86
+ const today = /* @__PURE__ */ new Date();
87
+ today.setHours(0, 0, 0, 0);
88
+ const firstMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
89
+ const secondMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);
90
+ const monthNames = [
91
+ "January",
92
+ "February",
93
+ "March",
94
+ "April",
95
+ "May",
96
+ "June",
97
+ "July",
98
+ "August",
99
+ "September",
100
+ "October",
101
+ "November",
102
+ "December"
103
+ ];
104
+ const dayNames = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
105
+ const generateCalendarDays = (monthDate) => {
106
+ const year = monthDate.getFullYear();
107
+ const month = monthDate.getMonth();
108
+ const firstDay = new Date(year, month, 1);
109
+ const lastDay = new Date(year, month + 1, 0);
110
+ const daysInMonth = lastDay.getDate();
111
+ const startingDayOfWeek = firstDay.getDay();
112
+ const days = [];
113
+ for (let i = 0; i < startingDayOfWeek; i++) days.push(null);
114
+ for (let day = 1; day <= daysInMonth; day++) days.push(new Date(year, month, day));
115
+ return days;
116
+ };
117
+ const isSameDate = (d1, d2) => {
118
+ if (!d1 || !d2) return false;
119
+ return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate();
120
+ };
121
+ const isDateDisabled = (date) => {
122
+ if (!date) return false;
123
+ const checkDate = new Date(date);
124
+ checkDate.setHours(0, 0, 0, 0);
125
+ if (disablePastDates && checkDate < today) return true;
126
+ if (minDate) {
127
+ const m = new Date(minDate);
128
+ m.setHours(0, 0, 0, 0);
129
+ if (checkDate < m) return true;
130
+ }
131
+ if (maxDate) {
132
+ const m = new Date(maxDate);
133
+ m.setHours(0, 0, 0, 0);
134
+ if (checkDate > m) return true;
135
+ }
136
+ return false;
137
+ };
138
+ const isDateBetweenRange = (date) => {
139
+ if (!startDate || !date) return false;
140
+ const comp = endDate || hoverDate;
141
+ if (!comp) return false;
142
+ const s = startDate < comp ? startDate : comp;
143
+ const e = startDate < comp ? comp : startDate;
144
+ return date > s && date < e;
145
+ };
146
+ const isDateInRange = (date) => {
147
+ if (!startDate || !date) return false;
148
+ const comp = endDate || hoverDate;
149
+ if (!comp) return false;
150
+ const s = startDate < comp ? startDate : comp;
151
+ const e = startDate < comp ? comp : startDate;
152
+ return date >= s && date <= e;
153
+ };
154
+ const handleDateClick = (date) => {
155
+ if (isDateDisabled(date)) return;
156
+ let nextStart = startDate;
157
+ let nextEnd = endDate;
158
+ const isSame = startDate && dayjs(date).isSame(startDate, "day");
159
+ if (!allowSameDates && isSame) {
160
+ setStartDate(null);
161
+ setEndDate(null);
162
+ setIsSelectingEnd(false);
163
+ onChangeRef.current(["", ""]);
164
+ return;
165
+ }
166
+ if (!startDate || startDate && endDate) {
167
+ nextStart = date;
168
+ nextEnd = null;
169
+ setStartDate(nextStart);
170
+ setEndDate(nextEnd);
171
+ setIsSelectingEnd(true);
172
+ } else {
173
+ if (date < startDate) {
174
+ nextEnd = startDate;
175
+ nextStart = date;
176
+ } else {
177
+ nextEnd = date;
178
+ }
179
+ setStartDate(nextStart);
180
+ setEndDate(nextEnd);
181
+ setIsSelectingEnd(false);
182
+ }
183
+ onChangeRef.current([
184
+ nextStart ? dayjs(nextStart).format("D MMM, YYYY") : "",
185
+ nextEnd ? dayjs(nextEnd).format("D MMM, YYYY") : ""
186
+ ]);
187
+ };
188
+ const handleDateHover = (date) => {
189
+ if (isDateDisabled(date)) return;
190
+ if (isSelectingEnd && startDate && !endDate) setHoverDate(date);
191
+ };
192
+ const navigateMonth = (direction) => {
193
+ const newDate = new Date(currentDate);
194
+ newDate.setMonth(currentDate.getMonth() + direction);
195
+ setCurrentDate(newDate);
196
+ };
197
+ const renderCalendar = (monthDate) => {
198
+ const days = generateCalendarDays(monthDate);
199
+ const monthName = monthNames[monthDate.getMonth()];
200
+ const year = monthDate.getFullYear();
201
+ return /* @__PURE__ */ jsxs("div", { className: "tw-flex-1 tw-mb-2", children: [
202
+ /* @__PURE__ */ jsx("div", { className: "tw-text-center tw-mb-4", children: /* @__PURE__ */ jsxs("h3", { className: "tw-typography-footNoteBold tw-text-gray-900 tw-m-0", children: [
203
+ monthName,
204
+ " ",
205
+ year
206
+ ] }) }),
207
+ /* @__PURE__ */ jsx("div", { className: "tw-grid tw-grid-cols-7 tw-mb-2", children: dayNames.map((day) => /* @__PURE__ */ jsx("div", { className: "tw-py-2 tw-text-center tw-typography-caption2 tw-text-gray-500", children: day }, day)) }),
208
+ /* @__PURE__ */ jsx("div", { className: "tw-grid tw-grid-cols-7", children: days.map((date, index) => {
209
+ if (!date) return /* @__PURE__ */ jsx("div", { className: "tw-h-10" }, index);
210
+ const isStart = isSameDate(date, startDate);
211
+ const isEnd = isSameDate(date, endDate);
212
+ const isInRange = isDateBetweenRange(date);
213
+ const isSelected = isDateInRange(date);
214
+ const isDisabled = isDateDisabled(date);
215
+ const isHovering = isSelectingEnd && hoverDate && isSameDate(date, hoverDate);
216
+ let cellClasses = "tw-relative tw-z-20 tw-h-10 tw-w-10 tw-flex tw-items-center tw-justify-center tw-typography-caption1Bold tw-cursor-pointer tw-transition-all ";
217
+ if (isDisabled) {
218
+ cellClasses += "tw-text-gray-300 tw-cursor-not-allowed ";
219
+ } else if (isStart || isEnd) {
220
+ cellClasses += "tw-bg-black tw-text-white tw-rounded-full ";
221
+ } else if (isInRange) {
222
+ cellClasses += "tw-text-gray-900 ";
223
+ } else {
224
+ cellClasses += "tw-text-gray-700 hover:tw-bg-gray-100 tw-rounded-full ";
225
+ }
226
+ if (isHovering && !isEnd) {
227
+ cellClasses += "tw-border-2 tw-border-gray-400 tw-border-dashed ";
228
+ }
229
+ return /* @__PURE__ */ jsxs("div", { className: "tw-relative tw-flex tw-justify-center", children: [
230
+ isInRange && /* @__PURE__ */ jsx("div", { className: "tw-absolute tw-inset-y-1 tw-inset-x-0 tw-bg-[#f2efec] tw-z-10" }),
231
+ isStart && endDate && !isSameDate(startDate, endDate) && /* @__PURE__ */ jsx("div", { className: "tw-absolute tw-inset-y-1 tw-right-0 tw-left-1/2 tw-bg-[#f2efec] tw-z-10" }),
232
+ isEnd && startDate && !isSameDate(startDate, endDate) && /* @__PURE__ */ jsx("div", { className: "tw-absolute tw-inset-y-1 tw-left-0 tw-right-1/2 tw-bg-[#f2efec] tw-z-10" }),
233
+ /* @__PURE__ */ jsx(
234
+ "div",
235
+ {
236
+ className: cellClasses,
237
+ onClick: () => handleDateClick(date),
238
+ onMouseEnter: () => handleDateHover(date),
239
+ children: date.getDate()
240
+ }
241
+ )
242
+ ] }, date.toISOString());
243
+ }) })
244
+ ] });
245
+ };
246
+ return /* @__PURE__ */ jsxs("div", { className: "tw-relative tw-bg-white tw-w-full", children: [
247
+ /* @__PURE__ */ jsxs("div", { className: "tw-flex tw-items-center tw-justify-between tw-absolute tw-inset-x-0 tw-top-0 tw-z-30 tw-px-4", children: [
248
+ /* @__PURE__ */ jsx(
249
+ "div",
250
+ {
251
+ className: "tw-cursor-pointer tw-p-2 tw-rounded-full hover:tw-bg-gray-100",
252
+ onClick: () => navigateMonth(-1),
253
+ children: /* @__PURE__ */ jsx(Chevron, { size: "medium" })
254
+ }
255
+ ),
256
+ /* @__PURE__ */ jsx(
257
+ "div",
258
+ {
259
+ className: "tw-cursor-pointer tw-p-2 tw-rounded-full hover:tw-bg-gray-100",
260
+ onClick: () => navigateMonth(1),
261
+ children: /* @__PURE__ */ jsx(Chevron, { size: "medium", className: "tw-rotate-180" })
262
+ }
263
+ )
264
+ ] }),
265
+ /* @__PURE__ */ jsxs("div", { className: "tw-flex tw-gap-8 tw-pt-2", children: [
266
+ renderCalendar(firstMonth),
267
+ !showSingle && renderCalendar(secondMonth)
268
+ ] })
269
+ ] });
270
+ };
271
+ var InternalCalendar_default = memo(InternalCalendar);
272
+
273
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.tsx
274
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
275
+ dayjs2.extend(customParseFormat);
276
+ dayjs2.extend(isSameOrBefore);
277
+ var TIMEZONES = [
278
+ { label: "UTC", value: "UTC" },
279
+ { label: "Eastern time", value: "America/New_York" },
280
+ { label: "Central time", value: "America/Chicago" },
281
+ { label: "Mountain time", value: "America/Denver" },
282
+ { label: "Pacific time", value: "America/Los_Angeles" },
283
+ { label: "India (IST)", value: "Asia/Kolkata" },
284
+ { label: "London (GMT)", value: "Europe/London" }
285
+ ];
286
+ var DEFAULT_TIME = { hour: "12", minute: "00", period: "PM" };
287
+ function getPresets() {
288
+ const today = /* @__PURE__ */ new Date();
289
+ today.setHours(0, 0, 0, 0);
290
+ return [
291
+ {
292
+ label: "Custom",
293
+ key: "custom",
294
+ getRange: () => [null, null]
295
+ },
296
+ {
297
+ label: "Yesterday",
298
+ key: "yesterday",
299
+ getRange: () => {
300
+ const d = new Date(today);
301
+ d.setDate(d.getDate() - 1);
302
+ return [d, d];
303
+ }
304
+ },
305
+ {
306
+ label: "Previous week",
307
+ key: "previous-week",
308
+ getRange: () => {
309
+ const dayOfWeek = today.getDay();
310
+ const start = new Date(today);
311
+ start.setDate(today.getDate() - dayOfWeek - 6);
312
+ const end = new Date(today);
313
+ return [start, end];
314
+ }
315
+ },
316
+ {
317
+ label: "This month",
318
+ key: "this-month",
319
+ getRange: () => {
320
+ const start = new Date(today.getFullYear(), today.getMonth(), 1);
321
+ const end = new Date(today.getFullYear(), today.getMonth() + 1, 0);
322
+ return [start, end];
323
+ }
324
+ },
325
+ {
326
+ label: "Previous month",
327
+ key: "previous-month",
328
+ getRange: () => {
329
+ const start = new Date(today.getFullYear(), today.getMonth() - 1, 1);
330
+ const end = new Date(today.getFullYear(), today.getMonth(), 0);
331
+ return [start, end];
332
+ }
333
+ },
334
+ {
335
+ label: "Previous quarter",
336
+ key: "previous-quarter",
337
+ getRange: () => {
338
+ const month = today.getMonth();
339
+ const quarter = Math.floor(month / 3);
340
+ const startMonth = (quarter - 1) * 3;
341
+ const start = new Date(today.getFullYear(), startMonth, 1);
342
+ const end = new Date(today.getFullYear(), startMonth + 3, 0);
343
+ return [start, end];
344
+ }
345
+ }
346
+ ];
347
+ }
348
+ function applyDateMask(v, prev) {
349
+ if (v.length < prev.length) return v;
350
+ const digits = v.replace(/[^\d]/g, "").slice(0, 8);
351
+ if (digits.length >= 2) {
352
+ const d = Number(digits.slice(0, 2));
353
+ if (d < 1 || d > 31) return prev;
354
+ }
355
+ if (digits.length >= 4) {
356
+ const m = Number(digits.slice(2, 4));
357
+ if (m < 1 || m > 12) return prev;
358
+ }
359
+ let result = "";
360
+ if (digits.length > 0) result += digits.slice(0, 2);
361
+ if (digits.length >= 2) result += "-";
362
+ if (digits.length > 2) result += digits.slice(2, 4);
363
+ if (digits.length >= 4) result += "-";
364
+ if (digits.length > 4) result += digits.slice(4, 8);
365
+ return result.slice(0, 10);
366
+ }
367
+ function applyTimeMask(v, prev) {
368
+ if (v.length < prev.length) return v;
369
+ const digits = v.replace(/[^\d]/g, "").slice(0, 4);
370
+ if (digits.length >= 2) {
371
+ const h = Number(digits.slice(0, 2));
372
+ if (h < 1 || h > 12) return prev;
373
+ }
374
+ if (digits.length >= 4) {
375
+ const m = Number(digits.slice(2, 4));
376
+ if (m > 59) return prev;
377
+ }
378
+ let result = "";
379
+ if (digits.length > 0) result += digits.slice(0, 2);
380
+ if (digits.length >= 2) result += ":";
381
+ if (digits.length > 2) result += digits.slice(2, 4);
382
+ if (v.toUpperCase().includes("A")) result += " AM";
383
+ else if (v.toUpperCase().includes("P")) result += " PM";
384
+ else if (digits.length === 4) result += " ";
385
+ return result.slice(0, 8);
386
+ }
387
+ function formatForDisplay(date) {
388
+ if (!date) return "";
389
+ return dayjs2(date).format("DD-MM-YYYY");
390
+ }
391
+ function validateDateString(raw) {
392
+ const regex = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\d{4}$/;
393
+ if (!regex.test(raw)) return false;
394
+ const [d, m, y] = raw.split("-").map(Number);
395
+ const date = new Date(y, m - 1, d);
396
+ return date.getFullYear() === y && date.getMonth() === m - 1 && date.getDate() === d;
397
+ }
398
+ function validateTimeString(raw) {
399
+ const regex = /^(0[1-9]|1[0-2]):(0[0-9]|[1-5][0-9])\s(AM|PM)$/i;
400
+ return regex.test(raw);
401
+ }
402
+ function parseDateInput(raw) {
403
+ if (!validateDateString(raw)) return null;
404
+ return dayjs2(raw, "DD-MM-YYYY", true).toDate();
405
+ }
406
+ function parseTimeInput(raw) {
407
+ if (!validateTimeString(raw)) return null;
408
+ const match = raw.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);
409
+ if (!match) return null;
410
+ return {
411
+ hour: match[1].padStart(2, "0"),
412
+ minute: match[2].padStart(2, "0"),
413
+ period: match[3].toUpperCase()
414
+ };
415
+ }
416
+ function formatTime(t) {
417
+ return `${t.hour}:${t.minute} ${t.period}`;
418
+ }
419
+ var DateTimeInputGroup = memo2(function DateTimeInputGroup2({
420
+ label,
421
+ dateValue,
422
+ timeValue,
423
+ dateError,
424
+ timeError,
425
+ onDateChange,
426
+ onTimeChange
427
+ }) {
428
+ const [isDateFocused, setIsDateFocused] = useState2(false);
429
+ const [isTimeFocused, setIsTimeFocused] = useState2(false);
430
+ const showDateError = dateError && !isDateFocused;
431
+ const showTimeError = timeError && !isTimeFocused && !showDateError;
432
+ return /* @__PURE__ */ jsxs2("div", { className: AdvancedDateRangePicker_module_default.headerGroup, children: [
433
+ /* @__PURE__ */ jsx2("span", { className: AdvancedDateRangePicker_module_default.headerLabel, children: label }),
434
+ /* @__PURE__ */ jsxs2("div", { className: AdvancedDateRangePicker_module_default.dateTimeColumn, children: [
435
+ /* @__PURE__ */ jsxs2("div", { className: AdvancedDateRangePicker_module_default.dateTimeGroup, children: [
436
+ /* @__PURE__ */ jsx2(
437
+ "input",
438
+ {
439
+ type: "text",
440
+ placeholder: "DD-MM-YYYY",
441
+ value: dateValue,
442
+ onFocus: () => setIsDateFocused(true),
443
+ onBlur: () => setIsDateFocused(false),
444
+ onChange: (e) => onDateChange(e.target.value),
445
+ className: clsx(AdvancedDateRangePicker_module_default.dateInput, { [AdvancedDateRangePicker_module_default.inputError]: showDateError })
446
+ }
447
+ ),
448
+ /* @__PURE__ */ jsx2(
449
+ "input",
450
+ {
451
+ type: "text",
452
+ placeholder: "12:00 PM",
453
+ value: timeValue,
454
+ onFocus: () => setIsTimeFocused(true),
455
+ onBlur: () => setIsTimeFocused(false),
456
+ onChange: (e) => onTimeChange(e.target.value),
457
+ className: clsx(AdvancedDateRangePicker_module_default.timeInput, { [AdvancedDateRangePicker_module_default.inputError]: showTimeError })
458
+ }
459
+ )
460
+ ] }),
461
+ showDateError && /* @__PURE__ */ jsx2("span", { className: AdvancedDateRangePicker_module_default.errorMessage, children: "Enter valid date" }),
462
+ showTimeError && /* @__PURE__ */ jsx2("span", { className: AdvancedDateRangePicker_module_default.errorMessage, children: "Enter valid time" })
463
+ ] })
464
+ ] });
465
+ });
466
+ function AdvancedDateRangePicker({
467
+ value,
468
+ onChange,
469
+ confirmLabel = "Done",
470
+ className = "",
471
+ disabled = false,
472
+ disablePastDates = false,
473
+ minDate = null,
474
+ maxDate = null,
475
+ showSingleCalendar = false,
476
+ id = "adv-drp",
477
+ defaultTimezone = "UTC",
478
+ isTimezoneDisabled = false
479
+ }) {
480
+ var _a, _b, _c;
481
+ const PRESETS = useMemo2(() => getPresets(), []);
482
+ const [startDate, setStartDate] = useState2((_a = value == null ? void 0 : value.startDate) != null ? _a : null);
483
+ const [endDate, setEndDate] = useState2((_b = value == null ? void 0 : value.endDate) != null ? _b : null);
484
+ const [timezone, setTimezone] = useState2((_c = value == null ? void 0 : value.timezone) != null ? _c : defaultTimezone);
485
+ const [fromDateStr, setFromDateStr] = useState2(formatForDisplay(startDate));
486
+ const [toDateStr, setToDateStr] = useState2(formatForDisplay(endDate));
487
+ const [fromTimeStr, setFromTimeStr] = useState2(
488
+ (value == null ? void 0 : value.startTime) ? formatTime(value.startTime) : "12:00 PM"
489
+ );
490
+ const [toTimeStr, setToTimeStr] = useState2(
491
+ (value == null ? void 0 : value.endTime) ? formatTime(value.endTime) : "12:00 PM"
492
+ );
493
+ const [activePreset, setActivePreset] = useState2("custom");
494
+ const fromDateError = useMemo2(() => fromDateStr.length > 0 && (fromDateStr.length < 10 || !validateDateString(fromDateStr)), [fromDateStr]);
495
+ const toDateError = useMemo2(() => toDateStr.length > 0 && (toDateStr.length < 10 || !validateDateString(toDateStr)), [toDateStr]);
496
+ const fromTimeError = useMemo2(() => fromTimeStr.length > 0 && (fromTimeStr.length < 8 || !validateTimeString(fromTimeStr)), [fromTimeStr]);
497
+ const toTimeError = useMemo2(() => toTimeStr.length > 0 && (toTimeStr.length < 8 || !validateTimeString(toTimeStr)), [toTimeStr]);
498
+ const isReady = useMemo2(() => {
499
+ return startDate !== null && endDate !== null && validateDateString(fromDateStr) && validateDateString(toDateStr) && validateTimeString(fromTimeStr) && validateTimeString(toTimeStr) && dayjs2(startDate).isSameOrBefore(dayjs2(endDate), "day");
500
+ }, [startDate, endDate, fromDateStr, toDateStr, fromTimeStr, toTimeStr]);
501
+ useEffect2(() => {
502
+ var _a2, _b2, _c2;
503
+ if (value) {
504
+ setStartDate((_a2 = value.startDate) != null ? _a2 : null);
505
+ setEndDate((_b2 = value.endDate) != null ? _b2 : null);
506
+ setTimezone((_c2 = value.timezone) != null ? _c2 : defaultTimezone);
507
+ if (value.startTime) setFromTimeStr(formatTime(value.startTime));
508
+ if (value.endTime) setToTimeStr(formatTime(value.endTime));
509
+ }
510
+ }, [value, defaultTimezone]);
511
+ useEffect2(() => {
512
+ setFromDateStr(formatForDisplay(startDate));
513
+ }, [startDate]);
514
+ useEffect2(() => {
515
+ setToDateStr(formatForDisplay(endDate));
516
+ }, [endDate]);
517
+ const rangeValue = useMemo2(() => [
518
+ startDate ? startDate.toISOString() : "",
519
+ endDate ? endDate.toISOString() : ""
520
+ ], [startDate, endDate]);
521
+ const handleRangeChange = useCallback2(
522
+ (range) => {
523
+ const [s, e] = range;
524
+ if (s) {
525
+ const sDateByDayjs = dayjs2(s, "D MMM, YYYY").toDate();
526
+ setStartDate(sDateByDayjs);
527
+ } else {
528
+ setStartDate(null);
529
+ }
530
+ if (e) {
531
+ const eDateByDayjs = dayjs2(e, "D MMM, YYYY").toDate();
532
+ setEndDate(eDateByDayjs);
533
+ } else {
534
+ setEndDate(null);
535
+ }
536
+ setActivePreset("custom");
537
+ },
538
+ []
539
+ );
540
+ const handlePreset = useCallback2(
541
+ (preset) => {
542
+ const [s, e] = preset.getRange();
543
+ setStartDate(s);
544
+ setEndDate(e);
545
+ setActivePreset(preset.key);
546
+ },
547
+ []
548
+ );
549
+ const handleFromDateChange = useCallback2((v) => {
550
+ const masked = applyDateMask(v, fromDateStr);
551
+ setFromDateStr(masked);
552
+ setActivePreset("custom");
553
+ if (masked.length === 10) {
554
+ const parsed = parseDateInput(masked);
555
+ if (parsed) {
556
+ setStartDate(parsed);
557
+ if (endDate && dayjs2(parsed).isAfter(dayjs2(endDate), "day")) {
558
+ setEndDate(null);
559
+ }
560
+ }
561
+ }
562
+ }, [fromDateStr, endDate]);
563
+ const handleToDateChange = useCallback2((v) => {
564
+ const masked = applyDateMask(v, toDateStr);
565
+ setToDateStr(masked);
566
+ setActivePreset("custom");
567
+ if (masked.length === 10) {
568
+ const parsed = parseDateInput(masked);
569
+ if (parsed) {
570
+ setEndDate(parsed);
571
+ if (startDate && dayjs2(parsed).isBefore(dayjs2(startDate), "day")) {
572
+ setStartDate(null);
573
+ }
574
+ }
575
+ }
576
+ }, [toDateStr, startDate]);
577
+ const handleFromTimeChange = useCallback2((v) => {
578
+ const masked = applyTimeMask(v, fromTimeStr);
579
+ setFromTimeStr(masked);
580
+ setActivePreset("custom");
581
+ }, [fromTimeStr]);
582
+ const handleToTimeChange = useCallback2((v) => {
583
+ const masked = applyTimeMask(v, toTimeStr);
584
+ setToTimeStr(masked);
585
+ setActivePreset("custom");
586
+ }, [toTimeStr]);
587
+ const handleDone = useCallback2(() => {
588
+ var _a2, _b2;
589
+ if (!isReady) return;
590
+ const fromTime = (_a2 = parseTimeInput(fromTimeStr)) != null ? _a2 : DEFAULT_TIME;
591
+ const toTime = (_b2 = parseTimeInput(toTimeStr)) != null ? _b2 : DEFAULT_TIME;
592
+ onChange == null ? void 0 : onChange({
593
+ startDate,
594
+ endDate,
595
+ startTime: fromTime,
596
+ endTime: toTime,
597
+ timezone
598
+ });
599
+ }, [isReady, onChange, startDate, endDate, fromTimeStr, toTimeStr, timezone]);
600
+ return /* @__PURE__ */ jsxs2("div", { className: clsx(AdvancedDateRangePicker_module_default.root, className), id, children: [
601
+ /* @__PURE__ */ jsxs2("div", { className: AdvancedDateRangePicker_module_default.inner, children: [
602
+ /* @__PURE__ */ jsx2("aside", { className: AdvancedDateRangePicker_module_default.left, children: PRESETS.map((p) => /* @__PURE__ */ jsx2(
603
+ "button",
604
+ {
605
+ type: "button",
606
+ onClick: () => handlePreset(p),
607
+ className: clsx(AdvancedDateRangePicker_module_default.sidebarItem, {
608
+ [AdvancedDateRangePicker_module_default.sidebarItemActive]: activePreset === p.key
609
+ }),
610
+ children: p.label
611
+ },
612
+ p.key
613
+ )) }),
614
+ /* @__PURE__ */ jsxs2("div", { className: AdvancedDateRangePicker_module_default.main, children: [
615
+ /* @__PURE__ */ jsxs2("header", { className: AdvancedDateRangePicker_module_default.header, children: [
616
+ /* @__PURE__ */ jsxs2("div", { className: clsx(AdvancedDateRangePicker_module_default.headerGroup, AdvancedDateRangePicker_module_default.timezoneWrapper), children: [
617
+ /* @__PURE__ */ jsx2("span", { className: AdvancedDateRangePicker_module_default.headerLabel, children: "Timezone" }),
618
+ /* @__PURE__ */ jsx2(
619
+ "select",
620
+ {
621
+ value: timezone,
622
+ onChange: (e) => setTimezone(e.target.value),
623
+ className: AdvancedDateRangePicker_module_default.timezoneSelect,
624
+ disabled: isTimezoneDisabled,
625
+ children: TIMEZONES.map((tz) => /* @__PURE__ */ jsx2("option", { value: tz.value, children: tz.label }, tz.value))
626
+ }
627
+ )
628
+ ] }),
629
+ /* @__PURE__ */ jsx2("div", { className: AdvancedDateRangePicker_module_default.headerSeparator }),
630
+ /* @__PURE__ */ jsxs2("div", { className: AdvancedDateRangePicker_module_default.dateTimeWrapper, children: [
631
+ /* @__PURE__ */ jsx2(
632
+ DateTimeInputGroup,
633
+ {
634
+ label: "From",
635
+ dateValue: fromDateStr,
636
+ timeValue: fromTimeStr,
637
+ dateError: fromDateError,
638
+ timeError: fromTimeError,
639
+ onDateChange: handleFromDateChange,
640
+ onTimeChange: handleFromTimeChange
641
+ }
642
+ ),
643
+ /* @__PURE__ */ jsx2("div", { className: AdvancedDateRangePicker_module_default.headerSeparator }),
644
+ /* @__PURE__ */ jsx2(
645
+ DateTimeInputGroup,
646
+ {
647
+ label: "To",
648
+ dateValue: toDateStr,
649
+ timeValue: toTimeStr,
650
+ dateError: toDateError,
651
+ timeError: toTimeError,
652
+ onDateChange: handleToDateChange,
653
+ onTimeChange: handleToTimeChange
654
+ }
655
+ )
656
+ ] })
657
+ ] }),
658
+ /* @__PURE__ */ jsx2("div", { className: AdvancedDateRangePicker_module_default.body, children: /* @__PURE__ */ jsx2(
659
+ InternalCalendar_default,
660
+ {
661
+ id: `${id}-calendar`,
662
+ dateRange: rangeValue,
663
+ onChange: handleRangeChange,
664
+ disablePastDates,
665
+ minDate,
666
+ maxDate,
667
+ showSingleCalendar
668
+ }
669
+ ) })
670
+ ] })
671
+ ] }),
672
+ /* @__PURE__ */ jsx2("footer", { className: AdvancedDateRangePicker_module_default.footer, children: /* @__PURE__ */ jsx2(
673
+ "button",
674
+ {
675
+ type: "button",
676
+ onClick: handleDone,
677
+ disabled: disabled || !isReady,
678
+ className: AdvancedDateRangePicker_module_default.doneBtn,
679
+ children: confirmLabel
680
+ }
681
+ ) })
682
+ ] });
683
+ }
684
+ AdvancedDateRangePicker.displayName = "AdvancedDateRangePicker";
685
+ var AdvancedDateRangePicker_default = AdvancedDateRangePicker;
686
+
687
+ export {
688
+ AdvancedDateRangePicker,
689
+ AdvancedDateRangePicker_default
690
+ };