@l3mpire/ui 3.0.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -15,9 +15,9 @@ function cn(...inputs) {
15
15
  }
16
16
 
17
17
  // src/components/ui/browser-tab.tsx
18
- import * as React3 from "react";
18
+ import * as React4 from "react";
19
19
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
20
- import { Icon as Icon3, faXmarkOutline, faGripDotsVerticalSolid, faPlusSolid, faChevronDownSolid } from "@l3mpire/icons";
20
+ import { Icon as Icon3, faXmarkOutline, faPenOutline, faGripDotsVerticalSolid, faPlusSolid, faChevronDownSolid } from "@l3mpire/icons";
21
21
 
22
22
  // src/components/ui/badge.tsx
23
23
  import * as React from "react";
@@ -44,6 +44,20 @@ var badgeVariants = cva(
44
44
  warning: "",
45
45
  neutral: ""
46
46
  },
47
+ // Categorical palette. Colors come from {variant, tone} compound variants below,
48
+ // so a tone combines with solid / light / outlined just like `type` does.
49
+ tone: {
50
+ indigo: "",
51
+ rose: "",
52
+ lime: "",
53
+ violet: "",
54
+ cyan: "",
55
+ orange: "",
56
+ emerald: "",
57
+ fuchsia: "",
58
+ amber: "",
59
+ slate: ""
60
+ },
47
61
  size: {
48
62
  sm: [
49
63
  "p-2xs gap-2xs",
@@ -80,22 +94,61 @@ var badgeVariants = cva(
80
94
  { variant: "outlined", type: "success", class: "border-badge-outlined-success-border text-badge-outlined-success-text" },
81
95
  { variant: "outlined", type: "critical", class: "border-badge-outlined-critical-border text-badge-outlined-critical-text" },
82
96
  { variant: "outlined", type: "warning", class: "border-badge-outlined-warning-border text-badge-outlined-warning-text" },
83
- { variant: "outlined", type: "neutral", class: "border-badge-outlined-neutral-border text-badge-outlined-neutral-text" }
97
+ { variant: "outlined", type: "neutral", class: "border-badge-outlined-neutral-border text-badge-outlined-neutral-text" },
98
+ // ── Categorical tones × variant ──────────────────────────────────────
99
+ { variant: "solid", tone: "indigo", class: "bg-badge-solid-indigo-bg text-badge-solid-indigo-text" },
100
+ { variant: "solid", tone: "rose", class: "bg-badge-solid-rose-bg text-badge-solid-rose-text" },
101
+ { variant: "solid", tone: "lime", class: "bg-badge-solid-lime-bg text-badge-solid-lime-text" },
102
+ { variant: "solid", tone: "violet", class: "bg-badge-solid-violet-bg text-badge-solid-violet-text" },
103
+ { variant: "solid", tone: "cyan", class: "bg-badge-solid-cyan-bg text-badge-solid-cyan-text" },
104
+ { variant: "solid", tone: "orange", class: "bg-badge-solid-orange-bg text-badge-solid-orange-text" },
105
+ { variant: "solid", tone: "emerald", class: "bg-badge-solid-emerald-bg text-badge-solid-emerald-text" },
106
+ { variant: "solid", tone: "fuchsia", class: "bg-badge-solid-fuchsia-bg text-badge-solid-fuchsia-text" },
107
+ { variant: "solid", tone: "amber", class: "bg-badge-solid-amber-bg text-badge-solid-amber-text" },
108
+ { variant: "solid", tone: "slate", class: "bg-badge-solid-slate-bg text-badge-solid-slate-text" },
109
+ { variant: "light", tone: "indigo", class: "bg-badge-light-indigo-bg text-badge-light-indigo-text" },
110
+ { variant: "light", tone: "rose", class: "bg-badge-light-rose-bg text-badge-light-rose-text" },
111
+ { variant: "light", tone: "lime", class: "bg-badge-light-lime-bg text-badge-light-lime-text" },
112
+ { variant: "light", tone: "violet", class: "bg-badge-light-violet-bg text-badge-light-violet-text" },
113
+ { variant: "light", tone: "cyan", class: "bg-badge-light-cyan-bg text-badge-light-cyan-text" },
114
+ { variant: "light", tone: "orange", class: "bg-badge-light-orange-bg text-badge-light-orange-text" },
115
+ { variant: "light", tone: "emerald", class: "bg-badge-light-emerald-bg text-badge-light-emerald-text" },
116
+ { variant: "light", tone: "fuchsia", class: "bg-badge-light-fuchsia-bg text-badge-light-fuchsia-text" },
117
+ { variant: "light", tone: "amber", class: "bg-badge-light-amber-bg text-badge-light-amber-text" },
118
+ { variant: "light", tone: "slate", class: "bg-badge-light-slate-bg text-badge-light-slate-text" },
119
+ { variant: "outlined", tone: "indigo", class: "border-badge-outlined-indigo-border text-badge-outlined-indigo-text" },
120
+ { variant: "outlined", tone: "rose", class: "border-badge-outlined-rose-border text-badge-outlined-rose-text" },
121
+ { variant: "outlined", tone: "lime", class: "border-badge-outlined-lime-border text-badge-outlined-lime-text" },
122
+ { variant: "outlined", tone: "violet", class: "border-badge-outlined-violet-border text-badge-outlined-violet-text" },
123
+ { variant: "outlined", tone: "cyan", class: "border-badge-outlined-cyan-border text-badge-outlined-cyan-text" },
124
+ { variant: "outlined", tone: "orange", class: "border-badge-outlined-orange-border text-badge-outlined-orange-text" },
125
+ { variant: "outlined", tone: "emerald", class: "border-badge-outlined-emerald-border text-badge-outlined-emerald-text" },
126
+ { variant: "outlined", tone: "fuchsia", class: "border-badge-outlined-fuchsia-border text-badge-outlined-fuchsia-text" },
127
+ { variant: "outlined", tone: "amber", class: "border-badge-outlined-amber-border text-badge-outlined-amber-text" },
128
+ { variant: "outlined", tone: "slate", class: "border-badge-outlined-slate-border text-badge-outlined-slate-text" }
84
129
  ],
130
+ // variant/type defaults are applied in the component so `tone` can suppress `type`.
85
131
  defaultVariants: {
86
- variant: "solid",
87
- type: "primary",
88
132
  size: "md"
89
133
  }
90
134
  }
91
135
  );
92
136
  var Badge = React.forwardRef(
93
- ({ className, variant, type, size, icon, children, ...props }, ref) => {
137
+ ({ className, variant, type, tone, size, icon, children, ...props }, ref) => {
94
138
  return /* @__PURE__ */ jsxs(
95
139
  "span",
96
140
  {
97
141
  ref,
98
- className: cn(badgeVariants({ variant, type, size }), className),
142
+ className: cn(
143
+ badgeVariants({
144
+ variant: variant ?? "solid",
145
+ // `tone` and `type` share the color axis — when a tone is set it wins.
146
+ type: tone != null ? void 0 : type ?? "primary",
147
+ tone,
148
+ size
149
+ }),
150
+ className
151
+ ),
99
152
  ...props,
100
153
  children: [
101
154
  icon && /* @__PURE__ */ jsx(Icon, { icon, size: "xs" }),
@@ -363,17 +416,78 @@ var Button = React2.forwardRef(
363
416
  );
364
417
  Button.displayName = "Button";
365
418
 
419
+ // src/components/ui/tooltip.tsx
420
+ import * as React3 from "react";
421
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
422
+ import { cva as cva3 } from "class-variance-authority";
423
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
424
+ var tooltipContentVariants = cva3(
425
+ [
426
+ "inline-flex items-center z-50",
427
+ "gap-xs",
428
+ "px-base py-sm",
429
+ "rounded-lg",
430
+ "shadow-lg",
431
+ "text-sm",
432
+ "font-regular",
433
+ "leading-sm",
434
+ "data-[state=delayed-open]:animate-[tooltip-in_150ms_ease-out]",
435
+ "data-[state=instant-open]:animate-[tooltip-in_0ms]",
436
+ "data-[state=closed]:animate-[tooltip-out_100ms_ease-in]"
437
+ ],
438
+ {
439
+ variants: {
440
+ type: {
441
+ default: [
442
+ "bg-tooltip-default-bg",
443
+ "text-tooltip-default-text"
444
+ ],
445
+ invert: [
446
+ "bg-tooltip-invert-bg",
447
+ "text-tooltip-invert-text",
448
+ "border border-tooltip-invert-border"
449
+ ]
450
+ }
451
+ },
452
+ defaultVariants: {
453
+ type: "default"
454
+ }
455
+ }
456
+ );
457
+ var TooltipProvider = TooltipPrimitive.Provider;
458
+ var Tooltip = TooltipPrimitive.Root;
459
+ var TooltipTrigger = TooltipPrimitive.Trigger;
460
+ var TooltipContent = React3.forwardRef(({ className, type, hasArrow = true, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ jsx3(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs3(
461
+ TooltipPrimitive.Content,
462
+ {
463
+ ref,
464
+ sideOffset,
465
+ className: cn(tooltipContentVariants({ type, className })),
466
+ ...props,
467
+ children: [
468
+ children,
469
+ hasArrow && /* @__PURE__ */ jsx3(
470
+ TooltipPrimitive.Arrow,
471
+ {
472
+ className: type === "default" ? "fill-tooltip-default-bg" : "fill-tooltip-invert-bg"
473
+ }
474
+ )
475
+ ]
476
+ }
477
+ ) }));
478
+ TooltipContent.displayName = "TooltipContent";
479
+
366
480
  // src/components/ui/browser-tab.tsx
367
- import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
368
- var BrowserTabContext = React3.createContext(null);
369
- var BrowserTabItem = React3.forwardRef(
370
- ({ className, icon, label, badge, isActive = false, onClose, onRename, ...props }, ref) => {
371
- const [isHovered, setIsHovered] = React3.useState(false);
372
- const [isEditing, setIsEditing] = React3.useState(false);
373
- const [editValue, setEditValue] = React3.useState(label);
374
- const inputRef = React3.useRef(null);
375
- const ctx = React3.useContext(BrowserTabContext);
376
- React3.useEffect(() => {
481
+ import { Fragment, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
482
+ var BrowserTabContext = React4.createContext(null);
483
+ var BrowserTabItem = React4.forwardRef(
484
+ ({ className, icon, label, badge, isActive = false, pinned = false, isEditable = false, onEdit, onClose, onRename, ...props }, ref) => {
485
+ const [isHovered, setIsHovered] = React4.useState(false);
486
+ const [isEditing, setIsEditing] = React4.useState(false);
487
+ const [editValue, setEditValue] = React4.useState(label);
488
+ const inputRef = React4.useRef(null);
489
+ const ctx = React4.useContext(BrowserTabContext);
490
+ React4.useEffect(() => {
377
491
  if (isEditing && inputRef.current) {
378
492
  inputRef.current.focus();
379
493
  inputRef.current.select();
@@ -402,7 +516,7 @@ var BrowserTabItem = React3.forwardRef(
402
516
  const isDragged = ctx?.draggable && ctx.dragIndex === ctx.itemIndex;
403
517
  const isDropTarget = ctx?.draggable && ctx.dropIndex === ctx.itemIndex && ctx.dragIndex !== ctx.itemIndex;
404
518
  const showGrip = ctx?.draggable && isHovered;
405
- return /* @__PURE__ */ jsxs3(
519
+ const tab = /* @__PURE__ */ jsxs4(
406
520
  "div",
407
521
  {
408
522
  ref,
@@ -419,15 +533,15 @@ var BrowserTabItem = React3.forwardRef(
419
533
  ...dragProps,
420
534
  ...props,
421
535
  children: [
422
- /* @__PURE__ */ jsxs3(
536
+ /* @__PURE__ */ jsxs4(
423
537
  "div",
424
538
  {
425
539
  className: cn(
426
- "flex items-center gap-base px-xs py-2xs transition-[background-color,border-radius,box-shadow]",
540
+ "relative flex items-center gap-base px-xs py-2xs transition-[background-color,border-radius,box-shadow]",
427
541
  isHovered && !isActive ? "bg-browser-tab-item-hover-bg rounded-sm shadow-sm" : "bg-browser-tab-item-bg rounded-base"
428
542
  ),
429
543
  children: [
430
- icon && /* @__PURE__ */ jsx3("div", { className: "shrink-0", children: /* @__PURE__ */ jsx3(
544
+ icon && /* @__PURE__ */ jsx4("div", { className: "shrink-0", children: /* @__PURE__ */ jsx4(
431
545
  Icon3,
432
546
  {
433
547
  icon: showGrip ? faGripDotsVerticalSolid : icon,
@@ -437,7 +551,7 @@ var BrowserTabItem = React3.forwardRef(
437
551
  )
438
552
  }
439
553
  ) }),
440
- isEditing ? /* @__PURE__ */ jsx3(
554
+ isEditing ? /* @__PURE__ */ jsx4(
441
555
  "input",
442
556
  {
443
557
  ref: inputRef,
@@ -456,7 +570,7 @@ var BrowserTabItem = React3.forwardRef(
456
570
  ),
457
571
  style: { width: `${Math.max(editValue.length + 1, 2)}ch` }
458
572
  }
459
- ) : /* @__PURE__ */ jsx3(
573
+ ) : /* @__PURE__ */ jsx4(
460
574
  "span",
461
575
  {
462
576
  className: cn(
@@ -473,46 +587,86 @@ var BrowserTabItem = React3.forwardRef(
473
587
  children: label
474
588
  }
475
589
  ),
476
- badge && /* @__PURE__ */ jsx3(Badge, { variant: "light", type: "neutral", size: "sm", children: badge }),
477
- onClose && /* @__PURE__ */ jsx3(
478
- "button",
590
+ badge && /* @__PURE__ */ jsx4(Badge, { variant: "light", type: "neutral", size: "sm", children: badge }),
591
+ !pinned && (isEditable || onClose) && /* @__PURE__ */ jsxs4(
592
+ "div",
479
593
  {
480
- onClick: (e) => {
481
- e.stopPropagation();
482
- onClose(e);
483
- },
594
+ "aria-hidden": !isHovered,
484
595
  className: cn(
485
- "shrink-0 flex items-center justify-center cursor-pointer",
486
- isActive ? "text-browser-tab-item-active-icon" : "text-browser-tab-item-inactive-icon"
596
+ "absolute right-0 top-0 bottom-0 flex items-center justify-end gap-2xs pl-2xl pr-2xs",
597
+ "transition-opacity duration-150 bg-gradient-to-l from-[72%] to-transparent",
598
+ isActive ? "from-browser-tab-item-bg rounded-r-base" : "from-browser-tab-item-hover-bg rounded-r-sm",
599
+ isHovered ? "opacity-100" : "opacity-0 pointer-events-none"
487
600
  ),
488
- "aria-label": `Close ${label}`,
489
- children: /* @__PURE__ */ jsx3(Icon3, { icon: faXmarkOutline, size: "xs" })
601
+ children: [
602
+ isEditable && /* @__PURE__ */ jsx4(
603
+ "button",
604
+ {
605
+ onClick: (e) => {
606
+ e.stopPropagation();
607
+ onEdit?.(e);
608
+ },
609
+ tabIndex: isHovered ? 0 : -1,
610
+ className: cn(
611
+ "shrink-0 flex items-center justify-center cursor-pointer rounded-2xs p-2xs",
612
+ "hover:bg-black/5 transition-colors",
613
+ isActive ? "text-browser-tab-item-active-icon" : "text-browser-tab-item-inactive-icon"
614
+ ),
615
+ "aria-label": `Edit ${label}`,
616
+ children: /* @__PURE__ */ jsx4(Icon3, { icon: faPenOutline, size: "xs" })
617
+ }
618
+ ),
619
+ onClose && /* @__PURE__ */ jsx4(
620
+ "button",
621
+ {
622
+ onClick: (e) => {
623
+ e.stopPropagation();
624
+ onClose(e);
625
+ },
626
+ tabIndex: isHovered ? 0 : -1,
627
+ className: cn(
628
+ "shrink-0 flex items-center justify-center cursor-pointer rounded-2xs p-2xs",
629
+ "hover:bg-black/5 transition-colors",
630
+ isActive ? "text-browser-tab-item-active-icon" : "text-browser-tab-item-inactive-icon"
631
+ ),
632
+ "aria-label": `Close ${label}`,
633
+ children: /* @__PURE__ */ jsx4(Icon3, { icon: faXmarkOutline, size: "xs" })
634
+ }
635
+ )
636
+ ]
490
637
  }
491
638
  )
492
639
  ]
493
640
  }
494
641
  ),
495
- isActive && /* @__PURE__ */ jsxs3(Fragment, { children: [
496
- /* @__PURE__ */ jsx3("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 left-[-1px] w-px h-[8px] bg-browser-tab-item-bg" }),
497
- /* @__PURE__ */ jsx3("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 right-[-1px] w-px h-[8px] bg-browser-tab-item-bg" }),
498
- /* @__PURE__ */ jsxs3("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 left-[-8px] size-[8px]", children: [
499
- /* @__PURE__ */ jsx3("span", { className: "absolute bottom-0 left-0 right-0 h-px bg-browser-tab-item-bg" }),
500
- /* @__PURE__ */ jsx3("span", { className: "absolute inset-0 rounded-br-[8px] border-b border-r border-solid border-browser-tab-item-border" })
642
+ isActive && /* @__PURE__ */ jsxs4(Fragment, { children: [
643
+ /* @__PURE__ */ jsx4("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 left-[-1px] w-px h-[8px] bg-browser-tab-item-bg" }),
644
+ /* @__PURE__ */ jsx4("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 right-[-1px] w-px h-[8px] bg-browser-tab-item-bg" }),
645
+ /* @__PURE__ */ jsxs4("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 left-[-8px] size-[8px]", children: [
646
+ /* @__PURE__ */ jsx4("span", { className: "absolute bottom-0 left-0 right-0 h-px bg-browser-tab-item-bg" }),
647
+ /* @__PURE__ */ jsx4("span", { className: "absolute inset-0 rounded-br-[8px] border-b border-r border-solid border-browser-tab-item-border" })
501
648
  ] }),
502
- /* @__PURE__ */ jsxs3("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 right-[-8px] size-[8px]", children: [
503
- /* @__PURE__ */ jsx3("span", { className: "absolute bottom-0 left-0 right-0 h-px bg-browser-tab-item-bg" }),
504
- /* @__PURE__ */ jsx3("span", { className: "absolute inset-0 rounded-bl-[8px] border-b border-l border-solid border-browser-tab-item-border" })
649
+ /* @__PURE__ */ jsxs4("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 right-[-8px] size-[8px]", children: [
650
+ /* @__PURE__ */ jsx4("span", { className: "absolute bottom-0 left-0 right-0 h-px bg-browser-tab-item-bg" }),
651
+ /* @__PURE__ */ jsx4("span", { className: "absolute inset-0 rounded-bl-[8px] border-b border-l border-solid border-browser-tab-item-border" })
505
652
  ] })
506
653
  ] })
507
654
  ]
508
655
  }
509
656
  );
657
+ if (pinned) {
658
+ return /* @__PURE__ */ jsx4(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ jsxs4(Tooltip, { children: [
659
+ /* @__PURE__ */ jsx4(TooltipTrigger, { asChild: true, children: tab }),
660
+ /* @__PURE__ */ jsx4(TooltipContent, { side: "bottom", hasArrow: false, children: "Pinned tab" })
661
+ ] }) });
662
+ }
663
+ return tab;
510
664
  }
511
665
  );
512
666
  BrowserTabItem.displayName = "BrowserTabItem";
513
667
  function useOverflowDetection(containerRef, childCount) {
514
- const [visibleCount, setVisibleCount] = React3.useState(childCount);
515
- React3.useEffect(() => {
668
+ const [visibleCount, setVisibleCount] = React4.useState(childCount);
669
+ React4.useEffect(() => {
516
670
  const container = containerRef.current;
517
671
  if (!container) return;
518
672
  const measure = () => {
@@ -540,12 +694,12 @@ function useOverflowDetection(containerRef, childCount) {
540
694
  }, [containerRef, childCount]);
541
695
  return visibleCount;
542
696
  }
543
- var BrowserTab = React3.forwardRef(
697
+ var BrowserTab = React4.forwardRef(
544
698
  ({ className, children, onAddTab, draggable = false, onReorder, onOverflowSelect, ...props }, ref) => {
545
- const [dragIndex, setDragIndex] = React3.useState(null);
546
- const [dropIndex, setDropIndex] = React3.useState(null);
547
- const tabsContainerRef = React3.useRef(null);
548
- const childArray = React3.Children.toArray(children).filter(React3.isValidElement);
699
+ const [dragIndex, setDragIndex] = React4.useState(null);
700
+ const [dropIndex, setDropIndex] = React4.useState(null);
701
+ const tabsContainerRef = React4.useRef(null);
702
+ const childArray = React4.Children.toArray(children).filter(React4.isValidElement);
549
703
  const visibleCount = useOverflowDetection(tabsContainerRef, childArray.length);
550
704
  const hasOverflow = visibleCount < childArray.length;
551
705
  const ctxBase = {
@@ -579,7 +733,7 @@ var BrowserTab = React3.forwardRef(
579
733
  isActive: childProps.isActive
580
734
  };
581
735
  });
582
- return /* @__PURE__ */ jsxs3(
736
+ return /* @__PURE__ */ jsxs4(
583
737
  "div",
584
738
  {
585
739
  ref,
@@ -589,15 +743,15 @@ var BrowserTab = React3.forwardRef(
589
743
  ),
590
744
  ...props,
591
745
  children: [
592
- /* @__PURE__ */ jsxs3(
746
+ /* @__PURE__ */ jsxs4(
593
747
  "div",
594
748
  {
595
749
  ref: tabsContainerRef,
596
750
  className: "flex items-center flex-1 min-w-0 pl-base",
597
751
  style: { overflowX: "clip", overflowY: "visible" },
598
752
  children: [
599
- childArray.map((child, index) => /* @__PURE__ */ jsx3(BrowserTabContext.Provider, { value: { ...ctxBase, itemIndex: index }, children: child }, index)),
600
- onAddTab && !hasOverflow && /* @__PURE__ */ jsx3(
753
+ childArray.map((child, index) => /* @__PURE__ */ jsx4(BrowserTabContext.Provider, { value: { ...ctxBase, itemIndex: index }, children: child }, index)),
754
+ onAddTab && !hasOverflow && /* @__PURE__ */ jsx4(
601
755
  Button,
602
756
  {
603
757
  className: "ml-base",
@@ -613,10 +767,11 @@ var BrowserTab = React3.forwardRef(
613
767
  ]
614
768
  }
615
769
  ),
616
- hasOverflow && /* @__PURE__ */ jsxs3(DropdownMenuPrimitive.Root, { children: [
617
- /* @__PURE__ */ jsx3(DropdownMenuPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsx3(
770
+ hasOverflow && /* @__PURE__ */ jsxs4(DropdownMenuPrimitive.Root, { children: [
771
+ /* @__PURE__ */ jsx4(DropdownMenuPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsx4(
618
772
  Button,
619
773
  {
774
+ className: "mb-sm",
620
775
  appearance: "ghost",
621
776
  intent: "brand",
622
777
  size: "sm",
@@ -625,7 +780,7 @@ var BrowserTab = React3.forwardRef(
625
780
  "aria-label": "Show more tabs"
626
781
  }
627
782
  ) }),
628
- /* @__PURE__ */ jsx3(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx3(
783
+ /* @__PURE__ */ jsx4(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx4(
629
784
  DropdownMenuPrimitive.Content,
630
785
  {
631
786
  sideOffset: 4,
@@ -637,7 +792,7 @@ var BrowserTab = React3.forwardRef(
637
792
  "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
638
793
  "data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2"
639
794
  ),
640
- children: hiddenItems.map((item) => /* @__PURE__ */ jsxs3(
795
+ children: hiddenItems.map((item) => /* @__PURE__ */ jsxs4(
641
796
  DropdownMenuPrimitive.Item,
642
797
  {
643
798
  className: cn(
@@ -650,7 +805,7 @@ var BrowserTab = React3.forwardRef(
650
805
  }
651
806
  },
652
807
  children: [
653
- item.icon && /* @__PURE__ */ jsx3(
808
+ item.icon && /* @__PURE__ */ jsx4(
654
809
  Icon3,
655
810
  {
656
811
  icon: item.icon,
@@ -660,7 +815,7 @@ var BrowserTab = React3.forwardRef(
660
815
  )
661
816
  }
662
817
  ),
663
- /* @__PURE__ */ jsx3(
818
+ /* @__PURE__ */ jsx4(
664
819
  "span",
665
820
  {
666
821
  className: cn(
@@ -670,7 +825,7 @@ var BrowserTab = React3.forwardRef(
670
825
  children: item.label
671
826
  }
672
827
  ),
673
- item.badge && /* @__PURE__ */ jsx3(Badge, { variant: "light", type: "neutral", size: "sm", children: item.badge })
828
+ item.badge && /* @__PURE__ */ jsx4(Badge, { variant: "light", type: "neutral", size: "sm", children: item.badge })
674
829
  ]
675
830
  },
676
831
  item.index
@@ -678,9 +833,10 @@ var BrowserTab = React3.forwardRef(
678
833
  }
679
834
  ) })
680
835
  ] }),
681
- onAddTab && hasOverflow && /* @__PURE__ */ jsx3(
836
+ onAddTab && hasOverflow && /* @__PURE__ */ jsx4(
682
837
  Button,
683
838
  {
839
+ className: "mb-sm",
684
840
  appearance: "ghost",
685
841
  intent: "brand",
686
842
  size: "sm",
@@ -698,7 +854,7 @@ var BrowserTab = React3.forwardRef(
698
854
  BrowserTab.displayName = "BrowserTab";
699
855
 
700
856
  // src/components/ui/bulk-action.tsx
701
- import * as React5 from "react";
857
+ import * as React6 from "react";
702
858
  import {
703
859
  Icon as Icon5,
704
860
  faXmarkOutline as faXmarkOutline2,
@@ -706,10 +862,10 @@ import {
706
862
  } from "@l3mpire/icons";
707
863
 
708
864
  // src/components/ui/dropdown-menu.tsx
709
- import * as React4 from "react";
865
+ import * as React5 from "react";
710
866
  import * as DropdownMenuPrimitive2 from "@radix-ui/react-dropdown-menu";
711
867
  import { Icon as Icon4 } from "@l3mpire/icons";
712
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
868
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
713
869
  var textSm = "text-sm font-regular leading-sm";
714
870
  var textXs = "text-xs font-regular leading-xs";
715
871
  var textXsMedium = "text-xs font-medium leading-xs";
@@ -722,13 +878,13 @@ var containerStyle = [
722
878
  "p-xs",
723
879
  "shadow-lg"
724
880
  ];
725
- var DropdownMenu = React4.forwardRef(
726
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx4("div", { ref, className: cn(containerStyle, className), ...props, children })
881
+ var DropdownMenu = React5.forwardRef(
882
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx5("div", { ref, className: cn(containerStyle, className), ...props, children })
727
883
  );
728
884
  DropdownMenu.displayName = "DropdownMenu";
729
885
  var DropdownMenuRoot = DropdownMenuPrimitive2.Root;
730
886
  var DropdownMenuTrigger = DropdownMenuPrimitive2.Trigger;
731
- var DropdownMenuContent = React4.forwardRef(({ className, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ jsx4(DropdownMenuPrimitive2.Portal, { children: /* @__PURE__ */ jsx4(
887
+ var DropdownMenuContent = React5.forwardRef(({ className, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ jsx5(DropdownMenuPrimitive2.Portal, { children: /* @__PURE__ */ jsx5(
732
888
  DropdownMenuPrimitive2.Content,
733
889
  {
734
890
  ref,
@@ -747,12 +903,12 @@ var DropdownMenuContent = React4.forwardRef(({ className, sideOffset = 4, childr
747
903
  }
748
904
  ) }));
749
905
  DropdownMenuContent.displayName = "DropdownMenuContent";
750
- var DropdownMenuList = React4.forwardRef(
751
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx4("div", { ref, className: cn("flex flex-col", className), role: "listbox", ...props, children })
906
+ var DropdownMenuList = React5.forwardRef(
907
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx5("div", { ref, className: cn("flex flex-col", className), role: "listbox", ...props, children })
752
908
  );
753
909
  DropdownMenuList.displayName = "DropdownMenuList";
754
910
  var itemStyle = "flex items-center gap-base p-base rounded-base cursor-pointer hover:bg-dropdown-item-hover";
755
- var DropdownMenuItem = React4.forwardRef(
911
+ var DropdownMenuItem = React5.forwardRef(
756
912
  ({
757
913
  className,
758
914
  icon,
@@ -767,7 +923,7 @@ var DropdownMenuItem = React4.forwardRef(
767
923
  onClick,
768
924
  ...props
769
925
  }, ref) => {
770
- const handleClick = React4.useCallback(
926
+ const handleClick = React5.useCallback(
771
927
  (e) => {
772
928
  const target = e.target;
773
929
  if (!target.closest("button[role='checkbox']")) {
@@ -780,7 +936,7 @@ var DropdownMenuItem = React4.forwardRef(
780
936
  },
781
937
  [onClick]
782
938
  );
783
- return /* @__PURE__ */ jsxs4(
939
+ return /* @__PURE__ */ jsxs5(
784
940
  "div",
785
941
  {
786
942
  ref,
@@ -797,7 +953,7 @@ var DropdownMenuItem = React4.forwardRef(
797
953
  children,
798
954
  avatar,
799
955
  flag,
800
- icon && /* @__PURE__ */ jsx4(
956
+ icon && /* @__PURE__ */ jsx5(
801
957
  Icon4,
802
958
  {
803
959
  icon,
@@ -805,9 +961,9 @@ var DropdownMenuItem = React4.forwardRef(
805
961
  className: "shrink-0 text-dropdown-item-icon"
806
962
  }
807
963
  ),
808
- /* @__PURE__ */ jsxs4("div", { className: "flex flex-1 items-center gap-sm min-w-0", children: [
809
- /* @__PURE__ */ jsx4("span", { className: cn("truncate shrink-0", textSm, "text-dropdown-item-text"), children: label }),
810
- description && /* @__PURE__ */ jsx4("span", { className: cn("truncate", textXs, "text-dropdown-item-secondary"), children: description })
964
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-1 items-center gap-sm min-w-0", children: [
965
+ /* @__PURE__ */ jsx5("span", { className: cn("truncate shrink-0", textSm, "text-dropdown-item-text"), children: label }),
966
+ description && /* @__PURE__ */ jsx5("span", { className: cn("truncate", textXs, "text-dropdown-item-secondary"), children: description })
811
967
  ] }),
812
968
  badge,
813
969
  action
@@ -817,7 +973,7 @@ var DropdownMenuItem = React4.forwardRef(
817
973
  }
818
974
  );
819
975
  DropdownMenuItem.displayName = "DropdownMenuItem";
820
- var DropdownMenuRadixItem = React4.forwardRef(
976
+ var DropdownMenuRadixItem = React5.forwardRef(
821
977
  ({
822
978
  className,
823
979
  icon,
@@ -829,7 +985,7 @@ var DropdownMenuRadixItem = React4.forwardRef(
829
985
  action,
830
986
  children,
831
987
  ...props
832
- }, ref) => /* @__PURE__ */ jsxs4(
988
+ }, ref) => /* @__PURE__ */ jsxs5(
833
989
  DropdownMenuPrimitive2.Item,
834
990
  {
835
991
  ref,
@@ -843,7 +999,7 @@ var DropdownMenuRadixItem = React4.forwardRef(
843
999
  children,
844
1000
  avatar,
845
1001
  flag,
846
- icon && /* @__PURE__ */ jsx4(
1002
+ icon && /* @__PURE__ */ jsx5(
847
1003
  Icon4,
848
1004
  {
849
1005
  icon,
@@ -851,9 +1007,9 @@ var DropdownMenuRadixItem = React4.forwardRef(
851
1007
  className: "shrink-0 text-dropdown-item-icon"
852
1008
  }
853
1009
  ),
854
- /* @__PURE__ */ jsxs4("div", { className: "flex flex-1 items-center gap-sm min-w-0", children: [
855
- /* @__PURE__ */ jsx4("span", { className: cn("truncate shrink-0", textSm, "text-dropdown-item-text"), children: label }),
856
- description && /* @__PURE__ */ jsx4("span", { className: cn("truncate", textXs, "text-dropdown-item-secondary"), children: description })
1010
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-1 items-center gap-sm min-w-0", children: [
1011
+ /* @__PURE__ */ jsx5("span", { className: cn("truncate shrink-0", textSm, "text-dropdown-item-text"), children: label }),
1012
+ description && /* @__PURE__ */ jsx5("span", { className: cn("truncate", textXs, "text-dropdown-item-secondary"), children: description })
857
1013
  ] }),
858
1014
  badge,
859
1015
  action
@@ -862,7 +1018,7 @@ var DropdownMenuRadixItem = React4.forwardRef(
862
1018
  )
863
1019
  );
864
1020
  DropdownMenuRadixItem.displayName = "DropdownMenuRadixItem";
865
- var DropdownMenuHeading = React4.forwardRef(({ className, action, children, ...props }, ref) => /* @__PURE__ */ jsxs4(
1021
+ var DropdownMenuHeading = React5.forwardRef(({ className, action, children, ...props }, ref) => /* @__PURE__ */ jsxs5(
866
1022
  "div",
867
1023
  {
868
1024
  ref,
@@ -872,7 +1028,7 @@ var DropdownMenuHeading = React4.forwardRef(({ className, action, children, ...p
872
1028
  ),
873
1029
  ...props,
874
1030
  children: [
875
- /* @__PURE__ */ jsx4("span", { className: cn("flex-1 truncate uppercase", textXsMedium, "text-dropdown-heading-text"), children }),
1031
+ /* @__PURE__ */ jsx5("span", { className: cn("flex-1 truncate uppercase", textXsMedium, "text-dropdown-heading-text"), children }),
876
1032
  action
877
1033
  ]
878
1034
  }
@@ -887,7 +1043,7 @@ var clearStyle = [
887
1043
  "shadow-sm",
888
1044
  "cursor-pointer"
889
1045
  ];
890
- var DropdownMenuClear = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx4(
1046
+ var DropdownMenuClear = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx5(
891
1047
  "button",
892
1048
  {
893
1049
  ref,
@@ -900,10 +1056,10 @@ var DropdownMenuClear = React4.forwardRef(({ className, children, ...props }, re
900
1056
  DropdownMenuClear.displayName = "DropdownMenuClear";
901
1057
 
902
1058
  // src/components/ui/bulk-action.tsx
903
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
1059
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
904
1060
  var GAP_PX = 8;
905
1061
  var MORE_BTN_FALLBACK = 36;
906
- var BulkAction = React5.forwardRef(
1062
+ var BulkAction = React6.forwardRef(
907
1063
  ({
908
1064
  count,
909
1065
  onClear,
@@ -914,11 +1070,11 @@ var BulkAction = React5.forwardRef(
914
1070
  className,
915
1071
  ...props
916
1072
  }, ref) => {
917
- const slotRef = React5.useRef(null);
918
- const measureRef = React5.useRef(null);
919
- const moreBtnMeasureRef = React5.useRef(null);
920
- const [visibleCount, setVisibleCount] = React5.useState(actions.length);
921
- React5.useLayoutEffect(() => {
1073
+ const slotRef = React6.useRef(null);
1074
+ const measureRef = React6.useRef(null);
1075
+ const moreBtnMeasureRef = React6.useRef(null);
1076
+ const [visibleCount, setVisibleCount] = React6.useState(actions.length);
1077
+ React6.useLayoutEffect(() => {
922
1078
  const slot = slotRef.current;
923
1079
  const measure = measureRef.current;
924
1080
  if (!slot || !measure) return;
@@ -958,7 +1114,7 @@ var BulkAction = React5.forwardRef(
958
1114
  }, [actions]);
959
1115
  const visibleItems = actions.slice(0, visibleCount);
960
1116
  const overflowItems = actions.slice(visibleCount);
961
- return /* @__PURE__ */ jsxs5(
1117
+ return /* @__PURE__ */ jsxs6(
962
1118
  "div",
963
1119
  {
964
1120
  ref,
@@ -974,20 +1130,20 @@ var BulkAction = React5.forwardRef(
974
1130
  ),
975
1131
  ...props,
976
1132
  children: [
977
- /* @__PURE__ */ jsxs5("span", { className: "text-sm font-regular leading-sm text-bulk-action-count whitespace-nowrap shrink-0", children: [
1133
+ /* @__PURE__ */ jsxs6("span", { className: "text-sm font-regular leading-sm text-bulk-action-count whitespace-nowrap shrink-0", children: [
978
1134
  count,
979
1135
  " ",
980
1136
  countLabel
981
1137
  ] }),
982
- /* @__PURE__ */ jsxs5(
1138
+ /* @__PURE__ */ jsxs6(
983
1139
  "div",
984
1140
  {
985
1141
  ref: slotRef,
986
1142
  className: "relative flex flex-1 items-center gap-base min-w-0 overflow-hidden",
987
1143
  children: [
988
- visibleItems.map((item) => /* @__PURE__ */ jsx5(ActionButton, { item }, item.id)),
989
- overflowItems.length > 0 && /* @__PURE__ */ jsxs5(DropdownMenuRoot, { children: [
990
- /* @__PURE__ */ jsx5(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx5(
1144
+ visibleItems.map((item) => /* @__PURE__ */ jsx6(ActionButton, { item }, item.id)),
1145
+ overflowItems.length > 0 && /* @__PURE__ */ jsxs6(DropdownMenuRoot, { children: [
1146
+ /* @__PURE__ */ jsx6(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx6(
991
1147
  Button,
992
1148
  {
993
1149
  type: "button",
@@ -999,7 +1155,7 @@ var BulkAction = React5.forwardRef(
999
1155
  "aria-label": "More actions"
1000
1156
  }
1001
1157
  ) }),
1002
- /* @__PURE__ */ jsx5(DropdownMenuContent, { align: "end", side: "top", sideOffset: 8, children: overflowItems.map((item) => /* @__PURE__ */ jsx5(
1158
+ /* @__PURE__ */ jsx6(DropdownMenuContent, { align: "end", side: "top", sideOffset: 8, children: overflowItems.map((item) => /* @__PURE__ */ jsx6(
1003
1159
  DropdownMenuItem,
1004
1160
  {
1005
1161
  icon: item.icon,
@@ -1009,29 +1165,29 @@ var BulkAction = React5.forwardRef(
1009
1165
  item.id
1010
1166
  )) })
1011
1167
  ] }),
1012
- /* @__PURE__ */ jsx5(
1168
+ /* @__PURE__ */ jsx6(
1013
1169
  "div",
1014
1170
  {
1015
1171
  ref: measureRef,
1016
1172
  "aria-hidden": true,
1017
1173
  className: "pointer-events-none absolute inset-0 flex items-center gap-base opacity-0 invisible",
1018
- children: actions.map((item) => /* @__PURE__ */ jsx5(ActionButton, { item, tabIndex: -1 }, `measure-${item.id}`))
1174
+ children: actions.map((item) => /* @__PURE__ */ jsx6(ActionButton, { item, tabIndex: -1 }, `measure-${item.id}`))
1019
1175
  }
1020
1176
  ),
1021
- /* @__PURE__ */ jsx5(
1177
+ /* @__PURE__ */ jsx6(
1022
1178
  "button",
1023
1179
  {
1024
1180
  ref: moreBtnMeasureRef,
1025
1181
  "aria-hidden": true,
1026
1182
  tabIndex: -1,
1027
1183
  className: "pointer-events-none absolute opacity-0 invisible h-8 w-8 min-w-8",
1028
- children: /* @__PURE__ */ jsx5(Icon5, { icon: faEllipsisOutline, size: "sm" })
1184
+ children: /* @__PURE__ */ jsx6(Icon5, { icon: faEllipsisOutline, size: "sm" })
1029
1185
  }
1030
1186
  )
1031
1187
  ]
1032
1188
  }
1033
1189
  ),
1034
- /* @__PURE__ */ jsx5(
1190
+ /* @__PURE__ */ jsx6(
1035
1191
  Button,
1036
1192
  {
1037
1193
  type: "button",
@@ -1051,7 +1207,7 @@ var BulkAction = React5.forwardRef(
1051
1207
  }
1052
1208
  );
1053
1209
  BulkAction.displayName = "BulkAction";
1054
- var ActionButton = ({ item, tabIndex }) => /* @__PURE__ */ jsx5(
1210
+ var ActionButton = ({ item, tabIndex }) => /* @__PURE__ */ jsx6(
1055
1211
  Button,
1056
1212
  {
1057
1213
  type: "button",
@@ -1067,67 +1223,6 @@ var ActionButton = ({ item, tabIndex }) => /* @__PURE__ */ jsx5(
1067
1223
  }
1068
1224
  );
1069
1225
 
1070
- // src/components/ui/tooltip.tsx
1071
- import * as React6 from "react";
1072
- import * as TooltipPrimitive from "@radix-ui/react-tooltip";
1073
- import { cva as cva3 } from "class-variance-authority";
1074
- import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
1075
- var tooltipContentVariants = cva3(
1076
- [
1077
- "inline-flex items-center z-50",
1078
- "gap-xs",
1079
- "px-base py-sm",
1080
- "rounded-lg",
1081
- "shadow-lg",
1082
- "text-sm",
1083
- "font-regular",
1084
- "leading-sm",
1085
- "data-[state=delayed-open]:animate-[tooltip-in_150ms_ease-out]",
1086
- "data-[state=instant-open]:animate-[tooltip-in_0ms]",
1087
- "data-[state=closed]:animate-[tooltip-out_100ms_ease-in]"
1088
- ],
1089
- {
1090
- variants: {
1091
- type: {
1092
- default: [
1093
- "bg-tooltip-default-bg",
1094
- "text-tooltip-default-text"
1095
- ],
1096
- invert: [
1097
- "bg-tooltip-invert-bg",
1098
- "text-tooltip-invert-text",
1099
- "border border-tooltip-invert-border"
1100
- ]
1101
- }
1102
- },
1103
- defaultVariants: {
1104
- type: "default"
1105
- }
1106
- }
1107
- );
1108
- var TooltipProvider = TooltipPrimitive.Provider;
1109
- var Tooltip = TooltipPrimitive.Root;
1110
- var TooltipTrigger = TooltipPrimitive.Trigger;
1111
- var TooltipContent = React6.forwardRef(({ className, type, hasArrow = true, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ jsx6(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs6(
1112
- TooltipPrimitive.Content,
1113
- {
1114
- ref,
1115
- sideOffset,
1116
- className: cn(tooltipContentVariants({ type, className })),
1117
- ...props,
1118
- children: [
1119
- children,
1120
- hasArrow && /* @__PURE__ */ jsx6(
1121
- TooltipPrimitive.Arrow,
1122
- {
1123
- className: type === "default" ? "fill-tooltip-default-bg" : "fill-tooltip-invert-bg"
1124
- }
1125
- )
1126
- ]
1127
- }
1128
- ) }));
1129
- TooltipContent.displayName = "TooltipContent";
1130
-
1131
1226
  // src/components/ui/truncated-text.tsx
1132
1227
  import * as React7 from "react";
1133
1228
  import * as TooltipPrimitive2 from "@radix-ui/react-tooltip";
@@ -3173,6 +3268,20 @@ var tagVariants = cva12(
3173
3268
  "text-tag-neutral-text"
3174
3269
  ]
3175
3270
  },
3271
+ // Categorical tones — soft style with a subtle border.
3272
+ // When `tone` is set it overrides `variant` (handled in the component).
3273
+ tone: {
3274
+ indigo: "bg-tag-indigo-bg text-tag-indigo-text border border-tag-indigo-border",
3275
+ rose: "bg-tag-rose-bg text-tag-rose-text border border-tag-rose-border",
3276
+ lime: "bg-tag-lime-bg text-tag-lime-text border border-tag-lime-border",
3277
+ violet: "bg-tag-violet-bg text-tag-violet-text border border-tag-violet-border",
3278
+ cyan: "bg-tag-cyan-bg text-tag-cyan-text border border-tag-cyan-border",
3279
+ orange: "bg-tag-orange-bg text-tag-orange-text border border-tag-orange-border",
3280
+ emerald: "bg-tag-emerald-bg text-tag-emerald-text border border-tag-emerald-border",
3281
+ fuchsia: "bg-tag-fuchsia-bg text-tag-fuchsia-text border border-tag-fuchsia-border",
3282
+ amber: "bg-tag-amber-bg text-tag-amber-text border border-tag-amber-border",
3283
+ slate: "bg-tag-slate-bg text-tag-slate-text border border-tag-slate-border"
3284
+ },
3176
3285
  size: {
3177
3286
  sm: [
3178
3287
  "p-xs",
@@ -3186,21 +3295,29 @@ var tagVariants = cva12(
3186
3295
  ]
3187
3296
  }
3188
3297
  },
3298
+ // variant default is applied in the component so `tone` can suppress it.
3189
3299
  defaultVariants: {
3190
- variant: "brand",
3191
3300
  size: "sm"
3192
3301
  }
3193
3302
  }
3194
3303
  );
3195
3304
  var iconSizeMap3 = { sm: "xs", md: "sm" };
3196
3305
  var Tag = React26.forwardRef(
3197
- ({ className, variant, size, icon, onClose, children, ...props }, ref) => {
3306
+ ({ className, variant, tone, size, icon, onClose, children, ...props }, ref) => {
3198
3307
  const iconSize = iconSizeMap3[size ?? "sm"];
3199
3308
  return /* @__PURE__ */ jsxs24(
3200
3309
  "span",
3201
3310
  {
3202
3311
  ref,
3203
- className: cn(tagVariants({ variant, size }), className),
3312
+ className: cn(
3313
+ tagVariants({
3314
+ // A categorical tone is self-contained and overrides variant.
3315
+ variant: tone != null ? void 0 : variant ?? "brand",
3316
+ tone,
3317
+ size
3318
+ }),
3319
+ className
3320
+ ),
3204
3321
  ...props,
3205
3322
  children: [
3206
3323
  icon && /* @__PURE__ */ jsx26(Icon17, { icon, size: iconSize, className: "shrink-0" }),
@@ -6348,10 +6465,11 @@ var SaveViewButton = React46.forwardRef(
6348
6465
  const sharedStyle = [
6349
6466
  "relative flex items-center justify-center",
6350
6467
  "min-h-[32px] max-h-[32px]",
6351
- "bg-gradient-to-t from-btn-solid-brand-bg-default from-[10%] to-btn-solid-brand-bg-gradient-to-default",
6352
- "border border-btn-solid-brand-border-default",
6468
+ "bg-gradient-to-t from-btn-outlined-neutral-bg-default from-[10%] to-btn-outlined-neutral-bg-gradient-to-default",
6469
+ "border border-btn-outlined-neutral-border-default",
6353
6470
  "shadow-sm cursor-pointer transition-colors",
6354
- "hover:from-btn-solid-brand-bg-hover hover:to-btn-solid-brand-bg-gradient-to-hover"
6471
+ "hover:from-btn-outlined-neutral-bg-hover hover:from-[0%] hover:to-btn-outlined-neutral-bg-gradient-to-hover",
6472
+ "hover:border-btn-outlined-neutral-border-hover"
6355
6473
  ];
6356
6474
  return /* @__PURE__ */ jsxs41(
6357
6475
  "div",
@@ -6360,7 +6478,7 @@ var SaveViewButton = React46.forwardRef(
6360
6478
  className: cn("flex items-center", className),
6361
6479
  ...props,
6362
6480
  children: [
6363
- /* @__PURE__ */ jsxs41(
6481
+ /* @__PURE__ */ jsx46(
6364
6482
  "button",
6365
6483
  {
6366
6484
  type: "button",
@@ -6370,33 +6488,28 @@ var SaveViewButton = React46.forwardRef(
6370
6488
  "gap-sm px-base py-sm min-w-[80px]",
6371
6489
  "rounded-l-md -mr-px"
6372
6490
  ),
6373
- children: [
6374
- /* @__PURE__ */ jsx46("span", { className: "text-sm font-medium leading-sm whitespace-nowrap text-btn-solid-brand-text-default", children: label }),
6375
- /* @__PURE__ */ jsx46("span", { className: "absolute inset-0 rounded-l-[9px] border border-btn-solid-brand-inner-border-default shadow-sm pointer-events-none" })
6376
- ]
6491
+ children: /* @__PURE__ */ jsx46("span", { className: "text-sm font-medium leading-sm whitespace-nowrap text-btn-outlined-neutral-text-default", children: label })
6377
6492
  }
6378
6493
  ),
6379
- /* @__PURE__ */ jsxs41(
6494
+ /* @__PURE__ */ jsx46(
6380
6495
  "button",
6381
6496
  {
6382
6497
  type: "button",
6383
6498
  onClick: onDropdown,
6499
+ "aria-label": "More save options",
6384
6500
  className: cn(
6385
6501
  sharedStyle,
6386
6502
  "p-sm",
6387
6503
  "rounded-r-md -ml-px"
6388
6504
  ),
6389
- children: [
6390
- /* @__PURE__ */ jsx46(
6391
- Icon28,
6392
- {
6393
- icon: faChevronDownOutline,
6394
- size: "sm",
6395
- className: "text-btn-solid-brand-text-default"
6396
- }
6397
- ),
6398
- /* @__PURE__ */ jsx46("span", { className: "absolute inset-0 rounded-r-[9px] border border-btn-solid-brand-inner-border-default shadow-sm pointer-events-none" })
6399
- ]
6505
+ children: /* @__PURE__ */ jsx46(
6506
+ Icon28,
6507
+ {
6508
+ icon: faChevronDownOutline,
6509
+ size: "sm",
6510
+ className: "text-btn-outlined-neutral-text-default"
6511
+ }
6512
+ )
6400
6513
  }
6401
6514
  )
6402
6515
  ]