@cytario/design 1.11.1 → 1.13.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.d.ts +180 -6
- package/dist/index.js +595 -53
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/styles/tailwind.css +12 -0
- package/src/tokens/variables-dark.css +24 -0
- package/src/tokens/variables.css +62 -3
package/dist/index.js
CHANGED
|
@@ -24,8 +24,8 @@ var variantStyles = {
|
|
|
24
24
|
].join(" "),
|
|
25
25
|
ghost: [
|
|
26
26
|
"bg-transparent text-[var(--color-text-primary)]",
|
|
27
|
-
"hover:bg-[var(--color-
|
|
28
|
-
"pressed:bg-[var(--color-
|
|
27
|
+
"hover:bg-[var(--color-surface-hover)]",
|
|
28
|
+
"pressed:bg-[var(--color-surface-pressed)]"
|
|
29
29
|
].join(" "),
|
|
30
30
|
destructive: [
|
|
31
31
|
"bg-[var(--color-action-danger)] text-[var(--color-text-inverse)]",
|
|
@@ -232,7 +232,7 @@ function Tooltip({
|
|
|
232
232
|
"bg-[var(--color-surface-overlay)] backdrop-blur-sm",
|
|
233
233
|
"text-[var(--color-text-inverse)] text-sm",
|
|
234
234
|
"px-3 py-1.5",
|
|
235
|
-
"rounded-md",
|
|
235
|
+
"rounded-[var(--border-radius-md)]",
|
|
236
236
|
"max-w-xs",
|
|
237
237
|
"entering:animate-in entering:fade-in entering:duration-150",
|
|
238
238
|
"exiting:animate-out exiting:fade-out exiting:duration-100",
|
|
@@ -555,13 +555,13 @@ function Select({
|
|
|
555
555
|
isDisabled,
|
|
556
556
|
isRequired,
|
|
557
557
|
isInvalid: hasError,
|
|
558
|
-
className: ["flex flex-col gap-1", className].filter(Boolean).join(" "),
|
|
558
|
+
className: ["flex flex-col gap-[var(--spacing-1)]", className].filter(Boolean).join(" "),
|
|
559
559
|
children: [
|
|
560
560
|
/* @__PURE__ */ jsxs5(
|
|
561
561
|
Label2,
|
|
562
562
|
{
|
|
563
563
|
className: [
|
|
564
|
-
"text-sm font-[var(--font-weight-medium)] text-[var(--color-text-primary)]"
|
|
564
|
+
"text-[length:var(--font-size-sm)] font-[var(--font-weight-medium)] text-[var(--color-text-primary)]"
|
|
565
565
|
].join(" "),
|
|
566
566
|
children: [
|
|
567
567
|
label,
|
|
@@ -595,7 +595,7 @@ function Select({
|
|
|
595
595
|
]
|
|
596
596
|
}
|
|
597
597
|
),
|
|
598
|
-
hasError && /* @__PURE__ */ jsx7("span", { className: "text-sm text-[var(--color-text-danger)]", children: errorMessage }),
|
|
598
|
+
hasError && /* @__PURE__ */ jsx7("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-danger)]", children: errorMessage }),
|
|
599
599
|
/* @__PURE__ */ jsx7(
|
|
600
600
|
Popover,
|
|
601
601
|
{
|
|
@@ -760,7 +760,7 @@ function Dialog({
|
|
|
760
760
|
className: [
|
|
761
761
|
"w-full mx-4",
|
|
762
762
|
sizeStyles2[size],
|
|
763
|
-
"bg-[var(--color-surface-default)] rounded-lg shadow-xl max-h-[85vh] flex flex-col",
|
|
763
|
+
"bg-[var(--color-surface-default)] rounded-[var(--border-radius-lg)] shadow-xl max-h-[85vh] flex flex-col",
|
|
764
764
|
"data-[entering]:animate-in data-[entering]:zoom-in-95 data-[entering]:fade-in",
|
|
765
765
|
"data-[exiting]:animate-out data-[exiting]:zoom-out-95 data-[exiting]:fade-out",
|
|
766
766
|
className
|
|
@@ -771,7 +771,7 @@ function Dialog({
|
|
|
771
771
|
Heading,
|
|
772
772
|
{
|
|
773
773
|
slot: "title",
|
|
774
|
-
className: "text-lg font-semibold text-[var(--color-text-primary)]",
|
|
774
|
+
className: "text-[length:var(--font-size-lg)] font-[number:var(--font-weight-semibold)] text-[var(--color-text-primary)]",
|
|
775
775
|
children: title
|
|
776
776
|
}
|
|
777
777
|
),
|
|
@@ -781,7 +781,7 @@ function Dialog({
|
|
|
781
781
|
type: "button",
|
|
782
782
|
onClick: close,
|
|
783
783
|
className: [
|
|
784
|
-
"inline-flex items-center justify-center rounded-
|
|
784
|
+
"inline-flex items-center justify-center rounded-[var(--border-radius-sm)] p-1",
|
|
785
785
|
"text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] hover:bg-[var(--color-surface-muted)]",
|
|
786
786
|
"outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-2",
|
|
787
787
|
"transition-colors"
|
|
@@ -860,7 +860,7 @@ function ToastItem({
|
|
|
860
860
|
role: "status",
|
|
861
861
|
"aria-live": "polite",
|
|
862
862
|
className: [
|
|
863
|
-
"flex items-start gap-3 rounded-lg border px-4 py-3 shadow-md",
|
|
863
|
+
"flex items-start gap-[var(--spacing-3)] rounded-[var(--border-radius-lg)] border px-[var(--spacing-4)] py-[var(--spacing-3)] shadow-md",
|
|
864
864
|
"min-w-[320px] max-w-[420px]",
|
|
865
865
|
"transition-all duration-200",
|
|
866
866
|
isExiting ? "translate-x-full opacity-0" : "translate-x-0 opacity-100 animate-in slide-in-from-right",
|
|
@@ -868,13 +868,13 @@ function ToastItem({
|
|
|
868
868
|
].join(" "),
|
|
869
869
|
children: [
|
|
870
870
|
/* @__PURE__ */ jsx10(IconComponent, { size: 20, className: ["shrink-0 mt-0.5", config.iconClass].join(" "), "aria-hidden": "true" }),
|
|
871
|
-
/* @__PURE__ */ jsx10("p", { className: "flex-1 text-sm font-medium", children: toast.message }),
|
|
871
|
+
/* @__PURE__ */ jsx10("p", { className: "flex-1 text-[length:var(--font-size-sm)] font-[number:var(--font-weight-medium)]", children: toast.message }),
|
|
872
872
|
/* @__PURE__ */ jsx10(
|
|
873
873
|
"button",
|
|
874
874
|
{
|
|
875
875
|
type: "button",
|
|
876
876
|
onClick: dismiss,
|
|
877
|
-
className: "shrink-0 rounded p-0.5 opacity-70 hover:opacity-100 transition-opacity outline-none focus-visible:ring-2 focus-visible:ring-current",
|
|
877
|
+
className: "shrink-0 rounded-[var(--border-radius-sm)] p-0.5 opacity-70 hover:opacity-100 transition-opacity outline-none focus-visible:ring-2 focus-visible:ring-current",
|
|
878
878
|
"aria-label": "Dismiss",
|
|
879
879
|
children: /* @__PURE__ */ jsx10(X2, { size: 16, "aria-hidden": "true" })
|
|
880
880
|
}
|
|
@@ -947,12 +947,12 @@ function EmptyState({
|
|
|
947
947
|
"div",
|
|
948
948
|
{
|
|
949
949
|
className: [
|
|
950
|
-
"flex flex-col items-center text-center py-12 px-6",
|
|
950
|
+
"flex flex-col items-center text-center py-[var(--spacing-12)] px-[var(--spacing-6)]",
|
|
951
951
|
className
|
|
952
952
|
].filter(Boolean).join(" "),
|
|
953
953
|
children: [
|
|
954
954
|
icon && /* @__PURE__ */ jsx11(Icon, { icon, size: "xl", className: "text-[var(--color-text-tertiary)]" }),
|
|
955
|
-
/* @__PURE__ */ jsx11("h3", { className: "text-lg font-semibold text-[var(--color-text-primary)] mt-4", children: title }),
|
|
955
|
+
/* @__PURE__ */ jsx11("h3", { className: "text-[length:var(--font-size-lg)] font-[number:var(--font-weight-semibold)] text-[var(--color-text-primary)] mt-4", children: title }),
|
|
956
956
|
description && /* @__PURE__ */ jsx11("p", { className: "text-sm text-[var(--color-text-secondary)] mt-2 max-w-sm", children: description }),
|
|
957
957
|
action && /* @__PURE__ */ jsx11("div", { className: "mt-6", children: action })
|
|
958
958
|
]
|
|
@@ -1294,17 +1294,17 @@ var defaultSizeMap = {
|
|
|
1294
1294
|
h6: "xs"
|
|
1295
1295
|
};
|
|
1296
1296
|
var sizeStyles3 = {
|
|
1297
|
-
xs: "text-sm",
|
|
1298
|
-
sm: "text-base",
|
|
1299
|
-
md: "text-lg",
|
|
1300
|
-
lg: "text-xl",
|
|
1301
|
-
xl: "text-2xl",
|
|
1302
|
-
"2xl": "text-3xl",
|
|
1303
|
-
"3xl": "text-4xl"
|
|
1297
|
+
xs: "text-[length:var(--font-size-sm)]",
|
|
1298
|
+
sm: "text-[length:var(--font-size-base)]",
|
|
1299
|
+
md: "text-[length:var(--font-size-lg)]",
|
|
1300
|
+
lg: "text-[length:var(--font-size-xl)]",
|
|
1301
|
+
xl: "text-[length:var(--font-size-2xl)]",
|
|
1302
|
+
"2xl": "text-[length:var(--font-size-3xl)]",
|
|
1303
|
+
"3xl": "text-[length:var(--font-size-4xl)]"
|
|
1304
1304
|
};
|
|
1305
1305
|
var weightStyles = {
|
|
1306
|
-
semibold: "font-semibold",
|
|
1307
|
-
bold: "font-bold"
|
|
1306
|
+
semibold: "font-[number:var(--font-weight-semibold)]",
|
|
1307
|
+
bold: "font-[number:var(--font-weight-bold)]"
|
|
1308
1308
|
};
|
|
1309
1309
|
function Heading2({
|
|
1310
1310
|
as: Tag = "h2",
|
|
@@ -1407,7 +1407,7 @@ function Breadcrumbs({ items, className }) {
|
|
|
1407
1407
|
"flex items-center gap-1",
|
|
1408
1408
|
isLast ? "min-w-0" : "shrink-0"
|
|
1409
1409
|
].join(" "),
|
|
1410
|
-
children: isLast ? /* @__PURE__ */ jsx22("span", { className: "font-medium text-[var(--color-text-primary)] truncate", children: item.label }) : /* @__PURE__ */ jsxs16(Fragment6, { children: [
|
|
1410
|
+
children: isLast ? /* @__PURE__ */ jsx22("span", { className: "font-[number:var(--font-weight-medium)] text-[var(--color-text-primary)] truncate", children: item.label }) : /* @__PURE__ */ jsxs16(Fragment6, { children: [
|
|
1411
1411
|
/* @__PURE__ */ jsx22(
|
|
1412
1412
|
Link2,
|
|
1413
1413
|
{
|
|
@@ -1536,18 +1536,18 @@ var variantStyles3 = {
|
|
|
1536
1536
|
default: {
|
|
1537
1537
|
base: [
|
|
1538
1538
|
"bg-transparent text-[var(--color-text-primary)]",
|
|
1539
|
-
"hover:bg-[var(--color-
|
|
1540
|
-
"pressed:bg-[var(--color-
|
|
1539
|
+
"hover:bg-[var(--color-surface-hover)]",
|
|
1540
|
+
"pressed:bg-[var(--color-surface-pressed)]"
|
|
1541
1541
|
].join(" "),
|
|
1542
|
-
selected: "bg-[var(--color-
|
|
1542
|
+
selected: "bg-[var(--color-surface-pressed)] text-[var(--color-text-primary)]"
|
|
1543
1543
|
},
|
|
1544
1544
|
primary: {
|
|
1545
1545
|
base: [
|
|
1546
1546
|
"bg-transparent text-[var(--color-text-primary)]",
|
|
1547
|
-
"hover:bg-[var(--color-
|
|
1548
|
-
"pressed:bg-[var(--color-
|
|
1547
|
+
"hover:bg-[var(--color-surface-hover)]",
|
|
1548
|
+
"pressed:bg-[var(--color-surface-pressed)]"
|
|
1549
1549
|
].join(" "),
|
|
1550
|
-
selected: "bg-[var(--color-
|
|
1550
|
+
selected: "bg-[var(--color-action-primary-active)] text-[var(--color-text-inverse)]"
|
|
1551
1551
|
},
|
|
1552
1552
|
outlined: {
|
|
1553
1553
|
base: [
|
|
@@ -1605,7 +1605,7 @@ function Menu({ items, children, className }) {
|
|
|
1605
1605
|
Popover2,
|
|
1606
1606
|
{
|
|
1607
1607
|
className: [
|
|
1608
|
-
"bg-[var(--color-surface-
|
|
1608
|
+
"bg-[var(--color-surface-default)] rounded-[var(--border-radius-md)]",
|
|
1609
1609
|
"shadow-lg border border-[var(--color-border-default)]",
|
|
1610
1610
|
"py-1 min-w-48",
|
|
1611
1611
|
"entering:animate-in entering:fade-in entering:zoom-in-95",
|
|
@@ -1631,8 +1631,8 @@ function Menu({ items, children, className }) {
|
|
|
1631
1631
|
className: [
|
|
1632
1632
|
"flex items-center gap-2 px-3 py-2 text-sm outline-none cursor-default",
|
|
1633
1633
|
"transition-colors",
|
|
1634
|
-
"focus:bg-[var(--color-
|
|
1635
|
-
"hover:bg-[var(--color-
|
|
1634
|
+
"focus:bg-[var(--color-surface-muted)]",
|
|
1635
|
+
"hover:bg-[var(--color-surface-muted)]",
|
|
1636
1636
|
"disabled:opacity-50 disabled:pointer-events-none",
|
|
1637
1637
|
item.isDanger ? "text-[var(--color-text-danger)]" : "text-[var(--color-text-primary)]"
|
|
1638
1638
|
].filter(Boolean).join(" "),
|
|
@@ -1807,14 +1807,14 @@ function getTabVariantStyles(variant, state) {
|
|
|
1807
1807
|
"text-[var(--color-teal-700)] font-[var(--font-weight-semibold)]",
|
|
1808
1808
|
// Bottom indicator via pseudo-element
|
|
1809
1809
|
"after:absolute after:bottom-[-1px] after:left-0 after:right-0 after:h-0.5 after:bg-[var(--color-teal-600)]"
|
|
1810
|
-
].join(" ") : state.isPressed ? "text-[var(--color-text-primary)] bg-[var(--color-
|
|
1810
|
+
].join(" ") : state.isPressed ? "text-[var(--color-text-primary)] bg-[var(--color-surface-muted)]" : state.isHovered ? "text-[var(--color-text-primary)] bg-[var(--color-surface-subtle)]" : "text-[var(--color-text-secondary)] bg-transparent"
|
|
1811
1811
|
];
|
|
1812
1812
|
}
|
|
1813
1813
|
return [
|
|
1814
1814
|
// Shape
|
|
1815
1815
|
"rounded-[var(--border-radius-md)]",
|
|
1816
1816
|
// Color states
|
|
1817
|
-
state.isSelected ? "text-[var(--color-text-primary)] font-[var(--font-weight-semibold)] bg-[var(--color-surface-default)] shadow-sm" : state.isPressed ? "text-[var(--color-text-primary)] bg-[var(--color-
|
|
1817
|
+
state.isSelected ? "text-[var(--color-text-primary)] font-[var(--font-weight-semibold)] bg-[var(--color-surface-default)] shadow-sm" : state.isPressed ? "text-[var(--color-text-primary)] bg-[var(--color-surface-subtle)] shadow-none" : state.isHovered ? "text-[var(--color-text-primary)] bg-[var(--color-surface-pressed)]" : "text-[var(--color-text-secondary)] bg-transparent"
|
|
1818
1818
|
];
|
|
1819
1819
|
}
|
|
1820
1820
|
function TabPanel({ className, ...props }) {
|
|
@@ -2146,20 +2146,20 @@ import { AlertCircle, Database, Info as Info2 } from "lucide-react";
|
|
|
2146
2146
|
import { twMerge as twMerge7 } from "tailwind-merge";
|
|
2147
2147
|
import { Fragment as Fragment8, jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2148
2148
|
var statusDotStyles = {
|
|
2149
|
-
connected: "bg-
|
|
2150
|
-
error: "bg-
|
|
2151
|
-
loading: "bg-
|
|
2149
|
+
connected: "bg-[var(--color-status-success)]",
|
|
2150
|
+
error: "border-2 border-[var(--color-status-danger)] bg-transparent",
|
|
2151
|
+
loading: "bg-[var(--color-status-warning)] animate-pulse"
|
|
2152
2152
|
};
|
|
2153
2153
|
var providerConfig = {
|
|
2154
|
-
aws: { label: "AWS", color: "bg-
|
|
2155
|
-
azure: { label: "Azure", color: "bg-
|
|
2156
|
-
gcp: { label: "GCP", color: "bg-
|
|
2157
|
-
minio: { label: "MinIO", color: "bg-
|
|
2154
|
+
aws: { label: "AWS", color: "bg-[var(--color-badge-purple-bg)] text-[var(--color-badge-purple-text)]" },
|
|
2155
|
+
azure: { label: "Azure", color: "bg-[var(--color-badge-teal-bg)] text-[var(--color-badge-teal-text)]" },
|
|
2156
|
+
gcp: { label: "GCP", color: "bg-[var(--color-badge-slate-bg)] text-[var(--color-badge-slate-text)]" },
|
|
2157
|
+
minio: { label: "MinIO", color: "bg-[var(--color-badge-rose-bg)] text-[var(--color-badge-rose-text)]" }
|
|
2158
2158
|
};
|
|
2159
2159
|
function ProviderBadge({ provider }) {
|
|
2160
2160
|
const config = providerConfig[provider.toLowerCase()];
|
|
2161
2161
|
const label = config?.label ?? provider;
|
|
2162
|
-
const colorClass = config?.color ?? "bg-neutral-
|
|
2162
|
+
const colorClass = config?.color ?? "bg-[var(--color-badge-neutral-bg)] text-[var(--color-badge-neutral-text)]";
|
|
2163
2163
|
return /* @__PURE__ */ jsx30(
|
|
2164
2164
|
"span",
|
|
2165
2165
|
{
|
|
@@ -2172,7 +2172,7 @@ function ProviderBadge({ provider }) {
|
|
|
2172
2172
|
);
|
|
2173
2173
|
}
|
|
2174
2174
|
function PreviewArea({
|
|
2175
|
-
status,
|
|
2175
|
+
status = "connected",
|
|
2176
2176
|
errorMessage,
|
|
2177
2177
|
children
|
|
2178
2178
|
}) {
|
|
@@ -2180,16 +2180,16 @@ function PreviewArea({
|
|
|
2180
2180
|
return /* @__PURE__ */ jsx30("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx30(Spinner, { size: "lg", "aria-label": "Loading connection" }) });
|
|
2181
2181
|
}
|
|
2182
2182
|
if (status === "error") {
|
|
2183
|
-
return /* @__PURE__ */ jsxs20("div", { className: "flex h-full flex-col items-center justify-center gap-2 bg-
|
|
2183
|
+
return /* @__PURE__ */ jsxs20("div", { className: "flex h-full flex-col items-center justify-center gap-2 bg-[var(--color-surface-danger)] px-4", children: [
|
|
2184
2184
|
/* @__PURE__ */ jsx30(
|
|
2185
2185
|
Icon,
|
|
2186
2186
|
{
|
|
2187
2187
|
icon: AlertCircle,
|
|
2188
2188
|
size: "lg",
|
|
2189
|
-
className: "text-
|
|
2189
|
+
className: "text-[var(--color-text-danger)]"
|
|
2190
2190
|
}
|
|
2191
2191
|
),
|
|
2192
|
-
errorMessage && /* @__PURE__ */ jsx30("p", { className: "text-center text-xs text-
|
|
2192
|
+
errorMessage && /* @__PURE__ */ jsx30("p", { className: "text-center text-xs text-[var(--color-text-danger)]", children: errorMessage })
|
|
2193
2193
|
] });
|
|
2194
2194
|
}
|
|
2195
2195
|
if (children) {
|
|
@@ -2200,7 +2200,7 @@ function PreviewArea({
|
|
|
2200
2200
|
{
|
|
2201
2201
|
icon: Database,
|
|
2202
2202
|
size: "xl",
|
|
2203
|
-
className: "text-[var(--color-
|
|
2203
|
+
className: "text-[var(--color-text-secondary)]"
|
|
2204
2204
|
}
|
|
2205
2205
|
) });
|
|
2206
2206
|
}
|
|
@@ -2220,7 +2220,7 @@ function StorageConnectionCard({
|
|
|
2220
2220
|
/* @__PURE__ */ jsx30("div", { className: "aspect-[4/3] bg-[var(--color-neutral-900)] overflow-hidden rounded-t-[var(--border-radius-lg)]", children: /* @__PURE__ */ jsx30(PreviewArea, { status, errorMessage, children }) }),
|
|
2221
2221
|
/* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-1.5 border-t border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-2.5 rounded-b-[var(--border-radius-lg)]", children: [
|
|
2222
2222
|
/* @__PURE__ */ jsxs20("div", { className: "flex items-start gap-2", children: [
|
|
2223
|
-
/* @__PURE__ */ jsx30(
|
|
2223
|
+
status && /* @__PURE__ */ jsx30(
|
|
2224
2224
|
"span",
|
|
2225
2225
|
{
|
|
2226
2226
|
className: twMerge7(
|
|
@@ -2245,10 +2245,10 @@ function StorageConnectionCard({
|
|
|
2245
2245
|
}
|
|
2246
2246
|
)
|
|
2247
2247
|
] }),
|
|
2248
|
-
/* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2 pl-4", children: [
|
|
2249
|
-
/* @__PURE__ */ jsx30(ProviderBadge, { provider }),
|
|
2250
|
-
region && /* @__PURE__ */ jsx30("span", { className: "shrink-0 text-xs text-[var(--color-text-secondary)]", children: region }),
|
|
2251
|
-
imageCount != null && status === "connected" && /* @__PURE__ */ jsxs20("span", { className: "ml-auto shrink-0 text-xs tabular-nums text-[var(--color-text-tertiary)]", children: [
|
|
2248
|
+
(provider || imageCount != null && (!status || status === "connected")) && /* @__PURE__ */ jsxs20("div", { className: twMerge7("flex items-center gap-2", status && "pl-4"), children: [
|
|
2249
|
+
provider && /* @__PURE__ */ jsx30(ProviderBadge, { provider }),
|
|
2250
|
+
provider && region && /* @__PURE__ */ jsx30("span", { className: "shrink-0 text-xs text-[var(--color-text-secondary)]", children: region }),
|
|
2251
|
+
imageCount != null && (!status || status === "connected") && /* @__PURE__ */ jsxs20("span", { className: "ml-auto shrink-0 text-xs tabular-nums text-[var(--color-text-tertiary)]", children: [
|
|
2252
2252
|
imageCount,
|
|
2253
2253
|
" ",
|
|
2254
2254
|
imageCount === 1 ? "image" : "images"
|
|
@@ -2269,6 +2269,424 @@ function StorageConnectionCard({
|
|
|
2269
2269
|
return /* @__PURE__ */ jsx30("div", { className: baseStyles, children: cardContent });
|
|
2270
2270
|
}
|
|
2271
2271
|
|
|
2272
|
+
// src/components/Badge/Badge.tsx
|
|
2273
|
+
import { twMerge as twMerge8 } from "tailwind-merge";
|
|
2274
|
+
import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2275
|
+
var variantStyles4 = {
|
|
2276
|
+
neutral: "bg-[var(--color-badge-neutral-bg)] text-[var(--color-badge-neutral-text)]",
|
|
2277
|
+
purple: "bg-[var(--color-badge-purple-bg)] text-[var(--color-badge-purple-text)]",
|
|
2278
|
+
teal: "bg-[var(--color-badge-teal-bg)] text-[var(--color-badge-teal-text)]",
|
|
2279
|
+
rose: "bg-[var(--color-badge-rose-bg)] text-[var(--color-badge-rose-text)]",
|
|
2280
|
+
slate: "bg-[var(--color-badge-slate-bg)] text-[var(--color-badge-slate-text)]",
|
|
2281
|
+
green: "bg-[var(--color-badge-green-bg)] text-[var(--color-badge-green-text)]",
|
|
2282
|
+
amber: "bg-[var(--color-badge-amber-bg)] text-[var(--color-badge-amber-text)]"
|
|
2283
|
+
};
|
|
2284
|
+
var sizeStyles7 = {
|
|
2285
|
+
sm: "px-1.5 py-0.5",
|
|
2286
|
+
md: "px-2 py-0.5"
|
|
2287
|
+
};
|
|
2288
|
+
var iconSizeMap4 = {
|
|
2289
|
+
sm: 12,
|
|
2290
|
+
md: 14
|
|
2291
|
+
};
|
|
2292
|
+
function Badge({
|
|
2293
|
+
children,
|
|
2294
|
+
variant = "neutral",
|
|
2295
|
+
size = "sm",
|
|
2296
|
+
icon: IconComponent,
|
|
2297
|
+
className
|
|
2298
|
+
}) {
|
|
2299
|
+
return /* @__PURE__ */ jsxs21(
|
|
2300
|
+
"span",
|
|
2301
|
+
{
|
|
2302
|
+
className: twMerge8(
|
|
2303
|
+
"inline-flex items-center gap-1 rounded-[var(--border-radius-full)]",
|
|
2304
|
+
"text-[length:var(--font-size-xs)] font-[number:var(--font-weight-medium)] leading-[var(--line-height-tight)]",
|
|
2305
|
+
variantStyles4[variant],
|
|
2306
|
+
sizeStyles7[size],
|
|
2307
|
+
className
|
|
2308
|
+
),
|
|
2309
|
+
children: [
|
|
2310
|
+
IconComponent && /* @__PURE__ */ jsx31(IconComponent, { size: iconSizeMap4[size], "aria-hidden": "true" }),
|
|
2311
|
+
children
|
|
2312
|
+
]
|
|
2313
|
+
}
|
|
2314
|
+
);
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2317
|
+
// src/components/Card/Card.tsx
|
|
2318
|
+
import { twMerge as twMerge9 } from "tailwind-merge";
|
|
2319
|
+
import { Fragment as Fragment9, jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2320
|
+
var paddingStyles = {
|
|
2321
|
+
none: "p-0",
|
|
2322
|
+
sm: "p-3",
|
|
2323
|
+
md: "p-4",
|
|
2324
|
+
lg: "p-6"
|
|
2325
|
+
};
|
|
2326
|
+
function Card({
|
|
2327
|
+
children,
|
|
2328
|
+
header,
|
|
2329
|
+
footer,
|
|
2330
|
+
padding = "md",
|
|
2331
|
+
href,
|
|
2332
|
+
interactive = false,
|
|
2333
|
+
className
|
|
2334
|
+
}) {
|
|
2335
|
+
const isInteractive = interactive || !!href;
|
|
2336
|
+
const containerClass = twMerge9(
|
|
2337
|
+
"bg-[var(--color-surface-default)] border border-[var(--color-border-default)] rounded-[var(--border-radius-lg)] overflow-hidden shadow-sm",
|
|
2338
|
+
isInteractive && "transition-shadow hover:shadow-md hover:border-[var(--color-border-focus)] cursor-pointer",
|
|
2339
|
+
href && "block focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-2 outline-none",
|
|
2340
|
+
className
|
|
2341
|
+
);
|
|
2342
|
+
const content = /* @__PURE__ */ jsxs22(Fragment9, { children: [
|
|
2343
|
+
header && /* @__PURE__ */ jsx32(
|
|
2344
|
+
"div",
|
|
2345
|
+
{
|
|
2346
|
+
className: twMerge9(
|
|
2347
|
+
"border-b border-[var(--color-border-default)]",
|
|
2348
|
+
paddingStyles[padding]
|
|
2349
|
+
),
|
|
2350
|
+
children: header
|
|
2351
|
+
}
|
|
2352
|
+
),
|
|
2353
|
+
/* @__PURE__ */ jsx32("div", { className: paddingStyles[padding], children }),
|
|
2354
|
+
footer && /* @__PURE__ */ jsx32(
|
|
2355
|
+
"div",
|
|
2356
|
+
{
|
|
2357
|
+
className: twMerge9(
|
|
2358
|
+
"border-t border-[var(--color-border-default)]",
|
|
2359
|
+
paddingStyles[padding]
|
|
2360
|
+
),
|
|
2361
|
+
children: footer
|
|
2362
|
+
}
|
|
2363
|
+
)
|
|
2364
|
+
] });
|
|
2365
|
+
if (href) {
|
|
2366
|
+
return /* @__PURE__ */ jsx32("a", { href, className: containerClass, children: content });
|
|
2367
|
+
}
|
|
2368
|
+
return /* @__PURE__ */ jsx32("div", { className: containerClass, children: content });
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2371
|
+
// src/components/DeltaIndicator/DeltaIndicator.tsx
|
|
2372
|
+
import { ArrowUp, ArrowDown, Minus } from "lucide-react";
|
|
2373
|
+
import { twMerge as twMerge10 } from "tailwind-merge";
|
|
2374
|
+
import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2375
|
+
function getDirection(current, previous) {
|
|
2376
|
+
const diff = current - previous;
|
|
2377
|
+
if (diff > 0) return "increase";
|
|
2378
|
+
if (diff < 0) return "decrease";
|
|
2379
|
+
return "flat";
|
|
2380
|
+
}
|
|
2381
|
+
function formatCurrency(value) {
|
|
2382
|
+
const abs = Math.abs(value);
|
|
2383
|
+
const sign = value >= 0 ? "+" : "-";
|
|
2384
|
+
if (abs < 1e3) {
|
|
2385
|
+
return `${sign}$${abs.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
|
|
2386
|
+
}
|
|
2387
|
+
return `${sign}$${abs.toLocaleString("en-US", { minimumFractionDigits: 0, maximumFractionDigits: 0 })}`;
|
|
2388
|
+
}
|
|
2389
|
+
function formatPercentage(current, previous) {
|
|
2390
|
+
if (previous === 0) return null;
|
|
2391
|
+
const pct = (current - previous) / Math.abs(previous) * 100;
|
|
2392
|
+
const sign = pct >= 0 ? "+" : "";
|
|
2393
|
+
return `${sign}${pct.toFixed(1)}%`;
|
|
2394
|
+
}
|
|
2395
|
+
var directionColors = {
|
|
2396
|
+
increase: "text-[var(--color-delta-increase-text)]",
|
|
2397
|
+
decrease: "text-[var(--color-delta-decrease-text)]",
|
|
2398
|
+
flat: "text-[var(--color-delta-flat-text)]"
|
|
2399
|
+
};
|
|
2400
|
+
var reverseDirectionColors = {
|
|
2401
|
+
increase: "text-[var(--color-delta-decrease-text)]",
|
|
2402
|
+
decrease: "text-[var(--color-delta-increase-text)]",
|
|
2403
|
+
flat: "text-[var(--color-delta-flat-text)]"
|
|
2404
|
+
};
|
|
2405
|
+
var directionIcons = {
|
|
2406
|
+
increase: ArrowUp,
|
|
2407
|
+
decrease: ArrowDown,
|
|
2408
|
+
flat: Minus
|
|
2409
|
+
};
|
|
2410
|
+
var directionBgColors = {
|
|
2411
|
+
increase: "bg-[var(--color-delta-increase-bg)]",
|
|
2412
|
+
decrease: "bg-[var(--color-delta-decrease-bg)]",
|
|
2413
|
+
flat: "bg-[var(--color-delta-flat-bg)]"
|
|
2414
|
+
};
|
|
2415
|
+
function DeltaIndicator({
|
|
2416
|
+
current,
|
|
2417
|
+
previous,
|
|
2418
|
+
format = "combined",
|
|
2419
|
+
mode = "inline",
|
|
2420
|
+
label,
|
|
2421
|
+
reverseColor = false,
|
|
2422
|
+
unavailable = false,
|
|
2423
|
+
unavailableText = "N/A",
|
|
2424
|
+
className
|
|
2425
|
+
}) {
|
|
2426
|
+
if (unavailable) {
|
|
2427
|
+
return /* @__PURE__ */ jsxs23(
|
|
2428
|
+
"span",
|
|
2429
|
+
{
|
|
2430
|
+
className: twMerge10(
|
|
2431
|
+
"inline-flex items-center gap-1 font-[number:var(--font-weight-medium)]",
|
|
2432
|
+
"text-[var(--color-text-tertiary)]",
|
|
2433
|
+
className
|
|
2434
|
+
),
|
|
2435
|
+
children: [
|
|
2436
|
+
label && /* @__PURE__ */ jsx33("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)] mr-1", children: label }),
|
|
2437
|
+
unavailableText
|
|
2438
|
+
]
|
|
2439
|
+
}
|
|
2440
|
+
);
|
|
2441
|
+
}
|
|
2442
|
+
const diff = current - previous;
|
|
2443
|
+
const direction = getDirection(current, previous);
|
|
2444
|
+
const colorStyles = reverseColor ? reverseDirectionColors[direction] : directionColors[direction];
|
|
2445
|
+
const IconComponent = directionIcons[direction];
|
|
2446
|
+
const isNew = previous === 0 && current > 0;
|
|
2447
|
+
let valueText;
|
|
2448
|
+
if (format === "currency") {
|
|
2449
|
+
valueText = formatCurrency(diff);
|
|
2450
|
+
if (isNew) valueText = `${formatCurrency(diff)} (new)`;
|
|
2451
|
+
} else if (format === "percentage") {
|
|
2452
|
+
const pct = formatPercentage(current, previous);
|
|
2453
|
+
valueText = pct ?? formatCurrency(diff);
|
|
2454
|
+
if (isNew) valueText = "New";
|
|
2455
|
+
} else {
|
|
2456
|
+
const pct = formatPercentage(current, previous);
|
|
2457
|
+
if (isNew) {
|
|
2458
|
+
valueText = `${formatCurrency(diff)} (new)`;
|
|
2459
|
+
} else if (pct) {
|
|
2460
|
+
valueText = `${formatCurrency(diff)} (${pct})`;
|
|
2461
|
+
} else {
|
|
2462
|
+
valueText = formatCurrency(diff);
|
|
2463
|
+
}
|
|
2464
|
+
}
|
|
2465
|
+
const isPill = mode === "pill";
|
|
2466
|
+
return /* @__PURE__ */ jsxs23(
|
|
2467
|
+
"span",
|
|
2468
|
+
{
|
|
2469
|
+
className: twMerge10(
|
|
2470
|
+
"inline-flex items-center gap-1 font-[number:var(--font-weight-medium)]",
|
|
2471
|
+
colorStyles,
|
|
2472
|
+
isPill && [
|
|
2473
|
+
"rounded-[var(--border-radius-full)] px-2 py-0.5",
|
|
2474
|
+
"text-[length:var(--font-size-xs)]",
|
|
2475
|
+
directionBgColors[direction]
|
|
2476
|
+
],
|
|
2477
|
+
className
|
|
2478
|
+
),
|
|
2479
|
+
children: [
|
|
2480
|
+
label && /* @__PURE__ */ jsx33("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)] mr-1", children: label }),
|
|
2481
|
+
/* @__PURE__ */ jsx33(IconComponent, { size: 14, "aria-hidden": true }),
|
|
2482
|
+
valueText
|
|
2483
|
+
]
|
|
2484
|
+
}
|
|
2485
|
+
);
|
|
2486
|
+
}
|
|
2487
|
+
|
|
2488
|
+
// src/components/ProgressBar/ProgressBar.tsx
|
|
2489
|
+
import { twMerge as twMerge11 } from "tailwind-merge";
|
|
2490
|
+
import { jsx as jsx34, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2491
|
+
var fillStyles = {
|
|
2492
|
+
brand: "bg-[var(--color-progress-fill)]",
|
|
2493
|
+
success: "bg-[var(--color-progress-fill-success)]",
|
|
2494
|
+
warning: "bg-[var(--color-progress-fill-warning)]",
|
|
2495
|
+
danger: "bg-[var(--color-progress-fill-danger)]",
|
|
2496
|
+
neutral: "bg-[var(--color-text-secondary)]"
|
|
2497
|
+
};
|
|
2498
|
+
var sizeStyles8 = {
|
|
2499
|
+
sm: "h-1.5",
|
|
2500
|
+
md: "h-3",
|
|
2501
|
+
lg: "h-4"
|
|
2502
|
+
};
|
|
2503
|
+
function ProgressBar({
|
|
2504
|
+
value,
|
|
2505
|
+
label,
|
|
2506
|
+
description,
|
|
2507
|
+
variant = "brand",
|
|
2508
|
+
size = "md",
|
|
2509
|
+
showValue = true,
|
|
2510
|
+
className
|
|
2511
|
+
}) {
|
|
2512
|
+
const clampedValue = Math.min(100, Math.max(0, value));
|
|
2513
|
+
return /* @__PURE__ */ jsxs24("div", { className: twMerge11("w-full", className), children: [
|
|
2514
|
+
(label || description || showValue) && /* @__PURE__ */ jsxs24("div", { className: "flex items-center justify-between mb-2", children: [
|
|
2515
|
+
/* @__PURE__ */ jsx34("span", { className: "text-[length:var(--font-size-sm)] font-[number:var(--font-weight-medium)] text-[var(--color-text-primary)]", children: label }),
|
|
2516
|
+
/* @__PURE__ */ jsx34("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)]", children: description ?? (showValue ? `${clampedValue}%` : null) })
|
|
2517
|
+
] }),
|
|
2518
|
+
/* @__PURE__ */ jsx34(
|
|
2519
|
+
"div",
|
|
2520
|
+
{
|
|
2521
|
+
role: "progressbar",
|
|
2522
|
+
"aria-valuenow": clampedValue,
|
|
2523
|
+
"aria-valuemin": 0,
|
|
2524
|
+
"aria-valuemax": 100,
|
|
2525
|
+
"aria-label": label ?? "Progress",
|
|
2526
|
+
className: twMerge11(
|
|
2527
|
+
"w-full rounded-[var(--border-radius-full)] bg-[var(--color-progress-track)]",
|
|
2528
|
+
sizeStyles8[size]
|
|
2529
|
+
),
|
|
2530
|
+
children: /* @__PURE__ */ jsx34(
|
|
2531
|
+
"div",
|
|
2532
|
+
{
|
|
2533
|
+
className: twMerge11(
|
|
2534
|
+
"h-full rounded-[var(--border-radius-full)] transition-all duration-300",
|
|
2535
|
+
fillStyles[variant]
|
|
2536
|
+
),
|
|
2537
|
+
style: { width: `${clampedValue}%` }
|
|
2538
|
+
}
|
|
2539
|
+
)
|
|
2540
|
+
}
|
|
2541
|
+
)
|
|
2542
|
+
] });
|
|
2543
|
+
}
|
|
2544
|
+
|
|
2545
|
+
// src/components/Banner/Banner.tsx
|
|
2546
|
+
import { useState as useState3 } from "react";
|
|
2547
|
+
import {
|
|
2548
|
+
Info as Info3,
|
|
2549
|
+
AlertTriangle,
|
|
2550
|
+
AlertCircle as AlertCircle2,
|
|
2551
|
+
CheckCircle2,
|
|
2552
|
+
X as X3
|
|
2553
|
+
} from "lucide-react";
|
|
2554
|
+
import { twMerge as twMerge12 } from "tailwind-merge";
|
|
2555
|
+
import { jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2556
|
+
var variantConfig2 = {
|
|
2557
|
+
info: {
|
|
2558
|
+
icon: Info3,
|
|
2559
|
+
containerClass: "bg-[var(--color-banner-info-bg)] border-[var(--color-banner-info-border)] text-[var(--color-banner-info-text)]",
|
|
2560
|
+
iconClass: "text-[var(--color-banner-info-icon)]",
|
|
2561
|
+
role: "status"
|
|
2562
|
+
},
|
|
2563
|
+
warning: {
|
|
2564
|
+
icon: AlertTriangle,
|
|
2565
|
+
containerClass: "bg-[var(--color-banner-warning-bg)] border-[var(--color-banner-warning-border)] text-[var(--color-banner-warning-text)]",
|
|
2566
|
+
iconClass: "text-[var(--color-banner-warning-icon)]",
|
|
2567
|
+
role: "alert"
|
|
2568
|
+
},
|
|
2569
|
+
danger: {
|
|
2570
|
+
icon: AlertCircle2,
|
|
2571
|
+
containerClass: "bg-[var(--color-banner-danger-bg)] border-[var(--color-banner-danger-border)] text-[var(--color-banner-danger-text)]",
|
|
2572
|
+
iconClass: "text-[var(--color-banner-danger-icon)]",
|
|
2573
|
+
role: "alert"
|
|
2574
|
+
},
|
|
2575
|
+
success: {
|
|
2576
|
+
icon: CheckCircle2,
|
|
2577
|
+
containerClass: "bg-[var(--color-banner-success-bg)] border-[var(--color-banner-success-border)] text-[var(--color-banner-success-text)]",
|
|
2578
|
+
iconClass: "text-[var(--color-banner-success-icon)]",
|
|
2579
|
+
role: "status"
|
|
2580
|
+
}
|
|
2581
|
+
};
|
|
2582
|
+
function Banner({
|
|
2583
|
+
children,
|
|
2584
|
+
variant = "info",
|
|
2585
|
+
title,
|
|
2586
|
+
icon,
|
|
2587
|
+
dismissible = false,
|
|
2588
|
+
onDismiss,
|
|
2589
|
+
className
|
|
2590
|
+
}) {
|
|
2591
|
+
const [dismissed, setDismissed] = useState3(false);
|
|
2592
|
+
if (dismissed) return null;
|
|
2593
|
+
const config = variantConfig2[variant];
|
|
2594
|
+
const IconComponent = icon ?? config.icon;
|
|
2595
|
+
const handleDismiss = () => {
|
|
2596
|
+
setDismissed(true);
|
|
2597
|
+
onDismiss?.();
|
|
2598
|
+
};
|
|
2599
|
+
return /* @__PURE__ */ jsxs25(
|
|
2600
|
+
"div",
|
|
2601
|
+
{
|
|
2602
|
+
role: config.role,
|
|
2603
|
+
className: twMerge12(
|
|
2604
|
+
"flex items-start gap-[var(--spacing-3)] rounded-[var(--border-radius-lg)] border px-[var(--spacing-4)] py-[var(--spacing-3)]",
|
|
2605
|
+
"text-[length:var(--font-size-sm)]",
|
|
2606
|
+
config.containerClass,
|
|
2607
|
+
className
|
|
2608
|
+
),
|
|
2609
|
+
children: [
|
|
2610
|
+
/* @__PURE__ */ jsx35(
|
|
2611
|
+
IconComponent,
|
|
2612
|
+
{
|
|
2613
|
+
size: 20,
|
|
2614
|
+
className: twMerge12("shrink-0 mt-0.5", config.iconClass),
|
|
2615
|
+
"aria-hidden": "true"
|
|
2616
|
+
}
|
|
2617
|
+
),
|
|
2618
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex-1", children: [
|
|
2619
|
+
title && /* @__PURE__ */ jsxs25("span", { className: "font-[number:var(--font-weight-medium)]", children: [
|
|
2620
|
+
title,
|
|
2621
|
+
" \u2014 "
|
|
2622
|
+
] }),
|
|
2623
|
+
children
|
|
2624
|
+
] }),
|
|
2625
|
+
dismissible && /* @__PURE__ */ jsx35(
|
|
2626
|
+
"button",
|
|
2627
|
+
{
|
|
2628
|
+
type: "button",
|
|
2629
|
+
onClick: handleDismiss,
|
|
2630
|
+
className: "shrink-0 rounded-[var(--border-radius-sm)] p-0.5 opacity-70 hover:opacity-100 transition-opacity outline-none focus-visible:ring-2 focus-visible:ring-current",
|
|
2631
|
+
"aria-label": "Dismiss",
|
|
2632
|
+
children: /* @__PURE__ */ jsx35(X3, { size: 16, "aria-hidden": "true" })
|
|
2633
|
+
}
|
|
2634
|
+
)
|
|
2635
|
+
]
|
|
2636
|
+
}
|
|
2637
|
+
);
|
|
2638
|
+
}
|
|
2639
|
+
|
|
2640
|
+
// src/components/MetricCard/MetricCard.tsx
|
|
2641
|
+
import { twMerge as twMerge13 } from "tailwind-merge";
|
|
2642
|
+
import { Fragment as Fragment10, jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2643
|
+
var sizeConfig = {
|
|
2644
|
+
sm: {
|
|
2645
|
+
padding: "p-3",
|
|
2646
|
+
labelClass: "text-[length:var(--font-size-xs)]",
|
|
2647
|
+
valueClass: "text-[length:var(--font-size-xl)]"
|
|
2648
|
+
},
|
|
2649
|
+
md: {
|
|
2650
|
+
padding: "p-4",
|
|
2651
|
+
labelClass: "text-[length:var(--font-size-sm)]",
|
|
2652
|
+
valueClass: "text-[length:var(--font-size-2xl)]"
|
|
2653
|
+
}
|
|
2654
|
+
};
|
|
2655
|
+
function MetricCard({
|
|
2656
|
+
label,
|
|
2657
|
+
value,
|
|
2658
|
+
secondary,
|
|
2659
|
+
href,
|
|
2660
|
+
size = "md",
|
|
2661
|
+
className
|
|
2662
|
+
}) {
|
|
2663
|
+
const config = sizeConfig[size];
|
|
2664
|
+
const containerClass = twMerge13(
|
|
2665
|
+
"bg-[var(--color-surface-default)] border border-[var(--color-border-default)] rounded-[var(--border-radius-lg)] shadow-sm",
|
|
2666
|
+
config.padding,
|
|
2667
|
+
href && "block transition-shadow hover:shadow-md hover:border-[var(--color-border-focus)] focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-2 outline-none",
|
|
2668
|
+
className
|
|
2669
|
+
);
|
|
2670
|
+
const content = /* @__PURE__ */ jsxs26(Fragment10, { children: [
|
|
2671
|
+
/* @__PURE__ */ jsx36("div", { className: twMerge13(config.labelClass, "text-[var(--color-text-secondary)]"), children: label }),
|
|
2672
|
+
/* @__PURE__ */ jsx36(
|
|
2673
|
+
"div",
|
|
2674
|
+
{
|
|
2675
|
+
className: twMerge13(
|
|
2676
|
+
config.valueClass,
|
|
2677
|
+
"font-[number:var(--font-weight-semibold)] text-[var(--color-text-primary)] mt-1 tabular-nums"
|
|
2678
|
+
),
|
|
2679
|
+
children: value
|
|
2680
|
+
}
|
|
2681
|
+
),
|
|
2682
|
+
secondary && /* @__PURE__ */ jsx36("div", { className: "mt-1 text-sm", children: secondary })
|
|
2683
|
+
] });
|
|
2684
|
+
if (href) {
|
|
2685
|
+
return /* @__PURE__ */ jsx36("a", { href, className: containerClass, children: content });
|
|
2686
|
+
}
|
|
2687
|
+
return /* @__PURE__ */ jsx36("div", { className: containerClass, children: content });
|
|
2688
|
+
}
|
|
2689
|
+
|
|
2272
2690
|
// src/tokens/tokens.ts
|
|
2273
2691
|
var ColorPurple50 = "#f5f0fa";
|
|
2274
2692
|
var ColorPurple100 = "#ead9f5";
|
|
@@ -2320,6 +2738,16 @@ var ColorSlate600 = "#475569";
|
|
|
2320
2738
|
var ColorSlate700 = "#334155";
|
|
2321
2739
|
var ColorSlate800 = "#1e293b";
|
|
2322
2740
|
var ColorSlate900 = "#0f172a";
|
|
2741
|
+
var ColorAmber50 = "#fffbeb";
|
|
2742
|
+
var ColorAmber100 = "#fef3c7";
|
|
2743
|
+
var ColorAmber200 = "#fde68a";
|
|
2744
|
+
var ColorAmber300 = "#fcd34d";
|
|
2745
|
+
var ColorAmber400 = "#fbbf24";
|
|
2746
|
+
var ColorAmber500 = "#f59e0b";
|
|
2747
|
+
var ColorAmber600 = "#d97706";
|
|
2748
|
+
var ColorAmber700 = "#b45309";
|
|
2749
|
+
var ColorAmber800 = "#92400e";
|
|
2750
|
+
var ColorAmber900 = "#78350f";
|
|
2323
2751
|
var ColorNeutral0 = "#ffffff";
|
|
2324
2752
|
var ColorNeutral50 = "#f9fafb";
|
|
2325
2753
|
var ColorNeutral100 = "#f3f4f6";
|
|
@@ -2369,6 +2797,7 @@ var ColorSurfaceWarning = "#fffbeb";
|
|
|
2369
2797
|
var ColorSurfaceInfo = "#f8fafc";
|
|
2370
2798
|
var ColorSurfaceOverlay = "#000000cc";
|
|
2371
2799
|
var ColorSurfaceHover = "#f3f4f6";
|
|
2800
|
+
var ColorSurfacePressed = "#e5e7eb";
|
|
2372
2801
|
var ColorSurfaceSelected = "#edf9f9";
|
|
2373
2802
|
var ColorSurfaceSelectedHover = "#d0f0f0";
|
|
2374
2803
|
var ColorBorderDefault = "#e5e7eb";
|
|
@@ -2381,6 +2810,54 @@ var ColorBorderSuccess = "#16a34a";
|
|
|
2381
2810
|
var ColorBorderInfo = "#94a3b8";
|
|
2382
2811
|
var ColorBorderWarning = "#d97706";
|
|
2383
2812
|
var ColorOverlayBackdrop = "#00000066";
|
|
2813
|
+
var ColorStatusSuccess = "#22c55e";
|
|
2814
|
+
var ColorStatusDanger = "#f43f5e";
|
|
2815
|
+
var ColorStatusWarning = "#d97706";
|
|
2816
|
+
var ColorStatusInfo = "#64748b";
|
|
2817
|
+
var ColorDeltaIncreaseBg = "#fff1f2";
|
|
2818
|
+
var ColorDeltaIncreaseText = "#be123c";
|
|
2819
|
+
var ColorDeltaIncreaseIcon = "#f43f5e";
|
|
2820
|
+
var ColorDeltaDecreaseBg = "#f0fdf4";
|
|
2821
|
+
var ColorDeltaDecreaseText = "#15803d";
|
|
2822
|
+
var ColorDeltaDecreaseIcon = "#22c55e";
|
|
2823
|
+
var ColorDeltaFlatBg = "#f3f4f6";
|
|
2824
|
+
var ColorDeltaFlatText = "#6b7280";
|
|
2825
|
+
var ColorDeltaFlatIcon = "#9ca3af";
|
|
2826
|
+
var ColorProgressTrack = "#e5e7eb";
|
|
2827
|
+
var ColorProgressFill = "#6b2695";
|
|
2828
|
+
var ColorProgressFillSuccess = "#22c55e";
|
|
2829
|
+
var ColorProgressFillWarning = "#f59e0b";
|
|
2830
|
+
var ColorProgressFillDanger = "#f43f5e";
|
|
2831
|
+
var ColorBannerInfoBg = "#f8fafc";
|
|
2832
|
+
var ColorBannerInfoText = "#334155";
|
|
2833
|
+
var ColorBannerInfoBorder = "#e2e8f0";
|
|
2834
|
+
var ColorBannerInfoIcon = "#64748b";
|
|
2835
|
+
var ColorBannerWarningBg = "#fffbeb";
|
|
2836
|
+
var ColorBannerWarningText = "#92400e";
|
|
2837
|
+
var ColorBannerWarningBorder = "#fde68a";
|
|
2838
|
+
var ColorBannerWarningIcon = "#f59e0b";
|
|
2839
|
+
var ColorBannerDangerBg = "#fff1f2";
|
|
2840
|
+
var ColorBannerDangerText = "#be123c";
|
|
2841
|
+
var ColorBannerDangerBorder = "#fecdd3";
|
|
2842
|
+
var ColorBannerDangerIcon = "#f43f5e";
|
|
2843
|
+
var ColorBannerSuccessBg = "#f0fdf4";
|
|
2844
|
+
var ColorBannerSuccessText = "#15803d";
|
|
2845
|
+
var ColorBannerSuccessBorder = "#bbf7d0";
|
|
2846
|
+
var ColorBannerSuccessIcon = "#22c55e";
|
|
2847
|
+
var ColorBadgePurpleBg = "#ead9f5";
|
|
2848
|
+
var ColorBadgePurpleText = "#5c2483";
|
|
2849
|
+
var ColorBadgeTealBg = "#d0f0f0";
|
|
2850
|
+
var ColorBadgeTealText = "#217d7e";
|
|
2851
|
+
var ColorBadgeSlateBg = "#f1f5f9";
|
|
2852
|
+
var ColorBadgeSlateText = "#334155";
|
|
2853
|
+
var ColorBadgeRoseBg = "#ffe4e6";
|
|
2854
|
+
var ColorBadgeRoseText = "#be123c";
|
|
2855
|
+
var ColorBadgeNeutralBg = "#f3f4f6";
|
|
2856
|
+
var ColorBadgeNeutralText = "#374151";
|
|
2857
|
+
var ColorBadgeGreenBg = "#dcfce7";
|
|
2858
|
+
var ColorBadgeGreenText = "#15803d";
|
|
2859
|
+
var ColorBadgeAmberBg = "#fef3c7";
|
|
2860
|
+
var ColorBadgeAmberText = "#b45309";
|
|
2384
2861
|
var Spacing1 = "4px";
|
|
2385
2862
|
var Spacing2 = "8px";
|
|
2386
2863
|
var Spacing3 = "12px";
|
|
@@ -2414,6 +2891,8 @@ var LineHeightTight = 1.25;
|
|
|
2414
2891
|
var LineHeightNormal = 1.5;
|
|
2415
2892
|
var LineHeightRelaxed = 1.625;
|
|
2416
2893
|
export {
|
|
2894
|
+
Badge,
|
|
2895
|
+
Banner,
|
|
2417
2896
|
BorderRadiusFull,
|
|
2418
2897
|
BorderRadiusLg,
|
|
2419
2898
|
BorderRadiusMd,
|
|
@@ -2423,6 +2902,7 @@ export {
|
|
|
2423
2902
|
Breadcrumbs,
|
|
2424
2903
|
Button,
|
|
2425
2904
|
ButtonLink,
|
|
2905
|
+
Card,
|
|
2426
2906
|
Cell,
|
|
2427
2907
|
Checkbox,
|
|
2428
2908
|
ColorActionDanger,
|
|
@@ -2438,6 +2918,46 @@ export {
|
|
|
2438
2918
|
ColorActionSecondaryHover,
|
|
2439
2919
|
ColorActionSuccess,
|
|
2440
2920
|
ColorActionSuccessHover,
|
|
2921
|
+
ColorAmber100,
|
|
2922
|
+
ColorAmber200,
|
|
2923
|
+
ColorAmber300,
|
|
2924
|
+
ColorAmber400,
|
|
2925
|
+
ColorAmber50,
|
|
2926
|
+
ColorAmber500,
|
|
2927
|
+
ColorAmber600,
|
|
2928
|
+
ColorAmber700,
|
|
2929
|
+
ColorAmber800,
|
|
2930
|
+
ColorAmber900,
|
|
2931
|
+
ColorBadgeAmberBg,
|
|
2932
|
+
ColorBadgeAmberText,
|
|
2933
|
+
ColorBadgeGreenBg,
|
|
2934
|
+
ColorBadgeGreenText,
|
|
2935
|
+
ColorBadgeNeutralBg,
|
|
2936
|
+
ColorBadgeNeutralText,
|
|
2937
|
+
ColorBadgePurpleBg,
|
|
2938
|
+
ColorBadgePurpleText,
|
|
2939
|
+
ColorBadgeRoseBg,
|
|
2940
|
+
ColorBadgeRoseText,
|
|
2941
|
+
ColorBadgeSlateBg,
|
|
2942
|
+
ColorBadgeSlateText,
|
|
2943
|
+
ColorBadgeTealBg,
|
|
2944
|
+
ColorBadgeTealText,
|
|
2945
|
+
ColorBannerDangerBg,
|
|
2946
|
+
ColorBannerDangerBorder,
|
|
2947
|
+
ColorBannerDangerIcon,
|
|
2948
|
+
ColorBannerDangerText,
|
|
2949
|
+
ColorBannerInfoBg,
|
|
2950
|
+
ColorBannerInfoBorder,
|
|
2951
|
+
ColorBannerInfoIcon,
|
|
2952
|
+
ColorBannerInfoText,
|
|
2953
|
+
ColorBannerSuccessBg,
|
|
2954
|
+
ColorBannerSuccessBorder,
|
|
2955
|
+
ColorBannerSuccessIcon,
|
|
2956
|
+
ColorBannerSuccessText,
|
|
2957
|
+
ColorBannerWarningBg,
|
|
2958
|
+
ColorBannerWarningBorder,
|
|
2959
|
+
ColorBannerWarningIcon,
|
|
2960
|
+
ColorBannerWarningText,
|
|
2441
2961
|
ColorBorderAccent,
|
|
2442
2962
|
ColorBorderBrand,
|
|
2443
2963
|
ColorBorderDanger,
|
|
@@ -2449,6 +2969,15 @@ export {
|
|
|
2449
2969
|
ColorBorderWarning,
|
|
2450
2970
|
ColorBrandAccent,
|
|
2451
2971
|
ColorBrandPrimary,
|
|
2972
|
+
ColorDeltaDecreaseBg,
|
|
2973
|
+
ColorDeltaDecreaseIcon,
|
|
2974
|
+
ColorDeltaDecreaseText,
|
|
2975
|
+
ColorDeltaFlatBg,
|
|
2976
|
+
ColorDeltaFlatIcon,
|
|
2977
|
+
ColorDeltaFlatText,
|
|
2978
|
+
ColorDeltaIncreaseBg,
|
|
2979
|
+
ColorDeltaIncreaseIcon,
|
|
2980
|
+
ColorDeltaIncreaseText,
|
|
2452
2981
|
ColorGreen100,
|
|
2453
2982
|
ColorGreen200,
|
|
2454
2983
|
ColorGreen300,
|
|
@@ -2473,6 +3002,11 @@ export {
|
|
|
2473
3002
|
ColorNeutral900,
|
|
2474
3003
|
ColorNeutral950,
|
|
2475
3004
|
ColorOverlayBackdrop,
|
|
3005
|
+
ColorProgressFill,
|
|
3006
|
+
ColorProgressFillDanger,
|
|
3007
|
+
ColorProgressFillSuccess,
|
|
3008
|
+
ColorProgressFillWarning,
|
|
3009
|
+
ColorProgressTrack,
|
|
2476
3010
|
ColorPurple100,
|
|
2477
3011
|
ColorPurple200,
|
|
2478
3012
|
ColorPurple300,
|
|
@@ -2503,6 +3037,10 @@ export {
|
|
|
2503
3037
|
ColorSlate700,
|
|
2504
3038
|
ColorSlate800,
|
|
2505
3039
|
ColorSlate900,
|
|
3040
|
+
ColorStatusDanger,
|
|
3041
|
+
ColorStatusInfo,
|
|
3042
|
+
ColorStatusSuccess,
|
|
3043
|
+
ColorStatusWarning,
|
|
2506
3044
|
ColorSurfaceAccent,
|
|
2507
3045
|
ColorSurfaceBrand,
|
|
2508
3046
|
ColorSurfaceDanger,
|
|
@@ -2511,6 +3049,7 @@ export {
|
|
|
2511
3049
|
ColorSurfaceInfo,
|
|
2512
3050
|
ColorSurfaceMuted,
|
|
2513
3051
|
ColorSurfaceOverlay,
|
|
3052
|
+
ColorSurfacePressed,
|
|
2514
3053
|
ColorSurfaceSelected,
|
|
2515
3054
|
ColorSurfaceSelectedHover,
|
|
2516
3055
|
ColorSurfaceSubtle,
|
|
@@ -2537,6 +3076,7 @@ export {
|
|
|
2537
3076
|
ColorTextTertiary,
|
|
2538
3077
|
ColorTextWarning,
|
|
2539
3078
|
Column,
|
|
3079
|
+
DeltaIndicator,
|
|
2540
3080
|
Dialog,
|
|
2541
3081
|
EmptyState,
|
|
2542
3082
|
Field,
|
|
@@ -2573,9 +3113,11 @@ export {
|
|
|
2573
3113
|
LineHeightTight,
|
|
2574
3114
|
Link,
|
|
2575
3115
|
Menu,
|
|
3116
|
+
MetricCard,
|
|
2576
3117
|
Popover3 as Popover,
|
|
2577
3118
|
PopoverContent,
|
|
2578
3119
|
PopoverTrigger,
|
|
3120
|
+
ProgressBar,
|
|
2579
3121
|
Radio,
|
|
2580
3122
|
RadioButton,
|
|
2581
3123
|
RadioGroup,
|