@agentiffai/design 1.5.5 → 1.5.6

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.
@@ -16,6 +16,7 @@ var tokens = {
16
16
  primary: "#2CB0AB",
17
17
  accent: "#459FB9",
18
18
  background: {
19
+ darker: "#151a26",
19
20
  dark: "#1b2230",
20
21
  light: "#252d3d"
21
22
  },
@@ -59,10 +60,13 @@ var tokens = {
59
60
  fontSize: {
60
61
  xs: "0.875rem",
61
62
  sm: "1rem",
62
- base: "1.125rem"},
63
+ base: "1.125rem",
64
+ "2xl": "1.5rem"},
63
65
  fontWeight: {
64
66
  medium: 500,
65
- semibold: 600},
67
+ semibold: 600,
68
+ bold: 700
69
+ },
66
70
  lineHeight: {
67
71
  tight: 1.25,
68
72
  normal: 1.5,
@@ -74,7 +78,8 @@ var tokens = {
74
78
  sm: "0.5rem",
75
79
  md: "1rem",
76
80
  lg: "1.5rem",
77
- xl: "2rem"},
81
+ xl: "2rem",
82
+ "2xl": "3rem"},
78
83
  borderRadius: {
79
84
  sm: "0.25rem",
80
85
  md: "0.5rem",
@@ -95,7 +100,9 @@ var tokens = {
95
100
  zIndex: {
96
101
  modal: 1200},
97
102
  breakpoints: {
98
- tablet: 1024}
103
+ tablet: 1024,
104
+ desktop: 1280
105
+ }
99
106
  };
100
107
  var WorkflowCard = ({
101
108
  id,
@@ -1707,6 +1714,507 @@ var SourceLink = styled2__default.default.a`
1707
1714
  text-decoration-color: ${tokens.colors.border.hover};
1708
1715
  }
1709
1716
  `;
1717
+ var WorkflowDiscoveryPage = ({
1718
+ title = "Workflows",
1719
+ subtitle,
1720
+ tabs,
1721
+ activeTabId,
1722
+ onTabChange,
1723
+ filterSlot,
1724
+ footerSlot,
1725
+ children,
1726
+ className
1727
+ }) => {
1728
+ return /* @__PURE__ */ jsxRuntime.jsxs(PageRoot, { className, "data-testid": "workflow-discovery-page", children: [
1729
+ /* @__PURE__ */ jsxRuntime.jsxs(PageHeader, { children: [
1730
+ /* @__PURE__ */ jsxRuntime.jsxs(PageTitleColumn, { children: [
1731
+ /* @__PURE__ */ jsxRuntime.jsx(PageTitle, { children: title }),
1732
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx(PageSubtitle, { children: subtitle })
1733
+ ] }),
1734
+ tabs && tabs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(TabRow, { role: "tablist", "aria-label": "Workflow availability", children: tabs.map((tab) => {
1735
+ const active = tab.id === activeTabId;
1736
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1737
+ TabButton,
1738
+ {
1739
+ $active: active,
1740
+ role: "tab",
1741
+ type: "button",
1742
+ "aria-selected": active,
1743
+ onClick: () => onTabChange?.(tab.id),
1744
+ children: [
1745
+ tab.label,
1746
+ tab.count != null && /* @__PURE__ */ jsxRuntime.jsx(TabCount, { $active: active, children: tab.count })
1747
+ ]
1748
+ },
1749
+ tab.id
1750
+ );
1751
+ }) })
1752
+ ] }),
1753
+ filterSlot && /* @__PURE__ */ jsxRuntime.jsx(FilterRow, { children: filterSlot }),
1754
+ /* @__PURE__ */ jsxRuntime.jsx(PageBody, { children }),
1755
+ footerSlot && /* @__PURE__ */ jsxRuntime.jsx(PageFooter, { children: footerSlot })
1756
+ ] });
1757
+ };
1758
+ WorkflowDiscoveryPage.displayName = "WorkflowDiscoveryPage";
1759
+ var WorkflowDiscoverySection = ({
1760
+ label,
1761
+ count,
1762
+ workflows,
1763
+ expandedId,
1764
+ onToggle
1765
+ }) => {
1766
+ const renderedCards = react.useMemo(
1767
+ () => workflows.map((wf) => {
1768
+ const isExpanded = expandedId === wf.id;
1769
+ return /* @__PURE__ */ jsxRuntime.jsx(SectionGridCell, { $expanded: isExpanded, children: /* @__PURE__ */ jsxRuntime.jsx(
1770
+ WorkflowDiscoveryCard,
1771
+ {
1772
+ ...wf,
1773
+ isExpanded,
1774
+ onToggleExpanded: (id, next) => onToggle?.(id, next)
1775
+ }
1776
+ ) }, wf.id);
1777
+ }),
1778
+ [workflows, expandedId, onToggle]
1779
+ );
1780
+ return /* @__PURE__ */ jsxRuntime.jsxs(SectionRoot, { children: [
1781
+ label && /* @__PURE__ */ jsxRuntime.jsxs(SectionHeader, { children: [
1782
+ /* @__PURE__ */ jsxRuntime.jsx(SectionLabel, { children: label }),
1783
+ count != null && /* @__PURE__ */ jsxRuntime.jsx(SectionCount, { children: count })
1784
+ ] }),
1785
+ /* @__PURE__ */ jsxRuntime.jsx(SectionGrid, { children: renderedCards })
1786
+ ] });
1787
+ };
1788
+ WorkflowDiscoverySection.displayName = "WorkflowDiscoverySection";
1789
+ var ClipboardIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
1790
+ "svg",
1791
+ {
1792
+ viewBox: "0 0 24 24",
1793
+ width: "32",
1794
+ height: "32",
1795
+ fill: "none",
1796
+ stroke: "currentColor",
1797
+ strokeWidth: "1.5",
1798
+ strokeLinecap: "round",
1799
+ strokeLinejoin: "round",
1800
+ "aria-hidden": "true",
1801
+ children: [
1802
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "8", y: "4", width: "8", height: "3", rx: "1" }),
1803
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 5h2a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2" }),
1804
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 12h6M9 16h4" })
1805
+ ]
1806
+ }
1807
+ );
1808
+ var AlertIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
1809
+ "svg",
1810
+ {
1811
+ viewBox: "0 0 24 24",
1812
+ width: "32",
1813
+ height: "32",
1814
+ fill: "none",
1815
+ stroke: "currentColor",
1816
+ strokeWidth: "1.5",
1817
+ strokeLinecap: "round",
1818
+ strokeLinejoin: "round",
1819
+ "aria-hidden": "true",
1820
+ children: [
1821
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9" }),
1822
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "8", x2: "12", y2: "13" }),
1823
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "16.5", r: "0.75", fill: "currentColor" })
1824
+ ]
1825
+ }
1826
+ );
1827
+ var WorkflowDiscoveryEmptyState = ({
1828
+ title = "No workflows yet",
1829
+ message = "Workflows will appear here once they are enabled for your account.",
1830
+ ctaLabel,
1831
+ onCta
1832
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(StateRoot, { "data-testid": "workflow-discovery-empty", children: [
1833
+ /* @__PURE__ */ jsxRuntime.jsx(StateIconWrap, { $tone: "neutral", children: /* @__PURE__ */ jsxRuntime.jsx(ClipboardIcon, {}) }),
1834
+ /* @__PURE__ */ jsxRuntime.jsx(StateTitle, { children: title }),
1835
+ /* @__PURE__ */ jsxRuntime.jsx(StateMessage, { children: message }),
1836
+ ctaLabel && onCta && /* @__PURE__ */ jsxRuntime.jsx(StatePrimaryButton, { type: "button", onClick: onCta, children: ctaLabel })
1837
+ ] });
1838
+ WorkflowDiscoveryEmptyState.displayName = "WorkflowDiscoveryEmptyState";
1839
+ var WorkflowDiscoveryErrorState = ({
1840
+ title = "Failed to load workflows",
1841
+ message = "Something went wrong while fetching your workflows. Check your connection and try again.",
1842
+ onRetry
1843
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(StateRoot, { "data-testid": "workflow-discovery-error", children: [
1844
+ /* @__PURE__ */ jsxRuntime.jsx(StateIconWrap, { $tone: "error", children: /* @__PURE__ */ jsxRuntime.jsx(AlertIcon, {}) }),
1845
+ /* @__PURE__ */ jsxRuntime.jsx(StateTitle, { children: title }),
1846
+ /* @__PURE__ */ jsxRuntime.jsx(StateMessage, { children: message }),
1847
+ onRetry && /* @__PURE__ */ jsxRuntime.jsx(StatePrimaryButton, { type: "button", onClick: onRetry, children: "Retry" })
1848
+ ] });
1849
+ WorkflowDiscoveryErrorState.displayName = "WorkflowDiscoveryErrorState";
1850
+ var WorkflowDiscoveryLoadingState = ({
1851
+ count = 6
1852
+ }) => {
1853
+ const items = react.useMemo(() => Array.from({ length: count }, (_, i) => i), [count]);
1854
+ return /* @__PURE__ */ jsxRuntime.jsx(SectionGrid, { "data-testid": "workflow-discovery-loading", children: items.map((i) => /* @__PURE__ */ jsxRuntime.jsx(SectionGridCell, { $expanded: false, children: /* @__PURE__ */ jsxRuntime.jsxs(SkeletonCard, { children: [
1855
+ /* @__PURE__ */ jsxRuntime.jsxs(SkeletonHeaderRow, { children: [
1856
+ /* @__PURE__ */ jsxRuntime.jsxs(SkeletonTitleBlock, { children: [
1857
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonLine, { $width: "60%", $height: "16px" }),
1858
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonLine, { $width: "90%", $height: "12px" })
1859
+ ] }),
1860
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonChip, { $width: "24px", $height: "24px", $rounded: true })
1861
+ ] }),
1862
+ /* @__PURE__ */ jsxRuntime.jsxs(SkeletonFooterRow, { children: [
1863
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonChip, { $width: "70px", $height: "20px" }),
1864
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonChip, { $width: "24px", $height: "24px", $rounded: true }),
1865
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonChip, { $width: "24px", $height: "24px", $rounded: true }),
1866
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonChip, { $width: "50px", $height: "20px" })
1867
+ ] })
1868
+ ] }) }, `skeleton-${i}`)) });
1869
+ };
1870
+ WorkflowDiscoveryLoadingState.displayName = "WorkflowDiscoveryLoadingState";
1871
+ var ExternalLinkIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
1872
+ "svg",
1873
+ {
1874
+ viewBox: "0 0 24 24",
1875
+ width: "14",
1876
+ height: "14",
1877
+ fill: "none",
1878
+ stroke: "currentColor",
1879
+ strokeWidth: "2",
1880
+ strokeLinecap: "round",
1881
+ strokeLinejoin: "round",
1882
+ "aria-hidden": "true",
1883
+ children: [
1884
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }),
1885
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "15 3 21 3 21 9" }),
1886
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
1887
+ ]
1888
+ }
1889
+ );
1890
+ var WorkflowDiscoveryUpgradeBanner = ({
1891
+ title = "Upgrade your plan to unlock these automations",
1892
+ message,
1893
+ ctaLabel = "Learn more",
1894
+ onLearnMore
1895
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(BannerRoot, { "data-testid": "workflow-discovery-upgrade-banner", children: [
1896
+ /* @__PURE__ */ jsxRuntime.jsxs(BannerTextColumn, { children: [
1897
+ /* @__PURE__ */ jsxRuntime.jsx(BannerTitle, { children: title }),
1898
+ message && /* @__PURE__ */ jsxRuntime.jsx(BannerMessage, { children: message })
1899
+ ] }),
1900
+ onLearnMore && /* @__PURE__ */ jsxRuntime.jsxs(BannerCta, { type: "button", onClick: onLearnMore, children: [
1901
+ /* @__PURE__ */ jsxRuntime.jsx(ExternalLinkIcon, {}),
1902
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: ctaLabel })
1903
+ ] })
1904
+ ] });
1905
+ WorkflowDiscoveryUpgradeBanner.displayName = "WorkflowDiscoveryUpgradeBanner";
1906
+ var PageRoot = styled2__default.default.div`
1907
+ display: flex;
1908
+ flex-direction: column;
1909
+ width: 100%;
1910
+ font-family: ${tokens.typography.fontFamily.primary};
1911
+ color: ${tokens.colors.text.primary};
1912
+ `;
1913
+ var PageHeader = styled2__default.default.header`
1914
+ display: flex;
1915
+ flex-direction: column;
1916
+ gap: ${tokens.spacing.md};
1917
+ padding-bottom: ${tokens.spacing.lg};
1918
+
1919
+ @media (min-width: ${tokens.breakpoints.tablet}px) {
1920
+ flex-direction: row;
1921
+ align-items: flex-end;
1922
+ justify-content: space-between;
1923
+ gap: ${tokens.spacing.lg};
1924
+ }
1925
+ `;
1926
+ var PageTitleColumn = styled2__default.default.div`
1927
+ display: flex;
1928
+ flex-direction: column;
1929
+ gap: ${tokens.spacing.xs};
1930
+ min-width: 0;
1931
+ `;
1932
+ var PageTitle = styled2__default.default.h1`
1933
+ margin: 0;
1934
+ font-size: ${tokens.typography.fontSize["2xl"]};
1935
+ font-weight: ${tokens.typography.fontWeight.bold};
1936
+ line-height: ${tokens.typography.lineHeight.tight};
1937
+ color: ${tokens.colors.text.primary};
1938
+ `;
1939
+ var PageSubtitle = styled2__default.default.p`
1940
+ margin: 0;
1941
+ font-size: ${tokens.typography.fontSize.sm};
1942
+ color: ${tokens.colors.text.tertiary};
1943
+ line-height: ${tokens.typography.lineHeight.normal};
1944
+ `;
1945
+ var TabRow = styled2__default.default.div`
1946
+ display: inline-flex;
1947
+ align-items: center;
1948
+ gap: ${tokens.spacing.xs};
1949
+ padding: ${tokens.spacing.xs};
1950
+ background: ${tokens.colors.background.darker};
1951
+ border-radius: ${tokens.borderRadius.lg};
1952
+ align-self: flex-start;
1953
+
1954
+ @media (min-width: ${tokens.breakpoints.tablet}px) {
1955
+ align-self: flex-end;
1956
+ }
1957
+ `;
1958
+ var TabButton = styled2__default.default.button`
1959
+ all: unset;
1960
+ display: inline-flex;
1961
+ align-items: center;
1962
+ gap: ${tokens.spacing.xs};
1963
+ padding: ${tokens.spacing.sm} ${tokens.spacing.lg};
1964
+ background: ${(p) => p.$active ? tokens.colors.primary : "transparent"};
1965
+ color: ${(p) => p.$active ? tokens.colors.text.primary : tokens.colors.text.secondary};
1966
+ border-radius: ${tokens.borderRadius.md};
1967
+ font-size: ${tokens.typography.fontSize.sm};
1968
+ font-weight: ${tokens.typography.fontWeight.medium};
1969
+ cursor: pointer;
1970
+ transition: background ${tokens.transitions.fast},
1971
+ color ${tokens.transitions.fast};
1972
+
1973
+ &:hover {
1974
+ color: ${tokens.colors.text.primary};
1975
+ background: ${(p) => p.$active ? tokens.colors.primary : tokens.colors.surface.overlay};
1976
+ }
1977
+
1978
+ &:focus-visible {
1979
+ outline: 2px solid ${tokens.colors.border.focus};
1980
+ outline-offset: 2px;
1981
+ }
1982
+ `;
1983
+ var TabCount = styled2__default.default.span`
1984
+ display: inline-flex;
1985
+ align-items: center;
1986
+ justify-content: center;
1987
+ min-width: 20px;
1988
+ height: 20px;
1989
+ padding: 0 6px;
1990
+ border-radius: ${tokens.borderRadius.full};
1991
+ background: ${(p) => p.$active ? "rgba(255, 255, 255, 0.18)" : tokens.colors.surface.overlay};
1992
+ font-size: 11px;
1993
+ font-weight: ${tokens.typography.fontWeight.semibold};
1994
+ color: inherit;
1995
+ `;
1996
+ var FilterRow = styled2__default.default.div`
1997
+ padding-bottom: ${tokens.spacing.md};
1998
+ `;
1999
+ var PageBody = styled2__default.default.div`
2000
+ display: flex;
2001
+ flex-direction: column;
2002
+ gap: ${tokens.spacing.xl};
2003
+ `;
2004
+ var PageFooter = styled2__default.default.div`
2005
+ padding-top: ${tokens.spacing.lg};
2006
+ `;
2007
+ var SectionRoot = styled2__default.default.section`
2008
+ display: flex;
2009
+ flex-direction: column;
2010
+ gap: ${tokens.spacing.sm};
2011
+ `;
2012
+ var SectionHeader = styled2__default.default.div`
2013
+ display: flex;
2014
+ align-items: center;
2015
+ gap: ${tokens.spacing.sm};
2016
+ padding-bottom: ${tokens.spacing.xs};
2017
+ `;
2018
+ var SectionLabel = styled2__default.default.h2`
2019
+ margin: 0;
2020
+ font-size: 11px;
2021
+ font-weight: ${tokens.typography.fontWeight.semibold};
2022
+ letter-spacing: 0.5px;
2023
+ text-transform: uppercase;
2024
+ color: ${tokens.colors.text.tertiary};
2025
+ `;
2026
+ var SectionCount = styled2__default.default.span`
2027
+ font-size: 11px;
2028
+ font-weight: ${tokens.typography.fontWeight.medium};
2029
+ color: ${tokens.colors.text.tertiary};
2030
+ background: ${tokens.colors.surface.overlay};
2031
+ padding: 1px ${tokens.spacing.xs};
2032
+ border-radius: ${tokens.borderRadius.full};
2033
+ `;
2034
+ var SectionGrid = styled2__default.default.div`
2035
+ display: grid;
2036
+ grid-template-columns: 1fr;
2037
+ gap: ${tokens.spacing.md};
2038
+ width: 100%;
2039
+
2040
+ @media (min-width: ${tokens.breakpoints.tablet}px) {
2041
+ grid-template-columns: repeat(2, 1fr);
2042
+ }
2043
+
2044
+ @media (min-width: ${tokens.breakpoints.desktop}px) {
2045
+ grid-template-columns: repeat(3, 1fr);
2046
+ }
2047
+ `;
2048
+ var SectionGridCell = styled2__default.default.div`
2049
+ min-width: 0;
2050
+
2051
+ @media (min-width: ${tokens.breakpoints.tablet}px) {
2052
+ ${(p) => p.$expanded && styled2.css`
2053
+ grid-column: 1 / -1;
2054
+ `}
2055
+ }
2056
+ `;
2057
+ var StateRoot = styled2__default.default.div`
2058
+ display: flex;
2059
+ flex-direction: column;
2060
+ align-items: center;
2061
+ justify-content: center;
2062
+ gap: ${tokens.spacing.sm};
2063
+ padding: ${tokens.spacing["2xl"]} ${tokens.spacing.lg};
2064
+ text-align: center;
2065
+ border: 1px dashed ${tokens.colors.border.subtle};
2066
+ border-radius: ${tokens.borderRadius.lg};
2067
+ background: ${tokens.colors.surface.subtle};
2068
+ `;
2069
+ var StateIconWrap = styled2__default.default.div`
2070
+ display: inline-flex;
2071
+ align-items: center;
2072
+ justify-content: center;
2073
+ width: 56px;
2074
+ height: 56px;
2075
+ border-radius: ${tokens.borderRadius.full};
2076
+ background: ${(p) => p.$tone === "error" ? `${tokens.colors.error}1A` : tokens.colors.surface.overlay};
2077
+ color: ${(p) => p.$tone === "error" ? tokens.colors.error : tokens.colors.text.tertiary};
2078
+ margin-bottom: ${tokens.spacing.xs};
2079
+ `;
2080
+ var StateTitle = styled2__default.default.h3`
2081
+ margin: 0;
2082
+ font-size: ${tokens.typography.fontSize.base};
2083
+ font-weight: ${tokens.typography.fontWeight.semibold};
2084
+ color: ${tokens.colors.text.primary};
2085
+ `;
2086
+ var StateMessage = styled2__default.default.p`
2087
+ margin: 0;
2088
+ max-width: 420px;
2089
+ font-size: ${tokens.typography.fontSize.sm};
2090
+ line-height: ${tokens.typography.lineHeight.normal};
2091
+ color: ${tokens.colors.text.secondary};
2092
+ `;
2093
+ var StatePrimaryButton = styled2__default.default.button`
2094
+ all: unset;
2095
+ margin-top: ${tokens.spacing.sm};
2096
+ padding: ${tokens.spacing.sm} ${tokens.spacing.lg};
2097
+ background: ${tokens.colors.primary};
2098
+ color: #fff;
2099
+ font-size: ${tokens.typography.fontSize.sm};
2100
+ font-weight: ${tokens.typography.fontWeight.semibold};
2101
+ border-radius: ${tokens.borderRadius.md};
2102
+ cursor: pointer;
2103
+ transition: opacity ${tokens.transitions.fast};
2104
+
2105
+ &:hover {
2106
+ opacity: 0.92;
2107
+ }
2108
+
2109
+ &:focus-visible {
2110
+ outline: 2px solid ${tokens.colors.border.focus};
2111
+ outline-offset: 2px;
2112
+ }
2113
+ `;
2114
+ var pulse2 = styled2.keyframes`
2115
+ 0%, 100% { opacity: 0.6; }
2116
+ 50% { opacity: 0.3; }
2117
+ `;
2118
+ var SkeletonCard = styled2__default.default.div`
2119
+ display: flex;
2120
+ flex-direction: column;
2121
+ gap: ${tokens.spacing.md};
2122
+ padding: ${tokens.spacing.md};
2123
+ background: ${tokens.colors.background.dark};
2124
+ border: 1px solid ${tokens.colors.border.default};
2125
+ border-radius: ${tokens.borderRadius.xl};
2126
+ `;
2127
+ var SkeletonHeaderRow = styled2__default.default.div`
2128
+ display: flex;
2129
+ align-items: flex-start;
2130
+ gap: ${tokens.spacing.sm};
2131
+ `;
2132
+ var SkeletonTitleBlock = styled2__default.default.div`
2133
+ display: flex;
2134
+ flex-direction: column;
2135
+ gap: ${tokens.spacing.xs};
2136
+ flex: 1;
2137
+ min-width: 0;
2138
+ `;
2139
+ var SkeletonFooterRow = styled2__default.default.div`
2140
+ display: flex;
2141
+ align-items: center;
2142
+ gap: ${tokens.spacing.xs};
2143
+ flex-wrap: wrap;
2144
+ `;
2145
+ var SkeletonLine = styled2__default.default.div`
2146
+ width: ${(p) => p.$width};
2147
+ height: ${(p) => p.$height};
2148
+ background: ${tokens.colors.surface.overlay};
2149
+ border-radius: ${tokens.borderRadius.sm};
2150
+ animation: ${pulse2} ${tokens.animation.pulse.duration} ease-in-out infinite;
2151
+ `;
2152
+ var SkeletonChip = styled2__default.default.div`
2153
+ width: ${(p) => p.$width};
2154
+ height: ${(p) => p.$height};
2155
+ background: ${tokens.colors.surface.overlay};
2156
+ border-radius: ${(p) => p.$rounded ? tokens.borderRadius.full : tokens.borderRadius.md};
2157
+ animation: ${pulse2} ${tokens.animation.pulse.duration} ease-in-out infinite;
2158
+ flex-shrink: 0;
2159
+ `;
2160
+ var BannerRoot = styled2__default.default.div`
2161
+ display: flex;
2162
+ flex-direction: column;
2163
+ gap: ${tokens.spacing.md};
2164
+ padding: ${tokens.spacing.md} ${tokens.spacing.lg};
2165
+ background: ${tokens.colors.accent}14;
2166
+ border: 1px solid ${tokens.colors.accent}33;
2167
+ border-radius: ${tokens.borderRadius.lg};
2168
+
2169
+ @media (min-width: ${tokens.breakpoints.tablet}px) {
2170
+ flex-direction: row;
2171
+ align-items: center;
2172
+ justify-content: space-between;
2173
+ }
2174
+ `;
2175
+ var BannerTextColumn = styled2__default.default.div`
2176
+ display: flex;
2177
+ flex-direction: column;
2178
+ gap: ${tokens.spacing.xs};
2179
+ min-width: 0;
2180
+ `;
2181
+ var BannerTitle = styled2__default.default.p`
2182
+ margin: 0;
2183
+ font-size: ${tokens.typography.fontSize.sm};
2184
+ font-weight: ${tokens.typography.fontWeight.semibold};
2185
+ color: ${tokens.colors.text.primary};
2186
+ `;
2187
+ var BannerMessage = styled2__default.default.p`
2188
+ margin: 0;
2189
+ font-size: ${tokens.typography.fontSize.xs};
2190
+ color: ${tokens.colors.text.tertiary};
2191
+ line-height: ${tokens.typography.lineHeight.normal};
2192
+ `;
2193
+ var BannerCta = styled2__default.default.button`
2194
+ all: unset;
2195
+ display: inline-flex;
2196
+ align-items: center;
2197
+ justify-content: center;
2198
+ gap: ${tokens.spacing.xs};
2199
+ padding: ${tokens.spacing.sm} ${tokens.spacing.md};
2200
+ background: ${tokens.colors.accent};
2201
+ color: #fff;
2202
+ font-size: ${tokens.typography.fontSize.xs};
2203
+ font-weight: ${tokens.typography.fontWeight.semibold};
2204
+ border-radius: ${tokens.borderRadius.full};
2205
+ cursor: pointer;
2206
+ flex-shrink: 0;
2207
+ transition: opacity ${tokens.transitions.fast};
2208
+
2209
+ &:hover {
2210
+ opacity: 0.92;
2211
+ }
2212
+
2213
+ &:focus-visible {
2214
+ outline: 2px solid ${tokens.colors.border.focus};
2215
+ outline-offset: 2px;
2216
+ }
2217
+ `;
1710
2218
  var severityColors = {
1711
2219
  error: tokens.colors.error,
1712
2220
  warning: tokens.colors.warning,
@@ -2518,7 +3026,7 @@ var spin = styled2.keyframes`
2518
3026
  transform: rotate(360deg);
2519
3027
  }
2520
3028
  `;
2521
- var pulse2 = styled2.keyframes`
3029
+ var pulse3 = styled2.keyframes`
2522
3030
  0%, 100% {
2523
3031
  opacity: 1;
2524
3032
  }
@@ -2596,7 +3104,7 @@ var IconContainer2 = styled2__default.default.div`
2596
3104
  animation: ${(props) => {
2597
3105
  if (props.$animated) {
2598
3106
  if (props.$status === "running") return spin;
2599
- if (props.$status === "pending") return pulse2;
3107
+ if (props.$status === "pending") return pulse3;
2600
3108
  }
2601
3109
  return "none";
2602
3110
  }}
@@ -2727,6 +3235,12 @@ WorkflowStatusBadge.displayName = "WorkflowStatusBadge";
2727
3235
 
2728
3236
  exports.WorkflowCard = WorkflowCard;
2729
3237
  exports.WorkflowDiscoveryCard = WorkflowDiscoveryCard;
3238
+ exports.WorkflowDiscoveryEmptyState = WorkflowDiscoveryEmptyState;
3239
+ exports.WorkflowDiscoveryErrorState = WorkflowDiscoveryErrorState;
3240
+ exports.WorkflowDiscoveryLoadingState = WorkflowDiscoveryLoadingState;
3241
+ exports.WorkflowDiscoveryPage = WorkflowDiscoveryPage;
3242
+ exports.WorkflowDiscoverySection = WorkflowDiscoverySection;
3243
+ exports.WorkflowDiscoveryUpgradeBanner = WorkflowDiscoveryUpgradeBanner;
2730
3244
  exports.WorkflowErrorAlert = WorkflowErrorAlert;
2731
3245
  exports.WorkflowProgressBar = WorkflowProgressBar;
2732
3246
  exports.WorkflowResultPanel = WorkflowResultPanel;