@stackone/malachite 2.62.1 → 2.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/COMPONENTS.md +2 -0
  2. package/dist/assets/icons/caret_double_left.svg.js +6 -0
  3. package/dist/assets/icons/caret_double_left.svg.js.map +1 -0
  4. package/dist/assets/icons/caret_double_right.svg.js +6 -0
  5. package/dist/assets/icons/caret_double_right.svg.js.map +1 -0
  6. package/dist/components/Chat/ChatThread.js +1 -2
  7. package/dist/components/Chat/ChatThread.js.map +1 -1
  8. package/dist/components/CustomIcons/CaretDoubleLeftIcon.js +21 -0
  9. package/dist/components/CustomIcons/CaretDoubleLeftIcon.js.map +1 -0
  10. package/dist/components/CustomIcons/CaretDoubleRightIcon.js +21 -0
  11. package/dist/components/CustomIcons/CaretDoubleRightIcon.js.map +1 -0
  12. package/dist/components/CustomIcons/index.js +306 -300
  13. package/dist/components/CustomIcons/index.js.map +1 -1
  14. package/dist/components/DatePicker.js +36 -0
  15. package/dist/components/DatePicker.js.map +1 -0
  16. package/dist/components/DatePickerField.js +246 -0
  17. package/dist/components/DatePickerField.js.map +1 -0
  18. package/dist/components/DatePickerPanel.js +399 -0
  19. package/dist/components/DatePickerPanel.js.map +1 -0
  20. package/dist/components/DatePickerTrigger.js +68 -0
  21. package/dist/components/DatePickerTrigger.js.map +1 -0
  22. package/dist/components/DateRangePicker.js +43 -0
  23. package/dist/components/DateRangePicker.js.map +1 -0
  24. package/dist/components/dateMath.js +153 -0
  25. package/dist/components/dateMath.js.map +1 -0
  26. package/dist/components/datePickerStyles.js +46 -0
  27. package/dist/components/datePickerStyles.js.map +1 -0
  28. package/dist/components/useDatePickerDraft.js +126 -0
  29. package/dist/components/useDatePickerDraft.js.map +1 -0
  30. package/dist/index.d.ts +233 -101
  31. package/dist/index.js +431 -423
  32. package/dist/index.js.map +1 -1
  33. package/dist/tailwind.css.js +1 -1
  34. package/dist/theme.js +372 -349
  35. package/dist/theme.js.map +1 -1
  36. package/package.json +1 -1
@@ -0,0 +1,153 @@
1
+ const M = [
2
+ "Jan",
3
+ "Feb",
4
+ "Mar",
5
+ "Apr",
6
+ "May",
7
+ "Jun",
8
+ "Jul",
9
+ "Aug",
10
+ "Sep",
11
+ "Oct",
12
+ "Nov",
13
+ "Dec"
14
+ ], F = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], E = [
15
+ "Sunday",
16
+ "Monday",
17
+ "Tuesday",
18
+ "Wednesday",
19
+ "Thursday",
20
+ "Friday",
21
+ "Saturday"
22
+ ], g = (t, e) => e === "utc" ? {
23
+ year: t.getUTCFullYear(),
24
+ month: t.getUTCMonth(),
25
+ day: t.getUTCDate(),
26
+ hours: t.getUTCHours(),
27
+ minutes: t.getUTCMinutes(),
28
+ seconds: t.getUTCSeconds()
29
+ } : {
30
+ year: t.getFullYear(),
31
+ month: t.getMonth(),
32
+ day: t.getDate(),
33
+ hours: t.getHours(),
34
+ minutes: t.getMinutes(),
35
+ seconds: t.getSeconds()
36
+ };
37
+ const a = ({ year: t, month: e, day: n, hours: s = 0, minutes: o = 0, seconds: m = 0 }, c, r = 0) => {
38
+ const u = t >= 0 && t < 100 ? 400 : 0;
39
+ if (c === "utc") {
40
+ const y = new Date(
41
+ Date.UTC(t + u, e, n, s, o, m, r)
42
+ );
43
+ return u && y.setUTCFullYear(y.getUTCFullYear() - u), y;
44
+ }
45
+ const d = new Date(t + u, e, n, s, o, m, r);
46
+ return u && d.setFullYear(d.getFullYear() - u), d;
47
+ }, h = (t, e) => {
48
+ const { year: n, month: s, day: o } = g(t, e);
49
+ return { year: n, month: s, day: o };
50
+ }, Y = (t, e) => t.year - e.year || t.month - e.month || t.day - e.day, b = (t, e) => !!t && !!e && Y(t, e) === 0, I = ({ year: t, month: e, day: n }) => `${t}-${String(e + 1).padStart(2, "0")}-${String(n).padStart(2, "0")}`, k = ({ year: t, month: e, day: n }, s) => a({ year: t, month: e, day: n }, s), _ = ({ year: t, month: e, day: n }, s) => a({ year: t, month: e, day: n, hours: 23, minutes: 59, seconds: 59 }, s, 999), l = (t, e) => h(a({ year: t.year, month: t.month, day: t.day + e }, "utc"), "utc"), N = ({ year: t, month: e }) => h(a({ year: t, month: e + 1, day: 0 }, "utc"), "utc").day, p = ({ year: t, month: e }, n) => {
51
+ const s = t * 12 + e + n;
52
+ return { year: Math.floor(s / 12), month: (s % 12 + 12) % 12 };
53
+ }, W = (t, e) => {
54
+ const n = p(t, e);
55
+ return { ...n, day: Math.min(t.day, N(n)) };
56
+ }, U = (t) => a(t, "utc").getUTCDay(), f = { sunday: 0, monday: 1 }, R = (t) => Array.from({ length: 7 }, (e, n) => {
57
+ const s = (n + f[t]) % 7;
58
+ return { short: F[s], long: E[s] };
59
+ }), K = (t, e) => {
60
+ const n = { ...t, day: 1 }, s = (U(n) - f[e] + 7) % 7, o = Math.ceil((s + N(t)) / 7) * 7, m = l(n, -s), c = [];
61
+ for (let r = 0; r < o; r++)
62
+ r % 7 === 0 && c.push([]), c[c.length - 1].push(l(m, r));
63
+ return c;
64
+ }, L = (t, e) => l(t, -((U(t) - f[e] + 7) % 7)), J = ({ year: t, month: e }) => `${M[e]} ${t}`, i = (t) => String(t).padStart(2, "0"), w = (t, e) => e === "second" ? `${i(t.hours)}:${i(t.minutes)}:${i(t.seconds)}` : `${i(t.hours)}:${i(t.minutes)}`, O = (t) => t === "utc" ? " UTC" : "", Z = (t, e, n) => {
65
+ const s = g(t, e), o = `${M[s.month]} ${s.day} ${s.year}`;
66
+ return n === "day" ? o : `${o}, ${w(s, n)}${O(e)}`;
67
+ }, x = (t, e, n) => `${t ? w(g(t, e), n) : n === "second" ? "--:--:--" : "--:--"}${O(e)}`;
68
+ let $;
69
+ const B = (t) => ($ ?? ($ = new Intl.DateTimeFormat("en-US", {
70
+ weekday: "long",
71
+ year: "numeric",
72
+ month: "long",
73
+ day: "numeric",
74
+ timeZone: "UTC"
75
+ })), $.format(a(t, "utc"))), G = (t, e, n) => e && t.getTime() < e.getTime() ? new Date(e.getTime()) : n && t.getTime() > n.getTime() ? new Date(n.getTime()) : t, P = (t, e, n, s) => (!n || e.getTime() >= n.getTime()) && (!s || t.getTime() <= s.getTime()), A = (t) => t instanceof Date && !Number.isNaN(t.getTime()), H = /^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,3}))?)?)?$/, V = (t, e) => {
76
+ if (t == null || t === "")
77
+ return null;
78
+ const n = typeof t == "string" ? H.exec(t) : null;
79
+ if (n) {
80
+ const [, o, m, c, r = "0", u = "0", d = "0", y = ""] = n, T = {
81
+ year: Number(o),
82
+ month: Number(m) - 1,
83
+ day: Number(c),
84
+ hours: Number(r),
85
+ minutes: Number(u),
86
+ seconds: Number(d)
87
+ };
88
+ if (T.hours > 23 || T.minutes > 59 || T.seconds > 59)
89
+ return null;
90
+ const S = a(T, e, Number(y.padEnd(3, "0")));
91
+ return b(h(S, e), T) ? S : null;
92
+ }
93
+ const s = t instanceof Date ? t : new Date(t);
94
+ return A(s) ? s : null;
95
+ }, X = (t, e, n) => a(
96
+ {
97
+ year: t.year,
98
+ month: t.month,
99
+ day: t.day,
100
+ hours: e.hours,
101
+ minutes: e.minutes,
102
+ seconds: e.seconds
103
+ },
104
+ n
105
+ ), D = {
106
+ minute: 6e4,
107
+ second: 1e3
108
+ }, C = (t, e, n) => {
109
+ if (n === "day")
110
+ return k(g(t, e), e);
111
+ if (e === "local" && !Number.isInteger(t.getTimezoneOffset())) {
112
+ const o = g(t, e);
113
+ return a({ ...o, seconds: n === "second" ? o.seconds : 0 }, e);
114
+ }
115
+ const s = D[n];
116
+ return new Date(Math.floor(t.getTime() / s) * s);
117
+ }, j = (t, e, n) => n === "day" ? _(h(t, e), e) : new Date(C(t, e, n).getTime() + D[n] - 1), q = (t, e, n) => {
118
+ if (n === "day")
119
+ return t;
120
+ const s = C(t, e, n);
121
+ return s.getTime() < t.getTime() ? new Date(s.getTime() + D[n]) : s;
122
+ };
123
+ export {
124
+ l as addDays,
125
+ p as addMonths,
126
+ W as addMonthsToDay,
127
+ q as ceilTo,
128
+ G as clampDate,
129
+ Y as compareDays,
130
+ h as dayKeyOf,
131
+ I as dayKeyString,
132
+ N as daysInMonth,
133
+ _ as endOfDay,
134
+ j as endOfUnit,
135
+ Z as formatDate,
136
+ w as formatTime,
137
+ x as formatTimeReadout,
138
+ a as fromParts,
139
+ J as monthLabel,
140
+ K as monthWeeks,
141
+ P as overlapsBounds,
142
+ g as partsOf,
143
+ b as sameDay,
144
+ B as spokenDay,
145
+ k as startOfDay,
146
+ L as startOfWeek,
147
+ V as toDate,
148
+ C as truncateTo,
149
+ R as weekdayLabels,
150
+ U as weekdayOf,
151
+ X as withTime
152
+ };
153
+ //# sourceMappingURL=dateMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateMath.js","sources":["../../src/components/dateMath.ts"],"sourcesContent":["export type DatePickerTimeZone = 'local' | 'utc';\n\nexport type DatePickerPrecision = 'day' | 'minute' | 'second';\n\nexport type WeekStart = 'monday' | 'sunday';\n\nexport interface DayKey {\n year: number;\n month: number;\n day: number;\n}\n\nexport interface MonthKey {\n year: number;\n month: number;\n}\n\nexport interface DateTimeParts extends DayKey {\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nexport interface DateRange {\n start: Date;\n end: Date;\n}\n\nconst MONTHS_SHORT = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n] as const;\n\nconst WEEKDAYS_SHORT = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] as const;\nconst WEEKDAYS_LONG = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n] as const;\n\nexport const partsOf = (date: Date, zone: DatePickerTimeZone): DateTimeParts =>\n zone === 'utc'\n ? {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth(),\n day: date.getUTCDate(),\n hours: date.getUTCHours(),\n minutes: date.getUTCMinutes(),\n seconds: date.getUTCSeconds(),\n }\n : {\n year: date.getFullYear(),\n month: date.getMonth(),\n day: date.getDate(),\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n };\n\n// `Date` reads years 0-99 as 19xx; build 400 years on (same calendar) and move back.\nconst YEAR_SHIFT = 400;\n\nexport const fromParts = (\n { year, month, day, hours = 0, minutes = 0, seconds = 0 }: DayKey & Partial<DateTimeParts>,\n zone: DatePickerTimeZone,\n milliseconds = 0,\n): Date => {\n const shift = year >= 0 && year < 100 ? YEAR_SHIFT : 0;\n if (zone === 'utc') {\n const date = new Date(\n Date.UTC(year + shift, month, day, hours, minutes, seconds, milliseconds),\n );\n if (shift) {\n date.setUTCFullYear(date.getUTCFullYear() - shift);\n }\n return date;\n }\n const date = new Date(year + shift, month, day, hours, minutes, seconds, milliseconds);\n if (shift) {\n date.setFullYear(date.getFullYear() - shift);\n }\n return date;\n};\n\nexport const dayKeyOf = (date: Date, zone: DatePickerTimeZone): DayKey => {\n const { year, month, day } = partsOf(date, zone);\n return { year, month, day };\n};\n\nexport const compareDays = (a: DayKey, b: DayKey): number =>\n a.year - b.year || a.month - b.month || a.day - b.day;\n\nexport const sameDay = (a: DayKey | null | undefined, b: DayKey | null | undefined): boolean =>\n !!a && !!b && compareDays(a, b) === 0;\n\nexport const dayKeyString = ({ year, month, day }: DayKey): string =>\n `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n\nexport const startOfDay = ({ year, month, day }: DayKey, zone: DatePickerTimeZone): Date =>\n fromParts({ year, month, day }, zone);\n\nexport const endOfDay = ({ year, month, day }: DayKey, zone: DatePickerTimeZone): Date =>\n fromParts({ year, month, day, hours: 23, minutes: 59, seconds: 59 }, zone, 999);\n\nexport const addDays = (day: DayKey, amount: number): DayKey =>\n dayKeyOf(fromParts({ year: day.year, month: day.month, day: day.day + amount }, 'utc'), 'utc');\n\nexport const daysInMonth = ({ year, month }: MonthKey): number =>\n dayKeyOf(fromParts({ year, month: month + 1, day: 0 }, 'utc'), 'utc').day;\n\nexport const addMonths = ({ year, month }: MonthKey, amount: number): MonthKey => {\n const total = year * 12 + month + amount;\n return { year: Math.floor(total / 12), month: ((total % 12) + 12) % 12 };\n};\n\nexport const addMonthsToDay = (day: DayKey, amount: number): DayKey => {\n const target = addMonths(day, amount);\n return { ...target, day: Math.min(day.day, daysInMonth(target)) };\n};\n\nexport const weekdayOf = (day: DayKey): number => fromParts(day, 'utc').getUTCDay();\n\nconst WEEK_START_INDEX: Record<WeekStart, number> = { sunday: 0, monday: 1 };\n\nexport const weekdayLabels = (weekStart: WeekStart): { short: string; long: string }[] =>\n Array.from({ length: 7 }, (_, index) => {\n const weekday = (index + WEEK_START_INDEX[weekStart]) % 7;\n return { short: WEEKDAYS_SHORT[weekday], long: WEEKDAYS_LONG[weekday] };\n });\n\nexport const monthWeeks = (view: MonthKey, weekStart: WeekStart): DayKey[][] => {\n const first: DayKey = { ...view, day: 1 };\n const lead = (weekdayOf(first) - WEEK_START_INDEX[weekStart] + 7) % 7;\n const cellCount = Math.ceil((lead + daysInMonth(view)) / 7) * 7;\n const start = addDays(first, -lead);\n const weeks: DayKey[][] = [];\n for (let index = 0; index < cellCount; index++) {\n if (index % 7 === 0) {\n weeks.push([]);\n }\n weeks[weeks.length - 1].push(addDays(start, index));\n }\n return weeks;\n};\n\nexport const startOfWeek = (day: DayKey, weekStart: WeekStart): DayKey =>\n addDays(day, -((weekdayOf(day) - WEEK_START_INDEX[weekStart] + 7) % 7));\n\nexport const monthLabel = ({ year, month }: MonthKey): string => `${MONTHS_SHORT[month]} ${year}`;\n\nconst pad = (value: number): string => String(value).padStart(2, '0');\n\nexport const formatTime = (\n parts: Pick<DateTimeParts, 'hours' | 'minutes' | 'seconds'>,\n precision: DatePickerPrecision,\n): string =>\n precision === 'second'\n ? `${pad(parts.hours)}:${pad(parts.minutes)}:${pad(parts.seconds)}`\n : `${pad(parts.hours)}:${pad(parts.minutes)}`;\n\nconst zoneSuffix = (zone: DatePickerTimeZone): string => (zone === 'utc' ? ' UTC' : '');\n\nexport const formatDate = (\n date: Date,\n zone: DatePickerTimeZone,\n precision: DatePickerPrecision,\n): string => {\n const parts = partsOf(date, zone);\n const day = `${MONTHS_SHORT[parts.month]} ${parts.day} ${parts.year}`;\n return precision === 'day' ? day : `${day}, ${formatTime(parts, precision)}${zoneSuffix(zone)}`;\n};\n\nexport const formatTimeReadout = (\n date: Date | null,\n zone: DatePickerTimeZone,\n precision: DatePickerPrecision,\n): string =>\n `${date ? formatTime(partsOf(date, zone), precision) : precision === 'second' ? '--:--:--' : '--:--'}${zoneSuffix(zone)}`;\n\n// Lazy, so importing the module has no side effects.\nlet spokenDayFormat: Intl.DateTimeFormat | undefined;\n\nexport const spokenDay = (day: DayKey): string => {\n spokenDayFormat ??= new Intl.DateTimeFormat('en-US', {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n timeZone: 'UTC',\n });\n return spokenDayFormat.format(fromParts(day, 'utc'));\n};\n\nexport const clampDate = (date: Date, min?: Date, max?: Date): Date => {\n if (min && date.getTime() < min.getTime()) {\n return new Date(min.getTime());\n }\n if (max && date.getTime() > max.getTime()) {\n return new Date(max.getTime());\n }\n return date;\n};\n\nexport const overlapsBounds = (from: Date, to: Date, min?: Date, max?: Date): boolean =>\n (!min || to.getTime() >= min.getTime()) && (!max || from.getTime() <= max.getTime());\n\nconst isValidDate = (value: unknown): value is Date =>\n value instanceof Date && !Number.isNaN(value.getTime());\n\nconst ZONELESS = /^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?)?$/;\n\nexport const toDate = (\n value: Date | string | number | null | undefined,\n zone: DatePickerTimeZone,\n): Date | null => {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n // Without an offset, a string names a wall-clock time in `zone`, not in the browser's.\n const zoneless = typeof value === 'string' ? ZONELESS.exec(value) : null;\n if (zoneless) {\n const [, year, month, day, hours = '0', minutes = '0', seconds = '0', ms = ''] = zoneless;\n const parts = {\n year: Number(year),\n month: Number(month) - 1,\n day: Number(day),\n hours: Number(hours),\n minutes: Number(minutes),\n seconds: Number(seconds),\n };\n if (parts.hours > 23 || parts.minutes > 59 || parts.seconds > 59) {\n return null;\n }\n const date = fromParts(parts, zone, Number(ms.padEnd(3, '0')));\n return sameDay(dayKeyOf(date, zone), parts) ? date : null;\n }\n const date = value instanceof Date ? value : new Date(value);\n return isValidDate(date) ? date : null;\n};\n\nexport const withTime = (\n day: DayKey,\n time: Pick<DateTimeParts, 'hours' | 'minutes' | 'seconds'>,\n zone: DatePickerTimeZone,\n): Date =>\n fromParts(\n {\n year: day.year,\n month: day.month,\n day: day.day,\n hours: time.hours,\n minutes: time.minutes,\n seconds: time.seconds,\n },\n zone,\n );\n\nconst UNIT_MS: Record<Exclude<DatePickerPrecision, 'day'>, number> = {\n minute: 60_000,\n second: 1_000,\n};\n\n// Arithmetic, not a rebuild from local fields, which moves the repeated hour when clocks go back.\nexport const truncateTo = (\n date: Date,\n zone: DatePickerTimeZone,\n precision: DatePickerPrecision,\n): Date => {\n if (precision === 'day') {\n return startOfDay(partsOf(date, zone), zone);\n }\n if (zone === 'local' && !Number.isInteger(date.getTimezoneOffset())) {\n const parts = partsOf(date, zone);\n return fromParts({ ...parts, seconds: precision === 'second' ? parts.seconds : 0 }, zone);\n }\n const unit = UNIT_MS[precision];\n return new Date(Math.floor(date.getTime() / unit) * unit);\n};\n\n/** The last millisecond of the unit `date` falls in, so a range end covers the whole of it. */\nexport const endOfUnit = (\n date: Date,\n zone: DatePickerTimeZone,\n precision: DatePickerPrecision,\n): Date =>\n precision === 'day'\n ? endOfDay(dayKeyOf(date, zone), zone)\n : new Date(truncateTo(date, zone, precision).getTime() + UNIT_MS[precision] - 1);\n\nexport const ceilTo = (\n date: Date,\n zone: DatePickerTimeZone,\n precision: DatePickerPrecision,\n): Date => {\n if (precision === 'day') {\n return date;\n }\n const floor = truncateTo(date, zone, precision);\n return floor.getTime() < date.getTime()\n ? new Date(floor.getTime() + UNIT_MS[precision])\n : floor;\n};\n"],"names":["MONTHS_SHORT","WEEKDAYS_SHORT","WEEKDAYS_LONG","partsOf","date","zone","fromParts","year","month","day","hours","minutes","seconds","milliseconds","shift","dayKeyOf","compareDays","a","b","sameDay","dayKeyString","startOfDay","endOfDay","addDays","amount","daysInMonth","addMonths","total","addMonthsToDay","target","weekdayOf","WEEK_START_INDEX","weekdayLabels","weekStart","_","index","weekday","monthWeeks","view","first","lead","cellCount","start","weeks","startOfWeek","monthLabel","pad","value","formatTime","parts","precision","zoneSuffix","formatDate","formatTimeReadout","spokenDayFormat","spokenDay","clampDate","min","max","overlapsBounds","from","to","isValidDate","ZONELESS","toDate","zoneless","ms","withTime","time","UNIT_MS","truncateTo","unit","endOfUnit","ceilTo","floor"],"mappings":"AA4BA,MAAMA,IAAe;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAEMC,IAAiB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAC1DC,IAAgB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAEaC,IAAU,CAACC,GAAYC,MAChCA,MAAS,QACH;AAAA,EACI,MAAMD,EAAK,eAAA;AAAA,EACX,OAAOA,EAAK,YAAA;AAAA,EACZ,KAAKA,EAAK,WAAA;AAAA,EACV,OAAOA,EAAK,YAAA;AAAA,EACZ,SAASA,EAAK,cAAA;AAAA,EACd,SAASA,EAAK,cAAA;AAClB,IACA;AAAA,EACI,MAAMA,EAAK,YAAA;AAAA,EACX,OAAOA,EAAK,SAAA;AAAA,EACZ,KAAKA,EAAK,QAAA;AAAA,EACV,OAAOA,EAAK,SAAA;AAAA,EACZ,SAASA,EAAK,WAAA;AAAA,EACd,SAASA,EAAK,WAAA;AAClB;AAKH,MAAME,IAAY,CACrB,EAAE,MAAAC,GAAM,OAAAC,GAAO,KAAAC,GAAK,OAAAC,IAAQ,GAAG,SAAAC,IAAU,GAAG,SAAAC,IAAU,EAAA,GACtDP,GACAQ,IAAe,MACR;AACP,QAAMC,IAAQP,KAAQ,KAAKA,IAAO,MAAM,MAAa;AACrD,MAAIF,MAAS,OAAO;AAChB,UAAMD,IAAO,IAAI;AAAA,MACb,KAAK,IAAIG,IAAOO,GAAON,GAAOC,GAAKC,GAAOC,GAASC,GAASC,CAAY;AAAA,IAAA;AAE5E,WAAIC,KACAV,EAAK,eAAeA,EAAK,eAAA,IAAmBU,CAAK,GAE9CV;AAAAA,EACX;AACA,QAAMA,IAAO,IAAI,KAAKG,IAAOO,GAAON,GAAOC,GAAKC,GAAOC,GAASC,GAASC,CAAY;AACrF,SAAIC,KACAV,EAAK,YAAYA,EAAK,YAAA,IAAgBU,CAAK,GAExCV;AACX,GAEaW,IAAW,CAACX,GAAYC,MAAqC;AACtE,QAAM,EAAE,MAAAE,GAAM,OAAAC,GAAO,KAAAC,MAAQN,EAAQC,GAAMC,CAAI;AAC/C,SAAO,EAAE,MAAAE,GAAM,OAAAC,GAAO,KAAAC,EAAA;AAC1B,GAEaO,IAAc,CAACC,GAAWC,MACnCD,EAAE,OAAOC,EAAE,QAAQD,EAAE,QAAQC,EAAE,SAASD,EAAE,MAAMC,EAAE,KAEzCC,IAAU,CAACF,GAA8BC,MAClD,CAAC,CAACD,KAAK,CAAC,CAACC,KAAKF,EAAYC,GAAGC,CAAC,MAAM,GAE3BE,IAAe,CAAC,EAAE,MAAAb,GAAM,OAAAC,GAAO,KAAAC,QACxC,GAAGF,CAAI,IAAI,OAAOC,IAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAOC,CAAG,EAAE,SAAS,GAAG,GAAG,CAAC,IAEpEY,IAAa,CAAC,EAAE,MAAAd,GAAM,OAAAC,GAAO,KAAAC,EAAA,GAAeJ,MACrDC,EAAU,EAAE,MAAAC,GAAM,OAAAC,GAAO,KAAAC,EAAA,GAAOJ,CAAI,GAE3BiB,IAAW,CAAC,EAAE,MAAAf,GAAM,OAAAC,GAAO,KAAAC,EAAA,GAAeJ,MACnDC,EAAU,EAAE,MAAAC,GAAM,OAAAC,GAAO,KAAAC,GAAK,OAAO,IAAI,SAAS,IAAI,SAAS,MAAMJ,GAAM,GAAG,GAErEkB,IAAU,CAACd,GAAae,MACjCT,EAAST,EAAU,EAAE,MAAMG,EAAI,MAAM,OAAOA,EAAI,OAAO,KAAKA,EAAI,MAAMe,KAAU,KAAK,GAAG,KAAK,GAEpFC,IAAc,CAAC,EAAE,MAAAlB,GAAM,OAAAC,EAAA,MAChCO,EAAST,EAAU,EAAE,MAAAC,GAAM,OAAOC,IAAQ,GAAG,KAAK,EAAA,GAAK,KAAK,GAAG,KAAK,EAAE,KAE7DkB,IAAY,CAAC,EAAE,MAAAnB,GAAM,OAAAC,EAAA,GAAmBgB,MAA6B;AAC9E,QAAMG,IAAQpB,IAAO,KAAKC,IAAQgB;AAClC,SAAO,EAAE,MAAM,KAAK,MAAMG,IAAQ,EAAE,GAAG,QAASA,IAAQ,KAAM,MAAM,GAAA;AACxE,GAEaC,IAAiB,CAACnB,GAAae,MAA2B;AACnE,QAAMK,IAASH,EAAUjB,GAAKe,CAAM;AACpC,SAAO,EAAE,GAAGK,GAAQ,KAAK,KAAK,IAAIpB,EAAI,KAAKgB,EAAYI,CAAM,CAAC,EAAA;AAClE,GAEaC,IAAY,CAACrB,MAAwBH,EAAUG,GAAK,KAAK,EAAE,UAAA,GAElEsB,IAA8C,EAAE,QAAQ,GAAG,QAAQ,EAAA,GAE5DC,IAAgB,CAACC,MAC1B,MAAM,KAAK,EAAE,QAAQ,EAAA,GAAK,CAACC,GAAGC,MAAU;AACpC,QAAMC,KAAWD,IAAQJ,EAAiBE,CAAS,KAAK;AACxD,SAAO,EAAE,OAAOhC,EAAemC,CAAO,GAAG,MAAMlC,EAAckC,CAAO,EAAA;AACxE,CAAC,GAEQC,IAAa,CAACC,GAAgBL,MAAqC;AAC5E,QAAMM,IAAgB,EAAE,GAAGD,GAAM,KAAK,EAAA,GAChCE,KAAQV,EAAUS,CAAK,IAAIR,EAAiBE,CAAS,IAAI,KAAK,GAC9DQ,IAAY,KAAK,MAAMD,IAAOf,EAAYa,CAAI,KAAK,CAAC,IAAI,GACxDI,IAAQnB,EAAQgB,GAAO,CAACC,CAAI,GAC5BG,IAAoB,CAAA;AAC1B,WAASR,IAAQ,GAAGA,IAAQM,GAAWN;AACnC,IAAIA,IAAQ,MAAM,KACdQ,EAAM,KAAK,EAAE,GAEjBA,EAAMA,EAAM,SAAS,CAAC,EAAE,KAAKpB,EAAQmB,GAAOP,CAAK,CAAC;AAEtD,SAAOQ;AACX,GAEaC,IAAc,CAACnC,GAAawB,MACrCV,EAAQd,GAAK,GAAGqB,EAAUrB,CAAG,IAAIsB,EAAiBE,CAAS,IAAI,KAAK,EAAE,GAE7DY,IAAa,CAAC,EAAE,MAAAtC,GAAM,OAAAC,EAAA,MAA8B,GAAGR,EAAaQ,CAAK,CAAC,IAAID,CAAI,IAEzFuC,IAAM,CAACC,MAA0B,OAAOA,CAAK,EAAE,SAAS,GAAG,GAAG,GAEvDC,IAAa,CACtBC,GACAC,MAEAA,MAAc,WACR,GAAGJ,EAAIG,EAAM,KAAK,CAAC,IAAIH,EAAIG,EAAM,OAAO,CAAC,IAAIH,EAAIG,EAAM,OAAO,CAAC,KAC/D,GAAGH,EAAIG,EAAM,KAAK,CAAC,IAAIH,EAAIG,EAAM,OAAO,CAAC,IAE7CE,IAAa,CAAC9C,MAAsCA,MAAS,QAAQ,SAAS,IAEvE+C,IAAa,CACtBhD,GACAC,GACA6C,MACS;AACT,QAAMD,IAAQ9C,EAAQC,GAAMC,CAAI,GAC1BI,IAAM,GAAGT,EAAaiD,EAAM,KAAK,CAAC,IAAIA,EAAM,GAAG,IAAIA,EAAM,IAAI;AACnE,SAAOC,MAAc,QAAQzC,IAAM,GAAGA,CAAG,KAAKuC,EAAWC,GAAOC,CAAS,CAAC,GAAGC,EAAW9C,CAAI,CAAC;AACjG,GAEagD,IAAoB,CAC7BjD,GACAC,GACA6C,MAEA,GAAG9C,IAAO4C,EAAW7C,EAAQC,GAAMC,CAAI,GAAG6C,CAAS,IAAIA,MAAc,WAAW,aAAa,OAAO,GAAGC,EAAW9C,CAAI,CAAC;AAG3H,IAAIiD;AAEG,MAAMC,IAAY,CAAC9C,OACtB6C,UAAoB,IAAI,KAAK,eAAe,SAAS;AAAA,EACjD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,UAAU;AAAA,CACb,IACMA,EAAgB,OAAOhD,EAAUG,GAAK,KAAK,CAAC,IAG1C+C,IAAY,CAACpD,GAAYqD,GAAYC,MAC1CD,KAAOrD,EAAK,QAAA,IAAYqD,EAAI,YACrB,IAAI,KAAKA,EAAI,SAAS,IAE7BC,KAAOtD,EAAK,QAAA,IAAYsD,EAAI,YACrB,IAAI,KAAKA,EAAI,SAAS,IAE1BtD,GAGEuD,IAAiB,CAACC,GAAYC,GAAUJ,GAAYC,OAC5D,CAACD,KAAOI,EAAG,QAAA,KAAaJ,EAAI,QAAA,OAAe,CAACC,KAAOE,EAAK,QAAA,KAAaF,EAAI,QAAA,IAExEI,IAAc,CAACf,MACjBA,aAAiB,QAAQ,CAAC,OAAO,MAAMA,EAAM,SAAS,GAEpDgB,IAAW,kFAEJC,IAAS,CAClBjB,GACA1C,MACc;AACd,MAAI0C,KAAU,QAA+BA,MAAU;AACnD,WAAO;AAGX,QAAMkB,IAAW,OAAOlB,KAAU,WAAWgB,EAAS,KAAKhB,CAAK,IAAI;AACpE,MAAIkB,GAAU;AACV,UAAM,CAAA,EAAG1D,GAAMC,GAAOC,GAAKC,IAAQ,KAAKC,IAAU,KAAKC,IAAU,KAAKsD,IAAK,EAAE,IAAID,GAC3EhB,IAAQ;AAAA,MACV,MAAM,OAAO1C,CAAI;AAAA,MACjB,OAAO,OAAOC,CAAK,IAAI;AAAA,MACvB,KAAK,OAAOC,CAAG;AAAA,MACf,OAAO,OAAOC,CAAK;AAAA,MACnB,SAAS,OAAOC,CAAO;AAAA,MACvB,SAAS,OAAOC,CAAO;AAAA,IAAA;AAE3B,QAAIqC,EAAM,QAAQ,MAAMA,EAAM,UAAU,MAAMA,EAAM,UAAU;AAC1D,aAAO;AAEX,UAAM7C,IAAOE,EAAU2C,GAAO5C,GAAM,OAAO6D,EAAG,OAAO,GAAG,GAAG,CAAC,CAAC;AAC7D,WAAO/C,EAAQJ,EAASX,GAAMC,CAAI,GAAG4C,CAAK,IAAI7C,IAAO;AAAA,EACzD;AACA,QAAMA,IAAO2C,aAAiB,OAAOA,IAAQ,IAAI,KAAKA,CAAK;AAC3D,SAAOe,EAAY1D,CAAI,IAAIA,IAAO;AACtC,GAEa+D,IAAW,CACpB1D,GACA2D,GACA/D,MAEAC;AAAA,EACI;AAAA,IACI,MAAMG,EAAI;AAAA,IACV,OAAOA,EAAI;AAAA,IACX,KAAKA,EAAI;AAAA,IACT,OAAO2D,EAAK;AAAA,IACZ,SAASA,EAAK;AAAA,IACd,SAASA,EAAK;AAAA,EAAA;AAAA,EAElB/D;AACJ,GAEEgE,IAA+D;AAAA,EACjE,QAAQ;AAAA,EACR,QAAQ;AACZ,GAGaC,IAAa,CACtBlE,GACAC,GACA6C,MACO;AACP,MAAIA,MAAc;AACd,WAAO7B,EAAWlB,EAAQC,GAAMC,CAAI,GAAGA,CAAI;AAE/C,MAAIA,MAAS,WAAW,CAAC,OAAO,UAAUD,EAAK,kBAAA,CAAmB,GAAG;AACjE,UAAM6C,IAAQ9C,EAAQC,GAAMC,CAAI;AAChC,WAAOC,EAAU,EAAE,GAAG2C,GAAO,SAASC,MAAc,WAAWD,EAAM,UAAU,EAAA,GAAK5C,CAAI;AAAA,EAC5F;AACA,QAAMkE,IAAOF,EAAQnB,CAAS;AAC9B,SAAO,IAAI,KAAK,KAAK,MAAM9C,EAAK,QAAA,IAAYmE,CAAI,IAAIA,CAAI;AAC5D,GAGaC,IAAY,CACrBpE,GACAC,GACA6C,MAEAA,MAAc,QACR5B,EAASP,EAASX,GAAMC,CAAI,GAAGA,CAAI,IACnC,IAAI,KAAKiE,EAAWlE,GAAMC,GAAM6C,CAAS,EAAE,QAAA,IAAYmB,EAAQnB,CAAS,IAAI,CAAC,GAE1EuB,IAAS,CAClBrE,GACAC,GACA6C,MACO;AACP,MAAIA,MAAc;AACd,WAAO9C;AAEX,QAAMsE,IAAQJ,EAAWlE,GAAMC,GAAM6C,CAAS;AAC9C,SAAOwB,EAAM,QAAA,IAAYtE,EAAK,YACxB,IAAI,KAAKsE,EAAM,QAAA,IAAYL,EAAQnB,CAAS,CAAC,IAC7CwB;AACV;"}
@@ -0,0 +1,46 @@
1
+ import { FOCUS_RING as s } from "./focusRing.js";
2
+ const d = "relative z-[1] flex items-center justify-center size-6 shrink-0 rounded-lg border border-solid border-transparent bg-transparent p-0 font-sans text-[length:var(--malachite-font-size-small,13px)] leading-none select-none transition-colors duration-150", g = "cursor-pointer active:opacity-[var(--malachite-date-picker-pressed-opacity,0.6)]", m = "cursor-not-allowed", f = (r) => [d, s, r ? m : g].join(" "), h = "text-[var(--malachite-text-primary,rgb(10,10,10))]", b = "text-[var(--malachite-date-picker-outside-foreground,var(--malachite-text-secondary,rgb(123,123,123)))] supports-[color:color-mix(in_srgb,red,red)]:text-[var(--malachite-date-picker-outside-foreground,color-mix(in_srgb,var(--malachite-text-primary,rgb(10,10,10))_60%,transparent))]", p = "text-[var(--malachite-text-placeholder,rgb(187,187,187))]", v = "text-[var(--malachite-accent-foreground,rgb(2,122,66))]", c = "hover:bg-[var(--malachite-date-picker-hover-background,var(--malachite-pillbutton-hover-background,rgb(232,232,232)))] supports-[color:color-mix(in_srgb,red,red)]:hover:bg-[var(--malachite-date-picker-hover-background,color-mix(in_srgb,var(--malachite-text-primary,rgb(10,10,10))_9%,transparent))]", e = "hover:bg-[var(--malachite-date-picker-subtle-hover-background,var(--malachite-pillbutton-background,rgb(241,241,241)))] supports-[color:color-mix(in_srgb,red,red)]:hover:bg-[var(--malachite-date-picker-subtle-hover-background,color-mix(in_srgb,var(--malachite-text-primary,rgb(10,10,10))_6%,transparent))]", x = "bg-[var(--malachite-date-picker-selected-background,var(--malachite-accent-background-glass,rgba(0,175,102,0.08)))] supports-[color:color-mix(in_srgb,red,red)]:bg-[var(--malachite-date-picker-selected-background,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_10%,var(--malachite-card-background,rgb(255,255,255))))]", u = "hover:border-[var(--malachite-date-picker-selected-hover-border,var(--malachite-control-border-hover,rgba(0,175,102,0.4)))] supports-[color:color-mix(in_srgb,red,red)]:hover:border-[var(--malachite-date-picker-selected-hover-border,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_40%,transparent))]", _ = "border-[var(--malachite-date-picker-today-border,var(--malachite-accent-border,rgba(0,175,102,0.2)))] supports-[color:color-mix(in_srgb,red,red)]:border-[var(--malachite-date-picker-today-border,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_40%,transparent))]", E = "hover:border-[var(--malachite-date-picker-today-hover-border,var(--malachite-control-border-hover,rgba(0,175,102,0.4)))] supports-[color:color-mix(in_srgb,red,red)]:hover:border-[var(--malachite-date-picker-today-hover-border,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_60%,transparent))]", I = ({ selected: r, today: a, outside: t, disabled: o }) => {
3
+ const i = o ? p : r || a ? v : t ? b : h, l = o ? "" : r ? u : a ? `${e} ${E}` : t ? e : c;
4
+ return [i, r ? x : "", a ? _ : "", l].filter(Boolean).join(" ");
5
+ }, R = "pointer-events-none absolute inset-y-0 bg-[var(--malachite-date-picker-range-background,var(--malachite-accent-background-glass,rgba(0,175,102,0.08)))] supports-[color:color-mix(in_srgb,red,red)]:bg-[var(--malachite-date-picker-range-background,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_6%,transparent))]", L = {
6
+ start: "left-1/2 right-0",
7
+ middle: "inset-x-0",
8
+ end: "left-0 right-1/2"
9
+ }, n = "text-[var(--malachite-text-secondary,rgb(123,123,123))]", k = "hover:text-[var(--malachite-text-primary,rgb(10,10,10))]", O = n, y = `${n} ${k}`, N = "flex items-center justify-center size-6 rounded-lg border-none bg-transparent p-0 cursor-pointer text-[var(--malachite-text-secondary,rgb(123,123,123))] hover:text-[var(--malachite-text-primary,rgb(10,10,10))] transition-colors aria-disabled:cursor-not-allowed aria-disabled:text-[var(--malachite-text-placeholder,rgb(187,187,187))] aria-disabled:hover:text-[var(--malachite-text-placeholder,rgb(187,187,187))]", A = "rounded-lg border-none bg-transparent px-2 py-1 font-sans text-[length:var(--malachite-font-size-small,13px)] font-medium leading-normal cursor-pointer text-[var(--malachite-accent-foreground,rgb(2,122,66))] transition-colors disabled:cursor-not-allowed disabled:opacity-40", C = "w-full rounded-lg border-none bg-transparent px-2 py-1.5 text-left font-sans text-[length:var(--malachite-font-size-small,13px)] leading-normal whitespace-nowrap cursor-pointer text-[var(--malachite-text-primary,rgb(10,10,10))] transition-colors", S = c, D = e, B = "h-px w-full shrink-0 bg-[var(--malachite-card-border,rgb(232,232,232))]", G = "w-px self-stretch shrink-0 bg-[var(--malachite-card-border,rgb(232,232,232))]", H = "font-sans text-[length:var(--malachite-font-size-small,13px)] font-medium leading-normal text-[var(--malachite-text-primary,rgb(10,10,10))]", V = {
10
+ small: "h-[var(--malachite-control-height-small,28px)]",
11
+ medium: "h-[var(--malachite-control-height-medium,32px)]",
12
+ large: "h-[var(--malachite-control-height-large,42px)]"
13
+ }, z = {
14
+ small: "px-2.5 gap-1.5 rounded-[var(--malachite-radius-10,10px)] text-[length:var(--malachite-font-size-small,13px)]",
15
+ medium: "px-2.5 gap-1.5 rounded-xl text-[length:var(--malachite-font-size-small,13px)]",
16
+ large: "px-4 gap-2 rounded-[var(--malachite-radius-xxl,14px)] text-[length:var(--malachite-font-size-15,15px)]"
17
+ }, w = {
18
+ small: "pr-8",
19
+ medium: "pr-8",
20
+ large: "pr-11"
21
+ }, U = {
22
+ small: "right-2",
23
+ medium: "right-2",
24
+ large: "right-3.5"
25
+ };
26
+ export {
27
+ f as CELL_CLASS,
28
+ U as CLEAR_POSITION,
29
+ B as DIVIDER_H,
30
+ G as DIVIDER_V,
31
+ H as HEADING_TEXT,
32
+ y as ICON_BUTTON_CLASS,
33
+ O as ICON_CLASS,
34
+ A as LINK_BUTTON,
35
+ D as LINK_HOVER,
36
+ N as NAV_BUTTON,
37
+ C as PRESET_BUTTON,
38
+ S as PRESET_HOVER,
39
+ R as RANGE_BAND,
40
+ L as RANGE_BAND_SPAN,
41
+ w as TRIGGER_CLEAR_ROOM,
42
+ V as TRIGGER_HEIGHT,
43
+ z as TRIGGER_SIZE,
44
+ I as dayToneClass
45
+ };
46
+ //# sourceMappingURL=datePickerStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datePickerStyles.js","sources":["../../src/components/datePickerStyles.ts"],"sourcesContent":["import type { DatePickerSize } from './datePickerTypes';\nimport { FOCUS_RING } from './focusRing';\n\nconst CELL_BASE =\n 'relative z-[1] flex items-center justify-center size-6 shrink-0 rounded-lg border border-solid border-transparent bg-transparent p-0 font-sans text-[length:var(--malachite-font-size-small,13px)] leading-none select-none transition-colors duration-150';\n\nconst CELL_ENABLED =\n 'cursor-pointer active:opacity-[var(--malachite-date-picker-pressed-opacity,0.6)]';\n\nconst CELL_DISABLED = 'cursor-not-allowed';\n\nexport const CELL_CLASS = (disabled: boolean): string =>\n [CELL_BASE, FOCUS_RING, disabled ? CELL_DISABLED : CELL_ENABLED].join(' ');\n\n// A tinted state reads its `datePicker` override in both layers: the solid utility for a\n// browser without color-mix, then the color-mix derivation.\nconst TEXT_DAY = 'text-[var(--malachite-text-primary,rgb(10,10,10))]';\nconst TEXT_OUTSIDE =\n 'text-[var(--malachite-date-picker-outside-foreground,var(--malachite-text-secondary,rgb(123,123,123)))] supports-[color:color-mix(in_srgb,red,red)]:text-[var(--malachite-date-picker-outside-foreground,color-mix(in_srgb,var(--malachite-text-primary,rgb(10,10,10))_60%,transparent))]';\nconst TEXT_DISABLED = 'text-[var(--malachite-text-placeholder,rgb(187,187,187))]';\nconst TEXT_ACCENT = 'text-[var(--malachite-accent-foreground,rgb(2,122,66))]';\n\nconst HOVER =\n 'hover:bg-[var(--malachite-date-picker-hover-background,var(--malachite-pillbutton-hover-background,rgb(232,232,232)))] supports-[color:color-mix(in_srgb,red,red)]:hover:bg-[var(--malachite-date-picker-hover-background,color-mix(in_srgb,var(--malachite-text-primary,rgb(10,10,10))_9%,transparent))]';\n\nconst SUBTLE_HOVER =\n 'hover:bg-[var(--malachite-date-picker-subtle-hover-background,var(--malachite-pillbutton-background,rgb(241,241,241)))] supports-[color:color-mix(in_srgb,red,red)]:hover:bg-[var(--malachite-date-picker-subtle-hover-background,color-mix(in_srgb,var(--malachite-text-primary,rgb(10,10,10))_6%,transparent))]';\n\nconst SELECTED_FILL =\n 'bg-[var(--malachite-date-picker-selected-background,var(--malachite-accent-background-glass,rgba(0,175,102,0.08)))] supports-[color:color-mix(in_srgb,red,red)]:bg-[var(--malachite-date-picker-selected-background,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_10%,var(--malachite-card-background,rgb(255,255,255))))]';\n\nconst SELECTED_HOVER =\n 'hover:border-[var(--malachite-date-picker-selected-hover-border,var(--malachite-control-border-hover,rgba(0,175,102,0.4)))] supports-[color:color-mix(in_srgb,red,red)]:hover:border-[var(--malachite-date-picker-selected-hover-border,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_40%,transparent))]';\n\nconst TODAY_RING =\n 'border-[var(--malachite-date-picker-today-border,var(--malachite-accent-border,rgba(0,175,102,0.2)))] supports-[color:color-mix(in_srgb,red,red)]:border-[var(--malachite-date-picker-today-border,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_40%,transparent))]';\n\nconst TODAY_HOVER =\n 'hover:border-[var(--malachite-date-picker-today-hover-border,var(--malachite-control-border-hover,rgba(0,175,102,0.4)))] supports-[color:color-mix(in_srgb,red,red)]:hover:border-[var(--malachite-date-picker-today-hover-border,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_60%,transparent))]';\n\ninterface DayTone {\n selected: boolean;\n today: boolean;\n outside: boolean;\n disabled: boolean;\n}\n\nexport const dayToneClass = ({ selected, today, outside, disabled }: DayTone): string => {\n const text = disabled\n ? TEXT_DISABLED\n : selected || today\n ? TEXT_ACCENT\n : outside\n ? TEXT_OUTSIDE\n : TEXT_DAY;\n const hover = disabled\n ? ''\n : selected\n ? SELECTED_HOVER\n : today\n ? `${SUBTLE_HOVER} ${TODAY_HOVER}`\n : outside\n ? SUBTLE_HOVER\n : HOVER;\n return [text, selected ? SELECTED_FILL : '', today ? TODAY_RING : '', hover]\n .filter(Boolean)\n .join(' ');\n};\n\nexport const RANGE_BAND =\n 'pointer-events-none absolute inset-y-0 bg-[var(--malachite-date-picker-range-background,var(--malachite-accent-background-glass,rgba(0,175,102,0.08)))] supports-[color:color-mix(in_srgb,red,red)]:bg-[var(--malachite-date-picker-range-background,color-mix(in_srgb,var(--malachite-accent-background,rgb(0,175,102))_6%,transparent))]';\n\nexport const RANGE_BAND_SPAN = {\n start: 'left-1/2 right-0',\n middle: 'inset-x-0',\n end: 'left-0 right-1/2',\n} as const;\n\nconst ICON = 'text-[var(--malachite-text-secondary,rgb(123,123,123))]';\nconst ICON_HOVER = 'hover:text-[var(--malachite-text-primary,rgb(10,10,10))]';\n\n/** The trigger's calendar glyph and clear control share the header arrows' colours. */\nexport const ICON_CLASS = ICON;\nexport const ICON_BUTTON_CLASS = `${ICON} ${ICON_HOVER}`;\n\nexport const NAV_BUTTON =\n 'flex items-center justify-center size-6 rounded-lg border-none bg-transparent p-0 cursor-pointer text-[var(--malachite-text-secondary,rgb(123,123,123))] hover:text-[var(--malachite-text-primary,rgb(10,10,10))] transition-colors aria-disabled:cursor-not-allowed aria-disabled:text-[var(--malachite-text-placeholder,rgb(187,187,187))] aria-disabled:hover:text-[var(--malachite-text-placeholder,rgb(187,187,187))]';\n\nexport const LINK_BUTTON =\n 'rounded-lg border-none bg-transparent px-2 py-1 font-sans text-[length:var(--malachite-font-size-small,13px)] font-medium leading-normal cursor-pointer text-[var(--malachite-accent-foreground,rgb(2,122,66))] transition-colors disabled:cursor-not-allowed disabled:opacity-40';\n\nexport const PRESET_BUTTON =\n 'w-full rounded-lg border-none bg-transparent px-2 py-1.5 text-left font-sans text-[length:var(--malachite-font-size-small,13px)] leading-normal whitespace-nowrap cursor-pointer text-[var(--malachite-text-primary,rgb(10,10,10))] transition-colors';\n\nexport const PRESET_HOVER = HOVER;\nexport const LINK_HOVER = SUBTLE_HOVER;\n\nexport const DIVIDER_H = 'h-px w-full shrink-0 bg-[var(--malachite-card-border,rgb(232,232,232))]';\nexport const DIVIDER_V =\n 'w-px self-stretch shrink-0 bg-[var(--malachite-card-border,rgb(232,232,232))]';\n\nexport const HEADING_TEXT =\n 'font-sans text-[length:var(--malachite-font-size-small,13px)] font-medium leading-normal text-[var(--malachite-text-primary,rgb(10,10,10))]';\n\nexport const TRIGGER_HEIGHT: Record<DatePickerSize, string> = {\n small: 'h-[var(--malachite-control-height-small,28px)]',\n medium: 'h-[var(--malachite-control-height-medium,32px)]',\n large: 'h-[var(--malachite-control-height-large,42px)]',\n};\n\nexport const TRIGGER_SIZE: Record<DatePickerSize, string> = {\n small: 'px-2.5 gap-1.5 rounded-[var(--malachite-radius-10,10px)] text-[length:var(--malachite-font-size-small,13px)]',\n medium: 'px-2.5 gap-1.5 rounded-xl text-[length:var(--malachite-font-size-small,13px)]',\n large: 'px-4 gap-2 rounded-[var(--malachite-radius-xxl,14px)] text-[length:var(--malachite-font-size-15,15px)]',\n};\n\nexport const TRIGGER_CLEAR_ROOM: Record<DatePickerSize, string> = {\n small: 'pr-8',\n medium: 'pr-8',\n large: 'pr-11',\n};\n\nexport const CLEAR_POSITION: Record<DatePickerSize, string> = {\n small: 'right-2',\n medium: 'right-2',\n large: 'right-3.5',\n};\n"],"names":["CELL_BASE","CELL_ENABLED","CELL_DISABLED","CELL_CLASS","disabled","FOCUS_RING","TEXT_DAY","TEXT_OUTSIDE","TEXT_DISABLED","TEXT_ACCENT","HOVER","SUBTLE_HOVER","SELECTED_FILL","SELECTED_HOVER","TODAY_RING","TODAY_HOVER","dayToneClass","selected","today","outside","text","hover","RANGE_BAND","RANGE_BAND_SPAN","ICON","ICON_HOVER","ICON_CLASS","ICON_BUTTON_CLASS","NAV_BUTTON","LINK_BUTTON","PRESET_BUTTON","PRESET_HOVER","LINK_HOVER","DIVIDER_H","DIVIDER_V","HEADING_TEXT","TRIGGER_HEIGHT","TRIGGER_SIZE","TRIGGER_CLEAR_ROOM","CLEAR_POSITION"],"mappings":";AAGA,MAAMA,IACF,8PAEEC,IACF,oFAEEC,IAAgB,sBAETC,IAAa,CAACC,MACvB,CAACJ,GAAWK,GAAYD,IAAWF,IAAgBD,CAAY,EAAE,KAAK,GAAG,GAIvEK,IAAW,sDACXC,IACF,6RACEC,IAAgB,6DAChBC,IAAc,2DAEdC,IACF,6SAEEC,IACF,qTAEEC,IACF,oVAEEC,IACF,kUAEEC,IACF,6RAEEC,IACF,4TASSC,IAAe,CAAC,EAAE,UAAAC,GAAU,OAAAC,GAAO,SAAAC,GAAS,UAAAf,QAAgC;AACrF,QAAMgB,IAAOhB,IACPI,IACAS,KAAYC,IACVT,IACAU,IACEZ,IACAD,GACJe,IAAQjB,IACR,KACAa,IACEJ,IACAK,IACE,GAAGP,CAAY,IAAII,CAAW,KAC9BI,IACER,IACAD;AACZ,SAAO,CAACU,GAAMH,IAAWL,IAAgB,IAAIM,IAAQJ,IAAa,IAAIO,CAAK,EACtE,OAAO,OAAO,EACd,KAAK,GAAG;AACjB,GAEaC,IACT,8UAESC,IAAkB;AAAA,EAC3B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AACT,GAEMC,IAAO,2DACPC,IAAa,4DAGNC,IAAaF,GACbG,IAAoB,GAAGH,CAAI,IAAIC,CAAU,IAEzCG,IACT,8ZAESC,IACT,qRAESC,IACT,yPAESC,IAAerB,GACfsB,IAAarB,GAEbsB,IAAY,2EACZC,IACT,iFAESC,IACT,+IAESC,IAAiD;AAAA,EAC1D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACX,GAEaC,IAA+C;AAAA,EACxD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACX,GAEaC,IAAqD;AAAA,EAC9D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACX,GAEaC,IAAiD;AAAA,EAC1D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACX;"}
@@ -0,0 +1,126 @@
1
+ import { useState as E } from "react";
2
+ import { dayKeyOf as l, clampDate as y, startOfDay as I, endOfDay as k, partsOf as v, withTime as A, compareDays as z, overlapsBounds as S, daysInMonth as tt, truncateTo as G, ceilTo as st, endOfUnit as nt, fromParts as rt } from "./dateMath.js";
3
+ const H = { start: null, end: null }, V = ({ year: T, month: n }) => ({ year: T, month: n }), B = (T) => T === "start" ? { hours: 0, minutes: 0, seconds: 0 } : { hours: 23, minutes: 59, seconds: 59 }, ut = ({
4
+ mode: T,
5
+ zone: n,
6
+ precision: g,
7
+ minDate: o,
8
+ maxDate: d,
9
+ isDateDisabled: h,
10
+ commit: P
11
+ }) => {
12
+ const [r, M] = E(H), [F, U] = E("start"), [J, C] = E(() => V(l(/* @__PURE__ */ new Date(), n))), [W, K] = E(() => l(/* @__PURE__ */ new Date(), n)), p = l(/* @__PURE__ */ new Date(), n), L = (t) => {
13
+ const s = l(
14
+ y((t == null ? void 0 : t.start) ?? /* @__PURE__ */ new Date(), o, d),
15
+ n
16
+ );
17
+ M(t ?? H), U("start"), C(V(s)), K(s);
18
+ }, Y = (t) => {
19
+ const s = I(t, n);
20
+ return !S(s, k(t, n), o, d) || !!(h != null && h(s));
21
+ }, N = (t) => S(
22
+ I({ ...t, day: 1 }, n),
23
+ k({ ...t, day: tt(t) }, n),
24
+ o,
25
+ d
26
+ ), O = (t, s = o, e = d) => {
27
+ const u = G(y(t, void 0, e), n, g);
28
+ if (!s || u.getTime() >= s.getTime())
29
+ return u;
30
+ const c = st(s, n, g);
31
+ return e && c.getTime() > e.getTime() ? s : c;
32
+ }, R = (t, s, e = d) => y(nt(O(t, s, e), n, g), void 0, e), Q = ({ start: t, end: s }) => {
33
+ const e = s ?? t;
34
+ if (!t || !e || o && e.getTime() < o.getTime() || d && t.getTime() > d.getTime())
35
+ return;
36
+ const u = y(t, o, d), c = s ? y(s, o, d) : null, a = (m) => !!(h != null && h(I(l(m, n), n)));
37
+ a(u) || c && a(c) || T === "range" && (!c || c.getTime() < u.getTime()) || P({ start: u, end: c });
38
+ }, X = (t) => {
39
+ if (T === "single") {
40
+ const c = r.start ? v(r.start, n) : B("start"), a = O(A(t, c, n));
41
+ if (g === "day") {
42
+ P({ start: a, end: null });
43
+ return;
44
+ }
45
+ M({ start: a, end: null });
46
+ return;
47
+ }
48
+ if (F === "end" && r.start !== null && z(t, l(r.start, n)) >= 0) {
49
+ const c = r.end ? v(r.end, n) : B("end"), a = g === "day" ? y(k(t, n), o, d) : R(A(t, c, n), o), m = a.getTime() < r.start.getTime() ? r.start : a;
50
+ if (g === "day") {
51
+ P({ start: r.start, end: m });
52
+ return;
53
+ }
54
+ M({ start: r.start, end: m });
55
+ return;
56
+ }
57
+ const s = r.start ? v(r.start, n) : B("start"), e = O(A(t, s, n)), u = g !== "day" && r.end !== null && r.end.getTime() >= e.getTime();
58
+ M({ start: e, end: u ? r.end : null }), U("end");
59
+ }, f = T === "range" ? F : "start", j = () => {
60
+ const t = r[f];
61
+ if (t)
62
+ return t;
63
+ const s = f === "end" && r.start ? l(r.start, n) : W;
64
+ return A(s, B(f), n);
65
+ }, q = (t, s, e) => {
66
+ const u = v(t, n);
67
+ if (s === "hours")
68
+ return rt({ ...u, hours: e }, n, t.getMilliseconds());
69
+ const c = s === "minutes" ? 6e4 : 1e3;
70
+ return new Date(t.getTime() + (e - u[s]) * c);
71
+ }, Z = (t, s) => {
72
+ const e = j(), u = v(e, n), c = q(e, t, s).getTime() - e.getMilliseconds();
73
+ if (t === "hours") {
74
+ const a = c - (u.minutes * 60 + u.seconds) * 1e3;
75
+ return [new Date(a), new Date(a + 36e5 - 1)];
76
+ }
77
+ if (t === "minutes") {
78
+ const a = c - u.seconds * 1e3;
79
+ return [new Date(a), new Date(a + 6e4 - 1)];
80
+ }
81
+ return [new Date(c), new Date(c + 999)];
82
+ }, i = T === "range" && f === "end" && r.start ? new Date(Math.max(r.start.getTime(), (o == null ? void 0 : o.getTime()) ?? -1 / 0)) : o, w = T === "range" && f === "start" && r.end ? new Date(Math.min(r.end.getTime(), (d == null ? void 0 : d.getTime()) ?? 1 / 0)) : d, _ = (t, s) => {
83
+ const [e, u] = Z(t, s);
84
+ return !S(e, u, i, w);
85
+ }, $ = (t, s) => {
86
+ const e = q(j(), t, s), u = f === "end" ? R(e, i, w) : O(e, i, w);
87
+ M((c) => ({ ...c, [f]: u }));
88
+ }, b = () => {
89
+ const t = Date.now();
90
+ return (!i || t >= G(i, n, "day").getTime()) && (!w || t <= k(l(w, n), n).getTime());
91
+ }, x = () => {
92
+ if (g === "day") {
93
+ const s = O(I(p, n));
94
+ P(
95
+ T === "single" ? { start: s, end: null } : { start: s, end: y(k(p, n), o, d) }
96
+ );
97
+ return;
98
+ }
99
+ const t = f === "end" ? R(/* @__PURE__ */ new Date(), i, w) : O(/* @__PURE__ */ new Date(), i, w);
100
+ M((s) => ({ ...s, [f]: t })), C(V(p)), K(p);
101
+ }, D = T === "single" ? r.start !== null : r.start !== null && r.end !== null && r.start.getTime() <= r.end.getTime();
102
+ return {
103
+ draft: r,
104
+ active: F,
105
+ setActive: U,
106
+ view: J,
107
+ setView: C,
108
+ focusDay: W,
109
+ setFocusDay: K,
110
+ today: p,
111
+ reset: L,
112
+ complete: D,
113
+ isDayDisabled: Y,
114
+ isMonthReachable: N,
115
+ isTimeDisabled: _,
116
+ pickDay: X,
117
+ pickTime: $,
118
+ pickToday: x,
119
+ commitPreset: Q,
120
+ todayDisabled: Y(p) || g !== "day" && !b()
121
+ };
122
+ };
123
+ export {
124
+ ut as useDatePickerDraft
125
+ };
126
+ //# sourceMappingURL=useDatePickerDraft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDatePickerDraft.js","sources":["../../src/components/useDatePickerDraft.ts"],"sourcesContent":["import { useState } from 'react';\nimport type { Endpoint, Selection, TimeUnit } from './DatePickerPanel';\nimport {\n type DatePickerPrecision,\n type DatePickerTimeZone,\n type DayKey,\n type MonthKey,\n ceilTo,\n clampDate,\n compareDays,\n dayKeyOf,\n daysInMonth,\n endOfDay,\n endOfUnit,\n fromParts,\n overlapsBounds,\n partsOf,\n startOfDay,\n truncateTo,\n withTime,\n} from './dateMath';\n\ninterface DraftOptions {\n mode: 'single' | 'range';\n zone: DatePickerTimeZone;\n precision: DatePickerPrecision;\n minDate?: Date;\n maxDate?: Date;\n isDateDisabled?: (day: Date) => boolean;\n commit: (selection: Selection) => void;\n}\n\nconst EMPTY: Selection = { start: null, end: null };\n\nconst monthOf = ({ year, month }: DayKey): MonthKey => ({ year, month });\n\nconst defaultTime = (endpoint: Endpoint) =>\n endpoint === 'start'\n ? { hours: 0, minutes: 0, seconds: 0 }\n : { hours: 23, minutes: 59, seconds: 59 };\n\nexport const useDatePickerDraft = ({\n mode,\n zone,\n precision,\n minDate,\n maxDate,\n isDateDisabled,\n commit,\n}: DraftOptions) => {\n const [draft, setDraft] = useState<Selection>(EMPTY);\n const [active, setActive] = useState<Endpoint>('start');\n const [view, setView] = useState<MonthKey>(() => monthOf(dayKeyOf(new Date(), zone)));\n const [focusDay, setFocusDay] = useState<DayKey>(() => dayKeyOf(new Date(), zone));\n const today = dayKeyOf(new Date(), zone);\n\n const reset = (committed: Selection | null) => {\n const anchorDay = dayKeyOf(\n clampDate(committed?.start ?? new Date(), minDate, maxDate),\n zone,\n );\n setDraft(committed ?? EMPTY);\n setActive('start');\n setView(monthOf(anchorDay));\n setFocusDay(anchorDay);\n };\n\n const isDayDisabled = (day: DayKey): boolean => {\n const from = startOfDay(day, zone);\n return (\n !overlapsBounds(from, endOfDay(day, zone), minDate, maxDate) || !!isDateDisabled?.(from)\n );\n };\n\n const isMonthReachable = (month: MonthKey): boolean =>\n overlapsBounds(\n startOfDay({ ...month, day: 1 }, zone),\n endOfDay({ ...month, day: daysInMonth(month) }, zone),\n minDate,\n maxDate,\n );\n\n const bound = (\n date: Date,\n floor: Date | undefined = minDate,\n ceiling: Date | undefined = maxDate,\n ): Date => {\n const truncated = truncateTo(clampDate(date, undefined, ceiling), zone, precision);\n if (!floor || truncated.getTime() >= floor.getTime()) {\n return truncated;\n }\n const raised = ceilTo(floor, zone, precision);\n return ceiling && raised.getTime() > ceiling.getTime() ? floor : raised;\n };\n\n const boundEnd = (date: Date, floor?: Date, ceiling: Date | undefined = maxDate): Date =>\n clampDate(endOfUnit(bound(date, floor, ceiling), zone, precision), undefined, ceiling);\n\n const commitPreset = ({ start, end }: Selection) => {\n const last = end ?? start;\n if (\n !start ||\n !last ||\n (minDate && last.getTime() < minDate.getTime()) ||\n (maxDate && start.getTime() > maxDate.getTime())\n ) {\n return;\n }\n const from = clampDate(start, minDate, maxDate);\n const to = end ? clampDate(end, minDate, maxDate) : null;\n const ruledOut = (date: Date) => !!isDateDisabled?.(startOfDay(dayKeyOf(date, zone), zone));\n if (ruledOut(from) || (to && ruledOut(to))) {\n return;\n }\n if (mode === 'range' && (!to || to.getTime() < from.getTime())) {\n return;\n }\n commit({ start: from, end: to });\n };\n\n const pickDay = (day: DayKey) => {\n if (mode === 'single') {\n const time = draft.start ? partsOf(draft.start, zone) : defaultTime('start');\n const start = bound(withTime(day, time, zone));\n if (precision === 'day') {\n commit({ start, end: null });\n return;\n }\n setDraft({ start, end: null });\n return;\n }\n if (\n active === 'end' &&\n draft.start !== null &&\n compareDays(day, dayKeyOf(draft.start, zone)) >= 0\n ) {\n const time = draft.end ? partsOf(draft.end, zone) : defaultTime('end');\n const picked =\n precision === 'day'\n ? clampDate(endOfDay(day, zone), minDate, maxDate)\n : boundEnd(withTime(day, time, zone), minDate);\n const end = picked.getTime() < draft.start.getTime() ? draft.start : picked;\n if (precision === 'day') {\n commit({ start: draft.start, end });\n return;\n }\n setDraft({ start: draft.start, end });\n return;\n }\n const time = draft.start ? partsOf(draft.start, zone) : defaultTime('start');\n const start = bound(withTime(day, time, zone));\n const keepEnd =\n precision !== 'day' && draft.end !== null && draft.end.getTime() >= start.getTime();\n setDraft({ start, end: keepEnd ? draft.end : null });\n setActive('end');\n };\n\n const timeTarget: Endpoint = mode === 'range' ? active : 'start';\n\n const timeBase = (): Date => {\n const current = draft[timeTarget];\n if (current) {\n return current;\n }\n const day = timeTarget === 'end' && draft.start ? dayKeyOf(draft.start, zone) : focusDay;\n return withTime(day, defaultTime(timeTarget), zone);\n };\n\n // Arithmetic, so the repeated hour when clocks go back keeps its hour.\n const withUnit = (base: Date, unit: TimeUnit, value: number): Date => {\n const parts = partsOf(base, zone);\n if (unit === 'hours') {\n return fromParts({ ...parts, hours: value }, zone, base.getMilliseconds());\n }\n const unitMs = unit === 'minutes' ? 60_000 : 1_000;\n return new Date(base.getTime() + (value - parts[unit]) * unitMs);\n };\n\n const timeWindow = (unit: TimeUnit, value: number): [Date, Date] => {\n const base = timeBase();\n const parts = partsOf(base, zone);\n const at = withUnit(base, unit, value).getTime() - base.getMilliseconds();\n if (unit === 'hours') {\n const from = at - (parts.minutes * 60 + parts.seconds) * 1000;\n return [new Date(from), new Date(from + 3_600_000 - 1)];\n }\n if (unit === 'minutes') {\n const from = at - parts.seconds * 1000;\n return [new Date(from), new Date(from + 60_000 - 1)];\n }\n return [new Date(at), new Date(at + 999)];\n };\n\n const timeFloor =\n mode === 'range' && timeTarget === 'end' && draft.start\n ? new Date(Math.max(draft.start.getTime(), minDate?.getTime() ?? -Infinity))\n : minDate;\n const timeCeiling =\n mode === 'range' && timeTarget === 'start' && draft.end\n ? new Date(Math.min(draft.end.getTime(), maxDate?.getTime() ?? Infinity))\n : maxDate;\n\n const isTimeDisabled = (unit: TimeUnit, value: number): boolean => {\n const [from, to] = timeWindow(unit, value);\n return !overlapsBounds(from, to, timeFloor, timeCeiling);\n };\n\n const pickTime = (unit: TimeUnit, value: number) => {\n const base = withUnit(timeBase(), unit, value);\n const next =\n timeTarget === 'end'\n ? boundEnd(base, timeFloor, timeCeiling)\n : bound(base, timeFloor, timeCeiling);\n setDraft((current) => ({ ...current, [timeTarget]: next }));\n };\n\n const nowAllowed = (): boolean => {\n const now = Date.now();\n return (\n (!timeFloor || now >= truncateTo(timeFloor, zone, 'day').getTime()) &&\n (!timeCeiling || now <= endOfDay(dayKeyOf(timeCeiling, zone), zone).getTime())\n );\n };\n\n const pickToday = () => {\n if (precision === 'day') {\n const start = bound(startOfDay(today, zone));\n commit(\n mode === 'single'\n ? { start, end: null }\n : { start, end: clampDate(endOfDay(today, zone), minDate, maxDate) },\n );\n return;\n }\n const now =\n timeTarget === 'end'\n ? boundEnd(new Date(), timeFloor, timeCeiling)\n : bound(new Date(), timeFloor, timeCeiling);\n setDraft((current) => ({ ...current, [timeTarget]: now }));\n setView(monthOf(today));\n setFocusDay(today);\n };\n\n const complete =\n mode === 'single'\n ? draft.start !== null\n : draft.start !== null &&\n draft.end !== null &&\n draft.start.getTime() <= draft.end.getTime();\n\n return {\n draft,\n active,\n setActive,\n view,\n setView,\n focusDay,\n setFocusDay,\n today,\n reset,\n complete,\n isDayDisabled,\n isMonthReachable,\n isTimeDisabled,\n pickDay,\n pickTime,\n pickToday,\n commitPreset,\n todayDisabled: isDayDisabled(today) || (precision !== 'day' && !nowAllowed()),\n };\n};\n"],"names":["EMPTY","monthOf","year","month","defaultTime","endpoint","useDatePickerDraft","mode","zone","precision","minDate","maxDate","isDateDisabled","commit","draft","setDraft","useState","active","setActive","view","setView","dayKeyOf","focusDay","setFocusDay","today","reset","committed","anchorDay","clampDate","isDayDisabled","day","from","startOfDay","overlapsBounds","endOfDay","isMonthReachable","daysInMonth","bound","date","floor","ceiling","truncated","truncateTo","raised","ceilTo","boundEnd","endOfUnit","commitPreset","start","end","last","to","ruledOut","pickDay","time","partsOf","withTime","compareDays","picked","keepEnd","timeTarget","timeBase","current","withUnit","base","unit","value","parts","fromParts","unitMs","timeWindow","at","timeFloor","timeCeiling","isTimeDisabled","pickTime","next","nowAllowed","now","pickToday","complete"],"mappings":"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"}