@datum-cloud/datum-ui 2.0.0 → 2.3.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 (80) hide show
  1. package/dist/app-navigation/index.mjs +2 -2
  2. package/dist/{app-navigation-CNig4Maj.mjs → app-navigation--tEBCrfl.mjs} +180 -164
  3. package/dist/autocomplete/index.mjs +1 -1
  4. package/dist/{autocomplete-DM6JYV4W.mjs → autocomplete-DZ_HSBak.mjs} +1 -1
  5. package/dist/autosearch/index.mjs +1 -1
  6. package/dist/{calendar-date-picker-AzvSqjeS.mjs → calendar-date-picker-ynSGADfR.mjs} +1 -1
  7. package/dist/components/base/sheet/sheet.d.ts +2 -1
  8. package/dist/components/base/sidebar/context.d.ts +3 -0
  9. package/dist/components/base/sidebar/shell.d.ts +2 -2
  10. package/dist/components/features/app-navigation/nav-menu/index.d.ts +1 -1
  11. package/dist/components/features/app-navigation/nav-menu/nav-menu-context.d.ts +4 -0
  12. package/dist/components/features/app-navigation/nav-menu/nav-menu-item.d.ts +3 -0
  13. package/dist/components/features/app-navigation/nav-menu/types.d.ts +18 -0
  14. package/dist/components/features/date-time/date-time.d.ts +6 -0
  15. package/dist/components/features/date-time/formatters.d.ts +13 -0
  16. package/dist/components/features/date-time/index.d.ts +3 -0
  17. package/dist/components/features/date-time/types.d.ts +47 -0
  18. package/dist/components/features/index.d.ts +1 -0
  19. package/dist/components/features/logs/components/detail.d.ts +3 -0
  20. package/dist/components/features/logs/components/explorer.d.ts +3 -0
  21. package/dist/components/features/logs/components/filters.d.ts +11 -0
  22. package/dist/components/features/logs/components/root.d.ts +2 -0
  23. package/dist/components/features/logs/components/status-badge.d.ts +7 -0
  24. package/dist/components/features/logs/components/table.d.ts +3 -0
  25. package/dist/components/features/logs/components/toolbar.d.ts +12 -0
  26. package/dist/components/features/logs/fixtures/index.d.ts +2 -0
  27. package/dist/components/features/logs/hooks/use-controllable-state.d.ts +5 -0
  28. package/dist/components/features/logs/hooks/use-logs.d.ts +3 -0
  29. package/dist/components/features/logs/index.d.ts +4 -0
  30. package/dist/components/features/logs/logs.d.ts +18 -0
  31. package/dist/components/features/logs/types.d.ts +105 -0
  32. package/dist/components/features/logs/utils/build-logql.d.ts +2 -0
  33. package/dist/components/features/logs/utils/constants.d.ts +6 -0
  34. package/dist/components/features/logs/utils/facets.d.ts +3 -0
  35. package/dist/components/features/logs/utils/flatten-loki.d.ts +3 -0
  36. package/dist/components/features/logs/utils/format-timestamp.d.ts +4 -0
  37. package/dist/components/features/logs/utils/index.d.ts +8 -0
  38. package/dist/components/features/logs/utils/parse-log-line.d.ts +7 -0
  39. package/dist/components/features/logs/utils/severity.d.ts +5 -0
  40. package/dist/components/features/logs/utils/time-range.d.ts +3 -0
  41. package/dist/data-table/index.mjs +1 -1
  42. package/dist/{data-table-DjGvAdO_.mjs → data-table-Du7_FLBi.mjs} +4 -4
  43. package/dist/date-picker/index.mjs +3 -3
  44. package/dist/date-time/index.mjs +2 -0
  45. package/dist/date-time-CA-09lnw.mjs +134 -0
  46. package/dist/date-time-picker/index.mjs +1 -1
  47. package/dist/{date-time-picker-D3-DeNo8.mjs → date-time-picker-BzcHrf-A.mjs} +1 -1
  48. package/dist/{picker-b5-x-EHs.mjs → date-time-range-picker-Dog33Ry0.mjs} +22 -456
  49. package/dist/form/index.mjs +1 -1
  50. package/dist/{form-BUUNQfC9.mjs → form-BhBsoMFA.mjs} +4 -4
  51. package/dist/grouped-table/index.mjs +1 -1
  52. package/dist/{grouped-table-D4J3ioHb.mjs → grouped-table--jejU1Jy.mjs} +1 -1
  53. package/dist/index.mjs +21 -20
  54. package/dist/logs/fixtures/index.mjs +231 -0
  55. package/dist/logs/index.mjs +980 -0
  56. package/dist/mobile-sheet/index.mjs +1 -1
  57. package/dist/{mobile-sheet-D9L-JOee.mjs → mobile-sheet-BYp-QQmn.mjs} +1 -1
  58. package/dist/more-actions/index.mjs +1 -1
  59. package/dist/{more-actions-Bx443Ccx.mjs → more-actions-B1FUf2rm.mjs} +1 -1
  60. package/dist/multi-select/index.mjs +1 -1
  61. package/dist/{multi-select-PHaMEbY-.mjs → multi-select-PtdMChPF.mjs} +1 -1
  62. package/dist/picker/index.mjs +2 -1
  63. package/dist/picker-raVuDxsh.mjs +453 -0
  64. package/dist/responsive-dropdown/index.mjs +1 -1
  65. package/dist/{responsive-dropdown-fCmduKaz.mjs → responsive-dropdown-n0Txkax5.mjs} +1 -1
  66. package/dist/responsive-popover/index.mjs +1 -1
  67. package/dist/{responsive-popover-DJZgXWIE.mjs → responsive-popover-C_1nzIvm.mjs} +1 -1
  68. package/dist/rich-text-editor/index.mjs +1 -1
  69. package/dist/{rich-text-editor-CGuSn8xi.mjs → rich-text-editor-Dohp-pbf.mjs} +1 -1
  70. package/dist/sheet/index.mjs +1 -1
  71. package/dist/{sheet-BZViad2U.mjs → sheet-C2i2k5i2.mjs} +2 -2
  72. package/dist/sidebar/index.mjs +1 -1
  73. package/dist/{sidebar-BRUNOqXi.mjs → sidebar-D6BoAr6C.mjs} +53 -16
  74. package/dist/styles/shadcn/animations.css +2 -2
  75. package/dist/task-queue/index.mjs +1 -1
  76. package/dist/{task-queue-dropdown-pqFd4rSf.mjs → task-queue-dropdown-ClLLTMxU.mjs} +1 -1
  77. package/dist/time-picker/index.mjs +1 -1
  78. package/dist/{time-picker-B_fN5vhO.mjs → time-picker-CFhaHTtI.mjs} +1 -1
  79. package/dist/{to-api-format-43Boq7OR.mjs → to-api-format-WC7b9Mcv.mjs} +2 -2
  80. package/package.json +16 -1
@@ -3,14 +3,13 @@ import { t as Button } from "./button-A1qTjZ8U.mjs";
3
3
  import { t as Button$1 } from "./button-CsdF61EI.mjs";
4
4
  import { Calendar } from "./calendar/index.mjs";
5
5
  import { t as useBreakpoint } from "./use-breakpoint-CwiUJSmk.mjs";
6
- import { t as ResponsivePopover } from "./responsive-popover-DJZgXWIE.mjs";
7
- import { i as SelectItem, l as SelectTrigger, n as SelectContent, t as Select, u as SelectValue } from "./select-daE2Nn0Z.mjs";
6
+ import { t as ResponsivePopover } from "./responsive-popover-C_1nzIvm.mjs";
8
7
  import { n as OptionList, t as useOptionPicker } from "./use-option-picker-s2bUYwXC.mjs";
9
8
  import { CalendarIcon, Clock, Globe, X } from "lucide-react";
10
9
  import { createContext, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState } from "react";
11
10
  import { jsx, jsxs } from "react/jsx-runtime";
12
11
  import { formatInTimeZone, fromZonedTime, toZonedTime } from "date-fns-tz";
13
- import { addDays, differenceInCalendarDays, endOfDay, endOfMonth, endOfWeek, endOfYear, format, startOfDay, startOfMonth, startOfWeek, startOfYear, subDays, subHours, subMinutes } from "date-fns";
12
+ import { endOfDay, endOfMonth, endOfWeek, endOfYear, format, startOfDay, startOfMonth, startOfWeek, startOfYear, subDays, subHours, subMinutes } from "date-fns";
14
13
  //#region src/components/features/_shared/timezone.ts
15
14
  /**
16
15
  * Start of the calendar day (00:00:00.000) for `date`, interpreted in
@@ -870,6 +869,18 @@ const DATETIME_PRESETS = [
870
869
  };
871
870
  }
872
871
  },
872
+ {
873
+ key: "last-30m",
874
+ label: "Last 30 minutes",
875
+ shortcut: "2",
876
+ getRange: () => {
877
+ const now = /* @__PURE__ */ new Date();
878
+ return {
879
+ from: subMinutes(now, 30),
880
+ to: now
881
+ };
882
+ }
883
+ },
873
884
  {
874
885
  key: "last-1h",
875
886
  label: "Last hour",
@@ -1058,7 +1069,7 @@ PickerRoot.displayName = "Picker.Root";
1058
1069
  /**
1059
1070
  * Public namespace export. Subsequent tasks add Trigger, Content, etc.
1060
1071
  */
1061
- const Picker$1 = { Root: PickerRoot };
1072
+ const Picker = { Root: PickerRoot };
1062
1073
  //#endregion
1063
1074
  //#region src/components/features/picker/hooks/use-time-slots.ts
1064
1075
  function timeToMinutes(t) {
@@ -1270,29 +1281,6 @@ function PickerTimezoneIndicator({ className, variant = "full" }) {
1270
1281
  }
1271
1282
  PickerTimezoneIndicator.displayName = "Picker.TimezoneIndicator";
1272
1283
  //#endregion
1273
- //#region src/components/features/picker/components/timezone-select.tsx
1274
- function PickerTimezoneSelect({ options, onChange, className, placeholder = "Select timezone" }) {
1275
- const { mode, timezone } = usePickerContext();
1276
- if (!isTimeBearingMode(mode)) return null;
1277
- return /* @__PURE__ */ jsxs("div", {
1278
- "data-slot": "picker-tz-select",
1279
- className: cn("flex items-center gap-2 px-3 py-2", className),
1280
- children: [/* @__PURE__ */ jsx(Globe, { className: "text-muted-foreground size-4 shrink-0" }), /* @__PURE__ */ jsxs(Select, {
1281
- value: timezone,
1282
- onValueChange: onChange,
1283
- children: [/* @__PURE__ */ jsx(SelectTrigger, {
1284
- className: "hover:bg-accent h-8 min-w-[180px] border-0 bg-transparent px-2 text-xs shadow-none",
1285
- children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
1286
- }), /* @__PURE__ */ jsx(SelectContent, { children: options.map((opt) => /* @__PURE__ */ jsx(SelectItem, {
1287
- value: opt.value,
1288
- className: "text-xs",
1289
- children: opt.label
1290
- }, opt.value)) })]
1291
- })]
1292
- });
1293
- }
1294
- PickerTimezoneSelect.displayName = "Picker.TimezoneSelect";
1295
- //#endregion
1296
1284
  //#region src/components/features/picker/components/trigger.tsx
1297
1285
  const DEFAULT_ICON = /* @__PURE__ */ jsx(CalendarIcon, { className: "text-muted-foreground size-4 shrink-0" });
1298
1286
  function PickerTrigger({ placeholder = "Pick a date", clearable = false, disabled = false, children, className, triggerClassName, id, icon, onClick, ...slotProps }) {
@@ -1334,46 +1322,6 @@ function PickerTrigger({ placeholder = "Pick a date", clearable = false, disable
1334
1322
  }
1335
1323
  PickerTrigger.displayName = "Picker.Trigger";
1336
1324
  //#endregion
1337
- //#region src/components/features/picker/components/index.ts
1338
- const Picker = Object.assign(Picker$1, {
1339
- Trigger: PickerTrigger,
1340
- Content: PickerContent,
1341
- Calendar: PickerCalendar,
1342
- TimeInput: PickerTimeInput,
1343
- Presets: PickerPresets,
1344
- Footer: PickerFooter,
1345
- Apply: PickerApply,
1346
- Reset: PickerReset,
1347
- Cancel: PickerCancel,
1348
- Clear: PickerClear,
1349
- TimezoneIndicator: PickerTimezoneIndicator,
1350
- TimezoneSelect: PickerTimezoneSelect
1351
- });
1352
- //#endregion
1353
- //#region src/components/features/picker/utils/compare.ts
1354
- /** Strict equality of two nullable Date references by millisecond value. */
1355
- function isSameDate(a, b) {
1356
- if (a === b) return true;
1357
- if (a === null || b === null) return false;
1358
- return a.getTime() === b.getTime();
1359
- }
1360
- /** Equality of two nullable date ranges. Compares from, to (by ms), and preset. */
1361
- function isSameDateRange(a, b) {
1362
- if (a === b) return true;
1363
- if (a === null || b === null) return false;
1364
- return a.from.getTime() === b.from.getTime() && a.to.getTime() === b.to.getTime() && a.preset === b.preset;
1365
- }
1366
- /**
1367
- * Equality of two nullable string ranges. Used for time-of-day, time-range,
1368
- * and datetime-range value shapes (all structurally identical).
1369
- * Compares from, to, and optional preset.
1370
- */
1371
- function isSameStringRange(a, b) {
1372
- if (a === b) return true;
1373
- if (a === null || b === null) return false;
1374
- return a.from === b.from && a.to === b.to && a.preset === b.preset;
1375
- }
1376
- //#endregion
1377
1325
  //#region src/components/features/picker/utils/format-value.ts
1378
1326
  const DATE_OPTS = {
1379
1327
  year: "numeric",
@@ -1406,7 +1354,7 @@ function formatDate(d, locale, dateFormat) {
1406
1354
  return format(d, DEFAULT_DATE_FORMAT);
1407
1355
  }
1408
1356
  /** Renders `HH:mm` from a Date whose wall-clock fields are already in the target timezone. */
1409
- function formatZonedTimeOfDay$1(d, hourCycle, timeFormat) {
1357
+ function formatZonedTimeOfDay(d, hourCycle, timeFormat) {
1410
1358
  if (timeFormat) return format(d, timeFormat);
1411
1359
  return formatTimeLabel(dateToHHmm(d), hourCycle);
1412
1360
  }
@@ -1456,64 +1404,26 @@ function formatPickerValue(value, mode, opts = {}) {
1456
1404
  }
1457
1405
  if (mode === "datetime") {
1458
1406
  const d = safeIso(value, timezone);
1459
- return d ? `${formatDate(d, locale, dateFormat)} ${formatZonedTimeOfDay$1(d, hourCycle, timeFormat)}` : "";
1407
+ return d ? `${formatDate(d, locale, dateFormat)} ${formatZonedTimeOfDay(d, hourCycle, timeFormat)}` : "";
1460
1408
  }
1461
1409
  if (mode === "datetime-range") {
1462
1410
  const v = value;
1463
1411
  const from = safeIso(v?.from, timezone);
1464
1412
  const to = safeIso(v?.to, timezone);
1465
1413
  if (!from || !to) return "";
1466
- if (isSameZonedDay(from, to)) return `${formatDate(from, locale, dateFormat)} ${formatZonedTimeOfDay$1(from, hourCycle, timeFormat)} - ${formatZonedTimeOfDay$1(to, hourCycle, timeFormat)}`;
1467
- return `${formatDate(from, locale, dateFormat)} ${formatZonedTimeOfDay$1(from, hourCycle, timeFormat)} - ${formatDate(to, locale, dateFormat)} ${formatZonedTimeOfDay$1(to, hourCycle, timeFormat)}`;
1414
+ if (isSameZonedDay(from, to)) return `${formatDate(from, locale, dateFormat)} ${formatZonedTimeOfDay(from, hourCycle, timeFormat)} - ${formatZonedTimeOfDay(to, hourCycle, timeFormat)}`;
1415
+ return `${formatDate(from, locale, dateFormat)} ${formatZonedTimeOfDay(from, hourCycle, timeFormat)} - ${formatDate(to, locale, dateFormat)} ${formatZonedTimeOfDay(to, hourCycle, timeFormat)}`;
1468
1416
  }
1469
1417
  if (mode === "date-range-time") {
1470
1418
  const v = value;
1471
1419
  const from = safeIso(v?.from, timezone);
1472
1420
  const to = safeIso(v?.to, timezone);
1473
1421
  if (!from || !to) return "";
1474
- return `${formatDate(from, locale, dateFormat)} - ${formatDate(to, locale, dateFormat)} (${formatZonedTimeOfDay$1(from, hourCycle, timeFormat)})`;
1422
+ return `${formatDate(from, locale, dateFormat)} - ${formatDate(to, locale, dateFormat)} (${formatZonedTimeOfDay(from, hourCycle, timeFormat)})`;
1475
1423
  }
1476
1424
  return "";
1477
1425
  }
1478
1426
  //#endregion
1479
- //#region src/components/features/picker/utils/range.ts
1480
- /**
1481
- * Number of calendar days between two dates. Always non-negative.
1482
- *
1483
- * Uses calendar-day boundaries (not 24-hour windows), so a range from
1484
- * 23:59 today to 00:00 tomorrow counts as 1 day, not 0.
1485
- */
1486
- function getDaysDifference(from, to) {
1487
- return Math.abs(differenceInCalendarDays(to, from));
1488
- }
1489
- /**
1490
- * Validate a range against a maximum span (inclusive).
1491
- *
1492
- * - Returns `true` when `maxRange` is undefined.
1493
- * - Returns `true` when the range spans at most `maxRange` days.
1494
- */
1495
- function isRangeValid(from, to, maxRange) {
1496
- if (maxRange === void 0) return true;
1497
- return getDaysDifference(from, to) <= maxRange;
1498
- }
1499
- /**
1500
- * Clamp a range to fit within `maxRange` days.
1501
- *
1502
- * If the range already fits, returns the original `{from, to}`.
1503
- * Otherwise, holds `from` and clamps `to` forward to exactly `maxRange`
1504
- * days after `from`.
1505
- */
1506
- function clampRange(from, to, maxRange) {
1507
- if (isRangeValid(from, to, maxRange)) return {
1508
- from,
1509
- to
1510
- };
1511
- return {
1512
- from,
1513
- to: addDays(from, maxRange)
1514
- };
1515
- }
1516
- //#endregion
1517
1427
  //#region src/components/features/picker/wrappers/internal/default-footer.tsx
1518
1428
  /**
1519
1429
  * The standard Cancel / Reset / Apply footer used by every wrapper.
@@ -1528,262 +1438,9 @@ function DefaultFooter() {
1528
1438
  ] });
1529
1439
  }
1530
1440
  //#endregion
1531
- //#region src/components/features/picker/wrappers/date-picker.tsx
1532
- function DatePicker({ value, onChange, placeholder = "Pick a date", clearable = true, responsive = true, sheetTitle = "Pick a date", numberOfMonths = 1, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit, disablePast, disableFuture, minDate, maxDate, dateFormat }) {
1533
- return /* @__PURE__ */ jsx(Picker$1.Root, {
1534
- mode: "date",
1535
- value,
1536
- onChange,
1537
- commit,
1538
- responsive,
1539
- presets: [],
1540
- disablePast,
1541
- disableFuture,
1542
- minDate,
1543
- maxDate,
1544
- children: /* @__PURE__ */ jsx(PickerContent, {
1545
- trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1546
- placeholder,
1547
- clearable,
1548
- disabled,
1549
- className,
1550
- triggerClassName,
1551
- id,
1552
- icon,
1553
- children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "date", { dateFormat })
1554
- }),
1555
- sheetTitle,
1556
- sheetDescription,
1557
- modal,
1558
- contentClassName: popoverClassName,
1559
- footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1560
- children: /* @__PURE__ */ jsx(PickerCalendar, {
1561
- numberOfMonths,
1562
- minDate,
1563
- maxDate,
1564
- disablePast,
1565
- disableFuture
1566
- })
1567
- })
1568
- });
1569
- }
1570
- DatePicker.displayName = "DatePicker";
1571
- //#endregion
1572
- //#region src/components/features/picker/wrappers/date-range-picker.tsx
1573
- function DateRangePicker({ value, onChange, placeholder = "Pick a date range", clearable = true, responsive = true, sheetTitle = "Pick a date range", numberOfMonths = 2, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit, disablePast, disableFuture, minDate, maxDate, presets, excludePresets, dateFormat }) {
1574
- return /* @__PURE__ */ jsx(Picker$1.Root, {
1575
- mode: "date-range",
1576
- value,
1577
- onChange,
1578
- commit,
1579
- responsive,
1580
- presets,
1581
- excludePresets,
1582
- disablePast,
1583
- disableFuture,
1584
- minDate,
1585
- maxDate,
1586
- children: /* @__PURE__ */ jsx(PickerContent, {
1587
- trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1588
- placeholder,
1589
- clearable,
1590
- disabled,
1591
- className,
1592
- triggerClassName,
1593
- id,
1594
- icon,
1595
- children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "date-range", { dateFormat })
1596
- }),
1597
- sheetTitle,
1598
- sheetDescription,
1599
- modal,
1600
- contentClassName: popoverClassName,
1601
- footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1602
- children: /* @__PURE__ */ jsxs("div", {
1603
- className: "flex flex-col md:flex-row",
1604
- children: [/* @__PURE__ */ jsx(PickerPresets, {}), /* @__PURE__ */ jsx(PickerCalendar, {
1605
- numberOfMonths,
1606
- minDate,
1607
- maxDate,
1608
- disablePast,
1609
- disableFuture
1610
- })]
1611
- })
1612
- })
1613
- });
1614
- }
1615
- DateRangePicker.displayName = "DateRangePicker";
1616
- //#endregion
1617
- //#region src/components/features/picker/wrappers/date-range-time-picker.tsx
1618
- function DateRangeTimePicker({ value, onChange, placeholder = "Pick a date range with time", clearable = true, responsive = true, sheetTitle = "Pick a date range with time", timezone, step = 15, hourCycle, numberOfMonths = 2, hideTimezone = false, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, disablePast, disableFuture, minDate, maxDate, presets, excludePresets, dateFormat, timeFormat }) {
1619
- return /* @__PURE__ */ jsx(Picker$1.Root, {
1620
- mode: "date-range-time",
1621
- value,
1622
- onChange,
1623
- responsive,
1624
- timezone,
1625
- step,
1626
- hourCycle,
1627
- hideTimezone,
1628
- presets,
1629
- excludePresets,
1630
- disablePast,
1631
- disableFuture,
1632
- minDate,
1633
- maxDate,
1634
- children: /* @__PURE__ */ jsx(PickerContent, {
1635
- trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1636
- placeholder,
1637
- clearable,
1638
- disabled,
1639
- className,
1640
- triggerClassName,
1641
- id,
1642
- icon,
1643
- children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "date-range-time", {
1644
- timezone,
1645
- hourCycle,
1646
- dateFormat,
1647
- timeFormat
1648
- })
1649
- }),
1650
- sheetTitle,
1651
- sheetDescription,
1652
- modal,
1653
- contentClassName: popoverClassName,
1654
- footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1655
- children: /* @__PURE__ */ jsxs("div", {
1656
- className: "flex flex-col md:flex-row",
1657
- children: [/* @__PURE__ */ jsx(PickerPresets, {}), /* @__PURE__ */ jsxs("div", {
1658
- className: "flex flex-col",
1659
- children: [
1660
- /* @__PURE__ */ jsx(PickerCalendar, {
1661
- numberOfMonths,
1662
- minDate,
1663
- maxDate,
1664
- disablePast,
1665
- disableFuture
1666
- }),
1667
- /* @__PURE__ */ jsxs("div", {
1668
- className: "border-t p-3",
1669
- children: [/* @__PURE__ */ jsx("div", {
1670
- className: "text-muted-foreground mb-1 text-xs",
1671
- children: "Time of day"
1672
- }), /* @__PURE__ */ jsx(PickerTimeInput, { target: "embedded-from" })]
1673
- }),
1674
- /* @__PURE__ */ jsx(PickerTimezoneIndicator, {})
1675
- ]
1676
- })]
1677
- })
1678
- })
1679
- });
1680
- }
1681
- DateRangeTimePicker.displayName = "DateRangeTimePicker";
1682
- //#endregion
1683
- //#region src/components/features/picker/components/time-input-field.tsx
1684
- function formatZonedTimeOfDay(iso, tz) {
1685
- try {
1686
- const d = isoToZonedDate(iso, tz);
1687
- if (Number.isNaN(d.getTime())) return "";
1688
- return `${String(d.getHours()).padStart(2, "0")}:${String(d.getMinutes()).padStart(2, "0")}`;
1689
- } catch {
1690
- return "";
1691
- }
1692
- }
1693
- function PickerTimeInputField({ className, ariaLabel = "Select time", id }) {
1694
- const { mode, timezone, state, actions } = usePickerContext();
1695
- const isoValue = mode === "datetime" ? state.pendingValue : null;
1696
- const externalTimeValue = isoValue ? formatZonedTimeOfDay(isoValue, timezone) : "";
1697
- const [localValue, setLocalValue] = useState(externalTimeValue);
1698
- useEffect(() => {
1699
- setLocalValue(externalTimeValue);
1700
- }, [externalTimeValue]);
1701
- if (mode !== "datetime") return null;
1702
- const disabled = isoValue === null;
1703
- const handleChange = (e) => {
1704
- const next = e.target.value;
1705
- setLocalValue(next);
1706
- if (!isoValue) return;
1707
- const parsed = parseTimeString(next);
1708
- if (!parsed) return;
1709
- const d = isoToZonedDate(isoValue, timezone);
1710
- d.setHours(parsed.h, parsed.m, 0, 0);
1711
- actions.setSingleDatetime(zonedDateToIso(d, timezone));
1712
- };
1713
- return /* @__PURE__ */ jsx("input", {
1714
- type: "text",
1715
- id,
1716
- "aria-label": ariaLabel,
1717
- value: localValue,
1718
- onChange: handleChange,
1719
- disabled,
1720
- className: cn("border-input-border bg-input-background/50 h-10 w-full rounded-lg border px-3 text-sm", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:cursor-not-allowed disabled:opacity-50", className)
1721
- });
1722
- }
1723
- PickerTimeInputField.displayName = "Picker.TimeInputField";
1724
- //#endregion
1725
- //#region src/components/features/picker/wrappers/date-time-picker.tsx
1726
- function DateTimePicker({ value, onChange, placeholder = "Pick a date & time", clearable = true, responsive = true, sheetTitle = "Pick a date & time", timezone, step = 15, hourCycle, numberOfMonths = 1, hideTimezone = false, timeInputMode = "slot", timezoneIndicatorVariant = "full", triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, disablePast, disableFuture, minDate, maxDate, dateFormat, timeFormat }) {
1727
- return /* @__PURE__ */ jsx(Picker$1.Root, {
1728
- mode: "datetime",
1729
- value,
1730
- onChange,
1731
- responsive,
1732
- timezone,
1733
- step,
1734
- hourCycle,
1735
- hideTimezone,
1736
- presets: [],
1737
- disablePast,
1738
- disableFuture,
1739
- minDate,
1740
- maxDate,
1741
- children: /* @__PURE__ */ jsx(PickerContent, {
1742
- trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1743
- placeholder,
1744
- clearable,
1745
- disabled,
1746
- className,
1747
- triggerClassName,
1748
- id,
1749
- icon,
1750
- children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "datetime", {
1751
- timezone,
1752
- hourCycle,
1753
- dateFormat,
1754
- timeFormat
1755
- })
1756
- }),
1757
- sheetTitle,
1758
- sheetDescription,
1759
- modal,
1760
- contentClassName: popoverClassName,
1761
- footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1762
- children: /* @__PURE__ */ jsxs("div", {
1763
- className: "flex flex-col",
1764
- children: [
1765
- /* @__PURE__ */ jsx(PickerCalendar, {
1766
- numberOfMonths,
1767
- minDate,
1768
- maxDate,
1769
- disablePast,
1770
- disableFuture
1771
- }),
1772
- /* @__PURE__ */ jsx("div", {
1773
- className: "border-t p-3",
1774
- children: timeInputMode === "input" ? /* @__PURE__ */ jsx(PickerTimeInputField, {}) : /* @__PURE__ */ jsx(PickerTimeInput, { target: "embedded-from" })
1775
- }),
1776
- /* @__PURE__ */ jsx(PickerTimezoneIndicator, { variant: timezoneIndicatorVariant })
1777
- ]
1778
- })
1779
- })
1780
- });
1781
- }
1782
- DateTimePicker.displayName = "DateTimePicker";
1783
- //#endregion
1784
1441
  //#region src/components/features/picker/wrappers/date-time-range-picker.tsx
1785
1442
  function DateTimeRangePicker({ value, onChange, placeholder = "Pick a date & time range", clearable = true, responsive = true, sheetTitle = "Pick a date & time range", timezone, step = 15, hourCycle, numberOfMonths = 2, hideTimezone = false, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, disablePast, disableFuture, minDate, maxDate, presets, excludePresets, dateFormat, timeFormat }) {
1786
- return /* @__PURE__ */ jsx(Picker$1.Root, {
1443
+ return /* @__PURE__ */ jsx(Picker.Root, {
1787
1444
  mode: "datetime-range",
1788
1445
  value,
1789
1446
  onChange,
@@ -1856,95 +1513,4 @@ function DateTimeRangePicker({ value, onChange, placeholder = "Pick a date & tim
1856
1513
  }
1857
1514
  DateTimeRangePicker.displayName = "DateTimeRangePicker";
1858
1515
  //#endregion
1859
- //#region src/components/features/picker/wrappers/time-picker.tsx
1860
- const DEFAULT_TIME_ICON$1 = /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground size-4 shrink-0" });
1861
- function TimePicker({ value, onChange, placeholder = "Pick a time", clearable = true, responsive = true, sheetTitle = "Pick a time", step = 15, hourCycle, minTime, maxTime, timeFormat, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit }) {
1862
- return /* @__PURE__ */ jsx(Picker$1.Root, {
1863
- mode: "time",
1864
- value,
1865
- onChange,
1866
- commit,
1867
- responsive,
1868
- step,
1869
- hourCycle,
1870
- children: /* @__PURE__ */ jsx(PickerContent, {
1871
- trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1872
- placeholder,
1873
- clearable,
1874
- disabled,
1875
- className,
1876
- triggerClassName,
1877
- id,
1878
- icon: icon ?? DEFAULT_TIME_ICON$1,
1879
- children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "time", {
1880
- hourCycle,
1881
- timeFormat
1882
- })
1883
- }),
1884
- sheetTitle,
1885
- sheetDescription,
1886
- modal,
1887
- contentClassName: popoverClassName,
1888
- footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1889
- children: /* @__PURE__ */ jsx(PickerTimeInput, {
1890
- target: "single",
1891
- min: minTime,
1892
- max: maxTime
1893
- })
1894
- })
1895
- });
1896
- }
1897
- TimePicker.displayName = "TimePicker";
1898
- //#endregion
1899
- //#region src/components/features/picker/wrappers/time-range-picker.tsx
1900
- const DEFAULT_TIME_ICON = /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground size-4 shrink-0" });
1901
- function TimeRangePicker({ value, onChange, placeholder = "Pick a time range", clearable = true, responsive = true, sheetTitle = "Pick a time range", step = 15, hourCycle, timeFormat, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit }) {
1902
- return /* @__PURE__ */ jsx(Picker$1.Root, {
1903
- mode: "time-range",
1904
- value,
1905
- onChange,
1906
- commit,
1907
- responsive,
1908
- step,
1909
- hourCycle,
1910
- children: /* @__PURE__ */ jsx(PickerContent, {
1911
- trigger: /* @__PURE__ */ jsx(PickerTrigger, {
1912
- placeholder,
1913
- clearable,
1914
- disabled,
1915
- className,
1916
- triggerClassName,
1917
- id,
1918
- icon: icon ?? DEFAULT_TIME_ICON,
1919
- children: (v) => triggerLabel ? triggerLabel(v) : formatPickerValue(v, "time-range", {
1920
- hourCycle,
1921
- timeFormat
1922
- })
1923
- }),
1924
- sheetTitle,
1925
- sheetDescription,
1926
- modal,
1927
- contentClassName: popoverClassName,
1928
- footer: /* @__PURE__ */ jsx(DefaultFooter, {}),
1929
- children: /* @__PURE__ */ jsxs("div", {
1930
- className: "flex gap-2 p-3",
1931
- children: [/* @__PURE__ */ jsxs("div", {
1932
- className: "flex-1",
1933
- children: [/* @__PURE__ */ jsx("div", {
1934
- className: "text-muted-foreground mb-1 text-xs",
1935
- children: "From"
1936
- }), /* @__PURE__ */ jsx(PickerTimeInput, { target: "range-from" })]
1937
- }), /* @__PURE__ */ jsxs("div", {
1938
- className: "flex-1",
1939
- children: [/* @__PURE__ */ jsx("div", {
1940
- className: "text-muted-foreground mb-1 text-xs",
1941
- children: "To"
1942
- }), /* @__PURE__ */ jsx(PickerTimeInput, { target: "range-to" })]
1943
- })]
1944
- })
1945
- })
1946
- });
1947
- }
1948
- TimeRangePicker.displayName = "TimeRangePicker";
1949
- //#endregion
1950
- export { isRangeMode as $, resolveCommit as A, PickerContext as B, DATE_PRESETS as C, formatTimeLabel as D, dateToYYYYMMDD as E, PickerClear as F, getTimezoneOffset as G, formatInTimezone as H, PickerFooter as I, ALLOWED_STEPS as J, isoToZonedDate as K, PickerReset as L, PickerPresets as M, PickerApply as N, isValidTimeString as O, PickerCancel as P, isDateBearingMode as Q, PickerContent as R, DATETIME_PRESETS as S, usePickerState as T, formatTimezoneLabel as U, usePickerContext as V, getBrowserTimezone as W, RANGE_MODES as X, DATE_BEARING_MODES as Y, TIME_BEARING_MODES as Z, PickerTimezoneSelect as _, DateRangeTimePicker as a, useTimeSlots as b, clampRange as c, formatPickerValue as d, isTimeBearingMode as et, isSameDate as f, PickerTrigger as g, Picker as h, DateTimePicker as i, useKeyboardShortcuts as j, parseTimeString as k, getDaysDifference as l, isSameStringRange as m, TimePicker as n, startOfDayInTz as nt, DateRangePicker as o, isSameDateRange as p, zonedDateToIso as q, DateTimeRangePicker as r, DatePicker as s, TimeRangePicker as t, endOfDayInTz as tt, isRangeValid as u, PickerTimezoneIndicator as v, getDefaultPresets as w, usePresets as x, PickerTimeInput as y, PickerCalendar as z };
1516
+ export { formatInTimezone as A, isDateBearingMode as B, PickerClear as C, PickerCalendar as D, PickerContent as E, zonedDateToIso as F, isTimeBearingMode as H, ALLOWED_STEPS as I, DATE_BEARING_MODES as L, getBrowserTimezone as M, getTimezoneOffset as N, PickerContext as O, isoToZonedDate as P, RANGE_MODES as R, PickerCancel as S, PickerReset as T, endOfDayInTz as U, isRangeMode as V, startOfDayInTz as W, parseTimeString as _, PickerTimezoneIndicator as a, PickerPresets as b, Picker as c, DATE_PRESETS as d, getDefaultPresets as f, isValidTimeString as g, formatTimeLabel as h, PickerTrigger as i, formatTimezoneLabel as j, usePickerContext as k, usePresets as l, dateToYYYYMMDD as m, DefaultFooter as n, PickerTimeInput as o, usePickerState as p, formatPickerValue as r, useTimeSlots as s, DateTimeRangePicker as t, DATETIME_PRESETS as u, resolveCommit as v, PickerFooter as w, PickerApply as x, useKeyboardShortcuts as y, TIME_BEARING_MODES as z };
@@ -1,3 +1,3 @@
1
- import { A as FormCheckbox, C as FormDialog, D as FormCustom, E as FormDatePicker, M as FormAutosearch, N as FormAutocomplete, O as FormCopyBox, S as FormError, T as FormDateTimePicker, _ as FormRadioGroup, a as useField, b as FormFieldArray, c as useWatchAll, d as FormTextarea, f as FormSwitch, g as FormRoot, h as FormSelectItem, i as useFieldContext, j as FormButton, k as FormCombobox, l as FormTransfer, m as FormSelect, n as useFormState, o as FormWhen, p as FormSubmit, r as useFormContext, s as useWatch, t as Form, u as FormTimePicker, v as FormRadioItem, w as FormDescription, x as FormField, y as FormInput } from "../form-BUUNQfC9.mjs";
1
+ import { A as FormCheckbox, C as FormDialog, D as FormCustom, E as FormDatePicker, M as FormAutosearch, N as FormAutocomplete, O as FormCopyBox, S as FormError, T as FormDateTimePicker, _ as FormRadioGroup, a as useField, b as FormFieldArray, c as useWatchAll, d as FormTextarea, f as FormSwitch, g as FormRoot, h as FormSelectItem, i as useFieldContext, j as FormButton, k as FormCombobox, l as FormTransfer, m as FormSelect, n as useFormState, o as FormWhen, p as FormSubmit, r as useFormContext, s as useWatch, t as Form, u as FormTimePicker, v as FormRadioItem, w as FormDescription, x as FormField, y as FormInput } from "../form-BhBsoMFA.mjs";
2
2
  import { n as useAdapter, t as FormAdapterProvider } from "../adapter-context-h0jCVqGO.mjs";
3
3
  export { Form, FormAdapterProvider, FormAutocomplete, FormAutosearch, FormButton, FormCheckbox, FormCombobox, FormCopyBox, FormCustom, FormDatePicker, FormDateTimePicker, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormTimePicker, FormTransfer, FormWhen, useAdapter, useField, useFieldContext, useFormContext, useFormState, useWatch, useWatchAll };
@@ -11,16 +11,16 @@ import { i as SelectItem, l as SelectTrigger, n as SelectContent, t as Select, u
11
11
  import { t as Tooltip } from "./tooltip-C_SL1imw.mjs";
12
12
  import { t as Switch } from "./switch-DPHr3TcN.mjs";
13
13
  import { t as Textarea } from "./textarea-B6YhjFVC.mjs";
14
- import { t as Autocomplete } from "./autocomplete-DM6JYV4W.mjs";
14
+ import { t as Autocomplete } from "./autocomplete-DZ_HSBak.mjs";
15
15
  import { Autosearch } from "./autosearch/index.mjs";
16
- import { t as CalendarDatePicker } from "./calendar-date-picker-AzvSqjeS.mjs";
16
+ import { t as CalendarDatePicker } from "./calendar-date-picker-ynSGADfR.mjs";
17
17
  import { t as toast } from "./toast-BUPlDkN3.mjs";
18
- import { t as DateTimePicker } from "./date-time-picker-D3-DeNo8.mjs";
18
+ import { t as DateTimePicker } from "./date-time-picker-BzcHrf-A.mjs";
19
19
  import { n as useFormContext$1, t as FormProvider } from "./form-context-DzB2a-dw.mjs";
20
20
  import { t as useCopyToClipboard } from "./use-copy-to-clipboard-DZDq_85T.mjs";
21
21
  import { n as useAdapter } from "./adapter-context-h0jCVqGO.mjs";
22
22
  import { InputWithAddons } from "./input-with-addons/index.mjs";
23
- import { t as TimePicker } from "./time-picker-B_fN5vhO.mjs";
23
+ import { t as TimePicker } from "./time-picker-CFhaHTtI.mjs";
24
24
  import { t as Transfer } from "./transfer-CEq9AhL7.mjs";
25
25
  import { CheckIcon, CircleHelp, CopyIcon } from "lucide-react";
26
26
  import * as React from "react";
@@ -1,2 +1,2 @@
1
- import { t as GroupedTable } from "../grouped-table-D4J3ioHb.mjs";
1
+ import { t as GroupedTable } from "../grouped-table--jejU1Jy.mjs";
2
2
  export { GroupedTable };
@@ -5,7 +5,7 @@ import { t as useControllableState } from "./use-controllable-state-Dna7u3r9.mjs
5
5
  import { t as Input } from "./input-j4tbmYYz.mjs";
6
6
  import { Skeleton } from "./skeleton/index.mjs";
7
7
  import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "./table/index.mjs";
8
- import { f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, m as DataTableRowActions, p as dataTableFeatures } from "./data-table-DjGvAdO_.mjs";
8
+ import { f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, m as DataTableRowActions, p as dataTableFeatures } from "./data-table-Du7_FLBi.mjs";
9
9
  import { n as useDebouncedSearchInput } from "./use-debounced-search-input-yu_F0QBt.mjs";
10
10
  import { ChevronRight } from "lucide-react";
11
11
  import { useCallback, useMemo, useState } from "react";