@assure-one/design-system 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +121 -18
- package/dist/index.js +717 -190
- 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";
|
|
@@ -2697,7 +2710,7 @@ function Calendar({
|
|
|
2697
2710
|
classNames,
|
|
2698
2711
|
...props
|
|
2699
2712
|
}) {
|
|
2700
|
-
const { modifiers, modifiersClassNames } =
|
|
2713
|
+
const { modifiers, modifiersClassNames } = React36.useMemo(() => {
|
|
2701
2714
|
const buckets = {};
|
|
2702
2715
|
for (const h of highlights) {
|
|
2703
2716
|
const key = h.color ?? "primary";
|
|
@@ -2712,7 +2725,7 @@ function Calendar({
|
|
|
2712
2725
|
}
|
|
2713
2726
|
return { modifiers: mods, modifiersClassNames: modClasses };
|
|
2714
2727
|
}, [highlights]);
|
|
2715
|
-
const disabledMatcher =
|
|
2728
|
+
const disabledMatcher = React36.useMemo(() => {
|
|
2716
2729
|
if (!minDate && !maxDate) return void 0;
|
|
2717
2730
|
if (minDate && maxDate) return [{ before: minDate }, { after: maxDate }];
|
|
2718
2731
|
if (minDate) return { before: minDate };
|
|
@@ -2844,8 +2857,8 @@ var CardAction = forwardRef(
|
|
|
2844
2857
|
}
|
|
2845
2858
|
);
|
|
2846
2859
|
CardAction.displayName = "CardAction";
|
|
2847
|
-
var Checkbox =
|
|
2848
|
-
const generatedId =
|
|
2860
|
+
var Checkbox = React36.forwardRef(function Checkbox2({ label, indeterminate, checked, defaultChecked, className, id: providedId, ...props }, ref) {
|
|
2861
|
+
const generatedId = React36.useId();
|
|
2849
2862
|
const id = providedId ?? generatedId;
|
|
2850
2863
|
const resolvedChecked = indeterminate ? "indeterminate" : checked;
|
|
2851
2864
|
return /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2", children: [
|
|
@@ -2885,7 +2898,7 @@ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
|
2885
2898
|
var SelectRoot = SelectPrimitive.Root;
|
|
2886
2899
|
var SelectGroup = SelectPrimitive.Group;
|
|
2887
2900
|
var SelectValue = SelectPrimitive.Value;
|
|
2888
|
-
var SelectTrigger =
|
|
2901
|
+
var SelectTrigger = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2889
2902
|
SelectPrimitive.Trigger,
|
|
2890
2903
|
{
|
|
2891
2904
|
ref,
|
|
@@ -2916,7 +2929,7 @@ var SelectTrigger = React13.forwardRef(({ className, children, ...props }, ref)
|
|
|
2916
2929
|
}
|
|
2917
2930
|
));
|
|
2918
2931
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
2919
|
-
var SelectScrollUpButton =
|
|
2932
|
+
var SelectScrollUpButton = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2920
2933
|
SelectPrimitive.ScrollUpButton,
|
|
2921
2934
|
{
|
|
2922
2935
|
ref,
|
|
@@ -2926,7 +2939,7 @@ var SelectScrollUpButton = React13.forwardRef(({ className, ...props }, ref) =>
|
|
|
2926
2939
|
}
|
|
2927
2940
|
));
|
|
2928
2941
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
2929
|
-
var SelectScrollDownButton =
|
|
2942
|
+
var SelectScrollDownButton = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2930
2943
|
SelectPrimitive.ScrollDownButton,
|
|
2931
2944
|
{
|
|
2932
2945
|
ref,
|
|
@@ -2936,7 +2949,7 @@ var SelectScrollDownButton = React13.forwardRef(({ className, ...props }, ref) =
|
|
|
2936
2949
|
}
|
|
2937
2950
|
));
|
|
2938
2951
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
2939
|
-
var SelectContent =
|
|
2952
|
+
var SelectContent = React36.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
2940
2953
|
SelectPrimitive.Content,
|
|
2941
2954
|
{
|
|
2942
2955
|
ref,
|
|
@@ -2970,7 +2983,7 @@ var SelectContent = React13.forwardRef(({ className, children, position = "poppe
|
|
|
2970
2983
|
}
|
|
2971
2984
|
) }));
|
|
2972
2985
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
2973
|
-
var SelectLabel =
|
|
2986
|
+
var SelectLabel = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2974
2987
|
SelectPrimitive.Label,
|
|
2975
2988
|
{
|
|
2976
2989
|
ref,
|
|
@@ -2982,7 +2995,7 @@ var SelectLabel = React13.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2982
2995
|
}
|
|
2983
2996
|
));
|
|
2984
2997
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
2985
|
-
var SelectItem =
|
|
2998
|
+
var SelectItem = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2986
2999
|
SelectPrimitive.Item,
|
|
2987
3000
|
{
|
|
2988
3001
|
ref,
|
|
@@ -3003,7 +3016,7 @@ var SelectItem = React13.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
3003
3016
|
}
|
|
3004
3017
|
));
|
|
3005
3018
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
3006
|
-
var SelectSeparator =
|
|
3019
|
+
var SelectSeparator = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3007
3020
|
SelectPrimitive.Separator,
|
|
3008
3021
|
{
|
|
3009
3022
|
ref,
|
|
@@ -3087,11 +3100,11 @@ function ClientSelect({
|
|
|
3087
3100
|
] });
|
|
3088
3101
|
}
|
|
3089
3102
|
ClientSelect.displayName = "ClientSelect";
|
|
3090
|
-
var Collapsible =
|
|
3103
|
+
var Collapsible = React36.forwardRef(function Collapsible2({ className, ...props }, ref) {
|
|
3091
3104
|
return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { ref, className: cn(className), ...props });
|
|
3092
3105
|
});
|
|
3093
3106
|
Collapsible.displayName = CollapsiblePrimitive.Root.displayName;
|
|
3094
|
-
var CollapsibleTrigger =
|
|
3107
|
+
var CollapsibleTrigger = React36.forwardRef(function CollapsibleTrigger2({ className, ...props }, ref) {
|
|
3095
3108
|
return /* @__PURE__ */ jsx(
|
|
3096
3109
|
CollapsiblePrimitive.Trigger,
|
|
3097
3110
|
{
|
|
@@ -3106,7 +3119,7 @@ var CollapsibleTrigger = React13.forwardRef(function CollapsibleTrigger2({ class
|
|
|
3106
3119
|
);
|
|
3107
3120
|
});
|
|
3108
3121
|
CollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName;
|
|
3109
|
-
var CollapsibleContent =
|
|
3122
|
+
var CollapsibleContent = React36.forwardRef(function CollapsibleContent2({ className, ...props }, ref) {
|
|
3110
3123
|
return /* @__PURE__ */ jsx(
|
|
3111
3124
|
CollapsiblePrimitive.Content,
|
|
3112
3125
|
{
|
|
@@ -3183,7 +3196,7 @@ ComingSoon.displayName = "ComingSoon";
|
|
|
3183
3196
|
var Dialog = DialogPrimitive.Root;
|
|
3184
3197
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
3185
3198
|
var DialogPortal = DialogPrimitive.Portal;
|
|
3186
|
-
var DialogOverlay =
|
|
3199
|
+
var DialogOverlay = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3187
3200
|
DialogPrimitive.Overlay,
|
|
3188
3201
|
{
|
|
3189
3202
|
ref,
|
|
@@ -3204,7 +3217,7 @@ var dialogSizeStyles = {
|
|
|
3204
3217
|
lg: "max-w-2xl",
|
|
3205
3218
|
full: "max-w-[calc(100vw-2rem)]"
|
|
3206
3219
|
};
|
|
3207
|
-
var DialogContent =
|
|
3220
|
+
var DialogContent = React36.forwardRef(({ size = "md", showCloseButton = true, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
3208
3221
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
3209
3222
|
/* @__PURE__ */ jsxs(
|
|
3210
3223
|
DialogPrimitive.Content,
|
|
@@ -3245,7 +3258,7 @@ var DialogContent = React13.forwardRef(({ size = "md", showCloseButton = true, c
|
|
|
3245
3258
|
)
|
|
3246
3259
|
] }));
|
|
3247
3260
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
3248
|
-
var DialogClose =
|
|
3261
|
+
var DialogClose = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Close, { ref, className: cn(className), ...props }));
|
|
3249
3262
|
DialogClose.displayName = "DialogClose";
|
|
3250
3263
|
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("mb-4 flex flex-col gap-1.5 pr-8", className), ...props });
|
|
3251
3264
|
DialogHeader.displayName = "DialogHeader";
|
|
@@ -3260,7 +3273,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
3260
3273
|
}
|
|
3261
3274
|
);
|
|
3262
3275
|
DialogFooter.displayName = "DialogFooter";
|
|
3263
|
-
var DialogTitle =
|
|
3276
|
+
var DialogTitle = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3264
3277
|
DialogPrimitive.Title,
|
|
3265
3278
|
{
|
|
3266
3279
|
ref,
|
|
@@ -3272,7 +3285,7 @@ var DialogTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3272
3285
|
}
|
|
3273
3286
|
));
|
|
3274
3287
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
3275
|
-
var DialogDescription =
|
|
3288
|
+
var DialogDescription = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3276
3289
|
DialogPrimitive.Description,
|
|
3277
3290
|
{
|
|
3278
3291
|
ref,
|
|
@@ -3302,17 +3315,17 @@ function CommandPalette({
|
|
|
3302
3315
|
onOpenChange,
|
|
3303
3316
|
placeholder = "Type a command or search..."
|
|
3304
3317
|
}) {
|
|
3305
|
-
const [internalOpen, setInternalOpen] =
|
|
3318
|
+
const [internalOpen, setInternalOpen] = React36.useState(false);
|
|
3306
3319
|
const isControlled = controlledOpen !== void 0;
|
|
3307
3320
|
const open = isControlled ? controlledOpen : internalOpen;
|
|
3308
|
-
const setOpen =
|
|
3321
|
+
const setOpen = React36.useCallback(
|
|
3309
3322
|
(value) => {
|
|
3310
3323
|
if (!isControlled) setInternalOpen(value);
|
|
3311
3324
|
onOpenChange?.(value);
|
|
3312
3325
|
},
|
|
3313
3326
|
[isControlled, onOpenChange]
|
|
3314
3327
|
);
|
|
3315
|
-
|
|
3328
|
+
React36.useEffect(() => {
|
|
3316
3329
|
function handleKeyDown(e) {
|
|
3317
3330
|
if ((e.metaKey || e.ctrlKey) && e.key === "k") {
|
|
3318
3331
|
e.preventDefault();
|
|
@@ -3462,8 +3475,8 @@ function ConfirmActionButton({
|
|
|
3462
3475
|
destructive = true,
|
|
3463
3476
|
contentClassName
|
|
3464
3477
|
}) {
|
|
3465
|
-
const [open, setOpen] =
|
|
3466
|
-
const [pending, setPending] =
|
|
3478
|
+
const [open, setOpen] = React36.useState(false);
|
|
3479
|
+
const [pending, setPending] = React36.useState(false);
|
|
3467
3480
|
const handleConfirm = async (event) => {
|
|
3468
3481
|
event.preventDefault();
|
|
3469
3482
|
setPending(true);
|
|
@@ -3514,7 +3527,7 @@ var ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
|
3514
3527
|
var ContextMenuPortal = ContextMenuPrimitive.Portal;
|
|
3515
3528
|
var ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
3516
3529
|
var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
3517
|
-
var ContextMenuSubTrigger =
|
|
3530
|
+
var ContextMenuSubTrigger = React36.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3518
3531
|
ContextMenuPrimitive.SubTrigger,
|
|
3519
3532
|
{
|
|
3520
3533
|
ref,
|
|
@@ -3535,7 +3548,7 @@ var ContextMenuSubTrigger = React13.forwardRef(({ className, inset, children, ..
|
|
|
3535
3548
|
}
|
|
3536
3549
|
));
|
|
3537
3550
|
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
3538
|
-
var ContextMenuSubContent =
|
|
3551
|
+
var ContextMenuSubContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3539
3552
|
ContextMenuPrimitive.SubContent,
|
|
3540
3553
|
{
|
|
3541
3554
|
ref,
|
|
@@ -3551,7 +3564,7 @@ var ContextMenuSubContent = React13.forwardRef(({ className, ...props }, ref) =>
|
|
|
3551
3564
|
}
|
|
3552
3565
|
));
|
|
3553
3566
|
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
|
|
3554
|
-
var ContextMenuContent =
|
|
3567
|
+
var ContextMenuContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
3555
3568
|
ContextMenuPrimitive.Content,
|
|
3556
3569
|
{
|
|
3557
3570
|
ref,
|
|
@@ -3567,7 +3580,7 @@ var ContextMenuContent = React13.forwardRef(({ className, ...props }, ref) => /*
|
|
|
3567
3580
|
}
|
|
3568
3581
|
) }));
|
|
3569
3582
|
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
3570
|
-
var ContextMenuItem =
|
|
3583
|
+
var ContextMenuItem = React36.forwardRef(({ className, destructive, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3571
3584
|
ContextMenuPrimitive.Item,
|
|
3572
3585
|
{
|
|
3573
3586
|
ref,
|
|
@@ -3585,7 +3598,7 @@ var ContextMenuItem = React13.forwardRef(({ className, destructive, inset, ...pr
|
|
|
3585
3598
|
}
|
|
3586
3599
|
));
|
|
3587
3600
|
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
|
|
3588
|
-
var ContextMenuCheckboxItem =
|
|
3601
|
+
var ContextMenuCheckboxItem = React36.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3589
3602
|
ContextMenuPrimitive.CheckboxItem,
|
|
3590
3603
|
{
|
|
3591
3604
|
ref,
|
|
@@ -3605,7 +3618,7 @@ var ContextMenuCheckboxItem = React13.forwardRef(({ className, children, checked
|
|
|
3605
3618
|
}
|
|
3606
3619
|
));
|
|
3607
3620
|
ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
|
|
3608
|
-
var ContextMenuRadioItem =
|
|
3621
|
+
var ContextMenuRadioItem = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3609
3622
|
ContextMenuPrimitive.RadioItem,
|
|
3610
3623
|
{
|
|
3611
3624
|
ref,
|
|
@@ -3624,7 +3637,7 @@ var ContextMenuRadioItem = React13.forwardRef(({ className, children, ...props }
|
|
|
3624
3637
|
}
|
|
3625
3638
|
));
|
|
3626
3639
|
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
|
|
3627
|
-
var ContextMenuLabel =
|
|
3640
|
+
var ContextMenuLabel = React36.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3628
3641
|
ContextMenuPrimitive.Label,
|
|
3629
3642
|
{
|
|
3630
3643
|
ref,
|
|
@@ -3637,7 +3650,7 @@ var ContextMenuLabel = React13.forwardRef(({ className, inset, ...props }, ref)
|
|
|
3637
3650
|
}
|
|
3638
3651
|
));
|
|
3639
3652
|
ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
|
|
3640
|
-
var ContextMenuSeparator =
|
|
3653
|
+
var ContextMenuSeparator = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3641
3654
|
ContextMenuPrimitive.Separator,
|
|
3642
3655
|
{
|
|
3643
3656
|
ref,
|
|
@@ -3686,7 +3699,7 @@ var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
|
3686
3699
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
3687
3700
|
var PopoverPortal = PopoverPrimitive.Portal;
|
|
3688
3701
|
var PopoverClose = PopoverPrimitive.Close;
|
|
3689
|
-
var PopoverContent =
|
|
3702
|
+
var PopoverContent = React36.forwardRef(({ className, align = "center", side = "bottom", sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
3690
3703
|
PopoverPrimitive.Content,
|
|
3691
3704
|
{
|
|
3692
3705
|
ref,
|
|
@@ -3896,13 +3909,50 @@ var DatePicker = forwardRef(function DatePicker2({
|
|
|
3896
3909
|
] });
|
|
3897
3910
|
});
|
|
3898
3911
|
DatePicker.displayName = "DatePicker";
|
|
3912
|
+
var chipVariants = cva(
|
|
3913
|
+
cn(
|
|
3914
|
+
"inline-flex items-center gap-1 rounded-full px-2.5 py-1",
|
|
3915
|
+
"text-[12px] font-medium",
|
|
3916
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
3917
|
+
"motion-reduce:transition-none",
|
|
3918
|
+
"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]"
|
|
3919
|
+
),
|
|
3920
|
+
{
|
|
3921
|
+
variants: {
|
|
3922
|
+
variant: {
|
|
3923
|
+
primary: "bg-primary/10 text-primary hover:bg-primary/15",
|
|
3924
|
+
neutral: "bg-muted text-fg-2 hover:bg-muted/80"
|
|
3925
|
+
}
|
|
3926
|
+
},
|
|
3927
|
+
defaultVariants: {
|
|
3928
|
+
variant: "primary"
|
|
3929
|
+
}
|
|
3930
|
+
}
|
|
3931
|
+
);
|
|
3932
|
+
var DismissibleChip = React36.forwardRef(function DismissibleChip2({ label, onDismiss, variant, className, ...props }, ref) {
|
|
3933
|
+
return /* @__PURE__ */ jsxs(
|
|
3934
|
+
"button",
|
|
3935
|
+
{
|
|
3936
|
+
ref,
|
|
3937
|
+
type: "button",
|
|
3938
|
+
onClick: onDismiss,
|
|
3939
|
+
"aria-label": typeof label === "string" ? `Remove ${label} filter` : "Remove filter",
|
|
3940
|
+
className: cn(chipVariants({ variant }), className),
|
|
3941
|
+
...props,
|
|
3942
|
+
children: [
|
|
3943
|
+
/* @__PURE__ */ jsx("span", { children: label }),
|
|
3944
|
+
/* @__PURE__ */ jsx(XIcon, { size: 12, "aria-hidden": "true" })
|
|
3945
|
+
]
|
|
3946
|
+
}
|
|
3947
|
+
);
|
|
3948
|
+
});
|
|
3899
3949
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
3900
3950
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
3901
3951
|
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
3902
3952
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
3903
3953
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
3904
3954
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
3905
|
-
var DropdownMenuSubTrigger =
|
|
3955
|
+
var DropdownMenuSubTrigger = React36.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3906
3956
|
DropdownMenuPrimitive.SubTrigger,
|
|
3907
3957
|
{
|
|
3908
3958
|
ref,
|
|
@@ -3923,7 +3973,7 @@ var DropdownMenuSubTrigger = React13.forwardRef(({ className, inset, children, .
|
|
|
3923
3973
|
}
|
|
3924
3974
|
));
|
|
3925
3975
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
3926
|
-
var DropdownMenuSubContent =
|
|
3976
|
+
var DropdownMenuSubContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3927
3977
|
DropdownMenuPrimitive.SubContent,
|
|
3928
3978
|
{
|
|
3929
3979
|
ref,
|
|
@@ -3939,7 +3989,7 @@ var DropdownMenuSubContent = React13.forwardRef(({ className, ...props }, ref) =
|
|
|
3939
3989
|
}
|
|
3940
3990
|
));
|
|
3941
3991
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
3942
|
-
var DropdownMenuContent =
|
|
3992
|
+
var DropdownMenuContent = React36.forwardRef(({ className, sideOffset = 6, align = "start", ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
3943
3993
|
DropdownMenuPrimitive.Content,
|
|
3944
3994
|
{
|
|
3945
3995
|
ref,
|
|
@@ -3957,7 +4007,7 @@ var DropdownMenuContent = React13.forwardRef(({ className, sideOffset = 6, align
|
|
|
3957
4007
|
}
|
|
3958
4008
|
) }));
|
|
3959
4009
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
3960
|
-
var DropdownMenuItem =
|
|
4010
|
+
var DropdownMenuItem = React36.forwardRef(({ className, destructive, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3961
4011
|
DropdownMenuPrimitive.Item,
|
|
3962
4012
|
{
|
|
3963
4013
|
ref,
|
|
@@ -3975,7 +4025,7 @@ var DropdownMenuItem = React13.forwardRef(({ className, destructive, inset, ...p
|
|
|
3975
4025
|
}
|
|
3976
4026
|
));
|
|
3977
4027
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
3978
|
-
var DropdownMenuCheckboxItem =
|
|
4028
|
+
var DropdownMenuCheckboxItem = React36.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3979
4029
|
DropdownMenuPrimitive.CheckboxItem,
|
|
3980
4030
|
{
|
|
3981
4031
|
ref,
|
|
@@ -3995,7 +4045,7 @@ var DropdownMenuCheckboxItem = React13.forwardRef(({ className, children, checke
|
|
|
3995
4045
|
}
|
|
3996
4046
|
));
|
|
3997
4047
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
3998
|
-
var DropdownMenuRadioItem =
|
|
4048
|
+
var DropdownMenuRadioItem = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3999
4049
|
DropdownMenuPrimitive.RadioItem,
|
|
4000
4050
|
{
|
|
4001
4051
|
ref,
|
|
@@ -4014,7 +4064,7 @@ var DropdownMenuRadioItem = React13.forwardRef(({ className, children, ...props
|
|
|
4014
4064
|
}
|
|
4015
4065
|
));
|
|
4016
4066
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
4017
|
-
var DropdownMenuLabel =
|
|
4067
|
+
var DropdownMenuLabel = React36.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4018
4068
|
DropdownMenuPrimitive.Label,
|
|
4019
4069
|
{
|
|
4020
4070
|
ref,
|
|
@@ -4027,7 +4077,7 @@ var DropdownMenuLabel = React13.forwardRef(({ className, inset, ...props }, ref)
|
|
|
4027
4077
|
}
|
|
4028
4078
|
));
|
|
4029
4079
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
4030
|
-
var DropdownMenuSeparator =
|
|
4080
|
+
var DropdownMenuSeparator = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4031
4081
|
DropdownMenuPrimitive.Separator,
|
|
4032
4082
|
{
|
|
4033
4083
|
ref,
|
|
@@ -4229,7 +4279,7 @@ function FormSuccess({ children, className, ...props }) {
|
|
|
4229
4279
|
var HoverCard = HoverCardPrimitive.Root;
|
|
4230
4280
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
4231
4281
|
var HoverCardPortal = HoverCardPrimitive.Portal;
|
|
4232
|
-
var HoverCardContent =
|
|
4282
|
+
var HoverCardContent = React36.forwardRef(({ className, align = "center", side = "bottom", sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
4233
4283
|
HoverCardPrimitive.Content,
|
|
4234
4284
|
{
|
|
4235
4285
|
ref,
|
|
@@ -4391,8 +4441,8 @@ var kbdClass2 = cn(
|
|
|
4391
4441
|
"[border-bottom-width:1.5px]"
|
|
4392
4442
|
);
|
|
4393
4443
|
function KeyboardShortcutsDialog() {
|
|
4394
|
-
const [open, setOpen] =
|
|
4395
|
-
|
|
4444
|
+
const [open, setOpen] = React36.useState(false);
|
|
4445
|
+
React36.useEffect(() => {
|
|
4396
4446
|
function handleKeyDown(e) {
|
|
4397
4447
|
const target = e.target;
|
|
4398
4448
|
if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement || target?.isContentEditable) {
|
|
@@ -4428,7 +4478,7 @@ function KeyboardShortcutsDialog() {
|
|
|
4428
4478
|
className: "flex items-center justify-between gap-3 py-1",
|
|
4429
4479
|
children: [
|
|
4430
4480
|
/* @__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(
|
|
4481
|
+
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: shortcut.keys.map((key, i) => /* @__PURE__ */ jsxs(React36.Fragment, { children: [
|
|
4432
4482
|
i > 0 && /* @__PURE__ */ jsx("span", { className: "text-fg-4 mx-0.5 text-[11px]", children: "then" }),
|
|
4433
4483
|
/* @__PURE__ */ jsx("kbd", { className: kbdClass2, children: key })
|
|
4434
4484
|
] }, i)) })
|
|
@@ -4447,7 +4497,7 @@ function KeyboardShortcutsDialog() {
|
|
|
4447
4497
|
var labelVariants = cva(
|
|
4448
4498
|
"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
4499
|
);
|
|
4450
|
-
var Label4 =
|
|
4500
|
+
var Label4 = React36.forwardRef(
|
|
4451
4501
|
function Label5({ children, required, className, ...props }, ref) {
|
|
4452
4502
|
return /* @__PURE__ */ jsxs(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props, children: [
|
|
4453
4503
|
children,
|
|
@@ -4669,7 +4719,7 @@ function MultiSelectField({
|
|
|
4669
4719
|
size = "md",
|
|
4670
4720
|
id
|
|
4671
4721
|
}) {
|
|
4672
|
-
const selected =
|
|
4722
|
+
const selected = React36.useMemo(
|
|
4673
4723
|
() => new Set(value ? value.split(",").filter(Boolean) : []),
|
|
4674
4724
|
[value]
|
|
4675
4725
|
);
|
|
@@ -4682,7 +4732,7 @@ function MultiSelectField({
|
|
|
4682
4732
|
}
|
|
4683
4733
|
onChange(Array.from(next).join(","));
|
|
4684
4734
|
};
|
|
4685
|
-
const generatedId =
|
|
4735
|
+
const generatedId = React36.useId();
|
|
4686
4736
|
const groupId = id ?? generatedId;
|
|
4687
4737
|
return /* @__PURE__ */ jsxs("div", { className: cn("w-full", className), children: [
|
|
4688
4738
|
/* @__PURE__ */ jsx(
|
|
@@ -5090,12 +5140,12 @@ var ProgressRing = forwardRef(function ProgressRing2({ value, max = 100, size =
|
|
|
5090
5140
|
);
|
|
5091
5141
|
});
|
|
5092
5142
|
ProgressRing.displayName = "ProgressRing";
|
|
5093
|
-
var RadioGroup3 =
|
|
5143
|
+
var RadioGroup3 = React36.forwardRef(function RadioGroup4({ className, ...props }, ref) {
|
|
5094
5144
|
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { ref, className: cn("grid gap-2", className), ...props });
|
|
5095
5145
|
});
|
|
5096
5146
|
RadioGroup3.displayName = RadioGroupPrimitive.Root.displayName;
|
|
5097
|
-
var RadioGroupItem =
|
|
5098
|
-
const generatedId =
|
|
5147
|
+
var RadioGroupItem = React36.forwardRef(function RadioGroupItem2({ className, label, id: providedId, ...props }, ref) {
|
|
5148
|
+
const generatedId = React36.useId();
|
|
5099
5149
|
const id = providedId ?? generatedId;
|
|
5100
5150
|
const root = /* @__PURE__ */ jsx(
|
|
5101
5151
|
RadioGroupPrimitive.Item,
|
|
@@ -5130,7 +5180,7 @@ var RadioGroupItem = React13.forwardRef(function RadioGroupItem2({ className, la
|
|
|
5130
5180
|
] });
|
|
5131
5181
|
});
|
|
5132
5182
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
5133
|
-
var ScrollArea =
|
|
5183
|
+
var ScrollArea = React36.forwardRef(function ScrollArea2({ className, children, ...props }, ref) {
|
|
5134
5184
|
return /* @__PURE__ */ jsxs(
|
|
5135
5185
|
ScrollAreaPrimitive.Root,
|
|
5136
5186
|
{
|
|
@@ -5146,7 +5196,7 @@ var ScrollArea = React13.forwardRef(function ScrollArea2({ className, children,
|
|
|
5146
5196
|
);
|
|
5147
5197
|
});
|
|
5148
5198
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
5149
|
-
var ScrollBar =
|
|
5199
|
+
var ScrollBar = React36.forwardRef(function ScrollBar2({ className, orientation = "vertical", ...props }, ref) {
|
|
5150
5200
|
return /* @__PURE__ */ jsx(
|
|
5151
5201
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
5152
5202
|
{
|
|
@@ -5208,7 +5258,7 @@ var searchInputVariants = cva(
|
|
|
5208
5258
|
}
|
|
5209
5259
|
}
|
|
5210
5260
|
);
|
|
5211
|
-
var SearchInput =
|
|
5261
|
+
var SearchInput = React36.forwardRef(
|
|
5212
5262
|
function SearchInput2({
|
|
5213
5263
|
value,
|
|
5214
5264
|
onValueChange,
|
|
@@ -5221,8 +5271,8 @@ var SearchInput = React13.forwardRef(
|
|
|
5221
5271
|
...props
|
|
5222
5272
|
}, ref) {
|
|
5223
5273
|
const debouncedValue = useDebounce(value, debounceMs);
|
|
5224
|
-
const isFirstRender =
|
|
5225
|
-
|
|
5274
|
+
const isFirstRender = React36.useRef(true);
|
|
5275
|
+
React36.useEffect(() => {
|
|
5226
5276
|
if (isFirstRender.current) {
|
|
5227
5277
|
isFirstRender.current = false;
|
|
5228
5278
|
return;
|
|
@@ -5290,27 +5340,27 @@ function SearchSelect({
|
|
|
5290
5340
|
className,
|
|
5291
5341
|
disabled = false
|
|
5292
5342
|
}) {
|
|
5293
|
-
const [search, setSearch] =
|
|
5294
|
-
const [open, setOpen] =
|
|
5295
|
-
const selectedIds =
|
|
5296
|
-
const filtered =
|
|
5343
|
+
const [search, setSearch] = React36.useState("");
|
|
5344
|
+
const [open, setOpen] = React36.useState(false);
|
|
5345
|
+
const selectedIds = React36.useMemo(() => new Set(selected.map((s) => s.id)), [selected]);
|
|
5346
|
+
const filtered = React36.useMemo(
|
|
5297
5347
|
() => options.filter((opt) => !selectedIds.has(opt.id)),
|
|
5298
5348
|
[options, selectedIds]
|
|
5299
5349
|
);
|
|
5300
5350
|
const trimmedSearch = search.trim();
|
|
5301
|
-
const hasExactMatch =
|
|
5351
|
+
const hasExactMatch = React36.useMemo(
|
|
5302
5352
|
() => options.some((opt) => opt.label.toLowerCase() === trimmedSearch.toLowerCase()),
|
|
5303
5353
|
[options, trimmedSearch]
|
|
5304
5354
|
);
|
|
5305
5355
|
const showCreate = !!onCreate && trimmedSearch.length > 0 && !hasExactMatch;
|
|
5306
|
-
const handleSelect =
|
|
5356
|
+
const handleSelect = React36.useCallback(
|
|
5307
5357
|
(option) => {
|
|
5308
5358
|
onSelect(option);
|
|
5309
5359
|
setSearch("");
|
|
5310
5360
|
},
|
|
5311
5361
|
[onSelect]
|
|
5312
5362
|
);
|
|
5313
|
-
const handleCreate =
|
|
5363
|
+
const handleCreate = React36.useCallback(() => {
|
|
5314
5364
|
if (onCreate && trimmedSearch) {
|
|
5315
5365
|
onCreate(trimmedSearch);
|
|
5316
5366
|
setSearch("");
|
|
@@ -5536,7 +5586,7 @@ var SectionHead = forwardRef(function SectionHead2({ eyebrow, title, meta, class
|
|
|
5536
5586
|
);
|
|
5537
5587
|
});
|
|
5538
5588
|
SectionHead.displayName = "SectionHead";
|
|
5539
|
-
var Separator4 =
|
|
5589
|
+
var Separator4 = React36.forwardRef(function Separator5({ className, orientation = "horizontal", decorative = true, ...props }, ref) {
|
|
5540
5590
|
return /* @__PURE__ */ jsx(
|
|
5541
5591
|
SeparatorPrimitive.Root,
|
|
5542
5592
|
{
|
|
@@ -5553,13 +5603,13 @@ var Separator4 = React13.forwardRef(function Separator5({ className, orientation
|
|
|
5553
5603
|
);
|
|
5554
5604
|
});
|
|
5555
5605
|
Separator4.displayName = SeparatorPrimitive.Root.displayName;
|
|
5556
|
-
var SheetSideContext =
|
|
5606
|
+
var SheetSideContext = React36.createContext({});
|
|
5557
5607
|
var Sheet = ({ side, children, ...props }) => /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...props, children: /* @__PURE__ */ jsx(SheetSideContext, { value: { side }, children }) });
|
|
5558
5608
|
Sheet.displayName = "Sheet";
|
|
5559
5609
|
var SheetTrigger = DialogPrimitive.Trigger;
|
|
5560
5610
|
var SheetClose = DialogPrimitive.Close;
|
|
5561
5611
|
var SheetPortal = DialogPrimitive.Portal;
|
|
5562
|
-
var SheetOverlay =
|
|
5612
|
+
var SheetOverlay = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5563
5613
|
DialogPrimitive.Overlay,
|
|
5564
5614
|
{
|
|
5565
5615
|
ref,
|
|
@@ -5604,8 +5654,8 @@ var sheetVariants = cva(
|
|
|
5604
5654
|
defaultVariants: { side: "right" }
|
|
5605
5655
|
}
|
|
5606
5656
|
);
|
|
5607
|
-
var SheetContent =
|
|
5608
|
-
const ctx =
|
|
5657
|
+
var SheetContent = React36.forwardRef(({ side, className, children, showCloseButton = true, ...props }, ref) => {
|
|
5658
|
+
const ctx = React36.use(SheetSideContext);
|
|
5609
5659
|
const resolvedSide = side ?? ctx.side ?? "right";
|
|
5610
5660
|
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
5611
5661
|
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
@@ -5650,7 +5700,7 @@ var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
5650
5700
|
}
|
|
5651
5701
|
);
|
|
5652
5702
|
SheetFooter.displayName = "SheetFooter";
|
|
5653
|
-
var SheetTitle =
|
|
5703
|
+
var SheetTitle = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5654
5704
|
DialogPrimitive.Title,
|
|
5655
5705
|
{
|
|
5656
5706
|
ref,
|
|
@@ -5662,7 +5712,7 @@ var SheetTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
5662
5712
|
}
|
|
5663
5713
|
));
|
|
5664
5714
|
SheetTitle.displayName = DialogPrimitive.Title.displayName;
|
|
5665
|
-
var SheetDescription =
|
|
5715
|
+
var SheetDescription = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-fg-3 text-sm", className), ...props }));
|
|
5666
5716
|
SheetDescription.displayName = DialogPrimitive.Description.displayName;
|
|
5667
5717
|
var sideDrawerVariants = cva(
|
|
5668
5718
|
cn(
|
|
@@ -5819,7 +5869,7 @@ var SkeletonCircle = forwardRef(
|
|
|
5819
5869
|
}
|
|
5820
5870
|
);
|
|
5821
5871
|
SkeletonCircle.displayName = "SkeletonCircle";
|
|
5822
|
-
var Slider =
|
|
5872
|
+
var Slider = React36.forwardRef(
|
|
5823
5873
|
function Slider2({
|
|
5824
5874
|
className,
|
|
5825
5875
|
label,
|
|
@@ -5831,7 +5881,7 @@ var Slider = React13.forwardRef(
|
|
|
5831
5881
|
defaultValue,
|
|
5832
5882
|
...props
|
|
5833
5883
|
}, ref) {
|
|
5834
|
-
const generatedId =
|
|
5884
|
+
const generatedId = React36.useId();
|
|
5835
5885
|
const id = providedId ?? generatedId;
|
|
5836
5886
|
const displayValue = (() => {
|
|
5837
5887
|
const v = value ?? defaultValue;
|
|
@@ -6119,9 +6169,9 @@ var switchThumbVariants = cva(
|
|
|
6119
6169
|
}
|
|
6120
6170
|
}
|
|
6121
6171
|
);
|
|
6122
|
-
var Switch =
|
|
6172
|
+
var Switch = React36.forwardRef(
|
|
6123
6173
|
function Switch2({ label, size, className, id: providedId, ...props }, ref) {
|
|
6124
|
-
const generatedId =
|
|
6174
|
+
const generatedId = React36.useId();
|
|
6125
6175
|
const id = providedId ?? generatedId;
|
|
6126
6176
|
const root = /* @__PURE__ */ jsx(
|
|
6127
6177
|
SwitchPrimitive.Root,
|
|
@@ -6253,13 +6303,13 @@ var TableCaption = forwardRef(
|
|
|
6253
6303
|
}
|
|
6254
6304
|
);
|
|
6255
6305
|
TableCaption.displayName = "TableCaption";
|
|
6256
|
-
var Tabs =
|
|
6306
|
+
var Tabs = React36.forwardRef(
|
|
6257
6307
|
function Tabs2({ className, ...props }, ref) {
|
|
6258
6308
|
return /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, className: cn(className), ...props });
|
|
6259
6309
|
}
|
|
6260
6310
|
);
|
|
6261
6311
|
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
6262
|
-
var TabsList =
|
|
6312
|
+
var TabsList = React36.forwardRef(function TabsList2({ className, ...props }, ref) {
|
|
6263
6313
|
return /* @__PURE__ */ jsx(
|
|
6264
6314
|
TabsPrimitive.List,
|
|
6265
6315
|
{
|
|
@@ -6282,13 +6332,16 @@ var triggerVariants = cva(
|
|
|
6282
6332
|
{
|
|
6283
6333
|
variants: {
|
|
6284
6334
|
variant: {
|
|
6285
|
-
// §5.16: tab current =
|
|
6286
|
-
//
|
|
6287
|
-
//
|
|
6335
|
+
// §5.16: tab current = 2px accent underline + bold foreground text.
|
|
6336
|
+
// The cyan rule carries the brand statement (tabs are interaction,
|
|
6337
|
+
// so cyan; Pro purple is reserved for selection state on
|
|
6338
|
+
// list/dropdown surfaces). The active LABEL stays in `text-fg` for
|
|
6339
|
+
// legibility — accent on text was too low-contrast against the page
|
|
6340
|
+
// background, especially in dark mode.
|
|
6288
6341
|
underline: cn(
|
|
6289
6342
|
"rounded-none bg-transparent px-3.5 py-2.5",
|
|
6290
6343
|
"border-b-2 border-transparent -mb-px",
|
|
6291
|
-
"data-[state=active]:border-accent data-[state=active]:text-
|
|
6344
|
+
"data-[state=active]:border-accent data-[state=active]:text-fg data-[state=active]:font-semibold"
|
|
6292
6345
|
),
|
|
6293
6346
|
pill: cn(
|
|
6294
6347
|
"rounded-pill px-3 py-1.5",
|
|
@@ -6301,7 +6354,7 @@ var triggerVariants = cva(
|
|
|
6301
6354
|
}
|
|
6302
6355
|
}
|
|
6303
6356
|
);
|
|
6304
|
-
var TabsTrigger =
|
|
6357
|
+
var TabsTrigger = React36.forwardRef(function TabsTrigger2({ className, variant, ...props }, ref) {
|
|
6305
6358
|
return /* @__PURE__ */ jsx(
|
|
6306
6359
|
TabsPrimitive.Trigger,
|
|
6307
6360
|
{
|
|
@@ -6312,7 +6365,7 @@ var TabsTrigger = React13.forwardRef(function TabsTrigger2({ className, variant,
|
|
|
6312
6365
|
);
|
|
6313
6366
|
});
|
|
6314
6367
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
6315
|
-
var TabsContent =
|
|
6368
|
+
var TabsContent = React36.forwardRef(function TabsContent2({ className, ...props }, ref) {
|
|
6316
6369
|
return /* @__PURE__ */ jsx(
|
|
6317
6370
|
TabsPrimitive.Content,
|
|
6318
6371
|
{
|
|
@@ -6337,7 +6390,7 @@ function TeamMemberSelect({
|
|
|
6337
6390
|
placeholder = "Select team member...",
|
|
6338
6391
|
className
|
|
6339
6392
|
}) {
|
|
6340
|
-
const options =
|
|
6393
|
+
const options = React36.useMemo(() => {
|
|
6341
6394
|
const meBadge = /* @__PURE__ */ jsx(
|
|
6342
6395
|
Badge,
|
|
6343
6396
|
{
|
|
@@ -6604,10 +6657,10 @@ var itemVariants = cva(
|
|
|
6604
6657
|
}
|
|
6605
6658
|
}
|
|
6606
6659
|
);
|
|
6607
|
-
var ToggleGroupContext =
|
|
6660
|
+
var ToggleGroupContext = React36.createContext({
|
|
6608
6661
|
variant: "default"
|
|
6609
6662
|
});
|
|
6610
|
-
var ToggleGroup =
|
|
6663
|
+
var ToggleGroup = React36.forwardRef(function ToggleGroup2({ className, variant, children, ...props }, ref) {
|
|
6611
6664
|
return /* @__PURE__ */ jsx(
|
|
6612
6665
|
ToggleGroupPrimitive.Root,
|
|
6613
6666
|
{
|
|
@@ -6619,8 +6672,8 @@ var ToggleGroup = React13.forwardRef(function ToggleGroup2({ className, variant,
|
|
|
6619
6672
|
);
|
|
6620
6673
|
});
|
|
6621
6674
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
6622
|
-
var ToggleGroupItem =
|
|
6623
|
-
const ctx =
|
|
6675
|
+
var ToggleGroupItem = React36.forwardRef(function ToggleGroupItem2({ className, variant, ...props }, ref) {
|
|
6676
|
+
const ctx = React36.useContext(ToggleGroupContext);
|
|
6624
6677
|
return /* @__PURE__ */ jsx(
|
|
6625
6678
|
ToggleGroupPrimitive.Item,
|
|
6626
6679
|
{
|
|
@@ -6639,7 +6692,7 @@ var Tooltip = ({ delayMs, delayDuration, children, ...props }) => {
|
|
|
6639
6692
|
return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { delayDuration: resolvedDelay, children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { delayDuration: resolvedDelay, ...props, children }) });
|
|
6640
6693
|
};
|
|
6641
6694
|
Tooltip.displayName = "Tooltip";
|
|
6642
|
-
var TooltipContent =
|
|
6695
|
+
var TooltipContent = React36.forwardRef(({ className, sideOffset = 6, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
6643
6696
|
TooltipPrimitive.Content,
|
|
6644
6697
|
{
|
|
6645
6698
|
ref,
|
|
@@ -6691,88 +6744,420 @@ var Content15 = forwardRef(function Content16({ padBottom, className, style, ...
|
|
|
6691
6744
|
);
|
|
6692
6745
|
});
|
|
6693
6746
|
Content15.displayName = "Content";
|
|
6694
|
-
var
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
|
|
6699
|
-
|
|
6700
|
-
|
|
6701
|
-
|
|
6702
|
-
|
|
6703
|
-
|
|
6704
|
-
|
|
6747
|
+
var SidebarContext = React36.createContext(null);
|
|
6748
|
+
var NOOP_CONTEXT = {
|
|
6749
|
+
state: "expanded",
|
|
6750
|
+
setState: () => {
|
|
6751
|
+
},
|
|
6752
|
+
toggle: () => {
|
|
6753
|
+
},
|
|
6754
|
+
collapsible: false
|
|
6755
|
+
};
|
|
6756
|
+
function useSidebarState() {
|
|
6757
|
+
return React36.useContext(SidebarContext) ?? NOOP_CONTEXT;
|
|
6758
|
+
}
|
|
6759
|
+
var DEFAULT_SHORTCUT = "Mod+\\";
|
|
6760
|
+
function readStorage(key) {
|
|
6761
|
+
if (!key || typeof window === "undefined") return null;
|
|
6762
|
+
try {
|
|
6763
|
+
const v = window.localStorage.getItem(key);
|
|
6764
|
+
return v === "rail" || v === "expanded" ? v : null;
|
|
6765
|
+
} catch {
|
|
6766
|
+
return null;
|
|
6767
|
+
}
|
|
6768
|
+
}
|
|
6769
|
+
function SidebarProvider({
|
|
6770
|
+
children,
|
|
6771
|
+
state: controlled,
|
|
6772
|
+
defaultState = "expanded",
|
|
6773
|
+
onStateChange,
|
|
6774
|
+
storageKey,
|
|
6775
|
+
shortcut = DEFAULT_SHORTCUT
|
|
6776
|
+
}) {
|
|
6777
|
+
const [uncontrolled, setUncontrolled] = React36.useState(() => {
|
|
6778
|
+
if (controlled !== void 0) return controlled;
|
|
6779
|
+
const stored = readStorage(storageKey);
|
|
6780
|
+
return stored ?? defaultState;
|
|
6781
|
+
});
|
|
6782
|
+
React36.useEffect(() => {
|
|
6783
|
+
if (controlled !== void 0) return;
|
|
6784
|
+
const stored = readStorage(storageKey);
|
|
6785
|
+
if (stored && stored !== uncontrolled) setUncontrolled(stored);
|
|
6786
|
+
}, []);
|
|
6787
|
+
const state = controlled ?? uncontrolled;
|
|
6788
|
+
const setState = React36.useCallback(
|
|
6789
|
+
(next) => {
|
|
6790
|
+
if (controlled === void 0) setUncontrolled(next);
|
|
6791
|
+
onStateChange?.(next);
|
|
6792
|
+
if (storageKey && typeof window !== "undefined") {
|
|
6793
|
+
try {
|
|
6794
|
+
window.localStorage.setItem(storageKey, next);
|
|
6795
|
+
} catch {
|
|
6796
|
+
}
|
|
6797
|
+
}
|
|
6798
|
+
},
|
|
6799
|
+
[controlled, onStateChange, storageKey]
|
|
6800
|
+
);
|
|
6801
|
+
const toggle = React36.useCallback(() => {
|
|
6802
|
+
setState(state === "expanded" ? "rail" : "expanded");
|
|
6803
|
+
}, [state, setState]);
|
|
6804
|
+
React36.useEffect(() => {
|
|
6805
|
+
if (!shortcut) return;
|
|
6806
|
+
const parts = shortcut.split("+");
|
|
6807
|
+
const key = parts.pop() ?? "";
|
|
6808
|
+
const wantMod = parts.includes("Mod");
|
|
6809
|
+
const wantShift = parts.includes("Shift");
|
|
6810
|
+
const wantAlt = parts.includes("Alt");
|
|
6811
|
+
function onKey(e) {
|
|
6812
|
+
const isMac = typeof navigator !== "undefined" && /Mac|iPhone|iPad/.test(navigator.platform);
|
|
6813
|
+
const mod = isMac ? e.metaKey : e.ctrlKey;
|
|
6814
|
+
if (e.key.toLowerCase() !== key.toLowerCase()) return;
|
|
6815
|
+
if (wantMod !== mod) return;
|
|
6816
|
+
if (wantShift !== e.shiftKey) return;
|
|
6817
|
+
if (wantAlt !== e.altKey) return;
|
|
6818
|
+
e.preventDefault();
|
|
6819
|
+
toggle();
|
|
6820
|
+
}
|
|
6821
|
+
window.addEventListener("keydown", onKey);
|
|
6822
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
6823
|
+
}, [shortcut, toggle]);
|
|
6824
|
+
const value = React36.useMemo(
|
|
6825
|
+
() => ({ state, setState, toggle, collapsible: true }),
|
|
6826
|
+
[state, setState, toggle]
|
|
6827
|
+
);
|
|
6828
|
+
return /* @__PURE__ */ jsx(SidebarContext.Provider, { value, children });
|
|
6829
|
+
}
|
|
6830
|
+
SidebarProvider.displayName = "SidebarProvider";
|
|
6831
|
+
var PEEK_ENTER_DELAY_MS = 100;
|
|
6832
|
+
var PEEK_LEAVE_DELAY_MS = 200;
|
|
6833
|
+
var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = false, onMouseEnter, onMouseLeave, style, ...props }, ref) {
|
|
6834
|
+
const ctx = React36.useContext(SidebarContext);
|
|
6835
|
+
const state = collapsible && ctx ? ctx.state : "expanded";
|
|
6836
|
+
const [peek, setPeek] = React36.useState(false);
|
|
6837
|
+
const enterTimer = React36.useRef(null);
|
|
6838
|
+
const leaveTimer = React36.useRef(null);
|
|
6839
|
+
const clearTimers = React36.useCallback(() => {
|
|
6840
|
+
if (enterTimer.current != null) {
|
|
6841
|
+
window.clearTimeout(enterTimer.current);
|
|
6842
|
+
enterTimer.current = null;
|
|
6843
|
+
}
|
|
6844
|
+
if (leaveTimer.current != null) {
|
|
6845
|
+
window.clearTimeout(leaveTimer.current);
|
|
6846
|
+
leaveTimer.current = null;
|
|
6705
6847
|
}
|
|
6848
|
+
}, []);
|
|
6849
|
+
React36.useEffect(() => () => clearTimers(), [clearTimers]);
|
|
6850
|
+
React36.useEffect(() => {
|
|
6851
|
+
if (state === "expanded") {
|
|
6852
|
+
clearTimers();
|
|
6853
|
+
setPeek(false);
|
|
6854
|
+
}
|
|
6855
|
+
}, [state, clearTimers]);
|
|
6856
|
+
const handleEnter = (e) => {
|
|
6857
|
+
onMouseEnter?.(e);
|
|
6858
|
+
if (!collapsible || state !== "rail") return;
|
|
6859
|
+
if (leaveTimer.current != null) {
|
|
6860
|
+
window.clearTimeout(leaveTimer.current);
|
|
6861
|
+
leaveTimer.current = null;
|
|
6862
|
+
}
|
|
6863
|
+
if (peek) return;
|
|
6864
|
+
enterTimer.current = window.setTimeout(() => setPeek(true), PEEK_ENTER_DELAY_MS);
|
|
6865
|
+
};
|
|
6866
|
+
const handleLeave = (e) => {
|
|
6867
|
+
onMouseLeave?.(e);
|
|
6868
|
+
if (!collapsible) return;
|
|
6869
|
+
if (enterTimer.current != null) {
|
|
6870
|
+
window.clearTimeout(enterTimer.current);
|
|
6871
|
+
enterTimer.current = null;
|
|
6872
|
+
}
|
|
6873
|
+
if (!peek) return;
|
|
6874
|
+
leaveTimer.current = window.setTimeout(() => setPeek(false), PEEK_LEAVE_DELAY_MS);
|
|
6875
|
+
};
|
|
6876
|
+
const labelsHidden = state === "rail" && !peek;
|
|
6877
|
+
const effectiveWidth = labelsHidden ? "var(--shell-sidebar-w-rail)" : "var(--shell-sidebar-w)";
|
|
6878
|
+
return (
|
|
6879
|
+
// Hover-peek is *enhancement only*: the canonical way to toggle the
|
|
6880
|
+
// sidebar is <SidebarTrigger> (button) or the Mod+\ shortcut, both
|
|
6881
|
+
// fully keyboard- and screen-reader-accessible. The mouse handlers
|
|
6882
|
+
// here exist to widen the column on pointer hover, which has no
|
|
6883
|
+
// keyboard analogue and intentionally so.
|
|
6884
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
|
6885
|
+
/* @__PURE__ */ jsx(
|
|
6886
|
+
"aside",
|
|
6887
|
+
{
|
|
6888
|
+
ref,
|
|
6889
|
+
"data-state": state,
|
|
6890
|
+
"data-peek": peek ? "true" : void 0,
|
|
6891
|
+
"data-labels": labelsHidden ? "hide" : "show",
|
|
6892
|
+
"data-collapsible": collapsible ? "true" : void 0,
|
|
6893
|
+
suppressHydrationWarning: true,
|
|
6894
|
+
onMouseEnter: handleEnter,
|
|
6895
|
+
onMouseLeave: handleLeave,
|
|
6896
|
+
style: { width: effectiveWidth, ...style },
|
|
6897
|
+
className: cn(
|
|
6898
|
+
"group/sidebar scrollbar-thin flex h-dvh shrink-0 flex-col overflow-y-auto",
|
|
6899
|
+
"border-rule bg-bg-2 border-r px-3 pt-4 pb-4",
|
|
6900
|
+
// 220ms feels right for a ~192px width sweep — slower than the
|
|
6901
|
+
// 150ms `--duration-fast` (which reads as a snap on this size of
|
|
6902
|
+
// movement) but well short of `--duration-slow` (which feels
|
|
6903
|
+
// sluggish). `will-change` hints the compositor so the column
|
|
6904
|
+
// doesn't repaint every frame mid-transition.
|
|
6905
|
+
"transition-[width,box-shadow] duration-[220ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
6906
|
+
"[will-change:width]",
|
|
6907
|
+
// Peek overlay: float above the canvas without reflowing layout.
|
|
6908
|
+
"data-[peek=true]:fixed data-[peek=true]:top-0 data-[peek=true]:left-0",
|
|
6909
|
+
"data-[peek=true]:z-[var(--z-overlay)] data-[peek=true]:shadow-pop",
|
|
6910
|
+
// Padding is held constant across states so icons keep their
|
|
6911
|
+
// horizontal anchor when the column widens — peek expands the
|
|
6912
|
+
// labels rightward rather than shifting the icons leftward.
|
|
6913
|
+
className
|
|
6914
|
+
),
|
|
6915
|
+
...props
|
|
6916
|
+
}
|
|
6917
|
+
)
|
|
6706
6918
|
);
|
|
6707
6919
|
});
|
|
6708
6920
|
Sidebar.displayName = "Sidebar";
|
|
6709
|
-
var
|
|
6710
|
-
|
|
6711
|
-
|
|
6921
|
+
var SidebarTrigger = React36.forwardRef(
|
|
6922
|
+
function SidebarTrigger2({
|
|
6923
|
+
className,
|
|
6924
|
+
expandLabel = "Expand sidebar",
|
|
6925
|
+
collapseLabel = "Collapse sidebar",
|
|
6926
|
+
onClick,
|
|
6927
|
+
...props
|
|
6928
|
+
}, ref) {
|
|
6929
|
+
const ctx = React36.useContext(SidebarContext);
|
|
6930
|
+
if (!ctx) return null;
|
|
6931
|
+
const { state, toggle } = ctx;
|
|
6932
|
+
const label = state === "expanded" ? collapseLabel : expandLabel;
|
|
6933
|
+
return /* @__PURE__ */ jsx(
|
|
6934
|
+
"button",
|
|
6935
|
+
{
|
|
6936
|
+
ref,
|
|
6937
|
+
type: "button",
|
|
6938
|
+
"aria-label": label,
|
|
6939
|
+
"aria-expanded": state === "expanded",
|
|
6940
|
+
onClick: (e) => {
|
|
6941
|
+
onClick?.(e);
|
|
6942
|
+
if (!e.defaultPrevented) toggle();
|
|
6943
|
+
},
|
|
6944
|
+
className: cn(
|
|
6945
|
+
"inline-flex size-7 shrink-0 items-center justify-center rounded-md",
|
|
6946
|
+
"text-fg-3 hover:bg-bg-3 hover:text-fg",
|
|
6947
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
6948
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
6949
|
+
"[&_svg]:size-4",
|
|
6950
|
+
className
|
|
6951
|
+
),
|
|
6952
|
+
...props,
|
|
6953
|
+
children: state === "expanded" ? /* @__PURE__ */ jsx(PanelLeftCloseIcon, {}) : /* @__PURE__ */ jsx(PanelLeftIcon, {})
|
|
6954
|
+
}
|
|
6955
|
+
);
|
|
6956
|
+
}
|
|
6957
|
+
);
|
|
6958
|
+
SidebarTrigger.displayName = "SidebarTrigger";
|
|
6959
|
+
var SidebarBrand = React36.forwardRef(
|
|
6960
|
+
function SidebarBrand2({ className, ...props }, ref) {
|
|
6961
|
+
return /* @__PURE__ */ jsx(
|
|
6962
|
+
"div",
|
|
6963
|
+
{
|
|
6964
|
+
ref,
|
|
6965
|
+
className: cn(
|
|
6966
|
+
"flex min-w-0 items-center gap-2 px-2 pt-1 pb-4",
|
|
6967
|
+
className
|
|
6968
|
+
),
|
|
6969
|
+
...props
|
|
6970
|
+
}
|
|
6971
|
+
);
|
|
6972
|
+
}
|
|
6973
|
+
);
|
|
6712
6974
|
SidebarBrand.displayName = "SidebarBrand";
|
|
6713
|
-
var
|
|
6975
|
+
var SidebarBrandText = React36.forwardRef(
|
|
6976
|
+
function SidebarBrandText2({ className, ...props }, ref) {
|
|
6977
|
+
return /* @__PURE__ */ jsx(
|
|
6978
|
+
"span",
|
|
6979
|
+
{
|
|
6980
|
+
ref,
|
|
6981
|
+
"aria-hidden": "false",
|
|
6982
|
+
className: cn(
|
|
6983
|
+
"min-w-0 truncate",
|
|
6984
|
+
// Smooth fade + width collapse on rail. Keeps the wordmark
|
|
6985
|
+
// legible up to the moment the column reaches rail width, then
|
|
6986
|
+
// fully drops out (visibility:hidden cuts hit-testing).
|
|
6987
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
6988
|
+
"max-w-[160px] opacity-100",
|
|
6989
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible",
|
|
6990
|
+
className
|
|
6991
|
+
),
|
|
6992
|
+
...props
|
|
6993
|
+
}
|
|
6994
|
+
);
|
|
6995
|
+
}
|
|
6996
|
+
);
|
|
6997
|
+
SidebarBrandText.displayName = "SidebarBrandText";
|
|
6998
|
+
var SidebarGroupScopeContext = React36.createContext(null);
|
|
6999
|
+
var SidebarSection = React36.forwardRef(
|
|
6714
7000
|
function SidebarSection2({ label, tone = "pro", className, children, ...props }, ref) {
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
7001
|
+
const ariaLabel = typeof label === "string" ? label : typeof label === "number" ? String(label) : void 0;
|
|
7002
|
+
const [exclusiveId, setExclusiveIdState] = React36.useState(null);
|
|
7003
|
+
const setExclusive = React36.useCallback(
|
|
7004
|
+
(id) => setExclusiveIdState(id),
|
|
7005
|
+
[]
|
|
7006
|
+
);
|
|
7007
|
+
const scope = React36.useMemo(
|
|
7008
|
+
() => ({ exclusiveId, setExclusive }),
|
|
7009
|
+
[exclusiveId, setExclusive]
|
|
7010
|
+
);
|
|
7011
|
+
return /* @__PURE__ */ jsx(SidebarGroupScopeContext.Provider, { value: scope, children: /* @__PURE__ */ jsxs(
|
|
7012
|
+
"div",
|
|
7013
|
+
{
|
|
7014
|
+
ref,
|
|
7015
|
+
role: ariaLabel ? "group" : void 0,
|
|
7016
|
+
"aria-label": ariaLabel,
|
|
7017
|
+
className: cn(
|
|
7018
|
+
"mb-4",
|
|
7019
|
+
// In rail, the visible section labels disappear and the only
|
|
7020
|
+
// grouping cue is a thin rule. No extra mb/pb — the border
|
|
7021
|
+
// itself separates groups, so inter-section spacing matches
|
|
7022
|
+
// intra-section spacing and the rail stays dense.
|
|
7023
|
+
"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",
|
|
7024
|
+
className
|
|
7025
|
+
),
|
|
7026
|
+
...props,
|
|
7027
|
+
children: [
|
|
7028
|
+
label != null && /* @__PURE__ */ jsx(
|
|
7029
|
+
"div",
|
|
7030
|
+
{
|
|
7031
|
+
className: cn(
|
|
7032
|
+
"mb-1 flex items-center justify-between px-2.5 py-1",
|
|
7033
|
+
"transition-opacity duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7034
|
+
"opacity-100",
|
|
7035
|
+
"group-data-[labels=hide]/sidebar:invisible group-data-[labels=hide]/sidebar:opacity-0"
|
|
7036
|
+
),
|
|
7037
|
+
children: /* @__PURE__ */ jsx(
|
|
7038
|
+
"span",
|
|
7039
|
+
{
|
|
7040
|
+
className: cn(
|
|
7041
|
+
"font-mono text-[11px] tracking-[0.14em] uppercase",
|
|
7042
|
+
tone === "muted" ? "text-fg-3" : "text-pro-fg"
|
|
7043
|
+
),
|
|
7044
|
+
children: label
|
|
7045
|
+
}
|
|
7046
|
+
)
|
|
7047
|
+
}
|
|
6722
7048
|
),
|
|
6723
|
-
children
|
|
6724
|
-
|
|
6725
|
-
|
|
6726
|
-
|
|
6727
|
-
] });
|
|
7049
|
+
children
|
|
7050
|
+
]
|
|
7051
|
+
}
|
|
7052
|
+
) });
|
|
6728
7053
|
}
|
|
6729
7054
|
);
|
|
6730
7055
|
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
|
-
|
|
7056
|
+
var SidebarLink = React36.forwardRef(
|
|
7057
|
+
function SidebarLink2({ href, icon, active = false, asChild, className, children, ...props }, ref) {
|
|
7058
|
+
const Comp = asChild ? Slot : "a";
|
|
7059
|
+
return /* @__PURE__ */ jsx(
|
|
7060
|
+
Comp,
|
|
7061
|
+
{
|
|
7062
|
+
ref,
|
|
7063
|
+
...asChild ? {} : { href },
|
|
7064
|
+
"data-active": active ? "true" : void 0,
|
|
7065
|
+
"aria-current": active ? "page" : void 0,
|
|
7066
|
+
className: cn(
|
|
7067
|
+
"group/link relative mb-px flex items-center gap-2.5 rounded-md px-2.5 py-1.5",
|
|
7068
|
+
"text-fg-2 text-[13px] font-normal no-underline",
|
|
7069
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
7070
|
+
"motion-reduce:transition-none",
|
|
7071
|
+
"hover:bg-bg-3 hover:text-fg",
|
|
7072
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7073
|
+
"data-[active=true]:bg-pro-bg data-[active=true]:text-pro-fg data-[active=true]:font-medium",
|
|
7074
|
+
// In rail, the icon itself carries the active state rather
|
|
7075
|
+
// than just the rule bar — color is more legible than a 2px
|
|
7076
|
+
// vertical mark at the column's left edge when labels are
|
|
7077
|
+
// hidden. The full-opacity icon override (`opacity-100`)
|
|
7078
|
+
// counters the default `[&_svg]:opacity-85` so the active
|
|
7079
|
+
// icon doesn't read as "still inactive but darker".
|
|
7080
|
+
"group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:text-pro-fg group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:opacity-100",
|
|
7081
|
+
// Active rail: 2px wide, 16px tall, anchored to the link's
|
|
7082
|
+
// own left edge — no parent-padding dependency. Continues
|
|
7083
|
+
// working unchanged when the aside narrows to a rail.
|
|
7084
|
+
"data-[active=true]:before:absolute data-[active=true]:before:content-['']",
|
|
7085
|
+
"data-[active=true]:before:top-1/2 data-[active=true]:before:left-0",
|
|
7086
|
+
"data-[active=true]:before:h-4 data-[active=true]:before:w-[2px] data-[active=true]:before:-translate-y-1/2",
|
|
7087
|
+
"data-[active=true]:before:bg-pro-fg data-[active=true]:before:rounded-r-full",
|
|
7088
|
+
// Padding/gap stay constant so the icon stays under the cursor
|
|
7089
|
+
// when the column widens during peek. The label simply collapses
|
|
7090
|
+
// to width 0 via <SidebarLinkLabel>.
|
|
7091
|
+
"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85",
|
|
7092
|
+
className
|
|
7093
|
+
),
|
|
7094
|
+
...props,
|
|
7095
|
+
children: asChild ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7096
|
+
icon,
|
|
7097
|
+
/* @__PURE__ */ jsx(
|
|
7098
|
+
"span",
|
|
7099
|
+
{
|
|
7100
|
+
className: cn(
|
|
7101
|
+
"min-w-0 flex-1 truncate",
|
|
7102
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7103
|
+
"max-w-full opacity-100",
|
|
7104
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
7105
|
+
),
|
|
7106
|
+
children
|
|
7107
|
+
}
|
|
7108
|
+
)
|
|
7109
|
+
] })
|
|
7110
|
+
}
|
|
7111
|
+
);
|
|
7112
|
+
}
|
|
7113
|
+
);
|
|
6766
7114
|
SidebarLink.displayName = "SidebarLink";
|
|
7115
|
+
var SidebarLinkLabel = React36.forwardRef(
|
|
7116
|
+
function SidebarLinkLabel2({ className, ...props }, ref) {
|
|
7117
|
+
return /* @__PURE__ */ jsx(
|
|
7118
|
+
"span",
|
|
7119
|
+
{
|
|
7120
|
+
ref,
|
|
7121
|
+
className: cn(
|
|
7122
|
+
"min-w-0 flex-1 truncate",
|
|
7123
|
+
// Fade + collapse instead of hard display:none so a single
|
|
7124
|
+
// 180ms opacity tween covers all labels in lockstep with the
|
|
7125
|
+
// 220ms aside-width transition — no snap on the last frame.
|
|
7126
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7127
|
+
"max-w-full opacity-100",
|
|
7128
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible",
|
|
7129
|
+
className
|
|
7130
|
+
),
|
|
7131
|
+
...props
|
|
7132
|
+
}
|
|
7133
|
+
);
|
|
7134
|
+
}
|
|
7135
|
+
);
|
|
7136
|
+
SidebarLinkLabel.displayName = "SidebarLinkLabel";
|
|
7137
|
+
var SidebarLinkAction = React36.forwardRef(
|
|
7138
|
+
function SidebarLinkAction2({ className, ...props }, ref) {
|
|
7139
|
+
return /* @__PURE__ */ jsx(
|
|
7140
|
+
"span",
|
|
7141
|
+
{
|
|
7142
|
+
ref,
|
|
7143
|
+
className: cn(
|
|
7144
|
+
"transition-opacity duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7145
|
+
"opacity-100",
|
|
7146
|
+
"group-data-[labels=hide]/sidebar:invisible group-data-[labels=hide]/sidebar:opacity-0",
|
|
7147
|
+
className
|
|
7148
|
+
),
|
|
7149
|
+
...props
|
|
7150
|
+
}
|
|
7151
|
+
);
|
|
7152
|
+
}
|
|
7153
|
+
);
|
|
7154
|
+
SidebarLinkAction.displayName = "SidebarLinkAction";
|
|
6767
7155
|
var sidebarLinkBadgeVariants = cva(
|
|
6768
|
-
"ml-auto inline-flex shrink-0 items-center justify-center font-mono tabular-nums",
|
|
7156
|
+
"ml-auto inline-flex shrink-0 items-center justify-center font-mono tabular-nums group-data-[labels=hide]/sidebar:hidden",
|
|
6769
7157
|
{
|
|
6770
7158
|
variants: {
|
|
6771
7159
|
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).
|
|
7160
|
+
default: "text-[10.5px] text-fg-4 group-data-[active=true]/link:text-pro-fg",
|
|
6776
7161
|
danger: "rounded-pill bg-danger-bg px-1.5 py-0.5 text-[10.5px] text-danger-fg",
|
|
6777
7162
|
warning: "rounded-pill bg-warning-bg px-1.5 py-0.5 text-[10.5px] text-warning-fg",
|
|
6778
7163
|
neutral: "rounded-pill bg-bg-3 px-1.5 py-0.5 text-[10.5px] text-fg-2"
|
|
@@ -6781,34 +7166,176 @@ var sidebarLinkBadgeVariants = cva(
|
|
|
6781
7166
|
defaultVariants: { tone: "default" }
|
|
6782
7167
|
}
|
|
6783
7168
|
);
|
|
6784
|
-
var SidebarLinkBadge = forwardRef(
|
|
7169
|
+
var SidebarLinkBadge = React36.forwardRef(
|
|
6785
7170
|
function SidebarLinkBadge2({ tone, className, ...props }, ref) {
|
|
6786
7171
|
return /* @__PURE__ */ jsx("span", { ref, className: cn(sidebarLinkBadgeVariants({ tone }), className), ...props });
|
|
6787
7172
|
}
|
|
6788
7173
|
);
|
|
6789
7174
|
SidebarLinkBadge.displayName = "SidebarLinkBadge";
|
|
6790
|
-
var
|
|
6791
|
-
|
|
6792
|
-
|
|
6793
|
-
|
|
6794
|
-
|
|
6795
|
-
|
|
6796
|
-
|
|
6797
|
-
|
|
6798
|
-
|
|
6799
|
-
|
|
6800
|
-
|
|
6801
|
-
|
|
6802
|
-
|
|
6803
|
-
|
|
7175
|
+
var SidebarLinkGroup = React36.forwardRef(
|
|
7176
|
+
function SidebarLinkGroup2({
|
|
7177
|
+
id: idProp,
|
|
7178
|
+
icon,
|
|
7179
|
+
label,
|
|
7180
|
+
href,
|
|
7181
|
+
active = false,
|
|
7182
|
+
defaultOpen = false,
|
|
7183
|
+
open: controlled,
|
|
7184
|
+
onOpenChange,
|
|
7185
|
+
onActivate,
|
|
7186
|
+
className,
|
|
7187
|
+
children,
|
|
7188
|
+
...props
|
|
7189
|
+
}, ref) {
|
|
7190
|
+
const reactId = React36.useId();
|
|
7191
|
+
const id = idProp ?? reactId;
|
|
7192
|
+
const scope = React36.useContext(SidebarGroupScopeContext);
|
|
7193
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React36.useState(defaultOpen);
|
|
7194
|
+
const open = controlled ?? uncontrolledOpen;
|
|
7195
|
+
const setOpen = React36.useCallback(
|
|
7196
|
+
(next) => {
|
|
7197
|
+
if (controlled === void 0) setUncontrolledOpen(next);
|
|
7198
|
+
onOpenChange?.(next);
|
|
7199
|
+
},
|
|
7200
|
+
[controlled, onOpenChange]
|
|
7201
|
+
);
|
|
7202
|
+
React36.useEffect(() => {
|
|
7203
|
+
if (scope?.exclusiveId && scope.exclusiveId !== id && open) {
|
|
7204
|
+
setOpen(false);
|
|
7205
|
+
}
|
|
7206
|
+
}, [scope?.exclusiveId, id, open, setOpen]);
|
|
7207
|
+
const handleBodyClick = (e) => {
|
|
7208
|
+
onActivate?.(e);
|
|
7209
|
+
if (e.defaultPrevented) return;
|
|
7210
|
+
scope?.setExclusive(id);
|
|
7211
|
+
setOpen(true);
|
|
7212
|
+
};
|
|
7213
|
+
const handleChevronClick = (e) => {
|
|
7214
|
+
e.preventDefault();
|
|
7215
|
+
e.stopPropagation();
|
|
7216
|
+
setOpen(!open);
|
|
7217
|
+
};
|
|
7218
|
+
const contentId = `${id}-content`;
|
|
7219
|
+
const bodyClassName = cn(
|
|
7220
|
+
"group/link relative flex flex-1 items-center gap-2.5 rounded-md px-2.5 py-1.5",
|
|
7221
|
+
"text-fg-2 text-[13px] font-normal no-underline",
|
|
7222
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
7223
|
+
"motion-reduce:transition-none",
|
|
7224
|
+
"hover:bg-bg-3 hover:text-fg",
|
|
7225
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7226
|
+
"data-[active=true]:bg-pro-bg data-[active=true]:text-pro-fg data-[active=true]:font-medium",
|
|
7227
|
+
// In rail, color carries active state since the chevron is hidden.
|
|
7228
|
+
"group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:text-pro-fg group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:opacity-100",
|
|
7229
|
+
// Active rail mark — anchored to body row's left edge.
|
|
7230
|
+
"data-[active=true]:before:absolute data-[active=true]:before:content-['']",
|
|
7231
|
+
"data-[active=true]:before:top-1/2 data-[active=true]:before:left-0",
|
|
7232
|
+
"data-[active=true]:before:h-4 data-[active=true]:before:w-[2px] data-[active=true]:before:-translate-y-1/2",
|
|
7233
|
+
"data-[active=true]:before:bg-pro-fg data-[active=true]:before:rounded-r-full",
|
|
7234
|
+
"[&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:opacity-85"
|
|
7235
|
+
);
|
|
7236
|
+
const labelSpan = /* @__PURE__ */ jsx(
|
|
7237
|
+
"span",
|
|
7238
|
+
{
|
|
7239
|
+
className: cn(
|
|
7240
|
+
"min-w-0 flex-1 truncate",
|
|
7241
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7242
|
+
"max-w-full opacity-100",
|
|
7243
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
7244
|
+
),
|
|
7245
|
+
children: label
|
|
7246
|
+
}
|
|
7247
|
+
);
|
|
7248
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("mb-px", className), ...props, children: /* @__PURE__ */ jsxs(Collapsible, { open, onOpenChange: setOpen, children: [
|
|
7249
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-stretch", children: [
|
|
7250
|
+
/* @__PURE__ */ jsxs(
|
|
7251
|
+
"a",
|
|
7252
|
+
{
|
|
7253
|
+
href,
|
|
7254
|
+
"data-active": active ? "true" : void 0,
|
|
7255
|
+
"aria-current": active ? "page" : void 0,
|
|
7256
|
+
onClick: handleBodyClick,
|
|
7257
|
+
className: bodyClassName,
|
|
7258
|
+
children: [
|
|
7259
|
+
icon,
|
|
7260
|
+
labelSpan
|
|
7261
|
+
]
|
|
7262
|
+
}
|
|
7263
|
+
),
|
|
7264
|
+
/* @__PURE__ */ jsx(
|
|
7265
|
+
"button",
|
|
7266
|
+
{
|
|
7267
|
+
type: "button",
|
|
7268
|
+
"aria-expanded": open,
|
|
7269
|
+
"aria-controls": contentId,
|
|
7270
|
+
"aria-label": open ? "Collapse section" : "Expand section",
|
|
7271
|
+
onClick: handleChevronClick,
|
|
7272
|
+
className: cn(
|
|
7273
|
+
"ml-px inline-flex size-7 shrink-0 items-center justify-center rounded-md",
|
|
7274
|
+
"text-fg-4 hover:bg-bg-3 hover:text-fg-2",
|
|
7275
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7276
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
|
|
7277
|
+
"[&_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",
|
|
7278
|
+
// Hide in rail — content tree is hidden too, so the
|
|
7279
|
+
// affordance has nothing to control.
|
|
7280
|
+
"group-data-[labels=hide]/sidebar:hidden"
|
|
7281
|
+
),
|
|
7282
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: open ? "" : "-rotate-90" })
|
|
7283
|
+
}
|
|
7284
|
+
)
|
|
7285
|
+
] }),
|
|
7286
|
+
/* @__PURE__ */ jsx(
|
|
7287
|
+
CollapsibleContent,
|
|
7288
|
+
{
|
|
7289
|
+
id: contentId,
|
|
7290
|
+
className: cn(
|
|
7291
|
+
// Indent column + connecting rule. Children render as
|
|
7292
|
+
// standard <SidebarLink>s and keep their own active-rail
|
|
7293
|
+
// indicator, which lands flush at the indented column's
|
|
7294
|
+
// left edge.
|
|
7295
|
+
"group-data-[labels=hide]/sidebar:hidden"
|
|
7296
|
+
),
|
|
7297
|
+
children: /* @__PURE__ */ jsx("div", { className: "border-rule mt-px ml-[18px] border-l pl-2", children })
|
|
7298
|
+
}
|
|
7299
|
+
)
|
|
7300
|
+
] }) });
|
|
7301
|
+
}
|
|
7302
|
+
);
|
|
7303
|
+
SidebarLinkGroup.displayName = "SidebarLinkGroup";
|
|
7304
|
+
var SidebarFooter = React36.forwardRef(
|
|
7305
|
+
function SidebarFooter2({ className, ...props }, ref) {
|
|
7306
|
+
return /* @__PURE__ */ jsx(
|
|
7307
|
+
"div",
|
|
7308
|
+
{
|
|
7309
|
+
ref,
|
|
7310
|
+
className: cn(
|
|
7311
|
+
"border-rule mt-auto flex items-center gap-2.5 border-t px-2 pt-2.5 pb-1",
|
|
7312
|
+
"text-fg-3 text-xs",
|
|
7313
|
+
className
|
|
7314
|
+
),
|
|
7315
|
+
...props
|
|
7316
|
+
}
|
|
7317
|
+
);
|
|
7318
|
+
}
|
|
7319
|
+
);
|
|
6804
7320
|
SidebarFooter.displayName = "SidebarFooter";
|
|
6805
|
-
var SidebarUser = forwardRef(function SidebarUser2({ name, subtitle, avatarSrc, className, ...props }, ref) {
|
|
7321
|
+
var SidebarUser = React36.forwardRef(function SidebarUser2({ name, subtitle, avatarSrc, className, ...props }, ref) {
|
|
6806
7322
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex min-w-0 items-center gap-2.5", className), ...props, children: [
|
|
6807
7323
|
/* @__PURE__ */ jsx(Avatar, { size: "sm", variant: "branded", name, src: avatarSrc ?? void 0 }),
|
|
6808
|
-
/* @__PURE__ */ jsxs(
|
|
6809
|
-
|
|
6810
|
-
|
|
6811
|
-
|
|
7324
|
+
/* @__PURE__ */ jsxs(
|
|
7325
|
+
"div",
|
|
7326
|
+
{
|
|
7327
|
+
className: cn(
|
|
7328
|
+
"min-w-0 leading-tight",
|
|
7329
|
+
"transition-[opacity,max-width] duration-[180ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
7330
|
+
"max-w-full opacity-100",
|
|
7331
|
+
"group-data-[labels=hide]/sidebar:max-w-0 group-data-[labels=hide]/sidebar:opacity-0 group-data-[labels=hide]/sidebar:invisible"
|
|
7332
|
+
),
|
|
7333
|
+
children: [
|
|
7334
|
+
/* @__PURE__ */ jsx("div", { className: "text-fg truncate text-[13px] font-medium", children: name }),
|
|
7335
|
+
subtitle != null && /* @__PURE__ */ jsx("div", { className: "text-fg-4 truncate font-mono text-[10.5px]", children: subtitle })
|
|
7336
|
+
]
|
|
7337
|
+
}
|
|
7338
|
+
)
|
|
6812
7339
|
] });
|
|
6813
7340
|
});
|
|
6814
7341
|
SidebarUser.displayName = "SidebarUser";
|
|
@@ -7532,6 +8059,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
|
|
|
7532
8059
|
});
|
|
7533
8060
|
KbdHint.displayName = "KbdHint";
|
|
7534
8061
|
|
|
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 };
|
|
8062
|
+
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, 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, 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, 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
8063
|
//# sourceMappingURL=index.js.map
|
|
7537
8064
|
//# sourceMappingURL=index.js.map
|