@agentiffai/design 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/LICENSE +21 -0
- package/README.md +187 -0
- package/assets/layout/main-pane-section.png +0 -0
- package/assets/layout/nav-complete.png +0 -0
- package/assets/layout/nav-horizontal-section.png +0 -0
- package/assets/layout/nav-vertical-section.png +0 -0
- package/assets/layout/pane-section-dropdowns.png +0 -0
- package/assets/layout/pane-section-header.png +0 -0
- package/dist/Window-B6e_UfLV.d.ts +429 -0
- package/dist/Window-CgGFIYHS.d.cts +429 -0
- package/dist/chunk-CNVJ5UF2.js +2069 -0
- package/dist/chunk-CNVJ5UF2.js.map +1 -0
- package/dist/chunk-CVHHTWDQ.cjs +72 -0
- package/dist/chunk-CVHHTWDQ.cjs.map +1 -0
- package/dist/chunk-H4VHCHCP.cjs +1268 -0
- package/dist/chunk-H4VHCHCP.cjs.map +1 -0
- package/dist/chunk-JQ6Q7MDQ.js +67 -0
- package/dist/chunk-JQ6Q7MDQ.js.map +1 -0
- package/dist/chunk-KNSPBTTJ.cjs +2158 -0
- package/dist/chunk-KNSPBTTJ.cjs.map +1 -0
- package/dist/chunk-MNXQDDWP.js +2143 -0
- package/dist/chunk-MNXQDDWP.js.map +1 -0
- package/dist/chunk-P4Q3MHIY.cjs +2093 -0
- package/dist/chunk-P4Q3MHIY.cjs.map +1 -0
- package/dist/chunk-PAOXD7DF.js +1253 -0
- package/dist/chunk-PAOXD7DF.js.map +1 -0
- package/dist/copilotkit/index.cjs +611 -0
- package/dist/copilotkit/index.cjs.map +1 -0
- package/dist/copilotkit/index.d.cts +162 -0
- package/dist/copilotkit/index.d.ts +162 -0
- package/dist/copilotkit/index.js +538 -0
- package/dist/copilotkit/index.js.map +1 -0
- package/dist/icons/index.cjs +48 -0
- package/dist/icons/index.cjs.map +1 -0
- package/dist/icons/index.d.cts +375 -0
- package/dist/icons/index.d.ts +375 -0
- package/dist/icons/index.js +3 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.cjs +536 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d-DYU1eVeb.d.cts +252 -0
- package/dist/index.d-DYU1eVeb.d.ts +252 -0
- package/dist/index.d.cts +185 -0
- package/dist/index.d.ts +185 -0
- package/dist/index.js +358 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/index.cjs +48 -0
- package/dist/layout/index.cjs.map +1 -0
- package/dist/layout/index.d.cts +206 -0
- package/dist/layout/index.d.ts +206 -0
- package/dist/layout/index.js +3 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/theme/index.cjs +24 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/index.d.cts +95 -0
- package/dist/theme/index.d.ts +95 -0
- package/dist/theme/index.js +3 -0
- package/dist/theme/index.js.map +1 -0
- package/package.json +148 -0
- package/public/assets/bg-set/brand-logos/Google.svg +1 -0
- package/public/assets/bg-set/brand-logos/Google2.svg +1 -0
- package/public/assets/bg-set/brand-logos/Microsoft.svg +1 -0
- package/public/assets/bg-set/brand-logos/Microsoft2.svg +1 -0
- package/public/assets/bg-set/brand-logos/Slack.svg +1 -0
- package/public/assets/bg-set/brand-logos/Slack2.svg +1 -0
- package/public/assets/bg-set/brand-logos/YouTube.svg +1 -0
- package/public/assets/bg-set/brand-logos/YouTube2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=lg, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=md, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=sm, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=xl, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=xs, Type=Waves Rays2.svg +1 -0
- package/public/assets/icon-set/Icon-add-circle-fill.svg +1 -0
- package/public/assets/icon-set/Icon-calendar-fill.svg +1 -0
- package/public/assets/icon-set/Icon-chat-1-fill.svg +1 -0
- package/public/assets/icon-set/Icon-download-2-fill.svg +1 -0
- package/public/assets/icon-set/Icon-home-fill.svg +1 -0
- package/public/assets/icon-set/Icon-mic-fill.svg +1 -0
- package/public/assets/icon-set/Icon-settings-3-fill.svg +1 -0
- package/public/assets/icon-set/Icon-settings-fill.svg +1 -0
- package/public/assets/icon-set/Icon-settings-line.svg +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/Icon/Icon.styles.ts","../src/components/layout/Icon/icons.ts","../src/components/layout/Icon/Icon.tsx","../src/components/layout/NavHorizontal/NavHorizontal.styles.ts","../src/components/layout/NavHorizontal/NavHorizontal.tsx","../src/components/layout/NavVertical/NavVertical.styles.ts","../src/components/layout/NavVertical/NavVertical.tsx","../src/components/layout/Layout/Layout.styles.ts","../src/components/layout/Layout/Layout.tsx","../src/components/layout/NavHorizontal/ActionButtons.styles.ts","../src/components/layout/NavHorizontal/ActionButtons.tsx","../src/components/layout/NavHorizontal/WorkflowStatusCard.styles.ts","../src/components/layout/NavHorizontal/WorkflowStatusCard.tsx","../src/components/NotificationCard/NotificationCard.dark.styles.ts","../src/components/NotificationCard/DarkNotificationCard.tsx","../src/components/layout/PaneMenus/PaneMenus.styles.ts","../src/components/layout/PaneMenus/PaneMenus.tsx","../src/components/layout/PaneSectionHeader/PaneSectionHeader.styles.ts","../src/components/layout/PaneSectionHeader/PaneSectionHeader.tsx","../src/components/layout/ServiceIcon/ServiceIcon.styles.ts","../src/components/layout/ServiceIcon/ServiceIcon.tsx"],"names":["styled","jsx","NAV_BG","Container","jsxs","useRef","useButton","IconWrapper","BG_TERTIARY","TEXT_PRIMARY","TEXT_SECONDARY","TEXT_MUTED","ACCENT_COLOR","HOVER_BG","useState","BackButton"],"mappings":"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","file":"chunk-MNXQDDWP.js","sourcesContent":["import styled from 'styled-components';\n\ninterface IconWrapperProps {\n $size: number;\n $color: string;\n}\n\nexport const IconWrapper = styled.span<IconWrapperProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ $size }) => $size}px;\n height: ${({ $size }) => $size}px;\n color: ${({ $color }) => $color};\n line-height: 1;\n\n img {\n width: 100%;\n height: 100%;\n filter: ${({ $color }) => {\n if ($color === 'currentColor' || !$color) return 'inherit';\n if ($color === 'white' || $color === '#ffffff' || $color === '#fff') {\n return 'brightness(0) saturate(100%) invert(100%)';\n }\n if ($color === '#b9bbbe') {\n // Discord gray\n return 'brightness(0) saturate(100%) invert(75%) sepia(8%) saturate(223%) hue-rotate(180deg) brightness(94%) contrast(86%)';\n }\n if ($color === '#ed4245' || $color === '#f04747') {\n // Discord red\n return 'brightness(0) saturate(100%) invert(38%) sepia(97%) saturate(1459%) hue-rotate(334deg) brightness(95%) contrast(93%)';\n }\n return 'none';\n }};\n }\n`;\n","/**\n * Icon configuration and type definitions\n * Using @icon-set alias for cleaner imports\n */\n\n// Base path for all icons (served from public directory)\nexport const ICON_BASE_PATH = '/assets/icon-set' as const;\n\n// Available icon names as const for type safety\nexport const IconNames = {\n MIC: 'mic-fill',\n MIC_OFF: 'mic-off-fill',\n HEADPHONE: 'headphone-fill',\n VOLUME_MUTE: 'volume-mute-fill',\n SETTINGS: 'settings-3-fill',\n SETTINGS_FILL: 'settings-fill',\n SETTINGS_LINE: 'settings-line',\n HOME: 'home-fill',\n ADD_CIRCLE: 'add-circle-fill',\n COMPASS_DISCOVER: 'compass-discover-fill',\n DOWNLOAD: 'download-2-fill',\n ARROW_LEFT: 'arrow-left-fill',\n CALENDAR: 'calendar-fill',\n CHAT: 'chat-1-fill',\n} as const;\n\nexport type IconName = (typeof IconNames)[keyof typeof IconNames];\n\n// Icon file mapping\nexport const iconFiles: Record<IconName, string> = {\n 'mic-fill': 'Icon-mic-fill.svg',\n 'mic-off-fill': 'Icon-mic-off-fill.svg',\n 'headphone-fill': 'Icon-headphone-fill.svg',\n 'volume-mute-fill': 'Icon-volume-mute-fill.svg',\n 'settings-3-fill': 'Icon-settings-3-fill.svg',\n 'settings-fill': 'Icon-settings-fill.svg',\n 'settings-line': 'Icon-settings-line.svg',\n 'home-fill': 'Icon-home-fill.svg',\n 'add-circle-fill': 'Icon-add-circle-fill.svg',\n 'compass-discover-fill': 'Icon-compass-discover-fill.svg',\n 'download-2-fill': 'Icon-download-2-fill.svg',\n 'arrow-left-fill': 'Icon-arrow-left-fill.svg',\n 'calendar-fill': 'Icon-calendar-fill.svg',\n 'chat-1-fill': 'Icon-chat-1-fill.svg',\n};\n\n// Helper function to get full icon path\nexport function getIconPath(name: IconName): string {\n return `${ICON_BASE_PATH}/${iconFiles[name]}`;\n}\n","import type { ImgHTMLAttributes } from 'react';\nimport { IconWrapper } from './Icon.styles';\nimport { getIconPath, type IconName } from './icons';\n\nexport interface IconProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt'> {\n name: IconName;\n size?: number;\n color?: string;\n className?: string;\n}\n\nexport function Icon({\n name,\n size = 20,\n color = 'currentColor',\n className,\n ...imgProps\n}: IconProps) {\n const iconPath = getIconPath(name);\n\n return (\n <IconWrapper $size={size} $color={color} className={className} aria-hidden=\"true\">\n <img src={iconPath} alt=\"\" width={size} height={size} {...imgProps} />\n </IconWrapper>\n );\n}\n\nIcon.displayName = 'Icon';\n","import styled from 'styled-components';\n\n// Colors based on the design\nconst NAV_BG = '#232428';\nconst NAV_BORDER = '#1E1F22';\n\nexport const Container = styled.nav`\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: ${NAV_BG};\n border-top: 1px solid ${NAV_BORDER};\n height: 52px;\n z-index: 10;\n\n /* Dark theme support */\n @media (prefers-color-scheme: dark) {\n background-color: #1a1b1e;\n }\n`;\n\nexport const ContentWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 100%;\n padding: 0 8px;\n max-width: 100%;\n\n /* Responsive padding */\n @media (min-width: 768px) {\n padding: 0 16px;\n }\n`;\n\nexport const UserStatusSlot = styled.div`\n display: flex;\n align-items: center;\n min-width: 0; /* Allow flex item to shrink */\n flex: 0 1 auto;\n\n /* Handle overflow for long usernames */\n > * {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nexport const ActionButtonsSlot = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n\n /* Ensure buttons stay visible */\n @media (min-width: 480px) {\n gap: 8px;\n }\n`;\n","import type { ReactNode } from 'react';\nimport {\n ActionButtonsSlot,\n Container,\n ContentWrapper,\n UserStatusSlot,\n} from './NavHorizontal.styles';\n\nexport interface NavHorizontalProps {\n userStatusSlot?: ReactNode;\n actionsSlot?: ReactNode;\n className?: string;\n 'aria-label'?: string;\n}\n\nexport function NavHorizontal({\n userStatusSlot,\n actionsSlot,\n className,\n 'aria-label': ariaLabel = 'Horizontal navigation bar',\n}: NavHorizontalProps) {\n return (\n <Container className={className} role=\"navigation\" aria-label={ariaLabel}>\n <ContentWrapper>\n <UserStatusSlot>{userStatusSlot}</UserStatusSlot>\n <ActionButtonsSlot>{actionsSlot}</ActionButtonsSlot>\n </ContentWrapper>\n </Container>\n );\n}\n\nNavHorizontal.displayName = 'NavHorizontal';\n","import styled from 'styled-components';\n\n// Colors based on the design\nconst NAV_BG = '#202225';\nconst NAV_SEPARATOR = '#36393F';\n\nexport const Container = styled.nav`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 52px; /* Account for horizontal nav height */\n width: 72px;\n background-color: ${NAV_BG};\n display: flex;\n flex-direction: column;\n z-index: 9; /* Below horizontal nav and chat sidebar */\n overflow-y: auto;\n overflow-x: hidden;\n scrollbar-width: none; /* Firefox */\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n\n /* Dark theme support */\n @media (prefers-color-scheme: dark) {\n background-color: #1a1b1e;\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n width: 60px; /* Match MainPane left offset on mobile */\n }\n`;\n\nexport const TopSection = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 56px; /* Same as PaneSectionHeader on mobile */\n padding: 0;\n flex-shrink: 0;\n position: relative;\n\n @media (min-width: 768px) {\n height: 64px; /* Same as PaneSectionHeader on desktop */\n }\n`;\n\nexport const BackButton = styled.button`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: none;\n background-color: ${NAV_SEPARATOR};\n color: #ffffff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease-in-out;\n\n &:hover {\n background-color: #5865F2;\n }\n\n &:active {\n transform: translate(-50%, -50%) scale(0.95);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid #5865F2;\n outline-offset: 2px;\n }\n`;\n\nexport const BackButtonIcon = styled.span`\n font-size: 20px;\n line-height: 1;\n font-weight: bold;\n`;\n\nexport const Separator = styled.div`\n width: 32px;\n height: 2px;\n background-color: ${NAV_SEPARATOR};\n align-self: center;\n margin: 8px auto 12px;\n border-radius: 1px;\n`;\n\nexport const FolderGroupsSlot = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 0 12px 12px;\n flex: 1;\n\n /* Server/workspace icons styling */\n > * {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n transition: border-radius 0.15s ease-out;\n cursor: pointer;\n\n &:hover {\n border-radius: 16px;\n }\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n padding: 0 6px 12px; /* Reduce horizontal padding on mobile */\n }\n`;\n","import { useButton } from '@react-aria/button';\nimport type { ReactNode } from 'react';\nimport { useRef } from 'react';\nimport { Icon } from '../Icon';\nimport {\n BackButton,\n Container,\n FolderGroupsSlot,\n Separator,\n TopSection,\n} from './NavVertical.styles';\n\nexport interface NavVerticalProps {\n onBackClick?: () => void;\n onHomeClick?: () => void;\n folderGroupsSlot?: ReactNode;\n className?: string;\n 'aria-label'?: string;\n}\n\nexport function NavVertical({\n onBackClick,\n onHomeClick,\n folderGroupsSlot,\n className,\n 'aria-label': ariaLabel = 'Vertical navigation sidebar',\n}: NavVerticalProps) {\n const backButtonRef = useRef<HTMLButtonElement>(null);\n const homeButtonRef = useRef<HTMLButtonElement>(null);\n\n const { buttonProps: backButtonProps } = useButton(\n {\n onPress: onBackClick,\n 'aria-label': 'Go back',\n },\n backButtonRef\n );\n\n const { buttonProps: homeButtonProps } = useButton(\n {\n onPress: onHomeClick,\n 'aria-label': 'Home',\n },\n homeButtonRef\n );\n\n return (\n <Container className={className} role=\"navigation\" aria-label={ariaLabel}>\n <TopSection>\n {onBackClick ? (\n <BackButton {...backButtonProps} ref={backButtonRef}>\n <Icon name=\"arrow-left-fill\" size={20} color=\"white\" />\n </BackButton>\n ) : onHomeClick ? (\n <BackButton {...homeButtonProps} ref={homeButtonRef}>\n <Icon name=\"home-fill\" size={24} color=\"white\" />\n </BackButton>\n ) : null}\n </TopSection>\n\n <Separator />\n\n <FolderGroupsSlot>{folderGroupsSlot}</FolderGroupsSlot>\n </Container>\n );\n}\n\nNavVertical.displayName = 'NavVertical';\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n position: relative;\n width: 100%;\n height: 100vh;\n background-color: #36393f;\n overflow: hidden;\n\n /* Dark theme support */\n @media (prefers-color-scheme: dark) {\n background-color: #2f3136;\n }\n`;\n\nexport const MainPane = styled.main`\n position: absolute;\n top: 0;\n left: 72px; /* Width of vertical nav */\n right: 0;\n bottom: 52px; /* Height of horizontal nav */\n background-color: #36393f;\n overflow: auto;\n\n /* Custom scrollbar styling */\n &::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: #202225;\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background-color: #18191c;\n }\n\n /* Firefox scrollbar */\n scrollbar-width: thin;\n scrollbar-color: #202225 transparent;\n\n /* Dark theme support */\n @media (prefers-color-scheme: dark) {\n background-color: #2f3136;\n }\n\n /* Responsive adjustments */\n @media (max-width: 768px) {\n left: 60px; /* Smaller nav on mobile */\n }\n`;\n","import type { ReactNode } from 'react';\nimport { NavHorizontal } from '../NavHorizontal';\nimport { NavVertical } from '../NavVertical';\nimport { Container, MainPane } from './Layout.styles';\n\nexport interface LayoutProps {\n mainPaneSlot: ReactNode;\n navVerticalSlot?: ReactNode;\n navHorizontalUserSlot?: ReactNode;\n navHorizontalActionsSlot?: ReactNode;\n onNavBackClick?: () => void;\n className?: string;\n}\n\nexport function Layout({\n mainPaneSlot,\n navVerticalSlot,\n navHorizontalUserSlot,\n navHorizontalActionsSlot,\n onNavBackClick,\n className,\n}: LayoutProps) {\n return (\n <Container className={className}>\n <NavVertical folderGroupsSlot={navVerticalSlot} onBackClick={onNavBackClick} />\n <MainPane>{mainPaneSlot}</MainPane>\n <NavHorizontal\n userStatusSlot={navHorizontalUserSlot}\n actionsSlot={navHorizontalActionsSlot}\n />\n </Container>\n );\n}\n\nLayout.displayName = 'Layout';\n","import styled, { css } from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 4px;\n`;\n\ninterface ActionButtonProps {\n $isActive?: boolean;\n $size?: number;\n $isPrimary?: boolean;\n}\n\nexport const ActionButton = styled.button<ActionButtonProps>`\n width: ${({ $size = 32 }) => $size}px;\n height: ${({ $size = 32 }) => $size}px;\n min-width: ${({ $size = 32 }) => $size}px;\n min-height: ${({ $size = 32 }) => $size}px;\n border-radius: ${({ $isPrimary }) => ($isPrimary ? '50%' : '4px')};\n border: none;\n background-color: ${({ $isPrimary }) => ($isPrimary ? '#5865F2' : 'transparent')};\n color: ${({ $isPrimary }) => ($isPrimary ? '#FFFFFF' : '#b9bbbe')};\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s ease;\n font-size: 16px;\n\n &:hover {\n background-color: ${({ $isPrimary }) => ($isPrimary ? '#4752C4' : 'rgba(255, 255, 255, 0.1)')};\n color: ${({ $isPrimary }) => ($isPrimary ? '#FFFFFF' : '#dcddde')};\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n ${({ $isActive, $isPrimary }) =>\n $isActive &&\n !$isPrimary &&\n css`\n background-color: rgba(255, 255, 255, 0.08);\n color: #ffffff;\n `}\n\n ${({ $isActive, $isPrimary }) =>\n $isActive &&\n $isPrimary &&\n css`\n background-color: #4752C4;\n color: #ffffff;\n `}\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid #5865f2;\n outline-offset: 2px;\n }\n`;\n","import { useButton } from '@react-aria/button';\nimport type { ReactNode } from 'react';\nimport { useRef } from 'react';\nimport { Icon } from '../Icon';\nimport { ActionButton, Container } from './ActionButtons.styles';\n\nexport interface ActionButtonsProps {\n onCalendarClick?: () => void;\n onSettingsClick?: () => void;\n onChatClick?: () => void;\n isCalendarActive?: boolean;\n isSettingsActive?: boolean;\n isChatActive?: boolean;\n className?: string;\n}\n\ninterface ButtonProps {\n icon: ReactNode;\n label: string;\n onClick?: () => void;\n isActive?: boolean;\n size?: number;\n isPrimary?: boolean;\n}\n\nfunction ActionButtonItem({ icon, label, onClick, isActive, size, isPrimary }: ButtonProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n onPress: onClick,\n 'aria-label': label,\n 'aria-pressed': isActive,\n },\n ref\n );\n\n return (\n <ActionButton\n {...buttonProps}\n ref={ref}\n $isActive={isActive}\n $size={size}\n $isPrimary={isPrimary}\n >\n {icon}\n </ActionButton>\n );\n}\n\nexport function ActionButtons({\n onCalendarClick,\n onSettingsClick,\n onChatClick: _onChatClick,\n isCalendarActive = false,\n isSettingsActive = false,\n isChatActive: _isChatActive = false,\n className,\n}: ActionButtonsProps) {\n return (\n <Container className={className}>\n <ActionButtonItem\n icon={<Icon name=\"calendar-fill\" size={16} color=\"#b9bbbe\" />}\n label=\"Calendar\"\n onClick={onCalendarClick}\n isActive={isCalendarActive}\n size={32}\n />\n <ActionButtonItem\n icon={<Icon name=\"settings-3-fill\" size={16} color=\"#b9bbbe\" />}\n label=\"Settings\"\n onClick={onSettingsClick}\n isActive={isSettingsActive}\n size={32}\n />\n {/* Empty space to maintain layout - actual chat button is handled by CopilotKit */}\n <div style={{ width: '36px', height: '36px', visibility: 'hidden' }} aria-hidden=\"true\" />\n </Container>\n );\n}\n\nActionButtons.displayName = 'ActionButtons';\n","import styled from 'styled-components';\n\nconst statusColors = {\n online: '#43B581',\n idle: '#FAA61A',\n busy: '#F04747',\n offline: '#747F8D',\n};\n\ninterface StatusIndicatorProps {\n $status: 'online' | 'idle' | 'busy' | 'offline';\n}\n\ninterface ContainerProps {\n $isDisabled?: boolean;\n}\n\nexport const Container = styled.button<ContainerProps>`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 6px;\n border-radius: 4px;\n border: none;\n background: transparent;\n color: inherit;\n font: inherit;\n transition: background-color 0.2s ease, opacity 0.2s ease;\n cursor: ${(props) => (props.$isDisabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$isDisabled ? 0.5 : 1)};\n text-align: left;\n width: 100%;\n\n &:hover:not(:disabled) {\n background-color: rgba(255, 255, 255, 0.05);\n }\n\n &:focus-visible {\n outline: 2px solid #5865F2;\n outline-offset: 2px;\n }\n\n &:active:not(:disabled) {\n background-color: rgba(255, 255, 255, 0.08);\n }\n`;\n\nexport const IconWrapper = styled.div`\n position: relative;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n background-color: #36393f;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n`;\n\nexport const WorkflowInfo = styled.div`\n display: flex;\n flex-direction: column;\n min-width: 0;\n`;\n\nexport const WorkflowName = styled.span`\n color: #ffffff;\n font-size: 13px;\n font-weight: 600;\n line-height: 1.2;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const WorkflowStatus = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n color: #b9bbbe;\n font-size: 11px;\n line-height: 1.2;\n`;\n\nexport const StatusIndicatorOuter = styled.span<StatusIndicatorProps>`\n position: absolute;\n bottom: -2px;\n right: -2px;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background-color: #232428;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n`;\n\nexport const StatusIndicatorInner = styled.span<StatusIndicatorProps>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ $status }) => statusColors[$status]};\n flex-shrink: 0;\n`;\n","import { useButton } from '@react-aria/button';\nimport type { AriaButtonProps } from '@react-types/button';\nimport type { ReactNode } from 'react';\nimport { useRef } from 'react';\nimport {\n Container,\n IconWrapper,\n StatusIndicatorInner,\n StatusIndicatorOuter,\n WorkflowInfo,\n WorkflowName,\n WorkflowStatus,\n} from './WorkflowStatusCard.styles';\n\nexport interface WorkflowStatusCardProps extends Omit<AriaButtonProps, 'children'> {\n icon: ReactNode;\n workflowName: string;\n status?: 'online' | 'idle' | 'busy' | 'offline';\n statusText?: string;\n className?: string;\n onClick?: () => void;\n}\n\nexport function WorkflowStatusCard({\n icon,\n workflowName,\n status = 'offline',\n statusText,\n className,\n onClick,\n onPress,\n isDisabled,\n ...ariaProps\n}: WorkflowStatusCardProps) {\n const displayStatus = statusText || status;\n const ref = useRef<HTMLButtonElement>(null);\n\n // Combine onClick with onPress for React Aria compatibility\n const handlePress = () => {\n if (onClick) onClick();\n if (onPress) onPress({} as never);\n };\n\n const { buttonProps } = useButton(\n {\n ...ariaProps,\n onPress: handlePress,\n isDisabled,\n 'aria-label': ariaProps['aria-label'] || `${workflowName} workflow, status: ${displayStatus}`,\n },\n ref\n );\n\n return (\n <Container {...buttonProps} ref={ref} className={className} $isDisabled={isDisabled}>\n <IconWrapper>\n {icon}\n <StatusIndicatorOuter $status={status}>\n <StatusIndicatorInner $status={status} />\n </StatusIndicatorOuter>\n </IconWrapper>\n <WorkflowInfo>\n <WorkflowName>{workflowName}</WorkflowName>\n <WorkflowStatus>{displayStatus}</WorkflowStatus>\n </WorkflowInfo>\n </Container>\n );\n}\n\nWorkflowStatusCard.displayName = 'WorkflowStatusCard';\n","import styled from 'styled-components';\n\n// Dark theme colors matching MainPaneMenu\nconst _BG_PRIMARY = '#2F3136';\nconst _BG_SECONDARY = '#202225';\nconst BG_TERTIARY = '#36393F';\nconst TEXT_PRIMARY = '#FFFFFF';\nconst TEXT_SECONDARY = '#B9BBBE';\nconst TEXT_MUTED = '#72767D';\nconst ACCENT_COLOR = '#5865F2';\nconst HOVER_BG = 'rgba(255, 255, 255, 0.05)';\n\n/**\n * Main container for the notification card with dark theme\n */\nexport const DarkNotificationCardContainer = styled.div`\n display: flex;\n flex-direction: column;\n padding: 6px;\n background: ${BG_TERTIARY};\n border-radius: 8px;\n gap: 4px;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n`;\n\n/**\n * Section header button (collapsible) - dark theme\n */\nexport const DarkSectionHeader = styled.button`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 4px 2px;\n border: none;\n background: transparent;\n font-family: ${(props) => props.theme?.fonts?.body || 'system-ui, sans-serif'};\n font-size: 11px;\n font-weight: 600;\n color: ${TEXT_SECONDARY};\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n color: ${TEXT_PRIMARY};\n }\n\n &:focus-visible {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: 2px;\n border-radius: 4px;\n }\n`;\n\n/**\n * Chevron icon for section header with rotation animation - dark theme\n */\ninterface ChevronIconProps {\n $isExpanded: boolean;\n}\n\nexport const DarkChevronIcon = styled.span<ChevronIconProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease;\n color: ${TEXT_MUTED};\n\n ${(props) =>\n props.$isExpanded\n ? `\n transform: rotate(0deg);\n `\n : `\n transform: rotate(-90deg);\n `}\n\n svg {\n width: 12px;\n height: 12px;\n }\n`;\n\n/**\n * Container for section content (list of notification items) - dark theme\n */\nexport const DarkSectionContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding-left: 4px;\n margin-top: 2px;\n min-width: 0;\n overflow: hidden;\n`;\n\n/**\n * Individual notification item wrapper (button) - dark theme\n */\ninterface NotificationItemWrapperProps {\n $isSelected: boolean;\n $hasIcon: boolean;\n}\n\nexport const DarkNotificationItemWrapper = styled.button<NotificationItemWrapperProps>`\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 4px 6px;\n border: none;\n cursor: pointer;\n text-align: left;\n transition: all 0.2s ease;\n border-radius: 4px;\n min-width: 0;\n overflow: hidden;\n\n /* Default state - transparent background */\n background-color: ${(props) => (props.$isSelected ? ACCENT_COLOR : 'transparent')};\n\n /* Hover state */\n &:hover:not(:disabled) {\n background-color: ${(props) => (props.$isSelected ? '#4752C4' : HOVER_BG)};\n }\n\n /* Active state */\n &:active:not(:disabled) {\n transform: scale(0.99);\n }\n\n /* Focus state */\n &:focus-visible {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: 2px;\n }\n\n /* Disabled state */\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n`;\n\n/**\n * Icon container for notification items - dark theme\n */\ninterface ItemIconProps {\n $iconColor?: string;\n $hasCustomIcon: boolean;\n}\n\nexport const DarkItemIcon = styled.span<ItemIconProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n border-radius: ${(props) => (props.$hasCustomIcon ? '4px' : '50%')};\n background-color: ${(props) => props.$iconColor || 'transparent'};\n color: ${(props) => (props.$hasCustomIcon ? TEXT_PRIMARY : TEXT_MUTED)};\n font-size: 12px;\n\n /* Default circle icon styling */\n ${(props) =>\n !props.$hasCustomIcon &&\n `\n svg {\n width: 14px;\n height: 14px;\n }\n `}\n\n /* Custom icon (emoji or colored icon) styling */\n ${(props) =>\n props.$hasCustomIcon &&\n `\n padding: 2px;\n `}\n`;\n\n/**\n * Text content for notification items - dark theme\n */\ninterface ItemTextProps {\n $isSelected: boolean;\n}\n\nexport const DarkItemText = styled.span<ItemTextProps>`\n flex: 1;\n font-family: ${(props) => props.theme?.fonts?.body || 'system-ui, sans-serif'};\n font-size: 11px;\n font-weight: ${(props) => (props.$isSelected ? '500' : '400')};\n color: ${(props) => (props.$isSelected ? TEXT_PRIMARY : TEXT_SECONDARY)};\n line-height: 1.3;\n word-wrap: break-word;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\n/**\n * Three-dot menu button (shown on selected items) - dark theme\n */\nexport const DarkMenuButton = styled.button`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background-color: transparent;\n color: ${TEXT_PRIMARY};\n cursor: pointer;\n transition: all 0.2s ease;\n flex-shrink: 0;\n\n &:hover:not(:disabled) {\n background-color: rgba(255, 255, 255, 0.1);\n }\n\n &:active:not(:disabled) {\n background-color: rgba(255, 255, 255, 0.15);\n transform: scale(0.95);\n }\n\n &:focus-visible {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: 2px;\n }\n\n svg {\n width: 14px;\n height: 14px;\n }\n`;\n\n/**\n * Timestamp text for action logs\n */\nexport const DarkTimestamp = styled.span`\n font-size: 10px;\n color: ${TEXT_MUTED};\n white-space: normal;\n word-wrap: break-word;\n text-align: right;\n max-width: 60px;\n`;\n","import { useButton } from '@react-aria/button';\nimport React, { type KeyboardEvent, useRef, useState } from 'react';\nimport type {\n NotificationCardProps,\n NotificationItem,\n NotificationSection,\n} from './NotificationCard';\nimport {\n DarkChevronIcon,\n DarkItemIcon,\n DarkItemText,\n DarkMenuButton,\n DarkNotificationCardContainer,\n DarkNotificationItemWrapper,\n DarkSectionContent,\n DarkSectionHeader,\n DarkTimestamp,\n} from './NotificationCard.dark.styles';\n\n/**\n * Dark-themed NotificationCard component for MainPaneMenu\n *\n * A dark variant of the NotificationCard component specifically designed\n * for use within the MainPaneMenu component. Features the same functionality\n * but with colors matching the dark theme.\n */\nexport const DarkNotificationCard: React.FC<NotificationCardProps> = ({\n sections,\n onItemClick,\n selectedItemId,\n onMenuClick,\n className,\n 'aria-label': ariaLabel = 'Action log history',\n}) => {\n // Track collapsed state for each section\n const [collapsedSections, setCollapsedSections] = useState<Record<string, boolean>>(() => {\n const initial: Record<string, boolean> = {};\n for (const section of sections) {\n initial[section.title] = section.isCollapsed || false;\n }\n return initial;\n });\n\n const toggleSection = (sectionTitle: string) => {\n setCollapsedSections((prev) => ({\n ...prev,\n [sectionTitle]: !prev[sectionTitle],\n }));\n };\n\n return (\n <DarkNotificationCardContainer className={className} aria-label={ariaLabel} role=\"region\">\n {sections.map((section) => (\n <DarkSectionComponent\n key={section.title}\n section={section}\n isCollapsed={collapsedSections[section.title] ?? false}\n onToggle={() => toggleSection(section.title)}\n onItemClick={onItemClick}\n selectedItemId={selectedItemId}\n onMenuClick={onMenuClick}\n />\n ))}\n </DarkNotificationCardContainer>\n );\n};\n\n/**\n * Individual section component with collapsible header - dark theme\n */\ninterface DarkSectionComponentProps {\n section: NotificationSection;\n isCollapsed: boolean;\n onToggle: () => void;\n onItemClick?: (item: NotificationItem) => void;\n selectedItemId?: string;\n onMenuClick?: (item: NotificationItem) => void;\n}\n\nconst DarkSectionComponent: React.FC<DarkSectionComponentProps> = ({\n section,\n isCollapsed,\n onToggle,\n onItemClick,\n selectedItemId,\n onMenuClick,\n}) => {\n const headerRef = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n onPress: onToggle,\n 'aria-label': `${section.title} section, ${isCollapsed ? 'collapsed' : 'expanded'}`,\n 'aria-expanded': !isCollapsed,\n },\n headerRef\n );\n\n return (\n <section aria-label={`${section.title} actions`}>\n <DarkSectionHeader {...buttonProps} ref={headerRef}>\n {section.title}\n <DarkChevronIcon $isExpanded={!isCollapsed} aria-hidden=\"true\">\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Expand/collapse icon\"\n >\n <title>Expand/collapse icon</title>\n <path\n d=\"M4 5L7 8L10 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </DarkChevronIcon>\n </DarkSectionHeader>\n\n {!isCollapsed && (\n <DarkSectionContent role=\"list\">\n {section.items.map((item) => (\n <DarkNotificationItemComponent\n key={item.id}\n item={item}\n isSelected={item.id === selectedItemId}\n onItemClick={onItemClick}\n onMenuClick={onMenuClick}\n />\n ))}\n </DarkSectionContent>\n )}\n </section>\n );\n};\n\n/**\n * Individual notification item component - dark theme\n */\ninterface DarkNotificationItemComponentProps {\n item: NotificationItem & { timestamp?: string };\n isSelected: boolean;\n onItemClick?: (item: NotificationItem) => void;\n onMenuClick?: (item: NotificationItem) => void;\n}\n\nconst DarkNotificationItemComponent: React.FC<DarkNotificationItemComponentProps> = ({\n item,\n isSelected,\n onItemClick,\n onMenuClick,\n}) => {\n const itemRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLButtonElement>(null);\n\n const { buttonProps: itemButtonProps } = useButton(\n {\n onPress: () => onItemClick?.(item),\n 'aria-label': `Action: ${item.text}`,\n 'aria-current': isSelected ? 'true' : undefined,\n },\n itemRef\n );\n\n const { buttonProps: menuButtonProps } = useButton(\n {\n onPress: () => onMenuClick?.(item),\n 'aria-label': `Options for ${item.text}`,\n },\n menuRef\n );\n\n // Handle keyboard navigation between item and menu button\n const handleItemKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (isSelected && e.key === 'Tab' && !e.shiftKey) {\n // Allow natural tab to menu button\n return;\n }\n };\n\n return (\n <DarkNotificationItemWrapper\n {...itemButtonProps}\n ref={itemRef}\n $isSelected={isSelected}\n $hasIcon={!!item.icon}\n role=\"listitem\"\n onKeyDown={handleItemKeyDown}\n >\n <DarkItemIcon $iconColor={item.iconColor} $hasCustomIcon={!!item.icon}>\n {item.icon || (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n )}\n </DarkItemIcon>\n <DarkItemText $isSelected={isSelected}>{item.text}</DarkItemText>\n {item.timestamp && <DarkTimestamp>{item.timestamp}</DarkTimestamp>}\n {isSelected && onMenuClick && (\n <DarkMenuButton\n {...menuButtonProps}\n ref={menuRef}\n onClick={(e) => {\n e.stopPropagation();\n menuButtonProps.onClick?.(e);\n }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <title>More options</title>\n <circle cx=\"8\" cy=\"3\" r=\"1\" fill=\"currentColor\" />\n <circle cx=\"8\" cy=\"8\" r=\"1\" fill=\"currentColor\" />\n <circle cx=\"8\" cy=\"13\" r=\"1\" fill=\"currentColor\" />\n </svg>\n </DarkMenuButton>\n )}\n </DarkNotificationItemWrapper>\n );\n};\n\nDarkNotificationCard.displayName = 'DarkNotificationCard';\n","import { Button, Disclosure, DisclosureGroup, DisclosurePanel } from 'react-aria-components';\nimport styled from 'styled-components';\n\n// Main color constants matching the dark theme\nconst BG_PRIMARY = '#2F3136';\nconst BG_SECONDARY = '#202225';\nconst BG_TERTIARY = '#36393F';\nconst TEXT_PRIMARY = '#FFFFFF';\nconst TEXT_SECONDARY = '#B9BBBE';\nconst TEXT_MUTED = '#72767D';\nconst ACCENT_COLOR = '#5865F2';\nconst HOVER_BG = 'rgba(255, 255, 255, 0.05)';\n\nexport const Container = styled.div`\n width: 100%;\n height: 100%;\n background-color: ${BG_PRIMARY};\n color: ${TEXT_PRIMARY};\n display: flex;\n flex-direction: column;\n font-family: ${(props) => props.theme?.fonts?.body || 'system-ui, sans-serif'};\n overflow: hidden; // Prevent content from escaping container bounds\n`;\n\nexport const TabListWrapper = styled.div`\n display: flex;\n border-bottom: 2px solid ${BG_TERTIARY};\n background-color: ${BG_SECONDARY};\n padding: 0 16px;\n gap: 8px;\n overflow-x: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n flex-shrink: 0; // Prevent shrinking when content overflows\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n @media (max-width: 640px) {\n padding: 0 8px;\n gap: 4px;\n }\n`;\n\nexport const TabButton = styled.button<{ $isSelected?: boolean }>`\n padding: 12px 20px;\n background: none;\n border: none;\n color: ${(props) => (props.$isSelected ? TEXT_PRIMARY : TEXT_SECONDARY)};\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n position: relative;\n transition: color 0.2s ease;\n white-space: nowrap;\n flex-shrink: 0;\n\n @media (max-width: 640px) {\n padding: 10px 12px;\n font-size: 12px;\n }\n\n &:hover {\n color: ${TEXT_PRIMARY};\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: -2px;\n border-radius: 4px;\n }\n\n ${(props) =>\n props.$isSelected &&\n `\n &::after {\n content: '';\n position: absolute;\n bottom: -2px;\n left: 0;\n right: 0;\n height: 2px;\n background-color: ${ACCENT_COLOR};\n }\n `}\n`;\n\nexport const TabPanelWrapper = styled.div`\n flex: 1;\n padding: 24px;\n overflow-y: auto;\n overflow-x: hidden; // Prevent horizontal overflow\n background-color: ${BG_PRIMARY};\n min-height: 0; // Enable proper flex shrinking and scrolling\n\n @media (max-width: 640px) {\n padding: 16px;\n }\n\n @media (max-width: 480px) {\n padding: 12px;\n }\n\n /* Custom scrollbar */\n scrollbar-width: thin;\n scrollbar-color: ${BG_TERTIARY} ${BG_PRIMARY};\n\n &::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-track {\n background: ${BG_PRIMARY};\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${BG_TERTIARY};\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: #4a4d52;\n }\n`;\n\n// Runs tab container\nexport const RunsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 20px;\n width: 100%;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n\n @media (max-width: 640px) {\n gap: 16px;\n }\n`;\n\n// Browse Automations button\nexport const BrowseButton = styled.button`\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 12px 16px;\n background-color: ${BG_SECONDARY};\n border: 1px solid ${BG_TERTIARY};\n border-radius: 8px;\n color: ${TEXT_SECONDARY};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n overflow: hidden;\n\n @media (max-width: 640px) {\n padding: 10px 12px;\n font-size: 13px;\n gap: 8px;\n }\n\n &:hover {\n background-color: ${HOVER_BG};\n color: ${TEXT_PRIMARY};\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: 2px;\n }\n`;\n\n// DisclosureGroup styles\nexport const StyledDisclosureGroup = styled(DisclosureGroup)`\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n`;\n\n// Category Disclosure (Information, Community)\nexport const CategoryDisclosure = styled(Disclosure)`\n background-color: transparent;\n display: flex;\n flex-direction: column;\n width: 100%;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n\n &[data-expanded] {\n /* Styles when expanded */\n }\n\n &[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n\n// Category Header (trigger button)\nexport const CategoryHeader = styled(Button)`\n width: 100%;\n padding: 4px 0;\n background: none;\n border: none;\n color: ${TEXT_SECONDARY};\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: pointer;\n transition: color 0.2s ease;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n\n &:hover {\n color: ${TEXT_PRIMARY};\n }\n\n &:focus {\n outline: none;\n }\n\n &[data-focus-visible] {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: 2px;\n border-radius: 4px;\n }\n`;\n\n// Category Title with icon\nexport const CategoryTitle = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n\n @media (max-width: 640px) {\n gap: 6px;\n }\n`;\n\n// Category Icon\nexport const CategoryIcon = styled.img`\n width: 16px;\n height: 16px;\n opacity: 0.6;\n flex-shrink: 0;\n\n @media (max-width: 640px) {\n width: 14px;\n height: 14px;\n }\n`;\n\n// Hashtag Icon\nexport const HashtagIcon = styled.img`\n width: 14px;\n height: 14px;\n opacity: 0.6;\n flex-shrink: 0;\n\n @media (max-width: 640px) {\n width: 12px;\n height: 12px;\n }\n`;\n\n// Chevron icon\nexport const ChevronIcon = styled.div<{ $isExpanded: boolean }>`\n display: flex;\n align-items: center;\n transition: transform 0.2s ease;\n transform: ${(props) => (props.$isExpanded ? 'rotate(0deg)' : 'rotate(-90deg)')};\n flex-shrink: 0;\n margin-left: 4px;\n\n img {\n width: 16px;\n height: 16px;\n opacity: 0.6;\n }\n\n @media (max-width: 640px) {\n img {\n width: 14px;\n height: 14px;\n }\n }\n`;\n\n// Category content panel\nexport const CategoryDisclosurePanel = styled(DisclosurePanel)`\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding-left: 4px;\n width: 100%;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n\n @media (max-width: 640px) {\n padding-left: 2px;\n }\n\n &[data-entering] {\n animation: slideDown 0.2s ease;\n }\n\n @keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n`;\n\n// Item container (announcements, server-rules, etc.)\nexport const ItemContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.1s ease;\n min-width: 0;\n overflow: hidden;\n\n @media (max-width: 640px) {\n gap: 6px;\n padding: 4px 6px;\n }\n\n &:hover {\n background-color: ${HOVER_BG};\n }\n`;\n\n// Nested item disclosure (for individual items)\nexport const ItemDisclosure = styled(Disclosure)`\n background-color: transparent;\n margin-bottom: 4px;\n display: flex;\n flex-direction: column;\n width: 100%;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n\n &[data-expanded] {\n background-color: ${BG_SECONDARY};\n border-radius: 8px;\n }\n`;\n\n// Item header for nested disclosure\nexport const ItemHeader = styled(Button)<{ $isExpanded: boolean }>`\n width: 100%;\n padding: 0;\n background: none;\n border: none;\n cursor: pointer;\n transition: all 0.1s ease;\n\n &:focus {\n outline: none;\n }\n\n &[data-focus-visible] {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: 2px;\n border-radius: 4px;\n }\n`;\n\n// Item disclosure panel for logs\nexport const ItemDisclosurePanel = styled(DisclosurePanel)`\n padding: 6px;\n background-color: ${BG_SECONDARY};\n border-radius: 0 0 8px 8px;\n margin-top: -4px;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n\n @media (max-width: 640px) {\n padding: 6px;\n }\n\n &[data-entering] {\n animation: slideDown 0.2s ease;\n }\n\n @keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n`;\n\n// Item icon\nexport const ItemIcon = styled.img`\n width: 20px;\n height: 20px;\n opacity: 0.6;\n flex-shrink: 0;\n\n @media (max-width: 640px) {\n width: 18px;\n height: 18px;\n }\n`;\n\n// Item name\nexport const ItemName = styled.span<{ $dimmed?: boolean }>`\n flex: 1;\n font-size: 14px;\n color: ${(props) => (props.$dimmed ? TEXT_MUTED : TEXT_SECONDARY)};\n font-weight: ${(props) => (props.$dimmed ? 'normal' : '500')};\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n\n @media (max-width: 640px) {\n font-size: 13px;\n }\n\n ${ItemContainer}:hover & {\n color: ${(props) => (props.$dimmed ? TEXT_SECONDARY : TEXT_PRIMARY)};\n }\n`;\n\n// Run status indicator\nexport const RunStatus = styled.span<{ $status: 'completed' | 'running' | 'failed' }>`\n font-size: 14px;\n font-weight: 500;\n flex-shrink: 0;\n margin-left: auto;\n color: ${(props) => {\n switch (props.$status) {\n case 'completed':\n return '#10b981'; // green\n case 'running':\n return '#f59e0b'; // yellow\n case 'failed':\n return '#ef4444'; // red\n default:\n return TEXT_SECONDARY;\n }\n }};\n\n @media (max-width: 640px) {\n font-size: 12px;\n }\n`;\n\n// Old Disclosure styles (kept for backward compatibility)\nexport const DisclosureContainer = styled.div`\n margin-bottom: 12px;\n border-radius: 12px;\n background-color: ${BG_SECONDARY};\n overflow: hidden;\n`;\n\nexport const DisclosureHeader = styled.button`\n width: 100%;\n padding: 16px;\n background: ${BG_SECONDARY};\n border: none;\n color: ${TEXT_PRIMARY};\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: pointer;\n transition: background-color 0.2s ease;\n text-align: left;\n\n &:hover {\n background-color: ${HOVER_BG};\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: -2px;\n }\n\n > div {\n flex: 1;\n }\n\n strong {\n display: block;\n font-size: 14px;\n margin-bottom: 4px;\n }\n`;\n\nexport const DisclosureIcon = styled.span<{ $isExpanded: boolean }>`\n font-size: 12px;\n color: ${TEXT_SECONDARY};\n transition: transform 0.2s ease;\n transform: ${(props) => (props.$isExpanded ? 'rotate(180deg)' : 'rotate(0deg)')};\n`;\n\nexport const DisclosureContent = styled.div`\n padding: 16px;\n padding-top: 0;\n background-color: ${BG_TERTIARY};\n color: ${TEXT_SECONDARY};\n font-size: 13px;\n line-height: 1.6;\n animation: slideDown 0.2s ease;\n\n @keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n`;\n\n// Meter (Usage tab) styles\nexport const MeterContainer = styled.div`\n max-width: 600px;\n margin: 0 auto;\n`;\n\nexport const MeterLabel = styled.div`\n font-size: 16px;\n font-weight: 600;\n margin-bottom: 16px;\n color: ${TEXT_PRIMARY};\n`;\n\nexport const MeterBar = styled.div`\n width: 100%;\n height: 24px;\n background-color: ${BG_SECONDARY};\n border-radius: 12px;\n overflow: hidden;\n position: relative;\n margin-bottom: 12px;\n`;\n\nexport const MeterFill = styled.div<{ $percentage: number; $color: string }>`\n height: 100%;\n width: ${(props) => props.$percentage}%;\n background: linear-gradient(90deg, ${(props) => props.$color}dd, ${(props) => props.$color});\n border-radius: 12px;\n transition: width 0.3s ease, background 0.3s ease;\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);\n animation: shimmer 2s infinite;\n }\n\n @keyframes shimmer {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n }\n`;\n\nexport const MeterStats = styled.div`\n font-size: 14px;\n color: ${TEXT_SECONDARY};\n text-align: center;\n\n small {\n font-size: 12px;\n color: ${TEXT_SECONDARY};\n opacity: 0.8;\n }\n`;\n\n// Connections tab styles\nexport const ConnectionsContainer = styled.div`\n max-width: 500px;\n margin: 0 auto;\n text-align: center;\n`;\n\nexport const ConnectionDescription = styled.p`\n font-size: 14px;\n color: ${TEXT_SECONDARY};\n line-height: 1.6;\n margin-bottom: 24px;\n`;\n\nexport const GoogleButton = styled.button<{ $isConnected?: boolean }>`\n width: 100%;\n padding: 16px 24px;\n font-size: 15px;\n font-weight: 600;\n color: ${(props) => (props.$isConnected ? TEXT_PRIMARY : '#FFFFFF')};\n background: ${(props) => (props.$isConnected ? BG_TERTIARY : 'linear-gradient(135deg, #4285F4, #34A853)')};\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(66, 133, 244, 0.3);\n }\n\n &:active {\n transform: translateY(0);\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid ${ACCENT_COLOR};\n outline-offset: 2px;\n }\n\n ${(props) =>\n props.$isConnected &&\n `\n &:hover {\n background-color: #ef4444;\n box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);\n }\n `}\n`;\n","import { useButton } from '@react-aria/button';\nimport { useMeter } from '@react-aria/meter';\nimport { useTab, useTabList, useTabPanel } from '@react-aria/tabs';\nimport { Item } from '@react-stately/collections';\nimport { useTabListState } from '@react-stately/tabs';\nimport { useRef, useState } from 'react';\nimport type { Key } from 'react-aria-components';\nimport { Heading } from 'react-aria-components';\nimport { DarkNotificationCard } from '../../NotificationCard/DarkNotificationCard';\nimport type { NotificationSection } from '../../NotificationCard/NotificationCard';\nimport {\n BrowseButton,\n CategoryDisclosure,\n CategoryDisclosurePanel,\n CategoryHeader,\n CategoryTitle,\n ChevronIcon,\n ConnectionDescription,\n ConnectionsContainer,\n Container,\n GoogleButton,\n HashtagIcon,\n ItemContainer,\n ItemDisclosure,\n ItemDisclosurePanel,\n ItemHeader,\n ItemIcon,\n ItemName,\n MeterBar,\n MeterContainer,\n MeterFill,\n MeterLabel,\n MeterStats,\n RunStatus,\n RunsContainer,\n StyledDisclosureGroup,\n TabButton,\n TabListWrapper,\n TabPanelWrapper,\n} from './PaneMenus.styles';\n\n// Icons from assets/icon-set\nconst ICONS = {\n hashtag: '/assets/icon-set/Icon-hashtag.svg',\n bell: '/assets/icon-set/Icon-bell-fill.svg',\n file: '/assets/icon-set/Icon-file-3-fill.svg',\n link: '/assets/icon-set/Icon-external-link-fill.svg',\n chat: '/assets/icon-set/Icon-chat-1-fill.svg',\n community: '/assets/icon-set/Icon-community-fill.svg',\n cpu: '/assets/icon-set/Icon-cpu-fill.svg',\n chevronDown: '/assets/icon-set/Icon-arrow-down-s-fill.svg',\n warning: '/assets/icon-set/Icon-error-warning-fill.svg',\n};\n\nexport interface ActionLog {\n id: string;\n text: string;\n timestamp: string;\n icon?: React.ReactNode;\n iconColor?: string;\n}\n\nexport interface RunItem {\n id: string;\n name: string;\n status: 'completed' | 'running' | 'failed';\n details: string;\n category: 'scheduled' | 'completed' | 'issues';\n icon?: 'bell' | 'file' | 'link' | 'chat' | 'warning';\n logs?: ActionLog[];\n}\n\nexport interface PaneMenusProps {\n activeTab?: 'runs' | 'usage' | 'connections';\n onTabChange?: (tab: 'runs' | 'usage' | 'connections') => void;\n\n // Runs tab props\n runs?: RunItem[];\n\n // Usage tab props\n currentUsage?: number;\n maxUsage?: number;\n\n // Connections tab props\n isGoogleConnected?: boolean;\n onGoogleConnect?: () => void;\n onGoogleDisconnect?: () => void;\n\n // Browse action\n onBrowseAutomations?: () => void;\n}\n\n// Individual item with nested disclosure for logs\nfunction ItemWithLogs({ run }: { run: RunItem }) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n // Format logs into NotificationSection format\n const logSections: NotificationSection[] = run.logs\n ? [\n {\n title: 'Action History',\n items: run.logs.map((log) => ({\n id: log.id,\n text: log.text,\n icon: log.icon,\n iconColor: log.iconColor,\n timestamp: log.timestamp,\n })),\n },\n ]\n : [];\n\n return (\n <ItemDisclosure id={run.id}>\n <ItemHeader\n slot=\"trigger\"\n onClick={() => setIsExpanded(!isExpanded)}\n $isExpanded={isExpanded}\n >\n <ItemContainer as=\"div\">\n <ItemIcon src={ICONS[run.icon || 'bell']} alt=\"\" />\n <ItemName>{run.name}</ItemName>\n <RunStatus $status={run.status}>\n {run.status === 'completed' && '✓'}\n {run.status === 'running' && '⟳'}\n {run.status === 'failed' && '✕'}\n </RunStatus>\n <ChevronIcon $isExpanded={isExpanded}>\n <img src={ICONS.chevronDown} alt=\"\" />\n </ChevronIcon>\n </ItemContainer>\n </ItemHeader>\n {isExpanded && (\n <ItemDisclosurePanel>\n {run.logs && run.logs.length > 0 ? (\n <DarkNotificationCard sections={logSections} />\n ) : (\n <div style={{ color: '#72767D', fontSize: '13px', padding: '8px' }}>\n No action logs available\n </div>\n )}\n </ItemDisclosurePanel>\n )}\n </ItemDisclosure>\n );\n}\n\n// Runs tab content with DisclosureGroup\nfunction RunsTabContent({\n runs,\n onBrowseAutomations,\n}: {\n runs: RunItem[];\n onBrowseAutomations?: () => void;\n}) {\n const [expandedKeys, setExpandedKeys] = useState<Set<Key>>(\n new Set(['scheduled', 'completed', 'issues']) // All sections open by default\n );\n\n // Group runs by category\n const scheduledRuns = runs.filter((r) => r.category === 'scheduled');\n const completedRuns = runs.filter((r) => r.category === 'completed');\n const issuesRuns = runs.filter((r) => r.category === 'issues');\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n onPress: onBrowseAutomations,\n },\n buttonRef\n );\n\n return (\n <RunsContainer>\n <BrowseButton {...buttonProps} ref={buttonRef}>\n <ItemIcon src={ICONS.cpu} alt=\"\" />\n <span>Browse Automations</span>\n </BrowseButton>\n\n <StyledDisclosureGroup\n expandedKeys={expandedKeys}\n onExpandedChange={setExpandedKeys}\n allowsMultipleExpanded\n aria-label=\"Run sections\"\n >\n {/* Scheduled Section */}\n <CategoryDisclosure id=\"scheduled\">\n <Heading level={3}>\n <CategoryHeader slot=\"trigger\">\n <CategoryTitle>\n <HashtagIcon src={ICONS.hashtag} alt=\"\" />\n <span>SCHEDULED</span>\n </CategoryTitle>\n <ChevronIcon $isExpanded={expandedKeys.has('scheduled')}>\n <img src={ICONS.chevronDown} alt=\"\" />\n </ChevronIcon>\n </CategoryHeader>\n </Heading>\n <CategoryDisclosurePanel>\n {scheduledRuns.length > 0 ? (\n scheduledRuns.map((run) => <ItemWithLogs key={run.id} run={run} />)\n ) : (\n <ItemContainer>\n <ItemName $dimmed>No scheduled items</ItemName>\n </ItemContainer>\n )}\n </CategoryDisclosurePanel>\n </CategoryDisclosure>\n\n {/* Completed Section */}\n <CategoryDisclosure id=\"completed\">\n <Heading level={3}>\n <CategoryHeader slot=\"trigger\">\n <CategoryTitle>\n <HashtagIcon src={ICONS.hashtag} alt=\"\" />\n <span>COMPLETED</span>\n </CategoryTitle>\n <ChevronIcon $isExpanded={expandedKeys.has('completed')}>\n <img src={ICONS.chevronDown} alt=\"\" />\n </ChevronIcon>\n </CategoryHeader>\n </Heading>\n <CategoryDisclosurePanel>\n {completedRuns.length > 0 ? (\n completedRuns.map((run) => <ItemWithLogs key={run.id} run={run} />)\n ) : (\n <ItemContainer>\n <ItemName $dimmed>No completed items</ItemName>\n </ItemContainer>\n )}\n </CategoryDisclosurePanel>\n </CategoryDisclosure>\n\n {/* Issues Section */}\n <CategoryDisclosure id=\"issues\">\n <Heading level={3}>\n <CategoryHeader slot=\"trigger\">\n <CategoryTitle>\n <HashtagIcon src={ICONS.hashtag} alt=\"\" />\n <span>ISSUES</span>\n </CategoryTitle>\n <ChevronIcon $isExpanded={expandedKeys.has('issues')}>\n <img src={ICONS.chevronDown} alt=\"\" />\n </ChevronIcon>\n </CategoryHeader>\n </Heading>\n <CategoryDisclosurePanel>\n {issuesRuns.length > 0 ? (\n issuesRuns.map((run) => <ItemWithLogs key={run.id} run={run} />)\n ) : (\n <ItemContainer>\n <ItemName $dimmed>No issues</ItemName>\n </ItemContainer>\n )}\n </CategoryDisclosurePanel>\n </CategoryDisclosure>\n </StyledDisclosureGroup>\n </RunsContainer>\n );\n}\n\n// Usage tab content with meter\nfunction UsageTabContent({\n currentUsage = 0,\n maxUsage = 100000,\n}: {\n currentUsage?: number;\n maxUsage?: number;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const { meterProps, labelProps } = useMeter({\n label: 'Token Usage',\n value: currentUsage,\n minValue: 0,\n maxValue: maxUsage,\n });\n\n const percentage = Math.round((currentUsage / maxUsage) * 100);\n\n // Determine color based on usage\n let color = '#10b981'; // green\n if (percentage >= 75)\n color = '#ef4444'; // red\n else if (percentage >= 50) color = '#f59e0b'; // yellow\n\n return (\n <MeterContainer>\n <MeterLabel {...labelProps}>Token Usage</MeterLabel>\n <MeterBar {...meterProps} ref={ref}>\n <MeterFill $percentage={percentage} $color={color} />\n </MeterBar>\n <MeterStats>\n {percentage}% of {maxUsage.toLocaleString()} tokens used\n <br />\n <small>\n {currentUsage.toLocaleString()} / {maxUsage.toLocaleString()} tokens\n </small>\n </MeterStats>\n </MeterContainer>\n );\n}\n\n// Connections tab content\nfunction ConnectionsTabContent({\n isGoogleConnected = false,\n onGoogleConnect,\n onGoogleDisconnect,\n}: {\n isGoogleConnected?: boolean;\n onGoogleConnect?: () => void;\n onGoogleDisconnect?: () => void;\n}) {\n const ref = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n onPress: isGoogleConnected ? onGoogleDisconnect : onGoogleConnect,\n },\n ref\n );\n\n return (\n <ConnectionsContainer>\n <ConnectionDescription>\n {isGoogleConnected\n ? 'Your Google account is connected. You can access Google services and data.'\n : 'Connect your Google account to access Google services and integrate with your workflows.'}\n </ConnectionDescription>\n <GoogleButton {...buttonProps} ref={ref} $isConnected={isGoogleConnected}>\n {isGoogleConnected ? '✓ Disconnect from Google' : 'Connect with Google'}\n </GoogleButton>\n </ConnectionsContainer>\n );\n}\n\n// Tab component\nfunction Tab({ item, state }: { item: any; state: ReturnType<typeof useTabListState> }) {\n const ref = useRef<HTMLButtonElement>(null);\n const { tabProps } = useTab({ key: item.key }, state, ref);\n\n return (\n <TabButton {...tabProps} ref={ref} $isSelected={state.selectedKey === item.key}>\n {item.rendered}\n </TabButton>\n );\n}\n\n// TabList component\nfunction TabList({\n state,\n ...props\n}: { state: ReturnType<typeof useTabListState> } & React.HTMLAttributes<HTMLDivElement>) {\n const ref = useRef<HTMLDivElement>(null);\n const { tabListProps } = useTabList(props, state, ref);\n\n return (\n <TabListWrapper {...tabListProps} ref={ref}>\n {[...state.collection].map((item) => (\n <Tab key={item.key} item={item} state={state} />\n ))}\n </TabListWrapper>\n );\n}\n\n// TabPanel component\nfunction TabPanel({\n state,\n ...props\n}: { state: ReturnType<typeof useTabListState> } & React.HTMLAttributes<HTMLDivElement>) {\n const ref = useRef<HTMLDivElement>(null);\n const { tabPanelProps } = useTabPanel(props, state, ref);\n\n return (\n <TabPanelWrapper {...tabPanelProps} ref={ref}>\n {state.selectedItem?.props.children}\n </TabPanelWrapper>\n );\n}\n\nexport function PaneMenus({\n activeTab = 'runs',\n onTabChange,\n runs = [],\n currentUsage = 0,\n maxUsage = 100000,\n isGoogleConnected = false,\n onGoogleConnect,\n onGoogleDisconnect,\n onBrowseAutomations,\n}: PaneMenusProps) {\n const state = useTabListState({\n defaultSelectedKey: activeTab,\n onSelectionChange: (key) => {\n if (onTabChange) {\n onTabChange(key as 'runs' | 'usage' | 'connections');\n }\n },\n children: (\n <>\n <Item key=\"runs\" title=\"Runs\">\n <RunsTabContent runs={runs} onBrowseAutomations={onBrowseAutomations} />\n </Item>\n <Item key=\"usage\" title=\"Usage\">\n <UsageTabContent currentUsage={currentUsage} maxUsage={maxUsage} />\n </Item>\n <Item key=\"connections\" title=\"Connections\">\n <ConnectionsTabContent\n isGoogleConnected={isGoogleConnected}\n onGoogleConnect={onGoogleConnect}\n onGoogleDisconnect={onGoogleDisconnect}\n />\n </Item>\n </>\n ),\n });\n\n return (\n <Container>\n <TabList state={state} aria-label=\"Main pane menu\" />\n <TabPanel key={state.selectedItem?.key} state={state} />\n </Container>\n );\n}\n","import styled from 'styled-components';\n\n// Color palette from Layout.styles.ts\nconst HEADER_BG = '#202225';\nconst HEADER_BG_DARK = '#18191c';\nconst BUTTON_BG = '#36393f';\nconst BUTTON_BG_HOVER = '#40444b';\n\n// Breakpoints for responsive pattern sizes\nconst breakpoints = {\n xs: '640px',\n sm: '768px',\n md: '1024px',\n lg: '1280px',\n};\n\nexport const Container = styled.header`\n position: relative;\n width: 100%;\n height: 56px;\n background-color: ${HEADER_BG};\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n /* Background pattern - responsive sizes */\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-image: url('/assets/bg-set/pattern/Size=xs, Type=Waves Rays2.svg');\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n opacity: 0.6;\n z-index: 0;\n }\n\n /* Small screens */\n @media (min-width: ${breakpoints.xs}) {\n &::before {\n background-image: url('/assets/bg-set/pattern/Size=sm, Type=Waves Rays2.svg');\n }\n }\n\n /* Medium screens */\n @media (min-width: ${breakpoints.sm}) {\n height: 64px;\n\n &::before {\n background-image: url('/assets/bg-set/pattern/Size=md, Type=Waves Rays2.svg');\n }\n }\n\n /* Large screens */\n @media (min-width: ${breakpoints.md}) {\n &::before {\n background-image: url('/assets/bg-set/pattern/Size=lg, Type=Waves Rays2.svg');\n }\n }\n\n /* Extra large screens */\n @media (min-width: ${breakpoints.lg}) {\n &::before {\n background-image: url('/assets/bg-set/pattern/Size=xl, Type=Waves Rays2.svg');\n }\n }\n\n /* Dark theme support */\n @media (prefers-color-scheme: dark) {\n background-color: ${HEADER_BG_DARK};\n }\n`;\n\nexport const BrandLogo = styled.img`\n position: relative;\n z-index: 1;\n max-height: 28px;\n height: auto;\n width: auto;\n object-fit: contain;\n pointer-events: none;\n user-select: none;\n\n /* Slightly larger on desktop */\n @media (min-width: ${breakpoints.sm}) {\n max-height: 32px;\n }\n`;\n\nexport const SettingsButton = styled.button<{ $isHovered?: boolean }>`\n position: absolute;\n top: 50%;\n right: 12px;\n transform: translateY(-50%);\n z-index: 2;\n\n /* Button appearance */\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: none;\n background-color: ${BUTTON_BG};\n cursor: pointer;\n\n /* Center the icon */\n display: flex;\n align-items: center;\n justify-content: center;\n\n /* Smooth transitions */\n transition: background-color 0.2s ease, transform 0.1s ease;\n\n /* Hover state */\n &:hover {\n background-color: ${BUTTON_BG_HOVER};\n }\n\n /* Active state */\n &:active {\n transform: translateY(-50%) scale(0.95);\n }\n\n /* Focus visible state for accessibility */\n &:focus-visible {\n outline: 2px solid #5865f2;\n outline-offset: 2px;\n }\n\n /* Disabled state */\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Responsive positioning */\n @media (min-width: ${breakpoints.sm}) {\n right: 16px;\n }\n\n @media (min-width: ${breakpoints.md}) {\n right: 24px;\n }\n`;\n\nexport const BackButton = styled.button<{ $isHovered?: boolean }>`\n position: absolute;\n top: 50%;\n left: 12px;\n transform: translateY(-50%);\n z-index: 2;\n\n /* Button appearance */\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: none;\n background-color: ${BUTTON_BG};\n cursor: pointer;\n\n /* Center the icon */\n display: flex;\n align-items: center;\n justify-content: center;\n\n /* Smooth transitions */\n transition: background-color 0.2s ease, transform 0.1s ease;\n\n /* Hover state */\n &:hover {\n background-color: ${BUTTON_BG_HOVER};\n }\n\n /* Active state */\n &:active {\n transform: translateY(-50%) scale(0.95);\n }\n\n /* Focus visible state for accessibility */\n &:focus-visible {\n outline: 2px solid #5865f2;\n outline-offset: 2px;\n }\n\n /* Disabled state */\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Responsive positioning */\n @media (min-width: ${breakpoints.sm}) {\n left: 16px;\n }\n\n @media (min-width: ${breakpoints.md}) {\n left: 24px;\n }\n`;\n","import { useButton } from '@react-aria/button';\nimport { useRef, useState } from 'react';\nimport { Icon } from '../Icon';\nimport { BackButton, BrandLogo, Container, SettingsButton } from './PaneSectionHeader.styles';\n\nexport type BrandType = 'Google' | 'Microsoft' | 'Slack' | 'YouTube';\n\nexport interface PaneSectionHeaderProps {\n /**\n * Brand logo to display in the center of the header\n * @default 'Google'\n */\n brand?: BrandType;\n /**\n * Callback fired when back button is clicked\n */\n onBackClick?: () => void;\n /**\n * Callback fired when settings button is clicked\n */\n onSettingsClick?: () => void;\n /**\n * Additional CSS class name\n */\n className?: string;\n /**\n * Accessible label for the header\n */\n 'aria-label'?: string;\n}\n\n/**\n * PaneSectionHeader component\n *\n * A fixed-height header positioned at the top of the main pane section.\n * Features a centered brand logo and a settings button in the top-right corner.\n * Background includes responsive Rays2 pattern from the design system.\n *\n * @example\n * ```tsx\n * <PaneSectionHeader\n * brand=\"Google\"\n * onSettingsClick={() => console.log('Settings clicked')}\n * />\n * ```\n */\nexport function PaneSectionHeader({\n brand = 'Google',\n onBackClick,\n onSettingsClick,\n className,\n 'aria-label': ariaLabel = 'Pane section header',\n}: PaneSectionHeaderProps) {\n const [isBackHovered, setIsBackHovered] = useState(false);\n const [isSettingsHovered, setIsSettingsHovered] = useState(false);\n const backButtonRef = useRef<HTMLButtonElement>(null);\n const settingsButtonRef = useRef<HTMLButtonElement>(null);\n\n const { buttonProps: backButtonProps } = useButton(\n {\n onPress: onBackClick,\n 'aria-label': 'Go back',\n },\n backButtonRef\n );\n\n const { buttonProps: settingsButtonProps } = useButton(\n {\n onPress: onSettingsClick,\n 'aria-label': 'Settings',\n },\n settingsButtonRef\n );\n\n return (\n <Container className={className} role=\"banner\" aria-label={ariaLabel}>\n {/* Back button - top left */}\n {onBackClick && (\n <BackButton\n {...backButtonProps}\n ref={backButtonRef}\n onMouseEnter={() => setIsBackHovered(true)}\n onMouseLeave={() => setIsBackHovered(false)}\n $isHovered={isBackHovered}\n >\n <Icon name=\"arrow-left-fill\" size={20} color=\"#b9bbbe\" />\n </BackButton>\n )}\n\n {/* Brand logo centered - using white variant for better contrast on dark background */}\n <BrandLogo src={`/assets/bg-set/brand-logos/${brand}2.svg`} alt={brand} />\n\n {/* Settings button - top right */}\n <SettingsButton\n {...settingsButtonProps}\n ref={settingsButtonRef}\n onMouseEnter={() => setIsSettingsHovered(true)}\n onMouseLeave={() => setIsSettingsHovered(false)}\n $isHovered={isSettingsHovered}\n >\n <Icon\n name={isSettingsHovered ? 'settings-line' : 'settings-fill'}\n size={20}\n color=\"#b9bbbe\"\n />\n </SettingsButton>\n </Container>\n );\n}\n\nPaneSectionHeader.displayName = 'PaneSectionHeader';\n","import styled from 'styled-components';\n\n// Colors based on NavVertical design\nconst NAV_BG = '#36393F';\nconst NAV_BG_HOVER = '#40444b';\n\nexport const Container = styled.button<{ $active?: boolean }>`\n /* Base button styling */\n width: 48px;\n height: 48px;\n border: none;\n padding: 4px;\n border-radius: ${({ $active }) => ($active ? '16px' : '50%')};\n background-color: ${NAV_BG};\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.15s ease-out;\n position: relative;\n overflow: hidden;\n\n /* Hover state */\n &:hover {\n border-radius: 16px;\n background-color: ${NAV_BG_HOVER};\n }\n\n /* Focus visible state for accessibility */\n &:focus-visible {\n outline: 2px solid #5865f2;\n outline-offset: 2px;\n }\n\n /* Active indicator */\n ${({ $active }) =>\n $active &&\n `\n &::before {\n content: '';\n position: absolute;\n left: -16px;\n top: 50%;\n transform: translateY(-50%);\n width: 4px;\n height: 40px;\n background-color: #ffffff;\n border-radius: 0 4px 4px 0;\n }\n `}\n\n /* Disabled state */\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n\nexport const LogoImage = styled.img`\n width: 100%;\n height: 100%;\n object-fit: contain;\n pointer-events: none;\n user-select: none;\n`;\n","import { useButton } from '@react-aria/button';\nimport type { AriaButtonProps } from '@react-types/button';\nimport { useRef } from 'react';\nimport { Container, LogoImage } from './ServiceIcon.styles';\n\nexport type ServiceBrand =\n | 'Facebook'\n | 'Gmail'\n | 'Instagram'\n | 'LinkedIn'\n | 'Reddit'\n | 'Slack'\n | 'Telegram'\n | 'WhatsApp'\n | 'X'\n | 'YouTube';\n\nexport interface ServiceIconProps extends AriaButtonProps {\n /**\n * Brand logo to display\n */\n brand: ServiceBrand;\n /**\n * Whether the service icon is active/selected\n */\n active?: boolean;\n /**\n * Additional CSS class name\n */\n className?: string;\n}\n\n/**\n * ServiceIcon component\n *\n * Displays a circular brand logo icon that can be used as a service selector.\n * Uses colored brand logos from assets/icons/Brand and supports active/hover states.\n *\n * @example\n * ```tsx\n * <ServiceIcon\n * brand=\"Gmail\"\n * active={true}\n * onPress={() => console.log('Gmail clicked')}\n * aria-label=\"Gmail service\"\n * />\n * ```\n */\nexport function ServiceIcon({ brand, active = false, className, ...ariaProps }: ServiceIconProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n ...ariaProps,\n 'aria-pressed': active,\n },\n ref\n );\n\n return (\n <Container {...buttonProps} ref={ref} $active={active} className={className}>\n <LogoImage src={`/assets/icons/Brand/${brand}.svg`} alt={brand} />\n </Container>\n );\n}\n\nServiceIcon.displayName = 'ServiceIcon';\n"]}
|