@agentiffai/design 1.3.21 → 1.3.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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":["styled","jsx","jsxs","Header","Title","Actions","Content","ChevronIcon","useState","keyframes","statusColors","IconContainer"],"mappings":"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","file":"index.js","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: '#6B7280',\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 // 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 },\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\n src={integration.icon}\n alt={integration.name}\n />\n </IntegrationIconWrapper>\n ))}\n </IntegrationList>\n\n <Indicators>\n {estimatedCostPerRun && (\n <IndicatorPill $variant=\"info\" title={`Estimated cost: ${estimatedCostPerRun}${estimatedCostPerRun.includes('/') ? '' : ' per run'}`}>\n <IndicatorText>{estimatedCostPerRun}{estimatedCostPerRun.includes('/') ? '' : '/run'}</IndicatorText>\n </IndicatorPill>\n )}\n {missingCount > 0 && (\n <IndicatorPill\n $variant=\"warning\"\n title={`${missingCount} integration${missingCount > 1 ? 's' : ''} not connected`}\n >\n <IndicatorDot $variant=\"warning\" />\n <IndicatorText>\n {missingCount} missing\n </IndicatorText>\n </IndicatorPill>\n )}\n {needsSetup && (\n <IndicatorPill $variant=\"warning\" title=\"Setup required before use\">\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 opacity: 0.5;\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'\n ? `${tokens.colors.warning}15`\n : `${tokens.colors.info}15`};\n border: 1px solid ${({ $variant }) =>\n $variant === 'warning'\n ? `${tokens.colors.warning}30`\n : `${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 variant={variant} severity={severity} className={className} role=\"alert\">\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 collapsible={collapsible} expanded={expanded} className={className}>\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 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":["styled","jsx","jsxs","Header","Title","Actions","Content","ChevronIcon","useState","keyframes","statusColors","IconContainer"],"mappings":"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","file":"index.js","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: '#6B7280',\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 // 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 },\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\n src={integration.icon}\n alt={integration.name}\n />\n </IntegrationIconWrapper>\n ))}\n </IntegrationList>\n\n <Indicators>\n {estimatedCostPerRun && (\n <IndicatorPill $variant=\"info\" title={`Estimated cost: ${estimatedCostPerRun}${estimatedCostPerRun.includes('/') ? '' : ' per run'}`}>\n <IndicatorText>{estimatedCostPerRun}{estimatedCostPerRun.includes('/') ? '' : '/run'}</IndicatorText>\n </IndicatorPill>\n )}\n {missingCount > 0 && (\n <IndicatorPill\n $variant=\"warning\"\n title={`${missingCount} integration${missingCount > 1 ? 's' : ''} not connected`}\n >\n <IndicatorDot $variant=\"warning\" />\n <IndicatorText>\n {missingCount} missing\n </IndicatorText>\n </IndicatorPill>\n )}\n {needsSetup && (\n <IndicatorPill $variant=\"warning\" title=\"Setup required before use\">\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'\n ? `${tokens.colors.warning}15`\n : `${tokens.colors.info}15`};\n border: 1px solid ${({ $variant }) =>\n $variant === 'warning'\n ? `${tokens.colors.warning}30`\n : `${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 variant={variant} severity={severity} className={className} role=\"alert\">\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 collapsible={collapsible} expanded={expanded} className={className}>\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 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentiffai/design",
3
- "version": "1.3.21",
3
+ "version": "1.3.23",
4
4
  "description": "A comprehensive design system for CopilotKit components built with React, TypeScript, and styled-components",
5
5
  "private": false,
6
6
  "type": "module",