@invana/ui 0.0.29 → 0.0.31
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 +1939 -611
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1086 -75
- package/dist/index.d.ts +1086 -75
- package/dist/index.js +1918 -608
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
|
-
import {
|
|
3
|
-
import * as
|
|
4
|
-
import
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
import * as React25 from 'react';
|
|
4
|
+
import React25__default, { Component } from 'react';
|
|
5
5
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
6
|
-
import { ChevronDown, ArrowLeft, ArrowRight, X, Search, ChevronRight, Check, Circle, PanelLeft,
|
|
6
|
+
import { ChevronDown, ArrowLeft, ArrowRight, X, Search, ChevronRight, Check, Circle, PanelLeft, ChevronLeft, MoreHorizontal, Loader2Icon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon, Frown, Lock, Construction } from 'lucide-react';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import { cva } from 'class-variance-authority';
|
|
9
9
|
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
@@ -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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
349
342
|
Breadcrumb.displayName = "Breadcrumb";
|
|
350
|
-
var BreadcrumbList =
|
|
343
|
+
var BreadcrumbList = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.createContext(null);
|
|
571
564
|
function useCarousel() {
|
|
572
|
-
const context =
|
|
565
|
+
const context = React25.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 = React25.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] = React25.useState(false);
|
|
589
|
+
const [canScrollNext, setCanScrollNext] = React25.useState(false);
|
|
590
|
+
const onSelect = React25.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 = React25.useCallback(() => {
|
|
605
598
|
api?.scrollPrev();
|
|
606
599
|
}, [api]);
|
|
607
|
-
const scrollNext =
|
|
600
|
+
const scrollNext = React25.useCallback(() => {
|
|
608
601
|
api?.scrollNext();
|
|
609
602
|
}, [api]);
|
|
610
|
-
const handleKeyDown =
|
|
603
|
+
const handleKeyDown = React25.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
|
+
React25.useEffect(() => {
|
|
623
616
|
if (!api || !setApi) {
|
|
624
617
|
return;
|
|
625
618
|
}
|
|
626
619
|
setApi(api);
|
|
627
620
|
}, [api, setApi]);
|
|
628
|
-
|
|
621
|
+
React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.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 = React25.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1732
1751
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
1733
1752
|
{
|
|
1734
1753
|
ref,
|
|
@@ -1744,11 +1763,90 @@ var ScrollBar = React23.forwardRef(({ className, orientation = "vertical", ...pr
|
|
|
1744
1763
|
}
|
|
1745
1764
|
));
|
|
1746
1765
|
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
1766
|
+
var SegmentedControl = React25.forwardRef(
|
|
1767
|
+
({
|
|
1768
|
+
options,
|
|
1769
|
+
value,
|
|
1770
|
+
defaultValue,
|
|
1771
|
+
onValueChange,
|
|
1772
|
+
size = "xs",
|
|
1773
|
+
stretch,
|
|
1774
|
+
className,
|
|
1775
|
+
...props
|
|
1776
|
+
}, ref) => {
|
|
1777
|
+
const [internal, setInternal] = React25.useState(
|
|
1778
|
+
defaultValue ?? options[0]?.value
|
|
1779
|
+
);
|
|
1780
|
+
const active = value ?? internal;
|
|
1781
|
+
const refs = React25.useRef([]);
|
|
1782
|
+
const select = (next) => {
|
|
1783
|
+
if (value == null) setInternal(next);
|
|
1784
|
+
onValueChange?.(next);
|
|
1785
|
+
};
|
|
1786
|
+
const onKeyDown = (event, index) => {
|
|
1787
|
+
const forward = event.key === "ArrowRight" || event.key === "ArrowDown";
|
|
1788
|
+
const back = event.key === "ArrowLeft" || event.key === "ArrowUp";
|
|
1789
|
+
if (!forward && !back) return;
|
|
1790
|
+
event.preventDefault();
|
|
1791
|
+
const step = forward ? 1 : -1;
|
|
1792
|
+
for (let i = 1; i <= options.length; i += 1) {
|
|
1793
|
+
const next = options[(index + step * i + options.length * i) % options.length];
|
|
1794
|
+
if (next && !next.disabled) {
|
|
1795
|
+
select(next.value);
|
|
1796
|
+
refs.current[options.indexOf(next)]?.focus();
|
|
1797
|
+
return;
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
};
|
|
1801
|
+
return /* @__PURE__ */ jsx(
|
|
1802
|
+
"div",
|
|
1803
|
+
{
|
|
1804
|
+
ref,
|
|
1805
|
+
role: "radiogroup",
|
|
1806
|
+
className: cn(
|
|
1807
|
+
"inline-flex overflow-hidden rounded-control border border-border",
|
|
1808
|
+
stretch && "flex w-full",
|
|
1809
|
+
className
|
|
1810
|
+
),
|
|
1811
|
+
...props,
|
|
1812
|
+
children: options.map((option, index) => {
|
|
1813
|
+
const on = option.value === active;
|
|
1814
|
+
return /* @__PURE__ */ jsx(
|
|
1815
|
+
"button",
|
|
1816
|
+
{
|
|
1817
|
+
ref: (node) => {
|
|
1818
|
+
refs.current[index] = node;
|
|
1819
|
+
},
|
|
1820
|
+
type: "button",
|
|
1821
|
+
role: "radio",
|
|
1822
|
+
"aria-checked": on,
|
|
1823
|
+
disabled: option.disabled,
|
|
1824
|
+
tabIndex: on ? 0 : -1,
|
|
1825
|
+
onClick: () => select(option.value),
|
|
1826
|
+
onKeyDown: (event) => onKeyDown(event, index),
|
|
1827
|
+
className: cn(
|
|
1828
|
+
"min-w-0 truncate px-2 text-center whitespace-nowrap",
|
|
1829
|
+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-ring",
|
|
1830
|
+
size === "xs" ? "h-[22px] text-sm" : "h-[26px]",
|
|
1831
|
+
stretch && "flex-1",
|
|
1832
|
+
on ? "bg-primary/12 font-medium text-primary" : "text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
1833
|
+
option.disabled && "pointer-events-none opacity-50"
|
|
1834
|
+
),
|
|
1835
|
+
children: option.label
|
|
1836
|
+
},
|
|
1837
|
+
option.value
|
|
1838
|
+
);
|
|
1839
|
+
})
|
|
1840
|
+
}
|
|
1841
|
+
);
|
|
1842
|
+
}
|
|
1843
|
+
);
|
|
1844
|
+
SegmentedControl.displayName = "SegmentedControl";
|
|
1747
1845
|
var Sheet = DialogPrimitive.Root;
|
|
1748
1846
|
var SheetTrigger = DialogPrimitive.Trigger;
|
|
1749
1847
|
var SheetClose = DialogPrimitive.Close;
|
|
1750
1848
|
var SheetPortal = DialogPrimitive.Portal;
|
|
1751
|
-
var SheetOverlay =
|
|
1849
|
+
var SheetOverlay = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1752
1850
|
DialogPrimitive.Overlay,
|
|
1753
1851
|
{
|
|
1754
1852
|
className: cn(
|
|
@@ -1776,7 +1874,7 @@ var sheetVariants = cva(
|
|
|
1776
1874
|
}
|
|
1777
1875
|
}
|
|
1778
1876
|
);
|
|
1779
|
-
var SheetContent =
|
|
1877
|
+
var SheetContent = React25.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
1780
1878
|
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
1781
1879
|
/* @__PURE__ */ jsxs(
|
|
1782
1880
|
DialogPrimitive.Content,
|
|
@@ -1823,7 +1921,7 @@ var SheetFooter = ({
|
|
|
1823
1921
|
}
|
|
1824
1922
|
);
|
|
1825
1923
|
SheetFooter.displayName = "SheetFooter";
|
|
1826
|
-
var SheetTitle =
|
|
1924
|
+
var SheetTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1827
1925
|
DialogPrimitive.Title,
|
|
1828
1926
|
{
|
|
1829
1927
|
ref,
|
|
@@ -1832,7 +1930,7 @@ var SheetTitle = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
1832
1930
|
}
|
|
1833
1931
|
));
|
|
1834
1932
|
SheetTitle.displayName = DialogPrimitive.Title.displayName;
|
|
1835
|
-
var SheetDescription =
|
|
1933
|
+
var SheetDescription = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1836
1934
|
DialogPrimitive.Description,
|
|
1837
1935
|
{
|
|
1838
1936
|
ref,
|
|
@@ -1843,8 +1941,8 @@ var SheetDescription = React23.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
1843
1941
|
SheetDescription.displayName = DialogPrimitive.Description.displayName;
|
|
1844
1942
|
var MOBILE_BREAKPOINT = 768;
|
|
1845
1943
|
function useIsMobile() {
|
|
1846
|
-
const [isMobile, setIsMobile] =
|
|
1847
|
-
|
|
1944
|
+
const [isMobile, setIsMobile] = React25.useState(void 0);
|
|
1945
|
+
React25.useEffect(() => {
|
|
1848
1946
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
1849
1947
|
const onChange = () => {
|
|
1850
1948
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -1870,7 +1968,7 @@ function Skeleton({
|
|
|
1870
1968
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
1871
1969
|
var Tooltip = TooltipPrimitive.Root;
|
|
1872
1970
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
1873
|
-
var TooltipContent =
|
|
1971
|
+
var TooltipContent = React25.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1874
1972
|
TooltipPrimitive.Content,
|
|
1875
1973
|
{
|
|
1876
1974
|
ref,
|
|
@@ -1889,15 +1987,15 @@ var SIDEBAR_WIDTH = "16rem";
|
|
|
1889
1987
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
1890
1988
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
1891
1989
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
1892
|
-
var SidebarContext =
|
|
1990
|
+
var SidebarContext = React25.createContext(null);
|
|
1893
1991
|
function useSidebar() {
|
|
1894
|
-
const context =
|
|
1992
|
+
const context = React25.useContext(SidebarContext);
|
|
1895
1993
|
if (!context) {
|
|
1896
1994
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
1897
1995
|
}
|
|
1898
1996
|
return context;
|
|
1899
1997
|
}
|
|
1900
|
-
var SidebarProvider =
|
|
1998
|
+
var SidebarProvider = React25.forwardRef(
|
|
1901
1999
|
({
|
|
1902
2000
|
defaultOpen = true,
|
|
1903
2001
|
open: openProp,
|
|
@@ -1908,10 +2006,10 @@ var SidebarProvider = React23.forwardRef(
|
|
|
1908
2006
|
...props
|
|
1909
2007
|
}, ref) => {
|
|
1910
2008
|
const isMobile = useIsMobile();
|
|
1911
|
-
const [openMobile, setOpenMobile] =
|
|
1912
|
-
const [_open, _setOpen] =
|
|
2009
|
+
const [openMobile, setOpenMobile] = React25.useState(false);
|
|
2010
|
+
const [_open, _setOpen] = React25.useState(defaultOpen);
|
|
1913
2011
|
const open = openProp ?? _open;
|
|
1914
|
-
const setOpen =
|
|
2012
|
+
const setOpen = React25.useCallback(
|
|
1915
2013
|
(value) => {
|
|
1916
2014
|
const openState = typeof value === "function" ? value(open) : value;
|
|
1917
2015
|
if (setOpenProp) {
|
|
@@ -1923,10 +2021,10 @@ var SidebarProvider = React23.forwardRef(
|
|
|
1923
2021
|
},
|
|
1924
2022
|
[setOpenProp, open]
|
|
1925
2023
|
);
|
|
1926
|
-
const toggleSidebar =
|
|
2024
|
+
const toggleSidebar = React25.useCallback(() => {
|
|
1927
2025
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
1928
2026
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
1929
|
-
|
|
2027
|
+
React25.useEffect(() => {
|
|
1930
2028
|
const handleKeyDown = (event) => {
|
|
1931
2029
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
1932
2030
|
event.preventDefault();
|
|
@@ -1937,7 +2035,7 @@ var SidebarProvider = React23.forwardRef(
|
|
|
1937
2035
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
1938
2036
|
}, [toggleSidebar]);
|
|
1939
2037
|
const state = open ? "expanded" : "collapsed";
|
|
1940
|
-
const contextValue =
|
|
2038
|
+
const contextValue = React25.useMemo(
|
|
1941
2039
|
() => ({
|
|
1942
2040
|
state,
|
|
1943
2041
|
open,
|
|
@@ -1969,7 +2067,7 @@ var SidebarProvider = React23.forwardRef(
|
|
|
1969
2067
|
}
|
|
1970
2068
|
);
|
|
1971
2069
|
SidebarProvider.displayName = "SidebarProvider";
|
|
1972
|
-
var Sidebar =
|
|
2070
|
+
var Sidebar = React25.forwardRef(
|
|
1973
2071
|
({
|
|
1974
2072
|
side = "left",
|
|
1975
2073
|
variant = "sidebar",
|
|
@@ -2062,7 +2160,7 @@ var Sidebar = React23.forwardRef(
|
|
|
2062
2160
|
}
|
|
2063
2161
|
);
|
|
2064
2162
|
Sidebar.displayName = "Sidebar";
|
|
2065
|
-
var SidebarTrigger =
|
|
2163
|
+
var SidebarTrigger = React25.forwardRef(({ className, onClick, ...props }, ref) => {
|
|
2066
2164
|
const { toggleSidebar } = useSidebar();
|
|
2067
2165
|
return /* @__PURE__ */ jsxs(
|
|
2068
2166
|
Button,
|
|
@@ -2085,7 +2183,7 @@ var SidebarTrigger = React23.forwardRef(({ className, onClick, ...props }, ref)
|
|
|
2085
2183
|
);
|
|
2086
2184
|
});
|
|
2087
2185
|
SidebarTrigger.displayName = "SidebarTrigger";
|
|
2088
|
-
var SidebarRail =
|
|
2186
|
+
var SidebarRail = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2089
2187
|
const { toggleSidebar } = useSidebar();
|
|
2090
2188
|
return /* @__PURE__ */ jsx(
|
|
2091
2189
|
"button",
|
|
@@ -2110,7 +2208,7 @@ var SidebarRail = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2110
2208
|
);
|
|
2111
2209
|
});
|
|
2112
2210
|
SidebarRail.displayName = "SidebarRail";
|
|
2113
|
-
var SidebarInset =
|
|
2211
|
+
var SidebarInset = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2114
2212
|
return /* @__PURE__ */ jsx(
|
|
2115
2213
|
"main",
|
|
2116
2214
|
{
|
|
@@ -2125,7 +2223,7 @@ var SidebarInset = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2125
2223
|
);
|
|
2126
2224
|
});
|
|
2127
2225
|
SidebarInset.displayName = "SidebarInset";
|
|
2128
|
-
var SidebarInput =
|
|
2226
|
+
var SidebarInput = React25.forwardRef(({ className, type, ...props }, ref) => {
|
|
2129
2227
|
return /* @__PURE__ */ jsx(
|
|
2130
2228
|
"input",
|
|
2131
2229
|
{
|
|
@@ -2143,7 +2241,7 @@ var SidebarInput = React23.forwardRef(({ className, type, ...props }, ref) => {
|
|
|
2143
2241
|
);
|
|
2144
2242
|
});
|
|
2145
2243
|
SidebarInput.displayName = "SidebarInput";
|
|
2146
|
-
var SidebarHeader =
|
|
2244
|
+
var SidebarHeader = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2147
2245
|
return /* @__PURE__ */ jsx(
|
|
2148
2246
|
"div",
|
|
2149
2247
|
{
|
|
@@ -2155,7 +2253,7 @@ var SidebarHeader = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2155
2253
|
);
|
|
2156
2254
|
});
|
|
2157
2255
|
SidebarHeader.displayName = "SidebarHeader";
|
|
2158
|
-
var SidebarFooter =
|
|
2256
|
+
var SidebarFooter = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2159
2257
|
return /* @__PURE__ */ jsx(
|
|
2160
2258
|
"div",
|
|
2161
2259
|
{
|
|
@@ -2167,7 +2265,7 @@ var SidebarFooter = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2167
2265
|
);
|
|
2168
2266
|
});
|
|
2169
2267
|
SidebarFooter.displayName = "SidebarFooter";
|
|
2170
|
-
var SidebarSeparator =
|
|
2268
|
+
var SidebarSeparator = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2171
2269
|
return /* @__PURE__ */ jsx(
|
|
2172
2270
|
Separator,
|
|
2173
2271
|
{
|
|
@@ -2179,7 +2277,7 @@ var SidebarSeparator = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2179
2277
|
);
|
|
2180
2278
|
});
|
|
2181
2279
|
SidebarSeparator.displayName = "SidebarSeparator";
|
|
2182
|
-
var SidebarContent =
|
|
2280
|
+
var SidebarContent = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2183
2281
|
return /* @__PURE__ */ jsx(
|
|
2184
2282
|
"div",
|
|
2185
2283
|
{
|
|
@@ -2194,7 +2292,7 @@ var SidebarContent = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2194
2292
|
);
|
|
2195
2293
|
});
|
|
2196
2294
|
SidebarContent.displayName = "SidebarContent";
|
|
2197
|
-
var SidebarGroup =
|
|
2295
|
+
var SidebarGroup = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2198
2296
|
return /* @__PURE__ */ jsx(
|
|
2199
2297
|
"div",
|
|
2200
2298
|
{
|
|
@@ -2206,7 +2304,7 @@ var SidebarGroup = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2206
2304
|
);
|
|
2207
2305
|
});
|
|
2208
2306
|
SidebarGroup.displayName = "SidebarGroup";
|
|
2209
|
-
var SidebarGroupLabel =
|
|
2307
|
+
var SidebarGroupLabel = React25.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
2210
2308
|
const Comp = asChild ? Slot : "div";
|
|
2211
2309
|
return /* @__PURE__ */ jsx(
|
|
2212
2310
|
Comp,
|
|
@@ -2214,7 +2312,7 @@ var SidebarGroupLabel = React23.forwardRef(({ className, asChild = false, ...pro
|
|
|
2214
2312
|
ref,
|
|
2215
2313
|
"data-sidebar": "group-label",
|
|
2216
2314
|
className: cn(
|
|
2217
|
-
"flex h-8 shrink-0 items-center rounded-md px-2 text-
|
|
2315
|
+
"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
2316
|
"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
|
|
2219
2317
|
className
|
|
2220
2318
|
),
|
|
@@ -2223,7 +2321,7 @@ var SidebarGroupLabel = React23.forwardRef(({ className, asChild = false, ...pro
|
|
|
2223
2321
|
);
|
|
2224
2322
|
});
|
|
2225
2323
|
SidebarGroupLabel.displayName = "SidebarGroupLabel";
|
|
2226
|
-
var SidebarGroupAction =
|
|
2324
|
+
var SidebarGroupAction = React25.forwardRef(({ className, asChild = false, ...props }, ref) => {
|
|
2227
2325
|
const Comp = asChild ? Slot : "button";
|
|
2228
2326
|
return /* @__PURE__ */ jsx(
|
|
2229
2327
|
Comp,
|
|
@@ -2242,7 +2340,7 @@ var SidebarGroupAction = React23.forwardRef(({ className, asChild = false, ...pr
|
|
|
2242
2340
|
);
|
|
2243
2341
|
});
|
|
2244
2342
|
SidebarGroupAction.displayName = "SidebarGroupAction";
|
|
2245
|
-
var SidebarGroupContent =
|
|
2343
|
+
var SidebarGroupContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2246
2344
|
"div",
|
|
2247
2345
|
{
|
|
2248
2346
|
ref,
|
|
@@ -2252,7 +2350,7 @@ var SidebarGroupContent = React23.forwardRef(({ className, ...props }, ref) => /
|
|
|
2252
2350
|
}
|
|
2253
2351
|
));
|
|
2254
2352
|
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
2255
|
-
var SidebarMenu =
|
|
2353
|
+
var SidebarMenu = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2256
2354
|
"ul",
|
|
2257
2355
|
{
|
|
2258
2356
|
ref,
|
|
@@ -2262,7 +2360,7 @@ var SidebarMenu = React23.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2262
2360
|
}
|
|
2263
2361
|
));
|
|
2264
2362
|
SidebarMenu.displayName = "SidebarMenu";
|
|
2265
|
-
var SidebarMenuItem =
|
|
2363
|
+
var SidebarMenuItem = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2266
2364
|
"li",
|
|
2267
2365
|
{
|
|
2268
2366
|
ref,
|
|
@@ -2292,7 +2390,7 @@ var sidebarMenuButtonVariants = cva(
|
|
|
2292
2390
|
}
|
|
2293
2391
|
}
|
|
2294
2392
|
);
|
|
2295
|
-
var SidebarMenuButton =
|
|
2393
|
+
var SidebarMenuButton = React25.forwardRef(
|
|
2296
2394
|
({
|
|
2297
2395
|
asChild = false,
|
|
2298
2396
|
isActive = false,
|
|
@@ -2338,7 +2436,7 @@ var SidebarMenuButton = React23.forwardRef(
|
|
|
2338
2436
|
}
|
|
2339
2437
|
);
|
|
2340
2438
|
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
2341
|
-
var SidebarMenuAction =
|
|
2439
|
+
var SidebarMenuAction = React25.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
|
|
2342
2440
|
const Comp = asChild ? Slot : "button";
|
|
2343
2441
|
return /* @__PURE__ */ jsx(
|
|
2344
2442
|
Comp,
|
|
@@ -2361,13 +2459,13 @@ var SidebarMenuAction = React23.forwardRef(({ className, asChild = false, showOn
|
|
|
2361
2459
|
);
|
|
2362
2460
|
});
|
|
2363
2461
|
SidebarMenuAction.displayName = "SidebarMenuAction";
|
|
2364
|
-
var SidebarMenuBadge =
|
|
2462
|
+
var SidebarMenuBadge = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2365
2463
|
"div",
|
|
2366
2464
|
{
|
|
2367
2465
|
ref,
|
|
2368
2466
|
"data-sidebar": "menu-badge",
|
|
2369
2467
|
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-
|
|
2468
|
+
"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
2469
|
"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
|
|
2372
2470
|
"peer-data-[size=sm]/menu-button:top-1",
|
|
2373
2471
|
"peer-data-[size=default]/menu-button:top-1.5",
|
|
@@ -2379,8 +2477,8 @@ var SidebarMenuBadge = React23.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
2379
2477
|
}
|
|
2380
2478
|
));
|
|
2381
2479
|
SidebarMenuBadge.displayName = "SidebarMenuBadge";
|
|
2382
|
-
var SidebarMenuSkeleton =
|
|
2383
|
-
const width =
|
|
2480
|
+
var SidebarMenuSkeleton = React25.forwardRef(({ className, showIcon = false, ...props }, ref) => {
|
|
2481
|
+
const width = React25.useMemo(() => {
|
|
2384
2482
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
2385
2483
|
}, []);
|
|
2386
2484
|
return /* @__PURE__ */ jsxs(
|
|
@@ -2413,7 +2511,7 @@ var SidebarMenuSkeleton = React23.forwardRef(({ className, showIcon = false, ...
|
|
|
2413
2511
|
);
|
|
2414
2512
|
});
|
|
2415
2513
|
SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
|
|
2416
|
-
var SidebarMenuSub =
|
|
2514
|
+
var SidebarMenuSub = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2417
2515
|
"ul",
|
|
2418
2516
|
{
|
|
2419
2517
|
ref,
|
|
@@ -2427,9 +2525,9 @@ var SidebarMenuSub = React23.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
2427
2525
|
}
|
|
2428
2526
|
));
|
|
2429
2527
|
SidebarMenuSub.displayName = "SidebarMenuSub";
|
|
2430
|
-
var SidebarMenuSubItem =
|
|
2528
|
+
var SidebarMenuSubItem = React25.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("li", { ref, ...props }));
|
|
2431
2529
|
SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
|
|
2432
|
-
var SidebarMenuSubButton =
|
|
2530
|
+
var SidebarMenuSubButton = React25.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
|
|
2433
2531
|
const Comp = asChild ? Slot : "a";
|
|
2434
2532
|
return /* @__PURE__ */ jsx(
|
|
2435
2533
|
Comp,
|
|
@@ -2531,7 +2629,7 @@ var statusDotVariants = cva("inline-block shrink-0 rounded-full", {
|
|
|
2531
2629
|
size: "sm"
|
|
2532
2630
|
}
|
|
2533
2631
|
});
|
|
2534
|
-
var StatusDot =
|
|
2632
|
+
var StatusDot = React25.forwardRef(
|
|
2535
2633
|
({ className, tone, size, label, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2536
2634
|
"span",
|
|
2537
2635
|
{
|
|
@@ -2545,7 +2643,7 @@ var StatusDot = React23.forwardRef(
|
|
|
2545
2643
|
)
|
|
2546
2644
|
);
|
|
2547
2645
|
StatusDot.displayName = "StatusDot";
|
|
2548
|
-
var Table =
|
|
2646
|
+
var Table = React25.forwardRef(({ className, density = "default", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2549
2647
|
"div",
|
|
2550
2648
|
{
|
|
2551
2649
|
"data-density": density,
|
|
@@ -2561,9 +2659,9 @@ var Table = React23.forwardRef(({ className, density = "default", ...props }, re
|
|
|
2561
2659
|
}
|
|
2562
2660
|
));
|
|
2563
2661
|
Table.displayName = "Table";
|
|
2564
|
-
var TableHeader =
|
|
2662
|
+
var TableHeader = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
|
|
2565
2663
|
TableHeader.displayName = "TableHeader";
|
|
2566
|
-
var TableBody =
|
|
2664
|
+
var TableBody = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2567
2665
|
"tbody",
|
|
2568
2666
|
{
|
|
2569
2667
|
ref,
|
|
@@ -2572,7 +2670,7 @@ var TableBody = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
2572
2670
|
}
|
|
2573
2671
|
));
|
|
2574
2672
|
TableBody.displayName = "TableBody";
|
|
2575
|
-
var TableFooter =
|
|
2673
|
+
var TableFooter = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2576
2674
|
"tfoot",
|
|
2577
2675
|
{
|
|
2578
2676
|
ref,
|
|
@@ -2584,7 +2682,7 @@ var TableFooter = React23.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2584
2682
|
}
|
|
2585
2683
|
));
|
|
2586
2684
|
TableFooter.displayName = "TableFooter";
|
|
2587
|
-
var TableRow =
|
|
2685
|
+
var TableRow = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2588
2686
|
"tr",
|
|
2589
2687
|
{
|
|
2590
2688
|
ref,
|
|
@@ -2596,7 +2694,7 @@ var TableRow = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
2596
2694
|
}
|
|
2597
2695
|
));
|
|
2598
2696
|
TableRow.displayName = "TableRow";
|
|
2599
|
-
var TableHead =
|
|
2697
|
+
var TableHead = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2600
2698
|
"th",
|
|
2601
2699
|
{
|
|
2602
2700
|
ref,
|
|
@@ -2606,14 +2704,14 @@ var TableHead = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
2606
2704
|
// every cell follows from there. One prop on the table rather than a
|
|
2607
2705
|
// size on <TableHead> and <TableCell> individually — four places to
|
|
2608
2706
|
// 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-
|
|
2707
|
+
"group-data-[density=compact]/table:h-[26px] group-data-[density=compact]/table:text-sm",
|
|
2610
2708
|
className
|
|
2611
2709
|
),
|
|
2612
2710
|
...props
|
|
2613
2711
|
}
|
|
2614
2712
|
));
|
|
2615
2713
|
TableHead.displayName = "TableHead";
|
|
2616
|
-
var TableCell =
|
|
2714
|
+
var TableCell = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2617
2715
|
"td",
|
|
2618
2716
|
{
|
|
2619
2717
|
ref,
|
|
@@ -2626,7 +2724,7 @@ var TableCell = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
2626
2724
|
}
|
|
2627
2725
|
));
|
|
2628
2726
|
TableCell.displayName = "TableCell";
|
|
2629
|
-
var TableCaption =
|
|
2727
|
+
var TableCaption = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2630
2728
|
"caption",
|
|
2631
2729
|
{
|
|
2632
2730
|
ref,
|
|
@@ -2635,11 +2733,11 @@ var TableCaption = React23.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
2635
2733
|
}
|
|
2636
2734
|
));
|
|
2637
2735
|
TableCaption.displayName = "TableCaption";
|
|
2638
|
-
var TabsSizeContext =
|
|
2639
|
-
var Tabs =
|
|
2736
|
+
var TabsSizeContext = React25.createContext("default");
|
|
2737
|
+
var Tabs = React25.forwardRef(({ size = "default", ...props }, ref) => /* @__PURE__ */ jsx(TabsSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, ...props }) }));
|
|
2640
2738
|
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
2641
|
-
var TabsList =
|
|
2642
|
-
const size =
|
|
2739
|
+
var TabsList = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2740
|
+
const size = React25.useContext(TabsSizeContext);
|
|
2643
2741
|
return /* @__PURE__ */ jsx(
|
|
2644
2742
|
TabsPrimitive.List,
|
|
2645
2743
|
{
|
|
@@ -2654,14 +2752,14 @@ var TabsList = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2654
2752
|
);
|
|
2655
2753
|
});
|
|
2656
2754
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
2657
|
-
var TabsTrigger =
|
|
2658
|
-
const size =
|
|
2755
|
+
var TabsTrigger = React25.forwardRef(({ className, ...props }, ref) => {
|
|
2756
|
+
const size = React25.useContext(TabsSizeContext);
|
|
2659
2757
|
return /* @__PURE__ */ jsx(
|
|
2660
2758
|
TabsPrimitive.Trigger,
|
|
2661
2759
|
{
|
|
2662
2760
|
ref,
|
|
2663
2761
|
className: cn(
|
|
2664
|
-
size === "sm" ? "h-[26px] px-2 text-
|
|
2762
|
+
size === "sm" ? "h-[26px] px-2 text-sm" : "px-3 py-1",
|
|
2665
2763
|
"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
2764
|
className
|
|
2667
2765
|
),
|
|
@@ -2670,7 +2768,7 @@ var TabsTrigger = React23.forwardRef(({ className, ...props }, ref) => {
|
|
|
2670
2768
|
);
|
|
2671
2769
|
});
|
|
2672
2770
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
2673
|
-
var TabsContent =
|
|
2771
|
+
var TabsContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2674
2772
|
TabsPrimitive.Content,
|
|
2675
2773
|
{
|
|
2676
2774
|
ref,
|
|
@@ -2702,7 +2800,7 @@ var toggleVariants = cva(
|
|
|
2702
2800
|
}
|
|
2703
2801
|
}
|
|
2704
2802
|
);
|
|
2705
|
-
var Toggle =
|
|
2803
|
+
var Toggle = React25.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2706
2804
|
TogglePrimitive.Root,
|
|
2707
2805
|
{
|
|
2708
2806
|
ref,
|
|
@@ -2711,11 +2809,11 @@ var Toggle = React23.forwardRef(({ className, variant, size, ...props }, ref) =>
|
|
|
2711
2809
|
}
|
|
2712
2810
|
));
|
|
2713
2811
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
2714
|
-
var ToggleGroupContext =
|
|
2812
|
+
var ToggleGroupContext = React25.createContext({
|
|
2715
2813
|
size: "default",
|
|
2716
2814
|
variant: "default"
|
|
2717
2815
|
});
|
|
2718
|
-
var ToggleGroup =
|
|
2816
|
+
var ToggleGroup = React25.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2719
2817
|
ToggleGroupPrimitive.Root,
|
|
2720
2818
|
{
|
|
2721
2819
|
ref,
|
|
@@ -2725,8 +2823,8 @@ var ToggleGroup = React23.forwardRef(({ className, variant, size, children, ...p
|
|
|
2725
2823
|
}
|
|
2726
2824
|
));
|
|
2727
2825
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
2728
|
-
var ToggleGroupItem =
|
|
2729
|
-
const context =
|
|
2826
|
+
var ToggleGroupItem = React25.forwardRef(({ className, children, variant, size, ...props }, ref) => {
|
|
2827
|
+
const context = React25.useContext(ToggleGroupContext);
|
|
2730
2828
|
return /* @__PURE__ */ jsx(
|
|
2731
2829
|
ToggleGroupPrimitive.Item,
|
|
2732
2830
|
{
|
|
@@ -2744,6 +2842,26 @@ var ToggleGroupItem = React23.forwardRef(({ className, children, variant, size,
|
|
|
2744
2842
|
);
|
|
2745
2843
|
});
|
|
2746
2844
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
2845
|
+
var WORD = {
|
|
2846
|
+
unrecorded: "nothing recorded",
|
|
2847
|
+
purged: "purged",
|
|
2848
|
+
"declared-none": "none declared"
|
|
2849
|
+
};
|
|
2850
|
+
var AbsenceNote = React25.forwardRef(
|
|
2851
|
+
({ reason, label, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2852
|
+
"div",
|
|
2853
|
+
{
|
|
2854
|
+
ref,
|
|
2855
|
+
className: cn("flex flex-col gap-1 px-2.5 py-2", className),
|
|
2856
|
+
...props,
|
|
2857
|
+
children: [
|
|
2858
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono text-xs tracking-wide text-muted-foreground", children: label ?? WORD[reason] }),
|
|
2859
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm leading-relaxed text-muted-foreground", children })
|
|
2860
|
+
]
|
|
2861
|
+
}
|
|
2862
|
+
)
|
|
2863
|
+
);
|
|
2864
|
+
AbsenceNote.displayName = "AbsenceNote";
|
|
2747
2865
|
var TONE = {
|
|
2748
2866
|
allowed: "text-foreground",
|
|
2749
2867
|
denied: "text-destructive",
|
|
@@ -2755,7 +2873,7 @@ function split(address) {
|
|
|
2755
2873
|
if (cut < 0) return { head: "", tail: address };
|
|
2756
2874
|
return { head: address.slice(0, cut + 1), tail: address.slice(cut + 1) };
|
|
2757
2875
|
}
|
|
2758
|
-
var AddressChip =
|
|
2876
|
+
var AddressChip = React25.forwardRef(
|
|
2759
2877
|
({ address, tone = "allowed", onOpen, className, ...props }, ref) => {
|
|
2760
2878
|
const { head, tail } = split(address);
|
|
2761
2879
|
const body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -2777,8 +2895,8 @@ var AddressChip = React23.forwardRef(
|
|
|
2777
2895
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 shrink truncate", children: tail })
|
|
2778
2896
|
] });
|
|
2779
2897
|
const shell = cn(
|
|
2780
|
-
"inline-flex min-w-0 max-w-full items-baseline font-mono text-
|
|
2781
|
-
TONE[tone],
|
|
2898
|
+
"inline-flex min-w-0 max-w-full items-baseline font-mono text-sm",
|
|
2899
|
+
TONE[tone] ?? "text-foreground",
|
|
2782
2900
|
className
|
|
2783
2901
|
);
|
|
2784
2902
|
if (onOpen) {
|
|
@@ -2801,7 +2919,7 @@ var AddressChip = React23.forwardRef(
|
|
|
2801
2919
|
);
|
|
2802
2920
|
AddressChip.displayName = "AddressChip";
|
|
2803
2921
|
var agentChipVariants = cva(
|
|
2804
|
-
"inline-flex max-w-full shrink-0 items-center gap-1 rounded-control border px-1.5 text-
|
|
2922
|
+
"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",
|
|
2805
2923
|
{
|
|
2806
2924
|
variants: {
|
|
2807
2925
|
/**
|
|
@@ -2822,7 +2940,7 @@ var agentChipVariants = cva(
|
|
|
2822
2940
|
defaultVariants: { kind: "agent", inactive: false }
|
|
2823
2941
|
}
|
|
2824
2942
|
);
|
|
2825
|
-
var AgentChip =
|
|
2943
|
+
var AgentChip = React25.forwardRef(
|
|
2826
2944
|
({ icon, name, kind, inactive, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2827
2945
|
"span",
|
|
2828
2946
|
{
|
|
@@ -2849,13 +2967,13 @@ var stateVariants = cva("inline-flex shrink-0 items-center gap-1.5 font-medium",
|
|
|
2849
2967
|
},
|
|
2850
2968
|
defaultVariants: { tone: "active" }
|
|
2851
2969
|
});
|
|
2852
|
-
var AppStatusBar =
|
|
2970
|
+
var AppStatusBar = React25.forwardRef(
|
|
2853
2971
|
({ state, tone, end, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2854
2972
|
"div",
|
|
2855
2973
|
{
|
|
2856
2974
|
ref,
|
|
2857
2975
|
className: cn(
|
|
2858
|
-
"flex h-[25px] shrink-0 items-center gap-2 border-t border-border px-2 text-
|
|
2976
|
+
"flex h-[25px] shrink-0 items-center gap-2 border-t border-border px-2 text-sm text-muted-foreground",
|
|
2859
2977
|
className
|
|
2860
2978
|
),
|
|
2861
2979
|
...props,
|
|
@@ -2877,7 +2995,94 @@ var AppStatusBar = React23.forwardRef(
|
|
|
2877
2995
|
)
|
|
2878
2996
|
);
|
|
2879
2997
|
AppStatusBar.displayName = "AppStatusBar";
|
|
2880
|
-
var
|
|
2998
|
+
var ArtifactTable = React25.forwardRef(({ files, onOpen, onDownload, renderActions, className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col", className), ...props, children: /* @__PURE__ */ jsxs(Table, { density: "compact", children: [
|
|
2999
|
+
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
3000
|
+
/* @__PURE__ */ jsx(TableHead, { children: "file" }),
|
|
3001
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[7rem]", children: "kind" }),
|
|
3002
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[5rem]", children: "size" }),
|
|
3003
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[7rem]", children: "digest" }),
|
|
3004
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[5.5rem]", children: "written" }),
|
|
3005
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[9.5rem]", children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "actions" }) })
|
|
3006
|
+
] }) }),
|
|
3007
|
+
/* @__PURE__ */ jsx(TableBody, { children: files.map((file, index) => /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
3008
|
+
/* @__PURE__ */ jsx(
|
|
3009
|
+
TableCell,
|
|
3010
|
+
{
|
|
3011
|
+
className: cn(
|
|
3012
|
+
"font-mono",
|
|
3013
|
+
file.gone && "text-muted-foreground line-through"
|
|
3014
|
+
),
|
|
3015
|
+
children: file.name
|
|
3016
|
+
}
|
|
3017
|
+
),
|
|
3018
|
+
/* @__PURE__ */ jsx(TableCell, { children: file.kind }),
|
|
3019
|
+
/* @__PURE__ */ jsx(TableCell, { className: "tabular-nums", children: file.size }),
|
|
3020
|
+
/* @__PURE__ */ jsx(TableCell, { className: "font-mono text-muted-foreground", children: file.digest }),
|
|
3021
|
+
/* @__PURE__ */ jsx(TableCell, { className: "font-mono tabular-nums", children: file.written }),
|
|
3022
|
+
/* @__PURE__ */ jsx(TableCell, { children: renderActions ? renderActions(file, index) : /* @__PURE__ */ jsxs("span", { className: "flex gap-1", children: [
|
|
3023
|
+
/* @__PURE__ */ jsx(
|
|
3024
|
+
Button,
|
|
3025
|
+
{
|
|
3026
|
+
type: "button",
|
|
3027
|
+
variant: "outline",
|
|
3028
|
+
size: "xs",
|
|
3029
|
+
disabled: file.gone || !onOpen,
|
|
3030
|
+
onClick: () => onOpen?.(file, index),
|
|
3031
|
+
children: "Open"
|
|
3032
|
+
}
|
|
3033
|
+
),
|
|
3034
|
+
/* @__PURE__ */ jsx(
|
|
3035
|
+
Button,
|
|
3036
|
+
{
|
|
3037
|
+
type: "button",
|
|
3038
|
+
variant: "outline",
|
|
3039
|
+
size: "xs",
|
|
3040
|
+
disabled: file.gone || !onDownload,
|
|
3041
|
+
onClick: () => onDownload?.(file, index),
|
|
3042
|
+
children: "Download"
|
|
3043
|
+
}
|
|
3044
|
+
)
|
|
3045
|
+
] }) })
|
|
3046
|
+
] }, index)) })
|
|
3047
|
+
] }) }));
|
|
3048
|
+
ArtifactTable.displayName = "ArtifactTable";
|
|
3049
|
+
var TONE2 = {
|
|
3050
|
+
muted: "text-muted-foreground",
|
|
3051
|
+
info: "text-info",
|
|
3052
|
+
success: "text-success",
|
|
3053
|
+
warning: "text-warning",
|
|
3054
|
+
destructive: "text-destructive"
|
|
3055
|
+
};
|
|
3056
|
+
var AttemptClock = React25.forwardRef(
|
|
3057
|
+
({ rows, summary, className, ...props }, ref) => /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col", className), ...props, children: [
|
|
3058
|
+
/* @__PURE__ */ jsxs(Table, { density: "compact", children: [
|
|
3059
|
+
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
3060
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[7rem]", children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "what" }) }),
|
|
3061
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[6rem]", children: "started" }),
|
|
3062
|
+
/* @__PURE__ */ jsx(TableHead, { className: "w-[5.5rem]", children: "took" }),
|
|
3063
|
+
/* @__PURE__ */ jsx(TableHead, { children: "what happened" })
|
|
3064
|
+
] }) }),
|
|
3065
|
+
/* @__PURE__ */ jsx(TableBody, { children: rows.map((row, index) => {
|
|
3066
|
+
const tone = row.tone ? TONE2[row.tone] : void 0;
|
|
3067
|
+
return /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
3068
|
+
/* @__PURE__ */ jsx(TableCell, { className: cn(tone, row.struck && "line-through"), children: row.label }),
|
|
3069
|
+
/* @__PURE__ */ jsx(TableCell, { className: "font-mono tabular-nums text-muted-foreground", children: row.started }),
|
|
3070
|
+
/* @__PURE__ */ jsx(TableCell, { className: cn("font-mono tabular-nums", tone), children: row.took }),
|
|
3071
|
+
/* @__PURE__ */ jsx(
|
|
3072
|
+
TableCell,
|
|
3073
|
+
{
|
|
3074
|
+
className: cn(row.struck && ["line-through", tone]),
|
|
3075
|
+
children: row.what
|
|
3076
|
+
}
|
|
3077
|
+
)
|
|
3078
|
+
] }, index);
|
|
3079
|
+
}) })
|
|
3080
|
+
] }),
|
|
3081
|
+
summary != null ? /* @__PURE__ */ jsx("div", { className: "border-border border-t px-2.5 py-1.5 text-sm text-muted-foreground", children: summary }) : null
|
|
3082
|
+
] })
|
|
3083
|
+
);
|
|
3084
|
+
AttemptClock.displayName = "AttemptClock";
|
|
3085
|
+
var BarChartH = React25.forwardRef(
|
|
2881
3086
|
({
|
|
2882
3087
|
data,
|
|
2883
3088
|
max,
|
|
@@ -2889,12 +3094,12 @@ var BarChartH = React23.forwardRef(
|
|
|
2889
3094
|
}, ref) => {
|
|
2890
3095
|
const ceiling = max ?? (Math.max(...data.map((d) => d.value), 0) || 1);
|
|
2891
3096
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
|
|
2892
|
-
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
3097
|
+
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: caption }) : null,
|
|
2893
3098
|
data.map((d, i) => /* @__PURE__ */ jsxs("div", { className: "flex h-4 items-center gap-2", children: [
|
|
2894
3099
|
/* @__PURE__ */ jsx(
|
|
2895
3100
|
"span",
|
|
2896
3101
|
{
|
|
2897
|
-
className: "shrink-0 truncate text-
|
|
3102
|
+
className: "shrink-0 truncate text-sm text-muted-foreground",
|
|
2898
3103
|
style: { width: labelWidth },
|
|
2899
3104
|
children: d.label
|
|
2900
3105
|
}
|
|
@@ -2911,14 +3116,14 @@ var BarChartH = React23.forwardRef(
|
|
|
2911
3116
|
}
|
|
2912
3117
|
}
|
|
2913
3118
|
),
|
|
2914
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
3119
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm tabular-nums", children: d.display ?? d.value })
|
|
2915
3120
|
] })
|
|
2916
3121
|
] }, i))
|
|
2917
3122
|
] });
|
|
2918
3123
|
}
|
|
2919
3124
|
);
|
|
2920
3125
|
BarChartH.displayName = "BarChartH";
|
|
2921
|
-
var BarChartV =
|
|
3126
|
+
var BarChartV = React25.forwardRef(
|
|
2922
3127
|
({
|
|
2923
3128
|
data,
|
|
2924
3129
|
max,
|
|
@@ -2936,7 +3141,7 @@ var BarChartV = React23.forwardRef(
|
|
|
2936
3141
|
const emphasis = highlightIndex ?? data.length - 1;
|
|
2937
3142
|
const labelled = (i) => labelMode === "all" || labelMode === "last" && i === emphasis;
|
|
2938
3143
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
|
|
2939
|
-
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
3144
|
+
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: caption }) : null,
|
|
2940
3145
|
/* @__PURE__ */ jsxs("div", { className: "relative mt-2", style: { height }, children: [
|
|
2941
3146
|
gridlines.map((g) => /* @__PURE__ */ jsxs(
|
|
2942
3147
|
"div",
|
|
@@ -2946,7 +3151,7 @@ var BarChartV = React23.forwardRef(
|
|
|
2946
3151
|
style: { bottom: `${g / ceiling * 100}%` },
|
|
2947
3152
|
children: [
|
|
2948
3153
|
/* @__PURE__ */ jsx("span", { className: "h-px flex-1 bg-border" }),
|
|
2949
|
-
/* @__PURE__ */ jsx("span", { className: "pl-1 text-
|
|
3154
|
+
/* @__PURE__ */ jsx("span", { className: "pl-1 text-sm tabular-nums text-muted-foreground", children: g })
|
|
2950
3155
|
]
|
|
2951
3156
|
},
|
|
2952
3157
|
g
|
|
@@ -2956,7 +3161,7 @@ var BarChartV = React23.forwardRef(
|
|
|
2956
3161
|
{
|
|
2957
3162
|
className: "flex h-full min-w-0 flex-1 flex-col items-center justify-end gap-1",
|
|
2958
3163
|
children: [
|
|
2959
|
-
labelled(i) ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
3164
|
+
labelled(i) ? /* @__PURE__ */ jsx("span", { className: "text-sm tabular-nums", children: d.display ?? d.value }) : null,
|
|
2960
3165
|
/* @__PURE__ */ jsx(
|
|
2961
3166
|
"span",
|
|
2962
3167
|
{
|
|
@@ -2975,38 +3180,34 @@ var BarChartV = React23.forwardRef(
|
|
|
2975
3180
|
)) })
|
|
2976
3181
|
] }),
|
|
2977
3182
|
/* @__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: [
|
|
2978
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
2979
|
-
d.sublabel != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
3183
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm text-muted-foreground", children: d.label }),
|
|
3184
|
+
d.sublabel != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-muted-foreground/70", children: d.sublabel }) : null
|
|
2980
3185
|
] }, i)) })
|
|
2981
3186
|
] });
|
|
2982
3187
|
}
|
|
2983
3188
|
);
|
|
2984
3189
|
BarChartV.displayName = "BarChartV";
|
|
2985
|
-
var
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
graph_read: "bg-success",
|
|
2989
|
-
graph_write: "bg-data-2",
|
|
2990
|
-
schema_write: "bg-data-4",
|
|
2991
|
-
ingest: "bg-info",
|
|
2992
|
-
llm: "bg-data-7",
|
|
2993
|
-
plan_write: "bg-data-5",
|
|
2994
|
-
work_write: "bg-destructive"
|
|
2995
|
-
};
|
|
2996
|
-
var BoundChip = React23.forwardRef(
|
|
2997
|
-
({ bound, swatchOnly, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3190
|
+
var UNPAINTED = "bg-muted-foreground";
|
|
3191
|
+
var BoundChip = React25.forwardRef(
|
|
3192
|
+
({ bound, swatchOnly, label, swatch, palette, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2998
3193
|
"span",
|
|
2999
3194
|
{
|
|
3000
3195
|
ref,
|
|
3001
3196
|
className: cn(
|
|
3002
|
-
"inline-flex max-w-full shrink-0 items-center gap-1.5 font-mono text-
|
|
3197
|
+
"inline-flex max-w-full shrink-0 items-center gap-1.5 font-mono text-sm text-muted-foreground",
|
|
3003
3198
|
className
|
|
3004
3199
|
),
|
|
3005
3200
|
"aria-label": swatchOnly ? `bound: ${bound}` : void 0,
|
|
3006
3201
|
...props,
|
|
3007
3202
|
children: [
|
|
3008
|
-
/* @__PURE__ */ jsx(
|
|
3009
|
-
|
|
3203
|
+
/* @__PURE__ */ jsx(
|
|
3204
|
+
"span",
|
|
3205
|
+
{
|
|
3206
|
+
"aria-hidden": true,
|
|
3207
|
+
className: cn("size-1.5 shrink-0", swatch ?? palette?.[bound] ?? UNPAINTED)
|
|
3208
|
+
}
|
|
3209
|
+
),
|
|
3210
|
+
swatchOnly ? null : /* @__PURE__ */ jsx("span", { className: "truncate", children: label ?? bound })
|
|
3010
3211
|
]
|
|
3011
3212
|
}
|
|
3012
3213
|
)
|
|
@@ -3018,7 +3219,7 @@ function ButtonWithTooltip(props) {
|
|
|
3018
3219
|
/* @__PURE__ */ jsx(TooltipContent, { children: props.tooltip })
|
|
3019
3220
|
] }) });
|
|
3020
3221
|
}
|
|
3021
|
-
var CannotAnswerCard =
|
|
3222
|
+
var CannotAnswerCard = React25.forwardRef(({ label = "cannot answer", remedy, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3022
3223
|
"div",
|
|
3023
3224
|
{
|
|
3024
3225
|
ref,
|
|
@@ -3028,9 +3229,9 @@ var CannotAnswerCard = React23.forwardRef(({ label = "cannot answer", remedy, cl
|
|
|
3028
3229
|
),
|
|
3029
3230
|
...props,
|
|
3030
3231
|
children: [
|
|
3031
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
3232
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
|
|
3032
3233
|
/* @__PURE__ */ jsx("span", { children }),
|
|
3033
|
-
remedy != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
3234
|
+
remedy != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: remedy }) : null
|
|
3034
3235
|
]
|
|
3035
3236
|
}
|
|
3036
3237
|
));
|
|
@@ -3042,7 +3243,7 @@ var PURPOSE = {
|
|
|
3042
3243
|
judge: "scores an output \u2014 often local",
|
|
3043
3244
|
embed: "text in, vector out"
|
|
3044
3245
|
};
|
|
3045
|
-
var CastTable =
|
|
3246
|
+
var CastTable = React25.forwardRef(
|
|
3046
3247
|
({ cast = {}, resolved, readOnly, className, ...props }, ref) => {
|
|
3047
3248
|
const byRole = new Map((resolved ?? []).map((r) => [r.role, r]));
|
|
3048
3249
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("min-w-0", className), ...props, children: [
|
|
@@ -3057,15 +3258,15 @@ var CastTable = React23.forwardRef(
|
|
|
3057
3258
|
const address = hit ? hit.address : cast[role] ?? null;
|
|
3058
3259
|
const denied = hit ? !hit.allowed : false;
|
|
3059
3260
|
return /* @__PURE__ */ jsxs(TableRow, { "data-role": role, children: [
|
|
3060
|
-
/* @__PURE__ */ jsx(TableCell, { className: "font-mono text-
|
|
3261
|
+
/* @__PURE__ */ jsx(TableCell, { className: "font-mono text-sm text-muted-foreground", children: role }),
|
|
3061
3262
|
/* @__PURE__ */ jsx(TableCell, { className: "min-w-0", children: address ? /* @__PURE__ */ jsx(
|
|
3062
3263
|
AddressChip,
|
|
3063
3264
|
{
|
|
3064
3265
|
address,
|
|
3065
3266
|
tone: denied ? "denied" : "allowed"
|
|
3066
3267
|
}
|
|
3067
|
-
) : /* @__PURE__ */ jsx("span", { className: "text-
|
|
3068
|
-
/* @__PURE__ */ jsx(TableCell, { className: "text-
|
|
3268
|
+
) : /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground/70", children: "nothing casts it" }) }),
|
|
3269
|
+
/* @__PURE__ */ jsx(TableCell, { className: "text-sm text-muted-foreground", children: denied ? /* @__PURE__ */ jsxs("span", { className: "text-destructive", children: [
|
|
3069
3270
|
"denied by ",
|
|
3070
3271
|
hit?.ruleMatched ?? "this world"
|
|
3071
3272
|
] }) : hit?.source ? /* @__PURE__ */ jsx("span", { children: hit.source !== "shipped" ? `set on the ${hit.source}` : address ? "shipped default" : (
|
|
@@ -3077,7 +3278,7 @@ var CastTable = React23.forwardRef(
|
|
|
3077
3278
|
] }, role);
|
|
3078
3279
|
}) })
|
|
3079
3280
|
] }),
|
|
3080
|
-
readOnly ? null : /* @__PURE__ */ jsx("p", { className: "px-2 pt-1 text-
|
|
3281
|
+
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." })
|
|
3081
3282
|
] });
|
|
3082
3283
|
}
|
|
3083
3284
|
);
|
|
@@ -3091,20 +3292,20 @@ function ChatSession({
|
|
|
3091
3292
|
className,
|
|
3092
3293
|
bodyClassName
|
|
3093
3294
|
}) {
|
|
3094
|
-
const rootRef =
|
|
3095
|
-
const contentRef =
|
|
3096
|
-
const pinnedRef =
|
|
3097
|
-
const getViewport =
|
|
3295
|
+
const rootRef = React25.useRef(null);
|
|
3296
|
+
const contentRef = React25.useRef(null);
|
|
3297
|
+
const pinnedRef = React25.useRef(true);
|
|
3298
|
+
const getViewport = React25.useCallback(
|
|
3098
3299
|
() => rootRef.current?.querySelector(
|
|
3099
3300
|
"[data-radix-scroll-area-viewport]"
|
|
3100
3301
|
) ?? null,
|
|
3101
3302
|
[]
|
|
3102
3303
|
);
|
|
3103
|
-
const scrollToBottom =
|
|
3304
|
+
const scrollToBottom = React25.useCallback(() => {
|
|
3104
3305
|
const viewport = getViewport();
|
|
3105
3306
|
if (viewport) viewport.scrollTop = viewport.scrollHeight;
|
|
3106
3307
|
}, [getViewport]);
|
|
3107
|
-
|
|
3308
|
+
React25.useEffect(() => {
|
|
3108
3309
|
const viewport = getViewport();
|
|
3109
3310
|
if (!viewport) return;
|
|
3110
3311
|
const handleScroll = () => {
|
|
@@ -3114,7 +3315,7 @@ function ChatSession({
|
|
|
3114
3315
|
viewport.addEventListener("scroll", handleScroll, { passive: true });
|
|
3115
3316
|
return () => viewport.removeEventListener("scroll", handleScroll);
|
|
3116
3317
|
}, [getViewport, followThreshold]);
|
|
3117
|
-
|
|
3318
|
+
React25.useEffect(() => {
|
|
3118
3319
|
const content = contentRef.current;
|
|
3119
3320
|
if (!content || typeof ResizeObserver === "undefined") return;
|
|
3120
3321
|
const observer = new ResizeObserver(() => {
|
|
@@ -3123,11 +3324,11 @@ function ChatSession({
|
|
|
3123
3324
|
observer.observe(content);
|
|
3124
3325
|
return () => observer.disconnect();
|
|
3125
3326
|
}, [scrollToBottom]);
|
|
3126
|
-
|
|
3327
|
+
React25.useEffect(() => {
|
|
3127
3328
|
pinnedRef.current = true;
|
|
3128
3329
|
scrollToBottom();
|
|
3129
3330
|
}, [autoScrollKey, scrollToBottom]);
|
|
3130
|
-
const isEmpty =
|
|
3331
|
+
const isEmpty = React25.Children.count(children) === 0;
|
|
3131
3332
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col h-full min-h-0", className), children: [
|
|
3132
3333
|
/* @__PURE__ */ jsx(
|
|
3133
3334
|
ScrollArea,
|
|
@@ -3220,12 +3421,12 @@ function useOverflowItems({
|
|
|
3220
3421
|
pinnedIndex,
|
|
3221
3422
|
reserve = 32
|
|
3222
3423
|
}) {
|
|
3223
|
-
const containerEl =
|
|
3224
|
-
const itemEls =
|
|
3225
|
-
const widths =
|
|
3226
|
-
const itemRefs =
|
|
3227
|
-
const [hidden, setHidden] =
|
|
3228
|
-
const fit =
|
|
3424
|
+
const containerEl = React25.useRef(null);
|
|
3425
|
+
const itemEls = React25.useRef([]);
|
|
3426
|
+
const widths = React25.useRef([]);
|
|
3427
|
+
const itemRefs = React25.useRef([]);
|
|
3428
|
+
const [hidden, setHidden] = React25.useState(NONE);
|
|
3429
|
+
const fit = React25.useCallback(() => {
|
|
3229
3430
|
const el = containerEl.current;
|
|
3230
3431
|
if (!el || !enabled) {
|
|
3231
3432
|
setHidden((prev) => prev === NONE ? prev : NONE);
|
|
@@ -3254,12 +3455,12 @@ function useOverflowItems({
|
|
|
3254
3455
|
}
|
|
3255
3456
|
setHidden((prev) => same(prev, next) ? prev : next);
|
|
3256
3457
|
}, [count, enabled, pinnedIndex, reserve]);
|
|
3257
|
-
|
|
3458
|
+
React25.useLayoutEffect(() => {
|
|
3258
3459
|
widths.current = [];
|
|
3259
3460
|
itemEls.current.length = count;
|
|
3260
3461
|
setHidden((prev) => prev === NONE ? prev : NONE);
|
|
3261
3462
|
}, [count]);
|
|
3262
|
-
|
|
3463
|
+
React25.useLayoutEffect(() => {
|
|
3263
3464
|
fit();
|
|
3264
3465
|
if (!enabled || typeof ResizeObserver === "undefined") return;
|
|
3265
3466
|
const observer = new ResizeObserver(() => fit());
|
|
@@ -3267,10 +3468,10 @@ function useOverflowItems({
|
|
|
3267
3468
|
for (const item of itemEls.current) if (item) observer.observe(item);
|
|
3268
3469
|
return () => observer.disconnect();
|
|
3269
3470
|
}, [fit, enabled, hidden]);
|
|
3270
|
-
const containerRef =
|
|
3471
|
+
const containerRef = React25.useCallback((el) => {
|
|
3271
3472
|
containerEl.current = el;
|
|
3272
3473
|
}, []);
|
|
3273
|
-
const itemRef =
|
|
3474
|
+
const itemRef = React25.useCallback((index) => {
|
|
3274
3475
|
let fn = itemRefs.current[index];
|
|
3275
3476
|
if (!fn) {
|
|
3276
3477
|
fn = (el) => {
|
|
@@ -3280,7 +3481,7 @@ function useOverflowItems({
|
|
|
3280
3481
|
}
|
|
3281
3482
|
return fn;
|
|
3282
3483
|
}, []);
|
|
3283
|
-
const isHidden =
|
|
3484
|
+
const isHidden = React25.useCallback(
|
|
3284
3485
|
(index) => hidden.includes(index),
|
|
3285
3486
|
[hidden]
|
|
3286
3487
|
);
|
|
@@ -3333,15 +3534,15 @@ var NavItems = ({
|
|
|
3333
3534
|
const isVertical = orientation === "vertical";
|
|
3334
3535
|
const isTabs = selectionMode === "tabs";
|
|
3335
3536
|
const V = VARIANT[variant];
|
|
3336
|
-
const [internalActive, setInternalActive] =
|
|
3537
|
+
const [internalActive, setInternalActive] = React25__default.useState(
|
|
3337
3538
|
null
|
|
3338
3539
|
);
|
|
3339
3540
|
const isControlled = activeKey !== void 0;
|
|
3340
3541
|
const currentKey = isControlled ? activeKey : internalActive;
|
|
3341
3542
|
const activeIndex = items.findIndex((item) => keyOf(item) === currentKey);
|
|
3342
|
-
const nodes =
|
|
3343
|
-
const pendingFocus =
|
|
3344
|
-
|
|
3543
|
+
const nodes = React25__default.useRef({});
|
|
3544
|
+
const pendingFocus = React25__default.useRef(null);
|
|
3545
|
+
React25__default.useEffect(() => {
|
|
3345
3546
|
const key = pendingFocus.current;
|
|
3346
3547
|
if (!key) return;
|
|
3347
3548
|
const node = nodes.current[key];
|
|
@@ -3354,7 +3555,7 @@ var NavItems = ({
|
|
|
3354
3555
|
enabled: overflow && !isVertical,
|
|
3355
3556
|
pinnedIndex: activeIndex >= 0 ? activeIndex : void 0
|
|
3356
3557
|
});
|
|
3357
|
-
const select =
|
|
3558
|
+
const select = React25__default.useCallback(
|
|
3358
3559
|
(item) => {
|
|
3359
3560
|
if (item.disabled) return;
|
|
3360
3561
|
const key = keyOf(item);
|
|
@@ -3424,6 +3625,7 @@ var NavItems = ({
|
|
|
3424
3625
|
}
|
|
3425
3626
|
);
|
|
3426
3627
|
const label = item.label && /* @__PURE__ */ jsx("span", { className: item.labelClassName, children: item.label });
|
|
3628
|
+
const a11y = label ? {} : { "aria-label": item.name };
|
|
3427
3629
|
const badge = item.badge != null && /* @__PURE__ */ jsx(
|
|
3428
3630
|
"span",
|
|
3429
3631
|
{
|
|
@@ -3463,6 +3665,7 @@ var NavItems = ({
|
|
|
3463
3665
|
{
|
|
3464
3666
|
ref: setNode,
|
|
3465
3667
|
...tabProps,
|
|
3668
|
+
...a11y,
|
|
3466
3669
|
style: item.style,
|
|
3467
3670
|
onClick: () => select(item),
|
|
3468
3671
|
className: itemClass,
|
|
@@ -3473,6 +3676,7 @@ var NavItems = ({
|
|
|
3473
3676
|
{
|
|
3474
3677
|
ref: setNode,
|
|
3475
3678
|
href: item.href,
|
|
3679
|
+
...a11y,
|
|
3476
3680
|
style: item.style,
|
|
3477
3681
|
onClick: () => select(item),
|
|
3478
3682
|
className: itemClass,
|
|
@@ -3485,6 +3689,7 @@ var NavItems = ({
|
|
|
3485
3689
|
type: "button",
|
|
3486
3690
|
disabled: item.disabled,
|
|
3487
3691
|
...tabProps,
|
|
3692
|
+
...a11y,
|
|
3488
3693
|
style: item.style,
|
|
3489
3694
|
onClick: () => {
|
|
3490
3695
|
if (hasMenu) item.onClick?.();
|
|
@@ -3498,7 +3703,7 @@ var NavItems = ({
|
|
|
3498
3703
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: hasMenu && !asCaret ? /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: control }) : control }),
|
|
3499
3704
|
/* @__PURE__ */ jsx(TooltipContent, { side: item.tooltipSide || tooltipSide, children: item.tooltip || item.name })
|
|
3500
3705
|
] });
|
|
3501
|
-
return /* @__PURE__ */ jsxs(
|
|
3706
|
+
return /* @__PURE__ */ jsxs(React25__default.Fragment, { children: [
|
|
3502
3707
|
hasMenu ? /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
3503
3708
|
withTooltip,
|
|
3504
3709
|
/* @__PURE__ */ jsx(
|
|
@@ -3588,7 +3793,7 @@ function renderMenuRows(menuItems) {
|
|
|
3588
3793
|
const gutter = menuItems?.some((m) => m.icon);
|
|
3589
3794
|
return menuItems?.map((menuItem) => {
|
|
3590
3795
|
const MenuIcon = menuItem.icon;
|
|
3591
|
-
return /* @__PURE__ */ jsxs(
|
|
3796
|
+
return /* @__PURE__ */ jsxs(React25__default.Fragment, { children: [
|
|
3592
3797
|
menuItem.separatorBefore && /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
3593
3798
|
/* @__PURE__ */ jsxs(
|
|
3594
3799
|
DropdownMenuItem,
|
|
@@ -3907,7 +4112,7 @@ function ChatSessionDisclosure({
|
|
|
3907
4112
|
className,
|
|
3908
4113
|
contentClassName
|
|
3909
4114
|
}) {
|
|
3910
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
4115
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React25.useState(defaultOpen);
|
|
3911
4116
|
const isOpen = open ?? uncontrolledOpen;
|
|
3912
4117
|
const toggle = () => {
|
|
3913
4118
|
const next = !isOpen;
|
|
@@ -4038,7 +4243,7 @@ function ChatSessionContextChip({
|
|
|
4038
4243
|
"div",
|
|
4039
4244
|
{
|
|
4040
4245
|
className: cn(
|
|
4041
|
-
"flex min-h-[26px] items-center gap-1.5 border border-border bg-muted/40 px-1.5 text-
|
|
4246
|
+
"flex min-h-[26px] items-center gap-1.5 border border-border bg-muted/40 px-1.5 text-sm",
|
|
4042
4247
|
className
|
|
4043
4248
|
),
|
|
4044
4249
|
...props,
|
|
@@ -4059,9 +4264,9 @@ function ChatSessionContextChip({
|
|
|
4059
4264
|
}
|
|
4060
4265
|
);
|
|
4061
4266
|
}
|
|
4062
|
-
var CitationList =
|
|
4267
|
+
var CitationList = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx("ul", { ref, className: cn("flex flex-col", className), ...props, children }));
|
|
4063
4268
|
CitationList.displayName = "CitationList";
|
|
4064
|
-
var CitationRow =
|
|
4269
|
+
var CitationRow = React25.forwardRef(
|
|
4065
4270
|
({ kind, source, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4066
4271
|
"li",
|
|
4067
4272
|
{
|
|
@@ -4069,15 +4274,15 @@ var CitationRow = React23.forwardRef(
|
|
|
4069
4274
|
className: cn("flex min-h-[26px] items-center gap-2 py-0.5", className),
|
|
4070
4275
|
...props,
|
|
4071
4276
|
children: [
|
|
4072
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 border border-border px-1 text-
|
|
4277
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 border border-border px-1 text-sm text-muted-foreground", children: kind }),
|
|
4073
4278
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children }),
|
|
4074
|
-
source != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
4279
|
+
source != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: source }) : null
|
|
4075
4280
|
]
|
|
4076
4281
|
}
|
|
4077
4282
|
)
|
|
4078
4283
|
);
|
|
4079
4284
|
CitationRow.displayName = "CitationRow";
|
|
4080
|
-
var ClampedText =
|
|
4285
|
+
var ClampedText = React25.forwardRef(
|
|
4081
4286
|
({
|
|
4082
4287
|
lines = 3,
|
|
4083
4288
|
moreLabel = "Show more",
|
|
@@ -4086,10 +4291,10 @@ var ClampedText = React23.forwardRef(
|
|
|
4086
4291
|
children,
|
|
4087
4292
|
...props
|
|
4088
4293
|
}, ref) => {
|
|
4089
|
-
const [expanded, setExpanded] =
|
|
4090
|
-
const [clipped, setClipped] =
|
|
4091
|
-
const bodyRef =
|
|
4092
|
-
|
|
4294
|
+
const [expanded, setExpanded] = React25.useState(false);
|
|
4295
|
+
const [clipped, setClipped] = React25.useState(false);
|
|
4296
|
+
const bodyRef = React25.useRef(null);
|
|
4297
|
+
React25.useLayoutEffect(() => {
|
|
4093
4298
|
const el = bodyRef.current;
|
|
4094
4299
|
if (!el || expanded) return;
|
|
4095
4300
|
const measure = () => setClipped(el.scrollHeight - el.clientHeight > 1);
|
|
@@ -4127,7 +4332,7 @@ var ClampedText = React23.forwardRef(
|
|
|
4127
4332
|
}
|
|
4128
4333
|
);
|
|
4129
4334
|
ClampedText.displayName = "ClampedText";
|
|
4130
|
-
var ClarifyCard =
|
|
4335
|
+
var ClarifyCard = React25.forwardRef(
|
|
4131
4336
|
({
|
|
4132
4337
|
step,
|
|
4133
4338
|
waiting,
|
|
@@ -4140,7 +4345,7 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4140
4345
|
className,
|
|
4141
4346
|
...props
|
|
4142
4347
|
}, ref) => {
|
|
4143
|
-
const name =
|
|
4348
|
+
const name = React25.useId();
|
|
4144
4349
|
return /* @__PURE__ */ jsxs(
|
|
4145
4350
|
"div",
|
|
4146
4351
|
{
|
|
@@ -4148,7 +4353,7 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4148
4353
|
className: cn("flex flex-col overflow-hidden border border-border bg-card", className),
|
|
4149
4354
|
...props,
|
|
4150
4355
|
children: [
|
|
4151
|
-
/* @__PURE__ */ jsxs("div", { className: "flex h-6 shrink-0 items-center gap-2 border-b border-border bg-muted/40 px-2 text-
|
|
4356
|
+
/* @__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: [
|
|
4152
4357
|
/* @__PURE__ */ jsx("span", { className: "shrink-0 font-medium", children: "question" }),
|
|
4153
4358
|
step != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-muted-foreground", children: step }) : null,
|
|
4154
4359
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
@@ -4191,7 +4396,7 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4191
4396
|
}
|
|
4192
4397
|
),
|
|
4193
4398
|
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: o.label }),
|
|
4194
|
-
o.detail != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono text-
|
|
4399
|
+
o.detail != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono text-sm text-muted-foreground", children: o.detail }) : null
|
|
4195
4400
|
]
|
|
4196
4401
|
},
|
|
4197
4402
|
o.value
|
|
@@ -4199,7 +4404,7 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4199
4404
|
}) }),
|
|
4200
4405
|
actions || footnote != null ? /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
4201
4406
|
actions,
|
|
4202
|
-
footnote != null ? /* @__PURE__ */ jsx("span", { className: "flex-1 text-
|
|
4407
|
+
footnote != null ? /* @__PURE__ */ jsx("span", { className: "flex-1 text-sm text-muted-foreground", children: footnote }) : null
|
|
4203
4408
|
] }) : null
|
|
4204
4409
|
] })
|
|
4205
4410
|
]
|
|
@@ -4208,13 +4413,13 @@ var ClarifyCard = React23.forwardRef(
|
|
|
4208
4413
|
}
|
|
4209
4414
|
);
|
|
4210
4415
|
ClarifyCard.displayName = "ClarifyCard";
|
|
4211
|
-
var ContextBar =
|
|
4416
|
+
var ContextBar = React25.forwardRef(
|
|
4212
4417
|
({ counters, hint, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4213
4418
|
"div",
|
|
4214
4419
|
{
|
|
4215
4420
|
ref,
|
|
4216
4421
|
className: cn(
|
|
4217
|
-
"flex h-7 shrink-0 items-center gap-3 border-t border-border px-2 text-
|
|
4422
|
+
"flex h-7 shrink-0 items-center gap-3 border-t border-border px-2 text-sm",
|
|
4218
4423
|
className
|
|
4219
4424
|
),
|
|
4220
4425
|
...props,
|
|
@@ -4227,22 +4432,22 @@ var ContextBar = React23.forwardRef(
|
|
|
4227
4432
|
)
|
|
4228
4433
|
);
|
|
4229
4434
|
ContextBar.displayName = "ContextBar";
|
|
4230
|
-
var DiagnosisCard =
|
|
4435
|
+
var DiagnosisCard = React25.forwardRef(({ code, attempted, target, actions, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4231
4436
|
"div",
|
|
4232
4437
|
{
|
|
4233
4438
|
ref,
|
|
4234
4439
|
className: cn("flex flex-col gap-2 border border-destructive/40 bg-card p-2", className),
|
|
4235
4440
|
...props,
|
|
4236
4441
|
children: [
|
|
4237
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-
|
|
4442
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
4238
4443
|
/* @__PURE__ */ jsx("span", { className: "shrink-0 font-medium text-destructive", children: "diagnosis" }),
|
|
4239
4444
|
/* @__PURE__ */ jsx("span", { className: "truncate font-mono text-muted-foreground", children: code })
|
|
4240
4445
|
] }),
|
|
4241
4446
|
children != null ? /* @__PURE__ */ jsx("div", { children }) : null,
|
|
4242
4447
|
attempted != null || target != null ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 border border-border bg-muted/40 p-1.5", children: [
|
|
4243
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4244
|
-
attempted != null ? /* @__PURE__ */ jsx("code", { className: "whitespace-pre-wrap break-all font-mono text-
|
|
4245
|
-
target != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
4448
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "what was tried" }),
|
|
4449
|
+
attempted != null ? /* @__PURE__ */ jsx("code", { className: "whitespace-pre-wrap break-all font-mono text-sm", children: attempted }) : null,
|
|
4450
|
+
target != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: target }) : null
|
|
4246
4451
|
] }) : null,
|
|
4247
4452
|
actions ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1.5", children: actions }) : null
|
|
4248
4453
|
]
|
|
@@ -4255,19 +4460,19 @@ var OP_CLASS = {
|
|
|
4255
4460
|
remove: "text-destructive",
|
|
4256
4461
|
change: "text-warning"
|
|
4257
4462
|
};
|
|
4258
|
-
var DiffList =
|
|
4463
|
+
var DiffList = React25.forwardRef(
|
|
4259
4464
|
({ className, children, ...props }, ref) => /* @__PURE__ */ jsx("ul", { ref, className: cn("flex flex-col", className), ...props, children })
|
|
4260
4465
|
);
|
|
4261
4466
|
DiffList.displayName = "DiffList";
|
|
4262
|
-
var DiffRow =
|
|
4467
|
+
var DiffRow = React25.forwardRef(
|
|
4263
4468
|
({ op = "add", kind, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4264
4469
|
"li",
|
|
4265
4470
|
{
|
|
4266
4471
|
ref,
|
|
4267
|
-
className: cn("flex items-baseline gap-2 py-0.5 text-
|
|
4472
|
+
className: cn("flex items-baseline gap-2 py-0.5 text-sm", className),
|
|
4268
4473
|
...props,
|
|
4269
4474
|
children: [
|
|
4270
|
-
/* @__PURE__ */ jsx("span", { className: cn("w-3 shrink-0 text-center font-mono", OP_CLASS[op]), children: OP_SIGN[op] }),
|
|
4475
|
+
/* @__PURE__ */ jsx("span", { className: cn("w-3 shrink-0 text-center font-mono", OP_CLASS[op] ?? "text-muted-foreground"), children: OP_SIGN[op] }),
|
|
4271
4476
|
kind != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground", children: kind }) : null,
|
|
4272
4477
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1", children })
|
|
4273
4478
|
]
|
|
@@ -4275,7 +4480,7 @@ var DiffRow = React23.forwardRef(
|
|
|
4275
4480
|
)
|
|
4276
4481
|
);
|
|
4277
4482
|
DiffRow.displayName = "DiffRow";
|
|
4278
|
-
var DivergingBar =
|
|
4483
|
+
var DivergingBar = React25.forwardRef(
|
|
4279
4484
|
({
|
|
4280
4485
|
data,
|
|
4281
4486
|
max,
|
|
@@ -4288,7 +4493,7 @@ var DivergingBar = React23.forwardRef(
|
|
|
4288
4493
|
}, ref) => {
|
|
4289
4494
|
const ceiling = max ?? (Math.max(...data.map((d) => Math.abs(d.value)), 0) || 1);
|
|
4290
4495
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-1", className), ...props, children: [
|
|
4291
|
-
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
4496
|
+
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: caption }) : null,
|
|
4292
4497
|
data.map((d, i) => {
|
|
4293
4498
|
const positive = d.value >= 0;
|
|
4294
4499
|
const width = `${Math.abs(d.value) / ceiling * 50}%`;
|
|
@@ -4296,7 +4501,7 @@ var DivergingBar = React23.forwardRef(
|
|
|
4296
4501
|
/* @__PURE__ */ jsx(
|
|
4297
4502
|
"span",
|
|
4298
4503
|
{
|
|
4299
|
-
className: "shrink-0 truncate text-
|
|
4504
|
+
className: "shrink-0 truncate text-sm text-muted-foreground",
|
|
4300
4505
|
style: { width: labelWidth },
|
|
4301
4506
|
children: d.label
|
|
4302
4507
|
}
|
|
@@ -4326,14 +4531,14 @@ var DivergingBar = React23.forwardRef(
|
|
|
4326
4531
|
}
|
|
4327
4532
|
) : null })
|
|
4328
4533
|
] }),
|
|
4329
|
-
/* @__PURE__ */ jsx("span", { className: "w-8 shrink-0 text-right text-
|
|
4534
|
+
/* @__PURE__ */ jsx("span", { className: "w-8 shrink-0 text-right text-sm tabular-nums", children: d.display ?? (d.value > 0 ? `+${d.value}` : d.value) })
|
|
4330
4535
|
] }, i);
|
|
4331
4536
|
})
|
|
4332
4537
|
] });
|
|
4333
4538
|
}
|
|
4334
4539
|
);
|
|
4335
4540
|
DivergingBar.displayName = "DivergingBar";
|
|
4336
|
-
var EgressList =
|
|
4541
|
+
var EgressList = React25.forwardRef(
|
|
4337
4542
|
({ to, classes = [], cut = [], className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4338
4543
|
"div",
|
|
4339
4544
|
{
|
|
@@ -4343,7 +4548,7 @@ var EgressList = React23.forwardRef(
|
|
|
4343
4548
|
children: [
|
|
4344
4549
|
/* @__PURE__ */ jsx(AddressChip, { address: to }),
|
|
4345
4550
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-0.5 pl-3", children: [
|
|
4346
|
-
classes.length === 0 ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
4551
|
+
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: [
|
|
4347
4552
|
/* @__PURE__ */ jsx("span", { className: "shrink-0", children: "may send" }),
|
|
4348
4553
|
classes.map((c) => /* @__PURE__ */ jsx(
|
|
4349
4554
|
"span",
|
|
@@ -4354,7 +4559,7 @@ var EgressList = React23.forwardRef(
|
|
|
4354
4559
|
c
|
|
4355
4560
|
))
|
|
4356
4561
|
] }),
|
|
4357
|
-
cut.length ? /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-wrap items-center gap-1 text-
|
|
4562
|
+
cut.length ? /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-wrap items-center gap-1 text-sm text-muted-foreground", children: [
|
|
4358
4563
|
/* @__PURE__ */ jsx("span", { className: "shrink-0", children: "cut" }),
|
|
4359
4564
|
cut.map((c) => /* @__PURE__ */ jsx(
|
|
4360
4565
|
"span",
|
|
@@ -4371,12 +4576,12 @@ var EgressList = React23.forwardRef(
|
|
|
4371
4576
|
)
|
|
4372
4577
|
);
|
|
4373
4578
|
EgressList.displayName = "EgressList";
|
|
4374
|
-
var EmissionHeader =
|
|
4579
|
+
var EmissionHeader = React25.forwardRef(({ kind, template, citation, note, actions, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4375
4580
|
"div",
|
|
4376
4581
|
{
|
|
4377
4582
|
ref,
|
|
4378
4583
|
className: cn(
|
|
4379
|
-
"flex h-6 shrink-0 items-center gap-2 border-b border-border bg-muted/40 px-2 text-
|
|
4584
|
+
"flex h-6 shrink-0 items-center gap-2 border-b border-border bg-muted/40 px-2 text-sm",
|
|
4380
4585
|
className
|
|
4381
4586
|
),
|
|
4382
4587
|
...props,
|
|
@@ -4391,7 +4596,7 @@ var EmissionHeader = React23.forwardRef(({ kind, template, citation, note, actio
|
|
|
4391
4596
|
}
|
|
4392
4597
|
));
|
|
4393
4598
|
EmissionHeader.displayName = "EmissionHeader";
|
|
4394
|
-
var EmissionCard =
|
|
4599
|
+
var EmissionCard = React25.forwardRef(
|
|
4395
4600
|
({
|
|
4396
4601
|
kind,
|
|
4397
4602
|
template,
|
|
@@ -4426,7 +4631,7 @@ var EmissionCard = React23.forwardRef(
|
|
|
4426
4631
|
)
|
|
4427
4632
|
);
|
|
4428
4633
|
EmissionCard.displayName = "EmissionCard";
|
|
4429
|
-
var CitationMarker =
|
|
4634
|
+
var CitationMarker = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4430
4635
|
"sup",
|
|
4431
4636
|
{
|
|
4432
4637
|
ref,
|
|
@@ -4436,7 +4641,7 @@ var CitationMarker = React23.forwardRef(({ className, children, ...props }, ref)
|
|
|
4436
4641
|
}
|
|
4437
4642
|
));
|
|
4438
4643
|
CitationMarker.displayName = "CitationMarker";
|
|
4439
|
-
var EmptyState =
|
|
4644
|
+
var EmptyState = React25.forwardRef(
|
|
4440
4645
|
({ icon, title, description, actions, locks, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4441
4646
|
"div",
|
|
4442
4647
|
{
|
|
@@ -4457,12 +4662,12 @@ var EmptyState = React23.forwardRef(
|
|
|
4457
4662
|
)
|
|
4458
4663
|
);
|
|
4459
4664
|
EmptyState.displayName = "EmptyState";
|
|
4460
|
-
var EmptyStateLock =
|
|
4665
|
+
var EmptyStateLock = React25.forwardRef(({ icon, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4461
4666
|
"span",
|
|
4462
4667
|
{
|
|
4463
4668
|
ref,
|
|
4464
4669
|
className: cn(
|
|
4465
|
-
"inline-flex h-6 items-center gap-1.5 border border-dashed border-border px-2 text-
|
|
4670
|
+
"inline-flex h-6 items-center gap-1.5 border border-dashed border-border px-2 text-sm text-muted-foreground [&_svg]:size-3",
|
|
4466
4671
|
className
|
|
4467
4672
|
),
|
|
4468
4673
|
...props,
|
|
@@ -4494,13 +4699,80 @@ var ErrorBoundary = class extends Component {
|
|
|
4494
4699
|
return this.props.children;
|
|
4495
4700
|
}
|
|
4496
4701
|
};
|
|
4497
|
-
|
|
4702
|
+
function Bubble({
|
|
4703
|
+
who,
|
|
4704
|
+
rail,
|
|
4705
|
+
children,
|
|
4706
|
+
note
|
|
4707
|
+
}) {
|
|
4708
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1 border-l-2 px-2.5 py-2", rail), children: [
|
|
4709
|
+
who != null ? /* @__PURE__ */ jsx("span", { className: "font-mono text-xs font-semibold", children: who }) : null,
|
|
4710
|
+
/* @__PURE__ */ jsx("span", { className: "leading-relaxed", children }),
|
|
4711
|
+
note != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: note }) : null
|
|
4712
|
+
] });
|
|
4713
|
+
}
|
|
4714
|
+
var ExchangeRecord = React25.forwardRef(
|
|
4715
|
+
({
|
|
4716
|
+
asker,
|
|
4717
|
+
question,
|
|
4718
|
+
why,
|
|
4719
|
+
options,
|
|
4720
|
+
answerer,
|
|
4721
|
+
answer,
|
|
4722
|
+
answerNote,
|
|
4723
|
+
className,
|
|
4724
|
+
...props
|
|
4725
|
+
}, ref) => /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col", className), ...props, children: [
|
|
4726
|
+
/* @__PURE__ */ jsx(Bubble, { who: asker, rail: "border-l-warning bg-warning/5", note: why, children: question }),
|
|
4727
|
+
options?.length ? /* @__PURE__ */ jsx("ul", { className: "flex flex-col", children: options.map((option, index) => /* @__PURE__ */ jsxs(
|
|
4728
|
+
"li",
|
|
4729
|
+
{
|
|
4730
|
+
className: "flex items-center gap-2 border-border/55 border-t px-2.5 py-1",
|
|
4731
|
+
children: [
|
|
4732
|
+
/* @__PURE__ */ jsx(
|
|
4733
|
+
"span",
|
|
4734
|
+
{
|
|
4735
|
+
"aria-hidden": true,
|
|
4736
|
+
className: cn(
|
|
4737
|
+
"size-2.5 shrink-0 rounded-full border-[1.5px]",
|
|
4738
|
+
option.chosen ? "border-primary bg-primary" : "border-border bg-transparent"
|
|
4739
|
+
)
|
|
4740
|
+
}
|
|
4741
|
+
),
|
|
4742
|
+
/* @__PURE__ */ jsx(
|
|
4743
|
+
"span",
|
|
4744
|
+
{
|
|
4745
|
+
className: cn(
|
|
4746
|
+
"min-w-0 flex-1 truncate font-mono text-sm",
|
|
4747
|
+
option.chosen ? "text-foreground" : "text-muted-foreground"
|
|
4748
|
+
),
|
|
4749
|
+
children: option.label
|
|
4750
|
+
}
|
|
4751
|
+
),
|
|
4752
|
+
option.chosen ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-xs text-primary", children: "chosen" }) : null
|
|
4753
|
+
]
|
|
4754
|
+
},
|
|
4755
|
+
index
|
|
4756
|
+
)) }) : null,
|
|
4757
|
+
answer != null ? /* @__PURE__ */ jsx(
|
|
4758
|
+
Bubble,
|
|
4759
|
+
{
|
|
4760
|
+
who: answerer,
|
|
4761
|
+
rail: "border-l-primary bg-primary/5 border-t border-t-border/55",
|
|
4762
|
+
note: answerNote,
|
|
4763
|
+
children: answer
|
|
4764
|
+
}
|
|
4765
|
+
) : null
|
|
4766
|
+
] })
|
|
4767
|
+
);
|
|
4768
|
+
ExchangeRecord.displayName = "ExchangeRecord";
|
|
4769
|
+
var Eyebrow = React25.forwardRef(
|
|
4498
4770
|
({ aside, tone = "muted", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4499
4771
|
"div",
|
|
4500
4772
|
{
|
|
4501
4773
|
ref,
|
|
4502
4774
|
className: cn(
|
|
4503
|
-
"flex items-baseline gap-2 text-
|
|
4775
|
+
"flex items-baseline gap-2 text-sm font-semibold uppercase tracking-wide",
|
|
4504
4776
|
tone === "muted" && "text-muted-foreground",
|
|
4505
4777
|
tone === "foreground" && "text-foreground",
|
|
4506
4778
|
tone === "accent" && "text-primary",
|
|
@@ -4515,7 +4787,7 @@ var Eyebrow = React23.forwardRef(
|
|
|
4515
4787
|
)
|
|
4516
4788
|
);
|
|
4517
4789
|
Eyebrow.displayName = "Eyebrow";
|
|
4518
|
-
var FilterBar =
|
|
4790
|
+
var FilterBar = React25.forwardRef(
|
|
4519
4791
|
({ summary, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4520
4792
|
"div",
|
|
4521
4793
|
{
|
|
@@ -4528,39 +4800,61 @@ var FilterBar = React23.forwardRef(
|
|
|
4528
4800
|
children: [
|
|
4529
4801
|
children,
|
|
4530
4802
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
4531
|
-
summary != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
4803
|
+
summary != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: summary }) : null
|
|
4532
4804
|
]
|
|
4533
4805
|
}
|
|
4534
4806
|
)
|
|
4535
4807
|
);
|
|
4536
4808
|
FilterBar.displayName = "FilterBar";
|
|
4537
|
-
var FilterChip =
|
|
4538
|
-
({ label, value, active, className, ...props }, ref) =>
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4809
|
+
var FilterChip = React25.forwardRef(
|
|
4810
|
+
({ label, value, active, onRemove, removeLabel, className, ...props }, ref) => {
|
|
4811
|
+
const chip = /* @__PURE__ */ jsxs(
|
|
4812
|
+
Button,
|
|
4813
|
+
{
|
|
4814
|
+
ref,
|
|
4815
|
+
type: "button",
|
|
4816
|
+
variant: "outline",
|
|
4817
|
+
size: "xs",
|
|
4818
|
+
"data-active": active || void 0,
|
|
4819
|
+
className: cn(
|
|
4820
|
+
"h-[22px] gap-1 px-1.5 font-normal",
|
|
4821
|
+
active && "border-primary/40 text-primary",
|
|
4822
|
+
onRemove && "rounded-r-none border-r-0",
|
|
4823
|
+
className
|
|
4824
|
+
),
|
|
4825
|
+
...props,
|
|
4826
|
+
children: [
|
|
4827
|
+
/* @__PURE__ */ jsx("span", { className: cn(value != null && "text-muted-foreground"), children: label }),
|
|
4828
|
+
value != null ? /* @__PURE__ */ jsx("span", { className: "truncate", children: value }) : null,
|
|
4829
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-muted-foreground", children: "\u25BE" })
|
|
4830
|
+
]
|
|
4831
|
+
}
|
|
4832
|
+
);
|
|
4833
|
+
if (!onRemove) return chip;
|
|
4834
|
+
return /* @__PURE__ */ jsxs("span", { className: "inline-flex min-w-0 items-center", children: [
|
|
4835
|
+
chip,
|
|
4836
|
+
/* @__PURE__ */ jsx(
|
|
4837
|
+
Button,
|
|
4838
|
+
{
|
|
4839
|
+
type: "button",
|
|
4840
|
+
variant: "outline",
|
|
4841
|
+
size: "xs",
|
|
4842
|
+
onClick: onRemove,
|
|
4843
|
+
"aria-label": removeLabel ?? `Clear ${typeof label === "string" ? label : "filter"}`,
|
|
4844
|
+
className: cn(
|
|
4845
|
+
"h-[22px] rounded-l-none px-1 font-normal text-muted-foreground hover:text-foreground",
|
|
4846
|
+
active && "border-primary/40"
|
|
4847
|
+
),
|
|
4848
|
+
children: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\xD7" })
|
|
4849
|
+
}
|
|
4850
|
+
)
|
|
4851
|
+
] });
|
|
4852
|
+
}
|
|
4559
4853
|
);
|
|
4560
4854
|
FilterChip.displayName = "FilterChip";
|
|
4561
|
-
var HeatStrip =
|
|
4855
|
+
var HeatStrip = React25.forwardRef(
|
|
4562
4856
|
({ cells, states, ticks, cellSize = 14, className, ...props }, ref) => {
|
|
4563
|
-
const byKey =
|
|
4857
|
+
const byKey = React25.useMemo(
|
|
4564
4858
|
() => new Map(states.map((s) => [s.key, s])),
|
|
4565
4859
|
[states]
|
|
4566
4860
|
);
|
|
@@ -4587,14 +4881,14 @@ var HeatStrip = React23.forwardRef(
|
|
|
4587
4881
|
return /* @__PURE__ */ jsx(
|
|
4588
4882
|
"span",
|
|
4589
4883
|
{
|
|
4590
|
-
className: "shrink-0 text-
|
|
4884
|
+
className: "shrink-0 text-sm tabular-nums text-muted-foreground",
|
|
4591
4885
|
style: { width: cellSize },
|
|
4592
4886
|
children: tick ? tick.label : ""
|
|
4593
4887
|
},
|
|
4594
4888
|
i
|
|
4595
4889
|
);
|
|
4596
4890
|
}) }) : null,
|
|
4597
|
-
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-
|
|
4891
|
+
/* @__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: [
|
|
4598
4892
|
/* @__PURE__ */ jsx(
|
|
4599
4893
|
"span",
|
|
4600
4894
|
{
|
|
@@ -4612,54 +4906,75 @@ var HeatStrip = React23.forwardRef(
|
|
|
4612
4906
|
}
|
|
4613
4907
|
);
|
|
4614
4908
|
HeatStrip.displayName = "HeatStrip";
|
|
4615
|
-
var
|
|
4616
|
-
|
|
4617
|
-
llm: "llm",
|
|
4618
|
-
third_party: "third party",
|
|
4619
|
-
cache: "cache",
|
|
4620
|
-
human: "human",
|
|
4621
|
-
agent: "agent"
|
|
4622
|
-
};
|
|
4623
|
-
var SWATCH2 = {
|
|
4624
|
-
graph_data: "bg-data-1",
|
|
4625
|
-
llm: "bg-data-7",
|
|
4626
|
-
third_party: "bg-data-8",
|
|
4627
|
-
cache: "bg-data-3",
|
|
4628
|
-
human: "bg-data-6",
|
|
4629
|
-
agent: "bg-muted-foreground"
|
|
4630
|
-
};
|
|
4631
|
-
var LayerChip = React23.forwardRef(
|
|
4632
|
-
({ layer, count, dim, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4909
|
+
var KindChip = React25.forwardRef(
|
|
4910
|
+
({ kind, dim, className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4633
4911
|
"span",
|
|
4634
4912
|
{
|
|
4635
4913
|
ref,
|
|
4636
4914
|
className: cn(
|
|
4637
|
-
"inline-flex
|
|
4638
|
-
|
|
4915
|
+
"inline-flex h-[17px] shrink-0 items-center rounded-control px-1.5",
|
|
4916
|
+
"bg-muted font-mono text-xs tracking-wide text-muted-foreground",
|
|
4917
|
+
dim && "opacity-60",
|
|
4639
4918
|
className
|
|
4640
4919
|
),
|
|
4641
4920
|
...props,
|
|
4642
|
-
children:
|
|
4643
|
-
/* @__PURE__ */ jsx(
|
|
4644
|
-
"span",
|
|
4645
|
-
{
|
|
4646
|
-
"aria-hidden": true,
|
|
4647
|
-
className: cn(
|
|
4648
|
-
"size-1.5 shrink-0",
|
|
4649
|
-
dim ? "bg-muted-foreground/50" : SWATCH2[layer]
|
|
4650
|
-
)
|
|
4651
|
-
}
|
|
4652
|
-
),
|
|
4653
|
-
/* @__PURE__ */ jsx("span", { className: "truncate", children: LABEL[layer] }),
|
|
4654
|
-
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 tabular-nums opacity-70", children: count }) : null
|
|
4655
|
-
]
|
|
4921
|
+
children: kind
|
|
4656
4922
|
}
|
|
4657
4923
|
)
|
|
4658
4924
|
);
|
|
4925
|
+
KindChip.displayName = "KindChip";
|
|
4926
|
+
var layerLabel = (layer) => layer.replace(/_/g, " ");
|
|
4927
|
+
var UNPAINTED2 = {
|
|
4928
|
+
swatch: "bg-muted-foreground",
|
|
4929
|
+
// Edge only, no ground: a bar's identity is its rail and its address, and a
|
|
4930
|
+
// wash under every bar turns a track into a stack of coloured blocks. A
|
|
4931
|
+
// consumer that wants the ground says so in its own `tint`.
|
|
4932
|
+
tint: "border-border",
|
|
4933
|
+
// Unpainted type is ordinary type. A muted address would say *subordinate*,
|
|
4934
|
+
// which is not what "nobody gave this layer a colour" means.
|
|
4935
|
+
text: "text-foreground"
|
|
4936
|
+
};
|
|
4937
|
+
var layerPaint = (palette, layer) => ({ ...UNPAINTED2, ...palette?.[layer] });
|
|
4938
|
+
var LayerChip = React25.forwardRef(
|
|
4939
|
+
({ layer, count, label, dim, swatch, palette, className, ...props }, ref) => {
|
|
4940
|
+
const paint = layerPaint(palette, layer);
|
|
4941
|
+
return /* @__PURE__ */ jsxs(
|
|
4942
|
+
"span",
|
|
4943
|
+
{
|
|
4944
|
+
ref,
|
|
4945
|
+
className: cn(
|
|
4946
|
+
// A layer is a **name**, not an address. `graph data` has a space in
|
|
4947
|
+
// it — it is already prose — so it takes the body face at the root
|
|
4948
|
+
// size, and mono is reserved for the thing that really is an address
|
|
4949
|
+
// (`model/Orders@v2` on the row below it). Small muted bold mono made
|
|
4950
|
+
// a row heading look like a technical footnote.
|
|
4951
|
+
"inline-flex max-w-full shrink-0 items-center gap-1.5",
|
|
4952
|
+
dim ? "text-muted-foreground/70" : "text-foreground",
|
|
4953
|
+
className
|
|
4954
|
+
),
|
|
4955
|
+
...props,
|
|
4956
|
+
children: [
|
|
4957
|
+
/* @__PURE__ */ jsx(
|
|
4958
|
+
"span",
|
|
4959
|
+
{
|
|
4960
|
+
"aria-hidden": true,
|
|
4961
|
+
className: cn(
|
|
4962
|
+
"size-1.5 shrink-0",
|
|
4963
|
+
dim ? "bg-muted-foreground/50" : swatch ?? paint.swatch
|
|
4964
|
+
)
|
|
4965
|
+
}
|
|
4966
|
+
),
|
|
4967
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: label ?? layerLabel(layer) }),
|
|
4968
|
+
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm tabular-nums text-muted-foreground", children: count }) : null
|
|
4969
|
+
]
|
|
4970
|
+
}
|
|
4971
|
+
);
|
|
4972
|
+
}
|
|
4973
|
+
);
|
|
4659
4974
|
LayerChip.displayName = "LayerChip";
|
|
4660
|
-
var LayerSection =
|
|
4661
|
-
({ layer, summary, count, dim, className, children, ...props }, ref) => {
|
|
4662
|
-
const empty =
|
|
4975
|
+
var LayerSection = React25.forwardRef(
|
|
4976
|
+
({ layer, summary, count, dim, palette, className, children, ...props }, ref) => {
|
|
4977
|
+
const empty = React25.Children.count(children) === 0;
|
|
4663
4978
|
return /* @__PURE__ */ jsxs(
|
|
4664
4979
|
"section",
|
|
4665
4980
|
{
|
|
@@ -4668,140 +4983,599 @@ var LayerSection = React23.forwardRef(
|
|
|
4668
4983
|
...props,
|
|
4669
4984
|
children: [
|
|
4670
4985
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-baseline gap-2 border-b border-border pb-1", children: [
|
|
4671
|
-
/* @__PURE__ */ jsx(LayerChip, { layer, count, dim }),
|
|
4672
|
-
summary != null ? /* @__PURE__ */ jsx("span", { className: "ml-auto min-w-0 shrink truncate text-
|
|
4986
|
+
/* @__PURE__ */ jsx(LayerChip, { layer, count, dim, palette }),
|
|
4987
|
+
summary != null ? /* @__PURE__ */ jsx("span", { className: "ml-auto min-w-0 shrink truncate text-sm text-muted-foreground", children: summary }) : null
|
|
4673
4988
|
] }),
|
|
4674
|
-
empty ? /* @__PURE__ */ jsx("p", { className: "px-1 py-1 text-
|
|
4989
|
+
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 })
|
|
4675
4990
|
]
|
|
4676
4991
|
}
|
|
4677
4992
|
);
|
|
4678
4993
|
}
|
|
4679
4994
|
);
|
|
4680
4995
|
LayerSection.displayName = "LayerSection";
|
|
4681
|
-
var
|
|
4682
|
-
|
|
4683
|
-
in: "bg-data-1",
|
|
4684
|
-
refused: "bg-destructive",
|
|
4685
|
-
skipped: "bg-muted-foreground/30"
|
|
4686
|
-
};
|
|
4687
|
-
var MARK_LABEL = {
|
|
4996
|
+
var STATE_LABEL = {
|
|
4997
|
+
declared: "declared",
|
|
4688
4998
|
out: "sent",
|
|
4689
4999
|
in: "read",
|
|
4690
5000
|
refused: "refused",
|
|
4691
5001
|
skipped: "skipped"
|
|
4692
5002
|
};
|
|
4693
|
-
var
|
|
5003
|
+
var STATE_BAR = {
|
|
5004
|
+
declared: "border-dashed",
|
|
5005
|
+
out: "",
|
|
5006
|
+
in: "",
|
|
5007
|
+
refused: "border-destructive bg-background",
|
|
5008
|
+
skipped: "border-dashed opacity-60"
|
|
5009
|
+
};
|
|
5010
|
+
var stateLabel = (state) => STATE_LABEL[state] ?? state;
|
|
5011
|
+
var formatElapsed = (ms) => {
|
|
5012
|
+
if (ms < 1e3) return `${Math.round(ms)}ms`;
|
|
5013
|
+
if (ms < 6e4) return `${(ms / 1e3).toFixed(ms < 1e4 ? 1 : 0)}s`;
|
|
5014
|
+
const m = Math.floor(ms / 6e4);
|
|
5015
|
+
return `${m}m ${Math.round(ms % 6e4 / 1e3)}s`;
|
|
5016
|
+
};
|
|
5017
|
+
var LayerStrip = React25.forwardRef(
|
|
4694
5018
|
({
|
|
4695
5019
|
bands,
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
5020
|
+
items,
|
|
5021
|
+
scale = "seq",
|
|
5022
|
+
domain,
|
|
5023
|
+
ticks,
|
|
5024
|
+
formatTick,
|
|
5025
|
+
brackets,
|
|
5026
|
+
seams,
|
|
5027
|
+
onSelectItem,
|
|
5028
|
+
selectedItem,
|
|
5029
|
+
hoverDetail = true,
|
|
5030
|
+
itemDetail,
|
|
5031
|
+
defaultCollapsed,
|
|
5032
|
+
collapsed,
|
|
5033
|
+
onCollapsedChange,
|
|
5034
|
+
collapsible = true,
|
|
4699
5035
|
frozenLabels = true,
|
|
5036
|
+
labelWidth = 15.5,
|
|
5037
|
+
minTrackWidth = 26,
|
|
5038
|
+
minSlotWidth = 6,
|
|
5039
|
+
palette,
|
|
4700
5040
|
className,
|
|
4701
5041
|
...props
|
|
4702
5042
|
}, ref) => {
|
|
4703
|
-
const
|
|
4704
|
-
|
|
4705
|
-
|
|
4706
|
-
|
|
4707
|
-
|
|
5043
|
+
const [ownCollapsed, setOwnCollapsed] = React25.useState(
|
|
5044
|
+
defaultCollapsed ?? []
|
|
5045
|
+
);
|
|
5046
|
+
const shut = collapsed ?? ownCollapsed;
|
|
5047
|
+
const setShut = (next) => {
|
|
5048
|
+
if (collapsed == null) setOwnCollapsed(next);
|
|
5049
|
+
onCollapsedChange?.(next);
|
|
5050
|
+
};
|
|
5051
|
+
const withParts = bands.filter((b) => (b.parts?.length ?? 0) > 0);
|
|
5052
|
+
const allShut = withParts.length > 0 && withParts.every((b) => shut.includes(b.layer));
|
|
5053
|
+
const ends = items.map((i) => i.end ?? i.start + (scale === "seq" ? 1 : 0));
|
|
5054
|
+
const starts = items.map((i) => i.start);
|
|
5055
|
+
const d0 = domain?.[0] ?? (starts.length ? Math.min(...starts) : 0);
|
|
5056
|
+
const d1 = domain?.[1] ?? (ends.length ? Math.max(...ends) : d0 + 1);
|
|
5057
|
+
const span = d1 - d0 || 1;
|
|
5058
|
+
const pct = (value) => (value - d0) / span * 100;
|
|
5059
|
+
const axisTicks = ticks ?? (scale === "seq" ? Array.from({ length: Math.ceil(span) }, (_, n) => d0 + n) : Array.from({ length: 5 }, (_, n) => d0 + span / 4 * n));
|
|
5060
|
+
const tickLabel = formatTick ?? ((value) => scale === "seq" ? `${Math.round(value)}` : formatElapsed(value - d0));
|
|
5061
|
+
const label = (content, extra, indent, dim) => /* @__PURE__ */ jsx(
|
|
4708
5062
|
"div",
|
|
4709
5063
|
{
|
|
4710
|
-
|
|
5064
|
+
style: { width: `${labelWidth}rem` },
|
|
4711
5065
|
className: cn(
|
|
4712
|
-
"
|
|
4713
|
-
|
|
5066
|
+
"flex shrink-0 items-center gap-2 border-border border-r px-2.5 py-1.5",
|
|
5067
|
+
// A frozen label is normally opaque, or the bars it is parked over
|
|
5068
|
+
// would scroll through it. A dim row has no bars — that is what dim
|
|
5069
|
+
// means — so it can go transparent and let the row's own muted ground
|
|
5070
|
+
// run the full width. Without this the label column paints `bg-card`
|
|
5071
|
+
// straight over the tint and only the empty track reads as unspent,
|
|
5072
|
+
// which is the half a reader is least likely to look at.
|
|
5073
|
+
dim ? "bg-transparent" : "bg-card",
|
|
5074
|
+
indent && "pl-5",
|
|
5075
|
+
frozenLabels && "sticky left-0 z-10",
|
|
5076
|
+
extra
|
|
4714
5077
|
),
|
|
4715
|
-
|
|
4716
|
-
children: /* @__PURE__ */ jsxs(
|
|
4717
|
-
"div",
|
|
4718
|
-
{
|
|
4719
|
-
className: "grid min-w-max",
|
|
4720
|
-
style: {
|
|
4721
|
-
gridTemplateColumns: `9rem repeat(${steps.length}, minmax(2.5rem, 1fr))`
|
|
4722
|
-
},
|
|
4723
|
-
children: [
|
|
4724
|
-
/* @__PURE__ */ jsx(
|
|
4725
|
-
"div",
|
|
4726
|
-
{
|
|
4727
|
-
className: cn(
|
|
4728
|
-
"border-b border-border bg-background px-2 py-1",
|
|
4729
|
-
frozenLabels && "sticky left-0 z-20"
|
|
4730
|
-
),
|
|
4731
|
-
children: /* @__PURE__ */ jsx("span", { className: "text-meta text-muted-foreground", children: "layer" })
|
|
4732
|
-
}
|
|
4733
|
-
),
|
|
4734
|
-
steps.map((step) => /* @__PURE__ */ jsx(
|
|
4735
|
-
"button",
|
|
4736
|
-
{
|
|
4737
|
-
type: "button",
|
|
4738
|
-
onClick: () => onSelectStep?.(step.id),
|
|
4739
|
-
title: step.seq != null ? `${step.label} \xB7 seq ${step.seq}` : step.label,
|
|
4740
|
-
className: cn(
|
|
4741
|
-
"border-b border-l border-border px-1 py-1 text-meta",
|
|
4742
|
-
"truncate text-muted-foreground",
|
|
4743
|
-
onSelectStep && "cursor-pointer hover:bg-accent",
|
|
4744
|
-
selectedStep === step.id && "bg-accent text-foreground",
|
|
4745
|
-
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
4746
|
-
),
|
|
4747
|
-
children: step.label
|
|
4748
|
-
},
|
|
4749
|
-
step.id
|
|
4750
|
-
)),
|
|
4751
|
-
bands.map((band) => /* @__PURE__ */ jsxs(React23.Fragment, { children: [
|
|
4752
|
-
/* @__PURE__ */ jsx(
|
|
4753
|
-
"div",
|
|
4754
|
-
{
|
|
4755
|
-
className: cn(
|
|
4756
|
-
"flex items-center border-b border-border bg-background px-2 py-1",
|
|
4757
|
-
frozenLabels && "sticky left-0 z-10"
|
|
4758
|
-
),
|
|
4759
|
-
children: band.label ?? /* @__PURE__ */ jsx(LayerChip, { layer: band.layer })
|
|
4760
|
-
}
|
|
4761
|
-
),
|
|
4762
|
-
byBand(band.layer).map(({ step, touch }) => /* @__PURE__ */ jsx(
|
|
4763
|
-
"div",
|
|
4764
|
-
{
|
|
4765
|
-
title: touch ? `${step.label} \xB7 ${MARK_LABEL[touch.direction]}${touch.address ? ` \xB7 ${touch.address}` : ""}${touch.ruleMatched ? ` \xB7 ${touch.ruleMatched}` : ""}` : void 0,
|
|
4766
|
-
className: cn(
|
|
4767
|
-
"flex items-center justify-center border-b border-l border-border px-1 py-1",
|
|
4768
|
-
selectedStep === step.id && "bg-accent"
|
|
4769
|
-
),
|
|
4770
|
-
children: touch ? /* @__PURE__ */ jsx(
|
|
4771
|
-
"span",
|
|
4772
|
-
{
|
|
4773
|
-
"aria-label": MARK_LABEL[touch.direction],
|
|
4774
|
-
className: cn(
|
|
4775
|
-
"h-1.5 w-full max-w-6 rounded-full",
|
|
4776
|
-
MARK[touch.direction],
|
|
4777
|
-
// Struck in place: the mark stays so the cell is not
|
|
4778
|
-
// mistaken for a step that never reached here.
|
|
4779
|
-
touch.direction === "refused" && "relative after:absolute after:inset-x-0 after:top-1/2 after:h-px after:-translate-y-1/2 after:bg-destructive-foreground/70"
|
|
4780
|
-
)
|
|
4781
|
-
}
|
|
4782
|
-
) : /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-muted-foreground/25", children: "\xB7" })
|
|
4783
|
-
},
|
|
4784
|
-
`${band.layer}-${step.id}`
|
|
4785
|
-
))
|
|
4786
|
-
] }, band.layer))
|
|
4787
|
-
]
|
|
4788
|
-
}
|
|
4789
|
-
)
|
|
5078
|
+
children: content
|
|
4790
5079
|
}
|
|
4791
5080
|
);
|
|
4792
|
-
|
|
4793
|
-
)
|
|
4794
|
-
|
|
4795
|
-
function Swatch({ kind = "dot", color }) {
|
|
4796
|
-
const style = { color };
|
|
4797
|
-
if (kind === "dot")
|
|
4798
|
-
return /* @__PURE__ */ jsx(
|
|
4799
|
-
"span",
|
|
5081
|
+
const trackFloor = Math.max(minTrackWidth, axisTicks.length * minSlotWidth);
|
|
5082
|
+
const row = (key, head, track, dim) => /* @__PURE__ */ jsxs(
|
|
5083
|
+
"div",
|
|
4800
5084
|
{
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
5085
|
+
className: cn(
|
|
5086
|
+
"flex min-h-12 border-border border-b last:border-b-0",
|
|
5087
|
+
// Muting the text alone said *this row is quiet*; the row has to say
|
|
5088
|
+
// *nothing spends this layer*, which is a band, not a weight.
|
|
5089
|
+
dim && "bg-muted/60"
|
|
5090
|
+
),
|
|
5091
|
+
children: [
|
|
5092
|
+
head,
|
|
5093
|
+
/* @__PURE__ */ jsx(
|
|
5094
|
+
"div",
|
|
5095
|
+
{
|
|
5096
|
+
style: { minWidth: `${trackFloor}rem` },
|
|
5097
|
+
className: "relative min-w-0 flex-1",
|
|
5098
|
+
children: track
|
|
5099
|
+
}
|
|
5100
|
+
)
|
|
5101
|
+
]
|
|
5102
|
+
},
|
|
5103
|
+
key
|
|
5104
|
+
);
|
|
5105
|
+
const partOf = (item) => item.part ? bands.find((b) => b.layer === item.layer)?.parts?.find((p) => p.id === item.part) : void 0;
|
|
5106
|
+
const spanLabel = (item) => {
|
|
5107
|
+
const end = item.end ?? item.start + (scale === "seq" ? 1 : 0);
|
|
5108
|
+
if (scale === "seq") {
|
|
5109
|
+
return end - item.start <= 1 ? `step ${item.start}` : `steps ${item.start}\u2013${end - 1}`;
|
|
5110
|
+
}
|
|
5111
|
+
return `${formatElapsed(item.start - d0)} \u2192 ${formatElapsed(
|
|
5112
|
+
end - d0
|
|
5113
|
+
)} \xB7 ${formatElapsed(end - item.start)}`;
|
|
5114
|
+
};
|
|
5115
|
+
const detail = (item) => {
|
|
5116
|
+
if (itemDetail) return itemDetail(item);
|
|
5117
|
+
const state = item.state ?? "declared";
|
|
5118
|
+
const part = partOf(item);
|
|
5119
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
5120
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
5121
|
+
/* @__PURE__ */ jsx(
|
|
5122
|
+
"span",
|
|
5123
|
+
{
|
|
5124
|
+
className: cn(
|
|
5125
|
+
"min-w-0 flex-1 truncate font-mono text-base",
|
|
5126
|
+
state === "refused" && "text-destructive line-through"
|
|
5127
|
+
),
|
|
5128
|
+
children: item.label
|
|
5129
|
+
}
|
|
5130
|
+
),
|
|
5131
|
+
/* @__PURE__ */ jsx(
|
|
5132
|
+
"span",
|
|
5133
|
+
{
|
|
5134
|
+
className: cn(
|
|
5135
|
+
"shrink-0 text-sm",
|
|
5136
|
+
state === "refused" ? "text-destructive" : "text-muted-foreground"
|
|
5137
|
+
),
|
|
5138
|
+
children: stateLabel(state)
|
|
5139
|
+
}
|
|
5140
|
+
)
|
|
5141
|
+
] }),
|
|
5142
|
+
/* @__PURE__ */ jsxs("dl", { className: "grid grid-cols-[auto_1fr] gap-x-2 gap-y-1 text-sm", children: [
|
|
5143
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "layer" }),
|
|
5144
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0", children: /* @__PURE__ */ jsx(LayerChip, { layer: item.layer, palette }) }),
|
|
5145
|
+
part ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5146
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "participant" }),
|
|
5147
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0 break-all font-mono", children: part.label })
|
|
5148
|
+
] }) : null,
|
|
5149
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "when" }),
|
|
5150
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0 tabular-nums", children: spanLabel(item) }),
|
|
5151
|
+
item.note ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5152
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "what it does" }),
|
|
5153
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0 font-mono", children: item.note })
|
|
5154
|
+
] }) : null,
|
|
5155
|
+
item.forecast ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5156
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "usually" }),
|
|
5157
|
+
/* @__PURE__ */ jsxs("dd", { className: "min-w-0 tabular-nums", children: [
|
|
5158
|
+
scale === "elapsed" ? formatElapsed(item.forecast.p50) : item.forecast.p50,
|
|
5159
|
+
item.forecast.note ? ` \xB7 ${item.forecast.note}` : ""
|
|
5160
|
+
] })
|
|
5161
|
+
] }) : null,
|
|
5162
|
+
item.ruleMatched ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5163
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: "refused by" }),
|
|
5164
|
+
/* @__PURE__ */ jsx("dd", { className: "min-w-0 break-all font-mono text-destructive", children: item.ruleMatched })
|
|
5165
|
+
] }) : null
|
|
5166
|
+
] })
|
|
5167
|
+
] });
|
|
5168
|
+
};
|
|
5169
|
+
const bar = (item, compact = false) => {
|
|
5170
|
+
const state = item.state ?? "declared";
|
|
5171
|
+
const end = item.end ?? item.start + (scale === "seq" ? 1 : 0);
|
|
5172
|
+
const min = compact ? "0.75rem" : "4.5rem";
|
|
5173
|
+
const Tag = onSelectItem ? "button" : "div";
|
|
5174
|
+
const drawn = /* @__PURE__ */ jsxs(
|
|
5175
|
+
Tag,
|
|
5176
|
+
{
|
|
5177
|
+
...onSelectItem ? { type: "button", onClick: () => onSelectItem(item.id) } : {},
|
|
5178
|
+
title: hoverDetail ? void 0 : [item.label, stateLabel(state), item.note, item.ruleMatched].filter(Boolean).join(" \xB7 "),
|
|
5179
|
+
style: (
|
|
5180
|
+
// A bar is at least readable-wide, and one near the end grows
|
|
5181
|
+
// inwards rather than off the track: anchor whichever edge is
|
|
5182
|
+
// nearer its own end of the axis, so the moment it names stays
|
|
5183
|
+
// true where the reader is looking.
|
|
5184
|
+
pct(item.start) > 50 ? {
|
|
5185
|
+
right: `${100 - pct(end)}%`,
|
|
5186
|
+
width: `max(${min}, calc(${pct(end) - pct(item.start)}% - 3px))`
|
|
5187
|
+
} : {
|
|
5188
|
+
left: `${pct(item.start)}%`,
|
|
5189
|
+
width: `max(${min}, calc(${pct(end) - pct(item.start)}% - 3px))`
|
|
5190
|
+
}
|
|
5191
|
+
),
|
|
5192
|
+
className: cn(
|
|
5193
|
+
"-translate-y-1/2 absolute top-1/2 flex min-w-0 items-stretch overflow-hidden rounded-xs border py-0.5 text-left",
|
|
5194
|
+
compact ? "gap-1 pr-1" : "gap-1.5 pr-1.5",
|
|
5195
|
+
// Chosen, not merged. `twMerge` would resolve the kit's own tints
|
|
5196
|
+
// against `border-destructive` correctly, but the tint is a
|
|
5197
|
+
// consumer's string now: a project that paints a layer with its own
|
|
5198
|
+
// utility class (`layer-llm`, a plugin's output) hands `cn` two
|
|
5199
|
+
// classes it cannot see a conflict between, and stylesheet order
|
|
5200
|
+
// would decide whether a refusal reads as refused.
|
|
5201
|
+
state === "refused" ? null : layerPaint(palette, item.layer).tint,
|
|
5202
|
+
STATE_BAR[state] ?? "",
|
|
5203
|
+
onSelectItem && "cursor-pointer hover:bg-accent",
|
|
5204
|
+
selectedItem === item.id && "ring-1 ring-ring",
|
|
5205
|
+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
5206
|
+
),
|
|
5207
|
+
children: [
|
|
5208
|
+
/* @__PURE__ */ jsx(
|
|
5209
|
+
"span",
|
|
5210
|
+
{
|
|
5211
|
+
"aria-hidden": true,
|
|
5212
|
+
className: cn(
|
|
5213
|
+
"w-1 shrink-0",
|
|
5214
|
+
layerPaint(palette, item.layer).swatch
|
|
5215
|
+
)
|
|
5216
|
+
}
|
|
5217
|
+
),
|
|
5218
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col justify-center", children: [
|
|
5219
|
+
/* @__PURE__ */ jsx(
|
|
5220
|
+
"span",
|
|
5221
|
+
{
|
|
5222
|
+
className: cn(
|
|
5223
|
+
"truncate font-mono text-sm",
|
|
5224
|
+
state === "refused" && "text-destructive line-through"
|
|
5225
|
+
),
|
|
5226
|
+
children: item.label
|
|
5227
|
+
}
|
|
5228
|
+
),
|
|
5229
|
+
compact ? null : /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-muted-foreground", children: item.note ?? (item.forecast ? `p50 ${scale === "elapsed" ? formatElapsed(item.forecast.p50) : item.forecast.p50}${item.forecast.note ? ` \xB7 ${item.forecast.note}` : ""}` : state === "declared" ? null : stateLabel(state)) })
|
|
5230
|
+
] })
|
|
5231
|
+
]
|
|
5232
|
+
},
|
|
5233
|
+
item.id
|
|
5234
|
+
);
|
|
5235
|
+
const forecastMark = item.forecast ? /* @__PURE__ */ jsx(
|
|
5236
|
+
"span",
|
|
5237
|
+
{
|
|
5238
|
+
"aria-hidden": true,
|
|
5239
|
+
style: { left: `${pct(item.start + item.forecast.p50)}%` },
|
|
5240
|
+
className: "-translate-y-1/2 pointer-events-none absolute top-1/2 h-5 border-muted-foreground/70 border-l border-dashed"
|
|
5241
|
+
},
|
|
5242
|
+
`${item.id}-p50`
|
|
5243
|
+
) : null;
|
|
5244
|
+
const withMark = (node) => forecastMark ? /* @__PURE__ */ jsxs(React25.Fragment, { children: [
|
|
5245
|
+
forecastMark,
|
|
5246
|
+
node
|
|
5247
|
+
] }, item.id) : node;
|
|
5248
|
+
if (!hoverDetail) return withMark(drawn);
|
|
5249
|
+
return withMark(
|
|
5250
|
+
/* @__PURE__ */ jsxs(HoverCard, { openDelay: 140, closeDelay: 80, children: [
|
|
5251
|
+
/* @__PURE__ */ jsx(HoverCardTrigger, { asChild: true, children: drawn }),
|
|
5252
|
+
/* @__PURE__ */ jsx(
|
|
5253
|
+
HoverCardContent,
|
|
5254
|
+
{
|
|
5255
|
+
align: "start",
|
|
5256
|
+
side: "top",
|
|
5257
|
+
className: "w-auto max-w-80 p-3",
|
|
5258
|
+
children: detail(item)
|
|
5259
|
+
}
|
|
5260
|
+
)
|
|
5261
|
+
] }, item.id)
|
|
5262
|
+
);
|
|
5263
|
+
};
|
|
5264
|
+
const bracketLanes = React25.useMemo(() => {
|
|
5265
|
+
const lanes = [];
|
|
5266
|
+
const ordered = [...brackets ?? []].sort(
|
|
5267
|
+
(a, b) => b.end - b.start - (a.end - a.start)
|
|
5268
|
+
);
|
|
5269
|
+
for (const bracket of ordered) {
|
|
5270
|
+
const lane = lanes.find(
|
|
5271
|
+
(existing) => existing.every(
|
|
5272
|
+
(other) => bracket.end <= other.start || bracket.start >= other.end
|
|
5273
|
+
)
|
|
5274
|
+
);
|
|
5275
|
+
if (lane) lane.push(bracket);
|
|
5276
|
+
else lanes.push([bracket]);
|
|
5277
|
+
}
|
|
5278
|
+
return lanes;
|
|
5279
|
+
}, [brackets]);
|
|
5280
|
+
const seamLines = React25.useMemo(() => {
|
|
5281
|
+
const placed = (seams ?? []).filter((seam) => seam.at != null);
|
|
5282
|
+
const loose = (seams ?? []).filter((seam) => seam.at == null);
|
|
5283
|
+
return [...placed.length ? [placed] : [], ...loose.map((s2) => [s2])];
|
|
5284
|
+
}, [seams]);
|
|
5285
|
+
const itemsOf = (layer, part) => items.filter(
|
|
5286
|
+
(i) => i.layer === layer && (part ? i.part === part : !i.part)
|
|
5287
|
+
);
|
|
5288
|
+
const allOf = (layer) => items.filter((i) => i.layer === layer);
|
|
5289
|
+
return /* @__PURE__ */ jsx(
|
|
5290
|
+
"div",
|
|
5291
|
+
{
|
|
5292
|
+
ref,
|
|
5293
|
+
className: cn(
|
|
5294
|
+
"min-w-0 overflow-x-auto rounded-control border border-border bg-card",
|
|
5295
|
+
className
|
|
5296
|
+
),
|
|
5297
|
+
...props,
|
|
5298
|
+
children: /* @__PURE__ */ jsxs("div", { className: "relative min-w-max", children: [
|
|
5299
|
+
seams?.length ? /* @__PURE__ */ jsx(
|
|
5300
|
+
"div",
|
|
5301
|
+
{
|
|
5302
|
+
"aria-hidden": true,
|
|
5303
|
+
style: { left: `${labelWidth}rem` },
|
|
5304
|
+
className: "pointer-events-none absolute inset-y-0 right-0",
|
|
5305
|
+
children: seams.map(
|
|
5306
|
+
(seam) => seam.at == null ? null : /* @__PURE__ */ jsx(
|
|
5307
|
+
"span",
|
|
5308
|
+
{
|
|
5309
|
+
style: { left: `${pct(seam.at)}%` },
|
|
5310
|
+
className: cn(
|
|
5311
|
+
"absolute inset-y-0 border-l",
|
|
5312
|
+
seam.conditional || seam.noEstimate ? "border-dashed border-muted-foreground/45" : "border-muted-foreground/60"
|
|
5313
|
+
)
|
|
5314
|
+
},
|
|
5315
|
+
seam.id
|
|
5316
|
+
)
|
|
5317
|
+
)
|
|
5318
|
+
}
|
|
5319
|
+
) : null,
|
|
5320
|
+
row(
|
|
5321
|
+
"axis",
|
|
5322
|
+
label(
|
|
5323
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5324
|
+
collapsible && withParts.length > 0 ? /* @__PURE__ */ jsxs(
|
|
5325
|
+
"button",
|
|
5326
|
+
{
|
|
5327
|
+
type: "button",
|
|
5328
|
+
onClick: () => setShut(allShut ? [] : withParts.map((b) => b.layer)),
|
|
5329
|
+
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",
|
|
5330
|
+
children: [
|
|
5331
|
+
allShut ? /* @__PURE__ */ jsx(ChevronRight, { "aria-hidden": true, className: "size-3 shrink-0" }) : /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": true, className: "size-3 shrink-0" }),
|
|
5332
|
+
allShut ? "expand all" : "collapse all"
|
|
5333
|
+
]
|
|
5334
|
+
}
|
|
5335
|
+
) : /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "layer" }),
|
|
5336
|
+
/* @__PURE__ */ jsx("span", { className: "ml-auto text-sm text-muted-foreground/70", children: scale === "seq" ? "step" : "elapsed" })
|
|
5337
|
+
] }),
|
|
5338
|
+
"min-h-0 py-1"
|
|
5339
|
+
),
|
|
5340
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0", children: axisTicks.map((value) => {
|
|
5341
|
+
const atEnd = pct(value) > 99;
|
|
5342
|
+
return /* @__PURE__ */ jsx(
|
|
5343
|
+
"span",
|
|
5344
|
+
{
|
|
5345
|
+
style: atEnd ? { right: 0 } : { left: `${pct(value)}%` },
|
|
5346
|
+
className: cn(
|
|
5347
|
+
"absolute inset-y-0 text-sm text-muted-foreground",
|
|
5348
|
+
atEnd ? "border-border/60 border-r pr-1" : "border-border/60 border-l pl-1"
|
|
5349
|
+
),
|
|
5350
|
+
children: tickLabel(value)
|
|
5351
|
+
},
|
|
5352
|
+
value
|
|
5353
|
+
);
|
|
5354
|
+
}) })
|
|
5355
|
+
),
|
|
5356
|
+
bracketLanes.map(
|
|
5357
|
+
(lane, laneIndex) => row(
|
|
5358
|
+
`brackets-${laneIndex}`,
|
|
5359
|
+
label(
|
|
5360
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: laneIndex === 0 ? "its bound" : "" }),
|
|
5361
|
+
"min-h-0 py-1"
|
|
5362
|
+
),
|
|
5363
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 py-1", children: lane.map((bracket) => /* @__PURE__ */ jsx(
|
|
5364
|
+
"span",
|
|
5365
|
+
{
|
|
5366
|
+
style: {
|
|
5367
|
+
left: `${pct(bracket.start)}%`,
|
|
5368
|
+
width: `${pct(bracket.end) - pct(bracket.start)}%`
|
|
5369
|
+
},
|
|
5370
|
+
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",
|
|
5371
|
+
children: bracket.label
|
|
5372
|
+
},
|
|
5373
|
+
bracket.id
|
|
5374
|
+
)) })
|
|
5375
|
+
)
|
|
5376
|
+
),
|
|
5377
|
+
seamLines.map(
|
|
5378
|
+
(line, lineIndex) => row(
|
|
5379
|
+
`seams-${lineIndex}`,
|
|
5380
|
+
label(
|
|
5381
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: lineIndex === 0 ? "its gates" : "" })
|
|
5382
|
+
),
|
|
5383
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0", children: line.map((seam) => {
|
|
5384
|
+
const named = /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col justify-center", children: [
|
|
5385
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm", children: seam.label }),
|
|
5386
|
+
seam.note ? /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-muted-foreground", children: seam.note }) : null
|
|
5387
|
+
] });
|
|
5388
|
+
if (seam.at == null)
|
|
5389
|
+
return /* @__PURE__ */ jsx(
|
|
5390
|
+
"span",
|
|
5391
|
+
{
|
|
5392
|
+
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",
|
|
5393
|
+
children: named
|
|
5394
|
+
},
|
|
5395
|
+
seam.id
|
|
5396
|
+
);
|
|
5397
|
+
const after = seam.edge === "after";
|
|
5398
|
+
const neighbours = line.map((other) => other.at).filter((value) => value != null);
|
|
5399
|
+
const bound = after ? pct(seam.at) - Math.max(
|
|
5400
|
+
...neighbours.filter((v) => v < (seam.at ?? 0)).map(pct),
|
|
5401
|
+
0
|
|
5402
|
+
) : Math.min(
|
|
5403
|
+
...neighbours.filter((v) => v > (seam.at ?? 0)).map(pct),
|
|
5404
|
+
100
|
|
5405
|
+
) - pct(seam.at);
|
|
5406
|
+
return /* @__PURE__ */ jsx(
|
|
5407
|
+
"span",
|
|
5408
|
+
{
|
|
5409
|
+
style: {
|
|
5410
|
+
maxWidth: `${Math.max(bound, 12)}%`,
|
|
5411
|
+
...after ? { right: `${100 - pct(seam.at)}%` } : { left: `${pct(seam.at)}%` }
|
|
5412
|
+
},
|
|
5413
|
+
className: cn(
|
|
5414
|
+
// The label hangs off the side the cost falls on:
|
|
5415
|
+
// before the line, nothing is spent; after it, the
|
|
5416
|
+
// pass is already paid for.
|
|
5417
|
+
"absolute inset-y-1.5 flex items-center bg-card px-1.5 text-muted-foreground",
|
|
5418
|
+
after ? "border-r-2 text-right" : "border-l-2",
|
|
5419
|
+
seam.conditional || seam.noEstimate ? "border-dashed border-muted-foreground/45" : "border-muted-foreground/70"
|
|
5420
|
+
),
|
|
5421
|
+
children: named
|
|
5422
|
+
},
|
|
5423
|
+
seam.id
|
|
5424
|
+
);
|
|
5425
|
+
}) })
|
|
5426
|
+
)
|
|
5427
|
+
),
|
|
5428
|
+
bands.map((band) => {
|
|
5429
|
+
const own = itemsOf(band.layer);
|
|
5430
|
+
const parts = band.parts ?? [];
|
|
5431
|
+
const dim = allOf(band.layer).length === 0;
|
|
5432
|
+
const spine = band.spine ?? false;
|
|
5433
|
+
const foldable = collapsible && parts.length > 0;
|
|
5434
|
+
const isShut = foldable && shut.includes(band.layer);
|
|
5435
|
+
const onLine = isShut ? allOf(band.layer) : own;
|
|
5436
|
+
return /* @__PURE__ */ jsxs(React25.Fragment, { children: [
|
|
5437
|
+
row(
|
|
5438
|
+
band.layer,
|
|
5439
|
+
label(
|
|
5440
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5441
|
+
foldable ? /* @__PURE__ */ jsxs(
|
|
5442
|
+
"button",
|
|
5443
|
+
{
|
|
5444
|
+
type: "button",
|
|
5445
|
+
"aria-expanded": !isShut,
|
|
5446
|
+
"aria-label": `${isShut ? "Show" : "Hide"} the ${parts.length} participants under ${band.layer}`,
|
|
5447
|
+
onClick: () => setShut(
|
|
5448
|
+
isShut ? shut.filter((l) => l !== band.layer) : [...shut, band.layer]
|
|
5449
|
+
),
|
|
5450
|
+
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",
|
|
5451
|
+
children: [
|
|
5452
|
+
isShut ? /* @__PURE__ */ jsx(
|
|
5453
|
+
ChevronRight,
|
|
5454
|
+
{
|
|
5455
|
+
"aria-hidden": true,
|
|
5456
|
+
className: "size-3 shrink-0 text-muted-foreground"
|
|
5457
|
+
}
|
|
5458
|
+
) : /* @__PURE__ */ jsx(
|
|
5459
|
+
ChevronDown,
|
|
5460
|
+
{
|
|
5461
|
+
"aria-hidden": true,
|
|
5462
|
+
className: "size-3 shrink-0 text-muted-foreground"
|
|
5463
|
+
}
|
|
5464
|
+
),
|
|
5465
|
+
band.label ?? /* @__PURE__ */ jsx(
|
|
5466
|
+
LayerChip,
|
|
5467
|
+
{
|
|
5468
|
+
layer: band.layer,
|
|
5469
|
+
dim,
|
|
5470
|
+
palette
|
|
5471
|
+
}
|
|
5472
|
+
)
|
|
5473
|
+
]
|
|
5474
|
+
}
|
|
5475
|
+
) : /* @__PURE__ */ jsx("span", { className: "shrink-0 pl-4", children: band.label ?? /* @__PURE__ */ jsx(
|
|
5476
|
+
LayerChip,
|
|
5477
|
+
{
|
|
5478
|
+
layer: band.layer,
|
|
5479
|
+
dim,
|
|
5480
|
+
palette
|
|
5481
|
+
}
|
|
5482
|
+
) }),
|
|
5483
|
+
band.note ? /* @__PURE__ */ jsx(
|
|
5484
|
+
"span",
|
|
5485
|
+
{
|
|
5486
|
+
title: band.note,
|
|
5487
|
+
className: cn(
|
|
5488
|
+
"ml-auto min-w-0 truncate text-sm",
|
|
5489
|
+
dim ? "text-muted-foreground/70" : "text-muted-foreground"
|
|
5490
|
+
),
|
|
5491
|
+
children: band.note
|
|
5492
|
+
}
|
|
5493
|
+
) : null
|
|
5494
|
+
] }),
|
|
5495
|
+
void 0,
|
|
5496
|
+
false,
|
|
5497
|
+
dim
|
|
5498
|
+
),
|
|
5499
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5500
|
+
spine ? /* @__PURE__ */ jsx(
|
|
5501
|
+
"span",
|
|
5502
|
+
{
|
|
5503
|
+
"aria-hidden": true,
|
|
5504
|
+
className: "-translate-y-1/2 absolute inset-x-0 top-1/2 border-border border-t"
|
|
5505
|
+
}
|
|
5506
|
+
) : null,
|
|
5507
|
+
onLine.map((item) => bar(item, isShut))
|
|
5508
|
+
] }),
|
|
5509
|
+
dim
|
|
5510
|
+
),
|
|
5511
|
+
(isShut ? [] : parts).map((part) => {
|
|
5512
|
+
const spent = itemsOf(band.layer, part.id);
|
|
5513
|
+
const unspent = spent.length === 0;
|
|
5514
|
+
return row(
|
|
5515
|
+
`${band.layer}-${part.id}`,
|
|
5516
|
+
label(
|
|
5517
|
+
/* @__PURE__ */ jsxs(
|
|
5518
|
+
"span",
|
|
5519
|
+
{
|
|
5520
|
+
className: "flex min-w-0 flex-col",
|
|
5521
|
+
title: part.label,
|
|
5522
|
+
children: [
|
|
5523
|
+
/* @__PURE__ */ jsx(
|
|
5524
|
+
"span",
|
|
5525
|
+
{
|
|
5526
|
+
className: cn(
|
|
5527
|
+
"truncate font-mono text-sm",
|
|
5528
|
+
// The address wears its layer, so the row and the
|
|
5529
|
+
// band's dot are visibly one thing. Unspent
|
|
5530
|
+
// overrides it: *this was never reached* outranks
|
|
5531
|
+
// *this is graph data*.
|
|
5532
|
+
unspent ? "text-muted-foreground/70" : layerPaint(palette, band.layer).text
|
|
5533
|
+
),
|
|
5534
|
+
children: part.label
|
|
5535
|
+
}
|
|
5536
|
+
),
|
|
5537
|
+
part.note ? /* @__PURE__ */ jsx(
|
|
5538
|
+
"span",
|
|
5539
|
+
{
|
|
5540
|
+
className: cn(
|
|
5541
|
+
// What the participant owes sits a rung under the
|
|
5542
|
+
// address that owes it. At the same size the two
|
|
5543
|
+
// lines read as one wrapped label.
|
|
5544
|
+
"truncate text-xs",
|
|
5545
|
+
unspent ? "text-muted-foreground/70" : "text-muted-foreground"
|
|
5546
|
+
),
|
|
5547
|
+
children: part.note
|
|
5548
|
+
}
|
|
5549
|
+
) : null
|
|
5550
|
+
]
|
|
5551
|
+
}
|
|
5552
|
+
),
|
|
5553
|
+
void 0,
|
|
5554
|
+
true,
|
|
5555
|
+
unspent
|
|
5556
|
+
),
|
|
5557
|
+
spent.map((item) => bar(item)),
|
|
5558
|
+
unspent
|
|
5559
|
+
);
|
|
5560
|
+
})
|
|
5561
|
+
] }, band.layer);
|
|
5562
|
+
})
|
|
5563
|
+
] })
|
|
5564
|
+
}
|
|
5565
|
+
);
|
|
5566
|
+
}
|
|
5567
|
+
);
|
|
5568
|
+
LayerStrip.displayName = "LayerStrip";
|
|
5569
|
+
function Swatch({ kind = "dot", color }) {
|
|
5570
|
+
const style = { color };
|
|
5571
|
+
if (kind === "dot")
|
|
5572
|
+
return /* @__PURE__ */ jsx(
|
|
5573
|
+
"span",
|
|
5574
|
+
{
|
|
5575
|
+
"aria-hidden": true,
|
|
5576
|
+
style,
|
|
5577
|
+
className: "size-2 shrink-0 rounded-full bg-current"
|
|
5578
|
+
}
|
|
4805
5579
|
);
|
|
4806
5580
|
if (kind === "ring")
|
|
4807
5581
|
return /* @__PURE__ */ jsx(
|
|
@@ -4814,6 +5588,26 @@ function Swatch({ kind = "dot", color }) {
|
|
|
4814
5588
|
);
|
|
4815
5589
|
if (kind === "line")
|
|
4816
5590
|
return /* @__PURE__ */ jsx("span", { "aria-hidden": true, style, className: "h-0.5 w-4 shrink-0 bg-current" });
|
|
5591
|
+
if (kind === "stripe")
|
|
5592
|
+
return /* @__PURE__ */ jsx("span", { "aria-hidden": true, style, className: "h-3 w-[3px] shrink-0 bg-current" });
|
|
5593
|
+
if (kind === "bracket")
|
|
5594
|
+
return /* @__PURE__ */ jsx(
|
|
5595
|
+
"span",
|
|
5596
|
+
{
|
|
5597
|
+
"aria-hidden": true,
|
|
5598
|
+
style,
|
|
5599
|
+
className: "h-3 w-3.5 shrink-0 border-l-2 border-current bg-current/10"
|
|
5600
|
+
}
|
|
5601
|
+
);
|
|
5602
|
+
if (kind === "rule")
|
|
5603
|
+
return /* @__PURE__ */ jsx(
|
|
5604
|
+
"span",
|
|
5605
|
+
{
|
|
5606
|
+
"aria-hidden": true,
|
|
5607
|
+
style,
|
|
5608
|
+
className: "relative h-3 w-4 shrink-0 before:absolute before:inset-x-0 before:top-1.5 before:border-t-2 before:border-current after:absolute after:left-0.5 after:top-[3px] after:size-1.5 after:bg-current"
|
|
5609
|
+
}
|
|
5610
|
+
);
|
|
4817
5611
|
if (kind === "dashed")
|
|
4818
5612
|
return /* @__PURE__ */ jsx(
|
|
4819
5613
|
"span",
|
|
@@ -4839,14 +5633,14 @@ function Swatch({ kind = "dot", color }) {
|
|
|
4839
5633
|
}
|
|
4840
5634
|
);
|
|
4841
5635
|
}
|
|
4842
|
-
var Legend =
|
|
5636
|
+
var Legend = React25.forwardRef(
|
|
4843
5637
|
({ orientation = "row", className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4844
5638
|
"div",
|
|
4845
5639
|
{
|
|
4846
5640
|
ref,
|
|
4847
5641
|
role: "list",
|
|
4848
5642
|
className: cn(
|
|
4849
|
-
"flex gap-x-3 gap-y-1 text-
|
|
5643
|
+
"flex gap-x-3 gap-y-1 text-sm",
|
|
4850
5644
|
orientation === "row" ? "flex-wrap items-center" : "flex-col",
|
|
4851
5645
|
className
|
|
4852
5646
|
),
|
|
@@ -4856,7 +5650,7 @@ var Legend = React23.forwardRef(
|
|
|
4856
5650
|
)
|
|
4857
5651
|
);
|
|
4858
5652
|
Legend.displayName = "Legend";
|
|
4859
|
-
var LegendItem =
|
|
5653
|
+
var LegendItem = React25.forwardRef(
|
|
4860
5654
|
({ kind, color, label, count, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
4861
5655
|
"div",
|
|
4862
5656
|
{
|
|
@@ -4873,7 +5667,7 @@ var LegendItem = React23.forwardRef(
|
|
|
4873
5667
|
)
|
|
4874
5668
|
);
|
|
4875
5669
|
LegendItem.displayName = "LegendItem";
|
|
4876
|
-
var LensChip =
|
|
5670
|
+
var LensChip = React25.forwardRef(
|
|
4877
5671
|
({ lens, onPick, className, ...props }, ref) => {
|
|
4878
5672
|
const label = lens?.name ?? "Everything";
|
|
4879
5673
|
const unset = lens == null;
|
|
@@ -4892,7 +5686,7 @@ var LensChip = React23.forwardRef(
|
|
|
4892
5686
|
] });
|
|
4893
5687
|
const shell = cn(
|
|
4894
5688
|
"inline-flex min-w-0 max-w-full items-center gap-1.5 rounded-control",
|
|
4895
|
-
"border border-border px-1.5 py-0.5 text-
|
|
5689
|
+
"border border-border px-1.5 py-0.5 text-sm",
|
|
4896
5690
|
unset ? "text-muted-foreground" : "text-foreground",
|
|
4897
5691
|
className
|
|
4898
5692
|
);
|
|
@@ -4916,7 +5710,7 @@ var LensChip = React23.forwardRef(
|
|
|
4916
5710
|
}
|
|
4917
5711
|
);
|
|
4918
5712
|
LensChip.displayName = "LensChip";
|
|
4919
|
-
function describe(n) {
|
|
5713
|
+
function describe(n, palette) {
|
|
4920
5714
|
switch (n.kind) {
|
|
4921
5715
|
case "allow":
|
|
4922
5716
|
return `${n.count} allow`;
|
|
@@ -4931,12 +5725,12 @@ function describe(n) {
|
|
|
4931
5725
|
case "closes":
|
|
4932
5726
|
return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
4933
5727
|
"closes",
|
|
4934
|
-
n.layers.map((layer) => /* @__PURE__ */ jsx(LayerChip, { layer }, layer))
|
|
5728
|
+
n.layers.map((layer) => /* @__PURE__ */ jsx(LayerChip, { layer, palette }, layer))
|
|
4935
5729
|
] });
|
|
4936
5730
|
}
|
|
4937
5731
|
}
|
|
4938
|
-
var LensRow =
|
|
4939
|
-
({ name, narrows = [], usage, selected, onSelect, className, ...props }, ref) => {
|
|
5732
|
+
var LensRow = React25.forwardRef(
|
|
5733
|
+
({ name, narrows = [], usage, selected, onSelect, palette, className, ...props }, ref) => {
|
|
4940
5734
|
const interactive = Boolean(onSelect);
|
|
4941
5735
|
return /* @__PURE__ */ jsxs(
|
|
4942
5736
|
"div",
|
|
@@ -4962,8 +5756,8 @@ var LensRow = React23.forwardRef(
|
|
|
4962
5756
|
...props,
|
|
4963
5757
|
children: [
|
|
4964
5758
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-baseline gap-2", children: [
|
|
4965
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-
|
|
4966
|
-
usage ? /* @__PURE__ */ jsxs("span", { className: "ml-auto shrink-0 text-
|
|
5759
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-base font-medium text-foreground", children: name }),
|
|
5760
|
+
usage ? /* @__PURE__ */ jsxs("span", { className: "ml-auto shrink-0 text-sm text-muted-foreground", children: [
|
|
4967
5761
|
"used in ",
|
|
4968
5762
|
usage.runs,
|
|
4969
5763
|
" run",
|
|
@@ -4971,17 +5765,41 @@ var LensRow = React23.forwardRef(
|
|
|
4971
5765
|
usage.lastUsed ? ` \xB7 last ${usage.lastUsed}` : ""
|
|
4972
5766
|
] }) : null
|
|
4973
5767
|
] }),
|
|
4974
|
-
narrows.length ? /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-
|
|
5768
|
+
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(React25.Fragment, { children: [
|
|
4975
5769
|
i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "opacity-40", children: "\xB7" }) : null,
|
|
4976
|
-
/* @__PURE__ */ jsx("span", { className: "inline-flex items-center", children: describe(n) })
|
|
4977
|
-
] }, `${n.kind}-${i}`)) }) : /* @__PURE__ */ jsx("span", { className: "text-
|
|
5770
|
+
/* @__PURE__ */ jsx("span", { className: "inline-flex items-center", children: describe(n, palette) })
|
|
5771
|
+
] }, `${n.kind}-${i}`)) }) : /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground/70", children: "narrows nothing \u2014 the whole model, inside the guardrails" })
|
|
4978
5772
|
]
|
|
4979
5773
|
}
|
|
4980
5774
|
);
|
|
4981
5775
|
}
|
|
4982
5776
|
);
|
|
4983
5777
|
LensRow.displayName = "LensRow";
|
|
4984
|
-
var
|
|
5778
|
+
var TONE3 = {
|
|
5779
|
+
muted: "border-muted-foreground/50 text-muted-foreground",
|
|
5780
|
+
info: "border-info/60 text-info",
|
|
5781
|
+
success: "border-success/60 text-success",
|
|
5782
|
+
warning: "border-warning/60 text-warning",
|
|
5783
|
+
destructive: "border-destructive/60 text-destructive"
|
|
5784
|
+
};
|
|
5785
|
+
var MarkChip = React25.forwardRef(
|
|
5786
|
+
({ tone = "warning", className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5787
|
+
"span",
|
|
5788
|
+
{
|
|
5789
|
+
ref,
|
|
5790
|
+
className: cn(
|
|
5791
|
+
"inline-flex shrink-0 items-center rounded-control border px-1 py-px",
|
|
5792
|
+
"font-mono text-xs whitespace-nowrap",
|
|
5793
|
+
TONE3[tone],
|
|
5794
|
+
className
|
|
5795
|
+
),
|
|
5796
|
+
...props,
|
|
5797
|
+
children
|
|
5798
|
+
}
|
|
5799
|
+
)
|
|
5800
|
+
);
|
|
5801
|
+
MarkChip.displayName = "MarkChip";
|
|
5802
|
+
var MatchPreview = React25.forwardRef(
|
|
4985
5803
|
({ pattern, matches = [], loading, limit = 8, className, ...props }, ref) => {
|
|
4986
5804
|
const hits = matches.filter((m) => m.matched);
|
|
4987
5805
|
const misses = matches.filter((m) => !m.matched);
|
|
@@ -4998,14 +5816,14 @@ var MatchPreview = React23.forwardRef(
|
|
|
4998
5816
|
...props,
|
|
4999
5817
|
children: [
|
|
5000
5818
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-baseline gap-2", children: [
|
|
5001
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
5002
|
-
/* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 text-
|
|
5819
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "what this matches" }),
|
|
5820
|
+
/* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 text-sm tabular-nums text-muted-foreground", children: loading ? "\u2026" : `${hits.length} of ${matches.length}` })
|
|
5003
5821
|
] }),
|
|
5004
5822
|
loading ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 py-0.5", children: [
|
|
5005
5823
|
/* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-3/5" }),
|
|
5006
5824
|
/* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-2/5" }),
|
|
5007
5825
|
/* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-1/2" })
|
|
5008
|
-
] }) : matches.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-
|
|
5826
|
+
] }) : 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: [
|
|
5009
5827
|
/* @__PURE__ */ jsx("span", { className: "font-mono", children: pattern }),
|
|
5010
5828
|
" matches nothing here"
|
|
5011
5829
|
] }) : null,
|
|
@@ -5018,7 +5836,7 @@ var MatchPreview = React23.forwardRef(
|
|
|
5018
5836
|
},
|
|
5019
5837
|
m.address
|
|
5020
5838
|
)),
|
|
5021
|
-
hidden > 0 ? /* @__PURE__ */ jsxs("span", { className: "pt-0.5 text-
|
|
5839
|
+
hidden > 0 ? /* @__PURE__ */ jsxs("span", { className: "pt-0.5 text-sm text-muted-foreground/70", children: [
|
|
5022
5840
|
"and ",
|
|
5023
5841
|
hidden,
|
|
5024
5842
|
" more"
|
|
@@ -5090,14 +5908,14 @@ var MenuItem = ({
|
|
|
5090
5908
|
)
|
|
5091
5909
|
] });
|
|
5092
5910
|
};
|
|
5093
|
-
var
|
|
5911
|
+
var TONE4 = {
|
|
5094
5912
|
running: "text-info",
|
|
5095
5913
|
success: "text-success",
|
|
5096
5914
|
warning: "text-warning",
|
|
5097
5915
|
error: "text-destructive",
|
|
5098
5916
|
info: "text-info"
|
|
5099
5917
|
};
|
|
5100
|
-
var MetricTile =
|
|
5918
|
+
var MetricTile = React25.forwardRef(
|
|
5101
5919
|
({ label, value, caption, tone, meter, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5102
5920
|
"div",
|
|
5103
5921
|
{
|
|
@@ -5108,7 +5926,7 @@ var MetricTile = React23.forwardRef(
|
|
|
5108
5926
|
),
|
|
5109
5927
|
...props,
|
|
5110
5928
|
children: [
|
|
5111
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
5929
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold uppercase tracking-wide text-muted-foreground", children: label }),
|
|
5112
5930
|
/* @__PURE__ */ jsx(
|
|
5113
5931
|
"span",
|
|
5114
5932
|
{
|
|
@@ -5117,12 +5935,12 @@ var MetricTile = React23.forwardRef(
|
|
|
5117
5935
|
// `1,880` and `2 / 5` in adjacent tiles sit at different widths, and
|
|
5118
5936
|
// a strip of six stops reading as one row of numbers.
|
|
5119
5937
|
"font-mono text-lg font-semibold leading-tight",
|
|
5120
|
-
tone ?
|
|
5938
|
+
tone ? TONE4[tone] ?? "text-foreground" : void 0
|
|
5121
5939
|
),
|
|
5122
5940
|
children: value
|
|
5123
5941
|
}
|
|
5124
5942
|
),
|
|
5125
|
-
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
5943
|
+
caption != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: caption }) : null,
|
|
5126
5944
|
meter != null ? (
|
|
5127
5945
|
// Not a <Progress>: that is a control-sized, rounded, animated bar for
|
|
5128
5946
|
// work in flight. This is a 4px rule that says how much of a ceiling is
|
|
@@ -5136,7 +5954,7 @@ var MetricTile = React23.forwardRef(
|
|
|
5136
5954
|
children: /* @__PURE__ */ jsx(
|
|
5137
5955
|
"div",
|
|
5138
5956
|
{
|
|
5139
|
-
className: cn("h-full", tone ?
|
|
5957
|
+
className: cn("h-full", tone ? TONE4[tone] ?? "text-foreground" : "text-primary", "bg-current"),
|
|
5140
5958
|
style: { width: `${Math.min(Math.max(meter, 0), 1) * 100}%` }
|
|
5141
5959
|
}
|
|
5142
5960
|
)
|
|
@@ -5149,7 +5967,7 @@ var MetricTile = React23.forwardRef(
|
|
|
5149
5967
|
)
|
|
5150
5968
|
);
|
|
5151
5969
|
MetricTile.displayName = "MetricTile";
|
|
5152
|
-
var MetricGrid =
|
|
5970
|
+
var MetricGrid = React25.forwardRef(
|
|
5153
5971
|
({ minTileWidth = 120, gap = 6, className, style, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5154
5972
|
"div",
|
|
5155
5973
|
{
|
|
@@ -5208,7 +6026,7 @@ var NestedMenu = (props) => {
|
|
|
5208
6026
|
}
|
|
5209
6027
|
);
|
|
5210
6028
|
};
|
|
5211
|
-
var PanelBox =
|
|
6029
|
+
var PanelBox = React25.forwardRef(
|
|
5212
6030
|
({ title, aside, flush, className, headerClassName, bodyClassName, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5213
6031
|
Card,
|
|
5214
6032
|
{
|
|
@@ -5299,13 +6117,13 @@ function PanelStack({
|
|
|
5299
6117
|
headerClassName,
|
|
5300
6118
|
bodyClassName
|
|
5301
6119
|
}) {
|
|
5302
|
-
const groupRef =
|
|
5303
|
-
const refs =
|
|
5304
|
-
const [collapsed, setCollapsed] =
|
|
6120
|
+
const groupRef = React25.useRef(null);
|
|
6121
|
+
const refs = React25.useRef({});
|
|
6122
|
+
const [collapsed, setCollapsed] = React25.useState(
|
|
5305
6123
|
() => Object.fromEntries(sections.map((s) => [s.id, !!s.defaultCollapsed]))
|
|
5306
6124
|
);
|
|
5307
|
-
const didInit =
|
|
5308
|
-
|
|
6125
|
+
const didInit = React25.useRef(false);
|
|
6126
|
+
React25.useLayoutEffect(() => {
|
|
5309
6127
|
if (didInit.current) return;
|
|
5310
6128
|
didInit.current = true;
|
|
5311
6129
|
const targets = sections.filter((s) => s.defaultCollapsed);
|
|
@@ -5337,18 +6155,18 @@ function PanelStack({
|
|
|
5337
6155
|
for (const s of targets) refs.current[s.id]?.collapse();
|
|
5338
6156
|
group.setLayout(next);
|
|
5339
6157
|
}, []);
|
|
5340
|
-
const notify =
|
|
5341
|
-
|
|
6158
|
+
const notify = React25.useRef(onCollapsedChange);
|
|
6159
|
+
React25.useEffect(() => {
|
|
5342
6160
|
notify.current = onCollapsedChange;
|
|
5343
6161
|
}, [onCollapsedChange]);
|
|
5344
|
-
const collapsedRef =
|
|
6162
|
+
const collapsedRef = React25.useRef(collapsed);
|
|
5345
6163
|
collapsedRef.current = collapsed;
|
|
5346
|
-
const collapsePanel =
|
|
6164
|
+
const collapsePanel = React25.useCallback((id) => {
|
|
5347
6165
|
const ref = refs.current[id];
|
|
5348
6166
|
if (!ref || ref.isCollapsed()) return;
|
|
5349
6167
|
ref.collapse();
|
|
5350
6168
|
}, []);
|
|
5351
|
-
const expandPanel =
|
|
6169
|
+
const expandPanel = React25.useCallback((id) => {
|
|
5352
6170
|
const ref = refs.current[id];
|
|
5353
6171
|
if (!ref || !ref.isCollapsed()) return;
|
|
5354
6172
|
ref.expand();
|
|
@@ -5366,7 +6184,7 @@ function PanelStack({
|
|
|
5366
6184
|
[donorId]: donorPct - share
|
|
5367
6185
|
});
|
|
5368
6186
|
}, []);
|
|
5369
|
-
const toggle =
|
|
6187
|
+
const toggle = React25.useCallback(
|
|
5370
6188
|
(id) => {
|
|
5371
6189
|
const ref = refs.current[id];
|
|
5372
6190
|
if (!ref) return;
|
|
@@ -5375,7 +6193,7 @@ function PanelStack({
|
|
|
5375
6193
|
},
|
|
5376
6194
|
[expandPanel, collapsePanel]
|
|
5377
6195
|
);
|
|
5378
|
-
|
|
6196
|
+
React25.useImperativeHandle(
|
|
5379
6197
|
stackRef,
|
|
5380
6198
|
() => ({
|
|
5381
6199
|
expand: expandPanel,
|
|
@@ -5399,7 +6217,7 @@ function PanelStack({
|
|
|
5399
6217
|
const Icon = section.icon;
|
|
5400
6218
|
const isCollapsed = collapsed[section.id];
|
|
5401
6219
|
const flush = index > 0 && (isCollapsed || collapsed[sections[index - 1].id]);
|
|
5402
|
-
return /* @__PURE__ */ jsxs(
|
|
6220
|
+
return /* @__PURE__ */ jsxs(React25.Fragment, { children: [
|
|
5403
6221
|
index > 0 && /* @__PURE__ */ jsx(
|
|
5404
6222
|
ResizableHandle,
|
|
5405
6223
|
{
|
|
@@ -5453,7 +6271,7 @@ function PanelStack({
|
|
|
5453
6271
|
children: [
|
|
5454
6272
|
isCollapsed ? /* @__PURE__ */ jsx(ChevronRight, { className: "h-5 w-5 shrink-0" }) : /* @__PURE__ */ jsx(ChevronDown, { className: "h-5 w-5 shrink-0" }),
|
|
5455
6273
|
Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
5456
|
-
typeof section.title === "string" ? /* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
6274
|
+
typeof section.title === "string" ? /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold uppercase tracking-wide", children: section.title }) : (
|
|
5457
6275
|
// Custom node: rendered as-is so the consumer owns the
|
|
5458
6276
|
// styling (icon, casing, colour, badges…).
|
|
5459
6277
|
/* @__PURE__ */ jsx("span", { className: "flex min-w-0 flex-1 items-center", children: section.title })
|
|
@@ -5495,7 +6313,52 @@ function PanelStack({
|
|
|
5495
6313
|
) })
|
|
5496
6314
|
);
|
|
5497
6315
|
}
|
|
5498
|
-
var
|
|
6316
|
+
var TONE5 = {
|
|
6317
|
+
success: "text-success",
|
|
6318
|
+
muted: "text-muted-foreground",
|
|
6319
|
+
warning: "text-warning",
|
|
6320
|
+
destructive: "text-destructive"
|
|
6321
|
+
};
|
|
6322
|
+
var DEFAULT_TONE = {
|
|
6323
|
+
touched: "success",
|
|
6324
|
+
refused: "destructive",
|
|
6325
|
+
denied: "destructive"
|
|
6326
|
+
};
|
|
6327
|
+
var ADDRESS_TONE = {
|
|
6328
|
+
touched: "allowed",
|
|
6329
|
+
refused: "refused",
|
|
6330
|
+
denied: "denied",
|
|
6331
|
+
"never touched": "untouched",
|
|
6332
|
+
miss: "untouched"
|
|
6333
|
+
};
|
|
6334
|
+
var ParticipantRow = React25.forwardRef(({ address, verdict, note, tone, addressTone, className, ...props }, ref) => {
|
|
6335
|
+
const resolved = tone ?? DEFAULT_TONE[verdict] ?? "muted";
|
|
6336
|
+
return /* @__PURE__ */ jsxs(
|
|
6337
|
+
"div",
|
|
6338
|
+
{
|
|
6339
|
+
ref,
|
|
6340
|
+
className: cn(
|
|
6341
|
+
"flex min-w-0 items-baseline gap-2 border-border/55 border-t py-1 first:border-t-0",
|
|
6342
|
+
className
|
|
6343
|
+
),
|
|
6344
|
+
...props,
|
|
6345
|
+
children: [
|
|
6346
|
+
/* @__PURE__ */ jsx(
|
|
6347
|
+
AddressChip,
|
|
6348
|
+
{
|
|
6349
|
+
address,
|
|
6350
|
+
tone: addressTone ?? ADDRESS_TONE[verdict] ?? "allowed",
|
|
6351
|
+
className: "min-w-0 flex-1"
|
|
6352
|
+
}
|
|
6353
|
+
),
|
|
6354
|
+
/* @__PURE__ */ jsx("span", { className: cn("shrink-0 text-sm", TONE5[resolved]), children: verdict }),
|
|
6355
|
+
note != null ? /* @__PURE__ */ jsx("span", { className: "max-w-[18rem] shrink-0 truncate text-sm text-muted-foreground", children: note }) : null
|
|
6356
|
+
]
|
|
6357
|
+
}
|
|
6358
|
+
);
|
|
6359
|
+
});
|
|
6360
|
+
ParticipantRow.displayName = "ParticipantRow";
|
|
6361
|
+
var PropertyList = React25.forwardRef(
|
|
5499
6362
|
({ labelWidth = 78, className, style, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5500
6363
|
"dl",
|
|
5501
6364
|
{
|
|
@@ -5511,7 +6374,7 @@ var PropertyList = React23.forwardRef(
|
|
|
5511
6374
|
)
|
|
5512
6375
|
);
|
|
5513
6376
|
PropertyList.displayName = "PropertyList";
|
|
5514
|
-
var PropertyRow =
|
|
6377
|
+
var PropertyRow = React25.forwardRef(
|
|
5515
6378
|
({ label, mono, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5516
6379
|
"div",
|
|
5517
6380
|
{
|
|
@@ -5519,14 +6382,14 @@ var PropertyRow = React23.forwardRef(
|
|
|
5519
6382
|
className: cn("flex items-baseline gap-2 py-1", className),
|
|
5520
6383
|
...props,
|
|
5521
6384
|
children: [
|
|
5522
|
-
/* @__PURE__ */ jsx("dt", { className: "shrink-0 truncate text-
|
|
5523
|
-
/* @__PURE__ */ jsx("dd", { className: cn("min-w-0 flex-1", mono && "font-mono text-
|
|
6385
|
+
/* @__PURE__ */ jsx("dt", { className: "shrink-0 truncate text-sm text-muted-foreground [width:var(--property-label-width,78px)]", children: label }),
|
|
6386
|
+
/* @__PURE__ */ jsx("dd", { className: cn("min-w-0 flex-1", mono && "font-mono text-sm"), children })
|
|
5524
6387
|
]
|
|
5525
6388
|
}
|
|
5526
6389
|
)
|
|
5527
6390
|
);
|
|
5528
6391
|
PropertyRow.displayName = "PropertyRow";
|
|
5529
|
-
var ProposalCard =
|
|
6392
|
+
var ProposalCard = React25.forwardRef(
|
|
5530
6393
|
({
|
|
5531
6394
|
title,
|
|
5532
6395
|
source,
|
|
@@ -5542,23 +6405,23 @@ var ProposalCard = React23.forwardRef(
|
|
|
5542
6405
|
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-1", children: [
|
|
5543
6406
|
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
5544
6407
|
/* @__PURE__ */ jsx("h4", { className: "font-medium", children: title }),
|
|
5545
|
-
source != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
6408
|
+
source != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: source }) : null
|
|
5546
6409
|
] }),
|
|
5547
6410
|
/* @__PURE__ */ jsx("div", { className: "border border-border bg-muted/30 p-2", children })
|
|
5548
6411
|
] }),
|
|
5549
6412
|
evidence ? /* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-1", children: [
|
|
5550
6413
|
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
5551
6414
|
/* @__PURE__ */ jsx("h4", { className: "font-medium", children: evidenceTitle }),
|
|
5552
|
-
evidenceMeta != null ? /* @__PURE__ */ jsx("span", { className: "text-
|
|
6415
|
+
evidenceMeta != null ? /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: evidenceMeta }) : null
|
|
5553
6416
|
] }),
|
|
5554
6417
|
/* @__PURE__ */ jsx("div", { className: "overflow-hidden border border-border", children: evidence })
|
|
5555
6418
|
] }) : null,
|
|
5556
|
-
consequence != null ? /* @__PURE__ */ jsx("p", { className: "text-
|
|
6419
|
+
consequence != null ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: consequence }) : null,
|
|
5557
6420
|
actions ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-1.5", children: actions }) : null
|
|
5558
6421
|
] })
|
|
5559
6422
|
);
|
|
5560
6423
|
ProposalCard.displayName = "ProposalCard";
|
|
5561
|
-
var DotRating =
|
|
6424
|
+
var DotRating = React25.forwardRef(
|
|
5562
6425
|
({ value, max = 3, onChange, readOnly, label, className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
5563
6426
|
"div",
|
|
5564
6427
|
{
|
|
@@ -5603,7 +6466,7 @@ var DotRating = React23.forwardRef(
|
|
|
5603
6466
|
)
|
|
5604
6467
|
);
|
|
5605
6468
|
DotRating.displayName = "DotRating";
|
|
5606
|
-
var RatingControl =
|
|
6469
|
+
var RatingControl = React25.forwardRef(
|
|
5607
6470
|
({
|
|
5608
6471
|
verdict,
|
|
5609
6472
|
onVerdictChange,
|
|
@@ -5622,7 +6485,7 @@ var RatingControl = React23.forwardRef(
|
|
|
5622
6485
|
className: cn("flex flex-col gap-2 border border-border bg-card p-2", className),
|
|
5623
6486
|
...props,
|
|
5624
6487
|
children: [
|
|
5625
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-
|
|
6488
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
5626
6489
|
/* @__PURE__ */ jsx("span", { className: "font-medium", children: "Your verdict" }),
|
|
5627
6490
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "becomes a Learning" }),
|
|
5628
6491
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
@@ -5637,7 +6500,7 @@ var RatingControl = React23.forwardRef(
|
|
|
5637
6500
|
"aria-checked": verdict === v,
|
|
5638
6501
|
onClick: () => onVerdictChange?.(v),
|
|
5639
6502
|
className: cn(
|
|
5640
|
-
"h-[22px] px-2 text-
|
|
6503
|
+
"h-[22px] px-2 text-sm capitalize",
|
|
5641
6504
|
verdict === v ? v === "appreciate" ? "bg-success text-success-foreground" : "bg-warning text-warning-foreground" : "text-muted-foreground hover:bg-accent"
|
|
5642
6505
|
),
|
|
5643
6506
|
children: v
|
|
@@ -5645,11 +6508,11 @@ var RatingControl = React23.forwardRef(
|
|
|
5645
6508
|
v
|
|
5646
6509
|
)) }),
|
|
5647
6510
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
5648
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
6511
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "weight" }),
|
|
5649
6512
|
/* @__PURE__ */ jsx(DotRating, { value: weight, max: maxWeight, onChange: onWeightChange }),
|
|
5650
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
6513
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm tabular-nums", children: weight })
|
|
5651
6514
|
] }),
|
|
5652
|
-
refines != null ? /* @__PURE__ */ jsxs("span", { className: "text-
|
|
6515
|
+
refines != null ? /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground", children: [
|
|
5653
6516
|
"refines ",
|
|
5654
6517
|
/* @__PURE__ */ jsx("span", { className: "text-foreground", children: refines })
|
|
5655
6518
|
] }) : null
|
|
@@ -5660,7 +6523,7 @@ var RatingControl = React23.forwardRef(
|
|
|
5660
6523
|
)
|
|
5661
6524
|
);
|
|
5662
6525
|
RatingControl.displayName = "RatingControl";
|
|
5663
|
-
var RecordHeader =
|
|
6526
|
+
var RecordHeader = React25.forwardRef(
|
|
5664
6527
|
({ tone, crumbs, chips, actions, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5665
6528
|
"div",
|
|
5666
6529
|
{
|
|
@@ -5674,7 +6537,7 @@ var RecordHeader = React23.forwardRef(
|
|
|
5674
6537
|
tone ? /* @__PURE__ */ jsx(StatusDot, { tone, size: "lg" }) : null,
|
|
5675
6538
|
/* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-1.5", children: crumbs.map((crumb, i) => {
|
|
5676
6539
|
const last = i === crumbs.length - 1;
|
|
5677
|
-
return /* @__PURE__ */ jsxs(
|
|
6540
|
+
return /* @__PURE__ */ jsxs(React25.Fragment, { children: [
|
|
5678
6541
|
i > 0 ? /* @__PURE__ */ jsx(
|
|
5679
6542
|
ChevronRight,
|
|
5680
6543
|
{
|
|
@@ -5686,8 +6549,13 @@ var RecordHeader = React23.forwardRef(
|
|
|
5686
6549
|
"span",
|
|
5687
6550
|
{
|
|
5688
6551
|
className: cn(
|
|
5689
|
-
"
|
|
5690
|
-
last
|
|
6552
|
+
"truncate font-mono",
|
|
6553
|
+
// The **last** crumb gives way first. It is the record's own
|
|
6554
|
+
// name and the longest of them, and the reader is already on
|
|
6555
|
+
// it; the parents are what say *which dashboard this is*, and
|
|
6556
|
+
// at four characters `runs` truncated to `ru…` leaves the one
|
|
6557
|
+
// question a crumb trail exists to answer unanswered.
|
|
6558
|
+
last ? "min-w-[6ch] shrink-[999] text-base font-semibold text-foreground" : "min-w-[3ch] text-muted-foreground"
|
|
5691
6559
|
),
|
|
5692
6560
|
children: crumb
|
|
5693
6561
|
}
|
|
@@ -5701,13 +6569,61 @@ var RecordHeader = React23.forwardRef(
|
|
|
5701
6569
|
)
|
|
5702
6570
|
);
|
|
5703
6571
|
RecordHeader.displayName = "RecordHeader";
|
|
5704
|
-
var
|
|
6572
|
+
var RecordPager = React25.forwardRef(
|
|
6573
|
+
({
|
|
6574
|
+
position,
|
|
6575
|
+
onPrevious,
|
|
6576
|
+
onNext,
|
|
6577
|
+
previousLabel = "Previous",
|
|
6578
|
+
nextLabel = "Next",
|
|
6579
|
+
className,
|
|
6580
|
+
...props
|
|
6581
|
+
}, ref) => /* @__PURE__ */ jsxs(
|
|
6582
|
+
"div",
|
|
6583
|
+
{
|
|
6584
|
+
ref,
|
|
6585
|
+
className: cn("flex items-center gap-1.5", className),
|
|
6586
|
+
...props,
|
|
6587
|
+
children: [
|
|
6588
|
+
position != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: position }) : null,
|
|
6589
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center", children: [
|
|
6590
|
+
/* @__PURE__ */ jsx(
|
|
6591
|
+
Button,
|
|
6592
|
+
{
|
|
6593
|
+
type: "button",
|
|
6594
|
+
variant: "ghost",
|
|
6595
|
+
size: "icon-xs",
|
|
6596
|
+
"aria-label": previousLabel,
|
|
6597
|
+
disabled: !onPrevious,
|
|
6598
|
+
onClick: onPrevious,
|
|
6599
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { "aria-hidden": true })
|
|
6600
|
+
}
|
|
6601
|
+
),
|
|
6602
|
+
/* @__PURE__ */ jsx(
|
|
6603
|
+
Button,
|
|
6604
|
+
{
|
|
6605
|
+
type: "button",
|
|
6606
|
+
variant: "ghost",
|
|
6607
|
+
size: "icon-xs",
|
|
6608
|
+
"aria-label": nextLabel,
|
|
6609
|
+
disabled: !onNext,
|
|
6610
|
+
onClick: onNext,
|
|
6611
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { "aria-hidden": true })
|
|
6612
|
+
}
|
|
6613
|
+
)
|
|
6614
|
+
] })
|
|
6615
|
+
]
|
|
6616
|
+
}
|
|
6617
|
+
)
|
|
6618
|
+
);
|
|
6619
|
+
RecordPager.displayName = "RecordPager";
|
|
6620
|
+
var RepairNote = React25.forwardRef(
|
|
5705
6621
|
({ from, to, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5706
6622
|
"div",
|
|
5707
6623
|
{
|
|
5708
6624
|
ref,
|
|
5709
6625
|
className: cn(
|
|
5710
|
-
"flex flex-wrap items-center gap-1 py-0.5 pl-4 text-
|
|
6626
|
+
"flex flex-wrap items-center gap-1 py-0.5 pl-4 text-sm text-muted-foreground",
|
|
5711
6627
|
className
|
|
5712
6628
|
),
|
|
5713
6629
|
...props,
|
|
@@ -5720,13 +6636,13 @@ var RepairNote = React23.forwardRef(
|
|
|
5720
6636
|
)
|
|
5721
6637
|
);
|
|
5722
6638
|
RepairNote.displayName = "RepairNote";
|
|
5723
|
-
var RetryNote =
|
|
6639
|
+
var RetryNote = React25.forwardRef(
|
|
5724
6640
|
({ attempt, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
5725
6641
|
"div",
|
|
5726
6642
|
{
|
|
5727
6643
|
ref,
|
|
5728
6644
|
className: cn(
|
|
5729
|
-
"flex flex-wrap items-baseline gap-1.5 py-0.5 pl-4 text-
|
|
6645
|
+
"flex flex-wrap items-baseline gap-1.5 py-0.5 pl-4 text-sm text-muted-foreground",
|
|
5730
6646
|
className
|
|
5731
6647
|
),
|
|
5732
6648
|
...props,
|
|
@@ -5746,7 +6662,7 @@ function OptionRow({ option }) {
|
|
|
5746
6662
|
/* @__PURE__ */ jsx("span", { className: "truncate", children: option.label }),
|
|
5747
6663
|
option.badge != null && /* @__PURE__ */ jsx("span", { className: "ml-auto pl-2", children: option.badge })
|
|
5748
6664
|
] }),
|
|
5749
|
-
option.description != null && /* @__PURE__ */ jsx("span", { className: "text-
|
|
6665
|
+
option.description != null && /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: option.description })
|
|
5750
6666
|
] });
|
|
5751
6667
|
}
|
|
5752
6668
|
function RichSelect({
|
|
@@ -5887,7 +6803,7 @@ function describeSlice(select, declared) {
|
|
|
5887
6803
|
}
|
|
5888
6804
|
return out;
|
|
5889
6805
|
}
|
|
5890
|
-
var SliceSummary =
|
|
6806
|
+
var SliceSummary = React25.forwardRef(
|
|
5891
6807
|
({ select, declaredAxes, modelLabel, variant = "line", className, ...props }, ref) => {
|
|
5892
6808
|
const lines = select ? describeSlice(select, declaredAxes) : [];
|
|
5893
6809
|
if (!lines.length) {
|
|
@@ -5895,7 +6811,7 @@ var SliceSummary = React23.forwardRef(
|
|
|
5895
6811
|
"div",
|
|
5896
6812
|
{
|
|
5897
6813
|
ref,
|
|
5898
|
-
className: cn("text-
|
|
6814
|
+
className: cn("text-sm text-muted-foreground/70", className),
|
|
5899
6815
|
...props,
|
|
5900
6816
|
children: "not sliced \u2014 the whole model"
|
|
5901
6817
|
}
|
|
@@ -5916,13 +6832,13 @@ var SliceSummary = React23.forwardRef(
|
|
|
5916
6832
|
"span",
|
|
5917
6833
|
{
|
|
5918
6834
|
className: cn(
|
|
5919
|
-
"truncate text-
|
|
6835
|
+
"truncate text-sm",
|
|
5920
6836
|
line.undeclared ? "text-destructive line-through decoration-destructive/50" : "text-muted-foreground"
|
|
5921
6837
|
),
|
|
5922
6838
|
children: line.text
|
|
5923
6839
|
}
|
|
5924
6840
|
),
|
|
5925
|
-
line.undeclared ? /* @__PURE__ */ jsxs("span", { className: "text-
|
|
6841
|
+
line.undeclared ? /* @__PURE__ */ jsxs("span", { className: "text-sm text-destructive", children: [
|
|
5926
6842
|
modelLabel ?? "this model",
|
|
5927
6843
|
" declares no ",
|
|
5928
6844
|
line.axisKind,
|
|
@@ -5934,7 +6850,7 @@ var SliceSummary = React23.forwardRef(
|
|
|
5934
6850
|
}
|
|
5935
6851
|
);
|
|
5936
6852
|
SliceSummary.displayName = "SliceSummary";
|
|
5937
|
-
var RuleRow =
|
|
6853
|
+
var RuleRow = React25.forwardRef(
|
|
5938
6854
|
({ match, allow, properties, select, egress, readOnly, className, ...props }, ref) => {
|
|
5939
6855
|
const excluded = properties?.exclude ?? [];
|
|
5940
6856
|
const sends = egress?.may_send ?? [];
|
|
@@ -5961,7 +6877,7 @@ var RuleRow = React23.forwardRef(
|
|
|
5961
6877
|
"span",
|
|
5962
6878
|
{
|
|
5963
6879
|
className: cn(
|
|
5964
|
-
"font-mono text-
|
|
6880
|
+
"font-mono text-sm",
|
|
5965
6881
|
allow ? "text-muted-foreground" : "font-semibold text-destructive"
|
|
5966
6882
|
),
|
|
5967
6883
|
children: allow ? "allow" : "deny"
|
|
@@ -5976,12 +6892,12 @@ var RuleRow = React23.forwardRef(
|
|
|
5976
6892
|
}
|
|
5977
6893
|
),
|
|
5978
6894
|
excluded.length || sliced || sends.length ? /* @__PURE__ */ jsxs("div", { className: "col-start-2 flex min-w-0 flex-col gap-0.5", children: [
|
|
5979
|
-
excluded.length ? /* @__PURE__ */ jsxs("span", { className: "truncate text-
|
|
6895
|
+
excluded.length ? /* @__PURE__ */ jsxs("span", { className: "truncate text-sm text-muted-foreground", children: [
|
|
5980
6896
|
"excludes ",
|
|
5981
6897
|
excluded.join(", ")
|
|
5982
6898
|
] }) : null,
|
|
5983
6899
|
sliced ? /* @__PURE__ */ jsx(SliceSummary, { select, variant: "line" }) : null,
|
|
5984
|
-
sends.length ? /* @__PURE__ */ jsxs("span", { className: "truncate text-
|
|
6900
|
+
sends.length ? /* @__PURE__ */ jsxs("span", { className: "truncate text-sm text-muted-foreground", children: [
|
|
5985
6901
|
"may send ",
|
|
5986
6902
|
sends.join(", ")
|
|
5987
6903
|
] }) : null
|
|
@@ -5992,6 +6908,111 @@ var RuleRow = React23.forwardRef(
|
|
|
5992
6908
|
}
|
|
5993
6909
|
);
|
|
5994
6910
|
RuleRow.displayName = "RuleRow";
|
|
6911
|
+
var TONE6 = {
|
|
6912
|
+
queued: "queued",
|
|
6913
|
+
running: "running",
|
|
6914
|
+
succeeded: "success",
|
|
6915
|
+
failed: "error",
|
|
6916
|
+
cancelled: "muted",
|
|
6917
|
+
cannot_answer: "warning",
|
|
6918
|
+
awaiting_approval: "warning",
|
|
6919
|
+
skipped: "muted",
|
|
6920
|
+
held: "muted",
|
|
6921
|
+
purged: "muted"
|
|
6922
|
+
};
|
|
6923
|
+
var TEXT = {
|
|
6924
|
+
running: "text-info",
|
|
6925
|
+
success: "text-success",
|
|
6926
|
+
warning: "text-warning",
|
|
6927
|
+
error: "text-destructive",
|
|
6928
|
+
info: "text-info",
|
|
6929
|
+
queued: "text-muted-foreground",
|
|
6930
|
+
muted: "text-muted-foreground"
|
|
6931
|
+
};
|
|
6932
|
+
var RunStatusText = React25.forwardRef(({ status, tone, dot, label, className, ...props }, ref) => {
|
|
6933
|
+
const resolved = tone ?? TONE6[status] ?? "muted";
|
|
6934
|
+
return /* @__PURE__ */ jsxs(
|
|
6935
|
+
"span",
|
|
6936
|
+
{
|
|
6937
|
+
ref,
|
|
6938
|
+
className: cn(
|
|
6939
|
+
"inline-flex min-w-0 items-center gap-1.5",
|
|
6940
|
+
TEXT[resolved],
|
|
6941
|
+
className
|
|
6942
|
+
),
|
|
6943
|
+
...props,
|
|
6944
|
+
children: [
|
|
6945
|
+
dot ? /* @__PURE__ */ jsx(StatusDot, { tone: resolved }) : null,
|
|
6946
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: label ?? status })
|
|
6947
|
+
]
|
|
6948
|
+
}
|
|
6949
|
+
);
|
|
6950
|
+
});
|
|
6951
|
+
RunStatusText.displayName = "RunStatusText";
|
|
6952
|
+
var RunRow = React25.forwardRef(
|
|
6953
|
+
({
|
|
6954
|
+
status,
|
|
6955
|
+
tone,
|
|
6956
|
+
kind,
|
|
6957
|
+
address,
|
|
6958
|
+
title,
|
|
6959
|
+
meta,
|
|
6960
|
+
aside,
|
|
6961
|
+
depth = 0,
|
|
6962
|
+
selected,
|
|
6963
|
+
onSelect,
|
|
6964
|
+
className,
|
|
6965
|
+
...props
|
|
6966
|
+
}, ref) => {
|
|
6967
|
+
const Row = onSelect ? "button" : "div";
|
|
6968
|
+
return /* @__PURE__ */ jsx(
|
|
6969
|
+
"div",
|
|
6970
|
+
{
|
|
6971
|
+
ref,
|
|
6972
|
+
className: cn(
|
|
6973
|
+
"border-b border-border/55",
|
|
6974
|
+
selected && "bg-accent shadow-[inset_2px_0_0_var(--color-primary)]",
|
|
6975
|
+
className
|
|
6976
|
+
),
|
|
6977
|
+
...props,
|
|
6978
|
+
children: /* @__PURE__ */ jsxs(
|
|
6979
|
+
Row,
|
|
6980
|
+
{
|
|
6981
|
+
type: onSelect ? "button" : void 0,
|
|
6982
|
+
onClick: onSelect,
|
|
6983
|
+
"aria-current": onSelect && selected ? "true" : void 0,
|
|
6984
|
+
style: { paddingLeft: 12 + depth * 18 },
|
|
6985
|
+
className: cn(
|
|
6986
|
+
"flex w-full items-start gap-2 py-1.5 pr-3 text-left",
|
|
6987
|
+
onSelect && "cursor-pointer hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-ring"
|
|
6988
|
+
),
|
|
6989
|
+
children: [
|
|
6990
|
+
/* @__PURE__ */ jsx(
|
|
6991
|
+
StatusDot,
|
|
6992
|
+
{
|
|
6993
|
+
tone: tone ?? TONE6[status] ?? "muted",
|
|
6994
|
+
size: "md",
|
|
6995
|
+
className: "mt-1.5",
|
|
6996
|
+
label: typeof status === "string" ? status : void 0
|
|
6997
|
+
}
|
|
6998
|
+
),
|
|
6999
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
7000
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
7001
|
+
kind ? /* @__PURE__ */ jsx(KindChip, { kind }) : null,
|
|
7002
|
+
address != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono", children: address }) : null,
|
|
7003
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: title })
|
|
7004
|
+
] }),
|
|
7005
|
+
meta != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-muted-foreground", children: meta }) : null
|
|
7006
|
+
] }),
|
|
7007
|
+
aside != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 pt-0.5 text-sm text-muted-foreground", children: aside }) : null
|
|
7008
|
+
]
|
|
7009
|
+
}
|
|
7010
|
+
)
|
|
7011
|
+
}
|
|
7012
|
+
);
|
|
7013
|
+
}
|
|
7014
|
+
);
|
|
7015
|
+
RunRow.displayName = "RunRow";
|
|
5995
7016
|
var SearchInput = ({
|
|
5996
7017
|
value,
|
|
5997
7018
|
onChange,
|
|
@@ -6011,14 +7032,14 @@ var SearchInput = ({
|
|
|
6011
7032
|
"flex w-full rounded-control border border-input bg-background ring-offset-background",
|
|
6012
7033
|
"placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2",
|
|
6013
7034
|
"focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
6014
|
-
inputSize === "sm" ? "h-[26px] px-2 py-0 text-
|
|
7035
|
+
inputSize === "sm" ? "h-[26px] px-2 py-0 text-sm" : "h-10 px-3 py-2 text-base",
|
|
6015
7036
|
className
|
|
6016
7037
|
),
|
|
6017
7038
|
...props
|
|
6018
7039
|
}
|
|
6019
7040
|
);
|
|
6020
7041
|
};
|
|
6021
|
-
var SectionHeader =
|
|
7042
|
+
var SectionHeader = React25.forwardRef(({ icon, title, count, actions, bare, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
6022
7043
|
"div",
|
|
6023
7044
|
{
|
|
6024
7045
|
ref,
|
|
@@ -6031,13 +7052,13 @@ var SectionHeader = React23.forwardRef(({ icon, title, count, actions, bare, cla
|
|
|
6031
7052
|
children: [
|
|
6032
7053
|
icon ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center text-muted-foreground [&_svg]:size-3.5", children: icon }) : null,
|
|
6033
7054
|
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate font-medium", children: title }),
|
|
6034
|
-
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
7055
|
+
count != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: count }) : null,
|
|
6035
7056
|
actions ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center gap-1", children: actions }) : null
|
|
6036
7057
|
]
|
|
6037
7058
|
}
|
|
6038
7059
|
));
|
|
6039
7060
|
SectionHeader.displayName = "SectionHeader";
|
|
6040
|
-
var Sparkline =
|
|
7061
|
+
var Sparkline = React25.forwardRef(
|
|
6041
7062
|
({
|
|
6042
7063
|
values,
|
|
6043
7064
|
width = 72,
|
|
@@ -6124,7 +7145,7 @@ function TabbedPanel({
|
|
|
6124
7145
|
footerClassName,
|
|
6125
7146
|
footerContent
|
|
6126
7147
|
}) {
|
|
6127
|
-
const [internalTab, setInternalTab] =
|
|
7148
|
+
const [internalTab, setInternalTab] = React25__default.useState(defaultTab || tabs[0]?.value);
|
|
6128
7149
|
const currentTab = activeTab !== void 0 ? activeTab : internalTab;
|
|
6129
7150
|
const handleTabChange = (value) => {
|
|
6130
7151
|
if (activeTab === void 0) {
|
|
@@ -6132,9 +7153,9 @@ function TabbedPanel({
|
|
|
6132
7153
|
}
|
|
6133
7154
|
onTabChange?.(value);
|
|
6134
7155
|
};
|
|
6135
|
-
const uid =
|
|
7156
|
+
const uid = React25__default.useId();
|
|
6136
7157
|
const panelId = (value) => `${uid}-panel-${value}`;
|
|
6137
|
-
const items =
|
|
7158
|
+
const items = React25__default.useMemo(
|
|
6138
7159
|
() => tabs.map((tab) => ({
|
|
6139
7160
|
key: tab.value,
|
|
6140
7161
|
name: tab.name ?? (typeof tab.label === "string" ? tab.label : tab.value),
|
|
@@ -6220,9 +7241,9 @@ var STATUS_LABEL = {
|
|
|
6220
7241
|
};
|
|
6221
7242
|
function renderResult(result) {
|
|
6222
7243
|
if (result == null) return null;
|
|
6223
|
-
if (
|
|
7244
|
+
if (React25.isValidElement(result)) return result;
|
|
6224
7245
|
if (typeof result !== "object") {
|
|
6225
|
-
return /* @__PURE__ */ jsx("span", { className: "font-mono text-
|
|
7246
|
+
return /* @__PURE__ */ jsx("span", { className: "font-mono text-sm", children: String(result) });
|
|
6226
7247
|
}
|
|
6227
7248
|
const entries = Object.entries(result);
|
|
6228
7249
|
const scalars = entries.filter(([, v]) => v == null || typeof v !== "object");
|
|
@@ -6230,12 +7251,12 @@ function renderResult(result) {
|
|
|
6230
7251
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6231
7252
|
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,
|
|
6232
7253
|
nested.map(([k, v]) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
|
|
6233
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
6234
|
-
/* @__PURE__ */ jsx("pre", { className: "max-h-40 overflow-auto border border-border bg-muted/40 p-1.5 font-mono text-
|
|
7254
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: k }),
|
|
7255
|
+
/* @__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) })
|
|
6235
7256
|
] }, k))
|
|
6236
7257
|
] });
|
|
6237
7258
|
}
|
|
6238
|
-
var TaskGanttDetailCard =
|
|
7259
|
+
var TaskGanttDetailCard = React25.forwardRef(({ task, elapsedMs, formatDuration = defaultFormatDuration, className, ...props }, ref) => {
|
|
6239
7260
|
const status = task.status ?? "succeeded";
|
|
6240
7261
|
const ms = task.durationMs ?? elapsedMs;
|
|
6241
7262
|
const duration = task.duration ?? (ms != null ? formatDuration(ms) : "\u2014");
|
|
@@ -6243,17 +7264,17 @@ var TaskGanttDetailCard = React23.forwardRef(({ task, elapsedMs, formatDuration
|
|
|
6243
7264
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-2", className), ...props, children: [
|
|
6244
7265
|
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
6245
7266
|
/* @__PURE__ */ jsx(StatusDot, { tone: DOT[status], size: "md", className: "translate-y-px" }),
|
|
6246
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-
|
|
6247
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono text-
|
|
7267
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-sm font-medium", children: task.key }),
|
|
7268
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 font-mono text-sm text-muted-foreground tabular-nums", children: duration })
|
|
6248
7269
|
] }),
|
|
6249
|
-
/* @__PURE__ */ jsxs("div", { className: "text-
|
|
7270
|
+
/* @__PURE__ */ jsxs("div", { className: "text-sm text-muted-foreground", children: [
|
|
6250
7271
|
STATUS_LABEL[status],
|
|
6251
7272
|
task.summary != null ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6252
7273
|
" \xB7 ",
|
|
6253
7274
|
task.summary
|
|
6254
7275
|
] }) : null
|
|
6255
7276
|
] }),
|
|
6256
|
-
attempts.length ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0.5", children: attempts.map((a, i) => /* @__PURE__ */ jsxs("span", { className: "text-
|
|
7277
|
+
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: [
|
|
6257
7278
|
/* @__PURE__ */ jsxs("span", { className: "font-medium text-warning", children: [
|
|
6258
7279
|
"attempt ",
|
|
6259
7280
|
i + 1
|
|
@@ -6267,14 +7288,14 @@ var TaskGanttDetailCard = React23.forwardRef(({ task, elapsedMs, formatDuration
|
|
|
6267
7288
|
style: { borderColor: "var(--color-destructive)" },
|
|
6268
7289
|
className: "border-l-2 bg-destructive/10 px-2 py-1.5",
|
|
6269
7290
|
children: [
|
|
6270
|
-
task.error.code != null ? /* @__PURE__ */ jsx("div", { className: "font-mono text-
|
|
6271
|
-
task.error.message != null ? /* @__PURE__ */ jsx("div", { className: "text-
|
|
6272
|
-
task.error.detail != null ? /* @__PURE__ */ jsx("pre", { className: "mt-1 max-h-32 overflow-auto whitespace-pre-wrap font-mono text-
|
|
7291
|
+
task.error.code != null ? /* @__PURE__ */ jsx("div", { className: "font-mono text-sm font-medium text-destructive", children: task.error.code }) : null,
|
|
7292
|
+
task.error.message != null ? /* @__PURE__ */ jsx("div", { className: "text-sm", children: task.error.message }) : null,
|
|
7293
|
+
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
|
|
6273
7294
|
]
|
|
6274
7295
|
}
|
|
6275
7296
|
) : null,
|
|
6276
7297
|
task.result != null ? renderResult(task.result) : null,
|
|
6277
|
-
task.log != null ? /* @__PURE__ */ jsx("div", { className: "border-t border-border pt-1.5 font-mono text-
|
|
7298
|
+
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
|
|
6278
7299
|
] });
|
|
6279
7300
|
});
|
|
6280
7301
|
TaskGanttDetailCard.displayName = "TaskGanttDetailCard";
|
|
@@ -6301,7 +7322,7 @@ function place(seg, origin) {
|
|
|
6301
7322
|
}
|
|
6302
7323
|
return { start, duration: duration != null && duration > 0 ? duration : 0 };
|
|
6303
7324
|
}
|
|
6304
|
-
var TaskGantt =
|
|
7325
|
+
var TaskGantt = React25.forwardRef(
|
|
6305
7326
|
({
|
|
6306
7327
|
tasks,
|
|
6307
7328
|
origin,
|
|
@@ -6323,7 +7344,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
6323
7344
|
}, ref) => {
|
|
6324
7345
|
const barHeight = density === "compact" ? 11 : 13;
|
|
6325
7346
|
const durationWidth = 40;
|
|
6326
|
-
const rows =
|
|
7347
|
+
const rows = React25.useMemo(() => {
|
|
6327
7348
|
const stamps = [];
|
|
6328
7349
|
for (const t of [...tasks, ...tasks.flatMap((t2) => t2.attempts ?? [])]) {
|
|
6329
7350
|
if (t.startedAt != null) stamps.push(toMs(t.startedAt));
|
|
@@ -6369,7 +7390,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
6369
7390
|
/* @__PURE__ */ jsx("span", { className: "flex flex-1", children: axis.slice(0, -1).map((label, i) => /* @__PURE__ */ jsx(
|
|
6370
7391
|
"span",
|
|
6371
7392
|
{
|
|
6372
|
-
className: "flex-1 border-l border-border pl-1 text-
|
|
7393
|
+
className: "flex-1 border-l border-border pl-1 text-sm text-muted-foreground tabular-nums",
|
|
6373
7394
|
children: label
|
|
6374
7395
|
},
|
|
6375
7396
|
i
|
|
@@ -6377,7 +7398,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
6377
7398
|
/* @__PURE__ */ jsx(
|
|
6378
7399
|
"span",
|
|
6379
7400
|
{
|
|
6380
|
-
className: "shrink-0 text-right text-
|
|
7401
|
+
className: "shrink-0 text-right text-sm text-muted-foreground tabular-nums",
|
|
6381
7402
|
style: { width: durationWidth },
|
|
6382
7403
|
children: lastLabel
|
|
6383
7404
|
}
|
|
@@ -6395,7 +7416,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
6395
7416
|
"span",
|
|
6396
7417
|
{
|
|
6397
7418
|
className: cn(
|
|
6398
|
-
"shrink-0 truncate font-mono text-
|
|
7419
|
+
"shrink-0 truncate font-mono text-sm",
|
|
6399
7420
|
neverRan && "text-muted-foreground"
|
|
6400
7421
|
),
|
|
6401
7422
|
style: { width: labelWidth },
|
|
@@ -6436,7 +7457,7 @@ var TaskGantt = React23.forwardRef(
|
|
|
6436
7457
|
/* @__PURE__ */ jsx(
|
|
6437
7458
|
"span",
|
|
6438
7459
|
{
|
|
6439
|
-
className: "shrink-0 text-right font-mono text-
|
|
7460
|
+
className: "shrink-0 text-right font-mono text-sm text-muted-foreground tabular-nums",
|
|
6440
7461
|
style: { width: durationWidth },
|
|
6441
7462
|
children: duration
|
|
6442
7463
|
}
|
|
@@ -6484,8 +7505,23 @@ var TaskGantt = React23.forwardRef(
|
|
|
6484
7505
|
}
|
|
6485
7506
|
);
|
|
6486
7507
|
TaskGantt.displayName = "TaskGantt";
|
|
6487
|
-
var TaskNode =
|
|
6488
|
-
({
|
|
7508
|
+
var TaskNode = React25.forwardRef(
|
|
7509
|
+
({
|
|
7510
|
+
taskKey,
|
|
7511
|
+
bound,
|
|
7512
|
+
boundSwatch,
|
|
7513
|
+
boundPalette,
|
|
7514
|
+
status,
|
|
7515
|
+
tags,
|
|
7516
|
+
meta,
|
|
7517
|
+
selected,
|
|
7518
|
+
readOnly,
|
|
7519
|
+
gate,
|
|
7520
|
+
dim,
|
|
7521
|
+
ghost,
|
|
7522
|
+
className,
|
|
7523
|
+
...props
|
|
7524
|
+
}, ref) => {
|
|
6489
7525
|
if (ghost) {
|
|
6490
7526
|
return /* @__PURE__ */ jsxs(
|
|
6491
7527
|
"div",
|
|
@@ -6493,7 +7529,7 @@ var TaskNode = React23.forwardRef(
|
|
|
6493
7529
|
ref,
|
|
6494
7530
|
className: cn(
|
|
6495
7531
|
"flex w-[146px] flex-col gap-1 border border-dashed border-border p-2",
|
|
6496
|
-
"text-
|
|
7532
|
+
"text-sm text-muted-foreground",
|
|
6497
7533
|
className
|
|
6498
7534
|
),
|
|
6499
7535
|
...props,
|
|
@@ -6519,7 +7555,7 @@ var TaskNode = React23.forwardRef(
|
|
|
6519
7555
|
),
|
|
6520
7556
|
...props,
|
|
6521
7557
|
children: [
|
|
6522
|
-
selected ? ["-left-1 -top-1", "-right-1 -top-1", "-bottom-1 -left-1", "-bottom-1 -right-1"].map(
|
|
7558
|
+
selected && !readOnly ? ["-left-1 -top-1", "-right-1 -top-1", "-bottom-1 -left-1", "-bottom-1 -right-1"].map(
|
|
6523
7559
|
(pos) => /* @__PURE__ */ jsx(
|
|
6524
7560
|
"span",
|
|
6525
7561
|
{
|
|
@@ -6534,12 +7570,12 @@ var TaskNode = React23.forwardRef(
|
|
|
6534
7570
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate font-mono", children: taskKey })
|
|
6535
7571
|
] }),
|
|
6536
7572
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
6537
|
-
/* @__PURE__ */ jsx(BoundChip, { bound }),
|
|
7573
|
+
/* @__PURE__ */ jsx(BoundChip, { bound, swatch: boundSwatch, palette: boundPalette }),
|
|
6538
7574
|
tags?.map((tag, i) => /* @__PURE__ */ jsx(
|
|
6539
7575
|
"span",
|
|
6540
7576
|
{
|
|
6541
7577
|
className: cn(
|
|
6542
|
-
"shrink-0 border px-1 text-
|
|
7578
|
+
"shrink-0 border px-1 text-sm",
|
|
6543
7579
|
tag.tone === "warning" ? "border-warning/40 text-warning" : "border-border text-muted-foreground"
|
|
6544
7580
|
),
|
|
6545
7581
|
children: tag.label
|
|
@@ -6551,7 +7587,7 @@ var TaskNode = React23.forwardRef(
|
|
|
6551
7587
|
"div",
|
|
6552
7588
|
{
|
|
6553
7589
|
className: cn(
|
|
6554
|
-
"truncate text-
|
|
7590
|
+
"truncate text-sm",
|
|
6555
7591
|
gate ? "text-warning" : "text-muted-foreground"
|
|
6556
7592
|
),
|
|
6557
7593
|
children: meta
|
|
@@ -6563,14 +7599,14 @@ var TaskNode = React23.forwardRef(
|
|
|
6563
7599
|
}
|
|
6564
7600
|
);
|
|
6565
7601
|
TaskNode.displayName = "TaskNode";
|
|
6566
|
-
var TemplatePicker =
|
|
7602
|
+
var TemplatePicker = React25.forwardRef(({ heading, options, value, onSelect, footnote, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
6567
7603
|
"div",
|
|
6568
7604
|
{
|
|
6569
7605
|
ref,
|
|
6570
7606
|
className: cn("flex w-full flex-col border border-border bg-card", className),
|
|
6571
7607
|
...props,
|
|
6572
7608
|
children: [
|
|
6573
|
-
heading != null ? /* @__PURE__ */ jsx("div", { className: "flex h-6 shrink-0 items-center border-b border-border px-2 text-
|
|
7609
|
+
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,
|
|
6574
7610
|
/* @__PURE__ */ jsx("div", { role: "listbox", className: "flex flex-col", children: options.map((o) => {
|
|
6575
7611
|
const disabled = o.unavailable != null;
|
|
6576
7612
|
const selected = value === o.id;
|
|
@@ -6589,16 +7625,16 @@ var TemplatePicker = React23.forwardRef(({ heading, options, value, onSelect, fo
|
|
|
6589
7625
|
),
|
|
6590
7626
|
children: [
|
|
6591
7627
|
/* @__PURE__ */ jsx("span", { className: "w-3 shrink-0 text-primary", children: selected ? "\u2022" : "" }),
|
|
6592
|
-
/* @__PURE__ */ jsx("span", { className: "truncate font-mono text-
|
|
6593
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-
|
|
7628
|
+
/* @__PURE__ */ jsx("span", { className: "truncate font-mono text-sm", children: o.id }),
|
|
7629
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm text-muted-foreground", children: o.kind }),
|
|
6594
7630
|
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
6595
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 truncate text-
|
|
7631
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 truncate text-sm text-muted-foreground", children: o.unavailable ?? o.note })
|
|
6596
7632
|
]
|
|
6597
7633
|
},
|
|
6598
7634
|
o.id
|
|
6599
7635
|
);
|
|
6600
7636
|
}) }),
|
|
6601
|
-
footnote != null ? /* @__PURE__ */ jsx("div", { className: "border-t border-border px-2 py-1 text-
|
|
7637
|
+
footnote != null ? /* @__PURE__ */ jsx("div", { className: "border-t border-border px-2 py-1 text-sm text-muted-foreground", children: footnote }) : null
|
|
6602
7638
|
]
|
|
6603
7639
|
}
|
|
6604
7640
|
));
|
|
@@ -6614,14 +7650,14 @@ var MARKER = {
|
|
|
6614
7650
|
output: "\u2192",
|
|
6615
7651
|
comment: "#"
|
|
6616
7652
|
};
|
|
6617
|
-
var Terminal =
|
|
7653
|
+
var Terminal = React25.forwardRef(
|
|
6618
7654
|
({ cursor, columnTemplate = "150px minmax(0,1fr) auto auto", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
6619
7655
|
"div",
|
|
6620
7656
|
{
|
|
6621
7657
|
ref,
|
|
6622
7658
|
style: { "--terminal-cols": columnTemplate },
|
|
6623
7659
|
className: cn(
|
|
6624
|
-
"overflow-x-auto border border-border bg-muted/40 p-2 font-mono text-
|
|
7660
|
+
"overflow-x-auto border border-border bg-muted/40 p-2 font-mono text-sm",
|
|
6625
7661
|
className
|
|
6626
7662
|
),
|
|
6627
7663
|
...props,
|
|
@@ -6639,7 +7675,7 @@ var Terminal = React23.forwardRef(
|
|
|
6639
7675
|
)
|
|
6640
7676
|
);
|
|
6641
7677
|
Terminal.displayName = "Terminal";
|
|
6642
|
-
var TerminalLine =
|
|
7678
|
+
var TerminalLine = React25.forwardRef(
|
|
6643
7679
|
({ kind = "output", level, levelColumn = 1, columns, className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
6644
7680
|
"div",
|
|
6645
7681
|
{
|
|
@@ -6670,7 +7706,7 @@ var TerminalLine = React23.forwardRef(
|
|
|
6670
7706
|
"min-w-0 truncate",
|
|
6671
7707
|
// A log tints its level cell and greys everything that is not the
|
|
6672
7708
|
// message; a transcript greys only its trailing cell.
|
|
6673
|
-
level ? i === levelColumn ? LEVEL[level] : i === columns.length - 1 ? void 0 : "text-muted-foreground" : i === columns.length - 1 && "text-muted-foreground"
|
|
7709
|
+
level ? i === levelColumn ? LEVEL[level] ?? "text-muted-foreground" : i === columns.length - 1 ? void 0 : "text-muted-foreground" : i === columns.length - 1 && "text-muted-foreground"
|
|
6674
7710
|
),
|
|
6675
7711
|
children: c
|
|
6676
7712
|
},
|
|
@@ -6681,10 +7717,10 @@ var TerminalLine = React23.forwardRef(
|
|
|
6681
7717
|
)
|
|
6682
7718
|
);
|
|
6683
7719
|
TerminalLine.displayName = "TerminalLine";
|
|
6684
|
-
var TimelineVariantContext =
|
|
7720
|
+
var TimelineVariantContext = React25.createContext("columns");
|
|
6685
7721
|
var RAIL_MARKER_OFFSET = "h-[0.692rem]";
|
|
6686
7722
|
var RAIL_FOOTER_TAIL = "h-[1.067rem]";
|
|
6687
|
-
var TimelineList =
|
|
7723
|
+
var TimelineList = React25.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 }) }));
|
|
6688
7724
|
TimelineList.displayName = "TimelineList";
|
|
6689
7725
|
function RailGutter({ marker }) {
|
|
6690
7726
|
return /* @__PURE__ */ jsxs("span", { className: "flex w-2.5 shrink-0 flex-col items-center", children: [
|
|
@@ -6708,8 +7744,8 @@ function RailGutter({ marker }) {
|
|
|
6708
7744
|
)
|
|
6709
7745
|
] });
|
|
6710
7746
|
}
|
|
6711
|
-
var TimelineEntry =
|
|
6712
|
-
const variant =
|
|
7747
|
+
var TimelineEntry = React25.forwardRef(({ when, title, marker, className, children, ...props }, ref) => {
|
|
7748
|
+
const variant = React25.useContext(TimelineVariantContext);
|
|
6713
7749
|
if (variant === "rail") {
|
|
6714
7750
|
return /* @__PURE__ */ jsxs(
|
|
6715
7751
|
"li",
|
|
@@ -6720,7 +7756,7 @@ var TimelineEntry = React23.forwardRef(({ when, title, marker, className, childr
|
|
|
6720
7756
|
children: [
|
|
6721
7757
|
/* @__PURE__ */ jsx(RailGutter, { marker }),
|
|
6722
7758
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5 pb-4 group-last/entry:pb-0", children: [
|
|
6723
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
7759
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: when }),
|
|
6724
7760
|
title != null ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: title }) : null,
|
|
6725
7761
|
children
|
|
6726
7762
|
] })
|
|
@@ -6735,7 +7771,7 @@ var TimelineEntry = React23.forwardRef(({ when, title, marker, className, childr
|
|
|
6735
7771
|
className: cn("flex gap-2 border-b border-border py-1.5 last:border-b-0", className),
|
|
6736
7772
|
...props,
|
|
6737
7773
|
children: [
|
|
6738
|
-
/* @__PURE__ */ jsxs("span", { className: "flex w-[72px] shrink-0 items-baseline gap-1.5 text-
|
|
7774
|
+
/* @__PURE__ */ jsxs("span", { className: "flex w-[72px] shrink-0 items-baseline gap-1.5 text-sm text-muted-foreground", children: [
|
|
6739
7775
|
marker ? /* @__PURE__ */ jsx("span", { className: "translate-y-1", children: marker }) : null,
|
|
6740
7776
|
/* @__PURE__ */ jsx("span", { className: "truncate", children: when })
|
|
6741
7777
|
] }),
|
|
@@ -6748,8 +7784,8 @@ var TimelineEntry = React23.forwardRef(({ when, title, marker, className, childr
|
|
|
6748
7784
|
);
|
|
6749
7785
|
});
|
|
6750
7786
|
TimelineEntry.displayName = "TimelineEntry";
|
|
6751
|
-
var TimelineFooter =
|
|
6752
|
-
const variant =
|
|
7787
|
+
var TimelineFooter = React25.forwardRef(({ className, children, ...props }, ref) => {
|
|
7788
|
+
const variant = React25.useContext(TimelineVariantContext);
|
|
6753
7789
|
if (variant === "rail") {
|
|
6754
7790
|
return /* @__PURE__ */ jsxs(
|
|
6755
7791
|
"li",
|
|
@@ -6786,6 +7822,66 @@ var Toolbar = () => {
|
|
|
6786
7822
|
/* @__PURE__ */ jsx("div", { children: "Source" })
|
|
6787
7823
|
] });
|
|
6788
7824
|
};
|
|
7825
|
+
var TouchStrip = React25.forwardRef(
|
|
7826
|
+
({ items, palette, className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7827
|
+
"div",
|
|
7828
|
+
{
|
|
7829
|
+
ref,
|
|
7830
|
+
role: "list",
|
|
7831
|
+
className: cn("flex flex-wrap gap-2", className),
|
|
7832
|
+
...props,
|
|
7833
|
+
children: items.map((item) => {
|
|
7834
|
+
const paint = layerPaint(palette, item.layer);
|
|
7835
|
+
return /* @__PURE__ */ jsxs(
|
|
7836
|
+
"div",
|
|
7837
|
+
{
|
|
7838
|
+
role: "listitem",
|
|
7839
|
+
className: cn(
|
|
7840
|
+
"flex min-w-0 flex-1 flex-col gap-px rounded-control border border-border bg-card px-2 py-1",
|
|
7841
|
+
item.dim && "opacity-55"
|
|
7842
|
+
),
|
|
7843
|
+
children: [
|
|
7844
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
7845
|
+
/* @__PURE__ */ jsx(
|
|
7846
|
+
"span",
|
|
7847
|
+
{
|
|
7848
|
+
"aria-hidden": true,
|
|
7849
|
+
className: cn(
|
|
7850
|
+
"size-1.5 shrink-0 rounded-full",
|
|
7851
|
+
item.dim ? "bg-muted-foreground" : paint.swatch
|
|
7852
|
+
)
|
|
7853
|
+
}
|
|
7854
|
+
),
|
|
7855
|
+
/* @__PURE__ */ jsx(
|
|
7856
|
+
"span",
|
|
7857
|
+
{
|
|
7858
|
+
className: cn(
|
|
7859
|
+
"min-w-0 truncate",
|
|
7860
|
+
item.dim && "text-muted-foreground"
|
|
7861
|
+
),
|
|
7862
|
+
children: item.label ?? layerLabel(item.layer)
|
|
7863
|
+
}
|
|
7864
|
+
)
|
|
7865
|
+
] }),
|
|
7866
|
+
item.note != null ? /* @__PURE__ */ jsx(
|
|
7867
|
+
"span",
|
|
7868
|
+
{
|
|
7869
|
+
className: cn(
|
|
7870
|
+
"truncate font-mono text-xs text-muted-foreground",
|
|
7871
|
+
item.refused && "line-through"
|
|
7872
|
+
),
|
|
7873
|
+
children: item.note
|
|
7874
|
+
}
|
|
7875
|
+
) : null
|
|
7876
|
+
]
|
|
7877
|
+
},
|
|
7878
|
+
String(item.layer)
|
|
7879
|
+
);
|
|
7880
|
+
})
|
|
7881
|
+
}
|
|
7882
|
+
)
|
|
7883
|
+
);
|
|
7884
|
+
TouchStrip.displayName = "TouchStrip";
|
|
6789
7885
|
function useTour(options) {
|
|
6790
7886
|
const {
|
|
6791
7887
|
steps,
|
|
@@ -6795,11 +7891,11 @@ function useTour(options) {
|
|
|
6795
7891
|
onComplete,
|
|
6796
7892
|
onExit
|
|
6797
7893
|
} = options;
|
|
6798
|
-
const [current, setCurrent] =
|
|
7894
|
+
const [current, setCurrent] = React25.useState(initialStep);
|
|
6799
7895
|
const total = steps.length;
|
|
6800
7896
|
const lastIndex = Math.max(total - 1, 0);
|
|
6801
7897
|
const clamped = Math.min(Math.max(current, 0), lastIndex);
|
|
6802
|
-
const goTo =
|
|
7898
|
+
const goTo = React25.useCallback(
|
|
6803
7899
|
(index) => {
|
|
6804
7900
|
setCurrent((prev2) => {
|
|
6805
7901
|
const next2 = Math.min(Math.max(index, 0), lastIndex);
|
|
@@ -6809,7 +7905,7 @@ function useTour(options) {
|
|
|
6809
7905
|
},
|
|
6810
7906
|
[lastIndex, onStepChange]
|
|
6811
7907
|
);
|
|
6812
|
-
const next =
|
|
7908
|
+
const next = React25.useCallback(() => {
|
|
6813
7909
|
setCurrent((prev2) => {
|
|
6814
7910
|
if (prev2 >= lastIndex) {
|
|
6815
7911
|
if (loop && total > 0) {
|
|
@@ -6823,7 +7919,7 @@ function useTour(options) {
|
|
|
6823
7919
|
return prev2 + 1;
|
|
6824
7920
|
});
|
|
6825
7921
|
}, [lastIndex, total, loop, onComplete, onStepChange]);
|
|
6826
|
-
const prev =
|
|
7922
|
+
const prev = React25.useCallback(() => {
|
|
6827
7923
|
setCurrent((p) => {
|
|
6828
7924
|
if (p <= 0) {
|
|
6829
7925
|
if (loop && total > 0) {
|
|
@@ -6836,10 +7932,10 @@ function useTour(options) {
|
|
|
6836
7932
|
return p - 1;
|
|
6837
7933
|
});
|
|
6838
7934
|
}, [lastIndex, total, loop, onStepChange]);
|
|
6839
|
-
const exit =
|
|
7935
|
+
const exit = React25.useCallback(() => {
|
|
6840
7936
|
onExit?.();
|
|
6841
7937
|
}, [onExit]);
|
|
6842
|
-
return
|
|
7938
|
+
return React25.useMemo(
|
|
6843
7939
|
() => ({
|
|
6844
7940
|
step: steps[clamped],
|
|
6845
7941
|
current: clamped,
|
|
@@ -6897,7 +7993,7 @@ function Tour({
|
|
|
6897
7993
|
/* @__PURE__ */ jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 p-3", children: [
|
|
6898
7994
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6899
7995
|
/* @__PURE__ */ jsx(Badge, { variant: "soft", className: "tracking-wider", children: badgeLabel }),
|
|
6900
|
-
showCounter && /* @__PURE__ */ jsxs("span", { className: "text-
|
|
7996
|
+
showCounter && /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground", children: [
|
|
6901
7997
|
current + 1,
|
|
6902
7998
|
" / ",
|
|
6903
7999
|
total
|
|
@@ -6908,7 +8004,7 @@ function Tour({
|
|
|
6908
8004
|
{
|
|
6909
8005
|
variant: "ghost",
|
|
6910
8006
|
size: "sm",
|
|
6911
|
-
className: "-mr-1 h-7 gap-1 px-2 text-
|
|
8007
|
+
className: "-mr-1 h-7 gap-1 px-2 text-sm text-muted-foreground [&_svg]:size-3.5",
|
|
6912
8008
|
onClick: ctrl.exit,
|
|
6913
8009
|
children: [
|
|
6914
8010
|
/* @__PURE__ */ jsx(X, {}),
|
|
@@ -7001,8 +8097,222 @@ function Tour({
|
|
|
7001
8097
|
}
|
|
7002
8098
|
) });
|
|
7003
8099
|
}
|
|
8100
|
+
var TraceList = React25.forwardRef(
|
|
8101
|
+
({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
8102
|
+
"div",
|
|
8103
|
+
{
|
|
8104
|
+
ref,
|
|
8105
|
+
role: "list",
|
|
8106
|
+
className: cn("flex flex-col [&>*:first-child]:border-t-0", className),
|
|
8107
|
+
...props,
|
|
8108
|
+
children
|
|
8109
|
+
}
|
|
8110
|
+
)
|
|
8111
|
+
);
|
|
8112
|
+
TraceList.displayName = "TraceList";
|
|
8113
|
+
var TraceStep = React25.forwardRef(
|
|
8114
|
+
({
|
|
8115
|
+
seq,
|
|
8116
|
+
name,
|
|
8117
|
+
description,
|
|
8118
|
+
layer,
|
|
8119
|
+
role,
|
|
8120
|
+
duration,
|
|
8121
|
+
note,
|
|
8122
|
+
mark,
|
|
8123
|
+
palette,
|
|
8124
|
+
depth = 0,
|
|
8125
|
+
dim,
|
|
8126
|
+
struck,
|
|
8127
|
+
selected,
|
|
8128
|
+
onSelect,
|
|
8129
|
+
className,
|
|
8130
|
+
...props
|
|
8131
|
+
}, ref) => {
|
|
8132
|
+
const paint = layer ? layerPaint(palette, layer) : void 0;
|
|
8133
|
+
const Row = onSelect ? "button" : "div";
|
|
8134
|
+
return /* @__PURE__ */ jsxs(
|
|
8135
|
+
"div",
|
|
8136
|
+
{
|
|
8137
|
+
ref,
|
|
8138
|
+
role: "listitem",
|
|
8139
|
+
className: cn(
|
|
8140
|
+
"flex min-h-[46px] items-stretch border-t border-border/55",
|
|
8141
|
+
selected && "bg-accent shadow-[inset_2px_0_0_var(--color-primary)]",
|
|
8142
|
+
dim && "opacity-50",
|
|
8143
|
+
className
|
|
8144
|
+
),
|
|
8145
|
+
...props,
|
|
8146
|
+
children: [
|
|
8147
|
+
/* @__PURE__ */ jsx(
|
|
8148
|
+
"span",
|
|
8149
|
+
{
|
|
8150
|
+
"aria-hidden": true,
|
|
8151
|
+
className: cn(
|
|
8152
|
+
"w-[3px] shrink-0",
|
|
8153
|
+
struck ? "bg-destructive" : paint?.swatch ?? "bg-muted-foreground"
|
|
8154
|
+
)
|
|
8155
|
+
}
|
|
8156
|
+
),
|
|
8157
|
+
/* @__PURE__ */ jsxs(
|
|
8158
|
+
Row,
|
|
8159
|
+
{
|
|
8160
|
+
type: onSelect ? "button" : void 0,
|
|
8161
|
+
onClick: onSelect,
|
|
8162
|
+
className: cn(
|
|
8163
|
+
"flex min-w-0 flex-1 items-center gap-2 pr-3 text-left",
|
|
8164
|
+
onSelect && "cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-ring"
|
|
8165
|
+
),
|
|
8166
|
+
children: [
|
|
8167
|
+
/* @__PURE__ */ jsx(
|
|
8168
|
+
"span",
|
|
8169
|
+
{
|
|
8170
|
+
style: { width: 26 + depth * 18 },
|
|
8171
|
+
className: "shrink-0 text-right font-mono text-xs text-muted-foreground",
|
|
8172
|
+
children: seq
|
|
8173
|
+
}
|
|
8174
|
+
),
|
|
8175
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-px py-1.5 pl-2", children: [
|
|
8176
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
8177
|
+
/* @__PURE__ */ jsx(
|
|
8178
|
+
"span",
|
|
8179
|
+
{
|
|
8180
|
+
className: cn(
|
|
8181
|
+
"min-w-0 truncate font-mono font-semibold",
|
|
8182
|
+
struck && "text-destructive line-through"
|
|
8183
|
+
),
|
|
8184
|
+
children: name
|
|
8185
|
+
}
|
|
8186
|
+
),
|
|
8187
|
+
mark
|
|
8188
|
+
] }),
|
|
8189
|
+
description != null ? /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-muted-foreground", children: description }) : null
|
|
8190
|
+
] }),
|
|
8191
|
+
layer != null ? (
|
|
8192
|
+
// The layer is never the part that gives way: it is one of six short
|
|
8193
|
+
// words and it is what the row is *about*. The role is the longer,
|
|
8194
|
+
// subordinate string, so it truncates first.
|
|
8195
|
+
/* @__PURE__ */ jsxs("span", { className: "flex w-[10.5rem] shrink-0 items-center justify-end gap-1.5", children: [
|
|
8196
|
+
/* @__PURE__ */ jsx(
|
|
8197
|
+
"span",
|
|
8198
|
+
{
|
|
8199
|
+
"aria-hidden": true,
|
|
8200
|
+
className: cn(
|
|
8201
|
+
"size-1.5 shrink-0 rounded-full",
|
|
8202
|
+
dim ? "bg-muted-foreground" : paint?.swatch
|
|
8203
|
+
)
|
|
8204
|
+
}
|
|
8205
|
+
),
|
|
8206
|
+
/* @__PURE__ */ jsx(
|
|
8207
|
+
"span",
|
|
8208
|
+
{
|
|
8209
|
+
className: cn(
|
|
8210
|
+
"shrink-0 text-sm whitespace-nowrap",
|
|
8211
|
+
dim && "text-muted-foreground"
|
|
8212
|
+
),
|
|
8213
|
+
children: layerLabel(layer)
|
|
8214
|
+
}
|
|
8215
|
+
),
|
|
8216
|
+
role != null ? /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate font-mono text-xs text-muted-foreground", children: role }) : null
|
|
8217
|
+
] })
|
|
8218
|
+
) : null,
|
|
8219
|
+
/* @__PURE__ */ jsxs("span", { className: "flex w-[6rem] shrink-0 flex-col items-end", children: [
|
|
8220
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono text-sm", children: duration }),
|
|
8221
|
+
note != null ? /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: note }) : null
|
|
8222
|
+
] })
|
|
8223
|
+
]
|
|
8224
|
+
}
|
|
8225
|
+
)
|
|
8226
|
+
]
|
|
8227
|
+
}
|
|
8228
|
+
);
|
|
8229
|
+
}
|
|
8230
|
+
);
|
|
8231
|
+
TraceStep.displayName = "TraceStep";
|
|
8232
|
+
var LOOP_TONE = {
|
|
8233
|
+
warning: { box: "border-l-warning bg-warning/5", label: "text-warning" },
|
|
8234
|
+
info: { box: "border-l-info bg-info/5", label: "text-info" },
|
|
8235
|
+
muted: { box: "border-l-muted-foreground bg-muted/40", label: "text-muted-foreground" }
|
|
8236
|
+
};
|
|
8237
|
+
var TraceLoop = React25.forwardRef(
|
|
8238
|
+
({ label, summary, tone = "warning", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
8239
|
+
"div",
|
|
8240
|
+
{
|
|
8241
|
+
ref,
|
|
8242
|
+
role: "group",
|
|
8243
|
+
"aria-label": typeof label === "string" ? label : void 0,
|
|
8244
|
+
className: cn("border-l-2", LOOP_TONE[tone].box, className),
|
|
8245
|
+
...props,
|
|
8246
|
+
children: [
|
|
8247
|
+
/* @__PURE__ */ jsxs("div", { className: "flex h-[25px] items-center gap-2 border-t border-border/55 px-3", children: [
|
|
8248
|
+
/* @__PURE__ */ jsx(
|
|
8249
|
+
"span",
|
|
8250
|
+
{
|
|
8251
|
+
className: cn(
|
|
8252
|
+
"truncate font-mono text-xs font-semibold",
|
|
8253
|
+
LOOP_TONE[tone].label
|
|
8254
|
+
),
|
|
8255
|
+
children: label
|
|
8256
|
+
}
|
|
8257
|
+
),
|
|
8258
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1" }),
|
|
8259
|
+
summary != null ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: summary }) : null
|
|
8260
|
+
] }),
|
|
8261
|
+
/* @__PURE__ */ jsx("div", { className: "[&>*:first-child]:border-t-0", children })
|
|
8262
|
+
]
|
|
8263
|
+
}
|
|
8264
|
+
)
|
|
8265
|
+
);
|
|
8266
|
+
TraceLoop.displayName = "TraceLoop";
|
|
8267
|
+
var GATE_TONE = {
|
|
8268
|
+
destructive: "border-destructive text-destructive",
|
|
8269
|
+
warning: "border-warning text-warning",
|
|
8270
|
+
muted: "border-muted-foreground text-muted-foreground"
|
|
8271
|
+
};
|
|
8272
|
+
var TraceGate = React25.forwardRef(
|
|
8273
|
+
({ label, note, tone = "destructive", edge = "before", className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
8274
|
+
"div",
|
|
8275
|
+
{
|
|
8276
|
+
ref,
|
|
8277
|
+
role: "separator",
|
|
8278
|
+
"aria-label": typeof label === "string" ? label : void 0,
|
|
8279
|
+
className: cn("relative flex h-[38px] items-center", className),
|
|
8280
|
+
...props,
|
|
8281
|
+
children: [
|
|
8282
|
+
/* @__PURE__ */ jsx(
|
|
8283
|
+
"span",
|
|
8284
|
+
{
|
|
8285
|
+
"aria-hidden": true,
|
|
8286
|
+
className: cn(
|
|
8287
|
+
"absolute inset-x-0 border-t-2",
|
|
8288
|
+
GATE_TONE[tone],
|
|
8289
|
+
edge === "before" ? "top-[18px]" : "bottom-[18px]"
|
|
8290
|
+
)
|
|
8291
|
+
}
|
|
8292
|
+
),
|
|
8293
|
+
/* @__PURE__ */ jsxs(
|
|
8294
|
+
"span",
|
|
8295
|
+
{
|
|
8296
|
+
className: cn(
|
|
8297
|
+
"relative ml-8 flex items-center gap-2 rounded-control border bg-card px-2 py-0.5",
|
|
8298
|
+
GATE_TONE[tone]
|
|
8299
|
+
),
|
|
8300
|
+
children: [
|
|
8301
|
+
/* @__PURE__ */ jsxs("span", { className: "font-mono text-xs font-semibold whitespace-nowrap", children: [
|
|
8302
|
+
"\u25C8 ",
|
|
8303
|
+
label
|
|
8304
|
+
] }),
|
|
8305
|
+
note != null ? /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-xs text-muted-foreground", children: note }) : null
|
|
8306
|
+
]
|
|
8307
|
+
}
|
|
8308
|
+
)
|
|
8309
|
+
]
|
|
8310
|
+
}
|
|
8311
|
+
)
|
|
8312
|
+
);
|
|
8313
|
+
TraceGate.displayName = "TraceGate";
|
|
7004
8314
|
var TreeView = ({ searchable = false, ...props }) => {
|
|
7005
|
-
const [searchQuery, setSearchQuery] =
|
|
8315
|
+
const [searchQuery, setSearchQuery] = React25.useState("");
|
|
7006
8316
|
const filterItems = (items, query) => {
|
|
7007
8317
|
if (!query) return items;
|
|
7008
8318
|
return items.map((item) => ({
|
|
@@ -7025,7 +8335,7 @@ var TreeView = ({ searchable = false, ...props }) => {
|
|
|
7025
8335
|
);
|
|
7026
8336
|
};
|
|
7027
8337
|
var TreeItem = ({ item }) => {
|
|
7028
|
-
const [isExpanded, setIsExpanded] =
|
|
8338
|
+
const [isExpanded, setIsExpanded] = React25.useState(item.isExpanded || true);
|
|
7029
8339
|
const hasChildren = item.children && item.children.length > 0;
|
|
7030
8340
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
7031
8341
|
/* @__PURE__ */ jsxs(
|
|
@@ -7094,7 +8404,7 @@ function UnderDevelopment({
|
|
|
7094
8404
|
/* @__PURE__ */ jsx("span", { className: "mt-4 px-3 py-1 bg-yellow-100 text-yellow-800", children: "Coming Soon" })
|
|
7095
8405
|
] });
|
|
7096
8406
|
}
|
|
7097
|
-
var TypographyH1 =
|
|
8407
|
+
var TypographyH1 = React25.forwardRef(
|
|
7098
8408
|
({ className, ...props }, ref) => {
|
|
7099
8409
|
return /* @__PURE__ */ jsx(
|
|
7100
8410
|
"h1",
|
|
@@ -7110,7 +8420,7 @@ var TypographyH1 = React23.forwardRef(
|
|
|
7110
8420
|
}
|
|
7111
8421
|
);
|
|
7112
8422
|
TypographyH1.displayName = "TypographyH1";
|
|
7113
|
-
var TypographyH2 =
|
|
8423
|
+
var TypographyH2 = React25.forwardRef(
|
|
7114
8424
|
({ className, ...props }, ref) => {
|
|
7115
8425
|
return /* @__PURE__ */ jsx(
|
|
7116
8426
|
"h2",
|
|
@@ -7126,7 +8436,7 @@ var TypographyH2 = React23.forwardRef(
|
|
|
7126
8436
|
}
|
|
7127
8437
|
);
|
|
7128
8438
|
TypographyH2.displayName = "TypographyH2";
|
|
7129
|
-
var TypographyH3 =
|
|
8439
|
+
var TypographyH3 = React25.forwardRef(
|
|
7130
8440
|
({ className, ...props }, ref) => {
|
|
7131
8441
|
return /* @__PURE__ */ jsx(
|
|
7132
8442
|
"h3",
|
|
@@ -7142,7 +8452,7 @@ var TypographyH3 = React23.forwardRef(
|
|
|
7142
8452
|
}
|
|
7143
8453
|
);
|
|
7144
8454
|
TypographyH3.displayName = "TypographyH3";
|
|
7145
|
-
var TypographyH4 =
|
|
8455
|
+
var TypographyH4 = React25.forwardRef(
|
|
7146
8456
|
({ className, ...props }, ref) => {
|
|
7147
8457
|
return /* @__PURE__ */ jsx(
|
|
7148
8458
|
"h4",
|
|
@@ -7158,7 +8468,7 @@ var TypographyH4 = React23.forwardRef(
|
|
|
7158
8468
|
}
|
|
7159
8469
|
);
|
|
7160
8470
|
TypographyH4.displayName = "TypographyH4";
|
|
7161
|
-
var TypographyH5 =
|
|
8471
|
+
var TypographyH5 = React25.forwardRef(
|
|
7162
8472
|
({ className, ...props }, ref) => {
|
|
7163
8473
|
return /* @__PURE__ */ jsx(
|
|
7164
8474
|
"h5",
|
|
@@ -7174,7 +8484,7 @@ var TypographyH5 = React23.forwardRef(
|
|
|
7174
8484
|
}
|
|
7175
8485
|
);
|
|
7176
8486
|
TypographyH5.displayName = "TypographyH5";
|
|
7177
|
-
var TypographyH6 =
|
|
8487
|
+
var TypographyH6 = React25.forwardRef(
|
|
7178
8488
|
({ className, ...props }, ref) => {
|
|
7179
8489
|
return /* @__PURE__ */ jsx(
|
|
7180
8490
|
"h6",
|
|
@@ -7190,7 +8500,7 @@ var TypographyH6 = React23.forwardRef(
|
|
|
7190
8500
|
}
|
|
7191
8501
|
);
|
|
7192
8502
|
TypographyH6.displayName = "TypographyH6";
|
|
7193
|
-
var TypographyP =
|
|
8503
|
+
var TypographyP = React25.forwardRef(
|
|
7194
8504
|
({ className, ...props }, ref) => {
|
|
7195
8505
|
return /* @__PURE__ */ jsx(
|
|
7196
8506
|
"p",
|
|
@@ -7206,7 +8516,7 @@ var TypographyP = React23.forwardRef(
|
|
|
7206
8516
|
}
|
|
7207
8517
|
);
|
|
7208
8518
|
TypographyP.displayName = "TypographyP";
|
|
7209
|
-
var TypographyBlockquote =
|
|
8519
|
+
var TypographyBlockquote = React25.forwardRef(
|
|
7210
8520
|
({ className, ...props }, ref) => {
|
|
7211
8521
|
return /* @__PURE__ */ jsx(
|
|
7212
8522
|
"blockquote",
|
|
@@ -7222,14 +8532,14 @@ var TypographyBlockquote = React23.forwardRef(
|
|
|
7222
8532
|
}
|
|
7223
8533
|
);
|
|
7224
8534
|
TypographyBlockquote.displayName = "TypographyBlockquote";
|
|
7225
|
-
var TypographyInlineCode =
|
|
8535
|
+
var TypographyInlineCode = React25.forwardRef(
|
|
7226
8536
|
({ className, ...props }, ref) => {
|
|
7227
8537
|
return /* @__PURE__ */ jsx(
|
|
7228
8538
|
"code",
|
|
7229
8539
|
{
|
|
7230
8540
|
ref,
|
|
7231
8541
|
className: cn(
|
|
7232
|
-
"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-
|
|
8542
|
+
"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold",
|
|
7233
8543
|
className
|
|
7234
8544
|
),
|
|
7235
8545
|
...props
|
|
@@ -7238,7 +8548,7 @@ var TypographyInlineCode = React23.forwardRef(
|
|
|
7238
8548
|
}
|
|
7239
8549
|
);
|
|
7240
8550
|
TypographyInlineCode.displayName = "TypographyInlineCode";
|
|
7241
|
-
var TypographyLead =
|
|
8551
|
+
var TypographyLead = React25.forwardRef(
|
|
7242
8552
|
({ className, ...props }, ref) => {
|
|
7243
8553
|
return /* @__PURE__ */ jsx(
|
|
7244
8554
|
"p",
|
|
@@ -7254,7 +8564,7 @@ var TypographyLead = React23.forwardRef(
|
|
|
7254
8564
|
}
|
|
7255
8565
|
);
|
|
7256
8566
|
TypographyLead.displayName = "TypographyLead";
|
|
7257
|
-
var TypographyLarge =
|
|
8567
|
+
var TypographyLarge = React25.forwardRef(
|
|
7258
8568
|
({ className, ...props }, ref) => {
|
|
7259
8569
|
return /* @__PURE__ */ jsx(
|
|
7260
8570
|
"div",
|
|
@@ -7270,14 +8580,14 @@ var TypographyLarge = React23.forwardRef(
|
|
|
7270
8580
|
}
|
|
7271
8581
|
);
|
|
7272
8582
|
TypographyLarge.displayName = "TypographyLarge";
|
|
7273
|
-
var TypographySmall =
|
|
8583
|
+
var TypographySmall = React25.forwardRef(
|
|
7274
8584
|
({ className, ...props }, ref) => {
|
|
7275
8585
|
return /* @__PURE__ */ jsx(
|
|
7276
8586
|
"small",
|
|
7277
8587
|
{
|
|
7278
8588
|
ref,
|
|
7279
8589
|
className: cn(
|
|
7280
|
-
"text-
|
|
8590
|
+
"text-sm font-medium leading-none",
|
|
7281
8591
|
className
|
|
7282
8592
|
),
|
|
7283
8593
|
...props
|
|
@@ -7286,7 +8596,7 @@ var TypographySmall = React23.forwardRef(
|
|
|
7286
8596
|
}
|
|
7287
8597
|
);
|
|
7288
8598
|
TypographySmall.displayName = "TypographySmall";
|
|
7289
|
-
var TypographyMuted =
|
|
8599
|
+
var TypographyMuted = React25.forwardRef(
|
|
7290
8600
|
({ className, ...props }, ref) => {
|
|
7291
8601
|
return /* @__PURE__ */ jsx(
|
|
7292
8602
|
"p",
|
|
@@ -7302,7 +8612,7 @@ var TypographyMuted = React23.forwardRef(
|
|
|
7302
8612
|
}
|
|
7303
8613
|
);
|
|
7304
8614
|
TypographyMuted.displayName = "TypographyMuted";
|
|
7305
|
-
var TypographyList =
|
|
8615
|
+
var TypographyList = React25.forwardRef(
|
|
7306
8616
|
({ className, ...props }, ref) => {
|
|
7307
8617
|
return /* @__PURE__ */ jsx(
|
|
7308
8618
|
"ul",
|
|
@@ -7318,7 +8628,7 @@ var TypographyList = React23.forwardRef(
|
|
|
7318
8628
|
}
|
|
7319
8629
|
);
|
|
7320
8630
|
TypographyList.displayName = "TypographyList";
|
|
7321
|
-
var TypographyPre =
|
|
8631
|
+
var TypographyPre = React25.forwardRef(
|
|
7322
8632
|
({ className, ...props }, ref) => {
|
|
7323
8633
|
return /* @__PURE__ */ jsx(
|
|
7324
8634
|
"pre",
|
|
@@ -7354,6 +8664,6 @@ var Typography = {
|
|
|
7354
8664
|
Pre: TypographyPre
|
|
7355
8665
|
};
|
|
7356
8666
|
|
|
7357
|
-
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, 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,
|
|
8667
|
+
export { AbsenceNote, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AddressChip, AgentChip, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppStatusBar, ArtifactTable, AttemptClock, 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, ExchangeRecord, Eyebrow, FilterBar, FilterChip, HeatStrip, HoverCard, HoverCardContent, HoverCardTrigger, Item3 as Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, KindChip, LayerChip, LayerSection, LayerStrip, Legend, LegendItem, LensChip, LensRow, Link, MarkChip, 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, ParticipantRow, Popover, PopoverContent, PopoverTrigger, Progress, PropertyList, PropertyRow, ProposalCard, RatingControl, RecordHeader, RecordPager, RepairNote, ResizableHandle, ResizablePanel, ResizablePanelGroup, RetryNote, RichSelect, RuleRow, RunRow, RunStatusText, ScrollArea, ScrollBar, SearchInput, SectionHeader, SegmentedControl, 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, TouchStrip, Tour, TraceGate, TraceList, TraceLoop, TraceStep, 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, TONE6 as runStatusTones, split as splitAddress, statusDotVariants, toggleVariants, useOverflowItems, useSidebar, useTour };
|
|
7358
8668
|
//# sourceMappingURL=index.js.map
|
|
7359
8669
|
//# sourceMappingURL=index.js.map
|