@exsto/ds 0.0.1-rc.5 → 0.0.1-rc.7
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 +33 -0
- package/dist/chunks/toggle-C2c5oDaE.js +629 -0
- package/dist/chunks/toggle-C2c5oDaE.js.map +1 -0
- package/dist/ds/src/rich-text-editor.d.ts +8 -0
- package/dist/index.js +174 -576
- package/dist/index.js.map +1 -1
- package/dist/rich-text-editor.js +846 -0
- package/dist/rich-text-editor.js.map +1 -0
- package/dist/styles.css +221 -51
- package/dist/ui/src/components/edyn/date-range-picker/date-range-picker.d.ts +7 -1
- package/dist/ui/src/components/edyn/multi-select/multi-select.d.ts +10 -2
- package/dist/ui/src/components/edyn/rich-text-content/allow-list.d.ts +11 -0
- package/dist/ui/src/components/edyn/rich-text-content/index.d.ts +2 -0
- package/dist/ui/src/components/edyn/rich-text-content/rich-text-content.d.ts +22 -0
- package/dist/ui/src/components/edyn/rich-text-content/rich-text-content.test.d.ts +8 -0
- package/dist/ui/src/components/edyn/rich-text-editor/extensions.d.ts +18 -0
- package/dist/ui/src/components/edyn/rich-text-editor/index.d.ts +3 -0
- package/dist/ui/src/components/edyn/rich-text-editor/mention-list.d.ts +17 -0
- package/dist/ui/src/components/edyn/rich-text-editor/rich-text-editor.d.ts +53 -0
- package/dist/ui/src/components/edyn/rich-text-editor/rich-text-editor.test.d.ts +6 -0
- package/dist/ui/src/components/edyn/rich-text-editor/serialize.d.ts +13 -0
- package/dist/ui/src/components/edyn/rich-text-editor/toolbar.d.ts +20 -0
- package/dist/ui/src/components/edyn/rich-text-editor/types.d.ts +68 -0
- package/dist/ui/src/components/ui/popover/popover.d.ts +1 -1
- package/dist/ui/src/components/ui/progress/progress.d.ts +38 -4
- package/dist/ui/src/index.d.ts +1 -0
- package/package.json +21 -1
package/dist/index.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
+
import { A as ScrollBar, B as cn, C as RICH_TEXT_ATTRIBUTES, D as POPUP_ITEM_INDICATOR_CLASS, E as isAllowedRichTextHref, F as PopoverHeader, I as PopoverTitle, L as PopoverTrigger, M as Popover, N as PopoverContent, O as popupItemClass, P as PopoverDescription, R as Button, S as richTextToNodes, T as RICH_TEXT_LINK_PROTOCOLS, V as cssLength, _ as DropdownMenuTrigger, a as DropdownMenuContent, b as RICH_TEXT_MENTION_CLASS, c as DropdownMenuLabel, d as DropdownMenuRadioItem, f as DropdownMenuSeparator, g as DropdownMenuSubTrigger, h as DropdownMenuSubContent, i as DropdownMenuCheckboxItem, j as useMergedRefs, k as ScrollArea, l as DropdownMenuPortal, m as DropdownMenuSub, n as toggleVariants, o as DropdownMenuGroup, p as DropdownMenuShortcut, r as DropdownMenu, s as DropdownMenuItem, t as Toggle, u as DropdownMenuRadioGroup, v as Input, w as RICH_TEXT_ELEMENTS, x as RichTextContent, y as RICH_TEXT_BODY_CLASS, z as buttonVariants } from "./chunks/toggle-C2c5oDaE.js";
|
|
1
2
|
import * as React from "react";
|
|
2
|
-
import { createContext,
|
|
3
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
3
4
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
-
import { Button as Button$1 } from "@base-ui/react/button";
|
|
5
|
-
import { clsx } from "clsx";
|
|
6
|
-
import { twMerge } from "tailwind-merge";
|
|
7
5
|
import { cva } from "class-variance-authority";
|
|
8
6
|
import { Slider as Slider$1 } from "@base-ui/react/slider";
|
|
9
7
|
import { IconAlertOctagon, IconAlertTriangle, IconArrowDown, IconCalendar, IconCheck, IconChevronDown, IconChevronLeft, IconChevronRight, IconCircleCheck, IconDots, IconInfoCircle, IconLayoutSidebar, IconLoader, IconMaximize, IconMinus, IconPlayerPauseFilled, IconPlayerPlayFilled, IconSearch, IconSelector, IconVolume, IconVolumeOff, IconX } from "@tabler/icons-react";
|
|
10
8
|
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
11
|
-
import { Popover as Popover$1 } from "@base-ui/react/popover";
|
|
12
9
|
import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
|
|
13
10
|
import { Combobox as Combobox$1 } from "@base-ui/react/combobox";
|
|
14
|
-
import {
|
|
11
|
+
import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
|
|
15
12
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
16
13
|
import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
|
|
17
14
|
import { AlertDialog as AlertDialog$1 } from "@base-ui/react/alert-dialog";
|
|
@@ -23,7 +20,6 @@ import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
|
|
|
23
20
|
import { Collapsible as Collapsible$1 } from "@base-ui/react/collapsible";
|
|
24
21
|
import { Command as Command$1 } from "cmdk";
|
|
25
22
|
import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
|
|
26
|
-
import { Input as Input$1 } from "@base-ui/react/input";
|
|
27
23
|
import { ContextMenu as ContextMenu$1 } from "@base-ui/react/context-menu";
|
|
28
24
|
import { DirectionProvider, useDirection } from "@base-ui/react/direction-provider";
|
|
29
25
|
import { Menu } from "@base-ui/react/menu";
|
|
@@ -40,7 +36,6 @@ import { Radio } from "@base-ui/react/radio";
|
|
|
40
36
|
import { RadioGroup as RadioGroup$1 } from "@base-ui/react/radio-group";
|
|
41
37
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
42
38
|
import { Select as Select$1 } from "@base-ui/react/select";
|
|
43
|
-
import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
|
|
44
39
|
import { Switch as Switch$1 } from "@base-ui/react/switch";
|
|
45
40
|
import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
|
|
46
41
|
import { Toast as Toast$1 } from "@base-ui/react/toast";
|
|
@@ -147,87 +142,6 @@ var NumberText = ({ element, shown, value, format = formatCount, className }) =>
|
|
|
147
142
|
});
|
|
148
143
|
};
|
|
149
144
|
//#endregion
|
|
150
|
-
//#region ../ui/src/lib/utils.ts
|
|
151
|
-
var cn = (...inputs) => twMerge(clsx(inputs));
|
|
152
|
-
/**
|
|
153
|
-
* Normalise a size prop to a CSS length.
|
|
154
|
-
*
|
|
155
|
-
* Bare numbers become px, which is also what a bare numeric *string* means: an
|
|
156
|
-
* element attribute arrives as a string, so `width="480"` and `width={480}` have
|
|
157
|
-
* to land on the same value. Anything with a unit, a percentage or a keyword
|
|
158
|
-
* passes through untouched.
|
|
159
|
-
*/
|
|
160
|
-
var cssLength = (value) => {
|
|
161
|
-
if (value == null || value === "") return;
|
|
162
|
-
if (typeof value === "number") return Number.isFinite(value) ? `${value}px` : void 0;
|
|
163
|
-
return /^-?\d*\.?\d+$/.test(value.trim()) ? `${value.trim()}px` : value;
|
|
164
|
-
};
|
|
165
|
-
//#endregion
|
|
166
|
-
//#region ../ui/src/components/ui/button/button.tsx
|
|
167
|
-
var buttonVariants = cva("group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all motion-reduce:transition-none motion-reduce:transform-none outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
168
|
-
variants: {
|
|
169
|
-
variant: {
|
|
170
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
171
|
-
outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
172
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
173
|
-
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
174
|
-
destructive: "bg-destructive/10 text-destructive hover:bg-destructive/15 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/15 dark:hover:bg-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
175
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
176
|
-
},
|
|
177
|
-
size: {
|
|
178
|
-
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
179
|
-
xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
180
|
-
sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
181
|
-
lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
182
|
-
icon: "size-8",
|
|
183
|
-
"icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
|
|
184
|
-
"icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
|
|
185
|
-
"icon-lg": "size-9"
|
|
186
|
-
}
|
|
187
|
-
},
|
|
188
|
-
defaultVariants: {
|
|
189
|
-
variant: "default",
|
|
190
|
-
size: "default"
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
/**
|
|
194
|
-
* Whether this Button is rendering a link rather than a button, so it can keep
|
|
195
|
-
* link semantics. Covers `render={<a href="..." />}` and a routing component
|
|
196
|
-
* that takes an `href` (Next's Link). A component with a different prop for its
|
|
197
|
-
* destination (react-router's `to`) cannot be recognised from here: give those
|
|
198
|
-
* `nativeButton={false} role={undefined}` directly.
|
|
199
|
-
*/
|
|
200
|
-
var rendersALink = (render) => isValidElement(render) && (render.type === "a" || typeof render.props.href === "string");
|
|
201
|
-
/**
|
|
202
|
-
* A link that looks like a button is still a link, and has to be announced as
|
|
203
|
-
* one: it opens in a new tab, it has an address, Enter follows it and Space
|
|
204
|
-
* scrolls the page.
|
|
205
|
-
*
|
|
206
|
-
* Base UI needs telling, in two steps. Rendering an anchor while `nativeButton`
|
|
207
|
-
* is true (its default) warns in development and puts `type="button"` on the
|
|
208
|
-
* anchor; following the warning and passing `nativeButton={false}` then adds
|
|
209
|
-
* `role="button"`, which is what takes the link semantics away. So this does
|
|
210
|
-
* both: non-native, with the role and the tabindex Base UI would add cleared
|
|
211
|
-
* again. An explicit prop from the caller still wins over either.
|
|
212
|
-
*/
|
|
213
|
-
var LINK_PROPS = {
|
|
214
|
-
nativeButton: false,
|
|
215
|
-
role: void 0,
|
|
216
|
-
tabIndex: void 0
|
|
217
|
-
};
|
|
218
|
-
var Button = ({ className, variant = "default", size = "default", ...props }) => {
|
|
219
|
-
return /* @__PURE__ */ jsx(Button$1, {
|
|
220
|
-
"data-slot": "button",
|
|
221
|
-
...rendersALink(props.render) ? LINK_PROPS : {},
|
|
222
|
-
className: cn(buttonVariants({
|
|
223
|
-
variant,
|
|
224
|
-
size,
|
|
225
|
-
className
|
|
226
|
-
})),
|
|
227
|
-
...props
|
|
228
|
-
});
|
|
229
|
-
};
|
|
230
|
-
//#endregion
|
|
231
145
|
//#region ../ui/src/components/ui/slider/slider.tsx
|
|
232
146
|
var Slider = ({ className, value, defaultValue, min, max, step, disabled, onValueChange, onValueCommitted, name, minStepsBetweenValues, "aria-label": ariaLabel, ...props }) => {
|
|
233
147
|
const thumbValues = Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [value ?? defaultValue ?? min ?? 0];
|
|
@@ -581,55 +495,6 @@ var CalendarDayButton = ({ className, day, modifiers, locale, ...props }) => {
|
|
|
581
495
|
});
|
|
582
496
|
};
|
|
583
497
|
//#endregion
|
|
584
|
-
//#region ../ui/src/components/ui/popover/popover.tsx
|
|
585
|
-
var Popover = ({ ...props }) => {
|
|
586
|
-
return /* @__PURE__ */ jsx(Popover$1.Root, {
|
|
587
|
-
"data-slot": "popover",
|
|
588
|
-
...props
|
|
589
|
-
});
|
|
590
|
-
};
|
|
591
|
-
var PopoverTrigger = ({ ...props }) => {
|
|
592
|
-
return /* @__PURE__ */ jsx(Popover$1.Trigger, {
|
|
593
|
-
"data-slot": "popover-trigger",
|
|
594
|
-
...props
|
|
595
|
-
});
|
|
596
|
-
};
|
|
597
|
-
var PopoverContent = ({ className, align = "center", alignOffset = 0, side = "bottom", sideOffset = 4, ...props }) => {
|
|
598
|
-
return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(Popover$1.Positioner, {
|
|
599
|
-
align,
|
|
600
|
-
alignOffset,
|
|
601
|
-
side,
|
|
602
|
-
sideOffset,
|
|
603
|
-
className: "isolate z-50",
|
|
604
|
-
children: /* @__PURE__ */ jsx(Popover$1.Popup, {
|
|
605
|
-
"data-slot": "popover-content",
|
|
606
|
-
className: cn("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 motion-reduce:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
607
|
-
...props
|
|
608
|
-
})
|
|
609
|
-
}) });
|
|
610
|
-
};
|
|
611
|
-
var PopoverHeader = ({ className, ...props }) => {
|
|
612
|
-
return /* @__PURE__ */ jsx("div", {
|
|
613
|
-
"data-slot": "popover-header",
|
|
614
|
-
className: cn("flex flex-col gap-0.5 text-sm", className),
|
|
615
|
-
...props
|
|
616
|
-
});
|
|
617
|
-
};
|
|
618
|
-
var PopoverTitle = ({ className, ...props }) => {
|
|
619
|
-
return /* @__PURE__ */ jsx(Popover$1.Title, {
|
|
620
|
-
"data-slot": "popover-title",
|
|
621
|
-
className: cn("font-medium", className),
|
|
622
|
-
...props
|
|
623
|
-
});
|
|
624
|
-
};
|
|
625
|
-
var PopoverDescription = ({ className, ...props }) => {
|
|
626
|
-
return /* @__PURE__ */ jsx(Popover$1.Description, {
|
|
627
|
-
"data-slot": "popover-description",
|
|
628
|
-
className: cn("text-muted-foreground", className),
|
|
629
|
-
...props
|
|
630
|
-
});
|
|
631
|
-
};
|
|
632
|
-
//#endregion
|
|
633
498
|
//#region ../ui/src/hooks/use-mobile.ts
|
|
634
499
|
var MOBILE_BREAKPOINT = 768;
|
|
635
500
|
var useIsMobile = () => {
|
|
@@ -650,7 +515,7 @@ var useIsMobile = () => {
|
|
|
650
515
|
var dayToDate = (value) => value === void 0 ? void 0 : /* @__PURE__ */ new Date(`${value}T12:00:00`);
|
|
651
516
|
var dateToDay = (date) => date === void 0 ? void 0 : `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
|
|
652
517
|
/** A range of calendar days, either end optional; two months side by side, one on a phone. */
|
|
653
|
-
var DateRangePicker = ({ id, value, onValueChange, placeholder = "Select date range", locale = "en-GB", "aria-label": ariaLabel, className }) => {
|
|
518
|
+
var DateRangePicker = ({ id, value, onValueChange, placeholder = "Select date range", locale = "en-GB", summary = "range", "aria-label": ariaLabel, className }) => {
|
|
654
519
|
const isMobile = useIsMobile();
|
|
655
520
|
const from = dayToDate(value.from);
|
|
656
521
|
const to = dayToDate(value.to);
|
|
@@ -665,12 +530,13 @@ var DateRangePicker = ({ id, value, onValueChange, placeholder = "Select date ra
|
|
|
665
530
|
id,
|
|
666
531
|
"aria-label": ariaLabel,
|
|
667
532
|
"data-slot": "date-range-picker-trigger",
|
|
533
|
+
"data-set": ends.length > 0 ? "" : void 0,
|
|
668
534
|
variant: "outline",
|
|
669
535
|
className: cn("w-full min-w-0 justify-start font-normal", ends.length === 0 && "text-muted-foreground", className)
|
|
670
536
|
}),
|
|
671
537
|
children: [/* @__PURE__ */ jsx(IconCalendar, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", {
|
|
672
538
|
className: "truncate",
|
|
673
|
-
children: ends.length === 0 ? placeholder : ends.join(" – ")
|
|
539
|
+
children: ends.length === 0 || summary === "label" ? placeholder : ends.join(" – ")
|
|
674
540
|
})]
|
|
675
541
|
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
676
542
|
align: "start",
|
|
@@ -814,146 +680,41 @@ var InitialsAvatar = ({ name, photoUrl, size = "md", className, autoColor = true
|
|
|
814
680
|
});
|
|
815
681
|
};
|
|
816
682
|
//#endregion
|
|
817
|
-
//#region ../ui/src/
|
|
818
|
-
var
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
return (node) => {
|
|
824
|
-
for (const ref of refs) if (ref) assignRef(ref, node);
|
|
825
|
-
};
|
|
826
|
-
};
|
|
827
|
-
var useMergedRefs = (...refs) => {
|
|
828
|
-
return useCallback(mergeRefs(...refs), [...refs]);
|
|
829
|
-
};
|
|
830
|
-
//#endregion
|
|
831
|
-
//#region ../ui/src/components/ui/scroll-area/scroll-area.tsx
|
|
832
|
-
var ScrollBar = ({ className, orientation = "vertical", visibility = "hover", ...props }) => {
|
|
833
|
-
return /* @__PURE__ */ jsx(ScrollArea$1.Scrollbar, {
|
|
834
|
-
"data-slot": "scroll-area-scrollbar",
|
|
835
|
-
orientation,
|
|
836
|
-
className: cn("peer/scrollbar z-100 flex touch-none select-none motion-safe:transition-opacity motion-safe:duration-150", orientation === "vertical" && "h-full w-2 border-l border-l-transparent p-px", orientation === "horizontal" && "h-2 flex-col border-t border-t-transparent p-px", visibility !== "always" && "opacity-0 data-scrolling:opacity-100", visibility === "hover" && "data-hovering:opacity-100 group-hover/scroll-area:opacity-100", className),
|
|
837
|
-
...props,
|
|
838
|
-
children: /* @__PURE__ */ jsx(ScrollArea$1.Thumb, { className: "relative flex-1 rounded-full bg-muted-foreground/50 transition-colors hover:bg-muted-foreground/70 data-scrolling:bg-muted-foreground/70" })
|
|
683
|
+
//#region ../ui/src/components/ui/tooltip/tooltip.tsx
|
|
684
|
+
var TooltipProvider = ({ delay = 0, ...props }) => {
|
|
685
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Provider, {
|
|
686
|
+
"data-slot": "tooltip-provider",
|
|
687
|
+
delay,
|
|
688
|
+
...props
|
|
839
689
|
});
|
|
840
690
|
};
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
/**
|
|
847
|
-
* Base UI gives the root, the viewport and the content `role="presentation"`. On
|
|
848
|
-
* a div that changes nothing for a screen reader, but it is an EXPLICIT role, and
|
|
849
|
-
* axe treats explicit presentation children as foreign to a parent that owns
|
|
850
|
-
* required children. A ScrollArea inside `role="menu"` or `role="listbox"` then
|
|
851
|
-
* fails as a critical aria-required-children violation, while the same div with
|
|
852
|
-
* no role passes straight through. Clearing it is what makes a ScrollArea legal
|
|
853
|
-
* in a popup list. A spread because the literal `role={undefined}` is flagged by
|
|
854
|
-
* the a11y lint rule, which cannot tell it from an invalid role.
|
|
855
|
-
*/
|
|
856
|
-
var NO_ROLE = { role: void 0 };
|
|
857
|
-
/** Base UI makes the viewport a tab stop (0, or -1 with nothing to scroll); undefined takes that away. */
|
|
858
|
-
var NO_TAB_STOP = { tabIndex: void 0 };
|
|
859
|
-
var FADE_AXIS = {
|
|
860
|
-
vertical: "block",
|
|
861
|
-
horizontal: "inline",
|
|
862
|
-
both: "both"
|
|
691
|
+
var Tooltip = ({ ...props }) => {
|
|
692
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Root, {
|
|
693
|
+
"data-slot": "tooltip",
|
|
694
|
+
...props
|
|
695
|
+
});
|
|
863
696
|
};
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
* overflow-* utility.
|
|
869
|
-
*
|
|
870
|
-
* Cap the height with a plain class on the component itself, e.g.
|
|
871
|
-
* `<ScrollArea className="max-h-88">`. The viewport picks the cap up through
|
|
872
|
-
* `max-h-inherit`, which matters because the viewport is the element that actually
|
|
873
|
-
* scrolls: a cap that lands only on the root leaves tall content spilling out
|
|
874
|
-
* underneath with no scrollbar, and that reads as a working height right up until the
|
|
875
|
-
* content outgrows it.
|
|
876
|
-
*
|
|
877
|
-
* `fade` fades out each edge that is currently hiding content, rather than always
|
|
878
|
-
* fading one: a permanent fade is a lie half the time, dimming the last row that fits
|
|
879
|
-
* and promising more below when the reader is already at the end. It is cut into the
|
|
880
|
-
* content by a mask (@edyn/theme/scroll-fade.css), so it needs no surface colour and
|
|
881
|
-
* reads correctly over a tint, a gradient or a glow. A host that keeps something
|
|
882
|
-
* unscrolled at the top, such as a sticky table header, exempts that band by setting
|
|
883
|
-
* --scroll-fade-offset on the ScrollArea. The static faded-* utilities in
|
|
884
|
-
* @edyn/theme/utilities.css are the other tool, for DECORATIVE edges that do not
|
|
885
|
-
* track scroll position.
|
|
886
|
-
*
|
|
887
|
-
* The viewport publishes its size as --scroll-area-width/--scroll-area-height CSS vars
|
|
888
|
-
* so children can size against the visible area.
|
|
889
|
-
*/
|
|
890
|
-
var ScrollArea = ({ className, children, orientation = "vertical", type = "hover", fade = false, fadeFrom = "card", scrollbarClassName, viewportId, viewportRef, viewportClassName, scrollRestorationId, focusable = true, viewPortId, viewPortRef, viewPortClassName, scrollVerticalClassName, scrollHorizontalClassName, ...props }) => {
|
|
891
|
-
const refInner = useRef(null);
|
|
892
|
-
const refsViewport = useMergedRefs(refInner, viewportRef ?? viewPortRef);
|
|
893
|
-
useEffect(() => {
|
|
894
|
-
const el = refInner.current;
|
|
895
|
-
if (!el) return;
|
|
896
|
-
const observer = new ResizeObserver(() => {
|
|
897
|
-
el.style.setProperty("--scroll-area-width", `${el.clientWidth}px`);
|
|
898
|
-
el.style.setProperty("--scroll-area-height", `${el.clientHeight}px`);
|
|
899
|
-
});
|
|
900
|
-
observer.observe(el);
|
|
901
|
-
return () => {
|
|
902
|
-
observer.disconnect();
|
|
903
|
-
};
|
|
904
|
-
}, []);
|
|
905
|
-
return /* @__PURE__ */ jsxs(ScrollArea$1.Root, {
|
|
906
|
-
"data-slot": "scroll-area",
|
|
907
|
-
"data-focus": "inset",
|
|
908
|
-
className: cn("group/scroll-area relative grid min-w-0 grid-rows-1 overflow-hidden", className),
|
|
909
|
-
"data-fade": fade ? FADE_AXIS[orientation] : void 0,
|
|
910
|
-
...NO_ROLE,
|
|
911
|
-
...props,
|
|
912
|
-
children: [
|
|
913
|
-
(orientation === "vertical" || orientation === "both") && /* @__PURE__ */ jsx(ScrollBar, {
|
|
914
|
-
orientation: "vertical",
|
|
915
|
-
visibility: type,
|
|
916
|
-
className: cn(scrollbarClassName, scrollVerticalClassName)
|
|
917
|
-
}),
|
|
918
|
-
(orientation === "horizontal" || orientation === "both") && /* @__PURE__ */ jsx(ScrollBar, {
|
|
919
|
-
orientation: "horizontal",
|
|
920
|
-
visibility: type,
|
|
921
|
-
className: cn(scrollbarClassName, scrollHorizontalClassName)
|
|
922
|
-
}),
|
|
923
|
-
/* @__PURE__ */ jsx(ScrollArea$1.Corner, {}),
|
|
924
|
-
/* @__PURE__ */ jsx(ScrollArea$1.Viewport, {
|
|
925
|
-
"data-slot": "scroll-area-viewport",
|
|
926
|
-
id: viewportId ?? viewPortId,
|
|
927
|
-
ref: refsViewport,
|
|
928
|
-
"data-scroll-restoration-id": scrollRestorationId,
|
|
929
|
-
...NO_ROLE,
|
|
930
|
-
...focusable ? null : NO_TAB_STOP,
|
|
931
|
-
className: cn("max-h-inherit w-full rounded-[inherit]", orientation === "vertical" && "overflow-x-hidden!", orientation === "horizontal" && "overflow-y-hidden!", viewportClassName ?? viewPortClassName),
|
|
932
|
-
children: /* @__PURE__ */ jsx(ScrollArea$1.Content, {
|
|
933
|
-
...NO_ROLE,
|
|
934
|
-
style: orientation === "vertical" ? { minWidth: 0 } : void 0,
|
|
935
|
-
children
|
|
936
|
-
})
|
|
937
|
-
})
|
|
938
|
-
]
|
|
697
|
+
var TooltipTrigger = ({ ...props }) => {
|
|
698
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Trigger, {
|
|
699
|
+
"data-slot": "tooltip-trigger",
|
|
700
|
+
...props
|
|
939
701
|
});
|
|
940
702
|
};
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
var POPUP_GROUP_LABEL_CLASS = "px-2 py-1.5 text-xs font-medium text-muted-foreground";
|
|
703
|
+
var TooltipContent = ({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) => {
|
|
704
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(Tooltip$1.Positioner, {
|
|
705
|
+
align,
|
|
706
|
+
alignOffset,
|
|
707
|
+
side,
|
|
708
|
+
sideOffset,
|
|
709
|
+
className: "isolate z-50",
|
|
710
|
+
children: /* @__PURE__ */ jsxs(Tooltip$1.Popup, {
|
|
711
|
+
"data-slot": "tooltip-content",
|
|
712
|
+
className: cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", "motion-reduce:animate-none", className),
|
|
713
|
+
...props,
|
|
714
|
+
children: [children, /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })]
|
|
715
|
+
})
|
|
716
|
+
}) });
|
|
717
|
+
};
|
|
957
718
|
//#endregion
|
|
958
719
|
//#region ../ui/src/components/edyn/multi-select/multi-select.tsx
|
|
959
720
|
var DEFAULT_MULTI_SELECT_LABELS = {
|
|
@@ -983,42 +744,68 @@ var resolveChosen = (value, options, selectedOptions = []) => {
|
|
|
983
744
|
});
|
|
984
745
|
};
|
|
985
746
|
/** What the trigger says: the placeholder, the one picked, or a count. */
|
|
986
|
-
var summarize = (chosen, placeholder, labels) => {
|
|
747
|
+
var summarize = (chosen, placeholder, labels, summary = "selection") => {
|
|
987
748
|
if (chosen.length === 0) return placeholder;
|
|
749
|
+
if (summary === "label") return labels.selectedCount(chosen.length);
|
|
988
750
|
return chosen.length === 1 ? chosen[0]?.label ?? "" : labels.selectedCount(chosen.length);
|
|
989
751
|
};
|
|
752
|
+
/** Every chosen name, for a tooltip on a trigger whose text is cut. With `label` the names are not shown, so it is the text itself. */
|
|
753
|
+
var fullSelection = (chosen, placeholder, labels, summary = "selection") => summary === "selection" && chosen.length > 0 ? chosen.map((option) => option.label).join(", ") : summarize(chosen, placeholder, labels, summary);
|
|
990
754
|
var POPUP = "flex max-h-(--available-height) w-(--anchor-width) min-w-64 max-w-sm origin-(--transform-origin) flex-col overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-md outline-none duration-100 motion-reduce:animate-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95";
|
|
991
755
|
var TRIGGER = "flex h-8 w-full min-w-0 cursor-pointer items-center justify-between gap-2 rounded-lg border border-input bg-transparent px-2.5 text-sm text-foreground transition-colors outline-none focus-visible:border-ring disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive data-popup-open:border-ring dark:bg-input/30";
|
|
992
|
-
var Option = ({ option, index, style, measure }) =>
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
756
|
+
var Option = ({ option, index, style, measure, highlighted }) => {
|
|
757
|
+
const [cut, setCut] = useState(false);
|
|
758
|
+
const measureLabel = useCallback((element) => {
|
|
759
|
+
if (!element) return;
|
|
760
|
+
const measureCut = () => setCut(element.scrollWidth > element.clientWidth);
|
|
761
|
+
measureCut();
|
|
762
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
763
|
+
const observer = new ResizeObserver(measureCut);
|
|
764
|
+
observer.observe(element);
|
|
765
|
+
return () => observer.disconnect();
|
|
766
|
+
}, []);
|
|
767
|
+
return /* @__PURE__ */ jsxs(Combobox$1.Item, {
|
|
768
|
+
value: option,
|
|
769
|
+
index,
|
|
770
|
+
ref: measure,
|
|
771
|
+
"data-index": index,
|
|
772
|
+
style,
|
|
773
|
+
"data-slot": "multi-select-item",
|
|
774
|
+
className: cn(popupItemClass("base-ui"), "group"),
|
|
775
|
+
children: [
|
|
776
|
+
/* @__PURE__ */ jsx("span", {
|
|
777
|
+
"data-slot": "multi-select-item-indicator",
|
|
778
|
+
"aria-hidden": "true",
|
|
779
|
+
className: "flex size-4 shrink-0 items-center justify-center rounded-sm border border-input text-primary-foreground transition-colors group-data-[selected]:border-primary group-data-[selected]:bg-primary",
|
|
780
|
+
children: /* @__PURE__ */ jsx(IconCheck, {
|
|
781
|
+
className: "size-3 opacity-0 group-data-[selected]:opacity-100",
|
|
782
|
+
stroke: 3
|
|
783
|
+
})
|
|
784
|
+
}),
|
|
785
|
+
option.leading,
|
|
786
|
+
/* @__PURE__ */ jsxs(Tooltip, {
|
|
787
|
+
open: highlighted && cut,
|
|
788
|
+
children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
789
|
+
"data-slot": "multi-select-item-label",
|
|
790
|
+
"data-overflowing": cut ? "" : void 0,
|
|
791
|
+
render: /* @__PURE__ */ jsx("span", {
|
|
792
|
+
ref: measureLabel,
|
|
793
|
+
className: "min-w-0 flex-1 truncate"
|
|
794
|
+
}),
|
|
795
|
+
children: option.label
|
|
796
|
+
}, option.label), /* @__PURE__ */ jsx(TooltipContent, {
|
|
797
|
+
side: "right",
|
|
798
|
+
children: option.label
|
|
799
|
+
})]
|
|
800
|
+
}),
|
|
801
|
+
option.count !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
802
|
+
className: "text-xs text-muted-foreground tabular-nums",
|
|
803
|
+
children: option.count
|
|
1008
804
|
})
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
children: option.label
|
|
1014
|
-
}),
|
|
1015
|
-
option.count !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
1016
|
-
className: "text-xs text-muted-foreground tabular-nums",
|
|
1017
|
-
children: option.count
|
|
1018
|
-
})
|
|
1019
|
-
]
|
|
1020
|
-
});
|
|
1021
|
-
var Options = ({ scroller, scrollTo, busy }) => {
|
|
805
|
+
]
|
|
806
|
+
});
|
|
807
|
+
};
|
|
808
|
+
var Options = ({ scroller, scrollTo, busy, highlightedValue }) => {
|
|
1022
809
|
const items = Combobox$1.useFilteredItems();
|
|
1023
810
|
const virtual = items.length > 100;
|
|
1024
811
|
const [mounted, setMounted] = useState(false);
|
|
@@ -1042,7 +829,8 @@ var Options = ({ scroller, scrollTo, busy }) => {
|
|
|
1042
829
|
className: "p-1 outline-none",
|
|
1043
830
|
children: items.map((option, index) => /* @__PURE__ */ jsx(Option, {
|
|
1044
831
|
option,
|
|
1045
|
-
index
|
|
832
|
+
index,
|
|
833
|
+
highlighted: highlightedValue === option.value
|
|
1046
834
|
}, option.value))
|
|
1047
835
|
});
|
|
1048
836
|
return /* @__PURE__ */ jsx(Combobox$1.List, {
|
|
@@ -1055,6 +843,7 @@ var Options = ({ scroller, scrollTo, busy }) => {
|
|
|
1055
843
|
return option === void 0 ? null : /* @__PURE__ */ jsx(Option, {
|
|
1056
844
|
option,
|
|
1057
845
|
index: row.index,
|
|
846
|
+
highlighted: highlightedValue === option.value,
|
|
1058
847
|
measure: virtualizer.measureElement,
|
|
1059
848
|
style: {
|
|
1060
849
|
position: "absolute",
|
|
@@ -1078,7 +867,7 @@ var Options = ({ scroller, scrollTo, busy }) => {
|
|
|
1078
867
|
* server: the caller fetches the options for the typed text, and says when they are loading,
|
|
1079
868
|
* failed, or have another page.
|
|
1080
869
|
*/
|
|
1081
|
-
var MultiSelect = ({ placeholder, searchPlaceholder, options, value, onValueChange, id, disabled = false, className, onSearchChange, searchDelay = 250, selectedOptions, loading = false, error = false, onRetry, hasMore = false, onLoadMore, loadingMore = false, labels: labelOverrides, ...rest }) => {
|
|
870
|
+
var MultiSelect = ({ placeholder, searchPlaceholder, options, value, onValueChange, id, disabled = false, className, onSearchChange, searchDelay = 250, selectedOptions, loading = false, error = false, onRetry, hasMore = false, onLoadMore, loadingMore = false, labels: labelOverrides, summary = "selection", ...rest }) => {
|
|
1082
871
|
const labels = useMemo(() => ({
|
|
1083
872
|
...DEFAULT_MULTI_SELECT_LABELS,
|
|
1084
873
|
...labelOverrides
|
|
@@ -1096,6 +885,9 @@ var MultiSelect = ({ placeholder, searchPlaceholder, options, value, onValueChan
|
|
|
1096
885
|
const refScroller = useRef(null);
|
|
1097
886
|
const refScrollTo = useRef(() => void 0);
|
|
1098
887
|
const refTimer = useRef(void 0);
|
|
888
|
+
const refTriggerText = useRef(null);
|
|
889
|
+
const [popupOpen, setPopupOpen] = useState(false);
|
|
890
|
+
const [highlightedValue, setHighlightedValue] = useState(null);
|
|
1099
891
|
const refReported = useRef(void 0);
|
|
1100
892
|
const refOpen = useRef(false);
|
|
1101
893
|
const errorMessage = typeof error === "string" ? error : labels.error;
|
|
@@ -1119,6 +911,8 @@ var MultiSelect = ({ placeholder, searchPlaceholder, options, value, onValueChan
|
|
|
1119
911
|
},
|
|
1120
912
|
onOpenChange: (open) => {
|
|
1121
913
|
window.clearTimeout(refTimer.current);
|
|
914
|
+
setPopupOpen(open);
|
|
915
|
+
if (!open) setHighlightedValue(null);
|
|
1122
916
|
refOpen.current = open;
|
|
1123
917
|
refReported.current = open ? "" : void 0;
|
|
1124
918
|
if (open && onSearchChange !== void 0) onSearchChange("");
|
|
@@ -1126,21 +920,33 @@ var MultiSelect = ({ placeholder, searchPlaceholder, options, value, onValueChan
|
|
|
1126
920
|
itemToStringLabel: (option) => option.label,
|
|
1127
921
|
isItemEqualToValue: (a, b) => a.value === b.value,
|
|
1128
922
|
virtualized: items.length > 100,
|
|
1129
|
-
onItemHighlighted: (
|
|
923
|
+
onItemHighlighted: (item, details) => {
|
|
924
|
+
setHighlightedValue(item?.value ?? null);
|
|
1130
925
|
if (details.reason === "keyboard" && details.index >= 0) refScrollTo.current(details.index);
|
|
1131
926
|
},
|
|
1132
|
-
children: [/* @__PURE__ */ jsxs(
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
927
|
+
children: [/* @__PURE__ */ jsxs(Tooltip, {
|
|
928
|
+
disabled: popupOpen,
|
|
929
|
+
onOpenChange: (open, details) => {
|
|
930
|
+
const element = refTriggerText.current;
|
|
931
|
+
if (open && !(element && element.scrollWidth > element.clientWidth)) details.cancel();
|
|
932
|
+
},
|
|
933
|
+
children: [/* @__PURE__ */ jsxs(TooltipTrigger, {
|
|
934
|
+
"data-slot": "multi-select-trigger",
|
|
935
|
+
render: /* @__PURE__ */ jsx(Combobox$1.Trigger, {
|
|
936
|
+
id,
|
|
937
|
+
"aria-label": rest["aria-label"],
|
|
938
|
+
"data-set": chosen.length > 0 ? "" : void 0,
|
|
939
|
+
className: cn(TRIGGER, className)
|
|
940
|
+
}),
|
|
941
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
942
|
+
ref: refTriggerText,
|
|
943
|
+
className: cn("min-w-0 flex-1 truncate text-left", chosen.length === 0 && "text-muted-foreground"),
|
|
944
|
+
children: summarize(chosen, placeholder, labels, summary)
|
|
945
|
+
}), /* @__PURE__ */ jsx(IconChevronDown, {
|
|
946
|
+
"aria-hidden": "true",
|
|
947
|
+
className: "size-4 shrink-0 text-muted-foreground"
|
|
948
|
+
})]
|
|
949
|
+
}), /* @__PURE__ */ jsx(TooltipContent, { children: fullSelection(chosen, placeholder, labels, summary) })]
|
|
1144
950
|
}), /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
|
|
1145
951
|
sideOffset: 4,
|
|
1146
952
|
align: "start",
|
|
@@ -1185,7 +991,8 @@ var MultiSelect = ({ placeholder, searchPlaceholder, options, value, onValueChan
|
|
|
1185
991
|
children: /* @__PURE__ */ jsx(Options, {
|
|
1186
992
|
scroller: refScroller,
|
|
1187
993
|
scrollTo: refScrollTo,
|
|
1188
|
-
busy: loading
|
|
994
|
+
busy: loading,
|
|
995
|
+
highlightedValue
|
|
1189
996
|
})
|
|
1190
997
|
}),
|
|
1191
998
|
hasMore && onLoadMore !== void 0 && /* @__PURE__ */ jsx("div", {
|
|
@@ -2470,16 +2277,6 @@ var DialogDescription = ({ className, ...props }) => {
|
|
|
2470
2277
|
});
|
|
2471
2278
|
};
|
|
2472
2279
|
//#endregion
|
|
2473
|
-
//#region ../ui/src/components/ui/input/input.tsx
|
|
2474
|
-
var Input = ({ className, type, ...props }) => {
|
|
2475
|
-
return /* @__PURE__ */ jsx(Input$1, {
|
|
2476
|
-
type,
|
|
2477
|
-
"data-slot": "input",
|
|
2478
|
-
className: cn("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className),
|
|
2479
|
-
...props
|
|
2480
|
-
});
|
|
2481
|
-
};
|
|
2482
|
-
//#endregion
|
|
2483
2280
|
//#region ../ui/src/components/ui/textarea/textarea.tsx
|
|
2484
2281
|
var Textarea = ({ className, ...props }) => {
|
|
2485
2282
|
return /* @__PURE__ */ jsx("textarea", {
|
|
@@ -2583,7 +2380,7 @@ var CommandInput = ({ className, ...props }) => {
|
|
|
2583
2380
|
"data-slot": "command-input-wrapper",
|
|
2584
2381
|
className: "border-b border-border p-1",
|
|
2585
2382
|
children: /* @__PURE__ */ jsxs(InputGroup, {
|
|
2586
|
-
className: "h-8 border-transparent bg-transparent shadow-none *:data-[slot=input-group-addon]:pl-2",
|
|
2383
|
+
className: "h-8 border-transparent bg-transparent shadow-none *:data-[slot=input-group-addon]:pl-2 dark:bg-transparent",
|
|
2587
2384
|
children: [/* @__PURE__ */ jsx(Command$1.Input, {
|
|
2588
2385
|
"data-slot": "command-input",
|
|
2589
2386
|
className: cn("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
@@ -2867,157 +2664,6 @@ var DrawerDescription = ({ className, ...props }) => {
|
|
|
2867
2664
|
});
|
|
2868
2665
|
};
|
|
2869
2666
|
//#endregion
|
|
2870
|
-
//#region ../ui/src/components/ui/dropdown-menu/dropdown-menu.tsx
|
|
2871
|
-
var DropdownMenu = ({ ...props }) => {
|
|
2872
|
-
return /* @__PURE__ */ jsx(Menu.Root, {
|
|
2873
|
-
"data-slot": "dropdown-menu",
|
|
2874
|
-
...props
|
|
2875
|
-
});
|
|
2876
|
-
};
|
|
2877
|
-
var DropdownMenuPortal = ({ ...props }) => {
|
|
2878
|
-
return /* @__PURE__ */ jsx(Menu.Portal, {
|
|
2879
|
-
"data-slot": "dropdown-menu-portal",
|
|
2880
|
-
...props
|
|
2881
|
-
});
|
|
2882
|
-
};
|
|
2883
|
-
var DropdownMenuTrigger = ({ ...props }) => {
|
|
2884
|
-
return /* @__PURE__ */ jsx(Menu.Trigger, {
|
|
2885
|
-
"data-slot": "dropdown-menu-trigger",
|
|
2886
|
-
...props
|
|
2887
|
-
});
|
|
2888
|
-
};
|
|
2889
|
-
/**
|
|
2890
|
-
* Scrolls inside a DS ScrollArea like the other popup lists, with the bar shown
|
|
2891
|
-
* for as long as the menu overflows and a fade on whichever end is cut off.
|
|
2892
|
-
*
|
|
2893
|
-
* Base UI puts `role="menu"` on this popup itself and offers no inner list part
|
|
2894
|
-
* to move it onto, so the ScrollArea sits INSIDE the role. That is only legal
|
|
2895
|
-
* because ScrollArea drops the `role="presentation"` Base UI gives its root,
|
|
2896
|
-
* viewport and content: a menu may not own presentation wrappers (axe reports
|
|
2897
|
-
* a critical aria-required-children violation), but it may own plain divs.
|
|
2898
|
-
* e2e/a11y.spec.ts scans the open menu in both themes to keep it that way.
|
|
2899
|
-
*/
|
|
2900
|
-
var DropdownMenuContent = ({ align = "start", alignOffset = 0, side = "bottom", sideOffset = 4, className, children, ...props }) => {
|
|
2901
|
-
return /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(Menu.Positioner, {
|
|
2902
|
-
className: "isolate z-50 outline-none",
|
|
2903
|
-
align,
|
|
2904
|
-
alignOffset,
|
|
2905
|
-
side,
|
|
2906
|
-
sideOffset,
|
|
2907
|
-
children: /* @__PURE__ */ jsx(Menu.Popup, {
|
|
2908
|
-
"data-slot": "dropdown-menu-content",
|
|
2909
|
-
className: cn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95", "motion-reduce:animate-none", className),
|
|
2910
|
-
...props,
|
|
2911
|
-
children: /* @__PURE__ */ jsx(ScrollArea, {
|
|
2912
|
-
type: "always",
|
|
2913
|
-
fade: true,
|
|
2914
|
-
focusable: false,
|
|
2915
|
-
className: "max-h-inherit",
|
|
2916
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
2917
|
-
className: "p-1",
|
|
2918
|
-
children
|
|
2919
|
-
})
|
|
2920
|
-
})
|
|
2921
|
-
})
|
|
2922
|
-
}) });
|
|
2923
|
-
};
|
|
2924
|
-
var DropdownMenuGroup = ({ ...props }) => {
|
|
2925
|
-
return /* @__PURE__ */ jsx(Menu.Group, {
|
|
2926
|
-
"data-slot": "dropdown-menu-group",
|
|
2927
|
-
...props
|
|
2928
|
-
});
|
|
2929
|
-
};
|
|
2930
|
-
var DropdownMenuLabel = ({ className, inset, ...props }) => {
|
|
2931
|
-
return /* @__PURE__ */ jsx(Menu.GroupLabel, {
|
|
2932
|
-
"data-slot": "dropdown-menu-label",
|
|
2933
|
-
"data-inset": inset,
|
|
2934
|
-
className: cn(POPUP_GROUP_LABEL_CLASS, "data-[inset=true]:pl-7", className),
|
|
2935
|
-
...props
|
|
2936
|
-
});
|
|
2937
|
-
};
|
|
2938
|
-
var DropdownMenuItem = ({ className, inset, variant = "default", ...props }) => {
|
|
2939
|
-
return /* @__PURE__ */ jsx(Menu.Item, {
|
|
2940
|
-
"data-slot": "dropdown-menu-item",
|
|
2941
|
-
"data-inset": inset,
|
|
2942
|
-
"data-variant": variant,
|
|
2943
|
-
className: cn("group/dropdown-menu-item", popupItemClass(), "data-[inset=true]:pl-7", "data-[variant=destructive]:text-destructive data-[variant=destructive]:[&>svg]:text-destructive", "data-[variant=destructive]:data-highlighted:bg-destructive/10 data-[variant=destructive]:data-highlighted:text-destructive", className),
|
|
2944
|
-
...props
|
|
2945
|
-
});
|
|
2946
|
-
};
|
|
2947
|
-
var DropdownMenuSub = ({ ...props }) => {
|
|
2948
|
-
return /* @__PURE__ */ jsx(Menu.SubmenuRoot, {
|
|
2949
|
-
"data-slot": "dropdown-menu-sub",
|
|
2950
|
-
...props
|
|
2951
|
-
});
|
|
2952
|
-
};
|
|
2953
|
-
var DropdownMenuSubTrigger = ({ className, inset, children, ...props }) => {
|
|
2954
|
-
return /* @__PURE__ */ jsxs(Menu.SubmenuTrigger, {
|
|
2955
|
-
"data-slot": "dropdown-menu-sub-trigger",
|
|
2956
|
-
"data-inset": inset,
|
|
2957
|
-
className: cn(popupItemClass(), "data-[inset=true]:pl-7 data-popup-open:bg-foreground/6 data-popup-open:[&>svg]:text-foreground", className),
|
|
2958
|
-
...props,
|
|
2959
|
-
children: [children, /* @__PURE__ */ jsx(IconChevronRight, { className: "ml-auto" })]
|
|
2960
|
-
});
|
|
2961
|
-
};
|
|
2962
|
-
var DropdownMenuSubContent = ({ align = "start", alignOffset = -3, side = "right", sideOffset = 0, className, ...props }) => {
|
|
2963
|
-
return /* @__PURE__ */ jsx(DropdownMenuContent, {
|
|
2964
|
-
"data-slot": "dropdown-menu-sub-content",
|
|
2965
|
-
className: cn("w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", "motion-reduce:animate-none", className),
|
|
2966
|
-
align,
|
|
2967
|
-
alignOffset,
|
|
2968
|
-
side,
|
|
2969
|
-
sideOffset,
|
|
2970
|
-
...props
|
|
2971
|
-
});
|
|
2972
|
-
};
|
|
2973
|
-
var DropdownMenuCheckboxItem = ({ className, children, checked, inset, ...props }) => {
|
|
2974
|
-
return /* @__PURE__ */ jsxs(Menu.CheckboxItem, {
|
|
2975
|
-
"data-slot": "dropdown-menu-checkbox-item",
|
|
2976
|
-
"data-inset": inset,
|
|
2977
|
-
className: cn(popupItemClass("base-ui", true), "data-checked:font-medium data-[inset=true]:pl-7", className),
|
|
2978
|
-
checked,
|
|
2979
|
-
...props,
|
|
2980
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
2981
|
-
className: POPUP_ITEM_INDICATOR_CLASS,
|
|
2982
|
-
"data-slot": "dropdown-menu-checkbox-item-indicator",
|
|
2983
|
-
children: /* @__PURE__ */ jsx(Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(IconCheck, {}) })
|
|
2984
|
-
}), children]
|
|
2985
|
-
});
|
|
2986
|
-
};
|
|
2987
|
-
var DropdownMenuRadioGroup = ({ ...props }) => {
|
|
2988
|
-
return /* @__PURE__ */ jsx(Menu.RadioGroup, {
|
|
2989
|
-
"data-slot": "dropdown-menu-radio-group",
|
|
2990
|
-
...props
|
|
2991
|
-
});
|
|
2992
|
-
};
|
|
2993
|
-
var DropdownMenuRadioItem = ({ className, children, inset, ...props }) => {
|
|
2994
|
-
return /* @__PURE__ */ jsxs(Menu.RadioItem, {
|
|
2995
|
-
"data-slot": "dropdown-menu-radio-item",
|
|
2996
|
-
"data-inset": inset,
|
|
2997
|
-
className: cn(popupItemClass("base-ui", true), "data-checked:font-medium data-[inset=true]:pl-7", className),
|
|
2998
|
-
...props,
|
|
2999
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
3000
|
-
className: POPUP_ITEM_INDICATOR_CLASS,
|
|
3001
|
-
"data-slot": "dropdown-menu-radio-item-indicator",
|
|
3002
|
-
children: /* @__PURE__ */ jsx(Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsx(IconCheck, {}) })
|
|
3003
|
-
}), children]
|
|
3004
|
-
});
|
|
3005
|
-
};
|
|
3006
|
-
var DropdownMenuSeparator = ({ className, ...props }) => {
|
|
3007
|
-
return /* @__PURE__ */ jsx(Menu.Separator, {
|
|
3008
|
-
"data-slot": "dropdown-menu-separator",
|
|
3009
|
-
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
3010
|
-
...props
|
|
3011
|
-
});
|
|
3012
|
-
};
|
|
3013
|
-
var DropdownMenuShortcut = ({ className, ...props }) => {
|
|
3014
|
-
return /* @__PURE__ */ jsx("span", {
|
|
3015
|
-
"data-slot": "dropdown-menu-shortcut",
|
|
3016
|
-
className: cn("ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground", className),
|
|
3017
|
-
...props
|
|
3018
|
-
});
|
|
3019
|
-
};
|
|
3020
|
-
//#endregion
|
|
3021
2667
|
//#region ../ui/src/components/ui/empty/empty.tsx
|
|
3022
2668
|
var Empty = ({ className, ...props }) => {
|
|
3023
2669
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -3877,31 +3523,48 @@ var Pagination = ({ page, count, onPageChange, siblingCount = 1, className }) =>
|
|
|
3877
3523
|
//#endregion
|
|
3878
3524
|
//#region ../ui/src/components/ui/progress/progress.tsx
|
|
3879
3525
|
/**
|
|
3880
|
-
* The
|
|
3881
|
-
*
|
|
3882
|
-
*
|
|
3526
|
+
* The tones: a closed set of semantic colours rather than a class string, so a bar cannot carry a
|
|
3527
|
+
* colour the theme does not define and dark mode and a re-theme keep working. Each is the theme token
|
|
3528
|
+
* the fill uses; the track is a 20% tint of the same token.
|
|
3883
3529
|
*/
|
|
3884
|
-
var
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3530
|
+
var TONE_TOKEN = {
|
|
3531
|
+
default: "var(--primary)",
|
|
3532
|
+
info: "var(--info)",
|
|
3533
|
+
success: "var(--success)",
|
|
3534
|
+
warning: "var(--warning)",
|
|
3535
|
+
destructive: "var(--destructive)"
|
|
3536
|
+
};
|
|
3537
|
+
/**
|
|
3538
|
+
* Colours an app can set without a class string. --progress-color replaces the fill (any colour, such as an
|
|
3539
|
+
* app's own status tokens); --progress-track replaces the track, which does not follow the fill: an app
|
|
3540
|
+
* that wants a neutral track sets it to var(--muted). Both are read where the bar is, so they follow the
|
|
3541
|
+
* theme and can be set on :root or on any ancestor.
|
|
3542
|
+
*/
|
|
3543
|
+
var progressFill = (tone) => `var(--progress-color, ${TONE_TOKEN[tone]})`;
|
|
3544
|
+
var progressTrack = (tone) => `var(--progress-track, color-mix(in oklab, ${TONE_TOKEN[tone]} 20%, transparent))`;
|
|
3545
|
+
/**
|
|
3546
|
+
* How the fill eases its width. The defaults are the 300ms ease-in-out it always had; an app retunes them
|
|
3547
|
+
* with --progress-duration and --progress-ease, or turns the easing off with `animated={false}` when the
|
|
3548
|
+
* number it shows is itself animated and the bar is driven from the same clock.
|
|
3549
|
+
*/
|
|
3550
|
+
var PROGRESS_DURATION = "var(--progress-duration, 300ms)";
|
|
3551
|
+
var PROGRESS_EASE = "var(--progress-ease, cubic-bezier(0.4, 0, 0.2, 1))";
|
|
3552
|
+
var progressTrackVariants = cva("relative w-full overflow-hidden rounded-full", {
|
|
3553
|
+
variants: { size: {
|
|
3554
|
+
sm: "h-1",
|
|
3555
|
+
default: "h-2"
|
|
3901
3556
|
} },
|
|
3902
|
-
defaultVariants: {
|
|
3557
|
+
defaultVariants: { size: "default" }
|
|
3903
3558
|
});
|
|
3904
|
-
var Progress = ({ value = null, tone, className, ...props }) => {
|
|
3559
|
+
var Progress = ({ value = null, tone = "default", size, animated = true, className, ...props }) => {
|
|
3560
|
+
const fillStyle = {
|
|
3561
|
+
backgroundColor: progressFill(tone),
|
|
3562
|
+
...value != null ? { width: `${value}%` } : null,
|
|
3563
|
+
...animated ? {
|
|
3564
|
+
transitionDuration: PROGRESS_DURATION,
|
|
3565
|
+
transitionTimingFunction: PROGRESS_EASE
|
|
3566
|
+
} : null
|
|
3567
|
+
};
|
|
3905
3568
|
return /* @__PURE__ */ jsx(Progress$1.Root, {
|
|
3906
3569
|
"data-slot": "progress",
|
|
3907
3570
|
value: value ?? null,
|
|
@@ -3909,12 +3572,13 @@ var Progress = ({ value = null, tone, className, ...props }) => {
|
|
|
3909
3572
|
...props,
|
|
3910
3573
|
children: /* @__PURE__ */ jsx(Progress$1.Track, {
|
|
3911
3574
|
"data-slot": "progress-track",
|
|
3912
|
-
className: progressTrackVariants({
|
|
3575
|
+
className: progressTrackVariants({ size }),
|
|
3576
|
+
style: { backgroundColor: progressTrack(tone) },
|
|
3913
3577
|
children: /* @__PURE__ */ jsx(Progress$1.Indicator, {
|
|
3914
3578
|
"data-slot": "progress-indicator",
|
|
3915
|
-
"data-tone": tone
|
|
3916
|
-
className:
|
|
3917
|
-
style:
|
|
3579
|
+
"data-tone": tone,
|
|
3580
|
+
className: cn("h-full rounded-full motion-reduce:transition-none motion-reduce:animate-none data-indeterminate:w-1/3 data-indeterminate:animate-[progress-indeterminate_1.5s_ease-in-out_infinite]", animated ? "transition-[width] duration-300 ease-in-out" : "transition-none"),
|
|
3581
|
+
style: fillStyle
|
|
3918
3582
|
})
|
|
3919
3583
|
})
|
|
3920
3584
|
});
|
|
@@ -4306,42 +3970,6 @@ var Skeleton = ({ className, ...props }) => {
|
|
|
4306
3970
|
});
|
|
4307
3971
|
};
|
|
4308
3972
|
//#endregion
|
|
4309
|
-
//#region ../ui/src/components/ui/tooltip/tooltip.tsx
|
|
4310
|
-
var TooltipProvider = ({ delay = 0, ...props }) => {
|
|
4311
|
-
return /* @__PURE__ */ jsx(Tooltip$1.Provider, {
|
|
4312
|
-
"data-slot": "tooltip-provider",
|
|
4313
|
-
delay,
|
|
4314
|
-
...props
|
|
4315
|
-
});
|
|
4316
|
-
};
|
|
4317
|
-
var Tooltip = ({ ...props }) => {
|
|
4318
|
-
return /* @__PURE__ */ jsx(Tooltip$1.Root, {
|
|
4319
|
-
"data-slot": "tooltip",
|
|
4320
|
-
...props
|
|
4321
|
-
});
|
|
4322
|
-
};
|
|
4323
|
-
var TooltipTrigger = ({ ...props }) => {
|
|
4324
|
-
return /* @__PURE__ */ jsx(Tooltip$1.Trigger, {
|
|
4325
|
-
"data-slot": "tooltip-trigger",
|
|
4326
|
-
...props
|
|
4327
|
-
});
|
|
4328
|
-
};
|
|
4329
|
-
var TooltipContent = ({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) => {
|
|
4330
|
-
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(Tooltip$1.Positioner, {
|
|
4331
|
-
align,
|
|
4332
|
-
alignOffset,
|
|
4333
|
-
side,
|
|
4334
|
-
sideOffset,
|
|
4335
|
-
className: "isolate z-50",
|
|
4336
|
-
children: /* @__PURE__ */ jsxs(Tooltip$1.Popup, {
|
|
4337
|
-
"data-slot": "tooltip-content",
|
|
4338
|
-
className: cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", "motion-reduce:animate-none", className),
|
|
4339
|
-
...props,
|
|
4340
|
-
children: [children, /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })]
|
|
4341
|
-
})
|
|
4342
|
-
}) });
|
|
4343
|
-
};
|
|
4344
|
-
//#endregion
|
|
4345
3973
|
//#region ../ui/src/components/ui/sidebar/sidebar.tsx
|
|
4346
3974
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
4347
3975
|
var SIDEBAR_COOKIE_MAX_AGE = 604800;
|
|
@@ -4960,36 +4588,6 @@ var Toaster = ({ children, toastManager = toast, ...props }) => {
|
|
|
4960
4588
|
var createToastManager = Toast$1.createToastManager;
|
|
4961
4589
|
var useToastManager = Toast$1.useToastManager;
|
|
4962
4590
|
//#endregion
|
|
4963
|
-
//#region ../ui/src/components/ui/toggle/toggle.tsx
|
|
4964
|
-
var toggleVariants = cva("inline-flex shrink-0 cursor-pointer items-center justify-center gap-1.5 rounded-lg border border-transparent text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-pressed:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-4", {
|
|
4965
|
-
variants: {
|
|
4966
|
-
variant: {
|
|
4967
|
-
default: "bg-transparent hover:bg-muted hover:text-foreground data-pressed:bg-muted",
|
|
4968
|
-
outline: "border-border bg-background hover:bg-muted hover:text-foreground data-pressed:bg-muted dark:border-input dark:bg-input/30 dark:hover:bg-input/50"
|
|
4969
|
-
},
|
|
4970
|
-
size: {
|
|
4971
|
-
sm: "h-7 px-2.5 text-[0.8rem]",
|
|
4972
|
-
default: "h-8 px-2.5",
|
|
4973
|
-
lg: "h-9 px-3"
|
|
4974
|
-
}
|
|
4975
|
-
},
|
|
4976
|
-
defaultVariants: {
|
|
4977
|
-
variant: "default",
|
|
4978
|
-
size: "default"
|
|
4979
|
-
}
|
|
4980
|
-
});
|
|
4981
|
-
var Toggle = ({ className, variant = "default", size = "default", ...props }) => {
|
|
4982
|
-
return /* @__PURE__ */ jsx(Toggle$1, {
|
|
4983
|
-
"data-slot": "toggle",
|
|
4984
|
-
className: cn(toggleVariants({
|
|
4985
|
-
variant,
|
|
4986
|
-
size,
|
|
4987
|
-
className
|
|
4988
|
-
})),
|
|
4989
|
-
...props
|
|
4990
|
-
});
|
|
4991
|
-
};
|
|
4992
|
-
//#endregion
|
|
4993
4591
|
//#region ../ui/src/components/ui/toggle-group/toggle-group.tsx
|
|
4994
4592
|
var ToggleGroupContext = createContext({
|
|
4995
4593
|
variant: "default",
|
|
@@ -5037,6 +4635,6 @@ var ToggleGroupItem = ({ className, variant, size, ...props }) => {
|
|
|
5037
4635
|
});
|
|
5038
4636
|
};
|
|
5039
4637
|
//#endregion
|
|
5040
|
-
export { AVATAR_TONES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedNumber, AspectRatio, Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentGroup, AttachmentMedia, AttachmentTitle, AttachmentTrigger, AudioPlayer, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Bubble, BubbleContent, BubbleGroup, BubbleReactions, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_MULTI_SELECT_LABELS, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, Field, FieldDescription, FieldError, FieldLabel, HoverCard, HoverCardContent, HoverCardTrigger, Indicator, InitialsAvatar, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, Marker, MarkerContent, MarkerIcon, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, MultiSelect, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPositioner, NavigationMenuTrigger, NumberText, PROGRESS_LINE_COLOR, Pagination, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressLine, Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, QuestionnaireInput, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toast, ToastAction, ToastClose, ToastContent, ToastDescription, ToastPortal, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VIRTUALIZE_FROM, VideoPlayer, avatarTone, badgeVariants, buttonVariants, clampPage, cn, createToastManager, dateToDay, dayToDate, formatCount, formatMediaTime, getPaginationRange, indicatorVariants, initialsOf, markerVariants, navigationMenuTriggerStyle, resolveChosen, spinnerVariants, summarize, tabsListVariants, toast, toggleVariants, useAnimatedValues, useCarousel, useDirection, useIsMobile, useMediaPlayer, useMergedRefs, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility, useSidebar, useToastManager };
|
|
4638
|
+
export { AVATAR_TONES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedNumber, AspectRatio, Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentGroup, AttachmentMedia, AttachmentTitle, AttachmentTrigger, AudioPlayer, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Bubble, BubbleContent, BubbleGroup, BubbleReactions, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_MULTI_SELECT_LABELS, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, Field, FieldDescription, FieldError, FieldLabel, HoverCard, HoverCardContent, HoverCardTrigger, Indicator, InitialsAvatar, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, Marker, MarkerContent, MarkerIcon, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport, MultiSelect, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPositioner, NavigationMenuTrigger, NumberText, PROGRESS_DURATION, PROGRESS_EASE, PROGRESS_LINE_COLOR, Pagination, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressLine, Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, QuestionnaireInput, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle, RICH_TEXT_ATTRIBUTES, RICH_TEXT_BODY_CLASS, RICH_TEXT_ELEMENTS, RICH_TEXT_LINK_PROTOCOLS, RICH_TEXT_MENTION_CLASS, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTextContent, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toast, ToastAction, ToastClose, ToastContent, ToastDescription, ToastPortal, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VIRTUALIZE_FROM, VideoPlayer, avatarTone, badgeVariants, buttonVariants, clampPage, cn, createToastManager, dateToDay, dayToDate, formatCount, formatMediaTime, fullSelection, getPaginationRange, indicatorVariants, initialsOf, isAllowedRichTextHref, markerVariants, navigationMenuTriggerStyle, progressFill, progressTrack, resolveChosen, richTextToNodes, spinnerVariants, summarize, tabsListVariants, toast, toggleVariants, useAnimatedValues, useCarousel, useDirection, useIsMobile, useMediaPlayer, useMergedRefs, useMessageScroller, useMessageScrollerScrollable, useMessageScrollerVisibility, useSidebar, useToastManager };
|
|
5041
4639
|
|
|
5042
4640
|
//# sourceMappingURL=index.js.map
|