@agentiffai/design 1.3.29 → 1.4.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/YouTubeIcon-C1e6LEOF.d.cts +398 -0
- package/dist/YouTubeIcon-C1e6LEOF.d.ts +398 -0
- package/dist/copilotkit/index.cjs +4 -39
- package/dist/copilotkit/index.cjs.map +1 -1
- package/dist/copilotkit/index.d.cts +1 -0
- package/dist/copilotkit/index.d.ts +1 -0
- package/dist/copilotkit/index.js +1 -39
- package/dist/copilotkit/index.js.map +1 -1
- package/dist/icons/index.cjs +1326 -3
- package/dist/icons/index.cjs.map +1 -1
- package/dist/icons/index.d.cts +136 -320
- package/dist/icons/index.d.ts +136 -320
- package/dist/icons/index.js +1311 -4
- package/dist/icons/index.js.map +1 -1
- package/dist/index.cjs +845 -613
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -2
- package/dist/index.d.ts +34 -2
- package/dist/index.js +791 -560
- package/dist/index.js.map +1 -1
- package/dist/layout/index.cjs +0 -30
- package/dist/layout/index.cjs.map +1 -1
- package/dist/layout/index.js +0 -30
- package/dist/layout/index.js.map +1 -1
- package/dist/theme/index.cjs +0 -54
- package/dist/theme/index.cjs.map +1 -1
- package/dist/theme/index.d.cts +0 -5
- package/dist/theme/index.d.ts +0 -5
- package/dist/theme/index.js +0 -54
- package/dist/theme/index.js.map +1 -1
- package/dist/workflow/index.cjs +0 -26
- package/dist/workflow/index.cjs.map +1 -1
- package/dist/workflow/index.js +0 -26
- package/dist/workflow/index.js.map +1 -1
- package/package.json +7 -1
package/dist/workflow/index.cjs
CHANGED
|
@@ -13,53 +13,38 @@ var styled2__default = /*#__PURE__*/_interopDefault(styled2);
|
|
|
13
13
|
// src/theme/tokens.ts
|
|
14
14
|
var tokens = {
|
|
15
15
|
colors: {
|
|
16
|
-
// Sea Green (additional brand color)
|
|
17
|
-
// Backgrounds - dark theme optimized
|
|
18
16
|
background: {
|
|
19
|
-
// Discord gray (preserved)
|
|
20
17
|
dark: "#1b2230",
|
|
21
|
-
// Discord surface gray (preserved)
|
|
22
18
|
light: "#252d3d"
|
|
23
|
-
// Discord border gray (preserved)
|
|
24
19
|
},
|
|
25
|
-
// Text hierarchy
|
|
26
20
|
text: {
|
|
27
21
|
primary: "#FFFFFF",
|
|
28
22
|
secondary: "#B4B8C5",
|
|
29
23
|
tertiary: "#9CA3AF"},
|
|
30
|
-
// Teal (brand aligned)
|
|
31
24
|
error: "#EF4444",
|
|
32
25
|
warning: "#F59E0B",
|
|
33
26
|
info: "#459FB9",
|
|
34
|
-
// Sky Blue (brand aligned)
|
|
35
|
-
// Status colors (for workflow/SSE events)
|
|
36
27
|
status: {
|
|
37
28
|
pending: "#6B7280",
|
|
38
29
|
running: "#459FB9",
|
|
39
|
-
// Sky Blue (brand aligned)
|
|
40
30
|
completed: "#2CB0AB",
|
|
41
|
-
// Teal (brand aligned)
|
|
42
31
|
failed: "#EF4444",
|
|
43
32
|
timeout: "#F59E0B"},
|
|
44
|
-
// Surface variants (for overlays, cards, panels)
|
|
45
33
|
surface: {
|
|
46
34
|
overlay: "rgba(255, 255, 255, 0.05)",
|
|
47
35
|
overlayHover: "rgba(255, 255, 255, 0.1)",
|
|
48
36
|
overlayActive: "rgba(255, 255, 255, 0.15)",
|
|
49
37
|
subtle: "rgba(255, 255, 255, 0.02)"},
|
|
50
|
-
// UI Element colors
|
|
51
38
|
border: {
|
|
52
39
|
default: "rgba(255, 255, 255, 0.1)",
|
|
53
40
|
subtle: "rgba(255, 255, 255, 0.05)",
|
|
54
41
|
hover: "rgba(255, 255, 255, 0.2)",
|
|
55
42
|
focus: "#2CB0AB"},
|
|
56
|
-
// Scrollbar colors
|
|
57
43
|
scrollbar: {
|
|
58
44
|
track: "transparent",
|
|
59
45
|
thumb: "rgba(255, 255, 255, 0.2)",
|
|
60
46
|
thumbHover: "rgba(255, 255, 255, 0.3)"
|
|
61
47
|
},
|
|
62
|
-
// Overlays and backdrops
|
|
63
48
|
overlay: "rgba(0, 0, 0, 0.5)"},
|
|
64
49
|
typography: {
|
|
65
50
|
fontFamily: {
|
|
@@ -68,9 +53,7 @@ var tokens = {
|
|
|
68
53
|
},
|
|
69
54
|
fontSize: {
|
|
70
55
|
xs: "0.875rem",
|
|
71
|
-
// 14px (was 12px, increased for better readability)
|
|
72
56
|
sm: "1rem",
|
|
73
|
-
// 16px (was 14px, increased for better readability)
|
|
74
57
|
base: "1.125rem"},
|
|
75
58
|
fontWeight: {
|
|
76
59
|
medium: 500,
|
|
@@ -81,25 +64,16 @@ var tokens = {
|
|
|
81
64
|
},
|
|
82
65
|
spacing: {
|
|
83
66
|
xs: "0.25rem",
|
|
84
|
-
// 4px
|
|
85
67
|
sm: "0.5rem",
|
|
86
|
-
// 8px
|
|
87
68
|
md: "1rem",
|
|
88
|
-
// 16px
|
|
89
69
|
lg: "1.5rem",
|
|
90
|
-
// 24px
|
|
91
70
|
xl: "2rem"},
|
|
92
71
|
borderRadius: {
|
|
93
72
|
sm: "0.25rem",
|
|
94
|
-
// 4px
|
|
95
73
|
md: "0.5rem",
|
|
96
|
-
// 8px
|
|
97
74
|
lg: "0.75rem",
|
|
98
|
-
// 12px
|
|
99
75
|
xl: "1rem",
|
|
100
|
-
// 24px
|
|
101
76
|
full: "9999px"
|
|
102
|
-
// Fully rounded
|
|
103
77
|
},
|
|
104
78
|
shadows: {
|
|
105
79
|
xl: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/theme/tokens.ts","../../src/components/workflow/WorkflowCard.tsx","../../src/components/workflow/WorkflowErrorAlert.tsx","../../src/components/workflow/WorkflowProgressBar.tsx","../../src/components/workflow/WorkflowResultPanel.tsx","../../src/components/workflow/WorkflowStatusBadge.tsx"],"names":["jsxs","jsx","styled","useState","keyframes","Header","Title","Actions","Content","ChevronIcon","statusColors","IconContainer"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Design Tokens\n * Centralized design system tokens for colors, typography, spacing, etc.\n * These tokens are the single source of truth for styling across all components.\n */\n\nexport const tokens = {\n colors: {\n // Brand colors\n primary: '#2CB0AB', // Teal (main brand color)\n secondary: '#264E68', // Deep Blue\n accent: '#459FB9', // Sky Blue\n seaGreen: '#4EB999', // Sea Green (additional brand color)\n\n // Backgrounds - dark theme optimized\n background: {\n darkest: '#0a1b2a', // Darkest Blue (brand color)\n darker: '#151a26', // Discord gray (preserved)\n dark: '#1b2230', // Discord surface gray (preserved)\n light: '#252d3d', // Discord border gray (preserved)\n },\n\n // Text hierarchy\n text: {\n primary: '#FFFFFF',\n secondary: '#B4B8C5',\n tertiary: '#9CA3AF',\n disabled: '#4B5563',\n },\n\n // Semantic colors\n success: '#2CB0AB', // Teal (brand aligned)\n error: '#EF4444',\n warning: '#F59E0B',\n info: '#459FB9', // Sky Blue (brand aligned)\n\n // Status colors (for workflow/SSE events)\n status: {\n pending: '#6B7280',\n editing: '#3B82F6',\n idle: '#6B7280',\n running: '#459FB9', // Sky Blue (brand aligned)\n completed: '#2CB0AB', // Teal (brand aligned)\n failed: '#EF4444',\n timeout: '#F59E0B',\n // Badge status (online/offline pattern)\n online: '#2CB0AB',\n offline: '#EF4444',\n busy: '#459FB9',\n },\n\n // Connection status\n connection: {\n connected: '#2CB0AB', // Teal (brand aligned)\n streaming: '#459FB9', // Sky Blue (brand aligned)\n disconnected: '#EF4444',\n reconnecting: '#F59E0B',\n },\n\n // Surface variants (for overlays, cards, panels)\n surface: {\n base: '#1b2230',\n elevated: '#252d3d',\n overlay: 'rgba(255, 255, 255, 0.05)',\n overlayHover: 'rgba(255, 255, 255, 0.1)',\n overlayActive: 'rgba(255, 255, 255, 0.15)',\n subtle: 'rgba(255, 255, 255, 0.02)',\n glass: 'rgba(255, 255, 255, 0.26)',\n glassBorder: 'rgba(255, 255, 255, 0.3)',\n },\n\n // UI Element colors\n border: {\n default: 'rgba(255, 255, 255, 0.1)',\n subtle: 'rgba(255, 255, 255, 0.05)',\n hover: 'rgba(255, 255, 255, 0.2)',\n focus: '#2CB0AB', // Teal (brand aligned)\n error: '#EF4444',\n },\n\n // Category colors (for workflow progress badges)\n category: {\n setup: '#459FB9',\n integration: '#8B5CF6',\n generation: '#2CB0AB',\n image: '#EC4899',\n scheduling: '#F59E0B',\n completion: '#4EB999',\n processing: '#459FB9',\n custom: '#6B7280',\n notion: '#6B7280',\n },\n\n // Scrollbar colors\n scrollbar: {\n track: 'transparent',\n thumb: 'rgba(255, 255, 255, 0.2)',\n thumbHover: 'rgba(255, 255, 255, 0.3)',\n },\n\n // Message bubbles\n message: {\n user: '#264E68', // Deep Blue (brand color)\n ai: '#1b2230', // Dark background\n system: '#151a26', // Darker background\n },\n\n // Overlays and backdrops\n overlay: 'rgba(0, 0, 0, 0.5)',\n backdrop: 'rgba(27, 34, 48, 0.95)',\n\n // Icon colors\n icon: {\n default: '#B4B8C5',\n muted: '#6B7280',\n active: '#2CB0AB',\n },\n\n // Platform brand colors (for social media icons)\n platform: {\n facebook: '#1877F2',\n instagram: '#E4405F',\n linkedin: '#0A66C2',\n x: '#000000',\n twitter: '#1DA1F2',\n youtube: '#FF0000',\n reddit: '#FF4500',\n slack: '#4A154B',\n telegram: '#0088CC',\n whatsapp: '#25D366',\n gmail: '#EA4335',\n },\n },\n\n typography: {\n fontFamily: {\n primary:\n \"'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', sans-serif\",\n heading:\n \"'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', sans-serif\",\n monospace: \"'Roboto Mono', 'Monaco', 'Menlo', 'Ubuntu Mono', monospace\",\n },\n fontSize: {\n xs: '0.875rem', // 14px (was 12px, increased for better readability)\n sm: '1rem', // 16px (was 14px, increased for better readability)\n base: '1.125rem', // 18px (was 16px, increased for better readability)\n lg: '1.125rem', // 18px (heading size, unchanged)\n xl: '1.25rem', // 20px (heading size, unchanged)\n '2xl': '1.5rem', // 24px (heading size, unchanged)\n '3xl': '1.875rem', // 30px (heading size, unchanged)\n '4xl': '2.25rem', // 36px (heading size, unchanged)\n },\n fontWeight: {\n light: 300,\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n },\n\n spacing: {\n xs: '0.25rem', // 4px\n sm: '0.5rem', // 8px\n md: '1rem', // 16px\n lg: '1.5rem', // 24px\n xl: '2rem', // 32px\n '2xl': '3rem', // 48px\n '3xl': '4rem', // 64px\n },\n\n borderRadius: {\n none: '0',\n sm: '0.25rem', // 4px\n md: '0.5rem', // 8px\n lg: '0.75rem', // 12px\n xl: '1rem', // 16px\n '2xl': '1.5rem', // 24px\n full: '9999px', // Fully rounded\n },\n\n shadows: {\n none: 'none',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n card: '0 4px 20px rgba(0, 0, 0, 0.3)',\n glow: {\n primary: '0 0 20px rgba(44, 176, 171, 0.3)',\n secondary: '0 0 20px rgba(38, 78, 104, 0.3)',\n accent: '0 0 20px rgba(69, 159, 185, 0.3)',\n },\n },\n\n transitions: {\n fast: '150ms ease-in-out',\n normal: '250ms ease-in-out',\n slow: '350ms ease-in-out',\n },\n\n animation: {\n duration: {\n micro: '150ms',\n short: '200ms',\n medium: '300ms',\n long: '500ms',\n },\n easing: {\n enter: 'cubic-bezier(0.4, 0, 0.2, 1)',\n exit: 'cubic-bezier(0.4, 0, 1, 1)',\n smooth: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n },\n overlay: {\n duration: '200ms',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n typewriter: {\n speed: '50ms',\n },\n spinner: {\n duration: '1000ms',\n },\n pulse: {\n duration: '2000ms',\n },\n },\n\n zIndex: {\n base: 0,\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n overlay: 1100,\n modal: 1200,\n popover: 1300,\n tooltip: 1400,\n toast: 1500,\n },\n\n breakpoints: {\n mobile: 640,\n tablet: 1024,\n desktop: 1280,\n },\n} as const;\n\nexport type Tokens = typeof tokens;\n","/**\n * WorkflowCard Component\n *\n * A card for displaying available workflows in a list.\n * Used for browsing and activating workflows, showing\n * integrations and input requirements.\n */\n\nimport type React from 'react';\nimport styled from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface WorkflowIntegration {\n /** Icon URL or path */\n icon: string;\n /** Integration name for alt text */\n name: string;\n /** Whether this integration is connected */\n connected?: boolean;\n /** Whether this integration is optional (softer visual when not connected) */\n optional?: boolean;\n}\n\nexport interface WorkflowCardProps {\n /** Unique identifier for the workflow */\n id: string;\n /** Workflow name */\n name: string;\n /** Workflow description */\n description?: string;\n /** List of required integrations */\n integrations?: WorkflowIntegration[];\n /** Whether the workflow needs setup (not yet provisioned) */\n needsSetup?: boolean;\n /** Estimated cost per run (e.g., \"~$0.15\") */\n estimatedCostPerRun?: string;\n /** Click handler */\n onClick?: () => void;\n /** Whether the card is disabled */\n disabled?: boolean;\n /** Optional className for styling */\n className?: string;\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport const WorkflowCard: React.FC<WorkflowCardProps> = ({\n id,\n name,\n description,\n integrations = [],\n needsSetup = false,\n estimatedCostPerRun,\n onClick,\n disabled = false,\n className,\n}) => {\n const missingCount = integrations.filter((i) => i.connected === false && !i.optional).length;\n const hasFooter = integrations.length > 0 || needsSetup || !!estimatedCostPerRun;\n\n return (\n <Card\n data-testid={`workflow-card-${id}`}\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n className={className}\n type=\"button\"\n >\n <WorkflowName data-testid=\"workflow-card-name\">{name}</WorkflowName>\n\n {description && <Description>{description}</Description>}\n\n {hasFooter && (\n <CardFooter>\n <IntegrationList>\n {integrations.map((integration) => (\n <IntegrationIconWrapper\n key={integration.name}\n $connected={integration.connected !== false}\n $optional={!!integration.optional}\n title={`${integration.name}${integration.connected === false ? (integration.optional ? ' (optional)' : ' (not connected)') : ''}`}\n >\n <IntegrationIcon src={integration.icon} alt={integration.name} />\n </IntegrationIconWrapper>\n ))}\n </IntegrationList>\n\n <Indicators>\n {estimatedCostPerRun && (\n <IndicatorPill\n $variant=\"info\"\n title={`Estimated cost: ${estimatedCostPerRun}${estimatedCostPerRun.includes('/') ? '' : ' per run'}`}\n >\n <IndicatorText>\n {estimatedCostPerRun}\n {estimatedCostPerRun.includes('/') ? '' : '/run'}\n </IndicatorText>\n </IndicatorPill>\n )}\n {missingCount > 0 && (\n <IndicatorPill\n $variant=\"warning\"\n data-testid=\"workflow-card-status\"\n title={`${missingCount} integration${missingCount > 1 ? 's' : ''} not connected`}\n >\n <IndicatorDot $variant=\"warning\" />\n <IndicatorText>{missingCount} missing</IndicatorText>\n </IndicatorPill>\n )}\n {needsSetup && (\n <IndicatorPill\n $variant=\"warning\"\n data-testid=\"workflow-card-needs-setup\"\n title=\"Setup required before use\"\n >\n <IndicatorDot $variant=\"warning\" />\n <IndicatorText>Needs Setup</IndicatorText>\n </IndicatorPill>\n )}\n </Indicators>\n </CardFooter>\n )}\n </Card>\n );\n};\n\nWorkflowCard.displayName = 'WorkflowCard';\n\n// =============================================================================\n// Styled Components\n// =============================================================================\n\nconst Card = styled.button`\n display: grid;\n gap: ${tokens.spacing.sm};\n padding: ${tokens.spacing.md};\n background: ${tokens.colors.background.dark};\n border-radius: ${tokens.borderRadius.xl};\n border: 1px solid ${tokens.colors.border.default};\n cursor: pointer;\n text-align: left;\n width: 100%;\n font-family: ${tokens.typography.fontFamily.primary};\n transition: border-color ${tokens.transitions.fast}, background-color ${tokens.transitions.fast};\n\n &:hover:not(:disabled) {\n border-color: ${tokens.colors.border.hover};\n background: ${tokens.colors.background.light};\n }\n\n &:active:not(:disabled) {\n background: ${tokens.colors.surface.overlayActive};\n }\n\n &:focus-visible {\n outline: 2px solid ${tokens.colors.border.focus};\n outline-offset: 2px;\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n`;\n\nconst WorkflowName = styled.h3`\n margin: 0;\n font-size: ${tokens.typography.fontSize.base};\n font-weight: ${tokens.typography.fontWeight.semibold};\n color: ${tokens.colors.text.primary};\n line-height: ${tokens.typography.lineHeight.tight};\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n`;\n\nconst Description = styled.p`\n margin: 0;\n font-size: ${tokens.typography.fontSize.sm};\n color: ${tokens.colors.text.tertiary};\n line-height: ${tokens.typography.lineHeight.normal};\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n word-break: break-word;\n min-width: 0;\n`;\n\nconst CardFooter = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ${tokens.spacing.sm};\n padding-top: ${tokens.spacing.sm};\n border-top: 1px solid ${tokens.colors.border.subtle};\n width: 100%;\n`;\n\nconst IntegrationList = styled.div`\n display: flex;\n align-items: center;\n gap: ${tokens.spacing.xs};\n flex-shrink: 0;\n`;\n\ninterface IntegrationIconWrapperProps {\n $connected: boolean;\n $optional?: boolean;\n}\n\nconst IntegrationIconWrapper = styled.span<IntegrationIconWrapperProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: ${tokens.borderRadius.sm};\n background: ${tokens.colors.background.light};\n opacity: ${({ $connected, $optional }) => ($connected ? 1 : $optional ? 0.3 : 0.4)};\n position: relative;\n flex-shrink: 0;\n\n ${({ $connected, $optional }) =>\n !$connected &&\n `\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n border: 1px dashed ${$optional ? tokens.colors.border.default : tokens.colors.warning};\n border-radius: ${tokens.borderRadius.sm};\n }\n `}\n`;\n\nconst IntegrationIcon = styled.img`\n width: 16px;\n height: 16px;\n object-fit: contain;\n`;\n\nconst Indicators = styled.div`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: ${tokens.spacing.xs};\n margin-left: auto;\n min-width: 0;\n`;\n\ninterface IndicatorVariantProps {\n $variant: 'warning' | 'info';\n}\n\nconst IndicatorPill = styled.span<IndicatorVariantProps>`\n display: inline-flex;\n align-items: center;\n gap: ${tokens.spacing.xs};\n padding: ${tokens.spacing.xs} ${tokens.spacing.sm};\n border-radius: ${tokens.borderRadius.full};\n background: ${({ $variant }) =>\n $variant === 'warning' ? `${tokens.colors.warning}15` : `${tokens.colors.info}15`};\n border: 1px solid ${({ $variant }) =>\n $variant === 'warning' ? `${tokens.colors.warning}30` : `${tokens.colors.info}30`};\n`;\n\nconst IndicatorDot = styled.span<IndicatorVariantProps>`\n width: 6px;\n height: 6px;\n border-radius: ${tokens.borderRadius.full};\n background: ${({ $variant }) =>\n $variant === 'warning' ? tokens.colors.warning : tokens.colors.info};\n flex-shrink: 0;\n`;\n\nconst IndicatorText = styled.span`\n font-size: ${tokens.typography.fontSize.xs};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.secondary};\n white-space: nowrap;\n`;\n\nexport default WorkflowCard;\n","/**\n * WorkflowErrorAlert Component\n *\n * Displays workflow execution errors with inline, banner, or modal variants.\n *\n * @see specs/015-restyle-ai-chat/spec.md\n */\n\nimport type React from 'react';\nimport { useState } from 'react';\nimport styled from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\n// Severity color mapping using design tokens\nconst severityColors = {\n error: tokens.colors.error,\n warning: tokens.colors.warning,\n info: tokens.colors.info,\n};\n\ninterface AlertContainerProps {\n variant: 'inline' | 'banner' | 'modal';\n severity: 'error' | 'warning' | 'info';\n}\n\nconst AlertContainer = styled.div<AlertContainerProps>`\n display: flex;\n flex-direction: column;\n background-color: ${(props) => {\n const alpha = props.variant === 'modal' ? '26' : props.variant === 'banner' ? '1a' : '0d';\n return `${severityColors[props.severity]}${alpha}`;\n }};\n border: 1px solid ${(props) => {\n const alpha = props.variant === 'modal' ? '66' : '4d';\n return `${severityColors[props.severity]}${alpha}`;\n }};\n border-radius: ${(props) => (props.variant === 'banner' ? '0' : tokens.borderRadius.md)};\n padding: ${(props) => (props.variant === 'modal' ? tokens.spacing.lg : tokens.spacing.md)};\n margin: ${(props) => (props.variant === 'banner' ? '0' : `${tokens.spacing.sm} 0`)};\n width: ${(props) => (props.variant === 'modal' ? 'auto' : '100%')};\n max-width: ${(props) => (props.variant === 'inline' ? '600px' : '100%')};\n font-family: ${tokens.typography.fontFamily.primary};\n`;\n\nconst ModalOverlay = styled.div<{ isOpen: boolean }>`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${tokens.colors.overlay};\n display: ${(props) => (props.isOpen ? 'flex' : 'none')};\n align-items: center;\n justify-content: center;\n z-index: ${tokens.zIndex.modal};\n padding: ${tokens.spacing.lg};\n`;\n\nconst ModalContent = styled.div`\n background-color: ${tokens.colors.background.dark};\n border-radius: ${tokens.borderRadius.lg};\n max-width: 500px;\n width: 100%;\n box-shadow: ${tokens.shadows.xl};\n`;\n\nconst Header = styled.div`\n display: flex;\n align-items: flex-start;\n gap: ${tokens.spacing.md};\n`;\n\nconst IconContainer = styled.div<{ severity: 'error' | 'warning' | 'info' }>`\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n color: ${(props) => severityColors[props.severity]};\n`;\n\nconst Content = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ${tokens.spacing.sm};\n`;\n\nconst Title = styled.div`\n font-size: ${tokens.typography.fontSize.base};\n font-weight: ${tokens.typography.fontWeight.semibold};\n color: ${tokens.colors.text.primary};\n line-height: ${tokens.typography.lineHeight.tight};\n`;\n\nconst ErrorMessage = styled.div`\n font-size: ${tokens.typography.fontSize.sm};\n line-height: ${tokens.typography.lineHeight.normal};\n color: ${tokens.colors.text.secondary};\n`;\n\nconst ErrorCode = styled.div`\n font-size: ${tokens.typography.fontSize.xs};\n color: ${tokens.colors.text.secondary};\n font-family: ${tokens.typography.fontFamily.monospace};\n margin-top: ${tokens.spacing.xs};\n`;\n\nconst Timestamp = styled.div`\n font-size: ${tokens.typography.fontSize.xs};\n color: ${tokens.colors.text.tertiary};\n margin-top: ${tokens.spacing.xs};\n`;\n\nconst Details = styled.details`\n margin-top: ${tokens.spacing.md};\n cursor: pointer;\n\n summary {\n font-size: ${tokens.typography.fontSize.sm};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.secondary};\n user-select: none;\n list-style: none;\n display: flex;\n align-items: center;\n gap: ${tokens.spacing.xs};\n\n &:hover {\n color: ${tokens.colors.text.primary};\n }\n\n &::-webkit-details-marker {\n display: none;\n }\n }\n`;\n\nconst DetailsIcon = styled.span<{ open: boolean }>`\n display: inline-block;\n transition: transform ${tokens.transitions.fast};\n transform: ${(props) => (props.open ? 'rotate(90deg)' : 'rotate(0deg)')};\n`;\n\nconst StackTrace = styled.pre`\n margin: ${tokens.spacing.sm} 0 0 0;\n padding: ${tokens.spacing.md};\n background-color: ${tokens.colors.surface.subtle};\n border-radius: ${tokens.borderRadius.sm};\n font-family: ${tokens.typography.fontFamily.monospace};\n font-size: ${tokens.typography.fontSize.xs};\n line-height: ${tokens.typography.lineHeight.normal};\n color: ${tokens.colors.text.secondary};\n white-space: pre-wrap;\n word-break: break-word;\n overflow-x: auto;\n`;\n\nconst Actions = styled.div`\n display: flex;\n gap: ${tokens.spacing.sm};\n margin-top: ${tokens.spacing.md};\n`;\n\nconst Button = styled.button<{ variant: 'primary' | 'secondary' }>`\n display: inline-flex;\n align-items: center;\n gap: ${tokens.spacing.xs};\n padding: ${tokens.spacing.sm} ${tokens.spacing.md};\n font-size: ${tokens.typography.fontSize.sm};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${(props) => (props.variant === 'primary' ? tokens.colors.text.primary : tokens.colors.text.secondary)};\n background: ${(props) => (props.variant === 'primary' ? tokens.colors.error : tokens.colors.surface.overlay)};\n border: 1px solid\n ${(props) => (props.variant === 'primary' ? tokens.colors.error : tokens.colors.border.default)};\n border-radius: ${tokens.borderRadius.md};\n cursor: pointer;\n transition: all ${tokens.transitions.fast};\n\n &:hover {\n background: ${(props) =>\n props.variant === 'primary' ? tokens.colors.error : tokens.colors.surface.overlayHover};\n border-color: ${(props) =>\n props.variant === 'primary' ? tokens.colors.error : tokens.colors.border.hover};\n }\n\n &:active {\n transform: scale(0.98);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n\nconst CloseButton = styled.button`\n position: absolute;\n top: ${tokens.spacing.md};\n right: ${tokens.spacing.md};\n width: 32px;\n height: 32px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n color: ${tokens.colors.text.secondary};\n cursor: pointer;\n border-radius: ${tokens.borderRadius.sm};\n transition: all ${tokens.transitions.fast};\n\n &:hover {\n background: ${tokens.colors.surface.overlayHover};\n color: ${tokens.colors.text.primary};\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n svg {\n width: 20px;\n height: 20px;\n }\n`;\n\n// Icons\nconst ErrorIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"24\"\n height=\"24\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" />\n </svg>\n);\n\nconst WarningIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"24\"\n height=\"24\"\n >\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\n </svg>\n);\n\nconst InfoIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"24\"\n height=\"24\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\" />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </svg>\n);\n\nconst ChevronIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n </svg>\n);\n\nexport interface WorkflowErrorAlertProps {\n /** Error object or message */\n error: Error | string;\n /** Optional error code */\n errorCode?: string;\n /** Timestamp of the error */\n timestamp?: string;\n /** Visual variant */\n variant?: 'inline' | 'banner' | 'modal';\n /** Severity level */\n severity?: 'error' | 'warning' | 'info';\n /** Whether the error can be retried */\n retryable?: boolean;\n /** Callback when retry is clicked */\n onRetry?: () => void;\n /** Callback when dismiss is clicked */\n onDismiss?: () => void;\n /** Whether to show details section */\n showDetails?: boolean;\n /** Stack trace to display */\n stackTrace?: string;\n /** Custom title */\n title?: string;\n /** Custom className */\n className?: string;\n}\n\n/**\n * WorkflowErrorAlert component for displaying workflow errors\n *\n * Features:\n * - Inline, banner, and modal variants\n * - Severity levels (error/warning/info)\n * - Error code and timestamp display\n * - Expandable stack trace\n * - Retry and dismiss actions\n * - Accessible error reporting\n */\nexport const WorkflowErrorAlert: React.FC<WorkflowErrorAlertProps> = ({\n error,\n errorCode,\n timestamp,\n variant = 'inline',\n severity = 'error',\n retryable = false,\n onRetry,\n onDismiss,\n showDetails = false,\n stackTrace,\n title,\n className,\n}) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [isModalOpen, setIsModalOpen] = useState(variant === 'modal');\n\n const errorMessage = typeof error === 'string' ? error : error.message;\n const defaultTitle =\n severity === 'error' ? 'Workflow Error' : severity === 'warning' ? 'Warning' : 'Information';\n const displayTitle = title || defaultTitle;\n\n const handleDismiss = () => {\n if (variant === 'modal') {\n setIsModalOpen(false);\n }\n onDismiss?.();\n };\n\n const getIcon = () => {\n switch (severity) {\n case 'error':\n return <ErrorIcon />;\n case 'warning':\n return <WarningIcon />;\n case 'info':\n return <InfoIcon />;\n }\n };\n\n const alertContent = (\n <AlertContainer\n variant={variant}\n severity={severity}\n className={className}\n data-testid=\"error-alert\"\n role=\"alert\"\n >\n <Header>\n <IconContainer severity={severity} aria-hidden=\"true\">\n {getIcon()}\n </IconContainer>\n <Content>\n <Title>{displayTitle}</Title>\n <ErrorMessage>{errorMessage}</ErrorMessage>\n {errorCode && <ErrorCode>Error Code: {errorCode}</ErrorCode>}\n {timestamp && <Timestamp>{new Date(timestamp).toLocaleString()}</Timestamp>}\n\n {showDetails && (stackTrace || (typeof error === 'object' && error.stack)) && (\n <Details\n open={detailsOpen}\n onToggle={(e) => setDetailsOpen((e.target as HTMLDetailsElement).open)}\n >\n <summary>\n <DetailsIcon open={detailsOpen}>\n <ChevronIcon />\n </DetailsIcon>\n Show Details\n </summary>\n <StackTrace>\n {stackTrace || (typeof error === 'object' ? error.stack : '')}\n </StackTrace>\n </Details>\n )}\n\n {(retryable || onDismiss) && (\n <Actions>\n {retryable && onRetry && (\n <Button variant=\"primary\" onClick={onRetry}>\n Retry\n </Button>\n )}\n {onDismiss && (\n <Button variant=\"secondary\" onClick={handleDismiss}>\n Dismiss\n </Button>\n )}\n </Actions>\n )}\n </Content>\n {variant !== 'modal' && onDismiss && (\n <CloseButton onClick={handleDismiss} aria-label=\"Dismiss alert\">\n <CloseIcon />\n </CloseButton>\n )}\n </Header>\n </AlertContainer>\n );\n\n if (variant === 'modal') {\n return (\n <ModalOverlay isOpen={isModalOpen} onClick={handleDismiss}>\n <ModalContent onClick={(e) => e.stopPropagation()}>\n {alertContent}\n <CloseButton onClick={handleDismiss} aria-label=\"Close modal\">\n <CloseIcon />\n </CloseButton>\n </ModalContent>\n </ModalOverlay>\n );\n }\n\n return alertContent;\n};\n\nWorkflowErrorAlert.displayName = 'WorkflowErrorAlert';\n","/**\n * WorkflowProgressBar Component\n *\n * Displays workflow execution progress with linear or circular variants.\n *\n * @see specs/015-restyle-ai-chat/spec.md\n */\n\nimport type React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\nconst indeterminate = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(400%);\n }\n`;\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\n// Status color mapping using design tokens\nconst statusColors = {\n pending: tokens.colors.status.pending,\n running: tokens.colors.status.running,\n completed: tokens.colors.status.completed,\n failed: tokens.colors.status.failed,\n timeout: tokens.colors.status.timeout,\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${tokens.spacing.sm};\n width: 100%;\n font-family: ${tokens.typography.fontFamily.primary};\n`;\n\nconst ProgressMessage = styled.div<{ size: 'sm' | 'md' | 'lg' }>`\n font-size: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.typography.fontSize.xs;\n case 'lg':\n return tokens.typography.fontSize.base;\n case 'md':\n default:\n return tokens.typography.fontSize.sm;\n }\n }};\n color: ${tokens.colors.text.secondary};\n line-height: ${tokens.typography.lineHeight.normal};\n`;\n\nconst ProgressInfo = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: ${tokens.spacing.xs};\n`;\n\nconst PercentageText = styled.span<{ size: 'sm' | 'md' | 'lg' }>`\n font-size: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.typography.fontSize.xs;\n case 'lg':\n return tokens.typography.fontSize.base;\n case 'md':\n default:\n return tokens.typography.fontSize.sm;\n }\n }};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.primary};\n`;\n\n// Linear Progress Bar\nconst LinearTrack = styled.div<{ size: 'sm' | 'md' | 'lg' }>`\n position: relative;\n width: 100%;\n height: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.spacing.xs;\n case 'lg':\n return tokens.spacing.sm;\n case 'md':\n default:\n return '6px';\n }\n }};\n background-color: ${tokens.colors.border.default};\n border-radius: ${tokens.borderRadius.full};\n overflow: hidden;\n`;\n\ninterface LinearFillProps {\n progress: number;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n animated: boolean;\n indeterminate: boolean;\n}\n\nconst LinearFill = styled.div<LinearFillProps>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: ${(props) => (props.indeterminate ? '25%' : `${props.progress}%`)};\n background-color: ${(props) => statusColors[props.status]};\n border-radius: ${tokens.borderRadius.full};\n transition: ${(props) => (props.animated && !props.indeterminate ? `width ${tokens.transitions.normal}` : 'none')};\n animation: ${(props) => (props.indeterminate ? indeterminate : 'none')} 1.5s ease-in-out infinite;\n`;\n\n// Circular Progress Bar\nconst CircularContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst CircularSvg = styled.svg<{ size: 'sm' | 'md' | 'lg' }>`\n width: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.spacing.xl;\n case 'lg':\n return '80px';\n case 'md':\n default:\n return '60px';\n }\n }};\n height: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.spacing.xl;\n case 'lg':\n return '80px';\n case 'md':\n default:\n return '60px';\n }\n }};\n transform: rotate(-90deg);\n`;\n\ninterface CircularTrackProps {\n size: 'sm' | 'md' | 'lg';\n}\n\nconst getCircularSize = (size: 'sm' | 'md' | 'lg') => {\n switch (size) {\n case 'sm':\n return { radius: 16, strokeWidth: 3 };\n case 'lg':\n return { radius: 36, strokeWidth: 6 };\n case 'md':\n default:\n return { radius: 26, strokeWidth: 4 };\n }\n};\n\nconst CircularTrack = styled.circle<CircularTrackProps>`\n fill: none;\n stroke: ${tokens.colors.border.default};\n stroke-width: ${(props) => getCircularSize(props.size).strokeWidth};\n`;\n\ninterface CircularFillProps {\n progress: number;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n size: 'sm' | 'md' | 'lg';\n animated: boolean;\n indeterminate: boolean;\n}\n\nconst CircularFill = styled.circle<CircularFillProps>`\n fill: none;\n stroke: ${(props) => statusColors[props.status]};\n stroke-width: ${(props) => getCircularSize(props.size).strokeWidth};\n stroke-dasharray: ${(props) => {\n const { radius } = getCircularSize(props.size);\n const circumference = 2 * Math.PI * radius;\n return props.indeterminate ? `${circumference * 0.25} ${circumference}` : circumference;\n }};\n stroke-dashoffset: ${(props) => {\n const { radius } = getCircularSize(props.size);\n const circumference = 2 * Math.PI * radius;\n return props.indeterminate ? 0 : circumference * (1 - props.progress / 100);\n }};\n stroke-linecap: round;\n transition: ${(props) => (props.animated && !props.indeterminate ? `stroke-dashoffset ${tokens.transitions.normal}` : 'none')};\n animation: ${(props) => (props.indeterminate ? rotate : 'none')} 1.5s linear infinite;\n`;\n\nconst CircularPercentage = styled.text<{ size: 'sm' | 'md' | 'lg' }>`\n fill: ${tokens.colors.text.primary};\n font-size: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.typography.fontSize.xs;\n case 'lg':\n return tokens.typography.fontSize.base;\n case 'md':\n default:\n return tokens.typography.fontSize.xs;\n }\n }};\n font-weight: ${tokens.typography.fontWeight.semibold};\n text-anchor: middle;\n dominant-baseline: middle;\n transform: rotate(90deg);\n transform-origin: center;\n`;\n\nexport interface WorkflowProgressBarProps {\n /** Progress percentage (0-100), or undefined for indeterminate */\n progress?: number;\n /** Optional message to display */\n message?: string;\n /** Status affects the color */\n status?: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n /** Visual variant */\n variant?: 'linear' | 'circular';\n /** Size of the progress bar */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show percentage text */\n showPercentage?: boolean;\n /** Whether to animate progress changes */\n animated?: boolean;\n /** Custom className */\n className?: string;\n}\n\n/**\n * WorkflowProgressBar component for showing workflow execution progress\n *\n * Features:\n * - Linear and circular variants\n * - Determinate and indeterminate modes\n * - Color-coded status (gray/blue/green/red/orange)\n * - Size options (sm/md/lg)\n * - Optional percentage display\n * - Smooth animations\n * - Progress message support\n */\nexport const WorkflowProgressBar: React.FC<WorkflowProgressBarProps> = ({\n progress,\n message,\n status = 'running',\n variant = 'linear',\n size = 'md',\n showPercentage = true,\n animated = true,\n className,\n}) => {\n const isIndeterminate = progress === undefined;\n const progressValue = progress ?? 0;\n\n if (variant === 'circular') {\n const { radius } = getCircularSize(size);\n const center = radius + getCircularSize(size).strokeWidth;\n\n return (\n <Container className={className}>\n {message && <ProgressMessage size={size}>{message}</ProgressMessage>}\n <CircularContainer>\n <CircularSvg\n size={size}\n viewBox={`0 0 ${center * 2} ${center * 2}`}\n role=\"progressbar\"\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={message || `${progressValue}% complete`}\n >\n <CircularTrack size={size} cx={center} cy={center} r={radius} />\n <CircularFill\n progress={progressValue}\n status={status}\n size={size}\n animated={animated}\n indeterminate={isIndeterminate}\n cx={center}\n cy={center}\n r={radius}\n />\n {showPercentage && !isIndeterminate && (\n <CircularPercentage size={size} x={center} y={center}>\n {Math.round(progressValue)}%\n </CircularPercentage>\n )}\n </CircularSvg>\n </CircularContainer>\n </Container>\n );\n }\n\n return (\n <Container className={className}>\n {(message || showPercentage) && (\n <ProgressInfo>\n {message && <ProgressMessage size={size}>{message}</ProgressMessage>}\n {showPercentage && !isIndeterminate && (\n <PercentageText size={size}>{Math.round(progressValue)}%</PercentageText>\n )}\n </ProgressInfo>\n )}\n <LinearTrack\n size={size}\n role=\"progressbar\"\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={message || `${progressValue}% complete`}\n >\n <LinearFill\n progress={progressValue}\n status={status}\n animated={animated}\n indeterminate={isIndeterminate}\n />\n </LinearTrack>\n </Container>\n );\n};\n\nWorkflowProgressBar.displayName = 'WorkflowProgressBar';\n","/**\n * WorkflowResultPanel Component\n *\n * Displays workflow execution results with JSON/formatted/table views.\n *\n * @see specs/015-restyle-ai-chat/spec.md\n */\n\nimport type React from 'react';\nimport { useState } from 'react';\nimport styled from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\nconst Panel = styled.div<{ collapsible: boolean; expanded: boolean }>`\n display: flex;\n flex-direction: column;\n background-color: ${tokens.colors.surface.overlay};\n border: 1px solid ${tokens.colors.border.default};\n border-radius: ${tokens.borderRadius.md};\n overflow: hidden;\n font-family: ${tokens.typography.fontFamily.primary};\n`;\n\nconst Header = styled.div<{ collapsible: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: ${tokens.spacing.sm} ${tokens.spacing.md};\n background-color: ${tokens.colors.surface.subtle};\n border-bottom: 1px solid ${tokens.colors.border.default};\n cursor: ${(props) => (props.collapsible ? 'pointer' : 'default')};\n user-select: none;\n\n &:hover {\n background-color: ${(props) => (props.collapsible ? tokens.colors.surface.overlay : tokens.colors.surface.subtle)};\n }\n`;\n\nconst Title = styled.div`\n font-size: ${tokens.typography.fontSize.sm};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.primary};\n display: flex;\n align-items: center;\n gap: ${tokens.spacing.sm};\n`;\n\nconst Actions = styled.div`\n display: flex;\n gap: ${tokens.spacing.sm};\n`;\n\nconst IconButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n background: ${tokens.colors.surface.overlay};\n border: 1px solid ${tokens.colors.border.default};\n border-radius: ${tokens.borderRadius.sm};\n color: ${tokens.colors.text.secondary};\n cursor: pointer;\n transition: all ${tokens.transitions.fast};\n\n &:hover {\n background: ${tokens.colors.surface.overlayHover};\n border-color: ${tokens.colors.border.hover};\n color: ${tokens.colors.text.primary};\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n svg {\n width: 16px;\n height: 16px;\n }\n`;\n\nconst CollapseIcon = styled.div<{ expanded: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform ${tokens.transitions.fast};\n transform: ${(props) => (props.expanded ? 'rotate(180deg)' : 'rotate(0deg)')};\n color: ${tokens.colors.text.secondary};\n\n svg {\n width: 16px;\n height: 16px;\n }\n`;\n\nconst Content = styled.div<{ maxHeight?: string; expanded: boolean }>`\n padding: ${tokens.spacing.md};\n max-height: ${(props) => {\n if (!props.expanded) return '0';\n return props.maxHeight || '400px';\n }};\n overflow: ${(props) => (props.expanded ? 'auto' : 'hidden')};\n transition: max-height ${tokens.transitions.normal};\n\n /* Custom scrollbar */\n &::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-track {\n background: ${tokens.colors.scrollbar.track};\n border-radius: ${tokens.borderRadius.sm};\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${tokens.colors.scrollbar.thumb};\n border-radius: ${tokens.borderRadius.sm};\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: ${tokens.colors.scrollbar.thumbHover};\n }\n`;\n\nconst JsonView = styled.pre`\n margin: 0;\n font-family: ${tokens.typography.fontFamily.monospace};\n font-size: ${tokens.typography.fontSize.sm};\n line-height: ${tokens.typography.lineHeight.normal};\n color: ${tokens.colors.text.secondary};\n white-space: pre-wrap;\n word-break: break-word;\n`;\n\nconst FormattedView = styled.div`\n font-size: ${tokens.typography.fontSize.sm};\n line-height: ${tokens.typography.lineHeight.normal};\n color: ${tokens.colors.text.secondary};\n`;\n\nconst TableView = styled.table`\n width: 100%;\n border-collapse: collapse;\n font-size: ${tokens.typography.fontSize.sm};\n\n th {\n text-align: left;\n padding: ${tokens.spacing.sm} ${tokens.spacing.sm};\n background-color: ${tokens.colors.surface.overlay};\n border-bottom: 1px solid ${tokens.colors.border.default};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.primary};\n }\n\n td {\n padding: ${tokens.spacing.sm} ${tokens.spacing.sm};\n border-bottom: 1px solid ${tokens.colors.border.subtle};\n color: ${tokens.colors.text.secondary};\n }\n\n tr:last-child td {\n border-bottom: none;\n }\n`;\n\nconst EmptyState = styled.div`\n padding: ${tokens.spacing.xl};\n text-align: center;\n color: ${tokens.colors.text.tertiary};\n font-size: ${tokens.typography.fontSize.sm};\n`;\n\n// Icons\nconst DownloadIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\" />\n </svg>\n);\n\nconst CopyIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </svg>\n);\n\nconst ChevronIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </svg>\n);\n\nexport interface WorkflowResultPanelProps {\n /** Output data to display */\n outputData: unknown;\n /** Visual variant */\n variant?: 'json' | 'formatted' | 'table';\n /** Whether the panel can be collapsed */\n collapsible?: boolean;\n /** Default expanded state */\n defaultExpanded?: boolean;\n /** Maximum height of content area */\n maxHeight?: string;\n /** Callback when download is clicked */\n onDownload?: () => void;\n /** Callback when copy is clicked */\n onCopy?: () => void;\n /** Custom title */\n title?: string;\n /** Custom className */\n className?: string;\n}\n\n/**\n * WorkflowResultPanel component for displaying workflow results\n *\n * Features:\n * - JSON, formatted, and table view variants\n * - Collapsible content\n * - Download and copy actions\n * - Maximum height with scrolling\n * - Empty state handling\n * - Syntax highlighting for JSON\n */\nexport const WorkflowResultPanel: React.FC<WorkflowResultPanelProps> = ({\n outputData,\n variant = 'json',\n collapsible = true,\n defaultExpanded = true,\n maxHeight,\n onDownload,\n onCopy,\n title = 'Result',\n className,\n}) => {\n const [expanded, setExpanded] = useState(defaultExpanded);\n\n const handleToggle = () => {\n if (collapsible) {\n setExpanded(!expanded);\n }\n };\n\n const renderContent = () => {\n if (!outputData) {\n return <EmptyState>No results available</EmptyState>;\n }\n\n switch (variant) {\n case 'json':\n return <JsonView>{JSON.stringify(outputData, null, 2)}</JsonView>;\n\n case 'formatted':\n if (typeof outputData === 'object') {\n return (\n <FormattedView>\n {Object.entries(outputData as Record<string, unknown>).map(([key, value]) => (\n <div key={key}>\n <strong>{key}:</strong> {String(value)}\n </div>\n ))}\n </FormattedView>\n );\n }\n return <FormattedView>{String(outputData)}</FormattedView>;\n\n case 'table':\n if (Array.isArray(outputData) && outputData.length > 0) {\n const keys = Object.keys(outputData[0] as Record<string, unknown>);\n return (\n <TableView>\n <thead>\n <tr>\n {keys.map((key) => (\n <th key={key}>{key}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {outputData.map((row, idx) => (\n <tr key={idx}>\n {keys.map((key) => (\n <td key={key}>{String((row as Record<string, unknown>)[key])}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </TableView>\n );\n }\n return <EmptyState>Data is not in table format</EmptyState>;\n\n default:\n return <EmptyState>Unsupported variant</EmptyState>;\n }\n };\n\n return (\n <Panel\n collapsible={collapsible}\n expanded={expanded}\n className={className}\n data-testid=\"result-panel\"\n >\n <Header collapsible={collapsible} onClick={handleToggle}>\n <Title>\n {title}\n {collapsible && (\n <CollapseIcon expanded={expanded}>\n <ChevronIcon />\n </CollapseIcon>\n )}\n </Title>\n <Actions onClick={(e) => e.stopPropagation()}>\n {onCopy && (\n <IconButton onClick={onCopy} title=\"Copy to clipboard\" aria-label=\"Copy to clipboard\">\n <CopyIcon />\n </IconButton>\n )}\n {onDownload && (\n <IconButton onClick={onDownload} title=\"Download\" aria-label=\"Download results\">\n <DownloadIcon />\n </IconButton>\n )}\n </Actions>\n </Header>\n <Content maxHeight={maxHeight} expanded={expanded}>\n {renderContent()}\n </Content>\n </Panel>\n );\n};\n\nWorkflowResultPanel.displayName = 'WorkflowResultPanel';\n","/**\n * WorkflowStatusBadge Component\n *\n * Displays workflow execution status with color coding.\n *\n * @see specs/015-restyle-ai-chat/spec.md\n */\n\nimport type React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\nconst spin = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nconst pulse = keyframes`\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n`;\n\n// Status color mapping using design tokens\nconst statusColors = {\n pending: tokens.colors.status.pending,\n running: tokens.colors.status.running,\n completed: tokens.colors.status.completed,\n failed: tokens.colors.status.failed,\n timeout: tokens.colors.status.timeout,\n};\n\ninterface BadgeContainerProps {\n $status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n $size: 'sm' | 'md' | 'lg';\n}\n\nconst BadgeContainer = styled.div<BadgeContainerProps>`\n display: inline-flex;\n align-items: center;\n gap: ${(props) => {\n switch (props.$size) {\n case 'sm':\n return tokens.spacing.xs;\n case 'lg':\n return tokens.spacing.sm;\n case 'md':\n default:\n return '6px';\n }\n }};\n padding: ${(props) => {\n switch (props.$size) {\n case 'sm':\n return `${tokens.spacing.xs} ${tokens.spacing.sm}`;\n case 'lg':\n return `${tokens.spacing.sm} ${tokens.spacing.md}`;\n case 'md':\n default:\n return `6px ${tokens.spacing.md}`;\n }\n }};\n background-color: ${(props) => `${statusColors[props.$status]}1A`};\n border: 1px solid ${(props) => `${statusColors[props.$status]}4D`};\n border-radius: ${(props) => {\n switch (props.$size) {\n case 'sm':\n return tokens.borderRadius.sm;\n case 'lg':\n return tokens.borderRadius.md;\n case 'md':\n default:\n return tokens.borderRadius.md;\n }\n }};\n font-family: ${tokens.typography.fontFamily.primary};\n font-size: ${(props) => {\n switch (props.$size) {\n case 'sm':\n return '11px';\n case 'lg':\n return '15px';\n case 'md':\n default:\n return '13px';\n }\n }};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${(props) => statusColors[props.$status]};\n line-height: 1.4;\n`;\n\ninterface IconContainerProps {\n $animated?: boolean;\n $status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n}\n\nconst IconContainer = styled.div<IconContainerProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n animation: ${(props) => {\n if (props.$animated) {\n if (props.$status === 'running') return spin;\n if (props.$status === 'pending') return pulse;\n }\n return 'none';\n }}\n ${(props) => (props.$status === 'running' ? '1s' : '2s')} linear infinite;\n`;\n\n// Status icons\nconst PendingIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\" />\n </svg>\n);\n\nconst RunningIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n opacity=\"0.3\"\n />\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </svg>\n);\n\nconst CompletedIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" />\n </svg>\n);\n\nconst FailedIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\" />\n </svg>\n);\n\nconst TimeoutIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\n </svg>\n);\n\nconst Label = styled.span`\n white-space: nowrap;\n`;\n\nexport interface WorkflowStatusBadgeProps {\n /** Workflow execution status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n /** Size of the badge */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show status icon */\n showIcon?: boolean;\n /** Whether to show status label */\n showLabel?: boolean;\n /** Whether to animate the icon */\n animated?: boolean;\n /** Custom status label text */\n label?: string;\n /** Custom className */\n className?: string;\n}\n\nconst getDefaultLabel = (status: WorkflowStatusBadgeProps['status']): string => {\n switch (status) {\n case 'pending':\n return 'Pending';\n case 'running':\n return 'Running';\n case 'completed':\n return 'Completed';\n case 'failed':\n return 'Failed';\n case 'timeout':\n return 'Timeout';\n }\n};\n\nconst getStatusIcon = (status: WorkflowStatusBadgeProps['status']): React.ReactNode => {\n switch (status) {\n case 'pending':\n return <PendingIcon />;\n case 'running':\n return <RunningIcon />;\n case 'completed':\n return <CompletedIcon />;\n case 'failed':\n return <FailedIcon />;\n case 'timeout':\n return <TimeoutIcon />;\n }\n};\n\n/**\n * WorkflowStatusBadge component for showing workflow execution status\n *\n * Features:\n * - Color-coded status badges (gray/blue/green/red/orange)\n * - Status icons with optional animations\n * - Size options (sm/md/lg)\n * - Optional status labels\n * - Spinning animation for running state\n * - Pulse animation for pending state\n */\nexport const WorkflowStatusBadge: React.FC<WorkflowStatusBadgeProps> = ({\n status,\n size = 'md',\n showIcon = true,\n showLabel = true,\n animated = true,\n label,\n className,\n}) => {\n const displayLabel = label || getDefaultLabel(status);\n\n return (\n <BadgeContainer\n $status={status}\n $size={size}\n className={className}\n data-testid=\"execution-status-badge\"\n role=\"status\"\n aria-label={displayLabel}\n >\n {showIcon && (\n <IconContainer $animated={animated} $status={status} aria-hidden=\"true\">\n {getStatusIcon(status)}\n </IconContainer>\n )}\n {showLabel && <Label>{displayLabel}</Label>}\n </BadgeContainer>\n );\n};\n\nWorkflowStatusBadge.displayName = 'WorkflowStatusBadge';\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/theme/tokens.ts","../../src/components/workflow/WorkflowCard.tsx","../../src/components/workflow/WorkflowErrorAlert.tsx","../../src/components/workflow/WorkflowProgressBar.tsx","../../src/components/workflow/WorkflowResultPanel.tsx","../../src/components/workflow/WorkflowStatusBadge.tsx"],"names":["jsxs","jsx","styled","useState","keyframes","Header","Title","Actions","Content","ChevronIcon","statusColors","IconContainer"],"mappings":"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","file":"index.cjs","sourcesContent":["export const tokens = {\n colors: {\n primary: '#2CB0AB',\n secondary: '#264E68',\n accent: '#459FB9',\n seaGreen: '#4EB999',\n\n background: {\n darkest: '#0a1b2a',\n darker: '#151a26',\n dark: '#1b2230',\n light: '#252d3d',\n },\n\n text: {\n primary: '#FFFFFF',\n secondary: '#B4B8C5',\n tertiary: '#9CA3AF',\n disabled: '#4B5563',\n },\n\n success: '#2CB0AB',\n error: '#EF4444',\n warning: '#F59E0B',\n info: '#459FB9',\n\n status: {\n pending: '#6B7280',\n editing: '#3B82F6',\n idle: '#6B7280',\n running: '#459FB9',\n completed: '#2CB0AB',\n failed: '#EF4444',\n timeout: '#F59E0B',\n online: '#2CB0AB',\n offline: '#EF4444',\n busy: '#459FB9',\n },\n\n connection: {\n connected: '#2CB0AB',\n streaming: '#459FB9',\n disconnected: '#EF4444',\n reconnecting: '#F59E0B',\n },\n\n surface: {\n base: '#1b2230',\n elevated: '#252d3d',\n overlay: 'rgba(255, 255, 255, 0.05)',\n overlayHover: 'rgba(255, 255, 255, 0.1)',\n overlayActive: 'rgba(255, 255, 255, 0.15)',\n subtle: 'rgba(255, 255, 255, 0.02)',\n glass: 'rgba(255, 255, 255, 0.26)',\n glassBorder: 'rgba(255, 255, 255, 0.3)',\n },\n\n border: {\n default: 'rgba(255, 255, 255, 0.1)',\n subtle: 'rgba(255, 255, 255, 0.05)',\n hover: 'rgba(255, 255, 255, 0.2)',\n focus: '#2CB0AB',\n error: '#EF4444',\n },\n\n category: {\n setup: '#459FB9',\n integration: '#8B5CF6',\n generation: '#2CB0AB',\n image: '#EC4899',\n scheduling: '#F59E0B',\n completion: '#4EB999',\n processing: '#459FB9',\n custom: '#6B7280',\n notion: '#6B7280',\n },\n\n scrollbar: {\n track: 'transparent',\n thumb: 'rgba(255, 255, 255, 0.2)',\n thumbHover: 'rgba(255, 255, 255, 0.3)',\n },\n\n message: {\n user: '#264E68',\n ai: '#1b2230',\n system: '#151a26',\n },\n\n overlay: 'rgba(0, 0, 0, 0.5)',\n backdrop: 'rgba(27, 34, 48, 0.95)',\n\n icon: {\n default: '#B4B8C5',\n muted: '#6B7280',\n active: '#2CB0AB',\n },\n\n platform: {\n facebook: '#1877F2',\n instagram: '#E4405F',\n linkedin: '#0A66C2',\n x: '#000000',\n twitter: '#1DA1F2',\n youtube: '#FF0000',\n reddit: '#FF4500',\n slack: '#4A154B',\n telegram: '#0088CC',\n whatsapp: '#25D366',\n gmail: '#EA4335',\n },\n },\n\n typography: {\n fontFamily: {\n primary:\n \"'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', sans-serif\",\n heading:\n \"'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', sans-serif\",\n monospace: \"'Roboto Mono', 'Monaco', 'Menlo', 'Ubuntu Mono', monospace\",\n },\n fontSize: {\n xs: '0.875rem',\n sm: '1rem',\n base: '1.125rem',\n lg: '1.125rem',\n xl: '1.25rem',\n '2xl': '1.5rem',\n '3xl': '1.875rem',\n '4xl': '2.25rem',\n },\n fontWeight: {\n light: 300,\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n },\n\n spacing: {\n xs: '0.25rem',\n sm: '0.5rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n '2xl': '3rem',\n '3xl': '4rem',\n },\n\n borderRadius: {\n none: '0',\n sm: '0.25rem',\n md: '0.5rem',\n lg: '0.75rem',\n xl: '1rem',\n '2xl': '1.5rem',\n full: '9999px',\n },\n\n shadows: {\n none: 'none',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n card: '0 4px 20px rgba(0, 0, 0, 0.3)',\n glow: {\n primary: '0 0 20px rgba(44, 176, 171, 0.3)',\n secondary: '0 0 20px rgba(38, 78, 104, 0.3)',\n accent: '0 0 20px rgba(69, 159, 185, 0.3)',\n },\n },\n\n transitions: {\n fast: '150ms ease-in-out',\n normal: '250ms ease-in-out',\n slow: '350ms ease-in-out',\n },\n\n animation: {\n duration: {\n micro: '150ms',\n short: '200ms',\n medium: '300ms',\n long: '500ms',\n },\n easing: {\n enter: 'cubic-bezier(0.4, 0, 0.2, 1)',\n exit: 'cubic-bezier(0.4, 0, 1, 1)',\n smooth: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n },\n overlay: {\n duration: '200ms',\n easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n typewriter: {\n speed: '50ms',\n },\n spinner: {\n duration: '1000ms',\n },\n pulse: {\n duration: '2000ms',\n },\n },\n\n zIndex: {\n base: 0,\n dropdown: 1000,\n sticky: 1020,\n fixed: 1030,\n overlay: 1100,\n modal: 1200,\n popover: 1300,\n tooltip: 1400,\n toast: 1500,\n },\n\n breakpoints: {\n mobile: 640,\n tablet: 1024,\n desktop: 1280,\n },\n} as const;\n\nexport type Tokens = typeof tokens;\n","/**\n * WorkflowCard Component\n *\n * A card for displaying available workflows in a list.\n * Used for browsing and activating workflows, showing\n * integrations and input requirements.\n */\n\nimport type React from 'react';\nimport styled from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface WorkflowIntegration {\n /** Icon URL or path */\n icon: string;\n /** Integration name for alt text */\n name: string;\n /** Whether this integration is connected */\n connected?: boolean;\n /** Whether this integration is optional (softer visual when not connected) */\n optional?: boolean;\n}\n\nexport interface WorkflowCardProps {\n /** Unique identifier for the workflow */\n id: string;\n /** Workflow name */\n name: string;\n /** Workflow description */\n description?: string;\n /** List of required integrations */\n integrations?: WorkflowIntegration[];\n /** Whether the workflow needs setup (not yet provisioned) */\n needsSetup?: boolean;\n /** Estimated cost per run (e.g., \"~$0.15\") */\n estimatedCostPerRun?: string;\n /** Click handler */\n onClick?: () => void;\n /** Whether the card is disabled */\n disabled?: boolean;\n /** Optional className for styling */\n className?: string;\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport const WorkflowCard: React.FC<WorkflowCardProps> = ({\n id,\n name,\n description,\n integrations = [],\n needsSetup = false,\n estimatedCostPerRun,\n onClick,\n disabled = false,\n className,\n}) => {\n const missingCount = integrations.filter((i) => i.connected === false && !i.optional).length;\n const hasFooter = integrations.length > 0 || needsSetup || !!estimatedCostPerRun;\n\n return (\n <Card\n data-testid={`workflow-card-${id}`}\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n className={className}\n type=\"button\"\n >\n <WorkflowName data-testid=\"workflow-card-name\">{name}</WorkflowName>\n\n {description && <Description>{description}</Description>}\n\n {hasFooter && (\n <CardFooter>\n <IntegrationList>\n {integrations.map((integration) => (\n <IntegrationIconWrapper\n key={integration.name}\n $connected={integration.connected !== false}\n $optional={!!integration.optional}\n title={`${integration.name}${integration.connected === false ? (integration.optional ? ' (optional)' : ' (not connected)') : ''}`}\n >\n <IntegrationIcon src={integration.icon} alt={integration.name} />\n </IntegrationIconWrapper>\n ))}\n </IntegrationList>\n\n <Indicators>\n {estimatedCostPerRun && (\n <IndicatorPill\n $variant=\"info\"\n title={`Estimated cost: ${estimatedCostPerRun}${estimatedCostPerRun.includes('/') ? '' : ' per run'}`}\n >\n <IndicatorText>\n {estimatedCostPerRun}\n {estimatedCostPerRun.includes('/') ? '' : '/run'}\n </IndicatorText>\n </IndicatorPill>\n )}\n {missingCount > 0 && (\n <IndicatorPill\n $variant=\"warning\"\n data-testid=\"workflow-card-status\"\n title={`${missingCount} integration${missingCount > 1 ? 's' : ''} not connected`}\n >\n <IndicatorDot $variant=\"warning\" />\n <IndicatorText>{missingCount} missing</IndicatorText>\n </IndicatorPill>\n )}\n {needsSetup && (\n <IndicatorPill\n $variant=\"warning\"\n data-testid=\"workflow-card-needs-setup\"\n title=\"Setup required before use\"\n >\n <IndicatorDot $variant=\"warning\" />\n <IndicatorText>Needs Setup</IndicatorText>\n </IndicatorPill>\n )}\n </Indicators>\n </CardFooter>\n )}\n </Card>\n );\n};\n\nWorkflowCard.displayName = 'WorkflowCard';\n\n// =============================================================================\n// Styled Components\n// =============================================================================\n\nconst Card = styled.button`\n display: grid;\n gap: ${tokens.spacing.sm};\n padding: ${tokens.spacing.md};\n background: ${tokens.colors.background.dark};\n border-radius: ${tokens.borderRadius.xl};\n border: 1px solid ${tokens.colors.border.default};\n cursor: pointer;\n text-align: left;\n width: 100%;\n font-family: ${tokens.typography.fontFamily.primary};\n transition: border-color ${tokens.transitions.fast}, background-color ${tokens.transitions.fast};\n\n &:hover:not(:disabled) {\n border-color: ${tokens.colors.border.hover};\n background: ${tokens.colors.background.light};\n }\n\n &:active:not(:disabled) {\n background: ${tokens.colors.surface.overlayActive};\n }\n\n &:focus-visible {\n outline: 2px solid ${tokens.colors.border.focus};\n outline-offset: 2px;\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n`;\n\nconst WorkflowName = styled.h3`\n margin: 0;\n font-size: ${tokens.typography.fontSize.base};\n font-weight: ${tokens.typography.fontWeight.semibold};\n color: ${tokens.colors.text.primary};\n line-height: ${tokens.typography.lineHeight.tight};\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n`;\n\nconst Description = styled.p`\n margin: 0;\n font-size: ${tokens.typography.fontSize.sm};\n color: ${tokens.colors.text.tertiary};\n line-height: ${tokens.typography.lineHeight.normal};\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n word-break: break-word;\n min-width: 0;\n`;\n\nconst CardFooter = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ${tokens.spacing.sm};\n padding-top: ${tokens.spacing.sm};\n border-top: 1px solid ${tokens.colors.border.subtle};\n width: 100%;\n`;\n\nconst IntegrationList = styled.div`\n display: flex;\n align-items: center;\n gap: ${tokens.spacing.xs};\n flex-shrink: 0;\n`;\n\ninterface IntegrationIconWrapperProps {\n $connected: boolean;\n $optional?: boolean;\n}\n\nconst IntegrationIconWrapper = styled.span<IntegrationIconWrapperProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: ${tokens.borderRadius.sm};\n background: ${tokens.colors.background.light};\n opacity: ${({ $connected, $optional }) => ($connected ? 1 : $optional ? 0.3 : 0.4)};\n position: relative;\n flex-shrink: 0;\n\n ${({ $connected, $optional }) =>\n !$connected &&\n `\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n border: 1px dashed ${$optional ? tokens.colors.border.default : tokens.colors.warning};\n border-radius: ${tokens.borderRadius.sm};\n }\n `}\n`;\n\nconst IntegrationIcon = styled.img`\n width: 16px;\n height: 16px;\n object-fit: contain;\n`;\n\nconst Indicators = styled.div`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: ${tokens.spacing.xs};\n margin-left: auto;\n min-width: 0;\n`;\n\ninterface IndicatorVariantProps {\n $variant: 'warning' | 'info';\n}\n\nconst IndicatorPill = styled.span<IndicatorVariantProps>`\n display: inline-flex;\n align-items: center;\n gap: ${tokens.spacing.xs};\n padding: ${tokens.spacing.xs} ${tokens.spacing.sm};\n border-radius: ${tokens.borderRadius.full};\n background: ${({ $variant }) =>\n $variant === 'warning' ? `${tokens.colors.warning}15` : `${tokens.colors.info}15`};\n border: 1px solid ${({ $variant }) =>\n $variant === 'warning' ? `${tokens.colors.warning}30` : `${tokens.colors.info}30`};\n`;\n\nconst IndicatorDot = styled.span<IndicatorVariantProps>`\n width: 6px;\n height: 6px;\n border-radius: ${tokens.borderRadius.full};\n background: ${({ $variant }) =>\n $variant === 'warning' ? tokens.colors.warning : tokens.colors.info};\n flex-shrink: 0;\n`;\n\nconst IndicatorText = styled.span`\n font-size: ${tokens.typography.fontSize.xs};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.secondary};\n white-space: nowrap;\n`;\n\nexport default WorkflowCard;\n","/**\n * WorkflowErrorAlert Component\n *\n * Displays workflow execution errors with inline, banner, or modal variants.\n *\n * @see specs/015-restyle-ai-chat/spec.md\n */\n\nimport type React from 'react';\nimport { useState } from 'react';\nimport styled from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\n// Severity color mapping using design tokens\nconst severityColors = {\n error: tokens.colors.error,\n warning: tokens.colors.warning,\n info: tokens.colors.info,\n};\n\ninterface AlertContainerProps {\n variant: 'inline' | 'banner' | 'modal';\n severity: 'error' | 'warning' | 'info';\n}\n\nconst AlertContainer = styled.div<AlertContainerProps>`\n display: flex;\n flex-direction: column;\n background-color: ${(props) => {\n const alpha = props.variant === 'modal' ? '26' : props.variant === 'banner' ? '1a' : '0d';\n return `${severityColors[props.severity]}${alpha}`;\n }};\n border: 1px solid ${(props) => {\n const alpha = props.variant === 'modal' ? '66' : '4d';\n return `${severityColors[props.severity]}${alpha}`;\n }};\n border-radius: ${(props) => (props.variant === 'banner' ? '0' : tokens.borderRadius.md)};\n padding: ${(props) => (props.variant === 'modal' ? tokens.spacing.lg : tokens.spacing.md)};\n margin: ${(props) => (props.variant === 'banner' ? '0' : `${tokens.spacing.sm} 0`)};\n width: ${(props) => (props.variant === 'modal' ? 'auto' : '100%')};\n max-width: ${(props) => (props.variant === 'inline' ? '600px' : '100%')};\n font-family: ${tokens.typography.fontFamily.primary};\n`;\n\nconst ModalOverlay = styled.div<{ isOpen: boolean }>`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${tokens.colors.overlay};\n display: ${(props) => (props.isOpen ? 'flex' : 'none')};\n align-items: center;\n justify-content: center;\n z-index: ${tokens.zIndex.modal};\n padding: ${tokens.spacing.lg};\n`;\n\nconst ModalContent = styled.div`\n background-color: ${tokens.colors.background.dark};\n border-radius: ${tokens.borderRadius.lg};\n max-width: 500px;\n width: 100%;\n box-shadow: ${tokens.shadows.xl};\n`;\n\nconst Header = styled.div`\n display: flex;\n align-items: flex-start;\n gap: ${tokens.spacing.md};\n`;\n\nconst IconContainer = styled.div<{ severity: 'error' | 'warning' | 'info' }>`\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n color: ${(props) => severityColors[props.severity]};\n`;\n\nconst Content = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ${tokens.spacing.sm};\n`;\n\nconst Title = styled.div`\n font-size: ${tokens.typography.fontSize.base};\n font-weight: ${tokens.typography.fontWeight.semibold};\n color: ${tokens.colors.text.primary};\n line-height: ${tokens.typography.lineHeight.tight};\n`;\n\nconst ErrorMessage = styled.div`\n font-size: ${tokens.typography.fontSize.sm};\n line-height: ${tokens.typography.lineHeight.normal};\n color: ${tokens.colors.text.secondary};\n`;\n\nconst ErrorCode = styled.div`\n font-size: ${tokens.typography.fontSize.xs};\n color: ${tokens.colors.text.secondary};\n font-family: ${tokens.typography.fontFamily.monospace};\n margin-top: ${tokens.spacing.xs};\n`;\n\nconst Timestamp = styled.div`\n font-size: ${tokens.typography.fontSize.xs};\n color: ${tokens.colors.text.tertiary};\n margin-top: ${tokens.spacing.xs};\n`;\n\nconst Details = styled.details`\n margin-top: ${tokens.spacing.md};\n cursor: pointer;\n\n summary {\n font-size: ${tokens.typography.fontSize.sm};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.secondary};\n user-select: none;\n list-style: none;\n display: flex;\n align-items: center;\n gap: ${tokens.spacing.xs};\n\n &:hover {\n color: ${tokens.colors.text.primary};\n }\n\n &::-webkit-details-marker {\n display: none;\n }\n }\n`;\n\nconst DetailsIcon = styled.span<{ open: boolean }>`\n display: inline-block;\n transition: transform ${tokens.transitions.fast};\n transform: ${(props) => (props.open ? 'rotate(90deg)' : 'rotate(0deg)')};\n`;\n\nconst StackTrace = styled.pre`\n margin: ${tokens.spacing.sm} 0 0 0;\n padding: ${tokens.spacing.md};\n background-color: ${tokens.colors.surface.subtle};\n border-radius: ${tokens.borderRadius.sm};\n font-family: ${tokens.typography.fontFamily.monospace};\n font-size: ${tokens.typography.fontSize.xs};\n line-height: ${tokens.typography.lineHeight.normal};\n color: ${tokens.colors.text.secondary};\n white-space: pre-wrap;\n word-break: break-word;\n overflow-x: auto;\n`;\n\nconst Actions = styled.div`\n display: flex;\n gap: ${tokens.spacing.sm};\n margin-top: ${tokens.spacing.md};\n`;\n\nconst Button = styled.button<{ variant: 'primary' | 'secondary' }>`\n display: inline-flex;\n align-items: center;\n gap: ${tokens.spacing.xs};\n padding: ${tokens.spacing.sm} ${tokens.spacing.md};\n font-size: ${tokens.typography.fontSize.sm};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${(props) => (props.variant === 'primary' ? tokens.colors.text.primary : tokens.colors.text.secondary)};\n background: ${(props) => (props.variant === 'primary' ? tokens.colors.error : tokens.colors.surface.overlay)};\n border: 1px solid\n ${(props) => (props.variant === 'primary' ? tokens.colors.error : tokens.colors.border.default)};\n border-radius: ${tokens.borderRadius.md};\n cursor: pointer;\n transition: all ${tokens.transitions.fast};\n\n &:hover {\n background: ${(props) =>\n props.variant === 'primary' ? tokens.colors.error : tokens.colors.surface.overlayHover};\n border-color: ${(props) =>\n props.variant === 'primary' ? tokens.colors.error : tokens.colors.border.hover};\n }\n\n &:active {\n transform: scale(0.98);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n\nconst CloseButton = styled.button`\n position: absolute;\n top: ${tokens.spacing.md};\n right: ${tokens.spacing.md};\n width: 32px;\n height: 32px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n color: ${tokens.colors.text.secondary};\n cursor: pointer;\n border-radius: ${tokens.borderRadius.sm};\n transition: all ${tokens.transitions.fast};\n\n &:hover {\n background: ${tokens.colors.surface.overlayHover};\n color: ${tokens.colors.text.primary};\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n svg {\n width: 20px;\n height: 20px;\n }\n`;\n\n// Icons\nconst ErrorIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"24\"\n height=\"24\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" />\n </svg>\n);\n\nconst WarningIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"24\"\n height=\"24\"\n >\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\n </svg>\n);\n\nconst InfoIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"24\"\n height=\"24\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\" />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </svg>\n);\n\nconst ChevronIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n </svg>\n);\n\nexport interface WorkflowErrorAlertProps {\n /** Error object or message */\n error: Error | string;\n /** Optional error code */\n errorCode?: string;\n /** Timestamp of the error */\n timestamp?: string;\n /** Visual variant */\n variant?: 'inline' | 'banner' | 'modal';\n /** Severity level */\n severity?: 'error' | 'warning' | 'info';\n /** Whether the error can be retried */\n retryable?: boolean;\n /** Callback when retry is clicked */\n onRetry?: () => void;\n /** Callback when dismiss is clicked */\n onDismiss?: () => void;\n /** Whether to show details section */\n showDetails?: boolean;\n /** Stack trace to display */\n stackTrace?: string;\n /** Custom title */\n title?: string;\n /** Custom className */\n className?: string;\n}\n\n/**\n * WorkflowErrorAlert component for displaying workflow errors\n *\n * Features:\n * - Inline, banner, and modal variants\n * - Severity levels (error/warning/info)\n * - Error code and timestamp display\n * - Expandable stack trace\n * - Retry and dismiss actions\n * - Accessible error reporting\n */\nexport const WorkflowErrorAlert: React.FC<WorkflowErrorAlertProps> = ({\n error,\n errorCode,\n timestamp,\n variant = 'inline',\n severity = 'error',\n retryable = false,\n onRetry,\n onDismiss,\n showDetails = false,\n stackTrace,\n title,\n className,\n}) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [isModalOpen, setIsModalOpen] = useState(variant === 'modal');\n\n const errorMessage = typeof error === 'string' ? error : error.message;\n const defaultTitle =\n severity === 'error' ? 'Workflow Error' : severity === 'warning' ? 'Warning' : 'Information';\n const displayTitle = title || defaultTitle;\n\n const handleDismiss = () => {\n if (variant === 'modal') {\n setIsModalOpen(false);\n }\n onDismiss?.();\n };\n\n const getIcon = () => {\n switch (severity) {\n case 'error':\n return <ErrorIcon />;\n case 'warning':\n return <WarningIcon />;\n case 'info':\n return <InfoIcon />;\n }\n };\n\n const alertContent = (\n <AlertContainer\n variant={variant}\n severity={severity}\n className={className}\n data-testid=\"error-alert\"\n role=\"alert\"\n >\n <Header>\n <IconContainer severity={severity} aria-hidden=\"true\">\n {getIcon()}\n </IconContainer>\n <Content>\n <Title>{displayTitle}</Title>\n <ErrorMessage>{errorMessage}</ErrorMessage>\n {errorCode && <ErrorCode>Error Code: {errorCode}</ErrorCode>}\n {timestamp && <Timestamp>{new Date(timestamp).toLocaleString()}</Timestamp>}\n\n {showDetails && (stackTrace || (typeof error === 'object' && error.stack)) && (\n <Details\n open={detailsOpen}\n onToggle={(e) => setDetailsOpen((e.target as HTMLDetailsElement).open)}\n >\n <summary>\n <DetailsIcon open={detailsOpen}>\n <ChevronIcon />\n </DetailsIcon>\n Show Details\n </summary>\n <StackTrace>\n {stackTrace || (typeof error === 'object' ? error.stack : '')}\n </StackTrace>\n </Details>\n )}\n\n {(retryable || onDismiss) && (\n <Actions>\n {retryable && onRetry && (\n <Button variant=\"primary\" onClick={onRetry}>\n Retry\n </Button>\n )}\n {onDismiss && (\n <Button variant=\"secondary\" onClick={handleDismiss}>\n Dismiss\n </Button>\n )}\n </Actions>\n )}\n </Content>\n {variant !== 'modal' && onDismiss && (\n <CloseButton onClick={handleDismiss} aria-label=\"Dismiss alert\">\n <CloseIcon />\n </CloseButton>\n )}\n </Header>\n </AlertContainer>\n );\n\n if (variant === 'modal') {\n return (\n <ModalOverlay isOpen={isModalOpen} onClick={handleDismiss}>\n <ModalContent onClick={(e) => e.stopPropagation()}>\n {alertContent}\n <CloseButton onClick={handleDismiss} aria-label=\"Close modal\">\n <CloseIcon />\n </CloseButton>\n </ModalContent>\n </ModalOverlay>\n );\n }\n\n return alertContent;\n};\n\nWorkflowErrorAlert.displayName = 'WorkflowErrorAlert';\n","/**\n * WorkflowProgressBar Component\n *\n * Displays workflow execution progress with linear or circular variants.\n *\n * @see specs/015-restyle-ai-chat/spec.md\n */\n\nimport type React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\nconst indeterminate = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(400%);\n }\n`;\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\n// Status color mapping using design tokens\nconst statusColors = {\n pending: tokens.colors.status.pending,\n running: tokens.colors.status.running,\n completed: tokens.colors.status.completed,\n failed: tokens.colors.status.failed,\n timeout: tokens.colors.status.timeout,\n};\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${tokens.spacing.sm};\n width: 100%;\n font-family: ${tokens.typography.fontFamily.primary};\n`;\n\nconst ProgressMessage = styled.div<{ size: 'sm' | 'md' | 'lg' }>`\n font-size: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.typography.fontSize.xs;\n case 'lg':\n return tokens.typography.fontSize.base;\n case 'md':\n default:\n return tokens.typography.fontSize.sm;\n }\n }};\n color: ${tokens.colors.text.secondary};\n line-height: ${tokens.typography.lineHeight.normal};\n`;\n\nconst ProgressInfo = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: ${tokens.spacing.xs};\n`;\n\nconst PercentageText = styled.span<{ size: 'sm' | 'md' | 'lg' }>`\n font-size: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.typography.fontSize.xs;\n case 'lg':\n return tokens.typography.fontSize.base;\n case 'md':\n default:\n return tokens.typography.fontSize.sm;\n }\n }};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.primary};\n`;\n\n// Linear Progress Bar\nconst LinearTrack = styled.div<{ size: 'sm' | 'md' | 'lg' }>`\n position: relative;\n width: 100%;\n height: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.spacing.xs;\n case 'lg':\n return tokens.spacing.sm;\n case 'md':\n default:\n return '6px';\n }\n }};\n background-color: ${tokens.colors.border.default};\n border-radius: ${tokens.borderRadius.full};\n overflow: hidden;\n`;\n\ninterface LinearFillProps {\n progress: number;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n animated: boolean;\n indeterminate: boolean;\n}\n\nconst LinearFill = styled.div<LinearFillProps>`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: ${(props) => (props.indeterminate ? '25%' : `${props.progress}%`)};\n background-color: ${(props) => statusColors[props.status]};\n border-radius: ${tokens.borderRadius.full};\n transition: ${(props) => (props.animated && !props.indeterminate ? `width ${tokens.transitions.normal}` : 'none')};\n animation: ${(props) => (props.indeterminate ? indeterminate : 'none')} 1.5s ease-in-out infinite;\n`;\n\n// Circular Progress Bar\nconst CircularContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst CircularSvg = styled.svg<{ size: 'sm' | 'md' | 'lg' }>`\n width: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.spacing.xl;\n case 'lg':\n return '80px';\n case 'md':\n default:\n return '60px';\n }\n }};\n height: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.spacing.xl;\n case 'lg':\n return '80px';\n case 'md':\n default:\n return '60px';\n }\n }};\n transform: rotate(-90deg);\n`;\n\ninterface CircularTrackProps {\n size: 'sm' | 'md' | 'lg';\n}\n\nconst getCircularSize = (size: 'sm' | 'md' | 'lg') => {\n switch (size) {\n case 'sm':\n return { radius: 16, strokeWidth: 3 };\n case 'lg':\n return { radius: 36, strokeWidth: 6 };\n case 'md':\n default:\n return { radius: 26, strokeWidth: 4 };\n }\n};\n\nconst CircularTrack = styled.circle<CircularTrackProps>`\n fill: none;\n stroke: ${tokens.colors.border.default};\n stroke-width: ${(props) => getCircularSize(props.size).strokeWidth};\n`;\n\ninterface CircularFillProps {\n progress: number;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n size: 'sm' | 'md' | 'lg';\n animated: boolean;\n indeterminate: boolean;\n}\n\nconst CircularFill = styled.circle<CircularFillProps>`\n fill: none;\n stroke: ${(props) => statusColors[props.status]};\n stroke-width: ${(props) => getCircularSize(props.size).strokeWidth};\n stroke-dasharray: ${(props) => {\n const { radius } = getCircularSize(props.size);\n const circumference = 2 * Math.PI * radius;\n return props.indeterminate ? `${circumference * 0.25} ${circumference}` : circumference;\n }};\n stroke-dashoffset: ${(props) => {\n const { radius } = getCircularSize(props.size);\n const circumference = 2 * Math.PI * radius;\n return props.indeterminate ? 0 : circumference * (1 - props.progress / 100);\n }};\n stroke-linecap: round;\n transition: ${(props) => (props.animated && !props.indeterminate ? `stroke-dashoffset ${tokens.transitions.normal}` : 'none')};\n animation: ${(props) => (props.indeterminate ? rotate : 'none')} 1.5s linear infinite;\n`;\n\nconst CircularPercentage = styled.text<{ size: 'sm' | 'md' | 'lg' }>`\n fill: ${tokens.colors.text.primary};\n font-size: ${(props) => {\n switch (props.size) {\n case 'sm':\n return tokens.typography.fontSize.xs;\n case 'lg':\n return tokens.typography.fontSize.base;\n case 'md':\n default:\n return tokens.typography.fontSize.xs;\n }\n }};\n font-weight: ${tokens.typography.fontWeight.semibold};\n text-anchor: middle;\n dominant-baseline: middle;\n transform: rotate(90deg);\n transform-origin: center;\n`;\n\nexport interface WorkflowProgressBarProps {\n /** Progress percentage (0-100), or undefined for indeterminate */\n progress?: number;\n /** Optional message to display */\n message?: string;\n /** Status affects the color */\n status?: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n /** Visual variant */\n variant?: 'linear' | 'circular';\n /** Size of the progress bar */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show percentage text */\n showPercentage?: boolean;\n /** Whether to animate progress changes */\n animated?: boolean;\n /** Custom className */\n className?: string;\n}\n\n/**\n * WorkflowProgressBar component for showing workflow execution progress\n *\n * Features:\n * - Linear and circular variants\n * - Determinate and indeterminate modes\n * - Color-coded status (gray/blue/green/red/orange)\n * - Size options (sm/md/lg)\n * - Optional percentage display\n * - Smooth animations\n * - Progress message support\n */\nexport const WorkflowProgressBar: React.FC<WorkflowProgressBarProps> = ({\n progress,\n message,\n status = 'running',\n variant = 'linear',\n size = 'md',\n showPercentage = true,\n animated = true,\n className,\n}) => {\n const isIndeterminate = progress === undefined;\n const progressValue = progress ?? 0;\n\n if (variant === 'circular') {\n const { radius } = getCircularSize(size);\n const center = radius + getCircularSize(size).strokeWidth;\n\n return (\n <Container className={className}>\n {message && <ProgressMessage size={size}>{message}</ProgressMessage>}\n <CircularContainer>\n <CircularSvg\n size={size}\n viewBox={`0 0 ${center * 2} ${center * 2}`}\n role=\"progressbar\"\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={message || `${progressValue}% complete`}\n >\n <CircularTrack size={size} cx={center} cy={center} r={radius} />\n <CircularFill\n progress={progressValue}\n status={status}\n size={size}\n animated={animated}\n indeterminate={isIndeterminate}\n cx={center}\n cy={center}\n r={radius}\n />\n {showPercentage && !isIndeterminate && (\n <CircularPercentage size={size} x={center} y={center}>\n {Math.round(progressValue)}%\n </CircularPercentage>\n )}\n </CircularSvg>\n </CircularContainer>\n </Container>\n );\n }\n\n return (\n <Container className={className}>\n {(message || showPercentage) && (\n <ProgressInfo>\n {message && <ProgressMessage size={size}>{message}</ProgressMessage>}\n {showPercentage && !isIndeterminate && (\n <PercentageText size={size}>{Math.round(progressValue)}%</PercentageText>\n )}\n </ProgressInfo>\n )}\n <LinearTrack\n size={size}\n role=\"progressbar\"\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={message || `${progressValue}% complete`}\n >\n <LinearFill\n progress={progressValue}\n status={status}\n animated={animated}\n indeterminate={isIndeterminate}\n />\n </LinearTrack>\n </Container>\n );\n};\n\nWorkflowProgressBar.displayName = 'WorkflowProgressBar';\n","/**\n * WorkflowResultPanel Component\n *\n * Displays workflow execution results with JSON/formatted/table views.\n *\n * @see specs/015-restyle-ai-chat/spec.md\n */\n\nimport type React from 'react';\nimport { useState } from 'react';\nimport styled from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\nconst Panel = styled.div<{ collapsible: boolean; expanded: boolean }>`\n display: flex;\n flex-direction: column;\n background-color: ${tokens.colors.surface.overlay};\n border: 1px solid ${tokens.colors.border.default};\n border-radius: ${tokens.borderRadius.md};\n overflow: hidden;\n font-family: ${tokens.typography.fontFamily.primary};\n`;\n\nconst Header = styled.div<{ collapsible: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: ${tokens.spacing.sm} ${tokens.spacing.md};\n background-color: ${tokens.colors.surface.subtle};\n border-bottom: 1px solid ${tokens.colors.border.default};\n cursor: ${(props) => (props.collapsible ? 'pointer' : 'default')};\n user-select: none;\n\n &:hover {\n background-color: ${(props) => (props.collapsible ? tokens.colors.surface.overlay : tokens.colors.surface.subtle)};\n }\n`;\n\nconst Title = styled.div`\n font-size: ${tokens.typography.fontSize.sm};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.primary};\n display: flex;\n align-items: center;\n gap: ${tokens.spacing.sm};\n`;\n\nconst Actions = styled.div`\n display: flex;\n gap: ${tokens.spacing.sm};\n`;\n\nconst IconButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n background: ${tokens.colors.surface.overlay};\n border: 1px solid ${tokens.colors.border.default};\n border-radius: ${tokens.borderRadius.sm};\n color: ${tokens.colors.text.secondary};\n cursor: pointer;\n transition: all ${tokens.transitions.fast};\n\n &:hover {\n background: ${tokens.colors.surface.overlayHover};\n border-color: ${tokens.colors.border.hover};\n color: ${tokens.colors.text.primary};\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n svg {\n width: 16px;\n height: 16px;\n }\n`;\n\nconst CollapseIcon = styled.div<{ expanded: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform ${tokens.transitions.fast};\n transform: ${(props) => (props.expanded ? 'rotate(180deg)' : 'rotate(0deg)')};\n color: ${tokens.colors.text.secondary};\n\n svg {\n width: 16px;\n height: 16px;\n }\n`;\n\nconst Content = styled.div<{ maxHeight?: string; expanded: boolean }>`\n padding: ${tokens.spacing.md};\n max-height: ${(props) => {\n if (!props.expanded) return '0';\n return props.maxHeight || '400px';\n }};\n overflow: ${(props) => (props.expanded ? 'auto' : 'hidden')};\n transition: max-height ${tokens.transitions.normal};\n\n /* Custom scrollbar */\n &::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-track {\n background: ${tokens.colors.scrollbar.track};\n border-radius: ${tokens.borderRadius.sm};\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${tokens.colors.scrollbar.thumb};\n border-radius: ${tokens.borderRadius.sm};\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: ${tokens.colors.scrollbar.thumbHover};\n }\n`;\n\nconst JsonView = styled.pre`\n margin: 0;\n font-family: ${tokens.typography.fontFamily.monospace};\n font-size: ${tokens.typography.fontSize.sm};\n line-height: ${tokens.typography.lineHeight.normal};\n color: ${tokens.colors.text.secondary};\n white-space: pre-wrap;\n word-break: break-word;\n`;\n\nconst FormattedView = styled.div`\n font-size: ${tokens.typography.fontSize.sm};\n line-height: ${tokens.typography.lineHeight.normal};\n color: ${tokens.colors.text.secondary};\n`;\n\nconst TableView = styled.table`\n width: 100%;\n border-collapse: collapse;\n font-size: ${tokens.typography.fontSize.sm};\n\n th {\n text-align: left;\n padding: ${tokens.spacing.sm} ${tokens.spacing.sm};\n background-color: ${tokens.colors.surface.overlay};\n border-bottom: 1px solid ${tokens.colors.border.default};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${tokens.colors.text.primary};\n }\n\n td {\n padding: ${tokens.spacing.sm} ${tokens.spacing.sm};\n border-bottom: 1px solid ${tokens.colors.border.subtle};\n color: ${tokens.colors.text.secondary};\n }\n\n tr:last-child td {\n border-bottom: none;\n }\n`;\n\nconst EmptyState = styled.div`\n padding: ${tokens.spacing.xl};\n text-align: center;\n color: ${tokens.colors.text.tertiary};\n font-size: ${tokens.typography.fontSize.sm};\n`;\n\n// Icons\nconst DownloadIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\" />\n </svg>\n);\n\nconst CopyIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </svg>\n);\n\nconst ChevronIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </svg>\n);\n\nexport interface WorkflowResultPanelProps {\n /** Output data to display */\n outputData: unknown;\n /** Visual variant */\n variant?: 'json' | 'formatted' | 'table';\n /** Whether the panel can be collapsed */\n collapsible?: boolean;\n /** Default expanded state */\n defaultExpanded?: boolean;\n /** Maximum height of content area */\n maxHeight?: string;\n /** Callback when download is clicked */\n onDownload?: () => void;\n /** Callback when copy is clicked */\n onCopy?: () => void;\n /** Custom title */\n title?: string;\n /** Custom className */\n className?: string;\n}\n\n/**\n * WorkflowResultPanel component for displaying workflow results\n *\n * Features:\n * - JSON, formatted, and table view variants\n * - Collapsible content\n * - Download and copy actions\n * - Maximum height with scrolling\n * - Empty state handling\n * - Syntax highlighting for JSON\n */\nexport const WorkflowResultPanel: React.FC<WorkflowResultPanelProps> = ({\n outputData,\n variant = 'json',\n collapsible = true,\n defaultExpanded = true,\n maxHeight,\n onDownload,\n onCopy,\n title = 'Result',\n className,\n}) => {\n const [expanded, setExpanded] = useState(defaultExpanded);\n\n const handleToggle = () => {\n if (collapsible) {\n setExpanded(!expanded);\n }\n };\n\n const renderContent = () => {\n if (!outputData) {\n return <EmptyState>No results available</EmptyState>;\n }\n\n switch (variant) {\n case 'json':\n return <JsonView>{JSON.stringify(outputData, null, 2)}</JsonView>;\n\n case 'formatted':\n if (typeof outputData === 'object') {\n return (\n <FormattedView>\n {Object.entries(outputData as Record<string, unknown>).map(([key, value]) => (\n <div key={key}>\n <strong>{key}:</strong> {String(value)}\n </div>\n ))}\n </FormattedView>\n );\n }\n return <FormattedView>{String(outputData)}</FormattedView>;\n\n case 'table':\n if (Array.isArray(outputData) && outputData.length > 0) {\n const keys = Object.keys(outputData[0] as Record<string, unknown>);\n return (\n <TableView>\n <thead>\n <tr>\n {keys.map((key) => (\n <th key={key}>{key}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {outputData.map((row, idx) => (\n <tr key={idx}>\n {keys.map((key) => (\n <td key={key}>{String((row as Record<string, unknown>)[key])}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </TableView>\n );\n }\n return <EmptyState>Data is not in table format</EmptyState>;\n\n default:\n return <EmptyState>Unsupported variant</EmptyState>;\n }\n };\n\n return (\n <Panel\n collapsible={collapsible}\n expanded={expanded}\n className={className}\n data-testid=\"result-panel\"\n >\n <Header collapsible={collapsible} onClick={handleToggle}>\n <Title>\n {title}\n {collapsible && (\n <CollapseIcon expanded={expanded}>\n <ChevronIcon />\n </CollapseIcon>\n )}\n </Title>\n <Actions onClick={(e) => e.stopPropagation()}>\n {onCopy && (\n <IconButton onClick={onCopy} title=\"Copy to clipboard\" aria-label=\"Copy to clipboard\">\n <CopyIcon />\n </IconButton>\n )}\n {onDownload && (\n <IconButton onClick={onDownload} title=\"Download\" aria-label=\"Download results\">\n <DownloadIcon />\n </IconButton>\n )}\n </Actions>\n </Header>\n <Content maxHeight={maxHeight} expanded={expanded}>\n {renderContent()}\n </Content>\n </Panel>\n );\n};\n\nWorkflowResultPanel.displayName = 'WorkflowResultPanel';\n","/**\n * WorkflowStatusBadge Component\n *\n * Displays workflow execution status with color coding.\n *\n * @see specs/015-restyle-ai-chat/spec.md\n */\n\nimport type React from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport { tokens } from '../../theme/tokens';\n\nconst spin = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nconst pulse = keyframes`\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n`;\n\n// Status color mapping using design tokens\nconst statusColors = {\n pending: tokens.colors.status.pending,\n running: tokens.colors.status.running,\n completed: tokens.colors.status.completed,\n failed: tokens.colors.status.failed,\n timeout: tokens.colors.status.timeout,\n};\n\ninterface BadgeContainerProps {\n $status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n $size: 'sm' | 'md' | 'lg';\n}\n\nconst BadgeContainer = styled.div<BadgeContainerProps>`\n display: inline-flex;\n align-items: center;\n gap: ${(props) => {\n switch (props.$size) {\n case 'sm':\n return tokens.spacing.xs;\n case 'lg':\n return tokens.spacing.sm;\n case 'md':\n default:\n return '6px';\n }\n }};\n padding: ${(props) => {\n switch (props.$size) {\n case 'sm':\n return `${tokens.spacing.xs} ${tokens.spacing.sm}`;\n case 'lg':\n return `${tokens.spacing.sm} ${tokens.spacing.md}`;\n case 'md':\n default:\n return `6px ${tokens.spacing.md}`;\n }\n }};\n background-color: ${(props) => `${statusColors[props.$status]}1A`};\n border: 1px solid ${(props) => `${statusColors[props.$status]}4D`};\n border-radius: ${(props) => {\n switch (props.$size) {\n case 'sm':\n return tokens.borderRadius.sm;\n case 'lg':\n return tokens.borderRadius.md;\n case 'md':\n default:\n return tokens.borderRadius.md;\n }\n }};\n font-family: ${tokens.typography.fontFamily.primary};\n font-size: ${(props) => {\n switch (props.$size) {\n case 'sm':\n return '11px';\n case 'lg':\n return '15px';\n case 'md':\n default:\n return '13px';\n }\n }};\n font-weight: ${tokens.typography.fontWeight.medium};\n color: ${(props) => statusColors[props.$status]};\n line-height: 1.4;\n`;\n\ninterface IconContainerProps {\n $animated?: boolean;\n $status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n}\n\nconst IconContainer = styled.div<IconContainerProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n animation: ${(props) => {\n if (props.$animated) {\n if (props.$status === 'running') return spin;\n if (props.$status === 'pending') return pulse;\n }\n return 'none';\n }}\n ${(props) => (props.$status === 'running' ? '1s' : '2s')} linear infinite;\n`;\n\n// Status icons\nconst PendingIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\" />\n </svg>\n);\n\nconst RunningIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n opacity=\"0.3\"\n />\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </svg>\n);\n\nconst CompletedIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" />\n </svg>\n);\n\nconst FailedIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\" />\n </svg>\n);\n\nconst TimeoutIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n >\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\n </svg>\n);\n\nconst Label = styled.span`\n white-space: nowrap;\n`;\n\nexport interface WorkflowStatusBadgeProps {\n /** Workflow execution status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'timeout';\n /** Size of the badge */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show status icon */\n showIcon?: boolean;\n /** Whether to show status label */\n showLabel?: boolean;\n /** Whether to animate the icon */\n animated?: boolean;\n /** Custom status label text */\n label?: string;\n /** Custom className */\n className?: string;\n}\n\nconst getDefaultLabel = (status: WorkflowStatusBadgeProps['status']): string => {\n switch (status) {\n case 'pending':\n return 'Pending';\n case 'running':\n return 'Running';\n case 'completed':\n return 'Completed';\n case 'failed':\n return 'Failed';\n case 'timeout':\n return 'Timeout';\n }\n};\n\nconst getStatusIcon = (status: WorkflowStatusBadgeProps['status']): React.ReactNode => {\n switch (status) {\n case 'pending':\n return <PendingIcon />;\n case 'running':\n return <RunningIcon />;\n case 'completed':\n return <CompletedIcon />;\n case 'failed':\n return <FailedIcon />;\n case 'timeout':\n return <TimeoutIcon />;\n }\n};\n\n/**\n * WorkflowStatusBadge component for showing workflow execution status\n *\n * Features:\n * - Color-coded status badges (gray/blue/green/red/orange)\n * - Status icons with optional animations\n * - Size options (sm/md/lg)\n * - Optional status labels\n * - Spinning animation for running state\n * - Pulse animation for pending state\n */\nexport const WorkflowStatusBadge: React.FC<WorkflowStatusBadgeProps> = ({\n status,\n size = 'md',\n showIcon = true,\n showLabel = true,\n animated = true,\n label,\n className,\n}) => {\n const displayLabel = label || getDefaultLabel(status);\n\n return (\n <BadgeContainer\n $status={status}\n $size={size}\n className={className}\n data-testid=\"execution-status-badge\"\n role=\"status\"\n aria-label={displayLabel}\n >\n {showIcon && (\n <IconContainer $animated={animated} $status={status} aria-hidden=\"true\">\n {getStatusIcon(status)}\n </IconContainer>\n )}\n {showLabel && <Label>{displayLabel}</Label>}\n </BadgeContainer>\n );\n};\n\nWorkflowStatusBadge.displayName = 'WorkflowStatusBadge';\n"]}
|