@rebasepro/ui 0.13.1-canary.gef9608c → 0.14.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/README.md CHANGED
@@ -112,7 +112,9 @@ Tailwind class-string constants for consistent styling:
112
112
 
113
113
  ### Icons
114
114
 
115
- Re-exports ~100 individual lucide-react icon components (e.g. `ArrowRightIcon`, `SearchIcon`, `PlusIcon`), the full `lucideIcons` map, the `Icon` component, `GitHubIcon`, `HandleIcon`, `iconKeys`, and `coolIconKeys`.
115
+ Re-exports ~100 individual lucide-react icon components (e.g. `ArrowRightIcon`, `SearchIcon`, `PlusIcon`), the `Icon` component, `GitHubIcon`, `HandleIcon`, `iconKeys`, and `coolIconKeys`.
116
+
117
+ To render an icon whose name is only known at runtime, use `<LucideIconByName name="ShoppingCart" />` (or `loadLucideIcons()` / `useLucideIcons()` for the map itself). The full `icons` map is still re-exported as `lucideIcons`, but reach for it last: it holds a reference to every icon in the library, so importing it pulls the whole 822 kB set into whatever chunk you import it from, and no tree-shaking helps. Nothing in this package imports it, so it costs nothing unless you ask for it.
116
118
 
117
119
  ## Quick Start
118
120
 
@@ -20,5 +20,10 @@ export type DateTimeFieldProps = {
20
20
  * If not provided, uses the user's local timezone.
21
21
  */
22
22
  timezone?: string;
23
+ /**
24
+ * Names the control when there is no `label` — e.g. when the surrounding
25
+ * form draws the label itself and passes `label={undefined}`.
26
+ */
27
+ "aria-label"?: string;
23
28
  };
24
29
  export declare const DateTimeField: React.FC<DateTimeFieldProps>;
@@ -225,6 +225,16 @@ export type OnVirtualTableColumnResizeParams = {
225
225
  column: VirtualTableColumn;
226
226
  };
227
227
  /**
228
+ * The filter operators this table can express.
229
+ *
230
+ * A deliberate copy of `WhereFilterOp` in `@rebasepro/types`, not an import:
231
+ * `@rebasepro/ui` has no dependency on the core types and is meant to stay
232
+ * usable on its own. The cost is that two published packages export the same
233
+ * name, so the two must be kept identical by hand —
234
+ * `packages/types/test/filter-operators-duplication.test.ts` fails if they
235
+ * diverge, because a table that cannot express an operator the query layer
236
+ * supports is a silent gap: the filter simply is not offered.
237
+ *
228
238
  * @see Table
229
239
  * @group Components
230
240
  */
@@ -241,8 +251,13 @@ export type VirtualTableSort = "asc" | "desc" | undefined;
241
251
  */
242
252
  export type VirtualTableFilterValues<Key extends string> = FilterValues<Key>;
243
253
  /**
244
- * Filter conditions in a `Query.where()` clause are specified using the
245
- * strings `<`, `<=`, `==`, `>=`, `>`, `array-contains`, `in`, and `array-contains-any`.
254
+ * Filter conditions in a `Query.where()` clause, named by {@link WhereFilterOp}.
255
+ *
256
+ * The list is not repeated here: this comment used to name eight operators when
257
+ * the type had sixteen, having been written before the SQL pattern and null
258
+ * checks (`like`, `ilike`, `not-like`, `not-ilike`, `is-null`, `is-not-null`)
259
+ * were added. A prose copy of a union drifts from it silently.
260
+ *
246
261
  * @see Table
247
262
  * @group Models
248
263
  */
@@ -0,0 +1,62 @@
1
+ import React from "react";
2
+ import type { LucideIcon } from "lucide-react";
3
+ /**
4
+ * Rendering a Lucide icon chosen at runtime, without shipping all 1,600 of them
5
+ * on the login screen.
6
+ *
7
+ * `@rebasepro/ui` used to re-export lucide's whole `icons` map:
8
+ *
9
+ * export { icons as lucideIcons } from "lucide-react";
10
+ *
11
+ * That map is an object literal holding a reference to every icon component in
12
+ * the library, so a tree-shaker cannot drop a single one — reaching the map
13
+ * reaches all of them. Two callers reached it, both by name lookup: `getIcon`
14
+ * in `@rebasepro/app` (a collection's `icon: "ShoppingCart"`) and the admin's
15
+ * icon picker. That put 822 kB of SVG components into the entry chunk's static
16
+ * graph, `modulepreload`ed before authentication.
17
+ *
18
+ * The ~130 icons the product's own chrome uses are still plain named imports
19
+ * from `lucide-react`, which tree-shake to just those. Only the by-name lookup
20
+ * goes through here, and it pays for the map once, asynchronously, the first
21
+ * time a runtime-chosen icon is rendered.
22
+ */
23
+ type IconsMap = Record<string, LucideIcon | undefined>;
24
+ /**
25
+ * The full lucide icon map, fetched on first use and cached for the session.
26
+ *
27
+ * Prefer {@link LucideIconByName}. This is here for callers that need to know
28
+ * whether a name resolves, such as the icon picker's grid.
29
+ */
30
+ export declare function loadLucideIcons(): Promise<IconsMap>;
31
+ /** The map if it has already been fetched, otherwise `undefined`. Never fetches. */
32
+ export declare function getLoadedLucideIcons(): IconsMap | undefined;
33
+ /**
34
+ * Subscribe to the icon map.
35
+ *
36
+ * Returns it synchronously once loaded — including on the very first render of
37
+ * every icon after the first one anywhere, which is what stops a page full of
38
+ * icons from each flashing its placeholder.
39
+ */
40
+ export declare function useLucideIcons(): IconsMap | undefined;
41
+ /**
42
+ * The same resolution order the two call sites used against the eager map:
43
+ * exact name, then PascalCase, then `CircleAlert` as the visible "unknown icon".
44
+ */
45
+ export declare function resolveLucideIcon(icons: IconsMap, name: string): LucideIcon | undefined;
46
+ export type LucideIconByNameProps = {
47
+ /**
48
+ * A PascalCase lucide icon name, e.g. `"ShoppingCart"`. Whether a name
49
+ * exists can be answered ahead of the fetch with `iconKeys`, which is a
50
+ * plain string array and costs nothing.
51
+ */
52
+ name: string;
53
+ size?: number;
54
+ className?: string;
55
+ /** Rendered while the icon set is in flight. Defaults to a blank box of `size`. */
56
+ fallback?: React.ReactNode;
57
+ };
58
+ /**
59
+ * An icon named at runtime. Renders `fallback` until the icon set arrives.
60
+ */
61
+ export declare const LucideIconByName: React.MemoExoticComponent<({ name, size, className, fallback }: LucideIconByNameProps) => React.JSX.Element>;
62
+ export {};
@@ -4,5 +4,32 @@ export * from "./Icon";
4
4
  export * from "./GitHubIcon";
5
5
  export * from "./HandleIcon";
6
6
  export type { LucideProps, LucideIcon } from "lucide-react";
7
+ export * from "./LucideIconByName";
8
+ /**
9
+ * lucide's full `icons` map, keyed by PascalCase name.
10
+ *
11
+ * Read the cost before reaching for it. The map holds a reference to every
12
+ * icon in the library, so importing it pulls all ~1,750 into whatever chunk
13
+ * you import it from — measured at **822 kB uncompressed**. There is no
14
+ * tree-shaking that helps: the object literal names them all.
15
+ *
16
+ * It used to be reached by this package's own navigation chrome, which put
17
+ * that 822 kB in the entry chunk, modulepreloaded on the login screen, for
18
+ * every visitor of every Rebase admin panel. Those call sites now use
19
+ * {@link LucideIconByName}, so the weight is no longer anybody's by default —
20
+ * it is yours only if you import this binding.
21
+ *
22
+ * Prefer, in order:
23
+ *
24
+ * - {@link LucideIconByName} — renders by name, fetches the set on first use;
25
+ * - {@link iconKeys} — a plain string array, if you only need to know whether
26
+ * a name exists (costs nothing);
27
+ * - {@link loadLucideIcons} — the same map, `await`ed, so it lands in an async
28
+ * chunk instead of your entry;
29
+ * - this, when you genuinely need the whole map synchronously at module scope.
30
+ *
31
+ * @see LucideIconByName
32
+ * @see loadLucideIcons
33
+ */
7
34
  export { icons as lucideIcons } from "lucide-react";
8
- export { AlertCircleIcon, AlertTriangleIcon, AlignLeftIcon, AppWindow, ArrowDownIcon, ArrowDownToLineIcon, ArrowLeftIcon, ArrowRightFromLineIcon, ArrowRightIcon, ArrowRightLeftIcon, ArrowRightToLineIcon, ArrowUpDownIcon, ArrowUpIcon, ArrowUpToLineIcon, BoldIcon, BookOpenIcon, CalendarIcon, CheckCircle2Icon, CheckCircleIcon, CheckIcon, CheckSquareIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, CircleUserIcon, CodeIcon, ColumnsIcon, CopyIcon, DatabaseIcon, DollarSignIcon, DownloadIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, FileIcon, FileSearchIcon, FileTextIcon, FilterIcon, FilterXIcon, FlagIcon, FolderIcon, FolderKanbanIcon, FolderPlusIcon, FolderUpIcon, FunctionSquareIcon, GitBranchIcon, GlobeIcon, HashIcon, Heading1Icon, Heading2Icon, Heading3Icon, HelpCircleIcon, HistoryIcon, HomeIcon, ImageIcon, ImageOffIcon, InfoIcon, ItalicIcon, KanbanIcon, KeyIcon, KeyRoundIcon, LanguagesIcon, LayoutGridIcon, LinkIcon, Link2Icon, Unlink2Icon, ListIcon, LockIcon, ListOrderedIcon, ListPlusIcon, ListTodoIcon, LoaderIcon, LogOutIcon, MailIcon, Maximize2Icon, MenuIcon, MessageCircleIcon, MinusCircleIcon, MinusIcon, MoonIcon, MoreVerticalIcon, Music2Icon, PanelLeftIcon, PauseIcon, PenLineIcon, PencilIcon, PhoneIcon, PinIcon, PlayIcon, PlusIcon, QuoteIcon, RefreshCcwIcon, RefreshCwIcon, RepeatIcon, Rows3Icon, SaveIcon, SearchIcon, SendIcon, SettingsIcon, ShieldIcon, ShoppingCartIcon, SlidersHorizontalIcon, SquareIcon, StarIcon, StickyNoteIcon, StrikethroughIcon, SunIcon, SunMoonIcon, TableIcon, TagIcon, TerminalIcon, TextIcon, Trash2Icon, TrendingUpIcon, TypeIcon, UnderlineIcon, UndoIcon, UploadCloudIcon, UploadIcon, UserCheckIcon, UserIcon, UserPlus, UsersIcon, VideoIcon, VoteIcon, Wand2Icon, WrenchIcon, XCircleIcon, XIcon } from "lucide-react";
35
+ export { AlertCircleIcon, AlertTriangleIcon, AlignLeftIcon, AppWindow, ArrowDownIcon, ArrowDownToLineIcon, ArrowLeftIcon, ArrowRightFromLineIcon, ArrowRightIcon, ArrowRightLeftIcon, ArrowRightToLineIcon, ArrowUpDownIcon, ArrowUpIcon, ArrowUpToLineIcon, BoldIcon, BookOpenIcon, CalendarIcon, CheckCircle2Icon, CheckCircleIcon, CheckIcon, CheckSquareIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, CircleUserIcon, CodeIcon, ColumnsIcon, CopyIcon, DatabaseIcon, DollarSignIcon, DownloadIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, FileIcon, FileSearchIcon, FileTextIcon, FilterIcon, FilterXIcon, FlagIcon, FolderIcon, FolderKanbanIcon, FolderPlusIcon, FolderUpIcon, FunctionSquareIcon, GitBranchIcon, GlobeIcon, HashIcon, Heading1Icon, Heading2Icon, Heading3Icon, HelpCircleIcon, HistoryIcon, HomeIcon, ImageIcon, ImageOffIcon, InfoIcon, ItalicIcon, KanbanIcon, KeyIcon, KeyRoundIcon, LanguagesIcon, LayoutGridIcon, LinkIcon, Link2Icon, Unlink2Icon, ListIcon, LockIcon, ListOrderedIcon, ListPlusIcon, ListTodoIcon, LoaderIcon, LogOutIcon, MailIcon, Maximize2Icon, MenuIcon, MessageCircleIcon, MinusCircleIcon, MinusIcon, MoonIcon, MoreVerticalIcon, Music2Icon, PanelLeftCloseIcon, PanelLeftIcon, PanelLeftOpenIcon, PauseIcon, PenLineIcon, PencilIcon, PhoneIcon, PinIcon, PlayIcon, PlusIcon, QuoteIcon, RefreshCcwIcon, RefreshCwIcon, RepeatIcon, Rows3Icon, SaveIcon, SearchIcon, SendIcon, SettingsIcon, ShieldIcon, ShoppingCartIcon, SlidersHorizontalIcon, SquareIcon, StarIcon, StickyNoteIcon, StrikethroughIcon, SunIcon, SunMoonIcon, TableIcon, TagIcon, TerminalIcon, TextIcon, Trash2Icon, TrendingUpIcon, TypeIcon, UnderlineIcon, UndoIcon, UploadCloudIcon, UploadIcon, UserCheckIcon, UserIcon, UserPlus, UsersIcon, VideoIcon, VoteIcon, Wand2Icon, WrenchIcon, XCircleIcon, XIcon } from "lucide-react";
package/dist/index.es.js CHANGED
@@ -5,7 +5,7 @@ import * as Collapsible from "@radix-ui/react-collapsible";
5
5
  import { clsx } from "clsx";
6
6
  import { twMerge } from "tailwind-merge";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
- import { AlertCircleIcon, AlertCircleIcon as AlertCircleIcon$1, AlertTriangleIcon, AlignLeftIcon, AppWindow, ArrowDownIcon, ArrowDownToLineIcon, ArrowLeftIcon, ArrowLeftIcon as ArrowLeftIcon$1, ArrowRightFromLineIcon, ArrowRightIcon, ArrowRightLeftIcon, ArrowRightToLineIcon, ArrowUpDownIcon, ArrowUpIcon, ArrowUpIcon as ArrowUpIcon$1, ArrowUpToLineIcon, BoldIcon, BookOpenIcon, CalendarIcon, CalendarIcon as CalendarIcon$1, CheckCircle2Icon, CheckCircleIcon, CheckIcon, CheckIcon as CheckIcon$1, CheckSquareIcon, ChevronDownIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronLeftIcon, ChevronLeftIcon as ChevronLeftIcon$1, ChevronRightIcon, ChevronRightIcon as ChevronRightIcon$1, ChevronUpIcon, ChevronUpIcon as ChevronUpIcon$1, ChevronsLeftIcon, ChevronsRightIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, CircleUserIcon, CodeIcon, ColumnsIcon, CopyIcon, DatabaseIcon, DollarSignIcon, DownloadIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, FileIcon, FileSearchIcon, FileTextIcon, FilterIcon, FilterIcon as FilterIcon$1, FilterXIcon, FlagIcon, FolderIcon, FolderKanbanIcon, FolderPlusIcon, FolderUpIcon, FunctionSquareIcon, GitBranchIcon, GlobeIcon, HashIcon, Heading1Icon, Heading2Icon, Heading3Icon, HelpCircleIcon, HistoryIcon, HomeIcon, ImageIcon, ImageIcon as ImageIcon$1, ImageOffIcon, InfoIcon, ItalicIcon, Kanban, KanbanIcon, KeyIcon, KeyRoundIcon, LanguagesIcon, LayoutGrid, LayoutGridIcon, LayoutList, Link2Icon, LinkIcon, ListIcon, ListOrderedIcon, ListPlusIcon, ListTodoIcon, LoaderIcon, LockIcon, LogOutIcon, MailIcon, Maximize2Icon, MenuIcon, MessageCircleIcon, MinusCircleIcon, MinusIcon, MinusIcon as MinusIcon$1, MoonIcon, MoreVerticalIcon, Music2Icon, PanelLeftIcon, PauseIcon, PenLineIcon, PencilIcon, PhoneIcon, PinIcon, PlayIcon, PlusIcon, QuoteIcon, RefreshCcwIcon, RefreshCwIcon, RefreshCwIcon as RefreshCwIcon$1, RepeatIcon, Rows3Icon, SaveIcon, SearchIcon, SearchIcon as SearchIcon$1, SendIcon, Settings2, SettingsIcon, ShieldAlertIcon, ShieldIcon, ShoppingCartIcon, SlidersHorizontalIcon, SquareIcon, StarIcon, StickyNoteIcon, StrikethroughIcon, SunIcon, SunMoonIcon, Table2, TableIcon, TagIcon, TerminalIcon, TextIcon, Trash2Icon, TrendingUpIcon, TypeIcon, UnderlineIcon, UndoIcon, Unlink2Icon, UploadCloudIcon, UploadIcon, UserCheckIcon, UserIcon, UserPlus, UsersIcon, VideoIcon, VoteIcon, Wand2Icon, WrenchIcon, XCircleIcon, XIcon, XIcon as XIcon$1, icons as lucideIcons } from "lucide-react";
8
+ import { AlertCircleIcon, AlertCircleIcon as AlertCircleIcon$1, AlertTriangleIcon, AlignLeftIcon, AppWindow, ArrowDownIcon, ArrowDownToLineIcon, ArrowLeftIcon, ArrowLeftIcon as ArrowLeftIcon$1, ArrowRightFromLineIcon, ArrowRightIcon, ArrowRightLeftIcon, ArrowRightToLineIcon, ArrowUpDownIcon, ArrowUpIcon, ArrowUpIcon as ArrowUpIcon$1, ArrowUpToLineIcon, BoldIcon, BookOpenIcon, CalendarIcon, CalendarIcon as CalendarIcon$1, CheckCircle2Icon, CheckCircleIcon, CheckIcon, CheckIcon as CheckIcon$1, CheckSquareIcon, ChevronDownIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronLeftIcon, ChevronLeftIcon as ChevronLeftIcon$1, ChevronRightIcon, ChevronRightIcon as ChevronRightIcon$1, ChevronUpIcon, ChevronUpIcon as ChevronUpIcon$1, ChevronsLeftIcon, ChevronsRightIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, CircleUserIcon, CodeIcon, ColumnsIcon, CopyIcon, DatabaseIcon, DollarSignIcon, DownloadIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, FileIcon, FileSearchIcon, FileTextIcon, FilterIcon, FilterIcon as FilterIcon$1, FilterXIcon, FlagIcon, FolderIcon, FolderKanbanIcon, FolderPlusIcon, FolderUpIcon, FunctionSquareIcon, GitBranchIcon, GlobeIcon, HashIcon, Heading1Icon, Heading2Icon, Heading3Icon, HelpCircleIcon, HistoryIcon, HomeIcon, ImageIcon, ImageIcon as ImageIcon$1, ImageOffIcon, InfoIcon, ItalicIcon, Kanban, KanbanIcon, KeyIcon, KeyRoundIcon, LanguagesIcon, LayoutGrid, LayoutGridIcon, LayoutList, Link2Icon, LinkIcon, ListIcon, ListOrderedIcon, ListPlusIcon, ListTodoIcon, LoaderIcon, LockIcon, LogOutIcon, MailIcon, Maximize2Icon, MenuIcon, MessageCircleIcon, MinusCircleIcon, MinusIcon, MinusIcon as MinusIcon$1, MoonIcon, MoreVerticalIcon, Music2Icon, PanelLeftCloseIcon, PanelLeftIcon, PanelLeftOpenIcon, PauseIcon, PenLineIcon, PencilIcon, PhoneIcon, PinIcon, PlayIcon, PlusIcon, QuoteIcon, RefreshCcwIcon, RefreshCwIcon, RefreshCwIcon as RefreshCwIcon$1, RepeatIcon, Rows3Icon, SaveIcon, SearchIcon, SearchIcon as SearchIcon$1, SendIcon, Settings2, SettingsIcon, ShieldAlertIcon, ShieldIcon, ShoppingCartIcon, SlidersHorizontalIcon, SquareIcon, StarIcon, StickyNoteIcon, StrikethroughIcon, SunIcon, SunMoonIcon, Table2, TableIcon, TagIcon, TerminalIcon, TextIcon, Trash2Icon, TrendingUpIcon, TypeIcon, UnderlineIcon, UndoIcon, Unlink2Icon, UploadCloudIcon, UploadIcon, UserCheckIcon, UserIcon, UserPlus, UsersIcon, VideoIcon, VoteIcon, Wand2Icon, WrenchIcon, XCircleIcon, XIcon, XIcon as XIcon$1, icons as lucideIcons } from "lucide-react";
9
9
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
10
10
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
11
11
  import * as DialogPrimitive from "@radix-ui/react-dialog";
@@ -2617,6 +2617,81 @@ function HandleIcon({ size = 24, color, className, onClick, style }) {
2617
2617
  });
2618
2618
  }
2619
2619
  //#endregion
2620
+ //#region src/icons/LucideIconByName.tsx
2621
+ var loaded;
2622
+ var pending;
2623
+ /**
2624
+ * The full lucide icon map, fetched on first use and cached for the session.
2625
+ *
2626
+ * Prefer {@link LucideIconByName}. This is here for callers that need to know
2627
+ * whether a name resolves, such as the icon picker's grid.
2628
+ */
2629
+ function loadLucideIcons() {
2630
+ if (loaded) return Promise.resolve(loaded);
2631
+ pending ??= import("lucide-react").then(({ icons }) => {
2632
+ loaded = icons;
2633
+ return loaded;
2634
+ });
2635
+ return pending;
2636
+ }
2637
+ /** The map if it has already been fetched, otherwise `undefined`. Never fetches. */
2638
+ function getLoadedLucideIcons() {
2639
+ return loaded;
2640
+ }
2641
+ /**
2642
+ * Subscribe to the icon map.
2643
+ *
2644
+ * Returns it synchronously once loaded — including on the very first render of
2645
+ * every icon after the first one anywhere, which is what stops a page full of
2646
+ * icons from each flashing its placeholder.
2647
+ */
2648
+ function useLucideIcons() {
2649
+ const [map, setMap] = React.useState(loaded);
2650
+ React.useEffect(() => {
2651
+ if (map) return;
2652
+ let cancelled = false;
2653
+ loadLucideIcons().then((resolved) => {
2654
+ if (!cancelled) setMap(resolved);
2655
+ }).catch((error) => console.error("[rebase] could not load the icon set", error));
2656
+ return () => {
2657
+ cancelled = true;
2658
+ };
2659
+ }, [map]);
2660
+ return map;
2661
+ }
2662
+ function toPascalCase(str) {
2663
+ return str.split(/[-_]/).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("");
2664
+ }
2665
+ /**
2666
+ * The same resolution order the two call sites used against the eager map:
2667
+ * exact name, then PascalCase, then `CircleAlert` as the visible "unknown icon".
2668
+ */
2669
+ function resolveLucideIcon(icons, name) {
2670
+ return icons[name] ?? icons[toPascalCase(name)] ?? icons.CircleAlert;
2671
+ }
2672
+ /**
2673
+ * An icon named at runtime. Renders `fallback` until the icon set arrives.
2674
+ */
2675
+ var LucideIconByName = React.memo(function LucideIconByName({ name, size, className, fallback }) {
2676
+ const icons = useLucideIcons();
2677
+ const Icon = icons ? resolveLucideIcon(icons, name) : void 0;
2678
+ if (!Icon) {
2679
+ if (fallback !== void 0) return /* @__PURE__ */ jsx(Fragment, { children: fallback });
2680
+ return /* @__PURE__ */ jsx("span", {
2681
+ "aria-hidden": true,
2682
+ className: "inline-block shrink-0",
2683
+ style: {
2684
+ width: size,
2685
+ height: size
2686
+ }
2687
+ });
2688
+ }
2689
+ return /* @__PURE__ */ jsx(Icon, {
2690
+ size,
2691
+ className
2692
+ });
2693
+ });
2694
+ //#endregion
2620
2695
  //#region src/components/Alert.tsx
2621
2696
  var getSizeClasses = (size) => {
2622
2697
  switch (size) {
@@ -3210,7 +3285,7 @@ var Checkbox = React.memo(({ id, checked, indeterminate = false, padding = true,
3210
3285
  className: "rounded-full focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50",
3211
3286
  onCheckedChange: disabled ? void 0 : onCheckedChange,
3212
3287
  children: /* @__PURE__ */ jsx("div", {
3213
- className: cls(padding ? paddingClasses[size] : "", outerSizeClasses[size], "inline-flex items-center justify-center text-sm font-medium focus:outline-none transition-colors ease-in-out duration-150", onCheckedChange ? "rounded-full hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-700 dark:hover:bg-opacity-75 dark:hover:bg-surface-accent-700/75" : "", onCheckedChange ? "cursor-pointer" : "cursor-default"),
3288
+ className: cls(padding ? paddingClasses[size] : "", padding || onCheckedChange ? outerSizeClasses[size] : "", "inline-flex items-center justify-center text-sm font-medium focus:outline-none transition-colors ease-in-out duration-150", onCheckedChange ? "rounded-full hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-700 dark:hover:bg-opacity-75 dark:hover:bg-surface-accent-700/75" : "", onCheckedChange ? "cursor-pointer" : "cursor-default"),
3214
3289
  children: /* @__PURE__ */ jsx("div", {
3215
3290
  className: cls("border-2 shrink-0 relative transition-colors ease-in-out duration-150", sizeClasses$2[size], disabled ? indeterminate || isChecked ? "bg-surface-accent-400 dark:bg-surface-accent-600" : "bg-surface-accent-400 dark:bg-surface-accent-600" : indeterminate || isChecked ? colorClasses$2[color] : "bg-white dark:bg-surface-900", indeterminate || isChecked ? "text-surface-accent-100 dark:text-surface-accent-900" : "", disabled ? "border-transparent" : indeterminate || isChecked ? "border-transparent" : "border-surface-accent-800 dark:border-surface-accent-500"),
3216
3291
  children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, {
@@ -3537,9 +3612,11 @@ var InputLabel = React$1.forwardRef(function InputLabel(inProps, ref) {
3537
3612
  });
3538
3613
  //#endregion
3539
3614
  //#region src/components/DateTimeField.tsx
3540
- var DateTimeField = ({ value, label, onChange, disabled, clearable, mode = "date", error, size = "large", className, style, inputClassName, invisible, timezone }) => {
3615
+ var DateTimeField = ({ value, label, onChange, disabled, clearable, mode = "date", error, size = "large", className, style, inputClassName, invisible, timezone, "aria-label": ariaLabel }) => {
3541
3616
  const inputRef = useRef(null);
3542
3617
  const [focused, setFocused] = useState(false);
3618
+ const inputId = useId();
3619
+ const labelId = `${inputId}-label`;
3543
3620
  const [internalValue, setInternalValue] = useState("");
3544
3621
  const [isTyping, setIsTyping] = useState(false);
3545
3622
  const invalidValue = value !== void 0 && value !== null && (!(value instanceof Date) || isNaN(value.getTime()));
@@ -3649,12 +3726,17 @@ var DateTimeField = ({ value, label, onChange, disabled, clearable, mode = "date
3649
3726
  },
3650
3727
  children: [
3651
3728
  label && /* @__PURE__ */ jsx(InputLabel, {
3729
+ id: labelId,
3730
+ htmlFor: inputId,
3652
3731
  className: cls("absolute top-1 pointer-events-none", !error ? focused ? "text-primary" : "text-text-secondary dark:text-text-secondary-dark" : "text-red-600 dark:text-red-500", disabled ? "opacity-50" : ""),
3653
3732
  shrink: true,
3654
3733
  children: label
3655
3734
  }),
3656
3735
  /* @__PURE__ */ jsx("input", {
3657
3736
  ref: inputRef,
3737
+ id: inputId,
3738
+ "aria-labelledby": label ? labelId : void 0,
3739
+ "aria-label": label ? void 0 : ariaLabel,
3658
3740
  type: mode === "date_time" ? "datetime-local" : "date",
3659
3741
  value: isTyping ? internalValue : valueAsInputValue(value ?? null, mode),
3660
3742
  onChange: handleInputChange,
@@ -3739,6 +3821,7 @@ var widthClasses = {
3739
3821
  };
3740
3822
  var Dialog = ({ open, onOpenChange, children, className, containerClassName, fullWidth = true, fullHeight, fullScreen, scrollable = true, maxWidth = "lg", modal = true, onOpenAutoFocus, onEscapeKeyDown, onPointerDownOutside, onInteractOutside, disableInitialFocus = true, portalContainer, "aria-describedby": ariaDescribedby }) => {
3741
3823
  const [displayed, setDisplayed] = useState(false);
3824
+ const [popupHost, setPopupHost] = useState(null);
3742
3825
  const contextContainer = usePortalContainer();
3743
3826
  const finalContainer = portalContainer ?? contextContainer ?? void 0;
3744
3827
  useEffect(() => {
@@ -3763,7 +3846,7 @@ var Dialog = ({ open, onOpenChange, children, className, containerClassName, ful
3763
3846
  children: [/* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
3764
3847
  className: cls("fixed inset-0 transition-opacity ease-in-out duration-200 bg-black/50 dark:bg-black/60 backdrop-blur-sm", displayed && open ? "opacity-100" : "opacity-0", "z-50 fixed top-0 left-0 w-full h-full flex justify-center items-center"),
3765
3848
  style: { pointerEvents: displayed ? "auto" : "none" }
3766
- }), /* @__PURE__ */ jsx(DialogPrimitive.Content, {
3849
+ }), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
3767
3850
  onEscapeKeyDown,
3768
3851
  onOpenAutoFocus: (e) => {
3769
3852
  if (disableInitialFocus) e.preventDefault();
@@ -3773,10 +3856,16 @@ var Dialog = ({ open, onOpenChange, children, className, containerClassName, ful
3773
3856
  onInteractOutside,
3774
3857
  "aria-describedby": ariaDescribedby,
3775
3858
  className: cls("relative h-full outline-none flex justify-center items-center z-60 opacity-100 transition-all duration-200 ease-in-out"),
3776
- children: /* @__PURE__ */ jsx("div", {
3859
+ children: [/* @__PURE__ */ jsx("div", {
3777
3860
  className: cls(paperMixin, "rounded-2xl", "z-60", "relative", "overflow-hidden", "outline-none focus:outline-none", fullWidth && !fullScreen ? "w-11/12" : void 0, fullHeight && !fullScreen ? "h-full" : void 0, "text-text-primary dark:text-text-primary-dark", "justify-center items-center", fullScreen ? "h-screen w-screen" : "max-h-[90vh] shadow-lg", "ease-in-out duration-200", scrollable && "overflow-y-auto", displayed && open ? "opacity-100 scale-100" : "opacity-0 scale-[0.97]", maxWidth && !fullScreen ? widthClasses[maxWidth] : void 0, className),
3778
- children
3779
- })
3861
+ children: /* @__PURE__ */ jsx(PortalContainerProvider, {
3862
+ container: popupHost,
3863
+ children
3864
+ })
3865
+ }), /* @__PURE__ */ jsx("div", {
3866
+ ref: setPopupHost,
3867
+ className: "relative z-70 w-0 h-0"
3868
+ })]
3780
3869
  })]
3781
3870
  })
3782
3871
  })
@@ -3955,7 +4044,7 @@ var FilterChip = React.forwardRef(function FilterChip({ children, active = false
3955
4044
  type: "button",
3956
4045
  onClick,
3957
4046
  disabled,
3958
- className: cls("inline-flex items-center gap-1 rounded-full", "font-medium whitespace-nowrap select-none shrink-0", "transition-colors duration-150", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50", sizeClasses[size], active ? "bg-primary/12 text-primary dark:bg-primary/20 dark:text-primary shadow-[inset_0_0_0_1.5px_var(--color-primary)]" : cls("bg-surface-accent-100 text-text-secondary dark:bg-surface-accent-800 dark:text-text-secondary-dark", !disabled && "cursor-pointer hover:bg-primary/5 dark:hover:bg-primary/5"), disabled && "opacity-50 cursor-not-allowed", className),
4047
+ className: cls("inline-flex items-center gap-1 rounded-full", "font-medium whitespace-nowrap select-none shrink-0", "transition-colors duration-150", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50", sizeClasses[size], !disabled && "cursor-pointer", active ? cls("bg-primary/12 text-primary dark:bg-primary/20 dark:text-primary shadow-[inset_0_0_0_1.5px_var(--color-primary)]", !disabled && "hover:bg-primary/20 dark:hover:bg-primary/30") : cls("bg-surface-accent-100 text-text-secondary dark:bg-surface-accent-800 dark:text-text-secondary-dark", !disabled && "hover:bg-surface-accent-200 dark:hover:bg-surface-accent-700"), disabled && "opacity-50 cursor-not-allowed", className),
3959
4048
  ...rest,
3960
4049
  children: [icon, children]
3961
4050
  });
@@ -4289,10 +4378,9 @@ var MultiSelect = React$1.forwardRef(({ value, size = "large", label, error, onV
4289
4378
  onPopoverOpenChange(false);
4290
4379
  };
4291
4380
  useInjectStyles("MultiSelect", `
4292
- [cmdk-group] {
4381
+ [data-multi-select-content] [cmdk-group] {
4293
4382
  max-height: 45vh;
4294
4383
  overflow-y: auto;
4295
- // width: 400px;
4296
4384
  } `);
4297
4385
  const contextValue = React$1.useMemo(() => ({
4298
4386
  fieldValue: selectedValues,
@@ -4378,6 +4466,7 @@ var MultiSelect = React$1.forwardRef(({ value, size = "large", label, error, onV
4378
4466
  }), /* @__PURE__ */ jsx(PopoverPrimitive.Portal, {
4379
4467
  container: finalContainer,
4380
4468
  children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
4469
+ "data-multi-select-content": true,
4381
4470
  className: cls("z-50 overflow-hidden border bg-white dark:bg-surface-800 rounded-lg w-[400px]", defaultBorderMixin),
4382
4471
  align: "start",
4383
4472
  sideOffset: 8,
@@ -5093,7 +5182,7 @@ var TextField = forwardRef(({ value, onChange, label, type = "text", multiline =
5093
5182
  ...inputProps,
5094
5183
  ref: inputRef,
5095
5184
  id: inputId,
5096
- "aria-labelledby": label ? labelId : void 0,
5185
+ "aria-labelledby": label ? labelId : inputProps["aria-labelledby"],
5097
5186
  "aria-invalid": error || void 0,
5098
5187
  "aria-disabled": disabled || void 0,
5099
5188
  placeholder: focused || hasValue || !label ? placeholder : void 0,
@@ -5109,7 +5198,7 @@ var TextField = forwardRef(({ value, onChange, label, type = "text", multiline =
5109
5198
  ...inputProps,
5110
5199
  ref: inputRef,
5111
5200
  id: inputId,
5112
- "aria-labelledby": label ? labelId : void 0,
5201
+ "aria-labelledby": label ? labelId : inputProps["aria-labelledby"],
5113
5202
  "aria-invalid": error || void 0,
5114
5203
  "aria-disabled": disabled || void 0,
5115
5204
  disabled,
@@ -6620,8 +6709,9 @@ function getScrollParent$1(element) {
6620
6709
  }
6621
6710
  return document.documentElement;
6622
6711
  }
6623
- function ListView({ data, dataLoading = false, noMoreToLoad = false, dataLoadingError, itemCount, setItemCount, pageSize = 50, paginationEnabled = true, onItemClick, selectedIds, highlightedIds, selectionEnabled = true, onSelectionChange, emptyComponent, size = "m", selectedEntityId, renderRow }) {
6712
+ function ListView({ data, dataLoading = false, noMoreToLoad = false, dataLoadingError, itemCount, setItemCount, pageSize = 50, paginationEnabled = true, onItemClick, selectedIds, highlightedIds, selectionEnabled = true, onSelectionChange, emptyComponent, size = "m", selectedEntityId, header, renderRow }) {
6624
6713
  const containerRef = useRef(null);
6714
+ const rowsRef = useRef(null);
6625
6715
  const isLoadingMore = useRef(false);
6626
6716
  useEffect(() => {
6627
6717
  if (!dataLoading) isLoadingMore.current = false;
@@ -6657,7 +6747,7 @@ function ListView({ data, dataLoading = false, noMoreToLoad = false, dataLoading
6657
6747
  const update = () => {
6658
6748
  rafId = null;
6659
6749
  const scrollRect = scrollEl.getBoundingClientRect();
6660
- const listTopRelative = el.getBoundingClientRect().top - scrollRect.top;
6750
+ const listTopRelative = (rowsRef.current ?? el).getBoundingClientRect().top - scrollRect.top;
6661
6751
  setEffectiveScrollTop(Math.max(0, -listTopRelative));
6662
6752
  setViewportHeight(scrollRect.height);
6663
6753
  const { paginationEnabled: pe, noMoreToLoad: nm, itemCount: ic, pageSize: ps } = paginationStateRef.current;
@@ -6714,7 +6804,8 @@ function ListView({ data, dataLoading = false, noMoreToLoad = false, dataLoading
6714
6804
  color: "secondary",
6715
6805
  children: "No entries found"
6716
6806
  })
6717
- }) : /* @__PURE__ */ jsxs("div", {
6807
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [header, /* @__PURE__ */ jsxs("div", {
6808
+ ref: rowsRef,
6718
6809
  style: {
6719
6810
  height: totalHeight + footerHeight,
6720
6811
  position: "relative"
@@ -6789,7 +6880,7 @@ function ListView({ data, dataLoading = false, noMoreToLoad = false, dataLoading
6789
6880
  })
6790
6881
  })
6791
6882
  ]
6792
- })
6883
+ })] })
6793
6884
  });
6794
6885
  }
6795
6886
  //#endregion
@@ -8651,6 +8742,6 @@ function CollectionView({ dataController, properties, propertiesOrder, displayed
8651
8742
  });
8652
8743
  }
8653
8744
  //#endregion
8654
- export { Alert, AlertCircleIcon, AlertTriangleIcon, AlignLeftIcon, AppWindow, ArrowDownIcon, ArrowDownToLineIcon, ArrowLeftIcon, ArrowRightFromLineIcon, ArrowRightIcon, ArrowRightLeftIcon, ArrowRightToLineIcon, ArrowUpDownIcon, ArrowUpIcon, ArrowUpToLineIcon, Autocomplete, AutocompleteItem, Avatar, Badge, BoldIcon, BookOpenIcon, BooleanSwitch, BooleanSwitchWithLabel, Button, CHIP_COLORS, CHIP_HUES, CHIP_SEED_KEYS, CONTROL_HEIGHT, CalendarIcon, Card, CardView, CenteredView, CheckCircle2Icon, CheckCircleIcon, CheckIcon, CheckSquareIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, ChevronsUpDownIcon, Chip, CircleDotIcon, CircleIcon, CircleUserIcon, CircularProgress, CircularProgressCenter, CodeIcon, Collapse, CollectionView, ColorPicker, ColumnsIcon, Container, CopyIcon, DatabaseIcon, DateTimeField, DebouncedTextField, Dialog, DialogActions, DialogContent, DialogTitle, DollarSignIcon, DownloadIcon, ErrorBoundary, ExpandablePanel, ExternalLinkIcon, EyeIcon, EyeOffIcon, FileIcon, FileSearchIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FilterXIcon, FlagIcon, FolderIcon, FolderKanbanIcon, FolderPlusIcon, FolderUpIcon, FunctionSquareIcon, GitBranchIcon, GitHubIcon, GlobeIcon, HandleIcon, HashIcon, Heading1Icon, Heading2Icon, Heading3Icon, HelpCircleIcon, HistoryIcon, HomeIcon, IconButton, ImageIcon, ImageOffIcon, InfoIcon, InfoLabel, InputLabel, ItalicIcon, KanbanIcon, KanbanView, KeyIcon, KeyRoundIcon, Label, LanguagesIcon, LayoutGridIcon, Link2Icon, LinkIcon, ListIcon, ListOrderedIcon, ListPlusIcon, ListTodoIcon, ListView, LoaderIcon, LoadingButton, LockIcon, LogOutIcon, MailIcon, Markdown, Maximize2Icon, Menu, MenuIcon, MenuItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarItemIndicator, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarSubTriggerIndicator, MenubarTrigger, MessageCircleIcon, MinusCircleIcon, MinusIcon, MoonIcon, MoreVerticalIcon, MultiSelect, MultiSelectContext, MultiSelectItem, Music2Icon, PanelLeftIcon, Paper, PauseIcon, PenLineIcon, PencilIcon, PhoneIcon, PinIcon, PlayIcon, PlusIcon, Popover, PopoverPrimitive, Portal, PortalContainerProvider, QuoteIcon, RadioGroup, RadioGroupItem, RefreshCcwIcon, RefreshCwIcon, RepeatIcon, ResizablePanels, Rows3Icon, SaveIcon, SearchBar, SearchIcon, Select, SelectGroup, SelectItem, SendIcon, Separator, SettingsIcon, Sheet, ShieldIcon, ShoppingCartIcon, Skeleton, Slider, SlidersHorizontalIcon, Slot, SquareIcon, StarIcon, StickyNoteIcon, StrikethroughIcon, SunIcon, SunMoonIcon, Tab, Table, TableBody, TableCell, TableHeader, TableIcon, TableRow, Tabs, TagIcon, TerminalIcon, TextField, TextIcon, TextareaAutosize, ToggleButtonGroup, Tooltip, Trash2Icon, TrendingUpIcon, TypeIcon, Typography, UnderlineIcon, UndoIcon, Unlink2Icon, UploadCloudIcon, UploadIcon, UserCheckIcon, UserIcon, UserPlus, UsersIcon, VideoIcon, VirtualTable, VirtualTableDateField, VirtualTableInput, VirtualTableNumberInput, VirtualTableSelect, VirtualTableSelectionProvider, VirtualTableSwitch, VoteIcon, Wand2Icon, WrenchIcon, XCircleIcon, XIcon, cardClickableMixin, cardMixin, cardSelectedMixin, cls, colorClassesMapping, controlHeightMixin, controlPaddingMixin, coolIconKeys, createVirtualTableSelectionStore, debounce, defaultBorderMixin, fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, fieldBackgroundInvisibleMixin, fieldBackgroundMixin, focusedClasses, focusedDisabled, focusedInvisibleMixin, getColorSchemeForKey, getColorSchemeForSeed, iconKeys, iconSize, lucideIcons, paperMixin, useAutoComplete, useDebounceCallback, useDebounceValue, useDebouncedCallback, useInjectStyles, useOutsideAlerter, usePortalContainer, useVirtualTableCellSelected, useVirtualTableSelection };
8745
+ export { Alert, AlertCircleIcon, AlertTriangleIcon, AlignLeftIcon, AppWindow, ArrowDownIcon, ArrowDownToLineIcon, ArrowLeftIcon, ArrowRightFromLineIcon, ArrowRightIcon, ArrowRightLeftIcon, ArrowRightToLineIcon, ArrowUpDownIcon, ArrowUpIcon, ArrowUpToLineIcon, Autocomplete, AutocompleteItem, Avatar, Badge, BoldIcon, BookOpenIcon, BooleanSwitch, BooleanSwitchWithLabel, Button, CHIP_COLORS, CHIP_HUES, CHIP_SEED_KEYS, CONTROL_HEIGHT, CalendarIcon, Card, CardView, CenteredView, CheckCircle2Icon, CheckCircleIcon, CheckIcon, CheckSquareIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsLeftIcon, ChevronsRightIcon, ChevronsUpDownIcon, Chip, CircleDotIcon, CircleIcon, CircleUserIcon, CircularProgress, CircularProgressCenter, CodeIcon, Collapse, CollectionView, ColorPicker, ColumnsIcon, Container, CopyIcon, DatabaseIcon, DateTimeField, DebouncedTextField, Dialog, DialogActions, DialogContent, DialogTitle, DollarSignIcon, DownloadIcon, ErrorBoundary, ExpandablePanel, ExternalLinkIcon, EyeIcon, EyeOffIcon, FileIcon, FileSearchIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FilterXIcon, FlagIcon, FolderIcon, FolderKanbanIcon, FolderPlusIcon, FolderUpIcon, FunctionSquareIcon, GitBranchIcon, GitHubIcon, GlobeIcon, HandleIcon, HashIcon, Heading1Icon, Heading2Icon, Heading3Icon, HelpCircleIcon, HistoryIcon, HomeIcon, IconButton, ImageIcon, ImageOffIcon, InfoIcon, InfoLabel, InputLabel, ItalicIcon, KanbanIcon, KanbanView, KeyIcon, KeyRoundIcon, Label, LanguagesIcon, LayoutGridIcon, Link2Icon, LinkIcon, ListIcon, ListOrderedIcon, ListPlusIcon, ListTodoIcon, ListView, LoaderIcon, LoadingButton, LockIcon, LogOutIcon, LucideIconByName, MailIcon, Markdown, Maximize2Icon, Menu, MenuIcon, MenuItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarItemIndicator, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarSubTriggerIndicator, MenubarTrigger, MessageCircleIcon, MinusCircleIcon, MinusIcon, MoonIcon, MoreVerticalIcon, MultiSelect, MultiSelectContext, MultiSelectItem, Music2Icon, PanelLeftCloseIcon, PanelLeftIcon, PanelLeftOpenIcon, Paper, PauseIcon, PenLineIcon, PencilIcon, PhoneIcon, PinIcon, PlayIcon, PlusIcon, Popover, PopoverPrimitive, Portal, PortalContainerProvider, QuoteIcon, RadioGroup, RadioGroupItem, RefreshCcwIcon, RefreshCwIcon, RepeatIcon, ResizablePanels, Rows3Icon, SaveIcon, SearchBar, SearchIcon, Select, SelectGroup, SelectItem, SendIcon, Separator, SettingsIcon, Sheet, ShieldIcon, ShoppingCartIcon, Skeleton, Slider, SlidersHorizontalIcon, Slot, SquareIcon, StarIcon, StickyNoteIcon, StrikethroughIcon, SunIcon, SunMoonIcon, Tab, Table, TableBody, TableCell, TableHeader, TableIcon, TableRow, Tabs, TagIcon, TerminalIcon, TextField, TextIcon, TextareaAutosize, ToggleButtonGroup, Tooltip, Trash2Icon, TrendingUpIcon, TypeIcon, Typography, UnderlineIcon, UndoIcon, Unlink2Icon, UploadCloudIcon, UploadIcon, UserCheckIcon, UserIcon, UserPlus, UsersIcon, VideoIcon, VirtualTable, VirtualTableDateField, VirtualTableInput, VirtualTableNumberInput, VirtualTableSelect, VirtualTableSelectionProvider, VirtualTableSwitch, VoteIcon, Wand2Icon, WrenchIcon, XCircleIcon, XIcon, cardClickableMixin, cardMixin, cardSelectedMixin, cls, colorClassesMapping, controlHeightMixin, controlPaddingMixin, coolIconKeys, createVirtualTableSelectionStore, debounce, defaultBorderMixin, fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, fieldBackgroundInvisibleMixin, fieldBackgroundMixin, focusedClasses, focusedDisabled, focusedInvisibleMixin, getColorSchemeForKey, getColorSchemeForSeed, getLoadedLucideIcons, iconKeys, iconSize, loadLucideIcons, lucideIcons, paperMixin, resolveLucideIcon, useAutoComplete, useDebounceCallback, useDebounceValue, useDebouncedCallback, useInjectStyles, useLucideIcons, useOutsideAlerter, usePortalContainer, useVirtualTableCellSelected, useVirtualTableSelection };
8655
8746
 
8656
8747
  //# sourceMappingURL=index.es.js.map