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