@cytario/design 1.11.0 → 1.12.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 +23 -6
- package/dist/index.js +101 -60
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/styles/tailwind.css +1 -0
- package/src/tokens/variables-dark.css +17 -0
- package/src/tokens/variables.css +17 -0
package/dist/index.d.ts
CHANGED
|
@@ -497,12 +497,12 @@ declare function SegmentedControlItem({ className, ...props }: SegmentedControlI
|
|
|
497
497
|
interface StorageConnectionCardProps {
|
|
498
498
|
/** Display name for the connection */
|
|
499
499
|
name: string;
|
|
500
|
-
/** Cloud provider identifier (e.g., "aws", "minio", "azure", "gcp") */
|
|
501
|
-
provider
|
|
502
|
-
/** AWS region or equivalent */
|
|
500
|
+
/** Cloud provider identifier (e.g., "aws", "minio", "azure", "gcp"). When omitted, the provider badge and region are hidden. */
|
|
501
|
+
provider?: string;
|
|
502
|
+
/** AWS region or equivalent (only rendered when provider is set) */
|
|
503
503
|
region?: string;
|
|
504
|
-
/** Connection health status */
|
|
505
|
-
status
|
|
504
|
+
/** Connection health status. When omitted, the status dot is hidden and the preview area behaves as "connected". */
|
|
505
|
+
status?: "connected" | "error" | "loading";
|
|
506
506
|
/** Human-readable error message when status is "error" */
|
|
507
507
|
errorMessage?: string;
|
|
508
508
|
/** Number of viewable images in the bucket */
|
|
@@ -619,6 +619,10 @@ declare const ColorSurfaceSuccess = "#f0fdf4";
|
|
|
619
619
|
declare const ColorSurfaceWarning = "#fffbeb";
|
|
620
620
|
declare const ColorSurfaceInfo = "#f8fafc";
|
|
621
621
|
declare const ColorSurfaceOverlay = "#000000cc";
|
|
622
|
+
declare const ColorSurfaceHover = "#f3f4f6";
|
|
623
|
+
declare const ColorSurfacePressed = "#e5e7eb";
|
|
624
|
+
declare const ColorSurfaceSelected = "#edf9f9";
|
|
625
|
+
declare const ColorSurfaceSelectedHover = "#d0f0f0";
|
|
622
626
|
declare const ColorBorderDefault = "#e5e7eb";
|
|
623
627
|
declare const ColorBorderStrong = "#d1d5db";
|
|
624
628
|
declare const ColorBorderBrand = "#5c2483";
|
|
@@ -629,6 +633,19 @@ declare const ColorBorderSuccess = "#16a34a";
|
|
|
629
633
|
declare const ColorBorderInfo = "#94a3b8";
|
|
630
634
|
declare const ColorBorderWarning = "#d97706";
|
|
631
635
|
declare const ColorOverlayBackdrop = "#00000066";
|
|
636
|
+
declare const ColorStatusSuccess = "#22c55e";
|
|
637
|
+
declare const ColorStatusDanger = "#f43f5e";
|
|
638
|
+
declare const ColorStatusWarning = "#d97706";
|
|
639
|
+
declare const ColorBadgePurpleBg = "#ead9f5";
|
|
640
|
+
declare const ColorBadgePurpleText = "#5c2483";
|
|
641
|
+
declare const ColorBadgeTealBg = "#d0f0f0";
|
|
642
|
+
declare const ColorBadgeTealText = "#217d7e";
|
|
643
|
+
declare const ColorBadgeSlateBg = "#f1f5f9";
|
|
644
|
+
declare const ColorBadgeSlateText = "#334155";
|
|
645
|
+
declare const ColorBadgeRoseBg = "#ffe4e6";
|
|
646
|
+
declare const ColorBadgeRoseText = "#be123c";
|
|
647
|
+
declare const ColorBadgeNeutralBg = "#f3f4f6";
|
|
648
|
+
declare const ColorBadgeNeutralText = "#374151";
|
|
632
649
|
declare const Spacing1 = "4px";
|
|
633
650
|
declare const Spacing2 = "8px";
|
|
634
651
|
declare const Spacing3 = "12px";
|
|
@@ -662,4 +679,4 @@ declare const LineHeightTight = 1.25;
|
|
|
662
679
|
declare const LineHeightNormal = 1.5;
|
|
663
680
|
declare const LineHeightRelaxed = 1.625;
|
|
664
681
|
|
|
665
|
-
export { BorderRadiusFull, BorderRadiusLg, BorderRadiusMd, BorderRadiusNone, BorderRadiusSm, BorderRadiusXl, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, Button, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, Cell, Checkbox, type CheckboxProps, ColorActionDanger, ColorActionDangerHover, ColorActionDefault, ColorActionDefaultHover, ColorActionInfo, ColorActionInfoHover, ColorActionPrimary, ColorActionPrimaryActive, ColorActionPrimaryHover, ColorActionSecondary, ColorActionSecondaryHover, ColorActionSuccess, ColorActionSuccessHover, ColorBorderAccent, ColorBorderBrand, ColorBorderDanger, ColorBorderDefault, ColorBorderFocus, ColorBorderInfo, ColorBorderStrong, ColorBorderSuccess, ColorBorderWarning, ColorBrandAccent, ColorBrandPrimary, ColorGreen100, ColorGreen200, ColorGreen300, ColorGreen400, ColorGreen50, ColorGreen500, ColorGreen600, ColorGreen700, ColorGreen800, ColorGreen900, ColorNeutral0, ColorNeutral100, ColorNeutral1000, ColorNeutral200, ColorNeutral300, ColorNeutral400, ColorNeutral50, ColorNeutral500, ColorNeutral600, ColorNeutral700, ColorNeutral800, ColorNeutral900, ColorNeutral950, ColorOverlayBackdrop, ColorPurple100, ColorPurple200, ColorPurple300, ColorPurple400, ColorPurple50, ColorPurple500, ColorPurple600, ColorPurple700, ColorPurple800, ColorPurple900, ColorRose100, ColorRose200, ColorRose300, ColorRose400, ColorRose50, ColorRose500, ColorRose600, ColorRose700, ColorRose800, ColorRose900, ColorSlate100, ColorSlate200, ColorSlate300, ColorSlate400, ColorSlate50, ColorSlate500, ColorSlate600, ColorSlate700, ColorSlate800, ColorSlate900, ColorSurfaceAccent, ColorSurfaceBrand, ColorSurfaceDanger, ColorSurfaceDefault, ColorSurfaceInfo, ColorSurfaceMuted, ColorSurfaceOverlay, ColorSurfaceSubtle, ColorSurfaceSuccess, ColorSurfaceWarning, ColorTeal100, ColorTeal200, ColorTeal300, ColorTeal400, ColorTeal50, ColorTeal500, ColorTeal600, ColorTeal700, ColorTeal800, ColorTeal900, ColorTextAccent, ColorTextBrand, ColorTextDanger, ColorTextInfo, ColorTextInverse, ColorTextPrimary, ColorTextSecondary, ColorTextSuccess, ColorTextTertiary, ColorTextWarning, Column, type DataTableProps, Dialog, type DialogProps, EmptyState, type EmptyStateProps, Field, type FieldProps, Fieldset, type FieldsetProps, FontSize2xl, FontSize3xl, FontSize4xl, FontSize5xl, FontSizeBase, FontSizeLg, FontSizeSm, FontSizeXl, FontSizeXs, FontWeightBold, FontWeightExtrabold, FontWeightLight, FontWeightMedium, FontWeightRegular, FontWeightSemibold, type GroupPosition, H1, H2, H3, Heading, type HeadingLevel, type HeadingProps, type HeadingSize, Icon, IconButton, IconButtonLink, type IconButtonLinkProps, type IconButtonProps, type IconProps, Input, InputAddon, type InputAddonProps, InputGroup, InputGroupContext, type InputGroupProps, type InputProps, Label, type LabelProps, LineHeightNormal, LineHeightRelaxed, LineHeightTight, Link, type LinkProps, type LinkVariant, Menu, type MenuItemData, type MenuProps, Popover, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, Radio, RadioButton, type RadioButtonProps, RadioGroup, type RadioGroupProps, type RadioProps, Row, SegmentedControl, SegmentedControlItem, type SegmentedControlItemProps, type SegmentedControlProps, type SegmentedControlSelectionMode, type SegmentedControlSize, Select, type SelectItem, type SelectProps, Spacing1, Spacing12, Spacing16, Spacing2, Spacing3, Spacing4, Spacing6, Spacing8, Spinner, type SpinnerProps, StorageConnectionCard, type StorageConnectionCardProps, Switch, type SwitchProps, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, TableHeader, type TableSize, Tabs, type TabsProps, type TabsSize, type TabsVariant, type ToastBridge, type ToastContextValue, type ToastData, ToastProvider, type ToastVariant, ToggleButton, type ToggleButtonProps, type ToggleButtonSize, type ToggleButtonVariant, Tooltip, type TooltipProps, Tree, type TreeNode, type TreeProps, createToastBridge, useInputGroup, useToast };
|
|
682
|
+
export { BorderRadiusFull, BorderRadiusLg, BorderRadiusMd, BorderRadiusNone, BorderRadiusSm, BorderRadiusXl, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, Button, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, Cell, Checkbox, type CheckboxProps, ColorActionDanger, ColorActionDangerHover, ColorActionDefault, ColorActionDefaultHover, ColorActionInfo, ColorActionInfoHover, ColorActionPrimary, ColorActionPrimaryActive, ColorActionPrimaryHover, ColorActionSecondary, ColorActionSecondaryHover, ColorActionSuccess, ColorActionSuccessHover, ColorBadgeNeutralBg, ColorBadgeNeutralText, ColorBadgePurpleBg, ColorBadgePurpleText, ColorBadgeRoseBg, ColorBadgeRoseText, ColorBadgeSlateBg, ColorBadgeSlateText, ColorBadgeTealBg, ColorBadgeTealText, ColorBorderAccent, ColorBorderBrand, ColorBorderDanger, ColorBorderDefault, ColorBorderFocus, ColorBorderInfo, ColorBorderStrong, ColorBorderSuccess, ColorBorderWarning, ColorBrandAccent, ColorBrandPrimary, ColorGreen100, ColorGreen200, ColorGreen300, ColorGreen400, ColorGreen50, ColorGreen500, ColorGreen600, ColorGreen700, ColorGreen800, ColorGreen900, ColorNeutral0, ColorNeutral100, ColorNeutral1000, ColorNeutral200, ColorNeutral300, ColorNeutral400, ColorNeutral50, ColorNeutral500, ColorNeutral600, ColorNeutral700, ColorNeutral800, ColorNeutral900, ColorNeutral950, ColorOverlayBackdrop, ColorPurple100, ColorPurple200, ColorPurple300, ColorPurple400, ColorPurple50, ColorPurple500, ColorPurple600, ColorPurple700, ColorPurple800, ColorPurple900, ColorRose100, ColorRose200, ColorRose300, ColorRose400, ColorRose50, ColorRose500, ColorRose600, ColorRose700, ColorRose800, ColorRose900, ColorSlate100, ColorSlate200, ColorSlate300, ColorSlate400, ColorSlate50, ColorSlate500, ColorSlate600, ColorSlate700, ColorSlate800, ColorSlate900, ColorStatusDanger, ColorStatusSuccess, ColorStatusWarning, ColorSurfaceAccent, ColorSurfaceBrand, ColorSurfaceDanger, ColorSurfaceDefault, ColorSurfaceHover, ColorSurfaceInfo, ColorSurfaceMuted, ColorSurfaceOverlay, ColorSurfacePressed, ColorSurfaceSelected, ColorSurfaceSelectedHover, ColorSurfaceSubtle, ColorSurfaceSuccess, ColorSurfaceWarning, ColorTeal100, ColorTeal200, ColorTeal300, ColorTeal400, ColorTeal50, ColorTeal500, ColorTeal600, ColorTeal700, ColorTeal800, ColorTeal900, ColorTextAccent, ColorTextBrand, ColorTextDanger, ColorTextInfo, ColorTextInverse, ColorTextPrimary, ColorTextSecondary, ColorTextSuccess, ColorTextTertiary, ColorTextWarning, Column, type DataTableProps, Dialog, type DialogProps, EmptyState, type EmptyStateProps, Field, type FieldProps, Fieldset, type FieldsetProps, FontSize2xl, FontSize3xl, FontSize4xl, FontSize5xl, FontSizeBase, FontSizeLg, FontSizeSm, FontSizeXl, FontSizeXs, FontWeightBold, FontWeightExtrabold, FontWeightLight, FontWeightMedium, FontWeightRegular, FontWeightSemibold, type GroupPosition, H1, H2, H3, Heading, type HeadingLevel, type HeadingProps, type HeadingSize, Icon, IconButton, IconButtonLink, type IconButtonLinkProps, type IconButtonProps, type IconProps, Input, InputAddon, type InputAddonProps, InputGroup, InputGroupContext, type InputGroupProps, type InputProps, Label, type LabelProps, LineHeightNormal, LineHeightRelaxed, LineHeightTight, Link, type LinkProps, type LinkVariant, Menu, type MenuItemData, type MenuProps, Popover, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, Radio, RadioButton, type RadioButtonProps, RadioGroup, type RadioGroupProps, type RadioProps, Row, SegmentedControl, SegmentedControlItem, type SegmentedControlItemProps, type SegmentedControlProps, type SegmentedControlSelectionMode, type SegmentedControlSize, Select, type SelectItem, type SelectProps, Spacing1, Spacing12, Spacing16, Spacing2, Spacing3, Spacing4, Spacing6, Spacing8, Spinner, type SpinnerProps, StorageConnectionCard, type StorageConnectionCardProps, Switch, type SwitchProps, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, TableHeader, type TableSize, Tabs, type TabsProps, type TabsSize, type TabsVariant, type ToastBridge, type ToastContextValue, type ToastData, ToastProvider, type ToastVariant, ToggleButton, type ToggleButtonProps, type ToggleButtonSize, type ToggleButtonVariant, Tooltip, type TooltipProps, Tree, type TreeNode, type TreeProps, createToastBridge, useInputGroup, useToast };
|
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 }) {
|
|
@@ -1857,12 +1857,15 @@ function NodeRenderer({
|
|
|
1857
1857
|
checkedIds,
|
|
1858
1858
|
onCheckToggle,
|
|
1859
1859
|
selectionMode,
|
|
1860
|
+
size,
|
|
1860
1861
|
onHover,
|
|
1861
1862
|
onHoverEnd
|
|
1862
1863
|
}) {
|
|
1863
1864
|
const data = node.data;
|
|
1864
1865
|
const isCheckbox = selectionMode === "checkbox";
|
|
1865
1866
|
const isChecked = isCheckbox && checkedIds.has(node.id);
|
|
1867
|
+
const isSelected = node.isSelected && !isCheckbox;
|
|
1868
|
+
const isCompact = size === "compact";
|
|
1866
1869
|
const IconComponent = data.icon ? data.icon : node.isInternal ? Folder : File;
|
|
1867
1870
|
return /* @__PURE__ */ jsxs19(
|
|
1868
1871
|
"div",
|
|
@@ -1870,16 +1873,19 @@ function NodeRenderer({
|
|
|
1870
1873
|
ref: dragHandle,
|
|
1871
1874
|
style,
|
|
1872
1875
|
className: [
|
|
1873
|
-
"flex items-center
|
|
1876
|
+
"relative flex items-center cursor-default select-none",
|
|
1877
|
+
isCompact ? "gap-0.5 px-2" : "gap-1 px-3",
|
|
1874
1878
|
"text-[length:var(--font-size-sm)] text-[var(--color-text-primary)]",
|
|
1875
1879
|
"outline-none",
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1880
|
+
// Full-width background via pseudo-element
|
|
1881
|
+
"before:absolute before:inset-y-0 before:left-[-100vw] before:right-0 before:-z-10 before:transition-colors",
|
|
1882
|
+
isSelected ? "before:bg-[var(--color-surface-selected)] hover:before:bg-[var(--color-surface-selected-hover)] border-l-2 border-l-[var(--color-brand-accent)]" : "hover:before:bg-[var(--color-surface-hover)]",
|
|
1883
|
+
node.isFocused ? "outline-2 outline-[var(--color-border-focus)] outline-offset-[-2px]" : ""
|
|
1879
1884
|
].filter(Boolean).join(" "),
|
|
1880
1885
|
role: "treeitem",
|
|
1881
1886
|
"aria-selected": isCheckbox ? isChecked : node.isSelected,
|
|
1882
1887
|
"aria-expanded": node.isInternal ? node.isOpen : void 0,
|
|
1888
|
+
"aria-level": node.level + 1,
|
|
1883
1889
|
onPointerEnter: () => onHover?.(node.data),
|
|
1884
1890
|
onPointerLeave: () => onHoverEnd?.(node.data),
|
|
1885
1891
|
onClick: (e) => {
|
|
@@ -1901,10 +1907,10 @@ function NodeRenderer({
|
|
|
1901
1907
|
{
|
|
1902
1908
|
type: "button",
|
|
1903
1909
|
className: [
|
|
1904
|
-
"flex items-center justify-center w-
|
|
1910
|
+
"flex items-center justify-center w-6 h-6 shrink-0",
|
|
1905
1911
|
"rounded-[var(--border-radius-sm)]",
|
|
1906
1912
|
"text-[var(--color-text-secondary)]",
|
|
1907
|
-
"hover:text-[var(--color-text-primary)]
|
|
1913
|
+
"hover:text-[var(--color-text-primary)]",
|
|
1908
1914
|
"transition-transform",
|
|
1909
1915
|
node.isInternal ? "visible" : "invisible"
|
|
1910
1916
|
].filter(Boolean).join(" "),
|
|
@@ -2025,7 +2031,7 @@ function Tree({
|
|
|
2025
2031
|
{
|
|
2026
2032
|
role: "tree",
|
|
2027
2033
|
"aria-label": ariaLabel,
|
|
2028
|
-
className: ["outline-none", className].filter(Boolean).join(" "),
|
|
2034
|
+
className: ["outline-none overflow-hidden", className].filter(Boolean).join(" "),
|
|
2029
2035
|
children: /* @__PURE__ */ jsx28(
|
|
2030
2036
|
ArboristTree,
|
|
2031
2037
|
{
|
|
@@ -2052,6 +2058,7 @@ function Tree({
|
|
|
2052
2058
|
checkedIds,
|
|
2053
2059
|
onCheckToggle: handleCheckToggle,
|
|
2054
2060
|
selectionMode,
|
|
2061
|
+
size,
|
|
2055
2062
|
onHover,
|
|
2056
2063
|
onHoverEnd
|
|
2057
2064
|
}
|
|
@@ -2139,20 +2146,20 @@ import { AlertCircle, Database, Info as Info2 } from "lucide-react";
|
|
|
2139
2146
|
import { twMerge as twMerge7 } from "tailwind-merge";
|
|
2140
2147
|
import { Fragment as Fragment8, jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2141
2148
|
var statusDotStyles = {
|
|
2142
|
-
connected: "bg-
|
|
2143
|
-
error: "bg-
|
|
2144
|
-
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"
|
|
2145
2152
|
};
|
|
2146
2153
|
var providerConfig = {
|
|
2147
|
-
aws: { label: "AWS", color: "bg-
|
|
2148
|
-
azure: { label: "Azure", color: "bg-
|
|
2149
|
-
gcp: { label: "GCP", color: "bg-
|
|
2150
|
-
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)]" }
|
|
2151
2158
|
};
|
|
2152
2159
|
function ProviderBadge({ provider }) {
|
|
2153
2160
|
const config = providerConfig[provider.toLowerCase()];
|
|
2154
2161
|
const label = config?.label ?? provider;
|
|
2155
|
-
const colorClass = config?.color ?? "bg-neutral-
|
|
2162
|
+
const colorClass = config?.color ?? "bg-[var(--color-badge-neutral-bg)] text-[var(--color-badge-neutral-text)]";
|
|
2156
2163
|
return /* @__PURE__ */ jsx30(
|
|
2157
2164
|
"span",
|
|
2158
2165
|
{
|
|
@@ -2165,7 +2172,7 @@ function ProviderBadge({ provider }) {
|
|
|
2165
2172
|
);
|
|
2166
2173
|
}
|
|
2167
2174
|
function PreviewArea({
|
|
2168
|
-
status,
|
|
2175
|
+
status = "connected",
|
|
2169
2176
|
errorMessage,
|
|
2170
2177
|
children
|
|
2171
2178
|
}) {
|
|
@@ -2173,16 +2180,16 @@ function PreviewArea({
|
|
|
2173
2180
|
return /* @__PURE__ */ jsx30("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx30(Spinner, { size: "lg", "aria-label": "Loading connection" }) });
|
|
2174
2181
|
}
|
|
2175
2182
|
if (status === "error") {
|
|
2176
|
-
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: [
|
|
2177
2184
|
/* @__PURE__ */ jsx30(
|
|
2178
2185
|
Icon,
|
|
2179
2186
|
{
|
|
2180
2187
|
icon: AlertCircle,
|
|
2181
2188
|
size: "lg",
|
|
2182
|
-
className: "text-
|
|
2189
|
+
className: "text-[var(--color-text-danger)]"
|
|
2183
2190
|
}
|
|
2184
2191
|
),
|
|
2185
|
-
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 })
|
|
2186
2193
|
] });
|
|
2187
2194
|
}
|
|
2188
2195
|
if (children) {
|
|
@@ -2193,7 +2200,7 @@ function PreviewArea({
|
|
|
2193
2200
|
{
|
|
2194
2201
|
icon: Database,
|
|
2195
2202
|
size: "xl",
|
|
2196
|
-
className: "text-[var(--color-
|
|
2203
|
+
className: "text-[var(--color-text-secondary)]"
|
|
2197
2204
|
}
|
|
2198
2205
|
) });
|
|
2199
2206
|
}
|
|
@@ -2213,7 +2220,7 @@ function StorageConnectionCard({
|
|
|
2213
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 }) }),
|
|
2214
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: [
|
|
2215
2222
|
/* @__PURE__ */ jsxs20("div", { className: "flex items-start gap-2", children: [
|
|
2216
|
-
/* @__PURE__ */ jsx30(
|
|
2223
|
+
status && /* @__PURE__ */ jsx30(
|
|
2217
2224
|
"span",
|
|
2218
2225
|
{
|
|
2219
2226
|
className: twMerge7(
|
|
@@ -2238,10 +2245,10 @@ function StorageConnectionCard({
|
|
|
2238
2245
|
}
|
|
2239
2246
|
)
|
|
2240
2247
|
] }),
|
|
2241
|
-
/* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2 pl-4", children: [
|
|
2242
|
-
/* @__PURE__ */ jsx30(ProviderBadge, { provider }),
|
|
2243
|
-
region && /* @__PURE__ */ jsx30("span", { className: "shrink-0 text-xs text-[var(--color-text-secondary)]", children: region }),
|
|
2244
|
-
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: [
|
|
2245
2252
|
imageCount,
|
|
2246
2253
|
" ",
|
|
2247
2254
|
imageCount === 1 ? "image" : "images"
|
|
@@ -2361,6 +2368,10 @@ var ColorSurfaceSuccess = "#f0fdf4";
|
|
|
2361
2368
|
var ColorSurfaceWarning = "#fffbeb";
|
|
2362
2369
|
var ColorSurfaceInfo = "#f8fafc";
|
|
2363
2370
|
var ColorSurfaceOverlay = "#000000cc";
|
|
2371
|
+
var ColorSurfaceHover = "#f3f4f6";
|
|
2372
|
+
var ColorSurfacePressed = "#e5e7eb";
|
|
2373
|
+
var ColorSurfaceSelected = "#edf9f9";
|
|
2374
|
+
var ColorSurfaceSelectedHover = "#d0f0f0";
|
|
2364
2375
|
var ColorBorderDefault = "#e5e7eb";
|
|
2365
2376
|
var ColorBorderStrong = "#d1d5db";
|
|
2366
2377
|
var ColorBorderBrand = "#5c2483";
|
|
@@ -2371,6 +2382,19 @@ var ColorBorderSuccess = "#16a34a";
|
|
|
2371
2382
|
var ColorBorderInfo = "#94a3b8";
|
|
2372
2383
|
var ColorBorderWarning = "#d97706";
|
|
2373
2384
|
var ColorOverlayBackdrop = "#00000066";
|
|
2385
|
+
var ColorStatusSuccess = "#22c55e";
|
|
2386
|
+
var ColorStatusDanger = "#f43f5e";
|
|
2387
|
+
var ColorStatusWarning = "#d97706";
|
|
2388
|
+
var ColorBadgePurpleBg = "#ead9f5";
|
|
2389
|
+
var ColorBadgePurpleText = "#5c2483";
|
|
2390
|
+
var ColorBadgeTealBg = "#d0f0f0";
|
|
2391
|
+
var ColorBadgeTealText = "#217d7e";
|
|
2392
|
+
var ColorBadgeSlateBg = "#f1f5f9";
|
|
2393
|
+
var ColorBadgeSlateText = "#334155";
|
|
2394
|
+
var ColorBadgeRoseBg = "#ffe4e6";
|
|
2395
|
+
var ColorBadgeRoseText = "#be123c";
|
|
2396
|
+
var ColorBadgeNeutralBg = "#f3f4f6";
|
|
2397
|
+
var ColorBadgeNeutralText = "#374151";
|
|
2374
2398
|
var Spacing1 = "4px";
|
|
2375
2399
|
var Spacing2 = "8px";
|
|
2376
2400
|
var Spacing3 = "12px";
|
|
@@ -2428,6 +2452,16 @@ export {
|
|
|
2428
2452
|
ColorActionSecondaryHover,
|
|
2429
2453
|
ColorActionSuccess,
|
|
2430
2454
|
ColorActionSuccessHover,
|
|
2455
|
+
ColorBadgeNeutralBg,
|
|
2456
|
+
ColorBadgeNeutralText,
|
|
2457
|
+
ColorBadgePurpleBg,
|
|
2458
|
+
ColorBadgePurpleText,
|
|
2459
|
+
ColorBadgeRoseBg,
|
|
2460
|
+
ColorBadgeRoseText,
|
|
2461
|
+
ColorBadgeSlateBg,
|
|
2462
|
+
ColorBadgeSlateText,
|
|
2463
|
+
ColorBadgeTealBg,
|
|
2464
|
+
ColorBadgeTealText,
|
|
2431
2465
|
ColorBorderAccent,
|
|
2432
2466
|
ColorBorderBrand,
|
|
2433
2467
|
ColorBorderDanger,
|
|
@@ -2493,13 +2527,20 @@ export {
|
|
|
2493
2527
|
ColorSlate700,
|
|
2494
2528
|
ColorSlate800,
|
|
2495
2529
|
ColorSlate900,
|
|
2530
|
+
ColorStatusDanger,
|
|
2531
|
+
ColorStatusSuccess,
|
|
2532
|
+
ColorStatusWarning,
|
|
2496
2533
|
ColorSurfaceAccent,
|
|
2497
2534
|
ColorSurfaceBrand,
|
|
2498
2535
|
ColorSurfaceDanger,
|
|
2499
2536
|
ColorSurfaceDefault,
|
|
2537
|
+
ColorSurfaceHover,
|
|
2500
2538
|
ColorSurfaceInfo,
|
|
2501
2539
|
ColorSurfaceMuted,
|
|
2502
2540
|
ColorSurfaceOverlay,
|
|
2541
|
+
ColorSurfacePressed,
|
|
2542
|
+
ColorSurfaceSelected,
|
|
2543
|
+
ColorSurfaceSelectedHover,
|
|
2503
2544
|
ColorSurfaceSubtle,
|
|
2504
2545
|
ColorSurfaceSuccess,
|
|
2505
2546
|
ColorSurfaceWarning,
|