@theengineerguy/chronos-picker 1.0.3 → 1.0.5
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.
- package/README.md +13 -13
- package/dist/index.esm.js +272 -256
- package/dist/index.js +1 -1
- package/dist/src/components/Calendar.d.ts +2 -0
- package/dist/src/components/Calendar.d.ts.map +1 -1
- package/dist/src/components/DateTimePicker.d.ts.map +1 -1
- package/dist/src/types.d.ts +9 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/calendar.d.ts +5 -1
- package/dist/src/utils/calendar.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -36,14 +36,14 @@ import { DateTimePicker, DateTimeValue } from '@chronos/picker';
|
|
|
36
36
|
|
|
37
37
|
function App() {
|
|
38
38
|
const [value, setValue] = useState<DateTimeValue | null>(null);
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
const handleChange = (newValue: DateTimeValue) => {
|
|
41
41
|
setValue(newValue);
|
|
42
42
|
console.log('ISO:', newValue.iso);
|
|
43
43
|
console.log('Formatted:', newValue.formatted);
|
|
44
44
|
console.log('Timestamp:', newValue.timestamp);
|
|
45
45
|
};
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
return (
|
|
48
48
|
<DateTimePicker
|
|
49
49
|
value={value?.dateTime}
|
|
@@ -163,18 +163,18 @@ function BasicExample() {
|
|
|
163
163
|
```tsx
|
|
164
164
|
function ControlledExample() {
|
|
165
165
|
const [selectedDate, setSelectedDate] = useState<DateTime | null>(null);
|
|
166
|
-
|
|
166
|
+
|
|
167
167
|
return (
|
|
168
168
|
<div>
|
|
169
169
|
<DateTimePicker
|
|
170
170
|
value={selectedDate}
|
|
171
171
|
onChange={(value) => setSelectedDate(value.dateTime)}
|
|
172
172
|
/>
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
<button onClick={() => setSelectedDate(DateTime.now())}>
|
|
175
175
|
Set to Now
|
|
176
176
|
</button>
|
|
177
|
-
|
|
177
|
+
|
|
178
178
|
<button onClick={() => setSelectedDate(null)}>
|
|
179
179
|
Clear
|
|
180
180
|
</button>
|
|
@@ -201,7 +201,7 @@ function ControlledExample() {
|
|
|
201
201
|
function MultiTimezoneExample() {
|
|
202
202
|
const [indiaTime, setIndiaTime] = useState<DateTimeValue | null>(null);
|
|
203
203
|
const [nyTime, setNYTime] = useState<DateTimeValue | null>(null);
|
|
204
|
-
|
|
204
|
+
|
|
205
205
|
const handleIndiaChange = (value: DateTimeValue) => {
|
|
206
206
|
setIndiaTime(value);
|
|
207
207
|
// Convert to New York time
|
|
@@ -213,7 +213,7 @@ function MultiTimezoneExample() {
|
|
|
213
213
|
iso: converted.toISO() || '',
|
|
214
214
|
});
|
|
215
215
|
};
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
return (
|
|
218
218
|
<div>
|
|
219
219
|
<div>
|
|
@@ -224,7 +224,7 @@ function MultiTimezoneExample() {
|
|
|
224
224
|
onChange={handleIndiaChange}
|
|
225
225
|
/>
|
|
226
226
|
</div>
|
|
227
|
-
|
|
227
|
+
|
|
228
228
|
<div>
|
|
229
229
|
<label>New York Time (EST/EDT)</label>
|
|
230
230
|
<DateTimePicker
|
|
@@ -309,22 +309,22 @@ import { DateTime } from 'luxon';
|
|
|
309
309
|
function AdvancedExample() {
|
|
310
310
|
const handleChange = (value: DateTimeValue) => {
|
|
311
311
|
const dt = value.dateTime;
|
|
312
|
-
|
|
312
|
+
|
|
313
313
|
// Access Luxon DateTime methods
|
|
314
314
|
console.log('Day of week:', dt.weekdayLong);
|
|
315
315
|
console.log('Week number:', dt.weekNumber);
|
|
316
316
|
console.log('Is DST:', dt.isInDST);
|
|
317
|
-
|
|
317
|
+
|
|
318
318
|
// Format in different ways
|
|
319
319
|
console.log('ISO:', dt.toISO());
|
|
320
320
|
console.log('SQL:', dt.toSQL());
|
|
321
321
|
console.log('Relative:', dt.toRelative());
|
|
322
|
-
|
|
322
|
+
|
|
323
323
|
// Convert to other timezones
|
|
324
324
|
const tokyo = dt.setZone('Asia/Tokyo');
|
|
325
325
|
console.log('Tokyo time:', tokyo.toFormat('HH:mm'));
|
|
326
326
|
};
|
|
327
|
-
|
|
327
|
+
|
|
328
328
|
return <DateTimePicker onChange={handleChange} />;
|
|
329
329
|
}
|
|
330
330
|
```
|
|
@@ -383,4 +383,4 @@ Contributions are welcome! Please feel free to submit a Pull Request.
|
|
|
383
383
|
|
|
384
384
|
---
|
|
385
385
|
|
|
386
|
-
Made with ❤️ by
|
|
386
|
+
Made with ❤️ by Debmalya, for developers
|
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as h, jsx as o } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo as
|
|
3
|
-
import { DateTime as
|
|
4
|
-
const
|
|
2
|
+
import { useMemo as G, useState as w, useEffect as K, useRef as Q, useCallback as j } from "react";
|
|
3
|
+
import { DateTime as O } from "luxon";
|
|
4
|
+
const me = "Asia/Kolkata", X = [
|
|
5
5
|
{ value: "Asia/Kolkata", label: "India (IST)" },
|
|
6
6
|
{ value: "America/New_York", label: "Eastern Time (ET)" },
|
|
7
7
|
{ value: "America/Chicago", label: "Central Time (CT)" },
|
|
@@ -15,103 +15,113 @@ const he = "Asia/Kolkata", H = [
|
|
|
15
15
|
{ value: "Australia/Sydney", label: "Sydney (AEDT)" },
|
|
16
16
|
{ value: "UTC", label: "UTC" }
|
|
17
17
|
];
|
|
18
|
-
function
|
|
19
|
-
return
|
|
18
|
+
function R(e, r) {
|
|
19
|
+
return O.isDateTime(e) ? e.setZone(r) : typeof e == "string" ? O.fromISO(e, { zone: r }) : O.fromJSDate(e, { zone: r });
|
|
20
20
|
}
|
|
21
|
-
function
|
|
22
|
-
return
|
|
21
|
+
function J(e) {
|
|
22
|
+
return O.now().setZone(e);
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
const
|
|
26
|
-
return `UTC${
|
|
24
|
+
function F(e) {
|
|
25
|
+
const a = O.now().setZone(e).offset, i = Math.floor(Math.abs(a) / 60), c = Math.abs(a) % 60;
|
|
26
|
+
return `UTC${a >= 0 ? "+" : "-"}${i}${c > 0 ? `:${c.toString().padStart(2, "0")}` : ""}`;
|
|
27
27
|
}
|
|
28
|
-
function
|
|
29
|
-
const
|
|
30
|
-
{ year: e, month:
|
|
31
|
-
{ zone:
|
|
32
|
-
),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
28
|
+
function ue(e, r, a, i, c, N, d, p, k) {
|
|
29
|
+
const b = O.fromObject(
|
|
30
|
+
{ year: e, month: r, day: 1 },
|
|
31
|
+
{ zone: a }
|
|
32
|
+
), E = b.startOf("week"), z = b.endOf("month").endOf("week"), I = O.now().setZone(a).startOf("day"), P = d != null && p != null, x = d == null ? void 0 : d.startOf("day"), D = p == null ? void 0 : p.endOf("day"), t = /* @__PURE__ */ new Map();
|
|
33
|
+
k && k.forEach((M) => {
|
|
34
|
+
let g;
|
|
35
|
+
O.isDateTime(M.date) ? g = M.date.setZone(a) : typeof M.date == "string" ? g = O.fromISO(M.date, { zone: a }) : g = O.fromJSDate(M.date, { zone: a }), t.set(g.toISODate() || "", { name: M.name, type: M.type || "national" });
|
|
36
|
+
});
|
|
37
|
+
const u = [];
|
|
38
|
+
let $ = [], l = E;
|
|
39
|
+
for (; l <= z; ) {
|
|
40
|
+
const M = l.month === r, g = l.hasSame(I, "day"), n = l.startOf("day"), f = l.toISODate() || "";
|
|
41
|
+
let s = !1, C = !1, T = !1, L = !1;
|
|
42
|
+
P && x && D ? (T = n.hasSame(x, "day"), L = n.hasSame(D, "day"), C = n >= x && n <= D || T || L, s = T || L) : i && (s = l.hasSame(i, "day"));
|
|
43
|
+
let v = !1;
|
|
44
|
+
c && l < c.startOf("day") && (v = !0), N && l > N.endOf("day") && (v = !0);
|
|
45
|
+
const B = t.get(f);
|
|
46
|
+
$.push({
|
|
40
47
|
date: l,
|
|
41
|
-
isCurrentMonth:
|
|
42
|
-
isToday:
|
|
43
|
-
isSelected:
|
|
44
|
-
isDisabled:
|
|
45
|
-
isInRange:
|
|
46
|
-
isRangeStart:
|
|
47
|
-
isRangeEnd:
|
|
48
|
-
|
|
48
|
+
isCurrentMonth: M,
|
|
49
|
+
isToday: g,
|
|
50
|
+
isSelected: s,
|
|
51
|
+
isDisabled: v,
|
|
52
|
+
isInRange: C,
|
|
53
|
+
isRangeStart: T,
|
|
54
|
+
isRangeEnd: L,
|
|
55
|
+
holiday: B ? { date: l, ...B } : void 0
|
|
56
|
+
}), $.length === 7 && (u.push($), $ = []), l = l.plus({ days: 1 });
|
|
49
57
|
}
|
|
50
|
-
return
|
|
58
|
+
return u;
|
|
51
59
|
}
|
|
52
|
-
function
|
|
53
|
-
const e =
|
|
54
|
-
for (let
|
|
55
|
-
const
|
|
56
|
-
|
|
60
|
+
function fe() {
|
|
61
|
+
const e = O.now().startOf("week"), r = [];
|
|
62
|
+
for (let a = 0; a < 7; a++) {
|
|
63
|
+
const i = e.plus({ days: a });
|
|
64
|
+
r.push(i.toFormat("ccc"));
|
|
57
65
|
}
|
|
58
|
-
return
|
|
66
|
+
return r;
|
|
59
67
|
}
|
|
60
|
-
function
|
|
68
|
+
function pe() {
|
|
61
69
|
const e = [];
|
|
62
|
-
for (let
|
|
63
|
-
const
|
|
64
|
-
e.push(
|
|
70
|
+
for (let r = 1; r <= 12; r++) {
|
|
71
|
+
const a = O.fromObject({ month: r });
|
|
72
|
+
e.push(a.toFormat("MMMM"));
|
|
65
73
|
}
|
|
66
74
|
return e;
|
|
67
75
|
}
|
|
68
|
-
const
|
|
76
|
+
const ye = ({
|
|
69
77
|
viewDate: e,
|
|
70
|
-
selectedDate:
|
|
71
|
-
onDateSelect:
|
|
72
|
-
onViewDateChange:
|
|
78
|
+
selectedDate: r,
|
|
79
|
+
onDateSelect: a,
|
|
80
|
+
onViewDateChange: i,
|
|
73
81
|
timezone: c,
|
|
74
|
-
minDate:
|
|
82
|
+
minDate: N,
|
|
75
83
|
maxDate: d,
|
|
76
|
-
selectedStart:
|
|
77
|
-
selectedEnd:
|
|
78
|
-
onRangeSelect:
|
|
84
|
+
selectedStart: p,
|
|
85
|
+
selectedEnd: k,
|
|
86
|
+
onRangeSelect: b,
|
|
87
|
+
holidays: E
|
|
79
88
|
}) => {
|
|
80
|
-
const
|
|
89
|
+
const W = b != null, z = G(() => ue(
|
|
81
90
|
e.year,
|
|
82
91
|
e.month,
|
|
83
92
|
c,
|
|
84
|
-
|
|
85
|
-
|
|
93
|
+
r ?? void 0,
|
|
94
|
+
N,
|
|
86
95
|
d,
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
96
|
+
p ?? void 0,
|
|
97
|
+
k ?? void 0,
|
|
98
|
+
E
|
|
99
|
+
), [e, r, c, N, d, p, k, E]), I = G(() => fe(), []), P = G(() => pe(), []), x = () => {
|
|
100
|
+
i(e.minus({ months: 1 }));
|
|
101
|
+
}, D = () => {
|
|
102
|
+
i(e.plus({ months: 1 }));
|
|
103
|
+
}, t = (n) => {
|
|
104
|
+
const f = parseInt(n.target.value, 10);
|
|
105
|
+
i(e.set({ month: f }));
|
|
106
|
+
}, u = (n) => {
|
|
107
|
+
const f = parseInt(n.target.value, 10);
|
|
108
|
+
i(e.set({ year: f }));
|
|
109
|
+
}, $ = (n, f) => {
|
|
110
|
+
if (!f)
|
|
111
|
+
if (W && b) {
|
|
112
|
+
const s = n.startOf("day");
|
|
113
|
+
if (p == null)
|
|
114
|
+
b(n, n);
|
|
115
|
+
else if (k != null && p.hasSame(k, "day")) {
|
|
116
|
+
const C = p.startOf("day");
|
|
117
|
+
s < C ? b(n, p) : b(p, n);
|
|
108
118
|
} else
|
|
109
|
-
|
|
119
|
+
b(n, n);
|
|
110
120
|
} else
|
|
111
|
-
|
|
112
|
-
},
|
|
113
|
-
(
|
|
114
|
-
},
|
|
121
|
+
a(n);
|
|
122
|
+
}, l = (n, f, s) => {
|
|
123
|
+
(n.key === "Enter" || n.key === " ") && (n.preventDefault(), $(f, s));
|
|
124
|
+
}, M = e.year, g = Array.from({ length: 21 }, (n, f) => M - 10 + f);
|
|
115
125
|
return /* @__PURE__ */ h("div", { className: "chronos-calendar", role: "region", "aria-label": "Calendar", children: [
|
|
116
126
|
/* @__PURE__ */ h("div", { className: "chronos-calendar-header", children: [
|
|
117
127
|
/* @__PURE__ */ o(
|
|
@@ -119,7 +129,7 @@ const pe = ({
|
|
|
119
129
|
{
|
|
120
130
|
type: "button",
|
|
121
131
|
className: "chronos-nav-button",
|
|
122
|
-
onClick:
|
|
132
|
+
onClick: x,
|
|
123
133
|
"aria-label": "Previous month",
|
|
124
134
|
children: "‹"
|
|
125
135
|
}
|
|
@@ -130,9 +140,9 @@ const pe = ({
|
|
|
130
140
|
{
|
|
131
141
|
className: "chronos-month-select",
|
|
132
142
|
value: e.month,
|
|
133
|
-
onChange:
|
|
143
|
+
onChange: t,
|
|
134
144
|
"aria-label": "Select month",
|
|
135
|
-
children:
|
|
145
|
+
children: P.map((n, f) => /* @__PURE__ */ o("option", { value: f + 1, children: n }, f))
|
|
136
146
|
}
|
|
137
147
|
),
|
|
138
148
|
/* @__PURE__ */ o(
|
|
@@ -140,9 +150,9 @@ const pe = ({
|
|
|
140
150
|
{
|
|
141
151
|
className: "chronos-year-select",
|
|
142
152
|
value: e.year,
|
|
143
|
-
onChange:
|
|
153
|
+
onChange: u,
|
|
144
154
|
"aria-label": "Select year",
|
|
145
|
-
children: g.map((
|
|
155
|
+
children: g.map((n) => /* @__PURE__ */ o("option", { value: n, children: n }, n))
|
|
146
156
|
}
|
|
147
157
|
)
|
|
148
158
|
] }),
|
|
@@ -151,54 +161,58 @@ const pe = ({
|
|
|
151
161
|
{
|
|
152
162
|
type: "button",
|
|
153
163
|
className: "chronos-nav-button",
|
|
154
|
-
onClick:
|
|
164
|
+
onClick: D,
|
|
155
165
|
"aria-label": "Next month",
|
|
156
166
|
children: "›"
|
|
157
167
|
}
|
|
158
168
|
)
|
|
159
169
|
] }),
|
|
160
170
|
/* @__PURE__ */ h("div", { className: "chronos-calendar-grid", children: [
|
|
161
|
-
/* @__PURE__ */ o("div", { className: "chronos-weekday-row", children:
|
|
162
|
-
|
|
171
|
+
/* @__PURE__ */ o("div", { className: "chronos-weekday-row", children: I.map((n) => /* @__PURE__ */ o("div", { className: "chronos-weekday", children: n }, n)) }),
|
|
172
|
+
z.map((n, f) => /* @__PURE__ */ o("div", { className: "chronos-week-row", children: n.map((s, C) => /* @__PURE__ */ h(
|
|
163
173
|
"button",
|
|
164
174
|
{
|
|
165
175
|
type: "button",
|
|
166
|
-
className: `chronos-day ${
|
|
167
|
-
onClick: () =>
|
|
168
|
-
onKeyDown: (
|
|
169
|
-
disabled:
|
|
170
|
-
"aria-label":
|
|
171
|
-
"aria-selected":
|
|
172
|
-
"aria-current":
|
|
173
|
-
|
|
176
|
+
className: `chronos-day ${s.isSelected ? "selected" : ""} ${s.isToday ? "today" : ""} ${s.isCurrentMonth ? "" : "other-month"} ${s.isDisabled ? "disabled" : ""} ${s.isInRange ? "in-range" : ""} ${s.isRangeStart ? "range-start" : ""} ${s.isRangeEnd ? "range-end" : ""} ${s.holiday ? `holiday ${s.holiday.type}` : ""}`,
|
|
177
|
+
onClick: () => $(s.date, s.isDisabled),
|
|
178
|
+
onKeyDown: (T) => l(T, s.date, s.isDisabled),
|
|
179
|
+
disabled: s.isDisabled,
|
|
180
|
+
"aria-label": `${s.date.toFormat("MMMM d, yyyy")}${s.holiday ? `, ${s.holiday.name}` : ""}`,
|
|
181
|
+
"aria-selected": s.isSelected,
|
|
182
|
+
"aria-current": s.isToday ? "date" : void 0,
|
|
183
|
+
title: s.holiday ? s.holiday.name : void 0,
|
|
184
|
+
children: [
|
|
185
|
+
s.date.day,
|
|
186
|
+
s.holiday && /* @__PURE__ */ o("span", { className: "chronos-holiday-dot" })
|
|
187
|
+
]
|
|
174
188
|
},
|
|
175
|
-
|
|
176
|
-
)) },
|
|
189
|
+
C
|
|
190
|
+
)) }, f))
|
|
177
191
|
] })
|
|
178
192
|
] });
|
|
179
|
-
},
|
|
193
|
+
}, Me = ({
|
|
180
194
|
value: e,
|
|
181
|
-
onChange:
|
|
182
|
-
use24Hour:
|
|
195
|
+
onChange: r,
|
|
196
|
+
use24Hour: a
|
|
183
197
|
}) => {
|
|
184
|
-
const [
|
|
198
|
+
const [i, c] = w((e == null ? void 0 : e.hour) ?? 12), [N, d] = w((e == null ? void 0 : e.minute) ?? 0), [p, k] = w(
|
|
185
199
|
e && e.hour >= 12 ? "PM" : "AM"
|
|
186
200
|
);
|
|
187
|
-
|
|
188
|
-
e && (c(e.hour), d(e.minute),
|
|
201
|
+
K(() => {
|
|
202
|
+
e && (c(e.hour), d(e.minute), k(e.hour >= 12 ? "PM" : "AM"));
|
|
189
203
|
}, [e]);
|
|
190
|
-
const
|
|
191
|
-
c(
|
|
192
|
-
let
|
|
193
|
-
|
|
194
|
-
},
|
|
195
|
-
d(
|
|
196
|
-
},
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
let
|
|
200
|
-
|
|
201
|
-
}, z =
|
|
204
|
+
const b = (t) => {
|
|
205
|
+
c(t);
|
|
206
|
+
let u = t;
|
|
207
|
+
a || (p === "PM" && t !== 12 ? u = t + 12 : p === "AM" && t === 12 && (u = 0)), r(u, N);
|
|
208
|
+
}, E = (t) => {
|
|
209
|
+
d(t), r(i, t);
|
|
210
|
+
}, W = () => {
|
|
211
|
+
const t = p === "AM" ? "PM" : "AM";
|
|
212
|
+
k(t);
|
|
213
|
+
let u = i;
|
|
214
|
+
t === "PM" && i !== 12 ? u = i + 12 : t === "AM" && i === 12 ? u = 0 : t === "AM" && i > 12 && (u = i - 12), r(u, N);
|
|
215
|
+
}, z = a ? i : i % 12 || 12, I = a ? 23 : 12, P = a ? 0 : 1, x = Array.from({ length: I - P + 1 }, (t, u) => P + u), D = Array.from({ length: 60 }, (t, u) => u);
|
|
202
216
|
return /* @__PURE__ */ h("div", { className: "chronos-time-picker", role: "group", "aria-label": "Time picker", children: [
|
|
203
217
|
/* @__PURE__ */ h("div", { className: "chronos-time-header", children: [
|
|
204
218
|
/* @__PURE__ */ h(
|
|
@@ -227,9 +241,9 @@ const pe = ({
|
|
|
227
241
|
id: "chronos-hour-select",
|
|
228
242
|
className: "chronos-time-select",
|
|
229
243
|
value: z,
|
|
230
|
-
onChange: (
|
|
244
|
+
onChange: (t) => b(parseInt(t.target.value, 10)),
|
|
231
245
|
"aria-label": "Select hour",
|
|
232
|
-
children:
|
|
246
|
+
children: x.map((t) => /* @__PURE__ */ o("option", { value: t, children: t.toString().padStart(2, "0") }, t))
|
|
233
247
|
}
|
|
234
248
|
)
|
|
235
249
|
] }),
|
|
@@ -241,33 +255,33 @@ const pe = ({
|
|
|
241
255
|
{
|
|
242
256
|
id: "chronos-minute-select",
|
|
243
257
|
className: "chronos-time-select",
|
|
244
|
-
value:
|
|
245
|
-
onChange: (
|
|
258
|
+
value: N,
|
|
259
|
+
onChange: (t) => E(parseInt(t.target.value, 10)),
|
|
246
260
|
"aria-label": "Select minute",
|
|
247
|
-
children:
|
|
261
|
+
children: D.map((t) => /* @__PURE__ */ o("option", { value: t, children: t.toString().padStart(2, "0") }, t))
|
|
248
262
|
}
|
|
249
263
|
)
|
|
250
264
|
] }),
|
|
251
|
-
!
|
|
265
|
+
!a && /* @__PURE__ */ o(
|
|
252
266
|
"button",
|
|
253
267
|
{
|
|
254
268
|
type: "button",
|
|
255
269
|
className: "chronos-period-toggle",
|
|
256
|
-
onClick:
|
|
257
|
-
"aria-label": `Switch to ${
|
|
258
|
-
children:
|
|
270
|
+
onClick: W,
|
|
271
|
+
"aria-label": `Switch to ${p === "AM" ? "PM" : "AM"}`,
|
|
272
|
+
children: p
|
|
259
273
|
}
|
|
260
274
|
)
|
|
261
275
|
] })
|
|
262
276
|
] });
|
|
263
|
-
},
|
|
277
|
+
}, be = ({
|
|
264
278
|
value: e,
|
|
265
|
-
onChange:
|
|
279
|
+
onChange: r
|
|
266
280
|
}) => {
|
|
267
|
-
const [
|
|
281
|
+
const [a, i] = w(!1), c = X.find((d) => d.value === e) || {
|
|
268
282
|
label: e
|
|
269
|
-
},
|
|
270
|
-
|
|
283
|
+
}, N = (d) => {
|
|
284
|
+
r(d), i(!1);
|
|
271
285
|
};
|
|
272
286
|
return /* @__PURE__ */ h("div", { className: "chronos-timezone-selector", children: [
|
|
273
287
|
/* @__PURE__ */ h("div", { className: "chronos-timezone-header", children: [
|
|
@@ -294,16 +308,16 @@ const pe = ({
|
|
|
294
308
|
{
|
|
295
309
|
type: "button",
|
|
296
310
|
className: "chronos-timezone-button",
|
|
297
|
-
onClick: () =>
|
|
298
|
-
"aria-expanded":
|
|
311
|
+
onClick: () => i(!a),
|
|
312
|
+
"aria-expanded": a,
|
|
299
313
|
"aria-label": "Select timezone",
|
|
300
314
|
children: [
|
|
301
315
|
/* @__PURE__ */ o("span", { className: "chronos-timezone-label", children: c.label }),
|
|
302
|
-
/* @__PURE__ */ o("span", { className: "chronos-timezone-offset", children:
|
|
316
|
+
/* @__PURE__ */ o("span", { className: "chronos-timezone-offset", children: F(e) }),
|
|
303
317
|
/* @__PURE__ */ o(
|
|
304
318
|
"svg",
|
|
305
319
|
{
|
|
306
|
-
className: `chronos-chevron ${
|
|
320
|
+
className: `chronos-chevron ${a ? "expanded" : ""}`,
|
|
307
321
|
xmlns: "http://www.w3.org/2000/svg",
|
|
308
322
|
viewBox: "0 0 24 24",
|
|
309
323
|
fill: "none",
|
|
@@ -315,148 +329,149 @@ const pe = ({
|
|
|
315
329
|
]
|
|
316
330
|
}
|
|
317
331
|
),
|
|
318
|
-
|
|
332
|
+
a && /* @__PURE__ */ o("div", { className: "chronos-timezone-list", role: "listbox", children: X.map((d) => /* @__PURE__ */ h(
|
|
319
333
|
"button",
|
|
320
334
|
{
|
|
321
335
|
type: "button",
|
|
322
336
|
className: `chronos-timezone-option ${d.value === e ? "selected" : ""}`,
|
|
323
|
-
onClick: () =>
|
|
337
|
+
onClick: () => N(d.value),
|
|
324
338
|
role: "option",
|
|
325
339
|
"aria-selected": d.value === e,
|
|
326
340
|
children: [
|
|
327
341
|
/* @__PURE__ */ o("span", { className: "chronos-timezone-option-label", children: d.label }),
|
|
328
|
-
/* @__PURE__ */ o("span", { className: "chronos-timezone-option-offset", children:
|
|
342
|
+
/* @__PURE__ */ o("span", { className: "chronos-timezone-option-offset", children: F(d.value) })
|
|
329
343
|
]
|
|
330
344
|
},
|
|
331
345
|
d.value
|
|
332
346
|
)) })
|
|
333
347
|
] });
|
|
334
348
|
};
|
|
335
|
-
function
|
|
349
|
+
function V(e, r, a) {
|
|
336
350
|
return {
|
|
337
351
|
iso: e.toISO() || "",
|
|
338
|
-
formatted: e.toFormat(`${
|
|
352
|
+
formatted: e.toFormat(`${r} ${a}`),
|
|
339
353
|
timestamp: e.toMillis(),
|
|
340
354
|
dateTime: e
|
|
341
355
|
};
|
|
342
356
|
}
|
|
343
|
-
const
|
|
357
|
+
const Te = ({
|
|
344
358
|
value: e,
|
|
345
|
-
onChange:
|
|
346
|
-
timezone:
|
|
347
|
-
dateFormat:
|
|
359
|
+
onChange: r,
|
|
360
|
+
timezone: a = me,
|
|
361
|
+
dateFormat: i = "DD",
|
|
348
362
|
timeFormat: c = "HH:mm",
|
|
349
|
-
minDate:
|
|
363
|
+
minDate: N,
|
|
350
364
|
maxDate: d,
|
|
351
|
-
placeholder:
|
|
352
|
-
disabled:
|
|
353
|
-
showTime:
|
|
354
|
-
use24Hour:
|
|
355
|
-
className:
|
|
365
|
+
placeholder: p = "Select date and time",
|
|
366
|
+
disabled: k = !1,
|
|
367
|
+
showTime: b = !0,
|
|
368
|
+
use24Hour: E = !0,
|
|
369
|
+
className: W = "",
|
|
356
370
|
ariaLabel: z = "Date and time picker",
|
|
357
|
-
showTimezoneSelector:
|
|
358
|
-
theme:
|
|
359
|
-
orientation:
|
|
360
|
-
selectionMode:
|
|
361
|
-
rangeValue:
|
|
362
|
-
onRangeChange:
|
|
371
|
+
showTimezoneSelector: I = !1,
|
|
372
|
+
theme: P = "light",
|
|
373
|
+
orientation: x = "portrait",
|
|
374
|
+
selectionMode: D = "single",
|
|
375
|
+
rangeValue: t,
|
|
376
|
+
onRangeChange: u,
|
|
377
|
+
holidays: $
|
|
363
378
|
}) => {
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
!
|
|
367
|
-
}, [e,
|
|
368
|
-
|
|
369
|
-
}, [
|
|
370
|
-
const
|
|
371
|
-
|
|
379
|
+
const l = D === "range", [M, g] = w(!1), [n, f] = w(() => !l && e ? R(e, a) : null), [s, C] = w(() => l && (t != null && t.start) ? R(t.start, a) : null), [T, L] = w(() => l && (t != null && t.end) ? R(t.end, a) : null), [v, B] = w(a), [ee, _] = w(() => n || s || T || J(a)), U = Q(null), q = Q(null);
|
|
380
|
+
K(() => {
|
|
381
|
+
!l && e && f(R(e, v));
|
|
382
|
+
}, [e, v, l]), K(() => {
|
|
383
|
+
l && (t == null ? void 0 : t.start) != null && (t == null ? void 0 : t.end) != null && (C(R(t.start, v)), L(R(t.end, v)));
|
|
384
|
+
}, [l, t, v]), K(() => {
|
|
385
|
+
const y = (m) => {
|
|
386
|
+
U.current && !U.current.contains(m.target) && g(!1);
|
|
372
387
|
};
|
|
373
|
-
if (
|
|
374
|
-
return document.addEventListener("mousedown",
|
|
375
|
-
}, [
|
|
376
|
-
const
|
|
377
|
-
var
|
|
378
|
-
|
|
388
|
+
if (M)
|
|
389
|
+
return document.addEventListener("mousedown", y), () => document.removeEventListener("mousedown", y);
|
|
390
|
+
}, [M]), K(() => {
|
|
391
|
+
const y = (m) => {
|
|
392
|
+
var S;
|
|
393
|
+
m.key === "Escape" && M && (g(!1), (S = q.current) == null || S.focus());
|
|
379
394
|
};
|
|
380
|
-
return document.addEventListener("keydown",
|
|
381
|
-
}, [
|
|
382
|
-
const
|
|
383
|
-
let
|
|
384
|
-
if (
|
|
385
|
-
hour:
|
|
386
|
-
minute:
|
|
387
|
-
second:
|
|
388
|
-
})), m
|
|
389
|
-
const
|
|
390
|
-
iso:
|
|
391
|
-
formatted:
|
|
392
|
-
timestamp:
|
|
393
|
-
dateTime:
|
|
395
|
+
return document.addEventListener("keydown", y), () => document.removeEventListener("keydown", y);
|
|
396
|
+
}, [M]);
|
|
397
|
+
const te = j((y) => {
|
|
398
|
+
let m = y;
|
|
399
|
+
if (n && (m = y.set({
|
|
400
|
+
hour: n.hour,
|
|
401
|
+
minute: n.minute,
|
|
402
|
+
second: n.second
|
|
403
|
+
})), f(m), _(m), b || g(!1), r) {
|
|
404
|
+
const S = {
|
|
405
|
+
iso: m.toISO() || "",
|
|
406
|
+
formatted: m.toFormat(`${i} ${c}`),
|
|
407
|
+
timestamp: m.toMillis(),
|
|
408
|
+
dateTime: m
|
|
394
409
|
};
|
|
395
|
-
|
|
410
|
+
r(S);
|
|
396
411
|
}
|
|
397
|
-
}, [
|
|
398
|
-
const
|
|
399
|
-
if (
|
|
400
|
-
const
|
|
401
|
-
iso:
|
|
402
|
-
formatted:
|
|
403
|
-
timestamp:
|
|
404
|
-
dateTime:
|
|
412
|
+
}, [n, b, r, i, c]), ne = j((y, m) => {
|
|
413
|
+
const A = (n || J(v)).set({ hour: y, minute: m, second: 0 });
|
|
414
|
+
if (f(A), r) {
|
|
415
|
+
const Z = {
|
|
416
|
+
iso: A.toISO() || "",
|
|
417
|
+
formatted: A.toFormat(`${i} ${c}`),
|
|
418
|
+
timestamp: A.toMillis(),
|
|
419
|
+
dateTime: A
|
|
405
420
|
};
|
|
406
|
-
|
|
421
|
+
r(Z);
|
|
407
422
|
}
|
|
408
|
-
}, [
|
|
409
|
-
const
|
|
410
|
-
if (
|
|
411
|
-
const
|
|
412
|
-
|
|
423
|
+
}, [n, v, r, i, c]), oe = j((y, m) => {
|
|
424
|
+
const S = y.startOf("day"), A = m.startOf("day"), [Z, Y] = S <= A ? [S, A] : [A, S];
|
|
425
|
+
if (C(Z), L(Y), _(Z), u) {
|
|
426
|
+
const ce = V(Z, i, c), de = V(Y, i, c), he = Math.max(0, Math.ceil(Y.diff(Z, "days").days));
|
|
427
|
+
u({ start: ce, end: de, nights: he });
|
|
413
428
|
}
|
|
414
|
-
}, [
|
|
415
|
-
if (
|
|
416
|
-
const
|
|
417
|
-
if (m
|
|
418
|
-
const
|
|
419
|
-
iso:
|
|
420
|
-
formatted:
|
|
421
|
-
timestamp:
|
|
422
|
-
dateTime:
|
|
429
|
+
}, [u, i, c]), se = j((y) => {
|
|
430
|
+
if (B(y), n) {
|
|
431
|
+
const m = n.setZone(y);
|
|
432
|
+
if (f(m), _(m), r) {
|
|
433
|
+
const S = {
|
|
434
|
+
iso: m.toISO() || "",
|
|
435
|
+
formatted: m.toFormat(`${i} ${c}`),
|
|
436
|
+
timestamp: m.toMillis(),
|
|
437
|
+
dateTime: m
|
|
423
438
|
};
|
|
424
|
-
|
|
439
|
+
r(S);
|
|
425
440
|
}
|
|
426
441
|
} else
|
|
427
|
-
|
|
428
|
-
}, [
|
|
429
|
-
|
|
430
|
-
},
|
|
431
|
-
(
|
|
432
|
-
},
|
|
442
|
+
_(J(y));
|
|
443
|
+
}, [n, r, i, c]), H = () => {
|
|
444
|
+
k || g(!M);
|
|
445
|
+
}, ae = (y) => {
|
|
446
|
+
(y.key === "Enter" || y.key === " ") && (y.preventDefault(), H());
|
|
447
|
+
}, re = l ? s && T ? `${s.toFormat("d MMM yyyy")} – ${T.toFormat("d MMM yyyy")}` : "" : n ? n.toFormat(`${i} ${b ? c : ""}`) : "", ie = N ? R(N, v) : void 0, le = d ? R(d, v) : void 0;
|
|
433
448
|
return /* @__PURE__ */ h(
|
|
434
449
|
"div",
|
|
435
450
|
{
|
|
436
|
-
ref:
|
|
437
|
-
className: `chronos-picker ${
|
|
438
|
-
"data-disabled":
|
|
439
|
-
"data-theme":
|
|
451
|
+
ref: U,
|
|
452
|
+
className: `chronos-picker ${W}`,
|
|
453
|
+
"data-disabled": k,
|
|
454
|
+
"data-theme": P,
|
|
440
455
|
children: [
|
|
441
456
|
/* @__PURE__ */ h(
|
|
442
457
|
"div",
|
|
443
458
|
{
|
|
444
459
|
className: "chronos-input-wrapper",
|
|
445
|
-
onClick:
|
|
460
|
+
onClick: H,
|
|
446
461
|
children: [
|
|
447
462
|
/* @__PURE__ */ o(
|
|
448
463
|
"input",
|
|
449
464
|
{
|
|
450
|
-
ref:
|
|
465
|
+
ref: q,
|
|
451
466
|
type: "text",
|
|
452
467
|
className: "chronos-input",
|
|
453
|
-
value:
|
|
454
|
-
placeholder:
|
|
468
|
+
value: re,
|
|
469
|
+
placeholder: p,
|
|
455
470
|
readOnly: !0,
|
|
456
|
-
disabled:
|
|
457
|
-
onKeyDown:
|
|
471
|
+
disabled: k,
|
|
472
|
+
onKeyDown: ae,
|
|
458
473
|
"aria-label": z,
|
|
459
|
-
"aria-expanded":
|
|
474
|
+
"aria-expanded": M,
|
|
460
475
|
"aria-haspopup": "dialog",
|
|
461
476
|
role: "combobox"
|
|
462
477
|
}
|
|
@@ -481,56 +496,57 @@ const ke = ({
|
|
|
481
496
|
]
|
|
482
497
|
}
|
|
483
498
|
),
|
|
484
|
-
|
|
499
|
+
M && /* @__PURE__ */ o(
|
|
485
500
|
"div",
|
|
486
501
|
{
|
|
487
502
|
className: "chronos-dropdown",
|
|
488
|
-
"data-orientation":
|
|
489
|
-
"data-range-mode":
|
|
503
|
+
"data-orientation": x,
|
|
504
|
+
"data-range-mode": l,
|
|
490
505
|
role: "dialog",
|
|
491
506
|
"aria-label": "Date and time picker dialog",
|
|
492
507
|
children: /* @__PURE__ */ h("div", { className: "chronos-dropdown-content", children: [
|
|
493
|
-
|
|
508
|
+
l && s && T && /* @__PURE__ */ h("div", { className: "chronos-range-summary", children: [
|
|
494
509
|
/* @__PURE__ */ h("div", { className: "chronos-range-nights", children: [
|
|
495
|
-
Math.max(0, Math.ceil(
|
|
510
|
+
Math.max(0, Math.ceil(T.diff(s, "days").days)),
|
|
496
511
|
" nights"
|
|
497
512
|
] }),
|
|
498
513
|
/* @__PURE__ */ h("div", { className: "chronos-range-dates", children: [
|
|
499
|
-
|
|
514
|
+
s.toFormat("d MMM yyyy"),
|
|
500
515
|
" – ",
|
|
501
|
-
|
|
516
|
+
T.toFormat("d MMM yyyy")
|
|
502
517
|
] })
|
|
503
518
|
] }),
|
|
504
519
|
/* @__PURE__ */ o(
|
|
505
|
-
|
|
520
|
+
ye,
|
|
506
521
|
{
|
|
507
|
-
viewDate:
|
|
508
|
-
selectedDate:
|
|
509
|
-
onDateSelect:
|
|
510
|
-
onViewDateChange:
|
|
511
|
-
timezone:
|
|
512
|
-
minDate:
|
|
513
|
-
maxDate:
|
|
514
|
-
selectedStart:
|
|
515
|
-
selectedEnd:
|
|
516
|
-
onRangeSelect:
|
|
522
|
+
viewDate: ee,
|
|
523
|
+
selectedDate: l ? null : n,
|
|
524
|
+
onDateSelect: te,
|
|
525
|
+
onViewDateChange: _,
|
|
526
|
+
timezone: v,
|
|
527
|
+
minDate: ie,
|
|
528
|
+
maxDate: le,
|
|
529
|
+
selectedStart: l ? s : void 0,
|
|
530
|
+
selectedEnd: l ? T : void 0,
|
|
531
|
+
onRangeSelect: l ? oe : void 0,
|
|
532
|
+
holidays: $
|
|
517
533
|
}
|
|
518
534
|
),
|
|
519
|
-
!
|
|
520
|
-
|
|
521
|
-
|
|
535
|
+
!l && (b || I) && /* @__PURE__ */ h("div", { className: "chronos-sidebar", children: [
|
|
536
|
+
b && /* @__PURE__ */ o(
|
|
537
|
+
Me,
|
|
522
538
|
{
|
|
523
|
-
value:
|
|
539
|
+
value: n,
|
|
524
540
|
onChange: ne,
|
|
525
|
-
use24Hour:
|
|
526
|
-
timezone:
|
|
541
|
+
use24Hour: E,
|
|
542
|
+
timezone: v
|
|
527
543
|
}
|
|
528
544
|
),
|
|
529
|
-
|
|
530
|
-
|
|
545
|
+
I && /* @__PURE__ */ o(
|
|
546
|
+
be,
|
|
531
547
|
{
|
|
532
|
-
value:
|
|
533
|
-
onChange:
|
|
548
|
+
value: v,
|
|
549
|
+
onChange: se
|
|
534
550
|
}
|
|
535
551
|
)
|
|
536
552
|
] })
|
|
@@ -542,9 +558,9 @@ const ke = ({
|
|
|
542
558
|
);
|
|
543
559
|
};
|
|
544
560
|
export {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
561
|
+
X as COMMON_TIMEZONES,
|
|
562
|
+
me as DEFAULT_TIMEZONE,
|
|
563
|
+
Te as DateTimePicker,
|
|
564
|
+
R as convertToTimezone,
|
|
565
|
+
J as nowInTimezone
|
|
550
566
|
};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(v,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("luxon")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","luxon"],e):(v=typeof globalThis<"u"?globalThis:v||self,e(v.ChronosPicker={},v.jsxRuntime,v.React,v.luxon))})(this,function(v,e,i,C){"use strict";const U="Asia/Kolkata",W=[{value:"Asia/Kolkata",label:"India (IST)"},{value:"America/New_York",label:"Eastern Time (ET)"},{value:"America/Chicago",label:"Central Time (CT)"},{value:"America/Denver",label:"Mountain Time (MT)"},{value:"America/Los_Angeles",label:"Pacific Time (PT)"},{value:"Europe/London",label:"London (GMT/BST)"},{value:"Europe/Paris",label:"Central Europe (CET)"},{value:"Asia/Dubai",label:"Dubai (GST)"},{value:"Asia/Singapore",label:"Singapore (SGT)"},{value:"Asia/Tokyo",label:"Tokyo (JST)"},{value:"Australia/Sydney",label:"Sydney (AEDT)"},{value:"UTC",label:"UTC"}];function E(s,t){return C.DateTime.isDateTime(s)?s.setZone(t):typeof s=="string"?C.DateTime.fromISO(s,{zone:t}):C.DateTime.fromJSDate(s,{zone:t})}function j(s){return C.DateTime.now().setZone(s)}function Y(s){const r=C.DateTime.now().setZone(s).offset,a=Math.floor(Math.abs(r)/60),d=Math.abs(r)%60;return`UTC${r>=0?"+":"-"}${a}${d>0?`:${d.toString().padStart(2,"0")}`:""}`}function Q(s,t,r,a,d,b,h,p){const T=C.DateTime.fromObject({year:s,month:t,day:1},{zone:r}),M=T.startOf("week"),P=T.endOf("month").endOf("week"),z=C.DateTime.now().setZone(r).startOf("day"),A=h!=null&&p!=null,D=h==null?void 0:h.startOf("day"),x=p==null?void 0:p.endOf("day"),I=[];let o=[],c=M;for(;c<=P;){const y=c.month===t,S=c.hasSame(z,"day"),g=c.startOf("day");let n=!1,f=!1,l=!1,O=!1;A&&D&&x?(l=g.hasSame(D,"day"),O=g.hasSame(x,"day"),f=g>=D&&g<=x||l||O,n=l||O):a&&(n=c.hasSame(a,"day"));let N=!1;d&&c<d.startOf("day")&&(N=!0),b&&c>b.endOf("day")&&(N=!0),o.push({date:c,isCurrentMonth:y,isToday:S,isSelected:n,isDisabled:N,isInRange:f,isRangeStart:l,isRangeEnd:O}),o.length===7&&(I.push(o),o=[]),c=c.plus({days:1})}return I}function X(){const s=C.DateTime.now().startOf("week"),t=[];for(let r=0;r<7;r++){const a=s.plus({days:r});t.push(a.toFormat("ccc"))}return t}function F(){const s=[];for(let t=1;t<=12;t++){const r=C.DateTime.fromObject({month:t});s.push(r.toFormat("MMMM"))}return s}const V=({viewDate:s,selectedDate:t,onDateSelect:r,onViewDateChange:a,timezone:d,minDate:b,maxDate:h,selectedStart:p,selectedEnd:T,onRangeSelect:M})=>{const L=M!=null,P=i.useMemo(()=>Q(s.year,s.month,d,t??void 0,b,h,p??void 0,T??void 0),[s,t,d,b,h,p,T]),z=i.useMemo(()=>X(),[]),A=i.useMemo(()=>F(),[]),D=()=>{a(s.minus({months:1}))},x=()=>{a(s.plus({months:1}))},I=n=>{const f=parseInt(n.target.value,10);a(s.set({month:f}))},o=n=>{const f=parseInt(n.target.value,10);a(s.set({year:f}))},c=(n,f)=>{if(!f)if(L&&M){const l=n.startOf("day");if(p==null)M(n,n);else if(T!=null&&p.hasSame(T,"day")){const O=p.startOf("day");l<O?M(n,p):M(p,n)}else M(n,n)}else r(n)},y=(n,f,l)=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),c(f,l))},S=s.year,g=Array.from({length:21},(n,f)=>S-10+f);return e.jsxs("div",{className:"chronos-calendar",role:"region","aria-label":"Calendar",children:[e.jsxs("div",{className:"chronos-calendar-header",children:[e.jsx("button",{type:"button",className:"chronos-nav-button",onClick:D,"aria-label":"Previous month",children:"‹"}),e.jsxs("div",{className:"chronos-month-year-selectors",children:[e.jsx("select",{className:"chronos-month-select",value:s.month,onChange:I,"aria-label":"Select month",children:A.map((n,f)=>e.jsx("option",{value:f+1,children:n},f))}),e.jsx("select",{className:"chronos-year-select",value:s.year,onChange:o,"aria-label":"Select year",children:g.map(n=>e.jsx("option",{value:n,children:n},n))})]}),e.jsx("button",{type:"button",className:"chronos-nav-button",onClick:x,"aria-label":"Next month",children:"›"})]}),e.jsxs("div",{className:"chronos-calendar-grid",children:[e.jsx("div",{className:"chronos-weekday-row",children:z.map(n=>e.jsx("div",{className:"chronos-weekday",children:n},n))}),P.map((n,f)=>e.jsx("div",{className:"chronos-week-row",children:n.map((l,O)=>e.jsx("button",{type:"button",className:`chronos-day ${l.isSelected?"selected":""} ${l.isToday?"today":""} ${l.isCurrentMonth?"":"other-month"} ${l.isDisabled?"disabled":""} ${l.isInRange?"in-range":""} ${l.isRangeStart?"range-start":""} ${l.isRangeEnd?"range-end":""}`,onClick:()=>c(l.date,l.isDisabled),onKeyDown:N=>y(N,l.date,l.isDisabled),disabled:l.isDisabled,"aria-label":l.date.toFormat("MMMM d, yyyy"),"aria-selected":l.isSelected,"aria-current":l.isToday?"date":void 0,children:l.date.day},O))},f))]})]})},R=({value:s,onChange:t,use24Hour:r})=>{const[a,d]=i.useState((s==null?void 0:s.hour)??12),[b,h]=i.useState((s==null?void 0:s.minute)??0),[p,T]=i.useState(s&&s.hour>=12?"PM":"AM");i.useEffect(()=>{s&&(d(s.hour),h(s.minute),T(s.hour>=12?"PM":"AM"))},[s]);const M=o=>{d(o);let c=o;r||(p==="PM"&&o!==12?c=o+12:p==="AM"&&o===12&&(c=0)),t(c,b)},L=o=>{h(o),t(a,o)},P=()=>{const o=p==="AM"?"PM":"AM";T(o);let c=a;o==="PM"&&a!==12?c=a+12:o==="AM"&&a===12?c=0:o==="AM"&&a>12&&(c=a-12),t(c,b)},z=r?a:a%12||12,A=r?23:12,D=r?0:1,x=Array.from({length:A-D+1},(o,c)=>D+c),I=Array.from({length:60},(o,c)=>c);return e.jsxs("div",{className:"chronos-time-picker",role:"group","aria-label":"Time picker",children:[e.jsxs("div",{className:"chronos-time-header",children:[e.jsxs("svg",{className:"chronos-clock-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("polyline",{points:"12 6 12 12 16 14"})]}),e.jsx("span",{children:"Time"})]}),e.jsxs("div",{className:"chronos-time-controls",children:[e.jsxs("div",{className:"chronos-time-input-group",children:[e.jsx("label",{htmlFor:"chronos-hour-select",className:"chronos-time-label",children:"Hour"}),e.jsx("select",{id:"chronos-hour-select",className:"chronos-time-select",value:z,onChange:o=>M(parseInt(o.target.value,10)),"aria-label":"Select hour",children:x.map(o=>e.jsx("option",{value:o,children:o.toString().padStart(2,"0")},o))})]}),e.jsx("span",{className:"chronos-time-separator",children:":"}),e.jsxs("div",{className:"chronos-time-input-group",children:[e.jsx("label",{htmlFor:"chronos-minute-select",className:"chronos-time-label",children:"Minute"}),e.jsx("select",{id:"chronos-minute-select",className:"chronos-time-select",value:b,onChange:o=>L(parseInt(o.target.value,10)),"aria-label":"Select minute",children:I.map(o=>e.jsx("option",{value:o,children:o.toString().padStart(2,"0")},o))})]}),!r&&e.jsx("button",{type:"button",className:"chronos-period-toggle",onClick:P,"aria-label":`Switch to ${p==="AM"?"PM":"AM"}`,children:p})]})]})},ee=({value:s,onChange:t})=>{const[r,a]=i.useState(!1),d=W.find(h=>h.value===s)||{label:s},b=h=>{t(h),a(!1)};return e.jsxs("div",{className:"chronos-timezone-selector",children:[e.jsxs("div",{className:"chronos-timezone-header",children:[e.jsxs("svg",{className:"chronos-globe-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),e.jsx("span",{children:"Timezone"})]}),e.jsxs("button",{type:"button",className:"chronos-timezone-button",onClick:()=>a(!r),"aria-expanded":r,"aria-label":"Select timezone",children:[e.jsx("span",{className:"chronos-timezone-label",children:d.label}),e.jsx("span",{className:"chronos-timezone-offset",children:Y(s)}),e.jsx("svg",{className:`chronos-chevron ${r?"expanded":""}`,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("polyline",{points:"6 9 12 15 18 9"})})]}),r&&e.jsx("div",{className:"chronos-timezone-list",role:"listbox",children:W.map(h=>e.jsxs("button",{type:"button",className:`chronos-timezone-option ${h.value===s?"selected":""}`,onClick:()=>b(h.value),role:"option","aria-selected":h.value===s,children:[e.jsx("span",{className:"chronos-timezone-option-label",children:h.label}),e.jsx("span",{className:"chronos-timezone-option-offset",children:Y(h.value)})]},h.value))})]})};function q(s,t,r){return{iso:s.toISO()||"",formatted:s.toFormat(`${t} ${r}`),timestamp:s.toMillis(),dateTime:s}}const se=({value:s,onChange:t,timezone:r=U,dateFormat:a="DD",timeFormat:d="HH:mm",minDate:b,maxDate:h,placeholder:p="Select date and time",disabled:T=!1,showTime:M=!0,use24Hour:L=!0,className:P="",ariaLabel:z="Date and time picker",showTimezoneSelector:A=!1,theme:D="light",orientation:x="portrait",selectionMode:I="single",rangeValue:o,onRangeChange:c})=>{const y=I==="range",[S,g]=i.useState(!1),[n,f]=i.useState(()=>!y&&s?E(s,r):null),[l,O]=i.useState(()=>y&&(o!=null&&o.start)?E(o.start,r):null),[N,G]=i.useState(()=>y&&(o!=null&&o.end)?E(o.end,r):null),[k,oe]=i.useState(r),[ne,_]=i.useState(()=>n||l||N||j(r)),K=i.useRef(null),J=i.useRef(null);i.useEffect(()=>{!y&&s&&f(E(s,k))},[s,k,y]),i.useEffect(()=>{y&&(o==null?void 0:o.start)!=null&&(o==null?void 0:o.end)!=null&&(O(E(o.start,k)),G(E(o.end,k)))},[y,o,k]),i.useEffect(()=>{const u=m=>{K.current&&!K.current.contains(m.target)&&g(!1)};if(S)return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[S]),i.useEffect(()=>{const u=m=>{var w;m.key==="Escape"&&S&&(g(!1),(w=J.current)==null||w.focus())};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[S]);const te=i.useCallback(u=>{let m=u;if(n&&(m=u.set({hour:n.hour,minute:n.minute,second:n.second})),f(m),_(m),M||g(!1),t){const w={iso:m.toISO()||"",formatted:m.toFormat(`${a} ${d}`),timestamp:m.toMillis(),dateTime:m};t(w)}},[n,M,t,a,d]),ae=i.useCallback((u,m)=>{const $=(n||j(k)).set({hour:u,minute:m,second:0});if(f($),t){const Z={iso:$.toISO()||"",formatted:$.toFormat(`${a} ${d}`),timestamp:$.toMillis(),dateTime:$};t(Z)}},[n,k,t,a,d]),re=i.useCallback((u,m)=>{const w=u.startOf("day"),$=m.startOf("day"),[Z,B]=w<=$?[w,$]:[$,w];if(O(Z),G(B),_(Z),c){const fe=q(Z,a,d),me=q(B,a,d),pe=Math.max(0,Math.ceil(B.diff(Z,"days").days));c({start:fe,end:me,nights:pe})}},[c,a,d]),le=i.useCallback(u=>{if(oe(u),n){const m=n.setZone(u);if(f(m),_(m),t){const w={iso:m.toISO()||"",formatted:m.toFormat(`${a} ${d}`),timestamp:m.toMillis(),dateTime:m};t(w)}}else _(j(u))},[n,t,a,d]),H=()=>{T||g(!S)},ce=u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),H())},ie=y?l&&N?`${l.toFormat("d MMM yyyy")} – ${N.toFormat("d MMM yyyy")}`:"":n?n.toFormat(`${a} ${M?d:""}`):"",de=b?E(b,k):void 0,he=h?E(h,k):void 0;return e.jsxs("div",{ref:K,className:`chronos-picker ${P}`,"data-disabled":T,"data-theme":D,children:[e.jsxs("div",{className:"chronos-input-wrapper",onClick:H,children:[e.jsx("input",{ref:J,type:"text",className:"chronos-input",value:ie,placeholder:p,readOnly:!0,disabled:T,onKeyDown:ce,"aria-label":z,"aria-expanded":S,"aria-haspopup":"dialog",role:"combobox"}),e.jsxs("svg",{className:"chronos-calendar-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}),e.jsx("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),e.jsx("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),e.jsx("line",{x1:"3",y1:"10",x2:"21",y2:"10"})]})]}),S&&e.jsx("div",{className:"chronos-dropdown","data-orientation":x,"data-range-mode":y,role:"dialog","aria-label":"Date and time picker dialog",children:e.jsxs("div",{className:"chronos-dropdown-content",children:[y&&l&&N&&e.jsxs("div",{className:"chronos-range-summary",children:[e.jsxs("div",{className:"chronos-range-nights",children:[Math.max(0,Math.ceil(N.diff(l,"days").days))," nights"]}),e.jsxs("div",{className:"chronos-range-dates",children:[l.toFormat("d MMM yyyy")," – ",N.toFormat("d MMM yyyy")]})]}),e.jsx(V,{viewDate:ne,selectedDate:y?null:n,onDateSelect:te,onViewDateChange:_,timezone:k,minDate:de,maxDate:he,selectedStart:y?l:void 0,selectedEnd:y?N:void 0,onRangeSelect:y?re:void 0}),!y&&(M||A)&&e.jsxs("div",{className:"chronos-sidebar",children:[M&&e.jsx(R,{value:n,onChange:ae,use24Hour:L,timezone:k}),A&&e.jsx(ee,{value:k,onChange:le})]})]})})]})};v.COMMON_TIMEZONES=W,v.DEFAULT_TIMEZONE=U,v.DateTimePicker=se,v.convertToTimezone=E,v.nowInTimezone=j,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(S,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("luxon")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","luxon"],e):(S=typeof globalThis<"u"?globalThis:S||self,e(S.ChronosPicker={},S.jsxRuntime,S.React,S.luxon))})(this,function(S,e,c,D){"use strict";const G="Asia/Kolkata",U=[{value:"Asia/Kolkata",label:"India (IST)"},{value:"America/New_York",label:"Eastern Time (ET)"},{value:"America/Chicago",label:"Central Time (CT)"},{value:"America/Denver",label:"Mountain Time (MT)"},{value:"America/Los_Angeles",label:"Pacific Time (PT)"},{value:"Europe/London",label:"London (GMT/BST)"},{value:"Europe/Paris",label:"Central Europe (CET)"},{value:"Asia/Dubai",label:"Dubai (GST)"},{value:"Asia/Singapore",label:"Singapore (SGT)"},{value:"Asia/Tokyo",label:"Tokyo (JST)"},{value:"Australia/Sydney",label:"Sydney (AEDT)"},{value:"UTC",label:"UTC"}];function w(s,r){return D.DateTime.isDateTime(s)?s.setZone(r):typeof s=="string"?D.DateTime.fromISO(s,{zone:r}):D.DateTime.fromJSDate(s,{zone:r})}function K(s){return D.DateTime.now().setZone(s)}function J(s){const a=D.DateTime.now().setZone(s).offset,l=Math.floor(Math.abs(a)/60),d=Math.abs(a)%60;return`UTC${a>=0?"+":"-"}${l}${d>0?`:${d.toString().padStart(2,"0")}`:""}`}function F(s,r,a,l,d,v,h,y,N){const b=D.DateTime.fromObject({year:s,month:r,day:1},{zone:a}),I=b.startOf("week"),Z=b.endOf("month").endOf("week"),P=D.DateTime.now().setZone(a).startOf("day"),z=h!=null&&y!=null,C=h==null?void 0:h.startOf("day"),$=y==null?void 0:y.endOf("day"),o=new Map;N&&N.forEach(M=>{let g;D.DateTime.isDateTime(M.date)?g=M.date.setZone(a):typeof M.date=="string"?g=D.DateTime.fromISO(M.date,{zone:a}):g=D.DateTime.fromJSDate(M.date,{zone:a}),o.set(g.toISODate()||"",{name:M.name,type:M.type||"national"})});const m=[];let E=[],i=I;for(;i<=Z;){const M=i.month===r,g=i.hasSame(P,"day"),t=i.startOf("day"),p=i.toISODate()||"";let n=!1,A=!1,k=!1,L=!1;z&&C&&$?(k=t.hasSame(C,"day"),L=t.hasSame($,"day"),A=t>=C&&t<=$||k||L,n=k||L):l&&(n=i.hasSame(l,"day"));let T=!1;d&&i<d.startOf("day")&&(T=!0),v&&i>v.endOf("day")&&(T=!0);const B=o.get(p);E.push({date:i,isCurrentMonth:M,isToday:g,isSelected:n,isDisabled:T,isInRange:A,isRangeStart:k,isRangeEnd:L,holiday:B?{date:i,...B}:void 0}),E.length===7&&(m.push(E),E=[]),i=i.plus({days:1})}return m}function V(){const s=D.DateTime.now().startOf("week"),r=[];for(let a=0;a<7;a++){const l=s.plus({days:a});r.push(l.toFormat("ccc"))}return r}function R(){const s=[];for(let r=1;r<=12;r++){const a=D.DateTime.fromObject({month:r});s.push(a.toFormat("MMMM"))}return s}const ee=({viewDate:s,selectedDate:r,onDateSelect:a,onViewDateChange:l,timezone:d,minDate:v,maxDate:h,selectedStart:y,selectedEnd:N,onRangeSelect:b,holidays:I})=>{const _=b!=null,Z=c.useMemo(()=>F(s.year,s.month,d,r??void 0,v,h,y??void 0,N??void 0,I),[s,r,d,v,h,y,N,I]),P=c.useMemo(()=>V(),[]),z=c.useMemo(()=>R(),[]),C=()=>{l(s.minus({months:1}))},$=()=>{l(s.plus({months:1}))},o=t=>{const p=parseInt(t.target.value,10);l(s.set({month:p}))},m=t=>{const p=parseInt(t.target.value,10);l(s.set({year:p}))},E=(t,p)=>{if(!p)if(_&&b){const n=t.startOf("day");if(y==null)b(t,t);else if(N!=null&&y.hasSame(N,"day")){const A=y.startOf("day");n<A?b(t,y):b(y,t)}else b(t,t)}else a(t)},i=(t,p,n)=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),E(p,n))},M=s.year,g=Array.from({length:21},(t,p)=>M-10+p);return e.jsxs("div",{className:"chronos-calendar",role:"region","aria-label":"Calendar",children:[e.jsxs("div",{className:"chronos-calendar-header",children:[e.jsx("button",{type:"button",className:"chronos-nav-button",onClick:C,"aria-label":"Previous month",children:"‹"}),e.jsxs("div",{className:"chronos-month-year-selectors",children:[e.jsx("select",{className:"chronos-month-select",value:s.month,onChange:o,"aria-label":"Select month",children:z.map((t,p)=>e.jsx("option",{value:p+1,children:t},p))}),e.jsx("select",{className:"chronos-year-select",value:s.year,onChange:m,"aria-label":"Select year",children:g.map(t=>e.jsx("option",{value:t,children:t},t))})]}),e.jsx("button",{type:"button",className:"chronos-nav-button",onClick:$,"aria-label":"Next month",children:"›"})]}),e.jsxs("div",{className:"chronos-calendar-grid",children:[e.jsx("div",{className:"chronos-weekday-row",children:P.map(t=>e.jsx("div",{className:"chronos-weekday",children:t},t))}),Z.map((t,p)=>e.jsx("div",{className:"chronos-week-row",children:t.map((n,A)=>e.jsxs("button",{type:"button",className:`chronos-day ${n.isSelected?"selected":""} ${n.isToday?"today":""} ${n.isCurrentMonth?"":"other-month"} ${n.isDisabled?"disabled":""} ${n.isInRange?"in-range":""} ${n.isRangeStart?"range-start":""} ${n.isRangeEnd?"range-end":""} ${n.holiday?`holiday ${n.holiday.type}`:""}`,onClick:()=>E(n.date,n.isDisabled),onKeyDown:k=>i(k,n.date,n.isDisabled),disabled:n.isDisabled,"aria-label":`${n.date.toFormat("MMMM d, yyyy")}${n.holiday?`, ${n.holiday.name}`:""}`,"aria-selected":n.isSelected,"aria-current":n.isToday?"date":void 0,title:n.holiday?n.holiday.name:void 0,children:[n.date.day,n.holiday&&e.jsx("span",{className:"chronos-holiday-dot"})]},A))},p))]})]})},se=({value:s,onChange:r,use24Hour:a})=>{const[l,d]=c.useState((s==null?void 0:s.hour)??12),[v,h]=c.useState((s==null?void 0:s.minute)??0),[y,N]=c.useState(s&&s.hour>=12?"PM":"AM");c.useEffect(()=>{s&&(d(s.hour),h(s.minute),N(s.hour>=12?"PM":"AM"))},[s]);const b=o=>{d(o);let m=o;a||(y==="PM"&&o!==12?m=o+12:y==="AM"&&o===12&&(m=0)),r(m,v)},I=o=>{h(o),r(l,o)},_=()=>{const o=y==="AM"?"PM":"AM";N(o);let m=l;o==="PM"&&l!==12?m=l+12:o==="AM"&&l===12?m=0:o==="AM"&&l>12&&(m=l-12),r(m,v)},Z=a?l:l%12||12,P=a?23:12,z=a?0:1,C=Array.from({length:P-z+1},(o,m)=>z+m),$=Array.from({length:60},(o,m)=>m);return e.jsxs("div",{className:"chronos-time-picker",role:"group","aria-label":"Time picker",children:[e.jsxs("div",{className:"chronos-time-header",children:[e.jsxs("svg",{className:"chronos-clock-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("polyline",{points:"12 6 12 12 16 14"})]}),e.jsx("span",{children:"Time"})]}),e.jsxs("div",{className:"chronos-time-controls",children:[e.jsxs("div",{className:"chronos-time-input-group",children:[e.jsx("label",{htmlFor:"chronos-hour-select",className:"chronos-time-label",children:"Hour"}),e.jsx("select",{id:"chronos-hour-select",className:"chronos-time-select",value:Z,onChange:o=>b(parseInt(o.target.value,10)),"aria-label":"Select hour",children:C.map(o=>e.jsx("option",{value:o,children:o.toString().padStart(2,"0")},o))})]}),e.jsx("span",{className:"chronos-time-separator",children:":"}),e.jsxs("div",{className:"chronos-time-input-group",children:[e.jsx("label",{htmlFor:"chronos-minute-select",className:"chronos-time-label",children:"Minute"}),e.jsx("select",{id:"chronos-minute-select",className:"chronos-time-select",value:v,onChange:o=>I(parseInt(o.target.value,10)),"aria-label":"Select minute",children:$.map(o=>e.jsx("option",{value:o,children:o.toString().padStart(2,"0")},o))})]}),!a&&e.jsx("button",{type:"button",className:"chronos-period-toggle",onClick:_,"aria-label":`Switch to ${y==="AM"?"PM":"AM"}`,children:y})]})]})},oe=({value:s,onChange:r})=>{const[a,l]=c.useState(!1),d=U.find(h=>h.value===s)||{label:s},v=h=>{r(h),l(!1)};return e.jsxs("div",{className:"chronos-timezone-selector",children:[e.jsxs("div",{className:"chronos-timezone-header",children:[e.jsxs("svg",{className:"chronos-globe-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),e.jsx("span",{children:"Timezone"})]}),e.jsxs("button",{type:"button",className:"chronos-timezone-button",onClick:()=>l(!a),"aria-expanded":a,"aria-label":"Select timezone",children:[e.jsx("span",{className:"chronos-timezone-label",children:d.label}),e.jsx("span",{className:"chronos-timezone-offset",children:J(s)}),e.jsx("svg",{className:`chronos-chevron ${a?"expanded":""}`,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("polyline",{points:"6 9 12 15 18 9"})})]}),a&&e.jsx("div",{className:"chronos-timezone-list",role:"listbox",children:U.map(h=>e.jsxs("button",{type:"button",className:`chronos-timezone-option ${h.value===s?"selected":""}`,onClick:()=>v(h.value),role:"option","aria-selected":h.value===s,children:[e.jsx("span",{className:"chronos-timezone-option-label",children:h.label}),e.jsx("span",{className:"chronos-timezone-option-offset",children:J(h.value)})]},h.value))})]})};function H(s,r,a){return{iso:s.toISO()||"",formatted:s.toFormat(`${r} ${a}`),timestamp:s.toMillis(),dateTime:s}}const te=({value:s,onChange:r,timezone:a=G,dateFormat:l="DD",timeFormat:d="HH:mm",minDate:v,maxDate:h,placeholder:y="Select date and time",disabled:N=!1,showTime:b=!0,use24Hour:I=!0,className:_="",ariaLabel:Z="Date and time picker",showTimezoneSelector:P=!1,theme:z="light",orientation:C="portrait",selectionMode:$="single",rangeValue:o,onRangeChange:m,holidays:E})=>{const i=$==="range",[M,g]=c.useState(!1),[t,p]=c.useState(()=>!i&&s?w(s,a):null),[n,A]=c.useState(()=>i&&(o!=null&&o.start)?w(o.start,a):null),[k,L]=c.useState(()=>i&&(o!=null&&o.end)?w(o.end,a):null),[T,B]=c.useState(a),[ne,W]=c.useState(()=>t||n||k||K(a)),Y=c.useRef(null),Q=c.useRef(null);c.useEffect(()=>{!i&&s&&p(w(s,T))},[s,T,i]),c.useEffect(()=>{i&&(o==null?void 0:o.start)!=null&&(o==null?void 0:o.end)!=null&&(A(w(o.start,T)),L(w(o.end,T)))},[i,o,T]),c.useEffect(()=>{const u=f=>{Y.current&&!Y.current.contains(f.target)&&g(!1)};if(M)return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[M]),c.useEffect(()=>{const u=f=>{var O;f.key==="Escape"&&M&&(g(!1),(O=Q.current)==null||O.focus())};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[M]);const ae=c.useCallback(u=>{let f=u;if(t&&(f=u.set({hour:t.hour,minute:t.minute,second:t.second})),p(f),W(f),b||g(!1),r){const O={iso:f.toISO()||"",formatted:f.toFormat(`${l} ${d}`),timestamp:f.toMillis(),dateTime:f};r(O)}},[t,b,r,l,d]),re=c.useCallback((u,f)=>{const x=(t||K(T)).set({hour:u,minute:f,second:0});if(p(x),r){const j={iso:x.toISO()||"",formatted:x.toFormat(`${l} ${d}`),timestamp:x.toMillis(),dateTime:x};r(j)}},[t,T,r,l,d]),le=c.useCallback((u,f)=>{const O=u.startOf("day"),x=f.startOf("day"),[j,q]=O<=x?[O,x]:[x,O];if(A(j),L(q),W(j),m){const me=H(j,l,d),pe=H(q,l,d),ye=Math.max(0,Math.ceil(q.diff(j,"days").days));m({start:me,end:pe,nights:ye})}},[m,l,d]),ie=c.useCallback(u=>{if(B(u),t){const f=t.setZone(u);if(p(f),W(f),r){const O={iso:f.toISO()||"",formatted:f.toFormat(`${l} ${d}`),timestamp:f.toMillis(),dateTime:f};r(O)}}else W(K(u))},[t,r,l,d]),X=()=>{N||g(!M)},ce=u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),X())},de=i?n&&k?`${n.toFormat("d MMM yyyy")} – ${k.toFormat("d MMM yyyy")}`:"":t?t.toFormat(`${l} ${b?d:""}`):"",he=v?w(v,T):void 0,fe=h?w(h,T):void 0;return e.jsxs("div",{ref:Y,className:`chronos-picker ${_}`,"data-disabled":N,"data-theme":z,children:[e.jsxs("div",{className:"chronos-input-wrapper",onClick:X,children:[e.jsx("input",{ref:Q,type:"text",className:"chronos-input",value:de,placeholder:y,readOnly:!0,disabled:N,onKeyDown:ce,"aria-label":Z,"aria-expanded":M,"aria-haspopup":"dialog",role:"combobox"}),e.jsxs("svg",{className:"chronos-calendar-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}),e.jsx("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),e.jsx("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),e.jsx("line",{x1:"3",y1:"10",x2:"21",y2:"10"})]})]}),M&&e.jsx("div",{className:"chronos-dropdown","data-orientation":C,"data-range-mode":i,role:"dialog","aria-label":"Date and time picker dialog",children:e.jsxs("div",{className:"chronos-dropdown-content",children:[i&&n&&k&&e.jsxs("div",{className:"chronos-range-summary",children:[e.jsxs("div",{className:"chronos-range-nights",children:[Math.max(0,Math.ceil(k.diff(n,"days").days))," nights"]}),e.jsxs("div",{className:"chronos-range-dates",children:[n.toFormat("d MMM yyyy")," – ",k.toFormat("d MMM yyyy")]})]}),e.jsx(ee,{viewDate:ne,selectedDate:i?null:t,onDateSelect:ae,onViewDateChange:W,timezone:T,minDate:he,maxDate:fe,selectedStart:i?n:void 0,selectedEnd:i?k:void 0,onRangeSelect:i?le:void 0,holidays:E}),!i&&(b||P)&&e.jsxs("div",{className:"chronos-sidebar",children:[b&&e.jsx(se,{value:t,onChange:re,use24Hour:I,timezone:T}),P&&e.jsx(oe,{value:T,onChange:ie})]})]})})]})};S.COMMON_TIMEZONES=U,S.DEFAULT_TIMEZONE=G,S.DateTimePicker=te,S.convertToTimezone=w,S.nowInTimezone=K,Object.defineProperty(S,Symbol.toStringTag,{value:"Module"})});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { DateTime } from 'luxon';
|
|
3
|
+
import { Holiday } from '../types';
|
|
3
4
|
|
|
4
5
|
interface CalendarProps {
|
|
5
6
|
viewDate: DateTime;
|
|
@@ -13,6 +14,7 @@ interface CalendarProps {
|
|
|
13
14
|
selectedStart?: DateTime | null;
|
|
14
15
|
selectedEnd?: DateTime | null;
|
|
15
16
|
onRangeSelect?: (start: DateTime, end: DateTime) => void;
|
|
17
|
+
holidays?: Holiday[];
|
|
16
18
|
}
|
|
17
19
|
export declare const Calendar: React.FC<CalendarProps>;
|
|
18
20
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../../src/components/Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../../src/components/Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,UAAU,aAAa;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,oDAAoD;IACpD,aAAa,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwK5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DateTimePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAiB,MAAM,UAAU,CAAC;AAK9D,OAAO,8BAA8B,CAAC;AAWtC,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"DateTimePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DateTimePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAiB,MAAM,UAAU,CAAC;AAK9D,OAAO,8BAA8B,CAAC;AAWtC,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAySxD,CAAC"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -18,6 +18,11 @@ export interface DateTimeRangeValue {
|
|
|
18
18
|
/** Number of nights/days in range (end - start in days) */
|
|
19
19
|
nights: number;
|
|
20
20
|
}
|
|
21
|
+
export interface Holiday {
|
|
22
|
+
date: DateTime | string | Date;
|
|
23
|
+
name: string;
|
|
24
|
+
type?: 'national' | 'long-weekend';
|
|
25
|
+
}
|
|
21
26
|
export interface DateTimePickerProps {
|
|
22
27
|
/** Selected date and time value */
|
|
23
28
|
value?: Date | string | DateTime;
|
|
@@ -60,6 +65,8 @@ export interface DateTimePickerProps {
|
|
|
60
65
|
} | null;
|
|
61
66
|
/** Callback when range changes (selectionMode is 'range') */
|
|
62
67
|
onRangeChange?: (value: DateTimeRangeValue) => void;
|
|
68
|
+
/** List of holidays to display */
|
|
69
|
+
holidays?: Holiday[];
|
|
63
70
|
}
|
|
64
71
|
export interface CalendarDate {
|
|
65
72
|
date: DateTime;
|
|
@@ -73,5 +80,7 @@ export interface CalendarDate {
|
|
|
73
80
|
isRangeStart?: boolean;
|
|
74
81
|
/** Is the range end date */
|
|
75
82
|
isRangeEnd?: boolean;
|
|
83
|
+
/** Holiday information if applicable */
|
|
84
|
+
holiday?: Holiday;
|
|
76
85
|
}
|
|
77
86
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,qBAAqB;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,mBAAmB;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEjC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAE1C,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAExB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAExB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,6BAA6B;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IAEvC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAEnC,gDAAgD;IAChD,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;QAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAEvF,6DAA6D;IAC7D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,qBAAqB;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,mBAAmB;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEjC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAE1C,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAExB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAExB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,6BAA6B;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IAEvC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAEnC,gDAAgD;IAChD,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;QAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAEvF,6DAA6D;IAC7D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAEpD,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -4,7 +4,11 @@ import { CalendarDate } from '../types';
|
|
|
4
4
|
/**
|
|
5
5
|
* Generate calendar grid for a given month
|
|
6
6
|
*/
|
|
7
|
-
export declare function generateCalendarMonth(year: number, month: number, timezone: string, selectedDate?: DateTime, minDate?: DateTime, maxDate?: DateTime, selectedStart?: DateTime, selectedEnd?: DateTime
|
|
7
|
+
export declare function generateCalendarMonth(year: number, month: number, timezone: string, selectedDate?: DateTime, minDate?: DateTime, maxDate?: DateTime, selectedStart?: DateTime, selectedEnd?: DateTime, holidays?: {
|
|
8
|
+
date: DateTime | string | Date;
|
|
9
|
+
name: string;
|
|
10
|
+
type?: 'national' | 'long-weekend';
|
|
11
|
+
}[]): CalendarDate[][];
|
|
8
12
|
/**
|
|
9
13
|
* Get weekday names
|
|
10
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/utils/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,QAAQ,EACvB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,QAAQ,EACxB,WAAW,CAAC,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/utils/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,QAAQ,EACvB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,QAAQ,EACxB,WAAW,CAAC,EAAE,QAAQ,EACtB,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc,CAAA;CAAE,EAAE,GAChG,YAAY,EAAE,EAAE,CAuFlB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAU1C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CASxC"}
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.chronos-picker{position:relative;display:inline-block;width:100%;max-width:320px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;color:#1a1a1a}.chronos-picker[data-disabled=true]{opacity:.6;cursor:not-allowed}.chronos-input-wrapper{position:relative;display:flex;align-items:center;cursor:pointer}.chronos-input{width:100%;padding:10px 40px 10px 14px;border:1.5px solid #d1d5db;border-radius:8px;font-size:14px;color:#1a1a1a;background-color:#fff;transition:all .2s ease;cursor:pointer;outline:none}.chronos-input:hover:not(:disabled){border-color:#9ca3af}.chronos-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-input:disabled{background-color:#f3f4f6;cursor:not-allowed}.chronos-input::placeholder{color:#9ca3af}.chronos-calendar-icon{position:absolute;right:12px;width:20px;height:20px;color:#6b7280;pointer-events:none;transition:color .2s ease}.chronos-input:hover:not(:disabled)~.chronos-calendar-icon,.chronos-input:focus~.chronos-calendar-icon{color:#3b82f6}.chronos-dropdown{position:absolute;top:calc(100% + 8px);left:0;z-index:9999;min-width:320px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 4px 6px -1px #00000014,0 10px 30px -4px #0000001f;overflow:hidden;animation:chronos-dropdown-appear .2s ease}.chronos-dropdown-content{display:flex;flex-direction:column}.chronos-dropdown[data-orientation=portrait] .chronos-dropdown-content{flex-direction:column}.chronos-dropdown[data-orientation=landscape]{min-width:auto}.chronos-dropdown[data-orientation=landscape] .chronos-dropdown-content{flex-direction:row}.chronos-dropdown[data-orientation=landscape] .chronos-calendar{border-right:1px solid #e5e7eb;border-bottom:none}.chronos-dropdown[data-orientation=landscape] .chronos-sidebar{display:flex;flex-direction:column;min-width:240px}.chronos-dropdown[data-orientation=landscape] .chronos-time-picker{border-top:none;border-bottom:1px solid #e5e7eb}.chronos-dropdown[data-orientation=landscape] .chronos-time-picker:last-child{border-bottom:none}.chronos-dropdown[data-orientation=landscape] .chronos-timezone-selector{border-top:none}@keyframes chronos-dropdown-appear{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.chronos-range-summary{padding:16px 16px 0;margin-bottom:8px}.chronos-range-nights{font-size:1.5rem;font-weight:700;color:#1a1a1a;letter-spacing:-.025em;line-height:1.2}.chronos-range-dates{font-size:.875rem;color:#6b7280;margin-top:4px}.chronos-calendar{padding:16px}.chronos-calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:8px}.chronos-nav-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:6px;background:transparent;color:#4b5563;font-size:20px;font-weight:600;cursor:pointer;transition:all .15s ease}.chronos-nav-button:hover{background:#f3f4f6;color:#1a1a1a}.chronos-nav-button:active{transform:scale(.95)}.chronos-month-year-selectors{display:flex;gap:8px;flex:1;justify-content:center}.chronos-month-select,.chronos-year-select{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;font-weight:500;color:#1a1a1a;background-color:#fff;cursor:pointer;transition:all .15s ease;outline:none}.chronos-month-select:hover,.chronos-year-select:hover{border-color:#9ca3af}.chronos-month-select:focus,.chronos-year-select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-calendar-grid{display:flex;flex-direction:column;gap:4px}.chronos-weekday-row,.chronos-week-row{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.chronos-weekday{display:flex;align-items:center;justify-content:center;height:32px;font-size:11px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.05em}.chronos-day{display:flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 auto;border:none;border-radius:50%;font-size:14px;font-weight:500;color:#1a1a1a;background:transparent;cursor:pointer;transition:all .2s ease;position:relative}.chronos-day:hover:not(.disabled){background:#f3f4f6;transform:scale(1.08)}.chronos-day.other-month{color:#9ca3af}.chronos-day.today{color:#3b82f6;font-weight:600}.chronos-day.today:after{content:"";position:absolute;bottom:5px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:#3b82f6}.chronos-day.selected{background:#3b82f6;color:#fff;font-weight:600;box-shadow:0 2px 8px #3b82f659}.chronos-day.selected:hover{background:#2563eb;box-shadow:0 2px 12px #2563eb66}.chronos-day.disabled{color:#d1d5db;cursor:not-allowed;opacity:.5}.chronos-day.disabled:hover{background:transparent;transform:none}.chronos-day.in-range{background:#e5e7eb;border-radius:0}.chronos-day.in-range:hover{background:#d1d5db}.chronos-day.range-start{border-radius:50% 0 0 50%}.chronos-day.range-start.in-range{background:#e5e7eb}.chronos-day.range-end{border-radius:0 50% 50% 0}.chronos-day.range-end.in-range{background:#e5e7eb}.chronos-day.range-start.selected,.chronos-day.range-end.selected{background:#1a1a1a;color:#fff;font-weight:600;box-shadow:0 0 0 2px #fff}.chronos-day.range-start.selected:hover,.chronos-day.range-end.selected:hover{background:#374151}.chronos-day.range-start.range-end{border-radius:50%}.chronos-day:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.chronos-time-picker{padding:16px}.chronos-dropdown[data-orientation=portrait] .chronos-time-picker{border-top:1px solid #e5e7eb}.chronos-time-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:600;color:#4b5563}.chronos-clock-icon{width:18px;height:18px;color:#6b7280}.chronos-time-controls{display:flex;align-items:flex-end;justify-content:center;gap:8px}.chronos-time-input-group{display:flex;flex-direction:column;gap:4px}.chronos-time-label{font-size:11px;font-weight:500;color:#6b7280;text-transform:uppercase;letter-spacing:.5px}.chronos-time-select{width:70px;padding:8px 10px;border:1.5px solid #d1d5db;border-radius:6px;font-size:16px;font-weight:600;color:#1a1a1a;background-color:#fff;cursor:pointer;transition:all .15s ease;outline:none;text-align:center}.chronos-time-select:hover{border-color:#9ca3af}.chronos-time-select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-time-separator{font-size:24px;font-weight:700;color:#1a1a1a;line-height:1;margin-bottom:8px}.chronos-period-toggle{padding:8px 16px;border:1.5px solid #d1d5db;border-radius:6px;font-size:14px;font-weight:600;color:#1a1a1a;background-color:#fff;cursor:pointer;transition:all .15s ease;outline:none}.chronos-period-toggle:hover{border-color:#3b82f6;background-color:#eff6ff;color:#3b82f6}.chronos-period-toggle:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-period-toggle:active{transform:scale(.95)}.chronos-timezone-selector{padding:16px}.chronos-dropdown[data-orientation=portrait] .chronos-timezone-selector{border-top:1px solid #e5e7eb}.chronos-timezone-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:600;color:#4b5563}.chronos-globe-icon{width:18px;height:18px;color:#6b7280}.chronos-timezone-button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;border:1.5px solid #d1d5db;border-radius:8px;background-color:#fff;cursor:pointer;transition:all .15s ease;outline:none}.chronos-timezone-button:hover{border-color:#9ca3af}.chronos-timezone-button:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-timezone-label{font-weight:500;color:#1a1a1a;flex:1;text-align:left}.chronos-timezone-offset{font-size:12px;color:#6b7280;margin-right:8px}.chronos-chevron{width:16px;height:16px;color:#6b7280;transition:transform .2s ease}.chronos-chevron.expanded{transform:rotate(180deg)}.chronos-timezone-list{margin-top:8px;max-height:240px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:8px;background:#fff;animation:chronos-timezone-list-appear .2s ease}@keyframes chronos-timezone-list-appear{0%{opacity:0;max-height:0}to{opacity:1;max-height:240px}}.chronos-timezone-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;border:none;border-bottom:1px solid #f3f4f6;background:transparent;text-align:left;cursor:pointer;transition:background .15s ease;outline:none}.chronos-timezone-option:last-child{border-bottom:none}.chronos-timezone-option:hover{background:#f9fafb}.chronos-timezone-option.selected{background:#eff6ff}.chronos-timezone-option:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}.chronos-timezone-option-label{font-weight:500;color:#1a1a1a}.chronos-timezone-option.selected .chronos-timezone-option-label{color:#3b82f6;font-weight:600}.chronos-timezone-option-offset{font-size:12px;color:#6b7280}@media (max-width: 480px){.chronos-dropdown{min-width:calc(100vw - 32px);max-width:calc(100vw - 32px)}.chronos-picker{max-width:100%}}.chronos-timezone-list::-webkit-scrollbar{width:6px}.chronos-timezone-list::-webkit-scrollbar-track{background:#f3f4f6}.chronos-timezone-list::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.chronos-timezone-list::-webkit-scrollbar-thumb:hover{background:#9ca3af}.chronos-picker[data-theme=dark]{color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-dropdown[data-orientation=landscape] .chronos-calendar{border-right-color:#374151}.chronos-picker[data-theme=dark] .chronos-dropdown[data-orientation=landscape] .chronos-time-picker{border-bottom-color:#374151}.chronos-picker[data-theme=dark] .chronos-dropdown[data-orientation=portrait] .chronos-time-picker,.chronos-picker[data-theme=dark] .chronos-dropdown[data-orientation=portrait] .chronos-timezone-selector{border-top-color:#374151}.chronos-picker[data-theme=dark] .chronos-input{background-color:#1f2937;border-color:#374151;color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-input:hover:not(:disabled){border-color:#4b5563}.chronos-picker[data-theme=dark] .chronos-input:disabled{background-color:#111827}.chronos-picker[data-theme=dark] .chronos-input::placeholder{color:#6b7280}.chronos-picker[data-theme=dark] .chronos-calendar-icon{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-dropdown{background:#1f2937;border-color:#374151;box-shadow:0 10px 40px #0006}.chronos-picker[data-theme=dark] .chronos-nav-button{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-nav-button:hover{background:#374151;color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-month-select,.chronos-picker[data-theme=dark] .chronos-year-select{background-color:#1f2937;border-color:#374151;color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-weekday{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-day{color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-day:hover:not(.disabled){background:#374151}.chronos-picker[data-theme=dark] .chronos-day.other-month{color:#6b7280}.chronos-picker[data-theme=dark] .chronos-day.today{color:#60a5fa}.chronos-picker[data-theme=dark] .chronos-day.today:after{background:#60a5fa}.chronos-picker[data-theme=dark] .chronos-day.selected{background:#3b82f6;color:#fff}.chronos-picker[data-theme=dark] .chronos-range-nights{color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-range-dates{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-day.in-range{background:#374151}.chronos-picker[data-theme=dark] .chronos-day.in-range:hover{background:#4b5563}.chronos-picker[data-theme=dark] .chronos-day.range-start.selected,.chronos-picker[data-theme=dark] .chronos-day.range-end.selected{background:#3b82f6;color:#fff;box-shadow:0 0 0 2px #1f2937}.chronos-picker[data-theme=dark] .chronos-time-header,.chronos-picker[data-theme=dark] .chronos-timezone-header{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-time-select,.chronos-picker[data-theme=dark] .chronos-period-toggle,.chronos-picker[data-theme=dark] .chronos-timezone-button{background-color:#1f2937;border-color:#374151;color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-timezone-list{background:#1f2937;border-color:#374151}.chronos-picker[data-theme=dark] .chronos-timezone-option:hover{background:#374151}.chronos-picker[data-theme=dark] .chronos-timezone-option.selected{background:#1e3a5f}.chronos-picker[data-theme=dark] .chronos-timezone-option.selected .chronos-timezone-option-label{color:#60a5fa}
|
|
1
|
+
.chronos-picker{position:relative;display:inline-block;width:100%;max-width:320px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;color:#1a1a1a}.chronos-picker[data-disabled=true]{opacity:.6;cursor:not-allowed}.chronos-input-wrapper{position:relative;display:flex;align-items:center;cursor:pointer}.chronos-input{width:100%;padding:10px 40px 10px 14px;border:1.5px solid #d1d5db;border-radius:8px;font-size:14px;color:#1a1a1a;background-color:#fff;transition:all .2s ease;cursor:pointer;outline:none}.chronos-input:hover:not(:disabled){border-color:#9ca3af}.chronos-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-input:disabled{background-color:#f3f4f6;cursor:not-allowed}.chronos-input::placeholder{color:#9ca3af}.chronos-calendar-icon{position:absolute;right:12px;width:20px;height:20px;color:#6b7280;pointer-events:none;transition:color .2s ease}.chronos-input:hover:not(:disabled)~.chronos-calendar-icon,.chronos-input:focus~.chronos-calendar-icon{color:#3b82f6}.chronos-dropdown{position:absolute;top:calc(100% + 8px);left:0;z-index:99999;min-width:320px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 4px 6px -1px #00000014,0 10px 30px -4px #0000001f;overflow:hidden;animation:chronos-dropdown-appear .2s ease}.chronos-dropdown-content{display:flex;flex-direction:column}.chronos-dropdown[data-orientation=portrait] .chronos-dropdown-content{flex-direction:column}.chronos-dropdown[data-orientation=landscape]{min-width:auto}.chronos-dropdown[data-orientation=landscape] .chronos-dropdown-content{flex-direction:row}.chronos-dropdown[data-orientation=landscape] .chronos-calendar{border-right:1px solid #e5e7eb;border-bottom:none}.chronos-dropdown[data-orientation=landscape] .chronos-sidebar{display:flex;flex-direction:column;min-width:240px}.chronos-dropdown[data-orientation=landscape] .chronos-time-picker{border-top:none;border-bottom:1px solid #e5e7eb}.chronos-dropdown[data-orientation=landscape] .chronos-time-picker:last-child{border-bottom:none}.chronos-dropdown[data-orientation=landscape] .chronos-timezone-selector{border-top:none}@keyframes chronos-dropdown-appear{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.chronos-range-summary{padding:16px 16px 0;margin-bottom:8px}.chronos-range-nights{font-size:1.5rem;font-weight:700;color:#1a1a1a;letter-spacing:-.025em;line-height:1.2}.chronos-range-dates{font-size:.875rem;color:#6b7280;margin-top:4px}.chronos-calendar{padding:16px}.chronos-calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:8px}.chronos-nav-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:6px;background:transparent;color:#4b5563;font-size:20px;font-weight:600;cursor:pointer;transition:all .15s ease}.chronos-nav-button:hover{background:#f3f4f6;color:#1a1a1a}.chronos-nav-button:active{transform:scale(.95)}.chronos-month-year-selectors{display:flex;gap:8px;flex:1;justify-content:center}.chronos-month-select,.chronos-year-select{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;font-weight:500;color:#1a1a1a;background-color:#fff;cursor:pointer;transition:all .15s ease;outline:none}.chronos-month-select:hover,.chronos-year-select:hover{border-color:#9ca3af}.chronos-month-select:focus,.chronos-year-select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-calendar-grid{display:flex;flex-direction:column;gap:4px}.chronos-weekday-row,.chronos-week-row{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.chronos-weekday{display:flex;align-items:center;justify-content:center;height:32px;font-size:11px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.05em}.chronos-day{display:flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 auto;border:none;border-radius:50%;font-size:14px;font-weight:500;color:#1a1a1a;background:transparent;cursor:pointer;transition:all .2s ease;position:relative}.chronos-day:hover:not(.disabled){background:#f3f4f6;transform:scale(1.08)}.chronos-day.other-month{color:#9ca3af}.chronos-day.today{color:#3b82f6;font-weight:600}.chronos-day.today:after{content:"";position:absolute;bottom:5px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:#3b82f6}.chronos-day.selected{background:#3b82f6;color:#fff;font-weight:600;box-shadow:0 2px 8px #3b82f659}.chronos-day.selected:hover{background:#2563eb;box-shadow:0 2px 12px #2563eb66}.chronos-day.disabled{color:#d1d5db;cursor:not-allowed;opacity:.5}.chronos-day.disabled:hover{background:transparent;transform:none}.chronos-day.in-range{background:#e5e7eb;border-radius:0}.chronos-day.in-range:hover{background:#d1d5db}.chronos-day.range-start{border-radius:50% 0 0 50%}.chronos-day.range-start.in-range{background:#e5e7eb}.chronos-day.range-end{border-radius:0 50% 50% 0}.chronos-day.range-end.in-range{background:#e5e7eb}.chronos-day.range-start.selected,.chronos-day.range-end.selected{background:#1a1a1a;color:#fff;font-weight:600;box-shadow:0 0 0 2px #fff}.chronos-day.range-start.selected:hover,.chronos-day.range-end.selected:hover{background:#374151}.chronos-day.range-start.range-end{border-radius:50%}.chronos-day:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.chronos-day.holiday{position:relative}.chronos-holiday-dot{position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background-color:#ef4444}.chronos-day.holiday.long-weekend{background-color:#ecfdf5;color:#047857;font-weight:600}.chronos-day.holiday.long-weekend:hover:not(.disabled){background-color:#d1fae5}.chronos-day.holiday.long-weekend .chronos-holiday-dot{background-color:#10b981}.chronos-picker[data-theme=dark] .chronos-day.holiday.long-weekend{background-color:#064e3b;color:#d1fae5}.chronos-picker[data-theme=dark] .chronos-day.holiday.long-weekend:hover:not(.disabled){background-color:#065f46}.chronos-picker[data-theme=dark] .chronos-day.holiday.long-weekend .chronos-holiday-dot{background-color:#34d399}.chronos-time-picker{padding:16px}.chronos-dropdown[data-orientation=portrait] .chronos-time-picker{border-top:1px solid #e5e7eb}.chronos-time-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:600;color:#4b5563}.chronos-clock-icon{width:18px;height:18px;color:#6b7280}.chronos-time-controls{display:flex;align-items:flex-end;justify-content:center;gap:8px}.chronos-time-input-group{display:flex;flex-direction:column;gap:4px}.chronos-time-label{font-size:11px;font-weight:500;color:#6b7280;text-transform:uppercase;letter-spacing:.5px}.chronos-time-select{width:70px;padding:8px 10px;border:1.5px solid #d1d5db;border-radius:6px;font-size:16px;font-weight:600;color:#1a1a1a;background-color:#fff;cursor:pointer;transition:all .15s ease;outline:none;text-align:center}.chronos-time-select:hover{border-color:#9ca3af}.chronos-time-select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-time-separator{font-size:24px;font-weight:700;color:#1a1a1a;line-height:1;margin-bottom:8px}.chronos-period-toggle{padding:8px 16px;border:1.5px solid #d1d5db;border-radius:6px;font-size:14px;font-weight:600;color:#1a1a1a;background-color:#fff;cursor:pointer;transition:all .15s ease;outline:none}.chronos-period-toggle:hover{border-color:#3b82f6;background-color:#eff6ff;color:#3b82f6}.chronos-period-toggle:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-period-toggle:active{transform:scale(.95)}.chronos-timezone-selector{padding:16px}.chronos-dropdown[data-orientation=portrait] .chronos-timezone-selector{border-top:1px solid #e5e7eb}.chronos-timezone-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:600;color:#4b5563}.chronos-globe-icon{width:18px;height:18px;color:#6b7280}.chronos-timezone-button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;border:1.5px solid #d1d5db;border-radius:8px;background-color:#fff;cursor:pointer;transition:all .15s ease;outline:none}.chronos-timezone-button:hover{border-color:#9ca3af}.chronos-timezone-button:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.chronos-timezone-label{font-weight:500;color:#1a1a1a;flex:1;text-align:left}.chronos-timezone-offset{font-size:12px;color:#6b7280;margin-right:8px}.chronos-chevron{width:16px;height:16px;color:#6b7280;transition:transform .2s ease}.chronos-chevron.expanded{transform:rotate(180deg)}.chronos-timezone-list{margin-top:8px;max-height:240px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:8px;background:#fff;animation:chronos-timezone-list-appear .2s ease}@keyframes chronos-timezone-list-appear{0%{opacity:0;max-height:0}to{opacity:1;max-height:240px}}.chronos-timezone-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;border:none;border-bottom:1px solid #f3f4f6;background:transparent;text-align:left;cursor:pointer;transition:background .15s ease;outline:none}.chronos-timezone-option:last-child{border-bottom:none}.chronos-timezone-option:hover{background:#f9fafb}.chronos-timezone-option.selected{background:#eff6ff}.chronos-timezone-option:focus-visible{outline:2px solid #3b82f6;outline-offset:-2px}.chronos-timezone-option-label{font-weight:500;color:#1a1a1a}.chronos-timezone-option.selected .chronos-timezone-option-label{color:#3b82f6;font-weight:600}.chronos-timezone-option-offset{font-size:12px;color:#6b7280}@media (max-width: 480px){.chronos-dropdown{min-width:calc(100vw - 32px);max-width:calc(100vw - 32px)}.chronos-picker{max-width:100%}}.chronos-timezone-list::-webkit-scrollbar{width:6px}.chronos-timezone-list::-webkit-scrollbar-track{background:#f3f4f6}.chronos-timezone-list::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.chronos-timezone-list::-webkit-scrollbar-thumb:hover{background:#9ca3af}.chronos-picker[data-theme=dark]{color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-dropdown[data-orientation=landscape] .chronos-calendar{border-right-color:#374151}.chronos-picker[data-theme=dark] .chronos-dropdown[data-orientation=landscape] .chronos-time-picker{border-bottom-color:#374151}.chronos-picker[data-theme=dark] .chronos-dropdown[data-orientation=portrait] .chronos-time-picker,.chronos-picker[data-theme=dark] .chronos-dropdown[data-orientation=portrait] .chronos-timezone-selector{border-top-color:#374151}.chronos-picker[data-theme=dark] .chronos-input{background-color:#1f2937;border-color:#374151;color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-input:hover:not(:disabled){border-color:#4b5563}.chronos-picker[data-theme=dark] .chronos-input:disabled{background-color:#111827}.chronos-picker[data-theme=dark] .chronos-input::placeholder{color:#6b7280}.chronos-picker[data-theme=dark] .chronos-calendar-icon{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-dropdown{background:#1f2937;border-color:#374151;box-shadow:0 10px 40px #0006}.chronos-picker[data-theme=dark] .chronos-nav-button{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-nav-button:hover{background:#374151;color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-month-select,.chronos-picker[data-theme=dark] .chronos-year-select{background-color:#1f2937;border-color:#374151;color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-weekday{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-day{color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-day:hover:not(.disabled){background:#374151}.chronos-picker[data-theme=dark] .chronos-day.other-month{color:#6b7280}.chronos-picker[data-theme=dark] .chronos-day.today{color:#60a5fa}.chronos-picker[data-theme=dark] .chronos-day.today:after{background:#60a5fa}.chronos-picker[data-theme=dark] .chronos-day.selected{background:#3b82f6;color:#fff}.chronos-picker[data-theme=dark] .chronos-range-nights{color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-range-dates{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-day.in-range{background:#374151}.chronos-picker[data-theme=dark] .chronos-day.in-range:hover{background:#4b5563}.chronos-picker[data-theme=dark] .chronos-day.range-start.selected,.chronos-picker[data-theme=dark] .chronos-day.range-end.selected{background:#3b82f6;color:#fff;box-shadow:0 0 0 2px #1f2937}.chronos-picker[data-theme=dark] .chronos-time-header,.chronos-picker[data-theme=dark] .chronos-timezone-header{color:#9ca3af}.chronos-picker[data-theme=dark] .chronos-time-select,.chronos-picker[data-theme=dark] .chronos-period-toggle,.chronos-picker[data-theme=dark] .chronos-timezone-button{background-color:#1f2937;border-color:#374151;color:#f3f4f6}.chronos-picker[data-theme=dark] .chronos-timezone-list{background:#1f2937;border-color:#374151}.chronos-picker[data-theme=dark] .chronos-timezone-option:hover{background:#374151}.chronos-picker[data-theme=dark] .chronos-timezone-option.selected{background:#1e3a5f}.chronos-picker[data-theme=dark] .chronos-timezone-option.selected .chronos-timezone-option-label{color:#60a5fa}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theengineerguy/chronos-picker",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "A modern, accessible date & time picker with comprehensive timezone support",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
],
|
|
29
29
|
"author": "Debmalya Biswas <viperbale.db.@gmail.com>",
|
|
30
30
|
"license": "MIT",
|
|
31
|
-
"homepage": "https://
|
|
31
|
+
"homepage": "https://chronos-picker.debmalya.in",
|
|
32
32
|
"bugs": {
|
|
33
33
|
"url": "https://github.com/AnTIdoTe003/chronos-picker/issues"
|
|
34
34
|
},
|