@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 +3 -1
- package/dist/components/DateTimeField.d.ts +5 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +17 -2
- package/dist/icons/LucideIconByName.d.ts +62 -0
- package/dist/icons/index.d.ts +28 -1
- package/dist/index.es.js +108 -17
- package/dist/index.es.js.map +1 -1
- package/dist/src/theme.css +9 -1
- package/dist/theme.css +9 -1
- package/dist/views/ListView.d.ts +7 -1
- package/package.json +2 -2
- package/src/components/Checkbox.tsx +10 -1
- package/src/components/DateTimeField.tsx +18 -2
- package/src/components/Dialog.tsx +15 -2
- package/src/components/FilterChip.tsx +12 -2
- package/src/components/MultiSelect.tsx +5 -2
- package/src/components/TextField.tsx +8 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +17 -2
- package/src/icons/LucideIconByName.tsx +117 -0
- package/src/icons/index.ts +30 -1
- package/src/theme.css +9 -1
- package/src/views/ListView.tsx +77 -62
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
|
|
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
|
|
245
|
-
*
|
|
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 {};
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -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__ */
|
|
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 && "
|
|
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 :
|
|
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 :
|
|
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
|