@sentropic/design-system-vue 0.36.55 → 0.36.57

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.
@@ -0,0 +1,496 @@
1
+ import { defineComponent, h, computed, ref, watch, onMounted, onUnmounted, nextTick, } from "vue";
2
+ import { Clock, ChevronDown } from "lucide-vue-next";
3
+ import { classNames } from "./classNames.js";
4
+ import { ContentSwitcher } from "./ContentSwitcher.js";
5
+ import { SelectableList } from "./SelectableList.js";
6
+ import { SelectableRow } from "./SelectableRow.js";
7
+ import { Calendar } from "./Calendar.js";
8
+ import { TimePicker } from "./TimePicker.js";
9
+ import { Input } from "./Input.js";
10
+ import { Button } from "./Button.js";
11
+ import { DEFAULT_TIME_RANGE_PRESETS, parsePresetMs, resolveRelative, splitAbsolute, composeAbsolute, formatTriggerLabel as defaultFormatTriggerLabel, formatPresetLabel as defaultFormatPresetLabel, } from "./timeRange.js";
12
+ let _trpCounter = 0;
13
+ function nextTrpId() {
14
+ return `st-timerangepicker-${++_trpCounter}`;
15
+ }
16
+ function isFrLocale(locale) {
17
+ return (locale ?? "fr-FR").toLowerCase().startsWith("fr");
18
+ }
19
+ function monthOf(iso, offsetMonths) {
20
+ const [y, m] = iso.split("-").map(Number);
21
+ const d = new Date(y, m - 1 + offsetMonths, 1);
22
+ return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}`;
23
+ }
24
+ const EMPTY_DRAFT = { fromDate: "", fromTime: "", toDate: "", toTime: "", fromText: "", toText: "" };
25
+ const FOCUSABLE_SELECTOR = [
26
+ "a[href]",
27
+ "button:not([disabled])",
28
+ "input:not([disabled])",
29
+ "select:not([disabled])",
30
+ "textarea:not([disabled])",
31
+ "[tabindex]:not([tabindex='-1'])",
32
+ ].join(",");
33
+ const DATE_TIME_TEXT_RE = /^(\d{4}-\d{2}-\d{2})[ T](\d{1,2}:\d{2})$/;
34
+ /**
35
+ * New-Relic-style time range selector. Trigger button showing the current
36
+ * range → popover with two tabs (Relative | Custom). Relative = preset list,
37
+ * resolves+emits+closes immediately. Custom = absolute range editor (calendar
38
+ * range + a time picker per bound + typed inputs), STAGED behind Apply.
39
+ *
40
+ * Ported from TimeRangePicker.svelte. Composes EXISTING Vue DS primitives:
41
+ * ContentSwitcher, SelectableList/SelectableRow, Calendar, TimePicker, Input,
42
+ * Button. DEVIATION from the Svelte reference: MenuPopover.ts in this package
43
+ * is a self-contained trigger+dialog widget (no `trigger` prop, no
44
+ * JS-computed viewport positioning, no outside-click/Escape auto-dismiss, and
45
+ * it renders its role="dialog" wrapper unconditionally) — it does not support
46
+ * the "external trigger + positioned panel" shape this component needs. So,
47
+ * like DatePicker.ts and Dropdown.ts in this same package, TimeRangePicker
48
+ * owns its own open state, outside-pointerdown + Escape dismissal, and a
49
+ * CSS-positioned (position:absolute) panel — this mirrors MenuPopover's ROLE
50
+ * (dialog panel, placement classes) without depending on its component API.
51
+ * Focus trap + focus-return to the trigger are implemented here too (Vue's
52
+ * MenuPopover/Modal don't trap focus either, matching the Svelte doc note).
53
+ */
54
+ export const TimeRangePicker = defineComponent({
55
+ name: "TimeRangePicker",
56
+ props: {
57
+ modelValue: { type: Object, default: undefined },
58
+ value: { type: Object, default: undefined },
59
+ defaultValue: { type: Object, default: undefined },
60
+ onChange: { type: Function, default: undefined },
61
+ presets: { type: Array, default: () => DEFAULT_TIME_RANGE_PRESETS },
62
+ min: { type: Number, default: undefined },
63
+ max: { type: Number, default: undefined },
64
+ locale: { type: String, default: "fr-FR" },
65
+ timeFormat: { type: String, default: "24" },
66
+ timeStep: { type: Number, default: 15 },
67
+ calendarMonths: { type: Number, default: 2 },
68
+ disabled: { type: Boolean, default: false },
69
+ label: { type: String, default: undefined },
70
+ placement: { type: String, default: "bottom-start" },
71
+ align: { type: String, default: undefined },
72
+ size: { type: String, default: "md" },
73
+ class: { type: String, default: undefined },
74
+ formatRange: {
75
+ type: Function,
76
+ default: undefined,
77
+ },
78
+ formatPresetLabel: {
79
+ type: Function,
80
+ default: undefined,
81
+ },
82
+ },
83
+ emits: ["update:modelValue", "change"],
84
+ setup(props, { emit }) {
85
+ const autoId = ref(nextTrpId());
86
+ const fieldLabelId = `${autoId.value}-label`;
87
+ const triggerTextId = `${autoId.value}-text`;
88
+ function computeDefaultValue() {
89
+ if (props.defaultValue)
90
+ return props.defaultValue;
91
+ const now = Date.now();
92
+ const resolved = resolveRelative("30m", now, { min: props.min, max: props.max });
93
+ return resolved ?? { mode: "relative", relative: "30m", from: now - 30 * 60_000, to: now };
94
+ }
95
+ // Controlled when the consumer passes either `modelValue` or its `value`
96
+ // alias; otherwise the component seeds + manages its own internal state
97
+ // (mirrors the Svelte $bindable-with-self-seed pattern).
98
+ const controlled = computed(() => props.modelValue !== undefined || props.value !== undefined);
99
+ const internal = ref(props.modelValue ?? props.value ?? computeDefaultValue());
100
+ const current = computed(() => controlled.value ? (props.modelValue ?? props.value) : internal.value);
101
+ function commit(next) {
102
+ if (!controlled.value)
103
+ internal.value = next;
104
+ // `emit("change", next)` already routes to a listener passed as the
105
+ // `onChange` prop (Vue resolves an emitted event to its matching
106
+ // `onXxx` handler in the raw vnode props, regardless of whether that
107
+ // handler arrived via `@change=` or `:onChange=`). Calling
108
+ // `props.onChange?.(next)` here too would fire the callback twice.
109
+ emit("update:modelValue", next);
110
+ emit("change", next);
111
+ }
112
+ const isFr = computed(() => isFrLocale(props.locale));
113
+ const triggerLabel = computed(() => props.formatRange
114
+ ? props.formatRange(current.value, props.locale)
115
+ : defaultFormatTriggerLabel(current.value, props.locale));
116
+ function resolvePresetLabel(token) {
117
+ return props.formatPresetLabel
118
+ ? props.formatPresetLabel(token, props.locale)
119
+ : defaultFormatPresetLabel(token, props.locale);
120
+ }
121
+ function resolvePresetEntry(preset, now) {
122
+ const token = typeof preset === "string" ? preset : preset.token;
123
+ const durationMs = typeof preset === "string" ? parsePresetMs(token) : (preset.durationMs ?? parsePresetMs(token));
124
+ if (durationMs == null)
125
+ return null;
126
+ let to = now;
127
+ let from = now - durationMs;
128
+ if (props.max != null)
129
+ to = Math.min(to, props.max);
130
+ if (props.min != null)
131
+ from = Math.max(from, props.min);
132
+ if (from > to)
133
+ return null;
134
+ return { mode: "relative", relative: token, from, to };
135
+ }
136
+ const resolvedPresets = computed(() => {
137
+ const now = Date.now();
138
+ return props.presets.map((p) => {
139
+ const token = typeof p === "string" ? p : p.token;
140
+ const customLabel = typeof p === "string" ? undefined : p.label;
141
+ const label = customLabel ?? resolvePresetLabel(token);
142
+ const resolved = resolvePresetEntry(p, now);
143
+ return { token, label, disabled: resolved === null };
144
+ });
145
+ });
146
+ const selectedPresetValue = computed(() => current.value.mode === "relative" ? (current.value.relative ?? null) : null);
147
+ function onPresetSelect(next) {
148
+ const nextToken = Array.isArray(next) ? (next[0] ?? null) : next;
149
+ // SelectableList (single-select) toggles OFF when re-activating the row
150
+ // that is already selected, emitting null. Re-clicking the currently
151
+ // active preset is exactly that case here — recover the token from the
152
+ // current value so it still resolves+closes rather than no-op.
153
+ const token = nextToken ?? (current.value.mode === "relative" ? current.value.relative : undefined);
154
+ if (!token)
155
+ return;
156
+ const preset = props.presets.find((p) => (typeof p === "string" ? p : p.token) === token) ?? token;
157
+ const resolved = resolvePresetEntry(preset, Date.now());
158
+ if (!resolved)
159
+ return;
160
+ commit(resolved);
161
+ panelOpen.value = false;
162
+ }
163
+ // --- Panel open state + focus management --------------------------------
164
+ const panelOpen = ref(false);
165
+ const triggerRef = ref(null);
166
+ const panelRef = ref(null);
167
+ const activeTab = ref("relative");
168
+ const leftMonth = ref("");
169
+ const rightMonth = ref("");
170
+ const draft = ref({ ...EMPTY_DRAFT });
171
+ let previousFocus = null;
172
+ function seedDraft() {
173
+ const split = splitAbsolute(current.value.from, current.value.to);
174
+ draft.value = {
175
+ fromDate: split.fromDate,
176
+ fromTime: split.fromTime,
177
+ toDate: split.toDate,
178
+ toTime: split.toTime,
179
+ fromText: `${split.fromDate} ${split.fromTime}`,
180
+ toText: `${split.toDate} ${split.toTime}`,
181
+ };
182
+ leftMonth.value = monthOf(split.fromDate, 0);
183
+ rightMonth.value = monthOf(split.fromDate, 1);
184
+ }
185
+ function focusFirstInPanel() {
186
+ if (!panelRef.value)
187
+ return;
188
+ const focusable = panelRef.value.querySelector(FOCUSABLE_SELECTOR);
189
+ (focusable ?? panelRef.value).focus();
190
+ }
191
+ function trapFocus(event) {
192
+ if (!panelRef.value || event.key !== "Tab")
193
+ return;
194
+ const focusable = Array.from(panelRef.value.querySelectorAll(FOCUSABLE_SELECTOR));
195
+ if (focusable.length === 0)
196
+ return;
197
+ const first = focusable[0];
198
+ const last = focusable[focusable.length - 1];
199
+ const active = document.activeElement;
200
+ if (!panelRef.value.contains(active)) {
201
+ event.preventDefault();
202
+ first.focus();
203
+ return;
204
+ }
205
+ if (event.shiftKey && active === first) {
206
+ event.preventDefault();
207
+ last?.focus();
208
+ }
209
+ else if (!event.shiftKey && active === last) {
210
+ event.preventDefault();
211
+ first.focus();
212
+ }
213
+ }
214
+ function onWindowPointerDown(event) {
215
+ if (!panelOpen.value)
216
+ return;
217
+ const target = event.target;
218
+ if (panelRef.value && target && panelRef.value.contains(target))
219
+ return;
220
+ if (triggerRef.value && target && triggerRef.value.contains(target))
221
+ return;
222
+ panelOpen.value = false;
223
+ }
224
+ function onWindowKeydown(event) {
225
+ if (!panelOpen.value)
226
+ return;
227
+ if (event.key === "Escape") {
228
+ event.preventDefault();
229
+ panelOpen.value = false;
230
+ return;
231
+ }
232
+ trapFocus(event);
233
+ }
234
+ onMounted(() => {
235
+ window.addEventListener("pointerdown", onWindowPointerDown);
236
+ window.addEventListener("keydown", onWindowKeydown);
237
+ });
238
+ onUnmounted(() => {
239
+ window.removeEventListener("pointerdown", onWindowPointerDown);
240
+ window.removeEventListener("keydown", onWindowKeydown);
241
+ });
242
+ // Open transition: seed the tab + draft from the current value, capture
243
+ // the element to restore focus to, then move focus into the panel. Close
244
+ // transition: restore focus to whatever had it before opening (the
245
+ // trigger, in the overwhelming majority of cases).
246
+ watch(panelOpen, (isOpen) => {
247
+ if (isOpen) {
248
+ activeTab.value = current.value.mode;
249
+ seedDraft();
250
+ previousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;
251
+ nextTick(focusFirstInPanel);
252
+ }
253
+ else {
254
+ const el = previousFocus;
255
+ previousFocus = null;
256
+ if (el)
257
+ nextTick(() => el.focus());
258
+ }
259
+ });
260
+ function toggle() {
261
+ if (props.disabled)
262
+ return;
263
+ panelOpen.value = !panelOpen.value;
264
+ }
265
+ function onCalendarChange(next) {
266
+ if (!Array.isArray(next))
267
+ return;
268
+ const [startIso, endIso] = next;
269
+ const d = draft.value;
270
+ d.fromDate = startIso ?? "";
271
+ d.toDate = endIso ?? "";
272
+ d.fromText = d.fromDate ? `${d.fromDate} ${d.fromTime || "00:00"}` : "";
273
+ d.toText = d.toDate ? `${d.toDate} ${d.toTime || "00:00"}` : "";
274
+ }
275
+ const calendarValue = computed(() => [draft.value.fromDate || null, draft.value.toDate || null]);
276
+ const calendarMinIso = computed(() => props.min != null ? splitAbsolute(props.min, props.min).fromDate : undefined);
277
+ const calendarMaxIso = computed(() => props.max != null ? splitAbsolute(props.max, props.max).fromDate : undefined);
278
+ function onFromTimeChange(v) {
279
+ draft.value.fromTime = v;
280
+ if (draft.value.fromDate)
281
+ draft.value.fromText = `${draft.value.fromDate} ${v}`;
282
+ }
283
+ function onToTimeChange(v) {
284
+ draft.value.toTime = v;
285
+ if (draft.value.toDate)
286
+ draft.value.toText = `${draft.value.toDate} ${v}`;
287
+ }
288
+ function parseDateTimeText(text) {
289
+ const match = DATE_TIME_TEXT_RE.exec(text.trim());
290
+ if (!match)
291
+ return null;
292
+ return { date: match[1], time: match[2] };
293
+ }
294
+ function commitTypedFrom() {
295
+ const parsed = parseDateTimeText(draft.value.fromText);
296
+ if (!parsed)
297
+ return;
298
+ draft.value.fromDate = parsed.date;
299
+ draft.value.fromTime = parsed.time;
300
+ }
301
+ function commitTypedTo() {
302
+ const parsed = parseDateTimeText(draft.value.toText);
303
+ if (!parsed)
304
+ return;
305
+ draft.value.toDate = parsed.date;
306
+ draft.value.toTime = parsed.time;
307
+ }
308
+ function onFromTextKeydown(event) {
309
+ if (event.key === "Enter") {
310
+ event.preventDefault();
311
+ commitTypedFrom();
312
+ }
313
+ }
314
+ function onToTextKeydown(event) {
315
+ if (event.key === "Enter") {
316
+ event.preventDefault();
317
+ commitTypedTo();
318
+ }
319
+ }
320
+ const composedDraft = computed(() => composeAbsolute({
321
+ fromDate: draft.value.fromDate,
322
+ fromTime: draft.value.fromTime,
323
+ toDate: draft.value.toDate,
324
+ toTime: draft.value.toTime,
325
+ }));
326
+ const draftValid = computed(() => composedDraft.value !== null);
327
+ const draftIncomplete = computed(() => !draft.value.fromDate || !draft.value.fromTime || !draft.value.toDate || !draft.value.toTime);
328
+ const draftError = computed(() => {
329
+ if (draftValid.value)
330
+ return null;
331
+ if (draftIncomplete.value) {
332
+ return isFr.value
333
+ ? "Renseignez une date et une heure pour le début et la fin."
334
+ : "Provide a date and time for both the start and the end.";
335
+ }
336
+ return isFr.value
337
+ ? "La date de début doit précéder la date de fin."
338
+ : "The start date must be before the end date.";
339
+ });
340
+ function onApply() {
341
+ if (!composedDraft.value)
342
+ return;
343
+ commit({ mode: "absolute", from: composedDraft.value.from, to: composedDraft.value.to });
344
+ panelOpen.value = false;
345
+ }
346
+ function onCancel() {
347
+ panelOpen.value = false;
348
+ }
349
+ function onTabChange(next) {
350
+ activeTab.value = next === "absolute" ? "absolute" : "relative";
351
+ }
352
+ return () => {
353
+ const isOpen = panelOpen.value;
354
+ const label = props.label;
355
+ const panelLabel = label ?? (isFr.value ? "Sélecteur de plage temporelle" : "Time range selector");
356
+ const relativeTabLabel = isFr.value ? "Relatif" : "Relative";
357
+ const customTabLabel = isFr.value ? "Personnalisé" : "Custom";
358
+ const relativeListLabel = isFr.value ? "Plages relatives" : "Relative ranges";
359
+ const fromLabel = isFr.value ? "Début" : "From";
360
+ const toLabel = isFr.value ? "Fin" : "To";
361
+ const applyLabel = isFr.value ? "Appliquer" : "Apply";
362
+ const cancelLabel = isFr.value ? "Annuler" : "Cancel";
363
+ const dateTimePlaceholder = "AAAA-MM-JJ HH:mm";
364
+ const tabItems = [
365
+ { value: "relative", label: relativeTabLabel },
366
+ { value: "absolute", label: customTabLabel },
367
+ ];
368
+ const rootClasses = classNames("st-timeRangePicker", `st-timeRangePicker--${props.size}`, props.class);
369
+ const triggerButton = h("button", {
370
+ ref: triggerRef,
371
+ type: "button",
372
+ class: "st-timeRangePicker__trigger",
373
+ "aria-haspopup": "dialog",
374
+ "aria-expanded": isOpen ? "true" : "false",
375
+ "aria-labelledby": label ? `${fieldLabelId} ${triggerTextId}` : undefined,
376
+ disabled: props.disabled,
377
+ onClick: toggle,
378
+ }, [
379
+ h(Clock, { size: 16, "aria-hidden": "true" }),
380
+ h("span", { class: "st-timeRangePicker__triggerLabel", id: triggerTextId }, triggerLabel.value),
381
+ h(ChevronDown, { size: 16, "aria-hidden": "true" }),
382
+ ]);
383
+ let panel = null;
384
+ if (isOpen) {
385
+ const relativePanel = h(SelectableList, {
386
+ label: relativeListLabel,
387
+ value: selectedPresetValue.value,
388
+ onChange: onPresetSelect,
389
+ }, {
390
+ default: () => resolvedPresets.value.map((preset) => h(SelectableRow, { key: preset.token, value: preset.token, disabled: preset.disabled }, { default: () => preset.label })),
391
+ });
392
+ const customPanel = h("div", { class: "st-timeRangePicker__custom" }, [
393
+ h("div", { class: "st-timeRangePicker__calendars" }, [
394
+ h(Calendar, {
395
+ range: true,
396
+ value: calendarValue.value,
397
+ onChange: onCalendarChange,
398
+ min: calendarMinIso.value,
399
+ max: calendarMaxIso.value,
400
+ locale: props.locale,
401
+ month: leftMonth.value,
402
+ }),
403
+ props.calendarMonths === 2
404
+ ? h(Calendar, {
405
+ range: true,
406
+ value: calendarValue.value,
407
+ onChange: onCalendarChange,
408
+ min: calendarMinIso.value,
409
+ max: calendarMaxIso.value,
410
+ locale: props.locale,
411
+ month: rightMonth.value,
412
+ })
413
+ : null,
414
+ ]),
415
+ h("div", { class: "st-timeRangePicker__bounds" }, [
416
+ h("div", {
417
+ class: "st-timeRangePicker__bound",
418
+ // `blur` doesn't bubble, but capture-phase listeners on an
419
+ // ancestor still see it (capture always runs top-down
420
+ // regardless of `bubbles`) — Input.ts declares "blur" in its
421
+ // own `emits`, which silently swallows a plain `onBlur` prop
422
+ // (Vue routes declared-emit listener props away from
423
+ // attrs-fallthrough, and Input never actually emits "blur"),
424
+ // so a normal `onBlur` on <Input> would never fire.
425
+ onBlurCapture: commitTypedFrom,
426
+ }, [
427
+ h(Input, {
428
+ label: fromLabel,
429
+ modelValue: draft.value.fromText,
430
+ "onUpdate:modelValue": (v) => {
431
+ draft.value.fromText = v;
432
+ },
433
+ placeholder: dateTimePlaceholder,
434
+ size: props.size,
435
+ onKeydown: onFromTextKeydown,
436
+ }),
437
+ h(TimePicker, {
438
+ value: draft.value.fromTime,
439
+ onChange: onFromTimeChange,
440
+ step: props.timeStep,
441
+ format: props.timeFormat,
442
+ size: props.size,
443
+ }),
444
+ ]),
445
+ h("div", { class: "st-timeRangePicker__bound", onBlurCapture: commitTypedTo }, [
446
+ h(Input, {
447
+ label: toLabel,
448
+ modelValue: draft.value.toText,
449
+ "onUpdate:modelValue": (v) => {
450
+ draft.value.toText = v;
451
+ },
452
+ placeholder: dateTimePlaceholder,
453
+ size: props.size,
454
+ onKeydown: onToTextKeydown,
455
+ }),
456
+ h(TimePicker, {
457
+ value: draft.value.toTime,
458
+ onChange: onToTimeChange,
459
+ step: props.timeStep,
460
+ format: props.timeFormat,
461
+ size: props.size,
462
+ }),
463
+ ]),
464
+ ]),
465
+ draftError.value ? h("p", { class: "st-timeRangePicker__error", role: "alert" }, draftError.value) : null,
466
+ h("div", { class: "st-timeRangePicker__actions" }, [
467
+ h(Button, { type: "button", variant: "ghost", size: props.size, onClick: onCancel }, { default: () => cancelLabel }),
468
+ h(Button, { type: "button", variant: "primary", size: props.size, disabled: !draftValid.value, onClick: onApply }, { default: () => applyLabel }),
469
+ ]),
470
+ ]);
471
+ panel = h("div", {
472
+ class: classNames("st-timeRangePicker__popover", `st-timeRangePicker__popover--${props.placement}`, props.align ? `st-timeRangePicker__popover--align${props.align[0].toUpperCase()}${props.align.slice(1)}` : null),
473
+ role: "dialog",
474
+ "aria-label": panelLabel,
475
+ }, [
476
+ h("div", { ref: panelRef, class: "st-timeRangePicker__panel", tabindex: -1 }, [
477
+ h(ContentSwitcher, {
478
+ items: tabItems,
479
+ value: activeTab.value,
480
+ onchange: onTabChange,
481
+ size: "sm",
482
+ label: panelLabel,
483
+ }),
484
+ activeTab.value === "relative" ? relativePanel : customPanel,
485
+ ]),
486
+ ]);
487
+ }
488
+ return h("div", { class: rootClasses }, [
489
+ label ? h("span", { class: "st-timeRangePicker__label", id: fieldLabelId }, label) : null,
490
+ triggerButton,
491
+ panel,
492
+ ]);
493
+ };
494
+ },
495
+ });
496
+ //# sourceMappingURL=TimeRangePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeRangePicker.js","sourceRoot":"","sources":["../src/TimeRangePicker.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -44,6 +44,8 @@ export { Header } from "./Header.js";
44
44
  export type { HeaderProps, HeaderNavItem, HeaderAccount } from "./Header.js";
45
45
  export { Highlight } from "./Highlight.js";
46
46
  export type { HighlightProps, HighlightTone } from "./Highlight.js";
47
+ export { Icon, ICONS, ICON_NAMES } from "./Icon.js";
48
+ export type { IconName, IconProps } from "./Icon.js";
47
49
  export { IconButton } from "./IconButton.js";
48
50
  export type { IconButtonProps, IconButtonSize, IconButtonVariant, } from "./IconButton.js";
49
51
  export { InlineLoading } from "./InlineLoading.js";
@@ -81,7 +83,7 @@ export type { SelectProps, SelectSize, SelectOption } from "./Select.js";
81
83
  export { SideNav } from "./SideNav.js";
82
84
  export type { SideNavProps, SideNavItem } from "./SideNav.js";
83
85
  export { AppShell } from "./AppShell.js";
84
- export type { AppShellProps, AppShellUtilityMode, AppShellUtilitySide, AppShellVariant } from "./AppShell.js";
86
+ export type { AppShellPanelCollapse, AppShellProps, AppShellUtilityMode, AppShellUtilitySide, AppShellVariant } from "./AppShell.js";
85
87
  export { NavShell } from "./NavShell.js";
86
88
  export type { NavShellProps, NavShellSide, NavShellVariant } from "./NavShell.js";
87
89
  export { NavRail } from "./NavRail.js";
@@ -433,4 +435,8 @@ export { Dashboard } from "./Dashboard.js";
433
435
  export type { DashboardProps, DashboardNavItem, DashboardKpi, } from "./Dashboard.js";
434
436
  export { Wizard } from "./Wizard.js";
435
437
  export type { WizardProps, WizardStep, } from "./Wizard.js";
438
+ export { TimeRangePicker } from "./TimeRangePicker.js";
439
+ export type { TimeRangePickerProps, TimeRangePickerSize, TimeRangePickerPlacement, TimeRangePickerAlign, TimeRangePickerTimeFormat, } from "./TimeRangePicker.js";
440
+ export { DEFAULT_TIME_RANGE_PRESETS, parsePresetMs, resolveRelative, splitAbsolute, composeAbsolute, formatPresetLabel, formatTriggerLabel, } from "./timeRange.js";
441
+ export type { TimeRange, TimeRangeMode, TimeRangePreset, AbsoluteDraft, AbsoluteSplit, } from "./timeRange.js";
436
442
  //# sourceMappingURL=index.d.ts.map