@epilot/zenith-react 0.2.0-next.0 → 0.2.0-next.3

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 (133) hide show
  1. package/dist/components/accordion/accordion.js +57 -48
  2. package/dist/components/accordion/accordion.js.map +1 -1
  3. package/dist/components/alert-dialog/alert-dialog.js +120 -92
  4. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  5. package/dist/components/avatar/avatar-group.js +38 -35
  6. package/dist/components/avatar/avatar-group.js.map +1 -1
  7. package/dist/components/avatar/avatar.js +78 -71
  8. package/dist/components/avatar/avatar.js.map +1 -1
  9. package/dist/components/badge/badge.js +60 -55
  10. package/dist/components/badge/badge.js.map +1 -1
  11. package/dist/components/breadcrumb/breadcrumb.js +99 -54
  12. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  13. package/dist/components/button/button.js +87 -77
  14. package/dist/components/button/button.js.map +1 -1
  15. package/dist/components/button-group/button-group.js +36 -32
  16. package/dist/components/button-group/button-group.js.map +1 -1
  17. package/dist/components/callout/callout.js +105 -98
  18. package/dist/components/callout/callout.js.map +1 -1
  19. package/dist/components/card/card.js +62 -52
  20. package/dist/components/card/card.js.map +1 -1
  21. package/dist/components/checkbox/checkbox.js +22 -19
  22. package/dist/components/checkbox/checkbox.js.map +1 -1
  23. package/dist/components/code-block/code-block.js +135 -123
  24. package/dist/components/code-block/code-block.js.map +1 -1
  25. package/dist/components/code-editor/code-editor.js +276 -260
  26. package/dist/components/code-editor/code-editor.js.map +1 -1
  27. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
  28. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
  29. package/dist/components/command/command.js +116 -105
  30. package/dist/components/command/command.js.map +1 -1
  31. package/dist/components/data-table/data-table-body.js +38 -34
  32. package/dist/components/data-table/data-table-body.js.map +1 -1
  33. package/dist/components/data-table/data-table-column-header.js +30 -26
  34. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  35. package/dist/components/data-table/data-table-column-order.js +79 -73
  36. package/dist/components/data-table/data-table-column-order.js.map +1 -1
  37. package/dist/components/data-table/data-table-column-visibility.js +25 -22
  38. package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
  39. package/dist/components/data-table/data-table-content.js +47 -44
  40. package/dist/components/data-table/data-table-content.js.map +1 -1
  41. package/dist/components/data-table/data-table-error.js +36 -32
  42. package/dist/components/data-table/data-table-error.js.map +1 -1
  43. package/dist/components/data-table/data-table-footer.js +10 -8
  44. package/dist/components/data-table/data-table-footer.js.map +1 -1
  45. package/dist/components/data-table/data-table-header-draggable.js +40 -36
  46. package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
  47. package/dist/components/data-table/data-table-header.js +113 -99
  48. package/dist/components/data-table/data-table-header.js.map +1 -1
  49. package/dist/components/data-table/data-table-loading.js +21 -18
  50. package/dist/components/data-table/data-table-loading.js.map +1 -1
  51. package/dist/components/data-table/data-table-resize-handle.js +13 -11
  52. package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
  53. package/dist/components/data-table/data-table-row.js +71 -59
  54. package/dist/components/data-table/data-table-row.js.map +1 -1
  55. package/dist/components/data-table/data-table-toolbar.js +9 -7
  56. package/dist/components/data-table/data-table-toolbar.js.map +1 -1
  57. package/dist/components/data-table/data-table.js +48 -46
  58. package/dist/components/data-table/data-table.js.map +1 -1
  59. package/dist/components/date-range-picker/date-range-picker.js +173 -164
  60. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  61. package/dist/components/date-range-picker/range-calendar.js +36 -34
  62. package/dist/components/date-range-picker/range-calendar.js.map +1 -1
  63. package/dist/components/date-time-picker/calendar.js +290 -272
  64. package/dist/components/date-time-picker/calendar.js.map +1 -1
  65. package/dist/components/date-time-picker/date-time-picker-input.js +22 -20
  66. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  67. package/dist/components/date-time-picker/date-time-picker-panel.js +126 -120
  68. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  69. package/dist/components/date-time-picker/date-time-picker.js +42 -40
  70. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  71. package/dist/components/date-time-picker/time-picker.js +95 -87
  72. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  73. package/dist/components/dialog/dialog.js +115 -95
  74. package/dist/components/dialog/dialog.js.map +1 -1
  75. package/dist/components/drawer/drawer.js +144 -109
  76. package/dist/components/drawer/drawer.js.map +1 -1
  77. package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
  78. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  79. package/dist/components/field/field-combobox.js +196 -176
  80. package/dist/components/field/field-combobox.js.map +1 -1
  81. package/dist/components/field/field.js +137 -126
  82. package/dist/components/field/field.js.map +1 -1
  83. package/dist/components/list/list.js +237 -219
  84. package/dist/components/list/list.js.map +1 -1
  85. package/dist/components/option-card/option-card.js +129 -116
  86. package/dist/components/option-card/option-card.js.map +1 -1
  87. package/dist/components/pill/pill.js +55 -51
  88. package/dist/components/pill/pill.js.map +1 -1
  89. package/dist/components/popover/popover.js +53 -36
  90. package/dist/components/popover/popover.js.map +1 -1
  91. package/dist/components/radio/radio.js +38 -34
  92. package/dist/components/radio/radio.js.map +1 -1
  93. package/dist/components/scroll-area/scroll-area.js +38 -35
  94. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  95. package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
  96. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  97. package/dist/components/segmented-control/segmented-control.js +93 -85
  98. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  99. package/dist/components/select/select.js +149 -128
  100. package/dist/components/select/select.js.map +1 -1
  101. package/dist/components/separator/separator.js +19 -16
  102. package/dist/components/separator/separator.js.map +1 -1
  103. package/dist/components/skeleton/skeleton.js +34 -30
  104. package/dist/components/skeleton/skeleton.js.map +1 -1
  105. package/dist/components/spinner/spinner.js +22 -17
  106. package/dist/components/spinner/spinner.js.map +1 -1
  107. package/dist/components/surface/surface.js +25 -22
  108. package/dist/components/surface/surface.js.map +1 -1
  109. package/dist/components/switch/switch.js +66 -57
  110. package/dist/components/switch/switch.js.map +1 -1
  111. package/dist/components/table/table-pagination.js +139 -129
  112. package/dist/components/table/table-pagination.js.map +1 -1
  113. package/dist/components/table/table.js +104 -90
  114. package/dist/components/table/table.js.map +1 -1
  115. package/dist/components/tabs/tabs.js +206 -128
  116. package/dist/components/tabs/tabs.js.map +1 -1
  117. package/dist/components/toast/toast.js +112 -100
  118. package/dist/components/toast/toast.js.map +1 -1
  119. package/dist/components/toggle/toggle.js +32 -30
  120. package/dist/components/toggle/toggle.js.map +1 -1
  121. package/dist/components/tooltip/tooltip.js +59 -46
  122. package/dist/components/tooltip/tooltip.js.map +1 -1
  123. package/dist/index.d.ts +12 -0
  124. package/dist/lib/clear-button.js +18 -17
  125. package/dist/lib/clear-button.js.map +1 -1
  126. package/dist/styles/host-reset.js +47 -0
  127. package/dist/styles/host-reset.js.map +1 -0
  128. package/dist/styles/overlay-layer.js +5 -0
  129. package/dist/styles/overlay-layer.js.map +1 -0
  130. package/dist/tokens.json +1 -1
  131. package/package.json +8 -6
  132. package/scripts/migration-diagnostics.mjs +42 -7
  133. package/scripts/migration-sweep.mjs +9 -1
@@ -1,50 +1,56 @@
1
- import { jsx as t, jsxs as k, Fragment as W } from "react/jsx-runtime";
1
+ import { jsx as t, jsxs as C, Fragment as j } from "react/jsx-runtime";
2
2
  import * as m from "react";
3
- import { SLOT_ATTR as r, mergeClasses as j, shorthands as f } from "@epilot/zenith-runtime/v1";
4
- import { Button as Y } from "../button/button.js";
5
- import { PopoverPortal as ie, PopoverContent as oe } from "../popover/popover.js";
6
- import { makeZenithStyles as ne } from "../../styles/make-styles.js";
7
- import { spacingElement2 as re, spacingGroup1 as G, spacingElement3 as ae, spacingGroup2 as se } from "../../tokens/index.js";
8
- import { Calendar as I } from "./calendar.js";
9
- import { TimePicker as M } from "./time-picker.js";
10
- import { useDateTimePickerContext as de } from "./date-time-picker-context.js";
11
- const ce = ne({
3
+ import { SLOT_ATTR as r, mergeClasses as Y, shorthands as f } from "@epilot/zenith-runtime/v1";
4
+ import { Button as G } from "../button/button.js";
5
+ import { PopoverPortal as oe, PopoverContent as ne } from "../popover/popover.js";
6
+ import { makeZenithStyles as re } from "../../styles/make-styles.js";
7
+ import { boxModel as p } from "../../styles/host-reset.js";
8
+ import { spacingElement2 as ae, spacingGroup1 as I, spacingElement3 as se, spacingGroup2 as de } from "../../tokens/index.js";
9
+ import { Calendar as M } from "./calendar.js";
10
+ import { TimePicker as X } from "./time-picker.js";
11
+ import { useDateTimePickerContext as ce } from "./date-time-picker-context.js";
12
+ const le = re({
12
13
  content: {
13
14
  overflowX: "hidden",
14
15
  overflowY: "hidden"
15
16
  },
16
17
  contentNarrow: {
18
+ ...p,
17
19
  width: "300px"
18
20
  },
19
21
  panelContent: {
22
+ ...p,
20
23
  display: "flex",
21
24
  flexDirection: "column",
22
- ...f.gap(se),
23
- ...f.padding(ae)
25
+ ...f.gap(de),
26
+ ...f.padding(se)
24
27
  },
25
28
  body: {
26
29
  display: "flex"
27
30
  },
28
31
  bodyBottom: {
29
32
  flexDirection: "column",
30
- ...f.gap(G)
33
+ ...f.gap(I)
31
34
  },
32
35
  bodySide: {
33
36
  flexDirection: "row",
34
- ...f.gap(G),
37
+ ...f.gap(I),
35
38
  position: "relative"
36
39
  },
37
40
  dateSection: {
41
+ ...p,
38
42
  flexGrow: 1,
39
43
  flexShrink: 1,
40
44
  flexBasis: "0%",
41
45
  minWidth: "0"
42
46
  },
43
47
  timeSpacer: {
48
+ ...p,
44
49
  width: "9rem",
45
50
  flexShrink: 0
46
51
  },
47
52
  timeSection: {
53
+ ...p,
48
54
  position: "absolute",
49
55
  top: 0,
50
56
  bottom: 0,
@@ -58,160 +64,160 @@ const ce = ne({
58
64
  footer: {
59
65
  display: "flex",
60
66
  justifyContent: "flex-end",
61
- ...f.gap(re)
67
+ ...f.gap(ae)
62
68
  }
63
- }), xe = m.forwardRef(function({
64
- showTimePicker: C = !0,
65
- timePickerPosition: S = "bottom",
66
- okLabel: X = "Apply",
67
- cancelLabel: V = "Cancel",
68
- previousMonthLabel: z = "Previous month",
69
- nextMonthLabel: A = "Next month",
70
- hoursLabel: D,
71
- minutesLabel: N,
72
- showTodayButton: F = !1,
73
- todayLabel: T = "Today",
74
- showWeekNumbers: O = !1,
75
- className: Z,
76
- minuteStep: P = 1
77
- }, _) {
78
- const i = ce(), {
79
- tempValue: p,
80
- isOpen: q,
81
- locale: H,
82
- disablePast: h,
83
- currentTimeInTimezone: u,
84
- handleDateChange: y,
85
- confirm: J,
86
- cancel: K
87
- } = de(), [Q, U] = m.useState(!0);
69
+ }), Ce = m.forwardRef(function({
70
+ showTimePicker: S = !0,
71
+ timePickerPosition: b = "bottom",
72
+ okLabel: V = "Apply",
73
+ cancelLabel: Z = "Cancel",
74
+ previousMonthLabel: A = "Previous month",
75
+ nextMonthLabel: D = "Next month",
76
+ hoursLabel: N,
77
+ minutesLabel: F,
78
+ showTodayButton: T = !1,
79
+ todayLabel: O = "Today",
80
+ showWeekNumbers: P = !1,
81
+ className: _,
82
+ minuteStep: q = 1
83
+ }, J) {
84
+ const i = le(), {
85
+ tempValue: h,
86
+ isOpen: H,
87
+ locale: L,
88
+ disablePast: u,
89
+ currentTimeInTimezone: y,
90
+ handleDateChange: w,
91
+ confirm: K,
92
+ cancel: Q
93
+ } = ce(), [U, ee] = m.useState(!0);
88
94
  m.useEffect(() => {
89
- if (S !== "side") return;
90
- const a = () => U(window.innerWidth >= 480);
95
+ if (b !== "side") return;
96
+ const a = () => ee(window.innerWidth >= 480);
91
97
  return a(), window.addEventListener("resize", a), () => window.removeEventListener("resize", a);
92
- }, [S]);
93
- const w = m.useRef(null);
98
+ }, [b]);
99
+ const g = m.useRef(null);
94
100
  m.useLayoutEffect(() => {
95
- if (!q) return;
101
+ if (!H) return;
96
102
  const a = () => {
97
- const e = w.current;
103
+ const e = g.current;
98
104
  if (!e) return;
99
105
  e.dataset.widthLocked || (e.style.width = `${e.offsetWidth}px`, e.dataset.widthLocked = "true");
100
- const x = e.closest(
106
+ const k = e.closest(
101
107
  "[data-radix-popper-content-wrapper]"
102
108
  );
103
- if (!x) return;
109
+ if (!k) return;
104
110
  const s = e.querySelector(
105
111
  `[${r}="datetimepicker-body"]`
106
112
  );
107
113
  s && (s.style.maxHeight = "", s.style.overflowY = "");
108
- const o = x.getBoundingClientRect(), R = window.innerHeight, $ = window.innerWidth, n = 8, B = R - 2 * n;
109
- let E = { m41: 0, m42: 0 };
114
+ const o = k.getBoundingClientRect(), E = window.innerHeight, B = window.innerWidth, n = 8, W = E - 2 * n;
115
+ let z = { m41: 0, m42: 0 };
110
116
  try {
111
- const c = getComputedStyle(x).transform;
112
- typeof DOMMatrixReadOnly < "u" && c && c !== "none" && (E = new DOMMatrixReadOnly(c));
117
+ const c = getComputedStyle(k).transform;
118
+ typeof DOMMatrixReadOnly < "u" && c && c !== "none" && (z = new DOMMatrixReadOnly(c));
113
119
  } catch {
114
120
  }
115
121
  let d = 0, l = 0;
116
- if (o.height > B) {
122
+ if (o.height > W) {
117
123
  if (s) {
118
124
  const c = e.querySelector(
119
125
  `[${r}="datetimepicker-footer"]`
120
- ), te = c ? c.getBoundingClientRect().height : 0;
121
- s.style.maxHeight = `${B - te}px`, s.style.overflowY = "auto";
126
+ ), ie = c ? c.getBoundingClientRect().height : 0;
127
+ s.style.maxHeight = `${W - ie}px`, s.style.overflowY = "auto";
122
128
  }
123
129
  d = n - o.top;
124
130
  } else
125
- o.bottom > R - n && (d = R - n - o.bottom), o.top + d < n && (d = n - o.top);
126
- o.right > $ - n && (l = $ - n - o.right), o.left + l < n && (l = n - o.left), (l !== 0 || d !== 0) && (x.style.transform = `translate(${E.m41 + l}px, ${E.m42 + d}px)`);
127
- }, ee = requestAnimationFrame(() => {
131
+ o.bottom > E - n && (d = E - n - o.bottom), o.top + d < n && (d = n - o.top);
132
+ o.right > B - n && (l = B - n - o.right), o.left + l < n && (l = n - o.left), (l !== 0 || d !== 0) && (k.style.transform = `translate(${z.m41 + l}px, ${z.m42 + d}px)`);
133
+ }, te = requestAnimationFrame(() => {
128
134
  requestAnimationFrame(a);
129
135
  });
130
136
  let v = 0;
131
- const L = () => {
132
- const e = w.current;
137
+ const $ = () => {
138
+ const e = g.current;
133
139
  e && (e.style.width = "", delete e.dataset.widthLocked), cancelAnimationFrame(v), v = requestAnimationFrame(() => {
134
140
  v = requestAnimationFrame(a);
135
141
  });
136
142
  };
137
- window.addEventListener("resize", L);
138
- const b = w.current;
143
+ window.addEventListener("resize", $);
144
+ const R = g.current;
139
145
  return () => {
140
- cancelAnimationFrame(ee), cancelAnimationFrame(v), window.removeEventListener("resize", L), b && (b.style.width = "", delete b.dataset.widthLocked);
146
+ cancelAnimationFrame(te), cancelAnimationFrame(v), window.removeEventListener("resize", $), R && (R.style.width = "", delete R.dataset.widthLocked);
141
147
  };
142
- }, [q]);
143
- const g = C && S === "side" && Q;
144
- return /* @__PURE__ */ t(ie, { children: /* @__PURE__ */ t(
145
- oe,
148
+ }, [H]);
149
+ const x = S && b === "side" && U;
150
+ return /* @__PURE__ */ t(oe, { children: /* @__PURE__ */ t(
151
+ ne,
146
152
  {
147
153
  align: "start",
148
- className: j(
154
+ className: Y(
149
155
  i.content,
150
- !g && i.contentNarrow,
151
- Z
156
+ !x && i.contentNarrow,
157
+ _
152
158
  ),
153
159
  collisionPadding: 8,
154
160
  flush: !0,
155
- ref: _,
161
+ ref: J,
156
162
  side: "bottom",
157
163
  sideOffset: 4,
158
164
  sticky: "always",
159
- children: /* @__PURE__ */ k(
165
+ children: /* @__PURE__ */ C(
160
166
  "div",
161
167
  {
162
168
  className: i.panelContent,
163
169
  "data-slot": "datetimepicker-content",
164
170
  [r]: "datetimepicker-content",
165
- ref: w,
171
+ ref: g,
166
172
  children: [
167
- /* @__PURE__ */ k(
173
+ /* @__PURE__ */ C(
168
174
  "div",
169
175
  {
170
- className: j(
176
+ className: Y(
171
177
  i.body,
172
- g ? i.bodySide : i.bodyBottom
178
+ x ? i.bodySide : i.bodyBottom
173
179
  ),
174
180
  "data-slot": "datetimepicker-body",
175
181
  [r]: "datetimepicker-body",
176
182
  children: [
177
- g && C ? /* @__PURE__ */ t(
183
+ x && S ? /* @__PURE__ */ t(
178
184
  "div",
179
185
  {
180
186
  className: i.dateSection,
181
187
  "data-slot": "datetimepicker-date-section",
182
188
  [r]: "datetimepicker-date-section",
183
189
  children: /* @__PURE__ */ t(
184
- I,
190
+ M,
185
191
  {
186
- currentTimeInTimezone: u,
187
- disablePast: h,
188
- locale: H,
189
- nextMonthLabel: A,
190
- onChange: y,
191
- previousMonthLabel: z,
192
- showTodayButton: F,
193
- showWeekNumbers: O,
194
- todayLabel: T,
195
- value: p
192
+ currentTimeInTimezone: y,
193
+ disablePast: u,
194
+ locale: L,
195
+ nextMonthLabel: D,
196
+ onChange: w,
197
+ previousMonthLabel: A,
198
+ showTodayButton: T,
199
+ showWeekNumbers: P,
200
+ todayLabel: O,
201
+ value: h
196
202
  }
197
203
  )
198
204
  }
199
205
  ) : /* @__PURE__ */ t(
200
- I,
206
+ M,
201
207
  {
202
- currentTimeInTimezone: u,
203
- disablePast: h,
204
- locale: H,
205
- nextMonthLabel: A,
206
- onChange: y,
207
- previousMonthLabel: z,
208
- showTodayButton: F,
209
- showWeekNumbers: O,
210
- todayLabel: T,
211
- value: p
208
+ currentTimeInTimezone: y,
209
+ disablePast: u,
210
+ locale: L,
211
+ nextMonthLabel: D,
212
+ onChange: w,
213
+ previousMonthLabel: A,
214
+ showTodayButton: T,
215
+ showWeekNumbers: P,
216
+ todayLabel: O,
217
+ value: h
212
218
  }
213
219
  ),
214
- C && /* @__PURE__ */ t(W, { children: g ? /* @__PURE__ */ k(W, { children: [
220
+ S && /* @__PURE__ */ t(j, { children: x ? /* @__PURE__ */ C(j, { children: [
215
221
  /* @__PURE__ */ t(
216
222
  "div",
217
223
  {
@@ -227,44 +233,44 @@ const ce = ne({
227
233
  "data-slot": "datetimepicker-time-section",
228
234
  [r]: "datetimepicker-time-section",
229
235
  children: /* @__PURE__ */ t(
230
- M,
236
+ X,
231
237
  {
232
- currentTimeInTimezone: u,
233
- disablePast: h,
238
+ currentTimeInTimezone: y,
239
+ disablePast: u,
234
240
  fillHeight: !0,
235
- hoursLabel: D,
236
- minuteStep: P,
237
- minutesLabel: N,
238
- onChange: y,
239
- value: p
241
+ hoursLabel: N,
242
+ minuteStep: q,
243
+ minutesLabel: F,
244
+ onChange: w,
245
+ value: h
240
246
  }
241
247
  )
242
248
  }
243
249
  )
244
250
  ] }) : /* @__PURE__ */ t(
245
- M,
251
+ X,
246
252
  {
247
- currentTimeInTimezone: u,
248
- disablePast: h,
249
- hoursLabel: D,
250
- minuteStep: P,
251
- minutesLabel: N,
252
- onChange: y,
253
- value: p
253
+ currentTimeInTimezone: y,
254
+ disablePast: u,
255
+ hoursLabel: N,
256
+ minuteStep: q,
257
+ minutesLabel: F,
258
+ onChange: w,
259
+ value: h
254
260
  }
255
261
  ) })
256
262
  ]
257
263
  }
258
264
  ),
259
- /* @__PURE__ */ k(
265
+ /* @__PURE__ */ C(
260
266
  "div",
261
267
  {
262
268
  className: i.footer,
263
269
  "data-slot": "datetimepicker-footer",
264
270
  [r]: "datetimepicker-footer",
265
271
  children: [
266
- /* @__PURE__ */ t(Y, { onClick: K, size: "sm", variant: "secondary", children: V }),
267
- /* @__PURE__ */ t(Y, { onClick: J, size: "sm", variant: "primary", children: X })
272
+ /* @__PURE__ */ t(G, { onClick: Q, size: "sm", variant: "secondary", children: Z }),
273
+ /* @__PURE__ */ t(G, { onClick: K, size: "sm", variant: "primary", children: V })
268
274
  ]
269
275
  }
270
276
  )
@@ -275,6 +281,6 @@ const ce = ne({
275
281
  ) });
276
282
  });
277
283
  export {
278
- xe as DateTimePickerPanel
284
+ Ce as DateTimePickerPanel
279
285
  };
280
286
  //# sourceMappingURL=date-time-picker-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-picker-panel.js","sources":["../../../src/components/date-time-picker/date-time-picker-panel.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { Button } from \"../button/button\"\nimport { PopoverContent, PopoverPortal } from \"../popover/popover\"\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nimport { Calendar } from \"./calendar\"\nimport { TimePicker } from \"./time-picker\"\nimport { useDateTimePickerContext } from \"./date-time-picker-context\"\n\nexport type DateTimePickerPanelProps = {\n showTimePicker?: boolean\n timePickerPosition?: \"bottom\" | \"side\"\n okLabel?: string\n cancelLabel?: string\n previousMonthLabel?: string\n nextMonthLabel?: string\n hoursLabel?: string\n minutesLabel?: string\n showTodayButton?: boolean\n todayLabel?: string\n showWeekNumbers?: boolean\n className?: string\n minuteStep?: number\n}\n\nconst useStyles = makeZenithStyles({\n content: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n },\n contentNarrow: {\n width: \"300px\",\n },\n panelContent: {\n display: \"flex\",\n flexDirection: \"column\",\n ...shorthands.gap(tokens.spacingGroup2),\n ...shorthands.padding(tokens.spacingElement3),\n },\n body: {\n display: \"flex\",\n },\n bodyBottom: {\n flexDirection: \"column\",\n ...shorthands.gap(tokens.spacingGroup1),\n },\n bodySide: {\n flexDirection: \"row\",\n ...shorthands.gap(tokens.spacingGroup1),\n position: \"relative\",\n },\n dateSection: {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n minWidth: \"0\",\n },\n timeSpacer: {\n width: \"9rem\",\n flexShrink: 0,\n },\n timeSection: {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n right: 0,\n width: \"9rem\",\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n display: \"flex\",\n alignItems: \"stretch\",\n },\n footer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n ...shorthands.gap(tokens.spacingElement2),\n },\n})\n\nexport const DateTimePickerPanel = React.forwardRef<\n HTMLDivElement,\n DateTimePickerPanelProps\n>(function DateTimePickerPanel(\n {\n showTimePicker = true,\n timePickerPosition = \"bottom\",\n okLabel = \"Apply\",\n cancelLabel = \"Cancel\",\n previousMonthLabel = \"Previous month\",\n nextMonthLabel = \"Next month\",\n hoursLabel,\n minutesLabel,\n showTodayButton = false,\n todayLabel = \"Today\",\n showWeekNumbers = false,\n className,\n minuteStep = 1,\n },\n ref\n) {\n const styles = useStyles()\n const {\n tempValue,\n isOpen,\n locale,\n disablePast,\n currentTimeInTimezone,\n handleDateChange,\n confirm,\n cancel,\n } = useDateTimePickerContext()\n\n // Responsive: fall back to bottom layout on narrow viewports.\n const [isWideEnough, setIsWideEnough] = React.useState(true)\n\n React.useEffect(() => {\n if (timePickerPosition !== \"side\") return\n\n const update = () => setIsWideEnough(window.innerWidth >= 480)\n\n update()\n window.addEventListener(\"resize\", update)\n\n return () => window.removeEventListener(\"resize\", update)\n }, [timePickerPosition])\n\n // Fix viewport overflow: Floating UI's shift middleware may not work in all\n // environments (e.g. microfrontend hosts). Manually detect overflow and\n // adjust the popper wrapper's transform to keep the popover within viewport.\n const contentRef = React.useRef<HTMLDivElement>(null)\n\n React.useLayoutEffect(() => {\n if (!isOpen) return\n\n const adjustPosition = () => {\n const el = contentRef.current\n if (!el) return\n\n // Lock popover width on first open to prevent resizing on calendar view changes\n if (!el.dataset.widthLocked) {\n el.style.width = `${el.offsetWidth}px`\n el.dataset.widthLocked = \"true\"\n }\n\n const wrapper = el.closest(\n \"[data-radix-popper-content-wrapper]\"\n ) as HTMLElement | null\n if (!wrapper) return\n\n // Reset previous constraints so we measure natural size\n const body = el.querySelector(\n `[${SLOT_ATTR}=\"datetimepicker-body\"]`\n ) as HTMLElement | null\n if (body) {\n body.style.maxHeight = \"\"\n body.style.overflowY = \"\"\n }\n\n const rect = wrapper.getBoundingClientRect()\n const vh = window.innerHeight\n const vw = window.innerWidth\n const pad = 8\n const maxH = vh - 2 * pad\n\n let matrix = { m41: 0, m42: 0 }\n try {\n const computedTransform = getComputedStyle(wrapper).transform\n if (\n typeof DOMMatrixReadOnly !== \"undefined\" &&\n computedTransform &&\n computedTransform !== \"none\"\n ) {\n matrix = new DOMMatrixReadOnly(computedTransform)\n }\n } catch {\n // Fallback if transform cannot be parsed\n }\n let dy = 0\n let dx = 0\n\n if (rect.height > maxH) {\n // Popover is taller than viewport — constrain the body area\n // (keep footer visible) and pin to top padding\n if (body) {\n const footer = el.querySelector(\n `[${SLOT_ATTR}=\"datetimepicker-footer\"]`\n ) as HTMLElement | null\n const footerH = footer ? footer.getBoundingClientRect().height : 0\n body.style.maxHeight = `${maxH - footerH}px`\n body.style.overflowY = \"auto\"\n }\n dy = pad - rect.top\n } else {\n // Fits in viewport — just shift to stay within bounds\n if (rect.bottom > vh - pad) {\n dy = vh - pad - rect.bottom\n }\n if (rect.top + dy < pad) {\n dy = pad - rect.top\n }\n }\n\n // Keep the popover on-screen horizontally\n if (rect.right > vw - pad) {\n dx = vw - pad - rect.right\n }\n if (rect.left + dx < pad) {\n dx = pad - rect.left\n }\n\n if (dx !== 0 || dy !== 0) {\n wrapper.style.transform = `translate(${matrix.m41 + dx}px, ${matrix.m42 + dy}px)`\n }\n }\n\n // Wait for Floating UI to finish positioning\n const raf = requestAnimationFrame(() => {\n requestAnimationFrame(adjustPosition)\n })\n\n let resizeRaf = 0\n const onResize = () => {\n const el = contentRef.current\n if (el) {\n el.style.width = \"\"\n delete el.dataset.widthLocked\n }\n cancelAnimationFrame(resizeRaf)\n resizeRaf = requestAnimationFrame(() => {\n resizeRaf = requestAnimationFrame(adjustPosition)\n })\n }\n window.addEventListener(\"resize\", onResize)\n\n const el = contentRef.current\n\n return () => {\n cancelAnimationFrame(raf)\n cancelAnimationFrame(resizeRaf)\n window.removeEventListener(\"resize\", onResize)\n // Reset locked width on close so next open re-measures\n if (el) {\n el.style.width = \"\"\n delete el.dataset.widthLocked\n }\n }\n }, [isOpen])\n\n const isSideLayout =\n showTimePicker && timePickerPosition === \"side\" && isWideEnough\n\n return (\n <PopoverPortal>\n <PopoverContent\n align=\"start\"\n className={mergeClasses(\n styles.content,\n !isSideLayout && styles.contentNarrow,\n className\n )}\n collisionPadding={8}\n flush\n ref={ref}\n side=\"bottom\"\n sideOffset={4}\n sticky=\"always\"\n >\n <div\n className={styles.panelContent}\n data-slot=\"datetimepicker-content\"\n {...{ [SLOT_ATTR]: \"datetimepicker-content\" }}\n ref={contentRef}\n >\n <div\n className={mergeClasses(\n styles.body,\n isSideLayout ? styles.bodySide : styles.bodyBottom\n )}\n data-slot=\"datetimepicker-body\"\n {...{ [SLOT_ATTR]: \"datetimepicker-body\" }}\n >\n {isSideLayout && showTimePicker ? (\n <div\n className={styles.dateSection}\n data-slot=\"datetimepicker-date-section\"\n {...{ [SLOT_ATTR]: \"datetimepicker-date-section\" }}\n >\n <Calendar\n currentTimeInTimezone={currentTimeInTimezone}\n disablePast={disablePast}\n locale={locale}\n nextMonthLabel={nextMonthLabel}\n onChange={handleDateChange}\n previousMonthLabel={previousMonthLabel}\n showTodayButton={showTodayButton}\n showWeekNumbers={showWeekNumbers}\n todayLabel={todayLabel}\n value={tempValue}\n />\n </div>\n ) : (\n <Calendar\n currentTimeInTimezone={currentTimeInTimezone}\n disablePast={disablePast}\n locale={locale}\n nextMonthLabel={nextMonthLabel}\n onChange={handleDateChange}\n previousMonthLabel={previousMonthLabel}\n showTodayButton={showTodayButton}\n showWeekNumbers={showWeekNumbers}\n todayLabel={todayLabel}\n value={tempValue}\n />\n )}\n {showTimePicker && (\n <>\n {isSideLayout ? (\n <>\n <div\n className={styles.timeSpacer}\n data-slot=\"datetimepicker-time-spacer\"\n {...{ [SLOT_ATTR]: \"datetimepicker-time-spacer\" }}\n />\n <div\n className={styles.timeSection}\n data-slot=\"datetimepicker-time-section\"\n {...{ [SLOT_ATTR]: \"datetimepicker-time-section\" }}\n >\n <TimePicker\n currentTimeInTimezone={currentTimeInTimezone}\n disablePast={disablePast}\n fillHeight\n hoursLabel={hoursLabel}\n minuteStep={minuteStep}\n minutesLabel={minutesLabel}\n onChange={handleDateChange}\n value={tempValue}\n />\n </div>\n </>\n ) : (\n <TimePicker\n currentTimeInTimezone={currentTimeInTimezone}\n disablePast={disablePast}\n hoursLabel={hoursLabel}\n minuteStep={minuteStep}\n minutesLabel={minutesLabel}\n onChange={handleDateChange}\n value={tempValue}\n />\n )}\n </>\n )}\n </div>\n <div\n className={styles.footer}\n data-slot=\"datetimepicker-footer\"\n {...{ [SLOT_ATTR]: \"datetimepicker-footer\" }}\n >\n <Button onClick={cancel} size=\"sm\" variant=\"secondary\">\n {cancelLabel}\n </Button>\n <Button onClick={confirm} size=\"sm\" variant=\"primary\">\n {okLabel}\n </Button>\n </div>\n </div>\n </PopoverContent>\n </PopoverPortal>\n )\n})\n"],"names":["useStyles","makeZenithStyles","shorthands","tokens.spacingGroup2","tokens.spacingElement3","tokens.spacingGroup1","tokens.spacingElement2","DateTimePickerPanel","React","showTimePicker","timePickerPosition","okLabel","cancelLabel","previousMonthLabel","nextMonthLabel","hoursLabel","minutesLabel","showTodayButton","todayLabel","showWeekNumbers","className","minuteStep","ref","styles","tempValue","isOpen","locale","disablePast","currentTimeInTimezone","handleDateChange","confirm","cancel","useDateTimePickerContext","isWideEnough","setIsWideEnough","update","contentRef","adjustPosition","el","wrapper","body","SLOT_ATTR","rect","vh","vw","pad","maxH","matrix","computedTransform","dy","dx","footer","footerH","raf","resizeRaf","onResize","isSideLayout","PopoverPortal","jsx","PopoverContent","mergeClasses","jsxs","Calendar","Fragment","TimePicker","Button"],"mappings":"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"}
1
+ {"version":3,"file":"date-time-picker-panel.js","sources":["../../../src/components/date-time-picker/date-time-picker-panel.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { Button } from \"../button/button\"\nimport { PopoverContent, PopoverPortal } from \"../popover/popover\"\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\n\nimport { Calendar } from \"./calendar\"\nimport { TimePicker } from \"./time-picker\"\nimport { useDateTimePickerContext } from \"./date-time-picker-context\"\n\nexport type DateTimePickerPanelProps = {\n showTimePicker?: boolean\n timePickerPosition?: \"bottom\" | \"side\"\n okLabel?: string\n cancelLabel?: string\n previousMonthLabel?: string\n nextMonthLabel?: string\n hoursLabel?: string\n minutesLabel?: string\n showTodayButton?: boolean\n todayLabel?: string\n showWeekNumbers?: boolean\n className?: string\n minuteStep?: number\n}\n\nconst useStyles = makeZenithStyles({\n content: {\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n },\n contentNarrow: {\n ...boxModel,\n width: \"300px\",\n },\n panelContent: {\n ...boxModel,\n display: \"flex\",\n flexDirection: \"column\",\n ...shorthands.gap(tokens.spacingGroup2),\n ...shorthands.padding(tokens.spacingElement3),\n },\n body: {\n display: \"flex\",\n },\n bodyBottom: {\n flexDirection: \"column\",\n ...shorthands.gap(tokens.spacingGroup1),\n },\n bodySide: {\n flexDirection: \"row\",\n ...shorthands.gap(tokens.spacingGroup1),\n position: \"relative\",\n },\n dateSection: {\n ...boxModel,\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n minWidth: \"0\",\n },\n timeSpacer: {\n ...boxModel,\n width: \"9rem\",\n flexShrink: 0,\n },\n timeSection: {\n ...boxModel,\n position: \"absolute\",\n top: 0,\n bottom: 0,\n right: 0,\n width: \"9rem\",\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n display: \"flex\",\n alignItems: \"stretch\",\n },\n footer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n ...shorthands.gap(tokens.spacingElement2),\n },\n})\n\nexport const DateTimePickerPanel = React.forwardRef<\n HTMLDivElement,\n DateTimePickerPanelProps\n>(function DateTimePickerPanel(\n {\n showTimePicker = true,\n timePickerPosition = \"bottom\",\n okLabel = \"Apply\",\n cancelLabel = \"Cancel\",\n previousMonthLabel = \"Previous month\",\n nextMonthLabel = \"Next month\",\n hoursLabel,\n minutesLabel,\n showTodayButton = false,\n todayLabel = \"Today\",\n showWeekNumbers = false,\n className,\n minuteStep = 1,\n },\n ref\n) {\n const styles = useStyles()\n const {\n tempValue,\n isOpen,\n locale,\n disablePast,\n currentTimeInTimezone,\n handleDateChange,\n confirm,\n cancel,\n } = useDateTimePickerContext()\n\n // Responsive: fall back to bottom layout on narrow viewports.\n const [isWideEnough, setIsWideEnough] = React.useState(true)\n\n React.useEffect(() => {\n if (timePickerPosition !== \"side\") return\n\n const update = () => setIsWideEnough(window.innerWidth >= 480)\n\n update()\n window.addEventListener(\"resize\", update)\n\n return () => window.removeEventListener(\"resize\", update)\n }, [timePickerPosition])\n\n // Fix viewport overflow: Floating UI's shift middleware may not work in all\n // environments (e.g. microfrontend hosts). Manually detect overflow and\n // adjust the popper wrapper's transform to keep the popover within viewport.\n const contentRef = React.useRef<HTMLDivElement>(null)\n\n React.useLayoutEffect(() => {\n if (!isOpen) return\n\n const adjustPosition = () => {\n const el = contentRef.current\n if (!el) return\n\n // Lock popover width on first open to prevent resizing on calendar view changes\n if (!el.dataset.widthLocked) {\n el.style.width = `${el.offsetWidth}px`\n el.dataset.widthLocked = \"true\"\n }\n\n const wrapper = el.closest(\n \"[data-radix-popper-content-wrapper]\"\n ) as HTMLElement | null\n if (!wrapper) return\n\n // Reset previous constraints so we measure natural size\n const body = el.querySelector(\n `[${SLOT_ATTR}=\"datetimepicker-body\"]`\n ) as HTMLElement | null\n if (body) {\n body.style.maxHeight = \"\"\n body.style.overflowY = \"\"\n }\n\n const rect = wrapper.getBoundingClientRect()\n const vh = window.innerHeight\n const vw = window.innerWidth\n const pad = 8\n const maxH = vh - 2 * pad\n\n let matrix = { m41: 0, m42: 0 }\n try {\n const computedTransform = getComputedStyle(wrapper).transform\n if (\n typeof DOMMatrixReadOnly !== \"undefined\" &&\n computedTransform &&\n computedTransform !== \"none\"\n ) {\n matrix = new DOMMatrixReadOnly(computedTransform)\n }\n } catch {\n // Fallback if transform cannot be parsed\n }\n let dy = 0\n let dx = 0\n\n if (rect.height > maxH) {\n // Popover is taller than viewport — constrain the body area\n // (keep footer visible) and pin to top padding\n if (body) {\n const footer = el.querySelector(\n `[${SLOT_ATTR}=\"datetimepicker-footer\"]`\n ) as HTMLElement | null\n const footerH = footer ? footer.getBoundingClientRect().height : 0\n body.style.maxHeight = `${maxH - footerH}px`\n body.style.overflowY = \"auto\"\n }\n dy = pad - rect.top\n } else {\n // Fits in viewport — just shift to stay within bounds\n if (rect.bottom > vh - pad) {\n dy = vh - pad - rect.bottom\n }\n if (rect.top + dy < pad) {\n dy = pad - rect.top\n }\n }\n\n // Keep the popover on-screen horizontally\n if (rect.right > vw - pad) {\n dx = vw - pad - rect.right\n }\n if (rect.left + dx < pad) {\n dx = pad - rect.left\n }\n\n if (dx !== 0 || dy !== 0) {\n wrapper.style.transform = `translate(${matrix.m41 + dx}px, ${matrix.m42 + dy}px)`\n }\n }\n\n // Wait for Floating UI to finish positioning\n const raf = requestAnimationFrame(() => {\n requestAnimationFrame(adjustPosition)\n })\n\n let resizeRaf = 0\n const onResize = () => {\n const el = contentRef.current\n if (el) {\n el.style.width = \"\"\n delete el.dataset.widthLocked\n }\n cancelAnimationFrame(resizeRaf)\n resizeRaf = requestAnimationFrame(() => {\n resizeRaf = requestAnimationFrame(adjustPosition)\n })\n }\n window.addEventListener(\"resize\", onResize)\n\n const el = contentRef.current\n\n return () => {\n cancelAnimationFrame(raf)\n cancelAnimationFrame(resizeRaf)\n window.removeEventListener(\"resize\", onResize)\n // Reset locked width on close so next open re-measures\n if (el) {\n el.style.width = \"\"\n delete el.dataset.widthLocked\n }\n }\n }, [isOpen])\n\n const isSideLayout =\n showTimePicker && timePickerPosition === \"side\" && isWideEnough\n\n return (\n <PopoverPortal>\n <PopoverContent\n align=\"start\"\n className={mergeClasses(\n styles.content,\n !isSideLayout && styles.contentNarrow,\n className\n )}\n collisionPadding={8}\n flush\n ref={ref}\n side=\"bottom\"\n sideOffset={4}\n sticky=\"always\"\n >\n <div\n className={styles.panelContent}\n data-slot=\"datetimepicker-content\"\n {...{ [SLOT_ATTR]: \"datetimepicker-content\" }}\n ref={contentRef}\n >\n <div\n className={mergeClasses(\n styles.body,\n isSideLayout ? styles.bodySide : styles.bodyBottom\n )}\n data-slot=\"datetimepicker-body\"\n {...{ [SLOT_ATTR]: \"datetimepicker-body\" }}\n >\n {isSideLayout && showTimePicker ? (\n <div\n className={styles.dateSection}\n data-slot=\"datetimepicker-date-section\"\n {...{ [SLOT_ATTR]: \"datetimepicker-date-section\" }}\n >\n <Calendar\n currentTimeInTimezone={currentTimeInTimezone}\n disablePast={disablePast}\n locale={locale}\n nextMonthLabel={nextMonthLabel}\n onChange={handleDateChange}\n previousMonthLabel={previousMonthLabel}\n showTodayButton={showTodayButton}\n showWeekNumbers={showWeekNumbers}\n todayLabel={todayLabel}\n value={tempValue}\n />\n </div>\n ) : (\n <Calendar\n currentTimeInTimezone={currentTimeInTimezone}\n disablePast={disablePast}\n locale={locale}\n nextMonthLabel={nextMonthLabel}\n onChange={handleDateChange}\n previousMonthLabel={previousMonthLabel}\n showTodayButton={showTodayButton}\n showWeekNumbers={showWeekNumbers}\n todayLabel={todayLabel}\n value={tempValue}\n />\n )}\n {showTimePicker && (\n <>\n {isSideLayout ? (\n <>\n <div\n className={styles.timeSpacer}\n data-slot=\"datetimepicker-time-spacer\"\n {...{ [SLOT_ATTR]: \"datetimepicker-time-spacer\" }}\n />\n <div\n className={styles.timeSection}\n data-slot=\"datetimepicker-time-section\"\n {...{ [SLOT_ATTR]: \"datetimepicker-time-section\" }}\n >\n <TimePicker\n currentTimeInTimezone={currentTimeInTimezone}\n disablePast={disablePast}\n fillHeight\n hoursLabel={hoursLabel}\n minuteStep={minuteStep}\n minutesLabel={minutesLabel}\n onChange={handleDateChange}\n value={tempValue}\n />\n </div>\n </>\n ) : (\n <TimePicker\n currentTimeInTimezone={currentTimeInTimezone}\n disablePast={disablePast}\n hoursLabel={hoursLabel}\n minuteStep={minuteStep}\n minutesLabel={minutesLabel}\n onChange={handleDateChange}\n value={tempValue}\n />\n )}\n </>\n )}\n </div>\n <div\n className={styles.footer}\n data-slot=\"datetimepicker-footer\"\n {...{ [SLOT_ATTR]: \"datetimepicker-footer\" }}\n >\n <Button onClick={cancel} size=\"sm\" variant=\"secondary\">\n {cancelLabel}\n </Button>\n <Button onClick={confirm} size=\"sm\" variant=\"primary\">\n {okLabel}\n </Button>\n </div>\n </div>\n </PopoverContent>\n </PopoverPortal>\n )\n})\n"],"names":["useStyles","makeZenithStyles","boxModel","shorthands","tokens.spacingGroup2","tokens.spacingElement3","tokens.spacingGroup1","tokens.spacingElement2","DateTimePickerPanel","React","showTimePicker","timePickerPosition","okLabel","cancelLabel","previousMonthLabel","nextMonthLabel","hoursLabel","minutesLabel","showTodayButton","todayLabel","showWeekNumbers","className","minuteStep","ref","styles","tempValue","isOpen","locale","disablePast","currentTimeInTimezone","handleDateChange","confirm","cancel","useDateTimePickerContext","isWideEnough","setIsWideEnough","update","contentRef","adjustPosition","el","wrapper","body","SLOT_ATTR","rect","vh","vw","pad","maxH","matrix","computedTransform","dy","dx","footer","footerH","raf","resizeRaf","onResize","isSideLayout","PopoverPortal","jsx","PopoverContent","mergeClasses","jsxs","Calendar","Fragment","TimePicker","Button"],"mappings":";;;;;;;;;;;AA8BA,MAAMA,KAAYC,GAAiB;AAAA,EACjC,SAAS;AAAA,IACP,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAAA,EAEb,eAAe;AAAA,IACb,GAAGC;AAAA,IACH,OAAO;AAAA,EAAA;AAAA,EAET,cAAc;AAAA,IACZ,GAAGA;AAAA,IACH,SAAS;AAAA,IACT,eAAe;AAAA,IACf,GAAGC,EAAW,IAAIC,EAAoB;AAAA,IACtC,GAAGD,EAAW,QAAQE,EAAsB;AAAA,EAAA;AAAA,EAE9C,MAAM;AAAA,IACJ,SAAS;AAAA,EAAA;AAAA,EAEX,YAAY;AAAA,IACV,eAAe;AAAA,IACf,GAAGF,EAAW,IAAIG,CAAoB;AAAA,EAAA;AAAA,EAExC,UAAU;AAAA,IACR,eAAe;AAAA,IACf,GAAGH,EAAW,IAAIG,CAAoB;AAAA,IACtC,UAAU;AAAA,EAAA;AAAA,EAEZ,aAAa;AAAA,IACX,GAAGJ;AAAA,IACH,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,UAAU;AAAA,EAAA;AAAA,EAEZ,YAAY;AAAA,IACV,GAAGA;AAAA,IACH,OAAO;AAAA,IACP,YAAY;AAAA,EAAA;AAAA,EAEd,aAAa;AAAA,IACX,GAAGA;AAAA,IACH,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,YAAY;AAAA,EAAA;AAAA,EAEd,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,GAAGC,EAAW,IAAII,EAAsB;AAAA,EAAA;AAE5C,CAAC,GAEYC,KAAsBC,EAAM,WAGvC,SACA;AAAA,EACE,gBAAAC,IAAiB;AAAA,EACjB,oBAAAC,IAAqB;AAAA,EACrB,SAAAC,IAAU;AAAA,EACV,aAAAC,IAAc;AAAA,EACd,oBAAAC,IAAqB;AAAA,EACrB,gBAAAC,IAAiB;AAAA,EACjB,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,YAAAC,IAAa;AAAA,EACb,iBAAAC,IAAkB;AAAA,EAClB,WAAAC;AAAA,EACA,YAAAC,IAAa;AACf,GACAC,GACA;AACA,QAAMC,IAASxB,GAAA,GACT;AAAA,IACJ,WAAAyB;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,aAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,EAAA,IACEC,GAAA,GAGE,CAACC,GAAcC,EAAe,IAAI1B,EAAM,SAAS,EAAI;AAE3D,EAAAA,EAAM,UAAU,MAAM;AACpB,QAAIE,MAAuB,OAAQ;AAEnC,UAAMyB,IAAS,MAAMD,GAAgB,OAAO,cAAc,GAAG;AAE7D,WAAAC,EAAA,GACA,OAAO,iBAAiB,UAAUA,CAAM,GAEjC,MAAM,OAAO,oBAAoB,UAAUA,CAAM;AAAA,EAC1D,GAAG,CAACzB,CAAkB,CAAC;AAKvB,QAAM0B,IAAa5B,EAAM,OAAuB,IAAI;AAEpD,EAAAA,EAAM,gBAAgB,MAAM;AAC1B,QAAI,CAACiB,EAAQ;AAEb,UAAMY,IAAiB,MAAM;AAC3B,YAAMC,IAAKF,EAAW;AACtB,UAAI,CAACE,EAAI;AAGT,MAAKA,EAAG,QAAQ,gBACdA,EAAG,MAAM,QAAQ,GAAGA,EAAG,WAAW,MAClCA,EAAG,QAAQ,cAAc;AAG3B,YAAMC,IAAUD,EAAG;AAAA,QACjB;AAAA,MAAA;AAEF,UAAI,CAACC,EAAS;AAGd,YAAMC,IAAOF,EAAG;AAAA,QACd,IAAIG,CAAS;AAAA,MAAA;AAEf,MAAID,MACFA,EAAK,MAAM,YAAY,IACvBA,EAAK,MAAM,YAAY;AAGzB,YAAME,IAAOH,EAAQ,sBAAA,GACfI,IAAK,OAAO,aACZC,IAAK,OAAO,YACZC,IAAM,GACNC,IAAOH,IAAK,IAAIE;AAEtB,UAAIE,IAAS,EAAE,KAAK,GAAG,KAAK,EAAA;AAC5B,UAAI;AACF,cAAMC,IAAoB,iBAAiBT,CAAO,EAAE;AACpD,QACE,OAAO,oBAAsB,OAC7BS,KACAA,MAAsB,WAEtBD,IAAS,IAAI,kBAAkBC,CAAiB;AAAA,MAEpD,QAAQ;AAAA,MAER;AACA,UAAIC,IAAK,GACLC,IAAK;AAET,UAAIR,EAAK,SAASI,GAAM;AAGtB,YAAIN,GAAM;AACR,gBAAMW,IAASb,EAAG;AAAA,YAChB,IAAIG,CAAS;AAAA,UAAA,GAETW,KAAUD,IAASA,EAAO,sBAAA,EAAwB,SAAS;AACjE,UAAAX,EAAK,MAAM,YAAY,GAAGM,IAAOM,EAAO,MACxCZ,EAAK,MAAM,YAAY;AAAA,QACzB;AACA,QAAAS,IAAKJ,IAAMH,EAAK;AAAA,MAClB;AAEE,QAAIA,EAAK,SAASC,IAAKE,MACrBI,IAAKN,IAAKE,IAAMH,EAAK,SAEnBA,EAAK,MAAMO,IAAKJ,MAClBI,IAAKJ,IAAMH,EAAK;AAKpB,MAAIA,EAAK,QAAQE,IAAKC,MACpBK,IAAKN,IAAKC,IAAMH,EAAK,QAEnBA,EAAK,OAAOQ,IAAKL,MACnBK,IAAKL,IAAMH,EAAK,QAGdQ,MAAO,KAAKD,MAAO,OACrBV,EAAQ,MAAM,YAAY,aAAaQ,EAAO,MAAMG,CAAE,OAAOH,EAAO,MAAME,CAAE;AAAA,IAEhF,GAGMI,KAAM,sBAAsB,MAAM;AACtC,4BAAsBhB,CAAc;AAAA,IACtC,CAAC;AAED,QAAIiB,IAAY;AAChB,UAAMC,IAAW,MAAM;AACrB,YAAMjB,IAAKF,EAAW;AACtB,MAAIE,MACFA,EAAG,MAAM,QAAQ,IACjB,OAAOA,EAAG,QAAQ,cAEpB,qBAAqBgB,CAAS,GAC9BA,IAAY,sBAAsB,MAAM;AACtC,QAAAA,IAAY,sBAAsBjB,CAAc;AAAA,MAClD,CAAC;AAAA,IACH;AACA,WAAO,iBAAiB,UAAUkB,CAAQ;AAE1C,UAAMjB,IAAKF,EAAW;AAEtB,WAAO,MAAM;AACX,2BAAqBiB,EAAG,GACxB,qBAAqBC,CAAS,GAC9B,OAAO,oBAAoB,UAAUC,CAAQ,GAEzCjB,MACFA,EAAG,MAAM,QAAQ,IACjB,OAAOA,EAAG,QAAQ;AAAA,IAEtB;AAAA,EACF,GAAG,CAACb,CAAM,CAAC;AAEX,QAAM+B,IACJ/C,KAAkBC,MAAuB,UAAUuB;AAErD,2BACGwB,IAAA,EACC,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,WAAWC;AAAA,QACTrC,EAAO;AAAA,QACP,CAACiC,KAAgBjC,EAAO;AAAA,QACxBH;AAAA,MAAA;AAAA,MAEF,kBAAkB;AAAA,MAClB,OAAK;AAAA,MACL,KAAAE;AAAA,MACA,MAAK;AAAA,MACL,YAAY;AAAA,MACZ,QAAO;AAAA,MAEP,UAAA,gBAAAuC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWtC,EAAO;AAAA,UAClB,aAAU;AAAA,UACJ,CAACkB,CAAS,GAAG;AAAA,UACnB,KAAKL;AAAA,UAEL,UAAA;AAAA,YAAA,gBAAAyB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWD;AAAA,kBACTrC,EAAO;AAAA,kBACPiC,IAAejC,EAAO,WAAWA,EAAO;AAAA,gBAAA;AAAA,gBAE1C,aAAU;AAAA,gBACJ,CAACkB,CAAS,GAAG;AAAA,gBAElB,UAAA;AAAA,kBAAAe,KAAgB/C,IACf,gBAAAiD;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWnC,EAAO;AAAA,sBAClB,aAAU;AAAA,sBACJ,CAACkB,CAAS,GAAG;AAAA,sBAEnB,UAAA,gBAAAiB;AAAA,wBAACI;AAAA,wBAAA;AAAA,0BACC,uBAAAlC;AAAA,0BACA,aAAAD;AAAA,0BACA,QAAAD;AAAA,0BACA,gBAAAZ;AAAA,0BACA,UAAUe;AAAA,0BACV,oBAAAhB;AAAA,0BACA,iBAAAI;AAAA,0BACA,iBAAAE;AAAA,0BACA,YAAAD;AAAA,0BACA,OAAOM;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACT;AAAA,kBAAA,IAGF,gBAAAkC;AAAA,oBAACI;AAAA,oBAAA;AAAA,sBACC,uBAAAlC;AAAA,sBACA,aAAAD;AAAA,sBACA,QAAAD;AAAA,sBACA,gBAAAZ;AAAA,sBACA,UAAUe;AAAA,sBACV,oBAAAhB;AAAA,sBACA,iBAAAI;AAAA,sBACA,iBAAAE;AAAA,sBACA,YAAAD;AAAA,sBACA,OAAOM;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGVf,KACC,gBAAAiD,EAAAK,GAAA,EACG,UAAAP,IACC,gBAAAK,EAAAE,GAAA,EACE,UAAA;AAAA,oBAAA,gBAAAL;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAWnC,EAAO;AAAA,wBAClB,aAAU;AAAA,wBACJ,CAACkB,CAAS,GAAG;AAAA,sBAA6B;AAAA,oBAAA;AAAA,oBAElD,gBAAAiB;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAWnC,EAAO;AAAA,wBAClB,aAAU;AAAA,wBACJ,CAACkB,CAAS,GAAG;AAAA,wBAEnB,UAAA,gBAAAiB;AAAA,0BAACM;AAAA,0BAAA;AAAA,4BACC,uBAAApC;AAAA,4BACA,aAAAD;AAAA,4BACA,YAAU;AAAA,4BACV,YAAAZ;AAAA,4BACA,YAAAM;AAAA,4BACA,cAAAL;AAAA,4BACA,UAAUa;AAAA,4BACV,OAAOL;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBACT;AAAA,oBAAA;AAAA,kBACF,EAAA,CACF,IAEA,gBAAAkC;AAAA,oBAACM;AAAA,oBAAA;AAAA,sBACC,uBAAApC;AAAA,sBACA,aAAAD;AAAA,sBACA,YAAAZ;AAAA,sBACA,YAAAM;AAAA,sBACA,cAAAL;AAAA,sBACA,UAAUa;AAAA,sBACV,OAAOL;AAAA,oBAAA;AAAA,kBAAA,EACT,CAEJ;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGJ,gBAAAqC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWtC,EAAO;AAAA,gBAClB,aAAU;AAAA,gBACJ,CAACkB,CAAS,GAAG;AAAA,gBAEnB,UAAA;AAAA,kBAAA,gBAAAiB,EAACO,KAAO,SAASlC,GAAQ,MAAK,MAAK,SAAQ,aACxC,UAAAnB,EAAA,CACH;AAAA,kBACA,gBAAA8C,EAACO,KAAO,SAASnC,GAAS,MAAK,MAAK,SAAQ,WACzC,UAAAnB,EAAA,CACH;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,GAEJ;AAEJ,CAAC;"}
@@ -3,15 +3,17 @@ import * as o from "react";
3
3
  import { SLOT_ATTR as w, mergeClasses as z } from "@epilot/zenith-runtime/v1";
4
4
  import { Field as G, FieldLabel as H, FieldError as J } from "../field/field.js";
5
5
  import { makeZenithStyles as K } from "../../styles/make-styles.js";
6
- import { DateTimePickerRoot as Q } from "./date-time-picker-context.js";
7
- import { DateTimePickerLabelProvider as U, DateTimePickerInput as W } from "./date-time-picker-input.js";
8
- import { DateTimePickerPopover as X } from "./date-time-picker-popover.js";
9
- import { DateTimePickerPanel as Y } from "./date-time-picker-panel.js";
10
- const $ = K({
6
+ import { boxModel as Q } from "../../styles/host-reset.js";
7
+ import { DateTimePickerRoot as U } from "./date-time-picker-context.js";
8
+ import { DateTimePickerLabelProvider as W, DateTimePickerInput as X } from "./date-time-picker-input.js";
9
+ import { DateTimePickerPopover as Y } from "./date-time-picker-popover.js";
10
+ import { DateTimePickerPanel as $ } from "./date-time-picker-panel.js";
11
+ const A = K({
11
12
  root: {
13
+ ...Q,
12
14
  width: "100%"
13
15
  }
14
- }), se = o.forwardRef(
16
+ }), ce = o.forwardRef(
15
17
  function({
16
18
  value: a,
17
19
  onChange: c,
@@ -29,32 +31,32 @@ const $ = K({
29
31
  cancelLabel: T,
30
32
  inputAriaLabel: i,
31
33
  openPickerAriaLabel: D,
32
- previousMonthLabel: F,
33
- nextMonthLabel: I,
34
- hoursLabel: M,
34
+ previousMonthLabel: M,
35
+ nextMonthLabel: F,
36
+ hoursLabel: I,
35
37
  minutesLabel: g,
36
- showTodayButton: R,
37
- todayLabel: x,
38
+ showTodayButton: x,
39
+ todayLabel: R,
38
40
  showWeekNumbers: S,
39
41
  testId: j,
40
42
  currentTimeInTimezone: L,
41
- timePickerPosition: B,
43
+ timePickerPosition: b,
42
44
  showTimePicker: d = !0,
43
- editable: C,
44
- iconPosition: E,
45
- minuteStep: N
46
- }, O) {
47
- const V = $(), Z = r ? "destructive" : "highlight", m = o.useId(), l = o.useId(), _ = o.useMemo(
45
+ editable: B,
46
+ iconPosition: C,
47
+ minuteStep: E
48
+ }, N) {
49
+ const O = A(), V = r ? "destructive" : "highlight", m = o.useId(), l = o.useId(), Z = o.useMemo(
48
50
  () => t ? { inputId: m, labelId: l, namedByLabel: i === void 0 } : null,
49
51
  [t, m, l, i]
50
- ), b = y ?? (d ? void 0 : "dd/MM/yyyy"), q = h ?? (d ? void 0 : "dd/MM/yyyy");
52
+ ), _ = y ?? (d ? void 0 : "dd/MM/yyyy"), q = h ?? (d ? void 0 : "dd/MM/yyyy");
51
53
  return /* @__PURE__ */ e(
52
- Q,
54
+ U,
53
55
  {
54
56
  currentTimeInTimezone: L,
55
57
  disabled: f,
56
58
  disablePast: p,
57
- format: b,
59
+ format: _,
58
60
  locale: u,
59
61
  onBlur: n,
60
62
  onChange: c,
@@ -62,19 +64,19 @@ const $ = K({
62
64
  children: /* @__PURE__ */ s(
63
65
  G,
64
66
  {
65
- className: z(V.root, v),
67
+ className: z(O.root, v),
66
68
  "data-slot": "datetimepicker",
67
69
  [w]: "datetimepicker",
68
- ref: O,
69
- variant: Z,
70
+ ref: N,
71
+ variant: V,
70
72
  children: [
71
73
  t && /* @__PURE__ */ e(H, { id: l, htmlFor: m, children: t }),
72
- /* @__PURE__ */ e(U, { value: _, children: /* @__PURE__ */ s(X, { children: [
74
+ /* @__PURE__ */ e(W, { value: Z, children: /* @__PURE__ */ s(Y, { children: [
73
75
  /* @__PURE__ */ e(
74
- W,
76
+ X,
75
77
  {
76
- editable: C,
77
- iconPosition: E,
78
+ editable: B,
79
+ iconPosition: C,
78
80
  inputAriaLabel: i,
79
81
  keyboardIcon: P,
80
82
  openPickerAriaLabel: D,
@@ -83,20 +85,20 @@ const $ = K({
83
85
  }
84
86
  ),
85
87
  /* @__PURE__ */ e(
86
- Y,
88
+ $,
87
89
  {
88
90
  cancelLabel: T,
89
- hoursLabel: M,
90
- minuteStep: N,
91
+ hoursLabel: I,
92
+ minuteStep: E,
91
93
  minutesLabel: g,
92
- nextMonthLabel: I,
94
+ nextMonthLabel: F,
93
95
  okLabel: k,
94
- previousMonthLabel: F,
96
+ previousMonthLabel: M,
95
97
  showTimePicker: d,
96
- showTodayButton: R,
98
+ showTodayButton: x,
97
99
  showWeekNumbers: S,
98
- timePickerPosition: B,
99
- todayLabel: x
100
+ timePickerPosition: b,
101
+ todayLabel: R
100
102
  }
101
103
  )
102
104
  ] }) }),
@@ -109,10 +111,10 @@ const $ = K({
109
111
  }
110
112
  );
111
113
  export {
112
- se as DateTimePicker,
113
- W as DateTimePickerInput,
114
- Y as DateTimePickerPanel,
115
- X as DateTimePickerPopover,
116
- Q as DateTimePickerRoot
114
+ ce as DateTimePicker,
115
+ X as DateTimePickerInput,
116
+ $ as DateTimePickerPanel,
117
+ Y as DateTimePickerPopover,
118
+ U as DateTimePickerRoot
117
119
  };
118
120
  //# sourceMappingURL=date-time-picker.js.map