@itilite/lumina-ui 1.0.4-alpha → 1.0.5-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.
@@ -70,7 +70,7 @@ var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat.j
70
70
  var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore.js"));
71
71
 
72
72
  // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.module.scss
73
- 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", "timezoneWrapper": "AdvancedDateRangePicker-module__timezoneWrapper___886Qm", "dateTimeWrapper": "AdvancedDateRangePicker-module__dateTimeWrapper___unDQJ", "headerGroup": "AdvancedDateRangePicker-module__headerGroup___J7mJB", "headerLabel": "AdvancedDateRangePicker-module__headerLabel___Yvhkr", "headerSeparator": "AdvancedDateRangePicker-module__headerSeparator___Vwx6P", "timezoneSelect": "AdvancedDateRangePicker-module__timezoneSelect___f4oln", "timezoneSelectContainer": "AdvancedDateRangePicker-module__timezoneSelectContainer___8SMc4", "timezoneSelectInput": "AdvancedDateRangePicker-module__timezoneSelectInput___ol0-7", "timezoneDisabledBadge": "AdvancedDateRangePicker-module__timezoneDisabledBadge___VBxOd", "inputWrapper": "AdvancedDateRangePicker-module__inputWrapper___bFFNF", "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" };
73
+ var AdvancedDateRangePicker_module_default = { "root": "AdvancedDateRangePicker-module__root___udir8", "singleCalendar": "AdvancedDateRangePicker-module__singleCalendar___qy2-H", "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", "timezoneWrapper": "AdvancedDateRangePicker-module__timezoneWrapper___886Qm", "dateTimeWrapper": "AdvancedDateRangePicker-module__dateTimeWrapper___unDQJ", "headerGroup": "AdvancedDateRangePicker-module__headerGroup___J7mJB", "headerLabel": "AdvancedDateRangePicker-module__headerLabel___Yvhkr", "headerSeparator": "AdvancedDateRangePicker-module__headerSeparator___Vwx6P", "timezoneSelect": "AdvancedDateRangePicker-module__timezoneSelect___f4oln", "timezoneSelectContainer": "AdvancedDateRangePicker-module__timezoneSelectContainer___8SMc4", "timezoneSelectInput": "AdvancedDateRangePicker-module__timezoneSelectInput___ol0-7", "timezoneDisabledBadge": "AdvancedDateRangePicker-module__timezoneDisabledBadge___VBxOd", "inputWrapper": "AdvancedDateRangePicker-module__inputWrapper___bFFNF", "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" };
74
74
 
75
75
  // src/atom/AdvancedDateRangePicker/InternalCalendar.tsx
76
76
  var import_react = require("react");
@@ -167,7 +167,7 @@ var InternalCalendar = ({
167
167
  const [isMobile, setIsMobile] = (0, import_react.useState)(false);
168
168
  (0, import_react.useEffect)(() => {
169
169
  const checkMobile = () => {
170
- setIsMobile(window.innerWidth < 1024);
170
+ setIsMobile(window.innerWidth <= 768);
171
171
  };
172
172
  checkMobile();
173
173
  window.addEventListener("resize", checkMobile);
@@ -1407,6 +1407,7 @@ function AdvancedDateRangePicker({
1407
1407
  (value == null ? void 0 : value.endTime) ? formatTime(value.endTime) : "12:00 PM"
1408
1408
  );
1409
1409
  const [activePreset, setActivePreset] = (0, import_react4.useState)(defaultPreset);
1410
+ const isSingle = showSingleCalendar;
1410
1411
  const fromDateError = (0, import_react4.useMemo)(() => fromDateStr.length > 0 && (fromDateStr.length < 10 || !validateDateString(fromDateStr)), [fromDateStr]);
1411
1412
  const toDateError = (0, import_react4.useMemo)(() => toDateStr.length > 0 && (toDateStr.length < 10 || !validateDateString(toDateStr)), [toDateStr]);
1412
1413
  const fromTimeError = (0, import_react4.useMemo)(() => fromTimeStr.length > 0 && (fromTimeStr.length < 8 || !validateTimeString(fromTimeStr)), [fromTimeStr]);
@@ -1513,7 +1514,7 @@ function AdvancedDateRangePicker({
1513
1514
  timezone
1514
1515
  });
1515
1516
  }, [isReady, onChange, startDate, endDate, fromTimeStr, toTimeStr, timezone]);
1516
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: (0, import_clsx3.default)(AdvancedDateRangePicker_module_default.root, className), id, children: [
1517
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: (0, import_clsx3.default)(AdvancedDateRangePicker_module_default.root, className, { [AdvancedDateRangePicker_module_default.singleCalendar]: isSingle }), id, children: [
1517
1518
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: AdvancedDateRangePicker_module_default.inner, children: [
1518
1519
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("aside", { className: AdvancedDateRangePicker_module_default.left, children: PRESETS.map((p) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1519
1520
  "button",
@@ -1586,7 +1587,7 @@ function AdvancedDateRangePicker({
1586
1587
  disablePastDates,
1587
1588
  minDate,
1588
1589
  maxDate,
1589
- showSingleCalendar
1590
+ showSingleCalendar: isSingle
1590
1591
  }
1591
1592
  ) })
1592
1593
  ] })
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  AdvancedDateRangePicker,
3
3
  AdvancedDateRangePicker_default
4
- } from "../../chunk-772C454L.mjs";
4
+ } from "../../chunk-UC4NTBDH.mjs";
5
5
  import "../../chunk-GU5F7Z7I.mjs";
6
6
  import "../../chunk-MLCMZRUC.mjs";
7
- import "../../chunk-6XIT27XY.mjs";
7
+ import "../../chunk-FPH63V2R.mjs";
8
8
  import "../../chunk-ZTRM4HZJ.mjs";
9
9
  import "../../chunk-QKTMWS4J.mjs";
10
10
  import "../../chunk-AF2RKLH6.mjs";
@@ -156,7 +156,7 @@ var InternalCalendar = ({
156
156
  const [isMobile, setIsMobile] = (0, import_react.useState)(false);
157
157
  (0, import_react.useEffect)(() => {
158
158
  const checkMobile = () => {
159
- setIsMobile(window.innerWidth < 1024);
159
+ setIsMobile(window.innerWidth <= 768);
160
160
  };
161
161
  checkMobile();
162
162
  window.addEventListener("resize", checkMobile);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  InternalCalendar_default
3
- } from "../../chunk-6XIT27XY.mjs";
3
+ } from "../../chunk-FPH63V2R.mjs";
4
4
  import "../../chunk-ZTRM4HZJ.mjs";
5
5
  import "../../chunk-FWCSY2DS.mjs";
6
6
  export {
@@ -0,0 +1,448 @@
1
+ import {
2
+ Select_default
3
+ } from "./chunk-GU5F7Z7I.mjs";
4
+ import {
5
+ InternalCalendar_default
6
+ } from "./chunk-6XIT27XY.mjs";
7
+ import {
8
+ Button_default
9
+ } from "./chunk-AF2RKLH6.mjs";
10
+
11
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.tsx
12
+ import { memo, useCallback, useEffect, useMemo, useState } from "react";
13
+ import clsx from "clsx";
14
+ import dayjs from "dayjs";
15
+ import customParseFormat from "dayjs/plugin/customParseFormat.js";
16
+ import isSameOrBefore from "dayjs/plugin/isSameOrBefore.js";
17
+
18
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.module.scss
19
+ var AdvancedDateRangePicker_module_default = { "root": "AdvancedDateRangePicker-module__root___udir8", "singleCalendar": "AdvancedDateRangePicker-module__singleCalendar___qy2-H", "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", "timezoneWrapper": "AdvancedDateRangePicker-module__timezoneWrapper___886Qm", "dateTimeWrapper": "AdvancedDateRangePicker-module__dateTimeWrapper___unDQJ", "headerGroup": "AdvancedDateRangePicker-module__headerGroup___J7mJB", "headerLabel": "AdvancedDateRangePicker-module__headerLabel___Yvhkr", "headerSeparator": "AdvancedDateRangePicker-module__headerSeparator___Vwx6P", "timezoneSelect": "AdvancedDateRangePicker-module__timezoneSelect___f4oln", "timezoneSelectContainer": "AdvancedDateRangePicker-module__timezoneSelectContainer___8SMc4", "timezoneSelectInput": "AdvancedDateRangePicker-module__timezoneSelectInput___ol0-7", "timezoneDisabledBadge": "AdvancedDateRangePicker-module__timezoneDisabledBadge___VBxOd", "inputWrapper": "AdvancedDateRangePicker-module__inputWrapper___bFFNF", "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" };
20
+
21
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.tsx
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ dayjs.extend(customParseFormat);
24
+ dayjs.extend(isSameOrBefore);
25
+ var DEFAULT_TIME = { hour: "12", minute: "00", period: "PM" };
26
+ function getPresets() {
27
+ const today = /* @__PURE__ */ new Date();
28
+ today.setHours(0, 0, 0, 0);
29
+ return [
30
+ {
31
+ label: "Custom",
32
+ key: "custom",
33
+ getRange: () => [null, null]
34
+ },
35
+ {
36
+ label: "Yesterday",
37
+ key: "yesterday",
38
+ getRange: () => {
39
+ const d = new Date(today);
40
+ d.setDate(d.getDate() - 1);
41
+ return [d, d];
42
+ }
43
+ },
44
+ {
45
+ label: "Previous week",
46
+ key: "previous-week",
47
+ getRange: () => {
48
+ const dayOfWeek = today.getDay();
49
+ const start = new Date(today);
50
+ start.setDate(today.getDate() - dayOfWeek - 6);
51
+ const end = new Date(today);
52
+ return [start, end];
53
+ }
54
+ },
55
+ {
56
+ label: "This month",
57
+ key: "this-month",
58
+ getRange: () => {
59
+ const start = new Date(today.getFullYear(), today.getMonth(), 1);
60
+ const end = new Date(today.getFullYear(), today.getMonth() + 1, 0);
61
+ return [start, end];
62
+ }
63
+ },
64
+ {
65
+ label: "Previous month",
66
+ key: "previous-month",
67
+ getRange: () => {
68
+ const start = new Date(today.getFullYear(), today.getMonth() - 1, 1);
69
+ const end = new Date(today.getFullYear(), today.getMonth(), 0);
70
+ return [start, end];
71
+ }
72
+ },
73
+ {
74
+ label: "Previous quarter",
75
+ key: "previous-quarter",
76
+ getRange: () => {
77
+ const month = today.getMonth();
78
+ const quarter = Math.floor(month / 3);
79
+ const startMonth = (quarter - 1) * 3;
80
+ const start = new Date(today.getFullYear(), startMonth, 1);
81
+ const end = new Date(today.getFullYear(), startMonth + 3, 0);
82
+ return [start, end];
83
+ }
84
+ }
85
+ ];
86
+ }
87
+ function applyDateMask(v, prev) {
88
+ if (v.length < prev.length) return v;
89
+ const digits = v.replace(/[^\d]/g, "").slice(0, 8);
90
+ if (digits.length >= 2) {
91
+ const d = Number(digits.slice(0, 2));
92
+ if (d < 1 || d > 31) return prev;
93
+ }
94
+ if (digits.length >= 4) {
95
+ const m = Number(digits.slice(2, 4));
96
+ if (m < 1 || m > 12) return prev;
97
+ }
98
+ let result = "";
99
+ if (digits.length > 0) result += digits.slice(0, 2);
100
+ if (digits.length >= 2) result += "-";
101
+ if (digits.length > 2) result += digits.slice(2, 4);
102
+ if (digits.length >= 4) result += "-";
103
+ if (digits.length > 4) result += digits.slice(4, 8);
104
+ return result.slice(0, 10);
105
+ }
106
+ function applyTimeMask(v, prev) {
107
+ if (v.length < prev.length) return v;
108
+ const digits = v.replace(/[^\d]/g, "").slice(0, 4);
109
+ if (digits.length >= 2) {
110
+ const h = Number(digits.slice(0, 2));
111
+ if (h < 1 || h > 12) return prev;
112
+ }
113
+ if (digits.length >= 4) {
114
+ const m = Number(digits.slice(2, 4));
115
+ if (m > 59) return prev;
116
+ }
117
+ let result = "";
118
+ if (digits.length > 0) result += digits.slice(0, 2);
119
+ if (digits.length >= 2) result += ":";
120
+ if (digits.length > 2) result += digits.slice(2, 4);
121
+ if (v.toUpperCase().includes("A")) result += " AM";
122
+ else if (v.toUpperCase().includes("P")) result += " PM";
123
+ else if (digits.length === 4) result += " ";
124
+ return result.slice(0, 8);
125
+ }
126
+ function formatForDisplay(date) {
127
+ if (!date) return "";
128
+ return dayjs(date).format("DD-MM-YYYY");
129
+ }
130
+ function validateDateString(raw) {
131
+ const regex = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\d{4}$/;
132
+ if (!regex.test(raw)) return false;
133
+ const [d, m, y] = raw.split("-").map(Number);
134
+ const date = new Date(y, m - 1, d);
135
+ return date.getFullYear() === y && date.getMonth() === m - 1 && date.getDate() === d;
136
+ }
137
+ function validateTimeString(raw) {
138
+ const regex = /^(0[1-9]|1[0-2]):(0[0-9]|[1-5][0-9])\s(AM|PM)$/i;
139
+ return regex.test(raw);
140
+ }
141
+ function parseDateInput(raw) {
142
+ if (!validateDateString(raw)) return null;
143
+ return dayjs(raw, "DD-MM-YYYY", true).toDate();
144
+ }
145
+ function parseTimeInput(raw) {
146
+ if (!validateTimeString(raw)) return null;
147
+ const match = raw.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);
148
+ if (!match) return null;
149
+ return {
150
+ hour: match[1].padStart(2, "0"),
151
+ minute: match[2].padStart(2, "0"),
152
+ period: match[3].toUpperCase()
153
+ };
154
+ }
155
+ function formatTime(t) {
156
+ return `${t.hour}:${t.minute} ${t.period}`;
157
+ }
158
+ var DateTimeInputGroup = memo(function DateTimeInputGroup2({
159
+ label,
160
+ dateValue,
161
+ timeValue,
162
+ dateError,
163
+ timeError,
164
+ onDateChange,
165
+ onTimeChange
166
+ }) {
167
+ const [isDateFocused, setIsDateFocused] = useState(false);
168
+ const [isTimeFocused, setIsTimeFocused] = useState(false);
169
+ const showDateError = dateError && !isDateFocused;
170
+ const showTimeError = timeError && !isTimeFocused;
171
+ return /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.headerGroup, children: [
172
+ /* @__PURE__ */ jsx("span", { className: AdvancedDateRangePicker_module_default.headerLabel, children: label }),
173
+ /* @__PURE__ */ jsx("div", { className: AdvancedDateRangePicker_module_default.dateTimeColumn, children: /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.dateTimeGroup, children: [
174
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.inputWrapper, children: [
175
+ /* @__PURE__ */ jsx(
176
+ "input",
177
+ {
178
+ type: "text",
179
+ placeholder: "dd-mm-yyyy",
180
+ value: dateValue,
181
+ onFocus: () => setIsDateFocused(true),
182
+ onBlur: () => setIsDateFocused(false),
183
+ onChange: (e) => onDateChange(e.target.value),
184
+ className: clsx(AdvancedDateRangePicker_module_default.dateInput, { [AdvancedDateRangePicker_module_default.inputError]: showDateError })
185
+ }
186
+ ),
187
+ showDateError && /* @__PURE__ */ jsx("span", { className: AdvancedDateRangePicker_module_default.errorMessage, children: "Enter valid date" })
188
+ ] }),
189
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.inputWrapper, children: [
190
+ /* @__PURE__ */ jsx(
191
+ "input",
192
+ {
193
+ type: "text",
194
+ placeholder: "12:00 PM",
195
+ value: timeValue,
196
+ onFocus: () => setIsTimeFocused(true),
197
+ onBlur: () => setIsTimeFocused(false),
198
+ onChange: (e) => onTimeChange(e.target.value),
199
+ className: clsx(AdvancedDateRangePicker_module_default.timeInput, { [AdvancedDateRangePicker_module_default.inputError]: showTimeError })
200
+ }
201
+ ),
202
+ showTimeError && /* @__PURE__ */ jsx("span", { className: AdvancedDateRangePicker_module_default.errorMessage, children: "Enter valid time" })
203
+ ] })
204
+ ] }) })
205
+ ] });
206
+ });
207
+ function AdvancedDateRangePicker({
208
+ value,
209
+ onChange,
210
+ confirmLabel = "Done",
211
+ className = "",
212
+ disabled = false,
213
+ disablePastDates = false,
214
+ minDate = null,
215
+ maxDate = null,
216
+ showSingleCalendar = false,
217
+ id = "adv-drp",
218
+ defaultTimezone = "UTC",
219
+ isTimezoneDisabled = false,
220
+ timezoneOptions = [],
221
+ defaultPreset = "custom"
222
+ }) {
223
+ var _a, _b, _c;
224
+ const PRESETS = useMemo(() => getPresets(), []);
225
+ const [startDate, setStartDate] = useState((_a = value == null ? void 0 : value.startDate) != null ? _a : null);
226
+ const [endDate, setEndDate] = useState((_b = value == null ? void 0 : value.endDate) != null ? _b : null);
227
+ const [timezone, setTimezone] = useState((_c = value == null ? void 0 : value.timezone) != null ? _c : defaultTimezone);
228
+ const [fromDateStr, setFromDateStr] = useState(formatForDisplay(startDate));
229
+ const [toDateStr, setToDateStr] = useState(formatForDisplay(endDate));
230
+ const [fromTimeStr, setFromTimeStr] = useState(
231
+ (value == null ? void 0 : value.startTime) ? formatTime(value.startTime) : "12:00 PM"
232
+ );
233
+ const [toTimeStr, setToTimeStr] = useState(
234
+ (value == null ? void 0 : value.endTime) ? formatTime(value.endTime) : "12:00 PM"
235
+ );
236
+ const [activePreset, setActivePreset] = useState(defaultPreset);
237
+ const [isMobile, setIsMobile] = useState(false);
238
+ useEffect(() => {
239
+ const checkMobile = () => {
240
+ setIsMobile(window.innerWidth < 1024);
241
+ };
242
+ checkMobile();
243
+ window.addEventListener("resize", checkMobile);
244
+ return () => window.removeEventListener("resize", checkMobile);
245
+ }, []);
246
+ const isSingle = showSingleCalendar || isMobile;
247
+ const fromDateError = useMemo(() => fromDateStr.length > 0 && (fromDateStr.length < 10 || !validateDateString(fromDateStr)), [fromDateStr]);
248
+ const toDateError = useMemo(() => toDateStr.length > 0 && (toDateStr.length < 10 || !validateDateString(toDateStr)), [toDateStr]);
249
+ const fromTimeError = useMemo(() => fromTimeStr.length > 0 && (fromTimeStr.length < 8 || !validateTimeString(fromTimeStr)), [fromTimeStr]);
250
+ const toTimeError = useMemo(() => toTimeStr.length > 0 && (toTimeStr.length < 8 || !validateTimeString(toTimeStr)), [toTimeStr]);
251
+ const isReady = useMemo(() => {
252
+ return startDate !== null && endDate !== null && validateDateString(fromDateStr) && validateDateString(toDateStr) && validateTimeString(fromTimeStr) && validateTimeString(toTimeStr) && dayjs(startDate).isSameOrBefore(dayjs(endDate), "day");
253
+ }, [startDate, endDate, fromDateStr, toDateStr, fromTimeStr, toTimeStr]);
254
+ useEffect(() => {
255
+ var _a2, _b2, _c2;
256
+ if (value) {
257
+ setStartDate((_a2 = value.startDate) != null ? _a2 : null);
258
+ setEndDate((_b2 = value.endDate) != null ? _b2 : null);
259
+ setTimezone((_c2 = value.timezone) != null ? _c2 : defaultTimezone);
260
+ if (value.startTime) setFromTimeStr(formatTime(value.startTime));
261
+ if (value.endTime) setToTimeStr(formatTime(value.endTime));
262
+ }
263
+ }, [value, defaultTimezone]);
264
+ useEffect(() => {
265
+ setFromDateStr(formatForDisplay(startDate));
266
+ }, [startDate]);
267
+ useEffect(() => {
268
+ setToDateStr(formatForDisplay(endDate));
269
+ }, [endDate]);
270
+ const rangeValue = useMemo(() => [
271
+ startDate ? startDate.toISOString() : "",
272
+ endDate ? endDate.toISOString() : ""
273
+ ], [startDate, endDate]);
274
+ const handleRangeChange = useCallback(
275
+ (range) => {
276
+ const [s, e] = range;
277
+ if (s) {
278
+ const sDateByDayjs = dayjs(s, "D MMM, YYYY").toDate();
279
+ setStartDate(sDateByDayjs);
280
+ } else {
281
+ setStartDate(null);
282
+ }
283
+ if (e) {
284
+ const eDateByDayjs = dayjs(e, "D MMM, YYYY").toDate();
285
+ setEndDate(eDateByDayjs);
286
+ } else {
287
+ setEndDate(null);
288
+ }
289
+ setActivePreset("custom");
290
+ },
291
+ []
292
+ );
293
+ const handlePreset = useCallback(
294
+ (preset) => {
295
+ const [s, e] = preset.getRange();
296
+ setStartDate(s);
297
+ setEndDate(e);
298
+ setActivePreset(preset.key);
299
+ },
300
+ []
301
+ );
302
+ const handleFromDateChange = useCallback((v) => {
303
+ const masked = applyDateMask(v, fromDateStr);
304
+ setFromDateStr(masked);
305
+ setActivePreset("custom");
306
+ if (masked.length === 10) {
307
+ const parsed = parseDateInput(masked);
308
+ if (parsed) {
309
+ setStartDate(parsed);
310
+ if (endDate && dayjs(parsed).isAfter(dayjs(endDate), "day")) {
311
+ setEndDate(null);
312
+ }
313
+ }
314
+ }
315
+ }, [fromDateStr, endDate]);
316
+ const handleToDateChange = useCallback((v) => {
317
+ const masked = applyDateMask(v, toDateStr);
318
+ setToDateStr(masked);
319
+ setActivePreset("custom");
320
+ if (masked.length === 10) {
321
+ const parsed = parseDateInput(masked);
322
+ if (parsed) {
323
+ setEndDate(parsed);
324
+ if (startDate && dayjs(parsed).isBefore(dayjs(startDate), "day")) {
325
+ setStartDate(null);
326
+ }
327
+ }
328
+ }
329
+ }, [toDateStr, startDate]);
330
+ const handleFromTimeChange = useCallback((v) => {
331
+ const masked = applyTimeMask(v, fromTimeStr);
332
+ setFromTimeStr(masked);
333
+ setActivePreset("custom");
334
+ }, [fromTimeStr]);
335
+ const handleToTimeChange = useCallback((v) => {
336
+ const masked = applyTimeMask(v, toTimeStr);
337
+ setToTimeStr(masked);
338
+ setActivePreset("custom");
339
+ }, [toTimeStr]);
340
+ const handleDone = useCallback(() => {
341
+ var _a2, _b2;
342
+ if (!isReady) return;
343
+ const fromTime = (_a2 = parseTimeInput(fromTimeStr)) != null ? _a2 : DEFAULT_TIME;
344
+ const toTime = (_b2 = parseTimeInput(toTimeStr)) != null ? _b2 : DEFAULT_TIME;
345
+ onChange == null ? void 0 : onChange({
346
+ startDate,
347
+ endDate,
348
+ startTime: fromTime,
349
+ endTime: toTime,
350
+ timezone
351
+ });
352
+ }, [isReady, onChange, startDate, endDate, fromTimeStr, toTimeStr, timezone]);
353
+ return /* @__PURE__ */ jsxs("div", { className: clsx(AdvancedDateRangePicker_module_default.root, className, { [AdvancedDateRangePicker_module_default.singleCalendar]: isSingle }), id, children: [
354
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.inner, children: [
355
+ /* @__PURE__ */ jsx("aside", { className: AdvancedDateRangePicker_module_default.left, children: PRESETS.map((p) => /* @__PURE__ */ jsx(
356
+ "button",
357
+ {
358
+ type: "button",
359
+ onClick: () => handlePreset(p),
360
+ className: clsx(AdvancedDateRangePicker_module_default.sidebarItem, {
361
+ [AdvancedDateRangePicker_module_default.sidebarItemActive]: activePreset === p.key
362
+ }),
363
+ children: p.label
364
+ },
365
+ p.key
366
+ )) }),
367
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.main, children: [
368
+ /* @__PURE__ */ jsxs("header", { className: AdvancedDateRangePicker_module_default.header, children: [
369
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.timezoneWrapper, children: [
370
+ /* @__PURE__ */ jsx("span", { className: AdvancedDateRangePicker_module_default.headerLabel, children: "Timezone" }),
371
+ isTimezoneDisabled ? (
372
+ /* Disabled state: plain text badge instead of empty dropdown */
373
+ /* @__PURE__ */ jsx("div", { className: AdvancedDateRangePicker_module_default.timezoneDisabledBadge, children: timezone })
374
+ ) : /* @__PURE__ */ jsx(
375
+ Select_default,
376
+ {
377
+ value: timezone,
378
+ onChange: (val) => {
379
+ if (val) setTimezone(String(val));
380
+ },
381
+ options: timezoneOptions,
382
+ size: "small",
383
+ allowClear: false,
384
+ enableSearch: false,
385
+ wrapperClassName: AdvancedDateRangePicker_module_default.timezoneSelectContainer,
386
+ inputClassName: AdvancedDateRangePicker_module_default.timezoneSelectInput
387
+ }
388
+ )
389
+ ] }),
390
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.dateTimeWrapper, children: [
391
+ /* @__PURE__ */ jsx(
392
+ DateTimeInputGroup,
393
+ {
394
+ label: "From",
395
+ dateValue: fromDateStr,
396
+ timeValue: fromTimeStr,
397
+ dateError: fromDateError,
398
+ timeError: fromTimeError,
399
+ onDateChange: handleFromDateChange,
400
+ onTimeChange: handleFromTimeChange
401
+ }
402
+ ),
403
+ /* @__PURE__ */ jsx(
404
+ DateTimeInputGroup,
405
+ {
406
+ label: "To",
407
+ dateValue: toDateStr,
408
+ timeValue: toTimeStr,
409
+ dateError: toDateError,
410
+ timeError: toTimeError,
411
+ onDateChange: handleToDateChange,
412
+ onTimeChange: handleToTimeChange
413
+ }
414
+ )
415
+ ] })
416
+ ] }),
417
+ /* @__PURE__ */ jsx("div", { className: AdvancedDateRangePicker_module_default.body, children: /* @__PURE__ */ jsx(
418
+ InternalCalendar_default,
419
+ {
420
+ id: `${id}-calendar`,
421
+ dateRange: rangeValue,
422
+ onChange: handleRangeChange,
423
+ disablePastDates,
424
+ minDate,
425
+ maxDate,
426
+ showSingleCalendar: isSingle
427
+ }
428
+ ) })
429
+ ] })
430
+ ] }),
431
+ /* @__PURE__ */ jsx("footer", { className: AdvancedDateRangePicker_module_default.footer, children: /* @__PURE__ */ jsx(
432
+ Button_default,
433
+ {
434
+ onClick: handleDone,
435
+ disabled: disabled || !isReady,
436
+ shape: "round",
437
+ children: confirmLabel
438
+ }
439
+ ) })
440
+ ] });
441
+ }
442
+ AdvancedDateRangePicker.displayName = "AdvancedDateRangePicker";
443
+ var AdvancedDateRangePicker_default = AdvancedDateRangePicker;
444
+
445
+ export {
446
+ AdvancedDateRangePicker,
447
+ AdvancedDateRangePicker_default
448
+ };