@l3mpire/ui 3.2.1 → 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/USAGE.md +8 -3
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +249 -179
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +250 -180
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/src/styles/globals.css +61 -31
package/dist/index.js
CHANGED
|
@@ -202,7 +202,7 @@ function cn(...inputs) {
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
// src/components/ui/browser-tab.tsx
|
|
205
|
-
var
|
|
205
|
+
var React4 = __toESM(require("react"));
|
|
206
206
|
var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"));
|
|
207
207
|
var import_icons3 = require("@l3mpire/icons");
|
|
208
208
|
|
|
@@ -231,19 +231,19 @@ var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
|
231
231
|
warning: "",
|
|
232
232
|
neutral: ""
|
|
233
233
|
},
|
|
234
|
-
// Categorical
|
|
235
|
-
//
|
|
234
|
+
// Categorical palette. Colors come from {variant, tone} compound variants below,
|
|
235
|
+
// so a tone combines with solid / light / outlined just like `type` does.
|
|
236
236
|
tone: {
|
|
237
|
-
indigo: "
|
|
238
|
-
rose: "
|
|
239
|
-
lime: "
|
|
240
|
-
violet: "
|
|
241
|
-
cyan: "
|
|
242
|
-
orange: "
|
|
243
|
-
emerald: "
|
|
244
|
-
fuchsia: "
|
|
245
|
-
amber: "
|
|
246
|
-
slate: "
|
|
237
|
+
indigo: "",
|
|
238
|
+
rose: "",
|
|
239
|
+
lime: "",
|
|
240
|
+
violet: "",
|
|
241
|
+
cyan: "",
|
|
242
|
+
orange: "",
|
|
243
|
+
emerald: "",
|
|
244
|
+
fuchsia: "",
|
|
245
|
+
amber: "",
|
|
246
|
+
slate: ""
|
|
247
247
|
},
|
|
248
248
|
size: {
|
|
249
249
|
sm: [
|
|
@@ -281,9 +281,40 @@ var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
|
281
281
|
{ variant: "outlined", type: "success", class: "border-badge-outlined-success-border text-badge-outlined-success-text" },
|
|
282
282
|
{ variant: "outlined", type: "critical", class: "border-badge-outlined-critical-border text-badge-outlined-critical-text" },
|
|
283
283
|
{ variant: "outlined", type: "warning", class: "border-badge-outlined-warning-border text-badge-outlined-warning-text" },
|
|
284
|
-
{ variant: "outlined", type: "neutral", class: "border-badge-outlined-neutral-border text-badge-outlined-neutral-text" }
|
|
284
|
+
{ variant: "outlined", type: "neutral", class: "border-badge-outlined-neutral-border text-badge-outlined-neutral-text" },
|
|
285
|
+
// ── Categorical tones × variant ──────────────────────────────────────
|
|
286
|
+
{ variant: "solid", tone: "indigo", class: "bg-badge-solid-indigo-bg text-badge-solid-indigo-text" },
|
|
287
|
+
{ variant: "solid", tone: "rose", class: "bg-badge-solid-rose-bg text-badge-solid-rose-text" },
|
|
288
|
+
{ variant: "solid", tone: "lime", class: "bg-badge-solid-lime-bg text-badge-solid-lime-text" },
|
|
289
|
+
{ variant: "solid", tone: "violet", class: "bg-badge-solid-violet-bg text-badge-solid-violet-text" },
|
|
290
|
+
{ variant: "solid", tone: "cyan", class: "bg-badge-solid-cyan-bg text-badge-solid-cyan-text" },
|
|
291
|
+
{ variant: "solid", tone: "orange", class: "bg-badge-solid-orange-bg text-badge-solid-orange-text" },
|
|
292
|
+
{ variant: "solid", tone: "emerald", class: "bg-badge-solid-emerald-bg text-badge-solid-emerald-text" },
|
|
293
|
+
{ variant: "solid", tone: "fuchsia", class: "bg-badge-solid-fuchsia-bg text-badge-solid-fuchsia-text" },
|
|
294
|
+
{ variant: "solid", tone: "amber", class: "bg-badge-solid-amber-bg text-badge-solid-amber-text" },
|
|
295
|
+
{ variant: "solid", tone: "slate", class: "bg-badge-solid-slate-bg text-badge-solid-slate-text" },
|
|
296
|
+
{ variant: "light", tone: "indigo", class: "bg-badge-light-indigo-bg text-badge-light-indigo-text" },
|
|
297
|
+
{ variant: "light", tone: "rose", class: "bg-badge-light-rose-bg text-badge-light-rose-text" },
|
|
298
|
+
{ variant: "light", tone: "lime", class: "bg-badge-light-lime-bg text-badge-light-lime-text" },
|
|
299
|
+
{ variant: "light", tone: "violet", class: "bg-badge-light-violet-bg text-badge-light-violet-text" },
|
|
300
|
+
{ variant: "light", tone: "cyan", class: "bg-badge-light-cyan-bg text-badge-light-cyan-text" },
|
|
301
|
+
{ variant: "light", tone: "orange", class: "bg-badge-light-orange-bg text-badge-light-orange-text" },
|
|
302
|
+
{ variant: "light", tone: "emerald", class: "bg-badge-light-emerald-bg text-badge-light-emerald-text" },
|
|
303
|
+
{ variant: "light", tone: "fuchsia", class: "bg-badge-light-fuchsia-bg text-badge-light-fuchsia-text" },
|
|
304
|
+
{ variant: "light", tone: "amber", class: "bg-badge-light-amber-bg text-badge-light-amber-text" },
|
|
305
|
+
{ variant: "light", tone: "slate", class: "bg-badge-light-slate-bg text-badge-light-slate-text" },
|
|
306
|
+
{ variant: "outlined", tone: "indigo", class: "border-badge-outlined-indigo-border text-badge-outlined-indigo-text" },
|
|
307
|
+
{ variant: "outlined", tone: "rose", class: "border-badge-outlined-rose-border text-badge-outlined-rose-text" },
|
|
308
|
+
{ variant: "outlined", tone: "lime", class: "border-badge-outlined-lime-border text-badge-outlined-lime-text" },
|
|
309
|
+
{ variant: "outlined", tone: "violet", class: "border-badge-outlined-violet-border text-badge-outlined-violet-text" },
|
|
310
|
+
{ variant: "outlined", tone: "cyan", class: "border-badge-outlined-cyan-border text-badge-outlined-cyan-text" },
|
|
311
|
+
{ variant: "outlined", tone: "orange", class: "border-badge-outlined-orange-border text-badge-outlined-orange-text" },
|
|
312
|
+
{ variant: "outlined", tone: "emerald", class: "border-badge-outlined-emerald-border text-badge-outlined-emerald-text" },
|
|
313
|
+
{ variant: "outlined", tone: "fuchsia", class: "border-badge-outlined-fuchsia-border text-badge-outlined-fuchsia-text" },
|
|
314
|
+
{ variant: "outlined", tone: "amber", class: "border-badge-outlined-amber-border text-badge-outlined-amber-text" },
|
|
315
|
+
{ variant: "outlined", tone: "slate", class: "border-badge-outlined-slate-border text-badge-outlined-slate-text" }
|
|
285
316
|
],
|
|
286
|
-
// variant/type defaults are applied in the component so `tone` can suppress
|
|
317
|
+
// variant/type defaults are applied in the component so `tone` can suppress `type`.
|
|
287
318
|
defaultVariants: {
|
|
288
319
|
size: "md"
|
|
289
320
|
}
|
|
@@ -291,16 +322,15 @@ var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
|
291
322
|
);
|
|
292
323
|
var Badge = React.forwardRef(
|
|
293
324
|
({ className, variant, type, tone, size, icon, children, ...props }, ref) => {
|
|
294
|
-
const tonal = tone != null;
|
|
295
325
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
296
326
|
"span",
|
|
297
327
|
{
|
|
298
328
|
ref,
|
|
299
329
|
className: cn(
|
|
300
330
|
badgeVariants({
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
type:
|
|
331
|
+
variant: variant ?? "solid",
|
|
332
|
+
// `tone` and `type` share the color axis — when a tone is set it wins.
|
|
333
|
+
type: tone != null ? void 0 : type ?? "primary",
|
|
304
334
|
tone,
|
|
305
335
|
size
|
|
306
336
|
}),
|
|
@@ -573,17 +603,78 @@ var Button = React2.forwardRef(
|
|
|
573
603
|
);
|
|
574
604
|
Button.displayName = "Button";
|
|
575
605
|
|
|
576
|
-
// src/components/ui/
|
|
606
|
+
// src/components/ui/tooltip.tsx
|
|
607
|
+
var React3 = __toESM(require("react"));
|
|
608
|
+
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
|
609
|
+
var import_class_variance_authority3 = require("class-variance-authority");
|
|
577
610
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
578
|
-
var
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
611
|
+
var tooltipContentVariants = (0, import_class_variance_authority3.cva)(
|
|
612
|
+
[
|
|
613
|
+
"inline-flex items-center z-50",
|
|
614
|
+
"gap-xs",
|
|
615
|
+
"px-base py-sm",
|
|
616
|
+
"rounded-lg",
|
|
617
|
+
"shadow-lg",
|
|
618
|
+
"text-sm",
|
|
619
|
+
"font-regular",
|
|
620
|
+
"leading-sm",
|
|
621
|
+
"data-[state=delayed-open]:animate-[tooltip-in_150ms_ease-out]",
|
|
622
|
+
"data-[state=instant-open]:animate-[tooltip-in_0ms]",
|
|
623
|
+
"data-[state=closed]:animate-[tooltip-out_100ms_ease-in]"
|
|
624
|
+
],
|
|
625
|
+
{
|
|
626
|
+
variants: {
|
|
627
|
+
type: {
|
|
628
|
+
default: [
|
|
629
|
+
"bg-tooltip-default-bg",
|
|
630
|
+
"text-tooltip-default-text"
|
|
631
|
+
],
|
|
632
|
+
invert: [
|
|
633
|
+
"bg-tooltip-invert-bg",
|
|
634
|
+
"text-tooltip-invert-text",
|
|
635
|
+
"border border-tooltip-invert-border"
|
|
636
|
+
]
|
|
637
|
+
}
|
|
638
|
+
},
|
|
639
|
+
defaultVariants: {
|
|
640
|
+
type: "default"
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
);
|
|
644
|
+
var TooltipProvider = TooltipPrimitive.Provider;
|
|
645
|
+
var Tooltip = TooltipPrimitive.Root;
|
|
646
|
+
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
647
|
+
var TooltipContent = React3.forwardRef(({ className, type, hasArrow = true, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
648
|
+
TooltipPrimitive.Content,
|
|
649
|
+
{
|
|
650
|
+
ref,
|
|
651
|
+
sideOffset,
|
|
652
|
+
className: cn(tooltipContentVariants({ type, className })),
|
|
653
|
+
...props,
|
|
654
|
+
children: [
|
|
655
|
+
children,
|
|
656
|
+
hasArrow && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
657
|
+
TooltipPrimitive.Arrow,
|
|
658
|
+
{
|
|
659
|
+
className: type === "default" ? "fill-tooltip-default-bg" : "fill-tooltip-invert-bg"
|
|
660
|
+
}
|
|
661
|
+
)
|
|
662
|
+
]
|
|
663
|
+
}
|
|
664
|
+
) }));
|
|
665
|
+
TooltipContent.displayName = "TooltipContent";
|
|
666
|
+
|
|
667
|
+
// src/components/ui/browser-tab.tsx
|
|
668
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
669
|
+
var BrowserTabContext = React4.createContext(null);
|
|
670
|
+
var BrowserTabItem = React4.forwardRef(
|
|
671
|
+
({ className, icon, label, badge, isActive = false, pinned = false, isEditable = false, onEdit, onClose, onRename, ...props }, ref) => {
|
|
672
|
+
const [isHovered, setIsHovered] = React4.useState(false);
|
|
673
|
+
const [isEditing, setIsEditing] = React4.useState(false);
|
|
674
|
+
const [editValue, setEditValue] = React4.useState(label);
|
|
675
|
+
const inputRef = React4.useRef(null);
|
|
676
|
+
const ctx = React4.useContext(BrowserTabContext);
|
|
677
|
+
React4.useEffect(() => {
|
|
587
678
|
if (isEditing && inputRef.current) {
|
|
588
679
|
inputRef.current.focus();
|
|
589
680
|
inputRef.current.select();
|
|
@@ -612,7 +703,7 @@ var BrowserTabItem = React3.forwardRef(
|
|
|
612
703
|
const isDragged = ctx?.draggable && ctx.dragIndex === ctx.itemIndex;
|
|
613
704
|
const isDropTarget = ctx?.draggable && ctx.dropIndex === ctx.itemIndex && ctx.dragIndex !== ctx.itemIndex;
|
|
614
705
|
const showGrip = ctx?.draggable && isHovered;
|
|
615
|
-
|
|
706
|
+
const tab = /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
616
707
|
"div",
|
|
617
708
|
{
|
|
618
709
|
ref,
|
|
@@ -629,15 +720,15 @@ var BrowserTabItem = React3.forwardRef(
|
|
|
629
720
|
...dragProps,
|
|
630
721
|
...props,
|
|
631
722
|
children: [
|
|
632
|
-
/* @__PURE__ */ (0,
|
|
723
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
633
724
|
"div",
|
|
634
725
|
{
|
|
635
726
|
className: cn(
|
|
636
|
-
"flex items-center gap-base px-xs py-2xs transition-[background-color,border-radius,box-shadow]",
|
|
727
|
+
"relative flex items-center gap-base px-xs py-2xs transition-[background-color,border-radius,box-shadow]",
|
|
637
728
|
isHovered && !isActive ? "bg-browser-tab-item-hover-bg rounded-sm shadow-sm" : "bg-browser-tab-item-bg rounded-base"
|
|
638
729
|
),
|
|
639
730
|
children: [
|
|
640
|
-
icon && /* @__PURE__ */ (0,
|
|
731
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
641
732
|
import_icons3.Icon,
|
|
642
733
|
{
|
|
643
734
|
icon: showGrip ? import_icons3.faGripDotsVerticalSolid : icon,
|
|
@@ -647,7 +738,7 @@ var BrowserTabItem = React3.forwardRef(
|
|
|
647
738
|
)
|
|
648
739
|
}
|
|
649
740
|
) }),
|
|
650
|
-
isEditing ? /* @__PURE__ */ (0,
|
|
741
|
+
isEditing ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
651
742
|
"input",
|
|
652
743
|
{
|
|
653
744
|
ref: inputRef,
|
|
@@ -666,7 +757,7 @@ var BrowserTabItem = React3.forwardRef(
|
|
|
666
757
|
),
|
|
667
758
|
style: { width: `${Math.max(editValue.length + 1, 2)}ch` }
|
|
668
759
|
}
|
|
669
|
-
) : /* @__PURE__ */ (0,
|
|
760
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
670
761
|
"span",
|
|
671
762
|
{
|
|
672
763
|
className: cn(
|
|
@@ -683,46 +774,86 @@ var BrowserTabItem = React3.forwardRef(
|
|
|
683
774
|
children: label
|
|
684
775
|
}
|
|
685
776
|
),
|
|
686
|
-
badge && /* @__PURE__ */ (0,
|
|
687
|
-
onClose && /* @__PURE__ */ (0,
|
|
688
|
-
"
|
|
777
|
+
badge && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Badge, { variant: "light", type: "neutral", size: "sm", children: badge }),
|
|
778
|
+
!pinned && (isEditable || onClose) && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
779
|
+
"div",
|
|
689
780
|
{
|
|
690
|
-
|
|
691
|
-
e.stopPropagation();
|
|
692
|
-
onClose(e);
|
|
693
|
-
},
|
|
781
|
+
"aria-hidden": !isHovered,
|
|
694
782
|
className: cn(
|
|
695
|
-
"
|
|
696
|
-
|
|
783
|
+
"absolute right-0 top-0 bottom-0 flex items-center justify-end gap-2xs pl-2xl pr-2xs",
|
|
784
|
+
"transition-opacity duration-150 bg-gradient-to-l from-[72%] to-transparent",
|
|
785
|
+
isActive ? "from-browser-tab-item-bg rounded-r-base" : "from-browser-tab-item-hover-bg rounded-r-sm",
|
|
786
|
+
isHovered ? "opacity-100" : "opacity-0 pointer-events-none"
|
|
697
787
|
),
|
|
698
|
-
|
|
699
|
-
|
|
788
|
+
children: [
|
|
789
|
+
isEditable && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
790
|
+
"button",
|
|
791
|
+
{
|
|
792
|
+
onClick: (e) => {
|
|
793
|
+
e.stopPropagation();
|
|
794
|
+
onEdit?.(e);
|
|
795
|
+
},
|
|
796
|
+
tabIndex: isHovered ? 0 : -1,
|
|
797
|
+
className: cn(
|
|
798
|
+
"shrink-0 flex items-center justify-center cursor-pointer rounded-2xs p-2xs",
|
|
799
|
+
"hover:bg-black/5 transition-colors",
|
|
800
|
+
isActive ? "text-browser-tab-item-active-icon" : "text-browser-tab-item-inactive-icon"
|
|
801
|
+
),
|
|
802
|
+
"aria-label": `Edit ${label}`,
|
|
803
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icons3.Icon, { icon: import_icons3.faPenOutline, size: "xs" })
|
|
804
|
+
}
|
|
805
|
+
),
|
|
806
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
807
|
+
"button",
|
|
808
|
+
{
|
|
809
|
+
onClick: (e) => {
|
|
810
|
+
e.stopPropagation();
|
|
811
|
+
onClose(e);
|
|
812
|
+
},
|
|
813
|
+
tabIndex: isHovered ? 0 : -1,
|
|
814
|
+
className: cn(
|
|
815
|
+
"shrink-0 flex items-center justify-center cursor-pointer rounded-2xs p-2xs",
|
|
816
|
+
"hover:bg-black/5 transition-colors",
|
|
817
|
+
isActive ? "text-browser-tab-item-active-icon" : "text-browser-tab-item-inactive-icon"
|
|
818
|
+
),
|
|
819
|
+
"aria-label": `Close ${label}`,
|
|
820
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icons3.Icon, { icon: import_icons3.faXmarkOutline, size: "xs" })
|
|
821
|
+
}
|
|
822
|
+
)
|
|
823
|
+
]
|
|
700
824
|
}
|
|
701
825
|
)
|
|
702
826
|
]
|
|
703
827
|
}
|
|
704
828
|
),
|
|
705
|
-
isActive && /* @__PURE__ */ (0,
|
|
706
|
-
/* @__PURE__ */ (0,
|
|
707
|
-
/* @__PURE__ */ (0,
|
|
708
|
-
/* @__PURE__ */ (0,
|
|
709
|
-
/* @__PURE__ */ (0,
|
|
710
|
-
/* @__PURE__ */ (0,
|
|
829
|
+
isActive && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
830
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 left-[-1px] w-px h-[8px] bg-browser-tab-item-bg" }),
|
|
831
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 right-[-1px] w-px h-[8px] bg-browser-tab-item-bg" }),
|
|
832
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 left-[-8px] size-[8px]", children: [
|
|
833
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "absolute bottom-0 left-0 right-0 h-px bg-browser-tab-item-bg" }),
|
|
834
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "absolute inset-0 rounded-br-[8px] border-b border-r border-solid border-browser-tab-item-border" })
|
|
711
835
|
] }),
|
|
712
|
-
/* @__PURE__ */ (0,
|
|
713
|
-
/* @__PURE__ */ (0,
|
|
714
|
-
/* @__PURE__ */ (0,
|
|
836
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { "aria-hidden": true, className: "pointer-events-none absolute bottom-0 right-[-8px] size-[8px]", children: [
|
|
837
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "absolute bottom-0 left-0 right-0 h-px bg-browser-tab-item-bg" }),
|
|
838
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "absolute inset-0 rounded-bl-[8px] border-b border-l border-solid border-browser-tab-item-border" })
|
|
715
839
|
] })
|
|
716
840
|
] })
|
|
717
841
|
]
|
|
718
842
|
}
|
|
719
843
|
);
|
|
844
|
+
if (pinned) {
|
|
845
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(Tooltip, { children: [
|
|
846
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TooltipTrigger, { asChild: true, children: tab }),
|
|
847
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TooltipContent, { side: "bottom", hasArrow: false, children: "Pinned tab" })
|
|
848
|
+
] }) });
|
|
849
|
+
}
|
|
850
|
+
return tab;
|
|
720
851
|
}
|
|
721
852
|
);
|
|
722
853
|
BrowserTabItem.displayName = "BrowserTabItem";
|
|
723
854
|
function useOverflowDetection(containerRef, childCount) {
|
|
724
|
-
const [visibleCount, setVisibleCount] =
|
|
725
|
-
|
|
855
|
+
const [visibleCount, setVisibleCount] = React4.useState(childCount);
|
|
856
|
+
React4.useEffect(() => {
|
|
726
857
|
const container = containerRef.current;
|
|
727
858
|
if (!container) return;
|
|
728
859
|
const measure = () => {
|
|
@@ -750,12 +881,12 @@ function useOverflowDetection(containerRef, childCount) {
|
|
|
750
881
|
}, [containerRef, childCount]);
|
|
751
882
|
return visibleCount;
|
|
752
883
|
}
|
|
753
|
-
var BrowserTab =
|
|
884
|
+
var BrowserTab = React4.forwardRef(
|
|
754
885
|
({ className, children, onAddTab, draggable = false, onReorder, onOverflowSelect, ...props }, ref) => {
|
|
755
|
-
const [dragIndex, setDragIndex] =
|
|
756
|
-
const [dropIndex, setDropIndex] =
|
|
757
|
-
const tabsContainerRef =
|
|
758
|
-
const childArray =
|
|
886
|
+
const [dragIndex, setDragIndex] = React4.useState(null);
|
|
887
|
+
const [dropIndex, setDropIndex] = React4.useState(null);
|
|
888
|
+
const tabsContainerRef = React4.useRef(null);
|
|
889
|
+
const childArray = React4.Children.toArray(children).filter(React4.isValidElement);
|
|
759
890
|
const visibleCount = useOverflowDetection(tabsContainerRef, childArray.length);
|
|
760
891
|
const hasOverflow = visibleCount < childArray.length;
|
|
761
892
|
const ctxBase = {
|
|
@@ -789,7 +920,7 @@ var BrowserTab = React3.forwardRef(
|
|
|
789
920
|
isActive: childProps.isActive
|
|
790
921
|
};
|
|
791
922
|
});
|
|
792
|
-
return /* @__PURE__ */ (0,
|
|
923
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
793
924
|
"div",
|
|
794
925
|
{
|
|
795
926
|
ref,
|
|
@@ -799,15 +930,15 @@ var BrowserTab = React3.forwardRef(
|
|
|
799
930
|
),
|
|
800
931
|
...props,
|
|
801
932
|
children: [
|
|
802
|
-
/* @__PURE__ */ (0,
|
|
933
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
803
934
|
"div",
|
|
804
935
|
{
|
|
805
936
|
ref: tabsContainerRef,
|
|
806
937
|
className: "flex items-center flex-1 min-w-0 pl-base",
|
|
807
938
|
style: { overflowX: "clip", overflowY: "visible" },
|
|
808
939
|
children: [
|
|
809
|
-
childArray.map((child, index) => /* @__PURE__ */ (0,
|
|
810
|
-
onAddTab && !hasOverflow && /* @__PURE__ */ (0,
|
|
940
|
+
childArray.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(BrowserTabContext.Provider, { value: { ...ctxBase, itemIndex: index }, children: child }, index)),
|
|
941
|
+
onAddTab && !hasOverflow && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
811
942
|
Button,
|
|
812
943
|
{
|
|
813
944
|
className: "ml-base",
|
|
@@ -823,8 +954,8 @@ var BrowserTab = React3.forwardRef(
|
|
|
823
954
|
]
|
|
824
955
|
}
|
|
825
956
|
),
|
|
826
|
-
hasOverflow && /* @__PURE__ */ (0,
|
|
827
|
-
/* @__PURE__ */ (0,
|
|
957
|
+
hasOverflow && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(DropdownMenuPrimitive.Root, { children: [
|
|
958
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenuPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
828
959
|
Button,
|
|
829
960
|
{
|
|
830
961
|
className: "mb-sm",
|
|
@@ -836,7 +967,7 @@ var BrowserTab = React3.forwardRef(
|
|
|
836
967
|
"aria-label": "Show more tabs"
|
|
837
968
|
}
|
|
838
969
|
) }),
|
|
839
|
-
/* @__PURE__ */ (0,
|
|
970
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
840
971
|
DropdownMenuPrimitive.Content,
|
|
841
972
|
{
|
|
842
973
|
sideOffset: 4,
|
|
@@ -848,7 +979,7 @@ var BrowserTab = React3.forwardRef(
|
|
|
848
979
|
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
849
980
|
"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2"
|
|
850
981
|
),
|
|
851
|
-
children: hiddenItems.map((item) => /* @__PURE__ */ (0,
|
|
982
|
+
children: hiddenItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
852
983
|
DropdownMenuPrimitive.Item,
|
|
853
984
|
{
|
|
854
985
|
className: cn(
|
|
@@ -861,7 +992,7 @@ var BrowserTab = React3.forwardRef(
|
|
|
861
992
|
}
|
|
862
993
|
},
|
|
863
994
|
children: [
|
|
864
|
-
item.icon && /* @__PURE__ */ (0,
|
|
995
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
865
996
|
import_icons3.Icon,
|
|
866
997
|
{
|
|
867
998
|
icon: item.icon,
|
|
@@ -871,7 +1002,7 @@ var BrowserTab = React3.forwardRef(
|
|
|
871
1002
|
)
|
|
872
1003
|
}
|
|
873
1004
|
),
|
|
874
|
-
/* @__PURE__ */ (0,
|
|
1005
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
875
1006
|
"span",
|
|
876
1007
|
{
|
|
877
1008
|
className: cn(
|
|
@@ -881,7 +1012,7 @@ var BrowserTab = React3.forwardRef(
|
|
|
881
1012
|
children: item.label
|
|
882
1013
|
}
|
|
883
1014
|
),
|
|
884
|
-
item.badge && /* @__PURE__ */ (0,
|
|
1015
|
+
item.badge && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Badge, { variant: "light", type: "neutral", size: "sm", children: item.badge })
|
|
885
1016
|
]
|
|
886
1017
|
},
|
|
887
1018
|
item.index
|
|
@@ -889,7 +1020,7 @@ var BrowserTab = React3.forwardRef(
|
|
|
889
1020
|
}
|
|
890
1021
|
) })
|
|
891
1022
|
] }),
|
|
892
|
-
onAddTab && hasOverflow && /* @__PURE__ */ (0,
|
|
1023
|
+
onAddTab && hasOverflow && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
893
1024
|
Button,
|
|
894
1025
|
{
|
|
895
1026
|
className: "mb-sm",
|
|
@@ -910,14 +1041,14 @@ var BrowserTab = React3.forwardRef(
|
|
|
910
1041
|
BrowserTab.displayName = "BrowserTab";
|
|
911
1042
|
|
|
912
1043
|
// src/components/ui/bulk-action.tsx
|
|
913
|
-
var
|
|
1044
|
+
var React6 = __toESM(require("react"));
|
|
914
1045
|
var import_icons5 = require("@l3mpire/icons");
|
|
915
1046
|
|
|
916
1047
|
// src/components/ui/dropdown-menu.tsx
|
|
917
|
-
var
|
|
1048
|
+
var React5 = __toESM(require("react"));
|
|
918
1049
|
var DropdownMenuPrimitive2 = __toESM(require("@radix-ui/react-dropdown-menu"));
|
|
919
1050
|
var import_icons4 = require("@l3mpire/icons");
|
|
920
|
-
var
|
|
1051
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
921
1052
|
var textSm = "text-sm font-regular leading-sm";
|
|
922
1053
|
var textXs = "text-xs font-regular leading-xs";
|
|
923
1054
|
var textXsMedium = "text-xs font-medium leading-xs";
|
|
@@ -930,13 +1061,13 @@ var containerStyle = [
|
|
|
930
1061
|
"p-xs",
|
|
931
1062
|
"shadow-lg"
|
|
932
1063
|
];
|
|
933
|
-
var DropdownMenu =
|
|
934
|
-
({ className, children, ...props }, ref) => /* @__PURE__ */ (0,
|
|
1064
|
+
var DropdownMenu = React5.forwardRef(
|
|
1065
|
+
({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { ref, className: cn(containerStyle, className), ...props, children })
|
|
935
1066
|
);
|
|
936
1067
|
DropdownMenu.displayName = "DropdownMenu";
|
|
937
1068
|
var DropdownMenuRoot = DropdownMenuPrimitive2.Root;
|
|
938
1069
|
var DropdownMenuTrigger = DropdownMenuPrimitive2.Trigger;
|
|
939
|
-
var DropdownMenuContent =
|
|
1070
|
+
var DropdownMenuContent = React5.forwardRef(({ className, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(DropdownMenuPrimitive2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
940
1071
|
DropdownMenuPrimitive2.Content,
|
|
941
1072
|
{
|
|
942
1073
|
ref,
|
|
@@ -955,12 +1086,12 @@ var DropdownMenuContent = React4.forwardRef(({ className, sideOffset = 4, childr
|
|
|
955
1086
|
}
|
|
956
1087
|
) }));
|
|
957
1088
|
DropdownMenuContent.displayName = "DropdownMenuContent";
|
|
958
|
-
var DropdownMenuList =
|
|
959
|
-
({ className, children, ...props }, ref) => /* @__PURE__ */ (0,
|
|
1089
|
+
var DropdownMenuList = React5.forwardRef(
|
|
1090
|
+
({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { ref, className: cn("flex flex-col", className), role: "listbox", ...props, children })
|
|
960
1091
|
);
|
|
961
1092
|
DropdownMenuList.displayName = "DropdownMenuList";
|
|
962
1093
|
var itemStyle = "flex items-center gap-base p-base rounded-base cursor-pointer hover:bg-dropdown-item-hover";
|
|
963
|
-
var DropdownMenuItem =
|
|
1094
|
+
var DropdownMenuItem = React5.forwardRef(
|
|
964
1095
|
({
|
|
965
1096
|
className,
|
|
966
1097
|
icon,
|
|
@@ -975,7 +1106,7 @@ var DropdownMenuItem = React4.forwardRef(
|
|
|
975
1106
|
onClick,
|
|
976
1107
|
...props
|
|
977
1108
|
}, ref) => {
|
|
978
|
-
const handleClick =
|
|
1109
|
+
const handleClick = React5.useCallback(
|
|
979
1110
|
(e) => {
|
|
980
1111
|
const target = e.target;
|
|
981
1112
|
if (!target.closest("button[role='checkbox']")) {
|
|
@@ -988,7 +1119,7 @@ var DropdownMenuItem = React4.forwardRef(
|
|
|
988
1119
|
},
|
|
989
1120
|
[onClick]
|
|
990
1121
|
);
|
|
991
|
-
return /* @__PURE__ */ (0,
|
|
1122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
992
1123
|
"div",
|
|
993
1124
|
{
|
|
994
1125
|
ref,
|
|
@@ -1005,7 +1136,7 @@ var DropdownMenuItem = React4.forwardRef(
|
|
|
1005
1136
|
children,
|
|
1006
1137
|
avatar,
|
|
1007
1138
|
flag,
|
|
1008
|
-
icon && /* @__PURE__ */ (0,
|
|
1139
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1009
1140
|
import_icons4.Icon,
|
|
1010
1141
|
{
|
|
1011
1142
|
icon,
|
|
@@ -1013,9 +1144,9 @@ var DropdownMenuItem = React4.forwardRef(
|
|
|
1013
1144
|
className: "shrink-0 text-dropdown-item-icon"
|
|
1014
1145
|
}
|
|
1015
1146
|
),
|
|
1016
|
-
/* @__PURE__ */ (0,
|
|
1017
|
-
/* @__PURE__ */ (0,
|
|
1018
|
-
description && /* @__PURE__ */ (0,
|
|
1147
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-1 items-center gap-sm min-w-0", children: [
|
|
1148
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn("truncate shrink-0", textSm, "text-dropdown-item-text"), children: label }),
|
|
1149
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn("truncate", textXs, "text-dropdown-item-secondary"), children: description })
|
|
1019
1150
|
] }),
|
|
1020
1151
|
badge,
|
|
1021
1152
|
action
|
|
@@ -1025,7 +1156,7 @@ var DropdownMenuItem = React4.forwardRef(
|
|
|
1025
1156
|
}
|
|
1026
1157
|
);
|
|
1027
1158
|
DropdownMenuItem.displayName = "DropdownMenuItem";
|
|
1028
|
-
var DropdownMenuRadixItem =
|
|
1159
|
+
var DropdownMenuRadixItem = React5.forwardRef(
|
|
1029
1160
|
({
|
|
1030
1161
|
className,
|
|
1031
1162
|
icon,
|
|
@@ -1037,7 +1168,7 @@ var DropdownMenuRadixItem = React4.forwardRef(
|
|
|
1037
1168
|
action,
|
|
1038
1169
|
children,
|
|
1039
1170
|
...props
|
|
1040
|
-
}, ref) => /* @__PURE__ */ (0,
|
|
1171
|
+
}, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1041
1172
|
DropdownMenuPrimitive2.Item,
|
|
1042
1173
|
{
|
|
1043
1174
|
ref,
|
|
@@ -1051,7 +1182,7 @@ var DropdownMenuRadixItem = React4.forwardRef(
|
|
|
1051
1182
|
children,
|
|
1052
1183
|
avatar,
|
|
1053
1184
|
flag,
|
|
1054
|
-
icon && /* @__PURE__ */ (0,
|
|
1185
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1055
1186
|
import_icons4.Icon,
|
|
1056
1187
|
{
|
|
1057
1188
|
icon,
|
|
@@ -1059,9 +1190,9 @@ var DropdownMenuRadixItem = React4.forwardRef(
|
|
|
1059
1190
|
className: "shrink-0 text-dropdown-item-icon"
|
|
1060
1191
|
}
|
|
1061
1192
|
),
|
|
1062
|
-
/* @__PURE__ */ (0,
|
|
1063
|
-
/* @__PURE__ */ (0,
|
|
1064
|
-
description && /* @__PURE__ */ (0,
|
|
1193
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-1 items-center gap-sm min-w-0", children: [
|
|
1194
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn("truncate shrink-0", textSm, "text-dropdown-item-text"), children: label }),
|
|
1195
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn("truncate", textXs, "text-dropdown-item-secondary"), children: description })
|
|
1065
1196
|
] }),
|
|
1066
1197
|
badge,
|
|
1067
1198
|
action
|
|
@@ -1070,7 +1201,7 @@ var DropdownMenuRadixItem = React4.forwardRef(
|
|
|
1070
1201
|
)
|
|
1071
1202
|
);
|
|
1072
1203
|
DropdownMenuRadixItem.displayName = "DropdownMenuRadixItem";
|
|
1073
|
-
var DropdownMenuHeading =
|
|
1204
|
+
var DropdownMenuHeading = React5.forwardRef(({ className, action, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1074
1205
|
"div",
|
|
1075
1206
|
{
|
|
1076
1207
|
ref,
|
|
@@ -1080,7 +1211,7 @@ var DropdownMenuHeading = React4.forwardRef(({ className, action, children, ...p
|
|
|
1080
1211
|
),
|
|
1081
1212
|
...props,
|
|
1082
1213
|
children: [
|
|
1083
|
-
/* @__PURE__ */ (0,
|
|
1214
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn("flex-1 truncate uppercase", textXsMedium, "text-dropdown-heading-text"), children }),
|
|
1084
1215
|
action
|
|
1085
1216
|
]
|
|
1086
1217
|
}
|
|
@@ -1095,7 +1226,7 @@ var clearStyle = [
|
|
|
1095
1226
|
"shadow-sm",
|
|
1096
1227
|
"cursor-pointer"
|
|
1097
1228
|
];
|
|
1098
|
-
var DropdownMenuClear =
|
|
1229
|
+
var DropdownMenuClear = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1099
1230
|
"button",
|
|
1100
1231
|
{
|
|
1101
1232
|
ref,
|
|
@@ -1108,10 +1239,10 @@ var DropdownMenuClear = React4.forwardRef(({ className, children, ...props }, re
|
|
|
1108
1239
|
DropdownMenuClear.displayName = "DropdownMenuClear";
|
|
1109
1240
|
|
|
1110
1241
|
// src/components/ui/bulk-action.tsx
|
|
1111
|
-
var
|
|
1242
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1112
1243
|
var GAP_PX = 8;
|
|
1113
1244
|
var MORE_BTN_FALLBACK = 36;
|
|
1114
|
-
var BulkAction =
|
|
1245
|
+
var BulkAction = React6.forwardRef(
|
|
1115
1246
|
({
|
|
1116
1247
|
count,
|
|
1117
1248
|
onClear,
|
|
@@ -1122,11 +1253,11 @@ var BulkAction = React5.forwardRef(
|
|
|
1122
1253
|
className,
|
|
1123
1254
|
...props
|
|
1124
1255
|
}, ref) => {
|
|
1125
|
-
const slotRef =
|
|
1126
|
-
const measureRef =
|
|
1127
|
-
const moreBtnMeasureRef =
|
|
1128
|
-
const [visibleCount, setVisibleCount] =
|
|
1129
|
-
|
|
1256
|
+
const slotRef = React6.useRef(null);
|
|
1257
|
+
const measureRef = React6.useRef(null);
|
|
1258
|
+
const moreBtnMeasureRef = React6.useRef(null);
|
|
1259
|
+
const [visibleCount, setVisibleCount] = React6.useState(actions.length);
|
|
1260
|
+
React6.useLayoutEffect(() => {
|
|
1130
1261
|
const slot = slotRef.current;
|
|
1131
1262
|
const measure = measureRef.current;
|
|
1132
1263
|
if (!slot || !measure) return;
|
|
@@ -1166,7 +1297,7 @@ var BulkAction = React5.forwardRef(
|
|
|
1166
1297
|
}, [actions]);
|
|
1167
1298
|
const visibleItems = actions.slice(0, visibleCount);
|
|
1168
1299
|
const overflowItems = actions.slice(visibleCount);
|
|
1169
|
-
return /* @__PURE__ */ (0,
|
|
1300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1170
1301
|
"div",
|
|
1171
1302
|
{
|
|
1172
1303
|
ref,
|
|
@@ -1182,20 +1313,20 @@ var BulkAction = React5.forwardRef(
|
|
|
1182
1313
|
),
|
|
1183
1314
|
...props,
|
|
1184
1315
|
children: [
|
|
1185
|
-
/* @__PURE__ */ (0,
|
|
1316
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "text-sm font-regular leading-sm text-bulk-action-count whitespace-nowrap shrink-0", children: [
|
|
1186
1317
|
count,
|
|
1187
1318
|
" ",
|
|
1188
1319
|
countLabel
|
|
1189
1320
|
] }),
|
|
1190
|
-
/* @__PURE__ */ (0,
|
|
1321
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1191
1322
|
"div",
|
|
1192
1323
|
{
|
|
1193
1324
|
ref: slotRef,
|
|
1194
1325
|
className: "relative flex flex-1 items-center gap-base min-w-0 overflow-hidden",
|
|
1195
1326
|
children: [
|
|
1196
|
-
visibleItems.map((item) => /* @__PURE__ */ (0,
|
|
1197
|
-
overflowItems.length > 0 && /* @__PURE__ */ (0,
|
|
1198
|
-
/* @__PURE__ */ (0,
|
|
1327
|
+
visibleItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ActionButton, { item }, item.id)),
|
|
1328
|
+
overflowItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(DropdownMenuRoot, { children: [
|
|
1329
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1199
1330
|
Button,
|
|
1200
1331
|
{
|
|
1201
1332
|
type: "button",
|
|
@@ -1207,7 +1338,7 @@ var BulkAction = React5.forwardRef(
|
|
|
1207
1338
|
"aria-label": "More actions"
|
|
1208
1339
|
}
|
|
1209
1340
|
) }),
|
|
1210
|
-
/* @__PURE__ */ (0,
|
|
1341
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(DropdownMenuContent, { align: "end", side: "top", sideOffset: 8, children: overflowItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1211
1342
|
DropdownMenuItem,
|
|
1212
1343
|
{
|
|
1213
1344
|
icon: item.icon,
|
|
@@ -1217,29 +1348,29 @@ var BulkAction = React5.forwardRef(
|
|
|
1217
1348
|
item.id
|
|
1218
1349
|
)) })
|
|
1219
1350
|
] }),
|
|
1220
|
-
/* @__PURE__ */ (0,
|
|
1351
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1221
1352
|
"div",
|
|
1222
1353
|
{
|
|
1223
1354
|
ref: measureRef,
|
|
1224
1355
|
"aria-hidden": true,
|
|
1225
1356
|
className: "pointer-events-none absolute inset-0 flex items-center gap-base opacity-0 invisible",
|
|
1226
|
-
children: actions.map((item) => /* @__PURE__ */ (0,
|
|
1357
|
+
children: actions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ActionButton, { item, tabIndex: -1 }, `measure-${item.id}`))
|
|
1227
1358
|
}
|
|
1228
1359
|
),
|
|
1229
|
-
/* @__PURE__ */ (0,
|
|
1360
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1230
1361
|
"button",
|
|
1231
1362
|
{
|
|
1232
1363
|
ref: moreBtnMeasureRef,
|
|
1233
1364
|
"aria-hidden": true,
|
|
1234
1365
|
tabIndex: -1,
|
|
1235
1366
|
className: "pointer-events-none absolute opacity-0 invisible h-8 w-8 min-w-8",
|
|
1236
|
-
children: /* @__PURE__ */ (0,
|
|
1367
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons5.Icon, { icon: import_icons5.faEllipsisOutline, size: "sm" })
|
|
1237
1368
|
}
|
|
1238
1369
|
)
|
|
1239
1370
|
]
|
|
1240
1371
|
}
|
|
1241
1372
|
),
|
|
1242
|
-
/* @__PURE__ */ (0,
|
|
1373
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1243
1374
|
Button,
|
|
1244
1375
|
{
|
|
1245
1376
|
type: "button",
|
|
@@ -1259,7 +1390,7 @@ var BulkAction = React5.forwardRef(
|
|
|
1259
1390
|
}
|
|
1260
1391
|
);
|
|
1261
1392
|
BulkAction.displayName = "BulkAction";
|
|
1262
|
-
var ActionButton = ({ item, tabIndex }) => /* @__PURE__ */ (0,
|
|
1393
|
+
var ActionButton = ({ item, tabIndex }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1263
1394
|
Button,
|
|
1264
1395
|
{
|
|
1265
1396
|
type: "button",
|
|
@@ -1275,67 +1406,6 @@ var ActionButton = ({ item, tabIndex }) => /* @__PURE__ */ (0, import_jsx_runtim
|
|
|
1275
1406
|
}
|
|
1276
1407
|
);
|
|
1277
1408
|
|
|
1278
|
-
// src/components/ui/tooltip.tsx
|
|
1279
|
-
var React6 = __toESM(require("react"));
|
|
1280
|
-
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
|
1281
|
-
var import_class_variance_authority3 = require("class-variance-authority");
|
|
1282
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1283
|
-
var tooltipContentVariants = (0, import_class_variance_authority3.cva)(
|
|
1284
|
-
[
|
|
1285
|
-
"inline-flex items-center z-50",
|
|
1286
|
-
"gap-xs",
|
|
1287
|
-
"px-base py-sm",
|
|
1288
|
-
"rounded-lg",
|
|
1289
|
-
"shadow-lg",
|
|
1290
|
-
"text-sm",
|
|
1291
|
-
"font-regular",
|
|
1292
|
-
"leading-sm",
|
|
1293
|
-
"data-[state=delayed-open]:animate-[tooltip-in_150ms_ease-out]",
|
|
1294
|
-
"data-[state=instant-open]:animate-[tooltip-in_0ms]",
|
|
1295
|
-
"data-[state=closed]:animate-[tooltip-out_100ms_ease-in]"
|
|
1296
|
-
],
|
|
1297
|
-
{
|
|
1298
|
-
variants: {
|
|
1299
|
-
type: {
|
|
1300
|
-
default: [
|
|
1301
|
-
"bg-tooltip-default-bg",
|
|
1302
|
-
"text-tooltip-default-text"
|
|
1303
|
-
],
|
|
1304
|
-
invert: [
|
|
1305
|
-
"bg-tooltip-invert-bg",
|
|
1306
|
-
"text-tooltip-invert-text",
|
|
1307
|
-
"border border-tooltip-invert-border"
|
|
1308
|
-
]
|
|
1309
|
-
}
|
|
1310
|
-
},
|
|
1311
|
-
defaultVariants: {
|
|
1312
|
-
type: "default"
|
|
1313
|
-
}
|
|
1314
|
-
}
|
|
1315
|
-
);
|
|
1316
|
-
var TooltipProvider = TooltipPrimitive.Provider;
|
|
1317
|
-
var Tooltip = TooltipPrimitive.Root;
|
|
1318
|
-
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
1319
|
-
var TooltipContent = React6.forwardRef(({ className, type, hasArrow = true, sideOffset = 4, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1320
|
-
TooltipPrimitive.Content,
|
|
1321
|
-
{
|
|
1322
|
-
ref,
|
|
1323
|
-
sideOffset,
|
|
1324
|
-
className: cn(tooltipContentVariants({ type, className })),
|
|
1325
|
-
...props,
|
|
1326
|
-
children: [
|
|
1327
|
-
children,
|
|
1328
|
-
hasArrow && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1329
|
-
TooltipPrimitive.Arrow,
|
|
1330
|
-
{
|
|
1331
|
-
className: type === "default" ? "fill-tooltip-default-bg" : "fill-tooltip-invert-bg"
|
|
1332
|
-
}
|
|
1333
|
-
)
|
|
1334
|
-
]
|
|
1335
|
-
}
|
|
1336
|
-
) }));
|
|
1337
|
-
TooltipContent.displayName = "TooltipContent";
|
|
1338
|
-
|
|
1339
1409
|
// src/components/ui/truncated-text.tsx
|
|
1340
1410
|
var React7 = __toESM(require("react"));
|
|
1341
1411
|
var TooltipPrimitive2 = __toESM(require("@radix-ui/react-tooltip"));
|