@invana/ui 0.0.28 → 0.0.30

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