@assure-one/design-system 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +295 -25
- package/dist/index.js +912 -245
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tokens/index.d.ts +1 -0
- package/dist/tokens/index.js +1 -0
- package/dist/tokens/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import * as
|
|
2
|
+
import * as React36 from 'react';
|
|
3
3
|
import { forwardRef, useState, useCallback, useId, useRef, useImperativeHandle, useEffect, createContext, useContext, useMemo } from 'react';
|
|
4
4
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
@@ -272,6 +272,7 @@ var systemTokens = {
|
|
|
272
272
|
},
|
|
273
273
|
layout: {
|
|
274
274
|
shellSidebarWidth: "var(--shell-sidebar-w)",
|
|
275
|
+
shellSidebarRailWidth: "var(--shell-sidebar-w-rail)",
|
|
275
276
|
shellHeaderHeight: "var(--shell-header-h)",
|
|
276
277
|
contentPad: "var(--content-pad)"
|
|
277
278
|
},
|
|
@@ -451,7 +452,7 @@ function MenuIcon({ size = 24, ...props }) {
|
|
|
451
452
|
{
|
|
452
453
|
d: "M3 12h18M3 6h18M3 18h18",
|
|
453
454
|
stroke: "currentColor",
|
|
454
|
-
strokeWidth: "
|
|
455
|
+
strokeWidth: "1.5",
|
|
455
456
|
strokeLinecap: "round"
|
|
456
457
|
}
|
|
457
458
|
) });
|
|
@@ -2107,7 +2108,19 @@ function MicrosoftBrandIcon({ size = 24, ...props }) {
|
|
|
2107
2108
|
/* @__PURE__ */ jsx("rect", { x: "13", y: "13", width: "10", height: "10", fill: "#FFB900" })
|
|
2108
2109
|
] });
|
|
2109
2110
|
}
|
|
2110
|
-
|
|
2111
|
+
function FilterIcon({ size = 24, ...props }) {
|
|
2112
|
+
return /* @__PURE__ */ jsx(Icon, { size, ...props, children: /* @__PURE__ */ jsx(
|
|
2113
|
+
"path",
|
|
2114
|
+
{
|
|
2115
|
+
d: "M3 4h18l-7 8v6l-4 2v-8L3 4z",
|
|
2116
|
+
stroke: "currentColor",
|
|
2117
|
+
strokeWidth: "1.5",
|
|
2118
|
+
strokeLinecap: "round",
|
|
2119
|
+
strokeLinejoin: "round"
|
|
2120
|
+
}
|
|
2121
|
+
) });
|
|
2122
|
+
}
|
|
2123
|
+
var Accordion = React36.forwardRef(function Accordion2({ className, ...props }, ref) {
|
|
2111
2124
|
return /* @__PURE__ */ jsx(
|
|
2112
2125
|
AccordionPrimitive.Root,
|
|
2113
2126
|
{
|
|
@@ -2118,11 +2131,11 @@ var Accordion = React13.forwardRef(function Accordion2({ className, ...props },
|
|
|
2118
2131
|
);
|
|
2119
2132
|
});
|
|
2120
2133
|
Accordion.displayName = AccordionPrimitive.Root.displayName;
|
|
2121
|
-
var AccordionItem =
|
|
2134
|
+
var AccordionItem = React36.forwardRef(function AccordionItem2({ className, ...props }, ref) {
|
|
2122
2135
|
return /* @__PURE__ */ jsx(AccordionPrimitive.Item, { ref, className: cn(className), ...props });
|
|
2123
2136
|
});
|
|
2124
2137
|
AccordionItem.displayName = AccordionPrimitive.Item.displayName;
|
|
2125
|
-
var AccordionTrigger =
|
|
2138
|
+
var AccordionTrigger = React36.forwardRef(function AccordionTrigger2({ children, className, ...props }, ref) {
|
|
2126
2139
|
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
2127
2140
|
AccordionPrimitive.Trigger,
|
|
2128
2141
|
{
|
|
@@ -2150,7 +2163,7 @@ var AccordionTrigger = React13.forwardRef(function AccordionTrigger2({ children,
|
|
|
2150
2163
|
) });
|
|
2151
2164
|
});
|
|
2152
2165
|
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
2153
|
-
var AccordionContent =
|
|
2166
|
+
var AccordionContent = React36.forwardRef(function AccordionContent2({ children, className, ...props }, ref) {
|
|
2154
2167
|
return /* @__PURE__ */ jsx(
|
|
2155
2168
|
AccordionPrimitive.Content,
|
|
2156
2169
|
{
|
|
@@ -2170,7 +2183,7 @@ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
|
2170
2183
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
2171
2184
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
2172
2185
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
2173
|
-
var AlertDialogOverlay =
|
|
2186
|
+
var AlertDialogOverlay = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2174
2187
|
AlertDialogPrimitive.Overlay,
|
|
2175
2188
|
{
|
|
2176
2189
|
ref,
|
|
@@ -2185,7 +2198,7 @@ var AlertDialogOverlay = React13.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2185
2198
|
}
|
|
2186
2199
|
));
|
|
2187
2200
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
2188
|
-
var AlertDialogContent =
|
|
2201
|
+
var AlertDialogContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
2189
2202
|
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
2190
2203
|
/* @__PURE__ */ jsx(
|
|
2191
2204
|
AlertDialogPrimitive.Content,
|
|
@@ -2220,7 +2233,7 @@ var AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
2220
2233
|
}
|
|
2221
2234
|
);
|
|
2222
2235
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
2223
|
-
var AlertDialogTitle =
|
|
2236
|
+
var AlertDialogTitle = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2224
2237
|
AlertDialogPrimitive.Title,
|
|
2225
2238
|
{
|
|
2226
2239
|
ref,
|
|
@@ -2232,7 +2245,7 @@ var AlertDialogTitle = React13.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
2232
2245
|
}
|
|
2233
2246
|
));
|
|
2234
2247
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
2235
|
-
var AlertDialogDescription =
|
|
2248
|
+
var AlertDialogDescription = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2236
2249
|
AlertDialogPrimitive.Description,
|
|
2237
2250
|
{
|
|
2238
2251
|
ref,
|
|
@@ -2241,7 +2254,7 @@ var AlertDialogDescription = React13.forwardRef(({ className, ...props }, ref) =
|
|
|
2241
2254
|
}
|
|
2242
2255
|
));
|
|
2243
2256
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
2244
|
-
var AlertDialogAction =
|
|
2257
|
+
var AlertDialogAction = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2245
2258
|
AlertDialogPrimitive.Action,
|
|
2246
2259
|
{
|
|
2247
2260
|
ref,
|
|
@@ -2257,7 +2270,7 @@ var AlertDialogAction = React13.forwardRef(({ className, ...props }, ref) => /*
|
|
|
2257
2270
|
}
|
|
2258
2271
|
));
|
|
2259
2272
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
2260
|
-
var AlertDialogCancel =
|
|
2273
|
+
var AlertDialogCancel = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2261
2274
|
AlertDialogPrimitive.Cancel,
|
|
2262
2275
|
{
|
|
2263
2276
|
ref,
|
|
@@ -2355,7 +2368,7 @@ var AlertDescription = forwardRef(function AlertDescription2({ className, ...pro
|
|
|
2355
2368
|
return /* @__PURE__ */ jsx("p", { ref, className: cn("text-sm opacity-90", className), ...props });
|
|
2356
2369
|
});
|
|
2357
2370
|
AlertDescription.displayName = "AlertDescription";
|
|
2358
|
-
var AspectRatio =
|
|
2371
|
+
var AspectRatio = React36.forwardRef(function AspectRatio2({ className, ratio = 16 / 9, ...props }, ref) {
|
|
2359
2372
|
return /* @__PURE__ */ jsx(
|
|
2360
2373
|
AspectRatioPrimitive.Root,
|
|
2361
2374
|
{
|
|
@@ -2408,7 +2421,7 @@ var statusDotSizes = {
|
|
|
2408
2421
|
function getInitials(name) {
|
|
2409
2422
|
return name.split(" ").map((part) => part[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
|
|
2410
2423
|
}
|
|
2411
|
-
var Avatar =
|
|
2424
|
+
var Avatar = React36.forwardRef(
|
|
2412
2425
|
function Avatar2({ src, alt, name, size = "md", variant = "initials", status, className, ...props }, ref) {
|
|
2413
2426
|
const initials = name ? getInitials(name) : "?";
|
|
2414
2427
|
const resolvedSize = size ?? "md";
|
|
@@ -2609,12 +2622,18 @@ var buttonVariants = cva(
|
|
|
2609
2622
|
ghost: "bg-transparent text-fg-2 hover:bg-bg-2 hover:text-fg",
|
|
2610
2623
|
outline: "border border-rule-strong bg-bg text-fg-2 hover:bg-bg-2 hover:border-fg-4",
|
|
2611
2624
|
link: "bg-transparent text-accent underline-offset-4 hover:underline p-0 h-auto",
|
|
2612
|
-
accent: "bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active"
|
|
2625
|
+
accent: "bg-accent text-fg-on-accent hover:bg-accent-hover active:bg-accent-active",
|
|
2626
|
+
dashed: "border-2 border-dashed border-rule bg-transparent text-fg-3 hover:border-fg-4 hover:bg-bg-2 hover:text-fg"
|
|
2613
2627
|
},
|
|
2614
2628
|
size: {
|
|
2615
2629
|
sm: "h-8 px-3 text-sm gap-1.5",
|
|
2616
2630
|
md: "h-10 px-4 text-sm gap-2",
|
|
2617
2631
|
lg: "h-12 px-6 text-base gap-2",
|
|
2632
|
+
// Icon-only sizes. Hit target ≥ 24px (WCAG 2.5.5 floor).
|
|
2633
|
+
// `icon-xs` / `icon-sm` are for dense in-row action stacks where
|
|
2634
|
+
// `size="icon"` (40×40) would visually crowd the row.
|
|
2635
|
+
"icon-xs": "size-6 [&_svg]:size-3.5",
|
|
2636
|
+
"icon-sm": "size-7 [&_svg]:size-4",
|
|
2618
2637
|
icon: "size-10"
|
|
2619
2638
|
}
|
|
2620
2639
|
},
|
|
@@ -2697,7 +2716,7 @@ function Calendar({
|
|
|
2697
2716
|
classNames,
|
|
2698
2717
|
...props
|
|
2699
2718
|
}) {
|
|
2700
|
-
const { modifiers, modifiersClassNames } =
|
|
2719
|
+
const { modifiers, modifiersClassNames } = React36.useMemo(() => {
|
|
2701
2720
|
const buckets = {};
|
|
2702
2721
|
for (const h of highlights) {
|
|
2703
2722
|
const key = h.color ?? "primary";
|
|
@@ -2712,7 +2731,7 @@ function Calendar({
|
|
|
2712
2731
|
}
|
|
2713
2732
|
return { modifiers: mods, modifiersClassNames: modClasses };
|
|
2714
2733
|
}, [highlights]);
|
|
2715
|
-
const disabledMatcher =
|
|
2734
|
+
const disabledMatcher = React36.useMemo(() => {
|
|
2716
2735
|
if (!minDate && !maxDate) return void 0;
|
|
2717
2736
|
if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];
|
|
2718
2737
|
if (minDate) return { before: minDate };
|
|
@@ -2844,8 +2863,8 @@ var CardAction = forwardRef(
|
|
|
2844
2863
|
}
|
|
2845
2864
|
);
|
|
2846
2865
|
CardAction.displayName = "CardAction";
|
|
2847
|
-
var Checkbox =
|
|
2848
|
-
const generatedId =
|
|
2866
|
+
var Checkbox = React36.forwardRef(function Checkbox2({ label, indeterminate, checked, defaultChecked, className, id: providedId, ...props }, ref) {
|
|
2867
|
+
const generatedId = React36.useId();
|
|
2849
2868
|
const id = providedId ?? generatedId;
|
|
2850
2869
|
const resolvedChecked = indeterminate ? "indeterminate" : checked;
|
|
2851
2870
|
return /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
|
|
@@ -2885,7 +2904,7 @@ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
|
2885
2904
|
var SelectRoot = SelectPrimitive.Root;
|
|
2886
2905
|
var SelectGroup = SelectPrimitive.Group;
|
|
2887
2906
|
var SelectValue = SelectPrimitive.Value;
|
|
2888
|
-
var SelectTrigger =
|
|
2907
|
+
var SelectTrigger = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2889
2908
|
SelectPrimitive.Trigger,
|
|
2890
2909
|
{
|
|
2891
2910
|
ref,
|
|
@@ -2916,7 +2935,7 @@ var SelectTrigger = React13.forwardRef(({ className, children, ...props }, ref)
|
|
|
2916
2935
|
}
|
|
2917
2936
|
));
|
|
2918
2937
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
2919
|
-
var SelectScrollUpButton =
|
|
2938
|
+
var SelectScrollUpButton = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2920
2939
|
SelectPrimitive.ScrollUpButton,
|
|
2921
2940
|
{
|
|
2922
2941
|
ref,
|
|
@@ -2926,7 +2945,7 @@ var SelectScrollUpButton = React13.forwardRef(({ className, ...props }, ref) =>
|
|
|
2926
2945
|
}
|
|
2927
2946
|
));
|
|
2928
2947
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
2929
|
-
var SelectScrollDownButton =
|
|
2948
|
+
var SelectScrollDownButton = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2930
2949
|
SelectPrimitive.ScrollDownButton,
|
|
2931
2950
|
{
|
|
2932
2951
|
ref,
|
|
@@ -2936,7 +2955,7 @@ var SelectScrollDownButton = React13.forwardRef(({ className, ...props }, ref) =
|
|
|
2936
2955
|
}
|
|
2937
2956
|
));
|
|
2938
2957
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
2939
|
-
var SelectContent =
|
|
2958
|
+
var SelectContent = React36.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
2940
2959
|
SelectPrimitive.Content,
|
|
2941
2960
|
{
|
|
2942
2961
|
ref,
|
|
@@ -2970,7 +2989,7 @@ var SelectContent = React13.forwardRef(({ className, children, position = "poppe
|
|
|
2970
2989
|
}
|
|
2971
2990
|
) }));
|
|
2972
2991
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
2973
|
-
var SelectLabel =
|
|
2992
|
+
var SelectLabel = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2974
2993
|
SelectPrimitive.Label,
|
|
2975
2994
|
{
|
|
2976
2995
|
ref,
|
|
@@ -2982,7 +3001,7 @@ var SelectLabel = React13.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2982
3001
|
}
|
|
2983
3002
|
));
|
|
2984
3003
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
2985
|
-
var SelectItem =
|
|
3004
|
+
var SelectItem = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2986
3005
|
SelectPrimitive.Item,
|
|
2987
3006
|
{
|
|
2988
3007
|
ref,
|
|
@@ -3003,7 +3022,7 @@ var SelectItem = React13.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
3003
3022
|
}
|
|
3004
3023
|
));
|
|
3005
3024
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
3006
|
-
var SelectSeparator =
|
|
3025
|
+
var SelectSeparator = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3007
3026
|
SelectPrimitive.Separator,
|
|
3008
3027
|
{
|
|
3009
3028
|
ref,
|
|
@@ -3087,11 +3106,11 @@ function ClientSelect({
|
|
|
3087
3106
|
] });
|
|
3088
3107
|
}
|
|
3089
3108
|
ClientSelect.displayName = "ClientSelect";
|
|
3090
|
-
var Collapsible =
|
|
3109
|
+
var Collapsible = React36.forwardRef(function Collapsible2({ className, ...props }, ref) {
|
|
3091
3110
|
return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { ref, className: cn(className), ...props });
|
|
3092
3111
|
});
|
|
3093
3112
|
Collapsible.displayName = CollapsiblePrimitive.Root.displayName;
|
|
3094
|
-
var CollapsibleTrigger =
|
|
3113
|
+
var CollapsibleTrigger = React36.forwardRef(function CollapsibleTrigger2({ className, ...props }, ref) {
|
|
3095
3114
|
return /* @__PURE__ */ jsx(
|
|
3096
3115
|
CollapsiblePrimitive.Trigger,
|
|
3097
3116
|
{
|
|
@@ -3106,7 +3125,7 @@ var CollapsibleTrigger = React13.forwardRef(function CollapsibleTrigger2({ class
|
|
|
3106
3125
|
);
|
|
3107
3126
|
});
|
|
3108
3127
|
CollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName;
|
|
3109
|
-
var CollapsibleContent =
|
|
3128
|
+
var CollapsibleContent = React36.forwardRef(function CollapsibleContent2({ className, ...props }, ref) {
|
|
3110
3129
|
return /* @__PURE__ */ jsx(
|
|
3111
3130
|
CollapsiblePrimitive.Content,
|
|
3112
3131
|
{
|
|
@@ -3183,7 +3202,7 @@ ComingSoon.displayName = "ComingSoon";
|
|
|
3183
3202
|
var Dialog = DialogPrimitive.Root;
|
|
3184
3203
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
3185
3204
|
var DialogPortal = DialogPrimitive.Portal;
|
|
3186
|
-
var DialogOverlay =
|
|
3205
|
+
var DialogOverlay = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3187
3206
|
DialogPrimitive.Overlay,
|
|
3188
3207
|
{
|
|
3189
3208
|
ref,
|
|
@@ -3204,7 +3223,7 @@ var dialogSizeStyles = {
|
|
|
3204
3223
|
lg: "max-w-2xl",
|
|
3205
3224
|
full: "max-w-[calc(100vw-2rem)]"
|
|
3206
3225
|
};
|
|
3207
|
-
var DialogContent =
|
|
3226
|
+
var DialogContent = React36.forwardRef(({ size = "md", showCloseButton = true, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
3208
3227
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
3209
3228
|
/* @__PURE__ */ jsxs(
|
|
3210
3229
|
DialogPrimitive.Content,
|
|
@@ -3245,7 +3264,7 @@ var DialogContent = React13.forwardRef(({ size = "md", showCloseButton = true, c
|
|
|
3245
3264
|
)
|
|
3246
3265
|
] }));
|
|
3247
3266
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
3248
|
-
var DialogClose =
|
|
3267
|
+
var DialogClose = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Close, { ref, className: cn(className), ...props }));
|
|
3249
3268
|
DialogClose.displayName = "DialogClose";
|
|
3250
3269
|
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex flex-col gap-1.5 pr-8", className), ...props });
|
|
3251
3270
|
DialogHeader.displayName = "DialogHeader";
|
|
@@ -3260,7 +3279,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
3260
3279
|
}
|
|
3261
3280
|
);
|
|
3262
3281
|
DialogFooter.displayName = "DialogFooter";
|
|
3263
|
-
var DialogTitle =
|
|
3282
|
+
var DialogTitle = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3264
3283
|
DialogPrimitive.Title,
|
|
3265
3284
|
{
|
|
3266
3285
|
ref,
|
|
@@ -3272,7 +3291,7 @@ var DialogTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3272
3291
|
}
|
|
3273
3292
|
));
|
|
3274
3293
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
3275
|
-
var DialogDescription =
|
|
3294
|
+
var DialogDescription = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3276
3295
|
DialogPrimitive.Description,
|
|
3277
3296
|
{
|
|
3278
3297
|
ref,
|
|
@@ -3302,17 +3321,17 @@ function CommandPalette({
|
|
|
3302
3321
|
onOpenChange,
|
|
3303
3322
|
placeholder = "Type a command or search..."
|
|
3304
3323
|
}) {
|
|
3305
|
-
const [internalOpen, setInternalOpen] =
|
|
3324
|
+
const [internalOpen, setInternalOpen] = React36.useState(false);
|
|
3306
3325
|
const isControlled = controlledOpen !== void 0;
|
|
3307
3326
|
const open = isControlled ? controlledOpen : internalOpen;
|
|
3308
|
-
const setOpen =
|
|
3327
|
+
const setOpen = React36.useCallback(
|
|
3309
3328
|
(value) => {
|
|
3310
3329
|
if (!isControlled) setInternalOpen(value);
|
|
3311
3330
|
onOpenChange?.(value);
|
|
3312
3331
|
},
|
|
3313
3332
|
[isControlled, onOpenChange]
|
|
3314
3333
|
);
|
|
3315
|
-
|
|
3334
|
+
React36.useEffect(() => {
|
|
3316
3335
|
function handleKeyDown(e) {
|
|
3317
3336
|
if ((e.metaKey || e.ctrlKey) && e.key === "k") {
|
|
3318
3337
|
e.preventDefault();
|
|
@@ -3462,8 +3481,8 @@ function ConfirmActionButton({
|
|
|
3462
3481
|
destructive = true,
|
|
3463
3482
|
contentClassName
|
|
3464
3483
|
}) {
|
|
3465
|
-
const [open, setOpen] =
|
|
3466
|
-
const [pending, setPending] =
|
|
3484
|
+
const [open, setOpen] = React36.useState(false);
|
|
3485
|
+
const [pending, setPending] = React36.useState(false);
|
|
3467
3486
|
const handleConfirm = async (event) => {
|
|
3468
3487
|
event.preventDefault();
|
|
3469
3488
|
setPending(true);
|
|
@@ -3514,7 +3533,7 @@ var ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
|
3514
3533
|
var ContextMenuPortal = ContextMenuPrimitive.Portal;
|
|
3515
3534
|
var ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
3516
3535
|
var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
3517
|
-
var ContextMenuSubTrigger =
|
|
3536
|
+
var ContextMenuSubTrigger = React36.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3518
3537
|
ContextMenuPrimitive.SubTrigger,
|
|
3519
3538
|
{
|
|
3520
3539
|
ref,
|
|
@@ -3535,7 +3554,7 @@ var ContextMenuSubTrigger = React13.forwardRef(({ className, inset, children, ..
|
|
|
3535
3554
|
}
|
|
3536
3555
|
));
|
|
3537
3556
|
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
3538
|
-
var ContextMenuSubContent =
|
|
3557
|
+
var ContextMenuSubContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3539
3558
|
ContextMenuPrimitive.SubContent,
|
|
3540
3559
|
{
|
|
3541
3560
|
ref,
|
|
@@ -3551,7 +3570,7 @@ var ContextMenuSubContent = React13.forwardRef(({ className, ...props }, ref) =>
|
|
|
3551
3570
|
}
|
|
3552
3571
|
));
|
|
3553
3572
|
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
|
|
3554
|
-
var ContextMenuContent =
|
|
3573
|
+
var ContextMenuContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
3555
3574
|
ContextMenuPrimitive.Content,
|
|
3556
3575
|
{
|
|
3557
3576
|
ref,
|
|
@@ -3567,7 +3586,7 @@ var ContextMenuContent = React13.forwardRef(({ className, ...props }, ref) => /*
|
|
|
3567
3586
|
}
|
|
3568
3587
|
) }));
|
|
3569
3588
|
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
3570
|
-
var ContextMenuItem =
|
|
3589
|
+
var ContextMenuItem = React36.forwardRef(({ className, destructive, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3571
3590
|
ContextMenuPrimitive.Item,
|
|
3572
3591
|
{
|
|
3573
3592
|
ref,
|
|
@@ -3585,7 +3604,7 @@ var ContextMenuItem = React13.forwardRef(({ className, destructive, inset, ...pr
|
|
|
3585
3604
|
}
|
|
3586
3605
|
));
|
|
3587
3606
|
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
|
|
3588
|
-
var ContextMenuCheckboxItem =
|
|
3607
|
+
var ContextMenuCheckboxItem = React36.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3589
3608
|
ContextMenuPrimitive.CheckboxItem,
|
|
3590
3609
|
{
|
|
3591
3610
|
ref,
|
|
@@ -3605,7 +3624,7 @@ var ContextMenuCheckboxItem = React13.forwardRef(({ className, children, checked
|
|
|
3605
3624
|
}
|
|
3606
3625
|
));
|
|
3607
3626
|
ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
|
|
3608
|
-
var ContextMenuRadioItem =
|
|
3627
|
+
var ContextMenuRadioItem = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3609
3628
|
ContextMenuPrimitive.RadioItem,
|
|
3610
3629
|
{
|
|
3611
3630
|
ref,
|
|
@@ -3624,7 +3643,7 @@ var ContextMenuRadioItem = React13.forwardRef(({ className, children, ...props }
|
|
|
3624
3643
|
}
|
|
3625
3644
|
));
|
|
3626
3645
|
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
|
|
3627
|
-
var ContextMenuLabel =
|
|
3646
|
+
var ContextMenuLabel = React36.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3628
3647
|
ContextMenuPrimitive.Label,
|
|
3629
3648
|
{
|
|
3630
3649
|
ref,
|
|
@@ -3637,7 +3656,7 @@ var ContextMenuLabel = React13.forwardRef(({ className, inset, ...props }, ref)
|
|
|
3637
3656
|
}
|
|
3638
3657
|
));
|
|
3639
3658
|
ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
|
|
3640
|
-
var ContextMenuSeparator =
|
|
3659
|
+
var ContextMenuSeparator = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3641
3660
|
ContextMenuPrimitive.Separator,
|
|
3642
3661
|
{
|
|
3643
3662
|
ref,
|
|
@@ -3686,7 +3705,7 @@ var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
|
3686
3705
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
3687
3706
|
var PopoverPortal = PopoverPrimitive.Portal;
|
|
3688
3707
|
var PopoverClose = PopoverPrimitive.Close;
|
|
3689
|
-
var PopoverContent =
|
|
3708
|
+
var PopoverContent = React36.forwardRef(({ className, align = "center", side = "bottom", sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
3690
3709
|
PopoverPrimitive.Content,
|
|
3691
3710
|
{
|
|
3692
3711
|
ref,
|
|
@@ -3896,13 +3915,50 @@ var DatePicker = forwardRef(function DatePicker2({
|
|
|
3896
3915
|
] });
|
|
3897
3916
|
});
|
|
3898
3917
|
DatePicker.displayName = "DatePicker";
|
|
3918
|
+
var chipVariants = cva(
|
|
3919
|
+
cn(
|
|
3920
|
+
"inline-flex items-center gap-1 rounded-full px-2.5 py-1",
|
|
3921
|
+
"text-[12px] font-medium",
|
|
3922
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
3923
|
+
"motion-reduce:transition-none",
|
|
3924
|
+
"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]"
|
|
3925
|
+
),
|
|
3926
|
+
{
|
|
3927
|
+
variants: {
|
|
3928
|
+
variant: {
|
|
3929
|
+
primary: "bg-primary/10 text-primary hover:bg-primary/15",
|
|
3930
|
+
neutral: "bg-muted text-fg-2 hover:bg-muted/80"
|
|
3931
|
+
}
|
|
3932
|
+
},
|
|
3933
|
+
defaultVariants: {
|
|
3934
|
+
variant: "primary"
|
|
3935
|
+
}
|
|
3936
|
+
}
|
|
3937
|
+
);
|
|
3938
|
+
var DismissibleChip = React36.forwardRef(function DismissibleChip2({ label, onDismiss, variant, className, ...props }, ref) {
|
|
3939
|
+
return /* @__PURE__ */ jsxs(
|
|
3940
|
+
"button",
|
|
3941
|
+
{
|
|
3942
|
+
ref,
|
|
3943
|
+
type: "button",
|
|
3944
|
+
onClick: onDismiss,
|
|
3945
|
+
"aria-label": typeof label === "string" ? `Remove ${label} filter` : "Remove filter",
|
|
3946
|
+
className: cn(chipVariants({ variant }), className),
|
|
3947
|
+
...props,
|
|
3948
|
+
children: [
|
|
3949
|
+
/* @__PURE__ */ jsx("span", { children: label }),
|
|
3950
|
+
/* @__PURE__ */ jsx(XIcon, { size: 12, "aria-hidden": "true" })
|
|
3951
|
+
]
|
|
3952
|
+
}
|
|
3953
|
+
);
|
|
3954
|
+
});
|
|
3899
3955
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
3900
3956
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
3901
3957
|
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
3902
3958
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
3903
3959
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
3904
3960
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
3905
|
-
var DropdownMenuSubTrigger =
|
|
3961
|
+
var DropdownMenuSubTrigger = React36.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3906
3962
|
DropdownMenuPrimitive.SubTrigger,
|
|
3907
3963
|
{
|
|
3908
3964
|
ref,
|
|
@@ -3923,7 +3979,7 @@ var DropdownMenuSubTrigger = React13.forwardRef(({ className, inset, children, .
|
|
|
3923
3979
|
}
|
|
3924
3980
|
));
|
|
3925
3981
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
3926
|
-
var DropdownMenuSubContent =
|
|
3982
|
+
var DropdownMenuSubContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3927
3983
|
DropdownMenuPrimitive.SubContent,
|
|
3928
3984
|
{
|
|
3929
3985
|
ref,
|
|
@@ -3939,7 +3995,7 @@ var DropdownMenuSubContent = React13.forwardRef(({ className, ...props }, ref) =
|
|
|
3939
3995
|
}
|
|
3940
3996
|
));
|
|
3941
3997
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
3942
|
-
var DropdownMenuContent =
|
|
3998
|
+
var DropdownMenuContent = React36.forwardRef(({ className, sideOffset = 6, align = "start", ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
3943
3999
|
DropdownMenuPrimitive.Content,
|
|
3944
4000
|
{
|
|
3945
4001
|
ref,
|
|
@@ -3957,7 +4013,7 @@ var DropdownMenuContent = React13.forwardRef(({ className, sideOffset = 6, align
|
|
|
3957
4013
|
}
|
|
3958
4014
|
) }));
|
|
3959
4015
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
3960
|
-
var DropdownMenuItem =
|
|
4016
|
+
var DropdownMenuItem = React36.forwardRef(({ className, destructive, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3961
4017
|
DropdownMenuPrimitive.Item,
|
|
3962
4018
|
{
|
|
3963
4019
|
ref,
|
|
@@ -3975,7 +4031,7 @@ var DropdownMenuItem = React13.forwardRef(({ className, destructive, inset, ...p
|
|
|
3975
4031
|
}
|
|
3976
4032
|
));
|
|
3977
4033
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
3978
|
-
var DropdownMenuCheckboxItem =
|
|
4034
|
+
var DropdownMenuCheckboxItem = React36.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3979
4035
|
DropdownMenuPrimitive.CheckboxItem,
|
|
3980
4036
|
{
|
|
3981
4037
|
ref,
|
|
@@ -3995,7 +4051,7 @@ var DropdownMenuCheckboxItem = React13.forwardRef(({ className, children, checke
|
|
|
3995
4051
|
}
|
|
3996
4052
|
));
|
|
3997
4053
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
3998
|
-
var DropdownMenuRadioItem =
|
|
4054
|
+
var DropdownMenuRadioItem = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3999
4055
|
DropdownMenuPrimitive.RadioItem,
|
|
4000
4056
|
{
|
|
4001
4057
|
ref,
|
|
@@ -4014,7 +4070,7 @@ var DropdownMenuRadioItem = React13.forwardRef(({ className, children, ...props
|
|
|
4014
4070
|
}
|
|
4015
4071
|
));
|
|
4016
4072
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
4017
|
-
var DropdownMenuLabel =
|
|
4073
|
+
var DropdownMenuLabel = React36.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4018
4074
|
DropdownMenuPrimitive.Label,
|
|
4019
4075
|
{
|
|
4020
4076
|
ref,
|
|
@@ -4027,7 +4083,7 @@ var DropdownMenuLabel = React13.forwardRef(({ className, inset, ...props }, ref)
|
|
|
4027
4083
|
}
|
|
4028
4084
|
));
|
|
4029
4085
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
4030
|
-
var DropdownMenuSeparator =
|
|
4086
|
+
var DropdownMenuSeparator = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4031
4087
|
DropdownMenuPrimitive.Separator,
|
|
4032
4088
|
{
|
|
4033
4089
|
ref,
|
|
@@ -4226,10 +4282,23 @@ function FormSuccess({ children, className, ...props }) {
|
|
|
4226
4282
|
}
|
|
4227
4283
|
);
|
|
4228
4284
|
}
|
|
4285
|
+
var FormSection = forwardRef(function FormSection2({ title, description, action, headSpacing = "mt-4", className, children, ...props }, ref) {
|
|
4286
|
+
return /* @__PURE__ */ jsxs("fieldset", { ref, className: cn("min-w-0", className), ...props, children: [
|
|
4287
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
4288
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
4289
|
+
/* @__PURE__ */ jsx("legend", { className: "text-fg text-sm font-semibold", children: title }),
|
|
4290
|
+
description && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 text-xs leading-relaxed", children: description })
|
|
4291
|
+
] }),
|
|
4292
|
+
action && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: action })
|
|
4293
|
+
] }),
|
|
4294
|
+
/* @__PURE__ */ jsx("div", { className: headSpacing, children })
|
|
4295
|
+
] });
|
|
4296
|
+
});
|
|
4297
|
+
FormSection.displayName = "FormSection";
|
|
4229
4298
|
var HoverCard = HoverCardPrimitive.Root;
|
|
4230
4299
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
4231
4300
|
var HoverCardPortal = HoverCardPrimitive.Portal;
|
|
4232
|
-
var HoverCardContent =
|
|
4301
|
+
var HoverCardContent = React36.forwardRef(({ className, align = "center", side = "bottom", sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
4233
4302
|
HoverCardPrimitive.Content,
|
|
4234
4303
|
{
|
|
4235
4304
|
ref,
|
|
@@ -4391,8 +4460,8 @@ var kbdClass2 = cn(
|
|
|
4391
4460
|
"[border-bottom-width:1.5px]"
|
|
4392
4461
|
);
|
|
4393
4462
|
function KeyboardShortcutsDialog() {
|
|
4394
|
-
const [open, setOpen] =
|
|
4395
|
-
|
|
4463
|
+
const [open, setOpen] = React36.useState(false);
|
|
4464
|
+
React36.useEffect(() => {
|
|
4396
4465
|
function handleKeyDown(e) {
|
|
4397
4466
|
const target = e.target;
|
|
4398
4467
|
if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement || target?.isContentEditable) {
|
|
@@ -4428,7 +4497,7 @@ function KeyboardShortcutsDialog() {
|
|
|
4428
4497
|
className: "flex items-center justify-between gap-3 py-1",
|
|
4429
4498
|
children: [
|
|
4430
4499
|
/* @__PURE__ */ jsx("span", { className: "text-fg text-sm", children: shortcut.description }),
|
|
4431
|
-
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: shortcut.keys.map((key, i) => /* @__PURE__ */ jsxs(
|
|
4500
|
+
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: shortcut.keys.map((key, i) => /* @__PURE__ */ jsxs(React36.Fragment, { children: [
|
|
4432
4501
|
i > 0 && /* @__PURE__ */ jsx("span", { className: "text-fg-4 mx-0.5 text-[11px]", children: "then" }),
|
|
4433
4502
|
/* @__PURE__ */ jsx("kbd", { className: kbdClass2, children: key })
|
|
4434
4503
|
] }, i)) })
|
|
@@ -4447,7 +4516,7 @@ function KeyboardShortcutsDialog() {
|
|
|
4447
4516
|
var labelVariants = cva(
|
|
4448
4517
|
"text-[13px] font-medium leading-none text-fg select-none peer-disabled:cursor-not-allowed peer-disabled:text-fg-disabled has-[+input:disabled]:text-fg-disabled"
|
|
4449
4518
|
);
|
|
4450
|
-
var Label4 =
|
|
4519
|
+
var Label4 = React36.forwardRef(
|
|
4451
4520
|
function Label5({ children, required, className, ...props }, ref) {
|
|
4452
4521
|
return /* @__PURE__ */ jsxs(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props, children: [
|
|
4453
4522
|
children,
|
|
@@ -4456,23 +4525,106 @@ var Label4 = React13.forwardRef(
|
|
|
4456
4525
|
}
|
|
4457
4526
|
);
|
|
4458
4527
|
Label4.displayName = LabelPrimitive.Root.displayName;
|
|
4459
|
-
var LinkButton = forwardRef(function LinkButton2({
|
|
4460
|
-
|
|
4461
|
-
|
|
4528
|
+
var LinkButton = forwardRef(function LinkButton2({
|
|
4529
|
+
href,
|
|
4530
|
+
variant = "primary",
|
|
4531
|
+
size = "md",
|
|
4532
|
+
iconLeft,
|
|
4533
|
+
iconRight,
|
|
4534
|
+
children,
|
|
4535
|
+
className,
|
|
4536
|
+
external,
|
|
4537
|
+
target,
|
|
4538
|
+
rel,
|
|
4539
|
+
...props
|
|
4540
|
+
}, ref) {
|
|
4541
|
+
const classes = cn(buttonVariants({ variant, size }), className);
|
|
4542
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4543
|
+
iconLeft && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconLeft }),
|
|
4544
|
+
children,
|
|
4545
|
+
iconRight && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconRight })
|
|
4546
|
+
] });
|
|
4547
|
+
if (external) {
|
|
4548
|
+
const safeRel = rel ?? (target === "_blank" ? "noopener noreferrer" : void 0);
|
|
4549
|
+
return /* @__PURE__ */ jsx(
|
|
4550
|
+
"a",
|
|
4551
|
+
{
|
|
4552
|
+
ref,
|
|
4553
|
+
href,
|
|
4554
|
+
className: classes,
|
|
4555
|
+
target,
|
|
4556
|
+
rel: safeRel,
|
|
4557
|
+
...props,
|
|
4558
|
+
children: content
|
|
4559
|
+
}
|
|
4560
|
+
);
|
|
4561
|
+
}
|
|
4562
|
+
return /* @__PURE__ */ jsx(Link, { ref, href, className: classes, target, rel, ...props, children: content });
|
|
4563
|
+
});
|
|
4564
|
+
LinkButton.displayName = "LinkButton";
|
|
4565
|
+
var Skeleton = forwardRef(function Skeleton2({ className, ...props }, ref) {
|
|
4566
|
+
return /* @__PURE__ */ jsx(
|
|
4567
|
+
"div",
|
|
4462
4568
|
{
|
|
4463
4569
|
ref,
|
|
4464
|
-
|
|
4465
|
-
|
|
4570
|
+
className: cn("skeleton bg-bg-3 rounded-icon animate-pulse", className),
|
|
4571
|
+
"aria-hidden": "true",
|
|
4572
|
+
...props
|
|
4573
|
+
}
|
|
4574
|
+
);
|
|
4575
|
+
});
|
|
4576
|
+
Skeleton.displayName = "Skeleton";
|
|
4577
|
+
var SkeletonText = forwardRef(function SkeletonText2({ lines = 3, className, ...props }, ref) {
|
|
4578
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), "aria-hidden": "true", ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
|
|
4579
|
+
"div",
|
|
4580
|
+
{
|
|
4581
|
+
className: cn(
|
|
4582
|
+
"skeleton bg-bg-3 rounded-icon h-4 animate-pulse",
|
|
4583
|
+
i === lines - 1 && "w-3/4"
|
|
4584
|
+
)
|
|
4585
|
+
},
|
|
4586
|
+
i
|
|
4587
|
+
)) });
|
|
4588
|
+
});
|
|
4589
|
+
SkeletonText.displayName = "SkeletonText";
|
|
4590
|
+
var SkeletonCircle = forwardRef(
|
|
4591
|
+
function SkeletonCircle2({ size = 40, className, ...props }, ref) {
|
|
4592
|
+
return /* @__PURE__ */ jsx(
|
|
4593
|
+
"div",
|
|
4594
|
+
{
|
|
4595
|
+
ref,
|
|
4596
|
+
className: cn("skeleton bg-bg-3 animate-pulse rounded-full", className),
|
|
4597
|
+
style: { width: size, height: size },
|
|
4598
|
+
"aria-hidden": "true",
|
|
4599
|
+
...props
|
|
4600
|
+
}
|
|
4601
|
+
);
|
|
4602
|
+
}
|
|
4603
|
+
);
|
|
4604
|
+
SkeletonCircle.displayName = "SkeletonCircle";
|
|
4605
|
+
var LoadingRows = forwardRef(function LoadingRows2({
|
|
4606
|
+
count = 3,
|
|
4607
|
+
rowHeight = "h-14",
|
|
4608
|
+
gap = "gap-2",
|
|
4609
|
+
rowClassName,
|
|
4610
|
+
label = "Loading",
|
|
4611
|
+
className,
|
|
4612
|
+
...props
|
|
4613
|
+
}, ref) {
|
|
4614
|
+
return /* @__PURE__ */ jsx(
|
|
4615
|
+
"div",
|
|
4616
|
+
{
|
|
4617
|
+
ref,
|
|
4618
|
+
role: "status",
|
|
4619
|
+
"aria-busy": "true",
|
|
4620
|
+
"aria-label": label,
|
|
4621
|
+
className: cn("flex flex-col", gap, className),
|
|
4466
4622
|
...props,
|
|
4467
|
-
children:
|
|
4468
|
-
iconLeft && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconLeft }),
|
|
4469
|
-
children,
|
|
4470
|
-
iconRight && /* @__PURE__ */ jsx("span", { className: "inline-flex shrink-0", "aria-hidden": "true", children: iconRight })
|
|
4471
|
-
]
|
|
4623
|
+
children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx(Skeleton, { className: cn(rowHeight, "w-full", rowClassName) }, i))
|
|
4472
4624
|
}
|
|
4473
4625
|
);
|
|
4474
4626
|
});
|
|
4475
|
-
|
|
4627
|
+
LoadingRows.displayName = "LoadingRows";
|
|
4476
4628
|
var sizeStyles = {
|
|
4477
4629
|
sm: { icon: 20, text: "text-sm", gap: "gap-2" },
|
|
4478
4630
|
md: { icon: 24, text: "text-[17px]", gap: "gap-2.5" },
|
|
@@ -4669,7 +4821,7 @@ function MultiSelectField({
|
|
|
4669
4821
|
size = "md",
|
|
4670
4822
|
id
|
|
4671
4823
|
}) {
|
|
4672
|
-
const selected =
|
|
4824
|
+
const selected = React36.useMemo(
|
|
4673
4825
|
() => new Set(value ? value.split(",").filter(Boolean) : []),
|
|
4674
4826
|
[value]
|
|
4675
4827
|
);
|
|
@@ -4682,7 +4834,7 @@ function MultiSelectField({
|
|
|
4682
4834
|
}
|
|
4683
4835
|
onChange(Array.from(next).join(","));
|
|
4684
4836
|
};
|
|
4685
|
-
const generatedId =
|
|
4837
|
+
const generatedId = React36.useId();
|
|
4686
4838
|
const groupId = id ?? generatedId;
|
|
4687
4839
|
return /* @__PURE__ */ jsxs("div", { className: cn("w-full", className), children: [
|
|
4688
4840
|
/* @__PURE__ */ jsx(
|
|
@@ -5090,12 +5242,12 @@ var ProgressRing = forwardRef(function ProgressRing2({ value, max = 100, size =
|
|
|
5090
5242
|
);
|
|
5091
5243
|
});
|
|
5092
5244
|
ProgressRing.displayName = "ProgressRing";
|
|
5093
|
-
var RadioGroup3 =
|
|
5245
|
+
var RadioGroup3 = React36.forwardRef(function RadioGroup4({ className, ...props }, ref) {
|
|
5094
5246
|
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { ref, className: cn("grid gap-2", className), ...props });
|
|
5095
5247
|
});
|
|
5096
5248
|
RadioGroup3.displayName = RadioGroupPrimitive.Root.displayName;
|
|
5097
|
-
var RadioGroupItem =
|
|
5098
|
-
const generatedId =
|
|
5249
|
+
var RadioGroupItem = React36.forwardRef(function RadioGroupItem2({ className, label, id: providedId, ...props }, ref) {
|
|
5250
|
+
const generatedId = React36.useId();
|
|
5099
5251
|
const id = providedId ?? generatedId;
|
|
5100
5252
|
const root = /* @__PURE__ */ jsx(
|
|
5101
5253
|
RadioGroupPrimitive.Item,
|
|
@@ -5130,7 +5282,7 @@ var RadioGroupItem = React13.forwardRef(function RadioGroupItem2({ className, la
|
|
|
5130
5282
|
] });
|
|
5131
5283
|
});
|
|
5132
5284
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
5133
|
-
var ScrollArea =
|
|
5285
|
+
var ScrollArea = React36.forwardRef(function ScrollArea2({ className, children, ...props }, ref) {
|
|
5134
5286
|
return /* @__PURE__ */ jsxs(
|
|
5135
5287
|
ScrollAreaPrimitive.Root,
|
|
5136
5288
|
{
|
|
@@ -5146,7 +5298,7 @@ var ScrollArea = React13.forwardRef(function ScrollArea2({ className, children,
|
|
|
5146
5298
|
);
|
|
5147
5299
|
});
|
|
5148
5300
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
5149
|
-
var ScrollBar =
|
|
5301
|
+
var ScrollBar = React36.forwardRef(function ScrollBar2({ className, orientation = "vertical", ...props }, ref) {
|
|
5150
5302
|
return /* @__PURE__ */ jsx(
|
|
5151
5303
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
5152
5304
|
{
|
|
@@ -5208,7 +5360,7 @@ var searchInputVariants = cva(
|
|
|
5208
5360
|
}
|
|
5209
5361
|
}
|
|
5210
5362
|
);
|
|
5211
|
-
var SearchInput =
|
|
5363
|
+
var SearchInput = React36.forwardRef(
|
|
5212
5364
|
function SearchInput2({
|
|
5213
5365
|
value,
|
|
5214
5366
|
onValueChange,
|
|
@@ -5221,8 +5373,8 @@ var SearchInput = React13.forwardRef(
|
|
|
5221
5373
|
...props
|
|
5222
5374
|
}, ref) {
|
|
5223
5375
|
const debouncedValue = useDebounce(value, debounceMs);
|
|
5224
|
-
const isFirstRender =
|
|
5225
|
-
|
|
5376
|
+
const isFirstRender = React36.useRef(true);
|
|
5377
|
+
React36.useEffect(() => {
|
|
5226
5378
|
if (isFirstRender.current) {
|
|
5227
5379
|
isFirstRender.current = false;
|
|
5228
5380
|
return;
|
|
@@ -5290,27 +5442,27 @@ function SearchSelect({
|
|
|
5290
5442
|
className,
|
|
5291
5443
|
disabled = false
|
|
5292
5444
|
}) {
|
|
5293
|
-
const [search, setSearch] =
|
|
5294
|
-
const [open, setOpen] =
|
|
5295
|
-
const selectedIds =
|
|
5296
|
-
const filtered =
|
|
5445
|
+
const [search, setSearch] = React36.useState("");
|
|
5446
|
+
const [open, setOpen] = React36.useState(false);
|
|
5447
|
+
const selectedIds = React36.useMemo(() => new Set(selected.map((s) => s.id)), [selected]);
|
|
5448
|
+
const filtered = React36.useMemo(
|
|
5297
5449
|
() => options.filter((opt) => !selectedIds.has(opt.id)),
|
|
5298
5450
|
[options, selectedIds]
|
|
5299
5451
|
);
|
|
5300
5452
|
const trimmedSearch = search.trim();
|
|
5301
|
-
const hasExactMatch =
|
|
5453
|
+
const hasExactMatch = React36.useMemo(
|
|
5302
5454
|
() => options.some((opt) => opt.label.toLowerCase() === trimmedSearch.toLowerCase()),
|
|
5303
5455
|
[options, trimmedSearch]
|
|
5304
5456
|
);
|
|
5305
5457
|
const showCreate = !!onCreate && trimmedSearch.length > 0 && !hasExactMatch;
|
|
5306
|
-
const handleSelect =
|
|
5458
|
+
const handleSelect = React36.useCallback(
|
|
5307
5459
|
(option) => {
|
|
5308
5460
|
onSelect(option);
|
|
5309
5461
|
setSearch("");
|
|
5310
5462
|
},
|
|
5311
5463
|
[onSelect]
|
|
5312
5464
|
);
|
|
5313
|
-
const handleCreate =
|
|
5465
|
+
const handleCreate = React36.useCallback(() => {
|
|
5314
5466
|
if (onCreate && trimmedSearch) {
|
|
5315
5467
|
onCreate(trimmedSearch);
|
|
5316
5468
|
setSearch("");
|
|
@@ -5536,7 +5688,7 @@ var SectionHead = forwardRef(function SectionHead2({ eyebrow, title, meta, class
|
|
|
5536
5688
|
);
|
|
5537
5689
|
});
|
|
5538
5690
|
SectionHead.displayName = "SectionHead";
|
|
5539
|
-
var Separator4 =
|
|
5691
|
+
var Separator4 = React36.forwardRef(function Separator5({ className, orientation = "horizontal", decorative = true, ...props }, ref) {
|
|
5540
5692
|
return /* @__PURE__ */ jsx(
|
|
5541
5693
|
SeparatorPrimitive.Root,
|
|
5542
5694
|
{
|
|
@@ -5553,13 +5705,13 @@ var Separator4 = React13.forwardRef(function Separator5({ className, orientation
|
|
|
5553
5705
|
);
|
|
5554
5706
|
});
|
|
5555
5707
|
Separator4.displayName = SeparatorPrimitive.Root.displayName;
|
|
5556
|
-
var SheetSideContext =
|
|
5708
|
+
var SheetSideContext = React36.createContext({});
|
|
5557
5709
|
var Sheet = ({ side, children, ...props }) => /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...props, children: /* @__PURE__ */ jsx(SheetSideContext, { value: { side }, children }) });
|
|
5558
5710
|
Sheet.displayName = "Sheet";
|
|
5559
5711
|
var SheetTrigger = DialogPrimitive.Trigger;
|
|
5560
5712
|
var SheetClose = DialogPrimitive.Close;
|
|
5561
5713
|
var SheetPortal = DialogPrimitive.Portal;
|
|
5562
|
-
var SheetOverlay =
|
|
5714
|
+
var SheetOverlay = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5563
5715
|
DialogPrimitive.Overlay,
|
|
5564
5716
|
{
|
|
5565
5717
|
ref,
|
|
@@ -5604,8 +5756,8 @@ var sheetVariants = cva(
|
|
|
5604
5756
|
defaultVariants: { side: "right" }
|
|
5605
5757
|
}
|
|
5606
5758
|
);
|
|
5607
|
-
var SheetContent =
|
|
5608
|
-
const ctx =
|
|
5759
|
+
var SheetContent = React36.forwardRef(({ side, className, children, showCloseButton = true, ...props }, ref) => {
|
|
5760
|
+
const ctx = React36.use(SheetSideContext);
|
|
5609
5761
|
const resolvedSide = side ?? ctx.side ?? "right";
|
|
5610
5762
|
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
5611
5763
|
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
@@ -5650,7 +5802,7 @@ var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
5650
5802
|
}
|
|
5651
5803
|
);
|
|
5652
5804
|
SheetFooter.displayName = "SheetFooter";
|
|
5653
|
-
var SheetTitle =
|
|
5805
|
+
var SheetTitle = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5654
5806
|
DialogPrimitive.Title,
|
|
5655
5807
|
{
|
|
5656
5808
|
ref,
|
|
@@ -5662,7 +5814,7 @@ var SheetTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
5662
5814
|
}
|
|
5663
5815
|
));
|
|
5664
5816
|
SheetTitle.displayName = DialogPrimitive.Title.displayName;
|
|
5665
|
-
var SheetDescription =
|
|
5817
|
+
var SheetDescription = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-fg-3 text-sm", className), ...props }));
|
|
5666
5818
|
SheetDescription.displayName = DialogPrimitive.Description.displayName;
|
|
5667
5819
|
var sideDrawerVariants = cva(
|
|
5668
5820
|
cn(
|
|
@@ -5779,47 +5931,7 @@ function SideDrawerFooter({ children, className }) {
|
|
|
5779
5931
|
SideDrawer.Header = SideDrawerHeader;
|
|
5780
5932
|
SideDrawer.Body = SideDrawerBody;
|
|
5781
5933
|
SideDrawer.Footer = SideDrawerFooter;
|
|
5782
|
-
var
|
|
5783
|
-
return /* @__PURE__ */ jsx(
|
|
5784
|
-
"div",
|
|
5785
|
-
{
|
|
5786
|
-
ref,
|
|
5787
|
-
className: cn("skeleton bg-bg-3 rounded-icon animate-pulse", className),
|
|
5788
|
-
"aria-hidden": "true",
|
|
5789
|
-
...props
|
|
5790
|
-
}
|
|
5791
|
-
);
|
|
5792
|
-
});
|
|
5793
|
-
Skeleton.displayName = "Skeleton";
|
|
5794
|
-
var SkeletonText = forwardRef(function SkeletonText2({ lines = 3, className, ...props }, ref) {
|
|
5795
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), "aria-hidden": "true", ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
|
|
5796
|
-
"div",
|
|
5797
|
-
{
|
|
5798
|
-
className: cn(
|
|
5799
|
-
"skeleton bg-bg-3 rounded-icon h-4 animate-pulse",
|
|
5800
|
-
i === lines - 1 && "w-3/4"
|
|
5801
|
-
)
|
|
5802
|
-
},
|
|
5803
|
-
i
|
|
5804
|
-
)) });
|
|
5805
|
-
});
|
|
5806
|
-
SkeletonText.displayName = "SkeletonText";
|
|
5807
|
-
var SkeletonCircle = forwardRef(
|
|
5808
|
-
function SkeletonCircle2({ size = 40, className, ...props }, ref) {
|
|
5809
|
-
return /* @__PURE__ */ jsx(
|
|
5810
|
-
"div",
|
|
5811
|
-
{
|
|
5812
|
-
ref,
|
|
5813
|
-
className: cn("skeleton bg-bg-3 animate-pulse rounded-full", className),
|
|
5814
|
-
style: { width: size, height: size },
|
|
5815
|
-
"aria-hidden": "true",
|
|
5816
|
-
...props
|
|
5817
|
-
}
|
|
5818
|
-
);
|
|
5819
|
-
}
|
|
5820
|
-
);
|
|
5821
|
-
SkeletonCircle.displayName = "SkeletonCircle";
|
|
5822
|
-
var Slider = React13.forwardRef(
|
|
5934
|
+
var Slider = React36.forwardRef(
|
|
5823
5935
|
function Slider2({
|
|
5824
5936
|
className,
|
|
5825
5937
|
label,
|
|
@@ -5831,7 +5943,7 @@ var Slider = React13.forwardRef(
|
|
|
5831
5943
|
defaultValue,
|
|
5832
5944
|
...props
|
|
5833
5945
|
}, ref) {
|
|
5834
|
-
const generatedId =
|
|
5946
|
+
const generatedId = React36.useId();
|
|
5835
5947
|
const id = providedId ?? generatedId;
|
|
5836
5948
|
const displayValue = (() => {
|
|
5837
5949
|
const v = value ?? defaultValue;
|
|
@@ -6119,9 +6231,9 @@ var switchThumbVariants = cva(
|
|
|
6119
6231
|
}
|
|
6120
6232
|
}
|
|
6121
6233
|
);
|
|
6122
|
-
var Switch =
|
|
6234
|
+
var Switch = React36.forwardRef(
|
|
6123
6235
|
function Switch2({ label, size, className, id: providedId, ...props }, ref) {
|
|
6124
|
-
const generatedId =
|
|
6236
|
+
const generatedId = React36.useId();
|
|
6125
6237
|
const id = providedId ?? generatedId;
|
|
6126
6238
|
const root = /* @__PURE__ */ jsx(
|
|
6127
6239
|
SwitchPrimitive.Root,
|
|
@@ -6253,13 +6365,13 @@ var TableCaption = forwardRef(
|
|
|
6253
6365
|
}
|
|
6254
6366
|
);
|
|
6255
6367
|
TableCaption.displayName = "TableCaption";
|
|
6256
|
-
var Tabs =
|
|
6368
|
+
var Tabs = React36.forwardRef(
|
|
6257
6369
|
function Tabs2({ className, ...props }, ref) {
|
|
6258
6370
|
return /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, className: cn(className), ...props });
|
|
6259
6371
|
}
|
|
6260
6372
|
);
|
|
6261
6373
|
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
6262
|
-
var TabsList =
|
|
6374
|
+
var TabsList = React36.forwardRef(function TabsList2({ className, ...props }, ref) {
|
|
6263
6375
|
return /* @__PURE__ */ jsx(
|
|
6264
6376
|
TabsPrimitive.List,
|
|
6265
6377
|
{
|
|
@@ -6282,13 +6394,16 @@ var triggerVariants = cva(
|
|
|
6282
6394
|
{
|
|
6283
6395
|
variants: {
|
|
6284
6396
|
variant: {
|
|
6285
|
-
// §5.16: tab current =
|
|
6286
|
-
//
|
|
6287
|
-
//
|
|
6397
|
+
// §5.16: tab current = 2px accent underline + bold foreground text.
|
|
6398
|
+
// The cyan rule carries the brand statement (tabs are interaction,
|
|
6399
|
+
// so cyan; Pro purple is reserved for selection state on
|
|
6400
|
+
// list/dropdown surfaces). The active LABEL stays in `text-fg` for
|
|
6401
|
+
// legibility — accent on text was too low-contrast against the page
|
|
6402
|
+
// background, especially in dark mode.
|
|
6288
6403
|
underline: cn(
|
|
6289
6404
|
"rounded-none bg-transparent px-3.5 py-2.5",
|
|
6290
6405
|
"border-b-2 border-transparent -mb-px",
|
|
6291
|
-
"data-[state=active]:border-accent data-[state=active]:text-
|
|
6406
|
+
"data-[state=active]:border-accent data-[state=active]:text-fg data-[state=active]:font-semibold"
|
|
6292
6407
|
),
|
|
6293
6408
|
pill: cn(
|
|
6294
6409
|
"rounded-pill px-3 py-1.5",
|
|
@@ -6301,7 +6416,7 @@ var triggerVariants = cva(
|
|
|
6301
6416
|
}
|
|
6302
6417
|
}
|
|
6303
6418
|
);
|
|
6304
|
-
var TabsTrigger =
|
|
6419
|
+
var TabsTrigger = React36.forwardRef(function TabsTrigger2({ className, variant, ...props }, ref) {
|
|
6305
6420
|
return /* @__PURE__ */ jsx(
|
|
6306
6421
|
TabsPrimitive.Trigger,
|
|
6307
6422
|
{
|
|
@@ -6312,7 +6427,7 @@ var TabsTrigger = React13.forwardRef(function TabsTrigger2({ className, variant,
|
|
|
6312
6427
|
);
|
|
6313
6428
|
});
|
|
6314
6429
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
6315
|
-
var TabsContent =
|
|
6430
|
+
var TabsContent = React36.forwardRef(function TabsContent2({ className, ...props }, ref) {
|
|
6316
6431
|
return /* @__PURE__ */ jsx(
|
|
6317
6432
|
TabsPrimitive.Content,
|
|
6318
6433
|
{
|
|
@@ -6337,7 +6452,7 @@ function TeamMemberSelect({
|
|
|
6337
6452
|
placeholder = "Select team member...",
|
|
6338
6453
|
className
|
|
6339
6454
|
}) {
|
|
6340
|
-
const options =
|
|
6455
|
+
const options = React36.useMemo(() => {
|
|
6341
6456
|
const meBadge = /* @__PURE__ */ jsx(
|
|
6342
6457
|
Badge,
|
|
6343
6458
|
{
|
|
@@ -6604,10 +6719,10 @@ var itemVariants = cva(
|
|
|
6604
6719
|
}
|
|
6605
6720
|
}
|
|
6606
6721
|
);
|
|
6607
|
-
var ToggleGroupContext =
|
|
6722
|
+
var ToggleGroupContext = React36.createContext({
|
|
6608
6723
|
variant: "default"
|
|
6609
6724
|
});
|
|
6610
|
-
var ToggleGroup =
|
|
6725
|
+
var ToggleGroup = React36.forwardRef(function ToggleGroup2({ className, variant, children, ...props }, ref) {
|
|
6611
6726
|
return /* @__PURE__ */ jsx(
|
|
6612
6727
|
ToggleGroupPrimitive.Root,
|
|
6613
6728
|
{
|
|
@@ -6619,8 +6734,8 @@ var ToggleGroup = React13.forwardRef(function ToggleGroup2({ className, variant,
|
|
|
6619
6734
|
);
|
|
6620
6735
|
});
|
|
6621
6736
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
6622
|
-
var ToggleGroupItem =
|
|
6623
|
-
const ctx =
|
|
6737
|
+
var ToggleGroupItem = React36.forwardRef(function ToggleGroupItem2({ className, variant, ...props }, ref) {
|
|
6738
|
+
const ctx = React36.useContext(ToggleGroupContext);
|
|
6624
6739
|
return /* @__PURE__ */ jsx(
|
|
6625
6740
|
ToggleGroupPrimitive.Item,
|
|
6626
6741
|
{
|
|
@@ -6639,7 +6754,7 @@ var Tooltip = ({ delayMs, delayDuration, children, ...props }) => {
|
|
|
6639
6754
|
return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { delayDuration: resolvedDelay, children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { delayDuration: resolvedDelay, ...props, children }) });
|
|
6640
6755
|
};
|
|
6641
6756
|
Tooltip.displayName = "Tooltip";
|
|
6642
|
-
var TooltipContent =
|
|
6757
|
+
var TooltipContent = React36.forwardRef(({ className, sideOffset = 6, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
6643
6758
|
TooltipPrimitive.Content,
|
|
6644
6759
|
{
|
|
6645
6760
|
ref,
|
|
@@ -6691,88 +6806,417 @@ var Content15 = forwardRef(function Content16({ padBottom, className, style, ...
|
|
|
6691
6806
|
);
|
|
6692
6807
|
});
|
|
6693
6808
|
Content15.displayName = "Content";
|
|
6694
|
-
var
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
|
|
6699
|
-
|
|
6700
|
-
|
|
6701
|
-
|
|
6702
|
-
|
|
6703
|
-
|
|
6704
|
-
|
|
6809
|
+
var SidebarContext = React36.createContext(null);
|
|
6810
|
+
var NOOP_CONTEXT = {
|
|
6811
|
+
state: "expanded",
|
|
6812
|
+
setState: () => {
|
|
6813
|
+
},
|
|
6814
|
+
toggle: () => {
|
|
6815
|
+
},
|
|
6816
|
+
collapsible: false
|
|
6817
|
+
};
|
|
6818
|
+
function useSidebarState() {
|
|
6819
|
+
return React36.useContext(SidebarContext) ?? NOOP_CONTEXT;
|
|
6820
|
+
}
|
|
6821
|
+
var DEFAULT_SHORTCUT = "Mod+\\";
|
|
6822
|
+
function readStorage(key) {
|
|
6823
|
+
if (!key || typeof window === "undefined") return null;
|
|
6824
|
+
try {
|
|
6825
|
+
const v = window.localStorage.getItem(key);
|
|
6826
|
+
return v === "rail" || v === "expanded" ? v : null;
|
|
6827
|
+
} catch {
|
|
6828
|
+
return null;
|
|
6829
|
+
}
|
|
6830
|
+
}
|
|
6831
|
+
function SidebarProvider({
|
|
6832
|
+
children,
|
|
6833
|
+
state: controlled,
|
|
6834
|
+
defaultState = "expanded",
|
|
6835
|
+
onStateChange,
|
|
6836
|
+
storageKey,
|
|
6837
|
+
shortcut = DEFAULT_SHORTCUT
|
|
6838
|
+
}) {
|
|
6839
|
+
const [uncontrolled, setUncontrolled] = React36.useState(
|
|
6840
|
+
controlled ?? defaultState
|
|
6841
|
+
);
|
|
6842
|
+
React36.useEffect(() => {
|
|
6843
|
+
if (controlled !== void 0) return;
|
|
6844
|
+
const stored = readStorage(storageKey);
|
|
6845
|
+
if (stored && stored !== uncontrolled) setUncontrolled(stored);
|
|
6846
|
+
}, []);
|
|
6847
|
+
const state = controlled ?? uncontrolled;
|
|
6848
|
+
const setState = React36.useCallback(
|
|
6849
|
+
(next) => {
|
|
6850
|
+
if (controlled === void 0) setUncontrolled(next);
|
|
6851
|
+
onStateChange?.(next);
|
|
6852
|
+
if (storageKey && typeof window !== "undefined") {
|
|
6853
|
+
try {
|
|
6854
|
+
window.localStorage.setItem(storageKey, next);
|
|
6855
|
+
} catch {
|
|
6856
|
+
}
|
|
6857
|
+
}
|
|
6858
|
+
},
|
|
6859
|
+
[controlled, onStateChange, storageKey]
|
|
6860
|
+
);
|
|
6861
|
+
const toggle = React36.useCallback(() => {
|
|
6862
|
+
setState(state === "expanded" ? "rail" : "expanded");
|
|
6863
|
+
}, [state, setState]);
|
|
6864
|
+
React36.useEffect(() => {
|
|
6865
|
+
if (!shortcut) return;
|
|
6866
|
+
const parts = shortcut.split("+");
|
|
6867
|
+
const key = parts.pop() ?? "";
|
|
6868
|
+
const wantMod = parts.includes("Mod");
|
|
6869
|
+
const wantShift = parts.includes("Shift");
|
|
6870
|
+
const wantAlt = parts.includes("Alt");
|
|
6871
|
+
function onKey(e) {
|
|
6872
|
+
const isMac = typeof navigator !== "undefined" && /Mac|iPhone|iPad/.test(navigator.platform);
|
|
6873
|
+
const mod = isMac ? e.metaKey : e.ctrlKey;
|
|
6874
|
+
if (e.key.toLowerCase() !== key.toLowerCase()) return;
|
|
6875
|
+
if (wantMod !== mod) return;
|
|
6876
|
+
if (wantShift !== e.shiftKey) return;
|
|
6877
|
+
if (wantAlt !== e.altKey) return;
|
|
6878
|
+
e.preventDefault();
|
|
6879
|
+
toggle();
|
|
6880
|
+
}
|
|
6881
|
+
window.addEventListener("keydown", onKey);
|
|
6882
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
6883
|
+
}, [shortcut, toggle]);
|
|
6884
|
+
const value = React36.useMemo(
|
|
6885
|
+
() => ({ state, setState, toggle, collapsible: true }),
|
|
6886
|
+
[state, setState, toggle]
|
|
6887
|
+
);
|
|
6888
|
+
return /* @__PURE__ */ jsx(SidebarContext.Provider, { value, children });
|
|
6889
|
+
}
|
|
6890
|
+
SidebarProvider.displayName = "SidebarProvider";
|
|
6891
|
+
var PEEK_ENTER_DELAY_MS = 100;
|
|
6892
|
+
var PEEK_LEAVE_DELAY_MS = 200;
|
|
6893
|
+
var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = false, onMouseEnter, onMouseLeave, style, ...props }, ref) {
|
|
6894
|
+
const ctx = React36.useContext(SidebarContext);
|
|
6895
|
+
const state = collapsible && ctx ? ctx.state : "expanded";
|
|
6896
|
+
const [peek, setPeek] = React36.useState(false);
|
|
6897
|
+
const enterTimer = React36.useRef(null);
|
|
6898
|
+
const leaveTimer = React36.useRef(null);
|
|
6899
|
+
const clearTimers = React36.useCallback(() => {
|
|
6900
|
+
if (enterTimer.current != null) {
|
|
6901
|
+
window.clearTimeout(enterTimer.current);
|
|
6902
|
+
enterTimer.current = null;
|
|
6903
|
+
}
|
|
6904
|
+
if (leaveTimer.current != null) {
|
|
6905
|
+
window.clearTimeout(leaveTimer.current);
|
|
6906
|
+
leaveTimer.current = null;
|
|
6705
6907
|
}
|
|
6908
|
+
}, []);
|
|
6909
|
+
React36.useEffect(() => () => clearTimers(), [clearTimers]);
|
|
6910
|
+
React36.useEffect(() => {
|
|
6911
|
+
if (state === "expanded") {
|
|
6912
|
+
clearTimers();
|
|
6913
|
+
setPeek(false);
|
|
6914
|
+
}
|
|
6915
|
+
}, [state, clearTimers]);
|
|
6916
|
+
const handleEnter = (e) => {
|
|
6917
|
+
onMouseEnter?.(e);
|
|
6918
|
+
if (!collapsible || state !== "rail") return;
|
|
6919
|
+
if (leaveTimer.current != null) {
|
|
6920
|
+
window.clearTimeout(leaveTimer.current);
|
|
6921
|
+
leaveTimer.current = null;
|
|
6922
|
+
}
|
|
6923
|
+
if (peek) return;
|
|
6924
|
+
enterTimer.current = window.setTimeout(() => setPeek(true), PEEK_ENTER_DELAY_MS);
|
|
6925
|
+
};
|
|
6926
|
+
const handleLeave = (e) => {
|
|
6927
|
+
onMouseLeave?.(e);
|
|
6928
|
+
if (!collapsible) return;
|
|
6929
|
+
if (enterTimer.current != null) {
|
|
6930
|
+
window.clearTimeout(enterTimer.current);
|
|
6931
|
+
enterTimer.current = null;
|
|
6932
|
+
}
|
|
6933
|
+
if (!peek) return;
|
|
6934
|
+
leaveTimer.current = window.setTimeout(() => setPeek(false), PEEK_LEAVE_DELAY_MS);
|
|
6935
|
+
};
|
|
6936
|
+
const labelsHidden = state === "rail" && !peek;
|
|
6937
|
+
const effectiveWidth = labelsHidden ? "var(--shell-sidebar-w-rail)" : "var(--shell-sidebar-w)";
|
|
6938
|
+
return (
|
|
6939
|
+
// Hover-peek is *enhancement only*: the canonical way to toggle the
|
|
6940
|
+
// sidebar is <SidebarTrigger> (button) or the Mod+\ shortcut, both
|
|
6941
|
+
// fully keyboard- and screen-reader-accessible. The mouse handlers
|
|
6942
|
+
// here exist to widen the column on pointer hover, which has no
|
|
6943
|
+
// keyboard analogue and intentionally so.
|
|
6944
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
|
6945
|
+
/* @__PURE__ */ jsx(
|
|
6946
|
+
"aside",
|
|
6947
|
+
{
|
|
6948
|
+
ref,
|
|
6949
|
+
"data-state": state,
|
|
6950
|
+
"data-peek": peek ? "true" : void 0,
|
|
6951
|
+
"data-labels": labelsHidden ? "hide" : "show",
|
|
6952
|
+
"data-collapsible": collapsible ? "true" : void 0,
|
|
6953
|
+
onMouseEnter: handleEnter,
|
|
6954
|
+
onMouseLeave: handleLeave,
|
|
6955
|
+
style: { width: effectiveWidth, ...style },
|
|
6956
|
+
className: cn(
|
|
6957
|
+
"group/sidebar scrollbar-thin flex h-dvh shrink-0 flex-col overflow-y-auto",
|
|
6958
|
+
"border-rule bg-bg-2 border-r px-3 pt-4 pb-4",
|
|
6959
|
+
// 220ms feels right for a ~192px width sweep — slower than the
|
|
6960
|
+
// 150ms `--duration-fast` (which reads as a snap on this size of
|
|
6961
|
+
// movement) but well short of `--duration-slow` (which feels
|
|
6962
|
+
// sluggish). `will-change` hints the compositor so the column
|
|
6963
|
+
// doesn't repaint every frame mid-transition.
|
|
6964
|
+
"transition-[width,box-shadow] duration-[220ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
6965
|
+
"[will-change:width]",
|
|
6966
|
+
// Peek overlay: float above the canvas without reflowing layout.
|
|
6967
|
+
"data-[peek=true]:fixed data-[peek=true]:top-0 data-[peek=true]:left-0",
|
|
6968
|
+
"data-[peek=true]:z-[var(--z-overlay)] data-[peek=true]:shadow-pop",
|
|
6969
|
+
// Padding is held constant across states so icons keep their
|
|
6970
|
+
// horizontal anchor when the column widens — peek expands the
|
|
6971
|
+
// labels rightward rather than shifting the icons leftward.
|
|
6972
|
+
className
|
|
6973
|
+
),
|
|
6974
|
+
...props
|
|
6975
|
+
}
|
|
6976
|
+
)
|
|
6706
6977
|
);
|
|
6707
6978
|
});
|
|
6708
6979
|
Sidebar.displayName = "Sidebar";
|
|
6709
|
-
var
|
|
6710
|
-
|
|
6711
|
-
|
|
6980
|
+
var SidebarTrigger = React36.forwardRef(
|
|
6981
|
+
function SidebarTrigger2({
|
|
6982
|
+
className,
|
|
6983
|
+
expandLabel = "Expand sidebar",
|
|
6984
|
+
collapseLabel = "Collapse sidebar",
|
|
6985
|
+
onClick,
|
|
6986
|
+
...props
|
|
6987
|
+
}, ref) {
|
|
6988
|
+
const ctx = React36.useContext(SidebarContext);
|
|
6989
|
+
if (!ctx) return null;
|
|
6990
|
+
const { state, toggle } = ctx;
|
|
6991
|
+
const label = state === "expanded" ? collapseLabel : expandLabel;
|
|
6992
|
+
return /* @__PURE__ */ jsx(
|
|
6993
|
+
"button",
|
|
6994
|
+
{
|
|
6995
|
+
ref,
|
|
6996
|
+
type: "button",
|
|
6997
|
+
"aria-label": label,
|
|
6998
|
+
"aria-expanded": state === "expanded",
|
|
6999
|
+
onClick: (e) => {
|
|
7000
|
+
onClick?.(e);
|
|
7001
|
+
if (!e.defaultPrevented) toggle();
|
|
7002
|
+
},
|
|
7003
|
+
className: cn(
|
|
7004
|
+
"inline-flex size-7 shrink-0 items-center justify-center rounded-md",
|
|
7005
|
+
"text-fg-3 hover:bg-bg-3 hover:text-fg",
|
|
7006
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7007
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7008
|
+
"[&_svg]:size-4",
|
|
7009
|
+
className
|
|
7010
|
+
),
|
|
7011
|
+
...props,
|
|
7012
|
+
children: state === "expanded" ? /* @__PURE__ */ jsx(PanelLeftCloseIcon, {}) : /* @__PURE__ */ jsx(PanelLeftIcon, {})
|
|
7013
|
+
}
|
|
7014
|
+
);
|
|
7015
|
+
}
|
|
7016
|
+
);
|
|
7017
|
+
SidebarTrigger.displayName = "SidebarTrigger";
|
|
7018
|
+
var SidebarBrand = React36.forwardRef(
|
|
7019
|
+
function SidebarBrand2({ className, ...props }, ref) {
|
|
7020
|
+
return /* @__PURE__ */ jsx(
|
|
7021
|
+
"div",
|
|
7022
|
+
{
|
|
7023
|
+
ref,
|
|
7024
|
+
className: cn(
|
|
7025
|
+
"flex min-w-0 items-center gap-2 px-2 pt-1 pb-4",
|
|
7026
|
+
className
|
|
7027
|
+
),
|
|
7028
|
+
...props
|
|
7029
|
+
}
|
|
7030
|
+
);
|
|
7031
|
+
}
|
|
7032
|
+
);
|
|
6712
7033
|
SidebarBrand.displayName = "SidebarBrand";
|
|
6713
|
-
var
|
|
7034
|
+
var SidebarBrandText = React36.forwardRef(
|
|
7035
|
+
function SidebarBrandText2({ className, ...props }, ref) {
|
|
7036
|
+
return /* @__PURE__ */ jsx(
|
|
7037
|
+
"span",
|
|
7038
|
+
{
|
|
7039
|
+
ref,
|
|
7040
|
+
"aria-hidden": "false",
|
|
7041
|
+
className: cn(
|
|
7042
|
+
"min-w-0 truncate",
|
|
7043
|
+
// Smooth fade + width collapse on rail. Keeps the wordmark
|
|
7044
|
+
// legible up to the moment the column reaches rail width, then
|
|
7045
|
+
// fully drops out (visibility:hidden cuts hit-testing).
|
|
7046
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7047
|
+
"max-w-[160px] opacity-100",
|
|
7048
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible",
|
|
7049
|
+
className
|
|
7050
|
+
),
|
|
7051
|
+
...props
|
|
7052
|
+
}
|
|
7053
|
+
);
|
|
7054
|
+
}
|
|
7055
|
+
);
|
|
7056
|
+
SidebarBrandText.displayName = "SidebarBrandText";
|
|
7057
|
+
var SidebarGroupScopeContext = React36.createContext(null);
|
|
7058
|
+
var SidebarSection = React36.forwardRef(
|
|
6714
7059
|
function SidebarSection2({ label, tone = "pro", className, children, ...props }, ref) {
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
7060
|
+
const ariaLabel = typeof label === "string" ? label : typeof label === "number" ? String(label) : void 0;
|
|
7061
|
+
const [exclusiveId, setExclusiveIdState] = React36.useState(null);
|
|
7062
|
+
const setExclusive = React36.useCallback(
|
|
7063
|
+
(id) => setExclusiveIdState(id),
|
|
7064
|
+
[]
|
|
7065
|
+
);
|
|
7066
|
+
const scope = React36.useMemo(
|
|
7067
|
+
() => ({ exclusiveId, setExclusive }),
|
|
7068
|
+
[exclusiveId, setExclusive]
|
|
7069
|
+
);
|
|
7070
|
+
return /* @__PURE__ */ jsx(SidebarGroupScopeContext.Provider, { value: scope, children: /* @__PURE__ */ jsxs(
|
|
7071
|
+
"div",
|
|
7072
|
+
{
|
|
7073
|
+
ref,
|
|
7074
|
+
role: ariaLabel ? "group" : void 0,
|
|
7075
|
+
"aria-label": ariaLabel,
|
|
7076
|
+
className: cn(
|
|
7077
|
+
"mb-4",
|
|
7078
|
+
// In rail, the visible section labels disappear and the only
|
|
7079
|
+
// grouping cue is a thin rule. No extra mb/pb — the border
|
|
7080
|
+
// itself separates groups, so inter-section spacing matches
|
|
7081
|
+
// intra-section spacing and the rail stays dense.
|
|
7082
|
+
"group-data-[labels=hide]/sidebar:mb-0 group-data-[labels=hide]/sidebar:border-b group-data-[labels=hide]/sidebar:border-rule group-data-[labels=hide]/sidebar:pb-0 group-data-[labels=hide]/sidebar:last:border-b-0",
|
|
7083
|
+
className
|
|
7084
|
+
),
|
|
7085
|
+
...props,
|
|
7086
|
+
children: [
|
|
7087
|
+
label != null && /* @__PURE__ */ jsx(
|
|
7088
|
+
"div",
|
|
7089
|
+
{
|
|
7090
|
+
className: cn(
|
|
7091
|
+
"mb-1 flex items-center justify-between px-2.5 py-1",
|
|
7092
|
+
"transition-opacity duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7093
|
+
"opacity-100",
|
|
7094
|
+
"group-data-[labels=hide]/sidebar:invisible group-data-[labels=hide]/sidebar:opacity-0"
|
|
7095
|
+
),
|
|
7096
|
+
children: /* @__PURE__ */ jsx(
|
|
7097
|
+
"span",
|
|
7098
|
+
{
|
|
7099
|
+
className: cn(
|
|
7100
|
+
"font-mono text-[11px] tracking-[0.14em] uppercase",
|
|
7101
|
+
tone === "muted" ? "text-fg-3" : "text-pro-fg"
|
|
7102
|
+
),
|
|
7103
|
+
children: label
|
|
7104
|
+
}
|
|
7105
|
+
)
|
|
7106
|
+
}
|
|
6722
7107
|
),
|
|
6723
|
-
children
|
|
6724
|
-
|
|
6725
|
-
|
|
6726
|
-
|
|
6727
|
-
] });
|
|
7108
|
+
children
|
|
7109
|
+
]
|
|
7110
|
+
}
|
|
7111
|
+
) });
|
|
6728
7112
|
}
|
|
6729
7113
|
);
|
|
6730
7114
|
SidebarSection.displayName = "SidebarSection";
|
|
6731
|
-
var SidebarLink = forwardRef(
|
|
6732
|
-
|
|
6733
|
-
|
|
6734
|
-
|
|
6735
|
-
|
|
6736
|
-
|
|
6737
|
-
|
|
6738
|
-
|
|
6739
|
-
|
|
6740
|
-
|
|
6741
|
-
|
|
6742
|
-
|
|
6743
|
-
|
|
6744
|
-
|
|
6745
|
-
|
|
6746
|
-
|
|
6747
|
-
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
|
|
6751
|
-
|
|
6752
|
-
|
|
6753
|
-
|
|
6754
|
-
|
|
6755
|
-
|
|
6756
|
-
|
|
6757
|
-
|
|
6758
|
-
|
|
6759
|
-
|
|
6760
|
-
|
|
6761
|
-
|
|
6762
|
-
|
|
6763
|
-
|
|
6764
|
-
|
|
6765
|
-
|
|
7115
|
+
var SidebarLink = React36.forwardRef(
|
|
7116
|
+
function SidebarLink2({ href, icon, active = false, asChild, className, children, ...props }, ref) {
|
|
7117
|
+
const Comp = asChild ? Slot : "a";
|
|
7118
|
+
return /* @__PURE__ */ jsx(
|
|
7119
|
+
Comp,
|
|
7120
|
+
{
|
|
7121
|
+
ref,
|
|
7122
|
+
...asChild ? {} : { href },
|
|
7123
|
+
"data-active": active ? "true" : void 0,
|
|
7124
|
+
"aria-current": active ? "page" : void 0,
|
|
7125
|
+
className: cn(
|
|
7126
|
+
"group/link relative mb-px flex items-center gap-2.5 rounded-md px-2.5 py-1.5",
|
|
7127
|
+
"text-fg-2 text-[13px] font-normal no-underline",
|
|
7128
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
7129
|
+
"motion-reduce:transition-none",
|
|
7130
|
+
"hover:bg-bg-3 hover:text-fg",
|
|
7131
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7132
|
+
"data-[active=true]:bg-pro-bg data-[active=true]:text-pro-fg data-[active=true]:font-medium",
|
|
7133
|
+
// In rail, the icon itself carries the active state rather
|
|
7134
|
+
// than just the rule bar — color is more legible than a 2px
|
|
7135
|
+
// vertical mark at the column's left edge when labels are
|
|
7136
|
+
// hidden. The full-opacity icon override (`opacity-100`)
|
|
7137
|
+
// counters the default `[&_svg]:opacity-85` so the active
|
|
7138
|
+
// icon doesn't read as "still inactive but darker".
|
|
7139
|
+
"group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:text-pro-fg group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:opacity-100",
|
|
7140
|
+
// Active rail: 2px wide, 16px tall, anchored to the link's
|
|
7141
|
+
// own left edge — no parent-padding dependency. Continues
|
|
7142
|
+
// working unchanged when the aside narrows to a rail.
|
|
7143
|
+
"data-[active=true]:before:absolute data-[active=true]:before:content-['']",
|
|
7144
|
+
"data-[active=true]:before:top-1/2 data-[active=true]:before:left-0",
|
|
7145
|
+
"data-[active=true]:before:h-4 data-[active=true]:before:w-[2px] data-[active=true]:before:-translate-y-1/2",
|
|
7146
|
+
"data-[active=true]:before:bg-pro-fg data-[active=true]:before:rounded-r-full",
|
|
7147
|
+
// Padding/gap stay constant so the icon stays under the cursor
|
|
7148
|
+
// when the column widens during peek. The label simply collapses
|
|
7149
|
+
// to width 0 via <SidebarLinkLabel>.
|
|
7150
|
+
"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85",
|
|
7151
|
+
className
|
|
7152
|
+
),
|
|
7153
|
+
...props,
|
|
7154
|
+
children: asChild ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7155
|
+
icon,
|
|
7156
|
+
/* @__PURE__ */ jsx(
|
|
7157
|
+
"span",
|
|
7158
|
+
{
|
|
7159
|
+
className: cn(
|
|
7160
|
+
"min-w-0 flex-1 truncate",
|
|
7161
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7162
|
+
"max-w-full opacity-100",
|
|
7163
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
7164
|
+
),
|
|
7165
|
+
children
|
|
7166
|
+
}
|
|
7167
|
+
)
|
|
7168
|
+
] })
|
|
7169
|
+
}
|
|
7170
|
+
);
|
|
7171
|
+
}
|
|
7172
|
+
);
|
|
6766
7173
|
SidebarLink.displayName = "SidebarLink";
|
|
7174
|
+
var SidebarLinkLabel = React36.forwardRef(
|
|
7175
|
+
function SidebarLinkLabel2({ className, ...props }, ref) {
|
|
7176
|
+
return /* @__PURE__ */ jsx(
|
|
7177
|
+
"span",
|
|
7178
|
+
{
|
|
7179
|
+
ref,
|
|
7180
|
+
className: cn(
|
|
7181
|
+
"min-w-0 flex-1 truncate",
|
|
7182
|
+
// Fade + collapse instead of hard display:none so a single
|
|
7183
|
+
// 180ms opacity tween covers all labels in lockstep with the
|
|
7184
|
+
// 220ms aside-width transition — no snap on the last frame.
|
|
7185
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7186
|
+
"max-w-full opacity-100",
|
|
7187
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible",
|
|
7188
|
+
className
|
|
7189
|
+
),
|
|
7190
|
+
...props
|
|
7191
|
+
}
|
|
7192
|
+
);
|
|
7193
|
+
}
|
|
7194
|
+
);
|
|
7195
|
+
SidebarLinkLabel.displayName = "SidebarLinkLabel";
|
|
7196
|
+
var SidebarLinkAction = React36.forwardRef(
|
|
7197
|
+
function SidebarLinkAction2({ className, ...props }, ref) {
|
|
7198
|
+
return /* @__PURE__ */ jsx(
|
|
7199
|
+
"span",
|
|
7200
|
+
{
|
|
7201
|
+
ref,
|
|
7202
|
+
className: cn(
|
|
7203
|
+
"transition-opacity duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7204
|
+
"opacity-100",
|
|
7205
|
+
"group-data-[labels=hide]/sidebar:invisible group-data-[labels=hide]/sidebar:opacity-0",
|
|
7206
|
+
className
|
|
7207
|
+
),
|
|
7208
|
+
...props
|
|
7209
|
+
}
|
|
7210
|
+
);
|
|
7211
|
+
}
|
|
7212
|
+
);
|
|
7213
|
+
SidebarLinkAction.displayName = "SidebarLinkAction";
|
|
6767
7214
|
var sidebarLinkBadgeVariants = cva(
|
|
6768
|
-
"ml-auto inline-flex shrink-0 items-center justify-center font-mono tabular-nums",
|
|
7215
|
+
"ml-auto inline-flex shrink-0 items-center justify-center font-mono tabular-nums group-data-[labels=hide]/sidebar:hidden",
|
|
6769
7216
|
{
|
|
6770
7217
|
variants: {
|
|
6771
7218
|
tone: {
|
|
6772
|
-
|
|
6773
|
-
default: "text-[10.5px] text-fg-4 group-data-[active=true]:text-pro-fg",
|
|
6774
|
-
// Semantic pills — for nav items with action signals
|
|
6775
|
-
// (unread messages, due tasks, blocked actions).
|
|
7219
|
+
default: "text-[10.5px] text-fg-4 group-data-[active=true]/link:text-pro-fg",
|
|
6776
7220
|
danger: "rounded-pill bg-danger-bg px-1.5 py-0.5 text-[10.5px] text-danger-fg",
|
|
6777
7221
|
warning: "rounded-pill bg-warning-bg px-1.5 py-0.5 text-[10.5px] text-warning-fg",
|
|
6778
7222
|
neutral: "rounded-pill bg-bg-3 px-1.5 py-0.5 text-[10.5px] text-fg-2"
|
|
@@ -6781,34 +7225,176 @@ var sidebarLinkBadgeVariants = cva(
|
|
|
6781
7225
|
defaultVariants: { tone: "default" }
|
|
6782
7226
|
}
|
|
6783
7227
|
);
|
|
6784
|
-
var SidebarLinkBadge = forwardRef(
|
|
7228
|
+
var SidebarLinkBadge = React36.forwardRef(
|
|
6785
7229
|
function SidebarLinkBadge2({ tone, className, ...props }, ref) {
|
|
6786
7230
|
return /* @__PURE__ */ jsx("span", { ref, className: cn(sidebarLinkBadgeVariants({ tone }), className), ...props });
|
|
6787
7231
|
}
|
|
6788
7232
|
);
|
|
6789
7233
|
SidebarLinkBadge.displayName = "SidebarLinkBadge";
|
|
6790
|
-
var
|
|
6791
|
-
|
|
6792
|
-
|
|
6793
|
-
|
|
6794
|
-
|
|
6795
|
-
|
|
6796
|
-
|
|
6797
|
-
|
|
6798
|
-
|
|
6799
|
-
|
|
6800
|
-
|
|
6801
|
-
|
|
6802
|
-
|
|
6803
|
-
|
|
7234
|
+
var SidebarLinkGroup = React36.forwardRef(
|
|
7235
|
+
function SidebarLinkGroup2({
|
|
7236
|
+
id: idProp,
|
|
7237
|
+
icon,
|
|
7238
|
+
label,
|
|
7239
|
+
href,
|
|
7240
|
+
active = false,
|
|
7241
|
+
defaultOpen = false,
|
|
7242
|
+
open: controlled,
|
|
7243
|
+
onOpenChange,
|
|
7244
|
+
onActivate,
|
|
7245
|
+
className,
|
|
7246
|
+
children,
|
|
7247
|
+
...props
|
|
7248
|
+
}, ref) {
|
|
7249
|
+
const reactId = React36.useId();
|
|
7250
|
+
const id = idProp ?? reactId;
|
|
7251
|
+
const scope = React36.useContext(SidebarGroupScopeContext);
|
|
7252
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React36.useState(defaultOpen);
|
|
7253
|
+
const open = controlled ?? uncontrolledOpen;
|
|
7254
|
+
const setOpen = React36.useCallback(
|
|
7255
|
+
(next) => {
|
|
7256
|
+
if (controlled === void 0) setUncontrolledOpen(next);
|
|
7257
|
+
onOpenChange?.(next);
|
|
7258
|
+
},
|
|
7259
|
+
[controlled, onOpenChange]
|
|
7260
|
+
);
|
|
7261
|
+
React36.useEffect(() => {
|
|
7262
|
+
if (scope?.exclusiveId && scope.exclusiveId !== id && open) {
|
|
7263
|
+
setOpen(false);
|
|
7264
|
+
}
|
|
7265
|
+
}, [scope?.exclusiveId, id, open, setOpen]);
|
|
7266
|
+
const handleBodyClick = (e) => {
|
|
7267
|
+
onActivate?.(e);
|
|
7268
|
+
if (e.defaultPrevented) return;
|
|
7269
|
+
scope?.setExclusive(id);
|
|
7270
|
+
setOpen(true);
|
|
7271
|
+
};
|
|
7272
|
+
const handleChevronClick = (e) => {
|
|
7273
|
+
e.preventDefault();
|
|
7274
|
+
e.stopPropagation();
|
|
7275
|
+
setOpen(!open);
|
|
7276
|
+
};
|
|
7277
|
+
const contentId = `${id}-content`;
|
|
7278
|
+
const bodyClassName = cn(
|
|
7279
|
+
"group/link relative flex flex-1 items-center gap-2.5 rounded-md px-2.5 py-1.5",
|
|
7280
|
+
"text-fg-2 text-[13px] font-normal no-underline",
|
|
7281
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
7282
|
+
"motion-reduce:transition-none",
|
|
7283
|
+
"hover:bg-bg-3 hover:text-fg",
|
|
7284
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7285
|
+
"data-[active=true]:bg-pro-bg data-[active=true]:text-pro-fg data-[active=true]:font-medium",
|
|
7286
|
+
// In rail, color carries active state since the chevron is hidden.
|
|
7287
|
+
"group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:text-pro-fg group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:opacity-100",
|
|
7288
|
+
// Active rail mark — anchored to body row's left edge.
|
|
7289
|
+
"data-[active=true]:before:absolute data-[active=true]:before:content-['']",
|
|
7290
|
+
"data-[active=true]:before:top-1/2 data-[active=true]:before:left-0",
|
|
7291
|
+
"data-[active=true]:before:h-4 data-[active=true]:before:w-[2px] data-[active=true]:before:-translate-y-1/2",
|
|
7292
|
+
"data-[active=true]:before:bg-pro-fg data-[active=true]:before:rounded-r-full",
|
|
7293
|
+
"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85"
|
|
7294
|
+
);
|
|
7295
|
+
const labelSpan = /* @__PURE__ */ jsx(
|
|
7296
|
+
"span",
|
|
7297
|
+
{
|
|
7298
|
+
className: cn(
|
|
7299
|
+
"min-w-0 flex-1 truncate",
|
|
7300
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7301
|
+
"max-w-full opacity-100",
|
|
7302
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
7303
|
+
),
|
|
7304
|
+
children: label
|
|
7305
|
+
}
|
|
7306
|
+
);
|
|
7307
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("mb-px", className), ...props, children: /* @__PURE__ */ jsxs(Collapsible, { open, onOpenChange: setOpen, children: [
|
|
7308
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-stretch", children: [
|
|
7309
|
+
/* @__PURE__ */ jsxs(
|
|
7310
|
+
"a",
|
|
7311
|
+
{
|
|
7312
|
+
href,
|
|
7313
|
+
"data-active": active ? "true" : void 0,
|
|
7314
|
+
"aria-current": active ? "page" : void 0,
|
|
7315
|
+
onClick: handleBodyClick,
|
|
7316
|
+
className: bodyClassName,
|
|
7317
|
+
children: [
|
|
7318
|
+
icon,
|
|
7319
|
+
labelSpan
|
|
7320
|
+
]
|
|
7321
|
+
}
|
|
7322
|
+
),
|
|
7323
|
+
/* @__PURE__ */ jsx(
|
|
7324
|
+
"button",
|
|
7325
|
+
{
|
|
7326
|
+
type: "button",
|
|
7327
|
+
"aria-expanded": open,
|
|
7328
|
+
"aria-controls": contentId,
|
|
7329
|
+
"aria-label": open ? "Collapse section" : "Expand section",
|
|
7330
|
+
onClick: handleChevronClick,
|
|
7331
|
+
className: cn(
|
|
7332
|
+
"ml-px inline-flex size-7 shrink-0 items-center justify-center rounded-md",
|
|
7333
|
+
"text-fg-4 hover:bg-bg-3 hover:text-fg-2",
|
|
7334
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7335
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7336
|
+
"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:transition-transform [&_svg]:duration-[var(--duration-fast)] [&_svg]:ease-[var(--ease-out-quart)] motion-reduce:[&_svg]:transition-none",
|
|
7337
|
+
// Hide in rail — content tree is hidden too, so the
|
|
7338
|
+
// affordance has nothing to control.
|
|
7339
|
+
"group-data-[labels=hide]/sidebar:hidden"
|
|
7340
|
+
),
|
|
7341
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: open ? "" : "-rotate-90" })
|
|
7342
|
+
}
|
|
7343
|
+
)
|
|
7344
|
+
] }),
|
|
7345
|
+
/* @__PURE__ */ jsx(
|
|
7346
|
+
CollapsibleContent,
|
|
7347
|
+
{
|
|
7348
|
+
id: contentId,
|
|
7349
|
+
className: cn(
|
|
7350
|
+
// Indent column + connecting rule. Children render as
|
|
7351
|
+
// standard <SidebarLink>s and keep their own active-rail
|
|
7352
|
+
// indicator, which lands flush at the indented column's
|
|
7353
|
+
// left edge.
|
|
7354
|
+
"group-data-[labels=hide]/sidebar:hidden"
|
|
7355
|
+
),
|
|
7356
|
+
children: /* @__PURE__ */ jsx("div", { className: "border-rule mt-px ml-[18px] border-l pl-2", children })
|
|
7357
|
+
}
|
|
7358
|
+
)
|
|
7359
|
+
] }) });
|
|
7360
|
+
}
|
|
7361
|
+
);
|
|
7362
|
+
SidebarLinkGroup.displayName = "SidebarLinkGroup";
|
|
7363
|
+
var SidebarFooter = React36.forwardRef(
|
|
7364
|
+
function SidebarFooter2({ className, ...props }, ref) {
|
|
7365
|
+
return /* @__PURE__ */ jsx(
|
|
7366
|
+
"div",
|
|
7367
|
+
{
|
|
7368
|
+
ref,
|
|
7369
|
+
className: cn(
|
|
7370
|
+
"border-rule mt-auto flex items-center gap-2.5 border-t px-2 pt-2.5 pb-1",
|
|
7371
|
+
"text-fg-3 text-xs",
|
|
7372
|
+
className
|
|
7373
|
+
),
|
|
7374
|
+
...props
|
|
7375
|
+
}
|
|
7376
|
+
);
|
|
7377
|
+
}
|
|
7378
|
+
);
|
|
6804
7379
|
SidebarFooter.displayName = "SidebarFooter";
|
|
6805
|
-
var SidebarUser = forwardRef(function SidebarUser2({ name, subtitle, avatarSrc, className, ...props }, ref) {
|
|
7380
|
+
var SidebarUser = React36.forwardRef(function SidebarUser2({ name, subtitle, avatarSrc, className, ...props }, ref) {
|
|
6806
7381
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex min-w-0 items-center gap-2.5", className), ...props, children: [
|
|
6807
7382
|
/* @__PURE__ */ jsx(Avatar, { size: "sm", variant: "branded", name, src: avatarSrc ?? void 0 }),
|
|
6808
|
-
/* @__PURE__ */ jsxs(
|
|
6809
|
-
|
|
6810
|
-
|
|
6811
|
-
|
|
7383
|
+
/* @__PURE__ */ jsxs(
|
|
7384
|
+
"div",
|
|
7385
|
+
{
|
|
7386
|
+
className: cn(
|
|
7387
|
+
"min-w-0 leading-tight",
|
|
7388
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7389
|
+
"max-w-full opacity-100",
|
|
7390
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
7391
|
+
),
|
|
7392
|
+
children: [
|
|
7393
|
+
/* @__PURE__ */ jsx("div", { className: "text-fg truncate text-[13px] font-medium", children: name }),
|
|
7394
|
+
subtitle != null && /* @__PURE__ */ jsx("div", { className: "text-fg-4 truncate font-mono text-[10.5px]", children: subtitle })
|
|
7395
|
+
]
|
|
7396
|
+
}
|
|
7397
|
+
)
|
|
6812
7398
|
] });
|
|
6813
7399
|
});
|
|
6814
7400
|
SidebarUser.displayName = "SidebarUser";
|
|
@@ -6897,11 +7483,15 @@ var AppHeaderActions = forwardRef(
|
|
|
6897
7483
|
}
|
|
6898
7484
|
);
|
|
6899
7485
|
AppHeaderActions.displayName = "AppHeaderActions";
|
|
6900
|
-
var PageHeader = forwardRef(function PageHeader2({ eyebrow, title, meta, className, ...props }, ref) {
|
|
7486
|
+
var PageHeader = forwardRef(function PageHeader2({ eyebrow, title, description, actions, meta, className, ...props }, ref) {
|
|
6901
7487
|
return /* @__PURE__ */ jsxs("header", { ref, className: cn("mb-7", className), ...props, children: [
|
|
6902
7488
|
eyebrow && /* @__PURE__ */ jsx("div", { className: "mb-1.5", children: eyebrow }),
|
|
6903
|
-
/* @__PURE__ */
|
|
6904
|
-
|
|
7489
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [
|
|
7490
|
+
/* @__PURE__ */ jsx("h1", { className: "font-display text-fg text-[26px] leading-tight tracking-tight", children: title }),
|
|
7491
|
+
actions && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2", children: actions })
|
|
7492
|
+
] }),
|
|
7493
|
+
description && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-2 max-w-2xl text-sm leading-relaxed", children: description }),
|
|
7494
|
+
meta && /* @__PURE__ */ jsx("div", { className: "text-fg-3 mt-2 flex flex-wrap items-center gap-2 text-sm", children: meta })
|
|
6905
7495
|
] });
|
|
6906
7496
|
});
|
|
6907
7497
|
PageHeader.displayName = "PageHeader";
|
|
@@ -6933,6 +7523,83 @@ var PageHeaderSep = forwardRef(function PageHeaderSep2({ children, className, ..
|
|
|
6933
7523
|
);
|
|
6934
7524
|
});
|
|
6935
7525
|
PageHeaderSep.displayName = "PageHeaderSep";
|
|
7526
|
+
var columnsToGridCols = {
|
|
7527
|
+
1: "grid-cols-1",
|
|
7528
|
+
2: "grid-cols-2",
|
|
7529
|
+
3: "grid-cols-3",
|
|
7530
|
+
4: "grid-cols-4"
|
|
7531
|
+
};
|
|
7532
|
+
var MetadataGrid = forwardRef(function MetadataGrid2({ columns = 2, gapX = "gap-x-6", gapY = "gap-y-3", className, children, ...props }, ref) {
|
|
7533
|
+
return /* @__PURE__ */ jsx(
|
|
7534
|
+
"dl",
|
|
7535
|
+
{
|
|
7536
|
+
ref,
|
|
7537
|
+
className: cn("grid", columnsToGridCols[columns], gapX, gapY, className),
|
|
7538
|
+
...props,
|
|
7539
|
+
children
|
|
7540
|
+
}
|
|
7541
|
+
);
|
|
7542
|
+
});
|
|
7543
|
+
MetadataGrid.displayName = "MetadataGrid";
|
|
7544
|
+
var spanToColSpan = {
|
|
7545
|
+
1: "col-span-1",
|
|
7546
|
+
2: "col-span-2",
|
|
7547
|
+
3: "col-span-3",
|
|
7548
|
+
4: "col-span-4"
|
|
7549
|
+
};
|
|
7550
|
+
function DataItem({ label, value, span = 1, className }) {
|
|
7551
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("min-w-0", spanToColSpan[span], className), children: [
|
|
7552
|
+
/* @__PURE__ */ jsx("dt", { className: "text-fg-4 text-[11px] font-medium uppercase tracking-wider", children: label }),
|
|
7553
|
+
/* @__PURE__ */ jsx("dd", { className: "text-fg mt-0.5 break-words text-sm", children: value })
|
|
7554
|
+
] });
|
|
7555
|
+
}
|
|
7556
|
+
var toneToTile = {
|
|
7557
|
+
info: "bg-info/10 text-info",
|
|
7558
|
+
success: "bg-success-fg/10 text-success-fg",
|
|
7559
|
+
warning: "bg-warning-fg/10 text-warning-fg",
|
|
7560
|
+
destructive: "bg-danger-fg/10 text-danger-fg",
|
|
7561
|
+
accent: "bg-accent/10 text-accent",
|
|
7562
|
+
muted: "bg-bg-3 text-fg-3"
|
|
7563
|
+
};
|
|
7564
|
+
var toneToValue = {
|
|
7565
|
+
info: "text-info",
|
|
7566
|
+
success: "text-success-fg",
|
|
7567
|
+
warning: "text-warning-fg",
|
|
7568
|
+
destructive: "text-danger-fg",
|
|
7569
|
+
accent: "text-accent",
|
|
7570
|
+
muted: "text-fg"
|
|
7571
|
+
};
|
|
7572
|
+
var KpiCard = forwardRef(function KpiCard2({ label, value, icon, tone = "muted", hint, action, toneValue, className, ...props }, ref) {
|
|
7573
|
+
return /* @__PURE__ */ jsx(Card, { ref, className: cn("p-4", className), ...props, children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
7574
|
+
icon && /* @__PURE__ */ jsx(
|
|
7575
|
+
"div",
|
|
7576
|
+
{
|
|
7577
|
+
"aria-hidden": "true",
|
|
7578
|
+
className: cn(
|
|
7579
|
+
"flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg]:size-5",
|
|
7580
|
+
toneToTile[tone]
|
|
7581
|
+
),
|
|
7582
|
+
children: icon
|
|
7583
|
+
}
|
|
7584
|
+
),
|
|
7585
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
7586
|
+
/* @__PURE__ */ jsx(
|
|
7587
|
+
"p",
|
|
7588
|
+
{
|
|
7589
|
+
className: cn(
|
|
7590
|
+
"text-2xl font-bold tracking-tight tabular-nums",
|
|
7591
|
+
toneValue ? toneToValue[tone] : "text-fg"
|
|
7592
|
+
),
|
|
7593
|
+
children: value
|
|
7594
|
+
}
|
|
7595
|
+
),
|
|
7596
|
+
/* @__PURE__ */ jsx("p", { className: "text-fg-3 text-xs", children: label }),
|
|
7597
|
+
hint && /* @__PURE__ */ jsx("p", { className: "text-fg-4 mt-0.5 text-[11px]", children: hint })
|
|
7598
|
+
] }),
|
|
7599
|
+
action && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: action })
|
|
7600
|
+
] }) });
|
|
7601
|
+
});
|
|
7602
|
+
KpiCard.displayName = "KpiCard";
|
|
6936
7603
|
var DataTable = forwardRef(function DataTable2({ withToolbar, className, children, ...props }, ref) {
|
|
6937
7604
|
return /* @__PURE__ */ jsx(
|
|
6938
7605
|
"div",
|
|
@@ -7532,6 +8199,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
|
|
|
7532
8199
|
});
|
|
7533
8200
|
KbdHint.displayName = "KbdHint";
|
|
7534
8201
|
|
|
7535
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarFooter, SidebarLink, SidebarLinkBadge, SidebarSection, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StarRating, Stat, Stepper, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, displayToIso, filterChipVariants, inputVariants, isoToDisplay, kanbanCardVariants, labelVariants, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useToast };
|
|
8202
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StarRating, Stat, Stepper, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, displayToIso, filterChipVariants, inputVariants, isoToDisplay, kanbanCardVariants, labelVariants, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarState, useToast };
|
|
7536
8203
|
//# sourceMappingURL=index.js.map
|
|
7537
8204
|
//# sourceMappingURL=index.js.map
|