@cytario/design 1.15.0 → 1.16.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 +50 -4
- package/dist/index.js +250 -142
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1600,27 +1600,28 @@ import {
|
|
|
1600
1600
|
Popover as Popover2
|
|
1601
1601
|
} from "react-aria-components";
|
|
1602
1602
|
import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1603
|
-
|
|
1603
|
+
var popoverStyles = [
|
|
1604
|
+
"bg-[var(--color-surface-default)] rounded-[var(--border-radius-md)]",
|
|
1605
|
+
"shadow-lg border border-[var(--color-border-default)]",
|
|
1606
|
+
"py-1 min-w-48",
|
|
1607
|
+
"entering:animate-in entering:fade-in entering:zoom-in-95",
|
|
1608
|
+
"exiting:animate-out exiting:fade-out exiting:zoom-out-95"
|
|
1609
|
+
].join(" ");
|
|
1610
|
+
function Menu({ items, content, children, onAction, className }) {
|
|
1604
1611
|
return /* @__PURE__ */ jsxs18(MenuTrigger, { children: [
|
|
1605
1612
|
children,
|
|
1606
1613
|
/* @__PURE__ */ jsx25(
|
|
1607
1614
|
Popover2,
|
|
1608
1615
|
{
|
|
1609
|
-
className: [
|
|
1610
|
-
|
|
1611
|
-
"shadow-lg border border-[var(--color-border-default)]",
|
|
1612
|
-
"py-1 min-w-48",
|
|
1613
|
-
"entering:animate-in entering:fade-in entering:zoom-in-95",
|
|
1614
|
-
"exiting:animate-out exiting:fade-out exiting:zoom-out-95",
|
|
1615
|
-
className
|
|
1616
|
-
].filter(Boolean).join(" "),
|
|
1617
|
-
children: /* @__PURE__ */ jsx25(
|
|
1616
|
+
className: [popoverStyles, className].filter(Boolean).join(" "),
|
|
1617
|
+
children: items ? /* @__PURE__ */ jsx25(
|
|
1618
1618
|
AriaMenu,
|
|
1619
1619
|
{
|
|
1620
1620
|
items,
|
|
1621
1621
|
onAction: (key) => {
|
|
1622
1622
|
const item = items.find((i) => i.id === key);
|
|
1623
1623
|
item?.onAction?.();
|
|
1624
|
+
onAction?.(key);
|
|
1624
1625
|
},
|
|
1625
1626
|
className: "outline-none",
|
|
1626
1627
|
children: (item) => /* @__PURE__ */ jsxs18(
|
|
@@ -1640,17 +1641,120 @@ function Menu({ items, children, className }) {
|
|
|
1640
1641
|
].filter(Boolean).join(" "),
|
|
1641
1642
|
children: [
|
|
1642
1643
|
item.icon && /* @__PURE__ */ jsx25(Icon, { icon: item.icon, size: "sm" }),
|
|
1643
|
-
item.label
|
|
1644
|
+
/* @__PURE__ */ jsx25("span", { className: "flex-1", children: item.label }),
|
|
1645
|
+
item.endContent && /* @__PURE__ */ jsx25("span", { className: "ml-auto flex items-center", children: item.endContent })
|
|
1644
1646
|
]
|
|
1645
1647
|
}
|
|
1646
1648
|
)
|
|
1647
1649
|
}
|
|
1650
|
+
) : /* @__PURE__ */ jsx25(
|
|
1651
|
+
AriaMenu,
|
|
1652
|
+
{
|
|
1653
|
+
onAction: (key) => onAction?.(key),
|
|
1654
|
+
className: "outline-none",
|
|
1655
|
+
children: content
|
|
1656
|
+
}
|
|
1648
1657
|
)
|
|
1649
1658
|
}
|
|
1650
1659
|
)
|
|
1651
1660
|
] });
|
|
1652
1661
|
}
|
|
1653
1662
|
|
|
1663
|
+
// src/components/Menu/MenuItem.tsx
|
|
1664
|
+
import { MenuItem as AriaMenuItem2 } from "react-aria-components";
|
|
1665
|
+
import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1666
|
+
function MenuItem({
|
|
1667
|
+
id,
|
|
1668
|
+
children,
|
|
1669
|
+
icon,
|
|
1670
|
+
endContent,
|
|
1671
|
+
onAction,
|
|
1672
|
+
href,
|
|
1673
|
+
target,
|
|
1674
|
+
isDisabled,
|
|
1675
|
+
isDanger,
|
|
1676
|
+
textValue,
|
|
1677
|
+
className
|
|
1678
|
+
}) {
|
|
1679
|
+
return /* @__PURE__ */ jsxs19(
|
|
1680
|
+
AriaMenuItem2,
|
|
1681
|
+
{
|
|
1682
|
+
id,
|
|
1683
|
+
href,
|
|
1684
|
+
target,
|
|
1685
|
+
isDisabled,
|
|
1686
|
+
onAction,
|
|
1687
|
+
textValue,
|
|
1688
|
+
className: [
|
|
1689
|
+
"flex items-center gap-2 px-3 py-2 text-sm outline-none cursor-default",
|
|
1690
|
+
"transition-colors",
|
|
1691
|
+
"focus:bg-[var(--color-surface-muted)]",
|
|
1692
|
+
"hover:bg-[var(--color-surface-muted)]",
|
|
1693
|
+
"disabled:opacity-50 disabled:pointer-events-none",
|
|
1694
|
+
isDanger ? "text-[var(--color-text-danger)]" : "text-[var(--color-text-primary)]",
|
|
1695
|
+
className
|
|
1696
|
+
].filter(Boolean).join(" "),
|
|
1697
|
+
children: [
|
|
1698
|
+
icon && /* @__PURE__ */ jsx26(Icon, { icon, size: "sm" }),
|
|
1699
|
+
/* @__PURE__ */ jsx26("span", { className: "flex-1", children }),
|
|
1700
|
+
endContent && /* @__PURE__ */ jsx26("span", { className: "ml-auto flex items-center", children: endContent })
|
|
1701
|
+
]
|
|
1702
|
+
}
|
|
1703
|
+
);
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1706
|
+
// src/components/Menu/MenuSection.tsx
|
|
1707
|
+
import {
|
|
1708
|
+
MenuSection as AriaMenuSection,
|
|
1709
|
+
Header
|
|
1710
|
+
} from "react-aria-components";
|
|
1711
|
+
import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1712
|
+
function MenuSection({
|
|
1713
|
+
header,
|
|
1714
|
+
children,
|
|
1715
|
+
"aria-label": ariaLabel,
|
|
1716
|
+
className
|
|
1717
|
+
}) {
|
|
1718
|
+
return /* @__PURE__ */ jsxs20(AriaMenuSection, { className, "aria-label": ariaLabel, children: [
|
|
1719
|
+
header && /* @__PURE__ */ jsx27(
|
|
1720
|
+
Header,
|
|
1721
|
+
{
|
|
1722
|
+
className: [
|
|
1723
|
+
"px-3 py-1.5",
|
|
1724
|
+
"text-[length:var(--font-size-xs)] font-[number:var(--font-weight-semibold)]",
|
|
1725
|
+
"text-[var(--color-text-secondary)]",
|
|
1726
|
+
"uppercase tracking-wider",
|
|
1727
|
+
"select-none"
|
|
1728
|
+
].join(" "),
|
|
1729
|
+
children: header
|
|
1730
|
+
}
|
|
1731
|
+
),
|
|
1732
|
+
children
|
|
1733
|
+
] });
|
|
1734
|
+
}
|
|
1735
|
+
|
|
1736
|
+
// src/components/Menu/MenuHeader.tsx
|
|
1737
|
+
import { Header as Header2 } from "react-aria-components";
|
|
1738
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
1739
|
+
function MenuHeader({ children, className }) {
|
|
1740
|
+
return /* @__PURE__ */ jsx28(Header2, { className, children });
|
|
1741
|
+
}
|
|
1742
|
+
|
|
1743
|
+
// src/components/Menu/MenuSeparator.tsx
|
|
1744
|
+
import { Separator } from "react-aria-components";
|
|
1745
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
1746
|
+
function MenuSeparator({ className }) {
|
|
1747
|
+
return /* @__PURE__ */ jsx29(
|
|
1748
|
+
Separator,
|
|
1749
|
+
{
|
|
1750
|
+
className: [
|
|
1751
|
+
"border-t border-[var(--color-border-default)] my-1",
|
|
1752
|
+
className
|
|
1753
|
+
].filter(Boolean).join(" ")
|
|
1754
|
+
}
|
|
1755
|
+
);
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1654
1758
|
// src/components/Popover/Popover.tsx
|
|
1655
1759
|
import {
|
|
1656
1760
|
DialogTrigger,
|
|
@@ -1658,12 +1762,12 @@ import {
|
|
|
1658
1762
|
Dialog as AriaDialog2,
|
|
1659
1763
|
Button as AriaButton3
|
|
1660
1764
|
} from "react-aria-components";
|
|
1661
|
-
import { Fragment as Fragment7, jsx as
|
|
1765
|
+
import { Fragment as Fragment7, jsx as jsx30 } from "react/jsx-runtime";
|
|
1662
1766
|
function Popover3({ children, isOpen, onOpenChange }) {
|
|
1663
|
-
return /* @__PURE__ */
|
|
1767
|
+
return /* @__PURE__ */ jsx30(DialogTrigger, { isOpen, onOpenChange, children });
|
|
1664
1768
|
}
|
|
1665
1769
|
function PopoverTrigger({ children, className }) {
|
|
1666
|
-
return /* @__PURE__ */
|
|
1770
|
+
return /* @__PURE__ */ jsx30(
|
|
1667
1771
|
AriaButton3,
|
|
1668
1772
|
{
|
|
1669
1773
|
className: [
|
|
@@ -1681,7 +1785,7 @@ function PopoverContent({
|
|
|
1681
1785
|
className,
|
|
1682
1786
|
children
|
|
1683
1787
|
}) {
|
|
1684
|
-
return /* @__PURE__ */
|
|
1788
|
+
return /* @__PURE__ */ jsx30(
|
|
1685
1789
|
AriaPopover,
|
|
1686
1790
|
{
|
|
1687
1791
|
placement,
|
|
@@ -1698,7 +1802,7 @@ function PopoverContent({
|
|
|
1698
1802
|
"entering:placement-right:slide-in-from-left-1",
|
|
1699
1803
|
className
|
|
1700
1804
|
].filter(Boolean).join(" "),
|
|
1701
|
-
children: /* @__PURE__ */
|
|
1805
|
+
children: /* @__PURE__ */ jsx30(AriaDialog2, { className: "outline-none", children: ({ close }) => /* @__PURE__ */ jsx30(Fragment7, { children: typeof children === "function" ? children({ close }) : children }) })
|
|
1702
1806
|
}
|
|
1703
1807
|
);
|
|
1704
1808
|
}
|
|
@@ -1712,7 +1816,7 @@ import {
|
|
|
1712
1816
|
Tab as AriaTab,
|
|
1713
1817
|
TabPanel as AriaTabPanel
|
|
1714
1818
|
} from "react-aria-components";
|
|
1715
|
-
import { jsx as
|
|
1819
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1716
1820
|
var TabsContext = createContext3({
|
|
1717
1821
|
variant: "underline",
|
|
1718
1822
|
size: "md"
|
|
@@ -1730,7 +1834,7 @@ function Tabs({
|
|
|
1730
1834
|
children,
|
|
1731
1835
|
...props
|
|
1732
1836
|
}) {
|
|
1733
|
-
return /* @__PURE__ */
|
|
1837
|
+
return /* @__PURE__ */ jsx31(TabsContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx31(
|
|
1734
1838
|
AriaTabs,
|
|
1735
1839
|
{
|
|
1736
1840
|
...props,
|
|
@@ -1750,7 +1854,7 @@ function TabList({
|
|
|
1750
1854
|
const { variant } = useContext3(TabsContext);
|
|
1751
1855
|
const baseStyles = variant === "unstyled" ? "flex items-center" : variant === "underline" ? "flex items-center border-b border-[var(--color-border-default)]" : "inline-flex items-center bg-[var(--color-surface-muted)] rounded-[var(--border-radius-lg)] p-1 gap-1";
|
|
1752
1856
|
const verticalStyles = variant === "unstyled" ? "flex-col" : variant === "underline" ? "flex-col border-b-0 border-r border-[var(--color-border-default)]" : "flex-col";
|
|
1753
|
-
return /* @__PURE__ */
|
|
1857
|
+
return /* @__PURE__ */ jsx31(
|
|
1754
1858
|
AriaTabList,
|
|
1755
1859
|
{
|
|
1756
1860
|
...props,
|
|
@@ -1764,7 +1868,7 @@ function TabList({
|
|
|
1764
1868
|
}
|
|
1765
1869
|
function Tab({ className, ...props }) {
|
|
1766
1870
|
const { variant, size } = useContext3(TabsContext);
|
|
1767
|
-
return /* @__PURE__ */
|
|
1871
|
+
return /* @__PURE__ */ jsx31(
|
|
1768
1872
|
AriaTab,
|
|
1769
1873
|
{
|
|
1770
1874
|
...props,
|
|
@@ -1821,7 +1925,7 @@ function getTabVariantStyles(variant, state) {
|
|
|
1821
1925
|
}
|
|
1822
1926
|
function TabPanel({ className, ...props }) {
|
|
1823
1927
|
const { variant } = useContext3(TabsContext);
|
|
1824
|
-
return /* @__PURE__ */
|
|
1928
|
+
return /* @__PURE__ */ jsx31(
|
|
1825
1929
|
AriaTabPanel,
|
|
1826
1930
|
{
|
|
1827
1931
|
...props,
|
|
@@ -1846,7 +1950,7 @@ import { useCallback as useCallback2, useImperativeHandle, useRef as useRef2, us
|
|
|
1846
1950
|
import { Tree as ArboristTree } from "react-arborist";
|
|
1847
1951
|
import { ChevronRight as ChevronRight2, Folder, File } from "lucide-react";
|
|
1848
1952
|
import { Check as Check2 } from "lucide-react";
|
|
1849
|
-
import { jsx as
|
|
1953
|
+
import { jsx as jsx32, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1850
1954
|
var rowHeightMap = {
|
|
1851
1955
|
compact: 32,
|
|
1852
1956
|
comfortable: 40
|
|
@@ -1869,7 +1973,7 @@ function NodeRenderer({
|
|
|
1869
1973
|
const isSelected = node.isSelected && !isCheckbox;
|
|
1870
1974
|
const isCompact = size === "compact";
|
|
1871
1975
|
const IconComponent = data.icon ? data.icon : node.isInternal ? Folder : File;
|
|
1872
|
-
return /* @__PURE__ */
|
|
1976
|
+
return /* @__PURE__ */ jsxs21(
|
|
1873
1977
|
"div",
|
|
1874
1978
|
{
|
|
1875
1979
|
ref: dragHandle,
|
|
@@ -1904,7 +2008,7 @@ function NodeRenderer({
|
|
|
1904
2008
|
}
|
|
1905
2009
|
},
|
|
1906
2010
|
children: [
|
|
1907
|
-
/* @__PURE__ */
|
|
2011
|
+
/* @__PURE__ */ jsx32(
|
|
1908
2012
|
"button",
|
|
1909
2013
|
{
|
|
1910
2014
|
type: "button",
|
|
@@ -1922,7 +2026,7 @@ function NodeRenderer({
|
|
|
1922
2026
|
},
|
|
1923
2027
|
tabIndex: -1,
|
|
1924
2028
|
"aria-label": node.isOpen ? "Collapse" : "Expand",
|
|
1925
|
-
children: /* @__PURE__ */
|
|
2029
|
+
children: /* @__PURE__ */ jsx32(
|
|
1926
2030
|
ChevronRight2,
|
|
1927
2031
|
{
|
|
1928
2032
|
size: 14,
|
|
@@ -1934,7 +2038,7 @@ function NodeRenderer({
|
|
|
1934
2038
|
)
|
|
1935
2039
|
}
|
|
1936
2040
|
),
|
|
1937
|
-
isCheckbox && /* @__PURE__ */
|
|
2041
|
+
isCheckbox && /* @__PURE__ */ jsx32(
|
|
1938
2042
|
"div",
|
|
1939
2043
|
{
|
|
1940
2044
|
className: [
|
|
@@ -1945,7 +2049,7 @@ function NodeRenderer({
|
|
|
1945
2049
|
role: "checkbox",
|
|
1946
2050
|
"aria-checked": isChecked,
|
|
1947
2051
|
"aria-label": `Select ${data.name}`,
|
|
1948
|
-
children: isChecked && /* @__PURE__ */
|
|
2052
|
+
children: isChecked && /* @__PURE__ */ jsx32(
|
|
1949
2053
|
Check2,
|
|
1950
2054
|
{
|
|
1951
2055
|
className: "w-3 h-3 text-[var(--color-text-inverse)]",
|
|
@@ -1954,7 +2058,7 @@ function NodeRenderer({
|
|
|
1954
2058
|
)
|
|
1955
2059
|
}
|
|
1956
2060
|
),
|
|
1957
|
-
/* @__PURE__ */
|
|
2061
|
+
/* @__PURE__ */ jsx32(
|
|
1958
2062
|
IconComponent,
|
|
1959
2063
|
{
|
|
1960
2064
|
size: 16,
|
|
@@ -1962,7 +2066,7 @@ function NodeRenderer({
|
|
|
1962
2066
|
"aria-hidden": "true"
|
|
1963
2067
|
}
|
|
1964
2068
|
),
|
|
1965
|
-
/* @__PURE__ */
|
|
2069
|
+
/* @__PURE__ */ jsx32("span", { className: "truncate", children: data.name })
|
|
1966
2070
|
]
|
|
1967
2071
|
}
|
|
1968
2072
|
);
|
|
@@ -2028,13 +2132,13 @@ function Tree({
|
|
|
2028
2132
|
);
|
|
2029
2133
|
const arboristSearchMatch = searchMatch ? (node, term) => searchMatch(node.data, term) : void 0;
|
|
2030
2134
|
const selectionProp = selectionMode === "single" && selectedIds && selectedIds.size > 0 ? [...selectedIds][0] : void 0;
|
|
2031
|
-
return /* @__PURE__ */
|
|
2135
|
+
return /* @__PURE__ */ jsx32(
|
|
2032
2136
|
"div",
|
|
2033
2137
|
{
|
|
2034
2138
|
role: "tree",
|
|
2035
2139
|
"aria-label": ariaLabel,
|
|
2036
2140
|
className: ["outline-none overflow-hidden", className].filter(Boolean).join(" "),
|
|
2037
|
-
children: /* @__PURE__ */
|
|
2141
|
+
children: /* @__PURE__ */ jsx32(
|
|
2038
2142
|
ArboristTree,
|
|
2039
2143
|
{
|
|
2040
2144
|
ref: internalRef,
|
|
@@ -2053,7 +2157,7 @@ function Tree({
|
|
|
2053
2157
|
onSelect: handleSelect,
|
|
2054
2158
|
onActivate: handleActivate,
|
|
2055
2159
|
disableEdit: true,
|
|
2056
|
-
children: (props) => /* @__PURE__ */
|
|
2160
|
+
children: (props) => /* @__PURE__ */ jsx32(
|
|
2057
2161
|
NodeRenderer,
|
|
2058
2162
|
{
|
|
2059
2163
|
...props,
|
|
@@ -2078,7 +2182,7 @@ import {
|
|
|
2078
2182
|
ToggleButtonGroup as AriaToggleButtonGroup,
|
|
2079
2183
|
ToggleButton as AriaToggleButton2
|
|
2080
2184
|
} from "react-aria-components";
|
|
2081
|
-
import { jsx as
|
|
2185
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
2082
2186
|
var SegmentedControlContext = createContext4({
|
|
2083
2187
|
size: "md"
|
|
2084
2188
|
});
|
|
@@ -2098,7 +2202,7 @@ function SegmentedControl({
|
|
|
2098
2202
|
...props
|
|
2099
2203
|
}) {
|
|
2100
2204
|
const isNoneMode = selectionMode === "none";
|
|
2101
|
-
return /* @__PURE__ */
|
|
2205
|
+
return /* @__PURE__ */ jsx33(SegmentedControlContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx33(
|
|
2102
2206
|
AriaToggleButtonGroup,
|
|
2103
2207
|
{
|
|
2104
2208
|
...props,
|
|
@@ -2119,7 +2223,7 @@ function SegmentedControlItem({
|
|
|
2119
2223
|
...props
|
|
2120
2224
|
}) {
|
|
2121
2225
|
const { size } = useContext4(SegmentedControlContext);
|
|
2122
|
-
return /* @__PURE__ */
|
|
2226
|
+
return /* @__PURE__ */ jsx33(
|
|
2123
2227
|
AriaToggleButton2,
|
|
2124
2228
|
{
|
|
2125
2229
|
...props,
|
|
@@ -2153,7 +2257,7 @@ import {
|
|
|
2153
2257
|
Info as Info2,
|
|
2154
2258
|
Microscope
|
|
2155
2259
|
} from "lucide-react";
|
|
2156
|
-
import { Fragment as Fragment8, jsx as
|
|
2260
|
+
import { Fragment as Fragment8, jsx as jsx34, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2157
2261
|
function getFileIcon(type, extension) {
|
|
2158
2262
|
if (type === "directory") return Folder2;
|
|
2159
2263
|
const ext = (extension ?? "").toLowerCase();
|
|
@@ -2179,7 +2283,7 @@ function FileIcon({
|
|
|
2179
2283
|
size = 16
|
|
2180
2284
|
}) {
|
|
2181
2285
|
const IconComponent = getFileIcon(type, extension);
|
|
2182
|
-
return /* @__PURE__ */
|
|
2286
|
+
return /* @__PURE__ */ jsx34(
|
|
2183
2287
|
IconComponent,
|
|
2184
2288
|
{
|
|
2185
2289
|
size,
|
|
@@ -2224,14 +2328,14 @@ function FileCard({
|
|
|
2224
2328
|
},
|
|
2225
2329
|
[onPress]
|
|
2226
2330
|
);
|
|
2227
|
-
const cardContent = /* @__PURE__ */
|
|
2228
|
-
/* @__PURE__ */
|
|
2331
|
+
const cardContent = /* @__PURE__ */ jsxs22(Fragment8, { children: [
|
|
2332
|
+
/* @__PURE__ */ jsxs22(
|
|
2229
2333
|
"div",
|
|
2230
2334
|
{
|
|
2231
2335
|
className: `shrink-0 relative overflow-hidden bg-[var(--color-neutral-900)] ${thumbnailClass}`,
|
|
2232
2336
|
children: [
|
|
2233
|
-
children ? /* @__PURE__ */
|
|
2234
|
-
onInfo && /* @__PURE__ */
|
|
2337
|
+
children ? /* @__PURE__ */ jsx34("div", { className: "h-full w-full overflow-hidden", children }) : /* @__PURE__ */ jsx34("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx34(IconComponent, { size: iconSize, className: iconColor }) }),
|
|
2338
|
+
onInfo && /* @__PURE__ */ jsx34(
|
|
2235
2339
|
"div",
|
|
2236
2340
|
{
|
|
2237
2341
|
className: [
|
|
@@ -2239,7 +2343,7 @@ function FileCard({
|
|
|
2239
2343
|
"transition-opacity duration-150",
|
|
2240
2344
|
compact ? "bottom-1.5 right-1.5" : "bottom-2 right-2"
|
|
2241
2345
|
].join(" "),
|
|
2242
|
-
children: /* @__PURE__ */
|
|
2346
|
+
children: /* @__PURE__ */ jsx34(
|
|
2243
2347
|
"span",
|
|
2244
2348
|
{
|
|
2245
2349
|
onClick: handleInfoClick,
|
|
@@ -2249,7 +2353,7 @@ function FileCard({
|
|
|
2249
2353
|
}
|
|
2250
2354
|
},
|
|
2251
2355
|
role: "presentation",
|
|
2252
|
-
children: /* @__PURE__ */
|
|
2356
|
+
children: /* @__PURE__ */ jsx34(
|
|
2253
2357
|
IconButton,
|
|
2254
2358
|
{
|
|
2255
2359
|
icon: Info2,
|
|
@@ -2267,7 +2371,7 @@ function FileCard({
|
|
|
2267
2371
|
]
|
|
2268
2372
|
}
|
|
2269
2373
|
),
|
|
2270
|
-
/* @__PURE__ */
|
|
2374
|
+
/* @__PURE__ */ jsx34(
|
|
2271
2375
|
"div",
|
|
2272
2376
|
{
|
|
2273
2377
|
className: [
|
|
@@ -2275,12 +2379,12 @@ function FileCard({
|
|
|
2275
2379
|
"bg-[var(--color-surface-default)]",
|
|
2276
2380
|
compact ? "px-2 py-1.5 rounded-b-[var(--border-radius-md)]" : "gap-0.5 px-3 py-2 rounded-b-[var(--border-radius-lg)]"
|
|
2277
2381
|
].join(" "),
|
|
2278
|
-
children: compact ? /* @__PURE__ */
|
|
2279
|
-
/* @__PURE__ */
|
|
2280
|
-
/* @__PURE__ */
|
|
2281
|
-
/* @__PURE__ */
|
|
2382
|
+
children: compact ? /* @__PURE__ */ jsx34("span", { className: "text-xs font-medium text-[var(--color-text-primary)] truncate", children: name }) : /* @__PURE__ */ jsxs22(Fragment8, { children: [
|
|
2383
|
+
/* @__PURE__ */ jsxs22("span", { className: "flex items-center gap-1.5", children: [
|
|
2384
|
+
/* @__PURE__ */ jsx34(FileIcon, { type, extension, size: 16 }),
|
|
2385
|
+
/* @__PURE__ */ jsx34("span", { className: "text-sm font-medium text-[var(--color-text-primary)] truncate", children: name })
|
|
2282
2386
|
] }),
|
|
2283
|
-
size && /* @__PURE__ */
|
|
2387
|
+
size && /* @__PURE__ */ jsx34("span", { className: "text-xs text-[var(--color-text-secondary)] tabular-nums pl-[22px]", children: size })
|
|
2284
2388
|
] })
|
|
2285
2389
|
}
|
|
2286
2390
|
)
|
|
@@ -2296,7 +2400,7 @@ function FileCard({
|
|
|
2296
2400
|
className
|
|
2297
2401
|
].filter(Boolean).join(" ");
|
|
2298
2402
|
if (href) {
|
|
2299
|
-
return /* @__PURE__ */
|
|
2403
|
+
return /* @__PURE__ */ jsx34(
|
|
2300
2404
|
"a",
|
|
2301
2405
|
{
|
|
2302
2406
|
href,
|
|
@@ -2307,7 +2411,7 @@ function FileCard({
|
|
|
2307
2411
|
);
|
|
2308
2412
|
}
|
|
2309
2413
|
if (onPress) {
|
|
2310
|
-
return /* @__PURE__ */
|
|
2414
|
+
return /* @__PURE__ */ jsx34(
|
|
2311
2415
|
"div",
|
|
2312
2416
|
{
|
|
2313
2417
|
role: "button",
|
|
@@ -2320,7 +2424,7 @@ function FileCard({
|
|
|
2320
2424
|
}
|
|
2321
2425
|
);
|
|
2322
2426
|
}
|
|
2323
|
-
return /* @__PURE__ */
|
|
2427
|
+
return /* @__PURE__ */ jsx34("div", { className: baseStyles, children: cardContent });
|
|
2324
2428
|
}
|
|
2325
2429
|
|
|
2326
2430
|
// src/components/StorageConnectionCard/StorageConnectionCard.tsx
|
|
@@ -2330,7 +2434,7 @@ import { twMerge as twMerge9 } from "tailwind-merge";
|
|
|
2330
2434
|
|
|
2331
2435
|
// src/components/Pill/Pill.tsx
|
|
2332
2436
|
import { twMerge as twMerge7 } from "tailwind-merge";
|
|
2333
|
-
import { jsx as
|
|
2437
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
2334
2438
|
var HASH_PALETTE = [
|
|
2335
2439
|
"teal",
|
|
2336
2440
|
// sky
|
|
@@ -2381,7 +2485,7 @@ function resolveColor(color, name) {
|
|
|
2381
2485
|
}
|
|
2382
2486
|
function Pill({ children, color, name, className }) {
|
|
2383
2487
|
const resolved = resolveColor(color, name);
|
|
2384
|
-
return /* @__PURE__ */
|
|
2488
|
+
return /* @__PURE__ */ jsx35(
|
|
2385
2489
|
"span",
|
|
2386
2490
|
{
|
|
2387
2491
|
className: twMerge7(
|
|
@@ -2398,7 +2502,7 @@ function Pill({ children, color, name, className }) {
|
|
|
2398
2502
|
|
|
2399
2503
|
// src/components/Pill/GroupPill.tsx
|
|
2400
2504
|
import { twMerge as twMerge8 } from "tailwind-merge";
|
|
2401
|
-
import { jsx as
|
|
2505
|
+
import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2402
2506
|
function GroupPill({
|
|
2403
2507
|
path,
|
|
2404
2508
|
visibleCount = 3,
|
|
@@ -2409,7 +2513,7 @@ function GroupPill({
|
|
|
2409
2513
|
const hiddenCount = Math.max(0, segments.length - visibleCount);
|
|
2410
2514
|
const hiddenSegments = segments.slice(0, hiddenCount);
|
|
2411
2515
|
const visibleSegments = segments.slice(hiddenCount);
|
|
2412
|
-
return /* @__PURE__ */
|
|
2516
|
+
return /* @__PURE__ */ jsxs23(
|
|
2413
2517
|
"span",
|
|
2414
2518
|
{
|
|
2415
2519
|
className: twMerge8(
|
|
@@ -2420,7 +2524,7 @@ function GroupPill({
|
|
|
2420
2524
|
children: [
|
|
2421
2525
|
hiddenSegments.map((segment, index) => {
|
|
2422
2526
|
const color = pillColorFromName(segment);
|
|
2423
|
-
return /* @__PURE__ */
|
|
2527
|
+
return /* @__PURE__ */ jsx36(
|
|
2424
2528
|
"span",
|
|
2425
2529
|
{
|
|
2426
2530
|
className: twMerge8(
|
|
@@ -2433,14 +2537,14 @@ function GroupPill({
|
|
|
2433
2537
|
`dot-${index}-${segment}`
|
|
2434
2538
|
);
|
|
2435
2539
|
}),
|
|
2436
|
-
visibleSegments.map((segment, index) => /* @__PURE__ */
|
|
2540
|
+
visibleSegments.map((segment, index) => /* @__PURE__ */ jsx36(Pill, { name: segment, children: segment }, `pill-${index}-${segment}`))
|
|
2437
2541
|
]
|
|
2438
2542
|
}
|
|
2439
2543
|
);
|
|
2440
2544
|
}
|
|
2441
2545
|
|
|
2442
2546
|
// src/components/StorageConnectionCard/StorageConnectionCard.tsx
|
|
2443
|
-
import { Fragment as Fragment9, jsx as
|
|
2547
|
+
import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2444
2548
|
var statusDotStyles = {
|
|
2445
2549
|
connected: "bg-[var(--color-status-success)]",
|
|
2446
2550
|
error: "border-2 border-[var(--color-status-danger)] bg-transparent",
|
|
@@ -2456,7 +2560,7 @@ function ProviderBadge({ provider }) {
|
|
|
2456
2560
|
const config = providerConfig[provider.toLowerCase()];
|
|
2457
2561
|
const label = config?.label ?? provider;
|
|
2458
2562
|
const color = config?.color ?? "neutral";
|
|
2459
|
-
return /* @__PURE__ */
|
|
2563
|
+
return /* @__PURE__ */ jsx37(Pill, { color, children: label });
|
|
2460
2564
|
}
|
|
2461
2565
|
function PreviewArea({
|
|
2462
2566
|
status = "connected",
|
|
@@ -2464,11 +2568,11 @@ function PreviewArea({
|
|
|
2464
2568
|
children
|
|
2465
2569
|
}) {
|
|
2466
2570
|
if (status === "loading") {
|
|
2467
|
-
return /* @__PURE__ */
|
|
2571
|
+
return /* @__PURE__ */ jsx37("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx37(Spinner, { size: "lg", "aria-label": "Loading connection" }) });
|
|
2468
2572
|
}
|
|
2469
2573
|
if (status === "error") {
|
|
2470
|
-
return /* @__PURE__ */
|
|
2471
|
-
/* @__PURE__ */
|
|
2574
|
+
return /* @__PURE__ */ jsxs24("div", { className: "flex h-full flex-col items-center justify-center gap-2 bg-[var(--color-surface-danger)] px-4", children: [
|
|
2575
|
+
/* @__PURE__ */ jsx37(
|
|
2472
2576
|
Icon,
|
|
2473
2577
|
{
|
|
2474
2578
|
icon: AlertCircle,
|
|
@@ -2476,13 +2580,13 @@ function PreviewArea({
|
|
|
2476
2580
|
className: "text-[var(--color-text-danger)]"
|
|
2477
2581
|
}
|
|
2478
2582
|
),
|
|
2479
|
-
errorMessage && /* @__PURE__ */
|
|
2583
|
+
errorMessage && /* @__PURE__ */ jsx37("p", { className: "text-center text-xs text-[var(--color-text-danger)]", children: errorMessage })
|
|
2480
2584
|
] });
|
|
2481
2585
|
}
|
|
2482
2586
|
if (children) {
|
|
2483
|
-
return /* @__PURE__ */
|
|
2587
|
+
return /* @__PURE__ */ jsx37("div", { className: "h-full w-full overflow-hidden", children });
|
|
2484
2588
|
}
|
|
2485
|
-
return /* @__PURE__ */
|
|
2589
|
+
return /* @__PURE__ */ jsx37("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx37(
|
|
2486
2590
|
Icon,
|
|
2487
2591
|
{
|
|
2488
2592
|
icon: Database,
|
|
@@ -2524,11 +2628,11 @@ function StorageConnectionCard({
|
|
|
2524
2628
|
},
|
|
2525
2629
|
[onPress]
|
|
2526
2630
|
);
|
|
2527
|
-
const cardContent = /* @__PURE__ */
|
|
2528
|
-
/* @__PURE__ */
|
|
2529
|
-
/* @__PURE__ */
|
|
2530
|
-
/* @__PURE__ */
|
|
2531
|
-
status && /* @__PURE__ */
|
|
2631
|
+
const cardContent = /* @__PURE__ */ jsxs24(Fragment9, { children: [
|
|
2632
|
+
/* @__PURE__ */ jsx37("div", { className: "aspect-[4/3] bg-[var(--color-neutral-900)] overflow-hidden rounded-t-[var(--border-radius-lg)]", children: /* @__PURE__ */ jsx37(PreviewArea, { status, errorMessage, children }) }),
|
|
2633
|
+
/* @__PURE__ */ jsxs24("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: [
|
|
2634
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex items-start gap-2", children: [
|
|
2635
|
+
status && /* @__PURE__ */ jsx37(
|
|
2532
2636
|
"span",
|
|
2533
2637
|
{
|
|
2534
2638
|
className: twMerge9(
|
|
@@ -2538,8 +2642,8 @@ function StorageConnectionCard({
|
|
|
2538
2642
|
"aria-label": `Status: ${status}`
|
|
2539
2643
|
}
|
|
2540
2644
|
),
|
|
2541
|
-
/* @__PURE__ */
|
|
2542
|
-
onInfo && /* @__PURE__ */
|
|
2645
|
+
/* @__PURE__ */ jsx37("span", { className: "min-w-0 flex-1 line-clamp-2 text-sm font-medium text-[var(--color-text-primary)]", children: name }),
|
|
2646
|
+
onInfo && /* @__PURE__ */ jsx37(
|
|
2543
2647
|
"span",
|
|
2544
2648
|
{
|
|
2545
2649
|
onClick: handleInfoPress,
|
|
@@ -2549,7 +2653,7 @@ function StorageConnectionCard({
|
|
|
2549
2653
|
}
|
|
2550
2654
|
},
|
|
2551
2655
|
role: "presentation",
|
|
2552
|
-
children: /* @__PURE__ */
|
|
2656
|
+
children: /* @__PURE__ */ jsx37(
|
|
2553
2657
|
IconButton,
|
|
2554
2658
|
{
|
|
2555
2659
|
icon: Info3,
|
|
@@ -2563,10 +2667,10 @@ function StorageConnectionCard({
|
|
|
2563
2667
|
}
|
|
2564
2668
|
)
|
|
2565
2669
|
] }),
|
|
2566
|
-
(provider || imageCount != null && (!status || status === "connected")) && /* @__PURE__ */
|
|
2567
|
-
provider && /* @__PURE__ */
|
|
2568
|
-
provider && region && /* @__PURE__ */
|
|
2569
|
-
imageCount != null && (!status || status === "connected") && /* @__PURE__ */
|
|
2670
|
+
(provider || imageCount != null && (!status || status === "connected")) && /* @__PURE__ */ jsxs24("div", { className: twMerge9("flex items-center gap-2", status && "pl-4"), children: [
|
|
2671
|
+
provider && /* @__PURE__ */ jsx37(ProviderBadge, { provider }),
|
|
2672
|
+
provider && region && /* @__PURE__ */ jsx37("span", { className: "shrink-0 text-xs text-[var(--color-text-secondary)]", children: region }),
|
|
2673
|
+
imageCount != null && (!status || status === "connected") && /* @__PURE__ */ jsxs24("span", { className: "ml-auto shrink-0 text-xs tabular-nums text-[var(--color-text-secondary)]", children: [
|
|
2570
2674
|
imageCount,
|
|
2571
2675
|
" ",
|
|
2572
2676
|
imageCount === 1 ? "image" : "images"
|
|
@@ -2583,10 +2687,10 @@ function StorageConnectionCard({
|
|
|
2583
2687
|
className
|
|
2584
2688
|
);
|
|
2585
2689
|
if (href) {
|
|
2586
|
-
return /* @__PURE__ */
|
|
2690
|
+
return /* @__PURE__ */ jsx37("a", { href, className: twMerge9(baseStyles, "no-underline"), children: cardContent });
|
|
2587
2691
|
}
|
|
2588
2692
|
if (onPress) {
|
|
2589
|
-
return /* @__PURE__ */
|
|
2693
|
+
return /* @__PURE__ */ jsx37(
|
|
2590
2694
|
"div",
|
|
2591
2695
|
{
|
|
2592
2696
|
role: "button",
|
|
@@ -2598,12 +2702,12 @@ function StorageConnectionCard({
|
|
|
2598
2702
|
}
|
|
2599
2703
|
);
|
|
2600
2704
|
}
|
|
2601
|
-
return /* @__PURE__ */
|
|
2705
|
+
return /* @__PURE__ */ jsx37("div", { className: baseStyles, children: cardContent });
|
|
2602
2706
|
}
|
|
2603
2707
|
|
|
2604
2708
|
// src/components/Badge/Badge.tsx
|
|
2605
2709
|
import { twMerge as twMerge10 } from "tailwind-merge";
|
|
2606
|
-
import { jsx as
|
|
2710
|
+
import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2607
2711
|
var variantStyles4 = {
|
|
2608
2712
|
neutral: "bg-[var(--color-badge-neutral-bg)] text-[var(--color-badge-neutral-text)]",
|
|
2609
2713
|
purple: "bg-[var(--color-badge-purple-bg)] text-[var(--color-badge-purple-text)]",
|
|
@@ -2628,7 +2732,7 @@ function Badge({
|
|
|
2628
2732
|
icon: IconComponent,
|
|
2629
2733
|
className
|
|
2630
2734
|
}) {
|
|
2631
|
-
return /* @__PURE__ */
|
|
2735
|
+
return /* @__PURE__ */ jsxs25(
|
|
2632
2736
|
"span",
|
|
2633
2737
|
{
|
|
2634
2738
|
className: twMerge10(
|
|
@@ -2639,7 +2743,7 @@ function Badge({
|
|
|
2639
2743
|
className
|
|
2640
2744
|
),
|
|
2641
2745
|
children: [
|
|
2642
|
-
IconComponent && /* @__PURE__ */
|
|
2746
|
+
IconComponent && /* @__PURE__ */ jsx38(IconComponent, { size: iconSizeMap4[size], "aria-hidden": "true" }),
|
|
2643
2747
|
children
|
|
2644
2748
|
]
|
|
2645
2749
|
}
|
|
@@ -2649,7 +2753,7 @@ function Badge({
|
|
|
2649
2753
|
// src/components/Card/Card.tsx
|
|
2650
2754
|
import { useCallback as useCallback5 } from "react";
|
|
2651
2755
|
import { twMerge as twMerge11 } from "tailwind-merge";
|
|
2652
|
-
import { Fragment as Fragment10, jsx as
|
|
2756
|
+
import { Fragment as Fragment10, jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2653
2757
|
var paddingStyles = {
|
|
2654
2758
|
none: "p-0",
|
|
2655
2759
|
sm: "p-3",
|
|
@@ -2682,8 +2786,8 @@ function Card({
|
|
|
2682
2786
|
},
|
|
2683
2787
|
[onPress]
|
|
2684
2788
|
);
|
|
2685
|
-
const content = /* @__PURE__ */
|
|
2686
|
-
header && /* @__PURE__ */
|
|
2789
|
+
const content = /* @__PURE__ */ jsxs26(Fragment10, { children: [
|
|
2790
|
+
header && /* @__PURE__ */ jsx39(
|
|
2687
2791
|
"div",
|
|
2688
2792
|
{
|
|
2689
2793
|
className: twMerge11(
|
|
@@ -2693,8 +2797,8 @@ function Card({
|
|
|
2693
2797
|
children: header
|
|
2694
2798
|
}
|
|
2695
2799
|
),
|
|
2696
|
-
/* @__PURE__ */
|
|
2697
|
-
footer && /* @__PURE__ */
|
|
2800
|
+
/* @__PURE__ */ jsx39("div", { className: paddingStyles[padding], children }),
|
|
2801
|
+
footer && /* @__PURE__ */ jsx39(
|
|
2698
2802
|
"div",
|
|
2699
2803
|
{
|
|
2700
2804
|
className: twMerge11(
|
|
@@ -2706,10 +2810,10 @@ function Card({
|
|
|
2706
2810
|
)
|
|
2707
2811
|
] });
|
|
2708
2812
|
if (href) {
|
|
2709
|
-
return /* @__PURE__ */
|
|
2813
|
+
return /* @__PURE__ */ jsx39("a", { href, className: containerClass, children: content });
|
|
2710
2814
|
}
|
|
2711
2815
|
if (onPress) {
|
|
2712
|
-
return /* @__PURE__ */
|
|
2816
|
+
return /* @__PURE__ */ jsx39(
|
|
2713
2817
|
"div",
|
|
2714
2818
|
{
|
|
2715
2819
|
role: "button",
|
|
@@ -2721,13 +2825,13 @@ function Card({
|
|
|
2721
2825
|
}
|
|
2722
2826
|
);
|
|
2723
2827
|
}
|
|
2724
|
-
return /* @__PURE__ */
|
|
2828
|
+
return /* @__PURE__ */ jsx39("div", { className: containerClass, children: content });
|
|
2725
2829
|
}
|
|
2726
2830
|
|
|
2727
2831
|
// src/components/DeltaIndicator/DeltaIndicator.tsx
|
|
2728
2832
|
import { ArrowUp, ArrowDown, Minus } from "lucide-react";
|
|
2729
2833
|
import { twMerge as twMerge12 } from "tailwind-merge";
|
|
2730
|
-
import { jsx as
|
|
2834
|
+
import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2731
2835
|
function getDirection(current, previous) {
|
|
2732
2836
|
const diff = current - previous;
|
|
2733
2837
|
if (diff > 0) return "increase";
|
|
@@ -2780,7 +2884,7 @@ function DeltaIndicator({
|
|
|
2780
2884
|
className
|
|
2781
2885
|
}) {
|
|
2782
2886
|
if (unavailable) {
|
|
2783
|
-
return /* @__PURE__ */
|
|
2887
|
+
return /* @__PURE__ */ jsxs27(
|
|
2784
2888
|
"span",
|
|
2785
2889
|
{
|
|
2786
2890
|
className: twMerge12(
|
|
@@ -2789,7 +2893,7 @@ function DeltaIndicator({
|
|
|
2789
2893
|
className
|
|
2790
2894
|
),
|
|
2791
2895
|
children: [
|
|
2792
|
-
label && /* @__PURE__ */
|
|
2896
|
+
label && /* @__PURE__ */ jsx40("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)] mr-1", children: label }),
|
|
2793
2897
|
unavailableText
|
|
2794
2898
|
]
|
|
2795
2899
|
}
|
|
@@ -2819,7 +2923,7 @@ function DeltaIndicator({
|
|
|
2819
2923
|
}
|
|
2820
2924
|
}
|
|
2821
2925
|
const isPill = mode === "pill";
|
|
2822
|
-
return /* @__PURE__ */
|
|
2926
|
+
return /* @__PURE__ */ jsxs27(
|
|
2823
2927
|
"span",
|
|
2824
2928
|
{
|
|
2825
2929
|
className: twMerge12(
|
|
@@ -2833,8 +2937,8 @@ function DeltaIndicator({
|
|
|
2833
2937
|
className
|
|
2834
2938
|
),
|
|
2835
2939
|
children: [
|
|
2836
|
-
label && /* @__PURE__ */
|
|
2837
|
-
/* @__PURE__ */
|
|
2940
|
+
label && /* @__PURE__ */ jsx40("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)] mr-1", children: label }),
|
|
2941
|
+
/* @__PURE__ */ jsx40(IconComponent, { size: 14, "aria-hidden": true }),
|
|
2838
2942
|
valueText
|
|
2839
2943
|
]
|
|
2840
2944
|
}
|
|
@@ -2843,7 +2947,7 @@ function DeltaIndicator({
|
|
|
2843
2947
|
|
|
2844
2948
|
// src/components/ProgressBar/ProgressBar.tsx
|
|
2845
2949
|
import { twMerge as twMerge13 } from "tailwind-merge";
|
|
2846
|
-
import { jsx as
|
|
2950
|
+
import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
2847
2951
|
var fillStyles = {
|
|
2848
2952
|
brand: "bg-[var(--color-progress-fill)]",
|
|
2849
2953
|
success: "bg-[var(--color-progress-fill-success)]",
|
|
@@ -2866,12 +2970,12 @@ function ProgressBar({
|
|
|
2866
2970
|
className
|
|
2867
2971
|
}) {
|
|
2868
2972
|
const clampedValue = Math.min(100, Math.max(0, value));
|
|
2869
|
-
return /* @__PURE__ */
|
|
2870
|
-
(label || description || showValue) && /* @__PURE__ */
|
|
2871
|
-
/* @__PURE__ */
|
|
2872
|
-
/* @__PURE__ */
|
|
2973
|
+
return /* @__PURE__ */ jsxs28("div", { className: twMerge13("w-full", className), children: [
|
|
2974
|
+
(label || description || showValue) && /* @__PURE__ */ jsxs28("div", { className: "flex items-center justify-between mb-2", children: [
|
|
2975
|
+
/* @__PURE__ */ jsx41("span", { className: "text-[length:var(--font-size-sm)] font-[number:var(--font-weight-medium)] text-[var(--color-text-primary)]", children: label }),
|
|
2976
|
+
/* @__PURE__ */ jsx41("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)]", children: description ?? (showValue ? `${clampedValue}%` : null) })
|
|
2873
2977
|
] }),
|
|
2874
|
-
/* @__PURE__ */
|
|
2978
|
+
/* @__PURE__ */ jsx41(
|
|
2875
2979
|
"div",
|
|
2876
2980
|
{
|
|
2877
2981
|
role: "progressbar",
|
|
@@ -2883,7 +2987,7 @@ function ProgressBar({
|
|
|
2883
2987
|
"w-full rounded-[var(--border-radius-full)] bg-[var(--color-progress-track)]",
|
|
2884
2988
|
sizeStyles8[size]
|
|
2885
2989
|
),
|
|
2886
|
-
children: /* @__PURE__ */
|
|
2990
|
+
children: /* @__PURE__ */ jsx41(
|
|
2887
2991
|
"div",
|
|
2888
2992
|
{
|
|
2889
2993
|
className: twMerge13(
|
|
@@ -2908,7 +3012,7 @@ import {
|
|
|
2908
3012
|
X as X3
|
|
2909
3013
|
} from "lucide-react";
|
|
2910
3014
|
import { twMerge as twMerge14 } from "tailwind-merge";
|
|
2911
|
-
import { jsx as
|
|
3015
|
+
import { jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
2912
3016
|
var variantConfig2 = {
|
|
2913
3017
|
info: {
|
|
2914
3018
|
icon: Info4,
|
|
@@ -2952,7 +3056,7 @@ function Banner({
|
|
|
2952
3056
|
setDismissed(true);
|
|
2953
3057
|
onDismiss?.();
|
|
2954
3058
|
};
|
|
2955
|
-
return /* @__PURE__ */
|
|
3059
|
+
return /* @__PURE__ */ jsxs29(
|
|
2956
3060
|
"div",
|
|
2957
3061
|
{
|
|
2958
3062
|
role: config.role,
|
|
@@ -2963,7 +3067,7 @@ function Banner({
|
|
|
2963
3067
|
className
|
|
2964
3068
|
),
|
|
2965
3069
|
children: [
|
|
2966
|
-
/* @__PURE__ */
|
|
3070
|
+
/* @__PURE__ */ jsx42(
|
|
2967
3071
|
IconComponent,
|
|
2968
3072
|
{
|
|
2969
3073
|
size: 20,
|
|
@@ -2971,21 +3075,21 @@ function Banner({
|
|
|
2971
3075
|
"aria-hidden": "true"
|
|
2972
3076
|
}
|
|
2973
3077
|
),
|
|
2974
|
-
/* @__PURE__ */
|
|
2975
|
-
title && /* @__PURE__ */
|
|
3078
|
+
/* @__PURE__ */ jsxs29("div", { className: "flex-1", children: [
|
|
3079
|
+
title && /* @__PURE__ */ jsxs29("span", { className: "font-[number:var(--font-weight-medium)]", children: [
|
|
2976
3080
|
title,
|
|
2977
3081
|
" \u2014 "
|
|
2978
3082
|
] }),
|
|
2979
3083
|
children
|
|
2980
3084
|
] }),
|
|
2981
|
-
dismissible && /* @__PURE__ */
|
|
3085
|
+
dismissible && /* @__PURE__ */ jsx42(
|
|
2982
3086
|
"button",
|
|
2983
3087
|
{
|
|
2984
3088
|
type: "button",
|
|
2985
3089
|
onClick: handleDismiss,
|
|
2986
3090
|
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",
|
|
2987
3091
|
"aria-label": "Dismiss",
|
|
2988
|
-
children: /* @__PURE__ */
|
|
3092
|
+
children: /* @__PURE__ */ jsx42(X3, { size: 16, "aria-hidden": "true" })
|
|
2989
3093
|
}
|
|
2990
3094
|
)
|
|
2991
3095
|
]
|
|
@@ -2995,7 +3099,7 @@ function Banner({
|
|
|
2995
3099
|
|
|
2996
3100
|
// src/components/MetricCard/MetricCard.tsx
|
|
2997
3101
|
import { twMerge as twMerge15 } from "tailwind-merge";
|
|
2998
|
-
import { Fragment as Fragment11, jsx as
|
|
3102
|
+
import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
2999
3103
|
var sizeConfig = {
|
|
3000
3104
|
sm: {
|
|
3001
3105
|
padding: "p-3",
|
|
@@ -3023,9 +3127,9 @@ function MetricCard({
|
|
|
3023
3127
|
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",
|
|
3024
3128
|
className
|
|
3025
3129
|
);
|
|
3026
|
-
const content = /* @__PURE__ */
|
|
3027
|
-
/* @__PURE__ */
|
|
3028
|
-
/* @__PURE__ */
|
|
3130
|
+
const content = /* @__PURE__ */ jsxs30(Fragment11, { children: [
|
|
3131
|
+
/* @__PURE__ */ jsx43("div", { className: twMerge15(config.labelClass, "text-[var(--color-text-secondary)]"), children: label }),
|
|
3132
|
+
/* @__PURE__ */ jsx43(
|
|
3029
3133
|
"div",
|
|
3030
3134
|
{
|
|
3031
3135
|
className: twMerge15(
|
|
@@ -3035,23 +3139,23 @@ function MetricCard({
|
|
|
3035
3139
|
children: value
|
|
3036
3140
|
}
|
|
3037
3141
|
),
|
|
3038
|
-
secondary && /* @__PURE__ */
|
|
3142
|
+
secondary && /* @__PURE__ */ jsx43("div", { className: "mt-1 text-sm", children: secondary })
|
|
3039
3143
|
] });
|
|
3040
3144
|
if (href) {
|
|
3041
|
-
return /* @__PURE__ */
|
|
3145
|
+
return /* @__PURE__ */ jsx43("a", { href, className: containerClass, children: content });
|
|
3042
3146
|
}
|
|
3043
|
-
return /* @__PURE__ */
|
|
3147
|
+
return /* @__PURE__ */ jsx43("div", { className: containerClass, children: content });
|
|
3044
3148
|
}
|
|
3045
3149
|
|
|
3046
3150
|
// src/components/SectionHeader/SectionHeader.tsx
|
|
3047
3151
|
import { twMerge as twMerge16 } from "tailwind-merge";
|
|
3048
|
-
import { jsx as
|
|
3152
|
+
import { jsx as jsx44, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3049
3153
|
function SectionHeader({
|
|
3050
3154
|
title,
|
|
3051
3155
|
children,
|
|
3052
3156
|
className
|
|
3053
3157
|
}) {
|
|
3054
|
-
return /* @__PURE__ */
|
|
3158
|
+
return /* @__PURE__ */ jsxs31(
|
|
3055
3159
|
"div",
|
|
3056
3160
|
{
|
|
3057
3161
|
className: twMerge16(
|
|
@@ -3059,8 +3163,8 @@ function SectionHeader({
|
|
|
3059
3163
|
className
|
|
3060
3164
|
),
|
|
3061
3165
|
children: [
|
|
3062
|
-
/* @__PURE__ */
|
|
3063
|
-
children && /* @__PURE__ */
|
|
3166
|
+
/* @__PURE__ */ jsx44(H2, { children: title }),
|
|
3167
|
+
children && /* @__PURE__ */ jsx44("div", { className: "ml-auto flex flex-wrap items-center gap-[var(--spacing-2)]", children })
|
|
3064
3168
|
]
|
|
3065
3169
|
}
|
|
3066
3170
|
);
|
|
@@ -3068,7 +3172,7 @@ function SectionHeader({
|
|
|
3068
3172
|
|
|
3069
3173
|
// src/components/FormWizard/FormWizard.tsx
|
|
3070
3174
|
import { createContext as createContext5, useContext as useContext5, useCallback as useCallback6, useMemo } from "react";
|
|
3071
|
-
import { jsx as
|
|
3175
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
3072
3176
|
var FormWizardContext = createContext5({
|
|
3073
3177
|
currentStep: 0,
|
|
3074
3178
|
totalSteps: 1,
|
|
@@ -3103,13 +3207,13 @@ function FormWizard({
|
|
|
3103
3207
|
}),
|
|
3104
3208
|
[currentStep, totalSteps, canGoBack, goBack, isLastStep]
|
|
3105
3209
|
);
|
|
3106
|
-
return /* @__PURE__ */
|
|
3210
|
+
return /* @__PURE__ */ jsx45(FormWizardContext.Provider, { value, children });
|
|
3107
3211
|
}
|
|
3108
3212
|
|
|
3109
3213
|
// src/components/FormWizard/FormWizardProgress.tsx
|
|
3110
|
-
import { jsx as
|
|
3214
|
+
import { jsx as jsx46, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
3111
3215
|
function CheckIcon2() {
|
|
3112
|
-
return /* @__PURE__ */
|
|
3216
|
+
return /* @__PURE__ */ jsx46(
|
|
3113
3217
|
"svg",
|
|
3114
3218
|
{
|
|
3115
3219
|
"aria-hidden": "true",
|
|
@@ -3120,24 +3224,24 @@ function CheckIcon2() {
|
|
|
3120
3224
|
strokeWidth: "2",
|
|
3121
3225
|
strokeLinecap: "round",
|
|
3122
3226
|
strokeLinejoin: "round",
|
|
3123
|
-
children: /* @__PURE__ */
|
|
3227
|
+
children: /* @__PURE__ */ jsx46("path", { d: "M3 8.5l3.5 3.5 6.5-7" })
|
|
3124
3228
|
}
|
|
3125
3229
|
);
|
|
3126
3230
|
}
|
|
3127
3231
|
function FormWizardProgress({ labels }) {
|
|
3128
3232
|
const { currentStep, totalSteps } = useFormWizard();
|
|
3129
|
-
return /* @__PURE__ */
|
|
3233
|
+
return /* @__PURE__ */ jsx46("nav", { "aria-label": "Form progress", children: /* @__PURE__ */ jsx46("ol", { className: "flex items-start", role: "list", children: labels.map((label, index) => {
|
|
3130
3234
|
const isCompleted = index < currentStep;
|
|
3131
3235
|
const isCurrent = index === currentStep;
|
|
3132
3236
|
const isFuture = index > currentStep;
|
|
3133
|
-
return /* @__PURE__ */
|
|
3237
|
+
return /* @__PURE__ */ jsxs32(
|
|
3134
3238
|
"li",
|
|
3135
3239
|
{
|
|
3136
3240
|
className: "flex flex-1 flex-col items-center",
|
|
3137
3241
|
"aria-current": isCurrent ? "step" : void 0,
|
|
3138
3242
|
children: [
|
|
3139
|
-
/* @__PURE__ */
|
|
3140
|
-
index > 0 ? /* @__PURE__ */
|
|
3243
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex w-full items-center", children: [
|
|
3244
|
+
index > 0 ? /* @__PURE__ */ jsx46(
|
|
3141
3245
|
"div",
|
|
3142
3246
|
{
|
|
3143
3247
|
"aria-hidden": "true",
|
|
@@ -3146,8 +3250,8 @@ function FormWizardProgress({ labels }) {
|
|
|
3146
3250
|
index <= currentStep ? "bg-[var(--color-brand-primary)]" : "bg-[var(--color-border-default)]"
|
|
3147
3251
|
].join(" ")
|
|
3148
3252
|
}
|
|
3149
|
-
) : /* @__PURE__ */
|
|
3150
|
-
/* @__PURE__ */
|
|
3253
|
+
) : /* @__PURE__ */ jsx46("div", { className: "flex-1", "aria-hidden": "true" }),
|
|
3254
|
+
/* @__PURE__ */ jsx46(
|
|
3151
3255
|
"div",
|
|
3152
3256
|
{
|
|
3153
3257
|
className: [
|
|
@@ -3159,10 +3263,10 @@ function FormWizardProgress({ labels }) {
|
|
|
3159
3263
|
isFuture ? "border-2 border-[var(--color-border-default)] bg-[var(--color-surface-default)] text-[var(--color-text-tertiary)]" : ""
|
|
3160
3264
|
].join(" "),
|
|
3161
3265
|
"aria-hidden": "true",
|
|
3162
|
-
children: isCompleted ? /* @__PURE__ */
|
|
3266
|
+
children: isCompleted ? /* @__PURE__ */ jsx46(CheckIcon2, {}) : index + 1
|
|
3163
3267
|
}
|
|
3164
3268
|
),
|
|
3165
|
-
index < totalSteps - 1 ? /* @__PURE__ */
|
|
3269
|
+
index < totalSteps - 1 ? /* @__PURE__ */ jsx46(
|
|
3166
3270
|
"div",
|
|
3167
3271
|
{
|
|
3168
3272
|
"aria-hidden": "true",
|
|
@@ -3171,9 +3275,9 @@ function FormWizardProgress({ labels }) {
|
|
|
3171
3275
|
index < currentStep ? "bg-[var(--color-brand-primary)]" : "bg-[var(--color-border-default)]"
|
|
3172
3276
|
].join(" ")
|
|
3173
3277
|
}
|
|
3174
|
-
) : /* @__PURE__ */
|
|
3278
|
+
) : /* @__PURE__ */ jsx46("div", { className: "flex-1", "aria-hidden": "true" })
|
|
3175
3279
|
] }),
|
|
3176
|
-
/* @__PURE__ */
|
|
3280
|
+
/* @__PURE__ */ jsx46(
|
|
3177
3281
|
"span",
|
|
3178
3282
|
{
|
|
3179
3283
|
className: [
|
|
@@ -3191,15 +3295,15 @@ function FormWizardProgress({ labels }) {
|
|
|
3191
3295
|
}
|
|
3192
3296
|
|
|
3193
3297
|
// src/components/FormWizard/FormWizardNav.tsx
|
|
3194
|
-
import { jsx as
|
|
3298
|
+
import { jsx as jsx47, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
3195
3299
|
function FormWizardNav({
|
|
3196
3300
|
onNext,
|
|
3197
3301
|
isSubmitting = false,
|
|
3198
3302
|
submitLabel = "Submit"
|
|
3199
3303
|
}) {
|
|
3200
3304
|
const { canGoBack, goBack, isLastStep } = useFormWizard();
|
|
3201
|
-
return /* @__PURE__ */
|
|
3202
|
-
canGoBack && /* @__PURE__ */
|
|
3305
|
+
return /* @__PURE__ */ jsxs33("div", { className: "flex items-center justify-end gap-[var(--spacing-3)]", children: [
|
|
3306
|
+
canGoBack && /* @__PURE__ */ jsx47(
|
|
3203
3307
|
Button,
|
|
3204
3308
|
{
|
|
3205
3309
|
variant: "secondary",
|
|
@@ -3209,7 +3313,7 @@ function FormWizardNav({
|
|
|
3209
3313
|
children: "Back"
|
|
3210
3314
|
}
|
|
3211
3315
|
),
|
|
3212
|
-
/* @__PURE__ */
|
|
3316
|
+
/* @__PURE__ */ jsx47(
|
|
3213
3317
|
Button,
|
|
3214
3318
|
{
|
|
3215
3319
|
variant: "primary",
|
|
@@ -3654,6 +3758,10 @@ export {
|
|
|
3654
3758
|
LineHeightTight,
|
|
3655
3759
|
Link,
|
|
3656
3760
|
Menu,
|
|
3761
|
+
MenuHeader,
|
|
3762
|
+
MenuItem,
|
|
3763
|
+
MenuSection,
|
|
3764
|
+
MenuSeparator,
|
|
3657
3765
|
MetricCard,
|
|
3658
3766
|
Pill,
|
|
3659
3767
|
Popover3 as Popover,
|