@gntik-ai/ui 0.9.0 → 0.11.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.
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  'use client';
2
- import { A as createFormatters, C as builtInMessages, D as catalogs, E as usePortalDir, M as localeDirection, N as tv, O as es, P as cn, S as I18nProvider, T as useOptionalI18n, _ as buttonVariants, a as FieldLabel, b as DensityContext, c as FieldsetLegend, d as useAnnounce, f as useHasLiveAnnouncer, g as BUTTON_ICON_SIZE, h as IconButton, i as FieldItem, j as interpolate, k as en, l as fieldVariants, m as Button, n as FieldDescription, o as Fieldset, p as liveAnnouncerVariants, r as FieldError, s as FieldsetDescription, t as Field, u as LiveAnnouncer, v as Spinner, w as useI18n, x as useDensity, y as RTL_FLIP } from "./Field-DPYsdteY.js";
2
+ import { A as createFormatters, C as builtInMessages, D as catalogs, E as usePortalDir, F as cn, M as interpolate, N as localeDirection, O as es, P as tv, S as I18nProvider, T as useOptionalI18n, _ as buttonVariants, a as FieldLabel, b as DensityContext, c as FieldsetLegend, d as useAnnounce, f as useHasLiveAnnouncer, g as BUTTON_ICON_SIZE, h as IconButton, i as FieldItem, j as formatBytes, k as en, l as fieldVariants, m as Button, n as FieldDescription, o as Fieldset, p as liveAnnouncerVariants, r as FieldError, s as FieldsetDescription, t as Field, u as LiveAnnouncer, v as Spinner, w as useI18n, x as useDensity, y as RTL_FLIP } from "./Field-fY45gbLU.js";
3
3
  import { themeScript } from "./theme-script.js";
4
4
  import { Children, Fragment, cloneElement, createContext, createElement, isValidElement, useCallback, useContext, useEffect, useEffectEvent, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import { useRender } from "@base-ui/react/use-render";
6
7
  import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
7
8
  import { AlertCircle, AlertTriangle, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, Ban, Bell, BellOff, CalendarClock, CalendarDays, Check, CheckCheck, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, ChevronsLeft, ChevronsRight, ChevronsUpDown, CircleAlert, CircleCheck, ClipboardPaste, Clock, Contrast, Copy, CornerDownRight, ExternalLink, Eye, EyeOff, File, FileArchive, FileAudio, FileCode, FileImage, FileSpreadsheet, FileText, FileVideo, FolderPlus, GripHorizontal, GripVertical, Info, ListFilter, Lock, LockOpen, LogOut, Menu as Menu$1, Minus, Monitor, Moon, MoreHorizontal, MoveHorizontal, Palette, PanelLeft, PanelLeftClose, PanelLeftOpen, PanelRight, Pause, Pin, Play, Plus, Quote, RefreshCw, RotateCw, Search, Sun, Trash2, TriangleAlert, WrapText, X, ZoomIn, ZoomOut } from "lucide-react";
8
9
  import { AlertDialog as AlertDialog$1 } from "@base-ui/react/alert-dialog";
9
10
  import { mergeProps } from "@base-ui/react/merge-props";
10
- import { useRender } from "@base-ui/react/use-render";
11
11
  import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
12
12
  import { Drawer as Drawer$1 } from "@base-ui/react/drawer";
13
13
  import { Select as Select$1 } from "@base-ui/react/select";
@@ -96,6 +96,36 @@ function matchRanges(text, query, options = {}) {
96
96
  return ranges;
97
97
  }
98
98
  //#endregion
99
+ //#region src/hooks/useOs.ts
100
+ function detect(platform, maxTouchPoints) {
101
+ if (/iphone|ipad|ipod|ios/i.test(platform) || /MacIntel/i.test(platform) && maxTouchPoints > 1) return "ios";
102
+ if (/mac/i.test(platform)) return "macos";
103
+ if (/win/i.test(platform)) return "windows";
104
+ if (/android/i.test(platform)) return "android";
105
+ if (/cros|chrome\s?os/i.test(platform)) return "chromeos";
106
+ if (/linux/i.test(platform)) return "linux";
107
+ return "undetermined";
108
+ }
109
+ /** Detect the OS from client hints, platform and user agent; safe without navigator. */
110
+ function getOs() {
111
+ if (typeof navigator === "undefined") return "undetermined";
112
+ const nav = navigator;
113
+ const touchPoints = nav.maxTouchPoints ?? 0;
114
+ const hinted = detect(nav.userAgentData?.platform ?? "", touchPoints);
115
+ if (hinted !== "undetermined") return hinted;
116
+ const platform = detect(nav.platform ?? "", touchPoints);
117
+ if (platform !== "undetermined" && platform !== "linux") return platform;
118
+ const agent = detect(nav.userAgent ?? "", touchPoints);
119
+ if (platform === "linux" && agent !== "android" && agent !== "chromeos") return platform;
120
+ return agent;
121
+ }
122
+ const subscribe = () => () => {};
123
+ const getServerSnapshot = () => "undetermined";
124
+ /** Report the client OS, using undetermined for SSR and the initial hydration render. */
125
+ function useOs() {
126
+ return useSyncExternalStore(subscribe, getOs, getServerSnapshot);
127
+ }
128
+ //#endregion
99
129
  //#region src/density/DensityProvider.tsx
100
130
  /**
101
131
  * Sets `data-density` so the density variables from @gntik-ai/tokens (density.css) re-scope for
@@ -228,6 +258,12 @@ const THEME_CLASS = {
228
258
  };
229
259
  const ALL_CLASSES = ["dark", "high_contrast"];
230
260
  const SYSTEM_QUERIES = ["(prefers-color-scheme: light)", "(prefers-contrast: more)"];
261
+ const DEFAULT_THEME = {
262
+ mode: "dark",
263
+ resolved: "dark",
264
+ setMode: () => {},
265
+ brand: gntikPreset
266
+ };
231
267
  const ThemeContext = createContext(null);
232
268
  function systemTheme() {
233
269
  if (typeof window === "undefined" || !window.matchMedia) return "dark";
@@ -267,13 +303,13 @@ const serverSystem = () => "dark";
267
303
  * useSyncExternalStore, so they apply right after hydration without a mismatch. To avoid a
268
304
  * flash on load, inline `themeScript()` in the document <head>.
269
305
  */
270
- function ThemeProvider({ children, defaultMode = "dark", initialMode, brand = gntikPreset, storageKey = "gntik-theme", target = () => typeof document === "undefined" ? null : document.documentElement }) {
306
+ function ThemeProvider({ children, defaultMode = "dark", initialMode, forcedMode, brand = gntikPreset, storageKey = "gntik-theme", target = () => typeof document === "undefined" ? null : document.documentElement }) {
271
307
  const [localMode, setLocalMode] = useState(initialMode ?? defaultMode);
272
308
  const getStored = useCallback(() => storageKey ? readStored(storageKey) : null, [storageKey]);
273
309
  const stored = useSyncExternalStore(subscribeStored, getStored, serverStored);
274
310
  const system = useSyncExternalStore(subscribeSystem, systemTheme, serverSystem);
275
311
  const mode = stored ?? localMode;
276
- const resolved = mode === "system" ? system : mode;
312
+ const resolved = forcedMode ?? (mode === "system" ? system : mode);
277
313
  useEffect(() => {
278
314
  const el = target();
279
315
  if (!el) return;
@@ -313,12 +349,7 @@ function ThemeProvider({ children, defaultMode = "dark", initialMode, brand = gn
313
349
  }
314
350
  /** Current theme and brand. Outside a provider it reports the dark default and the gntik preset. */
315
351
  function useTheme() {
316
- return useContext(ThemeContext) ?? {
317
- mode: "dark",
318
- resolved: "dark",
319
- setMode: () => {},
320
- brand: gntikPreset
321
- };
352
+ return useContext(ThemeContext) ?? DEFAULT_THEME;
322
353
  }
323
354
  //#endregion
324
355
  //#region src/theme/Logo.tsx
@@ -343,6 +374,56 @@ function Logo({ size = 28, wordmark = false, brand, className, ...props }) {
343
374
  });
344
375
  }
345
376
  //#endregion
377
+ //#region src/utils/portal.ts
378
+ /** Undefined preserves Base UI's document.body default outside a scope. */
379
+ const PortalContainerContext = createContext(void 0);
380
+ function usePortalContainer() {
381
+ return useContext(PortalContainerContext);
382
+ }
383
+ //#endregion
384
+ //#region src/theme/ThemeScope.tsx
385
+ /** Applies a theme to a subtree and its overlays; mode/setMode still control the page. */
386
+ function ThemeScope({ theme, children, className, render, ref, ...props }) {
387
+ const page = useTheme();
388
+ const value = useMemo(() => ({
389
+ ...page,
390
+ resolved: theme
391
+ }), [page, theme]);
392
+ const [container, setContainer] = useState();
393
+ const initialTheme = useRef(theme);
394
+ useEffect(() => {
395
+ const portal = document.createElement("div");
396
+ portal.className = initialTheme.current;
397
+ portal.dataset.themeScopePortal = initialTheme.current;
398
+ document.body.appendChild(portal);
399
+ setContainer(portal);
400
+ return () => portal.remove();
401
+ }, []);
402
+ useEffect(() => {
403
+ if (!container) return;
404
+ container.setAttribute("class", theme);
405
+ container.setAttribute("data-theme-scope-portal", theme);
406
+ }, [container, theme]);
407
+ const element = useRender({
408
+ defaultTagName: "div",
409
+ render,
410
+ ref,
411
+ props: {
412
+ ...props,
413
+ className: cn(theme, className),
414
+ "data-theme-scope": theme,
415
+ children
416
+ }
417
+ });
418
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, {
419
+ value,
420
+ children: /* @__PURE__ */ jsx(PortalContainerContext.Provider, {
421
+ value: container,
422
+ children: element
423
+ })
424
+ });
425
+ }
426
+ //#endregion
346
427
  //#region src/components/Accordion/accordion.variants.ts
347
428
  const accordionVariants = tv({
348
429
  slots: {
@@ -717,10 +798,11 @@ const AlertDialogTrigger = AlertDialog$1.Trigger;
717
798
  * focus returns to the trigger. Unlike Dialog, an outside press does not dismiss it.
718
799
  */
719
800
  function AlertDialogContent({ size = "sm", className, container, children, ...props }) {
801
+ const portalContainer = usePortalContainer();
720
802
  const dir = usePortalDir();
721
803
  const v = dialogVariants({ size });
722
804
  return /* @__PURE__ */ jsxs(AlertDialog$1.Portal, {
723
- container,
805
+ container: container ?? portalContainer,
724
806
  children: [/* @__PURE__ */ jsx(AlertDialog$1.Backdrop, { className: v.backdrop() }), /* @__PURE__ */ jsx(AlertDialog$1.Viewport, {
725
807
  dir,
726
808
  className: v.viewport(),
@@ -1596,11 +1678,12 @@ function SheetHandle() {
1596
1678
  * optional header (title, description), scrollable content and a fixed footer.
1597
1679
  */
1598
1680
  function BottomSheetContent({ className, title, description, footer, showClose = true, container, children, ...props }) {
1681
+ const portalContainer = usePortalContainer();
1599
1682
  const ctx = useContext(SheetContext);
1600
1683
  const { t } = useI18n();
1601
1684
  const s = bottomSheetVariants();
1602
1685
  return /* @__PURE__ */ jsxs(Drawer$1.Portal, {
1603
- container,
1686
+ container: container ?? portalContainer,
1604
1687
  children: [/* @__PURE__ */ jsx(Drawer$1.Backdrop, { className: s.backdrop() }), /* @__PURE__ */ jsx(Drawer$1.Viewport, {
1605
1688
  className: s.viewport(),
1606
1689
  children: /* @__PURE__ */ jsxs(Drawer$1.Popup, {
@@ -2490,13 +2573,14 @@ function SelectTrigger({ size, className, placeholder, children, ref, ...props }
2490
2573
  }
2491
2574
  /** The popup: portal, positioner, popup surface and listbox. */
2492
2575
  function SelectContent({ className, alignItemWithTrigger = false, side = "bottom", align = "start", sideOffset = 6, container, status, children, ...props }) {
2576
+ const portalContainer = usePortalContainer();
2493
2577
  const dir = usePortalDir();
2494
2578
  const context = useContext(SelectTriggerContext);
2495
2579
  const labelledBy = useTriggerAttribute(context?.trigger ?? null, "aria-labelledby");
2496
2580
  const ariaLabel = useTriggerAttribute(context?.trigger ?? null, "aria-label");
2497
2581
  const explicitName = props["aria-label"] !== void 0 || props["aria-labelledby"] !== void 0;
2498
2582
  return /* @__PURE__ */ jsx(Select$1.Portal, {
2499
- container,
2583
+ container: container ?? portalContainer,
2500
2584
  children: /* @__PURE__ */ jsx(Select$1.Positioner, {
2501
2585
  dir,
2502
2586
  className: s$25.positioner(),
@@ -3121,7 +3205,7 @@ const doc$11 = {
3121
3205
  name: "Calendar",
3122
3206
  group: "Forms",
3123
3207
  status: "beta",
3124
- description: "Day or range selection with one or two months, inclusive min/max bounds and Intl names. The clickable month heading opens a month grid, then the year heading opens a shared 12-year page (2020–2031 for 2026). Set maxView=\"day\" for the previous static header, or \"month\" to stop at months; the default is \"year\". Optional view/defaultView/onViewChange control or report the view (initially \"day\"). captionLayout=\"select\" uses labelled kit month/year selects; yearRange={from,to} defaults to the current year ±10, clipped to min/max and including the visible year. Picking a month returns to days, preserving and clamping the focused day, and calls onMonthChange once with the first day. DatePicker and DateRangePicker forward maxView and captionLayout and reopen in the day view.",
3208
+ description: "The public localeWeekStart(locale?) helper returns the locale first weekday (0–6, Monday fallback), matching scheduling blocks. Day or range selection with one or two months, inclusive min/max bounds and Intl names. The clickable month heading opens a month grid, then the year heading opens a shared 12-year page (2020–2031 for 2026). Set maxView=\"day\" for the previous static header, or \"month\" to stop at months; the default is \"year\". Optional view/defaultView/onViewChange control or report the view (initially \"day\"). captionLayout=\"select\" uses labelled kit month/year selects; yearRange={from,to} defaults to the current year ±10, clipped to min/max and including the visible year. Picking a month returns to days, preserving and clamping the focused day, and calls onMonthChange once with the first day. DatePicker and DateRangePicker forward maxView and captionLayout and reopen in the day view.",
3125
3209
  pattern: "grid (date picker dialog calendar)",
3126
3210
  keyboard: [
3127
3211
  ["Day: ArrowLeft / ArrowRight", "Moves focus to the previous / next day (reversed in RTL)"],
@@ -4810,6 +4894,7 @@ function ComboboxChipsInput({ label, className, placeholder, getLabel = defaultL
4810
4894
  }
4811
4895
  /** The popup: portal, positioner, popup surface, async status, empty state and listbox. */
4812
4896
  function ComboboxContent({ className, emptyText: emptyTextProp, side = "bottom", align = "start", sideOffset = 6, container, children, itemHeight, estimatedItemHeight, overscan, ...props }) {
4897
+ const portalContainer = usePortalContainer();
4813
4898
  const { t } = useI18n();
4814
4899
  const emptyText = emptyTextProp ?? t("common.noMatches");
4815
4900
  const dir = usePortalDir();
@@ -4821,7 +4906,7 @@ function ComboboxContent({ className, emptyText: emptyTextProp, side = "bottom",
4821
4906
  const busy = !!enh && (enh.loading || !!enh.error);
4822
4907
  const errorText = typeof enh?.errorText === "function" ? enh.errorText(enh.error) : enh?.errorText ?? t("combobox.loadFailed");
4823
4908
  return /* @__PURE__ */ jsx(Combobox$1.Portal, {
4824
- container,
4909
+ container: container ?? portalContainer,
4825
4910
  children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
4826
4911
  dir,
4827
4912
  className: s$20.positioner(),
@@ -4971,6 +5056,7 @@ const KEY_MESSAGES = {
4971
5056
  "⌥": "kbd.option",
4972
5057
  "⇧": "kbd.shift",
4973
5058
  "⌃": "kbd.control",
5059
+ Ctrl: "kbd.control",
4974
5060
  "↵": "kbd.enter",
4975
5061
  "⏎": "kbd.enter",
4976
5062
  "⌫": "kbd.backspace",
@@ -4985,18 +5071,20 @@ const KEY_MESSAGES = {
4985
5071
  /** One keyboard key. Symbol glyphs are hidden from screen readers and replaced by their name. */
4986
5072
  function Kbd({ size, label, className, children, ...props }) {
4987
5073
  const { t } = useI18n();
4988
- const key = typeof children === "string" ? KEY_MESSAGES[children] : void 0;
5074
+ const os = useOs();
5075
+ const resolved = children === "mod" ? os === "macos" || os === "ios" ? "⌘" : "Ctrl" : children;
5076
+ const key = typeof resolved === "string" ? KEY_MESSAGES[resolved] : void 0;
4989
5077
  const spoken = label ?? (key ? t(key) : void 0);
4990
5078
  return /* @__PURE__ */ jsx("kbd", {
4991
5079
  className: cn(kbdVariants({ size }).key(), className),
4992
5080
  ...props,
4993
5081
  children: spoken ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
4994
5082
  "aria-hidden": true,
4995
- children
5083
+ children: resolved
4996
5084
  }), /* @__PURE__ */ jsx("span", {
4997
5085
  className: "sr-only",
4998
5086
  children: spoken
4999
- })] }) : children
5087
+ })] }) : resolved
5000
5088
  });
5001
5089
  }
5002
5090
  /** A key combination: nested <kbd> elements inside an outer <kbd>, per the HTML spec. */
@@ -5021,7 +5109,7 @@ const doc$40 = {
5021
5109
  name: "Kbd",
5022
5110
  group: "Display",
5023
5111
  status: "stable",
5024
- description: "Keyboard key chip (<kbd>) for shortcuts and hints, in three sizes. KbdCombo renders a key combination such as ⌘ K. Symbol keys are announced by name (Command, Shift, Enter…).",
5112
+ description: "Keyboard key chip (<kbd>) for shortcuts and hints, in three sizes. Use mod in Kbd or KbdCombo for ⌘ on macOS/iOS and Ctrl elsewhere; explicit keys stay unchanged. Symbol keys and Ctrl are announced by name, unless label overrides the spoken name. useOs() reports the detected OS (undetermined during SSR); getOs() detects it outside React. Both and the Os type are exported from @gntik-ai/ui.",
5025
5113
  tokens: [
5026
5114
  "border",
5027
5115
  "card",
@@ -5252,6 +5340,7 @@ function CommandPalette({ groups, recent, recentLabel: recentLabelProp, onSelect
5252
5340
  }),
5253
5341
  "”"
5254
5342
  ] }), footer, className, children }) {
5343
+ const portalContainer = usePortalContainer();
5255
5344
  const { t, locale } = useI18n();
5256
5345
  const recentLabel = recentLabelProp ?? t("commandPalette.recent");
5257
5346
  const label = labelProp ?? t("commandPalette.label");
@@ -5278,79 +5367,82 @@ function CommandPalette({ groups, recent, recentLabel: recentLabelProp, onSelect
5278
5367
  return /* @__PURE__ */ jsxs(Dialog$1.Root, {
5279
5368
  open,
5280
5369
  onOpenChange: (next) => setOpen(next),
5281
- children: [children, /* @__PURE__ */ jsxs(Dialog$1.Portal, { children: [/* @__PURE__ */ jsx(Dialog$1.Backdrop, { className: s$19.backdrop() }), /* @__PURE__ */ jsx(Dialog$1.Viewport, {
5282
- dir,
5283
- className: s$19.viewport(),
5284
- children: /* @__PURE__ */ jsx(Dialog$1.Popup, {
5285
- "aria-label": label,
5286
- className: cn(s$19.popup(), className),
5287
- children: /* @__PURE__ */ jsxs(Autocomplete.Root, {
5288
- open: true,
5289
- inline: true,
5290
- items: visible,
5291
- filter: null,
5292
- value: query,
5293
- onValueChange: (v, details) => {
5294
- if (details.reason === "item-press") return;
5295
- setQuery(v);
5296
- },
5297
- itemToStringValue: (entry) => entry.item.label,
5298
- autoHighlight: "always",
5299
- keepHighlight: true,
5300
- children: [
5301
- /* @__PURE__ */ jsxs("div", {
5302
- className: s$19.inputRow(),
5303
- children: [
5304
- /* @__PURE__ */ jsx(Search, {
5305
- size: 17,
5306
- "aria-hidden": true,
5307
- className: s$19.inputIcon()
5308
- }),
5309
- /* @__PURE__ */ jsx(Autocomplete.Input, {
5310
- "aria-label": placeholder.replace(/…$/, ""),
5311
- "aria-describedby": footer === false ? void 0 : hintsId,
5312
- placeholder,
5313
- className: s$19.input()
5314
- }),
5315
- /* @__PURE__ */ jsx(Kbd, {
5316
- size: "sm",
5317
- label: "Escape",
5318
- children: "esc"
5319
- })
5320
- ]
5321
- }),
5322
- /* @__PURE__ */ jsxs("div", {
5323
- className: s$19.results(),
5324
- children: [/* @__PURE__ */ jsx(Autocomplete.Empty, {
5325
- className: s$19.empty(),
5326
- children: count === 0 && query.trim() ? emptyText(query.trim()) : null
5327
- }), /* @__PURE__ */ jsx(Autocomplete.List, {
5328
- className: s$19.list(),
5329
- children: (group) => /* @__PURE__ */ jsxs(Autocomplete.Group, {
5330
- items: group.items,
5331
- className: s$19.group(),
5332
- children: [/* @__PURE__ */ jsx(Autocomplete.GroupLabel, {
5333
- className: s$19.groupLabel(),
5334
- children: group.value
5335
- }), /* @__PURE__ */ jsx(Autocomplete.Collection, { children: (entry) => /* @__PURE__ */ jsx(CommandRow, {
5336
- entry,
5337
- onRun: run
5338
- }, entry.key) })]
5339
- }, group.value)
5340
- })]
5341
- }),
5342
- footer === false ? null : footer ?? /* @__PURE__ */ jsx(DefaultFooter, {
5343
- count,
5344
- id: hintsId
5345
- })
5346
- ]
5370
+ children: [children, /* @__PURE__ */ jsxs(Dialog$1.Portal, {
5371
+ container: portalContainer,
5372
+ children: [/* @__PURE__ */ jsx(Dialog$1.Backdrop, { className: s$19.backdrop() }), /* @__PURE__ */ jsx(Dialog$1.Viewport, {
5373
+ dir,
5374
+ className: s$19.viewport(),
5375
+ children: /* @__PURE__ */ jsx(Dialog$1.Popup, {
5376
+ "aria-label": label,
5377
+ className: cn(s$19.popup(), className),
5378
+ children: /* @__PURE__ */ jsxs(Autocomplete.Root, {
5379
+ open: true,
5380
+ inline: true,
5381
+ items: visible,
5382
+ filter: null,
5383
+ value: query,
5384
+ onValueChange: (v, details) => {
5385
+ if (details.reason === "item-press") return;
5386
+ setQuery(v);
5387
+ },
5388
+ itemToStringValue: (entry) => entry.item.label,
5389
+ autoHighlight: "always",
5390
+ keepHighlight: true,
5391
+ children: [
5392
+ /* @__PURE__ */ jsxs("div", {
5393
+ className: s$19.inputRow(),
5394
+ children: [
5395
+ /* @__PURE__ */ jsx(Search, {
5396
+ size: 17,
5397
+ "aria-hidden": true,
5398
+ className: s$19.inputIcon()
5399
+ }),
5400
+ /* @__PURE__ */ jsx(Autocomplete.Input, {
5401
+ "aria-label": placeholder.replace(/…$/, ""),
5402
+ "aria-describedby": footer === false ? void 0 : hintsId,
5403
+ placeholder,
5404
+ className: s$19.input()
5405
+ }),
5406
+ /* @__PURE__ */ jsx(Kbd, {
5407
+ size: "sm",
5408
+ label: "Escape",
5409
+ children: "esc"
5410
+ })
5411
+ ]
5412
+ }),
5413
+ /* @__PURE__ */ jsxs("div", {
5414
+ className: s$19.results(),
5415
+ children: [/* @__PURE__ */ jsx(Autocomplete.Empty, {
5416
+ className: s$19.empty(),
5417
+ children: count === 0 && query.trim() ? emptyText(query.trim()) : null
5418
+ }), /* @__PURE__ */ jsx(Autocomplete.List, {
5419
+ className: s$19.list(),
5420
+ children: (group) => /* @__PURE__ */ jsxs(Autocomplete.Group, {
5421
+ items: group.items,
5422
+ className: s$19.group(),
5423
+ children: [/* @__PURE__ */ jsx(Autocomplete.GroupLabel, {
5424
+ className: s$19.groupLabel(),
5425
+ children: group.value
5426
+ }), /* @__PURE__ */ jsx(Autocomplete.Collection, { children: (entry) => /* @__PURE__ */ jsx(CommandRow, {
5427
+ entry,
5428
+ onRun: run
5429
+ }, entry.key) })]
5430
+ }, group.value)
5431
+ })]
5432
+ }),
5433
+ footer === false ? null : footer ?? /* @__PURE__ */ jsx(DefaultFooter, {
5434
+ count,
5435
+ id: hintsId
5436
+ })
5437
+ ]
5438
+ })
5347
5439
  })
5348
- })
5349
- })] })]
5440
+ })]
5441
+ })]
5350
5442
  });
5351
5443
  }
5352
5444
  /** Search-style button that opens the palette; place it inside <CommandPalette>. */
5353
- function CommandPaletteTrigger({ className, keys = ["⌘", "K"], children: childrenProp, ...props }) {
5445
+ function CommandPaletteTrigger({ className, keys = ["mod", "K"], children: childrenProp, ...props }) {
5354
5446
  const { t } = useI18n();
5355
5447
  const children = childrenProp ?? t("commandPalette.trigger");
5356
5448
  return /* @__PURE__ */ jsxs(Dialog$1.Trigger, {
@@ -5496,8 +5588,9 @@ function ContextMenuTrigger({ className, tabIndex = 0, hint = "Press Shift+F10 f
5496
5588
  }
5497
5589
  /** The floating list (role `menu`) placed at the pointer; same look as MenuContent. */
5498
5590
  function ContextMenuContent({ className, container, children, ...props }) {
5591
+ const portalContainer = usePortalContainer();
5499
5592
  return /* @__PURE__ */ jsx(ContextMenu$1.Portal, {
5500
- container,
5593
+ container: container ?? portalContainer,
5501
5594
  children: /* @__PURE__ */ jsx(ContextMenu$1.Positioner, {
5502
5595
  className: s$18.positioner(),
5503
5596
  children: /* @__PURE__ */ jsx(ContextMenu$1.Popup, {
@@ -5594,10 +5687,11 @@ const Tooltip = Tooltip$1.Root;
5594
5687
  const TooltipTrigger = Tooltip$1.Trigger;
5595
5688
  /** The floating hint. Opens on hover (after the delay) and on keyboard focus; Escape hides it. */
5596
5689
  function TooltipContent({ variant, side = "top", align = "center", sideOffset = 8, arrow = true, kbd, className, container, children, ...props }) {
5690
+ const portalContainer = usePortalContainer();
5597
5691
  const dir = usePortalDir();
5598
5692
  const v = tooltipVariants({ variant });
5599
5693
  return /* @__PURE__ */ jsx(Tooltip$1.Portal, {
5600
- container,
5694
+ container: container ?? portalContainer,
5601
5695
  children: /* @__PURE__ */ jsx(Tooltip$1.Positioner, {
5602
5696
  dir,
5603
5697
  className: v.positioner(),
@@ -5848,10 +5942,11 @@ const PopoverTrigger = Popover$1.Trigger;
5848
5942
  * close it and focus returns to the trigger.
5849
5943
  */
5850
5944
  function PopoverContent({ side = "bottom", align = "center", sideOffset = 8, alignOffset, arrow = false, padding, className, container, children, ...props }) {
5945
+ const portalContainer = usePortalContainer();
5851
5946
  const dir = usePortalDir();
5852
5947
  const v = popoverVariants({ padding });
5853
5948
  return /* @__PURE__ */ jsx(Popover$1.Portal, {
5854
- container,
5949
+ container: container ?? portalContainer,
5855
5950
  children: /* @__PURE__ */ jsx(Popover$1.Positioner, {
5856
5951
  dir,
5857
5952
  className: v.positioner(),
@@ -8052,6 +8147,7 @@ const DialogClose = Dialog$1.Close;
8052
8147
  * inside, Escape and an outside press close it, and focus returns to the trigger.
8053
8148
  */
8054
8149
  function DialogContent({ size, presentation, className, showClose = true, closeLabel: closeLabelProp, container, children, ...props }) {
8150
+ const portalContainer = usePortalContainer();
8055
8151
  const { t } = useI18n();
8056
8152
  const closeLabel = closeLabelProp ?? t("common.close");
8057
8153
  const dir = usePortalDir();
@@ -8060,7 +8156,7 @@ function DialogContent({ size, presentation, className, showClose = true, closeL
8060
8156
  presentation
8061
8157
  });
8062
8158
  return /* @__PURE__ */ jsxs(Dialog$1.Portal, {
8063
- container,
8159
+ container: container ?? portalContainer,
8064
8160
  children: [/* @__PURE__ */ jsx(Dialog$1.Backdrop, { className: v.backdrop() }), /* @__PURE__ */ jsx(Dialog$1.Viewport, {
8065
8161
  dir,
8066
8162
  className: v.viewport(),
@@ -8951,6 +9047,7 @@ const DrawerClose = Drawer$1.Close;
8951
9047
  * to the trigger. Lay out the inside with DrawerHeader, DrawerBody and DrawerFooter.
8952
9048
  */
8953
9049
  function DrawerContent({ size, className, showClose = true, closeLabel, container, children, ...props }) {
9050
+ const portalContainer = usePortalContainer();
8954
9051
  const dir = usePortalDir();
8955
9052
  const { t } = useI18n();
8956
9053
  const side = useContext(SideContext);
@@ -8959,7 +9056,7 @@ function DrawerContent({ size, className, showClose = true, closeLabel, containe
8959
9056
  size
8960
9057
  });
8961
9058
  return /* @__PURE__ */ jsxs(Drawer$1.Portal, {
8962
- container,
9059
+ container: container ?? portalContainer,
8963
9060
  children: [/* @__PURE__ */ jsx(Drawer$1.Backdrop, { className: v.backdrop() }), /* @__PURE__ */ jsx(Drawer$1.Viewport, {
8964
9061
  dir,
8965
9062
  className: v.viewport(),
@@ -9494,9 +9591,10 @@ function HoverCardTrigger({ className, delay = 500, closeDelay = 250, ...props }
9494
9591
  * also be reachable at the trigger's destination. Escape closes it.
9495
9592
  */
9496
9593
  function HoverCardContent({ side = "bottom", align = "center", sideOffset = 8, arrow = false, className, container, children, ...props }) {
9594
+ const portalContainer = usePortalContainer();
9497
9595
  const dir = usePortalDir();
9498
9596
  return /* @__PURE__ */ jsx(PreviewCard.Portal, {
9499
- container,
9597
+ container: container ?? portalContainer,
9500
9598
  children: /* @__PURE__ */ jsx(PreviewCard.Positioner, {
9501
9599
  dir,
9502
9600
  className: s$14.positioner(),
@@ -11827,6 +11925,7 @@ const lightboxVariants = tv({ slots: {
11827
11925
  * closes and focus returns to whatever opened it.
11828
11926
  */
11829
11927
  function Lightbox({ items, open, defaultOpen = false, onOpenChange, index, defaultIndex = 0, onIndexChange, loop = false, showThumbnails = true, maxZoom = 4, labels: labelsProp, container }) {
11928
+ const portalContainer = usePortalContainer();
11830
11929
  const { t } = useI18n();
11831
11930
  const labels = {
11832
11931
  title: t("lightbox.title"),
@@ -11910,7 +12009,7 @@ function Lightbox({ items, open, defaultOpen = false, onOpenChange, index, defau
11910
12009
  open: isOpen,
11911
12010
  onOpenChange: (next) => setOpen(next),
11912
12011
  children: /* @__PURE__ */ jsxs(Dialog$1.Portal, {
11913
- container,
12012
+ container: container ?? portalContainer,
11914
12013
  children: [/* @__PURE__ */ jsx(Dialog$1.Backdrop, { className: s.backdrop() }), /* @__PURE__ */ jsxs(Dialog$1.Popup, {
11915
12014
  className: s.popup(),
11916
12015
  onKeyDown,
@@ -12605,6 +12704,7 @@ function TopLink({ item, currentHref, onNavigate }) {
12605
12704
  * marked. Pair it with StackedLayout (as its sub-nav row) and `megaMenuNavItems` for MobileNav.
12606
12705
  */
12607
12706
  function MegaMenu({ items, label: labelProp, currentHref, onNavigate, className }) {
12707
+ const portalContainer = usePortalContainer();
12608
12708
  const { t } = useI18n();
12609
12709
  const label = labelProp === void 0 ? t("megaMenu.label") : labelProp;
12610
12710
  return /* @__PURE__ */ jsxs(NavigationMenu.Root, {
@@ -12634,17 +12734,20 @@ function MegaMenu({ items, label: labelProp, currentHref, onNavigate, className
12634
12734
  onNavigate
12635
12735
  })
12636
12736
  }, item.id ?? item.label))
12637
- }), /* @__PURE__ */ jsx(NavigationMenu.Portal, { children: /* @__PURE__ */ jsx(NavigationMenu.Positioner, {
12638
- className: s$10.positioner(),
12639
- sideOffset: 8,
12640
- align: "start",
12641
- collisionPadding: 16,
12642
- collisionAvoidance: { side: "none" },
12643
- children: /* @__PURE__ */ jsx(NavigationMenu.Popup, {
12644
- className: s$10.popup(),
12645
- children: /* @__PURE__ */ jsx(NavigationMenu.Viewport, { className: s$10.viewport() })
12737
+ }), /* @__PURE__ */ jsx(NavigationMenu.Portal, {
12738
+ container: portalContainer,
12739
+ children: /* @__PURE__ */ jsx(NavigationMenu.Positioner, {
12740
+ className: s$10.positioner(),
12741
+ sideOffset: 8,
12742
+ align: "start",
12743
+ collisionPadding: 16,
12744
+ collisionAvoidance: { side: "none" },
12745
+ children: /* @__PURE__ */ jsx(NavigationMenu.Popup, {
12746
+ className: s$10.popup(),
12747
+ children: /* @__PURE__ */ jsx(NavigationMenu.Viewport, { className: s$10.viewport() })
12748
+ })
12646
12749
  })
12647
- }) })]
12750
+ })]
12648
12751
  });
12649
12752
  }
12650
12753
  //#endregion
@@ -12689,9 +12792,10 @@ const MenuRadioGroup = Menu$2.RadioGroup;
12689
12792
  const MenuSub = Menu$2.SubmenuRoot;
12690
12793
  /** The floating list (role `menu`): portal, positioner and popup. */
12691
12794
  function MenuContent({ side, align = "start", sideOffset = 8, alignOffset, className, container, children, ...props }) {
12795
+ const portalContainer = usePortalContainer();
12692
12796
  const dir = usePortalDir();
12693
12797
  return /* @__PURE__ */ jsx(Menu$2.Portal, {
12694
- container,
12798
+ container: container ?? portalContainer,
12695
12799
  children: /* @__PURE__ */ jsx(Menu$2.Positioner, {
12696
12800
  dir,
12697
12801
  className: s$9.positioner(),
@@ -13469,6 +13573,7 @@ const matches = (o, q, locale) => o === SELECT_ALL ? q.trim() === "" : matchText
13469
13573
  * (extra ones collapse into "+N"), an optional "Select all" row and a clear button.
13470
13574
  */
13471
13575
  function MultiSelect({ options, value, defaultValue, onValueChange, label, placeholder: placeholderProp, maxVisibleChips = 3, showSelectAll = true, selectAllLabel: selectAllLabelProp, deselectAllLabel: deselectAllLabelProp, clearLabel: clearLabelProp, triggerLabel: triggerLabelProp, emptyText: emptyTextProp, removeLabel: removeLabelProp, renderOption, name, id, disabled, invalid, size = "md", className, ref, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, loadOptions, debounceMs, onCreate, createLabel, loadingText, errorText, virtualized = false, itemHeight, estimatedItemHeight, overscan }) {
13576
+ const portalContainer = usePortalContainer();
13472
13577
  const { t, locale } = useI18n();
13473
13578
  const placeholder = placeholderProp ?? t("common.searchPlaceholder");
13474
13579
  const selectAllLabel = selectAllLabelProp ?? t("common.selectAll");
@@ -13634,76 +13739,79 @@ function MultiSelect({ options, value, defaultValue, onValueChange, label, place
13634
13739
  })
13635
13740
  ]
13636
13741
  }),
13637
- /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
13638
- dir,
13639
- className: cb.positioner(),
13640
- side: "bottom",
13641
- align: "start",
13642
- sideOffset: 6,
13643
- children: /* @__PURE__ */ jsxs(Combobox$1.Popup, {
13644
- className: cn(cb.popup(), virtualized && "flex flex-col overflow-hidden"),
13645
- children: [
13646
- (loadOptions || onCreate) && /* @__PURE__ */ jsx(Combobox$1.Status, {
13647
- className: cn(cb.status(), !!remote.error && !remote.loading && cb.statusError()),
13648
- children: remote.loading ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Spinner, { size: 13 }), loadingText ?? t("common.loading")] }) : remote.error ? errorText ?? t("combobox.loadFailed") : null
13649
- }),
13650
- /* @__PURE__ */ jsx(Combobox$1.Empty, {
13651
- className: cb.empty(),
13652
- children: busy ? null : emptyText
13653
- }),
13654
- /* @__PURE__ */ jsx(List, {
13655
- ...virtualized ? {
13656
- itemHeight,
13657
- estimatedItemHeight,
13658
- overscan
13659
- } : { className: cb.list() },
13660
- "aria-busy": remote.loading || void 0,
13661
- children: (o) => isSpecialItem(o) ? /* @__PURE__ */ jsx(ComboboxSpecialItem, {
13662
- item: o,
13663
- createLabel
13664
- }, `${o.__gntikSpecial}:${o.value}`) : o === SELECT_ALL ? /* @__PURE__ */ jsxs(Combobox$1.Item, {
13665
- value: o,
13666
- className: cn(cb.item(), s.selectAll()),
13667
- children: [/* @__PURE__ */ jsx("span", {
13668
- className: cb.itemContent(),
13669
- children: allSelected ? deselectAllLabel : selectAllLabel
13670
- }), /* @__PURE__ */ jsx("span", {
13671
- className: s.check(),
13672
- children: allSelected && /* @__PURE__ */ jsx(Check, {
13673
- size: 15,
13674
- strokeWidth: 2.4,
13675
- "aria-hidden": true
13676
- })
13677
- })]
13678
- }, o.value) : /* @__PURE__ */ jsxs(Combobox$1.Item, {
13679
- value: o,
13680
- disabled: o.disabled,
13681
- className: cb.item(),
13682
- children: [/* @__PURE__ */ jsx("span", {
13683
- className: cb.itemContent(),
13684
- children: renderOption ? renderOption(o) : /* @__PURE__ */ jsxs("span", {
13685
- className: "min-w-0",
13686
- children: [/* @__PURE__ */ jsx("span", {
13687
- className: "block truncate",
13688
- children: o.label
13689
- }), o.description && /* @__PURE__ */ jsx("span", {
13690
- className: s.description(),
13691
- children: o.description
13692
- })]
13693
- })
13694
- }), /* @__PURE__ */ jsx(Combobox$1.ItemIndicator, {
13695
- className: cb.indicator(),
13696
- children: /* @__PURE__ */ jsx(Check, {
13697
- size: 15,
13698
- strokeWidth: 2.4,
13699
- "aria-hidden": true
13700
- })
13701
- })]
13702
- }, o.value)
13703
- })
13704
- ]
13742
+ /* @__PURE__ */ jsx(Combobox$1.Portal, {
13743
+ container: portalContainer,
13744
+ children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
13745
+ dir,
13746
+ className: cb.positioner(),
13747
+ side: "bottom",
13748
+ align: "start",
13749
+ sideOffset: 6,
13750
+ children: /* @__PURE__ */ jsxs(Combobox$1.Popup, {
13751
+ className: cn(cb.popup(), virtualized && "flex flex-col overflow-hidden"),
13752
+ children: [
13753
+ (loadOptions || onCreate) && /* @__PURE__ */ jsx(Combobox$1.Status, {
13754
+ className: cn(cb.status(), !!remote.error && !remote.loading && cb.statusError()),
13755
+ children: remote.loading ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Spinner, { size: 13 }), loadingText ?? t("common.loading")] }) : remote.error ? errorText ?? t("combobox.loadFailed") : null
13756
+ }),
13757
+ /* @__PURE__ */ jsx(Combobox$1.Empty, {
13758
+ className: cb.empty(),
13759
+ children: busy ? null : emptyText
13760
+ }),
13761
+ /* @__PURE__ */ jsx(List, {
13762
+ ...virtualized ? {
13763
+ itemHeight,
13764
+ estimatedItemHeight,
13765
+ overscan
13766
+ } : { className: cb.list() },
13767
+ "aria-busy": remote.loading || void 0,
13768
+ children: (o) => isSpecialItem(o) ? /* @__PURE__ */ jsx(ComboboxSpecialItem, {
13769
+ item: o,
13770
+ createLabel
13771
+ }, `${o.__gntikSpecial}:${o.value}`) : o === SELECT_ALL ? /* @__PURE__ */ jsxs(Combobox$1.Item, {
13772
+ value: o,
13773
+ className: cn(cb.item(), s.selectAll()),
13774
+ children: [/* @__PURE__ */ jsx("span", {
13775
+ className: cb.itemContent(),
13776
+ children: allSelected ? deselectAllLabel : selectAllLabel
13777
+ }), /* @__PURE__ */ jsx("span", {
13778
+ className: s.check(),
13779
+ children: allSelected && /* @__PURE__ */ jsx(Check, {
13780
+ size: 15,
13781
+ strokeWidth: 2.4,
13782
+ "aria-hidden": true
13783
+ })
13784
+ })]
13785
+ }, o.value) : /* @__PURE__ */ jsxs(Combobox$1.Item, {
13786
+ value: o,
13787
+ disabled: o.disabled,
13788
+ className: cb.item(),
13789
+ children: [/* @__PURE__ */ jsx("span", {
13790
+ className: cb.itemContent(),
13791
+ children: renderOption ? renderOption(o) : /* @__PURE__ */ jsxs("span", {
13792
+ className: "min-w-0",
13793
+ children: [/* @__PURE__ */ jsx("span", {
13794
+ className: "block truncate",
13795
+ children: o.label
13796
+ }), o.description && /* @__PURE__ */ jsx("span", {
13797
+ className: s.description(),
13798
+ children: o.description
13799
+ })]
13800
+ })
13801
+ }), /* @__PURE__ */ jsx(Combobox$1.ItemIndicator, {
13802
+ className: cb.indicator(),
13803
+ children: /* @__PURE__ */ jsx(Check, {
13804
+ size: 15,
13805
+ strokeWidth: 2.4,
13806
+ "aria-hidden": true
13807
+ })
13808
+ })]
13809
+ }, o.value)
13810
+ })
13811
+ ]
13812
+ })
13705
13813
  })
13706
- }) })
13814
+ })
13707
13815
  ]
13708
13816
  });
13709
13817
  }
@@ -15163,6 +15271,7 @@ const TYPED = /^([\w.-]+)\s*(!=|>=|<=|!~|=|~|:|>|<)(.*)$/s;
15163
15271
  * terms. Emits a typed query AST (`{ type: 'and', terms }`); see `matchPowerSearch`.
15164
15272
  */
15165
15273
  function PowerSearch({ fields, value, defaultValue, onValueChange, onSubmit, allowFreeText = true, placeholder = "Filter by field or search…", name, disabled, labels: labelsProp, operatorLabels: opLabelsProp, className, "aria-label": ariaLabel }) {
15274
+ const portalContainer = usePortalContainer();
15166
15275
  const { locale } = useI18n();
15167
15276
  const labels = {
15168
15277
  ...defaultLabels,
@@ -15465,43 +15574,46 @@ function PowerSearch({ fields, value, defaultValue, onValueChange, onSubmit, all
15465
15574
  placeholder: query.terms.length || field ? void 0 : placeholder,
15466
15575
  className: s.input(),
15467
15576
  onKeyDown
15468
- }), /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
15469
- className: s.positioner(),
15470
- side: "bottom",
15471
- align: "start",
15472
- sideOffset: 8,
15473
- anchor: rootRef,
15474
- children: /* @__PURE__ */ jsxs(Combobox$1.Popup, {
15475
- className: s.popup(),
15476
- children: [/* @__PURE__ */ jsx(Combobox$1.Empty, {
15477
- className: s.empty(),
15478
- children: stage === "value" ? labels.typeValue : null
15479
- }), /* @__PURE__ */ jsx(Combobox$1.List, {
15480
- className: "outline-none data-empty:hidden",
15481
- children: (item) => /* @__PURE__ */ jsx(Combobox$1.Item, {
15482
- value: item,
15483
- className: s.item(),
15484
- children: /* @__PURE__ */ jsxs("span", {
15485
- className: s.itemMain(),
15486
- children: [
15487
- item.code && /* @__PURE__ */ jsx("span", {
15488
- className: s.itemCode(),
15489
- children: item.code
15490
- }),
15491
- /* @__PURE__ */ jsx("span", {
15492
- className: "truncate",
15493
- children: item.label
15494
- }),
15495
- item.hint && /* @__PURE__ */ jsx("span", {
15496
- className: s.itemHint(),
15497
- children: item.hint
15498
- })
15499
- ]
15500
- })
15501
- }, item.id)
15502
- })]
15577
+ }), /* @__PURE__ */ jsx(Combobox$1.Portal, {
15578
+ container: portalContainer,
15579
+ children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
15580
+ className: s.positioner(),
15581
+ side: "bottom",
15582
+ align: "start",
15583
+ sideOffset: 8,
15584
+ anchor: rootRef,
15585
+ children: /* @__PURE__ */ jsxs(Combobox$1.Popup, {
15586
+ className: s.popup(),
15587
+ children: [/* @__PURE__ */ jsx(Combobox$1.Empty, {
15588
+ className: s.empty(),
15589
+ children: stage === "value" ? labels.typeValue : null
15590
+ }), /* @__PURE__ */ jsx(Combobox$1.List, {
15591
+ className: "outline-none data-empty:hidden",
15592
+ children: (item) => /* @__PURE__ */ jsx(Combobox$1.Item, {
15593
+ value: item,
15594
+ className: s.item(),
15595
+ children: /* @__PURE__ */ jsxs("span", {
15596
+ className: s.itemMain(),
15597
+ children: [
15598
+ item.code && /* @__PURE__ */ jsx("span", {
15599
+ className: s.itemCode(),
15600
+ children: item.code
15601
+ }),
15602
+ /* @__PURE__ */ jsx("span", {
15603
+ className: "truncate",
15604
+ children: item.label
15605
+ }),
15606
+ item.hint && /* @__PURE__ */ jsx("span", {
15607
+ className: s.itemHint(),
15608
+ children: item.hint
15609
+ })
15610
+ ]
15611
+ })
15612
+ }, item.id)
15613
+ })]
15614
+ })
15503
15615
  })
15504
- }) })]
15616
+ })]
15505
15617
  }),
15506
15618
  query.terms.length > 0 && /* @__PURE__ */ jsx("button", {
15507
15619
  type: "button",
@@ -15735,6 +15847,16 @@ function isConditionComplete(c) {
15735
15847
  if (arity === "list") return Array.isArray(v) && v.length > 0;
15736
15848
  return v !== void 0 && v !== null && v !== "";
15737
15849
  }
15850
+ /** False only for a complete, inverted numeric or date `between` pair. Check completeness separately. */
15851
+ function isConditionValid(c) {
15852
+ if (c.operator !== "between" || !isConditionComplete(c) || !Array.isArray(c.value)) return true;
15853
+ const [from, to] = c.value;
15854
+ const numeric = typeof from === "number" && typeof to === "number";
15855
+ const dates = typeof from === "string" && typeof to === "string" && dayKey(from) !== null && dayKey(to) !== null;
15856
+ if (!numeric && !dates) return true;
15857
+ const order = compare(from, to, void 0);
15858
+ return order === null || !(order > 0);
15859
+ }
15738
15860
  /**
15739
15861
  * Human-readable query: `Status is "Active" AND (Age greater than 30 OR Country is any of
15740
15862
  * "Spain", "France")`. Incomplete conditions and empty groups are left out.
@@ -15842,16 +15964,16 @@ function test(c, record, type, locale) {
15842
15964
  }
15843
15965
  }
15844
15966
  }
15845
- const hasCompleteCondition = (node) => node.type === "condition" ? isConditionComplete(node) : node.children.some(hasCompleteCondition);
15967
+ const hasCompleteCondition = (node) => node.type === "condition" ? isConditionComplete(node) && isConditionValid(node) : node.children.some(hasCompleteCondition);
15846
15968
  /**
15847
15969
  * Whether `record` matches the query. Text comparisons ignore case; dates compare by day
15848
15970
  * (`YYYY-MM-DD` strings or Date objects); array-valued record fields match `eq` / `in` when any
15849
- * item does. Incomplete conditions are ignored, and an empty group matches everything.
15971
+ * item does. Incomplete and invalid conditions are ignored; a group with none left matches everything.
15850
15972
  * Pass `fields` so values are compared by their declared type.
15851
15973
  */
15852
15974
  function evaluateQuery(tree, record, fields, locale) {
15853
15975
  if (tree.type === "condition") {
15854
- if (!isConditionComplete(tree)) return true;
15976
+ if (!isConditionComplete(tree) || !isConditionValid(tree)) return true;
15855
15977
  return test(tree, record, fields?.find((f) => f.id === tree.field)?.type, locale);
15856
15978
  }
15857
15979
  const relevant = tree.children.filter(hasCompleteCondition);
@@ -15900,6 +16022,8 @@ const asNumber = (v) => typeof v === "number" && !Number.isNaN(v) ? v : null;
15900
16022
  /** The value control for a condition: depends on the field type and the operator's arity. */
15901
16023
  function QueryValueEditor({ condition, field, onChange, disabled, locale }) {
15902
16024
  const { t } = useI18n();
16025
+ const errorId = useId();
16026
+ const inverted = !isConditionValid(condition);
15903
16027
  const arity = operatorArity(condition.operator);
15904
16028
  if (!field || arity === "none") return null;
15905
16029
  const v = condition.value;
@@ -15932,23 +16056,35 @@ function QueryValueEditor({ condition, field, onChange, disabled, locale }) {
15932
16056
  next[i] = n;
15933
16057
  onChange(next[0] === null && next[1] === null ? void 0 : next);
15934
16058
  };
15935
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(NumberInput, {
15936
- "aria-label": t("queryBuilder.valueFrom"),
15937
- value: asNumber(pair[0]),
15938
- onValueChange: (n) => set(0, n),
15939
- disabled,
15940
- size: "sm",
15941
- hideSteppers: true,
15942
- className: "w-28"
15943
- }), /* @__PURE__ */ jsx(NumberInput, {
15944
- "aria-label": t("queryBuilder.valueTo"),
15945
- value: asNumber(pair[1]),
15946
- onValueChange: (n) => set(1, n),
15947
- disabled,
15948
- size: "sm",
15949
- hideSteppers: true,
15950
- className: "w-28"
15951
- })] });
16059
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
16060
+ /* @__PURE__ */ jsx(NumberInput, {
16061
+ "aria-label": t("queryBuilder.valueFrom"),
16062
+ invalid: inverted,
16063
+ "aria-describedby": inverted ? errorId : void 0,
16064
+ value: asNumber(pair[0]),
16065
+ onValueChange: (n) => set(0, n),
16066
+ disabled,
16067
+ size: "sm",
16068
+ hideSteppers: true,
16069
+ className: "w-28"
16070
+ }),
16071
+ /* @__PURE__ */ jsx(NumberInput, {
16072
+ "aria-label": t("queryBuilder.valueTo"),
16073
+ invalid: inverted,
16074
+ "aria-describedby": inverted ? errorId : void 0,
16075
+ value: asNumber(pair[1]),
16076
+ onValueChange: (n) => set(1, n),
16077
+ disabled,
16078
+ size: "sm",
16079
+ hideSteppers: true,
16080
+ className: "w-28"
16081
+ }),
16082
+ inverted && /* @__PURE__ */ jsx("p", {
16083
+ id: errorId,
16084
+ className: "w-full text-[12px] leading-5 text-destructive-text",
16085
+ children: t("queryBuilder.rangeInverted")
16086
+ })
16087
+ ] });
15952
16088
  }
15953
16089
  return /* @__PURE__ */ jsx(NumberInput, {
15954
16090
  "aria-label": t("queryBuilder.value"),
@@ -15967,23 +16103,35 @@ function QueryValueEditor({ condition, field, onChange, disabled, locale }) {
15967
16103
  next[i] = d ? toISODate(d) : "";
15968
16104
  onChange(next[0] || next[1] ? next : void 0);
15969
16105
  };
15970
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(DatePicker, {
15971
- "aria-label": t("queryBuilder.valueFrom"),
15972
- value: fromISO(pair[0]),
15973
- onValueChange: (d) => set(0, d),
15974
- locale,
15975
- disabled,
15976
- size: "sm",
15977
- className: "w-44"
15978
- }), /* @__PURE__ */ jsx(DatePicker, {
15979
- "aria-label": t("queryBuilder.valueTo"),
15980
- value: fromISO(pair[1]),
15981
- onValueChange: (d) => set(1, d),
15982
- locale,
15983
- disabled,
15984
- size: "sm",
15985
- className: "w-44"
15986
- })] });
16106
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
16107
+ /* @__PURE__ */ jsx(DatePicker, {
16108
+ "aria-label": t("queryBuilder.valueFrom"),
16109
+ invalid: inverted,
16110
+ "aria-describedby": inverted ? errorId : void 0,
16111
+ value: fromISO(pair[0]),
16112
+ onValueChange: (d) => set(0, d),
16113
+ locale,
16114
+ disabled,
16115
+ size: "sm",
16116
+ className: "w-44"
16117
+ }),
16118
+ /* @__PURE__ */ jsx(DatePicker, {
16119
+ "aria-label": t("queryBuilder.valueTo"),
16120
+ invalid: inverted,
16121
+ "aria-describedby": inverted ? errorId : void 0,
16122
+ value: fromISO(pair[1]),
16123
+ onValueChange: (d) => set(1, d),
16124
+ locale,
16125
+ disabled,
16126
+ size: "sm",
16127
+ className: "w-44"
16128
+ }),
16129
+ inverted && /* @__PURE__ */ jsx("p", {
16130
+ id: errorId,
16131
+ className: "w-full text-[12px] leading-5 text-destructive-text",
16132
+ children: t("queryBuilder.rangeInverted")
16133
+ })
16134
+ ] });
15987
16135
  }
15988
16136
  return /* @__PURE__ */ jsx(DatePicker, {
15989
16137
  "aria-label": t("queryBuilder.value"),
@@ -16225,7 +16373,7 @@ const doc$65 = {
16225
16373
  name: "QueryBuilder",
16226
16374
  group: "Forms",
16227
16375
  status: "beta",
16228
- description: "Visual filter editor: nested AND/OR groups of field / operator / value conditions. Typed fields (text, number, enum, date, boolean) offer their operators and value editor (Input, NumberInput, Select / MultiSelect, DatePicker, ranges for \"between\"); add and remove conditions and groups up to `maxDepth`. The value is a serialisable tree; `queryToString(tree)` makes it human-readable and `evaluateQuery(tree, record)` tests a record.",
16376
+ description: "Visual filter editor: nested AND/OR groups of field / operator / value conditions. Typed fields (text, number, enum, date, boolean) offer their operators and value editor (Input, NumberInput, Select / MultiSelect, DatePicker, ranges for \"between\"); add and remove conditions and groups up to `maxDepth`. The value is a serialisable tree; `queryToString(tree)` makes it human-readable and `evaluateQuery(tree, record)` tests a record. Inverted numeric or date \"between\" ranges show an inline error and are ignored by evaluation. Before sending a query to a backend, check each condition with `isConditionComplete` and `isConditionValid`; validation preserves the entered values.",
16229
16377
  primitive: "Select, MultiSelect, Input, NumberInput, DatePicker, ToggleGroup, Button",
16230
16378
  pattern: "nested groups of form controls",
16231
16379
  keyboard: [
@@ -16241,7 +16389,8 @@ const doc$65 = {
16241
16389
  "foreground",
16242
16390
  "muted-foreground",
16243
16391
  "primary",
16244
- "focus-ring"
16392
+ "focus-ring",
16393
+ "destructive-text"
16245
16394
  ]
16246
16395
  };
16247
16396
  //#endregion
@@ -20609,24 +20758,6 @@ const FILE_ICON = {
20609
20758
  document: FileText,
20610
20759
  file: File
20611
20760
  };
20612
- /** "2.4 MB" style size with binary multiples. */
20613
- function formatBytes(bytes, locale) {
20614
- const units = [
20615
- "B",
20616
- "KB",
20617
- "MB",
20618
- "GB",
20619
- "TB"
20620
- ];
20621
- let value = bytes;
20622
- let i = 0;
20623
- while (value >= 1024 && i < units.length - 1) {
20624
- value /= 1024;
20625
- i++;
20626
- }
20627
- const digits = i === 0 || value >= 10 ? 0 : 1;
20628
- return `${new Intl.NumberFormat(locale, { maximumFractionDigits: digits }).format(value)} ${units[i]}`;
20629
- }
20630
20761
  //#endregion
20631
20762
  //#region src/components/Thumbnail/thumbnail.variants.ts
20632
20763
  const thumbnailVariants = tv({
@@ -20670,7 +20801,8 @@ const thumbnailVariants = tv({
20670
20801
  * icon, upload progress with a reduced-motion-safe shimmer, error state and a remove button.
20671
20802
  */
20672
20803
  function Thumbnail({ name, size, type, src, preview, progress, error, onRemove, onRetry, locale, labels: labelsProp, className, ...props }) {
20673
- const { t } = useI18n();
20804
+ const { t, formatBytes: providerFormatBytes } = useI18n();
20805
+ const formatSize = (bytes) => locale === void 0 ? providerFormatBytes(bytes) : formatBytes(bytes, locale);
20674
20806
  const labels = {
20675
20807
  uploading: (label) => t("thumbnail.uploading", { label }),
20676
20808
  error: t("thumbnail.error"),
@@ -20744,7 +20876,7 @@ function Thumbnail({ name, size, type, src, preview, progress, error, onRemove,
20744
20876
  onClick: onRetry,
20745
20877
  className: s.retry(),
20746
20878
  children: labels.retry
20747
- })] })] }) : uploading && pct !== void 0 ? `${pct}%${size !== void 0 ? ` · ${formatBytes(size, locale)}` : ""}` : size !== void 0 ? formatBytes(size, locale) : ext ?? ""
20879
+ })] })] }) : uploading && pct !== void 0 ? `${pct}%${size !== void 0 ? ` · ${formatSize(size)}` : ""}` : size !== void 0 ? formatSize(size) : ext ?? ""
20748
20880
  })]
20749
20881
  }),
20750
20882
  onRemove && /* @__PURE__ */ jsx("button", {
@@ -20776,7 +20908,7 @@ const doc$95 = {
20776
20908
  name: "Thumbnail",
20777
20909
  group: "Display",
20778
20910
  status: "beta",
20779
- description: "File or image preview tile: image or file-type icon with extension tag, name and size caption, upload progress (progressbar + shimmer that holds still under reduced motion), error state with retry, and a remove button. ThumbnailList lays tiles out as a wrapping list. Built-in labels follow I18nProvider (en/es); caller overrides take precedence. See the TransferList catalog defaults example for a live Spanish preview of this component.",
20911
+ description: "File or image preview tile: image or file-type icon with extension tag, name and size caption, upload progress (progressbar + shimmer that holds still under reduced motion), error state with retry, and a remove button. ThumbnailList lays tiles out as a wrapping list. Sizes use the shared formatBytes export (decimal SI by default); ThumbnailSizes demonstrates localized labels, IEC base, bits, display widths and precision. Built-in labels and sizes follow I18nProvider (en/es); caller overrides take precedence. See the TransferList catalog defaults example for a live Spanish preview of this component.",
20780
20912
  pattern: "figure",
20781
20913
  keyboard: [["Tab", "Moves to the remove button (and retry, in the error state) of each tile"], ["Enter / Space", "Activates remove or retry"]],
20782
20914
  tokens: [
@@ -21144,13 +21276,14 @@ function useToast() {
21144
21276
  * hovering or focusing it pauses auto-dismiss.
21145
21277
  */
21146
21278
  function Toaster({ className, closeLabel: closeLabelProp, container }) {
21279
+ const portalContainer = usePortalContainer();
21147
21280
  const { t } = useI18n();
21148
21281
  const closeLabel = closeLabelProp ?? t("toast.dismiss");
21149
21282
  const dir = usePortalDir();
21150
21283
  const { toasts } = Toast.useToastManager();
21151
21284
  const s = toastVariants();
21152
21285
  return /* @__PURE__ */ jsx(Toast.Portal, {
21153
- container,
21286
+ container: container ?? portalContainer,
21154
21287
  children: /* @__PURE__ */ jsx(Toast.Viewport, {
21155
21288
  dir,
21156
21289
  className: cn(s.viewport(), className),
@@ -21859,6 +21992,7 @@ const centre = { getBoundingClientRect: () => {
21859
21992
  * outline (no overlay).
21860
21993
  */
21861
21994
  function Tour({ steps, open, defaultOpen = false, onOpenChange, step, defaultStep = 0, onStepChange, onFinish, highlight = true, labels: labelsProp, className }) {
21995
+ const portalContainer = usePortalContainer();
21862
21996
  const { t } = useI18n();
21863
21997
  const labels = {
21864
21998
  skip: t("tour.skip"),
@@ -21942,69 +22076,72 @@ function Tour({ steps, open, defaultOpen = false, onOpenChange, step, defaultSte
21942
22076
  if (details.reason === "outside-press" || details.reason === "focus-out") return;
21943
22077
  end(false);
21944
22078
  },
21945
- children: /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(Popover$1.Positioner, {
21946
- className: s.positioner(),
21947
- anchor: () => resolve(target) ?? centre,
21948
- side: current?.side ?? "bottom",
21949
- align: current?.align ?? "center",
21950
- sideOffset: 14,
21951
- collisionPadding: 12,
21952
- children: /* @__PURE__ */ jsxs(Popover$1.Popup, {
21953
- className: cn(s.popup(), className),
21954
- initialFocus: primaryRef,
21955
- onKeyDown,
21956
- children: [
21957
- /* @__PURE__ */ jsx(Popover$1.Arrow, { className: s.arrow() }),
21958
- /* @__PURE__ */ jsx("p", {
21959
- className: s.counter(),
21960
- children: labels.counter(index, steps.length)
21961
- }),
21962
- /* @__PURE__ */ jsx(Popover$1.Title, {
21963
- className: s.title(),
21964
- children: current?.title
21965
- }),
21966
- current?.content != null && /* @__PURE__ */ jsx(Popover$1.Description, {
21967
- className: s.description(),
21968
- children: current.content
21969
- }),
21970
- /* @__PURE__ */ jsx("button", {
21971
- type: "button",
21972
- "aria-label": labels.close,
21973
- className: s.close(),
21974
- onClick: () => end(false),
21975
- children: /* @__PURE__ */ jsx(X, {
21976
- size: 14,
21977
- "aria-hidden": true
21978
- })
21979
- }),
21980
- /* @__PURE__ */ jsxs("div", {
21981
- className: s.footer(),
21982
- children: [
21983
- !last && /* @__PURE__ */ jsx(Button, {
21984
- size: "sm",
21985
- variant: "ghost",
21986
- className: s.skip(),
21987
- onClick: () => end(false),
21988
- children: labels.skip
21989
- }),
21990
- last && /* @__PURE__ */ jsx("span", { className: s.skip() }),
21991
- index > 0 && /* @__PURE__ */ jsx(Button, {
21992
- size: "sm",
21993
- variant: "secondary",
21994
- onClick: () => goTo(index - 1),
21995
- children: labels.back
21996
- }),
21997
- /* @__PURE__ */ jsx(Button, {
21998
- ref: primaryRef,
21999
- size: "sm",
22000
- onClick: () => last ? end(true) : goTo(index + 1),
22001
- children: last ? labels.finish : labels.next
22079
+ children: /* @__PURE__ */ jsx(Popover$1.Portal, {
22080
+ container: portalContainer,
22081
+ children: /* @__PURE__ */ jsx(Popover$1.Positioner, {
22082
+ className: s.positioner(),
22083
+ anchor: () => resolve(target) ?? centre,
22084
+ side: current?.side ?? "bottom",
22085
+ align: current?.align ?? "center",
22086
+ sideOffset: 14,
22087
+ collisionPadding: 12,
22088
+ children: /* @__PURE__ */ jsxs(Popover$1.Popup, {
22089
+ className: cn(s.popup(), className),
22090
+ initialFocus: primaryRef,
22091
+ onKeyDown,
22092
+ children: [
22093
+ /* @__PURE__ */ jsx(Popover$1.Arrow, { className: s.arrow() }),
22094
+ /* @__PURE__ */ jsx("p", {
22095
+ className: s.counter(),
22096
+ children: labels.counter(index, steps.length)
22097
+ }),
22098
+ /* @__PURE__ */ jsx(Popover$1.Title, {
22099
+ className: s.title(),
22100
+ children: current?.title
22101
+ }),
22102
+ current?.content != null && /* @__PURE__ */ jsx(Popover$1.Description, {
22103
+ className: s.description(),
22104
+ children: current.content
22105
+ }),
22106
+ /* @__PURE__ */ jsx("button", {
22107
+ type: "button",
22108
+ "aria-label": labels.close,
22109
+ className: s.close(),
22110
+ onClick: () => end(false),
22111
+ children: /* @__PURE__ */ jsx(X, {
22112
+ size: 14,
22113
+ "aria-hidden": true
22002
22114
  })
22003
- ]
22004
- })
22005
- ]
22115
+ }),
22116
+ /* @__PURE__ */ jsxs("div", {
22117
+ className: s.footer(),
22118
+ children: [
22119
+ !last && /* @__PURE__ */ jsx(Button, {
22120
+ size: "sm",
22121
+ variant: "ghost",
22122
+ className: s.skip(),
22123
+ onClick: () => end(false),
22124
+ children: labels.skip
22125
+ }),
22126
+ last && /* @__PURE__ */ jsx("span", { className: s.skip() }),
22127
+ index > 0 && /* @__PURE__ */ jsx(Button, {
22128
+ size: "sm",
22129
+ variant: "secondary",
22130
+ onClick: () => goTo(index - 1),
22131
+ children: labels.back
22132
+ }),
22133
+ /* @__PURE__ */ jsx(Button, {
22134
+ ref: primaryRef,
22135
+ size: "sm",
22136
+ onClick: () => last ? end(true) : goTo(index + 1),
22137
+ children: last ? labels.finish : labels.next
22138
+ })
22139
+ ]
22140
+ })
22141
+ ]
22142
+ })
22006
22143
  })
22007
- }) })
22144
+ })
22008
22145
  }), isOpen && highlight && typeof document !== "undefined" && createPortal(/* @__PURE__ */ jsx("div", {
22009
22146
  ref: ringRef,
22010
22147
  "aria-hidden": true,
@@ -23026,6 +23163,7 @@ const CREATE_ID = "__create-workspace__";
23026
23163
  const s$1 = workspaceSwitcherVariants();
23027
23164
  /** Searchable variant of WorkspaceSwitcher: a combobox with the input inside its popup. */
23028
23165
  function WorkspaceSearch({ className, workspaces, current, onSelect, onCreate, createLabel, label, searchPlaceholder: searchPlaceholderProp, emptyText: emptyTextProp }) {
23166
+ const portalContainer = usePortalContainer();
23029
23167
  const { t, locale } = useI18n();
23030
23168
  const searchPlaceholder = searchPlaceholderProp ?? t("workspace.search");
23031
23169
  const emptyText = emptyTextProp ?? t("workspace.empty");
@@ -23055,67 +23193,70 @@ function WorkspaceSearch({ className, workspaces, current, onSelect, onCreate, c
23055
23193
  "aria-label": triggerLabel(current, label),
23056
23194
  className: cn(s$1.trigger(), className),
23057
23195
  children: /* @__PURE__ */ jsx(WorkspaceTriggerContent, { workspace: current })
23058
- }), /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
23059
- dir,
23060
- className: "z-50 outline-none",
23061
- align: "start",
23062
- sideOffset: 8,
23063
- children: /* @__PURE__ */ jsxs(Combobox$1.Popup, {
23064
- className: s$1.searchPopup(),
23065
- "aria-label": label,
23066
- children: [
23067
- /* @__PURE__ */ jsxs("div", {
23068
- className: s$1.searchField(),
23069
- children: [/* @__PURE__ */ jsx(Search, {
23070
- size: 15,
23071
- "aria-hidden": true,
23072
- className: s$1.searchIcon()
23073
- }), /* @__PURE__ */ jsx(Combobox$1.Input, {
23074
- "aria-label": searchPlaceholder.replace(/…$/, ""),
23075
- placeholder: searchPlaceholder,
23076
- className: s$1.searchInput()
23077
- })]
23078
- }),
23079
- /* @__PURE__ */ jsx(Combobox$1.Empty, {
23080
- className: s$1.searchEmpty(),
23081
- children: emptyText
23082
- }),
23083
- /* @__PURE__ */ jsx(Combobox$1.List, {
23084
- className: s$1.searchList(),
23085
- children: (w) => w.id === CREATE_ID ? /* @__PURE__ */ jsx(Combobox$1.Item, {
23086
- value: w,
23087
- className: s$1.searchItem(),
23088
- children: /* @__PURE__ */ jsxs("span", {
23089
- className: s$1.optionBody(),
23090
- children: [/* @__PURE__ */ jsx("span", {
23091
- className: s$1.createIcon(),
23092
- children: /* @__PURE__ */ jsx(Plus, {
23196
+ }), /* @__PURE__ */ jsx(Combobox$1.Portal, {
23197
+ container: portalContainer,
23198
+ children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
23199
+ dir,
23200
+ className: "z-50 outline-none",
23201
+ align: "start",
23202
+ sideOffset: 8,
23203
+ children: /* @__PURE__ */ jsxs(Combobox$1.Popup, {
23204
+ className: s$1.searchPopup(),
23205
+ "aria-label": label,
23206
+ children: [
23207
+ /* @__PURE__ */ jsxs("div", {
23208
+ className: s$1.searchField(),
23209
+ children: [/* @__PURE__ */ jsx(Search, {
23210
+ size: 15,
23211
+ "aria-hidden": true,
23212
+ className: s$1.searchIcon()
23213
+ }), /* @__PURE__ */ jsx(Combobox$1.Input, {
23214
+ "aria-label": searchPlaceholder.replace(/…$/, ""),
23215
+ placeholder: searchPlaceholder,
23216
+ className: s$1.searchInput()
23217
+ })]
23218
+ }),
23219
+ /* @__PURE__ */ jsx(Combobox$1.Empty, {
23220
+ className: s$1.searchEmpty(),
23221
+ children: emptyText
23222
+ }),
23223
+ /* @__PURE__ */ jsx(Combobox$1.List, {
23224
+ className: s$1.searchList(),
23225
+ children: (w) => w.id === CREATE_ID ? /* @__PURE__ */ jsx(Combobox$1.Item, {
23226
+ value: w,
23227
+ className: s$1.searchItem(),
23228
+ children: /* @__PURE__ */ jsxs("span", {
23229
+ className: s$1.optionBody(),
23230
+ children: [/* @__PURE__ */ jsx("span", {
23231
+ className: s$1.createIcon(),
23232
+ children: /* @__PURE__ */ jsx(Plus, {
23233
+ size: 15,
23234
+ "aria-hidden": true
23235
+ })
23236
+ }), /* @__PURE__ */ jsx("span", {
23237
+ className: s$1.optionName(),
23238
+ children: w.name
23239
+ })]
23240
+ })
23241
+ }, w.id) : /* @__PURE__ */ jsxs(Combobox$1.Item, {
23242
+ value: w,
23243
+ className: s$1.searchItem(),
23244
+ children: [/* @__PURE__ */ jsx(WorkspaceOptionBody, {
23245
+ workspace: w,
23246
+ current: w.id === current?.id
23247
+ }), /* @__PURE__ */ jsx(Combobox$1.ItemIndicator, {
23248
+ className: s$1.searchIndicator(),
23249
+ children: /* @__PURE__ */ jsx(Check, {
23093
23250
  size: 15,
23094
23251
  "aria-hidden": true
23095
23252
  })
23096
- }), /* @__PURE__ */ jsx("span", {
23097
- className: s$1.optionName(),
23098
- children: w.name
23099
23253
  })]
23100
- })
23101
- }, w.id) : /* @__PURE__ */ jsxs(Combobox$1.Item, {
23102
- value: w,
23103
- className: s$1.searchItem(),
23104
- children: [/* @__PURE__ */ jsx(WorkspaceOptionBody, {
23105
- workspace: w,
23106
- current: w.id === current?.id
23107
- }), /* @__PURE__ */ jsx(Combobox$1.ItemIndicator, {
23108
- className: s$1.searchIndicator(),
23109
- children: /* @__PURE__ */ jsx(Check, {
23110
- size: 15,
23111
- "aria-hidden": true
23112
- })
23113
- })]
23114
- }, w.id)
23115
- })
23116
- ]
23254
+ }, w.id)
23255
+ })
23256
+ ]
23257
+ })
23117
23258
  })
23118
- }) })]
23259
+ })]
23119
23260
  });
23120
23261
  }
23121
23262
  //#endregion
@@ -25797,6 +25938,6 @@ const doc$59 = {
25797
25938
  ]
25798
25939
  };
25799
25940
  //#endregion
25800
- export { ANSI_BG_CLASS, ANSI_TEXT_CLASS, Accordion, AccordionItem, AccordionPanel, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AspectRatio, AuthLayout, Avatar, AvatarGroup, Badge, Blockquote, BottomSheet, BottomSheetClose, BottomSheetContent, BottomSheetTrigger, Breadcrumbs, Button, COL_SPAN, COL_SPAN_FULL, Calendar, CanvasLayout, Card, CardAction, CardBody, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, Center, Checkbox, CheckboxGroup, ClickableCard, Code, CodeBlock, Collapsible, CollapsiblePanel, CollapsibleTrigger, Combobox, ComboboxChipsInput, ComboboxContent, ComboboxInput, ComboboxItem, CommandPalette, CommandPaletteTrigger, ContextMenu, ContextMenuContent, ContextMenuTrigger, CopyButton, CursorPagination, DEFAULT_DATE_RANGE_PRESETS, DEFAULT_STATUSES, DEFAULT_STRENGTH_LABELS, DEFAULT_TIME_RANGE_PRESETS, DateField, DatePicker, DateRangeField, DateRangeInput, DateRangePicker, DateTimeRangePicker, DensityProvider, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiffViewer, DocsLayout, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, EMPTY_STATE_ICON_SIZE, ENV_KEY_PATTERN, EmptyState, Field, FieldDescription, FieldError, FieldItem, FieldLabel, Fieldset, FieldsetDescription, FieldsetLegend, GAP_CLASSES, GRID_COLS, Grid, GridItem, HStack, Heading, HoverCard, HoverCardContent, HoverCardTrigger, I18nProvider, INPUT_ICON_SIZE, IconButton, InfoTip, Input, InputKbd, InspectorLayout, InspectorToggle, JsonViewer, KEY_NAMES, KanbanBoard, Kbd, KbdCombo, KeyValueEditor, Lightbox, Link, LinkProvider, ListInput, LiveAnnouncer, Logo, MASK_CHAR, MegaMenu, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSub, MenuSubContent, MenuSubTrigger, MenuTrigger, Meter, MobileNav, MoreMenu, MultiSelect, NUMBER_INPUT_ICON_SIZE, NavList, NotificationsPopover, NumberInput, OtpInput, Outline, OverflowList, PASSWORD_SEGMENT_FILL, POWER_SEARCH_OPERATORS, Page, PageBreak, Pagination, PaginationCompact, PasswordInput, PeriodCalendar, PeriodPicker, PermissionMatrix, Popover, PopoverClose, PopoverContent, PopoverDescription, PopoverTitle, PopoverTrigger, PowerSearch, PowerSearchChip, PrintLayout, Progress, QUERY_OPERATORS, QueryBuilder, QueryValueEditor, Radio, RadioGroup, ResizablePanel, ResizablePanelGroup, ResizeHandle, ScheduleInput, ScrollArea, SecretField, Section, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectableCard, SelectableCardGroup, Separator, SettingsLayout, SidebarLayout, SimpleSelect, SimpleTooltip, Skeleton, SkipLink, Slider, Sparkline, Spinner, SplitButton, SplitLayout, Stack, StackedLayout, StatusDot, StatusLayout, StatusTag, Stepper, Switch, THEME_OPTIONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsIndicator, TabsList, TabsPanel, TabsTab, Terminal, Text, Textarea, ThemeCycleButton, ThemeProvider, ThemeSwitcher, Thumbnail, ThumbnailList, TimePicker, Timer, Timestamp, ToastProvider, Toaster, Toggle, ToggleGroup, Token, TokenInput, TokenInputChip, Toolbar, ToolbarButton, ToolbarCenter, ToolbarEnd, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarSeparator, ToolbarStart, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, TransferList, TransferListPane, TreeList, UserMenu, VStack, VirtualList, VisuallyHidden, WizardLayout, WorkspaceSwitcher, doc as accordionDoc, accordionVariants, doc$1 as alertDialogDoc, alertDialogVariants, doc$2 as alertDoc, alertVariants, ansiClassName, doc$3 as aspectRatioDoc, aspectRatioVariants, doc$4 as authLayoutDoc, authLayoutVariants, doc$5 as avatarDoc, avatarVariants, doc$6 as badgeDoc, badgeVariants, doc$7 as blockquoteDoc, blockquoteVariants, doc$8 as bottomSheetDoc, bottomSheetVariants, doc$9 as breadcrumbsDoc, breadcrumbsVariants, builtInMessages, doc$10 as buttonDoc, buttonVariants, doc$11 as calendarDoc, calendarVariants, doc$12 as canvasLayoutDoc, canvasLayoutVariants, doc$13 as cardDoc, cardVariants, doc$14 as carouselDoc, carouselVariants, catalogs, centerVariants, doc$15 as checkboxDoc, checkboxVariants, doc$16 as choiceCardDoc, clickableCardVariants, cn, doc$17 as codeBlockDoc, codeBlockVariants, codeVariants, coerceValue as coercePowerSearchValue, doc$18 as collapsibleDoc, collapsibleVariants, doc$19 as comboboxDoc, comboboxVariants, doc$20 as commandPaletteDoc, commandPaletteVariants, computeOffsets, doc$21 as contextMenuDoc, contextMenuVariants, doc$22 as copyButtonDoc, copyButtonVariants, copyToClipboard, createFormatters, createKeyValueRow, createListInputRow, createQueryCondition, createQueryGroup, cronErrorMessage, cronFromSchedule, doc$23 as cursorPaginationDoc, cursorPaginationVariants, doc$24 as dateFieldDoc, dateFieldVariants, doc$25 as datePickerDoc, datePickerVariants, doc$26 as dateTimeRangePickerDoc, dateTimeRangePickerVariants, describeCron, describeTrend, doc$27 as dialogDoc, dialogVariants, diffJson, diffLines, diffStats, doc$28 as diffViewerDoc, diffViewerVariants, diffWords, doc$29 as docsLayoutDoc, docsLayoutVariants, doc$30 as drawerDoc, drawerVariants, emptyPowerSearchQuery, doc$31 as emptyStateDoc, emptyStateVariants, en, es, evaluateQuery, falconePreset, doc$32 as fieldDoc, fieldVariants, fileKind, filterCommandGroups, flattenVisible, foldText, formatBytes, formatClock, formatCompact, formatDateRange, formatListInputPairs, formatPowerSearch, formatRelative, formatTimeOfDay, getDefaultPeriodPresets, getInitials, getMeterLevel, getPageRange, gntikPreset, doc$33 as gridDoc, gridVariants, headingVariants, doc$34 as hoverCardDoc, hoverCardVariants, doc$35 as infoTipDoc, infoTipVariants, doc$36 as inputDoc, inputVariants, doc$37 as inspectorLayoutDoc, inspectorLayoutVariants, interpolate, isConditionComplete, isNavItemCurrent, isSameTimeRange, isSupportedLanguage, joinPath, jsonType, jsonTypeClass, doc$38 as jsonViewerDoc, jsonViewerVariants, doc$39 as kanbanBoardDoc, kanbanBoardVariants, doc$40 as kbdDoc, kbdVariants, doc$41 as keyValueEditorDoc, keyValueEditorVariants, doc$42 as lightboxDoc, lightboxVariants, doc$43 as linkDoc, linkVariants, doc$44 as listInputDoc, listInputVariants, doc$45 as liveAnnouncerDoc, liveAnnouncerVariants, localeDirection, localeHourCycle, maskSecret, matchAncestors, matchPowerSearch, matchRanges, matchText, measureJsonDisplay, doc$46 as megaMenuDoc, megaMenuNavItems, megaMenuVariants, doc$47 as menuDoc, menuVariants, mergeEnvRows, doc$48 as meterDoc, meterVariants, doc$49 as mobileNavDoc, mobileNavVariants, moveKanbanCard, doc$50 as multiSelectDoc, multiSelectVariants, musematicPreset, doc$51 as navListDoc, navListVariants, nextRuns, nextSortDirection, doc$52 as notificationsPopoverDoc, notificationsPopoverVariants, doc$53 as numberInputDoc, numberInputVariants, operatorArity, operatorsFor, doc$54 as otpInputDoc, otpInputVariants, outlineVariants, doc$55 as overflowListDoc, overflowListVariants, doc$56 as pageDoc, pageVariants, doc$57 as paginationDoc, paginationVariants, parseAnsi, parseCron, parseEnv, parseListInputPairs, parsePowerSearch, parsePowerSearchFilter, parseTimeOfDay, doc$58 as passwordInputDoc, passwordInputVariants, doc$59 as periodPickerDoc, periodPickerVariants, doc$60 as permissionMatrixDoc, permissionMatrixVariants, doc$61 as popoverDoc, popoverVariants, doc$62 as powerSearchDoc, defaultOperatorLabels as powerSearchOperatorLabels, operatorsFor$1 as powerSearchOperatorsFor, powerSearchVariants, presets, previewSortable, doc$63 as printLayoutDoc, printLayoutVariants, doc$64 as progressDoc, progressVariants, doc$65 as queryBuilderDoc, queryBuilderVariants, queryToString, doc$66 as radioGroupDoc, radioGroupVariants, relativeTimeRangeLabel, doc$67 as resizableDoc, resizableVariants, resolveStepStatus, resolveTimeRange, rowAt, scheduleFromCron, doc$68 as scheduleInputDoc, scheduleInputVariants, scoreCommand, scorePassword, doc$69 as scrollAreaDoc, scrollAreaVariants, doc$70 as secretFieldDoc, secretFieldVariants, doc$71 as sectionDoc, sectionVariants, doc$72 as selectDoc, selectVariants, selectableCardVariants, doc$73 as separatorDoc, separatorVariants, serializeEnv, doc$74 as settingsLayoutDoc, settingsLayoutVariants, doc$75 as sidebarLayoutDoc, sidebarLayoutVariants, doc$76 as skeletonDoc, skeletonVariants, skipLinkVariants, doc$77 as sliderDoc, sliderVariants, doc$78 as sparklineDoc, sparklineVariants, doc$79 as spinnerDoc, doc$80 as splitButtonDoc, splitButtonVariants, doc$81 as splitLayoutDoc, splitLayoutVariants, splitLines, stableStringify, doc$82 as stackDoc, stackVariants, doc$83 as stackedLayoutDoc, stackedLayoutVariants, doc$84 as statusDotDoc, statusDotVariants, doc$85 as statusLayoutDoc, statusLayoutVariants, doc$86 as statusTagDoc, statusTagVariants, doc$87 as stepperDoc, stepperVariants, stripAnsi, doc$88 as switchDoc, switchVariants, doc$89 as tableDoc, tableVariants, doc$90 as tabsDoc, tabsVariants, doc$91 as terminalDoc, terminalVariants, doc$92 as textDoc, textVariants, doc$93 as textareaDoc, textareaVariants, themeScript, doc$94 as themeSwitcherDoc, themeSwitcherVariants, doc$95 as thumbnailDoc, thumbnailVariants, doc$96 as timePickerDoc, timePickerVariants, doc$97 as timerDoc, timerVariants, doc$98 as timestampDoc, timestampVariants, toDate, toIsoDuration, toJsonText, doc$99 as toastDoc, toastVariants, doc$100 as toggleGroupDoc, toggleGroupVariants, toggleVariants, tokenClass, doc$101 as tokenDoc, doc$102 as tokenInputDoc, tokenInputVariants, tokenVariants, tokenize, tokenizeLines, doc$103 as toolbarDoc, toolbarVariants, doc$104 as tooltipDoc, tooltipVariants, doc$105 as tourDoc, tourVariants, doc$106 as transferListDoc, transferListVariants, doc$107 as treeListDoc, treeListVariants, tv, useAnnounce, useAsyncOptions, useCommandPaletteShortcut, useDensity, useFitCount, useHasLiveAnnouncer, useI18n, useInspectorLayout, useLinkComponent, useOptionalI18n, usePortalDir, useSidebarLayout, useSortable, useTheme, useThemeOptions, useToast, useTreeList, useVirtualWindow, doc$108 as userMenuDoc, userMenuVariants, validateKeyValueRows, doc$109 as virtualListDoc, virtualListVariants, doc$110 as visuallyHiddenDoc, visuallyHiddenVariants, doc$111 as wizardLayoutDoc, wizardLayoutVariants, doc$112 as workspaceSwitcherDoc, workspaceSwitcherVariants };
25941
+ export { ANSI_BG_CLASS, ANSI_TEXT_CLASS, Accordion, AccordionItem, AccordionPanel, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AspectRatio, AuthLayout, Avatar, AvatarGroup, Badge, Blockquote, BottomSheet, BottomSheetClose, BottomSheetContent, BottomSheetTrigger, Breadcrumbs, Button, COL_SPAN, COL_SPAN_FULL, Calendar, CanvasLayout, Card, CardAction, CardBody, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, Center, Checkbox, CheckboxGroup, ClickableCard, Code, CodeBlock, Collapsible, CollapsiblePanel, CollapsibleTrigger, Combobox, ComboboxChipsInput, ComboboxContent, ComboboxInput, ComboboxItem, CommandPalette, CommandPaletteTrigger, ContextMenu, ContextMenuContent, ContextMenuTrigger, CopyButton, CursorPagination, DEFAULT_DATE_RANGE_PRESETS, DEFAULT_STATUSES, DEFAULT_STRENGTH_LABELS, DEFAULT_TIME_RANGE_PRESETS, DateField, DatePicker, DateRangeField, DateRangeInput, DateRangePicker, DateTimeRangePicker, DensityProvider, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiffViewer, DocsLayout, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, EMPTY_STATE_ICON_SIZE, ENV_KEY_PATTERN, EmptyState, Field, FieldDescription, FieldError, FieldItem, FieldLabel, Fieldset, FieldsetDescription, FieldsetLegend, GAP_CLASSES, GRID_COLS, Grid, GridItem, HStack, Heading, HoverCard, HoverCardContent, HoverCardTrigger, I18nProvider, INPUT_ICON_SIZE, IconButton, InfoTip, Input, InputKbd, InspectorLayout, InspectorToggle, JsonViewer, KEY_NAMES, KanbanBoard, Kbd, KbdCombo, KeyValueEditor, Lightbox, Link, LinkProvider, ListInput, LiveAnnouncer, Logo, MASK_CHAR, MegaMenu, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSub, MenuSubContent, MenuSubTrigger, MenuTrigger, Meter, MobileNav, MoreMenu, MultiSelect, NUMBER_INPUT_ICON_SIZE, NavList, NotificationsPopover, NumberInput, OtpInput, Outline, OverflowList, PASSWORD_SEGMENT_FILL, POWER_SEARCH_OPERATORS, Page, PageBreak, Pagination, PaginationCompact, PasswordInput, PeriodCalendar, PeriodPicker, PermissionMatrix, Popover, PopoverClose, PopoverContent, PopoverDescription, PopoverTitle, PopoverTrigger, PowerSearch, PowerSearchChip, PrintLayout, Progress, QUERY_OPERATORS, QueryBuilder, QueryValueEditor, Radio, RadioGroup, ResizablePanel, ResizablePanelGroup, ResizeHandle, ScheduleInput, ScrollArea, SecretField, Section, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectableCard, SelectableCardGroup, Separator, SettingsLayout, SidebarLayout, SimpleSelect, SimpleTooltip, Skeleton, SkipLink, Slider, Sparkline, Spinner, SplitButton, SplitLayout, Stack, StackedLayout, StatusDot, StatusLayout, StatusTag, Stepper, Switch, THEME_OPTIONS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsIndicator, TabsList, TabsPanel, TabsTab, Terminal, Text, Textarea, ThemeCycleButton, ThemeProvider, ThemeScope, ThemeSwitcher, Thumbnail, ThumbnailList, TimePicker, Timer, Timestamp, ToastProvider, Toaster, Toggle, ToggleGroup, Token, TokenInput, TokenInputChip, Toolbar, ToolbarButton, ToolbarCenter, ToolbarEnd, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarSeparator, ToolbarStart, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, TransferList, TransferListPane, TreeList, UserMenu, VStack, VirtualList, VisuallyHidden, WizardLayout, WorkspaceSwitcher, doc as accordionDoc, accordionVariants, doc$1 as alertDialogDoc, alertDialogVariants, doc$2 as alertDoc, alertVariants, ansiClassName, doc$3 as aspectRatioDoc, aspectRatioVariants, doc$4 as authLayoutDoc, authLayoutVariants, doc$5 as avatarDoc, avatarVariants, doc$6 as badgeDoc, badgeVariants, doc$7 as blockquoteDoc, blockquoteVariants, doc$8 as bottomSheetDoc, bottomSheetVariants, doc$9 as breadcrumbsDoc, breadcrumbsVariants, builtInMessages, doc$10 as buttonDoc, buttonVariants, doc$11 as calendarDoc, calendarVariants, doc$12 as canvasLayoutDoc, canvasLayoutVariants, doc$13 as cardDoc, cardVariants, doc$14 as carouselDoc, carouselVariants, catalogs, centerVariants, doc$15 as checkboxDoc, checkboxVariants, doc$16 as choiceCardDoc, clickableCardVariants, cn, doc$17 as codeBlockDoc, codeBlockVariants, codeVariants, coerceValue as coercePowerSearchValue, doc$18 as collapsibleDoc, collapsibleVariants, doc$19 as comboboxDoc, comboboxVariants, doc$20 as commandPaletteDoc, commandPaletteVariants, computeOffsets, doc$21 as contextMenuDoc, contextMenuVariants, doc$22 as copyButtonDoc, copyButtonVariants, copyToClipboard, createFormatters, createKeyValueRow, createListInputRow, createQueryCondition, createQueryGroup, cronErrorMessage, cronFromSchedule, doc$23 as cursorPaginationDoc, cursorPaginationVariants, doc$24 as dateFieldDoc, dateFieldVariants, doc$25 as datePickerDoc, datePickerVariants, doc$26 as dateTimeRangePickerDoc, dateTimeRangePickerVariants, describeCron, describeTrend, doc$27 as dialogDoc, dialogVariants, diffJson, diffLines, diffStats, doc$28 as diffViewerDoc, diffViewerVariants, diffWords, doc$29 as docsLayoutDoc, docsLayoutVariants, doc$30 as drawerDoc, drawerVariants, emptyPowerSearchQuery, doc$31 as emptyStateDoc, emptyStateVariants, en, es, evaluateQuery, falconePreset, doc$32 as fieldDoc, fieldVariants, fileKind, filterCommandGroups, flattenVisible, foldText, formatBytes, formatClock, formatCompact, formatDateRange, formatListInputPairs, formatPowerSearch, formatRelative, formatTimeOfDay, getDefaultPeriodPresets, getInitials, getMeterLevel, getOs, getPageRange, gntikPreset, doc$33 as gridDoc, gridVariants, headingVariants, doc$34 as hoverCardDoc, hoverCardVariants, doc$35 as infoTipDoc, infoTipVariants, doc$36 as inputDoc, inputVariants, doc$37 as inspectorLayoutDoc, inspectorLayoutVariants, interpolate, isConditionComplete, isConditionValid, isNavItemCurrent, isSameTimeRange, isSupportedLanguage, joinPath, jsonType, jsonTypeClass, doc$38 as jsonViewerDoc, jsonViewerVariants, doc$39 as kanbanBoardDoc, kanbanBoardVariants, doc$40 as kbdDoc, kbdVariants, doc$41 as keyValueEditorDoc, keyValueEditorVariants, doc$42 as lightboxDoc, lightboxVariants, doc$43 as linkDoc, linkVariants, doc$44 as listInputDoc, listInputVariants, doc$45 as liveAnnouncerDoc, liveAnnouncerVariants, localeDirection, localeHourCycle, localeWeekStart, maskSecret, matchAncestors, matchPowerSearch, matchRanges, matchText, measureJsonDisplay, doc$46 as megaMenuDoc, megaMenuNavItems, megaMenuVariants, doc$47 as menuDoc, menuVariants, mergeEnvRows, doc$48 as meterDoc, meterVariants, doc$49 as mobileNavDoc, mobileNavVariants, moveKanbanCard, doc$50 as multiSelectDoc, multiSelectVariants, musematicPreset, doc$51 as navListDoc, navListVariants, nextRuns, nextSortDirection, doc$52 as notificationsPopoverDoc, notificationsPopoverVariants, doc$53 as numberInputDoc, numberInputVariants, operatorArity, operatorsFor, doc$54 as otpInputDoc, otpInputVariants, outlineVariants, doc$55 as overflowListDoc, overflowListVariants, doc$56 as pageDoc, pageVariants, doc$57 as paginationDoc, paginationVariants, parseAnsi, parseCron, parseEnv, parseListInputPairs, parsePowerSearch, parsePowerSearchFilter, parseTimeOfDay, doc$58 as passwordInputDoc, passwordInputVariants, doc$59 as periodPickerDoc, periodPickerVariants, doc$60 as permissionMatrixDoc, permissionMatrixVariants, doc$61 as popoverDoc, popoverVariants, doc$62 as powerSearchDoc, defaultOperatorLabels as powerSearchOperatorLabels, operatorsFor$1 as powerSearchOperatorsFor, powerSearchVariants, presets, previewSortable, doc$63 as printLayoutDoc, printLayoutVariants, doc$64 as progressDoc, progressVariants, doc$65 as queryBuilderDoc, queryBuilderVariants, queryToString, doc$66 as radioGroupDoc, radioGroupVariants, relativeTimeRangeLabel, doc$67 as resizableDoc, resizableVariants, resolveStepStatus, resolveTimeRange, rowAt, scheduleFromCron, doc$68 as scheduleInputDoc, scheduleInputVariants, scoreCommand, scorePassword, doc$69 as scrollAreaDoc, scrollAreaVariants, doc$70 as secretFieldDoc, secretFieldVariants, doc$71 as sectionDoc, sectionVariants, doc$72 as selectDoc, selectVariants, selectableCardVariants, doc$73 as separatorDoc, separatorVariants, serializeEnv, doc$74 as settingsLayoutDoc, settingsLayoutVariants, doc$75 as sidebarLayoutDoc, sidebarLayoutVariants, doc$76 as skeletonDoc, skeletonVariants, skipLinkVariants, doc$77 as sliderDoc, sliderVariants, doc$78 as sparklineDoc, sparklineVariants, doc$79 as spinnerDoc, doc$80 as splitButtonDoc, splitButtonVariants, doc$81 as splitLayoutDoc, splitLayoutVariants, splitLines, stableStringify, doc$82 as stackDoc, stackVariants, doc$83 as stackedLayoutDoc, stackedLayoutVariants, doc$84 as statusDotDoc, statusDotVariants, doc$85 as statusLayoutDoc, statusLayoutVariants, doc$86 as statusTagDoc, statusTagVariants, doc$87 as stepperDoc, stepperVariants, stripAnsi, doc$88 as switchDoc, switchVariants, doc$89 as tableDoc, tableVariants, doc$90 as tabsDoc, tabsVariants, doc$91 as terminalDoc, terminalVariants, doc$92 as textDoc, textVariants, doc$93 as textareaDoc, textareaVariants, themeScript, doc$94 as themeSwitcherDoc, themeSwitcherVariants, doc$95 as thumbnailDoc, thumbnailVariants, doc$96 as timePickerDoc, timePickerVariants, doc$97 as timerDoc, timerVariants, doc$98 as timestampDoc, timestampVariants, toDate, toIsoDuration, toJsonText, doc$99 as toastDoc, toastVariants, doc$100 as toggleGroupDoc, toggleGroupVariants, toggleVariants, tokenClass, doc$101 as tokenDoc, doc$102 as tokenInputDoc, tokenInputVariants, tokenVariants, tokenize, tokenizeLines, doc$103 as toolbarDoc, toolbarVariants, doc$104 as tooltipDoc, tooltipVariants, doc$105 as tourDoc, tourVariants, doc$106 as transferListDoc, transferListVariants, doc$107 as treeListDoc, treeListVariants, tv, useAnnounce, useAsyncOptions, useCommandPaletteShortcut, useDensity, useFitCount, useHasLiveAnnouncer, useI18n, useInspectorLayout, useLinkComponent, useOptionalI18n, useOs, usePortalDir, useSidebarLayout, useSortable, useTheme, useThemeOptions, useToast, useTreeList, useVirtualWindow, doc$108 as userMenuDoc, userMenuVariants, validateKeyValueRows, doc$109 as virtualListDoc, virtualListVariants, doc$110 as visuallyHiddenDoc, visuallyHiddenVariants, doc$111 as wizardLayoutDoc, wizardLayoutVariants, doc$112 as workspaceSwitcherDoc, workspaceSwitcherVariants };
25801
25942
 
25802
25943
  //# sourceMappingURL=index.js.map