@invana/ui 0.0.28 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -5
- package/dist/index.cjs +1679 -577
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1097 -118
- package/dist/index.d.ts +1097 -118
- package/dist/index.js +1660 -576
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
|
-
import {
|
|
3
|
-
import * as
|
|
4
|
-
import
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
import * as React24 from 'react';
|
|
4
|
+
import React24__default, { Component } from 'react';
|
|
5
5
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
6
6
|
import { ChevronDown, ArrowLeft, ArrowRight, X, Search, ChevronRight, Check, Circle, PanelLeft, MoreHorizontal, ChevronLeft, Loader2Icon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon, Frown, Lock, Construction } from 'lucide-react';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -28,18 +28,11 @@ import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
|
28
28
|
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
29
29
|
|
|
30
30
|
// src/lib/utils.ts
|
|
31
|
-
var twMerge = extendTailwindMerge({
|
|
32
|
-
extend: {
|
|
33
|
-
classGroups: {
|
|
34
|
-
"font-size": [{ text: ["meta"] }]
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
31
|
function cn(...inputs) {
|
|
39
32
|
return twMerge(clsx(inputs));
|
|
40
33
|
}
|
|
41
34
|
var Accordion = AccordionPrimitive.Root;
|
|
42
|
-
var AccordionItem =
|
|
35
|
+
var AccordionItem = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
43
36
|
AccordionPrimitive.Item,
|
|
44
37
|
{
|
|
45
38
|
ref,
|
|
@@ -48,7 +41,7 @@ var AccordionItem = React23.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
48
41
|
}
|
|
49
42
|
));
|
|
50
43
|
AccordionItem.displayName = "AccordionItem";
|
|
51
|
-
var AccordionTrigger =
|
|
44
|
+
var AccordionTrigger = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
52
45
|
AccordionPrimitive.Trigger,
|
|
53
46
|
{
|
|
54
47
|
ref,
|
|
@@ -64,7 +57,7 @@ var AccordionTrigger = React23.forwardRef(({ className, children, ...props }, re
|
|
|
64
57
|
}
|
|
65
58
|
) }));
|
|
66
59
|
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
67
|
-
var AccordionContent =
|
|
60
|
+
var AccordionContent = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
68
61
|
AccordionPrimitive.Content,
|
|
69
62
|
{
|
|
70
63
|
ref,
|
|
@@ -88,7 +81,7 @@ var alertVariants = cva(
|
|
|
88
81
|
}
|
|
89
82
|
}
|
|
90
83
|
);
|
|
91
|
-
var Alert =
|
|
84
|
+
var Alert = React24.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
92
85
|
"div",
|
|
93
86
|
{
|
|
94
87
|
ref,
|
|
@@ -98,7 +91,7 @@ var Alert = React23.forwardRef(({ className, variant, ...props }, ref) => /* @__
|
|
|
98
91
|
}
|
|
99
92
|
));
|
|
100
93
|
Alert.displayName = "Alert";
|
|
101
|
-
var AlertTitle =
|
|
94
|
+
var AlertTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
102
95
|
"h5",
|
|
103
96
|
{
|
|
104
97
|
ref,
|
|
@@ -107,7 +100,7 @@ var AlertTitle = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
107
100
|
}
|
|
108
101
|
));
|
|
109
102
|
AlertTitle.displayName = "AlertTitle";
|
|
110
|
-
var AlertDescription =
|
|
103
|
+
var AlertDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
111
104
|
"div",
|
|
112
105
|
{
|
|
113
106
|
ref,
|
|
@@ -137,7 +130,7 @@ var buttonVariants = cva(
|
|
|
137
130
|
* size-5, which at h-6 leaves no padding at all.
|
|
138
131
|
*/
|
|
139
132
|
size: {
|
|
140
|
-
xs: "h-6 rounded-control px-2 text-
|
|
133
|
+
xs: "h-6 rounded-control px-2 text-sm gap-1 [&_svg]:size-4",
|
|
141
134
|
default: "h-9 px-4 py-2",
|
|
142
135
|
sm: "h-8 rounded-control px-3 py-2",
|
|
143
136
|
lg: "h-12 rounded-control px-8 py-3",
|
|
@@ -152,7 +145,7 @@ var buttonVariants = cva(
|
|
|
152
145
|
}
|
|
153
146
|
}
|
|
154
147
|
);
|
|
155
|
-
var Button =
|
|
148
|
+
var Button = React24.forwardRef(
|
|
156
149
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
157
150
|
const Comp = asChild ? Slot : "button";
|
|
158
151
|
return /* @__PURE__ */ jsx(
|
|
@@ -169,7 +162,7 @@ Button.displayName = "Button";
|
|
|
169
162
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
170
163
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
171
164
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
172
|
-
var AlertDialogOverlay =
|
|
165
|
+
var AlertDialogOverlay = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
173
166
|
AlertDialogPrimitive.Overlay,
|
|
174
167
|
{
|
|
175
168
|
className: cn(
|
|
@@ -181,7 +174,7 @@ var AlertDialogOverlay = React23.forwardRef(({ className, ...props }, ref) => /*
|
|
|
181
174
|
}
|
|
182
175
|
));
|
|
183
176
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
184
|
-
var AlertDialogContent =
|
|
177
|
+
var AlertDialogContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
185
178
|
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
186
179
|
/* @__PURE__ */ jsx(
|
|
187
180
|
AlertDialogPrimitive.Content,
|
|
@@ -224,7 +217,7 @@ var AlertDialogFooter = ({
|
|
|
224
217
|
}
|
|
225
218
|
);
|
|
226
219
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
227
|
-
var AlertDialogTitle =
|
|
220
|
+
var AlertDialogTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
228
221
|
AlertDialogPrimitive.Title,
|
|
229
222
|
{
|
|
230
223
|
ref,
|
|
@@ -233,7 +226,7 @@ var AlertDialogTitle = React23.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
233
226
|
}
|
|
234
227
|
));
|
|
235
228
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
236
|
-
var AlertDialogDescription =
|
|
229
|
+
var AlertDialogDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
237
230
|
AlertDialogPrimitive.Description,
|
|
238
231
|
{
|
|
239
232
|
ref,
|
|
@@ -242,7 +235,7 @@ var AlertDialogDescription = React23.forwardRef(({ className, ...props }, ref) =
|
|
|
242
235
|
}
|
|
243
236
|
));
|
|
244
237
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
245
|
-
var AlertDialogAction =
|
|
238
|
+
var AlertDialogAction = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
246
239
|
AlertDialogPrimitive.Action,
|
|
247
240
|
{
|
|
248
241
|
ref,
|
|
@@ -251,7 +244,7 @@ var AlertDialogAction = React23.forwardRef(({ className, ...props }, ref) => /*
|
|
|
251
244
|
}
|
|
252
245
|
));
|
|
253
246
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
254
|
-
var AlertDialogCancel =
|
|
247
|
+
var AlertDialogCancel = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
255
248
|
AlertDialogPrimitive.Cancel,
|
|
256
249
|
{
|
|
257
250
|
ref,
|
|
@@ -264,7 +257,7 @@ var AlertDialogCancel = React23.forwardRef(({ className, ...props }, ref) => /*
|
|
|
264
257
|
}
|
|
265
258
|
));
|
|
266
259
|
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
|
|
267
|
-
var Avatar =
|
|
260
|
+
var Avatar = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
268
261
|
AvatarPrimitive.Root,
|
|
269
262
|
{
|
|
270
263
|
ref,
|
|
@@ -277,7 +270,7 @@ var Avatar = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
277
270
|
}
|
|
278
271
|
));
|
|
279
272
|
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
280
|
-
var AvatarImage =
|
|
273
|
+
var AvatarImage = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
281
274
|
AvatarPrimitive.Image,
|
|
282
275
|
{
|
|
283
276
|
ref,
|
|
@@ -286,7 +279,7 @@ var AvatarImage = React23.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
286
279
|
}
|
|
287
280
|
));
|
|
288
281
|
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
289
|
-
var AvatarFallback =
|
|
282
|
+
var AvatarFallback = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
290
283
|
AvatarPrimitive.Fallback,
|
|
291
284
|
{
|
|
292
285
|
ref,
|
|
@@ -318,15 +311,15 @@ var badgeVariants = cva(
|
|
|
318
311
|
},
|
|
319
312
|
size: {
|
|
320
313
|
/** 18px — inline in a title, or a count against a label. */
|
|
321
|
-
xs: "h-[18px] px-1.5 text-
|
|
314
|
+
xs: "h-[18px] px-1.5 text-sm",
|
|
322
315
|
/** 22px — the row chip: a status beside an entity name. */
|
|
323
|
-
sm: "h-[22px] px-2 text-
|
|
316
|
+
sm: "h-[22px] px-2 text-sm",
|
|
324
317
|
/**
|
|
325
318
|
* Unchanged from before `size` existed: no explicit height, so it sizes
|
|
326
319
|
* from its text. Every badge already written keeps rendering exactly as
|
|
327
320
|
* it did — the two tiers above are additions, not a re-baseline.
|
|
328
321
|
*/
|
|
329
|
-
default: "px-2.5 py-0.5 text-
|
|
322
|
+
default: "px-2.5 py-0.5 text-sm"
|
|
330
323
|
}
|
|
331
324
|
},
|
|
332
325
|
defaultVariants: {
|
|
@@ -345,9 +338,9 @@ function Badge({ className, variant, tone, size, ...props }) {
|
|
|
345
338
|
}
|
|
346
339
|
);
|
|
347
340
|
}
|
|
348
|
-
var Breadcrumb =
|
|
341
|
+
var Breadcrumb = React24.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
349
342
|
Breadcrumb.displayName = "Breadcrumb";
|
|
350
|
-
var BreadcrumbList =
|
|
343
|
+
var BreadcrumbList = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
351
344
|
"ol",
|
|
352
345
|
{
|
|
353
346
|
ref,
|
|
@@ -359,7 +352,7 @@ var BreadcrumbList = React23.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
359
352
|
}
|
|
360
353
|
));
|
|
361
354
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
362
|
-
var BreadcrumbItem =
|
|
355
|
+
var BreadcrumbItem = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
363
356
|
"li",
|
|
364
357
|
{
|
|
365
358
|
ref,
|
|
@@ -368,7 +361,7 @@ var BreadcrumbItem = React23.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
368
361
|
}
|
|
369
362
|
));
|
|
370
363
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
371
|
-
var BreadcrumbLink =
|
|
364
|
+
var BreadcrumbLink = React24.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
372
365
|
const Comp = asChild ? Slot : "a";
|
|
373
366
|
return /* @__PURE__ */ jsx(
|
|
374
367
|
Comp,
|
|
@@ -380,7 +373,7 @@ var BreadcrumbLink = React23.forwardRef(({ asChild, className, ...props }, ref)
|
|
|
380
373
|
);
|
|
381
374
|
});
|
|
382
375
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
383
|
-
var BreadcrumbPage =
|
|
376
|
+
var BreadcrumbPage = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
384
377
|
"span",
|
|
385
378
|
{
|
|
386
379
|
ref,
|
|
@@ -424,7 +417,7 @@ var BreadcrumbEllipsis = ({
|
|
|
424
417
|
}
|
|
425
418
|
);
|
|
426
419
|
BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
427
|
-
var Separator =
|
|
420
|
+
var Separator = React24.forwardRef(
|
|
428
421
|
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
429
422
|
SeparatorPrimitive.Root,
|
|
430
423
|
{
|
|
@@ -506,7 +499,7 @@ function ButtonGroupSeparator({
|
|
|
506
499
|
}
|
|
507
500
|
);
|
|
508
501
|
}
|
|
509
|
-
var Card =
|
|
502
|
+
var Card = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
510
503
|
"div",
|
|
511
504
|
{
|
|
512
505
|
ref,
|
|
@@ -518,7 +511,7 @@ var Card = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
518
511
|
}
|
|
519
512
|
));
|
|
520
513
|
Card.displayName = "Card";
|
|
521
|
-
var CardHeader =
|
|
514
|
+
var CardHeader = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
522
515
|
"div",
|
|
523
516
|
{
|
|
524
517
|
ref,
|
|
@@ -527,7 +520,7 @@ var CardHeader = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
527
520
|
}
|
|
528
521
|
));
|
|
529
522
|
CardHeader.displayName = "CardHeader";
|
|
530
|
-
var CardTitle =
|
|
523
|
+
var CardTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
531
524
|
"div",
|
|
532
525
|
{
|
|
533
526
|
ref,
|
|
@@ -536,7 +529,7 @@ var CardTitle = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
536
529
|
}
|
|
537
530
|
));
|
|
538
531
|
CardTitle.displayName = "CardTitle";
|
|
539
|
-
var CardDescription =
|
|
532
|
+
var CardDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
540
533
|
"div",
|
|
541
534
|
{
|
|
542
535
|
ref,
|
|
@@ -545,9 +538,9 @@ var CardDescription = React23.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
545
538
|
}
|
|
546
539
|
));
|
|
547
540
|
CardDescription.displayName = "CardDescription";
|
|
548
|
-
var CardContent =
|
|
541
|
+
var CardContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-3 flex-1 overflow-y-auto", className), ...props }));
|
|
549
542
|
CardContent.displayName = "CardContent";
|
|
550
|
-
var CardFooter =
|
|
543
|
+
var CardFooter = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
551
544
|
"div",
|
|
552
545
|
{
|
|
553
546
|
ref,
|
|
@@ -556,7 +549,7 @@ var CardFooter = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
556
549
|
}
|
|
557
550
|
));
|
|
558
551
|
CardFooter.displayName = "CardFooter";
|
|
559
|
-
var CardWithHeader =
|
|
552
|
+
var CardWithHeader = React24.forwardRef(
|
|
560
553
|
({ className, title, description, headerClassName, contentClassName, footerClassName, footer, children, ...props }, ref) => /* @__PURE__ */ jsxs(Card, { ref, className, ...props, children: [
|
|
561
554
|
/* @__PURE__ */ jsxs(CardHeader, { className: `${headerClassName} rounded-t-md`, children: [
|
|
562
555
|
typeof title === "string" ? /* @__PURE__ */ jsx(CardTitle, { children: title }) : title,
|
|
@@ -567,15 +560,15 @@ var CardWithHeader = React23.forwardRef(
|
|
|
567
560
|
] })
|
|
568
561
|
);
|
|
569
562
|
CardWithHeader.displayName = "CardWithHeader";
|
|
570
|
-
var CarouselContext =
|
|
563
|
+
var CarouselContext = React24.createContext(null);
|
|
571
564
|
function useCarousel() {
|
|
572
|
-
const context =
|
|
565
|
+
const context = React24.useContext(CarouselContext);
|
|
573
566
|
if (!context) {
|
|
574
567
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
575
568
|
}
|
|
576
569
|
return context;
|
|
577
570
|
}
|
|
578
|
-
var Carousel =
|
|
571
|
+
var Carousel = React24.forwardRef(
|
|
579
572
|
({
|
|
580
573
|
orientation = "horizontal",
|
|
581
574
|
opts,
|
|
@@ -592,22 +585,22 @@ var Carousel = React23.forwardRef(
|
|
|
592
585
|
},
|
|
593
586
|
plugins
|
|
594
587
|
);
|
|
595
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
596
|
-
const [canScrollNext, setCanScrollNext] =
|
|
597
|
-
const onSelect =
|
|
588
|
+
const [canScrollPrev, setCanScrollPrev] = React24.useState(false);
|
|
589
|
+
const [canScrollNext, setCanScrollNext] = React24.useState(false);
|
|
590
|
+
const onSelect = React24.useCallback((api2) => {
|
|
598
591
|
if (!api2) {
|
|
599
592
|
return;
|
|
600
593
|
}
|
|
601
594
|
setCanScrollPrev(api2.canScrollPrev());
|
|
602
595
|
setCanScrollNext(api2.canScrollNext());
|
|
603
596
|
}, []);
|
|
604
|
-
const scrollPrev =
|
|
597
|
+
const scrollPrev = React24.useCallback(() => {
|
|
605
598
|
api?.scrollPrev();
|
|
606
599
|
}, [api]);
|
|
607
|
-
const scrollNext =
|
|
600
|
+
const scrollNext = React24.useCallback(() => {
|
|
608
601
|
api?.scrollNext();
|
|
609
602
|
}, [api]);
|
|
610
|
-
const handleKeyDown =
|
|
603
|
+
const handleKeyDown = React24.useCallback(
|
|
611
604
|
(event) => {
|
|
612
605
|
if (event.key === "ArrowLeft") {
|
|
613
606
|
event.preventDefault();
|
|
@@ -619,13 +612,13 @@ var Carousel = React23.forwardRef(
|
|
|
619
612
|
},
|
|
620
613
|
[scrollPrev, scrollNext]
|
|
621
614
|
);
|
|
622
|
-
|
|
615
|
+
React24.useEffect(() => {
|
|
623
616
|
if (!api || !setApi) {
|
|
624
617
|
return;
|
|
625
618
|
}
|
|
626
619
|
setApi(api);
|
|
627
620
|
}, [api, setApi]);
|
|
628
|
-
|
|
621
|
+
React24.useEffect(() => {
|
|
629
622
|
if (!api) {
|
|
630
623
|
return;
|
|
631
624
|
}
|
|
@@ -666,7 +659,7 @@ var Carousel = React23.forwardRef(
|
|
|
666
659
|
}
|
|
667
660
|
);
|
|
668
661
|
Carousel.displayName = "Carousel";
|
|
669
|
-
var CarouselContent =
|
|
662
|
+
var CarouselContent = React24.forwardRef(({ className, ...props }, ref) => {
|
|
670
663
|
const { carouselRef, orientation } = useCarousel();
|
|
671
664
|
return /* @__PURE__ */ jsx("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
672
665
|
"div",
|
|
@@ -682,7 +675,7 @@ var CarouselContent = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
682
675
|
) });
|
|
683
676
|
});
|
|
684
677
|
CarouselContent.displayName = "CarouselContent";
|
|
685
|
-
var CarouselItem =
|
|
678
|
+
var CarouselItem = React24.forwardRef(({ className, ...props }, ref) => {
|
|
686
679
|
const { orientation } = useCarousel();
|
|
687
680
|
return /* @__PURE__ */ jsx(
|
|
688
681
|
"div",
|
|
@@ -700,7 +693,7 @@ var CarouselItem = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
700
693
|
);
|
|
701
694
|
});
|
|
702
695
|
CarouselItem.displayName = "CarouselItem";
|
|
703
|
-
var CarouselPrevious =
|
|
696
|
+
var CarouselPrevious = React24.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
|
|
704
697
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
705
698
|
return /* @__PURE__ */ jsxs(
|
|
706
699
|
Button,
|
|
@@ -724,7 +717,7 @@ var CarouselPrevious = React23.forwardRef(({ className, variant = "outline", siz
|
|
|
724
717
|
);
|
|
725
718
|
});
|
|
726
719
|
CarouselPrevious.displayName = "CarouselPrevious";
|
|
727
|
-
var CarouselNext =
|
|
720
|
+
var CarouselNext = React24.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
|
|
728
721
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
729
722
|
return /* @__PURE__ */ jsxs(
|
|
730
723
|
Button,
|
|
@@ -752,7 +745,7 @@ var Dialog = DialogPrimitive.Root;
|
|
|
752
745
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
753
746
|
var DialogPortal = DialogPrimitive.Portal;
|
|
754
747
|
var DialogClose = DialogPrimitive.Close;
|
|
755
|
-
var DialogOverlay =
|
|
748
|
+
var DialogOverlay = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
756
749
|
DialogPrimitive.Overlay,
|
|
757
750
|
{
|
|
758
751
|
ref,
|
|
@@ -764,7 +757,7 @@ var DialogOverlay = React23.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
764
757
|
}
|
|
765
758
|
));
|
|
766
759
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
767
|
-
var DialogContent =
|
|
760
|
+
var DialogContent = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
768
761
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
769
762
|
/* @__PURE__ */ jsxs(
|
|
770
763
|
DialogPrimitive.Content,
|
|
@@ -814,7 +807,7 @@ var DialogFooter = ({
|
|
|
814
807
|
}
|
|
815
808
|
);
|
|
816
809
|
DialogFooter.displayName = "DialogFooter";
|
|
817
|
-
var DialogTitle =
|
|
810
|
+
var DialogTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
818
811
|
DialogPrimitive.Title,
|
|
819
812
|
{
|
|
820
813
|
ref,
|
|
@@ -826,7 +819,7 @@ var DialogTitle = React23.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
826
819
|
}
|
|
827
820
|
));
|
|
828
821
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
829
|
-
var DialogDescription =
|
|
822
|
+
var DialogDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
830
823
|
DialogPrimitive.Description,
|
|
831
824
|
{
|
|
832
825
|
ref,
|
|
@@ -835,7 +828,7 @@ var DialogDescription = React23.forwardRef(({ className, ...props }, ref) => /*
|
|
|
835
828
|
}
|
|
836
829
|
));
|
|
837
830
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
838
|
-
var Command =
|
|
831
|
+
var Command = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
839
832
|
Command$1,
|
|
840
833
|
{
|
|
841
834
|
ref,
|
|
@@ -850,7 +843,7 @@ Command.displayName = Command$1.displayName;
|
|
|
850
843
|
var CommandDialog = ({ children, ...props }) => {
|
|
851
844
|
return /* @__PURE__ */ jsx(Dialog, { ...props, children: /* @__PURE__ */ jsx(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
|
|
852
845
|
};
|
|
853
|
-
var CommandInput =
|
|
846
|
+
var CommandInput = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
|
|
854
847
|
/* @__PURE__ */ jsx(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
|
|
855
848
|
/* @__PURE__ */ jsx(
|
|
856
849
|
Command$1.Input,
|
|
@@ -865,7 +858,7 @@ var CommandInput = React23.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
865
858
|
)
|
|
866
859
|
] }));
|
|
867
860
|
CommandInput.displayName = Command$1.Input.displayName;
|
|
868
|
-
var CommandList =
|
|
861
|
+
var CommandList = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
869
862
|
Command$1.List,
|
|
870
863
|
{
|
|
871
864
|
ref,
|
|
@@ -874,7 +867,7 @@ var CommandList = React23.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
874
867
|
}
|
|
875
868
|
));
|
|
876
869
|
CommandList.displayName = Command$1.List.displayName;
|
|
877
|
-
var CommandEmpty =
|
|
870
|
+
var CommandEmpty = React24.forwardRef((props, ref) => /* @__PURE__ */ jsx(
|
|
878
871
|
Command$1.Empty,
|
|
879
872
|
{
|
|
880
873
|
ref,
|
|
@@ -883,19 +876,19 @@ var CommandEmpty = React23.forwardRef((props, ref) => /* @__PURE__ */ jsx(
|
|
|
883
876
|
}
|
|
884
877
|
));
|
|
885
878
|
CommandEmpty.displayName = Command$1.Empty.displayName;
|
|
886
|
-
var CommandGroup =
|
|
879
|
+
var CommandGroup = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
887
880
|
Command$1.Group,
|
|
888
881
|
{
|
|
889
882
|
ref,
|
|
890
883
|
className: cn(
|
|
891
|
-
"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-
|
|
884
|
+
"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
|
|
892
885
|
className
|
|
893
886
|
),
|
|
894
887
|
...props
|
|
895
888
|
}
|
|
896
889
|
));
|
|
897
890
|
CommandGroup.displayName = Command$1.Group.displayName;
|
|
898
|
-
var CommandSeparator =
|
|
891
|
+
var CommandSeparator = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
899
892
|
Command$1.Separator,
|
|
900
893
|
{
|
|
901
894
|
ref,
|
|
@@ -904,7 +897,7 @@ var CommandSeparator = React23.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
904
897
|
}
|
|
905
898
|
));
|
|
906
899
|
CommandSeparator.displayName = Command$1.Separator.displayName;
|
|
907
|
-
var CommandItem =
|
|
900
|
+
var CommandItem = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
908
901
|
Command$1.Item,
|
|
909
902
|
{
|
|
910
903
|
ref,
|
|
@@ -924,7 +917,7 @@ var CommandShortcut = ({
|
|
|
924
917
|
"span",
|
|
925
918
|
{
|
|
926
919
|
className: cn(
|
|
927
|
-
"ml-auto text-
|
|
920
|
+
"ml-auto text-sm tracking-widest text-muted-foreground",
|
|
928
921
|
className
|
|
929
922
|
),
|
|
930
923
|
...props
|
|
@@ -938,7 +931,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
938
931
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
939
932
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
940
933
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
941
|
-
var DropdownMenuSubTrigger =
|
|
934
|
+
var DropdownMenuSubTrigger = React24.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
942
935
|
DropdownMenuPrimitive.SubTrigger,
|
|
943
936
|
{
|
|
944
937
|
ref,
|
|
@@ -955,7 +948,7 @@ var DropdownMenuSubTrigger = React23.forwardRef(({ className, inset, children, .
|
|
|
955
948
|
}
|
|
956
949
|
));
|
|
957
950
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
958
|
-
var DropdownMenuSubContent =
|
|
951
|
+
var DropdownMenuSubContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
959
952
|
DropdownMenuPrimitive.SubContent,
|
|
960
953
|
{
|
|
961
954
|
ref,
|
|
@@ -967,7 +960,7 @@ var DropdownMenuSubContent = React23.forwardRef(({ className, ...props }, ref) =
|
|
|
967
960
|
}
|
|
968
961
|
));
|
|
969
962
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
970
|
-
var DropdownMenuContent =
|
|
963
|
+
var DropdownMenuContent = React24.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
971
964
|
DropdownMenuPrimitive.Content,
|
|
972
965
|
{
|
|
973
966
|
ref,
|
|
@@ -981,7 +974,7 @@ var DropdownMenuContent = React23.forwardRef(({ className, sideOffset = 4, ...pr
|
|
|
981
974
|
}
|
|
982
975
|
) }));
|
|
983
976
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
984
|
-
var DropdownMenuItem =
|
|
977
|
+
var DropdownMenuItem = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
985
978
|
DropdownMenuPrimitive.Item,
|
|
986
979
|
{
|
|
987
980
|
ref,
|
|
@@ -994,7 +987,7 @@ var DropdownMenuItem = React23.forwardRef(({ className, inset, ...props }, ref)
|
|
|
994
987
|
}
|
|
995
988
|
));
|
|
996
989
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
997
|
-
var DropdownMenuCheckboxItem =
|
|
990
|
+
var DropdownMenuCheckboxItem = React24.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
998
991
|
DropdownMenuPrimitive.CheckboxItem,
|
|
999
992
|
{
|
|
1000
993
|
ref,
|
|
@@ -1011,7 +1004,7 @@ var DropdownMenuCheckboxItem = React23.forwardRef(({ className, children, checke
|
|
|
1011
1004
|
}
|
|
1012
1005
|
));
|
|
1013
1006
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
1014
|
-
var DropdownMenuRadioItem =
|
|
1007
|
+
var DropdownMenuRadioItem = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1015
1008
|
DropdownMenuPrimitive.RadioItem,
|
|
1016
1009
|
{
|
|
1017
1010
|
ref,
|
|
@@ -1027,7 +1020,7 @@ var DropdownMenuRadioItem = React23.forwardRef(({ className, children, ...props
|
|
|
1027
1020
|
}
|
|
1028
1021
|
));
|
|
1029
1022
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
1030
|
-
var DropdownMenuLabel =
|
|
1023
|
+
var DropdownMenuLabel = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1031
1024
|
DropdownMenuPrimitive.Label,
|
|
1032
1025
|
{
|
|
1033
1026
|
ref,
|
|
@@ -1040,7 +1033,7 @@ var DropdownMenuLabel = React23.forwardRef(({ className, inset, ...props }, ref)
|
|
|
1040
1033
|
}
|
|
1041
1034
|
));
|
|
1042
1035
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
1043
|
-
var DropdownMenuSeparator =
|
|
1036
|
+
var DropdownMenuSeparator = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1044
1037
|
DropdownMenuPrimitive.Separator,
|
|
1045
1038
|
{
|
|
1046
1039
|
ref,
|
|
@@ -1056,7 +1049,7 @@ var DropdownMenuShortcut = ({
|
|
|
1056
1049
|
return /* @__PURE__ */ jsx(
|
|
1057
1050
|
"span",
|
|
1058
1051
|
{
|
|
1059
|
-
className: cn("ml-auto text-
|
|
1052
|
+
className: cn("ml-auto text-sm tracking-widest opacity-60", className),
|
|
1060
1053
|
...props
|
|
1061
1054
|
}
|
|
1062
1055
|
);
|
|
@@ -1064,7 +1057,7 @@ var DropdownMenuShortcut = ({
|
|
|
1064
1057
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
1065
1058
|
var HoverCard = HoverCardPrimitive.Root;
|
|
1066
1059
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
1067
|
-
var HoverCardContent =
|
|
1060
|
+
var HoverCardContent = React24.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1068
1061
|
HoverCardPrimitive.Content,
|
|
1069
1062
|
{
|
|
1070
1063
|
ref,
|
|
@@ -1225,7 +1218,7 @@ function ItemDescription({ className, ...props }) {
|
|
|
1225
1218
|
className: cn(
|
|
1226
1219
|
"text-muted-foreground line-clamp-2 text-balance font-normal leading-normal",
|
|
1227
1220
|
// A dense row's subtitle is one line of meta, not a wrapped paragraph.
|
|
1228
|
-
"group-data-[size=xs]/item:line-clamp-1 group-data-[size=xs]/item:text-
|
|
1221
|
+
"group-data-[size=xs]/item:line-clamp-1 group-data-[size=xs]/item:text-sm",
|
|
1229
1222
|
"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
|
|
1230
1223
|
className
|
|
1231
1224
|
),
|
|
@@ -1275,7 +1268,7 @@ function Kbd({ className, ...props }) {
|
|
|
1275
1268
|
{
|
|
1276
1269
|
"data-slot": "kbd",
|
|
1277
1270
|
className: cn(
|
|
1278
|
-
"bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 select-none items-center justify-center gap-1 rounded-control px-1 font-sans text-
|
|
1271
|
+
"bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 select-none items-center justify-center gap-1 rounded-control px-1 font-sans text-sm font-medium",
|
|
1279
1272
|
"[&_svg:not([class*='size-'])]:size-3",
|
|
1280
1273
|
"[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10",
|
|
1281
1274
|
className
|
|
@@ -1294,6 +1287,32 @@ function KbdGroup({ className, ...props }) {
|
|
|
1294
1287
|
}
|
|
1295
1288
|
);
|
|
1296
1289
|
}
|
|
1290
|
+
var linkVariants = cva(
|
|
1291
|
+
"underline-offset-4 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-[2px]",
|
|
1292
|
+
{
|
|
1293
|
+
variants: {
|
|
1294
|
+
variant: {
|
|
1295
|
+
default: "text-primary hover:underline",
|
|
1296
|
+
underlined: "text-primary underline",
|
|
1297
|
+
quiet: "text-muted-foreground hover:text-foreground hover:underline"
|
|
1298
|
+
}
|
|
1299
|
+
},
|
|
1300
|
+
defaultVariants: { variant: "default" }
|
|
1301
|
+
}
|
|
1302
|
+
);
|
|
1303
|
+
var Link = React24.forwardRef(
|
|
1304
|
+
({ className, variant, external, target, rel, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1305
|
+
"a",
|
|
1306
|
+
{
|
|
1307
|
+
ref,
|
|
1308
|
+
className: cn(linkVariants({ variant }), className),
|
|
1309
|
+
target: external ? "_blank" : target,
|
|
1310
|
+
rel: external ? "noreferrer noopener" : rel,
|
|
1311
|
+
...props
|
|
1312
|
+
}
|
|
1313
|
+
)
|
|
1314
|
+
);
|
|
1315
|
+
Link.displayName = "Link";
|
|
1297
1316
|
function MenubarMenu({
|
|
1298
1317
|
...props
|
|
1299
1318
|
}) {
|
|
@@ -1319,7 +1338,7 @@ function MenubarSub({
|
|
|
1319
1338
|
}) {
|
|
1320
1339
|
return /* @__PURE__ */ jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
|
|
1321
1340
|
}
|
|
1322
|
-
var Menubar =
|
|
1341
|
+
var Menubar = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1323
1342
|
MenubarPrimitive.Root,
|
|
1324
1343
|
{
|
|
1325
1344
|
ref,
|
|
@@ -1331,7 +1350,7 @@ var Menubar = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
1331
1350
|
}
|
|
1332
1351
|
));
|
|
1333
1352
|
Menubar.displayName = MenubarPrimitive.Root.displayName;
|
|
1334
|
-
var MenubarTrigger =
|
|
1353
|
+
var MenubarTrigger = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1335
1354
|
MenubarPrimitive.Trigger,
|
|
1336
1355
|
{
|
|
1337
1356
|
ref,
|
|
@@ -1343,7 +1362,7 @@ var MenubarTrigger = React23.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
1343
1362
|
}
|
|
1344
1363
|
));
|
|
1345
1364
|
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
|
|
1346
|
-
var MenubarSubTrigger =
|
|
1365
|
+
var MenubarSubTrigger = React24.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1347
1366
|
MenubarPrimitive.SubTrigger,
|
|
1348
1367
|
{
|
|
1349
1368
|
ref,
|
|
@@ -1360,7 +1379,7 @@ var MenubarSubTrigger = React23.forwardRef(({ className, inset, children, ...pro
|
|
|
1360
1379
|
}
|
|
1361
1380
|
));
|
|
1362
1381
|
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
|
1363
|
-
var MenubarSubContent =
|
|
1382
|
+
var MenubarSubContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1364
1383
|
MenubarPrimitive.SubContent,
|
|
1365
1384
|
{
|
|
1366
1385
|
ref,
|
|
@@ -1372,7 +1391,7 @@ var MenubarSubContent = React23.forwardRef(({ className, ...props }, ref) => /*
|
|
|
1372
1391
|
}
|
|
1373
1392
|
));
|
|
1374
1393
|
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
|
|
1375
|
-
var MenubarContent =
|
|
1394
|
+
var MenubarContent = React24.forwardRef(
|
|
1376
1395
|
({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1377
1396
|
MenubarPrimitive.Content,
|
|
1378
1397
|
{
|
|
@@ -1389,7 +1408,7 @@ var MenubarContent = React23.forwardRef(
|
|
|
1389
1408
|
) })
|
|
1390
1409
|
);
|
|
1391
1410
|
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
|
|
1392
|
-
var MenubarItem =
|
|
1411
|
+
var MenubarItem = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1393
1412
|
MenubarPrimitive.Item,
|
|
1394
1413
|
{
|
|
1395
1414
|
ref,
|
|
@@ -1402,7 +1421,7 @@ var MenubarItem = React23.forwardRef(({ className, inset, ...props }, ref) => /*
|
|
|
1402
1421
|
}
|
|
1403
1422
|
));
|
|
1404
1423
|
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
|
|
1405
|
-
var MenubarCheckboxItem =
|
|
1424
|
+
var MenubarCheckboxItem = React24.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1406
1425
|
MenubarPrimitive.CheckboxItem,
|
|
1407
1426
|
{
|
|
1408
1427
|
ref,
|
|
@@ -1419,7 +1438,7 @@ var MenubarCheckboxItem = React23.forwardRef(({ className, children, checked, ..
|
|
|
1419
1438
|
}
|
|
1420
1439
|
));
|
|
1421
1440
|
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
|
|
1422
|
-
var MenubarRadioItem =
|
|
1441
|
+
var MenubarRadioItem = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1423
1442
|
MenubarPrimitive.RadioItem,
|
|
1424
1443
|
{
|
|
1425
1444
|
ref,
|
|
@@ -1435,7 +1454,7 @@ var MenubarRadioItem = React23.forwardRef(({ className, children, ...props }, re
|
|
|
1435
1454
|
}
|
|
1436
1455
|
));
|
|
1437
1456
|
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
|
|
1438
|
-
var MenubarLabel =
|
|
1457
|
+
var MenubarLabel = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1439
1458
|
MenubarPrimitive.Label,
|
|
1440
1459
|
{
|
|
1441
1460
|
ref,
|
|
@@ -1448,7 +1467,7 @@ var MenubarLabel = React23.forwardRef(({ className, inset, ...props }, ref) => /
|
|
|
1448
1467
|
}
|
|
1449
1468
|
));
|
|
1450
1469
|
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
|
|
1451
|
-
var MenubarSeparator =
|
|
1470
|
+
var MenubarSeparator = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1452
1471
|
MenubarPrimitive.Separator,
|
|
1453
1472
|
{
|
|
1454
1473
|
ref,
|
|
@@ -1465,7 +1484,7 @@ var MenubarShortcut = ({
|
|
|
1465
1484
|
"span",
|
|
1466
1485
|
{
|
|
1467
1486
|
className: cn(
|
|
1468
|
-
"ml-auto text-
|
|
1487
|
+
"ml-auto text-sm tracking-widest text-muted-foreground",
|
|
1469
1488
|
className
|
|
1470
1489
|
),
|
|
1471
1490
|
...props
|
|
@@ -1473,7 +1492,7 @@ var MenubarShortcut = ({
|
|
|
1473
1492
|
);
|
|
1474
1493
|
};
|
|
1475
1494
|
MenubarShortcut.displayname = "MenubarShortcut";
|
|
1476
|
-
var NavigationMenu =
|
|
1495
|
+
var NavigationMenu = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1477
1496
|
NavigationMenuPrimitive.Root,
|
|
1478
1497
|
{
|
|
1479
1498
|
ref,
|
|
@@ -1489,7 +1508,7 @@ var NavigationMenu = React23.forwardRef(({ className, children, ...props }, ref)
|
|
|
1489
1508
|
}
|
|
1490
1509
|
));
|
|
1491
1510
|
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
|
|
1492
|
-
var NavigationMenuList =
|
|
1511
|
+
var NavigationMenuList = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1493
1512
|
NavigationMenuPrimitive.List,
|
|
1494
1513
|
{
|
|
1495
1514
|
ref,
|
|
@@ -1505,7 +1524,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
|
|
|
1505
1524
|
var navigationMenuTriggerStyle = cva(
|
|
1506
1525
|
"group inline-flex h-10 w-max items-center justify-center rounded-control bg-background px-4 py-2 font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
|
|
1507
1526
|
);
|
|
1508
|
-
var NavigationMenuTrigger =
|
|
1527
|
+
var NavigationMenuTrigger = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1509
1528
|
NavigationMenuPrimitive.Trigger,
|
|
1510
1529
|
{
|
|
1511
1530
|
ref,
|
|
@@ -1525,7 +1544,7 @@ var NavigationMenuTrigger = React23.forwardRef(({ className, children, ...props
|
|
|
1525
1544
|
}
|
|
1526
1545
|
));
|
|
1527
1546
|
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
|
|
1528
|
-
var NavigationMenuContent =
|
|
1547
|
+
var NavigationMenuContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1529
1548
|
NavigationMenuPrimitive.Content,
|
|
1530
1549
|
{
|
|
1531
1550
|
ref,
|
|
@@ -1538,7 +1557,7 @@ var NavigationMenuContent = React23.forwardRef(({ className, ...props }, ref) =>
|
|
|
1538
1557
|
));
|
|
1539
1558
|
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
|
|
1540
1559
|
var NavigationMenuLink = NavigationMenuPrimitive.Link;
|
|
1541
|
-
var NavigationMenuViewport =
|
|
1560
|
+
var NavigationMenuViewport = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
|
|
1542
1561
|
NavigationMenuPrimitive.Viewport,
|
|
1543
1562
|
{
|
|
1544
1563
|
className: cn(
|
|
@@ -1550,7 +1569,7 @@ var NavigationMenuViewport = React23.forwardRef(({ className, ...props }, ref) =
|
|
|
1550
1569
|
}
|
|
1551
1570
|
) }));
|
|
1552
1571
|
NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
|
|
1553
|
-
var NavigationMenuIndicator =
|
|
1572
|
+
var NavigationMenuIndicator = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1554
1573
|
NavigationMenuPrimitive.Indicator,
|
|
1555
1574
|
{
|
|
1556
1575
|
ref,
|
|
@@ -1573,7 +1592,7 @@ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
|
1573
1592
|
}
|
|
1574
1593
|
);
|
|
1575
1594
|
Pagination.displayName = "Pagination";
|
|
1576
|
-
var PaginationContent =
|
|
1595
|
+
var PaginationContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1577
1596
|
"ul",
|
|
1578
1597
|
{
|
|
1579
1598
|
ref,
|
|
@@ -1582,7 +1601,7 @@ var PaginationContent = React23.forwardRef(({ className, ...props }, ref) => /*
|
|
|
1582
1601
|
}
|
|
1583
1602
|
));
|
|
1584
1603
|
PaginationContent.displayName = "PaginationContent";
|
|
1585
|
-
var PaginationItem =
|
|
1604
|
+
var PaginationItem = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("li", { ref, className: cn("", className), ...props }));
|
|
1586
1605
|
PaginationItem.displayName = "PaginationItem";
|
|
1587
1606
|
var PaginationLink = ({
|
|
1588
1607
|
className,
|
|
@@ -1656,7 +1675,7 @@ var PaginationEllipsis = ({
|
|
|
1656
1675
|
PaginationEllipsis.displayName = "PaginationEllipsis";
|
|
1657
1676
|
var Popover = PopoverPrimitive.Root;
|
|
1658
1677
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1659
|
-
var PopoverContent =
|
|
1678
|
+
var PopoverContent = React24.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1660
1679
|
PopoverPrimitive.Content,
|
|
1661
1680
|
{
|
|
1662
1681
|
ref,
|
|
@@ -1670,7 +1689,7 @@ var PopoverContent = React23.forwardRef(({ className, align = "center", sideOffs
|
|
|
1670
1689
|
}
|
|
1671
1690
|
) }));
|
|
1672
1691
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
1673
|
-
var Progress =
|
|
1692
|
+
var Progress = React24.forwardRef(({ className, value, size = "default", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1674
1693
|
ProgressPrimitive.Root,
|
|
1675
1694
|
{
|
|
1676
1695
|
ref,
|
|
@@ -1714,7 +1733,7 @@ var ResizableHandle = ({
|
|
|
1714
1733
|
/* @__PURE__ */ jsx("div", { className: "z-10 h-6 w-[3px] rounded-full bg-muted-foreground/40" })
|
|
1715
1734
|
}
|
|
1716
1735
|
);
|
|
1717
|
-
var ScrollArea =
|
|
1736
|
+
var ScrollArea = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1718
1737
|
ScrollAreaPrimitive.Root,
|
|
1719
1738
|
{
|
|
1720
1739
|
ref,
|
|
@@ -1728,7 +1747,7 @@ var ScrollArea = React23.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
1728
1747
|
}
|
|
1729
1748
|
));
|
|
1730
1749
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
1731
|
-
var ScrollBar =
|
|
1750
|
+
var ScrollBar = React24.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1732
1751
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
1733
1752
|
{
|
|
1734
1753
|
ref,
|
|
@@ -1748,7 +1767,7 @@ var Sheet = DialogPrimitive.Root;
|
|
|
1748
1767
|
var SheetTrigger = DialogPrimitive.Trigger;
|
|
1749
1768
|
var SheetClose = DialogPrimitive.Close;
|
|
1750
1769
|
var SheetPortal = DialogPrimitive.Portal;
|
|
1751
|
-
var SheetOverlay =
|
|
1770
|
+
var SheetOverlay = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1752
1771
|
DialogPrimitive.Overlay,
|
|
1753
1772
|
{
|
|
1754
1773
|
className: cn(
|
|
@@ -1776,7 +1795,7 @@ var sheetVariants = cva(
|
|
|
1776
1795
|
}
|
|
1777
1796
|
}
|
|
1778
1797
|
);
|
|
1779
|
-
var SheetContent =
|
|
1798
|
+
var SheetContent = React24.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
1780
1799
|
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
1781
1800
|
/* @__PURE__ */ jsxs(
|
|
1782
1801
|
DialogPrimitive.Content,
|
|
@@ -1823,7 +1842,7 @@ var SheetFooter = ({
|
|
|
1823
1842
|
}
|
|
1824
1843
|
);
|
|
1825
1844
|
SheetFooter.displayName = "SheetFooter";
|
|
1826
|
-
var SheetTitle =
|
|
1845
|
+
var SheetTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1827
1846
|
DialogPrimitive.Title,
|
|
1828
1847
|
{
|
|
1829
1848
|
ref,
|
|
@@ -1832,7 +1851,7 @@ var SheetTitle = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
1832
1851
|
}
|
|
1833
1852
|
));
|
|
1834
1853
|
SheetTitle.displayName = DialogPrimitive.Title.displayName;
|
|
1835
|
-
var SheetDescription =
|
|
1854
|
+
var SheetDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1836
1855
|
DialogPrimitive.Description,
|
|
1837
1856
|
{
|
|
1838
1857
|
ref,
|
|
@@ -1843,8 +1862,8 @@ var SheetDescription = React23.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
1843
1862
|
SheetDescription.displayName = DialogPrimitive.Description.displayName;
|
|
1844
1863
|
var MOBILE_BREAKPOINT = 768;
|
|
1845
1864
|
function useIsMobile() {
|
|
1846
|
-
const [isMobile, setIsMobile] =
|
|
1847
|
-
|
|
1865
|
+
const [isMobile, setIsMobile] = React24.useState(void 0);
|
|
1866
|
+
React24.useEffect(() => {
|
|
1848
1867
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
1849
1868
|
const onChange = () => {
|
|
1850
1869
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -1870,7 +1889,7 @@ function Skeleton({
|
|
|
1870
1889
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
1871
1890
|
var Tooltip = TooltipPrimitive.Root;
|
|
1872
1891
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
1873
|
-
var TooltipContent =
|
|
1892
|
+
var TooltipContent = React24.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1874
1893
|
TooltipPrimitive.Content,
|
|
1875
1894
|
{
|
|
1876
1895
|
ref,
|
|
@@ -1889,15 +1908,15 @@ var SIDEBAR_WIDTH = "16rem";
|
|
|
1889
1908
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
1890
1909
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
1891
1910
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
1892
|
-
var SidebarContext =
|
|
1911
|
+
var SidebarContext = React24.createContext(null);
|
|
1893
1912
|
function useSidebar() {
|
|
1894
|
-
const context =
|
|
1913
|
+
const context = React24.useContext(SidebarContext);
|
|
1895
1914
|
if (!context) {
|
|
1896
1915
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
1897
1916
|
}
|
|
1898
1917
|
return context;
|
|
1899
1918
|
}
|
|
1900
|
-
var SidebarProvider =
|
|
1919
|
+
var SidebarProvider = React24.forwardRef(
|
|
1901
1920
|
({
|
|
1902
1921
|
defaultOpen = true,
|
|
1903
1922
|
open: openProp,
|
|
@@ -1908,10 +1927,10 @@ var SidebarProvider = React23.forwardRef(
|
|
|
1908
1927
|
...props
|
|
1909
1928
|
}, ref) => {
|
|
1910
1929
|
const isMobile = useIsMobile();
|
|
1911
|
-
const [openMobile, setOpenMobile] =
|
|
1912
|
-
const [_open, _setOpen] =
|
|
1930
|
+
const [openMobile, setOpenMobile] = React24.useState(false);
|
|
1931
|
+
const [_open, _setOpen] = React24.useState(defaultOpen);
|
|
1913
1932
|
const open = openProp ?? _open;
|
|
1914
|
-
const setOpen =
|
|
1933
|
+
const setOpen = React24.useCallback(
|
|
1915
1934
|
(value) => {
|
|
1916
1935
|
const openState = typeof value === "function" ? value(open) : value;
|
|
1917
1936
|
if (setOpenProp) {
|
|
@@ -1923,10 +1942,10 @@ var SidebarProvider = React23.forwardRef(
|
|
|
1923
1942
|
},
|
|
1924
1943
|
[setOpenProp, open]
|
|
1925
1944
|
);
|
|
1926
|
-
const toggleSidebar =
|
|
1945
|
+
const toggleSidebar = React24.useCallback(() => {
|
|
1927
1946
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
1928
1947
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
1929
|
-
|
|
1948
|
+
React24.useEffect(() => {
|
|
1930
1949
|
const handleKeyDown = (event) => {
|
|
1931
1950
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
1932
1951
|
event.preventDefault();
|
|
@@ -1937,7 +1956,7 @@ var SidebarProvider = React23.forwardRef(
|
|
|
1937
1956
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
1938
1957
|
}, [toggleSidebar]);
|
|
1939
1958
|
const state = open ? "expanded" : "collapsed";
|
|
1940
|
-
const contextValue =
|
|
1959
|
+
const contextValue = React24.useMemo(
|
|
1941
1960
|
() => ({
|
|
1942
1961
|
state,
|
|
1943
1962
|
open,
|
|
@@ -1969,7 +1988,7 @@ var SidebarProvider = React23.forwardRef(
|
|
|
1969
1988
|
}
|
|
1970
1989
|
);
|
|
1971
1990
|
SidebarProvider.displayName = "SidebarProvider";
|
|
1972
|
-
var Sidebar =
|
|
1991
|
+
var Sidebar = React24.forwardRef(
|
|
1973
1992
|
({
|
|
1974
1993
|
side = "left",
|
|
1975
1994
|
variant = "sidebar",
|
|
@@ -2062,7 +2081,7 @@ var Sidebar = React23.forwardRef(
|
|
|
2062
2081
|
}
|
|
2063
2082
|
);
|
|
2064
2083
|
Sidebar.displayName = "Sidebar";
|
|
2065
|
-
var SidebarTrigger =
|
|
2084
|
+
var SidebarTrigger = React24.forwardRef(({ className, onClick, ...props }, ref) => {
|
|
2066
2085
|
const { toggleSidebar } = useSidebar();
|
|
2067
2086
|
return /* @__PURE__ */ jsxs(
|
|
2068
2087
|
Button,
|
|
@@ -2085,7 +2104,7 @@ var SidebarTrigger = React23.forwardRef(({ className, onClick, ...props }, ref)
|
|
|
2085
2104
|
);
|
|
2086
2105
|
});
|
|
2087
2106
|
SidebarTrigger.displayName = "SidebarTrigger";
|
|
2088
|
-
var SidebarRail =
|
|
2107
|
+
var SidebarRail = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2089
2108
|
const { toggleSidebar } = useSidebar();
|
|
2090
2109
|
return /* @__PURE__ */ jsx(
|
|
2091
2110
|
"button",
|
|
@@ -2110,7 +2129,7 @@ var SidebarRail = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2110
2129
|
);
|
|
2111
2130
|
});
|
|
2112
2131
|
SidebarRail.displayName = "SidebarRail";
|
|
2113
|
-
var SidebarInset =
|
|
2132
|
+
var SidebarInset = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2114
2133
|
return /* @__PURE__ */ jsx(
|
|
2115
2134
|
"main",
|
|
2116
2135
|
{
|
|
@@ -2125,7 +2144,7 @@ var SidebarInset = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2125
2144
|
);
|
|
2126
2145
|
});
|
|
2127
2146
|
SidebarInset.displayName = "SidebarInset";
|
|
2128
|
-
var SidebarInput =
|
|
2147
|
+
var SidebarInput = React24.forwardRef(({ className, type, ...props }, ref) => {
|
|
2129
2148
|
return /* @__PURE__ */ jsx(
|
|
2130
2149
|
"input",
|
|
2131
2150
|
{
|
|
@@ -2143,7 +2162,7 @@ var SidebarInput = React23.forwardRef(({ className, type, ...props }, ref) => {
|
|
|
2143
2162
|
);
|
|
2144
2163
|
});
|
|
2145
2164
|
SidebarInput.displayName = "SidebarInput";
|
|
2146
|
-
var SidebarHeader =
|
|
2165
|
+
var SidebarHeader = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2147
2166
|
return /* @__PURE__ */ jsx(
|
|
2148
2167
|
"div",
|
|
2149
2168
|
{
|
|
@@ -2155,7 +2174,7 @@ var SidebarHeader = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2155
2174
|
);
|
|
2156
2175
|
});
|
|
2157
2176
|
SidebarHeader.displayName = "SidebarHeader";
|
|
2158
|
-
var SidebarFooter =
|
|
2177
|
+
var SidebarFooter = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2159
2178
|
return /* @__PURE__ */ jsx(
|
|
2160
2179
|
"div",
|
|
2161
2180
|
{
|
|
@@ -2167,7 +2186,7 @@ var SidebarFooter = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2167
2186
|
);
|
|
2168
2187
|
});
|
|
2169
2188
|
SidebarFooter.displayName = "SidebarFooter";
|
|
2170
|
-
var SidebarSeparator =
|
|
2189
|
+
var SidebarSeparator = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2171
2190
|
return /* @__PURE__ */ jsx(
|
|
2172
2191
|
Separator,
|
|
2173
2192
|
{
|
|
@@ -2179,7 +2198,7 @@ var SidebarSeparator = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2179
2198
|
);
|
|
2180
2199
|
});
|
|
2181
2200
|
SidebarSeparator.displayName = "SidebarSeparator";
|
|
2182
|
-
var SidebarContent =
|
|
2201
|
+
var SidebarContent = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2183
2202
|
return /* @__PURE__ */ jsx(
|
|
2184
2203
|
"div",
|
|
2185
2204
|
{
|
|
@@ -2194,7 +2213,7 @@ var SidebarContent = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2194
2213
|
);
|
|
2195
2214
|
});
|
|
2196
2215
|
SidebarContent.displayName = "SidebarContent";
|
|
2197
|
-
var SidebarGroup =
|
|
2216
|
+
var SidebarGroup = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2198
2217
|
return /* @__PURE__ */ jsx(
|
|
2199
2218
|
"div",
|
|
2200
2219
|
{
|
|
@@ -2206,7 +2225,7 @@ var SidebarGroup = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2206
2225
|
);
|
|
2207
2226
|
});
|
|
2208
2227
|
SidebarGroup.displayName = "SidebarGroup";
|
|
2209
|
-
var SidebarGroupLabel =
|
|
2228
|
+
var SidebarGroupLabel = React24.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
2210
2229
|
const Comp = asChild ? Slot : "div";
|
|
2211
2230
|
return /* @__PURE__ */ jsx(
|
|
2212
2231
|
Comp,
|
|
@@ -2214,7 +2233,7 @@ var SidebarGroupLabel = React23.forwardRef(({ className, asChild = false, ...pro
|
|
|
2214
2233
|
ref,
|
|
2215
2234
|
"data-sidebar": "group-label",
|
|
2216
2235
|
className: cn(
|
|
2217
|
-
"flex h-8 shrink-0 items-center rounded-md px-2 text-
|
|
2236
|
+
"flex h-8 shrink-0 items-center rounded-md px-2 text-sm font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
2218
2237
|
"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
|
|
2219
2238
|
className
|
|
2220
2239
|
),
|
|
@@ -2223,7 +2242,7 @@ var SidebarGroupLabel = React23.forwardRef(({ className, asChild = false, ...pro
|
|
|
2223
2242
|
);
|
|
2224
2243
|
});
|
|
2225
2244
|
SidebarGroupLabel.displayName = "SidebarGroupLabel";
|
|
2226
|
-
var SidebarGroupAction =
|
|
2245
|
+
var SidebarGroupAction = React24.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
2227
2246
|
const Comp = asChild ? Slot : "button";
|
|
2228
2247
|
return /* @__PURE__ */ jsx(
|
|
2229
2248
|
Comp,
|
|
@@ -2242,7 +2261,7 @@ var SidebarGroupAction = React23.forwardRef(({ className, asChild = false, ...pr
|
|
|
2242
2261
|
);
|
|
2243
2262
|
});
|
|
2244
2263
|
SidebarGroupAction.displayName = "SidebarGroupAction";
|
|
2245
|
-
var SidebarGroupContent =
|
|
2264
|
+
var SidebarGroupContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2246
2265
|
"div",
|
|
2247
2266
|
{
|
|
2248
2267
|
ref,
|
|
@@ -2252,7 +2271,7 @@ var SidebarGroupContent = React23.forwardRef(({ className, ...props }, ref) => /
|
|
|
2252
2271
|
}
|
|
2253
2272
|
));
|
|
2254
2273
|
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
2255
|
-
var SidebarMenu =
|
|
2274
|
+
var SidebarMenu = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2256
2275
|
"ul",
|
|
2257
2276
|
{
|
|
2258
2277
|
ref,
|
|
@@ -2262,7 +2281,7 @@ var SidebarMenu = React23.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2262
2281
|
}
|
|
2263
2282
|
));
|
|
2264
2283
|
SidebarMenu.displayName = "SidebarMenu";
|
|
2265
|
-
var SidebarMenuItem =
|
|
2284
|
+
var SidebarMenuItem = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2266
2285
|
"li",
|
|
2267
2286
|
{
|
|
2268
2287
|
ref,
|
|
@@ -2292,7 +2311,7 @@ var sidebarMenuButtonVariants = cva(
|
|
|
2292
2311
|
}
|
|
2293
2312
|
}
|
|
2294
2313
|
);
|
|
2295
|
-
var SidebarMenuButton =
|
|
2314
|
+
var SidebarMenuButton = React24.forwardRef(
|
|
2296
2315
|
({
|
|
2297
2316
|
asChild = false,
|
|
2298
2317
|
isActive = false,
|
|
@@ -2338,7 +2357,7 @@ var SidebarMenuButton = React23.forwardRef(
|
|
|
2338
2357
|
}
|
|
2339
2358
|
);
|
|
2340
2359
|
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
2341
|
-
var SidebarMenuAction =
|
|
2360
|
+
var SidebarMenuAction = React24.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
|
|
2342
2361
|
const Comp = asChild ? Slot : "button";
|
|
2343
2362
|
return /* @__PURE__ */ jsx(
|
|
2344
2363
|
Comp,
|
|
@@ -2361,13 +2380,13 @@ var SidebarMenuAction = React23.forwardRef(({ className, asChild = false, showOn
|
|
|
2361
2380
|
);
|
|
2362
2381
|
});
|
|
2363
2382
|
SidebarMenuAction.displayName = "SidebarMenuAction";
|
|
2364
|
-
var SidebarMenuBadge =
|
|
2383
|
+
var SidebarMenuBadge = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2365
2384
|
"div",
|
|
2366
2385
|
{
|
|
2367
2386
|
ref,
|
|
2368
2387
|
"data-sidebar": "menu-badge",
|
|
2369
2388
|
className: cn(
|
|
2370
|
-
"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-
|
|
2389
|
+
"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-sm font-medium tabular-nums text-sidebar-foreground",
|
|
2371
2390
|
"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
|
|
2372
2391
|
"peer-data-[size=sm]/menu-button:top-1",
|
|
2373
2392
|
"peer-data-[size=default]/menu-button:top-1.5",
|
|
@@ -2379,8 +2398,8 @@ var SidebarMenuBadge = React23.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
2379
2398
|
}
|
|
2380
2399
|
));
|
|
2381
2400
|
SidebarMenuBadge.displayName = "SidebarMenuBadge";
|
|
2382
|
-
var SidebarMenuSkeleton =
|
|
2383
|
-
const width =
|
|
2401
|
+
var SidebarMenuSkeleton = React24.forwardRef(({ className, showIcon = false, ...props }, ref) => {
|
|
2402
|
+
const width = React24.useMemo(() => {
|
|
2384
2403
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
2385
2404
|
}, []);
|
|
2386
2405
|
return /* @__PURE__ */ jsxs(
|
|
@@ -2413,7 +2432,7 @@ var SidebarMenuSkeleton = React23.forwardRef(({ className, showIcon = false, ...
|
|
|
2413
2432
|
);
|
|
2414
2433
|
});
|
|
2415
2434
|
SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
|
|
2416
|
-
var SidebarMenuSub =
|
|
2435
|
+
var SidebarMenuSub = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2417
2436
|
"ul",
|
|
2418
2437
|
{
|
|
2419
2438
|
ref,
|
|
@@ -2427,9 +2446,9 @@ var SidebarMenuSub = React23.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
2427
2446
|
}
|
|
2428
2447
|
));
|
|
2429
2448
|
SidebarMenuSub.displayName = "SidebarMenuSub";
|
|
2430
|
-
var SidebarMenuSubItem =
|
|
2449
|
+
var SidebarMenuSubItem = React24.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("li", { ref, ...props }));
|
|
2431
2450
|
SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
|
|
2432
|
-
var SidebarMenuSubButton =
|
|
2451
|
+
var SidebarMenuSubButton = React24.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
|
|
2433
2452
|
const Comp = asChild ? Slot : "a";
|
|
2434
2453
|
return /* @__PURE__ */ jsx(
|
|
2435
2454
|
Comp,
|
|
@@ -2531,7 +2550,7 @@ var statusDotVariants = cva("inline-block shrink-0 rounded-full", {
|
|
|
2531
2550
|
size: "sm"
|
|
2532
2551
|
}
|
|
2533
2552
|
});
|
|
2534
|
-
var StatusDot =
|
|
2553
|
+
var StatusDot = React24.forwardRef(
|
|
2535
2554
|
({ className, tone, size, label, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2536
2555
|
"span",
|
|
2537
2556
|
{
|
|
@@ -2545,7 +2564,7 @@ var StatusDot = React23.forwardRef(
|
|
|
2545
2564
|
)
|
|
2546
2565
|
);
|
|
2547
2566
|
StatusDot.displayName = "StatusDot";
|
|
2548
|
-
var Table =
|
|
2567
|
+
var Table = React24.forwardRef(({ className, density = "default", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2549
2568
|
"div",
|
|
2550
2569
|
{
|
|
2551
2570
|
"data-density": density,
|
|
@@ -2561,9 +2580,9 @@ var Table = React23.forwardRef(({ className, density = "default", ...props }, re
|
|
|
2561
2580
|
}
|
|
2562
2581
|
));
|
|
2563
2582
|
Table.displayName = "Table";
|
|
2564
|
-
var TableHeader =
|
|
2583
|
+
var TableHeader = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
|
|
2565
2584
|
TableHeader.displayName = "TableHeader";
|
|
2566
|
-
var TableBody =
|
|
2585
|
+
var TableBody = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2567
2586
|
"tbody",
|
|
2568
2587
|
{
|
|
2569
2588
|
ref,
|
|
@@ -2572,7 +2591,7 @@ var TableBody = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
2572
2591
|
}
|
|
2573
2592
|
));
|
|
2574
2593
|
TableBody.displayName = "TableBody";
|
|
2575
|
-
var TableFooter =
|
|
2594
|
+
var TableFooter = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2576
2595
|
"tfoot",
|
|
2577
2596
|
{
|
|
2578
2597
|
ref,
|
|
@@ -2584,7 +2603,7 @@ var TableFooter = React23.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2584
2603
|
}
|
|
2585
2604
|
));
|
|
2586
2605
|
TableFooter.displayName = "TableFooter";
|
|
2587
|
-
var TableRow =
|
|
2606
|
+
var TableRow = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2588
2607
|
"tr",
|
|
2589
2608
|
{
|
|
2590
2609
|
ref,
|
|
@@ -2596,7 +2615,7 @@ var TableRow = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
2596
2615
|
}
|
|
2597
2616
|
));
|
|
2598
2617
|
TableRow.displayName = "TableRow";
|
|
2599
|
-
var TableHead =
|
|
2618
|
+
var TableHead = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2600
2619
|
"th",
|
|
2601
2620
|
{
|
|
2602
2621
|
ref,
|
|
@@ -2606,14 +2625,14 @@ var TableHead = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
2606
2625
|
// every cell follows from there. One prop on the table rather than a
|
|
2607
2626
|
// size on <TableHead> and <TableCell> individually — four places to
|
|
2608
2627
|
// forget, and a table with two densities in it is always a mistake.
|
|
2609
|
-
"group-data-[density=compact]/table:h-[26px] group-data-[density=compact]/table:text-
|
|
2628
|
+
"group-data-[density=compact]/table:h-[26px] group-data-[density=compact]/table:text-sm",
|
|
2610
2629
|
className
|
|
2611
2630
|
),
|
|
2612
2631
|
...props
|
|
2613
2632
|
}
|
|
2614
2633
|
));
|
|
2615
2634
|
TableHead.displayName = "TableHead";
|
|
2616
|
-
var TableCell =
|
|
2635
|
+
var TableCell = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2617
2636
|
"td",
|
|
2618
2637
|
{
|
|
2619
2638
|
ref,
|
|
@@ -2626,7 +2645,7 @@ var TableCell = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
2626
2645
|
}
|
|
2627
2646
|
));
|
|
2628
2647
|
TableCell.displayName = "TableCell";
|
|
2629
|
-
var TableCaption =
|
|
2648
|
+
var TableCaption = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2630
2649
|
"caption",
|
|
2631
2650
|
{
|
|
2632
2651
|
ref,
|
|
@@ -2635,11 +2654,11 @@ var TableCaption = React23.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
2635
2654
|
}
|
|
2636
2655
|
));
|
|
2637
2656
|
TableCaption.displayName = "TableCaption";
|
|
2638
|
-
var TabsSizeContext =
|
|
2639
|
-
var Tabs =
|
|
2657
|
+
var TabsSizeContext = React24.createContext("default");
|
|
2658
|
+
var Tabs = React24.forwardRef(({ size = "default", ...props }, ref) => /* @__PURE__ */ jsx(TabsSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, ...props }) }));
|
|
2640
2659
|
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
2641
|
-
var TabsList =
|
|
2642
|
-
const size =
|
|
2660
|
+
var TabsList = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2661
|
+
const size = React24.useContext(TabsSizeContext);
|
|
2643
2662
|
return /* @__PURE__ */ jsx(
|
|
2644
2663
|
TabsPrimitive.List,
|
|
2645
2664
|
{
|
|
@@ -2654,14 +2673,14 @@ var TabsList = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2654
2673
|
);
|
|
2655
2674
|
});
|
|
2656
2675
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
2657
|
-
var TabsTrigger =
|
|
2658
|
-
const size =
|
|
2676
|
+
var TabsTrigger = React24.forwardRef(({ className, ...props }, ref) => {
|
|
2677
|
+
const size = React24.useContext(TabsSizeContext);
|
|
2659
2678
|
return /* @__PURE__ */ jsx(
|
|
2660
2679
|
TabsPrimitive.Trigger,
|
|
2661
2680
|
{
|
|
2662
2681
|
ref,
|
|
2663
2682
|
className: cn(
|
|
2664
|
-
size === "sm" ? "h-[26px] px-2 text-
|
|
2683
|
+
size === "sm" ? "h-[26px] px-2 text-sm" : "px-3 py-1",
|
|
2665
2684
|
"inline-flex items-center justify-center whitespace-nowrap rounded-control font-medium ring-offset-background transition-colors text-muted-foreground hover:text-foreground hover:bg-background/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-primary/15 data-[state=active]:text-primary data-[state=active]:ring-1 data-[state=active]:ring-primary/25 data-[state=active]:shadow-sm",
|
|
2666
2685
|
className
|
|
2667
2686
|
),
|
|
@@ -2670,7 +2689,7 @@ var TabsTrigger = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2670
2689
|
);
|
|
2671
2690
|
});
|
|
2672
2691
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
2673
|
-
var TabsContent =
|
|
2692
|
+
var TabsContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2674
2693
|
TabsPrimitive.Content,
|
|
2675
2694
|
{
|
|
2676
2695
|
ref,
|
|
@@ -2702,7 +2721,7 @@ var toggleVariants = cva(
|
|
|
2702
2721
|
}
|
|
2703
2722
|
}
|
|
2704
2723
|
);
|
|
2705
|
-
var Toggle =
|
|
2724
|
+
var Toggle = React24.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2706
2725
|
TogglePrimitive.Root,
|
|
2707
2726
|
{
|
|
2708
2727
|
ref,
|
|
@@ -2711,11 +2730,11 @@ var Toggle = React23.forwardRef(({ className, variant, size, ...props }, ref) =>
|
|
|
2711
2730
|
}
|
|
2712
2731
|
));
|
|
2713
2732
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
2714
|
-
var ToggleGroupContext =
|
|
2733
|
+
var ToggleGroupContext = React24.createContext({
|
|
2715
2734
|
size: "default",
|
|
2716
2735
|
variant: "default"
|
|
2717
2736
|
});
|
|
2718
|
-
var ToggleGroup =
|
|
2737
|
+
var ToggleGroup = React24.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2719
2738
|
ToggleGroupPrimitive.Root,
|
|
2720
2739
|
{
|
|
2721
2740
|
ref,
|
|
@@ -2725,8 +2744,8 @@ var ToggleGroup = React23.forwardRef(({ className, variant, size, children, ...p
|
|
|
2725
2744
|
}
|
|
2726
2745
|
));
|
|
2727
2746
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
2728
|
-
var ToggleGroupItem =
|
|
2729
|
-
const context =
|
|
2747
|
+
var ToggleGroupItem = React24.forwardRef(({ className, children, variant, size, ...props }, ref) => {
|
|
2748
|
+
const context = React24.useContext(ToggleGroupContext);
|
|
2730
2749
|
return /* @__PURE__ */ jsx(
|
|
2731
2750
|
ToggleGroupPrimitive.Item,
|
|
2732
2751
|
{
|
|
@@ -2744,8 +2763,64 @@ var ToggleGroupItem = React23.forwardRef(({ className, children, variant, size,
|
|
|
2744
2763
|
);
|
|
2745
2764
|
});
|
|
2746
2765
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
2766
|
+
var TONE = {
|
|
2767
|
+
allowed: "text-foreground",
|
|
2768
|
+
denied: "text-destructive",
|
|
2769
|
+
refused: "text-destructive line-through decoration-destructive/50",
|
|
2770
|
+
untouched: "text-muted-foreground/70"
|
|
2771
|
+
};
|
|
2772
|
+
function split(address) {
|
|
2773
|
+
const cut = address.lastIndexOf("/");
|
|
2774
|
+
if (cut < 0) return { head: "", tail: address };
|
|
2775
|
+
return { head: address.slice(0, cut + 1), tail: address.slice(cut + 1) };
|
|
2776
|
+
}
|
|
2777
|
+
var AddressChip = React24.forwardRef(
|
|
2778
|
+
({ address, tone = "allowed", onOpen, className, ...props }, ref) => {
|
|
2779
|
+
const { head, tail } = split(address);
|
|
2780
|
+
const body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2781
|
+
head ? (
|
|
2782
|
+
// `shrink-[999]` makes the head absorb essentially all the shrink, so
|
|
2783
|
+
// the kind gives way before the participant does — but the floor is
|
|
2784
|
+
// `2ch`, never `0`. A head that collapses to nothing renders
|
|
2785
|
+
// `graph_data/stitch/route_airport@…` as `route_airport@…`, which
|
|
2786
|
+
// reads as a whole address, and two different participants can come
|
|
2787
|
+
// out identical.
|
|
2788
|
+
//
|
|
2789
|
+
// Exactly two: `text-overflow` draws the ellipsis only when it fits,
|
|
2790
|
+
// so at `1ch` the browser keeps the raw first character and drops the
|
|
2791
|
+
// marker — `groute_airport@…`, a word that was never there. Two is
|
|
2792
|
+
// one character plus the ellipsis, which is the narrowest honest
|
|
2793
|
+
// truncation. Every `ch` above that is one the participant loses.
|
|
2794
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-[2ch] shrink-[999] truncate opacity-60", children: head })
|
|
2795
|
+
) : null,
|
|
2796
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 shrink truncate", children: tail })
|
|
2797
|
+
] });
|
|
2798
|
+
const shell = cn(
|
|
2799
|
+
"inline-flex min-w-0 max-w-full items-baseline font-mono text-sm",
|
|
2800
|
+
TONE[tone] ?? "text-foreground",
|
|
2801
|
+
className
|
|
2802
|
+
);
|
|
2803
|
+
if (onOpen) {
|
|
2804
|
+
return /* @__PURE__ */ jsx("span", { ref, className: cn(shell, "min-w-0"), ...props, children: /* @__PURE__ */ jsx(
|
|
2805
|
+
"button",
|
|
2806
|
+
{
|
|
2807
|
+
type: "button",
|
|
2808
|
+
title: address,
|
|
2809
|
+
onClick: () => onOpen(address),
|
|
2810
|
+
className: cn(
|
|
2811
|
+
"inline-flex min-w-0 max-w-full cursor-pointer items-baseline rounded-control",
|
|
2812
|
+
"hover:underline focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
2813
|
+
),
|
|
2814
|
+
children: body
|
|
2815
|
+
}
|
|
2816
|
+
) });
|
|
2817
|
+
}
|
|
2818
|
+
return /* @__PURE__ */ jsx("span", { ref, title: address, className: shell, ...props, children: body });
|
|
2819
|
+
}
|
|
2820
|
+
);
|
|
2821
|
+
AddressChip.displayName = "AddressChip";
|
|
2747
2822
|
var agentChipVariants = cva(
|
|
2748
|
-
"inline-flex max-w-full shrink-0 items-center gap-1 rounded-control border px-1.5 text-
|
|
2823
|
+
"inline-flex max-w-full shrink-0 items-center gap-1 rounded-control border px-1.5 text-sm [&_svg]:size-3 [&_svg]:shrink-0",
|
|
2749
2824
|
{
|
|
2750
2825
|
variants: {
|
|
2751
2826
|
/**
|
|
@@ -2766,7 +2841,7 @@ var agentChipVariants = cva(
|
|
|
2766
2841
|
defaultVariants: { kind: "agent", inactive: false }
|
|
2767
2842
|
}
|
|
2768
2843
|
);
|
|
2769
|
-
var AgentChip =
|
|
2844
|
+
var AgentChip = React24.forwardRef(
|
|
2770
2845
|
({ icon, name, kind, inactive, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2771
2846
|
"span",
|
|
2772
2847
|
{
|
|
@@ -2781,36 +2856,6 @@ var AgentChip = React23.forwardRef(
|
|
|
2781
2856
|
)
|
|
2782
2857
|
);
|
|
2783
2858
|
AgentChip.displayName = "AgentChip";
|
|
2784
|
-
var SWATCH = {
|
|
2785
|
-
none: "bg-muted-foreground",
|
|
2786
|
-
network: "bg-warning",
|
|
2787
|
-
graph_read: "bg-success",
|
|
2788
|
-
graph_write: "bg-data-2",
|
|
2789
|
-
schema_write: "bg-data-4",
|
|
2790
|
-
ingest: "bg-info",
|
|
2791
|
-
llm: "bg-data-7",
|
|
2792
|
-
plan_write: "bg-data-5",
|
|
2793
|
-
work_write: "bg-destructive"
|
|
2794
|
-
};
|
|
2795
|
-
var BoundChip = React23.forwardRef(
|
|
2796
|
-
({ bound, swatchOnly, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2797
|
-
"span",
|
|
2798
|
-
{
|
|
2799
|
-
ref,
|
|
2800
|
-
className: cn(
|
|
2801
|
-
"inline-flex max-w-full shrink-0 items-center gap-1.5 font-mono text-meta text-muted-foreground",
|
|
2802
|
-
className
|
|
2803
|
-
),
|
|
2804
|
-
"aria-label": swatchOnly ? `bound: ${bound}` : void 0,
|
|
2805
|
-
...props,
|
|
2806
|
-
children: [
|
|
2807
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cn("size-1.5 shrink-0", SWATCH[bound]) }),
|
|
2808
|
-
swatchOnly ? null : /* @__PURE__ */ jsx("span", { className: "truncate", children: bound })
|
|
2809
|
-
]
|
|
2810
|
-
}
|
|
2811
|
-
)
|
|
2812
|
-
);
|
|
2813
|
-
BoundChip.displayName = "BoundChip";
|
|
2814
2859
|
var stateVariants = cva("inline-flex shrink-0 items-center gap-1.5 font-medium", {
|
|
2815
2860
|
variants: {
|
|
2816
2861
|
tone: {
|
|
@@ -2823,13 +2868,13 @@ var stateVariants = cva("inline-flex shrink-0 items-center gap-1.5 font-medium",
|
|
|
2823
2868
|
},
|
|
2824
2869
|
defaultVariants: { tone: "active" }
|
|
2825
2870
|
});
|
|
2826
|
-
var AppStatusBar =
|
|
2871
|
+
var AppStatusBar = React24.forwardRef(
|
|
2827
2872
|
({ state, tone, end, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2828
2873
|
"div",
|
|
2829
2874
|
{
|
|
2830
2875
|
ref,
|
|
2831
2876
|
className: cn(
|
|
2832
|
-
"flex h-[25px] shrink-0 items-center gap-2 border-t border-border px-2 text-
|
|
2877
|
+
"flex h-[25px] shrink-0 items-center gap-2 border-t border-border px-2 text-sm text-muted-foreground",
|
|
2833
2878
|
className
|
|
2834
2879
|
),
|
|
2835
2880
|
...props,
|
|
@@ -2851,7 +2896,7 @@ var AppStatusBar = React23.forwardRef(
|
|
|
2851
2896
|
)
|
|
2852
2897
|
);
|
|
2853
2898
|
AppStatusBar.displayName = "AppStatusBar";
|
|
2854
|
-
var BarChartH =
|
|
2899
|
+
var BarChartH = React24.forwardRef(
|
|
2855
2900
|
({
|
|
2856
2901
|
data,
|
|
2857
2902
|
max,
|
|
@@ -2863,12 +2908,12 @@ var BarChartH = React23.forwardRef(
|
|
|
2863
2908
|
}, ref) => {
|
|
2864
2909
|
const ceiling = max ?? (Math.max(...data.map((d) => d.value), 0) || 1);
|
|
2865
2910
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
|
|
2866
|
-
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
2911
|
+
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: caption }) : null,
|
|
2867
2912
|
data.map((d, i) => /* @__PURE__ */ jsxs("div", { className: "flex h-4 items-center gap-2", children: [
|
|
2868
2913
|
/* @__PURE__ */ jsx(
|
|
2869
2914
|
"span",
|
|
2870
2915
|
{
|
|
2871
|
-
className: "shrink-0 truncate text-
|
|
2916
|
+
className: "shrink-0 truncate text-sm text-muted-foreground",
|
|
2872
2917
|
style: { width: labelWidth },
|
|
2873
2918
|
children: d.label
|
|
2874
2919
|
}
|
|
@@ -2885,14 +2930,14 @@ var BarChartH = React23.forwardRef(
|
|
|
2885
2930
|
}
|
|
2886
2931
|
}
|
|
2887
2932
|
),
|
|
2888
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
2933
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm tabular-nums", children: d.display ?? d.value })
|
|
2889
2934
|
] })
|
|
2890
2935
|
] }, i))
|
|
2891
2936
|
] });
|
|
2892
2937
|
}
|
|
2893
2938
|
);
|
|
2894
2939
|
BarChartH.displayName = "BarChartH";
|
|
2895
|
-
var BarChartV =
|
|
2940
|
+
var BarChartV = React24.forwardRef(
|
|
2896
2941
|
({
|
|
2897
2942
|
data,
|
|
2898
2943
|
max,
|
|
@@ -2910,7 +2955,7 @@ var BarChartV = React23.forwardRef(
|
|
|
2910
2955
|
const emphasis = highlightIndex ?? data.length - 1;
|
|
2911
2956
|
const labelled = (i) => labelMode === "all" || labelMode === "last" && i === emphasis;
|
|
2912
2957
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
|
|
2913
|
-
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
2958
|
+
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: caption }) : null,
|
|
2914
2959
|
/* @__PURE__ */ jsxs("div", { className: "relative mt-2", style: { height }, children: [
|
|
2915
2960
|
gridlines.map((g) => /* @__PURE__ */ jsxs(
|
|
2916
2961
|
"div",
|
|
@@ -2920,7 +2965,7 @@ var BarChartV = React23.forwardRef(
|
|
|
2920
2965
|
style: { bottom: `${g / ceiling * 100}%` },
|
|
2921
2966
|
children: [
|
|
2922
2967
|
/* @__PURE__ */ jsx("span", { className: "h-px flex-1 bg-border" }),
|
|
2923
|
-
/* @__PURE__ */ jsx("span", { className: "pl-1 text-
|
|
2968
|
+
/* @__PURE__ */ jsx("span", { className: "pl-1 text-sm tabular-nums text-muted-foreground", children: g })
|
|
2924
2969
|
]
|
|
2925
2970
|
},
|
|
2926
2971
|
g
|
|
@@ -2930,7 +2975,7 @@ var BarChartV = React23.forwardRef(
|
|
|
2930
2975
|
{
|
|
2931
2976
|
className: "flex h-full min-w-0 flex-1 flex-col items-center justify-end gap-1",
|
|
2932
2977
|
children: [
|
|
2933
|
-
labelled(i) ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
2978
|
+
labelled(i) ? /* @__PURE__ */ jsx("span", { className: "text-sm tabular-nums", children: d.display ?? d.value }) : null,
|
|
2934
2979
|
/* @__PURE__ */ jsx(
|
|
2935
2980
|
"span",
|
|
2936
2981
|
{
|
|
@@ -2949,20 +2994,46 @@ var BarChartV = React23.forwardRef(
|
|
|
2949
2994
|
)) })
|
|
2950
2995
|
] }),
|
|
2951
2996
|
/* @__PURE__ */ jsx("div", { className: "flex justify-between gap-2", children: data.map((d, i) => /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col items-center", children: [
|
|
2952
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
2953
|
-
d.sublabel != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
2997
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm text-muted-foreground", children: d.label }),
|
|
2998
|
+
d.sublabel != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-muted-foreground/70", children: d.sublabel }) : null
|
|
2954
2999
|
] }, i)) })
|
|
2955
3000
|
] });
|
|
2956
3001
|
}
|
|
2957
3002
|
);
|
|
2958
3003
|
BarChartV.displayName = "BarChartV";
|
|
3004
|
+
var UNPAINTED = "bg-muted-foreground";
|
|
3005
|
+
var BoundChip = React24.forwardRef(
|
|
3006
|
+
({ bound, swatchOnly, label, swatch, palette, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3007
|
+
"span",
|
|
3008
|
+
{
|
|
3009
|
+
ref,
|
|
3010
|
+
className: cn(
|
|
3011
|
+
"inline-flex max-w-full shrink-0 items-center gap-1.5 font-mono text-sm text-muted-foreground",
|
|
3012
|
+
className
|
|
3013
|
+
),
|
|
3014
|
+
"aria-label": swatchOnly ? `bound: ${bound}` : void 0,
|
|
3015
|
+
...props,
|
|
3016
|
+
children: [
|
|
3017
|
+
/* @__PURE__ */ jsx(
|
|
3018
|
+
"span",
|
|
3019
|
+
{
|
|
3020
|
+
"aria-hidden": true,
|
|
3021
|
+
className: cn("size-1.5 shrink-0", swatch ?? palette?.[bound] ?? UNPAINTED)
|
|
3022
|
+
}
|
|
3023
|
+
),
|
|
3024
|
+
swatchOnly ? null : /* @__PURE__ */ jsx("span", { className: "truncate", children: label ?? bound })
|
|
3025
|
+
]
|
|
3026
|
+
}
|
|
3027
|
+
)
|
|
3028
|
+
);
|
|
3029
|
+
BoundChip.displayName = "BoundChip";
|
|
2959
3030
|
function ButtonWithTooltip(props) {
|
|
2960
3031
|
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { delayDuration: 0, children: [
|
|
2961
3032
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "ghost", className: cn("hover:bg-transparent", props.className), ...props, children: props.children }) }),
|
|
2962
3033
|
/* @__PURE__ */ jsx(TooltipContent, { children: props.tooltip })
|
|
2963
3034
|
] }) });
|
|
2964
3035
|
}
|
|
2965
|
-
var CannotAnswerCard =
|
|
3036
|
+
var CannotAnswerCard = React24.forwardRef(({ label = "cannot answer", remedy, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2966
3037
|
"div",
|
|
2967
3038
|
{
|
|
2968
3039
|
ref,
|
|
@@ -2972,13 +3043,60 @@ var CannotAnswerCard = React23.forwardRef(({ label = "cannot answer", remedy, cl
|
|
|
2972
3043
|
),
|
|
2973
3044
|
...props,
|
|
2974
3045
|
children: [
|
|
2975
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
3046
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
|
|
2976
3047
|
/* @__PURE__ */ jsx("span", { children }),
|
|
2977
|
-
remedy != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
3048
|
+
remedy != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: remedy }) : null
|
|
2978
3049
|
]
|
|
2979
3050
|
}
|
|
2980
3051
|
));
|
|
2981
3052
|
CannotAnswerCard.displayName = "CannotAnswerCard";
|
|
3053
|
+
var CAST_ROLES = ["extract", "decide", "judge", "embed"];
|
|
3054
|
+
var PURPOSE = {
|
|
3055
|
+
extract: "prose in, structure out \u2014 the cheap one",
|
|
3056
|
+
decide: "writes the number a person acts on",
|
|
3057
|
+
judge: "scores an output \u2014 often local",
|
|
3058
|
+
embed: "text in, vector out"
|
|
3059
|
+
};
|
|
3060
|
+
var CastTable = React24.forwardRef(
|
|
3061
|
+
({ cast = {}, resolved, readOnly, className, ...props }, ref) => {
|
|
3062
|
+
const byRole = new Map((resolved ?? []).map((r) => [r.role, r]));
|
|
3063
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cn("min-w-0", className), ...props, children: [
|
|
3064
|
+
/* @__PURE__ */ jsxs(Table, { density: "compact", children: [
|
|
3065
|
+
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
3066
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[5.5rem]", children: "role" }),
|
|
3067
|
+
/* @__PURE__ */ jsx(TableHead, { children: "resolves to" }),
|
|
3068
|
+
/* @__PURE__ */ jsx(TableHead, { children: "why this one" })
|
|
3069
|
+
] }) }),
|
|
3070
|
+
/* @__PURE__ */ jsx(TableBody, { children: CAST_ROLES.map((role) => {
|
|
3071
|
+
const hit = byRole.get(role);
|
|
3072
|
+
const address = hit ? hit.address : cast[role] ?? null;
|
|
3073
|
+
const denied = hit ? !hit.allowed : false;
|
|
3074
|
+
return /* @__PURE__ */ jsxs(TableRow, { "data-role": role, children: [
|
|
3075
|
+
/* @__PURE__ */ jsx(TableCell, { className: "font-mono text-sm text-muted-foreground", children: role }),
|
|
3076
|
+
/* @__PURE__ */ jsx(TableCell, { className: "min-w-0", children: address ? /* @__PURE__ */ jsx(
|
|
3077
|
+
AddressChip,
|
|
3078
|
+
{
|
|
3079
|
+
address,
|
|
3080
|
+
tone: denied ? "denied" : "allowed"
|
|
3081
|
+
}
|
|
3082
|
+
) : /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground/70", children: "nothing casts it" }) }),
|
|
3083
|
+
/* @__PURE__ */ jsx(TableCell, { className: "text-sm text-muted-foreground", children: denied ? /* @__PURE__ */ jsxs("span", { className: "text-destructive", children: [
|
|
3084
|
+
"denied by ",
|
|
3085
|
+
hit?.ruleMatched ?? "this world"
|
|
3086
|
+
] }) : hit?.source ? /* @__PURE__ */ jsx("span", { children: hit.source !== "shipped" ? `set on the ${hit.source}` : address ? "shipped default" : (
|
|
3087
|
+
// No address *and* nothing shipped resolves it —
|
|
3088
|
+
// the one row that says the run may open on a
|
|
3089
|
+
// model this Graph never chose.
|
|
3090
|
+
"nothing casts it, and no shipped default resolves it"
|
|
3091
|
+
) }) : PURPOSE[role] })
|
|
3092
|
+
] }, role);
|
|
3093
|
+
}) })
|
|
3094
|
+
] }),
|
|
3095
|
+
readOnly ? null : /* @__PURE__ */ jsx("p", { className: "px-2 pt-1 text-sm text-muted-foreground/70", children: "A cast picks within the rules \u2014 it never widens them." })
|
|
3096
|
+
] });
|
|
3097
|
+
}
|
|
3098
|
+
);
|
|
3099
|
+
CastTable.displayName = "CastTable";
|
|
2982
3100
|
function ChatSession({
|
|
2983
3101
|
children,
|
|
2984
3102
|
footer,
|
|
@@ -2988,20 +3106,20 @@ function ChatSession({
|
|
|
2988
3106
|
className,
|
|
2989
3107
|
bodyClassName
|
|
2990
3108
|
}) {
|
|
2991
|
-
const rootRef =
|
|
2992
|
-
const contentRef =
|
|
2993
|
-
const pinnedRef =
|
|
2994
|
-
const getViewport =
|
|
3109
|
+
const rootRef = React24.useRef(null);
|
|
3110
|
+
const contentRef = React24.useRef(null);
|
|
3111
|
+
const pinnedRef = React24.useRef(true);
|
|
3112
|
+
const getViewport = React24.useCallback(
|
|
2995
3113
|
() => rootRef.current?.querySelector(
|
|
2996
3114
|
"[data-radix-scroll-area-viewport]"
|
|
2997
3115
|
) ?? null,
|
|
2998
3116
|
[]
|
|
2999
3117
|
);
|
|
3000
|
-
const scrollToBottom =
|
|
3118
|
+
const scrollToBottom = React24.useCallback(() => {
|
|
3001
3119
|
const viewport = getViewport();
|
|
3002
3120
|
if (viewport) viewport.scrollTop = viewport.scrollHeight;
|
|
3003
3121
|
}, [getViewport]);
|
|
3004
|
-
|
|
3122
|
+
React24.useEffect(() => {
|
|
3005
3123
|
const viewport = getViewport();
|
|
3006
3124
|
if (!viewport) return;
|
|
3007
3125
|
const handleScroll = () => {
|
|
@@ -3011,7 +3129,7 @@ function ChatSession({
|
|
|
3011
3129
|
viewport.addEventListener("scroll", handleScroll, { passive: true });
|
|
3012
3130
|
return () => viewport.removeEventListener("scroll", handleScroll);
|
|
3013
3131
|
}, [getViewport, followThreshold]);
|
|
3014
|
-
|
|
3132
|
+
React24.useEffect(() => {
|
|
3015
3133
|
const content = contentRef.current;
|
|
3016
3134
|
if (!content || typeof ResizeObserver === "undefined") return;
|
|
3017
3135
|
const observer = new ResizeObserver(() => {
|
|
@@ -3020,11 +3138,11 @@ function ChatSession({
|
|
|
3020
3138
|
observer.observe(content);
|
|
3021
3139
|
return () => observer.disconnect();
|
|
3022
3140
|
}, [scrollToBottom]);
|
|
3023
|
-
|
|
3141
|
+
React24.useEffect(() => {
|
|
3024
3142
|
pinnedRef.current = true;
|
|
3025
3143
|
scrollToBottom();
|
|
3026
3144
|
}, [autoScrollKey, scrollToBottom]);
|
|
3027
|
-
const isEmpty =
|
|
3145
|
+
const isEmpty = React24.Children.count(children) === 0;
|
|
3028
3146
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col h-full min-h-0", className), children: [
|
|
3029
3147
|
/* @__PURE__ */ jsx(
|
|
3030
3148
|
ScrollArea,
|
|
@@ -3117,12 +3235,12 @@ function useOverflowItems({
|
|
|
3117
3235
|
pinnedIndex,
|
|
3118
3236
|
reserve = 32
|
|
3119
3237
|
}) {
|
|
3120
|
-
const containerEl =
|
|
3121
|
-
const itemEls =
|
|
3122
|
-
const widths =
|
|
3123
|
-
const itemRefs =
|
|
3124
|
-
const [hidden, setHidden] =
|
|
3125
|
-
const fit =
|
|
3238
|
+
const containerEl = React24.useRef(null);
|
|
3239
|
+
const itemEls = React24.useRef([]);
|
|
3240
|
+
const widths = React24.useRef([]);
|
|
3241
|
+
const itemRefs = React24.useRef([]);
|
|
3242
|
+
const [hidden, setHidden] = React24.useState(NONE);
|
|
3243
|
+
const fit = React24.useCallback(() => {
|
|
3126
3244
|
const el = containerEl.current;
|
|
3127
3245
|
if (!el || !enabled) {
|
|
3128
3246
|
setHidden((prev) => prev === NONE ? prev : NONE);
|
|
@@ -3151,12 +3269,12 @@ function useOverflowItems({
|
|
|
3151
3269
|
}
|
|
3152
3270
|
setHidden((prev) => same(prev, next) ? prev : next);
|
|
3153
3271
|
}, [count, enabled, pinnedIndex, reserve]);
|
|
3154
|
-
|
|
3272
|
+
React24.useLayoutEffect(() => {
|
|
3155
3273
|
widths.current = [];
|
|
3156
3274
|
itemEls.current.length = count;
|
|
3157
3275
|
setHidden((prev) => prev === NONE ? prev : NONE);
|
|
3158
3276
|
}, [count]);
|
|
3159
|
-
|
|
3277
|
+
React24.useLayoutEffect(() => {
|
|
3160
3278
|
fit();
|
|
3161
3279
|
if (!enabled || typeof ResizeObserver === "undefined") return;
|
|
3162
3280
|
const observer = new ResizeObserver(() => fit());
|
|
@@ -3164,10 +3282,10 @@ function useOverflowItems({
|
|
|
3164
3282
|
for (const item of itemEls.current) if (item) observer.observe(item);
|
|
3165
3283
|
return () => observer.disconnect();
|
|
3166
3284
|
}, [fit, enabled, hidden]);
|
|
3167
|
-
const containerRef =
|
|
3285
|
+
const containerRef = React24.useCallback((el) => {
|
|
3168
3286
|
containerEl.current = el;
|
|
3169
3287
|
}, []);
|
|
3170
|
-
const itemRef =
|
|
3288
|
+
const itemRef = React24.useCallback((index) => {
|
|
3171
3289
|
let fn = itemRefs.current[index];
|
|
3172
3290
|
if (!fn) {
|
|
3173
3291
|
fn = (el) => {
|
|
@@ -3177,7 +3295,7 @@ function useOverflowItems({
|
|
|
3177
3295
|
}
|
|
3178
3296
|
return fn;
|
|
3179
3297
|
}, []);
|
|
3180
|
-
const isHidden =
|
|
3298
|
+
const isHidden = React24.useCallback(
|
|
3181
3299
|
(index) => hidden.includes(index),
|
|
3182
3300
|
[hidden]
|
|
3183
3301
|
);
|
|
@@ -3230,15 +3348,15 @@ var NavItems = ({
|
|
|
3230
3348
|
const isVertical = orientation === "vertical";
|
|
3231
3349
|
const isTabs = selectionMode === "tabs";
|
|
3232
3350
|
const V = VARIANT[variant];
|
|
3233
|
-
const [internalActive, setInternalActive] =
|
|
3351
|
+
const [internalActive, setInternalActive] = React24__default.useState(
|
|
3234
3352
|
null
|
|
3235
3353
|
);
|
|
3236
3354
|
const isControlled = activeKey !== void 0;
|
|
3237
3355
|
const currentKey = isControlled ? activeKey : internalActive;
|
|
3238
3356
|
const activeIndex = items.findIndex((item) => keyOf(item) === currentKey);
|
|
3239
|
-
const nodes =
|
|
3240
|
-
const pendingFocus =
|
|
3241
|
-
|
|
3357
|
+
const nodes = React24__default.useRef({});
|
|
3358
|
+
const pendingFocus = React24__default.useRef(null);
|
|
3359
|
+
React24__default.useEffect(() => {
|
|
3242
3360
|
const key = pendingFocus.current;
|
|
3243
3361
|
if (!key) return;
|
|
3244
3362
|
const node = nodes.current[key];
|
|
@@ -3251,7 +3369,7 @@ var NavItems = ({
|
|
|
3251
3369
|
enabled: overflow && !isVertical,
|
|
3252
3370
|
pinnedIndex: activeIndex >= 0 ? activeIndex : void 0
|
|
3253
3371
|
});
|
|
3254
|
-
const select =
|
|
3372
|
+
const select = React24__default.useCallback(
|
|
3255
3373
|
(item) => {
|
|
3256
3374
|
if (item.disabled) return;
|
|
3257
3375
|
const key = keyOf(item);
|
|
@@ -3321,6 +3439,7 @@ var NavItems = ({
|
|
|
3321
3439
|
}
|
|
3322
3440
|
);
|
|
3323
3441
|
const label = item.label && /* @__PURE__ */ jsx("span", { className: item.labelClassName, children: item.label });
|
|
3442
|
+
const a11y = label ? {} : { "aria-label": item.name };
|
|
3324
3443
|
const badge = item.badge != null && /* @__PURE__ */ jsx(
|
|
3325
3444
|
"span",
|
|
3326
3445
|
{
|
|
@@ -3360,6 +3479,7 @@ var NavItems = ({
|
|
|
3360
3479
|
{
|
|
3361
3480
|
ref: setNode,
|
|
3362
3481
|
...tabProps,
|
|
3482
|
+
...a11y,
|
|
3363
3483
|
style: item.style,
|
|
3364
3484
|
onClick: () => select(item),
|
|
3365
3485
|
className: itemClass,
|
|
@@ -3370,6 +3490,7 @@ var NavItems = ({
|
|
|
3370
3490
|
{
|
|
3371
3491
|
ref: setNode,
|
|
3372
3492
|
href: item.href,
|
|
3493
|
+
...a11y,
|
|
3373
3494
|
style: item.style,
|
|
3374
3495
|
onClick: () => select(item),
|
|
3375
3496
|
className: itemClass,
|
|
@@ -3382,6 +3503,7 @@ var NavItems = ({
|
|
|
3382
3503
|
type: "button",
|
|
3383
3504
|
disabled: item.disabled,
|
|
3384
3505
|
...tabProps,
|
|
3506
|
+
...a11y,
|
|
3385
3507
|
style: item.style,
|
|
3386
3508
|
onClick: () => {
|
|
3387
3509
|
if (hasMenu) item.onClick?.();
|
|
@@ -3395,7 +3517,7 @@ var NavItems = ({
|
|
|
3395
3517
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: hasMenu && !asCaret ? /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: control }) : control }),
|
|
3396
3518
|
/* @__PURE__ */ jsx(TooltipContent, { side: item.tooltipSide || tooltipSide, children: item.tooltip || item.name })
|
|
3397
3519
|
] });
|
|
3398
|
-
return /* @__PURE__ */ jsxs(
|
|
3520
|
+
return /* @__PURE__ */ jsxs(React24__default.Fragment, { children: [
|
|
3399
3521
|
hasMenu ? /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
3400
3522
|
withTooltip,
|
|
3401
3523
|
/* @__PURE__ */ jsx(
|
|
@@ -3485,7 +3607,7 @@ function renderMenuRows(menuItems) {
|
|
|
3485
3607
|
const gutter = menuItems?.some((m) => m.icon);
|
|
3486
3608
|
return menuItems?.map((menuItem) => {
|
|
3487
3609
|
const MenuIcon = menuItem.icon;
|
|
3488
|
-
return /* @__PURE__ */ jsxs(
|
|
3610
|
+
return /* @__PURE__ */ jsxs(React24__default.Fragment, { children: [
|
|
3489
3611
|
menuItem.separatorBefore && /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
3490
3612
|
/* @__PURE__ */ jsxs(
|
|
3491
3613
|
DropdownMenuItem,
|
|
@@ -3804,7 +3926,7 @@ function ChatSessionDisclosure({
|
|
|
3804
3926
|
className,
|
|
3805
3927
|
contentClassName
|
|
3806
3928
|
}) {
|
|
3807
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
3929
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React24.useState(defaultOpen);
|
|
3808
3930
|
const isOpen = open ?? uncontrolledOpen;
|
|
3809
3931
|
const toggle = () => {
|
|
3810
3932
|
const next = !isOpen;
|
|
@@ -3935,7 +4057,7 @@ function ChatSessionContextChip({
|
|
|
3935
4057
|
"div",
|
|
3936
4058
|
{
|
|
3937
4059
|
className: cn(
|
|
3938
|
-
"flex min-h-[26px] items-center gap-1.5 border border-border bg-muted/40 px-1.5 text-
|
|
4060
|
+
"flex min-h-[26px] items-center gap-1.5 border border-border bg-muted/40 px-1.5 text-sm",
|
|
3939
4061
|
className
|
|
3940
4062
|
),
|
|
3941
4063
|
...props,
|
|
@@ -3956,9 +4078,9 @@ function ChatSessionContextChip({
|
|
|
3956
4078
|
}
|
|
3957
4079
|
);
|
|
3958
4080
|
}
|
|
3959
|
-
var CitationList =
|
|
4081
|
+
var CitationList = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx("ul", { ref, className: cn("flex flex-col", className), ...props, children }));
|
|
3960
4082
|
CitationList.displayName = "CitationList";
|
|
3961
|
-
var CitationRow =
|
|
4083
|
+
var CitationRow = React24.forwardRef(
|
|
3962
4084
|
({ kind, source, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3963
4085
|
"li",
|
|
3964
4086
|
{
|
|
@@ -3966,15 +4088,15 @@ var CitationRow = React23.forwardRef(
|
|
|
3966
4088
|
className: cn("flex min-h-[26px] items-center gap-2 py-0.5", className),
|
|
3967
4089
|
...props,
|
|
3968
4090
|
children: [
|
|
3969
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 border border-border px-1 text-
|
|
4091
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 border border-border px-1 text-sm text-muted-foreground", children: kind }),
|
|
3970
4092
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children }),
|
|
3971
|
-
source != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
4093
|
+
source != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: source }) : null
|
|
3972
4094
|
]
|
|
3973
4095
|
}
|
|
3974
4096
|
)
|
|
3975
4097
|
);
|
|
3976
4098
|
CitationRow.displayName = "CitationRow";
|
|
3977
|
-
var ClampedText =
|
|
4099
|
+
var ClampedText = React24.forwardRef(
|
|
3978
4100
|
({
|
|
3979
4101
|
lines = 3,
|
|
3980
4102
|
moreLabel = "Show more",
|
|
@@ -3983,10 +4105,10 @@ var ClampedText = React23.forwardRef(
|
|
|
3983
4105
|
children,
|
|
3984
4106
|
...props
|
|
3985
4107
|
}, ref) => {
|
|
3986
|
-
const [expanded, setExpanded] =
|
|
3987
|
-
const [clipped, setClipped] =
|
|
3988
|
-
const bodyRef =
|
|
3989
|
-
|
|
4108
|
+
const [expanded, setExpanded] = React24.useState(false);
|
|
4109
|
+
const [clipped, setClipped] = React24.useState(false);
|
|
4110
|
+
const bodyRef = React24.useRef(null);
|
|
4111
|
+
React24.useLayoutEffect(() => {
|
|
3990
4112
|
const el = bodyRef.current;
|
|
3991
4113
|
if (!el || expanded) return;
|
|
3992
4114
|
const measure = () => setClipped(el.scrollHeight - el.clientHeight > 1);
|
|
@@ -4024,7 +4146,7 @@ var ClampedText = React23.forwardRef(
|
|
|
4024
4146
|
}
|
|
4025
4147
|
);
|
|
4026
4148
|
ClampedText.displayName = "ClampedText";
|
|
4027
|
-
var ClarifyCard =
|
|
4149
|
+
var ClarifyCard = React24.forwardRef(
|
|
4028
4150
|
({
|
|
4029
4151
|
step,
|
|
4030
4152
|
waiting,
|
|
@@ -4037,7 +4159,7 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4037
4159
|
className,
|
|
4038
4160
|
...props
|
|
4039
4161
|
}, ref) => {
|
|
4040
|
-
const name =
|
|
4162
|
+
const name = React24.useId();
|
|
4041
4163
|
return /* @__PURE__ */ jsxs(
|
|
4042
4164
|
"div",
|
|
4043
4165
|
{
|
|
@@ -4045,7 +4167,7 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4045
4167
|
className: cn("flex flex-col overflow-hidden border border-border bg-card", className),
|
|
4046
4168
|
...props,
|
|
4047
4169
|
children: [
|
|
4048
|
-
/* @__PURE__ */ jsxs("div", { className: "flex h-6 shrink-0 items-center gap-2 border-b border-border bg-muted/40 px-2 text-
|
|
4170
|
+
/* @__PURE__ */ jsxs("div", { className: "flex h-6 shrink-0 items-center gap-2 border-b border-border bg-muted/40 px-2 text-sm", children: [
|
|
4049
4171
|
/* @__PURE__ */ jsx("span", { className: "shrink-0 font-medium", children: "question" }),
|
|
4050
4172
|
step != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-muted-foreground", children: step }) : null,
|
|
4051
4173
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
@@ -4088,7 +4210,7 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4088
4210
|
}
|
|
4089
4211
|
),
|
|
4090
4212
|
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: o.label }),
|
|
4091
|
-
o.detail != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono text-
|
|
4213
|
+
o.detail != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono text-sm text-muted-foreground", children: o.detail }) : null
|
|
4092
4214
|
]
|
|
4093
4215
|
},
|
|
4094
4216
|
o.value
|
|
@@ -4096,7 +4218,7 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4096
4218
|
}) }),
|
|
4097
4219
|
actions || footnote != null ? /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
4098
4220
|
actions,
|
|
4099
|
-
footnote != null ? /* @__PURE__ */ jsx("span", { className: "flex-1 text-
|
|
4221
|
+
footnote != null ? /* @__PURE__ */ jsx("span", { className: "flex-1 text-sm text-muted-foreground", children: footnote }) : null
|
|
4100
4222
|
] }) : null
|
|
4101
4223
|
] })
|
|
4102
4224
|
]
|
|
@@ -4105,13 +4227,13 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4105
4227
|
}
|
|
4106
4228
|
);
|
|
4107
4229
|
ClarifyCard.displayName = "ClarifyCard";
|
|
4108
|
-
var ContextBar =
|
|
4230
|
+
var ContextBar = React24.forwardRef(
|
|
4109
4231
|
({ counters, hint, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4110
4232
|
"div",
|
|
4111
4233
|
{
|
|
4112
4234
|
ref,
|
|
4113
4235
|
className: cn(
|
|
4114
|
-
"flex h-7 shrink-0 items-center gap-3 border-t border-border px-2 text-
|
|
4236
|
+
"flex h-7 shrink-0 items-center gap-3 border-t border-border px-2 text-sm",
|
|
4115
4237
|
className
|
|
4116
4238
|
),
|
|
4117
4239
|
...props,
|
|
@@ -4124,22 +4246,22 @@ var ContextBar = React23.forwardRef(
|
|
|
4124
4246
|
)
|
|
4125
4247
|
);
|
|
4126
4248
|
ContextBar.displayName = "ContextBar";
|
|
4127
|
-
var DiagnosisCard =
|
|
4249
|
+
var DiagnosisCard = React24.forwardRef(({ code, attempted, target, actions, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4128
4250
|
"div",
|
|
4129
4251
|
{
|
|
4130
4252
|
ref,
|
|
4131
4253
|
className: cn("flex flex-col gap-2 border border-destructive/40 bg-card p-2", className),
|
|
4132
4254
|
...props,
|
|
4133
4255
|
children: [
|
|
4134
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-
|
|
4256
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
4135
4257
|
/* @__PURE__ */ jsx("span", { className: "shrink-0 font-medium text-destructive", children: "diagnosis" }),
|
|
4136
4258
|
/* @__PURE__ */ jsx("span", { className: "truncate font-mono text-muted-foreground", children: code })
|
|
4137
4259
|
] }),
|
|
4138
4260
|
children != null ? /* @__PURE__ */ jsx("div", { children }) : null,
|
|
4139
4261
|
attempted != null || target != null ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 border border-border bg-muted/40 p-1.5", children: [
|
|
4140
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4141
|
-
attempted != null ? /* @__PURE__ */ jsx("code", { className: "whitespace-pre-wrap break-all font-mono text-
|
|
4142
|
-
target != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
4262
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "what was tried" }),
|
|
4263
|
+
attempted != null ? /* @__PURE__ */ jsx("code", { className: "whitespace-pre-wrap break-all font-mono text-sm", children: attempted }) : null,
|
|
4264
|
+
target != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: target }) : null
|
|
4143
4265
|
] }) : null,
|
|
4144
4266
|
actions ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1.5", children: actions }) : null
|
|
4145
4267
|
]
|
|
@@ -4152,19 +4274,19 @@ var OP_CLASS = {
|
|
|
4152
4274
|
remove: "text-destructive",
|
|
4153
4275
|
change: "text-warning"
|
|
4154
4276
|
};
|
|
4155
|
-
var DiffList =
|
|
4277
|
+
var DiffList = React24.forwardRef(
|
|
4156
4278
|
({ className, children, ...props }, ref) => /* @__PURE__ */ jsx("ul", { ref, className: cn("flex flex-col", className), ...props, children })
|
|
4157
4279
|
);
|
|
4158
4280
|
DiffList.displayName = "DiffList";
|
|
4159
|
-
var DiffRow =
|
|
4281
|
+
var DiffRow = React24.forwardRef(
|
|
4160
4282
|
({ op = "add", kind, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4161
4283
|
"li",
|
|
4162
4284
|
{
|
|
4163
4285
|
ref,
|
|
4164
|
-
className: cn("flex items-baseline gap-2 py-0.5 text-
|
|
4286
|
+
className: cn("flex items-baseline gap-2 py-0.5 text-sm", className),
|
|
4165
4287
|
...props,
|
|
4166
4288
|
children: [
|
|
4167
|
-
/* @__PURE__ */ jsx("span", { className: cn("w-3 shrink-0 text-center font-mono", OP_CLASS[op]), children: OP_SIGN[op] }),
|
|
4289
|
+
/* @__PURE__ */ jsx("span", { className: cn("w-3 shrink-0 text-center font-mono", OP_CLASS[op] ?? "text-muted-foreground"), children: OP_SIGN[op] }),
|
|
4168
4290
|
kind != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", children: kind }) : null,
|
|
4169
4291
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1", children })
|
|
4170
4292
|
]
|
|
@@ -4172,7 +4294,7 @@ var DiffRow = React23.forwardRef(
|
|
|
4172
4294
|
)
|
|
4173
4295
|
);
|
|
4174
4296
|
DiffRow.displayName = "DiffRow";
|
|
4175
|
-
var DivergingBar =
|
|
4297
|
+
var DivergingBar = React24.forwardRef(
|
|
4176
4298
|
({
|
|
4177
4299
|
data,
|
|
4178
4300
|
max,
|
|
@@ -4185,7 +4307,7 @@ var DivergingBar = React23.forwardRef(
|
|
|
4185
4307
|
}, ref) => {
|
|
4186
4308
|
const ceiling = max ?? (Math.max(...data.map((d) => Math.abs(d.value)), 0) || 1);
|
|
4187
4309
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
|
|
4188
|
-
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
4310
|
+
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: caption }) : null,
|
|
4189
4311
|
data.map((d, i) => {
|
|
4190
4312
|
const positive = d.value >= 0;
|
|
4191
4313
|
const width = `${Math.abs(d.value) / ceiling * 50}%`;
|
|
@@ -4193,7 +4315,7 @@ var DivergingBar = React23.forwardRef(
|
|
|
4193
4315
|
/* @__PURE__ */ jsx(
|
|
4194
4316
|
"span",
|
|
4195
4317
|
{
|
|
4196
|
-
className: "shrink-0 truncate text-
|
|
4318
|
+
className: "shrink-0 truncate text-sm text-muted-foreground",
|
|
4197
4319
|
style: { width: labelWidth },
|
|
4198
4320
|
children: d.label
|
|
4199
4321
|
}
|
|
@@ -4223,19 +4345,57 @@ var DivergingBar = React23.forwardRef(
|
|
|
4223
4345
|
}
|
|
4224
4346
|
) : null })
|
|
4225
4347
|
] }),
|
|
4226
|
-
/* @__PURE__ */ jsx("span", { className: "w-8 shrink-0 text-right text-
|
|
4348
|
+
/* @__PURE__ */ jsx("span", { className: "w-8 shrink-0 text-right text-sm tabular-nums", children: d.display ?? (d.value > 0 ? `+${d.value}` : d.value) })
|
|
4227
4349
|
] }, i);
|
|
4228
4350
|
})
|
|
4229
4351
|
] });
|
|
4230
4352
|
}
|
|
4231
4353
|
);
|
|
4232
4354
|
DivergingBar.displayName = "DivergingBar";
|
|
4233
|
-
var
|
|
4355
|
+
var EgressList = React24.forwardRef(
|
|
4356
|
+
({ to, classes = [], cut = [], className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4357
|
+
"div",
|
|
4358
|
+
{
|
|
4359
|
+
ref,
|
|
4360
|
+
className: cn("flex min-w-0 flex-col gap-1", className),
|
|
4361
|
+
...props,
|
|
4362
|
+
children: [
|
|
4363
|
+
/* @__PURE__ */ jsx(AddressChip, { address: to }),
|
|
4364
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-0.5 pl-3", children: [
|
|
4365
|
+
classes.length === 0 ? /* @__PURE__ */ jsx("span", { className: "text-sm text-destructive", children: "nothing may be sent" }) : /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-wrap items-center gap-1 text-sm text-muted-foreground", children: [
|
|
4366
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0", children: "may send" }),
|
|
4367
|
+
classes.map((c) => /* @__PURE__ */ jsx(
|
|
4368
|
+
"span",
|
|
4369
|
+
{
|
|
4370
|
+
className: "rounded-control bg-muted px-1 font-mono text-foreground",
|
|
4371
|
+
children: c
|
|
4372
|
+
},
|
|
4373
|
+
c
|
|
4374
|
+
))
|
|
4375
|
+
] }),
|
|
4376
|
+
cut.length ? /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-wrap items-center gap-1 text-sm text-muted-foreground", children: [
|
|
4377
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0", children: "cut" }),
|
|
4378
|
+
cut.map((c) => /* @__PURE__ */ jsx(
|
|
4379
|
+
"span",
|
|
4380
|
+
{
|
|
4381
|
+
className: "rounded-control bg-muted px-1 font-mono text-destructive line-through decoration-destructive/50",
|
|
4382
|
+
children: c
|
|
4383
|
+
},
|
|
4384
|
+
c
|
|
4385
|
+
))
|
|
4386
|
+
] }) : null
|
|
4387
|
+
] })
|
|
4388
|
+
]
|
|
4389
|
+
}
|
|
4390
|
+
)
|
|
4391
|
+
);
|
|
4392
|
+
EgressList.displayName = "EgressList";
|
|
4393
|
+
var EmissionHeader = React24.forwardRef(({ kind, template, citation, note, actions, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4234
4394
|
"div",
|
|
4235
4395
|
{
|
|
4236
4396
|
ref,
|
|
4237
4397
|
className: cn(
|
|
4238
|
-
"flex h-6 shrink-0 items-center gap-2 border-b border-border bg-muted/40 px-2 text-
|
|
4398
|
+
"flex h-6 shrink-0 items-center gap-2 border-b border-border bg-muted/40 px-2 text-sm",
|
|
4239
4399
|
className
|
|
4240
4400
|
),
|
|
4241
4401
|
...props,
|
|
@@ -4250,7 +4410,7 @@ var EmissionHeader = React23.forwardRef(({ kind, template, citation, note, actio
|
|
|
4250
4410
|
}
|
|
4251
4411
|
));
|
|
4252
4412
|
EmissionHeader.displayName = "EmissionHeader";
|
|
4253
|
-
var EmissionCard =
|
|
4413
|
+
var EmissionCard = React24.forwardRef(
|
|
4254
4414
|
({
|
|
4255
4415
|
kind,
|
|
4256
4416
|
template,
|
|
@@ -4285,7 +4445,7 @@ var EmissionCard = React23.forwardRef(
|
|
|
4285
4445
|
)
|
|
4286
4446
|
);
|
|
4287
4447
|
EmissionCard.displayName = "EmissionCard";
|
|
4288
|
-
var CitationMarker =
|
|
4448
|
+
var CitationMarker = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4289
4449
|
"sup",
|
|
4290
4450
|
{
|
|
4291
4451
|
ref,
|
|
@@ -4295,7 +4455,7 @@ var CitationMarker = React23.forwardRef(({ className, children, ...props }, ref)
|
|
|
4295
4455
|
}
|
|
4296
4456
|
));
|
|
4297
4457
|
CitationMarker.displayName = "CitationMarker";
|
|
4298
|
-
var EmptyState =
|
|
4458
|
+
var EmptyState = React24.forwardRef(
|
|
4299
4459
|
({ icon, title, description, actions, locks, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4300
4460
|
"div",
|
|
4301
4461
|
{
|
|
@@ -4316,12 +4476,12 @@ var EmptyState = React23.forwardRef(
|
|
|
4316
4476
|
)
|
|
4317
4477
|
);
|
|
4318
4478
|
EmptyState.displayName = "EmptyState";
|
|
4319
|
-
var EmptyStateLock =
|
|
4479
|
+
var EmptyStateLock = React24.forwardRef(({ icon, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4320
4480
|
"span",
|
|
4321
4481
|
{
|
|
4322
4482
|
ref,
|
|
4323
4483
|
className: cn(
|
|
4324
|
-
"inline-flex h-6 items-center gap-1.5 border border-dashed border-border px-2 text-
|
|
4484
|
+
"inline-flex h-6 items-center gap-1.5 border border-dashed border-border px-2 text-sm text-muted-foreground [&_svg]:size-3",
|
|
4325
4485
|
className
|
|
4326
4486
|
),
|
|
4327
4487
|
...props,
|
|
@@ -4353,7 +4513,28 @@ var ErrorBoundary = class extends Component {
|
|
|
4353
4513
|
return this.props.children;
|
|
4354
4514
|
}
|
|
4355
4515
|
};
|
|
4356
|
-
var
|
|
4516
|
+
var Eyebrow = React24.forwardRef(
|
|
4517
|
+
({ aside, tone = "muted", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4518
|
+
"div",
|
|
4519
|
+
{
|
|
4520
|
+
ref,
|
|
4521
|
+
className: cn(
|
|
4522
|
+
"flex items-baseline gap-2 text-sm font-semibold uppercase tracking-wide",
|
|
4523
|
+
tone === "muted" && "text-muted-foreground",
|
|
4524
|
+
tone === "foreground" && "text-foreground",
|
|
4525
|
+
tone === "accent" && "text-primary",
|
|
4526
|
+
className
|
|
4527
|
+
),
|
|
4528
|
+
...props,
|
|
4529
|
+
children: [
|
|
4530
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children }),
|
|
4531
|
+
aside != null ? /* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 font-normal normal-case tracking-normal text-muted-foreground", children: aside }) : null
|
|
4532
|
+
]
|
|
4533
|
+
}
|
|
4534
|
+
)
|
|
4535
|
+
);
|
|
4536
|
+
Eyebrow.displayName = "Eyebrow";
|
|
4537
|
+
var FilterBar = React24.forwardRef(
|
|
4357
4538
|
({ summary, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4358
4539
|
"div",
|
|
4359
4540
|
{
|
|
@@ -4366,13 +4547,13 @@ var FilterBar = React23.forwardRef(
|
|
|
4366
4547
|
children: [
|
|
4367
4548
|
children,
|
|
4368
4549
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
4369
|
-
summary != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
4550
|
+
summary != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: summary }) : null
|
|
4370
4551
|
]
|
|
4371
4552
|
}
|
|
4372
4553
|
)
|
|
4373
4554
|
);
|
|
4374
4555
|
FilterBar.displayName = "FilterBar";
|
|
4375
|
-
var FilterChip =
|
|
4556
|
+
var FilterChip = React24.forwardRef(
|
|
4376
4557
|
({ label, value, active, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4377
4558
|
Button,
|
|
4378
4559
|
{
|
|
@@ -4396,9 +4577,9 @@ var FilterChip = React23.forwardRef(
|
|
|
4396
4577
|
)
|
|
4397
4578
|
);
|
|
4398
4579
|
FilterChip.displayName = "FilterChip";
|
|
4399
|
-
var HeatStrip =
|
|
4580
|
+
var HeatStrip = React24.forwardRef(
|
|
4400
4581
|
({ cells, states, ticks, cellSize = 14, className, ...props }, ref) => {
|
|
4401
|
-
const byKey =
|
|
4582
|
+
const byKey = React24.useMemo(
|
|
4402
4583
|
() => new Map(states.map((s) => [s.key, s])),
|
|
4403
4584
|
[states]
|
|
4404
4585
|
);
|
|
@@ -4425,14 +4606,14 @@ var HeatStrip = React23.forwardRef(
|
|
|
4425
4606
|
return /* @__PURE__ */ jsx(
|
|
4426
4607
|
"span",
|
|
4427
4608
|
{
|
|
4428
|
-
className: "shrink-0 text-
|
|
4609
|
+
className: "shrink-0 text-sm tabular-nums text-muted-foreground",
|
|
4429
4610
|
style: { width: cellSize },
|
|
4430
4611
|
children: tick ? tick.label : ""
|
|
4431
4612
|
},
|
|
4432
4613
|
i
|
|
4433
4614
|
);
|
|
4434
4615
|
}) }) : null,
|
|
4435
|
-
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-
|
|
4616
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm", children: states.map((s) => /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
|
|
4436
4617
|
/* @__PURE__ */ jsx(
|
|
4437
4618
|
"span",
|
|
4438
4619
|
{
|
|
@@ -4450,125 +4631,903 @@ var HeatStrip = React23.forwardRef(
|
|
|
4450
4631
|
}
|
|
4451
4632
|
);
|
|
4452
4633
|
HeatStrip.displayName = "HeatStrip";
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4634
|
+
var layerLabel = (layer) => layer.replace(/_/g, " ");
|
|
4635
|
+
var UNPAINTED2 = {
|
|
4636
|
+
swatch: "bg-muted-foreground",
|
|
4637
|
+
// Edge only, no ground: a bar's identity is its rail and its address, and a
|
|
4638
|
+
// wash under every bar turns a track into a stack of coloured blocks. A
|
|
4639
|
+
// consumer that wants the ground says so in its own `tint`.
|
|
4640
|
+
tint: "border-border",
|
|
4641
|
+
// Unpainted type is ordinary type. A muted address would say *subordinate*,
|
|
4642
|
+
// which is not what "nobody gave this layer a colour" means.
|
|
4643
|
+
text: "text-foreground"
|
|
4644
|
+
};
|
|
4645
|
+
var layerPaint = (palette, layer) => ({ ...UNPAINTED2, ...palette?.[layer] });
|
|
4646
|
+
var LayerChip = React24.forwardRef(
|
|
4647
|
+
({ layer, count, label, dim, swatch, palette, className, ...props }, ref) => {
|
|
4648
|
+
const paint = layerPaint(palette, layer);
|
|
4649
|
+
return /* @__PURE__ */ jsxs(
|
|
4457
4650
|
"span",
|
|
4458
4651
|
{
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4652
|
+
ref,
|
|
4653
|
+
className: cn(
|
|
4654
|
+
// A layer is a **name**, not an address. `graph data` has a space in
|
|
4655
|
+
// it — it is already prose — so it takes the body face at the root
|
|
4656
|
+
// size, and mono is reserved for the thing that really is an address
|
|
4657
|
+
// (`model/Orders@v2` on the row below it). Small muted bold mono made
|
|
4658
|
+
// a row heading look like a technical footnote.
|
|
4659
|
+
"inline-flex max-w-full shrink-0 items-center gap-1.5",
|
|
4660
|
+
dim ? "text-muted-foreground/70" : "text-foreground",
|
|
4661
|
+
className
|
|
4662
|
+
),
|
|
4663
|
+
...props,
|
|
4664
|
+
children: [
|
|
4665
|
+
/* @__PURE__ */ jsx(
|
|
4666
|
+
"span",
|
|
4667
|
+
{
|
|
4668
|
+
"aria-hidden": true,
|
|
4669
|
+
className: cn(
|
|
4670
|
+
"size-1.5 shrink-0",
|
|
4671
|
+
dim ? "bg-muted-foreground/50" : swatch ?? paint.swatch
|
|
4672
|
+
)
|
|
4673
|
+
}
|
|
4674
|
+
),
|
|
4675
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: label ?? layerLabel(layer) }),
|
|
4676
|
+
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm tabular-nums text-muted-foreground", children: count }) : null
|
|
4677
|
+
]
|
|
4462
4678
|
}
|
|
4463
4679
|
);
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
4680
|
+
}
|
|
4681
|
+
);
|
|
4682
|
+
LayerChip.displayName = "LayerChip";
|
|
4683
|
+
var LayerSection = React24.forwardRef(
|
|
4684
|
+
({ layer, summary, count, dim, palette, className, children, ...props }, ref) => {
|
|
4685
|
+
const empty = React24.Children.count(children) === 0;
|
|
4686
|
+
return /* @__PURE__ */ jsxs(
|
|
4687
|
+
"section",
|
|
4467
4688
|
{
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
|
|
4689
|
+
ref,
|
|
4690
|
+
className: cn("flex min-w-0 flex-col gap-1", className),
|
|
4691
|
+
...props,
|
|
4692
|
+
children: [
|
|
4693
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-baseline gap-2 border-b border-border pb-1", children: [
|
|
4694
|
+
/* @__PURE__ */ jsx(LayerChip, { layer, count, dim, palette }),
|
|
4695
|
+
summary != null ? /* @__PURE__ */ jsx("span", { className: "ml-auto min-w-0 shrink truncate text-sm text-muted-foreground", children: summary }) : null
|
|
4696
|
+
] }),
|
|
4697
|
+
empty ? /* @__PURE__ */ jsx("p", { className: "px-1 py-1 text-sm text-muted-foreground/70", children: "no rules in this layer" }) : /* @__PURE__ */ jsx("div", { className: cn("flex min-w-0 flex-col", dim && "opacity-60"), children })
|
|
4698
|
+
]
|
|
4471
4699
|
}
|
|
4472
4700
|
);
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4701
|
+
}
|
|
4702
|
+
);
|
|
4703
|
+
LayerSection.displayName = "LayerSection";
|
|
4704
|
+
var STATE_LABEL = {
|
|
4705
|
+
declared: "declared",
|
|
4706
|
+
out: "sent",
|
|
4707
|
+
in: "read",
|
|
4708
|
+
refused: "refused",
|
|
4709
|
+
skipped: "skipped"
|
|
4710
|
+
};
|
|
4711
|
+
var STATE_BAR = {
|
|
4712
|
+
declared: "border-dashed",
|
|
4713
|
+
out: "",
|
|
4714
|
+
in: "",
|
|
4715
|
+
refused: "border-destructive bg-background",
|
|
4716
|
+
skipped: "border-dashed opacity-60"
|
|
4717
|
+
};
|
|
4718
|
+
var stateLabel = (state) => STATE_LABEL[state] ?? state;
|
|
4719
|
+
var formatElapsed = (ms) => {
|
|
4720
|
+
if (ms < 1e3) return `${Math.round(ms)}ms`;
|
|
4721
|
+
if (ms < 6e4) return `${(ms / 1e3).toFixed(ms < 1e4 ? 1 : 0)}s`;
|
|
4722
|
+
const m = Math.floor(ms / 6e4);
|
|
4723
|
+
return `${m}m ${Math.round(ms % 6e4 / 1e3)}s`;
|
|
4724
|
+
};
|
|
4725
|
+
var LayerStrip = React24.forwardRef(
|
|
4726
|
+
({
|
|
4727
|
+
bands,
|
|
4728
|
+
items,
|
|
4729
|
+
scale = "seq",
|
|
4730
|
+
domain,
|
|
4731
|
+
ticks,
|
|
4732
|
+
formatTick,
|
|
4733
|
+
brackets,
|
|
4734
|
+
seams,
|
|
4735
|
+
onSelectItem,
|
|
4736
|
+
selectedItem,
|
|
4737
|
+
hoverDetail = true,
|
|
4738
|
+
itemDetail,
|
|
4739
|
+
defaultCollapsed,
|
|
4740
|
+
collapsed,
|
|
4741
|
+
onCollapsedChange,
|
|
4742
|
+
collapsible = true,
|
|
4743
|
+
frozenLabels = true,
|
|
4744
|
+
labelWidth = 15.5,
|
|
4745
|
+
minTrackWidth = 26,
|
|
4746
|
+
minSlotWidth = 6,
|
|
4747
|
+
palette,
|
|
4748
|
+
className,
|
|
4749
|
+
...props
|
|
4750
|
+
}, ref) => {
|
|
4751
|
+
const [ownCollapsed, setOwnCollapsed] = React24.useState(
|
|
4752
|
+
defaultCollapsed ?? []
|
|
4753
|
+
);
|
|
4754
|
+
const shut = collapsed ?? ownCollapsed;
|
|
4755
|
+
const setShut = (next) => {
|
|
4756
|
+
if (collapsed == null) setOwnCollapsed(next);
|
|
4757
|
+
onCollapsedChange?.(next);
|
|
4758
|
+
};
|
|
4759
|
+
const withParts = bands.filter((b) => (b.parts?.length ?? 0) > 0);
|
|
4760
|
+
const allShut = withParts.length > 0 && withParts.every((b) => shut.includes(b.layer));
|
|
4761
|
+
const ends = items.map((i) => i.end ?? i.start + (scale === "seq" ? 1 : 0));
|
|
4762
|
+
const starts = items.map((i) => i.start);
|
|
4763
|
+
const d0 = domain?.[0] ?? (starts.length ? Math.min(...starts) : 0);
|
|
4764
|
+
const d1 = domain?.[1] ?? (ends.length ? Math.max(...ends) : d0 + 1);
|
|
4765
|
+
const span = d1 - d0 || 1;
|
|
4766
|
+
const pct = (value) => (value - d0) / span * 100;
|
|
4767
|
+
const axisTicks = ticks ?? (scale === "seq" ? Array.from({ length: Math.ceil(span) }, (_, n) => d0 + n) : Array.from({ length: 5 }, (_, n) => d0 + span / 4 * n));
|
|
4768
|
+
const tickLabel = formatTick ?? ((value) => scale === "seq" ? `${Math.round(value)}` : formatElapsed(value - d0));
|
|
4769
|
+
const label = (content, extra, indent, dim) => /* @__PURE__ */ jsx(
|
|
4770
|
+
"div",
|
|
4478
4771
|
{
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4772
|
+
style: { width: `${labelWidth}rem` },
|
|
4773
|
+
className: cn(
|
|
4774
|
+
"flex shrink-0 items-center gap-2 border-border border-r px-2.5 py-1.5",
|
|
4775
|
+
// A frozen label is normally opaque, or the bars it is parked over
|
|
4776
|
+
// would scroll through it. A dim row has no bars — that is what dim
|
|
4777
|
+
// means — so it can go transparent and let the row's own muted ground
|
|
4778
|
+
// run the full width. Without this the label column paints `bg-card`
|
|
4779
|
+
// straight over the tint and only the empty track reads as unspent,
|
|
4780
|
+
// which is the half a reader is least likely to look at.
|
|
4781
|
+
dim ? "bg-transparent" : "bg-card",
|
|
4782
|
+
indent && "pl-5",
|
|
4783
|
+
frozenLabels && "sticky left-0 z-10",
|
|
4784
|
+
extra
|
|
4785
|
+
),
|
|
4786
|
+
children: content
|
|
4482
4787
|
}
|
|
4483
4788
|
);
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
"aria-hidden": true,
|
|
4488
|
-
style,
|
|
4489
|
-
className: "w-4 shrink-0 overflow-visible",
|
|
4490
|
-
viewBox: "0 0 16 6",
|
|
4491
|
-
height: "6",
|
|
4492
|
-
fill: "none",
|
|
4493
|
-
children: [
|
|
4494
|
-
/* @__PURE__ */ jsx("path", { d: "M0 3h11", stroke: "currentColor", strokeWidth: "2" }),
|
|
4495
|
-
/* @__PURE__ */ jsx("path", { d: "M10 0l6 3-6 3z", fill: "currentColor" })
|
|
4496
|
-
]
|
|
4497
|
-
}
|
|
4498
|
-
);
|
|
4499
|
-
}
|
|
4500
|
-
var Legend = React23.forwardRef(
|
|
4501
|
-
({ orientation = "row", className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4502
|
-
"div",
|
|
4503
|
-
{
|
|
4504
|
-
ref,
|
|
4505
|
-
role: "list",
|
|
4506
|
-
className: cn(
|
|
4507
|
-
"flex gap-x-3 gap-y-1 text-meta",
|
|
4508
|
-
orientation === "row" ? "flex-wrap items-center" : "flex-col",
|
|
4509
|
-
className
|
|
4510
|
-
),
|
|
4511
|
-
...props,
|
|
4512
|
-
children
|
|
4513
|
-
}
|
|
4514
|
-
)
|
|
4515
|
-
);
|
|
4516
|
-
Legend.displayName = "Legend";
|
|
4517
|
-
var LegendItem = React23.forwardRef(
|
|
4518
|
-
({ kind, color, label, count, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4519
|
-
"div",
|
|
4520
|
-
{
|
|
4521
|
-
ref,
|
|
4522
|
-
role: "listitem",
|
|
4523
|
-
className: cn("flex min-w-0 items-center gap-1.5", className),
|
|
4524
|
-
...props,
|
|
4525
|
-
children: [
|
|
4526
|
-
/* @__PURE__ */ jsx(Swatch, { kind, color }),
|
|
4527
|
-
/* @__PURE__ */ jsx("span", { className: "truncate", children: label }),
|
|
4528
|
-
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", children: count }) : null
|
|
4529
|
-
]
|
|
4530
|
-
}
|
|
4531
|
-
)
|
|
4532
|
-
);
|
|
4533
|
-
LegendItem.displayName = "LegendItem";
|
|
4534
|
-
var MenuItem = ({
|
|
4535
|
-
label,
|
|
4536
|
-
icon: Icon,
|
|
4537
|
-
shortcut,
|
|
4538
|
-
children,
|
|
4539
|
-
className,
|
|
4540
|
-
level = 0,
|
|
4541
|
-
href,
|
|
4542
|
-
onClick
|
|
4543
|
-
}) => {
|
|
4544
|
-
const hasChildren = children && children.length > 0;
|
|
4545
|
-
const ButtonOrLink = href ? "a" : "button";
|
|
4546
|
-
const clickTrigger = href ? { href } : { onClick };
|
|
4547
|
-
return /* @__PURE__ */ jsxs("li", { className: "relative group/item", children: [
|
|
4548
|
-
/* @__PURE__ */ jsxs(
|
|
4549
|
-
ButtonOrLink,
|
|
4789
|
+
const trackFloor = Math.max(minTrackWidth, axisTicks.length * minSlotWidth);
|
|
4790
|
+
const row = (key, head, track, dim) => /* @__PURE__ */ jsxs(
|
|
4791
|
+
"div",
|
|
4550
4792
|
{
|
|
4551
|
-
...clickTrigger,
|
|
4552
4793
|
className: cn(
|
|
4553
|
-
"flex
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
level === 0 ? "font-medium" : "font-normal"
|
|
4558
|
-
// "group-hover/item:bg-accent/50"
|
|
4794
|
+
"flex min-h-12 border-border border-b last:border-b-0",
|
|
4795
|
+
// Muting the text alone said *this row is quiet*; the row has to say
|
|
4796
|
+
// *nothing spends this layer*, which is a band, not a weight.
|
|
4797
|
+
dim && "bg-muted/60"
|
|
4559
4798
|
),
|
|
4560
|
-
role: hasChildren ? "menuitem" : void 0,
|
|
4561
|
-
"aria-haspopup": hasChildren ? "true" : void 0,
|
|
4562
|
-
"aria-expanded": hasChildren ? "true" : void 0,
|
|
4563
4799
|
children: [
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4571
|
-
|
|
4800
|
+
head,
|
|
4801
|
+
/* @__PURE__ */ jsx(
|
|
4802
|
+
"div",
|
|
4803
|
+
{
|
|
4804
|
+
style: { minWidth: `${trackFloor}rem` },
|
|
4805
|
+
className: "relative min-w-0 flex-1",
|
|
4806
|
+
children: track
|
|
4807
|
+
}
|
|
4808
|
+
)
|
|
4809
|
+
]
|
|
4810
|
+
},
|
|
4811
|
+
key
|
|
4812
|
+
);
|
|
4813
|
+
const partOf = (item) => item.part ? bands.find((b) => b.layer === item.layer)?.parts?.find((p) => p.id === item.part) : void 0;
|
|
4814
|
+
const spanLabel = (item) => {
|
|
4815
|
+
const end = item.end ?? item.start + (scale === "seq" ? 1 : 0);
|
|
4816
|
+
if (scale === "seq") {
|
|
4817
|
+
return end - item.start <= 1 ? `step ${item.start}` : `steps ${item.start}\u2013${end - 1}`;
|
|
4818
|
+
}
|
|
4819
|
+
return `${formatElapsed(item.start - d0)} \u2192 ${formatElapsed(
|
|
4820
|
+
end - d0
|
|
4821
|
+
)} \xB7 ${formatElapsed(end - item.start)}`;
|
|
4822
|
+
};
|
|
4823
|
+
const detail = (item) => {
|
|
4824
|
+
if (itemDetail) return itemDetail(item);
|
|
4825
|
+
const state = item.state ?? "declared";
|
|
4826
|
+
const part = partOf(item);
|
|
4827
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
4828
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
4829
|
+
/* @__PURE__ */ jsx(
|
|
4830
|
+
"span",
|
|
4831
|
+
{
|
|
4832
|
+
className: cn(
|
|
4833
|
+
"min-w-0 flex-1 truncate font-mono text-base",
|
|
4834
|
+
state === "refused" && "text-destructive line-through"
|
|
4835
|
+
),
|
|
4836
|
+
children: item.label
|
|
4837
|
+
}
|
|
4838
|
+
),
|
|
4839
|
+
/* @__PURE__ */ jsx(
|
|
4840
|
+
"span",
|
|
4841
|
+
{
|
|
4842
|
+
className: cn(
|
|
4843
|
+
"shrink-0 text-sm",
|
|
4844
|
+
state === "refused" ? "text-destructive" : "text-muted-foreground"
|
|
4845
|
+
),
|
|
4846
|
+
children: stateLabel(state)
|
|
4847
|
+
}
|
|
4848
|
+
)
|
|
4849
|
+
] }),
|
|
4850
|
+
/* @__PURE__ */ jsxs("dl", { className: "grid grid-cols-[auto_1fr] gap-x-2 gap-y-1 text-sm", children: [
|
|
4851
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "layer" }),
|
|
4852
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0", children: /* @__PURE__ */ jsx(LayerChip, { layer: item.layer, palette }) }),
|
|
4853
|
+
part ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4854
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "participant" }),
|
|
4855
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0 break-all font-mono", children: part.label })
|
|
4856
|
+
] }) : null,
|
|
4857
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "when" }),
|
|
4858
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0 tabular-nums", children: spanLabel(item) }),
|
|
4859
|
+
item.note ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4860
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "what it does" }),
|
|
4861
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0 font-mono", children: item.note })
|
|
4862
|
+
] }) : null,
|
|
4863
|
+
item.ruleMatched ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4864
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "refused by" }),
|
|
4865
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0 break-all font-mono text-destructive", children: item.ruleMatched })
|
|
4866
|
+
] }) : null
|
|
4867
|
+
] })
|
|
4868
|
+
] });
|
|
4869
|
+
};
|
|
4870
|
+
const bar = (item, compact = false) => {
|
|
4871
|
+
const state = item.state ?? "declared";
|
|
4872
|
+
const end = item.end ?? item.start + (scale === "seq" ? 1 : 0);
|
|
4873
|
+
const min = compact ? "0.75rem" : "4.5rem";
|
|
4874
|
+
const Tag = onSelectItem ? "button" : "div";
|
|
4875
|
+
const drawn = /* @__PURE__ */ jsxs(
|
|
4876
|
+
Tag,
|
|
4877
|
+
{
|
|
4878
|
+
...onSelectItem ? { type: "button", onClick: () => onSelectItem(item.id) } : {},
|
|
4879
|
+
title: hoverDetail ? void 0 : [item.label, stateLabel(state), item.note, item.ruleMatched].filter(Boolean).join(" \xB7 "),
|
|
4880
|
+
style: (
|
|
4881
|
+
// A bar is at least readable-wide, and one near the end grows
|
|
4882
|
+
// inwards rather than off the track: anchor whichever edge is
|
|
4883
|
+
// nearer its own end of the axis, so the moment it names stays
|
|
4884
|
+
// true where the reader is looking.
|
|
4885
|
+
pct(item.start) > 50 ? {
|
|
4886
|
+
right: `${100 - pct(end)}%`,
|
|
4887
|
+
width: `max(${min}, calc(${pct(end) - pct(item.start)}% - 3px))`
|
|
4888
|
+
} : {
|
|
4889
|
+
left: `${pct(item.start)}%`,
|
|
4890
|
+
width: `max(${min}, calc(${pct(end) - pct(item.start)}% - 3px))`
|
|
4891
|
+
}
|
|
4892
|
+
),
|
|
4893
|
+
className: cn(
|
|
4894
|
+
"-translate-y-1/2 absolute top-1/2 flex min-w-0 items-stretch overflow-hidden rounded-xs border py-0.5 text-left",
|
|
4895
|
+
compact ? "gap-1 pr-1" : "gap-1.5 pr-1.5",
|
|
4896
|
+
// Chosen, not merged. `twMerge` would resolve the kit's own tints
|
|
4897
|
+
// against `border-destructive` correctly, but the tint is a
|
|
4898
|
+
// consumer's string now: a project that paints a layer with its own
|
|
4899
|
+
// utility class (`layer-llm`, a plugin's output) hands `cn` two
|
|
4900
|
+
// classes it cannot see a conflict between, and stylesheet order
|
|
4901
|
+
// would decide whether a refusal reads as refused.
|
|
4902
|
+
state === "refused" ? null : layerPaint(palette, item.layer).tint,
|
|
4903
|
+
STATE_BAR[state] ?? "",
|
|
4904
|
+
onSelectItem && "cursor-pointer hover:bg-accent",
|
|
4905
|
+
selectedItem === item.id && "ring-1 ring-ring",
|
|
4906
|
+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
4907
|
+
),
|
|
4908
|
+
children: [
|
|
4909
|
+
/* @__PURE__ */ jsx(
|
|
4910
|
+
"span",
|
|
4911
|
+
{
|
|
4912
|
+
"aria-hidden": true,
|
|
4913
|
+
className: cn(
|
|
4914
|
+
"w-1 shrink-0",
|
|
4915
|
+
layerPaint(palette, item.layer).swatch
|
|
4916
|
+
)
|
|
4917
|
+
}
|
|
4918
|
+
),
|
|
4919
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col justify-center", children: [
|
|
4920
|
+
/* @__PURE__ */ jsx(
|
|
4921
|
+
"span",
|
|
4922
|
+
{
|
|
4923
|
+
className: cn(
|
|
4924
|
+
"truncate font-mono text-sm",
|
|
4925
|
+
state === "refused" && "text-destructive line-through"
|
|
4926
|
+
),
|
|
4927
|
+
children: item.label
|
|
4928
|
+
}
|
|
4929
|
+
),
|
|
4930
|
+
compact ? null : /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-muted-foreground", children: item.note ?? (state === "declared" ? null : stateLabel(state)) })
|
|
4931
|
+
] })
|
|
4932
|
+
]
|
|
4933
|
+
},
|
|
4934
|
+
item.id
|
|
4935
|
+
);
|
|
4936
|
+
if (!hoverDetail) return drawn;
|
|
4937
|
+
return /* @__PURE__ */ jsxs(HoverCard, { openDelay: 140, closeDelay: 80, children: [
|
|
4938
|
+
/* @__PURE__ */ jsx(HoverCardTrigger, { asChild: true, children: drawn }),
|
|
4939
|
+
/* @__PURE__ */ jsx(
|
|
4940
|
+
HoverCardContent,
|
|
4941
|
+
{
|
|
4942
|
+
align: "start",
|
|
4943
|
+
side: "top",
|
|
4944
|
+
className: "w-auto max-w-80 p-3",
|
|
4945
|
+
children: detail(item)
|
|
4946
|
+
}
|
|
4947
|
+
)
|
|
4948
|
+
] }, item.id);
|
|
4949
|
+
};
|
|
4950
|
+
const bracketLanes = React24.useMemo(() => {
|
|
4951
|
+
const lanes = [];
|
|
4952
|
+
const ordered = [...brackets ?? []].sort(
|
|
4953
|
+
(a, b) => b.end - b.start - (a.end - a.start)
|
|
4954
|
+
);
|
|
4955
|
+
for (const bracket of ordered) {
|
|
4956
|
+
const lane = lanes.find(
|
|
4957
|
+
(existing) => existing.every(
|
|
4958
|
+
(other) => bracket.end <= other.start || bracket.start >= other.end
|
|
4959
|
+
)
|
|
4960
|
+
);
|
|
4961
|
+
if (lane) lane.push(bracket);
|
|
4962
|
+
else lanes.push([bracket]);
|
|
4963
|
+
}
|
|
4964
|
+
return lanes;
|
|
4965
|
+
}, [brackets]);
|
|
4966
|
+
const seamLines = React24.useMemo(() => {
|
|
4967
|
+
const placed = (seams ?? []).filter((seam) => seam.at != null);
|
|
4968
|
+
const loose = (seams ?? []).filter((seam) => seam.at == null);
|
|
4969
|
+
return [...placed.length ? [placed] : [], ...loose.map((s2) => [s2])];
|
|
4970
|
+
}, [seams]);
|
|
4971
|
+
const itemsOf = (layer, part) => items.filter(
|
|
4972
|
+
(i) => i.layer === layer && (part ? i.part === part : !i.part)
|
|
4973
|
+
);
|
|
4974
|
+
const allOf = (layer) => items.filter((i) => i.layer === layer);
|
|
4975
|
+
return /* @__PURE__ */ jsx(
|
|
4976
|
+
"div",
|
|
4977
|
+
{
|
|
4978
|
+
ref,
|
|
4979
|
+
className: cn(
|
|
4980
|
+
"min-w-0 overflow-x-auto rounded-control border border-border bg-card",
|
|
4981
|
+
className
|
|
4982
|
+
),
|
|
4983
|
+
...props,
|
|
4984
|
+
children: /* @__PURE__ */ jsxs("div", { className: "relative min-w-max", children: [
|
|
4985
|
+
seams?.length ? /* @__PURE__ */ jsx(
|
|
4986
|
+
"div",
|
|
4987
|
+
{
|
|
4988
|
+
"aria-hidden": true,
|
|
4989
|
+
style: { left: `${labelWidth}rem` },
|
|
4990
|
+
className: "pointer-events-none absolute inset-y-0 right-0",
|
|
4991
|
+
children: seams.map(
|
|
4992
|
+
(seam) => seam.at == null ? null : /* @__PURE__ */ jsx(
|
|
4993
|
+
"span",
|
|
4994
|
+
{
|
|
4995
|
+
style: { left: `${pct(seam.at)}%` },
|
|
4996
|
+
className: cn(
|
|
4997
|
+
"absolute inset-y-0 border-l",
|
|
4998
|
+
seam.conditional ? "border-dashed border-muted-foreground/45" : "border-muted-foreground/60"
|
|
4999
|
+
)
|
|
5000
|
+
},
|
|
5001
|
+
seam.id
|
|
5002
|
+
)
|
|
5003
|
+
)
|
|
5004
|
+
}
|
|
5005
|
+
) : null,
|
|
5006
|
+
row(
|
|
5007
|
+
"axis",
|
|
5008
|
+
label(
|
|
5009
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5010
|
+
collapsible && withParts.length > 0 ? /* @__PURE__ */ jsxs(
|
|
5011
|
+
"button",
|
|
5012
|
+
{
|
|
5013
|
+
type: "button",
|
|
5014
|
+
onClick: () => setShut(allShut ? [] : withParts.map((b) => b.layer)),
|
|
5015
|
+
className: "-ml-1 flex items-center gap-0.5 rounded-xs px-1 text-sm text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
5016
|
+
children: [
|
|
5017
|
+
allShut ? /* @__PURE__ */ jsx(ChevronRight, { "aria-hidden": true, className: "size-3 shrink-0" }) : /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": true, className: "size-3 shrink-0" }),
|
|
5018
|
+
allShut ? "expand all" : "collapse all"
|
|
5019
|
+
]
|
|
5020
|
+
}
|
|
5021
|
+
) : /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "layer" }),
|
|
5022
|
+
/* @__PURE__ */ jsx("span", { className: "ml-auto text-sm text-muted-foreground/70", children: scale === "seq" ? "step" : "elapsed" })
|
|
5023
|
+
] }),
|
|
5024
|
+
"min-h-0 py-1"
|
|
5025
|
+
),
|
|
5026
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0", children: axisTicks.map((value) => {
|
|
5027
|
+
const atEnd = pct(value) > 99;
|
|
5028
|
+
return /* @__PURE__ */ jsx(
|
|
5029
|
+
"span",
|
|
5030
|
+
{
|
|
5031
|
+
style: atEnd ? { right: 0 } : { left: `${pct(value)}%` },
|
|
5032
|
+
className: cn(
|
|
5033
|
+
"absolute inset-y-0 text-sm text-muted-foreground",
|
|
5034
|
+
atEnd ? "border-border/60 border-r pr-1" : "border-border/60 border-l pl-1"
|
|
5035
|
+
),
|
|
5036
|
+
children: tickLabel(value)
|
|
5037
|
+
},
|
|
5038
|
+
value
|
|
5039
|
+
);
|
|
5040
|
+
}) })
|
|
5041
|
+
),
|
|
5042
|
+
bracketLanes.map(
|
|
5043
|
+
(lane, laneIndex) => row(
|
|
5044
|
+
`brackets-${laneIndex}`,
|
|
5045
|
+
label(
|
|
5046
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: laneIndex === 0 ? "its bound" : "" }),
|
|
5047
|
+
"min-h-0 py-1"
|
|
5048
|
+
),
|
|
5049
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 py-1", children: lane.map((bracket) => /* @__PURE__ */ jsx(
|
|
5050
|
+
"span",
|
|
5051
|
+
{
|
|
5052
|
+
style: {
|
|
5053
|
+
left: `${pct(bracket.start)}%`,
|
|
5054
|
+
width: `${pct(bracket.end) - pct(bracket.start)}%`
|
|
5055
|
+
},
|
|
5056
|
+
className: "absolute inset-y-1 flex items-center justify-center truncate rounded-xs border border-border border-dashed px-1 text-sm text-muted-foreground",
|
|
5057
|
+
children: bracket.label
|
|
5058
|
+
},
|
|
5059
|
+
bracket.id
|
|
5060
|
+
)) })
|
|
5061
|
+
)
|
|
5062
|
+
),
|
|
5063
|
+
seamLines.map(
|
|
5064
|
+
(line, lineIndex) => row(
|
|
5065
|
+
`seams-${lineIndex}`,
|
|
5066
|
+
label(
|
|
5067
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: lineIndex === 0 ? "its gates" : "" })
|
|
5068
|
+
),
|
|
5069
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0", children: line.map((seam) => {
|
|
5070
|
+
const named = /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col justify-center", children: [
|
|
5071
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm", children: seam.label }),
|
|
5072
|
+
seam.note ? /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-muted-foreground", children: seam.note }) : null
|
|
5073
|
+
] });
|
|
5074
|
+
if (seam.at == null)
|
|
5075
|
+
return /* @__PURE__ */ jsx(
|
|
5076
|
+
"span",
|
|
5077
|
+
{
|
|
5078
|
+
className: "absolute inset-x-0 inset-y-1.5 flex items-center justify-center rounded-xs border border-dotted border-muted-foreground/45 px-1.5 text-muted-foreground",
|
|
5079
|
+
children: named
|
|
5080
|
+
},
|
|
5081
|
+
seam.id
|
|
5082
|
+
);
|
|
5083
|
+
const after = seam.edge === "after";
|
|
5084
|
+
const neighbours = line.map((other) => other.at).filter((value) => value != null);
|
|
5085
|
+
const bound = after ? pct(seam.at) - Math.max(
|
|
5086
|
+
...neighbours.filter((v) => v < (seam.at ?? 0)).map(pct),
|
|
5087
|
+
0
|
|
5088
|
+
) : Math.min(
|
|
5089
|
+
...neighbours.filter((v) => v > (seam.at ?? 0)).map(pct),
|
|
5090
|
+
100
|
|
5091
|
+
) - pct(seam.at);
|
|
5092
|
+
return /* @__PURE__ */ jsx(
|
|
5093
|
+
"span",
|
|
5094
|
+
{
|
|
5095
|
+
style: {
|
|
5096
|
+
maxWidth: `${Math.max(bound, 12)}%`,
|
|
5097
|
+
...after ? { right: `${100 - pct(seam.at)}%` } : { left: `${pct(seam.at)}%` }
|
|
5098
|
+
},
|
|
5099
|
+
className: cn(
|
|
5100
|
+
// The label hangs off the side the cost falls on:
|
|
5101
|
+
// before the line, nothing is spent; after it, the
|
|
5102
|
+
// pass is already paid for.
|
|
5103
|
+
"absolute inset-y-1.5 flex items-center bg-card px-1.5 text-muted-foreground",
|
|
5104
|
+
after ? "border-r-2 text-right" : "border-l-2",
|
|
5105
|
+
seam.conditional ? "border-dashed border-muted-foreground/45" : "border-muted-foreground/70"
|
|
5106
|
+
),
|
|
5107
|
+
children: named
|
|
5108
|
+
},
|
|
5109
|
+
seam.id
|
|
5110
|
+
);
|
|
5111
|
+
}) })
|
|
5112
|
+
)
|
|
5113
|
+
),
|
|
5114
|
+
bands.map((band) => {
|
|
5115
|
+
const own = itemsOf(band.layer);
|
|
5116
|
+
const parts = band.parts ?? [];
|
|
5117
|
+
const dim = allOf(band.layer).length === 0;
|
|
5118
|
+
const spine = band.spine ?? false;
|
|
5119
|
+
const foldable = collapsible && parts.length > 0;
|
|
5120
|
+
const isShut = foldable && shut.includes(band.layer);
|
|
5121
|
+
const onLine = isShut ? allOf(band.layer) : own;
|
|
5122
|
+
return /* @__PURE__ */ jsxs(React24.Fragment, { children: [
|
|
5123
|
+
row(
|
|
5124
|
+
band.layer,
|
|
5125
|
+
label(
|
|
5126
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5127
|
+
foldable ? /* @__PURE__ */ jsxs(
|
|
5128
|
+
"button",
|
|
5129
|
+
{
|
|
5130
|
+
type: "button",
|
|
5131
|
+
"aria-expanded": !isShut,
|
|
5132
|
+
"aria-label": `${isShut ? "Show" : "Hide"} the ${parts.length} participants under ${band.layer}`,
|
|
5133
|
+
onClick: () => setShut(
|
|
5134
|
+
isShut ? shut.filter((l) => l !== band.layer) : [...shut, band.layer]
|
|
5135
|
+
),
|
|
5136
|
+
className: "-ml-1 flex shrink-0 items-center gap-1 rounded-xs px-1 hover:bg-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
5137
|
+
children: [
|
|
5138
|
+
isShut ? /* @__PURE__ */ jsx(
|
|
5139
|
+
ChevronRight,
|
|
5140
|
+
{
|
|
5141
|
+
"aria-hidden": true,
|
|
5142
|
+
className: "size-3 shrink-0 text-muted-foreground"
|
|
5143
|
+
}
|
|
5144
|
+
) : /* @__PURE__ */ jsx(
|
|
5145
|
+
ChevronDown,
|
|
5146
|
+
{
|
|
5147
|
+
"aria-hidden": true,
|
|
5148
|
+
className: "size-3 shrink-0 text-muted-foreground"
|
|
5149
|
+
}
|
|
5150
|
+
),
|
|
5151
|
+
band.label ?? /* @__PURE__ */ jsx(
|
|
5152
|
+
LayerChip,
|
|
5153
|
+
{
|
|
5154
|
+
layer: band.layer,
|
|
5155
|
+
dim,
|
|
5156
|
+
palette
|
|
5157
|
+
}
|
|
5158
|
+
)
|
|
5159
|
+
]
|
|
5160
|
+
}
|
|
5161
|
+
) : /* @__PURE__ */ jsx("span", { className: "shrink-0 pl-4", children: band.label ?? /* @__PURE__ */ jsx(
|
|
5162
|
+
LayerChip,
|
|
5163
|
+
{
|
|
5164
|
+
layer: band.layer,
|
|
5165
|
+
dim,
|
|
5166
|
+
palette
|
|
5167
|
+
}
|
|
5168
|
+
) }),
|
|
5169
|
+
band.note ? /* @__PURE__ */ jsx(
|
|
5170
|
+
"span",
|
|
5171
|
+
{
|
|
5172
|
+
title: band.note,
|
|
5173
|
+
className: cn(
|
|
5174
|
+
"ml-auto min-w-0 truncate text-sm",
|
|
5175
|
+
dim ? "text-muted-foreground/70" : "text-muted-foreground"
|
|
5176
|
+
),
|
|
5177
|
+
children: band.note
|
|
5178
|
+
}
|
|
5179
|
+
) : null
|
|
5180
|
+
] }),
|
|
5181
|
+
void 0,
|
|
5182
|
+
false,
|
|
5183
|
+
dim
|
|
5184
|
+
),
|
|
5185
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5186
|
+
spine ? /* @__PURE__ */ jsx(
|
|
5187
|
+
"span",
|
|
5188
|
+
{
|
|
5189
|
+
"aria-hidden": true,
|
|
5190
|
+
className: "-translate-y-1/2 absolute inset-x-0 top-1/2 border-border border-t"
|
|
5191
|
+
}
|
|
5192
|
+
) : null,
|
|
5193
|
+
onLine.map((item) => bar(item, isShut))
|
|
5194
|
+
] }),
|
|
5195
|
+
dim
|
|
5196
|
+
),
|
|
5197
|
+
(isShut ? [] : parts).map((part) => {
|
|
5198
|
+
const spent = itemsOf(band.layer, part.id);
|
|
5199
|
+
const unspent = spent.length === 0;
|
|
5200
|
+
return row(
|
|
5201
|
+
`${band.layer}-${part.id}`,
|
|
5202
|
+
label(
|
|
5203
|
+
/* @__PURE__ */ jsxs(
|
|
5204
|
+
"span",
|
|
5205
|
+
{
|
|
5206
|
+
className: "flex min-w-0 flex-col",
|
|
5207
|
+
title: part.label,
|
|
5208
|
+
children: [
|
|
5209
|
+
/* @__PURE__ */ jsx(
|
|
5210
|
+
"span",
|
|
5211
|
+
{
|
|
5212
|
+
className: cn(
|
|
5213
|
+
"truncate font-mono text-sm",
|
|
5214
|
+
// The address wears its layer, so the row and the
|
|
5215
|
+
// band's dot are visibly one thing. Unspent
|
|
5216
|
+
// overrides it: *this was never reached* outranks
|
|
5217
|
+
// *this is graph data*.
|
|
5218
|
+
unspent ? "text-muted-foreground/70" : layerPaint(palette, band.layer).text
|
|
5219
|
+
),
|
|
5220
|
+
children: part.label
|
|
5221
|
+
}
|
|
5222
|
+
),
|
|
5223
|
+
part.note ? /* @__PURE__ */ jsx(
|
|
5224
|
+
"span",
|
|
5225
|
+
{
|
|
5226
|
+
className: cn(
|
|
5227
|
+
// What the participant owes sits a rung under the
|
|
5228
|
+
// address that owes it. At the same size the two
|
|
5229
|
+
// lines read as one wrapped label.
|
|
5230
|
+
"truncate text-xs",
|
|
5231
|
+
unspent ? "text-muted-foreground/70" : "text-muted-foreground"
|
|
5232
|
+
),
|
|
5233
|
+
children: part.note
|
|
5234
|
+
}
|
|
5235
|
+
) : null
|
|
5236
|
+
]
|
|
5237
|
+
}
|
|
5238
|
+
),
|
|
5239
|
+
void 0,
|
|
5240
|
+
true,
|
|
5241
|
+
unspent
|
|
5242
|
+
),
|
|
5243
|
+
spent.map((item) => bar(item)),
|
|
5244
|
+
unspent
|
|
5245
|
+
);
|
|
5246
|
+
})
|
|
5247
|
+
] }, band.layer);
|
|
5248
|
+
})
|
|
5249
|
+
] })
|
|
5250
|
+
}
|
|
5251
|
+
);
|
|
5252
|
+
}
|
|
5253
|
+
);
|
|
5254
|
+
LayerStrip.displayName = "LayerStrip";
|
|
5255
|
+
function Swatch({ kind = "dot", color }) {
|
|
5256
|
+
const style = { color };
|
|
5257
|
+
if (kind === "dot")
|
|
5258
|
+
return /* @__PURE__ */ jsx(
|
|
5259
|
+
"span",
|
|
5260
|
+
{
|
|
5261
|
+
"aria-hidden": true,
|
|
5262
|
+
style,
|
|
5263
|
+
className: "size-2 shrink-0 rounded-full bg-current"
|
|
5264
|
+
}
|
|
5265
|
+
);
|
|
5266
|
+
if (kind === "ring")
|
|
5267
|
+
return /* @__PURE__ */ jsx(
|
|
5268
|
+
"span",
|
|
5269
|
+
{
|
|
5270
|
+
"aria-hidden": true,
|
|
5271
|
+
style,
|
|
5272
|
+
className: "size-2 shrink-0 rounded-full border-[1.5px] border-current"
|
|
5273
|
+
}
|
|
5274
|
+
);
|
|
5275
|
+
if (kind === "line")
|
|
5276
|
+
return /* @__PURE__ */ jsx("span", { "aria-hidden": true, style, className: "h-0.5 w-4 shrink-0 bg-current" });
|
|
5277
|
+
if (kind === "dashed")
|
|
5278
|
+
return /* @__PURE__ */ jsx(
|
|
5279
|
+
"span",
|
|
5280
|
+
{
|
|
5281
|
+
"aria-hidden": true,
|
|
5282
|
+
style,
|
|
5283
|
+
className: "h-0 w-4 shrink-0 border-t-[1.5px] border-dashed border-current"
|
|
5284
|
+
}
|
|
5285
|
+
);
|
|
5286
|
+
return /* @__PURE__ */ jsxs(
|
|
5287
|
+
"svg",
|
|
5288
|
+
{
|
|
5289
|
+
"aria-hidden": true,
|
|
5290
|
+
style,
|
|
5291
|
+
className: "w-4 shrink-0 overflow-visible",
|
|
5292
|
+
viewBox: "0 0 16 6",
|
|
5293
|
+
height: "6",
|
|
5294
|
+
fill: "none",
|
|
5295
|
+
children: [
|
|
5296
|
+
/* @__PURE__ */ jsx("path", { d: "M0 3h11", stroke: "currentColor", strokeWidth: "2" }),
|
|
5297
|
+
/* @__PURE__ */ jsx("path", { d: "M10 0l6 3-6 3z", fill: "currentColor" })
|
|
5298
|
+
]
|
|
5299
|
+
}
|
|
5300
|
+
);
|
|
5301
|
+
}
|
|
5302
|
+
var Legend = React24.forwardRef(
|
|
5303
|
+
({ orientation = "row", className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5304
|
+
"div",
|
|
5305
|
+
{
|
|
5306
|
+
ref,
|
|
5307
|
+
role: "list",
|
|
5308
|
+
className: cn(
|
|
5309
|
+
"flex gap-x-3 gap-y-1 text-sm",
|
|
5310
|
+
orientation === "row" ? "flex-wrap items-center" : "flex-col",
|
|
5311
|
+
className
|
|
5312
|
+
),
|
|
5313
|
+
...props,
|
|
5314
|
+
children
|
|
5315
|
+
}
|
|
5316
|
+
)
|
|
5317
|
+
);
|
|
5318
|
+
Legend.displayName = "Legend";
|
|
5319
|
+
var LegendItem = React24.forwardRef(
|
|
5320
|
+
({ kind, color, label, count, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5321
|
+
"div",
|
|
5322
|
+
{
|
|
5323
|
+
ref,
|
|
5324
|
+
role: "listitem",
|
|
5325
|
+
className: cn("flex min-w-0 items-center gap-1.5", className),
|
|
5326
|
+
...props,
|
|
5327
|
+
children: [
|
|
5328
|
+
/* @__PURE__ */ jsx(Swatch, { kind, color }),
|
|
5329
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: label }),
|
|
5330
|
+
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", children: count }) : null
|
|
5331
|
+
]
|
|
5332
|
+
}
|
|
5333
|
+
)
|
|
5334
|
+
);
|
|
5335
|
+
LegendItem.displayName = "LegendItem";
|
|
5336
|
+
var LensChip = React24.forwardRef(
|
|
5337
|
+
({ lens, onPick, className, ...props }, ref) => {
|
|
5338
|
+
const label = lens?.name ?? "Everything";
|
|
5339
|
+
const unset = lens == null;
|
|
5340
|
+
const body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5341
|
+
/* @__PURE__ */ jsx(
|
|
5342
|
+
"span",
|
|
5343
|
+
{
|
|
5344
|
+
"aria-hidden": true,
|
|
5345
|
+
className: cn(
|
|
5346
|
+
"size-1.5 shrink-0 rounded-full",
|
|
5347
|
+
unset ? "bg-muted-foreground" : "bg-primary"
|
|
5348
|
+
)
|
|
5349
|
+
}
|
|
5350
|
+
),
|
|
5351
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: label })
|
|
5352
|
+
] });
|
|
5353
|
+
const shell = cn(
|
|
5354
|
+
"inline-flex min-w-0 max-w-full items-center gap-1.5 rounded-control",
|
|
5355
|
+
"border border-border px-1.5 py-0.5 text-sm",
|
|
5356
|
+
unset ? "text-muted-foreground" : "text-foreground",
|
|
5357
|
+
className
|
|
5358
|
+
);
|
|
5359
|
+
if (onPick) {
|
|
5360
|
+
return /* @__PURE__ */ jsx("span", { ref, className: "inline-flex min-w-0", ...props, children: /* @__PURE__ */ jsx(
|
|
5361
|
+
"button",
|
|
5362
|
+
{
|
|
5363
|
+
type: "button",
|
|
5364
|
+
onClick: onPick,
|
|
5365
|
+
title: unset ? "Everything \u2014 the whole model, inside the guardrails" : label,
|
|
5366
|
+
className: cn(
|
|
5367
|
+
shell,
|
|
5368
|
+
"cursor-pointer hover:bg-accent",
|
|
5369
|
+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
5370
|
+
),
|
|
5371
|
+
children: body
|
|
5372
|
+
}
|
|
5373
|
+
) });
|
|
5374
|
+
}
|
|
5375
|
+
return /* @__PURE__ */ jsx("span", { ref, className: shell, title: label, ...props, children: body });
|
|
5376
|
+
}
|
|
5377
|
+
);
|
|
5378
|
+
LensChip.displayName = "LensChip";
|
|
5379
|
+
function describe(n, palette) {
|
|
5380
|
+
switch (n.kind) {
|
|
5381
|
+
case "allow":
|
|
5382
|
+
return `${n.count} allow`;
|
|
5383
|
+
case "deny":
|
|
5384
|
+
return `${n.count} deny`;
|
|
5385
|
+
case "sliced":
|
|
5386
|
+
return "sliced";
|
|
5387
|
+
case "excludes":
|
|
5388
|
+
return `excludes ${n.properties.join(", ")}`;
|
|
5389
|
+
case "casts":
|
|
5390
|
+
return `casts ${n.roles.join(", ")}`;
|
|
5391
|
+
case "closes":
|
|
5392
|
+
return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
5393
|
+
"closes",
|
|
5394
|
+
n.layers.map((layer) => /* @__PURE__ */ jsx(LayerChip, { layer, palette }, layer))
|
|
5395
|
+
] });
|
|
5396
|
+
}
|
|
5397
|
+
}
|
|
5398
|
+
var LensRow = React24.forwardRef(
|
|
5399
|
+
({ name, narrows = [], usage, selected, onSelect, palette, className, ...props }, ref) => {
|
|
5400
|
+
const interactive = Boolean(onSelect);
|
|
5401
|
+
return /* @__PURE__ */ jsxs(
|
|
5402
|
+
"div",
|
|
5403
|
+
{
|
|
5404
|
+
ref,
|
|
5405
|
+
role: interactive ? "button" : void 0,
|
|
5406
|
+
tabIndex: interactive ? 0 : void 0,
|
|
5407
|
+
"aria-pressed": interactive ? Boolean(selected) : void 0,
|
|
5408
|
+
onClick: interactive ? () => onSelect?.(name) : void 0,
|
|
5409
|
+
onKeyDown: interactive ? (event) => {
|
|
5410
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
5411
|
+
event.preventDefault();
|
|
5412
|
+
onSelect?.(name);
|
|
5413
|
+
}
|
|
5414
|
+
} : void 0,
|
|
5415
|
+
className: cn(
|
|
5416
|
+
"flex min-w-0 flex-col gap-0.5 rounded-control px-2 py-1.5",
|
|
5417
|
+
interactive && "cursor-pointer hover:bg-accent",
|
|
5418
|
+
selected && "bg-accent",
|
|
5419
|
+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
5420
|
+
className
|
|
5421
|
+
),
|
|
5422
|
+
...props,
|
|
5423
|
+
children: [
|
|
5424
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-baseline gap-2", children: [
|
|
5425
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-base font-medium text-foreground", children: name }),
|
|
5426
|
+
usage ? /* @__PURE__ */ jsxs("span", { className: "ml-auto shrink-0 text-sm text-muted-foreground", children: [
|
|
5427
|
+
"used in ",
|
|
5428
|
+
usage.runs,
|
|
5429
|
+
" run",
|
|
5430
|
+
usage.runs === 1 ? "" : "s",
|
|
5431
|
+
usage.lastUsed ? ` \xB7 last ${usage.lastUsed}` : ""
|
|
5432
|
+
] }) : null
|
|
5433
|
+
] }),
|
|
5434
|
+
narrows.length ? /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-sm text-muted-foreground", children: narrows.map((n, i) => /* @__PURE__ */ jsxs(React24.Fragment, { children: [
|
|
5435
|
+
i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "opacity-40", children: "\xB7" }) : null,
|
|
5436
|
+
/* @__PURE__ */ jsx("span", { className: "inline-flex items-center", children: describe(n, palette) })
|
|
5437
|
+
] }, `${n.kind}-${i}`)) }) : /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground/70", children: "narrows nothing \u2014 the whole model, inside the guardrails" })
|
|
5438
|
+
]
|
|
5439
|
+
}
|
|
5440
|
+
);
|
|
5441
|
+
}
|
|
5442
|
+
);
|
|
5443
|
+
LensRow.displayName = "LensRow";
|
|
5444
|
+
var MatchPreview = React24.forwardRef(
|
|
5445
|
+
({ pattern, matches = [], loading, limit = 8, className, ...props }, ref) => {
|
|
5446
|
+
const hits = matches.filter((m) => m.matched);
|
|
5447
|
+
const misses = matches.filter((m) => !m.matched);
|
|
5448
|
+
const shown = [...hits, ...misses].slice(0, limit);
|
|
5449
|
+
const hidden = matches.length - shown.length;
|
|
5450
|
+
return /* @__PURE__ */ jsxs(
|
|
5451
|
+
"div",
|
|
5452
|
+
{
|
|
5453
|
+
ref,
|
|
5454
|
+
className: cn(
|
|
5455
|
+
"flex min-w-0 flex-col gap-1 rounded-control border border-border p-2",
|
|
5456
|
+
className
|
|
5457
|
+
),
|
|
5458
|
+
...props,
|
|
5459
|
+
children: [
|
|
5460
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-baseline gap-2", children: [
|
|
5461
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "what this matches" }),
|
|
5462
|
+
/* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 text-sm tabular-nums text-muted-foreground", children: loading ? "\u2026" : `${hits.length} of ${matches.length}` })
|
|
5463
|
+
] }),
|
|
5464
|
+
loading ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 py-0.5", children: [
|
|
5465
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-3/5" }),
|
|
5466
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-2/5" }),
|
|
5467
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-1/2" })
|
|
5468
|
+
] }) : matches.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground/70", children: "nothing in this Graph to match \u2014 the layer has no participants yet" }) : hits.length === 0 ? /* @__PURE__ */ jsxs("p", { className: "text-sm text-destructive", children: [
|
|
5469
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono", children: pattern }),
|
|
5470
|
+
" matches nothing here"
|
|
5471
|
+
] }) : null,
|
|
5472
|
+
!loading && shown.length ? /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [
|
|
5473
|
+
shown.map((m) => /* @__PURE__ */ jsx(
|
|
5474
|
+
AddressChip,
|
|
5475
|
+
{
|
|
5476
|
+
address: m.address,
|
|
5477
|
+
tone: m.matched ? "allowed" : "untouched"
|
|
5478
|
+
},
|
|
5479
|
+
m.address
|
|
5480
|
+
)),
|
|
5481
|
+
hidden > 0 ? /* @__PURE__ */ jsxs("span", { className: "pt-0.5 text-sm text-muted-foreground/70", children: [
|
|
5482
|
+
"and ",
|
|
5483
|
+
hidden,
|
|
5484
|
+
" more"
|
|
5485
|
+
] }) : null
|
|
5486
|
+
] }) : null
|
|
5487
|
+
]
|
|
5488
|
+
}
|
|
5489
|
+
);
|
|
5490
|
+
}
|
|
5491
|
+
);
|
|
5492
|
+
MatchPreview.displayName = "MatchPreview";
|
|
5493
|
+
var MenuItem = ({
|
|
5494
|
+
label,
|
|
5495
|
+
icon: Icon,
|
|
5496
|
+
shortcut,
|
|
5497
|
+
children,
|
|
5498
|
+
className,
|
|
5499
|
+
level = 0,
|
|
5500
|
+
href,
|
|
5501
|
+
onClick
|
|
5502
|
+
}) => {
|
|
5503
|
+
const hasChildren = children && children.length > 0;
|
|
5504
|
+
const ButtonOrLink = href ? "a" : "button";
|
|
5505
|
+
const clickTrigger = href ? { href } : { onClick };
|
|
5506
|
+
return /* @__PURE__ */ jsxs("li", { className: "relative group/item", children: [
|
|
5507
|
+
/* @__PURE__ */ jsxs(
|
|
5508
|
+
ButtonOrLink,
|
|
5509
|
+
{
|
|
5510
|
+
...clickTrigger,
|
|
5511
|
+
className: cn(
|
|
5512
|
+
"flex w-full items-center justify-between px-4 py-2 ",
|
|
5513
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
5514
|
+
"focus-visible:bg-accent focus-visible:text-accent-foreground focus-visible:outline-none",
|
|
5515
|
+
className,
|
|
5516
|
+
level === 0 ? "font-medium" : "font-normal"
|
|
5517
|
+
// "group-hover/item:bg-accent/50"
|
|
5518
|
+
),
|
|
5519
|
+
role: hasChildren ? "menuitem" : void 0,
|
|
5520
|
+
"aria-haspopup": hasChildren ? "true" : void 0,
|
|
5521
|
+
"aria-expanded": hasChildren ? "true" : void 0,
|
|
5522
|
+
children: [
|
|
5523
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
5524
|
+
Icon && /* @__PURE__ */ jsx(Icon, { className: "h-4 w-4" }),
|
|
5525
|
+
/* @__PURE__ */ jsx("span", { children: label })
|
|
5526
|
+
] }),
|
|
5527
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
5528
|
+
shortcut && /* @__PURE__ */ jsx("kbd", { className: "pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100", children: shortcut }),
|
|
5529
|
+
hasChildren && /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" })
|
|
5530
|
+
] })
|
|
4572
5531
|
]
|
|
4573
5532
|
}
|
|
4574
5533
|
),
|
|
@@ -4591,14 +5550,14 @@ var MenuItem = ({
|
|
|
4591
5550
|
)
|
|
4592
5551
|
] });
|
|
4593
5552
|
};
|
|
4594
|
-
var
|
|
5553
|
+
var TONE2 = {
|
|
4595
5554
|
running: "text-info",
|
|
4596
5555
|
success: "text-success",
|
|
4597
5556
|
warning: "text-warning",
|
|
4598
5557
|
error: "text-destructive",
|
|
4599
5558
|
info: "text-info"
|
|
4600
5559
|
};
|
|
4601
|
-
var MetricTile =
|
|
5560
|
+
var MetricTile = React24.forwardRef(
|
|
4602
5561
|
({ label, value, caption, tone, meter, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4603
5562
|
"div",
|
|
4604
5563
|
{
|
|
@@ -4609,7 +5568,7 @@ var MetricTile = React23.forwardRef(
|
|
|
4609
5568
|
),
|
|
4610
5569
|
...props,
|
|
4611
5570
|
children: [
|
|
4612
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
5571
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold uppercase tracking-wide text-muted-foreground", children: label }),
|
|
4613
5572
|
/* @__PURE__ */ jsx(
|
|
4614
5573
|
"span",
|
|
4615
5574
|
{
|
|
@@ -4618,12 +5577,12 @@ var MetricTile = React23.forwardRef(
|
|
|
4618
5577
|
// `1,880` and `2 / 5` in adjacent tiles sit at different widths, and
|
|
4619
5578
|
// a strip of six stops reading as one row of numbers.
|
|
4620
5579
|
"font-mono text-lg font-semibold leading-tight",
|
|
4621
|
-
tone ?
|
|
5580
|
+
tone ? TONE2[tone] ?? "text-foreground" : void 0
|
|
4622
5581
|
),
|
|
4623
5582
|
children: value
|
|
4624
5583
|
}
|
|
4625
5584
|
),
|
|
4626
|
-
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
5585
|
+
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: caption }) : null,
|
|
4627
5586
|
meter != null ? (
|
|
4628
5587
|
// Not a <Progress>: that is a control-sized, rounded, animated bar for
|
|
4629
5588
|
// work in flight. This is a 4px rule that says how much of a ceiling is
|
|
@@ -4637,7 +5596,7 @@ var MetricTile = React23.forwardRef(
|
|
|
4637
5596
|
children: /* @__PURE__ */ jsx(
|
|
4638
5597
|
"div",
|
|
4639
5598
|
{
|
|
4640
|
-
className: cn("h-full", tone ?
|
|
5599
|
+
className: cn("h-full", tone ? TONE2[tone] ?? "text-foreground" : "text-primary", "bg-current"),
|
|
4641
5600
|
style: { width: `${Math.min(Math.max(meter, 0), 1) * 100}%` }
|
|
4642
5601
|
}
|
|
4643
5602
|
)
|
|
@@ -4650,7 +5609,7 @@ var MetricTile = React23.forwardRef(
|
|
|
4650
5609
|
)
|
|
4651
5610
|
);
|
|
4652
5611
|
MetricTile.displayName = "MetricTile";
|
|
4653
|
-
var MetricGrid =
|
|
5612
|
+
var MetricGrid = React24.forwardRef(
|
|
4654
5613
|
({ minTileWidth = 120, gap = 6, className, style, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4655
5614
|
"div",
|
|
4656
5615
|
{
|
|
@@ -4709,28 +5668,7 @@ var NestedMenu = (props) => {
|
|
|
4709
5668
|
}
|
|
4710
5669
|
);
|
|
4711
5670
|
};
|
|
4712
|
-
var
|
|
4713
|
-
({ aside, tone = "muted", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4714
|
-
"div",
|
|
4715
|
-
{
|
|
4716
|
-
ref,
|
|
4717
|
-
className: cn(
|
|
4718
|
-
"flex items-baseline gap-2 text-meta font-semibold uppercase tracking-wide",
|
|
4719
|
-
tone === "muted" && "text-muted-foreground",
|
|
4720
|
-
tone === "foreground" && "text-foreground",
|
|
4721
|
-
tone === "accent" && "text-primary",
|
|
4722
|
-
className
|
|
4723
|
-
),
|
|
4724
|
-
...props,
|
|
4725
|
-
children: [
|
|
4726
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children }),
|
|
4727
|
-
aside != null ? /* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 font-normal normal-case tracking-normal text-muted-foreground", children: aside }) : null
|
|
4728
|
-
]
|
|
4729
|
-
}
|
|
4730
|
-
)
|
|
4731
|
-
);
|
|
4732
|
-
Eyebrow.displayName = "Eyebrow";
|
|
4733
|
-
var PanelBox = React23.forwardRef(
|
|
5671
|
+
var PanelBox = React24.forwardRef(
|
|
4734
5672
|
({ title, aside, flush, className, headerClassName, bodyClassName, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4735
5673
|
Card,
|
|
4736
5674
|
{
|
|
@@ -4821,13 +5759,13 @@ function PanelStack({
|
|
|
4821
5759
|
headerClassName,
|
|
4822
5760
|
bodyClassName
|
|
4823
5761
|
}) {
|
|
4824
|
-
const groupRef =
|
|
4825
|
-
const refs =
|
|
4826
|
-
const [collapsed, setCollapsed] =
|
|
5762
|
+
const groupRef = React24.useRef(null);
|
|
5763
|
+
const refs = React24.useRef({});
|
|
5764
|
+
const [collapsed, setCollapsed] = React24.useState(
|
|
4827
5765
|
() => Object.fromEntries(sections.map((s) => [s.id, !!s.defaultCollapsed]))
|
|
4828
5766
|
);
|
|
4829
|
-
const didInit =
|
|
4830
|
-
|
|
5767
|
+
const didInit = React24.useRef(false);
|
|
5768
|
+
React24.useLayoutEffect(() => {
|
|
4831
5769
|
if (didInit.current) return;
|
|
4832
5770
|
didInit.current = true;
|
|
4833
5771
|
const targets = sections.filter((s) => s.defaultCollapsed);
|
|
@@ -4859,18 +5797,18 @@ function PanelStack({
|
|
|
4859
5797
|
for (const s of targets) refs.current[s.id]?.collapse();
|
|
4860
5798
|
group.setLayout(next);
|
|
4861
5799
|
}, []);
|
|
4862
|
-
const notify =
|
|
4863
|
-
|
|
5800
|
+
const notify = React24.useRef(onCollapsedChange);
|
|
5801
|
+
React24.useEffect(() => {
|
|
4864
5802
|
notify.current = onCollapsedChange;
|
|
4865
5803
|
}, [onCollapsedChange]);
|
|
4866
|
-
const collapsedRef =
|
|
5804
|
+
const collapsedRef = React24.useRef(collapsed);
|
|
4867
5805
|
collapsedRef.current = collapsed;
|
|
4868
|
-
const collapsePanel =
|
|
5806
|
+
const collapsePanel = React24.useCallback((id) => {
|
|
4869
5807
|
const ref = refs.current[id];
|
|
4870
5808
|
if (!ref || ref.isCollapsed()) return;
|
|
4871
5809
|
ref.collapse();
|
|
4872
5810
|
}, []);
|
|
4873
|
-
const expandPanel =
|
|
5811
|
+
const expandPanel = React24.useCallback((id) => {
|
|
4874
5812
|
const ref = refs.current[id];
|
|
4875
5813
|
if (!ref || !ref.isCollapsed()) return;
|
|
4876
5814
|
ref.expand();
|
|
@@ -4888,7 +5826,7 @@ function PanelStack({
|
|
|
4888
5826
|
[donorId]: donorPct - share
|
|
4889
5827
|
});
|
|
4890
5828
|
}, []);
|
|
4891
|
-
const toggle =
|
|
5829
|
+
const toggle = React24.useCallback(
|
|
4892
5830
|
(id) => {
|
|
4893
5831
|
const ref = refs.current[id];
|
|
4894
5832
|
if (!ref) return;
|
|
@@ -4897,7 +5835,7 @@ function PanelStack({
|
|
|
4897
5835
|
},
|
|
4898
5836
|
[expandPanel, collapsePanel]
|
|
4899
5837
|
);
|
|
4900
|
-
|
|
5838
|
+
React24.useImperativeHandle(
|
|
4901
5839
|
stackRef,
|
|
4902
5840
|
() => ({
|
|
4903
5841
|
expand: expandPanel,
|
|
@@ -4921,7 +5859,7 @@ function PanelStack({
|
|
|
4921
5859
|
const Icon = section.icon;
|
|
4922
5860
|
const isCollapsed = collapsed[section.id];
|
|
4923
5861
|
const flush = index > 0 && (isCollapsed || collapsed[sections[index - 1].id]);
|
|
4924
|
-
return /* @__PURE__ */ jsxs(
|
|
5862
|
+
return /* @__PURE__ */ jsxs(React24.Fragment, { children: [
|
|
4925
5863
|
index > 0 && /* @__PURE__ */ jsx(
|
|
4926
5864
|
ResizableHandle,
|
|
4927
5865
|
{
|
|
@@ -4975,7 +5913,7 @@ function PanelStack({
|
|
|
4975
5913
|
children: [
|
|
4976
5914
|
isCollapsed ? /* @__PURE__ */ jsx(ChevronRight, { className: "h-5 w-5 shrink-0" }) : /* @__PURE__ */ jsx(ChevronDown, { className: "h-5 w-5 shrink-0" }),
|
|
4977
5915
|
Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
4978
|
-
typeof section.title === "string" ? /* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
5916
|
+
typeof section.title === "string" ? /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold uppercase tracking-wide", children: section.title }) : (
|
|
4979
5917
|
// Custom node: rendered as-is so the consumer owns the
|
|
4980
5918
|
// styling (icon, casing, colour, badges…).
|
|
4981
5919
|
/* @__PURE__ */ jsx("span", { className: "flex min-w-0 flex-1 items-center", children: section.title })
|
|
@@ -5017,7 +5955,7 @@ function PanelStack({
|
|
|
5017
5955
|
) })
|
|
5018
5956
|
);
|
|
5019
5957
|
}
|
|
5020
|
-
var PropertyList =
|
|
5958
|
+
var PropertyList = React24.forwardRef(
|
|
5021
5959
|
({ labelWidth = 78, className, style, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5022
5960
|
"dl",
|
|
5023
5961
|
{
|
|
@@ -5033,7 +5971,7 @@ var PropertyList = React23.forwardRef(
|
|
|
5033
5971
|
)
|
|
5034
5972
|
);
|
|
5035
5973
|
PropertyList.displayName = "PropertyList";
|
|
5036
|
-
var PropertyRow =
|
|
5974
|
+
var PropertyRow = React24.forwardRef(
|
|
5037
5975
|
({ label, mono, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5038
5976
|
"div",
|
|
5039
5977
|
{
|
|
@@ -5041,55 +5979,14 @@ var PropertyRow = React23.forwardRef(
|
|
|
5041
5979
|
className: cn("flex items-baseline gap-2 py-1", className),
|
|
5042
5980
|
...props,
|
|
5043
5981
|
children: [
|
|
5044
|
-
/* @__PURE__ */ jsx("dt", { className: "shrink-0 truncate text-
|
|
5045
|
-
/* @__PURE__ */ jsx("dd", { className: cn("min-w-0 flex-1", mono && "font-mono text-
|
|
5982
|
+
/* @__PURE__ */ jsx("dt", { className: "shrink-0 truncate text-sm text-muted-foreground [width:var(--property-label-width,78px)]", children: label }),
|
|
5983
|
+
/* @__PURE__ */ jsx("dd", { className: cn("min-w-0 flex-1", mono && "font-mono text-sm"), children })
|
|
5046
5984
|
]
|
|
5047
5985
|
}
|
|
5048
5986
|
)
|
|
5049
5987
|
);
|
|
5050
5988
|
PropertyRow.displayName = "PropertyRow";
|
|
5051
|
-
var
|
|
5052
|
-
({ tone, crumbs, chips, actions, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5053
|
-
"div",
|
|
5054
|
-
{
|
|
5055
|
-
ref,
|
|
5056
|
-
className: cn(
|
|
5057
|
-
"flex shrink-0 items-center gap-2.5 border-b border-border bg-card px-4 py-2.5",
|
|
5058
|
-
className
|
|
5059
|
-
),
|
|
5060
|
-
...props,
|
|
5061
|
-
children: [
|
|
5062
|
-
tone ? /* @__PURE__ */ jsx(StatusDot, { tone, size: "lg" }) : null,
|
|
5063
|
-
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-1.5", children: crumbs.map((crumb, i) => {
|
|
5064
|
-
const last = i === crumbs.length - 1;
|
|
5065
|
-
return /* @__PURE__ */ jsxs(React23.Fragment, { children: [
|
|
5066
|
-
i > 0 ? /* @__PURE__ */ jsx(
|
|
5067
|
-
ChevronRight,
|
|
5068
|
-
{
|
|
5069
|
-
"aria-hidden": true,
|
|
5070
|
-
className: "size-3.5 shrink-0 text-muted-foreground/60"
|
|
5071
|
-
}
|
|
5072
|
-
) : null,
|
|
5073
|
-
/* @__PURE__ */ jsx(
|
|
5074
|
-
"span",
|
|
5075
|
-
{
|
|
5076
|
-
className: cn(
|
|
5077
|
-
"min-w-0 truncate font-mono",
|
|
5078
|
-
last ? "text-base font-semibold text-foreground" : "text-muted-foreground"
|
|
5079
|
-
),
|
|
5080
|
-
children: crumb
|
|
5081
|
-
}
|
|
5082
|
-
)
|
|
5083
|
-
] }, i);
|
|
5084
|
-
}) }),
|
|
5085
|
-
chips ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center gap-1.5", children: chips }) : null,
|
|
5086
|
-
actions ? /* @__PURE__ */ jsx("span", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: actions }) : null
|
|
5087
|
-
]
|
|
5088
|
-
}
|
|
5089
|
-
)
|
|
5090
|
-
);
|
|
5091
|
-
RecordHeader.displayName = "RecordHeader";
|
|
5092
|
-
var ProposalCard = React23.forwardRef(
|
|
5989
|
+
var ProposalCard = React24.forwardRef(
|
|
5093
5990
|
({
|
|
5094
5991
|
title,
|
|
5095
5992
|
source,
|
|
@@ -5105,23 +6002,23 @@ var ProposalCard = React23.forwardRef(
|
|
|
5105
6002
|
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-1", children: [
|
|
5106
6003
|
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
5107
6004
|
/* @__PURE__ */ jsx("h4", { className: "font-medium", children: title }),
|
|
5108
|
-
source != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
6005
|
+
source != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: source }) : null
|
|
5109
6006
|
] }),
|
|
5110
6007
|
/* @__PURE__ */ jsx("div", { className: "border border-border bg-muted/30 p-2", children })
|
|
5111
6008
|
] }),
|
|
5112
6009
|
evidence ? /* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-1", children: [
|
|
5113
6010
|
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
5114
6011
|
/* @__PURE__ */ jsx("h4", { className: "font-medium", children: evidenceTitle }),
|
|
5115
|
-
evidenceMeta != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
6012
|
+
evidenceMeta != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: evidenceMeta }) : null
|
|
5116
6013
|
] }),
|
|
5117
6014
|
/* @__PURE__ */ jsx("div", { className: "overflow-hidden border border-border", children: evidence })
|
|
5118
6015
|
] }) : null,
|
|
5119
|
-
consequence != null ? /* @__PURE__ */ jsx("p", { className: "text-
|
|
6016
|
+
consequence != null ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: consequence }) : null,
|
|
5120
6017
|
actions ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-1.5", children: actions }) : null
|
|
5121
6018
|
] })
|
|
5122
6019
|
);
|
|
5123
6020
|
ProposalCard.displayName = "ProposalCard";
|
|
5124
|
-
var DotRating =
|
|
6021
|
+
var DotRating = React24.forwardRef(
|
|
5125
6022
|
({ value, max = 3, onChange, readOnly, label, className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5126
6023
|
"div",
|
|
5127
6024
|
{
|
|
@@ -5166,7 +6063,7 @@ var DotRating = React23.forwardRef(
|
|
|
5166
6063
|
)
|
|
5167
6064
|
);
|
|
5168
6065
|
DotRating.displayName = "DotRating";
|
|
5169
|
-
var RatingControl =
|
|
6066
|
+
var RatingControl = React24.forwardRef(
|
|
5170
6067
|
({
|
|
5171
6068
|
verdict,
|
|
5172
6069
|
onVerdictChange,
|
|
@@ -5185,7 +6082,7 @@ var RatingControl = React23.forwardRef(
|
|
|
5185
6082
|
className: cn("flex flex-col gap-2 border border-border bg-card p-2", className),
|
|
5186
6083
|
...props,
|
|
5187
6084
|
children: [
|
|
5188
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-
|
|
6085
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
5189
6086
|
/* @__PURE__ */ jsx("span", { className: "font-medium", children: "Your verdict" }),
|
|
5190
6087
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "becomes a Learning" }),
|
|
5191
6088
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
@@ -5200,7 +6097,7 @@ var RatingControl = React23.forwardRef(
|
|
|
5200
6097
|
"aria-checked": verdict === v,
|
|
5201
6098
|
onClick: () => onVerdictChange?.(v),
|
|
5202
6099
|
className: cn(
|
|
5203
|
-
"h-[22px] px-2 text-
|
|
6100
|
+
"h-[22px] px-2 text-sm capitalize",
|
|
5204
6101
|
verdict === v ? v === "appreciate" ? "bg-success text-success-foreground" : "bg-warning text-warning-foreground" : "text-muted-foreground hover:bg-accent"
|
|
5205
6102
|
),
|
|
5206
6103
|
children: v
|
|
@@ -5208,11 +6105,11 @@ var RatingControl = React23.forwardRef(
|
|
|
5208
6105
|
v
|
|
5209
6106
|
)) }),
|
|
5210
6107
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
5211
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
6108
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "weight" }),
|
|
5212
6109
|
/* @__PURE__ */ jsx(DotRating, { value: weight, max: maxWeight, onChange: onWeightChange }),
|
|
5213
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
6110
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm tabular-nums", children: weight })
|
|
5214
6111
|
] }),
|
|
5215
|
-
refines != null ? /* @__PURE__ */ jsxs("span", { className: "text-
|
|
6112
|
+
refines != null ? /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground", children: [
|
|
5216
6113
|
"refines ",
|
|
5217
6114
|
/* @__PURE__ */ jsx("span", { className: "text-foreground", children: refines })
|
|
5218
6115
|
] }) : null
|
|
@@ -5223,13 +6120,54 @@ var RatingControl = React23.forwardRef(
|
|
|
5223
6120
|
)
|
|
5224
6121
|
);
|
|
5225
6122
|
RatingControl.displayName = "RatingControl";
|
|
5226
|
-
var
|
|
6123
|
+
var RecordHeader = React24.forwardRef(
|
|
6124
|
+
({ tone, crumbs, chips, actions, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
6125
|
+
"div",
|
|
6126
|
+
{
|
|
6127
|
+
ref,
|
|
6128
|
+
className: cn(
|
|
6129
|
+
"flex shrink-0 items-center gap-2.5 border-b border-border bg-card px-4 py-2.5",
|
|
6130
|
+
className
|
|
6131
|
+
),
|
|
6132
|
+
...props,
|
|
6133
|
+
children: [
|
|
6134
|
+
tone ? /* @__PURE__ */ jsx(StatusDot, { tone, size: "lg" }) : null,
|
|
6135
|
+
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-1.5", children: crumbs.map((crumb, i) => {
|
|
6136
|
+
const last = i === crumbs.length - 1;
|
|
6137
|
+
return /* @__PURE__ */ jsxs(React24.Fragment, { children: [
|
|
6138
|
+
i > 0 ? /* @__PURE__ */ jsx(
|
|
6139
|
+
ChevronRight,
|
|
6140
|
+
{
|
|
6141
|
+
"aria-hidden": true,
|
|
6142
|
+
className: "size-3.5 shrink-0 text-muted-foreground/60"
|
|
6143
|
+
}
|
|
6144
|
+
) : null,
|
|
6145
|
+
/* @__PURE__ */ jsx(
|
|
6146
|
+
"span",
|
|
6147
|
+
{
|
|
6148
|
+
className: cn(
|
|
6149
|
+
"min-w-0 truncate font-mono",
|
|
6150
|
+
last ? "text-base font-semibold text-foreground" : "text-muted-foreground"
|
|
6151
|
+
),
|
|
6152
|
+
children: crumb
|
|
6153
|
+
}
|
|
6154
|
+
)
|
|
6155
|
+
] }, i);
|
|
6156
|
+
}) }),
|
|
6157
|
+
chips ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center gap-1.5", children: chips }) : null,
|
|
6158
|
+
actions ? /* @__PURE__ */ jsx("span", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: actions }) : null
|
|
6159
|
+
]
|
|
6160
|
+
}
|
|
6161
|
+
)
|
|
6162
|
+
);
|
|
6163
|
+
RecordHeader.displayName = "RecordHeader";
|
|
6164
|
+
var RepairNote = React24.forwardRef(
|
|
5227
6165
|
({ from, to, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5228
6166
|
"div",
|
|
5229
6167
|
{
|
|
5230
6168
|
ref,
|
|
5231
6169
|
className: cn(
|
|
5232
|
-
"flex flex-wrap items-center gap-1 py-0.5 pl-4 text-
|
|
6170
|
+
"flex flex-wrap items-center gap-1 py-0.5 pl-4 text-sm text-muted-foreground",
|
|
5233
6171
|
className
|
|
5234
6172
|
),
|
|
5235
6173
|
...props,
|
|
@@ -5242,13 +6180,13 @@ var RepairNote = React23.forwardRef(
|
|
|
5242
6180
|
)
|
|
5243
6181
|
);
|
|
5244
6182
|
RepairNote.displayName = "RepairNote";
|
|
5245
|
-
var RetryNote =
|
|
6183
|
+
var RetryNote = React24.forwardRef(
|
|
5246
6184
|
({ attempt, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5247
6185
|
"div",
|
|
5248
6186
|
{
|
|
5249
6187
|
ref,
|
|
5250
6188
|
className: cn(
|
|
5251
|
-
"flex flex-wrap items-baseline gap-1.5 py-0.5 pl-4 text-
|
|
6189
|
+
"flex flex-wrap items-baseline gap-1.5 py-0.5 pl-4 text-sm text-muted-foreground",
|
|
5252
6190
|
className
|
|
5253
6191
|
),
|
|
5254
6192
|
...props,
|
|
@@ -5268,7 +6206,7 @@ function OptionRow({ option }) {
|
|
|
5268
6206
|
/* @__PURE__ */ jsx("span", { className: "truncate", children: option.label }),
|
|
5269
6207
|
option.badge != null && /* @__PURE__ */ jsx("span", { className: "ml-auto pl-2", children: option.badge })
|
|
5270
6208
|
] }),
|
|
5271
|
-
option.description != null && /* @__PURE__ */ jsx("span", { className: "text-
|
|
6209
|
+
option.description != null && /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: option.description })
|
|
5272
6210
|
] });
|
|
5273
6211
|
}
|
|
5274
6212
|
function RichSelect({
|
|
@@ -5382,6 +6320,138 @@ function RichSelect({
|
|
|
5382
6320
|
)
|
|
5383
6321
|
] });
|
|
5384
6322
|
}
|
|
6323
|
+
function describeSlice(select, declared) {
|
|
6324
|
+
const out = [];
|
|
6325
|
+
if (select.time) {
|
|
6326
|
+
const { axis, from, to } = select.time;
|
|
6327
|
+
out.push({
|
|
6328
|
+
axisKind: "time",
|
|
6329
|
+
text: `time ${from ?? "\u2026"} \u2192 ${to ?? "\u2026"} \xB7 axis ${axis}`,
|
|
6330
|
+
undeclared: declared ? declared.time == null : void 0
|
|
6331
|
+
});
|
|
6332
|
+
}
|
|
6333
|
+
if (select.geo) {
|
|
6334
|
+
const { axis, vocab, in: values } = select.geo;
|
|
6335
|
+
out.push({
|
|
6336
|
+
axisKind: "geo",
|
|
6337
|
+
text: `geo ${values.join(", ")} \xB7 axis ${axis}${vocab ? ` \xB7 ${vocab}` : ""}`,
|
|
6338
|
+
undeclared: declared ? declared.geo == null : void 0
|
|
6339
|
+
});
|
|
6340
|
+
}
|
|
6341
|
+
for (const [dim, values] of Object.entries(select.dims ?? {})) {
|
|
6342
|
+
out.push({
|
|
6343
|
+
axisKind: dim,
|
|
6344
|
+
text: `${dim} ${values.join(", ")}`,
|
|
6345
|
+
undeclared: declared ? !(declared.dims ?? []).includes(dim) : void 0
|
|
6346
|
+
});
|
|
6347
|
+
}
|
|
6348
|
+
return out;
|
|
6349
|
+
}
|
|
6350
|
+
var SliceSummary = React24.forwardRef(
|
|
6351
|
+
({ select, declaredAxes, modelLabel, variant = "line", className, ...props }, ref) => {
|
|
6352
|
+
const lines = select ? describeSlice(select, declaredAxes) : [];
|
|
6353
|
+
if (!lines.length) {
|
|
6354
|
+
return /* @__PURE__ */ jsx(
|
|
6355
|
+
"div",
|
|
6356
|
+
{
|
|
6357
|
+
ref,
|
|
6358
|
+
className: cn("text-sm text-muted-foreground/70", className),
|
|
6359
|
+
...props,
|
|
6360
|
+
children: "not sliced \u2014 the whole model"
|
|
6361
|
+
}
|
|
6362
|
+
);
|
|
6363
|
+
}
|
|
6364
|
+
return /* @__PURE__ */ jsx(
|
|
6365
|
+
"div",
|
|
6366
|
+
{
|
|
6367
|
+
ref,
|
|
6368
|
+
className: cn(
|
|
6369
|
+
"flex min-w-0 flex-col gap-0.5",
|
|
6370
|
+
variant === "block" && "rounded-control border border-border p-2",
|
|
6371
|
+
className
|
|
6372
|
+
),
|
|
6373
|
+
...props,
|
|
6374
|
+
children: lines.map((line) => /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col", children: [
|
|
6375
|
+
/* @__PURE__ */ jsx(
|
|
6376
|
+
"span",
|
|
6377
|
+
{
|
|
6378
|
+
className: cn(
|
|
6379
|
+
"truncate text-sm",
|
|
6380
|
+
line.undeclared ? "text-destructive line-through decoration-destructive/50" : "text-muted-foreground"
|
|
6381
|
+
),
|
|
6382
|
+
children: line.text
|
|
6383
|
+
}
|
|
6384
|
+
),
|
|
6385
|
+
line.undeclared ? /* @__PURE__ */ jsxs("span", { className: "text-sm text-destructive", children: [
|
|
6386
|
+
modelLabel ?? "this model",
|
|
6387
|
+
" declares no ",
|
|
6388
|
+
line.axisKind,
|
|
6389
|
+
" axis, so it cannot be sliced by one. Declaring one is a modelling act."
|
|
6390
|
+
] }) : null
|
|
6391
|
+
] }, line.axisKind))
|
|
6392
|
+
}
|
|
6393
|
+
);
|
|
6394
|
+
}
|
|
6395
|
+
);
|
|
6396
|
+
SliceSummary.displayName = "SliceSummary";
|
|
6397
|
+
var RuleRow = React24.forwardRef(
|
|
6398
|
+
({ match, allow, properties, select, egress, readOnly, className, ...props }, ref) => {
|
|
6399
|
+
const excluded = properties?.exclude ?? [];
|
|
6400
|
+
const sends = egress?.may_send ?? [];
|
|
6401
|
+
const sliced = Boolean(
|
|
6402
|
+
select?.time || select?.geo || Object.keys(select?.dims ?? {}).length
|
|
6403
|
+
);
|
|
6404
|
+
return /* @__PURE__ */ jsxs(
|
|
6405
|
+
"div",
|
|
6406
|
+
{
|
|
6407
|
+
ref,
|
|
6408
|
+
className: cn(
|
|
6409
|
+
// The verb column is `5ch` — the width of `allow` in the mono face it
|
|
6410
|
+
// is set in. A character unit rather than a pixel one, so the indent
|
|
6411
|
+
// holds when `data-density` moves the font size, and so every row
|
|
6412
|
+
// aligns whether its verb is `allow` or `deny`.
|
|
6413
|
+
"grid min-w-0 grid-cols-[5ch_minmax(0,1fr)] items-baseline gap-x-2 gap-y-0.5",
|
|
6414
|
+
"rounded-control px-1 py-1",
|
|
6415
|
+
!readOnly && "hover:bg-accent",
|
|
6416
|
+
className
|
|
6417
|
+
),
|
|
6418
|
+
...props,
|
|
6419
|
+
children: [
|
|
6420
|
+
/* @__PURE__ */ jsx(
|
|
6421
|
+
"span",
|
|
6422
|
+
{
|
|
6423
|
+
className: cn(
|
|
6424
|
+
"font-mono text-sm",
|
|
6425
|
+
allow ? "text-muted-foreground" : "font-semibold text-destructive"
|
|
6426
|
+
),
|
|
6427
|
+
children: allow ? "allow" : "deny"
|
|
6428
|
+
}
|
|
6429
|
+
),
|
|
6430
|
+
/* @__PURE__ */ jsx(
|
|
6431
|
+
AddressChip,
|
|
6432
|
+
{
|
|
6433
|
+
address: match,
|
|
6434
|
+
tone: allow ? "allowed" : "denied",
|
|
6435
|
+
className: "min-w-0"
|
|
6436
|
+
}
|
|
6437
|
+
),
|
|
6438
|
+
excluded.length || sliced || sends.length ? /* @__PURE__ */ jsxs("div", { className: "col-start-2 flex min-w-0 flex-col gap-0.5", children: [
|
|
6439
|
+
excluded.length ? /* @__PURE__ */ jsxs("span", { className: "truncate text-sm text-muted-foreground", children: [
|
|
6440
|
+
"excludes ",
|
|
6441
|
+
excluded.join(", ")
|
|
6442
|
+
] }) : null,
|
|
6443
|
+
sliced ? /* @__PURE__ */ jsx(SliceSummary, { select, variant: "line" }) : null,
|
|
6444
|
+
sends.length ? /* @__PURE__ */ jsxs("span", { className: "truncate text-sm text-muted-foreground", children: [
|
|
6445
|
+
"may send ",
|
|
6446
|
+
sends.join(", ")
|
|
6447
|
+
] }) : null
|
|
6448
|
+
] }) : null
|
|
6449
|
+
]
|
|
6450
|
+
}
|
|
6451
|
+
);
|
|
6452
|
+
}
|
|
6453
|
+
);
|
|
6454
|
+
RuleRow.displayName = "RuleRow";
|
|
5385
6455
|
var SearchInput = ({
|
|
5386
6456
|
value,
|
|
5387
6457
|
onChange,
|
|
@@ -5401,14 +6471,14 @@ var SearchInput = ({
|
|
|
5401
6471
|
"flex w-full rounded-control border border-input bg-background ring-offset-background",
|
|
5402
6472
|
"placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2",
|
|
5403
6473
|
"focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
5404
|
-
inputSize === "sm" ? "h-[26px] px-2 py-0 text-
|
|
6474
|
+
inputSize === "sm" ? "h-[26px] px-2 py-0 text-sm" : "h-10 px-3 py-2 text-base",
|
|
5405
6475
|
className
|
|
5406
6476
|
),
|
|
5407
6477
|
...props
|
|
5408
6478
|
}
|
|
5409
6479
|
);
|
|
5410
6480
|
};
|
|
5411
|
-
var SectionHeader =
|
|
6481
|
+
var SectionHeader = React24.forwardRef(({ icon, title, count, actions, bare, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5412
6482
|
"div",
|
|
5413
6483
|
{
|
|
5414
6484
|
ref,
|
|
@@ -5421,13 +6491,13 @@ var SectionHeader = React23.forwardRef(({ icon, title, count, actions, bare, cla
|
|
|
5421
6491
|
children: [
|
|
5422
6492
|
icon ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center text-muted-foreground [&_svg]:size-3.5", children: icon }) : null,
|
|
5423
6493
|
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate font-medium", children: title }),
|
|
5424
|
-
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
6494
|
+
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: count }) : null,
|
|
5425
6495
|
actions ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center gap-1", children: actions }) : null
|
|
5426
6496
|
]
|
|
5427
6497
|
}
|
|
5428
6498
|
));
|
|
5429
6499
|
SectionHeader.displayName = "SectionHeader";
|
|
5430
|
-
var Sparkline =
|
|
6500
|
+
var Sparkline = React24.forwardRef(
|
|
5431
6501
|
({
|
|
5432
6502
|
values,
|
|
5433
6503
|
width = 72,
|
|
@@ -5514,7 +6584,7 @@ function TabbedPanel({
|
|
|
5514
6584
|
footerClassName,
|
|
5515
6585
|
footerContent
|
|
5516
6586
|
}) {
|
|
5517
|
-
const [internalTab, setInternalTab] =
|
|
6587
|
+
const [internalTab, setInternalTab] = React24__default.useState(defaultTab || tabs[0]?.value);
|
|
5518
6588
|
const currentTab = activeTab !== void 0 ? activeTab : internalTab;
|
|
5519
6589
|
const handleTabChange = (value) => {
|
|
5520
6590
|
if (activeTab === void 0) {
|
|
@@ -5522,9 +6592,9 @@ function TabbedPanel({
|
|
|
5522
6592
|
}
|
|
5523
6593
|
onTabChange?.(value);
|
|
5524
6594
|
};
|
|
5525
|
-
const uid =
|
|
6595
|
+
const uid = React24__default.useId();
|
|
5526
6596
|
const panelId = (value) => `${uid}-panel-${value}`;
|
|
5527
|
-
const items =
|
|
6597
|
+
const items = React24__default.useMemo(
|
|
5528
6598
|
() => tabs.map((tab) => ({
|
|
5529
6599
|
key: tab.value,
|
|
5530
6600
|
name: tab.name ?? (typeof tab.label === "string" ? tab.label : tab.value),
|
|
@@ -5610,9 +6680,9 @@ var STATUS_LABEL = {
|
|
|
5610
6680
|
};
|
|
5611
6681
|
function renderResult(result) {
|
|
5612
6682
|
if (result == null) return null;
|
|
5613
|
-
if (
|
|
6683
|
+
if (React24.isValidElement(result)) return result;
|
|
5614
6684
|
if (typeof result !== "object") {
|
|
5615
|
-
return /* @__PURE__ */ jsx("span", { className: "font-mono text-
|
|
6685
|
+
return /* @__PURE__ */ jsx("span", { className: "font-mono text-sm", children: String(result) });
|
|
5616
6686
|
}
|
|
5617
6687
|
const entries = Object.entries(result);
|
|
5618
6688
|
const scalars = entries.filter(([, v]) => v == null || typeof v !== "object");
|
|
@@ -5620,12 +6690,12 @@ function renderResult(result) {
|
|
|
5620
6690
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5621
6691
|
scalars.length ? /* @__PURE__ */ jsx(PropertyList, { labelWidth: 96, children: scalars.map(([k, v]) => /* @__PURE__ */ jsx(PropertyRow, { label: k, mono: true, className: "py-0.5", children: v == null ? "\u2014" : String(v) }, k)) }) : null,
|
|
5622
6692
|
nested.map(([k, v]) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
|
|
5623
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
5624
|
-
/* @__PURE__ */ jsx("pre", { className: "max-h-40 overflow-auto border border-border bg-muted/40 p-1.5 font-mono text-
|
|
6693
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: k }),
|
|
6694
|
+
/* @__PURE__ */ jsx("pre", { className: "max-h-40 overflow-auto border border-border bg-muted/40 p-1.5 font-mono text-sm", children: JSON.stringify(v, null, 2) })
|
|
5625
6695
|
] }, k))
|
|
5626
6696
|
] });
|
|
5627
6697
|
}
|
|
5628
|
-
var TaskGanttDetailCard =
|
|
6698
|
+
var TaskGanttDetailCard = React24.forwardRef(({ task, elapsedMs, formatDuration = defaultFormatDuration, className, ...props }, ref) => {
|
|
5629
6699
|
const status = task.status ?? "succeeded";
|
|
5630
6700
|
const ms = task.durationMs ?? elapsedMs;
|
|
5631
6701
|
const duration = task.duration ?? (ms != null ? formatDuration(ms) : "\u2014");
|
|
@@ -5633,17 +6703,17 @@ var TaskGanttDetailCard = React23.forwardRef(({ task, elapsedMs, formatDuration
|
|
|
5633
6703
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-2", className), ...props, children: [
|
|
5634
6704
|
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
5635
6705
|
/* @__PURE__ */ jsx(StatusDot, { tone: DOT[status], size: "md", className: "translate-y-px" }),
|
|
5636
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-
|
|
5637
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono text-
|
|
6706
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-sm font-medium", children: task.key }),
|
|
6707
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono text-sm text-muted-foreground tabular-nums", children: duration })
|
|
5638
6708
|
] }),
|
|
5639
|
-
/* @__PURE__ */ jsxs("div", { className: "text-
|
|
6709
|
+
/* @__PURE__ */ jsxs("div", { className: "text-sm text-muted-foreground", children: [
|
|
5640
6710
|
STATUS_LABEL[status],
|
|
5641
6711
|
task.summary != null ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5642
6712
|
" \xB7 ",
|
|
5643
6713
|
task.summary
|
|
5644
6714
|
] }) : null
|
|
5645
6715
|
] }),
|
|
5646
|
-
attempts.length ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0.5", children: attempts.map((a, i) => /* @__PURE__ */ jsxs("span", { className: "text-
|
|
6716
|
+
attempts.length ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0.5", children: attempts.map((a, i) => /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground", children: [
|
|
5647
6717
|
/* @__PURE__ */ jsxs("span", { className: "font-medium text-warning", children: [
|
|
5648
6718
|
"attempt ",
|
|
5649
6719
|
i + 1
|
|
@@ -5657,14 +6727,14 @@ var TaskGanttDetailCard = React23.forwardRef(({ task, elapsedMs, formatDuration
|
|
|
5657
6727
|
style: { borderColor: "var(--color-destructive)" },
|
|
5658
6728
|
className: "border-l-2 bg-destructive/10 px-2 py-1.5",
|
|
5659
6729
|
children: [
|
|
5660
|
-
task.error.code != null ? /* @__PURE__ */ jsx("div", { className: "font-mono text-
|
|
5661
|
-
task.error.message != null ? /* @__PURE__ */ jsx("div", { className: "text-
|
|
5662
|
-
task.error.detail != null ? /* @__PURE__ */ jsx("pre", { className: "mt-1 max-h-32 overflow-auto whitespace-pre-wrap font-mono text-
|
|
6730
|
+
task.error.code != null ? /* @__PURE__ */ jsx("div", { className: "font-mono text-sm font-medium text-destructive", children: task.error.code }) : null,
|
|
6731
|
+
task.error.message != null ? /* @__PURE__ */ jsx("div", { className: "text-sm", children: task.error.message }) : null,
|
|
6732
|
+
task.error.detail != null ? /* @__PURE__ */ jsx("pre", { className: "mt-1 max-h-32 overflow-auto whitespace-pre-wrap font-mono text-sm text-muted-foreground", children: task.error.detail }) : null
|
|
5663
6733
|
]
|
|
5664
6734
|
}
|
|
5665
6735
|
) : null,
|
|
5666
6736
|
task.result != null ? renderResult(task.result) : null,
|
|
5667
|
-
task.log != null ? /* @__PURE__ */ jsx("div", { className: "border-t border-border pt-1.5 font-mono text-
|
|
6737
|
+
task.log != null ? /* @__PURE__ */ jsx("div", { className: "border-t border-border pt-1.5 font-mono text-sm text-muted-foreground", children: task.log }) : null
|
|
5668
6738
|
] });
|
|
5669
6739
|
});
|
|
5670
6740
|
TaskGanttDetailCard.displayName = "TaskGanttDetailCard";
|
|
@@ -5691,7 +6761,7 @@ function place(seg, origin) {
|
|
|
5691
6761
|
}
|
|
5692
6762
|
return { start, duration: duration != null && duration > 0 ? duration : 0 };
|
|
5693
6763
|
}
|
|
5694
|
-
var TaskGantt =
|
|
6764
|
+
var TaskGantt = React24.forwardRef(
|
|
5695
6765
|
({
|
|
5696
6766
|
tasks,
|
|
5697
6767
|
origin,
|
|
@@ -5713,7 +6783,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
5713
6783
|
}, ref) => {
|
|
5714
6784
|
const barHeight = density === "compact" ? 11 : 13;
|
|
5715
6785
|
const durationWidth = 40;
|
|
5716
|
-
const rows =
|
|
6786
|
+
const rows = React24.useMemo(() => {
|
|
5717
6787
|
const stamps = [];
|
|
5718
6788
|
for (const t of [...tasks, ...tasks.flatMap((t2) => t2.attempts ?? [])]) {
|
|
5719
6789
|
if (t.startedAt != null) stamps.push(toMs(t.startedAt));
|
|
@@ -5759,7 +6829,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
5759
6829
|
/* @__PURE__ */ jsx("span", { className: "flex flex-1", children: axis.slice(0, -1).map((label, i) => /* @__PURE__ */ jsx(
|
|
5760
6830
|
"span",
|
|
5761
6831
|
{
|
|
5762
|
-
className: "flex-1 border-l border-border pl-1 text-
|
|
6832
|
+
className: "flex-1 border-l border-border pl-1 text-sm text-muted-foreground tabular-nums",
|
|
5763
6833
|
children: label
|
|
5764
6834
|
},
|
|
5765
6835
|
i
|
|
@@ -5767,7 +6837,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
5767
6837
|
/* @__PURE__ */ jsx(
|
|
5768
6838
|
"span",
|
|
5769
6839
|
{
|
|
5770
|
-
className: "shrink-0 text-right text-
|
|
6840
|
+
className: "shrink-0 text-right text-sm text-muted-foreground tabular-nums",
|
|
5771
6841
|
style: { width: durationWidth },
|
|
5772
6842
|
children: lastLabel
|
|
5773
6843
|
}
|
|
@@ -5785,7 +6855,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
5785
6855
|
"span",
|
|
5786
6856
|
{
|
|
5787
6857
|
className: cn(
|
|
5788
|
-
"shrink-0 truncate font-mono text-
|
|
6858
|
+
"shrink-0 truncate font-mono text-sm",
|
|
5789
6859
|
neverRan && "text-muted-foreground"
|
|
5790
6860
|
),
|
|
5791
6861
|
style: { width: labelWidth },
|
|
@@ -5826,7 +6896,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
5826
6896
|
/* @__PURE__ */ jsx(
|
|
5827
6897
|
"span",
|
|
5828
6898
|
{
|
|
5829
|
-
className: "shrink-0 text-right font-mono text-
|
|
6899
|
+
className: "shrink-0 text-right font-mono text-sm text-muted-foreground tabular-nums",
|
|
5830
6900
|
style: { width: durationWidth },
|
|
5831
6901
|
children: duration
|
|
5832
6902
|
}
|
|
@@ -5874,8 +6944,22 @@ var TaskGantt = React23.forwardRef(
|
|
|
5874
6944
|
}
|
|
5875
6945
|
);
|
|
5876
6946
|
TaskGantt.displayName = "TaskGantt";
|
|
5877
|
-
var TaskNode =
|
|
5878
|
-
({
|
|
6947
|
+
var TaskNode = React24.forwardRef(
|
|
6948
|
+
({
|
|
6949
|
+
taskKey,
|
|
6950
|
+
bound,
|
|
6951
|
+
boundSwatch,
|
|
6952
|
+
boundPalette,
|
|
6953
|
+
status,
|
|
6954
|
+
tags,
|
|
6955
|
+
meta,
|
|
6956
|
+
selected,
|
|
6957
|
+
gate,
|
|
6958
|
+
dim,
|
|
6959
|
+
ghost,
|
|
6960
|
+
className,
|
|
6961
|
+
...props
|
|
6962
|
+
}, ref) => {
|
|
5879
6963
|
if (ghost) {
|
|
5880
6964
|
return /* @__PURE__ */ jsxs(
|
|
5881
6965
|
"div",
|
|
@@ -5883,7 +6967,7 @@ var TaskNode = React23.forwardRef(
|
|
|
5883
6967
|
ref,
|
|
5884
6968
|
className: cn(
|
|
5885
6969
|
"flex w-[146px] flex-col gap-1 border border-dashed border-border p-2",
|
|
5886
|
-
"text-
|
|
6970
|
+
"text-sm text-muted-foreground",
|
|
5887
6971
|
className
|
|
5888
6972
|
),
|
|
5889
6973
|
...props,
|
|
@@ -5924,12 +7008,12 @@ var TaskNode = React23.forwardRef(
|
|
|
5924
7008
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate font-mono", children: taskKey })
|
|
5925
7009
|
] }),
|
|
5926
7010
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
5927
|
-
/* @__PURE__ */ jsx(BoundChip, { bound }),
|
|
7011
|
+
/* @__PURE__ */ jsx(BoundChip, { bound, swatch: boundSwatch, palette: boundPalette }),
|
|
5928
7012
|
tags?.map((tag, i) => /* @__PURE__ */ jsx(
|
|
5929
7013
|
"span",
|
|
5930
7014
|
{
|
|
5931
7015
|
className: cn(
|
|
5932
|
-
"shrink-0 border px-1 text-
|
|
7016
|
+
"shrink-0 border px-1 text-sm",
|
|
5933
7017
|
tag.tone === "warning" ? "border-warning/40 text-warning" : "border-border text-muted-foreground"
|
|
5934
7018
|
),
|
|
5935
7019
|
children: tag.label
|
|
@@ -5941,7 +7025,7 @@ var TaskNode = React23.forwardRef(
|
|
|
5941
7025
|
"div",
|
|
5942
7026
|
{
|
|
5943
7027
|
className: cn(
|
|
5944
|
-
"truncate text-
|
|
7028
|
+
"truncate text-sm",
|
|
5945
7029
|
gate ? "text-warning" : "text-muted-foreground"
|
|
5946
7030
|
),
|
|
5947
7031
|
children: meta
|
|
@@ -5953,14 +7037,14 @@ var TaskNode = React23.forwardRef(
|
|
|
5953
7037
|
}
|
|
5954
7038
|
);
|
|
5955
7039
|
TaskNode.displayName = "TaskNode";
|
|
5956
|
-
var TemplatePicker =
|
|
7040
|
+
var TemplatePicker = React24.forwardRef(({ heading, options, value, onSelect, footnote, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5957
7041
|
"div",
|
|
5958
7042
|
{
|
|
5959
7043
|
ref,
|
|
5960
7044
|
className: cn("flex w-full flex-col border border-border bg-card", className),
|
|
5961
7045
|
...props,
|
|
5962
7046
|
children: [
|
|
5963
|
-
heading != null ? /* @__PURE__ */ jsx("div", { className: "flex h-6 shrink-0 items-center border-b border-border px-2 text-
|
|
7047
|
+
heading != null ? /* @__PURE__ */ jsx("div", { className: "flex h-6 shrink-0 items-center border-b border-border px-2 text-sm text-muted-foreground", children: heading }) : null,
|
|
5964
7048
|
/* @__PURE__ */ jsx("div", { role: "listbox", className: "flex flex-col", children: options.map((o) => {
|
|
5965
7049
|
const disabled = o.unavailable != null;
|
|
5966
7050
|
const selected = value === o.id;
|
|
@@ -5979,16 +7063,16 @@ var TemplatePicker = React23.forwardRef(({ heading, options, value, onSelect, fo
|
|
|
5979
7063
|
),
|
|
5980
7064
|
children: [
|
|
5981
7065
|
/* @__PURE__ */ jsx("span", { className: "w-3 shrink-0 text-primary", children: selected ? "\u2022" : "" }),
|
|
5982
|
-
/* @__PURE__ */ jsx("span", { className: "truncate font-mono text-
|
|
5983
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
7066
|
+
/* @__PURE__ */ jsx("span", { className: "truncate font-mono text-sm", children: o.id }),
|
|
7067
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: o.kind }),
|
|
5984
7068
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
5985
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 truncate text-
|
|
7069
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 truncate text-sm text-muted-foreground", children: o.unavailable ?? o.note })
|
|
5986
7070
|
]
|
|
5987
7071
|
},
|
|
5988
7072
|
o.id
|
|
5989
7073
|
);
|
|
5990
7074
|
}) }),
|
|
5991
|
-
footnote != null ? /* @__PURE__ */ jsx("div", { className: "border-t border-border px-2 py-1 text-
|
|
7075
|
+
footnote != null ? /* @__PURE__ */ jsx("div", { className: "border-t border-border px-2 py-1 text-sm text-muted-foreground", children: footnote }) : null
|
|
5992
7076
|
]
|
|
5993
7077
|
}
|
|
5994
7078
|
));
|
|
@@ -6004,14 +7088,14 @@ var MARKER = {
|
|
|
6004
7088
|
output: "\u2192",
|
|
6005
7089
|
comment: "#"
|
|
6006
7090
|
};
|
|
6007
|
-
var Terminal =
|
|
7091
|
+
var Terminal = React24.forwardRef(
|
|
6008
7092
|
({ cursor, columnTemplate = "150px minmax(0,1fr) auto auto", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
6009
7093
|
"div",
|
|
6010
7094
|
{
|
|
6011
7095
|
ref,
|
|
6012
7096
|
style: { "--terminal-cols": columnTemplate },
|
|
6013
7097
|
className: cn(
|
|
6014
|
-
"overflow-x-auto border border-border bg-muted/40 p-2 font-mono text-
|
|
7098
|
+
"overflow-x-auto border border-border bg-muted/40 p-2 font-mono text-sm",
|
|
6015
7099
|
className
|
|
6016
7100
|
),
|
|
6017
7101
|
...props,
|
|
@@ -6029,7 +7113,7 @@ var Terminal = React23.forwardRef(
|
|
|
6029
7113
|
)
|
|
6030
7114
|
);
|
|
6031
7115
|
Terminal.displayName = "Terminal";
|
|
6032
|
-
var TerminalLine =
|
|
7116
|
+
var TerminalLine = React24.forwardRef(
|
|
6033
7117
|
({ kind = "output", level, levelColumn = 1, columns, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
6034
7118
|
"div",
|
|
6035
7119
|
{
|
|
@@ -6060,7 +7144,7 @@ var TerminalLine = React23.forwardRef(
|
|
|
6060
7144
|
"min-w-0 truncate",
|
|
6061
7145
|
// A log tints its level cell and greys everything that is not the
|
|
6062
7146
|
// message; a transcript greys only its trailing cell.
|
|
6063
|
-
level ? i === levelColumn ? LEVEL[level] : i === columns.length - 1 ? void 0 : "text-muted-foreground" : i === columns.length - 1 && "text-muted-foreground"
|
|
7147
|
+
level ? i === levelColumn ? LEVEL[level] ?? "text-muted-foreground" : i === columns.length - 1 ? void 0 : "text-muted-foreground" : i === columns.length - 1 && "text-muted-foreground"
|
|
6064
7148
|
),
|
|
6065
7149
|
children: c
|
|
6066
7150
|
},
|
|
@@ -6071,10 +7155,10 @@ var TerminalLine = React23.forwardRef(
|
|
|
6071
7155
|
)
|
|
6072
7156
|
);
|
|
6073
7157
|
TerminalLine.displayName = "TerminalLine";
|
|
6074
|
-
var TimelineVariantContext =
|
|
7158
|
+
var TimelineVariantContext = React24.createContext("columns");
|
|
6075
7159
|
var RAIL_MARKER_OFFSET = "h-[0.692rem]";
|
|
6076
7160
|
var RAIL_FOOTER_TAIL = "h-[1.067rem]";
|
|
6077
|
-
var TimelineList =
|
|
7161
|
+
var TimelineList = React24.forwardRef(({ className, variant = "columns", children, ...props }, ref) => /* @__PURE__ */ jsx(TimelineVariantContext.Provider, { value: variant, children: /* @__PURE__ */ jsx("ol", { ref, className: cn("flex flex-col", className), ...props, children }) }));
|
|
6078
7162
|
TimelineList.displayName = "TimelineList";
|
|
6079
7163
|
function RailGutter({ marker }) {
|
|
6080
7164
|
return /* @__PURE__ */ jsxs("span", { className: "flex w-2.5 shrink-0 flex-col items-center", children: [
|
|
@@ -6098,8 +7182,8 @@ function RailGutter({ marker }) {
|
|
|
6098
7182
|
)
|
|
6099
7183
|
] });
|
|
6100
7184
|
}
|
|
6101
|
-
var TimelineEntry =
|
|
6102
|
-
const variant =
|
|
7185
|
+
var TimelineEntry = React24.forwardRef(({ when, title, marker, className, children, ...props }, ref) => {
|
|
7186
|
+
const variant = React24.useContext(TimelineVariantContext);
|
|
6103
7187
|
if (variant === "rail") {
|
|
6104
7188
|
return /* @__PURE__ */ jsxs(
|
|
6105
7189
|
"li",
|
|
@@ -6110,7 +7194,7 @@ var TimelineEntry = React23.forwardRef(({ when, title, marker, className, childr
|
|
|
6110
7194
|
children: [
|
|
6111
7195
|
/* @__PURE__ */ jsx(RailGutter, { marker }),
|
|
6112
7196
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5 pb-4 group-last/entry:pb-0", children: [
|
|
6113
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
7197
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: when }),
|
|
6114
7198
|
title != null ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: title }) : null,
|
|
6115
7199
|
children
|
|
6116
7200
|
] })
|
|
@@ -6125,7 +7209,7 @@ var TimelineEntry = React23.forwardRef(({ when, title, marker, className, childr
|
|
|
6125
7209
|
className: cn("flex gap-2 border-b border-border py-1.5 last:border-b-0", className),
|
|
6126
7210
|
...props,
|
|
6127
7211
|
children: [
|
|
6128
|
-
/* @__PURE__ */ jsxs("span", { className: "flex w-[72px] shrink-0 items-baseline gap-1.5 text-
|
|
7212
|
+
/* @__PURE__ */ jsxs("span", { className: "flex w-[72px] shrink-0 items-baseline gap-1.5 text-sm text-muted-foreground", children: [
|
|
6129
7213
|
marker ? /* @__PURE__ */ jsx("span", { className: "translate-y-1", children: marker }) : null,
|
|
6130
7214
|
/* @__PURE__ */ jsx("span", { className: "truncate", children: when })
|
|
6131
7215
|
] }),
|
|
@@ -6138,8 +7222,8 @@ var TimelineEntry = React23.forwardRef(({ when, title, marker, className, childr
|
|
|
6138
7222
|
);
|
|
6139
7223
|
});
|
|
6140
7224
|
TimelineEntry.displayName = "TimelineEntry";
|
|
6141
|
-
var TimelineFooter =
|
|
6142
|
-
const variant =
|
|
7225
|
+
var TimelineFooter = React24.forwardRef(({ className, children, ...props }, ref) => {
|
|
7226
|
+
const variant = React24.useContext(TimelineVariantContext);
|
|
6143
7227
|
if (variant === "rail") {
|
|
6144
7228
|
return /* @__PURE__ */ jsxs(
|
|
6145
7229
|
"li",
|
|
@@ -6185,11 +7269,11 @@ function useTour(options) {
|
|
|
6185
7269
|
onComplete,
|
|
6186
7270
|
onExit
|
|
6187
7271
|
} = options;
|
|
6188
|
-
const [current, setCurrent] =
|
|
7272
|
+
const [current, setCurrent] = React24.useState(initialStep);
|
|
6189
7273
|
const total = steps.length;
|
|
6190
7274
|
const lastIndex = Math.max(total - 1, 0);
|
|
6191
7275
|
const clamped = Math.min(Math.max(current, 0), lastIndex);
|
|
6192
|
-
const goTo =
|
|
7276
|
+
const goTo = React24.useCallback(
|
|
6193
7277
|
(index) => {
|
|
6194
7278
|
setCurrent((prev2) => {
|
|
6195
7279
|
const next2 = Math.min(Math.max(index, 0), lastIndex);
|
|
@@ -6199,7 +7283,7 @@ function useTour(options) {
|
|
|
6199
7283
|
},
|
|
6200
7284
|
[lastIndex, onStepChange]
|
|
6201
7285
|
);
|
|
6202
|
-
const next =
|
|
7286
|
+
const next = React24.useCallback(() => {
|
|
6203
7287
|
setCurrent((prev2) => {
|
|
6204
7288
|
if (prev2 >= lastIndex) {
|
|
6205
7289
|
if (loop && total > 0) {
|
|
@@ -6213,7 +7297,7 @@ function useTour(options) {
|
|
|
6213
7297
|
return prev2 + 1;
|
|
6214
7298
|
});
|
|
6215
7299
|
}, [lastIndex, total, loop, onComplete, onStepChange]);
|
|
6216
|
-
const prev =
|
|
7300
|
+
const prev = React24.useCallback(() => {
|
|
6217
7301
|
setCurrent((p) => {
|
|
6218
7302
|
if (p <= 0) {
|
|
6219
7303
|
if (loop && total > 0) {
|
|
@@ -6226,10 +7310,10 @@ function useTour(options) {
|
|
|
6226
7310
|
return p - 1;
|
|
6227
7311
|
});
|
|
6228
7312
|
}, [lastIndex, total, loop, onStepChange]);
|
|
6229
|
-
const exit =
|
|
7313
|
+
const exit = React24.useCallback(() => {
|
|
6230
7314
|
onExit?.();
|
|
6231
7315
|
}, [onExit]);
|
|
6232
|
-
return
|
|
7316
|
+
return React24.useMemo(
|
|
6233
7317
|
() => ({
|
|
6234
7318
|
step: steps[clamped],
|
|
6235
7319
|
current: clamped,
|
|
@@ -6287,7 +7371,7 @@ function Tour({
|
|
|
6287
7371
|
/* @__PURE__ */ jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 p-3", children: [
|
|
6288
7372
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6289
7373
|
/* @__PURE__ */ jsx(Badge, { variant: "soft", className: "tracking-wider", children: badgeLabel }),
|
|
6290
|
-
showCounter && /* @__PURE__ */ jsxs("span", { className: "text-
|
|
7374
|
+
showCounter && /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground", children: [
|
|
6291
7375
|
current + 1,
|
|
6292
7376
|
" / ",
|
|
6293
7377
|
total
|
|
@@ -6298,7 +7382,7 @@ function Tour({
|
|
|
6298
7382
|
{
|
|
6299
7383
|
variant: "ghost",
|
|
6300
7384
|
size: "sm",
|
|
6301
|
-
className: "-mr-1 h-7 gap-1 px-2 text-
|
|
7385
|
+
className: "-mr-1 h-7 gap-1 px-2 text-sm text-muted-foreground [&_svg]:size-3.5",
|
|
6302
7386
|
onClick: ctrl.exit,
|
|
6303
7387
|
children: [
|
|
6304
7388
|
/* @__PURE__ */ jsx(X, {}),
|
|
@@ -6392,7 +7476,7 @@ function Tour({
|
|
|
6392
7476
|
) });
|
|
6393
7477
|
}
|
|
6394
7478
|
var TreeView = ({ searchable = false, ...props }) => {
|
|
6395
|
-
const [searchQuery, setSearchQuery] =
|
|
7479
|
+
const [searchQuery, setSearchQuery] = React24.useState("");
|
|
6396
7480
|
const filterItems = (items, query) => {
|
|
6397
7481
|
if (!query) return items;
|
|
6398
7482
|
return items.map((item) => ({
|
|
@@ -6415,7 +7499,7 @@ var TreeView = ({ searchable = false, ...props }) => {
|
|
|
6415
7499
|
);
|
|
6416
7500
|
};
|
|
6417
7501
|
var TreeItem = ({ item }) => {
|
|
6418
|
-
const [isExpanded, setIsExpanded] =
|
|
7502
|
+
const [isExpanded, setIsExpanded] = React24.useState(item.isExpanded || true);
|
|
6419
7503
|
const hasChildren = item.children && item.children.length > 0;
|
|
6420
7504
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
6421
7505
|
/* @__PURE__ */ jsxs(
|
|
@@ -6484,7 +7568,7 @@ function UnderDevelopment({
|
|
|
6484
7568
|
/* @__PURE__ */ jsx("span", { className: "mt-4 px-3 py-1 bg-yellow-100 text-yellow-800", children: "Coming Soon" })
|
|
6485
7569
|
] });
|
|
6486
7570
|
}
|
|
6487
|
-
var TypographyH1 =
|
|
7571
|
+
var TypographyH1 = React24.forwardRef(
|
|
6488
7572
|
({ className, ...props }, ref) => {
|
|
6489
7573
|
return /* @__PURE__ */ jsx(
|
|
6490
7574
|
"h1",
|
|
@@ -6500,7 +7584,7 @@ var TypographyH1 = React23.forwardRef(
|
|
|
6500
7584
|
}
|
|
6501
7585
|
);
|
|
6502
7586
|
TypographyH1.displayName = "TypographyH1";
|
|
6503
|
-
var TypographyH2 =
|
|
7587
|
+
var TypographyH2 = React24.forwardRef(
|
|
6504
7588
|
({ className, ...props }, ref) => {
|
|
6505
7589
|
return /* @__PURE__ */ jsx(
|
|
6506
7590
|
"h2",
|
|
@@ -6516,7 +7600,7 @@ var TypographyH2 = React23.forwardRef(
|
|
|
6516
7600
|
}
|
|
6517
7601
|
);
|
|
6518
7602
|
TypographyH2.displayName = "TypographyH2";
|
|
6519
|
-
var TypographyH3 =
|
|
7603
|
+
var TypographyH3 = React24.forwardRef(
|
|
6520
7604
|
({ className, ...props }, ref) => {
|
|
6521
7605
|
return /* @__PURE__ */ jsx(
|
|
6522
7606
|
"h3",
|
|
@@ -6532,7 +7616,7 @@ var TypographyH3 = React23.forwardRef(
|
|
|
6532
7616
|
}
|
|
6533
7617
|
);
|
|
6534
7618
|
TypographyH3.displayName = "TypographyH3";
|
|
6535
|
-
var TypographyH4 =
|
|
7619
|
+
var TypographyH4 = React24.forwardRef(
|
|
6536
7620
|
({ className, ...props }, ref) => {
|
|
6537
7621
|
return /* @__PURE__ */ jsx(
|
|
6538
7622
|
"h4",
|
|
@@ -6548,7 +7632,7 @@ var TypographyH4 = React23.forwardRef(
|
|
|
6548
7632
|
}
|
|
6549
7633
|
);
|
|
6550
7634
|
TypographyH4.displayName = "TypographyH4";
|
|
6551
|
-
var TypographyH5 =
|
|
7635
|
+
var TypographyH5 = React24.forwardRef(
|
|
6552
7636
|
({ className, ...props }, ref) => {
|
|
6553
7637
|
return /* @__PURE__ */ jsx(
|
|
6554
7638
|
"h5",
|
|
@@ -6564,7 +7648,7 @@ var TypographyH5 = React23.forwardRef(
|
|
|
6564
7648
|
}
|
|
6565
7649
|
);
|
|
6566
7650
|
TypographyH5.displayName = "TypographyH5";
|
|
6567
|
-
var TypographyH6 =
|
|
7651
|
+
var TypographyH6 = React24.forwardRef(
|
|
6568
7652
|
({ className, ...props }, ref) => {
|
|
6569
7653
|
return /* @__PURE__ */ jsx(
|
|
6570
7654
|
"h6",
|
|
@@ -6580,7 +7664,7 @@ var TypographyH6 = React23.forwardRef(
|
|
|
6580
7664
|
}
|
|
6581
7665
|
);
|
|
6582
7666
|
TypographyH6.displayName = "TypographyH6";
|
|
6583
|
-
var TypographyP =
|
|
7667
|
+
var TypographyP = React24.forwardRef(
|
|
6584
7668
|
({ className, ...props }, ref) => {
|
|
6585
7669
|
return /* @__PURE__ */ jsx(
|
|
6586
7670
|
"p",
|
|
@@ -6596,7 +7680,7 @@ var TypographyP = React23.forwardRef(
|
|
|
6596
7680
|
}
|
|
6597
7681
|
);
|
|
6598
7682
|
TypographyP.displayName = "TypographyP";
|
|
6599
|
-
var TypographyBlockquote =
|
|
7683
|
+
var TypographyBlockquote = React24.forwardRef(
|
|
6600
7684
|
({ className, ...props }, ref) => {
|
|
6601
7685
|
return /* @__PURE__ */ jsx(
|
|
6602
7686
|
"blockquote",
|
|
@@ -6612,14 +7696,14 @@ var TypographyBlockquote = React23.forwardRef(
|
|
|
6612
7696
|
}
|
|
6613
7697
|
);
|
|
6614
7698
|
TypographyBlockquote.displayName = "TypographyBlockquote";
|
|
6615
|
-
var TypographyInlineCode =
|
|
7699
|
+
var TypographyInlineCode = React24.forwardRef(
|
|
6616
7700
|
({ className, ...props }, ref) => {
|
|
6617
7701
|
return /* @__PURE__ */ jsx(
|
|
6618
7702
|
"code",
|
|
6619
7703
|
{
|
|
6620
7704
|
ref,
|
|
6621
7705
|
className: cn(
|
|
6622
|
-
"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-
|
|
7706
|
+
"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold",
|
|
6623
7707
|
className
|
|
6624
7708
|
),
|
|
6625
7709
|
...props
|
|
@@ -6628,7 +7712,7 @@ var TypographyInlineCode = React23.forwardRef(
|
|
|
6628
7712
|
}
|
|
6629
7713
|
);
|
|
6630
7714
|
TypographyInlineCode.displayName = "TypographyInlineCode";
|
|
6631
|
-
var TypographyLead =
|
|
7715
|
+
var TypographyLead = React24.forwardRef(
|
|
6632
7716
|
({ className, ...props }, ref) => {
|
|
6633
7717
|
return /* @__PURE__ */ jsx(
|
|
6634
7718
|
"p",
|
|
@@ -6644,7 +7728,7 @@ var TypographyLead = React23.forwardRef(
|
|
|
6644
7728
|
}
|
|
6645
7729
|
);
|
|
6646
7730
|
TypographyLead.displayName = "TypographyLead";
|
|
6647
|
-
var TypographyLarge =
|
|
7731
|
+
var TypographyLarge = React24.forwardRef(
|
|
6648
7732
|
({ className, ...props }, ref) => {
|
|
6649
7733
|
return /* @__PURE__ */ jsx(
|
|
6650
7734
|
"div",
|
|
@@ -6660,14 +7744,14 @@ var TypographyLarge = React23.forwardRef(
|
|
|
6660
7744
|
}
|
|
6661
7745
|
);
|
|
6662
7746
|
TypographyLarge.displayName = "TypographyLarge";
|
|
6663
|
-
var TypographySmall =
|
|
7747
|
+
var TypographySmall = React24.forwardRef(
|
|
6664
7748
|
({ className, ...props }, ref) => {
|
|
6665
7749
|
return /* @__PURE__ */ jsx(
|
|
6666
7750
|
"small",
|
|
6667
7751
|
{
|
|
6668
7752
|
ref,
|
|
6669
7753
|
className: cn(
|
|
6670
|
-
"text-
|
|
7754
|
+
"text-sm font-medium leading-none",
|
|
6671
7755
|
className
|
|
6672
7756
|
),
|
|
6673
7757
|
...props
|
|
@@ -6676,7 +7760,7 @@ var TypographySmall = React23.forwardRef(
|
|
|
6676
7760
|
}
|
|
6677
7761
|
);
|
|
6678
7762
|
TypographySmall.displayName = "TypographySmall";
|
|
6679
|
-
var TypographyMuted =
|
|
7763
|
+
var TypographyMuted = React24.forwardRef(
|
|
6680
7764
|
({ className, ...props }, ref) => {
|
|
6681
7765
|
return /* @__PURE__ */ jsx(
|
|
6682
7766
|
"p",
|
|
@@ -6692,7 +7776,7 @@ var TypographyMuted = React23.forwardRef(
|
|
|
6692
7776
|
}
|
|
6693
7777
|
);
|
|
6694
7778
|
TypographyMuted.displayName = "TypographyMuted";
|
|
6695
|
-
var TypographyList =
|
|
7779
|
+
var TypographyList = React24.forwardRef(
|
|
6696
7780
|
({ className, ...props }, ref) => {
|
|
6697
7781
|
return /* @__PURE__ */ jsx(
|
|
6698
7782
|
"ul",
|
|
@@ -6708,7 +7792,7 @@ var TypographyList = React23.forwardRef(
|
|
|
6708
7792
|
}
|
|
6709
7793
|
);
|
|
6710
7794
|
TypographyList.displayName = "TypographyList";
|
|
6711
|
-
var TypographyPre =
|
|
7795
|
+
var TypographyPre = React24.forwardRef(
|
|
6712
7796
|
({ className, ...props }, ref) => {
|
|
6713
7797
|
return /* @__PURE__ */ jsx(
|
|
6714
7798
|
"pre",
|
|
@@ -6744,6 +7828,6 @@ var Typography = {
|
|
|
6744
7828
|
Pre: TypographyPre
|
|
6745
7829
|
};
|
|
6746
7830
|
|
|
6747
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgentChip, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppStatusBar, Avatar, AvatarFallback, AvatarImage, Badge, BarChartH, BarChartV, BoundChip, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, ButtonWithTooltip, CannotAnswerCard, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithHeader, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChatSession, ChatSessionActivityRow, ChatSessionActivitySubLine, ChatSessionComposer, ChatSessionContextChip, ChatSessionDisclosure, ChatSessionMessage, ChatSessionMessageOptions, ChatSessionProgressLine, ChatSessionPromptRow, ChatSessionStatusBar, ChatSessionTaskGroup, ChatSessionTaskRow, CitationList, CitationMarker, CitationRow, ClampedText, ClarifyCard, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextBar, DiagnosisCard, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffList, DiffRow, DivergingBar, DotRating, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmissionCard, EmissionHeader, EmptyState, EmptyStateLock, ErrorBoundary, Eyebrow, FilterBar, FilterChip, HeatStrip, HoverCard, HoverCardContent, HoverCardTrigger, Item3 as Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Legend, LegendItem, MenuItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricGrid, MetricTile, NavBase, NavHorizontal, NavHorizontalItems, NavItems, NavVertical, NavVerticalItems, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NestedMenu, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PanelBox, PanelContent, PanelStack, Popover, PopoverContent, PopoverTrigger, Progress, PropertyList, PropertyRow, ProposalCard, RatingControl, RecordHeader, RepairNote, ResizableHandle, ResizablePanel, ResizablePanelGroup, RetryNote, RichSelect, ScrollArea, ScrollBar, SearchInput, SectionHeader, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Sparkline, Spinner, StatusDot, TabbedPanel, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskGantt, TaskGanttDetailCard, TaskNode, TemplatePicker, Terminal, TerminalLine, TimelineEntry, TimelineFooter, TimelineList, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, TreeItem, TreeView, Typography, TypographyBlockquote, TypographyH1, TypographyH2, TypographyH3, TypographyH4, TypographyH5, TypographyH6, TypographyInlineCode, TypographyLarge, TypographyLead, TypographyList, TypographyMuted, TypographyP, TypographyPre, TypographySmall, UnderDevelopment, agentChipVariants, badgeVariants,
|
|
7831
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AddressChip, AgentChip, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppStatusBar, Avatar, AvatarFallback, AvatarImage, Badge, BarChartH, BarChartV, BoundChip, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, ButtonWithTooltip, CAST_ROLES, CannotAnswerCard, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithHeader, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CastTable, ChatSession, ChatSessionActivityRow, ChatSessionActivitySubLine, ChatSessionComposer, ChatSessionContextChip, ChatSessionDisclosure, ChatSessionMessage, ChatSessionMessageOptions, ChatSessionProgressLine, ChatSessionPromptRow, ChatSessionStatusBar, ChatSessionTaskGroup, ChatSessionTaskRow, CitationList, CitationMarker, CitationRow, ClampedText, ClarifyCard, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextBar, DiagnosisCard, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffList, DiffRow, DivergingBar, DotRating, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EgressList, EmissionCard, EmissionHeader, EmptyState, EmptyStateLock, ErrorBoundary, Eyebrow, FilterBar, FilterChip, HeatStrip, HoverCard, HoverCardContent, HoverCardTrigger, Item3 as Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, LayerChip, LayerSection, LayerStrip, Legend, LegendItem, LensChip, LensRow, Link, MatchPreview, MenuItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricGrid, MetricTile, NavBase, NavHorizontal, NavHorizontalItems, NavItems, NavVertical, NavVerticalItems, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NestedMenu, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PanelBox, PanelContent, PanelStack, Popover, PopoverContent, PopoverTrigger, Progress, PropertyList, PropertyRow, ProposalCard, RatingControl, RecordHeader, RepairNote, ResizableHandle, ResizablePanel, ResizablePanelGroup, RetryNote, RichSelect, RuleRow, ScrollArea, ScrollBar, SearchInput, SectionHeader, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, SliceSummary, Sparkline, Spinner, StatusDot, TabbedPanel, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskGantt, TaskGanttDetailCard, TaskNode, TemplatePicker, Terminal, TerminalLine, TimelineEntry, TimelineFooter, TimelineList, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, TreeItem, TreeView, Typography, TypographyBlockquote, TypographyH1, TypographyH2, TypographyH3, TypographyH4, TypographyH5, TypographyH6, TypographyInlineCode, TypographyLarge, TypographyLead, TypographyList, TypographyMuted, TypographyP, TypographyPre, TypographySmall, UnderDevelopment, agentChipVariants, badgeVariants, buttonGroupVariants, buttonVariants, chatSessionGutterClass, cn, describeSlice, stateLabel as layerItemLabel, layerLabel, layerPaint, linkVariants, navigationMenuTriggerStyle, split as splitAddress, statusDotVariants, toggleVariants, useOverflowItems, useSidebar, useTour };
|
|
6748
7832
|
//# sourceMappingURL=index.js.map
|
|
6749
7833
|
//# sourceMappingURL=index.js.map
|