@cytario/design 3.2.0 → 3.4.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.css +2 -0
- package/dist/index.d.ts +12 -33
- package/dist/index.js +77 -78
- package/dist/index.js.map +1 -1
- package/package.json +8 -3
- package/src/styles/tailwind.css +2 -0
package/dist/index.js
CHANGED
|
@@ -352,6 +352,7 @@ function groupRadiusClasses(position) {
|
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
354
|
function Input({
|
|
355
|
+
as: FieldProp = TextField,
|
|
355
356
|
label,
|
|
356
357
|
placeholder,
|
|
357
358
|
description,
|
|
@@ -365,13 +366,14 @@ function Input({
|
|
|
365
366
|
className,
|
|
366
367
|
...props
|
|
367
368
|
}) {
|
|
369
|
+
const Field2 = FieldProp;
|
|
368
370
|
const isInvalid = !!errorMessage;
|
|
369
371
|
const { inGroup, position } = useInputGroup();
|
|
370
372
|
const borderColor = isInvalid ? "border-(--color-border-danger)" : "border-(--color-border-default) hover:border-(--color-border-strong)";
|
|
371
373
|
const radiusClass = inGroup ? groupRadiusClasses(position) : "rounded-md";
|
|
372
374
|
const marginClass = inGroup && position !== "start" && position !== "standalone" ? "-ml-px" : "";
|
|
373
375
|
return /* @__PURE__ */ jsxs4(
|
|
374
|
-
|
|
376
|
+
Field2,
|
|
375
377
|
{
|
|
376
378
|
...props,
|
|
377
379
|
type,
|
|
@@ -1894,57 +1896,54 @@ function MenuSeparator({ className }) {
|
|
|
1894
1896
|
import {
|
|
1895
1897
|
DialogTrigger,
|
|
1896
1898
|
Popover as AriaPopover,
|
|
1897
|
-
Dialog as AriaDialog2,
|
|
1898
1899
|
Button as AriaButton3
|
|
1899
1900
|
} from "react-aria-components";
|
|
1900
|
-
import {
|
|
1901
|
+
import { twMerge as twMerge8 } from "tailwind-merge";
|
|
1902
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
1901
1903
|
function Popover3({ children, isOpen, onOpenChange }) {
|
|
1902
1904
|
return /* @__PURE__ */ jsx33(DialogTrigger, { isOpen, onOpenChange, children });
|
|
1903
1905
|
}
|
|
1904
1906
|
function PopoverTrigger({ children, className }) {
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
"focus-visible:ring-2 focus-visible:ring-(--color-border-focus) focus-visible:rounded-sm",
|
|
1911
|
-
className
|
|
1912
|
-
].filter(Boolean).join(" "),
|
|
1913
|
-
children
|
|
1914
|
-
}
|
|
1915
|
-
);
|
|
1907
|
+
const cx = `
|
|
1908
|
+
inline-flex items-center bg-transparent border-none p-0 outline-none cursor-pointer
|
|
1909
|
+
focus-visible:ring-2 focus-visible:ring-(--color-border-focus) focus-visible:rounded-sm
|
|
1910
|
+
`;
|
|
1911
|
+
return /* @__PURE__ */ jsx33(AriaButton3, { className: twMerge8(cx, className), children });
|
|
1916
1912
|
}
|
|
1917
1913
|
function PopoverContent({
|
|
1918
1914
|
placement = "bottom",
|
|
1919
1915
|
offset: offsetPx = 8,
|
|
1920
1916
|
className,
|
|
1921
|
-
children
|
|
1917
|
+
children,
|
|
1918
|
+
...rest
|
|
1922
1919
|
}) {
|
|
1920
|
+
const cx = `
|
|
1921
|
+
z-50
|
|
1922
|
+
bg-(--color-surface-default)
|
|
1923
|
+
border border-(--color-border-default)
|
|
1924
|
+
rounded-md shadow-lg
|
|
1925
|
+
entering:animate-in entering:fade-in entering:duration-300
|
|
1926
|
+
exiting:animate-out exiting:fade-out exiting:duration-300
|
|
1927
|
+
entering:placement-top:slide-in-from-bottom-1
|
|
1928
|
+
entering:placement-bottom:slide-in-from-top-1
|
|
1929
|
+
entering:placement-left:slide-in-from-right-1
|
|
1930
|
+
entering:placement-right:slide-in-from-left-1
|
|
1931
|
+
`;
|
|
1923
1932
|
return /* @__PURE__ */ jsx33(
|
|
1924
1933
|
AriaPopover,
|
|
1925
1934
|
{
|
|
1935
|
+
...rest,
|
|
1926
1936
|
placement,
|
|
1927
1937
|
offset: offsetPx,
|
|
1928
|
-
className:
|
|
1929
|
-
|
|
1930
|
-
"bg-(--color-surface-default) border border-(--color-border-default)",
|
|
1931
|
-
"rounded-md shadow-lg",
|
|
1932
|
-
"entering:animate-in entering:fade-in entering:duration-150",
|
|
1933
|
-
"exiting:animate-out exiting:fade-out exiting:duration-100",
|
|
1934
|
-
"entering:placement-top:slide-in-from-bottom-1",
|
|
1935
|
-
"entering:placement-bottom:slide-in-from-top-1",
|
|
1936
|
-
"entering:placement-left:slide-in-from-right-1",
|
|
1937
|
-
"entering:placement-right:slide-in-from-left-1",
|
|
1938
|
-
className
|
|
1939
|
-
].filter(Boolean).join(" "),
|
|
1940
|
-
children: /* @__PURE__ */ jsx33(AriaDialog2, { className: "outline-none", children: ({ close }) => /* @__PURE__ */ jsx33(Fragment8, { children: typeof children === "function" ? children({ close }) : children }) })
|
|
1938
|
+
className: twMerge8(cx, className),
|
|
1939
|
+
children
|
|
1941
1940
|
}
|
|
1942
1941
|
);
|
|
1943
1942
|
}
|
|
1944
1943
|
|
|
1945
1944
|
// src/components/Tabs/Tabs.tsx
|
|
1946
1945
|
import { createContext as createContext4, useContext as useContext4 } from "react";
|
|
1947
|
-
import { twMerge as
|
|
1946
|
+
import { twMerge as twMerge9 } from "tailwind-merge";
|
|
1948
1947
|
import {
|
|
1949
1948
|
Tabs as AriaTabs,
|
|
1950
1949
|
TabList as AriaTabList,
|
|
@@ -1974,7 +1973,7 @@ function Tabs({
|
|
|
1974
1973
|
{
|
|
1975
1974
|
...props,
|
|
1976
1975
|
orientation,
|
|
1977
|
-
className:
|
|
1976
|
+
className: twMerge9(
|
|
1978
1977
|
orientation === "vertical" ? "flex" : "",
|
|
1979
1978
|
className
|
|
1980
1979
|
),
|
|
@@ -1993,7 +1992,7 @@ function TabList({
|
|
|
1993
1992
|
AriaTabList,
|
|
1994
1993
|
{
|
|
1995
1994
|
...props,
|
|
1996
|
-
className: ({ orientation }) =>
|
|
1995
|
+
className: ({ orientation }) => twMerge9(
|
|
1997
1996
|
baseStyles,
|
|
1998
1997
|
orientation === "vertical" ? verticalStyles : "",
|
|
1999
1998
|
className
|
|
@@ -2009,14 +2008,14 @@ function Tab({ className, ...props }) {
|
|
|
2009
2008
|
...props,
|
|
2010
2009
|
className: ({ isSelected, isDisabled, isHovered, isPressed }) => {
|
|
2011
2010
|
if (variant === "unstyled") {
|
|
2012
|
-
return
|
|
2011
|
+
return twMerge9(
|
|
2013
2012
|
"cursor-pointer outline-none",
|
|
2014
2013
|
"focus-visible:ring-2 focus-visible:ring-(--color-border-focus) focus-visible:ring-offset-2",
|
|
2015
2014
|
isDisabled ? "opacity-50 pointer-events-none" : "",
|
|
2016
2015
|
className
|
|
2017
2016
|
);
|
|
2018
2017
|
}
|
|
2019
|
-
return
|
|
2018
|
+
return twMerge9(
|
|
2020
2019
|
// Base
|
|
2021
2020
|
"cursor-pointer outline-none transition-colors",
|
|
2022
2021
|
"font-medium",
|
|
@@ -2064,7 +2063,7 @@ function TabPanel({ className, ...props }) {
|
|
|
2064
2063
|
AriaTabPanel,
|
|
2065
2064
|
{
|
|
2066
2065
|
...props,
|
|
2067
|
-
className:
|
|
2066
|
+
className: twMerge9(
|
|
2068
2067
|
variant === "unstyled" ? "outline-none" : "mt-4 outline-none",
|
|
2069
2068
|
className
|
|
2070
2069
|
)
|
|
@@ -2316,7 +2315,7 @@ function Tree({
|
|
|
2316
2315
|
|
|
2317
2316
|
// src/components/SegmentedControl/SegmentedControl.tsx
|
|
2318
2317
|
import { createContext as createContext5, useContext as useContext5 } from "react";
|
|
2319
|
-
import { twMerge as
|
|
2318
|
+
import { twMerge as twMerge10 } from "tailwind-merge";
|
|
2320
2319
|
import {
|
|
2321
2320
|
ToggleButtonGroup as AriaToggleButtonGroup,
|
|
2322
2321
|
ToggleButton as AriaToggleButton2
|
|
@@ -2349,7 +2348,7 @@ function SegmentedControl({
|
|
|
2349
2348
|
selectedKeys: isNoneMode ? /* @__PURE__ */ new Set() : selectedKeys,
|
|
2350
2349
|
defaultSelectedKeys: isNoneMode ? void 0 : defaultSelectedKeys,
|
|
2351
2350
|
onSelectionChange: isNoneMode ? void 0 : onSelectionChange,
|
|
2352
|
-
className:
|
|
2351
|
+
className: twMerge10(
|
|
2353
2352
|
"inline-flex items-center rounded-lg border border-(--color-border-default) bg-(--color-surface-muted) p-0.5 gap-0.5",
|
|
2354
2353
|
className
|
|
2355
2354
|
),
|
|
@@ -2366,7 +2365,7 @@ function SegmentedControlItem({
|
|
|
2366
2365
|
AriaToggleButton2,
|
|
2367
2366
|
{
|
|
2368
2367
|
...props,
|
|
2369
|
-
className: ({ isSelected, isHovered, isPressed, isDisabled }) =>
|
|
2368
|
+
className: ({ isSelected, isHovered, isPressed, isDisabled }) => twMerge10(
|
|
2370
2369
|
// Base layout
|
|
2371
2370
|
"inline-flex items-center justify-center",
|
|
2372
2371
|
"rounded-md",
|
|
@@ -2389,7 +2388,7 @@ function SegmentedControlItem({
|
|
|
2389
2388
|
// src/components/FileCard/FileCard.tsx
|
|
2390
2389
|
import { useCallback as useCallback3 } from "react";
|
|
2391
2390
|
import { File as File2, Info as Info2 } from "lucide-react";
|
|
2392
|
-
import { Fragment as
|
|
2391
|
+
import { Fragment as Fragment8, jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2393
2392
|
function FileCard({
|
|
2394
2393
|
name,
|
|
2395
2394
|
icon: IconComponent = File2,
|
|
@@ -2423,7 +2422,7 @@ function FileCard({
|
|
|
2423
2422
|
},
|
|
2424
2423
|
[onPress]
|
|
2425
2424
|
);
|
|
2426
|
-
const cardContent = /* @__PURE__ */ jsxs23(
|
|
2425
|
+
const cardContent = /* @__PURE__ */ jsxs23(Fragment8, { children: [
|
|
2427
2426
|
/* @__PURE__ */ jsx37(
|
|
2428
2427
|
"div",
|
|
2429
2428
|
{
|
|
@@ -2439,7 +2438,7 @@ function FileCard({
|
|
|
2439
2438
|
"bg-(--color-surface-default)",
|
|
2440
2439
|
compact ? "px-2 py-1.5 rounded-b-(--border-radius-md)" : "gap-0.5 px-3 py-2 rounded-b-(--border-radius-lg)"
|
|
2441
2440
|
].join(" "),
|
|
2442
|
-
children: compact ? /* @__PURE__ */ jsx37("span", { className: "text-xs font-medium text-(--color-text-primary) truncate", children: name }) : /* @__PURE__ */ jsxs23(
|
|
2441
|
+
children: compact ? /* @__PURE__ */ jsx37("span", { className: "text-xs font-medium text-(--color-text-primary) truncate", children: name }) : /* @__PURE__ */ jsxs23(Fragment8, { children: [
|
|
2443
2442
|
/* @__PURE__ */ jsxs23("span", { className: "flex items-center gap-1.5", children: [
|
|
2444
2443
|
/* @__PURE__ */ jsx37(
|
|
2445
2444
|
IconComponent,
|
|
@@ -2508,8 +2507,8 @@ function FileCard({
|
|
|
2508
2507
|
// src/components/StorageConnectionCard/StorageConnectionCard.tsx
|
|
2509
2508
|
import { useCallback as useCallback4 } from "react";
|
|
2510
2509
|
import { AlertCircle, Database } from "lucide-react";
|
|
2511
|
-
import { twMerge as
|
|
2512
|
-
import { Fragment as
|
|
2510
|
+
import { twMerge as twMerge11 } from "tailwind-merge";
|
|
2511
|
+
import { Fragment as Fragment9, jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2513
2512
|
var statusDotStyles = {
|
|
2514
2513
|
connected: "bg-(--color-status-success)",
|
|
2515
2514
|
error: "border-2 border-(--color-status-danger) bg-transparent",
|
|
@@ -2569,14 +2568,14 @@ function StorageConnectionCard({
|
|
|
2569
2568
|
},
|
|
2570
2569
|
[onPress]
|
|
2571
2570
|
);
|
|
2572
|
-
const cardContent = /* @__PURE__ */ jsxs24(
|
|
2571
|
+
const cardContent = /* @__PURE__ */ jsxs24(Fragment9, { children: [
|
|
2573
2572
|
/* @__PURE__ */ jsx38("div", { className: "aspect-[4/3] bg-neutral-900 overflow-hidden rounded-t-(--border-radius-lg)", children: /* @__PURE__ */ jsx38(PreviewArea, { status, errorMessage, children }) }),
|
|
2574
2573
|
/* @__PURE__ */ jsxs24("div", { className: "flex flex-col gap-1.5 border-t border-(--color-border-default) bg-(--color-surface-default) px-3 py-2.5 rounded-b-(--border-radius-lg)", children: [
|
|
2575
2574
|
/* @__PURE__ */ jsxs24("div", { className: "flex items-start gap-2", children: [
|
|
2576
2575
|
status && /* @__PURE__ */ jsx38(
|
|
2577
2576
|
"span",
|
|
2578
2577
|
{
|
|
2579
|
-
className:
|
|
2578
|
+
className: twMerge11(
|
|
2580
2579
|
"mt-1.5 h-2 w-2 shrink-0 rounded-full",
|
|
2581
2580
|
statusDotStyles[status]
|
|
2582
2581
|
),
|
|
@@ -2604,10 +2603,10 @@ function StorageConnectionCard({
|
|
|
2604
2603
|
}
|
|
2605
2604
|
)
|
|
2606
2605
|
] }),
|
|
2607
|
-
meta && /* @__PURE__ */ jsx38("div", { className:
|
|
2606
|
+
meta && /* @__PURE__ */ jsx38("div", { className: twMerge11("flex items-center gap-2", status && "pl-4"), children: meta })
|
|
2608
2607
|
] })
|
|
2609
2608
|
] });
|
|
2610
|
-
const baseStyles =
|
|
2609
|
+
const baseStyles = twMerge11(
|
|
2611
2610
|
"flex flex-col overflow-hidden rounded-lg",
|
|
2612
2611
|
"border border-(--color-border-default)",
|
|
2613
2612
|
"shadow-sm transition-all",
|
|
@@ -2616,7 +2615,7 @@ function StorageConnectionCard({
|
|
|
2616
2615
|
className
|
|
2617
2616
|
);
|
|
2618
2617
|
if (href) {
|
|
2619
|
-
return /* @__PURE__ */ jsx38("a", { href, className:
|
|
2618
|
+
return /* @__PURE__ */ jsx38("a", { href, className: twMerge11(baseStyles, "no-underline"), children: cardContent });
|
|
2620
2619
|
}
|
|
2621
2620
|
if (onPress) {
|
|
2622
2621
|
return /* @__PURE__ */ jsx38(
|
|
@@ -2635,7 +2634,7 @@ function StorageConnectionCard({
|
|
|
2635
2634
|
}
|
|
2636
2635
|
|
|
2637
2636
|
// src/components/Badge/Badge.tsx
|
|
2638
|
-
import { twMerge as
|
|
2637
|
+
import { twMerge as twMerge12 } from "tailwind-merge";
|
|
2639
2638
|
import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2640
2639
|
var variantStyles4 = {
|
|
2641
2640
|
neutral: "bg-(--color-badge-neutral-bg) text-(--color-badge-neutral-text)",
|
|
@@ -2664,7 +2663,7 @@ function Badge({
|
|
|
2664
2663
|
return /* @__PURE__ */ jsxs25(
|
|
2665
2664
|
"span",
|
|
2666
2665
|
{
|
|
2667
|
-
className:
|
|
2666
|
+
className: twMerge12(
|
|
2668
2667
|
"inline-flex items-center gap-1 rounded-full",
|
|
2669
2668
|
"text-xs font-medium leading-tight",
|
|
2670
2669
|
variantStyles4[variant],
|
|
@@ -2681,8 +2680,8 @@ function Badge({
|
|
|
2681
2680
|
|
|
2682
2681
|
// src/components/Card/Card.tsx
|
|
2683
2682
|
import { useCallback as useCallback5 } from "react";
|
|
2684
|
-
import { twMerge as
|
|
2685
|
-
import { Fragment as
|
|
2683
|
+
import { twMerge as twMerge13 } from "tailwind-merge";
|
|
2684
|
+
import { Fragment as Fragment10, jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2686
2685
|
var paddingStyles = {
|
|
2687
2686
|
none: "p-0",
|
|
2688
2687
|
sm: "p-3",
|
|
@@ -2700,7 +2699,7 @@ function Card({
|
|
|
2700
2699
|
className
|
|
2701
2700
|
}) {
|
|
2702
2701
|
const isInteractive = interactive || !!href || !!onPress;
|
|
2703
|
-
const containerClass =
|
|
2702
|
+
const containerClass = twMerge13(
|
|
2704
2703
|
"bg-(--color-surface-default) border border-(--color-border-default) rounded-lg overflow-hidden shadow-sm",
|
|
2705
2704
|
isInteractive && "transition-all hover:shadow-md hover:border-(--color-border-focus) cursor-pointer",
|
|
2706
2705
|
(href || onPress) && "block focus-visible:ring-2 focus-visible:ring-(--color-border-focus) focus-visible:ring-offset-2 outline-none",
|
|
@@ -2715,11 +2714,11 @@ function Card({
|
|
|
2715
2714
|
},
|
|
2716
2715
|
[onPress]
|
|
2717
2716
|
);
|
|
2718
|
-
const content = /* @__PURE__ */ jsxs26(
|
|
2717
|
+
const content = /* @__PURE__ */ jsxs26(Fragment10, { children: [
|
|
2719
2718
|
header && /* @__PURE__ */ jsx40(
|
|
2720
2719
|
"div",
|
|
2721
2720
|
{
|
|
2722
|
-
className:
|
|
2721
|
+
className: twMerge13(
|
|
2723
2722
|
"border-b border-(--color-border-default)",
|
|
2724
2723
|
paddingStyles[padding]
|
|
2725
2724
|
),
|
|
@@ -2730,7 +2729,7 @@ function Card({
|
|
|
2730
2729
|
footer && /* @__PURE__ */ jsx40(
|
|
2731
2730
|
"div",
|
|
2732
2731
|
{
|
|
2733
|
-
className:
|
|
2732
|
+
className: twMerge13(
|
|
2734
2733
|
"border-t border-(--color-border-default)",
|
|
2735
2734
|
paddingStyles[padding]
|
|
2736
2735
|
),
|
|
@@ -2759,7 +2758,7 @@ function Card({
|
|
|
2759
2758
|
|
|
2760
2759
|
// src/components/DeltaIndicator/DeltaIndicator.tsx
|
|
2761
2760
|
import { ArrowUp, ArrowDown, Minus } from "lucide-react";
|
|
2762
|
-
import { twMerge as
|
|
2761
|
+
import { twMerge as twMerge14 } from "tailwind-merge";
|
|
2763
2762
|
import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2764
2763
|
function getDirection(current, previous) {
|
|
2765
2764
|
const diff = current - previous;
|
|
@@ -2816,7 +2815,7 @@ function DeltaIndicator({
|
|
|
2816
2815
|
return /* @__PURE__ */ jsxs27(
|
|
2817
2816
|
"span",
|
|
2818
2817
|
{
|
|
2819
|
-
className:
|
|
2818
|
+
className: twMerge14(
|
|
2820
2819
|
"inline-flex items-center gap-1 font-medium",
|
|
2821
2820
|
"text-(--color-text-tertiary)",
|
|
2822
2821
|
className
|
|
@@ -2855,7 +2854,7 @@ function DeltaIndicator({
|
|
|
2855
2854
|
return /* @__PURE__ */ jsxs27(
|
|
2856
2855
|
"span",
|
|
2857
2856
|
{
|
|
2858
|
-
className:
|
|
2857
|
+
className: twMerge14(
|
|
2859
2858
|
"inline-flex items-center gap-1 font-medium",
|
|
2860
2859
|
colorStyles2,
|
|
2861
2860
|
isPill && [
|
|
@@ -2875,7 +2874,7 @@ function DeltaIndicator({
|
|
|
2875
2874
|
}
|
|
2876
2875
|
|
|
2877
2876
|
// src/components/ProgressBar/ProgressBar.tsx
|
|
2878
|
-
import { twMerge as
|
|
2877
|
+
import { twMerge as twMerge15 } from "tailwind-merge";
|
|
2879
2878
|
import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
2880
2879
|
var fillStyles = {
|
|
2881
2880
|
brand: "bg-(--color-progress-fill)",
|
|
@@ -2899,7 +2898,7 @@ function ProgressBar({
|
|
|
2899
2898
|
className
|
|
2900
2899
|
}) {
|
|
2901
2900
|
const clampedValue = Math.min(100, Math.max(0, value));
|
|
2902
|
-
return /* @__PURE__ */ jsxs28("div", { className:
|
|
2901
|
+
return /* @__PURE__ */ jsxs28("div", { className: twMerge15("w-full", className), children: [
|
|
2903
2902
|
(label || description || showValue) && /* @__PURE__ */ jsxs28("div", { className: "flex items-center justify-between mb-2", children: [
|
|
2904
2903
|
/* @__PURE__ */ jsx42("span", { className: "text-sm font-medium text-(--color-text-primary)", children: label }),
|
|
2905
2904
|
/* @__PURE__ */ jsx42("span", { className: "text-sm text-(--color-text-secondary)", children: description ?? (showValue ? `${clampedValue}%` : null) })
|
|
@@ -2912,14 +2911,14 @@ function ProgressBar({
|
|
|
2912
2911
|
"aria-valuemin": 0,
|
|
2913
2912
|
"aria-valuemax": 100,
|
|
2914
2913
|
"aria-label": label ?? "Progress",
|
|
2915
|
-
className:
|
|
2914
|
+
className: twMerge15(
|
|
2916
2915
|
"w-full rounded-full bg-(--color-progress-track)",
|
|
2917
2916
|
sizeStyles9[size]
|
|
2918
2917
|
),
|
|
2919
2918
|
children: /* @__PURE__ */ jsx42(
|
|
2920
2919
|
"div",
|
|
2921
2920
|
{
|
|
2922
|
-
className:
|
|
2921
|
+
className: twMerge15(
|
|
2923
2922
|
"h-full rounded-full transition-all duration-300",
|
|
2924
2923
|
fillStyles[variant]
|
|
2925
2924
|
),
|
|
@@ -2940,7 +2939,7 @@ import {
|
|
|
2940
2939
|
CheckCircle2,
|
|
2941
2940
|
X as X3
|
|
2942
2941
|
} from "lucide-react";
|
|
2943
|
-
import { twMerge as
|
|
2942
|
+
import { twMerge as twMerge16 } from "tailwind-merge";
|
|
2944
2943
|
import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
2945
2944
|
var variantConfig2 = {
|
|
2946
2945
|
info: {
|
|
@@ -2989,7 +2988,7 @@ function Banner({
|
|
|
2989
2988
|
"div",
|
|
2990
2989
|
{
|
|
2991
2990
|
role: config.role,
|
|
2992
|
-
className:
|
|
2991
|
+
className: twMerge16(
|
|
2993
2992
|
"flex items-start gap-3 rounded-lg border px-4 py-3",
|
|
2994
2993
|
"text-sm",
|
|
2995
2994
|
config.containerClass,
|
|
@@ -3000,7 +2999,7 @@ function Banner({
|
|
|
3000
2999
|
IconComponent,
|
|
3001
3000
|
{
|
|
3002
3001
|
size: 20,
|
|
3003
|
-
className:
|
|
3002
|
+
className: twMerge16("shrink-0 mt-0.5", config.iconClass),
|
|
3004
3003
|
"aria-hidden": "true"
|
|
3005
3004
|
}
|
|
3006
3005
|
),
|
|
@@ -3027,8 +3026,8 @@ function Banner({
|
|
|
3027
3026
|
}
|
|
3028
3027
|
|
|
3029
3028
|
// src/components/MetricCard/MetricCard.tsx
|
|
3030
|
-
import { twMerge as
|
|
3031
|
-
import { Fragment as
|
|
3029
|
+
import { twMerge as twMerge17 } from "tailwind-merge";
|
|
3030
|
+
import { Fragment as Fragment11, jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3032
3031
|
var sizeConfig = {
|
|
3033
3032
|
sm: {
|
|
3034
3033
|
padding: "p-3",
|
|
@@ -3050,18 +3049,18 @@ function MetricCard({
|
|
|
3050
3049
|
className
|
|
3051
3050
|
}) {
|
|
3052
3051
|
const config = sizeConfig[size];
|
|
3053
|
-
const containerClass =
|
|
3052
|
+
const containerClass = twMerge17(
|
|
3054
3053
|
"bg-(--color-surface-default) border border-(--color-border-default) rounded-lg shadow-sm",
|
|
3055
3054
|
config.padding,
|
|
3056
3055
|
href && "block transition-shadow hover:shadow-md hover:border-(--color-border-focus) focus-visible:ring-2 focus-visible:ring-(--color-border-focus) focus-visible:ring-offset-2 outline-none",
|
|
3057
3056
|
className
|
|
3058
3057
|
);
|
|
3059
|
-
const content = /* @__PURE__ */ jsxs30(
|
|
3060
|
-
/* @__PURE__ */ jsx44("div", { className:
|
|
3058
|
+
const content = /* @__PURE__ */ jsxs30(Fragment11, { children: [
|
|
3059
|
+
/* @__PURE__ */ jsx44("div", { className: twMerge17(config.labelClass, "text-(--color-text-secondary)"), children: label }),
|
|
3061
3060
|
/* @__PURE__ */ jsx44(
|
|
3062
3061
|
"div",
|
|
3063
3062
|
{
|
|
3064
|
-
className:
|
|
3063
|
+
className: twMerge17(
|
|
3065
3064
|
config.valueClass,
|
|
3066
3065
|
"font-semibold text-(--color-text-primary) mt-1 tabular-nums"
|
|
3067
3066
|
),
|
|
@@ -3077,7 +3076,7 @@ function MetricCard({
|
|
|
3077
3076
|
}
|
|
3078
3077
|
|
|
3079
3078
|
// src/components/SectionHeader/SectionHeader.tsx
|
|
3080
|
-
import { twMerge as
|
|
3079
|
+
import { twMerge as twMerge18 } from "tailwind-merge";
|
|
3081
3080
|
import { jsx as jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3082
3081
|
function SectionHeader({
|
|
3083
3082
|
title,
|
|
@@ -3087,7 +3086,7 @@ function SectionHeader({
|
|
|
3087
3086
|
return /* @__PURE__ */ jsxs31(
|
|
3088
3087
|
"div",
|
|
3089
3088
|
{
|
|
3090
|
-
className:
|
|
3089
|
+
className: twMerge18(
|
|
3091
3090
|
"flex flex-wrap items-center gap-3 py-4",
|
|
3092
3091
|
className
|
|
3093
3092
|
),
|
|
@@ -3100,7 +3099,7 @@ function SectionHeader({
|
|
|
3100
3099
|
}
|
|
3101
3100
|
|
|
3102
3101
|
// src/components/Pill/Pill.tsx
|
|
3103
|
-
import { twMerge as
|
|
3102
|
+
import { twMerge as twMerge19 } from "tailwind-merge";
|
|
3104
3103
|
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
3105
3104
|
var hashColors = {
|
|
3106
3105
|
purple: "bg-(--color-badge-purple-bg) text-(--color-badge-purple-text) border-(--color-badge-purple-text)/20",
|
|
@@ -3127,7 +3126,7 @@ function Pill({
|
|
|
3127
3126
|
className,
|
|
3128
3127
|
...rest
|
|
3129
3128
|
}) {
|
|
3130
|
-
const cx =
|
|
3129
|
+
const cx = twMerge19(
|
|
3131
3130
|
`
|
|
3132
3131
|
inline-flex items-center
|
|
3133
3132
|
rounded-full
|
|
@@ -3143,7 +3142,7 @@ function Pill({
|
|
|
3143
3142
|
}
|
|
3144
3143
|
|
|
3145
3144
|
// src/components/Pill/PathPill.tsx
|
|
3146
|
-
import { twMerge as
|
|
3145
|
+
import { twMerge as twMerge20 } from "tailwind-merge";
|
|
3147
3146
|
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
3148
3147
|
function PathPill({
|
|
3149
3148
|
children,
|
|
@@ -3159,12 +3158,12 @@ function PathPill({
|
|
|
3159
3158
|
return /* @__PURE__ */ jsx47(
|
|
3160
3159
|
"div",
|
|
3161
3160
|
{
|
|
3162
|
-
className:
|
|
3161
|
+
className: twMerge20("relative flex", className),
|
|
3163
3162
|
"aria-label": `Path: ${fullPath}`,
|
|
3164
3163
|
children: segments.map((segment, i) => {
|
|
3165
3164
|
const isCollapsed = i < dotCount;
|
|
3166
3165
|
const isLast = i === segments.length - 1;
|
|
3167
|
-
const cx =
|
|
3166
|
+
const cx = twMerge20(!isLast && "pr-5 -mr-4", isCollapsed && "pr-3");
|
|
3168
3167
|
const color = colorFn ? colorFn(segment, i) : pillColorFromName(segment);
|
|
3169
3168
|
return /* @__PURE__ */ jsx47(
|
|
3170
3169
|
Pill,
|