@cere/cere-design-system 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/theme/index.ts","../src/animations/CheckMarkAnimation/CheckMarkAnimation.tsx","../src/animations/CheckMarkAnimation/check.json","../src/animations/LoadingAnimation/LoadingAnimation.tsx","../src/animations/LoadingAnimation/loading.json","../src/hooks/useResponsive.ts","../src/components/buttons/Button.tsx","../src/components/buttons/IconButton.tsx","../src/components/buttons/LoadingButton.tsx","../src/components/buttons/ButtonGroup.tsx","../src/components/inputs/TextField.tsx","../src/components/inputs/SearchField.tsx","../src/components/inputs/FormControl.tsx","../src/components/inputs/ToggleButton.tsx","../src/components/inputs/Switch.tsx","../src/components/inputs/Checkbox.tsx","../src/components/inputs/Radio.tsx","../src/components/navigation/Dropdown/Dropdown.tsx","../src/components/navigation/Dropdown/DropdownAnchor.tsx","../src/components/navigation/Sidebar.tsx","../src/components/navigation/SidebarItem.tsx","../src/components/navigation/ServiceSelector.tsx","../src/components/navigation/WorkspaceSelector.tsx","../src/components/navigation/Stepper.tsx","../src/components/navigation/SideNav/SideNav.tsx","../src/components/navigation/SideNav/styles.ts","../src/components/navigation/SideNav/SideNavHeader.tsx","../src/components/navigation/SideNav/NavigationList.tsx","../src/components/navigation/SideNav/NavigationItem.tsx","../src/components/navigation/SideNav/ConnectionStatus.tsx","../src/components/navigation/SideNav/AccountSection.tsx","../src/components/feedback/Badge.tsx","../src/components/feedback/Chip.tsx","../src/components/feedback/RoleBadge.tsx","../src/components/feedback/IDBlock.tsx","../src/components/feedback/Tooltip.tsx","../src/components/feedback/Progress.tsx","../src/components/navigation/Tab.tsx","../src/components/navigation/Menu.tsx","../src/components/navigation/Pagination.tsx","../src/components/navigation/Selector.tsx","../src/components/layout/Link.tsx","../src/components/layout/Logo.tsx","../src/components/icons/CereIcon.tsx","../src/components/layout/EntityHeader/EntityHeader.tsx","../src/components/layout/Dialog.tsx","../src/components/layout/Drawer.tsx","../src/components/layout/Card.tsx","../src/components/layout/List.tsx","../src/components/layout/DeploymentDashboardCard/DeploymentDashboardCard.tsx","../src/hooks/useControlledExpand.ts","../src/components/layout/DeploymentEntityContextMenu/DeploymentEntityContextMenu.tsx","../src/components/layout/DeploymentEntityContextMenu/contextMenuItems.tsx","../src/components/layout/DeploymentDashboardTree/DeploymentDashboardTree.tsx","../src/components/layout/DeploymentDashboardPanel/DeploymentDashboardPanel.tsx","../src/components/layout/Avatar.tsx","../src/components/layout/Table.tsx","../src/components/layout/Grid.tsx","../src/components/layout/Breadcrumbs.tsx","../src/components/layout/Accordion.tsx","../src/components/layout/Paper.tsx","../src/components/layout/Divider.tsx","../src/components/layout/Stack.tsx","../src/components/layout/Box.tsx","../src/components/layout/Typography.tsx","../src/components/layout/Container.tsx","../src/components/layout/AppBar.tsx","../src/components/layout/Collapse.tsx","../src/components/feedback/Alert.tsx","../src/components/feedback/EmptyState.tsx","../src/components/feedback/Loading.tsx","../src/components/feedback/AppLoading.tsx","../src/components/feedback/CircularProgress.tsx","../src/components/icons/ActivityAppIcon.tsx","../src/components/icons/ArrowLeft.tsx","../src/components/icons/ArrowRight.tsx","../src/components/icons/AvatarIcon.tsx","../src/components/icons/BarTrackingIcon.tsx","../src/components/icons/ClockIcon.tsx","../src/components/icons/CloudFlashIcon.tsx","../src/components/icons/DecentralizedServerIcon.tsx","../src/components/icons/DiscordIcon.tsx","../src/components/icons/DownloadIcon.tsx","../src/components/icons/FilledFolderIcon.tsx","../src/components/icons/FolderIcon.tsx","../src/components/icons/GithubLogoIcon.tsx","../src/components/icons/ShareIcon.tsx","../src/components/icons/StorageAppIcon.tsx","../src/components/icons/UploadFileIcon.tsx","../src/components/icons/UploadFolderIcon.tsx","../src/components/utilities/Markdown/Markdown.tsx","../src/components/utilities/OnboardingProvider/OnboardingProvider.tsx","../src/components/utilities/Truncate/Truncate.tsx","../src/components/utilities/BytesSize/BytesSize.tsx","../src/components/utilities/QRCode/QRCode.tsx","../src/components/charts/ChartWidget/ChartWidget.tsx","../src/components/charts/MetricsChart/MetricsChart.tsx","../src/components/charts/MetricsChart/PeriodSelect.tsx","../src/components/third-party/FlowEditor.tsx","../src/components/third-party/CodeEditor.tsx"],"sourcesContent":["// Theme\nexport { theme, colors, robPrimaryPalette, robPaletteExtended } from './theme';\n\n// Fonts\nexport * from './assets/fonts';\n\n// Animations\nexport * from './animations';\n\n// Hooks\nexport { useIsDesktop, useIsTablet, useIsMobile } from './hooks/useResponsive';\n\n// Buttons\nexport { Button } from './components/buttons/Button';\nexport type { ButtonProps } from './components/buttons/Button';\nexport { IconButton } from './components/buttons/IconButton';\nexport type { IconButtonProps } from './components/buttons/IconButton';\nexport { LoadingButton } from './components/buttons/LoadingButton';\nexport type { LoadingButtonProps } from './components/buttons/LoadingButton';\nexport { ButtonGroup } from './components/buttons/ButtonGroup';\nexport type { ButtonGroupProps } from './components/buttons/ButtonGroup';\n\n// Inputs\nexport { TextField } from './components/inputs/TextField';\nexport type { TextFieldProps } from './components/inputs/TextField';\nexport { SearchField } from './components/inputs/SearchField';\nexport type { SearchFieldProps } from './components/inputs/SearchField';\nexport {\n FormControl,\n FormLabel,\n FormHelperText,\n FormControlLabel,\n InputLabel,\n InputAdornment,\n} from './components/inputs/FormControl';\nexport type {\n FormControlProps,\n FormLabelProps,\n FormHelperTextProps,\n FormControlLabelProps,\n InputLabelProps,\n InputAdornmentProps,\n} from './components/inputs/FormControl';\nexport { ToggleButton, ToggleButtonGroup } from './components/inputs/ToggleButton';\nexport type { ToggleButtonProps, ToggleButtonGroupProps } from './components/inputs/ToggleButton';\nexport { Switch } from './components/inputs/Switch';\nexport type { SwitchProps } from './components/inputs/Switch';\nexport { Checkbox } from './components/inputs/Checkbox';\nexport type { CheckboxProps } from './components/inputs/Checkbox';\nexport { Radio, RadioGroup } from './components/inputs/Radio';\nexport type { RadioProps } from './components/inputs/Radio';\n\n// Navigation\nexport { Dropdown } from './components/navigation/Dropdown';\nexport type { DropdownProps } from './components/navigation/Dropdown';\nexport { DropdownAnchor } from './components/navigation/Dropdown';\nexport type { DropdownAnchorProps } from './components/navigation/Dropdown';\nexport { Sidebar } from './components/navigation/Sidebar';\nexport type { SidebarProps } from './components/navigation/Sidebar';\nexport { SidebarItem } from './components/navigation/SidebarItem';\nexport type { SidebarItemProps } from './components/navigation/SidebarItem';\nexport { ServiceSelectorButton } from './components/navigation/ServiceSelector';\nexport type { ServiceSelectorButtonProps, Service } from './components/navigation/ServiceSelector';\nexport { WorkspaceSelectorButton } from './components/navigation/WorkspaceSelector';\nexport type { WorkspaceSelectorButtonProps, Workspace } from './components/navigation/WorkspaceSelector';\nexport { Stepper, Step, StepLabel, StepContent, StepButton } from './components/navigation/Stepper';\nexport type { StepperProps, StepProps, StepLabelProps, StepContentProps, StepButtonProps } from './components/navigation/Stepper';\nexport { SideNav } from './components/navigation/SideNav';\nexport { SideNavHeader } from './components/navigation/SideNav';\nexport { NavigationList } from './components/navigation/SideNav';\nexport { NavigationItem } from './components/navigation/SideNav';\nexport { ConnectionStatus } from './components/navigation/SideNav';\nexport { AccountSection } from './components/navigation/SideNav';\nexport type {\n SideNavProps,\n SideNavHeaderProps,\n NavigationListProps,\n NavigationItemProps,\n ConnectionStatusProps,\n AccountSectionProps,\n UserInfo,\n} from './components/navigation/SideNav';\n\n// Feedback\nexport { Badge } from './components/feedback/Badge';\nexport type { BadgeProps } from './components/feedback/Badge';\nexport { Chip } from './components/feedback/Chip';\nexport type { ChipProps } from './components/feedback/Chip';\nexport { RoleBadge } from './components/feedback/RoleBadge';\nexport type { RoleBadgeProps, RoleBadgeColor, RoleBadgeSize } from './components/feedback/RoleBadge';\nexport { IDBlock } from './components/feedback/IDBlock';\nexport type { IDBlockProps } from './components/feedback/IDBlock';\nexport { Tooltip } from './components/feedback/Tooltip';\nexport type { TooltipProps } from './components/feedback/Tooltip';\nexport { Progress } from './components/feedback/Progress';\nexport type { ProgressProps } from './components/feedback/Progress';\n\n// Tabs\nexport { Tab } from './components/navigation/Tab';\nexport type { TabProps } from './components/navigation/Tab';\nexport { Menu, MenuItem } from './components/navigation/Menu';\nexport type { MenuProps, MenuItemProps } from './components/navigation/Menu';\nexport { Pagination } from './components/navigation/Pagination';\nexport type { PaginationProps } from './components/navigation/Pagination';\nexport { Selector } from './components/navigation/Selector';\nexport type { SelectorProps, SelectorOption } from './components/navigation/Selector';\n\n// Layout\nexport { Logo } from './components/layout/Logo';\nexport type { LogoProps } from './components/layout/Logo';\nexport { EntityHeader } from './components/layout/EntityHeader/EntityHeader';\nexport type { EntityHeaderProps, PrimaryAction } from './components/layout/EntityHeader/EntityHeader';\nexport { Dialog } from './components/layout/Dialog';\nexport type { DialogProps } from './components/layout/Dialog';\nexport { Drawer } from './components/layout/Drawer';\nexport type { DrawerProps } from './components/layout/Drawer';\nexport { Card, CardContent, CardHeader, CardActions } from './components/layout/Card';\nexport type { CardProps } from './components/layout/Card';\nexport { List, ListItem, ListItemText, ListItemIcon, ListItemSecondaryAction } from './components/layout/List';\nexport type { ListProps, ListItemProps } from './components/layout/List';\nexport { DeploymentDashboardCard } from './components/layout/DeploymentDashboardCard/DeploymentDashboardCard';\nexport type {\n DeploymentDashboardCardProps,\n DeploymentEntityType,\n DeploymentCardAction,\n DeploymentStatusIndicator,\n} from './components/layout/DeploymentDashboardCard/DeploymentDashboardCard';\nexport { DeploymentEntityContextMenu } from './components/layout/DeploymentEntityContextMenu/DeploymentEntityContextMenu';\nexport { contextMenuItems } from './components/layout/DeploymentEntityContextMenu/contextMenuItems';\nexport type {\n DeploymentEntityContextMenuProps,\n ContextMenuItem,\n} from './components/layout/DeploymentEntityContextMenu/DeploymentEntityContextMenu';\nexport { DeploymentDashboardTree } from './components/layout/DeploymentDashboardTree/DeploymentDashboardTree';\nexport type {\n DeploymentDashboardTreeProps,\n DeploymentTreeNode,\n} from './components/layout/DeploymentDashboardTree/DeploymentDashboardTree';\nexport { DeploymentDashboardPanel } from './components/layout/DeploymentDashboardPanel/DeploymentDashboardPanel';\nexport type { DeploymentDashboardPanelProps } from './components/layout/DeploymentDashboardPanel/DeploymentDashboardPanel';\nexport { Avatar } from './components/layout/Avatar';\nexport type { AvatarProps } from './components/layout/Avatar';\nexport { Table, TableHeader } from './components/layout/Table';\nexport type { TableProps, TableHeaderProps } from './components/layout/Table';\nexport { Grid } from './components/layout/Grid';\nexport type { GridProps } from './components/layout/Grid';\nexport { Breadcrumbs } from './components/layout/Breadcrumbs';\nexport type { BreadcrumbsProps, BreadcrumbItem } from './components/layout/Breadcrumbs';\nexport { Accordion } from './components/layout/Accordion';\nexport type { AccordionProps } from './components/layout/Accordion';\nexport { Paper } from './components/layout/Paper';\nexport type { PaperProps } from './components/layout/Paper';\nexport { Divider } from './components/layout/Divider';\nexport type { DividerProps } from './components/layout/Divider';\nexport { Stack } from './components/layout/Stack';\nexport type { StackProps } from './components/layout/Stack';\nexport { Box } from './components/layout/Box';\nexport type { BoxProps } from './components/layout/Box';\nexport { Typography } from './components/layout/Typography';\nexport type { TypographyProps } from './components/layout/Typography';\nexport { Link } from './components/layout/Link';\nexport type { LinkProps } from './components/layout/Link';\nexport { Container } from './components/layout/Container';\nexport type { ContainerProps } from './components/layout/Container';\nexport { AppBar, Toolbar } from './components/layout/AppBar';\nexport type { AppBarProps, ToolbarProps } from './components/layout/AppBar';\nexport { Collapse } from './components/layout/Collapse';\nexport type { CollapseProps } from './components/layout/Collapse';\n\n// Feedback (extended)\nexport { Alert, Snackbar } from './components/feedback/Alert';\nexport type { AlertProps, SnackbarProps, AlertSeverity } from './components/feedback/Alert';\nexport { EmptyState } from './components/feedback/EmptyState';\nexport type { EmptyStateProps } from './components/feedback/EmptyState';\nexport { Loading } from './components/feedback/Loading';\nexport type { LoadingProps } from './components/feedback/Loading';\nexport { AppLoading } from './components/feedback/AppLoading';\nexport type { AppLoadingProps } from './components/feedback/AppLoading';\nexport { CircularProgress } from './components/feedback/CircularProgress';\nexport type { CircularProgressProps } from './components/feedback/CircularProgress';\n\n// Icons\nexport * from './components/icons';\n\n// Utilities\nexport { Markdown } from './components/utilities/Markdown';\nexport type { MarkdownProps } from './components/utilities/Markdown';\nexport { OnboardingProvider, useOnboarding } from './components/utilities/OnboardingProvider';\nexport { Truncate } from './components/utilities/Truncate';\nexport type { TruncateProps } from './components/utilities/Truncate';\nexport { BytesSize } from './components/utilities/BytesSize';\nexport type { BytesSizeProps } from './components/utilities/BytesSize';\nexport { QRCode } from './components/utilities/QRCode';\nexport type { QRCodeProps } from './components/utilities/QRCode';\n\n// Charts\nexport { ChartWidget } from './components/charts/ChartWidget';\nexport type { ChartWidgetProps } from './components/charts/ChartWidget';\nexport { MetricsChart } from './components/charts/MetricsChart';\nexport type { MetricsChartProps } from './components/charts/MetricsChart';\nexport { PeriodSelect } from './components/charts/MetricsChart';\nexport type { MetricsPeriod } from './components/charts/MetricsChart';\n\n// Third Party Components\nexport { FlowEditor } from './components/third-party/FlowEditor';\nexport type { FlowEditorProps } from './components/third-party/FlowEditor';\nexport { CodeEditor } from './components/third-party/CodeEditor';\nexport type { CodeEditorProps, CodeEditorLanguage } from './components/third-party/CodeEditor';\n// Re-export commonly used ReactFlow types\nexport type {\n Node,\n Edge,\n NodeTypes,\n EdgeTypes,\n ReactFlowInstance,\n OnNodesChange,\n OnEdgesChange,\n} from './components/third-party/FlowEditor';\nexport {\n Background,\n Controls,\n MiniMap,\n BackgroundVariant,\n ConnectionLineType,\n} from './components/third-party/FlowEditor';\nexport { Panel } from 'reactflow';\n\n","import { createTheme, Theme } from '@mui/material/styles';\n\n// ---------------------------------------------------------------------------\n// Module augmentation — gives consumers type-safe access to theme.palette.deployment\n// ---------------------------------------------------------------------------\ndeclare module '@mui/material/styles' {\n interface Palette {\n deployment: {\n entity: typeof import('./index').deploymentEntityColors;\n status: typeof import('./index').deploymentStatusColors;\n };\n }\n interface PaletteOptions {\n deployment?: {\n entity?: Record<string, string>;\n status?: Record<string, string>;\n };\n }\n}\n\n// Color palette - matching ROB application\nconst colors = {\n primary: {\n main: '#1976d2', // ROB primary color\n light: '#1976d2', // Same as main for selected background\n dark: '#1565c0',\n contrastText: '#FFFFFF',\n },\n secondary: {\n main: '#666666',\n light: '#999999',\n dark: '#333333',\n contrastText: '#FFFFFF',\n },\n success: {\n main: '#10B981',\n light: '#34D399',\n dark: '#059669',\n contrastText: '#FFFFFF',\n },\n error: {\n main: '#EF4444',\n light: '#F87171',\n dark: '#DC2626',\n contrastText: '#FFFFFF',\n },\n warning: {\n main: '#F59E0B',\n light: '#FBBF24',\n dark: '#D97706',\n contrastText: '#FFFFFF',\n },\n tertiary: {\n main: '#F59E0B',\n light: '#FBBF24',\n dark: '#D97706',\n contrastText: '#1A1A1A',\n },\n grey: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n },\n text: {\n primary: '#1A1A1A',\n secondary: '#666666',\n disabled: '#999999',\n },\n background: {\n default: '#FFFFFF',\n paper: '#FFFFFF',\n selected: 'rgba(123, 44, 191, 0.1)',\n },\n};\n\n// Deployment dashboard entity colors (Figma 11-2105, research.md)\nexport const deploymentEntityColors = {\n workspace: '#aa44f2',\n stream: '#53b96a',\n deployment: '#eeb510',\n engagement: '#f941e6',\n agent: '#77c3ff',\n};\n\n// Deployment dashboard status colors (Figma 11-2105)\nexport const deploymentStatusColors = {\n normal: '#53b96a',\n warning: '#eeb510',\n error: '#ef5059',\n disabled: '#ffffff',\n disabledDim: '#ded8e1',\n};\n\n/** Shared Figma surface/stroke tokens used across deployment dashboard components */\nexport const deploymentSurfaceTokens = {\n /** Surface/high background (Figma #fefcff) */\n surfaceHigh: '#fefcff',\n /** Stroke/Outside border (Figma #e6e6e6) */\n strokeOutside: '#e6e6e6',\n /** Default card border (Figma #cdcccd) */\n borderDefault: '#cdcccd',\n /** Primary text (Figma #1d1b20) */\n textPrimary: '#1d1b20',\n /** Secondary/muted text (Figma #818083) */\n textSecondary: '#818083',\n /** Accent blue for workspace border, capacity bar, chevrons (Figma #5865f2) */\n accentBlue: '#5865f2',\n /** Workspace card shadow */\n workspaceShadow: '0px 8px 12px rgba(26, 10, 124, 0.1)',\n /** Hover state for context menu items */\n hoverLight: '#F0F1FF',\n /** Generic hover overlay (buttons, icon-buttons, rows) */\n hoverOverlay: 'rgba(0, 0, 0, 0.04)',\n /** Blue-50 highlight background for active menu items (Figma blue-50) */\n highlightBg: '#f5f6ff',\n /** Blue-50 highlight background hover state */\n highlightBgHover: '#eceeff',\n /** Blue-100 highlight border for active menu items (Figma blue-100) */\n highlightBorder: '#cbcffb',\n /** Switch track enabled (Figma basic/green #53b96a) */\n switchGreen: '#53b96a',\n /** Switch track disabled/off (Figma neutral track) */\n switchTrackOff: '#e0e0e0',\n} as const;\n\n/**\n * ROB primary brand color palette (Figma node 11-1393)\n * Four main brand colors for the ROB design system\n */\nexport const robPrimaryPalette = {\n /** Primary magenta/pink - Figma node 11-1394 */\n fandango: '#BD32A7',\n /** Vivid purple - Figma node 11-1407 */\n electricViolet: '#8B00EC',\n /** Mid-tone purple - Figma node 11-1420 */\n ultraViolet: '#6750A4',\n /** Light lavender - Figma node 11-1433 */\n periwinkle: '#D0BCFF',\n} as const;\n\n/**\n * ROB extended palette with additional swatches (Figma node 11-1447)\n * Gradient shades and secondary accents from the ROB color grid\n */\nexport const robPaletteExtended = {\n // Dark shades (6 colors)\n dark1: '#280e61',\n dark2: '#531584',\n dark3: '#710c7a',\n dark4: '#920269',\n dark5: '#c71454',\n dark6: '#ff6341',\n // Bright shades (4 colors)\n bright1: '#5311e3',\n bright2: '#eb03ff',\n bright3: '#ff17ab',\n bright4: '#ff6a85',\n // Light shades (5 colors)\n light1: '#baa0f4',\n light2: '#d399fc',\n light3: '#f79aff',\n light4: '#faabde',\n light5: '#ffc4ce',\n // Near-black shades (4 colors)\n nearBlack1: '#0b0f18',\n nearBlack2: '#0d0627',\n nearBlack3: '#161d30',\n nearBlack4: '#23194b',\n} as const;\n\nconst baseTheme = createTheme({\n palette: {\n mode: 'light',\n primary: colors.primary,\n secondary: colors.secondary,\n success: colors.success,\n error: colors.error,\n warning: colors.warning,\n grey: colors.grey,\n text: colors.text,\n background: colors.background,\n },\n typography: {\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Human Sans', 'Nohemi', sans-serif\",\n h1: {\n fontWeight: 700,\n fontSize: '96px',\n lineHeight: 1.2,\n },\n h2: {\n fontWeight: 700,\n fontSize: '60px',\n lineHeight: 1.2,\n },\n h3: {\n fontWeight: 700,\n fontSize: '48px',\n lineHeight: 1.2,\n },\n h4: {\n fontWeight: 600,\n fontSize: '34px',\n lineHeight: 1.2,\n },\n h5: {\n fontWeight: 600,\n fontSize: '24px',\n lineHeight: 1.2,\n },\n h6: {\n fontWeight: 600,\n fontSize: '20px',\n lineHeight: 1.2,\n },\n subtitle1: {\n fontWeight: 700,\n fontSize: '16px',\n lineHeight: 1.5,\n },\n subtitle2: {\n fontWeight: 700,\n fontSize: '14px',\n lineHeight: 1.5,\n },\n body1: {\n fontWeight: 400,\n fontSize: '16px',\n lineHeight: 1.5,\n },\n body2: {\n fontWeight: 400,\n fontSize: '14px',\n lineHeight: 1.5,\n },\n button: {\n fontWeight: 700,\n fontSize: '14px',\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n },\n caption: {\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: 1.5,\n },\n overline: {\n fontWeight: 800,\n fontSize: '10px',\n textTransform: 'uppercase',\n letterSpacing: '1px',\n },\n },\n shape: {\n borderRadius: 16,\n },\n components: {\n MuiButton: {\n styleOverrides: {\n root: {\n textTransform: 'none',\n borderRadius: 12,\n fontWeight: 600,\n padding: '8px 24px',\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none',\n },\n },\n sizeSmall: {\n padding: '4px 12px',\n fontSize: '12px',\n },\n sizeMedium: {\n padding: '8px 24px',\n fontSize: '14px',\n },\n sizeLarge: {\n padding: '12px 24px',\n fontSize: '16px',\n },\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-root': {\n borderRadius: 12,\n },\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n root: {\n borderRadius: 12,\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n borderRadius: 16,\n fontWeight: 500,\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.05)',\n border: '1px solid rgba(0, 0, 0, 0.05)',\n },\n },\n },\n MuiDrawer: {\n styleOverrides: {\n paper: {\n borderRight: '1px solid rgba(0, 0, 0, 0.05)',\n },\n },\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n },\n filled: {\n borderRadius: 8,\n },\n },\n },\n },\n});\n\n// Extend palette with deployment dashboard tokens (consumers use theme.palette.deployment)\nexport const theme: Theme = createTheme(baseTheme, {\n palette: {\n deployment: {\n entity: deploymentEntityColors,\n status: deploymentStatusColors,\n },\n },\n});\n\n// Export colors for use in components\nexport { colors };\n\n","import Lottie from 'lottie-react';\nimport checkMarkAnimation from './check.json';\n\nexport const CheckMarkAnimation = () => {\n return <Lottie animationData={checkMarkAnimation} />;\n};\n","{\n \"nm\": \"CHECK\",\n \"ddd\": 0,\n \"h\": 1000,\n \"w\": 1000,\n \"meta\": {\"g\": \"@lottiefiles/toolkit-js 0.33.2\"},\n \"layers\": [\n {\n \"ty\": 4,\n \"nm\": \"Shape Layer 3\",\n \"sr\": 1,\n \"st\": 0,\n \"op\": 30,\n \"ip\": 0,\n \"hd\": false,\n \"ddd\": 0,\n \"bm\": 0,\n \"hasMask\": false,\n \"ao\": 0,\n \"ks\": {\n \"a\": {\"a\": 0, \"k\": [0, 9, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100, 100], \"ix\": 6},\n \"sk\": {\"a\": 0, \"k\": 0},\n \"p\": {\"a\": 0, \"k\": [500, 500, 0], \"ix\": 2},\n \"r\": {\n \"a\": 1,\n \"k\": [\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0], \"t\": 0},\n {\"s\": [0], \"t\": 29}\n ]\n },\n \"sa\": {\"a\": 0, \"k\": 0},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 11}\n },\n \"ef\": [],\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Group\",\n \"nm\": \"Ellipse 1\",\n \"ix\": 1,\n \"cix\": 2,\n \"np\": 3,\n \"it\": [\n {\n \"ty\": \"el\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Shape - Ellipse\",\n \"nm\": \"Ellipse Path 1\",\n \"d\": 1,\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 3},\n \"s\": {\"a\": 0, \"k\": [494, 494], \"ix\": 2}\n },\n {\n \"ty\": \"st\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Graphic - Stroke\",\n \"nm\": \"Stroke 1\",\n \"lc\": 2,\n \"lj\": 1,\n \"ml\": 4,\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 4},\n \"w\": {\"a\": 0, \"k\": 40, \"ix\": 5},\n \"c\": {\"a\": 0, \"k\": [0.2863, 0.749, 0.3882], \"ix\": 3}\n },\n {\n \"ty\": \"tr\",\n \"a\": {\"a\": 0, \"k\": [0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100], \"ix\": 3},\n \"sk\": {\"a\": 0, \"k\": 0, \"ix\": 4},\n \"p\": {\"a\": 0, \"k\": [0, 9], \"ix\": 2},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 6},\n \"sa\": {\"a\": 0, \"k\": 0, \"ix\": 5},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 7}\n }\n ]\n },\n {\n \"ty\": \"tm\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Filter - Trim\",\n \"nm\": \"Trim Paths 1\",\n \"ix\": 2,\n \"e\": {\n \"a\": 1,\n \"k\": [\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0], \"t\": 0},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0.195], \"t\": 2},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0.391], \"t\": 3},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0.781], \"t\": 4},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [1.562], \"t\": 5},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [3.125], \"t\": 6},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [6.25], \"t\": 7},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [12.5], \"t\": 8},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [25], \"t\": 9},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [75], \"t\": 11},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [87.5], \"t\": 12},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [93.75], \"t\": 13},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [96.875], \"t\": 14},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [98.438], \"t\": 15},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [99.219], \"t\": 16},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [99.609], \"t\": 17},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [99.805], \"t\": 18},\n {\"s\": [100], \"t\": 20}\n ]\n },\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-180], \"t\": 0},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-179.791], \"t\": 1},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-179.5], \"t\": 2},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-178.819], \"t\": 3},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-177.188], \"t\": 4},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-173.309], \"t\": 5},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-164.092], \"t\": 6},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-142.158], \"t\": 7},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-37.842], \"t\": 9},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-15.908], \"t\": 10},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-6.691], \"t\": 11},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-2.812], \"t\": 12},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-1.181], \"t\": 13},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-0.5], \"t\": 14},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-0.209], \"t\": 15},\n {\"s\": [0], \"t\": 16}\n ]\n },\n \"s\": {\"a\": 0, \"k\": 0, \"ix\": 1},\n \"m\": 1\n }\n ],\n \"ind\": 1\n },\n {\n \"ty\": 4,\n \"nm\": \"Shape Layer 2\",\n \"sr\": 1,\n \"st\": 0,\n \"op\": 30,\n \"ip\": 0,\n \"hd\": false,\n \"ddd\": 0,\n \"bm\": 0,\n \"hasMask\": false,\n \"ao\": 0,\n \"ks\": {\n \"a\": {\"a\": 0, \"k\": [0, 0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100, 100], \"ix\": 6},\n \"sk\": {\"a\": 0, \"k\": 0},\n \"p\": {\"a\": 0, \"k\": [500, 500, 0], \"ix\": 2},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 10},\n \"sa\": {\"a\": 0, \"k\": 0},\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0], \"t\": 0},\n {\"s\": [100], \"t\": 1.5}\n ],\n \"ix\": 11\n }\n },\n \"ef\": [],\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Group\",\n \"nm\": \"Shape 1\",\n \"ix\": 1,\n \"cix\": 2,\n \"np\": 3,\n \"it\": [\n {\n \"ty\": \"sh\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Shape - Group\",\n \"nm\": \"Path 1\",\n \"ix\": 1,\n \"d\": 1,\n \"ks\": {\n \"a\": 1,\n \"k\": [\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [-89, -33.188],\n [-88.875, -33.062],\n [-89, -32.5],\n [-124.5, 3],\n [-124.437, 3.188],\n [-88.75, -33.062]\n ]\n }\n ],\n \"t\": 0\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [-62.748, -6.833],\n [-62.624, -6.708],\n [-89, -32.5],\n [-124.5, 3],\n [-83.642, 43.932],\n [-47.954, 7.682]\n ]\n }\n ],\n \"t\": 1\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [-41.913, 14.085],\n [-41.788, 14.21],\n [-89, -32.5],\n [-124.5, 3],\n [-51.263, 76.27],\n [-15.575, 40.02]\n ]\n }\n ],\n \"t\": 2\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [-25.375, 30.688],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [10.125, 65.688]\n ]\n }\n ],\n \"t\": 3\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [1.111, 4.24],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.937],\n [36.611, 39.24]\n ]\n }\n ],\n \"t\": 4\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [22.13, -16.749],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.937],\n [57.63, 18.251]\n ]\n }\n ],\n \"t\": 5\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [38.812, -33.406],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [74.312, 1.594]\n ]\n }\n ],\n \"t\": 6\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [52.055, -46.63],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [87.555, -11.63]\n ]\n }\n ],\n \"t\": 7\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [62.565, -57.124],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [98.065, -22.124]\n ]\n }\n ],\n \"t\": 8\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [70.906, -65.453],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [106.406, -30.453]\n ]\n }\n ],\n \"t\": 9\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [77.526, -72.063],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [113.026, -37.063]\n ]\n }\n ],\n \"t\": 10\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [82.783, -77.312],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [118.283, -42.312]\n ]\n }\n ],\n \"t\": 11\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [86.953, -81.477],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [122.453, -46.477]\n ]\n }\n ],\n \"t\": 12\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [90.263, -84.781],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [125.763, -49.781]\n ]\n }\n ],\n \"t\": 13\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [92.891, -87.406],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [128.391, -52.406]\n ]\n }\n ],\n \"t\": 14\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [94.977, -89.488],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [130.477, -54.488]\n ]\n }\n ],\n \"t\": 15\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [96.631, -91.141],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [132.131, -56.141]\n ]\n }\n ],\n \"t\": 16\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [97.944, -92.451],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [133.444, -57.451]\n ]\n }\n ],\n \"t\": 17\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [98.988, -93.494],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [134.488, -58.494]\n ]\n }\n ],\n \"t\": 18\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [99.816, -94.32],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [135.316, -59.32]\n ]\n }\n ],\n \"t\": 19\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [100.472, -94.975],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [135.972, -59.975]\n ]\n }\n ],\n \"t\": 20\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [100.994, -95.497],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [136.494, -60.497]\n ]\n }\n ],\n \"t\": 21\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [101.408, -95.91],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [136.908, -60.91]\n ]\n }\n ],\n \"t\": 22\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [101.738, -96.24],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.238, -61.24]\n ]\n }\n ],\n \"t\": 23\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [101.997, -96.499],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.497, -61.499]\n ]\n }\n ],\n \"t\": 24\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.206, -96.707],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.706, -61.707]\n ]\n }\n ],\n \"t\": 25\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.369, -96.87],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.869, -61.87]\n ]\n }\n ],\n \"t\": 26\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.499, -96.999],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.999, -61.999]\n ]\n }\n ],\n \"t\": 27\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.603, -97.104],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [138.103, -62.104]\n ]\n }\n ],\n \"t\": 28\n },\n {\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.682, -97.183],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [138.182, -62.183]\n ]\n }\n ],\n \"t\": 29\n }\n ]\n }\n },\n {\n \"ty\": \"fl\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"nm\": \"Fill 1\",\n \"c\": {\"a\": 0, \"k\": [0.2863, 0.749, 0.3882], \"ix\": 4},\n \"r\": 1,\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 5}\n },\n {\n \"ty\": \"tr\",\n \"a\": {\"a\": 0, \"k\": [0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100], \"ix\": 3},\n \"sk\": {\"a\": 0, \"k\": 0, \"ix\": 4},\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 2},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 6},\n \"sa\": {\"a\": 0, \"k\": 0, \"ix\": 5},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 7}\n }\n ]\n },\n {\n \"ty\": \"rd\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Filter - RC\",\n \"nm\": \"Round Corners 1\",\n \"ix\": 2,\n \"r\": {\"a\": 0, \"k\": 16, \"ix\": 1}\n }\n ],\n \"ind\": 2\n }\n ],\n \"v\": \"5.12.0\",\n \"fr\": 15,\n \"op\": 30,\n \"ip\": 0,\n \"assets\": []\n}\n","import Lottie, { LottieComponentProps } from 'lottie-react';\nimport loadingAnimation from './loading.json';\n\nexport type LoadingAnimationProps = Omit<LottieComponentProps, 'animationData'>;\n\nexport const LoadingAnimation = (props: LoadingAnimationProps) => {\n return <Lottie animationData={loadingAnimation} {...props} />;\n};\n","{\n \"v\": \"5.8.1\",\n \"fr\": 30,\n \"ip\": 0,\n \"op\": 60,\n \"w\": 300,\n \"h\": 300,\n \"nm\": \"loading_6\",\n \"ddd\": 0,\n \"assets\": [],\n \"layers\": [\n {\n \"ddd\": 0,\n \"ind\": 1,\n \"ty\": 4,\n \"nm\": \"Shape Layer 2\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 11},\n \"r\": {\n \"a\": 1,\n \"k\": [\n {\"i\": {\"x\": [0.833], \"y\": [0.833]}, \"o\": {\"x\": [0.167], \"y\": [0.167]}, \"t\": 0, \"s\": [0]},\n {\"t\": 60, \"s\": [360]}\n ],\n \"ix\": 10\n },\n \"p\": {\"a\": 0, \"k\": [150.00000000000003, 150.00000000000003, 0], \"ix\": 2, \"l\": 2},\n \"a\": {\"a\": 0, \"k\": [0, 0, 0], \"ix\": 1, \"l\": 2},\n \"s\": {\"a\": 0, \"k\": [30.000000000000004, 30.000000000000004, 100], \"ix\": 6, \"l\": 2}\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"d\": 1,\n \"ty\": \"el\",\n \"s\": {\"a\": 0, \"k\": [300, 300], \"ix\": 2},\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 3},\n \"nm\": \"Ellipse Path 1\",\n \"mn\": \"ADBE Vector Shape - Ellipse\",\n \"hd\": false\n },\n {\n \"ty\": \"st\",\n \"c\": {\"a\": 0, \"k\": [0.22745098039215686, 0.6627450980392157, 0.8627450980392157, 1], \"ix\": 3},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 4},\n \"w\": {\"a\": 0, \"k\": 50, \"ix\": 5},\n \"lc\": 2,\n \"lj\": 1,\n \"ml\": 4,\n \"bm\": 0,\n \"nm\": \"Stroke 1\",\n \"mn\": \"ADBE Vector Graphic - Stroke\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 2},\n \"a\": {\"a\": 0, \"k\": [0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100], \"ix\": 3},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 6},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 7},\n \"sk\": {\"a\": 0, \"k\": 0, \"ix\": 4},\n \"sa\": {\"a\": 0, \"k\": 0, \"ix\": 5},\n \"nm\": \"Transform\"\n }\n ],\n \"nm\": \"Ellipse 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n },\n {\n \"ty\": \"tm\",\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\"i\": {\"x\": [0.667], \"y\": [1]}, \"o\": {\"x\": [0.333], \"y\": [0]}, \"t\": 10, \"s\": [0]},\n {\"t\": 60, \"s\": [99]}\n ],\n \"ix\": 1\n },\n \"e\": {\n \"a\": 1,\n \"k\": [\n {\"i\": {\"x\": [0.667], \"y\": [1]}, \"o\": {\"x\": [0.333], \"y\": [0]}, \"t\": 0, \"s\": [1]},\n {\"t\": 50, \"s\": [100]}\n ],\n \"ix\": 2\n },\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\"i\": {\"x\": [0.833], \"y\": [0.833]}, \"o\": {\"x\": [0.167], \"y\": [0.167]}, \"t\": 0, \"s\": [0]},\n {\"t\": 60, \"s\": [3]}\n ],\n \"ix\": 3\n },\n \"m\": 1,\n \"ix\": 2,\n \"nm\": \"Trim Paths 1\",\n \"mn\": \"ADBE Vector Filter - Trim\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 300,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 2,\n \"ty\": 4,\n \"nm\": \"Shape Layer 1\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\"a\": 0, \"k\": 30, \"ix\": 11},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 10},\n \"p\": {\"a\": 0, \"k\": [150.00000000000003, 150.00000000000003, 0], \"ix\": 2, \"l\": 2},\n \"a\": {\"a\": 0, \"k\": [0, 0, 0], \"ix\": 1, \"l\": 2},\n \"s\": {\"a\": 0, \"k\": [30.000000000000004, 30.000000000000004, 100], \"ix\": 6, \"l\": 2}\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"d\": 1,\n \"ty\": \"el\",\n \"s\": {\"a\": 0, \"k\": [300, 300], \"ix\": 2},\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 3},\n \"nm\": \"Ellipse Path 1\",\n \"mn\": \"ADBE Vector Shape - Ellipse\",\n \"hd\": false\n },\n {\n \"ty\": \"st\",\n \"c\": {\"a\": 0, \"k\": [0.6666666666666666, 0.8431372549019608, 0.9215686274509803, 1], \"ix\": 3},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 4},\n \"w\": {\"a\": 0, \"k\": 50, \"ix\": 5},\n \"lc\": 1,\n \"lj\": 1,\n \"ml\": 4,\n \"bm\": 0,\n \"nm\": \"Stroke 1\",\n \"mn\": \"ADBE Vector Graphic - Stroke\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 2},\n \"a\": {\"a\": 0, \"k\": [0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100], \"ix\": 3},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 6},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 7},\n \"sk\": {\"a\": 0, \"k\": 0, \"ix\": 4},\n \"sa\": {\"a\": 0, \"k\": 0, \"ix\": 5},\n \"nm\": \"Transform\"\n }\n ],\n \"nm\": \"Ellipse 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 300,\n \"st\": 0,\n \"bm\": 0\n }\n ],\n \"markers\": []\n}\n","import { useMediaQuery, useTheme } from '@mui/material';\n\nexport const useIsDesktop = () => {\n const theme = useTheme();\n return useMediaQuery(theme.breakpoints.up('md'));\n};\n\nexport const useIsTablet = () => {\n const theme = useTheme();\n return useMediaQuery(theme.breakpoints.between('sm', 'md'));\n};\n\nexport const useIsMobile = () => {\n const theme = useTheme();\n return useMediaQuery(theme.breakpoints.down('sm'));\n};\n","import React from 'react';\nimport MuiButton, { ButtonProps as MuiButtonProps } from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport { colors, deploymentSurfaceTokens } from '../../theme';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary';\n\nexport interface ButtonProps extends Omit<MuiButtonProps, 'variant' | 'color'> {\n /**\n * The visual style variant of the button\n * - primary: Filled button with primary color background\n * - secondary: Outlined button with transparent background and border\n * - tertiary: Text button with no background or border\n */\n variant?: ButtonVariant;\n /**\n * The size of the button\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * Icon element to display before the button text\n */\n startIcon?: React.ReactNode;\n /**\n * Icon element to display after the button text\n */\n endIcon?: React.ReactNode;\n}\n\n// Design system constants matching Figma specs\nconst BUTTON_SPACING = {\n borderRadius: '8px',\n padding: '8px 16px',\n iconMargin: '8px',\n} as const;\n\nconst BUTTON_TYPOGRAPHY = {\n fontSize: '16px',\n fontWeight: 500,\n lineHeight: 1.5,\n letterSpacing: '0.8px',\n} as const;\n\nconst StyledPrimaryButton = styled(MuiButton)(() => ({\n backgroundColor: colors.primary.main,\n color: colors.primary.contrastText,\n '&:hover': {\n backgroundColor: colors.primary.light,\n },\n '&:active': {\n backgroundColor: colors.primary.dark,\n },\n '&:disabled': {\n backgroundColor: colors.grey[300],\n color: colors.grey[500],\n },\n}));\n\nconst iconStyles = {\n '& > *': {\n fontSize: BUTTON_TYPOGRAPHY.fontSize,\n },\n};\n\nconst StyledSecondaryButton = styled(MuiButton)(() => ({\n backgroundColor: deploymentSurfaceTokens.surfaceHigh,\n color: deploymentSurfaceTokens.textPrimary,\n border: `1px solid ${deploymentSurfaceTokens.strokeOutside}`,\n borderRadius: BUTTON_SPACING.borderRadius,\n padding: BUTTON_SPACING.padding,\n textTransform: 'capitalize',\n letterSpacing: BUTTON_TYPOGRAPHY.letterSpacing,\n fontSize: BUTTON_TYPOGRAPHY.fontSize,\n fontWeight: BUTTON_TYPOGRAPHY.fontWeight,\n lineHeight: BUTTON_TYPOGRAPHY.lineHeight,\n '&:hover': {\n backgroundColor: colors.background.selected,\n borderColor: deploymentSurfaceTokens.strokeOutside,\n },\n '&:active': {\n backgroundColor: colors.background.selected,\n borderColor: deploymentSurfaceTokens.borderDefault,\n },\n '&:disabled': {\n borderColor: colors.grey[300],\n color: colors.grey[500],\n backgroundColor: colors.grey[50],\n },\n '& .MuiButton-startIcon': {\n marginRight: BUTTON_SPACING.iconMargin,\n ...iconStyles,\n },\n '& .MuiButton-endIcon': {\n marginLeft: BUTTON_SPACING.iconMargin,\n ...iconStyles,\n },\n}));\n\nconst StyledTertiaryButton = styled(MuiButton)(() => ({\n backgroundColor: 'transparent',\n color: colors.tertiary.main,\n '&:hover': {\n backgroundColor: 'rgba(245, 158, 11, 0.1)',\n },\n '&:active': {\n backgroundColor: 'rgba(245, 158, 11, 0.2)',\n },\n '&:disabled': {\n color: colors.grey[500],\n },\n}));\n\nconst BUTTON_COMPONENTS: Record<ButtonVariant, React.ComponentType<any>> = {\n primary: StyledPrimaryButton,\n secondary: StyledSecondaryButton,\n tertiary: StyledTertiaryButton,\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n children,\n startIcon,\n endIcon,\n ...props\n}) => {\n const ButtonComponent = BUTTON_COMPONENTS[variant];\n const buttonProps = {\n ...props,\n startIcon,\n endIcon,\n };\n\n return <ButtonComponent {...buttonProps}>{children}</ButtonComponent>;\n};\n\n","import React from 'react';\nimport MuiIconButton, { IconButtonProps as MuiIconButtonProps } from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface IconButtonProps extends MuiIconButtonProps {\n variant?: 'default' | 'primary' | 'secondary';\n}\n\nconst StyledIconButton = styled(MuiIconButton, {\n shouldForwardProp: (prop) => prop !== 'buttonVariant',\n})<{ buttonVariant?: string }>(({ buttonVariant = 'default' }) => {\n const variants: Record<string, any> = {\n primary: {\n color: colors.primary.main,\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n },\n secondary: {\n color: colors.text.secondary,\n '&:hover': {\n backgroundColor: colors.grey[50],\n },\n },\n default: {\n color: colors.text.primary,\n '&:hover': {\n backgroundColor: colors.grey[50],\n },\n },\n };\n\n return variants[buttonVariant] || variants.default;\n});\n\nexport const IconButton: React.FC<IconButtonProps> = ({\n variant = 'default',\n ...props\n}) => {\n return <StyledIconButton buttonVariant={variant} {...props} />;\n};\n\n","import React from 'react';\nimport { LoadingButton as MuiLoadingButton, LoadingButtonProps as MuiLoadingButtonProps } from '@mui/lab';\n\nexport interface LoadingButtonProps extends MuiLoadingButtonProps {\n /**\n * If `true`, the button will show a loading indicator\n */\n loading?: boolean;\n /**\n * The loading indicator can be positioned inside the button or in the center\n */\n loadingPosition?: 'start' | 'end' | 'center';\n}\n\n/**\n * LoadingButton component - Button with loading state from MUI Lab\n * \n * @example\n * ```tsx\n * <LoadingButton\n * variant=\"contained\"\n * loading={isLoading}\n * onClick={handleSubmit}\n * >\n * Submit\n * </LoadingButton>\n * ```\n */\nexport const LoadingButton: React.FC<LoadingButtonProps> = ({\n loading = false,\n loadingPosition = 'center',\n ...props\n}) => {\n return (\n <MuiLoadingButton\n loading={loading}\n loadingPosition={loadingPosition}\n {...props}\n />\n );\n};\n\nexport default LoadingButton;\n\n","import React from 'react';\nimport {\n ButtonGroup as MuiButtonGroup,\n ButtonGroupProps as MuiButtonGroupProps,\n} from '@mui/material';\n\nexport interface ButtonGroupProps extends MuiButtonGroupProps {\n /**\n * The content of the button group\n */\n children?: React.ReactNode;\n /**\n * If `true`, the buttons will be disabled\n */\n disabled?: boolean;\n /**\n * If `true`, the button group will take full width\n */\n fullWidth?: boolean;\n /**\n * The orientation of the button group\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n /**\n * The size of the buttons\n * @default 'medium'\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * The variant to use\n * @default 'outlined'\n */\n variant?: 'text' | 'outlined' | 'contained';\n}\n\n/**\n * ButtonGroup component - groups related buttons together\n * \n * @example\n * ```tsx\n * <ButtonGroup variant=\"contained\">\n * <Button>One</Button>\n * <Button>Two</Button>\n * <Button>Three</Button>\n * </ButtonGroup>\n * ```\n */\nexport const ButtonGroup: React.FC<ButtonGroupProps> = ({\n orientation = 'horizontal',\n size = 'medium',\n variant = 'outlined',\n ...props\n}) => {\n return (\n <MuiButtonGroup\n orientation={orientation}\n size={size}\n variant={variant}\n {...props}\n />\n );\n};\n\nexport default ButtonGroup;\n\n","import React from 'react';\nimport MuiTextField, { TextFieldProps as MuiTextFieldProps } from '@mui/material/TextField';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type TextFieldSize = 'small' | 'medium';\n\nexport interface TextFieldProps extends Omit<MuiTextFieldProps, 'size'> {\n size?: TextFieldSize;\n}\n\nconst StyledTextField = styled(MuiTextField)(({ error }) => ({\n '& .MuiOutlinedInput-root': {\n '&:hover fieldset': {\n borderColor: error ? colors.error.main : colors.primary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: error ? colors.error.main : colors.primary.main,\n },\n '&.Mui-error fieldset': {\n borderColor: colors.error.main,\n },\n },\n '& .MuiInputLabel-root': {\n '&.Mui-focused': {\n color: error ? colors.error.main : colors.primary.main,\n },\n },\n}));\n\nexport const TextField: React.FC<TextFieldProps> = ({\n size = 'medium',\n ...props\n}) => {\n return <StyledTextField size={size === 'medium' ? 'medium' : 'small'} {...props} />;\n};\n\n","import React from 'react';\nimport { TextField } from './TextField';\nimport { TextFieldProps } from './TextField';\nimport SearchIcon from '@mui/icons-material/Search';\nimport InputAdornment from '@mui/material/InputAdornment';\n\nexport interface SearchFieldProps extends Omit<TextFieldProps, 'InputProps'> {\n placeholder?: string;\n onSearch?: (value: string) => void;\n}\n\nexport const SearchField: React.FC<SearchFieldProps> = ({\n placeholder = 'Search...',\n onSearch,\n onChange,\n ...props\n}) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n }\n if (onSearch) {\n onSearch(e.target.value);\n }\n };\n\n return (\n <TextField\n placeholder={placeholder}\n onChange={handleChange}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon style={{ fontSize: 18, color: '#999' }} />\n </InputAdornment>\n ),\n }}\n {...props}\n />\n );\n};\n\n","export {\n FormControl,\n FormLabel,\n FormHelperText,\n FormControlLabel,\n InputLabel,\n InputAdornment,\n} from '@mui/material';\nexport type {\n FormControlProps,\n FormLabelProps,\n FormHelperTextProps,\n FormControlLabelProps,\n InputLabelProps,\n InputAdornmentProps,\n} from '@mui/material';\n\n","import React from 'react';\nimport {\n ToggleButton as MuiToggleButton,\n ToggleButtonGroup as MuiToggleButtonGroup,\n ToggleButtonProps as MuiToggleButtonProps,\n ToggleButtonGroupProps as MuiToggleButtonGroupProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type ToggleButtonProps = MuiToggleButtonProps\n\nexport const ToggleButton: React.FC<ToggleButtonProps> = (props) => {\n return <MuiToggleButton {...props} />;\n};\n\nexport type ToggleButtonGroupProps = MuiToggleButtonGroupProps\n\nconst StyledToggleButtonGroup = styled(MuiToggleButtonGroup)({\n '& .MuiToggleButton-root': {\n border: `1px solid ${colors.grey[300]}`,\n '&.Mui-selected': {\n backgroundColor: colors.primary.main,\n color: colors.primary.contrastText,\n '&:hover': {\n backgroundColor: colors.primary.light,\n },\n },\n '&:hover': {\n backgroundColor: colors.grey[50],\n },\n },\n});\n\nexport const ToggleButtonGroup: React.FC<ToggleButtonGroupProps> = (props) => {\n return <StyledToggleButtonGroup {...props} />;\n};\n\n","import React from 'react';\nimport MuiSwitch, { SwitchProps as MuiSwitchProps } from '@mui/material/Switch';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface SwitchProps extends MuiSwitchProps {\n label?: string;\n labelPosition?: 'left' | 'right';\n}\n\nconst StyledSwitch = styled(MuiSwitch)(({ theme }) => ({\n width: 44,\n height: 24,\n padding: 0,\n '& .MuiSwitch-switchBase': {\n padding: 0,\n margin: 2,\n transitionDuration: '300ms',\n '&.Mui-checked': {\n transform: 'translateX(20px)',\n color: '#fff',\n '& + .MuiSwitch-track': {\n backgroundColor: colors.success.main,\n opacity: 1,\n border: 0,\n },\n '&.Mui-disabled + .MuiSwitch-track': {\n opacity: 0.5,\n },\n },\n '&.Mui-focusVisible .MuiSwitch-thumb': {\n color: colors.success.main,\n border: `6px solid #fff`,\n },\n '&.Mui-disabled .MuiSwitch-thumb': {\n color: colors.grey[300],\n },\n '&.Mui-disabled + .MuiSwitch-track': {\n opacity: 0.5,\n backgroundColor: colors.grey[300],\n },\n },\n '& .MuiSwitch-thumb': {\n boxSizing: 'border-box',\n width: 20,\n height: 20,\n },\n '& .MuiSwitch-track': {\n borderRadius: 24 / 2,\n backgroundColor: colors.grey[300],\n opacity: 1,\n transition: theme.transitions.create(['background-color'], {\n duration: 500,\n }),\n },\n}));\n\nexport const Switch: React.FC<SwitchProps> = ({\n label,\n labelPosition = 'right',\n ...props\n}) => {\n const switchComponent = <StyledSwitch {...props} />;\n\n if (!label) {\n return switchComponent;\n }\n\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n {labelPosition === 'left' && <span>{label}</span>}\n {switchComponent}\n {labelPosition === 'right' && <span>{label}</span>}\n </div>\n );\n};\n\n","import React from 'react';\nimport MuiCheckbox, { CheckboxProps as MuiCheckboxProps } from '@mui/material/Checkbox';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nexport interface CheckboxProps extends Omit<MuiCheckboxProps, 'color'> {\n label?: string;\n labelPosition?: 'left' | 'right';\n}\n\nconst StyledCheckbox = styled(MuiCheckbox)(() => ({\n color: colors.grey[400],\n '&.Mui-checked': {\n color: colors.primary.main,\n },\n '&.MuiCheckbox-indeterminate': {\n color: colors.primary.main,\n },\n '&.Mui-disabled': {\n color: colors.grey[300],\n },\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n '&.Mui-focusVisible': {\n outline: `2px solid ${colors.primary.main}`,\n outlineOffset: 2,\n },\n}));\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n label,\n labelPosition = 'right',\n ...props\n}) => {\n const checkboxComponent = <StyledCheckbox {...props} />;\n\n if (!label) {\n return checkboxComponent;\n }\n\n const labelPlacementMap: Record<string, 'start' | 'end' | 'top' | 'bottom'> = {\n left: 'start',\n right: 'end',\n };\n\n return (\n <FormControlLabel\n control={checkboxComponent}\n label={label}\n labelPlacement={labelPlacementMap[labelPosition] || 'end'}\n />\n );\n};\n\n","import React from 'react';\nimport MuiRadio, { RadioProps as MuiRadioProps } from '@mui/material/Radio';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\n\nexport interface RadioProps extends Omit<MuiRadioProps, 'color'> {\n label?: string;\n labelPosition?: 'left' | 'right';\n}\n\nconst StyledRadio = styled(MuiRadio)(() => ({\n color: colors.grey[400],\n '&.Mui-checked': {\n color: colors.primary.main,\n },\n '&.Mui-disabled': {\n color: colors.grey[300],\n },\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n '&.Mui-focusVisible': {\n outline: `2px solid ${colors.primary.main}`,\n outlineOffset: 2,\n },\n}));\n\nexport const Radio: React.FC<RadioProps> = ({\n label,\n labelPosition = 'right',\n ...props\n}) => {\n const radioComponent = <StyledRadio {...props} />;\n\n if (!label) {\n return radioComponent;\n }\n\n const labelPlacementMap: Record<string, 'start' | 'end' | 'top' | 'bottom'> = {\n left: 'start',\n right: 'end',\n };\n\n return (\n <FormControlLabel\n control={radioComponent}\n label={label}\n labelPlacement={labelPlacementMap[labelPosition] || 'end'}\n />\n );\n};\n\nexport { RadioGroup };\n\n","import { Popover, PopoverProps } from '@mui/material';\nimport { ReactNode, Ref, useCallback, useRef } from 'react';\n\nimport { DropdownAnchor, DropdownAnchorProps } from './DropdownAnchor';\n\ntype RenderAnchorOptions = {\n ref: Ref<any>;\n open: boolean;\n onOpen: () => void;\n};\n\nexport type DropdownProps = Pick<PopoverProps, 'open' | 'children'> &\n Omit<DropdownAnchorProps, 'open'> & {\n direction?: 'right' | 'left';\n dense?: boolean;\n disableGutters?: boolean;\n disablePaddings?: boolean;\n onToggle?: (open: boolean) => void;\n renderAnchor?: (options: RenderAnchorOptions) => ReactNode;\n variant: 'header' | 'button';\n };\n\nexport const Dropdown = ({\n open,\n label,\n leftElement,\n direction = 'left',\n children,\n onToggle,\n dense = false,\n disableGutters = false,\n disablePaddings = false,\n variant,\n renderAnchor = ({ ref, open, onOpen }) => (\n <DropdownAnchor ref={ref} open={open} label={label} leftElement={leftElement} onOpen={onOpen} variant={variant} />\n ),\n}: DropdownProps) => {\n const anchorRef = useRef(null);\n const horizontal = direction === 'left' ? 'right' : 'left';\n const onOpen = useCallback(() => onToggle?.(true), [onToggle]);\n const padding = dense ? 1 : 2;\n\n return (\n <>\n {renderAnchor({ ref: anchorRef, onOpen, open })}\n <Popover\n aria-label=\"Overlay\"\n open={open}\n onClose={() => onToggle?.(false)}\n anchorEl={anchorRef.current}\n anchorOrigin={{\n horizontal,\n vertical: 'bottom',\n }}\n transformOrigin={{\n horizontal,\n vertical: -8,\n }}\n slotProps={{\n paper: {\n elevation: 0,\n sx: {\n padding: disablePaddings ? 0 : padding,\n paddingX: !disablePaddings && disableGutters ? 0 : padding,\n borderRadius: 3,\n border: '1px solid',\n borderColor: 'divider',\n boxShadow: 2,\n },\n },\n }}\n >\n {children}\n </Popover>\n </>\n );\n};\n","import { forwardRef, ReactNode, Ref } from 'react';\nimport { Stack, styled, avatarClasses, Typography, Button } from '@mui/material';\nimport { ArrowDropUp, ArrowDropDown } from '@mui/icons-material';\n\nexport type DropdownAnchorProps = {\n open?: boolean;\n label?: ReactNode;\n leftElement?: ReactNode;\n onOpen?: () => void;\n variant?: 'header' | 'button';\n};\n\nconst Clickable = styled(Button)({\n padding: 0,\n});\n\nconst Anchor = styled(Stack)<{ variant?: DropdownAnchorProps['variant'] }>(({ theme, variant }) => ({\n height: 40,\n borderRadius: 25,\n padding: theme.spacing(1),\n color: theme.palette.text.secondary,\n backgroundColor: variant !== 'header' ? theme.palette.grey[200] : 'transparent',\n cursor: 'pointer',\n}));\n\nconst Left = styled('div')(({ theme }) => ({\n [`& .${avatarClasses.root}`]: {\n width: 30,\n height: 30,\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: theme.palette.background.paper,\n },\n}));\n\nconst Center = styled(Typography)(({ theme }) => ({\n fontWeight: theme.typography.fontWeightBold,\n color: theme.palette.text.primary,\n}));\n\nexport const DropdownAnchor = forwardRef(\n ({ open, label, leftElement, onOpen, variant, ...props }: DropdownAnchorProps, ref: Ref<HTMLButtonElement>) => (\n <Clickable ref={ref} {...props} color=\"inherit\" variant=\"text\" onClick={onOpen}>\n <Anchor variant={variant} spacing={1} direction=\"row\" alignItems=\"stretch\">\n <Left>{leftElement}</Left>\n <Center variant=\"body1\">{label}</Center>\n {variant !== 'header' && (open ? <ArrowDropUp /> : <ArrowDropDown />)}\n </Anchor>\n </Clickable>\n ),\n);\n\nDropdownAnchor.displayName = 'DropdownAnchor';\n","import React from 'react';\nimport {\n Drawer,\n List,\n styled,\n Box,\n} from '@mui/material';\nimport { colors } from '../../theme';\nimport { SidebarItem, SidebarItemProps } from './SidebarItem';\n\nexport interface SidebarProps {\n open?: boolean;\n width?: number;\n items: SidebarItemProps[];\n onClose?: () => void;\n variant?: 'permanent' | 'persistent' | 'temporary';\n}\n\nconst StyledDrawer = styled(Drawer)(() => ({\n '& .MuiDrawer-paper': {\n backgroundColor: colors.background.paper,\n borderRight: `1px solid ${colors.grey[200]}`,\n boxShadow: 'none',\n },\n}));\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n open = true,\n width = 280,\n items,\n onClose,\n variant = 'permanent',\n}) => {\n return (\n <StyledDrawer\n variant={variant}\n open={open}\n onClose={onClose}\n sx={{\n width,\n flexShrink: 0,\n '& .MuiDrawer-paper': {\n width,\n boxSizing: 'border-box',\n },\n }}\n >\n <Box sx={{ overflow: 'auto', padding: '8px 0' }}>\n <List>\n {items.map((item, index) => (\n <SidebarItem key={index} {...item} />\n ))}\n </List>\n </Box>\n </StyledDrawer>\n );\n};\n\n","import React from 'react';\nimport {\n ListItemButton,\n ListItemIcon,\n ListItemText,\n styled,\n} from '@mui/material';\nimport { colors } from '../../theme';\n\nexport interface SidebarItemProps {\n label: string;\n icon?: React.ReactNode;\n selected?: boolean;\n onClick?: () => void;\n size?: 'small' | 'medium' | 'large';\n endIcon?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nconst StyledListItemButton = styled(ListItemButton, {\n shouldForwardProp: (prop) => prop !== 'selected' && prop !== 'size',\n})<{ selected?: boolean; size?: string }>(({ selected, size = 'medium' }) => {\n const heightMap: Record<string, string> = {\n small: '40px',\n medium: '56px',\n large: '64px',\n };\n\n return {\n height: heightMap[size],\n paddingLeft: '16px',\n paddingRight: '16px',\n borderRadius: '8px',\n margin: '4px 8px',\n color: selected ? colors.primary.main : colors.text.primary,\n backgroundColor: selected ? colors.background.selected : 'transparent',\n '&:hover': {\n backgroundColor: selected ? colors.background.selected : colors.grey[50],\n },\n '& .MuiListItemIcon-root': {\n color: selected ? colors.primary.main : colors.text.secondary,\n minWidth: '40px',\n },\n '& .MuiListItemText-primary': {\n fontWeight: selected ? 600 : 400,\n color: selected ? colors.primary.main : colors.text.primary,\n },\n };\n});\n\nexport const SidebarItem: React.FC<SidebarItemProps> = ({\n label,\n icon,\n selected = false,\n onClick,\n size = 'medium',\n endIcon,\n children,\n}) => {\n return (\n <StyledListItemButton selected={selected} size={size} onClick={onClick}>\n {icon && <ListItemIcon>{icon}</ListItemIcon>}\n <ListItemText primary={label} />\n {endIcon && <div style={{ marginLeft: 'auto' }}>{endIcon}</div>}\n {children}\n </StyledListItemButton>\n );\n};\n\n","import React, { useState, useCallback } from 'react';\nimport {\n Box,\n Typography,\n Avatar,\n Tooltip,\n IconButton,\n Link,\n Chip,\n TextField,\n InputAdornment,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Button,\n Menu,\n} from '@mui/material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport ArchiveIcon from '@mui/icons-material/Archive';\nimport UnarchiveIcon from '@mui/icons-material/Unarchive';\nimport SearchIcon from '@mui/icons-material/Search';\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport PersonAddAltIcon from '@mui/icons-material/PersonAddAlt';\n\nexport interface Service {\n id: string;\n name: string;\n description?: string;\n type?: string;\n lastAccessed?: string;\n memberCount?: number;\n favorited?: boolean;\n isPersonal?: boolean;\n avatar?: string;\n archived?: boolean;\n}\n\nexport interface ServiceSelectorButtonProps {\n /**\n * List of services to display\n */\n services: Service[];\n /**\n * Currently selected service ID\n */\n selectedServiceId: string | null;\n /**\n * Loading state\n */\n loading?: boolean;\n /**\n * Compact mode for mobile or mini-sidebar\n */\n compact?: boolean;\n /**\n * Callback when service is selected\n */\n onSelectService?: (serviceId: string) => void;\n /**\n * Callback when service name is clicked (for navigation)\n */\n onServiceClick?: (serviceId: string) => void;\n /**\n * Callback when \"Create Service\" is clicked\n */\n onCreateService?: () => void;\n /**\n * Callback after service is created\n */\n onServiceCreated?: () => void;\n /**\n * Whether user is a manager for the selected service\n */\n isManager?: boolean;\n /**\n * Custom styles\n */\n sx?: never;\n /**\n * Panel width\n * @default 350\n */\n panelWidth?: number;\n /**\n * Callback when Settings button is clicked\n */\n onOpenSettings?: (serviceId: string) => void;\n /**\n * Callback when Add Member button is clicked\n */\n onOpenAddMember?: (serviceId: string) => void;\n}\n\nexport const ServiceSelectorButton: React.FC<ServiceSelectorButtonProps> = ({\n services,\n selectedServiceId,\n loading = false,\n compact = false,\n onSelectService,\n onServiceClick,\n onCreateService,\n onServiceCreated,\n isManager = false,\n sx = {},\n panelWidth = 350,\n onOpenSettings,\n onOpenAddMember,\n}) => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [searchTerm, setSearchTerm] = useState('');\n const [showArchived, setShowArchived] = useState(false);\n\n // Handle opening the service selector\n const handleOpenSelector = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n // Handle closing the service selector\n const handleClose = () => {\n setAnchorEl(null);\n setSearchTerm('');\n setShowArchived(false);\n };\n\n // Handle clicking on the service name (navigates to dashboard)\n const handleServiceClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (selectedServiceId && onServiceClick) {\n onServiceClick(selectedServiceId);\n }\n };\n\n // Handle selecting a service\n const handleSelectService = useCallback(\n (serviceId: string) => {\n handleClose();\n if (onSelectService) {\n onSelectService(serviceId);\n }\n },\n [onSelectService]\n );\n\n const handleCreateClick = () => {\n handleClose();\n if (onCreateService) {\n onCreateService();\n }\n };\n\n // Get the selected service\n const selectedService = Array.isArray(services)\n ? services.find((s) => s.id === selectedServiceId)\n : null;\n\n // Filter services based on search term and archived status\n const filteredServices = services.filter((service) => {\n const matchesSearch =\n searchTerm === '' ||\n service.name.toLowerCase().includes(searchTerm.toLowerCase());\n const isArchived = service.archived === true;\n const matchesArchivedFilter = showArchived ? isArchived : !isArchived;\n return matchesSearch && matchesArchivedFilter;\n });\n\n // Compact version for mobile or mini-sidebar\n if (compact) {\n return (\n <>\n <Box sx={{ position: 'relative' }}>\n <Tooltip title=\"Select service\" placement=\"right\">\n <IconButton\n onClick={handleOpenSelector}\n sx={{\n p: 1,\n '&:hover': {\n bgcolor: 'rgba(0, 0, 0, 0.04)',\n },\n ...sx,\n }}\n >\n <Avatar\n sx={{\n width: 32,\n height: 32,\n bgcolor: selectedServiceId ? 'primary.main' : 'grey.400',\n fontSize: '0.9rem',\n }}\n >\n {selectedService ? selectedService.name.charAt(0) : 'D'}\n </Avatar>\n </IconButton>\n </Tooltip>\n </Box>\n\n <ServiceSelectorPanel\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleClose}\n services={services}\n selectedServiceId={selectedServiceId}\n onSelectService={handleSelectService}\n onCreateService={handleCreateClick}\n onServiceCreated={onServiceCreated}\n loading={loading}\n width={panelWidth}\n isManager={isManager}\n selectedService={selectedService}\n searchTerm={searchTerm}\n onSearchChange={setSearchTerm}\n showArchived={showArchived}\n onToggleArchived={() => setShowArchived(!showArchived)}\n filteredServices={filteredServices}\n onOpenSettings={onOpenSettings}\n onOpenAddMember={onOpenAddMember}\n />\n </>\n );\n }\n\n // Standard breadcrumb style\n return (\n <>\n <Box sx={{ display: 'flex', alignItems: 'center', ...sx }}>\n {selectedService ? (\n <>\n {/* Service name as a regular breadcrumb link if user is manager, otherwise just text */}\n {isManager ? (\n <Link\n underline=\"hover\"\n color=\"inherit\"\n onClick={handleServiceClick}\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontSize: '0.875rem',\n cursor: 'pointer',\n mr: 0.5,\n }}\n >\n <Avatar\n sx={{\n width: 20,\n height: 20,\n bgcolor: 'primary.main',\n fontSize: '0.7rem',\n mr: 0.5,\n }}\n >\n {selectedService.name.charAt(0)}\n </Avatar>\n {selectedService.name}\n </Link>\n ) : (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontSize: '0.875rem',\n mr: 0.5,\n color: 'text.primary',\n }}\n >\n <Avatar\n sx={{\n width: 20,\n height: 20,\n bgcolor: 'primary.main',\n fontSize: '0.7rem',\n mr: 0.5,\n }}\n >\n {selectedService.name.charAt(0)}\n </Avatar>\n {selectedService.name}\n </Box>\n )}\n\n {/* Show archived chip if service is archived */}\n {selectedService.archived && (\n <Chip\n size=\"small\"\n label=\"Archived\"\n color=\"error\"\n variant=\"outlined\"\n sx={{\n ml: 0.5,\n height: 20,\n fontSize: '0.8rem',\n '& .MuiChip-label': { px: 1 },\n '& .MuiChip-icon': { fontSize: '0.7rem', ml: 0.5 },\n }}\n />\n )}\n </>\n ) : (\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n sx={{\n fontSize: '0.875rem',\n }}\n >\n Select Service\n </Typography>\n )}\n\n {/* Separate selector button */}\n <IconButton\n onClick={handleOpenSelector}\n size=\"small\"\n sx={{\n p: 0.2,\n ml: 0.5,\n color: 'text.secondary',\n }}\n >\n <KeyboardArrowDownIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n <ServiceSelectorPanel\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleClose}\n services={services}\n selectedServiceId={selectedServiceId}\n onSelectService={handleSelectService}\n onCreateService={handleCreateClick}\n onServiceCreated={onServiceCreated}\n loading={loading}\n width={panelWidth}\n isManager={isManager}\n selectedService={selectedService}\n searchTerm={searchTerm}\n onSearchChange={setSearchTerm}\n showArchived={showArchived}\n onToggleArchived={() => setShowArchived(!showArchived)}\n filteredServices={filteredServices}\n onOpenSettings={onOpenSettings}\n onOpenAddMember={onOpenAddMember}\n />\n </>\n );\n};\n\ninterface ServiceSelectorPanelProps {\n open: boolean;\n anchorEl: HTMLElement | null;\n onClose: () => void;\n services: Service[];\n selectedServiceId: string | null;\n onSelectService: (serviceId: string) => void;\n onCreateService?: () => void;\n onServiceCreated?: () => void;\n loading?: boolean;\n width?: number;\n isManager?: boolean;\n selectedService?: Service | null;\n searchTerm?: string;\n onSearchChange?: (term: string) => void;\n showArchived?: boolean;\n onToggleArchived?: () => void;\n filteredServices?: Service[];\n onOpenSettings?: (serviceId: string) => void;\n onOpenAddMember?: (serviceId: string) => void;\n}\n\nconst ServiceSelectorPanel: React.FC<ServiceSelectorPanelProps> = ({\n open,\n anchorEl,\n onClose,\n services,\n selectedServiceId,\n onSelectService,\n onCreateService,\n onServiceCreated,\n loading = false,\n width = 350,\n isManager = false,\n selectedService,\n searchTerm: externalSearchTerm,\n onSearchChange: externalOnSearchChange,\n showArchived: externalShowArchived,\n onToggleArchived: externalOnToggleArchived,\n filteredServices: externalFilteredServices,\n onOpenSettings,\n onOpenAddMember,\n}) => {\n const [internalSearchTerm, setInternalSearchTerm] = useState('');\n const [internalShowArchived, setInternalShowArchived] = useState(false);\n\n const searchTerm = externalSearchTerm !== undefined ? externalSearchTerm : internalSearchTerm;\n const setSearchTerm = externalOnSearchChange || setInternalSearchTerm;\n const showArchived = externalShowArchived !== undefined ? externalShowArchived : internalShowArchived;\n const toggleArchived = externalOnToggleArchived || (() => setInternalShowArchived(!internalShowArchived));\n\n // Filter services if not provided externally\n const filteredServices =\n externalFilteredServices ||\n services.filter((service) => {\n const matchesSearch =\n searchTerm === '' ||\n service.name.toLowerCase().includes(searchTerm.toLowerCase());\n const isArchived = service.archived === true;\n const matchesArchivedFilter = showArchived ? isArchived : !isArchived;\n return matchesSearch && matchesArchivedFilter;\n });\n\n const handleCreateClick = () => {\n if (onCreateService) {\n onCreateService();\n } else {\n // If no onCreateService handler, just close and call onServiceCreated\n onClose();\n if (onServiceCreated) {\n onServiceCreated();\n }\n }\n };\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n PaperProps={{\n sx: {\n width: width,\n maxHeight: '80vh',\n borderRadius: 1,\n boxShadow: '0 2px 10px rgba(0, 0, 0, 0.12)',\n overflow: 'hidden',\n mt: 1,\n },\n }}\n >\n {/* Header with selected service and management buttons */}\n {selectedService && (\n <Box\n sx={{\n paddingLeft: 2,\n paddingRight: 2,\n paddingTop: 1.5,\n paddingBottom: 1.5,\n borderBottom: 1,\n borderColor: 'divider',\n }}\n >\n {/* Top section with service name */}\n <Box sx={{\n display: 'flex',\n alignItems: 'center',\n mb: 1.5\n }}>\n <Avatar\n sx={{\n width: 32,\n height: 32,\n bgcolor: 'primary.main',\n fontSize: '0.9rem',\n mr: 1.5\n }}\n >\n {selectedService.name.charAt(0)}\n </Avatar>\n <Box sx={{ flex: 1 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 600, fontSize: '1rem' }}>\n {selectedService.name}\n </Typography>\n <Box\n sx={{\n display: 'inline-block',\n bgcolor: 'rgba(0, 0, 0, 0.04)',\n color: 'text.secondary',\n px: 1,\n py: 0.3,\n borderRadius: '12px',\n fontSize: '0.7rem',\n fontWeight: 500,\n lineHeight: 1,\n }}\n >\n {isManager ? 'Manager' : 'Viewer'}\n </Box>\n </Box>\n </Box>\n </Box>\n\n {/* Bottom section with management buttons - always visible */}\n {(onOpenSettings || onOpenAddMember) && (\n <Box sx={{ display: 'flex', gap: 1 }}>\n {onOpenAddMember && (\n <Button\n startIcon={<PersonAddAltIcon />}\n variant=\"outlined\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n onOpenAddMember(selectedServiceId || '');\n }}\n disabled={!isManager}\n sx={{\n flex: 1,\n textTransform: 'none',\n color: 'text.secondary',\n fontSize: '0.8rem',\n py: 0.75,\n justifyContent: 'flex-start',\n borderColor: 'rgba(0, 0, 0, 0.12)',\n borderRadius: '6px',\n '&:hover': {\n borderColor: 'rgba(0, 0, 0, 0.23)',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'not-allowed'\n }\n }}\n >\n Add member\n </Button>\n )}\n\n {onOpenSettings && (\n <Button\n startIcon={<SettingsIcon />}\n variant=\"outlined\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n onOpenSettings(selectedServiceId || '');\n }}\n disabled={!isManager}\n sx={{\n flex: 1,\n textTransform: 'none',\n color: 'text.secondary',\n fontSize: '0.8rem',\n py: 0.75,\n justifyContent: 'flex-start',\n borderColor: 'rgba(0, 0, 0, 0.12)',\n borderRadius: '6px',\n '&:hover': {\n borderColor: 'rgba(0, 0, 0, 0.23)',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'not-allowed'\n }\n }}\n >\n Settings\n </Button>\n )}\n </Box>\n )}\n </Box>\n )}\n\n {/* Search box with archive toggle */}\n <Box sx={{ px: 2, pt: 2, pb: 1.5 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', mb: 1.5 }}>\n <TextField\n size=\"small\"\n placeholder=\"Search services...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n sx={{ flex: 1 }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" color=\"action\" />\n </InputAdornment>\n ),\n sx: {\n borderRadius: 1.5,\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n '& fieldset': { border: 'none' },\n py: 0.5,\n },\n }}\n />\n <Tooltip title={showArchived ? 'Show active' : 'Show archived'}>\n <IconButton\n size=\"small\"\n onClick={toggleArchived}\n color={showArchived ? 'primary' : 'default'}\n sx={{ ml: 1 }}\n >\n {showArchived ? (\n <UnarchiveIcon fontSize=\"small\" />\n ) : (\n <ArchiveIcon fontSize=\"small\" />\n )}\n </IconButton>\n </Tooltip>\n </Box>\n\n {/* Service list content */}\n <Box\n sx={{\n maxHeight: 400,\n overflow: 'auto',\n py: 1,\n }}\n >\n {loading ? (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Loading services...\n </Typography>\n </Box>\n ) : filteredServices.length === 0 ? (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {searchTerm\n ? `No ${showArchived ? 'archived ' : ''}services matching \"${searchTerm}\"`\n : showArchived\n ? 'No archived services found'\n : 'No active services found'}\n </Typography>\n </Box>\n ) : (\n <>\n {/* Group Header */}\n <Typography\n variant=\"caption\"\n sx={{\n display: 'block',\n px: 2.5,\n py: 0.5,\n color: 'text.secondary',\n fontWeight: 600,\n textTransform: 'uppercase',\n fontSize: '0.65rem',\n letterSpacing: 0.5,\n }}\n >\n Services\n {showArchived && (\n <Chip\n size=\"small\"\n label=\"Archived\"\n color=\"error\"\n variant=\"outlined\"\n sx={{\n ml: 1,\n height: 20,\n fontSize: '0.6rem',\n '& .MuiChip-label': { px: 0.5 },\n '& .MuiChip-icon': { fontSize: '0.7rem', ml: 0.5 },\n }}\n />\n )}\n </Typography>\n\n {/* Group Services */}\n <List disablePadding>\n {filteredServices.map((service) => (\n <ListItem\n key={service.id}\n sx={{\n py: 0.75,\n px: 2,\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n },\n backgroundColor:\n service.id === selectedServiceId\n ? 'rgba(25, 118, 210, 0.08)'\n : 'transparent',\n position: 'relative',\n }}\n onClick={() => onSelectService(service.id)}\n secondaryAction={\n service.id === selectedServiceId ? (\n <CheckIcon\n sx={{\n color: 'primary.main',\n fontSize: '1.2rem',\n }}\n />\n ) : null\n }\n >\n <ListItemAvatar sx={{ minWidth: 40 }}>\n <Avatar\n sx={{\n width: 26,\n height: 26,\n bgcolor:\n service.id === selectedServiceId ? 'primary.main' : 'grey.400',\n fontSize: '0.8rem',\n }}\n src={service.avatar}\n >\n {service.name.charAt(0)}\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography\n variant=\"body2\"\n sx={{\n fontWeight: service.id === selectedServiceId ? 600 : 400,\n color:\n service.id === selectedServiceId\n ? 'primary.main'\n : 'text.primary',\n }}\n >\n {service.name}\n </Typography>\n </Box>\n }\n primaryTypographyProps={{ sx: { fontWeight: 500 } }}\n sx={{ my: 0 }}\n />\n </ListItem>\n ))}\n </List>\n </>\n )}\n </Box>\n\n {/* Footer actions */}\n <Box\n sx={{\n paddingTop: 2,\n paddingLeft: 2,\n paddingRight: 2,\n borderTop: 1,\n borderColor: 'divider',\n }}\n >\n <Button\n fullWidth\n variant=\"text\"\n startIcon={<AddIcon />}\n onClick={handleCreateClick}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n justifyContent: 'flex-start',\n color: 'primary.main',\n py: 1,\n px: 1.5,\n '&:hover': {\n backgroundColor: 'rgba(25, 118, 210, 0.08)',\n },\n }}\n >\n New Service\n </Button>\n </Box>\n </Box>\n </Menu>\n );\n};\n\nexport default ServiceSelectorButton;\n\n","import React, { useState, useCallback } from 'react';\nimport {\n Box,\n Typography,\n Avatar,\n IconButton,\n Link,\n TextField,\n InputAdornment,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Button,\n Menu,\n} from '@mui/material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport SearchIcon from '@mui/icons-material/Search';\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\n\nexport interface Workspace {\n id: string;\n name: string;\n description?: string;\n}\n\nexport interface WorkspaceSelectorButtonProps {\n /**\n * List of workspaces to display\n */\n workspaces: Workspace[];\n /**\n * Currently selected workspace ID\n */\n selectedWorkspaceId: string | null;\n /**\n * Loading state\n */\n loading?: boolean;\n /**\n * Callback when workspace is selected\n */\n onSelectWorkspace?: (workspaceId: string) => void;\n /**\n * Callback when workspace name is clicked (for navigation)\n */\n onWorkspaceClick?: (workspaceId: string) => void;\n /**\n * Callback when \"Create Workspace\" is clicked\n */\n onCreateWorkspace?: () => void;\n /**\n * Custom styles\n */\n sx?: any;\n /**\n * Panel width\n * @default 350\n */\n panelWidth?: number;\n}\n\nexport const WorkspaceSelectorButton: React.FC<WorkspaceSelectorButtonProps> = ({\n workspaces,\n selectedWorkspaceId,\n loading = false,\n onSelectWorkspace,\n onWorkspaceClick,\n onCreateWorkspace,\n sx = {},\n panelWidth = 350,\n}) => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n // Handle opening the workspace selector\n const handleOpenSelector = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n // Handle closing the workspace selector\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n // Handle selecting a workspace\n const handleSelectWorkspace = useCallback(\n (workspaceId: string) => {\n handleClose();\n if (onSelectWorkspace) {\n onSelectWorkspace(workspaceId);\n }\n },\n [onSelectWorkspace]\n );\n\n // Get the selected workspace\n const selectedWorkspace = Array.isArray(workspaces)\n ? workspaces.find((w) => w.id === selectedWorkspaceId)\n : null;\n\n if (!workspaces || workspaces.length === 0) {\n return null;\n }\n\n return (\n <>\n <Box sx={{ display: 'flex', alignItems: 'center', ...sx }}>\n {selectedWorkspace ? (\n <>\n {/* Workspace name as a regular breadcrumb link */}\n <Link\n underline=\"hover\"\n color=\"inherit\"\n onClick={(e) => {\n e.stopPropagation();\n if (onWorkspaceClick) {\n onWorkspaceClick(selectedWorkspace.id);\n }\n }}\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontSize: '0.875rem',\n cursor: 'pointer',\n mr: 0.5,\n }}\n >\n <Avatar\n sx={{\n width: 20,\n height: 20,\n bgcolor: 'secondary.main',\n fontSize: '0.7rem',\n mr: 0.5,\n }}\n >\n {selectedWorkspace.name.charAt(0)}\n </Avatar>\n {selectedWorkspace.name}\n </Link>\n </>\n ) : (\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n sx={{\n fontSize: '0.875rem',\n }}\n >\n Select Workspace\n </Typography>\n )}\n\n {/* Separate selector button */}\n <IconButton\n onClick={handleOpenSelector}\n size=\"small\"\n sx={{\n p: 0.2,\n ml: 0.5,\n color: 'text.secondary',\n }}\n >\n <KeyboardArrowDownIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n <WorkspaceSelectorPanel\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleClose}\n workspaces={workspaces}\n selectedWorkspaceId={selectedWorkspaceId}\n onSelectWorkspace={handleSelectWorkspace}\n onCreateWorkspace={onCreateWorkspace}\n loading={loading}\n width={panelWidth}\n />\n </>\n );\n};\n\ninterface WorkspaceSelectorPanelProps {\n open: boolean;\n anchorEl: HTMLElement | null;\n onClose: () => void;\n workspaces: Workspace[];\n selectedWorkspaceId: string | null;\n onSelectWorkspace: (workspaceId: string) => void;\n onCreateWorkspace?: () => void;\n loading?: boolean;\n width?: number;\n}\n\nconst WorkspaceSelectorPanel: React.FC<WorkspaceSelectorPanelProps> = ({\n open,\n anchorEl,\n onClose,\n workspaces,\n selectedWorkspaceId,\n onSelectWorkspace,\n onCreateWorkspace,\n loading = false,\n width = 350,\n}) => {\n const [searchTerm, setSearchTerm] = useState('');\n\n // Reset search when panel opens\n React.useEffect(() => {\n if (open) {\n setSearchTerm('');\n }\n }, [open]);\n\n const filteredWorkspaces = workspaces.filter((w) =>\n w.name.toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n const handleCreateClick = () => {\n onClose();\n if (onCreateWorkspace) {\n onCreateWorkspace();\n }\n };\n\n const handleSelect = (workspaceId: string) => {\n onSelectWorkspace(workspaceId);\n onClose();\n };\n\n return (\n <Menu\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n PaperProps={{\n sx: {\n width: width,\n maxHeight: 600,\n mt: 1,\n borderRadius: 2,\n },\n }}\n >\n <Box>\n {/* Search box */}\n <Box sx={{ px: 2, pt: 2, pb: 1.5 }}>\n <TextField\n fullWidth\n size=\"small\"\n placeholder=\"Search workspaces...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n\n {/* Workspace list */}\n <Box sx={{ maxHeight: 400, overflowY: 'auto' }}>\n {loading ? (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Loading...\n </Typography>\n </Box>\n ) : filteredWorkspaces.length === 0 ? (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n No workspaces found\n </Typography>\n </Box>\n ) : (\n <List dense>\n {filteredWorkspaces.map((workspace) => (\n <ListItem\n key={workspace.id}\n onClick={() => handleSelect(workspace.id)}\n sx={{\n py: 0.5,\n cursor: 'pointer',\n bgcolor:\n workspace.id === selectedWorkspaceId\n ? 'action.selected'\n : 'transparent',\n '&:hover': {\n bgcolor: 'action.hover',\n },\n }}\n >\n <ListItemAvatar>\n <Avatar\n sx={{ width: 32, height: 32, bgcolor: 'secondary.main' }}\n >\n {workspace.name.charAt(0)}\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Typography variant=\"body2\" fontWeight={500}>\n {workspace.name}\n </Typography>\n {workspace.id === selectedWorkspaceId && (\n <CheckIcon fontSize=\"small\" color=\"primary\" />\n )}\n </Box>\n }\n secondary={workspace.description}\n />\n </ListItem>\n ))}\n </List>\n )}\n </Box>\n\n {/* Footer actions */}\n <Box\n sx={{\n paddingTop: 2,\n paddingLeft: 2,\n paddingRight: 2,\n borderTop: 1,\n borderColor: 'divider',\n }}\n >\n <Button\n fullWidth\n variant=\"text\"\n startIcon={<AddIcon />}\n onClick={handleCreateClick}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n justifyContent: 'flex-start',\n color: 'primary.main',\n py: 1,\n px: 1.5,\n '&:hover': {\n backgroundColor: 'rgba(25, 118, 210, 0.08)',\n },\n }}\n >\n New Workspace\n </Button>\n </Box>\n </Box>\n </Menu>\n );\n};\n\nexport default WorkspaceSelectorButton;\n\n","import React from 'react';\nimport {\n Stepper as MuiStepper,\n Step as MuiStep,\n StepLabel as MuiStepLabel,\n StepContent as MuiStepContent,\n StepButton as MuiStepButton,\n StepperProps as MuiStepperProps,\n StepProps as MuiStepProps,\n StepLabelProps as MuiStepLabelProps,\n StepContentProps as MuiStepContentProps,\n StepButtonProps as MuiStepButtonProps,\n} from '@mui/material';\n\nexport type StepperProps = MuiStepperProps\n\n/**\n * Stepper component - displays progress through a sequence of steps\n *\n * @example\n * ```tsx\n * <Stepper activeStep={activeStep}>\n * <Step>\n * <StepLabel>Step 1</StepLabel>\n * </Step>\n * <Step>\n * <StepLabel>Step 2</StepLabel>\n * </Step>\n * </Stepper>\n * ```\n */\nexport const Stepper: React.FC<StepperProps> = (props) => {\n return <MuiStepper {...props} />;\n};\n\nexport type StepProps = MuiStepProps\n\n/**\n * Step component - represents a single step in a Stepper\n */\nexport const Step: React.FC<StepProps> = (props) => {\n return <MuiStep {...props} />;\n};\n\nexport type StepLabelProps = MuiStepLabelProps\n\n/**\n * StepLabel component - label for a Step\n */\nexport const StepLabel: React.FC<StepLabelProps> = (props) => {\n return <MuiStepLabel {...props} />;\n};\n\nexport type StepContentProps = MuiStepContentProps\n\n/**\n * StepContent component - optional content that appears below a StepLabel\n */\nexport const StepContent: React.FC<StepContentProps> = (props) => {\n return <MuiStepContent {...props} />;\n};\n\nexport type StepButtonProps = MuiStepButtonProps\n\n/**\n * StepButton component - makes a Step clickable\n */\nexport const StepButton: React.FC<StepButtonProps> = (props) => {\n return <MuiStepButton {...props} />;\n};\n\nexport default Stepper;\n\n","/**\n * SideNav Component\n * Main container for side navigation with compound components\n * V2: Added collapsed state support with animated transitions\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { Box } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport type { SideNavProps, SideNavHeaderSlotProps, SideNavNavigationProps, SideNavFooterProps } from './types';\nimport { scrollbarStyles } from './styles';\n\n// Context to pass collapsed state and handlers to child components\ninterface SideNavContextValue {\n collapsed: boolean;\n showTooltips: boolean;\n onToggleCollapse?: () => void;\n}\n\nconst SideNavContext = React.createContext<SideNavContextValue>({\n collapsed: false,\n showTooltips: true,\n});\n\n/**\n * Styled main container with collapsed state support\n */\nconst SideNavContainer = styled(Box, {\n shouldForwardProp: (prop) => !['navWidth', 'navPosition', 'showBorder', 'backgroundColor', 'isCollapsed', 'collapsedWidth', 'transitionDuration'].includes(prop as string),\n})<{\n navWidth?: number;\n navPosition?: string;\n showBorder?: boolean;\n backgroundColor?: string;\n isCollapsed?: boolean;\n collapsedWidth?: number;\n transitionDuration?: number;\n}>(({ theme, navWidth = 280, navPosition = 'left', showBorder = true, backgroundColor, isCollapsed = false, collapsedWidth = 68, transitionDuration = 300 }) => ({\n width: isCollapsed ? collapsedWidth : navWidth,\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: backgroundColor || theme.palette.background.paper,\n overflow: 'hidden',\n transition: `width ${transitionDuration}ms ${theme.transitions.easing.easeInOut}`,\n\n // Disable transition for reduced motion preference\n '@media (prefers-reduced-motion: reduce)': {\n transition: 'none',\n },\n\n // Border on the appropriate side\n ...(showBorder && {\n borderRight: navPosition === 'left' ? `1px solid ${theme.palette.divider}` : 'none',\n borderLeft: navPosition === 'right' ? `1px solid ${theme.palette.divider}` : 'none',\n }),\n}));\n\n/**\n * Header section (fixed at top)\n */\nconst HeaderSection = styled(Box)(({ theme }) => ({\n flexShrink: 0,\n backgroundColor: theme.palette.background.paper,\n}));\n\n/**\n * Navigation section (scrollable)\n */\nconst NavigationSection = styled(Box)(() => ({\n flexGrow: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n ...scrollbarStyles,\n}));\n\n/**\n * Footer section (fixed)\n */\nconst FooterSection = styled(Box)(({ theme }) => ({\n flexShrink: 0,\n backgroundColor: theme.palette.background.paper,\n}));\n\n/**\n * SideNav.Header compound component\n * Passes collapsed state and toggle handler to children\n */\nconst Header = React.memo<SideNavHeaderSlotProps>(({ children, className }) => {\n const { collapsed, onToggleCollapse } = React.useContext(SideNavContext);\n \n // Clone children and inject collapsed prop\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement<any>, {\n collapsed,\n onCollapse: onToggleCollapse,\n });\n }\n return child;\n });\n\n return (\n <HeaderSection className={className} data-testid=\"sidenav-header\">\n {enhancedChildren}\n </HeaderSection>\n );\n});\n\nHeader.displayName = 'SideNav.Header';\n\n/**\n * SideNav.Navigation compound component\n * Passes collapsed state to children\n */\nconst Navigation = React.memo<SideNavNavigationProps>(({ children, className }) => {\n const { collapsed, showTooltips } = React.useContext(SideNavContext);\n \n // Clone children and inject collapsed and showTooltips props\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement<any>, {\n collapsed,\n showTooltips,\n });\n }\n return child;\n });\n\n return (\n <NavigationSection className={className} data-testid=\"sidenav-navigation\">\n {enhancedChildren}\n </NavigationSection>\n );\n});\n\nNavigation.displayName = 'SideNav.Navigation';\n\n/**\n * SideNav.Footer compound component\n * Passes collapsed state to children\n */\nconst Footer = React.memo<SideNavFooterProps>(({ children, className }) => {\n const { collapsed } = React.useContext(SideNavContext);\n \n // Clone children and inject compact prop\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement<any>, {\n compact: collapsed,\n });\n }\n return child;\n });\n\n return (\n <FooterSection className={className} data-testid=\"sidenav-footer\">\n {enhancedChildren}\n </FooterSection>\n );\n});\n\nFooter.displayName = 'SideNav.Footer';\n\n/**\n * Main SideNav component with compound components\n * V2: Supports controlled/uncontrolled collapsed state\n */\ninterface SideNavComponent extends React.FC<SideNavProps> {\n Header: typeof Header;\n Navigation: typeof Navigation;\n Footer: typeof Footer;\n}\n\nexport const SideNav: SideNavComponent = Object.assign(\n React.memo<SideNavProps>(({\n width = 280,\n collapsedWidth = 68,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapseChange,\n transitionDuration = 300,\n showTooltips = true,\n position = 'left',\n showBorder = true,\n backgroundColor,\n children,\n className,\n ariaLabel = 'Main navigation',\n }) => {\n // Internal state for uncontrolled mode\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n\n // Determine if we're in controlled mode\n const isControlled = controlledCollapsed !== undefined;\n const collapsed = isControlled ? controlledCollapsed : internalCollapsed;\n\n // Toggle handler\n const handleToggleCollapse = useCallback(() => {\n const newCollapsed = !collapsed;\n \n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalCollapsed(newCollapsed);\n }\n\n // Call the callback if provided\n if (onCollapseChange) {\n onCollapseChange(newCollapsed);\n }\n }, [collapsed, isControlled, onCollapseChange]);\n\n // Context value to pass to children\n const contextValue: SideNavContextValue = {\n collapsed,\n showTooltips,\n onToggleCollapse: handleToggleCollapse,\n };\n\n return (\n <SideNavContext.Provider value={contextValue}>\n <SideNavContainer\n role=\"navigation\"\n aria-label={ariaLabel}\n navWidth={width}\n collapsedWidth={collapsedWidth}\n isCollapsed={collapsed}\n transitionDuration={transitionDuration}\n navPosition={position}\n showBorder={showBorder}\n backgroundColor={backgroundColor}\n className={className}\n >\n {children}\n </SideNavContainer>\n </SideNavContext.Provider>\n );\n }),\n {\n Header,\n Navigation,\n Footer,\n }\n);\n\nSideNav.displayName = 'SideNav';\n\n// Export context for use by child components\nexport { SideNavContext };\n","/**\n * Shared styles for SideNav components\n */\n\n/**\n * Custom scrollbar styling for scrollable containers\n * Used by NavigationSection (SideNav) and NavigationList\n */\nexport const scrollbarStyles = {\n '&::-webkit-scrollbar': {\n width: '8px',\n },\n '&::-webkit-scrollbar-track': {\n backgroundColor: 'transparent',\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n borderRadius: '4px',\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n },\n },\n} as const;\n","/**\n * SideNavHeader Component\n * Displays app branding (logo + title) and an optional collapse toggle button\n * V2: Supports collapsed state with compact logo-only view\n */\n\nimport React from 'react';\nimport { Box, Typography, IconButton, Tooltip, ButtonBase } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport type { SideNavHeaderProps } from './types';\n\n/**\n * Styled container for the header section\n */\nconst HeaderContainer = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'isCollapsed',\n})<{ isCollapsed?: boolean }>(({ theme, isCollapsed }) => ({\n display: 'flex',\n flexDirection: isCollapsed ? 'column' : 'row',\n alignItems: 'center',\n justifyContent: isCollapsed ? 'center' : 'flex-start',\n gap: isCollapsed ? theme.spacing(1) : theme.spacing(1.5),\n padding: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n transition: theme.transitions.create(['gap', 'justify-content', 'flex-direction'], {\n duration: theme.transitions.duration.shorter,\n }),\n}));\n\n/**\n * Styled clickable branding area (logo + title).\n * Only this region triggers onLogoClick — not the full header.\n */\nconst BrandingButton = styled(ButtonBase)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1.5),\n minWidth: 0,\n padding: 0,\n borderRadius: theme.shape.borderRadius,\n // Subtle hover feedback only when clickable\n '&:hover': {\n opacity: 0.8,\n },\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: 2,\n },\n}));\n\n/**\n * SideNavHeader Component\n *\n * Renders the app branding area at the top of the side navigation.\n * Includes an optional logo, a title, and an optional collapse toggle button.\n * V2: In collapsed state, shows logo stacked vertically above toggle button.\n *\n * If `onLogoClick` is provided, only the logo+title area is clickable\n * (e.g. to navigate back to the home page). The rest of the header\n * (collapse button, surrounding padding) does NOT trigger that callback.\n */\nexport const SideNavHeader = React.memo<SideNavHeaderProps>(({\n logo,\n title,\n showCollapseButton = true,\n onCollapse,\n onLogoClick,\n ariaLabel,\n collapsed = false,\n}) => {\n const headerAriaLabel = ariaLabel || `${title} navigation header`;\n\n // The logo + title content (shared between clickable and non-clickable variants)\n const brandingContent = (\n <>\n {/* Logo - Always visible */}\n {logo && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n >\n {logo}\n </Box>\n )}\n\n {/* Title - Hidden when collapsed */}\n {!collapsed && (\n <Typography\n variant=\"subtitle1\"\n sx={{\n fontWeight: 700,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n >\n {title}\n </Typography>\n )}\n </>\n );\n\n return (\n <HeaderContainer\n data-testid=\"sidenav-header-content\"\n aria-label={headerAriaLabel}\n isCollapsed={collapsed}\n >\n {/* Branding area — only this region is clickable for \"go home\" */}\n {onLogoClick ? (\n <BrandingButton\n onClick={onLogoClick}\n aria-label={`Go to ${title} home`}\n data-testid=\"sidenav-home-link\"\n >\n {brandingContent}\n </BrandingButton>\n ) : (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n minWidth: 0,\n }}\n >\n {brandingContent}\n </Box>\n )}\n\n {/* Collapse toggle button — pushed to the right edge via marginLeft auto */}\n {showCollapseButton && (\n <Tooltip\n title={collapsed ? 'Expand navigation' : 'Collapse navigation'}\n placement=\"right\"\n arrow\n >\n <IconButton\n onClick={onCollapse}\n aria-label={collapsed ? 'Expand navigation' : 'Collapse navigation'}\n aria-expanded={!collapsed}\n size=\"small\"\n sx={{\n flexShrink: 0,\n marginLeft: collapsed ? 0 : 'auto',\n color: 'text.secondary',\n '&:hover': {\n backgroundColor: 'action.hover',\n color: 'text.primary',\n },\n }}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n </Tooltip>\n )}\n </HeaderContainer>\n );\n});\n\nSideNavHeader.displayName = 'SideNavHeader';\n","/**\n * NavigationList Component\n * Container for multiple navigation items with scroll support\n * V2: Passes collapsed state to navigation items\n */\n\nimport React, { useState } from 'react';\nimport { List, ListItem } from '@mui/material';\nimport { NavigationItem } from './NavigationItem';\nimport { scrollbarStyles } from './styles';\nimport type { NavigationListProps } from './types';\n\n/**\n * NavigationList Component\n */\nexport const NavigationList = React.memo<NavigationListProps>(({\n items,\n selectedId,\n onSelectionChange,\n maxHeight = 'auto',\n ariaLabel = 'Navigation menu',\n collapsed = false,\n showTooltips = true,\n}) => {\n // Internal state for uncontrolled mode\n const [internalSelectedId, setInternalSelectedId] = useState<string | undefined>(\n selectedId\n );\n\n // Determine if we're in controlled mode\n const isControlled = selectedId !== undefined;\n const currentSelectedId = isControlled ? selectedId : internalSelectedId;\n\n const handleItemClick = (id: string) => {\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalSelectedId(id);\n }\n\n // Call the callback if provided\n if (onSelectionChange) {\n onSelectionChange(id);\n }\n };\n\n return (\n <List\n role=\"list\"\n aria-label={ariaLabel}\n sx={{\n padding: 0,\n maxHeight,\n overflowY: maxHeight !== 'auto' ? 'auto' : 'visible',\n overflowX: 'hidden',\n ...(maxHeight !== 'auto' ? scrollbarStyles : {}),\n }}\n >\n {items.map((item, index) => {\n const isSelected = currentSelectedId === item.id;\n\n return (\n <ListItem\n key={`${item.id}-${index}`}\n role=\"listitem\"\n sx={{\n padding: 0,\n display: 'block',\n }}\n >\n <NavigationItem\n {...item}\n selected={isSelected}\n collapsed={collapsed}\n showTooltip={showTooltips}\n onClick={(id) => {\n // Don't handle click if item is disabled\n if (item.disabled) {\n return;\n }\n\n // Call the item's onClick if provided\n if (item.onClick) {\n item.onClick(id);\n }\n\n // Handle selection change\n handleItemClick(id);\n }}\n />\n </ListItem>\n );\n })}\n </List>\n );\n});\n\nNavigationList.displayName = 'NavigationList';\n","/**\n * NavigationItem Component\n * Individual navigation menu item with icon, label, and interactive states\n * V2: Added collapsed state support with tooltips\n */\n\nimport React from 'react';\nimport {\n ListItemButton,\n ListItemIcon,\n ListItemText,\n Box,\n Tooltip,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport type { NavigationItemProps } from './types';\n\n/**\n * Styled ListItemButton with custom states and collapsed support\n */\nconst StyledListItemButton = styled(ListItemButton, {\n shouldForwardProp: (prop) => \n !['selected', 'size', 'iconPosition', 'isCollapsed'].includes(prop as string),\n})<{ selected?: boolean; size?: string; isCollapsed?: boolean }>(({ theme, selected, size, isCollapsed }) => {\n const heights = {\n small: 40,\n medium: 48,\n large: 56,\n };\n\n return {\n minHeight: heights[size as keyof typeof heights] || heights.medium,\n padding: theme.spacing(1, 1.5), // 8px 12px\n margin: theme.spacing(0.5, 1), // 4px 8px\n borderRadius: theme.shape.borderRadius,\n gap: isCollapsed ? 0 : theme.spacing(1), // No gap in collapsed mode\n justifyContent: isCollapsed ? 'center' : 'flex-start',\n transition: theme.transitions.create(\n ['background-color', 'color', 'justify-content'],\n { duration: theme.transitions.duration.shortest }\n ),\n\n // Default state\n color: theme.palette.text.primary,\n backgroundColor: 'transparent',\n\n '& .MuiListItemIcon-root': {\n minWidth: 'auto',\n color: theme.palette.text.secondary,\n },\n\n // Hover state\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n '& .MuiListItemIcon-root': {\n color: theme.palette.text.primary,\n },\n },\n\n // Selected state\n ...(selected && {\n color: theme.palette.primary.main,\n backgroundColor: theme.palette.action.selected,\n\n '& .MuiListItemIcon-root': {\n minWidth: 'auto',\n color: theme.palette.primary.main,\n },\n\n '&:hover': {\n backgroundColor: theme.palette.action.selected,\n '& .MuiListItemIcon-root': {\n color: theme.palette.primary.main,\n },\n },\n }),\n\n // Disabled state\n '&.Mui-disabled': {\n opacity: 1,\n color: theme.palette.text.disabled,\n '& .MuiListItemIcon-root': {\n color: theme.palette.action.disabled,\n },\n },\n };\n});\n\n/**\n * NavigationItem Component\n * V2: Supports collapsed state with tooltip\n */\nexport const NavigationItem = React.memo<NavigationItemProps>(({\n id,\n label,\n icon,\n iconPosition = 'left',\n selected = false,\n disabled = false,\n onClick,\n endContent,\n href,\n ariaLabel,\n size = 'medium',\n collapsed = false,\n showTooltip = true,\n tooltipPlacement = 'right',\n ...rest\n}) => {\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick(id);\n }\n };\n\n const iconElement = icon && (\n <ListItemIcon\n sx={{\n fontSize: 24,\n width: 24,\n height: 24,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n {icon}\n </ListItemIcon>\n );\n\n const labelElement = (\n <ListItemText\n primary={label}\n primaryTypographyProps={{\n sx: {\n fontWeight: 400,\n fontSize: 16,\n lineHeight: 1.5,\n letterSpacing: '0.0168em',\n display: collapsed ? 'none' : 'block',\n opacity: collapsed ? 0 : 1,\n transition: (theme) => theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.shorter,\n }),\n },\n }}\n />\n );\n\n const buttonContent = (\n <StyledListItemButton\n selected={selected}\n disabled={disabled}\n onClick={handleClick}\n {...(href && { component: 'a', href })}\n aria-label={ariaLabel || label}\n aria-current={selected ? 'page' : undefined}\n aria-disabled={disabled}\n size={size}\n isCollapsed={collapsed}\n {...rest}\n >\n {/* Icon on left */}\n {icon && iconPosition === 'left' && iconElement}\n\n {/* Label (hidden in collapsed mode) */}\n {labelElement}\n\n {/* Icon on right */}\n {icon && iconPosition === 'right' && iconElement}\n\n {/* End content (hidden in collapsed mode) */}\n {endContent && !collapsed && (\n <Box\n sx={{\n marginLeft: 'auto',\n display: 'flex',\n alignItems: 'center',\n }}\n >\n {endContent}\n </Box>\n )}\n </StyledListItemButton>\n );\n\n // Wrap in tooltip when collapsed\n if (collapsed && showTooltip) {\n return (\n <Tooltip\n title={label}\n placement={tooltipPlacement}\n enterDelay={200}\n leaveDelay={0}\n arrow\n >\n {buttonContent}\n </Tooltip>\n );\n }\n\n return buttonContent;\n});\n\nNavigationItem.displayName = 'NavigationItem';\n","/**\n * ConnectionStatus Component\n * Displays connection status with pill-style indicator\n * V2: Supports compact mode for collapsed sidebar\n */\n\nimport React from 'react';\nimport { Box, Typography, Tooltip } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport PowerIcon from '@mui/icons-material/Power';\nimport type { ConnectionStatusProps } from './types';\n\n/**\n * Styled container for the status pill\n */\nconst StatusPill = styled(Box, {\n shouldForwardProp: (prop) => !['variant', 'interactive'].includes(prop as string),\n})<{ variant?: string; interactive?: boolean }>(({ theme, variant = 'info', interactive }) => {\n const variantColors = {\n success: {\n background: theme.palette.success.light + '20',\n text: theme.palette.success.dark,\n },\n warning: {\n background: theme.palette.warning.light + '20',\n text: theme.palette.warning.dark,\n },\n error: {\n background: theme.palette.error.light + '20',\n text: theme.palette.error.dark,\n },\n info: {\n background: theme.palette.grey[100],\n text: theme.palette.text.primary,\n },\n };\n\n const colors = variantColors[variant as keyof typeof variantColors] || variantColors.info;\n\n return {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(0.75, 1.5), // 6px 12px\n borderRadius: 16, // Always pill-shaped\n backgroundColor: colors.background,\n cursor: interactive ? 'pointer' : 'default',\n transition: theme.transitions.create(['background-color', 'transform'], {\n duration: theme.transitions.duration.shortest,\n }),\n maxWidth: '100%',\n\n ...(interactive && {\n '&:hover': {\n backgroundColor: colors.background + '40', // Slightly darker on hover\n transform: 'scale(1.02)',\n },\n '&:active': {\n transform: 'scale(0.98)',\n },\n }),\n\n '& .status-text': {\n color: colors.text,\n fontWeight: 500,\n fontSize: 14,\n lineHeight: 1.5,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0, // Allow text to shrink and truncate in flex container\n },\n };\n});\n\n/**\n * ConnectionStatus Component\n * V2: Supports compact mode\n */\nexport const ConnectionStatus = React.memo<ConnectionStatusProps>(({\n status,\n variant = 'info',\n icon,\n onClick,\n compact = false,\n compactText,\n}) => {\n const interactive = !!onClick;\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n }\n };\n\n const statusContent = (\n <StatusPill\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n aria-label={compact ? status : undefined}\n variant={variant}\n interactive={interactive}\n onClick={handleClick}\n >\n {/* Icon */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontSize: 16,\n color: 'inherit',\n }}\n >\n {icon || <PowerIcon fontSize=\"small\" />}\n </Box>\n\n {/* Status text: compactText in compact mode, full status in normal mode */}\n <Typography className=\"status-text\" variant=\"body2\">\n {compact ? (compactText ?? status) : status}\n </Typography>\n </StatusPill>\n );\n\n // Wrap in tooltip when compact\n if (compact) {\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n padding: 1,\n }}\n >\n <Tooltip title={status} placement=\"right\" arrow>\n {statusContent}\n </Tooltip>\n </Box>\n );\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n padding: 1,\n }}\n >\n {statusContent}\n </Box>\n );\n});\n\nConnectionStatus.displayName = 'ConnectionStatus';\n","/**\n * AccountSection Component\n * Displays user account information with avatar, name, and logout\n * V2: Supports compact mode for collapsed sidebar\n */\n\nimport React from 'react';\nimport { Box, Avatar, Typography, Button, IconButton, Tooltip } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport LogoutIcon from '@mui/icons-material/Logout';\nimport type { AccountSectionProps } from './types';\n\n/**\n * Styled container for account section\n */\nconst AccountContainer = styled(Box, {\n shouldForwardProp: (prop) => !['layout', 'isCompact'].includes(prop as string),\n})<{ layout?: string; isCompact?: boolean }>(({ theme, layout = 'horizontal', isCompact }) => ({\n display: 'flex',\n flexDirection: isCompact ? 'column' : 'row',\n alignItems: 'center',\n justifyContent: isCompact ? 'center' : 'flex-start',\n gap: isCompact ? theme.spacing(1) : theme.spacing(1.5),\n padding: theme.spacing(2),\n borderTop: `1px solid ${theme.palette.divider}`,\n transition: theme.transitions.create(['gap', 'justify-content'], {\n duration: theme.transitions.duration.shorter,\n }),\n\n ...(layout === 'vertical' && !isCompact && {\n flexDirection: 'column',\n textAlign: 'center',\n }),\n}));\n\n/**\n * Derive initials from user name\n */\nconst deriveInitials = (name: string): string => {\n if (!name || name.trim() === '') {\n return '?';\n }\n\n const words = name.trim().split(/\\s+/);\n \n if (words.length === 1) {\n // Single word: use first letter\n return words[0][0].toUpperCase();\n }\n \n if (words.length === 2) {\n // Two words: use first letter of each\n return (words[0][0] + words[1][0]).toUpperCase();\n }\n \n // Three or more words: use first and last\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n};\n\n/**\n * AccountSection Component\n * V2: Supports compact mode\n */\nexport const AccountSection = React.memo<AccountSectionProps>(({\n user,\n onLogout,\n showEmail = false,\n layout = 'horizontal',\n compact = false,\n}) => {\n const initials = user.initials || deriveInitials(user.name);\n const avatarSrc = user.avatarUrl;\n\n // Compact mode: Avatar + logout icon button\n if (compact) {\n return (\n <AccountContainer layout={layout} isCompact={true} aria-label=\"Account section\">\n {/* Avatar with tooltip */}\n <Tooltip\n title={`${user.name}${user.email ? ` (${user.email})` : ''}`}\n placement=\"right\"\n arrow\n >\n <Avatar\n src={avatarSrc}\n alt={user.name}\n sx={{\n width: 40,\n height: 40,\n backgroundColor: 'primary.main',\n fontSize: 16,\n fontWeight: 600,\n flexShrink: 0,\n cursor: 'default',\n }}\n >\n {initials}\n </Avatar>\n </Tooltip>\n\n {/* Compact logout icon button */}\n <Tooltip title=\"Logout\" placement=\"right\" arrow>\n <IconButton\n onClick={onLogout}\n aria-label=\"Logout\"\n size=\"small\"\n sx={{\n color: 'text.secondary',\n '&:hover': {\n backgroundColor: 'action.hover',\n color: 'text.primary',\n },\n }}\n >\n <LogoutIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </AccountContainer>\n );\n }\n\n // Normal mode: Full layout\n return (\n <AccountContainer layout={layout} isCompact={false} aria-label=\"Account section\">\n {/* Avatar */}\n <Avatar\n src={avatarSrc}\n alt={user.name}\n sx={{\n width: 40,\n height: 40,\n backgroundColor: 'primary.main',\n fontSize: 16,\n fontWeight: 600,\n flexShrink: 0,\n }}\n >\n {initials}\n </Avatar>\n\n {/* User info and logout stacked vertically */}\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 0.5,\n flexGrow: 1,\n minWidth: 0, // Allow text truncation\n }}\n >\n {/* User name */}\n <Typography\n variant=\"body2\"\n sx={{\n fontWeight: 600,\n lineHeight: 1.5,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {user.name}\n </Typography>\n\n {showEmail && user.email && (\n <Typography\n variant=\"caption\"\n sx={{\n color: 'text.secondary',\n lineHeight: 1.5,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n display: 'block',\n }}\n >\n {user.email}\n </Typography>\n )}\n\n {/* Logout button below name */}\n <Button\n onClick={onLogout}\n aria-label=\"Logout\"\n startIcon={<LogoutIcon fontSize=\"small\" />}\n sx={{\n color: 'text.secondary',\n textTransform: 'none',\n fontSize: '14px',\n fontWeight: 400,\n padding: '4px 8px',\n justifyContent: 'flex-start',\n alignSelf: 'flex-start',\n minWidth: 'auto',\n '&:hover': {\n backgroundColor: 'action.hover',\n color: 'text.primary',\n },\n }}\n >\n Logout\n </Button>\n </Box>\n </AccountContainer>\n );\n});\n\nAccountSection.displayName = 'AccountSection';\n","import React from 'react';\nimport MuiBadge, { BadgeProps as MuiBadgeProps } from '@mui/material/Badge';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type BadgeVariant = 'default' | 'primary' | 'success' | 'error';\n\nexport interface BadgeProps extends Omit<MuiBadgeProps, 'color' | 'variant'> {\n variant?: BadgeVariant;\n children?: React.ReactNode;\n}\n\nconst getBadgeColor = (variant: BadgeVariant) => {\n switch (variant) {\n case 'primary':\n return colors.primary.main;\n case 'success':\n return colors.success.main;\n case 'error':\n return colors.error.main;\n default:\n return colors.grey[400];\n }\n};\n\nconst StyledBadge = styled(MuiBadge, {\n shouldForwardProp: (prop) => prop !== 'badgeVariant',\n})<{ badgeVariant?: BadgeVariant }>(({ badgeVariant = 'default' }) => ({\n '& .MuiBadge-badge': {\n backgroundColor: getBadgeColor(badgeVariant),\n color: '#FFFFFF',\n },\n}));\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = 'default',\n children,\n badgeContent,\n ...props\n}) => {\n return (\n <StyledBadge badgeVariant={variant} badgeContent={badgeContent} {...props}>\n {children}\n </StyledBadge>\n );\n};\n\n","import React from 'react';\nimport MuiChip, { ChipProps as MuiChipProps } from '@mui/material/Chip';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type ChipVariant = 'default' | 'active';\n\nexport interface ChipProps extends Omit<MuiChipProps, 'color' | 'variant'> {\n variant?: ChipVariant;\n}\n\nconst StyledDefaultChip = styled(MuiChip)({\n backgroundColor: colors.grey[100],\n color: colors.text.primary,\n '&:hover': {\n backgroundColor: colors.grey[200],\n },\n});\n\nconst StyledActiveChip = styled(MuiChip)({\n backgroundColor: colors.background.selected,\n color: colors.primary.main,\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n});\n\nexport const Chip: React.FC<ChipProps> = ({\n variant = 'default',\n ...props\n}) => {\n if (variant === 'active') {\n return <StyledActiveChip {...props} />;\n }\n return <StyledDefaultChip {...props} />;\n};\n\n","import React from 'react';\nimport MuiChip, { ChipProps as MuiChipProps } from '@mui/material/Chip';\nimport { styled } from '@mui/material/styles';\n\n/**\n * Color variants for the RoleBadge component\n */\nexport type RoleBadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n\n/**\n * Size variants for the RoleBadge component\n */\nexport type RoleBadgeSize = 'small' | 'medium';\n\n/**\n * RoleBadge component props\n */\nexport interface RoleBadgeProps extends Omit<MuiChipProps, 'label' | 'variant' | 'color' | 'size'> {\n /**\n * The text content to display in the badge\n */\n label: string;\n /**\n * The color theme of the badge\n * @default 'primary'\n */\n color?: RoleBadgeColor;\n /**\n * The size of the badge\n * @default 'small'\n */\n size?: RoleBadgeSize;\n}\n\n/**\n * Styled MUI Chip with pill shape and outlined style\n * Matches Figma node 17-3595 specifications\n */\nconst StyledRoleBadge = styled(MuiChip)<MuiChipProps>(() => ({\n // Pill shape - 100px border radius\n borderRadius: '100px',\n // Typography specifications from Figma\n fontSize: '13px',\n fontWeight: 400,\n lineHeight: '18px',\n letterSpacing: '0.16px',\n // Padding specifications from Figma\n padding: '3px 4px',\n height: 'auto',\n // Outlined style (no background fill)\n '& .MuiChip-label': {\n padding: '0 8px',\n },\n}));\n\n/**\n * RoleBadge - Pill-shaped badge component for displaying roles or status labels\n *\n * A reusable badge component that extends MUI Chip with a pill-shaped outline style.\n * Designed for displaying user roles, status indicators, or categorization labels.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <RoleBadge label=\"Manager\" />\n *\n * // With color variants\n * <RoleBadge label=\"Admin\" color=\"error\" />\n * <RoleBadge label=\"Active\" color=\"success\" />\n *\n * // With size variants\n * <RoleBadge label=\"Owner\" size=\"medium\" />\n * ```\n *\n * @see Figma node 17-3595 for design specifications\n */\nexport const RoleBadge: React.FC<RoleBadgeProps> = ({\n label,\n color = 'primary',\n size = 'small',\n ...props\n}) => {\n if (!label || label.trim() === '') {\n return null;\n }\n\n return (\n <StyledRoleBadge\n label={label}\n variant=\"outlined\"\n color={color}\n size={size}\n {...props}\n />\n );\n};\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport Snackbar from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport { styled } from '@mui/material/styles';\nimport type { AlertColor } from '@mui/material';\nimport { deploymentSurfaceTokens } from '../../theme';\n\n/**\n * IDBlock component props\n */\nexport interface IDBlockProps {\n /**\n * The identifier value to display and copy\n */\n id: string;\n /**\n * Label prefix text\n * @default 'ID'\n */\n label?: string;\n /**\n * Entity type for accessibility (used in aria-label)\n * @default 'entity'\n */\n entityType?: string;\n /**\n * Additional callback to execute after successful copy\n */\n onCopy?: () => void;\n}\n\n/**\n * Styled container for the ID block\n * Matches Figma node 17-3596 specifications\n */\nconst IDContainer = styled(Box)(() => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '8px 16px',\n backgroundColor: deploymentSurfaceTokens.surfaceHigh,\n border: `1px solid ${deploymentSurfaceTokens.strokeOutside}`,\n borderRadius: '8px',\n}));\n\n/**\n * IDBlock - Read-only identifier display with integrated copy-to-clipboard button\n *\n * A component that displays an identifier (ID, account number, etc.) with a copy button.\n * Provides user feedback via an inline Snackbar when copy succeeds or fails.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <IDBlock id=\"W1234567890\" />\n *\n * // With custom label\n * <IDBlock id=\"ACC-9876543\" label=\"Account ID\" entityType=\"account\" />\n *\n * // With callback\n * <IDBlock\n * id=\"DEPLOY-12345\"\n * label=\"Deployment ID\"\n * entityType=\"deployment\"\n * onCopy={() => console.log('ID copied')}\n * />\n * ```\n *\n * @see Figma node 17-3596 for design specifications\n */\nexport const IDBlock: React.FC<IDBlockProps> = ({\n id,\n label = 'ID',\n entityType = 'entity',\n onCopy,\n}) => {\n const [snackbar, setSnackbar] = useState<{ open: boolean; message: string; severity: AlertColor }>({\n open: false,\n message: '',\n severity: 'success',\n });\n\n if (!id || id.trim() === '') {\n return null;\n }\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(id);\n setSnackbar({ open: true, message: 'ID copied to clipboard', severity: 'success' });\n onCopy?.();\n } catch {\n setSnackbar({ open: true, message: 'Failed to copy ID', severity: 'error' });\n }\n };\n\n const handleSnackbarClose = () => {\n setSnackbar((prev) => ({ ...prev, open: false }));\n };\n\n return (\n <>\n <IDContainer>\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: '13px',\n fontWeight: 500,\n color: deploymentSurfaceTokens.textSecondary,\n }}\n >\n {label}:\n </Typography>\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: '13px',\n fontWeight: 500,\n color: deploymentSurfaceTokens.textPrimary,\n userSelect: 'all',\n }}\n >\n {id}\n </Typography>\n <IconButton\n onClick={handleCopy}\n size=\"small\"\n aria-label={`Copy ${entityType} ID ${id}`}\n sx={{\n padding: '4px',\n '&:hover': {\n backgroundColor: deploymentSurfaceTokens.hoverOverlay,\n },\n }}\n >\n <ContentCopyIcon\n sx={{\n fontSize: '16px',\n color: deploymentSurfaceTokens.textSecondary,\n }}\n />\n </IconButton>\n </IDContainer>\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleSnackbarClose}\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n >\n <Alert onClose={handleSnackbarClose} severity={snackbar.severity}>\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n};\n","import React from 'react';\nimport MuiTooltip, { TooltipProps as MuiTooltipProps } from '@mui/material/Tooltip';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type TooltipProps = MuiTooltipProps\n\nconst StyledTooltip = styled(MuiTooltip)({\n '& .MuiTooltip-tooltip': {\n backgroundColor: colors.grey[800],\n color: '#FFFFFF',\n fontSize: '12px',\n padding: '8px 12px',\n borderRadius: '4px',\n },\n '& .MuiTooltip-arrow': {\n color: colors.grey[800],\n },\n});\n\nexport const Tooltip: React.FC<TooltipProps> = (props) => {\n return <StyledTooltip {...props} />;\n};\n\n","import React from 'react';\nimport {\n LinearProgress,\n CircularProgress,\n styled,\n} from '@mui/material';\nimport { colors } from '../../theme';\n\nexport type ProgressVariant = 'linear' | 'circular';\n\nexport interface ProgressProps {\n variant?: ProgressVariant;\n value?: number;\n size?: number;\n thickness?: number;\n}\n\nconst StyledLinearProgress = styled(LinearProgress)({\n height: 4,\n borderRadius: 2,\n backgroundColor: colors.grey[200],\n '& .MuiLinearProgress-bar': {\n backgroundColor: colors.primary.main,\n borderRadius: 2,\n },\n});\n\nconst StyledCircularProgress = styled(CircularProgress)({\n color: colors.primary.main,\n});\n\nexport const Progress: React.FC<ProgressProps> = ({\n variant = 'linear',\n value,\n size = 40,\n thickness = 4,\n}) => {\n if (variant === 'circular') {\n return <StyledCircularProgress size={size} thickness={thickness} />;\n }\n\n return (\n <StyledLinearProgress\n variant={value !== undefined ? 'determinate' : 'indeterminate'}\n value={value}\n />\n );\n};\n\n","import React from 'react';\nimport MuiTab, { TabProps as MuiTabProps } from '@mui/material/Tab';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\nimport { Badge } from '../feedback/Badge';\n\nexport interface TabProps extends Omit<MuiTabProps, 'icon'> {\n badge?: number | string;\n badgeVariant?: 'default' | 'primary' | 'success' | 'error';\n}\n\nconst StyledTab = styled(MuiTab)({\n textTransform: 'none',\n minHeight: '48px',\n fontWeight: 400,\n color: colors.text.primary,\n borderBottom: '2px solid transparent',\n '&:hover': {\n color: colors.primary.main,\n },\n '&.Mui-selected': {\n fontWeight: 600,\n color: colors.primary.main,\n borderBottom: `2px solid ${colors.primary.main}`,\n },\n});\n\nexport const Tab: React.FC<TabProps> = ({\n badge,\n badgeVariant = 'primary',\n label,\n ...props\n}) => {\n const tabLabel = badge !== undefined ? (\n <Badge variant={badgeVariant} badgeContent={badge}>\n {label}\n </Badge>\n ) : (\n label\n );\n\n return <StyledTab label={tabLabel} {...props} />;\n};\n\n","import React from 'react';\nimport {\n Menu as MuiMenu,\n MenuItem as MuiMenuItem,\n MenuProps as MuiMenuProps,\n ListItemIcon,\n ListItemText,\n Divider,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface MenuProps extends Omit<MuiMenuProps, 'open'> {\n anchorEl?: HTMLElement | null;\n onClose: () => void;\n}\n\nconst StyledMenu = styled(MuiMenu)({\n '& .MuiPaper-root': {\n borderRadius: 8,\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.15)',\n minWidth: 200,\n },\n '& .MuiMenuItem-root': {\n padding: '8px 16px',\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n },\n});\n\nexport const Menu: React.FC<MenuProps> = ({ anchorEl, onClose, children, ...props }) => {\n return (\n <StyledMenu\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n {...props}\n >\n {children}\n </StyledMenu>\n );\n};\n\nexport interface MenuItemProps {\n icon?: React.ReactNode;\n label: string;\n onClick?: () => void;\n disabled?: boolean;\n divider?: boolean;\n}\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n icon,\n label,\n onClick,\n disabled = false,\n divider = false,\n}) => {\n return (\n <>\n <MuiMenuItem onClick={onClick} disabled={disabled}>\n {icon && <ListItemIcon>{icon}</ListItemIcon>}\n <ListItemText>{label}</ListItemText>\n </MuiMenuItem>\n {divider && <Divider />}\n </>\n );\n};\n\n","import React from 'react';\nimport MuiPagination, { PaginationProps as MuiPaginationProps } from '@mui/material/Pagination';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface PaginationProps extends Omit<MuiPaginationProps, 'color'> {\n color?: 'primary' | 'secondary' | 'standard';\n}\n\nconst StyledPagination = styled(MuiPagination)({\n '& .MuiPaginationItem-root': {\n '&.Mui-selected': {\n backgroundColor: colors.primary.main,\n color: colors.primary.contrastText,\n '&:hover': {\n backgroundColor: colors.primary.light,\n },\n },\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n },\n});\n\nexport const Pagination: React.FC<PaginationProps> = ({ color = 'primary', ...props }) => {\n return <StyledPagination color={color} {...props} />;\n};\n\n","import React, { useState } from 'react';\nimport {\n Box,\n Typography,\n Avatar,\n Menu,\n InputAdornment,\n List,\n ListItemButton,\n ListItemAvatar,\n ListItemText,\n CircularProgress,\n} from '@mui/material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport SearchIcon from '@mui/icons-material/Search';\nimport AddIcon from '@mui/icons-material/Add';\nimport { colors } from '../../theme';\nimport { Link } from '../layout/Link';\nimport { IconButton } from '../buttons/IconButton';\nimport { TextField } from '../inputs/TextField';\nimport { Button } from '../buttons/Button';\n\nexport interface SelectorOption {\n id: string;\n name: string;\n description?: string;\n avatar?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectorProps {\n options: SelectorOption[];\n selectedId: string | null;\n onSelect: (id: string) => void;\n onCreate?: () => void;\n loading?: boolean;\n placeholder?: string;\n emptyMessage?: string;\n compact?: boolean;\n renderSelected?: (option: SelectorOption) => React.ReactNode;\n width?: number;\n}\n\nexport const Selector: React.FC<SelectorProps> = ({\n options,\n selectedId,\n onSelect,\n onCreate,\n loading = false,\n placeholder = 'Select...',\n emptyMessage = 'No items found',\n compact = false,\n renderSelected,\n width = 350,\n}) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [searchTerm, setSearchTerm] = useState('');\n\n const open = Boolean(anchorEl);\n const selectedOption = options.find((opt) => opt.id === selectedId);\n\n const filteredOptions = options.filter((opt) =>\n opt.name.toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n const handleOpen = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n setSearchTerm('');\n };\n\n const handleSelect = (id: string) => {\n onSelect(id);\n handleClose();\n };\n\n const defaultRenderSelected = (option: SelectorOption) => (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n {option.avatar ? (\n <Avatar src={option.avatar} sx={{ width: 20, height: 20 }} />\n ) : option.icon ? (\n option.icon\n ) : (\n <Avatar sx={{ width: 20, height: 20, bgcolor: colors.primary.main, fontSize: '0.7rem' }}>\n {option.name.charAt(0)}\n </Avatar>\n )}\n <Typography variant=\"body2\">{option.name}</Typography>\n </Box>\n );\n\n if (compact) {\n return (\n <>\n <IconButton onClick={handleOpen} size=\"small\">\n {selectedOption ? (\n selectedOption.avatar ? (\n <Avatar src={selectedOption.avatar} sx={{ width: 32, height: 32 }} />\n ) : (\n <Avatar sx={{ width: 32, height: 32, bgcolor: colors.primary.main }}>\n {selectedOption.name.charAt(0)}\n </Avatar>\n )\n ) : (\n <Avatar sx={{ width: 32, height: 32, bgcolor: colors.grey[400] }}>?</Avatar>\n )}\n </IconButton>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n PaperProps={{\n sx: { width, maxHeight: 600, mt: 1 },\n }}\n >\n {loading ? (\n <Box sx={{ display: 'flex', justifyContent: 'center', p: 2 }}>\n <CircularProgress size={24} />\n </Box>\n ) : (\n <>\n {options.length > 5 && (\n <Box sx={{ p: 1, borderBottom: `1px solid ${colors.grey[200]}` }}>\n <TextField\n size=\"small\"\n fullWidth\n placeholder=\"Search...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n )}\n <List sx={{ maxHeight: 400, overflow: 'auto' }}>\n {filteredOptions.map((option) => (\n <ListItemButton\n key={option.id}\n selected={option.id === selectedId}\n onClick={() => handleSelect(option.id)}\n disabled={option.disabled}\n >\n {option.avatar ? (\n <ListItemAvatar>\n <Avatar src={option.avatar} />\n </ListItemAvatar>\n ) : option.icon ? (\n <ListItemAvatar>{option.icon}</ListItemAvatar>\n ) : (\n <ListItemAvatar>\n <Avatar sx={{ bgcolor: colors.primary.main }}>\n {option.name.charAt(0)}\n </Avatar>\n </ListItemAvatar>\n )}\n <ListItemText primary={option.name} secondary={option.description} />\n </ListItemButton>\n ))}\n {filteredOptions.length === 0 && (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {emptyMessage}\n </Typography>\n </Box>\n )}\n </List>\n {onCreate && (\n <Box sx={{ p: 1, borderTop: `1px solid ${colors.grey[200]}` }}>\n <Button\n fullWidth\n startIcon={<AddIcon />}\n onClick={() => {\n onCreate();\n handleClose();\n }}\n >\n Create New\n </Button>\n </Box>\n )}\n </>\n )}\n </Menu>\n </>\n );\n }\n\n return (\n <>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n {selectedOption ? (\n renderSelected ? (\n <Link onClick={handleOpen} underline=\"hover\">\n {renderSelected(selectedOption)}\n </Link>\n ) : (\n <Link onClick={handleOpen} underline=\"hover\">\n {defaultRenderSelected(selectedOption)}\n </Link>\n )\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {placeholder}\n </Typography>\n )}\n <IconButton onClick={handleOpen} size=\"small\" sx={{ p: 0.2, ml: 0.5 }}>\n <KeyboardArrowDownIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n PaperProps={{\n sx: { width, maxHeight: 600, mt: 1 },\n }}\n >\n {loading ? (\n <Box sx={{ display: 'flex', justifyContent: 'center', p: 2 }}>\n <CircularProgress size={24} />\n </Box>\n ) : (\n <>\n {options.length > 5 && (\n <Box sx={{ p: 1, borderBottom: `1px solid ${colors.grey[200]}` }}>\n <TextField\n size=\"small\"\n fullWidth\n placeholder=\"Search...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n )}\n <List sx={{ maxHeight: 400, overflow: 'auto' }}>\n {filteredOptions.map((option) => (\n <ListItemButton\n key={option.id}\n selected={option.id === selectedId}\n onClick={() => handleSelect(option.id)}\n disabled={option.disabled}\n >\n {option.avatar ? (\n <ListItemAvatar>\n <Avatar src={option.avatar} />\n </ListItemAvatar>\n ) : option.icon ? (\n <ListItemAvatar>{option.icon}</ListItemAvatar>\n ) : (\n <ListItemAvatar>\n <Avatar sx={{ bgcolor: colors.primary.main }}>\n {option.name.charAt(0)}\n </Avatar>\n </ListItemAvatar>\n )}\n <ListItemText primary={option.name} secondary={option.description} />\n </ListItemButton>\n ))}\n {filteredOptions.length === 0 && (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {emptyMessage}\n </Typography>\n </Box>\n )}\n </List>\n {onCreate && (\n <Box sx={{ p: 1, borderTop: `1px solid ${colors.grey[200]}` }}>\n <Button\n fullWidth\n startIcon={<AddIcon />}\n onClick={() => {\n onCreate();\n handleClose();\n }}\n >\n Create New\n </Button>\n </Box>\n )}\n </>\n )}\n </Menu>\n </>\n );\n};\n\n","import React from 'react';\nimport MuiLink, { LinkProps as MuiLinkProps } from '@mui/material/Link';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface LinkProps extends MuiLinkProps {\n underline?: 'none' | 'hover' | 'always';\n}\n\nconst StyledLink = styled(MuiLink)({\n color: colors.primary.main,\n '&:hover': {\n color: colors.primary.light,\n },\n});\n\nexport const Link: React.FC<LinkProps> = ({ underline = 'hover', ...props }) => {\n return <StyledLink underline={underline} {...props} />;\n};\n\n","import { Stack, styled, svgIconClasses } from '@mui/material';\nimport { PropsWithChildren, ReactElement } from 'react';\nimport { CereIcon } from '../icons/CereIcon';\n\ntype LogoSize = 'large' | 'medium' | 'small';\n\nexport type LogoProps = PropsWithChildren<{\n icon?: ReactElement;\n size?: LogoSize;\n}>;\n\nconst sizesMap: Record<LogoSize, number> = {\n large: 38,\n medium: 32,\n small: 24,\n};\n\nconst Container = styled(Stack)({\n [`& .${svgIconClasses.root}`]: {\n fontSize: 'inherit',\n },\n});\n\nexport const Logo = ({ children, size = 'medium', icon = <CereIcon color=\"primary\" /> }: LogoProps) => (\n <Container direction=\"row\" alignItems=\"center\" spacing={2} fontSize={sizesMap[size]}>\n {icon}\n {children && <Stack>{children}</Stack>}\n </Container>\n);\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const CereIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 24 28\">\n <g clipPath=\"url(#a)\">\n <path\n d=\"M12.77 26.848c-5.95 0-10.572-2.88-12.063-7.515l-.334-1.037.978-.471c.103-.051 2.668-1.35 2.509-3.901-.169-2.695-2.339-3.96-2.431-4.012L.475 9.37l.412-1.025C2.838 3.601 7.28.77 12.77.77c4.314 0 8.095 1.698 10.37 4.658l.575.748-4.535 6.146-1.013-.984c-.02-.019-2.175-2.069-4.678-2.08-2.411-.012-3.362.902-3.401.941L8.3 8.473c.164-.175 1.695-1.733 5.199-1.707 2.232.01 4.161 1.084 5.3 1.896l1.778-2.41c-1.845-1.91-4.636-2.99-7.808-2.99-4.095 0-7.459 1.91-9.182 5.155 1.042.879 2.57 2.62 2.742 5.35.185 2.95-1.692 4.806-2.913 5.692 1.445 3.043 4.932 4.895 9.354 4.895 3.063 0 6.198-1.2 8.134-3.053l-2.023-2.55c-1.077.768-2.917 1.764-5.323 1.89-3.416.177-5.436-1.404-5.52-1.471l1.536-1.954c.047.035 1.42 1.065 3.855.936 2.884-.15 4.734-2.012 4.75-2.032l.98-1.002.874 1.094 4.088 5.155-.627.779c-2.3 2.856-6.508 4.702-10.726 4.702Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"currentColor\" transform=\"translate(.373 .77)\" d=\"M0 0h23.615v26.36H0z\" />\n </clipPath>\n </defs>\n </SvgIcon>\n));\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport Divider from '@mui/material/Divider';\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\nimport { Button } from '../../buttons/Button';\nimport { RoleBadge } from '../../feedback/RoleBadge';\nimport { IDBlock } from '../../feedback/IDBlock';\nimport { deploymentSurfaceTokens } from '../../../theme';\n\n/**\n * Primary action configuration for EntityHeader\n */\nexport interface PrimaryAction {\n /**\n * Button label text\n */\n label: string;\n /**\n * Optional count to display as \"Label (N)\"\n */\n count?: number;\n /**\n * Optional leading icon\n */\n icon?: React.ReactNode;\n /**\n * Click handler for the button\n */\n onClick?: () => void;\n}\n\n/**\n * EntityHeader component props\n */\nexport interface EntityHeaderProps {\n /**\n * Primary title text (e.g., entity name)\n * @required\n */\n title: string;\n /**\n * Secondary descriptive text below title\n */\n subtitle?: string;\n /**\n * Role or status label - displays as RoleBadge pill\n */\n role?: string;\n /**\n * Entity identifier - displays as IDBlock with copy action\n */\n id?: string;\n /**\n * Main action button configuration\n */\n primaryAction?: PrimaryAction;\n /**\n * Callback when ID is copied (internal copy + this callback)\n */\n onCopyId?: () => void;\n /**\n * Callback when more options button clicked (receives event for anchor positioning)\n */\n onMoreOptions?: (event: React.MouseEvent<HTMLElement>) => void;\n /**\n * HTML heading level for the title element\n * @default 'h2'\n */\n headingLevel?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n /**\n * Show bottom divider line\n * @default true\n */\n divider?: boolean;\n}\n\n/**\n * EntityHeader - Composite UI component for entity (workspace, account, etc.) headers\n *\n * Displays an entity with title, optional subtitle, role badge, ID with copy action,\n * primary action button, and more options control. Matches Figma node 15-1258 specifications.\n *\n * @example\n * ```tsx\n * // Full example with all props\n * <EntityHeader\n * title=\"Game Co. WF 1769936170928\"\n * subtitle=\"Gaming Demo Account\"\n * role=\"Manager\"\n * id=\"W1234567890\"\n * primaryAction={{\n * label: 'Members',\n * count: 5,\n * icon: <AddCircleIcon />,\n * onClick: () => console.log('Open members')\n * }}\n * onCopyId={() => console.log('ID copied')}\n * onMoreOptions={(e) => setAnchorEl(e.currentTarget)}\n * />\n *\n * // Minimal example\n * <EntityHeader title=\"Simple Entity\" />\n * ```\n *\n * @see Figma node 15-1258 for design specifications\n */\nexport const EntityHeader: React.FC<EntityHeaderProps> = ({\n title,\n subtitle,\n role,\n id,\n primaryAction,\n onCopyId,\n onMoreOptions,\n headingLevel = 'h2',\n divider = true,\n}) => {\n const getPrimaryActionLabel = () => {\n if (!primaryAction) return '';\n const { label, count } = primaryAction;\n return count !== undefined ? `${label} (${count})` : label;\n };\n\n return (\n <Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: 3,\n py: 2,\n gap: 1,\n }}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n flexWrap: 'wrap',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 0.5,\n }}\n >\n <Typography\n component={headingLevel}\n sx={{\n fontSize: '16px',\n fontWeight: 500,\n lineHeight: '24px',\n letterSpacing: '0.15px',\n color: deploymentSurfaceTokens.textPrimary,\n }}\n >\n {title}\n </Typography>\n\n {subtitle && (\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: '11px',\n fontWeight: 500,\n lineHeight: '16px',\n letterSpacing: '0.5px',\n color: deploymentSurfaceTokens.textSecondary,\n }}\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n\n {role && <RoleBadge label={role} color=\"primary\" size=\"small\" />}\n\n {id && <IDBlock id={id} label=\"ID\" entityType=\"entity\" onCopy={onCopyId} />}\n </Box>\n\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n flexShrink: 0,\n }}\n >\n {primaryAction && (\n <Button\n variant=\"primary\"\n startIcon={primaryAction.icon}\n onClick={primaryAction.onClick}\n sx={{\n textTransform: 'capitalize',\n }}\n >\n {getPrimaryActionLabel()}\n </Button>\n )}\n\n {onMoreOptions && (\n <IconButton\n onClick={onMoreOptions}\n size=\"small\"\n aria-label=\"More options\"\n sx={{\n padding: '8px',\n border: `1px solid ${deploymentSurfaceTokens.strokeOutside}`,\n borderRadius: '8px',\n '&:hover': {\n backgroundColor: deploymentSurfaceTokens.hoverOverlay,\n borderColor: deploymentSurfaceTokens.borderDefault,\n },\n }}\n >\n <MoreHorizIcon\n sx={{\n fontSize: '20px',\n color: deploymentSurfaceTokens.textSecondary,\n }}\n />\n </IconButton>\n )}\n </Box>\n </Box>\n\n {divider && (\n <Divider\n sx={{\n borderColor: deploymentSurfaceTokens.strokeOutside,\n }}\n />\n )}\n </Box>\n );\n};\n","import React, { ReactNode } from 'react';\nimport {\n Dialog as MuiDialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n IconButton,\n Box,\n Typography,\n Divider,\n DialogProps as MuiDialogProps,\n CircularProgress,\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\n\nexport interface DialogProps extends Omit<MuiDialogProps, 'title'> {\n open: boolean;\n title: ReactNode;\n onClose: () => void;\n onSubmit?: () => void;\n submitLabel?: string;\n cancelLabel?: string;\n isLoading?: boolean;\n disableSubmit?: boolean;\n showActions?: boolean;\n headerAction?: ReactNode;\n fullWidth?: boolean;\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n children: ReactNode;\n dividers?: boolean;\n confirmBeforeClose?: boolean;\n /**\n * Custom actions to render instead of default actions\n * If provided, showActions is ignored and custom actions are used\n */\n customActions?: ReactNode;\n}\n\nexport const Dialog: React.FC<DialogProps> = ({\n open,\n title,\n onClose,\n onSubmit,\n submitLabel = 'Save',\n cancelLabel = 'Cancel',\n isLoading = false,\n disableSubmit = false,\n showActions = true,\n headerAction,\n fullWidth = true,\n maxWidth = 'md',\n children,\n dividers = true,\n confirmBeforeClose = false,\n customActions,\n ...dialogProps\n}) => {\n const handleCloseAttempt = (e?: React.MouseEvent) => {\n if (e) e.stopPropagation();\n onClose();\n };\n\n return (\n <MuiDialog\n open={open}\n onClose={(_, reason) => {\n if (reason === 'backdropClick' || reason === 'escapeKeyDown' && !confirmBeforeClose) {\n onClose();\n }\n }}\n fullWidth={fullWidth}\n maxWidth={maxWidth}\n {...dialogProps}\n PaperProps={{\n sx: { minHeight: dialogProps.fullScreen ? undefined : 'auto' },\n ...dialogProps.PaperProps\n }}\n >\n <DialogTitle sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', p: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {typeof title === 'string' ? (\n <Typography variant=\"h6\">{title}</Typography>\n ) : (\n title\n )}\n </Box>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {headerAction}\n <IconButton\n edge=\"end\"\n color=\"inherit\"\n onClick={handleCloseAttempt}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n\n {dividers && <Divider />}\n\n <DialogContent dividers={dividers}>\n {children}\n </DialogContent>\n\n {(showActions || customActions) && (\n <>\n {dividers && <Divider />}\n <DialogActions>\n {customActions || (\n <>\n <Button\n onClick={handleCloseAttempt}\n disabled={isLoading}\n >\n {cancelLabel}\n </Button>\n {onSubmit && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={onSubmit}\n disabled={disableSubmit || isLoading}\n startIcon={isLoading ? <CircularProgress size={20} /> : undefined}\n >\n {submitLabel}\n </Button>\n )}\n </>\n )}\n </DialogActions>\n </>\n )}\n </MuiDialog>\n );\n};\n\n","import React, { ReactNode } from 'react';\nimport MuiDrawer, { DrawerProps as MuiDrawerProps } from '@mui/material/Drawer';\nimport { styled } from '@mui/material/styles';\nimport { Box, IconButton, Typography, Divider, Tabs, Tab, BoxProps } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\n\nexport interface DrawerProps extends Omit<MuiDrawerProps, 'title'> {\n /**\n * Width of the drawer when open\n * @default 400 for temporary/temporary variant, 240 for permanent\n */\n width?: number;\n /**\n * Width of the drawer when collapsed (mini variant)\n * @default 72\n */\n miniWidth?: number;\n /**\n * Whether the drawer is in collapsed/mini state\n * @default false\n */\n collapsed?: boolean;\n /**\n * Title to display in the drawer header\n */\n title?: ReactNode;\n /**\n * Custom header content (replaces title if provided)\n */\n header?: ReactNode;\n /**\n * Show close button in header\n * @default true for temporary variant, false for permanent\n */\n showCloseButton?: boolean;\n /**\n * Tab labels for tabbed drawer content\n */\n tabs?: string[];\n /**\n * Active tab index\n */\n activeTab?: number;\n /**\n * Callback when tab changes\n */\n onTabChange?: (index: number) => void;\n /**\n * Footer content (actions, buttons, etc.)\n */\n footer?: ReactNode;\n /**\n * Props for drawer content container\n */\n contentProps?: BoxProps;\n /**\n * Anchor position\n * @default 'right'\n */\n anchor?: 'left' | 'right' | 'top' | 'bottom';\n /**\n * Top offset in pixels (e.g., for header + breadcrumbs)\n * @default 0\n */\n topOffset?: number;\n}\n\nconst StyledDrawer = styled(MuiDrawer, {\n shouldForwardProp: (prop) => prop !== 'width' && prop !== 'miniWidth' && prop !== 'collapsed' && prop !== 'topOffset',\n})<Pick<DrawerProps, 'width' | 'miniWidth' | 'collapsed' | 'topOffset'>>(({ theme, width = 240, miniWidth = 72, collapsed, topOffset = 0 }) => ({\n width: collapsed ? miniWidth : width,\n flexShrink: 0,\n '& .MuiDrawer-paper': {\n width: collapsed ? miniWidth : width,\n boxSizing: 'border-box',\n boxShadow: '0px 2px 10px rgba(0, 0, 0, 0.05)',\n transition: theme.transitions.create(['width', 'top', 'height'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflow: 'visible', // Let internal content handle scrolling\n display: 'flex',\n flexDirection: 'column',\n top: `${topOffset}px !important`,\n height: topOffset > 0 ? `calc(100% - ${topOffset}px) !important` : '100%',\n zIndex: `${theme.zIndex.modal} !important`, // Use modal zIndex to be above everything except AppBar (which is modal + 1)\n },\n}));\n\n/**\n * Drawer component for navigation drawers and side panels\n * Can be used as a replacement for Dialog for better UX\n * \n * @example\n * ```tsx\n * // Simple drawer\n * <Drawer open={true} variant=\"temporary\" width={400} title=\"Settings\" onClose={handleClose}>\n * <Box p={2}>Content here</Box>\n * </Drawer>\n * \n * // Drawer with tabs\n * <Drawer \n * open={true} \n * variant=\"temporary\" \n * width={600} \n * title=\"Edit Stream\"\n * tabs={['General', 'Rules', 'Settings']}\n * activeTab={activeTab}\n * onTabChange={setActiveTab}\n * onClose={handleClose}\n * >\n * <Box p={2}>{tabContent}</Box>\n * </Drawer>\n * ```\n */\nexport const Drawer: React.FC<DrawerProps> = ({\n width,\n miniWidth = 72,\n collapsed = false,\n title,\n header,\n showCloseButton,\n tabs,\n activeTab = 0,\n onTabChange,\n footer,\n contentProps,\n anchor = 'right',\n variant = 'temporary',\n topOffset = 0,\n children,\n onClose,\n ...props\n}) => {\n // Determine default width based on variant\n const defaultWidth = variant === 'temporary' || variant === 'persistent' ? 400 : 240;\n const finalWidth = width ?? defaultWidth;\n \n // Determine if close button should be shown\n const shouldShowClose = showCloseButton ?? (variant === 'temporary' || variant === 'persistent');\n \n // Determine if we should show header\n const hasHeader = title || header || shouldShowClose || tabs;\n \n return (\n <StyledDrawer\n width={finalWidth}\n miniWidth={miniWidth}\n collapsed={collapsed}\n anchor={anchor}\n variant={variant}\n topOffset={topOffset}\n onClose={onClose}\n ModalProps={{\n ...props.ModalProps,\n style: {\n zIndex: topOffset > 0 ? undefined : undefined, // Let styled component handle zIndex\n },\n }}\n BackdropProps={{\n ...props.BackdropProps,\n style: {\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n }}\n {...props}\n >\n {hasHeader && (\n <>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n p: 2,\n minHeight: 64,\n borderBottom: 1,\n borderColor: 'divider',\n }}\n >\n {header || (\n <>\n <Box sx={{ flex: 1 }}>\n {typeof title === 'string' ? (\n <Typography variant=\"h6\">{title}</Typography>\n ) : (\n title\n )}\n </Box>\n {shouldShowClose && onClose && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n onClose(e, 'backdropClick');\n }}\n size=\"small\"\n sx={{ ml: 1 }}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n )}\n </>\n )}\n </Box>\n {tabs && tabs.length > 0 && (\n <Tabs\n value={activeTab}\n onChange={(_, newValue) => onTabChange?.(newValue)}\n variant={tabs.length > 4 ? \"scrollable\" : \"standard\"}\n scrollButtons={tabs.length > 4 ? \"auto\" : false}\n sx={{\n borderBottom: 1,\n borderColor: 'divider',\n px: 2,\n '& .MuiTabs-scrollableContainer': {\n overflow: 'auto',\n },\n }}\n >\n {tabs.map((tab, index) => (\n <Tab key={index} label={tab} />\n ))}\n </Tabs>\n )}\n </>\n )}\n \n <Box\n sx={{\n flex: 1,\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n }}\n {...contentProps}\n >\n {children}\n </Box>\n \n {footer && (\n <>\n <Divider />\n <Box\n sx={{\n p: 2,\n borderTop: 1,\n borderColor: 'divider',\n }}\n >\n {footer}\n </Box>\n </>\n )}\n </StyledDrawer>\n );\n};\n\nexport default Drawer;\n\n","import React from 'react';\nimport MuiCard, { CardProps as MuiCardProps } from '@mui/material/Card';\nimport MuiCardContent, { CardContentProps } from '@mui/material/CardContent';\nimport MuiCardHeader, { CardHeaderProps } from '@mui/material/CardHeader';\nimport MuiCardActions, { CardActionsProps } from '@mui/material/CardActions';\nimport { styled } from '@mui/material/styles';\n\nexport interface CardProps extends MuiCardProps {\n hoverable?: boolean;\n clickable?: boolean;\n}\n\nconst StyledCard = styled(MuiCard, {\n shouldForwardProp: (prop) => prop !== 'hoverable' && prop !== 'clickable',\n})<{ hoverable?: boolean; clickable?: boolean }>(({ hoverable, clickable }) => ({\n borderRadius: 8,\n boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.12)',\n transition: 'all 0.2s ease-in-out',\n ...(clickable && {\n cursor: 'pointer',\n }),\n ...(hoverable && {\n '&:hover': {\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.15)',\n transform: 'translateY(-2px)',\n },\n }),\n}));\n\nexport const Card: React.FC<CardProps> = ({ hoverable = false, clickable = false, children, ...props }) => {\n return (\n <StyledCard hoverable={hoverable} clickable={clickable} {...props}>\n {children}\n </StyledCard>\n );\n};\n\nexport const CardContent: React.FC<CardContentProps> = (props) => {\n return <MuiCardContent {...props} />;\n};\n\nexport const CardHeader: React.FC<CardHeaderProps> = (props) => {\n return <MuiCardHeader {...props} />;\n};\n\nexport const CardActions: React.FC<CardActionsProps> = (props) => {\n return <MuiCardActions {...props} />;\n};\n\n","import React from 'react';\nimport {\n List as MuiList,\n ListItem as MuiListItem,\n ListItemText,\n ListItemIcon,\n ListItemSecondaryAction,\n ListProps as MuiListProps,\n ListItemProps as MuiListItemProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type ListProps = MuiListProps\n\nexport const List: React.FC<ListProps> = (props) => {\n return <MuiList {...props} />;\n};\n\nexport interface ListItemProps extends MuiListItemProps {\n primary?: React.ReactNode;\n secondary?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n hoverable?: boolean;\n}\n\nconst StyledListItem = styled(MuiListItem, {\n shouldForwardProp: (prop) => prop !== 'hoverable',\n})<{ hoverable?: boolean }>(({ hoverable = true }) => ({\n border: `1px solid ${colors.grey[200]}`,\n borderRadius: 8,\n marginBottom: 8,\n ...(hoverable && {\n '&:hover': {\n backgroundColor: colors.grey[50],\n },\n }),\n}));\n\nexport const ListItem: React.FC<ListItemProps> = ({\n primary,\n secondary,\n icon,\n action,\n hoverable = true,\n children,\n ...props\n}) => {\n return (\n <StyledListItem hoverable={hoverable} {...props}>\n {icon && <ListItemIcon>{icon}</ListItemIcon>}\n {(primary || secondary) && (\n <ListItemText\n primary={primary}\n secondary={secondary}\n />\n )}\n {children}\n {action && (action)}\n </StyledListItem>\n );\n};\n\nexport { ListItemText, ListItemIcon, ListItemSecondaryAction };\n\n","import React from 'react';\nimport {\n Paper,\n Box,\n Typography,\n IconButton,\n useTheme,\n LinearProgress,\n} from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport WorkOutlineIcon from '@mui/icons-material/WorkOutline';\nimport WavesIcon from '@mui/icons-material/Waves';\nimport RocketLaunchOutlinedIcon from '@mui/icons-material/RocketLaunchOutlined';\nimport InsertLinkIcon from '@mui/icons-material/InsertLink';\nimport SmartToyOutlinedIcon from '@mui/icons-material/SmartToyOutlined';\nimport { styled } from '@mui/material/styles';\nimport {\n deploymentEntityColors,\n deploymentStatusColors,\n deploymentSurfaceTokens as tokens,\n} from '../../../theme';\nimport { useControlledExpand } from '@/hooks/useControlledExpand';\nimport { IDBlock } from '../../feedback/IDBlock';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type DeploymentEntityType =\n | 'workspace'\n | 'stream'\n | 'deployment'\n | 'engagement'\n | 'agent';\n\nexport type DeploymentStatusIndicator =\n | 'normal'\n | 'warning'\n | 'error'\n | 'disabled'\n | null;\n\nexport interface DeploymentCardAction {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n highlight?: boolean;\n outlined?: boolean;\n}\n\nexport interface DeploymentDashboardCardProps {\n /** Entity type: drives chip color and icon (Figma 15-1725, 15-1276) */\n entityType: DeploymentEntityType;\n /** Primary title */\n title: string;\n /** Display id; when present shows \"ID: {id}\" with copy action */\n id?: string;\n /** Shown as \"Created: …\" */\n createdAt?: string;\n /** Shown as \"Last Updated: …\" */\n updatedAt?: string;\n /** Only for entityType === 'deployment'; shows Capacity label, progress bar, \"X%\" */\n capacity?: number;\n /** Action buttons/chips rendered inline on the right */\n actions?: DeploymentCardAction[];\n /** Status dot: green (normal), amber (warning), red (error), white/dim (disabled) */\n statusIndicator?: DeploymentStatusIndicator;\n /** Whether to show expand/collapse chevron on the left */\n expandable?: boolean;\n /** Controlled expanded state */\n expanded?: boolean;\n /** Called when chevron is clicked */\n onExpandToggle?: () => void;\n /** When copy ID is clicked */\n onCopyId?: () => void;\n /** Optional className */\n className?: string;\n /** Child content rendered inside the card border (used by tree to nest children) */\n children?: React.ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// Entity constants\n// ---------------------------------------------------------------------------\n\nconst ENTITY_LABELS: Record<DeploymentEntityType, string> = {\n workspace: 'Workspace',\n stream: 'Stream',\n deployment: 'Deployment',\n engagement: 'Engagement',\n agent: 'Agent',\n};\n\nconst ENTITY_ICON_SIZE = 16;\n\nconst ENTITY_ICONS: Record<DeploymentEntityType, React.ReactNode> = {\n workspace: <WorkOutlineIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n stream: <WavesIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n deployment: <RocketLaunchOutlinedIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n engagement: <InsertLinkIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n agent: <SmartToyOutlinedIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n};\n\nconst STATUS_DOT_COLORS: Record<string, string> = {\n normal: deploymentStatusColors.normal,\n warning: deploymentStatusColors.warning,\n error: deploymentStatusColors.error,\n disabled: deploymentStatusColors.disabledDim,\n};\n\nconst CHEVRON_SIZE = 16;\n\n// Entity chip styling constants matching Figma specs\nconst ENTITY_CHIP_STYLES = {\n borderRadius: '12px',\n borderWidth: '1.5px',\n padding: { left: 0.75, right: 1, vertical: 0.25 },\n gap: 0.5,\n} as const;\n\nconst ENTITY_CHIP_TYPOGRAPHY = {\n fontSize: '12px',\n fontWeight: 500,\n lineHeight: 1.33,\n letterSpacing: '0.07px',\n} as const;\n\n// ---------------------------------------------------------------------------\n// Sub-components\n// ---------------------------------------------------------------------------\n\n/** Status dot colored by severity (Figma 15-1725) */\nconst StatusDot = styled(Box, {\n shouldForwardProp: (p) => p !== 'status',\n})<{ status: DeploymentStatusIndicator }>(({ status }) => ({\n width: 8,\n height: 8,\n borderRadius: '50%',\n backgroundColor: status ? STATUS_DOT_COLORS[status] ?? 'transparent' : 'transparent',\n flexShrink: 0,\n}));\n\n/** Colored entity type pill (Figma 15-1725: outlined chip with icon) */\nconst EntityChip: React.FC<{\n entityType: DeploymentEntityType;\n color: string;\n}> = ({ entityType, color }) => (\n <Box\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: ENTITY_CHIP_STYLES.gap,\n pl: ENTITY_CHIP_STYLES.padding.left,\n pr: ENTITY_CHIP_STYLES.padding.right,\n py: ENTITY_CHIP_STYLES.padding.vertical,\n borderRadius: ENTITY_CHIP_STYLES.borderRadius,\n backgroundColor: tokens.surfaceHigh,\n border: `${ENTITY_CHIP_STYLES.borderWidth} solid ${color}`,\n flexShrink: 0,\n }}\n >\n <Box sx={{ color, display: 'flex', alignItems: 'center' }}>\n {ENTITY_ICONS[entityType]}\n </Box>\n <Typography\n variant=\"body2\"\n fontWeight={ENTITY_CHIP_TYPOGRAPHY.fontWeight}\n sx={{\n color: 'black',\n lineHeight: ENTITY_CHIP_TYPOGRAPHY.lineHeight,\n fontSize: ENTITY_CHIP_TYPOGRAPHY.fontSize,\n letterSpacing: ENTITY_CHIP_TYPOGRAPHY.letterSpacing,\n }}\n >\n {ENTITY_LABELS[entityType]}\n </Typography>\n </Box>\n);\n\n/** Capacity progress bar — deployment only (Figma 15-1725) */\nconst CapacityBar: React.FC<{\n value: number;\n indented?: boolean;\n}> = ({ value, indented = false }) => (\n <Box sx={{ pl: indented ? '40px' : 0, pr: '20px', py: 1 }}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', mb: 1 }}>\n <Typography variant=\"body2\" sx={{ color: tokens.textPrimary }}>\n Capacity\n </Typography>\n <Typography variant=\"body2\" sx={{ color: tokens.accentBlue }}>\n {value}%\n </Typography>\n </Box>\n <LinearProgress\n variant=\"determinate\"\n value={value}\n sx={{\n height: 4,\n borderRadius: '20px',\n backgroundColor: tokens.strokeOutside,\n '& .MuiLinearProgress-bar': {\n borderRadius: '20px',\n backgroundColor: tokens.accentBlue,\n },\n }}\n />\n </Box>\n);\n\n/** Helper to get action button styles based on variant */\nconst getActionButtonStyles = (action: DeploymentCardAction) => {\n const baseStyles = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n cursor: action.onClick ? 'pointer' : 'default',\n background: 'none',\n font: 'inherit',\n color: tokens.textPrimary,\n whiteSpace: 'nowrap',\n '&:hover': action.onClick ? { opacity: 0.7 } : undefined,\n } as const;\n\n const variantStyles = action.outlined\n ? {\n border: `1px solid ${tokens.strokeOutside}`,\n borderRadius: '8px',\n p: 1,\n bgcolor: 'white',\n }\n : {\n border: 'none',\n p: 0,\n };\n\n return { ...baseStyles, ...variantStyles };\n};\n\n/** Single action button/chip */\nconst CardAction: React.FC<{ action: DeploymentCardAction }> = ({ action }) => (\n <Box\n component={action.onClick ? 'button' : 'span'}\n onClick={action.onClick}\n sx={getActionButtonStyles(action)}\n >\n {action.icon && (\n <Box component=\"span\" sx={{ display: 'flex', alignItems: 'center' }}>\n {action.icon}\n </Box>\n )}\n {action.label && (\n <Typography variant=\"body2\" fontWeight={500} component=\"span\" sx={{ fontSize: '14px' }}>\n {action.label}\n </Typography>\n )}\n </Box>\n);\n\n/** Inline action items rendered in the right column */\nconst CardActionList: React.FC<{\n actions: DeploymentCardAction[];\n}> = ({ actions }) => (\n <>\n {actions.map((action) => (\n <CardAction key={action.id} action={action} />\n ))}\n </>\n);\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\nexport const DeploymentDashboardCard: React.FC<DeploymentDashboardCardProps> = ({\n entityType,\n title,\n id: idDisplay,\n createdAt,\n updatedAt,\n capacity,\n actions = [],\n statusIndicator = null,\n expandable = false,\n expanded: controlledExpanded,\n onExpandToggle,\n onCopyId,\n className,\n children,\n}) => {\n const theme = useTheme();\n const entityColor =\n theme.palette.deployment?.entity?.[entityType] ?? deploymentEntityColors[entityType];\n\n const isControlled = expandable && onExpandToggle != null;\n const { expanded, toggle } = useControlledExpand(\n isControlled ? controlledExpanded : undefined,\n isControlled ? onExpandToggle : undefined,\n );\n\n const isWorkspace = entityType === 'workspace';\n const isDeployment = entityType === 'deployment';\n\n const getClampedCapacity = (capacity: number | undefined): number | undefined => {\n if (!isDeployment || capacity == null) {\n return undefined;\n }\n return Math.min(100, Math.max(0, capacity));\n };\n\n const capacityClamped = getClampedCapacity(capacity);\n\n return (\n <Paper\n className={className}\n elevation={0}\n sx={{\n border: `1px solid ${isWorkspace ? tokens.accentBlue : tokens.borderDefault}`,\n borderRadius: isWorkspace ? '4px' : '12px',\n boxShadow: isWorkspace ? tokens.workspaceShadow : 'none',\n px: 1,\n py: isDeployment ? 2 : 1,\n pl: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n }}\n >\n {/* Main row: left column + right column */}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: isDeployment ? 'flex-start' : 'center',\n width: '100%',\n }}\n >\n {/* Left column */}\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.5, minWidth: 0 }}>\n {/* Title row: [chevron/spacer] [entity chip] [title] [ID badge] */}\n <Box sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>\n {expandable ? (\n <IconButton\n size=\"small\"\n onClick={toggle}\n aria-label={expanded ? 'Collapse' : 'Expand'}\n sx={{ p: '5px' }}\n >\n {expanded ? (\n <ExpandMoreIcon sx={{ fontSize: CHEVRON_SIZE, color: tokens.accentBlue }} />\n ) : (\n <ChevronRightIcon sx={{ fontSize: CHEVRON_SIZE, color: tokens.accentBlue }} />\n )}\n </IconButton>\n ) : (\n <Box sx={{ width: 26, flexShrink: 0 }} />\n )}\n\n <EntityChip entityType={entityType} color={entityColor} />\n\n <Typography\n variant=\"subtitle1\"\n fontWeight={500}\n noWrap\n sx={{ color: tokens.textPrimary, fontSize: '16px', letterSpacing: '0.08px' }}\n >\n {title}\n </Typography>\n\n {idDisplay != null && <IDBlock id={idDisplay} label=\"ID\" entityType={entityType} onCopy={onCopyId} />}\n </Box>\n\n {/* Timestamps */}\n {(createdAt != null || updatedAt != null) && (\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n px: '34px',\n color: tokens.textSecondary,\n }}\n >\n {createdAt != null && (\n <Typography variant=\"body2\" sx={{ color: 'inherit', fontSize: '14px' }}>\n Created: {createdAt}\n </Typography>\n )}\n {updatedAt != null && (\n <Typography variant=\"body2\" sx={{ color: 'inherit', fontSize: '14px' }}>\n Last Updated: {updatedAt}\n </Typography>\n )}\n </Box>\n )}\n\n {/* Capacity bar — deployment only */}\n {capacityClamped !== undefined && (\n <CapacityBar value={capacityClamped} indented={expandable} />\n )}\n </Box>\n\n {/* Right column: status dot, actions, context menu */}\n <Box sx={{ display: 'flex', gap: 1, alignItems: 'center', flexShrink: 0 }}>\n {statusIndicator != null && <StatusDot status={statusIndicator} aria-hidden />}\n\n <CardActionList actions={actions} />\n </Box>\n </Box>\n\n {/* Children rendered inside the card border (tree nests children here) */}\n {children && (\n <Box sx={{ mt: 1.5, display: 'flex', flexDirection: 'column', gap: 1 }}>\n {children}\n </Box>\n )}\n </Paper>\n );\n};\n","import { useState } from 'react';\n\n/**\n * Shared hook for controlled/uncontrolled expand state.\n *\n * - **Controlled**: when `controlledExpanded` is defined and `onToggle` is provided,\n * the consumer owns the state.\n * - **Uncontrolled**: otherwise, the hook manages its own internal state starting\n * from `defaultExpanded`.\n */\nexport function useControlledExpand(\n controlledExpanded: boolean | undefined,\n onToggle: (() => void) | undefined,\n defaultExpanded = false,\n) {\n const [internal, setInternal] = useState(defaultExpanded);\n const isControlled = controlledExpanded !== undefined && onToggle != null;\n const expanded = isControlled ? controlledExpanded! : internal;\n const toggle = isControlled\n ? () => onToggle!()\n : () => setInternal((prev) => !prev);\n return { expanded, toggle };\n}\n","import React from 'react';\nimport { Menu, MenuItem, Switch, Divider, ListItemIcon, ListItemText } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { deploymentSurfaceTokens as tokens } from '../../../theme';\nimport type { ContextMenuItem } from './contextMenuItems';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type { ContextMenuItem } from './contextMenuItems';\n\nexport interface DeploymentEntityContextMenuProps {\n /** Controlled open state */\n open: boolean;\n /** Anchor element for menu position */\n anchorEl: HTMLElement | null;\n /** Callback when the menu closes */\n onClose: () => void;\n /** Menu items to render (use contextMenuItems helpers to build) */\n items: ContextMenuItem[];\n /** Whether to show an \"Enable\" row with toggle at the bottom (legacy — prefer inline toggle item) */\n enableToggle?: boolean;\n /** Toggle checked state */\n enableChecked?: boolean;\n /** Toggle callback */\n onEnableChange?: (checked: boolean) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Styled wrappers – matching Figma 11-1102\n// ---------------------------------------------------------------------------\n\n/** Menu paper: 4px radius, Figma shadow, 8px inner padding */\nconst StyledMenu = styled(Menu)({\n '& .MuiPaper-root': {\n borderRadius: 4,\n boxShadow: tokens.workspaceShadow,\n minWidth: 220,\n border: `1px solid ${tokens.strokeOutside}`,\n padding: 8,\n },\n '& .MuiList-root': {\n padding: 0,\n },\n});\n\n/** Standard menu item: 24px icon, 16px/500 label, 8px vertical padding */\nconst StyledMenuItem = styled(MenuItem)({\n gap: 8,\n padding: '8px 0',\n borderRadius: 4,\n minHeight: 'auto',\n '&:hover': {\n backgroundColor: tokens.hoverLight,\n },\n '& .MuiListItemIcon-root': {\n minWidth: 'auto',\n color: tokens.textPrimary,\n '& .MuiSvgIcon-root': {\n fontSize: 24,\n },\n },\n '& .MuiListItemText-root .MuiTypography-root': {\n fontSize: 16,\n fontWeight: 500,\n lineHeight: 1.5,\n letterSpacing: '0.08px',\n color: tokens.textPrimary,\n },\n});\n\n/** Highlighted menu item for active/special rows (e.g. Agent Flow Visualization) */\nconst HighlightedMenuItem = styled(StyledMenuItem)({\n backgroundColor: tokens.highlightBg,\n border: `1px solid ${tokens.highlightBorder}`,\n padding: 8,\n '&:hover': {\n backgroundColor: tokens.highlightBgHover,\n },\n});\n\n/** Toggle row: switch on left + label (uses MenuItem for MUI compliance) */\nconst ToggleMenuItem = styled(MenuItem)({\n gap: 8,\n padding: '8px 0',\n cursor: 'default',\n minHeight: 'auto',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n '& .MuiListItemText-root .MuiTypography-root': {\n fontSize: 16,\n fontWeight: 500,\n lineHeight: 1.5,\n letterSpacing: '0.08px',\n color: tokens.textPrimary,\n },\n});\n\n/** Green toggle switch matching Figma design */\nconst EnableSwitch = styled(Switch)({\n width: 32,\n height: 20,\n padding: 0,\n '& .MuiSwitch-switchBase': {\n padding: 2,\n '&.Mui-checked': {\n transform: 'translateX(12px)',\n color: '#fff',\n '& + .MuiSwitch-track': {\n backgroundColor: tokens.switchGreen,\n opacity: 1,\n },\n },\n },\n '& .MuiSwitch-thumb': {\n width: 16,\n height: 16,\n },\n '& .MuiSwitch-track': {\n borderRadius: 100,\n backgroundColor: tokens.switchTrackOff,\n opacity: 1,\n },\n});\n\n/** Divider matching Figma stroke/outside token */\nconst StyledDivider = styled(Divider)({\n margin: '0 !important',\n borderColor: tokens.strokeOutside,\n});\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * Floating context menu for deployment entities.\n *\n * Use the `contextMenuItems` factory to compose your menu. Supports action items,\n * dividers, toggle rows, and highlighted (active-state) items.\n *\n * @see {@link https://www.figma.com/design/xky11VbkkFcgZLwZE8BdCN/ROB?node-id=11-1102 Figma 11-1102}\n */\nexport const DeploymentEntityContextMenu: React.FC<DeploymentEntityContextMenuProps> = ({\n open,\n anchorEl,\n onClose,\n items,\n enableToggle = false,\n enableChecked = false,\n onEnableChange,\n}) => {\n return (\n <StyledMenu\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{ paper: { 'aria-label': 'Entity context menu' } }}\n >\n {items.map((item) => {\n if (item.type === 'divider') {\n return <StyledDivider key={item.id} />;\n }\n\n if (item.type === 'toggle') {\n return (\n <ToggleMenuItem key={item.id} disableRipple>\n {onEnableChange && (\n <EnableSwitch\n size=\"small\"\n checked={enableChecked}\n onChange={(_, checked) => onEnableChange(checked)}\n inputProps={{ 'aria-label': item.label }}\n />\n )}\n <ListItemText primary={item.label} />\n </ToggleMenuItem>\n );\n }\n\n const Row = item.highlighted ? HighlightedMenuItem : StyledMenuItem;\n return (\n <Row\n key={item.id}\n onClick={() => {\n item.onClick?.();\n onClose();\n }}\n >\n {item.icon && <ListItemIcon>{item.icon}</ListItemIcon>}\n <ListItemText primary={item.label} />\n </Row>\n );\n })}\n {enableToggle && (\n <>\n <StyledDivider />\n <ToggleMenuItem disableRipple>\n {onEnableChange && (\n <EnableSwitch\n size=\"small\"\n checked={enableChecked}\n onChange={(_, checked) => onEnableChange(checked)}\n inputProps={{ 'aria-label': 'Enable' }}\n />\n )}\n <ListItemText primary=\"Enable\" />\n </ToggleMenuItem>\n </>\n )}\n </StyledMenu>\n );\n};\n","import React from 'react';\nimport AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport SmartToyOutlinedIcon from '@mui/icons-material/SmartToyOutlined';\nimport DescriptionIcon from '@mui/icons-material/Description';\nimport SettingsIcon from '@mui/icons-material/Settings';\n\n/**\n * Describes a single item inside {@link DeploymentEntityContextMenu}.\n *\n * Items can be action rows (icon + label), toggle rows (switch + label),\n * or visual dividers. Use the pre-built `contextMenuItems` factories\n * for standard deployment-entity actions.\n *\n * @see Figma 11-1102\n */\nexport interface ContextMenuItem {\n /** Unique key used for React reconciliation */\n id: string;\n /** Display label shown next to the icon */\n label: string;\n /** Optional leading icon (24 × 24) */\n icon?: React.ReactNode;\n /** Click handler — called when an action item is selected */\n onClick?: () => void;\n /**\n * Item variant:\n * - `'action'` (default) — clickable row with icon + label\n * - `'toggle'` — switch on left + label, controlled by `enableChecked` / `onEnableChange`\n * - `'divider'` — horizontal separator (label is ignored)\n */\n type?: 'action' | 'toggle' | 'divider';\n /**\n * When `true` the item renders with a blue highlight background\n * (Figma blue-50 / blue-100 tokens). Used for the \"Agent Flow Visualization\" row.\n * @default false\n */\n highlighted?: boolean;\n}\n\n/** Pre-built item factories for common deployment entity actions (Figma 11-1102) */\nexport const contextMenuItems = {\n /** Add Engagement action (Add Circle icon) */\n addEngagement: (onClick: () => void): ContextMenuItem => ({\n id: 'add-engagement',\n label: 'Add Engagement',\n icon: <AddCircleOutlineIcon />,\n onClick,\n }),\n /** Add Agent action (Add Circle icon) */\n addAgent: (onClick: () => void): ContextMenuItem => ({\n id: 'add-agent',\n label: 'Add Agent',\n icon: <AddCircleOutlineIcon />,\n onClick,\n }),\n /** Add Stream action (Add Circle icon) */\n addStream: (onClick: () => void): ContextMenuItem => ({\n id: 'add-stream',\n label: 'Add Stream',\n icon: <AddCircleOutlineIcon />,\n onClick,\n }),\n /** Edit action (Pen / Edit icon) */\n edit: (onClick: () => void): ContextMenuItem => ({\n id: 'edit',\n label: 'Edit',\n icon: <EditIcon />,\n onClick,\n }),\n /** Copy ID action (Copy icon) */\n copyId: (onClick: () => void): ContextMenuItem => ({\n id: 'copy-id',\n label: 'Copy ID',\n icon: <ContentCopyIcon />,\n onClick,\n }),\n /** Agent Flow Visualization — highlighted action (SmartToy icon) */\n agentFlowVisualization: (onClick: () => void): ContextMenuItem => ({\n id: 'agent-flow',\n label: 'Agent Flow Visualization',\n icon: <SmartToyOutlinedIcon />,\n onClick,\n highlighted: true,\n }),\n /** View Logs action (Document / Description icon) */\n viewLogs: (onClick: () => void): ContextMenuItem => ({\n id: 'view-logs',\n label: 'View Logs',\n icon: <DescriptionIcon />,\n onClick,\n }),\n /** Horizontal divider between sections */\n divider: (): ContextMenuItem => ({\n id: 'divider',\n label: '',\n type: 'divider',\n }),\n /** Enable toggle row (switch on left + label) */\n enable: (): ContextMenuItem => ({\n id: 'enable',\n label: 'Enable',\n type: 'toggle',\n }),\n /** Settings action (Settings / Gear icon) */\n settings: (onClick: () => void): ContextMenuItem => ({\n id: 'settings',\n label: 'Settings',\n icon: <SettingsIcon />,\n onClick,\n }),\n} as const;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { styled, alpha } from '@mui/material/styles';\nimport { deploymentEntityColors } from '../../../theme';\nimport { useControlledExpand } from '@/hooks/useControlledExpand';\nimport { DeploymentDashboardCard } from '../DeploymentDashboardCard/DeploymentDashboardCard';\nimport type {\n DeploymentEntityType,\n DeploymentCardAction,\n DeploymentStatusIndicator,\n} from '../DeploymentDashboardCard/DeploymentDashboardCard';\n\nexport interface DeploymentTreeNode {\n id: string;\n entityType: DeploymentEntityType;\n title: string;\n idDisplay?: string;\n createdAt?: string;\n updatedAt?: string;\n capacity?: number;\n actions?: DeploymentCardAction[];\n statusIndicator?: DeploymentStatusIndicator;\n children?: DeploymentTreeNode[];\n expanded?: boolean;\n}\n\nexport interface DeploymentDashboardTreeProps {\n /** Tree of entities */\n nodes: DeploymentTreeNode[];\n /** When a row's expand is toggled */\n onExpandToggle?: (nodeId: string) => void;\n /** When a card's copy-ID button is clicked */\n onCopyId?: (nodeId: string) => void;\n /** Override row content; default: render DeploymentDashboardCard from node data */\n renderCard?: (node: DeploymentTreeNode) => React.ReactNode;\n}\n\n/**\n * Figma 15-1276 spacing (fixed, not dynamic). From variable defs:\n * Units/sp-4 = 4px, Units/sp-8 = 8px (S), Units/sp-12 = 12px, Units/sp-16 = 16px (M).\n * Use these so tree indent and row gaps match the design exactly.\n */\nconst TREE_SP = {\n /** Vertical gap between sibling rows (Figma S / sp-8) */\n rowGap: 8,\n /** Gap between rail and children column (Figma sp-12) */\n railGap: 12,\n /** Rail width (Figma) */\n railWidth: 4,\n /** Total horizontal indent per level = railWidth + railGap (Figma M = 16) */\n indentPerLevel: 4 + 12,\n} as const;\n\n/**\n * Rail opacity per entity type — matching Figma 15-1276 absolute-positioned bars:\n * workspace rgba(182,95,244,0.5) → 0.5\n * stream rgba(83,185,106,0.5) → 0.5\n * deployment rgba(238,181,16,0.4) → 0.4\n * engagement rgba(217,72,201,0.4) → 0.4\n * agent (follows pattern) → 0.4\n */\nconst RAIL_OPACITY: Record<DeploymentEntityType, number> = {\n workspace: 0.5,\n stream: 0.5,\n deployment: 0.4,\n engagement: 0.4,\n agent: 0.4,\n};\n\nconst Rail = styled(Box, {\n shouldForwardProp: (p) => p !== 'railColor',\n})<{ railColor: string }>(({ railColor }) => ({\n width: TREE_SP.railWidth,\n borderRadius: TREE_SP.railWidth / 2,\n backgroundColor: railColor,\n flexShrink: 0,\n alignSelf: 'stretch',\n}));\n\nconst TreeRow: React.FC<{\n node: DeploymentTreeNode;\n depth: number;\n onExpandToggle?: (nodeId: string) => void;\n onCopyId?: (nodeId: string) => void;\n renderCard?: (node: DeploymentTreeNode) => React.ReactNode;\n}> = ({ node, depth, onExpandToggle, onCopyId, renderCard }) => {\n const hasChildren = Boolean(node.children && node.children.length > 0);\n\n const { expanded, toggle } = useControlledExpand(\n onExpandToggle != null ? node.expanded : undefined,\n onExpandToggle ? () => onExpandToggle(node.id) : undefined,\n node.expanded ?? false,\n );\n\n const entityColor =\n deploymentEntityColors[node.entityType] ?? deploymentEntityColors.workspace;\n const railOpacity = RAIL_OPACITY[node.entityType] ?? 0.5;\n const railColor = alpha(entityColor, railOpacity);\n\n /*\n * Rendered children — wrapped with the PARENT's rail so the rail sits\n * inside the card border, alongside the children (Figma 15-1276).\n * Agents are leaf nodes so they never contribute a rail.\n * Spacing: TREE_SP (fixed Figma Units/sp-8, sp-12, M=16).\n */\n const renderedChildren =\n hasChildren && expanded ? (\n <Box sx={{ display: 'flex', gap: `${TREE_SP.railGap}px` }}>\n {/* Parent's rail — inside the card border, next to children */}\n <Rail railColor={railColor} aria-hidden data-rail />\n\n <Box\n role=\"group\"\n sx={{\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: `${TREE_SP.rowGap}px`,\n }}\n >\n {node.children!.map((child) => (\n <TreeRow\n key={child.id}\n node={child}\n depth={depth + 1}\n onExpandToggle={onExpandToggle}\n onCopyId={onCopyId}\n renderCard={renderCard}\n />\n ))}\n </Box>\n </Box>\n ) : null;\n\n const cardContent =\n renderCard?.(node) ?? (\n <DeploymentDashboardCard\n entityType={node.entityType}\n title={node.title}\n id={node.idDisplay}\n createdAt={node.createdAt}\n updatedAt={node.updatedAt}\n capacity={node.capacity}\n actions={node.actions}\n statusIndicator={node.statusIndicator}\n expandable={hasChildren}\n expanded={expanded}\n onExpandToggle={hasChildren ? toggle : undefined}\n onCopyId={\n onCopyId && node.idDisplay\n ? () => onCopyId(node.id)\n : undefined\n }\n >\n {renderedChildren}\n </DeploymentDashboardCard>\n );\n\n return (\n <Box role=\"treeitem\">\n {cardContent}\n </Box>\n );\n};\n\nexport const DeploymentDashboardTree: React.FC<DeploymentDashboardTreeProps> = ({\n nodes,\n onExpandToggle,\n onCopyId,\n renderCard,\n}) => {\n return (\n <Box\n role=\"tree\"\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: `${TREE_SP.rowGap}px`,\n p: `${TREE_SP.rowGap}px`,\n }}\n >\n {nodes.map((node) => (\n <TreeRow\n key={node.id}\n node={node}\n depth={0}\n onExpandToggle={onExpandToggle}\n onCopyId={onCopyId}\n renderCard={renderCard}\n />\n ))}\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { deploymentSurfaceTokens as tokens } from '../../../theme';\n\n/**\n * Backdrop/background panel for the deployment list (Figma 15-1325).\n * Wraps the deployment tree or list in a rounded, light surface with a subtle border\n * so the list has a clear visual container.\n */\nexport interface DeploymentDashboardPanelProps {\n /** Content (e.g. DeploymentDashboardTree or a list of DeploymentDashboardCards) */\n children: React.ReactNode;\n /** Optional className */\n className?: string;\n /** Optional padding override; default uses theme spacing */\n padding?: number | string;\n}\n\nconst PANEL_RADIUS = 12;\nconst PANEL_SHADOW = '0px 1px 3px rgba(0, 0, 0, 0.08)';\n\nconst StyledPanel = styled(Box)({\n backgroundColor: tokens.surfaceHigh,\n border: `1px solid ${tokens.strokeOutside}`,\n borderRadius: PANEL_RADIUS,\n boxShadow: PANEL_SHADOW,\n overflow: 'hidden',\n});\n\nexport const DeploymentDashboardPanel: React.FC<DeploymentDashboardPanelProps> = ({\n children,\n className,\n padding = 2,\n}) => {\n return (\n <StyledPanel className={className} sx={{ p: padding }}>\n {children}\n </StyledPanel>\n );\n};\n","import React from 'react';\nimport MuiAvatar, { AvatarProps as MuiAvatarProps } from '@mui/material/Avatar';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface AvatarProps extends MuiAvatarProps {\n size?: 'small' | 'medium' | 'large' | number;\n}\n\nconst sizeMap = {\n small: 32,\n medium: 40,\n large: 56,\n};\n\nconst StyledAvatar = styled(MuiAvatar, {\n shouldForwardProp: (prop) => prop !== 'avatarSize',\n})<{ avatarSize?: number }>(({ avatarSize = 40 }) => ({\n width: avatarSize,\n height: avatarSize,\n backgroundColor: colors.primary.main,\n color: colors.primary.contrastText,\n fontWeight: 600,\n}));\n\nexport const Avatar: React.FC<AvatarProps> = ({ size = 'medium', ...props }) => {\n const avatarSize = typeof size === 'number' ? size : sizeMap[size];\n\n return <StyledAvatar avatarSize={avatarSize} {...props} />;\n};\n\n","import React from 'react';\nimport {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TableProps as MuiTableProps,\n TableSortLabel,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface TableProps extends MuiTableProps {\n stickyHeader?: boolean;\n}\n\nconst StyledTableContainer = styled(TableContainer)({\n borderRadius: 8,\n border: `1px solid ${colors.grey[200]}`,\n});\n\nconst StyledTableHead = styled(TableHead)({\n backgroundColor: colors.grey[50],\n '& .MuiTableCell-head': {\n fontWeight: 600,\n color: colors.text.primary,\n },\n});\n\n\nexport const Table: React.FC<TableProps> = ({ stickyHeader = false, children, ...props }) => {\n return (\n <StyledTableContainer>\n <MuiTable stickyHeader={stickyHeader} {...props}>\n {children}\n </MuiTable>\n </StyledTableContainer>\n );\n};\n\nexport interface TableHeaderProps {\n columns: Array<{\n id: string;\n label: string;\n sortable?: boolean;\n align?: 'left' | 'center' | 'right';\n }>;\n orderBy?: string;\n order?: 'asc' | 'desc';\n onSort?: (columnId: string) => void;\n}\n\nexport const TableHeader: React.FC<TableHeaderProps> = ({\n columns,\n orderBy,\n order = 'asc',\n onSort,\n}) => {\n return (\n <StyledTableHead>\n <TableRow>\n {columns.map((column) => (\n <TableCell key={column.id} align={column.align || 'left'}>\n {column.sortable && onSort ? (\n <TableSortLabel\n active={orderBy === column.id}\n direction={orderBy === column.id ? order : 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n ) : (\n column.label\n )}\n </TableCell>\n ))}\n </TableRow>\n </StyledTableHead>\n );\n};\n\nexport { TableBody, TableCell, TableContainer, TableHead, TableRow, TableSortLabel };\n\n","export { Grid2 as Grid } from '@mui/material';\nexport type { Grid2Props as GridProps } from '@mui/material';\n\n","import React from 'react';\nimport MuiBreadcrumbs, { BreadcrumbsProps as MuiBreadcrumbsProps } from '@mui/material/Breadcrumbs';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface BreadcrumbsProps extends Omit<MuiBreadcrumbsProps, 'children'> {\n items: BreadcrumbItem[];\n}\n\nconst StyledBreadcrumbs = styled(MuiBreadcrumbs)({\n '& .MuiBreadcrumbs-ol': {\n flexWrap: 'nowrap',\n },\n '& .MuiBreadcrumbs-separator': {\n color: colors.text.secondary,\n },\n});\n\nconst StyledLink = styled(Link)({\n color: colors.primary.main,\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n});\n\nexport const Breadcrumbs: React.FC<BreadcrumbsProps> = ({ items, ...props }) => {\n return (\n <StyledBreadcrumbs {...props}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n if (isLast || (!item.href && !item.onClick)) {\n return (\n <Typography key={index} color=\"text.primary\">\n {item.label}\n </Typography>\n );\n }\n\n return (\n <StyledLink\n key={index}\n href={item.href}\n onClick={(e) => {\n if (item.onClick) {\n e.preventDefault();\n item.onClick();\n }\n }}\n >\n {item.label}\n </StyledLink>\n );\n })}\n </StyledBreadcrumbs>\n );\n};\n\n","import React from 'react';\nimport {\n Accordion as MuiAccordion,\n AccordionSummary,\n AccordionDetails,\n AccordionProps as MuiAccordionProps,\n} from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface AccordionProps extends Omit<MuiAccordionProps, 'children'> {\n title: string;\n children: NonNullable<React.ReactNode>;\n defaultExpanded?: boolean;\n}\n\nconst StyledAccordion = styled(MuiAccordion)({\n borderRadius: 8,\n boxShadow: 'none',\n border: `1px solid ${colors.grey[200]}`,\n '&:before': {\n display: 'none',\n },\n '&.Mui-expanded': {\n margin: 0,\n },\n});\n\nconst StyledAccordionSummary = styled(AccordionSummary)({\n backgroundColor: colors.grey[50],\n borderRadius: '8px 8px 0 0',\n '&.Mui-expanded': {\n borderRadius: '8px 8px 0 0',\n },\n '& .MuiAccordionSummary-content': {\n margin: '12px 0',\n },\n});\n\nconst StyledAccordionDetails = styled(AccordionDetails)({\n padding: '16px',\n});\n\nexport const Accordion: React.FC<AccordionProps> = ({\n title,\n children,\n defaultExpanded = false,\n ...props\n}) => {\n return (\n <StyledAccordion defaultExpanded={defaultExpanded} {...props}>\n <StyledAccordionSummary expandIcon={<ExpandMoreIcon />}>\n {title}\n </StyledAccordionSummary>\n <StyledAccordionDetails>{children}</StyledAccordionDetails>\n </StyledAccordion>\n );\n};\n\n","import React from 'react';\nimport MuiPaper, { PaperProps as MuiPaperProps } from '@mui/material/Paper';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface PaperProps extends MuiPaperProps {\n variant?: 'elevation' | 'outlined';\n}\n\nconst StyledPaper = styled(MuiPaper)({\n borderRadius: 8,\n '&.MuiPaper-elevation': {\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.08)',\n },\n '&.MuiPaper-outlined': {\n border: `1px solid ${colors.grey[200]}`,\n boxShadow: 'none',\n },\n});\n\nexport const Paper: React.FC<PaperProps> = ({ variant = 'elevation', ...props }) => {\n return <StyledPaper variant={variant} elevation={variant === 'elevation' ? 1 : 0} {...props} />;\n};\n\n","import React from 'react';\nimport MuiDivider, { DividerProps as MuiDividerProps } from '@mui/material/Divider';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface DividerProps extends MuiDividerProps {\n variant?: 'fullWidth' | 'inset' | 'middle';\n}\n\nconst StyledDivider = styled(MuiDivider)({\n borderColor: colors.grey[200],\n});\n\nexport const Divider: React.FC<DividerProps> = ({ ...props }) => {\n return <StyledDivider {...props} />;\n};\n\n","export { Stack } from '@mui/material';\nexport type { StackProps } from '@mui/material';\n\n","export { Box } from '@mui/material';\nexport type { BoxProps } from '@mui/material';\n\n","export { Typography } from '@mui/material';\nexport type { TypographyProps } from '@mui/material';\n\n","export { Container } from '@mui/material';\nexport type { ContainerProps } from '@mui/material';\n\n","import React from 'react';\nimport {\n AppBar as MuiAppBar,\n Toolbar,\n AppBarProps as MuiAppBarProps,\n ToolbarProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface AppBarProps extends MuiAppBarProps {\n height?: number;\n}\n\nconst StyledAppBar = styled(MuiAppBar, {\n shouldForwardProp: (prop) => prop !== 'appBarHeight',\n})<{ appBarHeight?: number }>(({ appBarHeight = 64 }) => ({\n backgroundColor: colors.background.paper,\n borderBottom: `1px solid ${colors.grey[200]}`,\n boxShadow: 'none',\n height: appBarHeight,\n zIndex: 1300,\n}));\n\nconst StyledToolbar = styled(Toolbar)(({ theme }) => ({\n height: '100%',\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n gap: theme.spacing(2),\n}));\n\nexport const AppBar: React.FC<AppBarProps> = ({ height = 64, children, ...props }) => {\n return (\n <StyledAppBar position=\"fixed\" appBarHeight={height} {...props}>\n <StyledToolbar>{children}</StyledToolbar>\n </StyledAppBar>\n );\n};\n\nexport { Toolbar };\nexport type { ToolbarProps };\n\n","import React from 'react';\nimport {\n Collapse as MuiCollapse,\n CollapseProps as MuiCollapseProps,\n} from '@mui/material';\n\nexport interface CollapseProps extends MuiCollapseProps {\n /**\n * If `true`, the component will transition in\n */\n in?: boolean;\n /**\n * The content to collapse\n */\n children?: React.ReactNode;\n}\n\n/**\n * Collapse component - provides a collapse animation\n * \n * @example\n * ```tsx\n * <Collapse in={open}>\n * <Box>Collapsible content</Box>\n * </Collapse>\n * ```\n */\nexport const Collapse: React.FC<CollapseProps> = (props) => {\n return <MuiCollapse {...props} />;\n};\n\nexport default Collapse;\n\n","import React from 'react';\nimport MuiAlert, { AlertProps as MuiAlertProps } from '@mui/material/Alert';\nimport { AlertTitle as MuiAlertTitle } from '@mui/material';\nimport MuiSnackbar, { SnackbarProps as MuiSnackbarProps } from '@mui/material/Snackbar';\nimport { styled } from '@mui/material/styles';\n\nexport type AlertSeverity = 'success' | 'error' | 'warning' | 'info';\n\nexport interface AlertProps extends Omit<MuiAlertProps, 'severity'> {\n severity?: AlertSeverity;\n /**\n * Title to display above the alert message\n */\n title?: string;\n}\n\nconst StyledAlert = styled(MuiAlert)({\n borderRadius: 8,\n '&.MuiAlert-filled': {\n borderRadius: 8,\n },\n});\n\nexport const Alert: React.FC<AlertProps> = ({ \n severity = 'info', \n title,\n children,\n ...props \n}) => {\n return (\n <StyledAlert severity={severity} {...props}>\n {title && <MuiAlertTitle>{title}</MuiAlertTitle>}\n {children}\n </StyledAlert>\n );\n};\n\nexport { MuiAlertTitle as AlertTitle };\n\nexport interface SnackbarProps extends Omit<MuiSnackbarProps, 'children'> {\n /**\n * Message to display in the snackbar\n */\n message?: string;\n /**\n * Severity of the alert inside snackbar\n */\n severity?: AlertSeverity;\n /**\n * Title to display in the alert (optional)\n */\n title?: string;\n /**\n * Alert variant\n * @default 'filled'\n */\n variant?: 'filled' | 'standard' | 'outlined';\n /**\n * Callback when snackbar is closed\n */\n onClose?: () => void;\n /**\n * Children to render instead of message (allows custom content)\n * Must be a ReactElement to match MuiSnackbar requirements\n */\n children?: React.ReactElement;\n}\n\nconst StyledSnackbar = styled(MuiSnackbar)({});\n\nexport const Snackbar: React.FC<SnackbarProps> = ({\n message,\n severity = 'info',\n title,\n variant = 'filled',\n onClose,\n children,\n anchorOrigin = { vertical: 'bottom', horizontal: 'center' },\n autoHideDuration = 6000,\n ...props\n}) => {\n const handleClose = (_event?: React.SyntheticEvent | Event, reason?: string) => {\n // Prevent closing on clickaway if we have a custom onClose handler\n if (reason === 'clickaway' && onClose) {\n return;\n }\n onClose?.();\n };\n\n const content = children || (message ? (\n <Alert \n onClose={onClose ? handleClose : undefined} \n severity={severity} \n variant={variant}\n title={title}\n sx={{ width: '100%', borderRadius: 2 }}\n >\n {message}\n </Alert>\n ) : undefined);\n\n if (!content) {\n return null;\n }\n\n // Create a simple transition component that doesn't access scrollTop\n const NoTransition = React.forwardRef<HTMLDivElement, { children: React.ReactElement }>(\n (props, ref) => {\n return React.cloneElement(props.children, {\n ref,\n style: {\n ...props.children.props.style,\n transition: 'opacity 0.3s ease-in-out',\n },\n });\n }\n );\n NoTransition.displayName = 'NoTransition';\n\n return (\n <StyledSnackbar\n anchorOrigin={anchorOrigin}\n autoHideDuration={autoHideDuration}\n onClose={handleClose}\n disableWindowBlurListener\n ClickAwayListenerProps={{\n onClickAway: () => {} // Prevent scroll issues\n }}\n TransitionComponent={NoTransition}\n {...props}\n >\n {content}\n </StyledSnackbar>\n );\n};\n\n","import React from 'react';\nimport { Box, Typography } from '@mui/material';\nimport { colors } from '../../theme';\n\nexport interface EmptyStateProps {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n title = 'No items found',\n description,\n icon,\n action,\n}) => {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 6,\n textAlign: 'center',\n minHeight: 200,\n }}\n >\n {icon && (\n <Box\n sx={{\n color: colors.text.secondary,\n marginBottom: 2,\n fontSize: 64,\n }}\n >\n {icon}\n </Box>\n )}\n <Typography variant=\"h6\" sx={{ marginBottom: 1, color: colors.text.primary }}>\n {title}\n </Typography>\n {description && (\n <Typography variant=\"body2\" sx={{ color: colors.text.secondary, marginBottom: 3 }}>\n {description}\n </Typography>\n )}\n {action && <Box>{action}</Box>}\n </Box>\n );\n};\n\n","import React from 'react';\nimport { Box, CircularProgress, Typography } from '@mui/material';\nimport { colors } from '../../theme';\n\nexport interface LoadingProps {\n message?: string;\n size?: number;\n fullScreen?: boolean;\n}\n\nexport const Loading: React.FC<LoadingProps> = ({\n message = 'Loading...',\n size = 40,\n fullScreen = false,\n}) => {\n const content = (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 2,\n ...(fullScreen && {\n height: '100vh',\n width: '100vw',\n position: 'fixed',\n top: 0,\n left: 0,\n backgroundColor: colors.background.default,\n zIndex: 9999,\n }),\n ...(!fullScreen && {\n padding: 4,\n }),\n }}\n >\n <CircularProgress size={size} thickness={4} />\n {message && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {message}\n </Typography>\n )}\n </Box>\n );\n\n return content;\n};\n\n","import React from 'react';\nimport { Box, CircularProgress, Typography } from '@mui/material';\n\nexport interface AppLoadingProps {\n /**\n * Loading message to display\n * @default \"Loading...\"\n */\n message?: string;\n /**\n * Logo source URL or path\n * @default \"/icons/logo.png\"\n */\n logo?: string;\n /**\n * Custom styles\n */\n sx?: any;\n}\n\n/**\n * AppLoading component - Full-screen loading indicator with logo\n * \n * @example\n * ```tsx\n * <AppLoading message=\"Initializing application...\" />\n * ```\n */\nexport const AppLoading: React.FC<AppLoadingProps> = ({\n message = 'Loading...',\n logo = '/icons/logo.png',\n sx = {},\n}) => {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n height: '100vh',\n width: '100vw',\n position: 'fixed',\n top: 0,\n left: 0,\n backgroundColor: '#f8f9fa', // Light background\n zIndex: 9999,\n ...sx,\n }}\n >\n {logo && (\n <Box\n component=\"img\"\n src={logo}\n alt=\"Logo\"\n sx={{\n height: 80,\n width: 'auto',\n mb: 4,\n }}\n />\n )}\n\n <CircularProgress size={40} thickness={4} sx={{ mb: 2 }} />\n\n <Typography variant=\"body1\" color=\"text.secondary\">\n {message}\n </Typography>\n </Box>\n );\n};\n\nexport default AppLoading;\n\n","import React from 'react';\nimport {\n CircularProgress as MuiCircularProgress,\n CircularProgressProps as MuiCircularProgressProps,\n} from '@mui/material';\n\nexport interface CircularProgressProps extends MuiCircularProgressProps {\n /**\n * Size of the progress indicator\n * @default 40\n */\n size?: number | string;\n /**\n * Thickness of the progress indicator\n * @default 4\n */\n thickness?: number;\n}\n\n/**\n * CircularProgress component - wrapper around MUI CircularProgress\n * \n * @example\n * ```tsx\n * <CircularProgress size={40} thickness={4} />\n * ```\n */\nexport const CircularProgress: React.FC<CircularProgressProps> = ({\n size = 40,\n thickness = 4,\n ...props\n}) => {\n return <MuiCircularProgress size={size} thickness={thickness} {...props} />;\n};\n\nexport default CircularProgress;\n\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const ActivityAppIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 36 36\">\n <rect fill=\"none\" stroke=\"currentColor\" width={34} height={34} x={1} y={1} strokeWidth={1.5} rx={6.8} />\n <rect\n fill=\"none\"\n stroke=\"currentColor\"\n width={6.277}\n height={11.018}\n x={6.771}\n y={18.267}\n strokeWidth={1.5}\n rx={1.7}\n />\n <rect\n fill=\"none\"\n stroke=\"currentColor\"\n width={6.277}\n height={22.57}\n x={14.861}\n y={6.714}\n strokeWidth={1.5}\n rx={1.7}\n />\n <rect\n fill=\"none\"\n stroke=\"currentColor\"\n width={6.277}\n height={16.872}\n x={22.949}\n y={12.414}\n strokeWidth={1.5}\n rx={1.7}\n />\n </SvgIcon>\n));\n","import { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const LeftArrowIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <g id=\" Arrow Left\">\n <path\n id=\"Vector (Stroke)\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M10.5303 5.46967C10.8232 5.76256 10.8232 6.23744 10.5303 6.53033L5.81066 11.25H20C20.4142 11.25 20.75 11.5858 20.75 12C20.75 12.4142 20.4142 12.75 20 12.75H5.81066L10.5303 17.4697C10.8232 17.7626 10.8232 18.2374 10.5303 18.5303C10.2374 18.8232 9.76256 18.8232 9.46967 18.5303L3.46967 12.5303C3.17678 12.2374 3.17678 11.7626 3.46967 11.4697L9.46967 5.46967C9.76256 5.17678 10.2374 5.17678 10.5303 5.46967Z\"\n />\n </g>\n </SvgIcon>\n );\n};\n","import { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const RightArrowIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} width=\"25\" height=\"24\" viewBox=\"0 0 25 24\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M13.9697 5.46967C14.2626 5.17678 14.7374 5.17678 15.0303 5.46967L21.0303 11.4697C21.3232 11.7626 21.3232 12.2374 21.0303 12.5303L15.0303 18.5303C14.7374 18.8232 14.2626 18.8232 13.9697 18.5303C13.6768 18.2374 13.6768 17.7626 13.9697 17.4697L18.6893 12.75H4.5C4.08579 12.75 3.75 12.4142 3.75 12C3.75 11.5858 4.08579 11.25 4.5 11.25H18.6893L13.9697 6.53033C13.6768 6.23744 13.6768 5.76256 13.9697 5.46967Z\"\n />\n </SvgIcon>\n );\n};\n","import { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const AvatarIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} viewBox=\"0 0 16 16\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.99999 0.833313C6.25109 0.833313 4.83332 2.25108 4.83332 3.99998C4.83332 5.74888 6.25109 7.16665 7.99999 7.16665C9.74889 7.16665 11.1667 5.74888 11.1667 3.99998C11.1667 2.25108 9.74889 0.833313 7.99999 0.833313ZM5.83332 3.99998C5.83332 2.80336 6.80337 1.83331 7.99999 1.83331C9.1966 1.83331 10.1667 2.80336 10.1667 3.99998C10.1667 5.1966 9.1966 6.16665 7.99999 6.16665C6.80337 6.16665 5.83332 5.1966 5.83332 3.99998Z\"\n fill=\"#1D1B20\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.99999 8.16665C6.45762 8.16665 5.0366 8.51723 3.98362 9.10954C2.94631 9.69302 2.16665 10.5774 2.16665 11.6666L2.16661 11.7346C2.16586 12.5092 2.16491 13.4813 3.0176 14.1757C3.43724 14.5174 4.02431 14.7604 4.81746 14.921C5.61283 15.0819 6.64947 15.1666 7.99999 15.1666C9.3505 15.1666 10.3871 15.0819 11.1825 14.921C11.9757 14.7604 12.5627 14.5174 12.9824 14.1757C13.8351 13.4813 13.8341 12.5092 13.8334 11.7346L13.8333 11.6666C13.8333 10.5774 13.0537 9.69302 12.0164 9.10954C10.9634 8.51723 9.54236 8.16665 7.99999 8.16665ZM3.16665 11.6666C3.16665 11.0991 3.58091 10.4834 4.47388 9.98111C5.35119 9.48763 6.59684 9.16665 7.99999 9.16665C9.40314 9.16665 10.6488 9.48763 11.5261 9.98111C12.4191 10.4834 12.8333 11.0991 12.8333 11.6666C12.8333 12.5385 12.8064 13.0293 12.3509 13.4003C12.1039 13.6014 11.691 13.7978 10.9841 13.9408C10.2795 14.0835 9.31614 14.1666 7.99999 14.1666C6.68384 14.1666 5.72048 14.0835 5.01585 13.9408C4.309 13.7978 3.89607 13.6014 3.64905 13.4003C3.19353 13.0293 3.16665 12.5385 3.16665 11.6666Z\"\n fill=\"#1D1B20\"\n />\n </SvgIcon>\n );\n};\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const BarTrackingIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 96 97\">\n <rect\n x=\"7.19922\"\n y=\"7.70312\"\n width=\"81.6\"\n height=\"81.6\"\n rx=\"16.32\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n <rect\n x=\"21.0371\"\n y=\"49.1426\"\n width=\"15.0657\"\n height=\"26.4441\"\n rx=\"4.08\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <rect\n x=\"40.4746\"\n y=\"21.4297\"\n width=\"15.0657\"\n height=\"54.1691\"\n rx=\"4.08\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <rect\n x=\"59.8828\"\n y=\"35.0859\"\n width=\"15.0657\"\n height=\"40.4922\"\n rx=\"4.08\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const ClockIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M10.943.25h.114c2.309 0 4.118 0 5.53.19 1.444.194 2.584.6 3.479 1.494.895.895 1.3 2.035 1.494 3.48.19 1.411.19 3.22.19 5.529v.114c0 2.309 0 4.118-.19 5.53-.194 1.444-.6 2.584-1.494 3.479-.895.895-2.035 1.3-3.48 1.494-1.411.19-3.22.19-5.529.19h-.114c-2.309 0-4.118 0-5.53-.19-1.444-.194-2.584-.6-3.479-1.494-.895-.895-1.3-2.035-1.494-3.48-.19-1.411-.19-3.22-.19-5.529v-.114c0-2.309 0-4.118.19-5.53.194-1.444.6-2.584 1.494-3.479C2.83 1.04 3.97.634 5.414.44 6.825.25 8.634.25 10.943.25Zm-5.33 1.676c-1.278.172-2.049.5-2.618 1.069-.57.57-.897 1.34-1.069 2.619-.174 1.3-.176 3.008-.176 5.386s.002 4.086.176 5.386c.172 1.279.5 2.05 1.069 2.62.57.569 1.34.896 2.619 1.068 1.3.174 3.008.176 5.386.176s4.086-.002 5.386-.176c1.279-.172 2.05-.5 2.62-1.069.569-.57.896-1.34 1.068-2.619.174-1.3.176-3.008.176-5.386s-.002-4.086-.176-5.386c-.172-1.279-.5-2.05-1.069-2.62-.57-.569-1.34-.896-2.619-1.068-1.3-.174-3.008-.176-5.386-.176s-4.086.002-5.386.176ZM11 6.25a.75.75 0 0 1 .75.75v3.69l2.28 2.28a.75.75 0 1 1-1.06 1.06l-2.134-2.134c-.29-.289-.434-.433-.51-.617-.076-.184-.076-.388-.076-.797V7a.75.75 0 0 1 .75-.75Z\"\n clipRule=\"evenodd\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const CloudFlashIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} fill=\"none\" viewBox=\"0 0 96 97\">\n <path\n d=\"M18.8029 43.3396V43.2933H19.8029C20.3752 43.2933 20.9384 43.328 21.4908 43.3937C21.9111 39.4438 22.9817 34.2181 25.6601 29.8138C28.6259 24.937 33.5595 21.0898 41.5689 21.0898C46.9417 21.0898 50.8839 22.9055 53.7292 25.6773C56.5498 28.4249 58.2303 32.0495 59.2307 35.5901C60.1768 38.9386 60.5315 42.2718 60.6446 44.8476C60.891 44.4671 61.1651 44.0792 61.4696 43.691C63.7235 40.8178 67.6089 37.9824 74.0317 37.9824C77.222 37.9824 79.8196 38.6871 81.9219 39.7574L81.9232 39.7581C86.8327 42.2671 89.793 47.4136 89.793 52.8846V54.7368C89.793 65.644 80.9404 74.4889 70.0269 74.4889H18.865C11.867 74.4889 6.19295 68.8202 6.19295 61.8256V57.184C6.19295 49.9845 11.6911 43.8799 18.8029 43.3396Z\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M79.1804 45.7001C79.1804 45.7001 60.7908 47.259 60.7908 10.0898C60.7908 10.0898 60.9856 45.7768 43.1934 45.7768C43.1934 45.7768 61.1933 48.1151 61.1933 67.6899C61.1933 67.6899 61.1933 45.7001 79.1934 45.7001H79.1804Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const DecentralizedServerIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 96 97\">\n <path\n d=\"M14.5706 15.0858L48.016 8.29688L81.3694 15.0858L88.2242 48.3742L81.3694 81.6556L48.016 88.4445L14.5706 81.6556L7.80078 48.3742L14.5706 15.0858Z\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M48.0118 11.2609C49.6622 11.2609 51.0001 9.92755 51.0001 8.28279C51.0001 6.63803 49.6622 5.30469 48.0118 5.30469C46.3614 5.30469 45.0234 6.63803 45.0234 8.28279C45.0234 9.92755 46.3614 11.2609 48.0118 11.2609Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M48.0118 91.4132C49.6622 91.4132 51.0001 90.0799 51.0001 88.4351C51.0001 86.7904 49.6622 85.457 48.0118 85.457C46.3614 85.457 45.0234 86.7904 45.0234 88.4351C45.0234 90.0799 46.3614 91.4132 48.0118 91.4132Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7.79304 51.339C9.44346 51.339 10.7814 50.0057 10.7814 48.3609C10.7814 46.7162 9.44346 45.3828 7.79304 45.3828C6.14262 45.3828 4.80469 46.7162 4.80469 48.3609C4.80469 50.0057 6.14262 51.339 7.79304 51.339Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M88.2247 51.339C89.8751 51.339 91.213 50.0057 91.213 48.3609C91.213 46.7162 89.8751 45.3828 88.2247 45.3828C86.5743 45.3828 85.2363 46.7162 85.2363 48.3609C85.2363 50.0057 86.5743 51.339 88.2247 51.339Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M81.3477 18.0539C82.9982 18.0539 84.3361 16.7205 84.3361 15.0758C84.3361 13.431 82.9982 12.0977 81.3477 12.0977C79.6973 12.0977 78.3594 13.431 78.3594 15.0758C78.3594 16.7205 79.6973 18.0539 81.3477 18.0539Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14.5508 84.6203C16.2013 84.6203 17.5392 83.2869 17.5392 81.6422C17.5392 79.9974 16.2013 78.6641 14.5508 78.6641C12.9004 78.6641 11.5625 79.9974 11.5625 81.6422C11.5625 83.2869 12.9004 84.6203 14.5508 84.6203Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M81.3477 84.6203C82.9982 84.6203 84.3361 83.2869 84.3361 81.6422C84.3361 79.9974 82.9982 78.6641 81.3477 78.6641C79.6973 78.6641 78.3594 79.9974 78.3594 81.6422C78.3594 83.2869 79.6973 84.6203 81.3477 84.6203Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14.5508 18.0539C16.2013 18.0539 17.5392 16.7205 17.5392 15.0758C17.5392 13.431 16.2013 12.0977 14.5508 12.0977C12.9004 12.0977 11.5625 13.431 11.5625 15.0758C11.5625 16.7205 12.9004 18.0539 14.5508 18.0539Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <rect\n x=\"22.623\"\n y=\"27.332\"\n width=\"51.0819\"\n height=\"13.888\"\n rx=\"4.77987\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <rect\n x=\"22.623\"\n y=\"41.4062\"\n width=\"51.0819\"\n height=\"13.888\"\n rx=\"4.77987\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <rect\n x=\"22.623\"\n y=\"55.3125\"\n width=\"51.0819\"\n height=\"13.888\"\n rx=\"4.77987\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M29.612 37.1542C31.2803 37.1542 32.634 35.8026 32.634 34.1337C32.634 32.4649 31.2803 31.1133 29.612 31.1133C27.9437 31.1133 26.5901 32.4649 26.5901 34.1337C26.5901 35.8026 27.9437 37.1542 29.612 37.1542Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n />\n <path\n d=\"M40.3464 37.1542C42.0147 37.1542 43.3684 35.8026 43.3684 34.1337C43.3684 32.4649 42.0147 31.1133 40.3464 31.1133C38.6782 31.1133 37.3245 32.4649 37.3245 34.1337C37.3245 35.8026 38.6782 37.1542 40.3464 37.1542Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n />\n <path\n d=\"M51.0808 37.1542C52.7491 37.1542 54.1028 35.8026 54.1028 34.1337C54.1028 32.4649 52.7491 31.1133 51.0808 31.1133C49.4125 31.1133 48.0588 32.4649 48.0588 34.1337C48.0588 35.8026 49.4125 37.1542 51.0808 37.1542Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const DiscordIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 15 12\">\n <path\n fill=\"currentColor\"\n d=\"M12.589 1.56A11.64 11.64 0 0 0 9.685.667a7.977 7.977 0 0 0-.372.756 10.813 10.813 0 0 0-3.222 0 8.01 8.01 0 0 0-.372-.756c-1.003.17-1.98.472-2.906.895C.976 4.281.477 6.932.727 9.546c1.076.795 2.28 1.4 3.56 1.787.289-.388.544-.799.763-1.23a7.575 7.575 0 0 1-1.2-.573c.1-.073.198-.148.294-.221a8.365 8.365 0 0 0 7.12 0c.096.078.195.154.294.221a7.602 7.602 0 0 1-1.203.575c.219.43.474.841.762 1.228a11.65 11.65 0 0 0 3.564-1.786c.292-3.031-.5-5.658-2.092-7.987ZM5.366 7.938c-.694 0-1.268-.63-1.268-1.404 0-.775.554-1.41 1.266-1.41.711 0 1.28.635 1.268 1.41-.012.774-.559 1.404-1.266 1.404Zm4.676 0c-.696 0-1.267-.63-1.267-1.404 0-.775.554-1.41 1.267-1.41.713 0 1.277.635 1.265 1.41-.012.774-.558 1.404-1.265 1.404Z\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const DownloadIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 17 16\" fill=\"none\">\n <path\n d=\"M8.86902 11.0041C8.77429 11.1077 8.64038 11.1667 8.5 11.1667C8.35962 11.1667 8.22571 11.1077 8.13099 11.0041L5.46432 8.08738C5.27799 7.88358 5.29215 7.56732 5.49595 7.38099C5.69975 7.19465 6.01602 7.20881 6.20235 7.41262L8 9.3788V2C8 1.72386 8.22386 1.5 8.5 1.5C8.77614 1.5 9 1.72386 9 2V9.3788L10.7977 7.41262C10.984 7.20881 11.3003 7.19465 11.5041 7.38099C11.7079 7.56732 11.722 7.88358 11.5357 8.08738L8.86902 11.0041Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3 10C3 9.72386 2.77614 9.5 2.5 9.5C2.22386 9.5 2 9.72386 2 10V10.0366C1.99999 10.9483 1.99998 11.6832 2.07768 12.2612C2.15836 12.8612 2.33096 13.3665 2.73223 13.7678C3.13351 14.169 3.63876 14.3416 4.23883 14.4223C4.81681 14.5 5.55169 14.5 6.46342 14.5H10.5366C11.4483 14.5 12.1832 14.5 12.7612 14.4223C13.3612 14.3416 13.8665 14.169 14.2678 13.7678C14.669 13.3665 14.8416 12.8612 14.9223 12.2612C15 11.6832 15 10.9483 15 10.0366V10C15 9.72386 14.7761 9.5 14.5 9.5C14.2239 9.5 14 9.72386 14 10C14 10.9569 13.9989 11.6244 13.9312 12.1279C13.8655 12.6171 13.7452 12.8762 13.5607 13.0607C13.3762 13.2452 13.1171 13.3655 12.6279 13.4312C12.1244 13.4989 11.4569 13.5 10.5 13.5H6.5C5.54306 13.5 4.87565 13.4989 4.37208 13.4312C3.8829 13.3655 3.62385 13.2452 3.43934 13.0607C3.25483 12.8762 3.13453 12.6171 3.06877 12.1279C3.00106 11.6244 3 10.9569 3 10Z\"\n fill=\"currentColor\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const FilledFolderIcon = memo((props: SvgIconProps) => (\n <SvgIcon sx={{ fill: 'none' }} {...props} fill=\"none\" viewBox=\"0 0 22 22\">\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"21\" rx=\"4.5\" fill=\"#FCF8EC\" />\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"21\" rx=\"4.5\" stroke=\"#E1B43E\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.03468 7.62919C6 7.81298 6 8.03361 6 8.47487V12C6 13.8856 6 14.8284 6.58579 15.4142C7.17157 16 8.11438 16 10 16H12C13.8856 16 14.8284 16 15.4142 15.4142C16 14.8284 16 13.8856 16 12V10.899C16 9.58277 16 8.92468 15.6153 8.49692C15.5799 8.45757 15.5424 8.42012 15.5031 8.38473C15.0753 8 14.4172 8 13.101 8H12.9142C12.3374 8 12.0489 8 11.7802 7.92339C11.6325 7.8813 11.4902 7.82236 11.3561 7.74771C11.1118 7.61183 10.9079 7.40789 10.5 7L10.2249 6.72487C10.0882 6.58816 10.0198 6.51981 9.94797 6.46026C9.63826 6.20352 9.25833 6.04614 8.85779 6.00869C8.76488 6 8.66821 6 8.47487 6C8.03361 6 7.81298 6 7.62919 6.03468C6.82015 6.18732 6.18732 6.82015 6.03468 7.62919ZM11.125 10C11.125 9.79289 11.2929 9.625 11.5 9.625H14C14.2071 9.625 14.375 9.79289 14.375 10C14.375 10.2071 14.2071 10.375 14 10.375H11.5C11.2929 10.375 11.125 10.2071 11.125 10Z\"\n fill=\"#E1B43E\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const FolderIcon = memo((props: SvgIconProps) => (\n <SvgIcon sx={{ fill: 'none' }} {...props} fill=\"none\" viewBox=\"0 0 22 22\">\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"21\" rx=\"4.5\" fill=\"#F5F7FA\" />\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"21\" rx=\"4.5\" stroke=\"#E6E6E6\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.125 6.41711C10.8948 6.37799 10.581 6.37503 10.0149 6.37503C9.05656 6.37503 8.37537 6.37581 7.85893 6.44493C7.35298 6.51265 7.06226 6.63966 6.85095 6.85098C6.63935 7.06258 6.51251 7.3524 6.44488 7.85545C6.3758 8.36928 6.375 9.04661 6.375 10V12C6.375 12.9534 6.3758 13.6308 6.44488 14.1446C6.51251 14.6476 6.63935 14.9375 6.85095 15.1491C7.06256 15.3607 7.35238 15.4875 7.85542 15.5551C8.36926 15.6242 9.04659 15.625 10 15.625H12C12.9534 15.625 13.6307 15.6242 14.1446 15.5551C14.6476 15.4875 14.9374 15.3607 15.149 15.1491C15.3607 14.9375 15.4875 14.6476 15.5551 14.1446C15.6242 13.6308 15.625 12.9534 15.625 12V11.7815C15.625 11.0135 15.6196 10.6494 15.5381 10.375H13.9732C13.4067 10.375 12.9439 10.375 12.5784 10.3259C12.1965 10.2746 11.8653 10.1634 11.601 9.89907C11.3366 9.63473 11.2255 9.30356 11.1741 8.92158C11.125 8.55615 11.125 8.09329 11.125 7.52687V6.41711ZM11.875 6.80475V7.50003C11.875 8.09988 11.8758 8.51205 11.9174 8.82165C11.9576 9.12046 12.0295 9.26697 12.1313 9.36874C12.2331 9.47051 12.3796 9.54243 12.6784 9.5826C12.988 9.62423 13.4001 9.62502 14 9.62502H15.0097C14.8615 9.48125 14.6716 9.30898 14.425 9.08703L12.4456 7.30558C12.2029 7.08716 12.0223 6.92594 11.875 6.80475ZM10.0877 5.62501C10.78 5.62483 11.2273 5.62471 11.639 5.78268C12.0506 5.94064 12.3816 6.23867 12.8936 6.69978C12.9113 6.71569 12.9292 6.73181 12.9473 6.74811L14.9267 8.52956C14.9478 8.54853 14.9686 8.56725 14.9892 8.58575C15.581 9.11807 15.9637 9.46229 16.1696 9.92451C16.3754 10.3867 16.3753 10.9015 16.375 11.6975C16.375 11.7251 16.375 11.7531 16.375 11.7815V12.0282C16.375 12.9471 16.375 13.6749 16.2984 14.2445C16.2196 14.8307 16.0536 15.3052 15.6794 15.6794C15.3052 16.0536 14.8307 16.2196 14.2445 16.2985C13.6749 16.375 12.9471 16.375 12.0282 16.375H9.9718C9.05291 16.375 8.3251 16.375 7.75549 16.2985C7.16928 16.2196 6.6948 16.0536 6.32062 15.6794C5.94644 15.3052 5.78038 14.8307 5.70157 14.2445C5.62499 13.6749 5.62499 12.9471 5.625 12.0282V9.97182C5.62499 9.05294 5.62499 8.32512 5.70157 7.75551C5.78038 7.1693 5.94644 6.69483 6.32062 6.32065C6.6951 5.94617 7.17116 5.7803 7.75944 5.70156C8.33141 5.62501 9.06285 5.62502 9.98676 5.62503L10.0149 5.62503C10.0395 5.62503 10.0637 5.62502 10.0877 5.62501Z\"\n fill=\"#818083\"\n stroke=\"#818083\"\n strokeWidth=\"0.5\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const GithubLogoIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 17 16\" sx={{ fill: 'none' }}>\n <path\n d=\"M8.79754 0C4.268 0 0.595032 3.67233 0.595032 8.20251C0.595032 11.8267 2.9453 14.9013 6.20443 15.9859C6.61435 16.0618 6.76488 15.808 6.76488 15.5913C6.76488 15.3957 6.75723 14.7495 6.75375 14.0642C4.47174 14.5603 3.99022 13.0964 3.99022 13.0964C3.61711 12.1483 3.07949 11.8962 3.07949 11.8962C2.33531 11.3871 3.13559 11.3975 3.13559 11.3975C3.95928 11.4554 4.393 12.2428 4.393 12.2428C5.12457 13.4968 6.31186 13.1343 6.77993 12.9247C6.85353 12.3945 7.06614 12.0327 7.30069 11.8279C5.47884 11.6204 3.56358 10.9171 3.56358 7.77413C3.56358 6.87865 3.88401 6.14688 4.40876 5.57247C4.32359 5.36584 4.04285 4.5316 4.48821 3.40175C4.48821 3.40175 5.177 3.18129 6.74449 4.24256C7.39873 4.06076 8.10045 3.96967 8.79754 3.96658C9.49463 3.96967 10.1969 4.06076 10.8524 4.24256C12.418 3.18129 13.1059 3.40175 13.1059 3.40175C13.5523 4.5316 13.2714 5.36584 13.1863 5.57247C13.7122 6.14688 14.0304 6.87858 14.0304 7.77413C14.0304 10.9245 12.1116 11.6183 10.2851 11.8213C10.5793 12.0759 10.8414 12.5751 10.8414 13.3403C10.8414 14.4378 10.8319 15.3211 10.8319 15.5913C10.8319 15.8096 10.9795 16.0654 11.3954 15.9848C14.6527 14.899 17 11.8254 17 8.20251C17 3.67233 13.3275 0 8.79754 0Z\"\n fill=\"white\"\n />\n <path\n d=\"M3.66696 11.6845C3.64895 11.7252 3.58474 11.7374 3.5264 11.7095C3.46689 11.6828 3.43344 11.6272 3.45274 11.5863C3.47043 11.5443 3.53463 11.5326 3.59401 11.5608C3.65364 11.5875 3.68761 11.6436 3.66696 11.6845ZM4.07044 12.0445C4.03133 12.0808 3.95484 12.0639 3.90292 12.0066C3.84927 11.9494 3.83924 11.873 3.87893 11.8361C3.91926 11.7999 3.99344 11.8168 4.04722 11.8741C4.10087 11.9319 4.11129 12.0079 4.07038 12.0446M4.34726 12.5051C4.29695 12.54 4.21474 12.5073 4.16398 12.4343C4.11374 12.3615 4.11374 12.274 4.16507 12.2389C4.21602 12.2038 4.29695 12.2354 4.34842 12.3077C4.39859 12.3819 4.39859 12.4694 4.34719 12.5052M4.81533 13.0386C4.77036 13.0881 4.67464 13.0749 4.60452 13.0072C4.53285 12.9411 4.51285 12.8472 4.55794 12.7976C4.60342 12.748 4.69973 12.7619 4.77036 12.829C4.84158 12.895 4.86332 12.9896 4.81539 13.0386M5.4203 13.2187C5.40055 13.2829 5.3083 13.3121 5.2154 13.2849C5.12264 13.2568 5.06191 13.1815 5.08063 13.1166C5.09993 13.0519 5.19257 13.0215 5.28617 13.0507C5.37881 13.0787 5.43966 13.1534 5.42036 13.2187M6.1089 13.2951C6.11121 13.3628 6.03241 13.4189 5.93488 13.4201C5.83678 13.4222 5.75746 13.3675 5.75643 13.3009C5.75643 13.2326 5.83343 13.177 5.93147 13.1754C6.029 13.1735 6.1089 13.2279 6.1089 13.2951ZM6.78527 13.2692C6.79698 13.3352 6.72918 13.403 6.63236 13.421C6.53715 13.4384 6.44901 13.3976 6.43686 13.3322C6.42502 13.2645 6.49411 13.1968 6.58913 13.1792C6.68614 13.1624 6.77292 13.2021 6.78527 13.2692Z\"\n fill=\"white\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const ShareIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 17 16\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.5 1.5C10.3033 1.5 9.33329 2.47005 9.33329 3.66667C9.33329 3.79727 9.34485 3.92518 9.36699 4.04942L6.21323 6.25705C6.1972 6.26827 6.18204 6.28026 6.16775 6.29293C5.79991 6.00498 5.33665 5.83333 4.83329 5.83333C3.63668 5.83333 2.66663 6.80338 2.66663 8C2.66663 9.19662 3.63668 10.1667 4.83329 10.1667C5.33665 10.1667 5.79991 9.99502 6.16775 9.70707C6.18204 9.71974 6.1972 9.73173 6.21323 9.74295L9.36699 11.9506C9.34485 12.0748 9.33329 12.2027 9.33329 12.3333C9.33329 13.53 10.3033 14.5 11.5 14.5C12.6966 14.5 13.6666 13.53 13.6666 12.3333C13.6666 11.1367 12.6966 10.1667 11.5 10.1667C10.7981 10.1667 10.1742 10.5004 9.77824 11.0178L6.792 8.92743C6.92535 8.64628 6.99996 8.33185 6.99996 8C6.99996 7.66815 6.92535 7.35372 6.792 7.07257L9.77824 4.9822C10.1742 5.49961 10.7981 5.83333 11.5 5.83333C12.6966 5.83333 13.6666 4.86328 13.6666 3.66667C13.6666 2.47005 12.6966 1.5 11.5 1.5ZM10.3333 3.66667C10.3333 3.02233 10.8556 2.5 11.5 2.5C12.1443 2.5 12.6666 3.02233 12.6666 3.66667C12.6666 4.311 12.1443 4.83333 11.5 4.83333C10.8556 4.83333 10.3333 4.311 10.3333 3.66667ZM4.83329 6.83333C4.18896 6.83333 3.66663 7.35567 3.66663 8C3.66663 8.64433 4.18896 9.16667 4.83329 9.16667C5.47762 9.16667 5.99996 8.64433 5.99996 8C5.99996 7.35567 5.47762 6.83333 4.83329 6.83333ZM11.5 11.1667C10.8556 11.1667 10.3333 11.689 10.3333 12.3333C10.3333 12.9777 10.8556 13.5 11.5 13.5C12.1443 13.5 12.6666 12.9777 12.6666 12.3333C12.6666 11.689 12.1443 11.1667 11.5 11.1667Z\"\n fill=\"currentColor\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const StorageAppIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 38 29\" fill=\"none\">\n <path\n d=\"M6.25415 13.3371V13.2515H7.25415C7.31809 13.2515 7.38176 13.2524 7.44516 13.2543C7.66366 11.6446 8.14354 9.64623 9.19625 7.91521C10.5234 5.73296 12.756 4 16.3233 4C18.7076 4 20.4981 4.81149 21.7972 6.07693C23.0714 7.31823 23.8108 8.93436 24.2437 10.4665C24.4895 11.3363 24.6426 12.2007 24.7362 12.9909C25.8141 11.9297 27.4506 11.0385 29.8495 11.0385C31.2681 11.0385 32.4415 11.3528 33.4017 11.8416L33.4031 11.8423C35.655 12.9932 37 15.3454 37 17.8312V18.6029C37 23.4701 33.0499 27.4163 28.1808 27.4163H6.86335C3.62577 27.4163 1 24.7935 1 21.5565V19.6226C1 16.5122 3.24401 13.8341 6.25415 13.3371Z\"\n stroke=\"#5865F2\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n <path\n d=\"M31.9946 14.8376C31.9946 14.8376 24.3322 15.4871 24.3322 0C24.3322 0 24.4134 14.8696 17 14.8696C17 14.8696 24.5 15.8438 24.5 24C24.5 24 24.5 14.8376 32 14.8376H31.9946Z\"\n fill=\"white\"\n stroke=\"#5865F2\"\n strokeWidth=\"1.5\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const UploadFileIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 12 12\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.125 1.41711C5.8948 1.37799 5.58099 1.37503 5.0149 1.37503C4.05656 1.37503 3.37537 1.37581 2.85893 1.44493C2.35298 1.51265 2.06226 1.63966 1.85095 1.85098C1.63935 2.06258 1.51251 2.3524 1.44488 2.85545C1.3758 3.36928 1.375 4.04661 1.375 5.00002V7.00002C1.375 7.95343 1.3758 8.63077 1.44488 9.1446C1.51251 9.64764 1.63935 9.93747 1.85095 10.1491C2.06256 10.3607 2.35238 10.4875 2.85542 10.5551C3.36926 10.6242 4.04659 10.625 5 10.625H7C7.95341 10.625 8.63074 10.6242 9.14458 10.5551C9.64762 10.4875 9.93744 10.3607 10.149 10.1491C10.3607 9.93747 10.4875 9.64764 10.5551 9.1446C10.6242 8.63077 10.625 7.95343 10.625 7.00002V6.78147C10.625 6.01347 10.6196 5.64939 10.5381 5.37502H8.97316C8.40674 5.37504 7.94387 5.37505 7.57844 5.32592C7.19647 5.27456 6.8653 5.16342 6.60095 4.89907C6.33661 4.63473 6.22546 4.30356 6.17411 3.92158C6.12498 3.55615 6.12499 3.09329 6.125 2.52687V1.41711ZM6.875 1.80475V2.50003C6.875 3.09988 6.8758 3.51205 6.91742 3.82165C6.95759 4.12046 7.02951 4.26697 7.13128 4.36874C7.23305 4.47051 7.37957 4.54243 7.67838 4.5826C7.98798 4.62423 8.40014 4.62502 9 4.62502H10.0097C9.86152 4.48125 9.67161 4.30898 9.425 4.08703L7.44561 2.30558C7.20292 2.08716 7.02229 1.92594 6.875 1.80475ZM5.08773 0.625012C5.78003 0.624827 6.2273 0.624708 6.63896 0.782677C7.05062 0.940644 7.38158 1.23867 7.89364 1.69978C7.91132 1.71569 7.92921 1.73181 7.94733 1.74811L9.92672 3.52956C9.94779 3.54853 9.96861 3.56725 9.98917 3.58575C10.581 4.11807 10.9637 4.46229 11.1696 4.92451C11.3754 5.38672 11.3753 5.90146 11.375 6.69746C11.375 6.72512 11.375 6.75312 11.375 6.78147V7.02823C11.375 7.94711 11.375 8.67493 11.2984 9.24454C11.2196 9.83075 11.0536 10.3052 10.6794 10.6794C10.3052 11.0536 9.83072 11.2196 9.24451 11.2985C8.6749 11.375 7.94709 11.375 7.02821 11.375H4.9718C4.05291 11.375 3.3251 11.375 2.75549 11.2985C2.16928 11.2196 1.6948 11.0536 1.32062 10.6794C0.94644 10.3052 0.780382 9.83075 0.701568 9.24454C0.624986 8.67493 0.624992 7.94711 0.625 7.02823V4.97182C0.624992 4.05294 0.624986 3.32512 0.701568 2.75551C0.780382 2.1693 0.94644 1.69483 1.32062 1.32065C1.6951 0.946173 2.17116 0.780296 2.75944 0.701563C3.33141 0.625011 4.06285 0.625017 4.98676 0.625025L5.0149 0.625025C5.03947 0.625025 5.06375 0.625019 5.08773 0.625012Z\"\n fill=\"currentColor\"\n stroke=\"#1D1B20\"\n strokeWidth=\"0.5\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const UploadFolderIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 12 12\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.42964 0.625004C3.44452 0.625006 3.4596 0.625008 3.47488 0.625008L3.49338 0.625007C3.66909 0.624995 3.78216 0.624988 3.89271 0.635325C4.36835 0.679803 4.81952 0.866685 5.1873 1.17156C5.27278 1.24242 5.35273 1.32238 5.47698 1.44665L5.76517 1.73484C6.18803 2.1577 6.3506 2.31555 6.53839 2.42002C6.64739 2.48067 6.76302 2.52857 6.88298 2.56276C7.08964 2.62167 7.31621 2.62501 7.91422 2.62501L8.12651 2.62501C8.76298 2.625 9.27607 2.62499 9.68201 2.67603C10.1027 2.72892 10.4602 2.84179 10.7539 3.10592C10.803 3.15016 10.8499 3.19697 10.8941 3.24615C11.1582 3.53983 11.2711 3.89729 11.324 4.318C11.375 4.72395 11.375 5.23704 11.375 5.8735V7.02821C11.375 7.94709 11.375 8.67491 11.2984 9.24452C11.2196 9.83073 11.0536 10.3052 10.6794 10.6794C10.3052 11.0536 9.83073 11.2196 9.24452 11.2984C8.67491 11.375 7.94709 11.375 7.02821 11.375H4.9718C4.05292 11.375 3.3251 11.375 2.7555 11.2984C2.16929 11.2196 1.69481 11.0536 1.32063 10.6794C0.946448 10.3052 0.78039 9.83073 0.701576 9.24452C0.624994 8.67491 0.625 7.9471 0.625008 7.02822L0.625008 3.47488C0.625008 3.4596 0.625006 3.44452 0.625004 3.42964C0.624948 3.03169 0.624912 2.77843 0.666185 2.55967C0.847451 1.59894 1.59894 0.847451 2.55967 0.666185C2.77843 0.624912 3.03169 0.624948 3.42964 0.625004ZM3.47488 1.37501C3.01656 1.37501 2.83936 1.37665 2.69873 1.40318C2.04138 1.52721 1.52721 2.04138 1.40318 2.69873C1.37665 2.83936 1.37501 3.01656 1.37501 3.47488V7.00001C1.37501 7.95342 1.3758 8.63075 1.44489 9.14458C1.51252 9.64763 1.63935 9.93745 1.85096 10.1491C2.06256 10.3607 2.35239 10.4875 2.85543 10.5551C3.36926 10.6242 4.0466 10.625 5.00001 10.625H7.00001C7.95342 10.625 8.63075 10.6242 9.14458 10.5551C9.64763 10.4875 9.93745 10.3607 10.1491 10.1491C10.3607 9.93745 10.4875 9.64763 10.5551 9.14458C10.6242 8.63075 10.625 7.95342 10.625 7.00001V5.89896C10.625 5.23103 10.6243 4.76525 10.5798 4.41156C10.5366 4.06724 10.4571 3.88178 10.3365 3.74769C10.3099 3.71819 10.2818 3.6901 10.2523 3.66356C10.1182 3.54296 9.93278 3.46346 9.58846 3.42017C9.23477 3.3757 8.76898 3.37501 8.10106 3.37501H7.91422C7.89562 3.37501 7.87724 3.37501 7.85909 3.37502C7.33511 3.37512 6.9972 3.37519 6.67739 3.28403C6.50206 3.23405 6.33306 3.16406 6.17375 3.07542C5.88315 2.91374 5.64426 2.67475 5.27382 2.30416C5.26099 2.29133 5.248 2.27833 5.23484 2.26517L4.95972 1.99005C4.81808 1.84841 4.76389 1.79475 4.70865 1.74897C4.45702 1.54037 4.14832 1.4125 3.82288 1.38207C3.75145 1.37539 3.67519 1.37501 3.47488 1.37501ZM6.12501 5.00001C6.12501 4.7929 6.2929 4.62501 6.50001 4.62501H9.00001C9.20712 4.62501 9.37501 4.7929 9.37501 5.00001C9.37501 5.20711 9.20712 5.37501 9.00001 5.37501H6.50001C6.2929 5.37501 6.12501 5.20711 6.12501 5.00001Z\"\n fill=\"currentColor\"\n stroke=\"#1D1B20\"\n strokeWidth=\"0.5\"\n />\n </SvgIcon>\n));\n","import { Box, styled } from '@mui/material';\n\nimport 'highlight.js/styles/github.css';\nimport 'github-markdown-css/github-markdown-light.css';\n\nimport MD from 'react-markdown';\nimport highlight from 'rehype-highlight';\nimport rehypeRaw from 'rehype-raw';\n\nexport type MarkdownProps = {\n children?: string;\n content?: string;\n};\n\nconst Content = styled(Box)(({ theme }) => ({\n backgroundColor: 'transparent',\n\n ...theme.typography.body1,\n color: theme.palette.text.primary,\n\n ['& a']: {\n color: theme.palette.primary.main,\n },\n\n ['& pre']: {\n padding: theme.spacing(2),\n borderRadius: theme.shape.borderRadius,\n backgroundColor: theme.palette.background.paper,\n },\n\n ['& code']: {\n borderRadius: 2,\n backgroundColor: theme.palette.background.paper,\n },\n}));\n\nexport const Markdown = ({ content, children }: MarkdownProps) => (\n <Content className=\"markdown-body\">\n <MD rehypePlugins={[highlight, rehypeRaw]}>{content || children}</MD>\n </Content>\n);\n","import { createContext, useContext, useState, ReactNode, useCallback, useEffect } from 'react';\n\ninterface OnboardingContextType {\n isOnboardingActive: boolean;\n startOnboarding: () => void;\n stopOnboarding: () => void;\n restartOnboarding: () => void;\n}\n\nconst OnboardingContext = createContext<OnboardingContextType | undefined>(undefined);\n\nexport const useOnboarding = () => {\n const context = useContext(OnboardingContext);\n if (!context) {\n throw new Error('useOnboarding should be used inside OnboardingProvider');\n }\n return context;\n};\n\nexport const OnboardingProvider = ({ children }: { children: ReactNode }) => {\n const [isOnboardingActive, setIsOnboardingActive] = useState(() => {\n const savedState = localStorage.getItem('isOnboardingActive');\n return savedState !== null ? JSON.parse(savedState) : true;\n });\n\n useEffect(() => {\n localStorage.setItem('isOnboardingActive', JSON.stringify(isOnboardingActive));\n }, [isOnboardingActive]);\n\n const startOnboarding = useCallback(() => setIsOnboardingActive(true), []);\n const stopOnboarding = useCallback(() => {\n setIsOnboardingActive(false);\n }, []);\n\n const restartOnboarding = useCallback(() => {\n setIsOnboardingActive(false);\n\n setTimeout(() => setIsOnboardingActive(true), 0);\n }, []);\n\n return (\n <OnboardingContext.Provider\n value={{\n isOnboardingActive,\n startOnboarding,\n stopOnboarding,\n restartOnboarding,\n }}\n >\n {children}\n </OnboardingContext.Provider>\n );\n};\n","import { AriaAttributes } from 'react';\n\nexport type TruncateProps = AriaAttributes & {\n text: string;\n maxLength?: number;\n endingLength?: number;\n variant?: 'text' | 'email' | 'hex';\n};\n\nconst getDefaultEndingLength = ({ text, variant, maxLength = text.length }: TruncateProps) => {\n if (variant === 'hex') {\n return 4;\n }\n\n if (variant === 'email') {\n const [, domain] = text.split('@');\n\n return domain.length + 1;\n }\n\n return Math.round(maxLength / 2);\n};\n\nexport const Truncate = ({\n text,\n variant = 'text',\n maxLength = text.length,\n endingLength = getDefaultEndingLength({ text, variant, maxLength }),\n ...props\n}: TruncateProps) => {\n let truncatedText = text;\n\n if (maxLength < text.length) {\n const ending = text.slice(-endingLength);\n const truncated = text.slice(0, maxLength - endingLength);\n\n truncatedText = [truncated, ending].filter(Boolean).join('...');\n }\n\n return (\n <span {...props} data-full={text}>\n {truncatedText}\n </span>\n );\n};\n","import size from 'byte-size';\n\nexport type BytesSizeProps = {\n bytes: number;\n};\n\nexport const BytesSize = ({ bytes }: BytesSizeProps) => {\n return <>{size(bytes).toString()}</>;\n};\n","import { forwardRef, Ref } from 'react';\nimport QR, { QRCodeProps as QRProps } from 'react-qr-code';\n\nexport type QRCodeProps = Omit<QRProps, 'ref'>;\n\nexport const QRCode = forwardRef(({ size = 168, ...props }: QRCodeProps, ref: Ref<SVGElement>) => (\n <QR ref={ref as Ref<any>} size={size} {...props} />\n));\n\nQRCode.displayName = 'QRCode';\n","import { ReactNode } from 'react';\nimport { Box, Stack, Typography, styled, useTheme } from '@mui/material';\nimport { LineChart } from '@mui/x-charts';\nimport size from 'byte-size';\nimport { format } from 'date-fns';\n\ntype ChartWidgetHistoryRecord = {\n date: Date;\n value: number;\n};\n\nexport type ChartWidgetProps = {\n title: string;\n value?: ReactNode;\n history?: ChartWidgetHistoryRecord[];\n formatValue?: (value: number) => string;\n};\n\nconst Chart = styled(Box)(() => ({\n height: 200,\n}));\n\nexport const ChartWidget = ({\n title,\n value,\n history,\n formatValue = (value) => size(value || 0).toString(),\n}: ChartWidgetProps) => {\n const theme = useTheme();\n\n return (\n <Stack spacing={1}>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {title}\n </Typography>\n <Typography fontWeight=\"bold\">{value}</Typography>\n\n <Chart>\n <LineChart\n dataset={history || []}\n axisHighlight={{ x: 'none', y: 'none' }}\n grid={{ horizontal: true, vertical: false }}\n margin={{ top: 10, right: 20, bottom: 40, left: 40 }}\n colors={[theme.palette.primary.main]}\n slots={{\n noDataOverlay: () => null,\n }}\n yAxis={[\n {\n dataKey: 'value',\n disableLine: true,\n disableTicks: true,\n min: history?.length ? undefined : 0,\n max: history?.length ? undefined : 100,\n tickNumber: history?.length ? undefined : 5,\n valueFormatter: (value) => formatValue(value || 0),\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]}\n xAxis={[\n {\n dataKey: 'date',\n min: history && Math.min(...history.map((record) => +record.date)),\n max: history && Math.max(...history.map((record) => +record.date)),\n disableLine: true,\n disableTicks: true,\n valueFormatter: (date) => format(date, 'do MMM'),\n tickPlacement: 'end',\n tickNumber: 1,\n\n tickLabelStyle: {\n fontSize: 10,\n transform: 'translate(-16px, 16px) rotate(-30deg)',\n },\n },\n ]}\n series={[\n {\n curve: 'linear',\n dataKey: 'value',\n showMark: false,\n valueFormatter: (value) => formatValue(value || 0),\n },\n ]}\n />\n </Chart>\n </Stack>\n );\n};\n","import { format, startOfDay, subHours, subWeeks, subMonths } from 'date-fns';\nimport { LineChart } from '@mui/x-charts';\nimport { useDrawingArea, useYScale } from '@mui/x-charts/hooks';\nimport { Box, Card, CardHeader, CardMedia, Divider, Stack, styled, Typography, useTheme } from '@mui/material';\n\nimport { PeriodSelect, MetricsPeriod } from './PeriodSelect';\nimport { useMemo, useState } from 'react';\nimport { BytesSize } from '../../utilities/BytesSize';\n\ntype MetricsHistoryRecord = {\n storedBytes: number;\n transferredBytes: number;\n puts: number;\n gets: number;\n recordTime: Date;\n};\n\nexport type MetricsChartProps = {\n history?: MetricsHistoryRecord[];\n};\n\nconst mapPeriodToFromDate = (period: MetricsPeriod = 'month') => {\n const date = new Date();\n\n if (period === 'hour') {\n return subHours(date, 1);\n }\n\n if (period === 'day') {\n return subHours(date, 24);\n }\n\n if (period === 'week') {\n return startOfDay(subWeeks(date, 1));\n }\n\n return startOfDay(subMonths(date, 1));\n};\n\nconst Chart = styled(LineChart)({\n height: 320,\n marginBottom: 16,\n});\n\nconst NoDataRect = styled('rect')({\n fill: '#F5F6FF',\n});\n\nconst LoadingText = styled('text')(({ theme }) => ({\n stroke: 'none',\n fill: theme.palette.text.primary,\n shapeRendering: 'crispEdges',\n textAnchor: 'middle',\n dominantBaseline: 'middle',\n}));\n\n/**\n * TODO: Refactor this component to use shared graphs configuration\n */\nexport const MetricsChart = ({ history = [] }: MetricsChartProps) => {\n const theme = useTheme();\n const [period, setPeriod] = useState<MetricsPeriod>('week');\n const periodFrom = useMemo(() => mapPeriodToFromDate(period), [period]);\n const periodHistory = useMemo(\n () => history.filter((record) => record.recordTime > periodFrom),\n [history, periodFrom],\n );\n\n const total = useMemo(\n () =>\n periodHistory.reduce(\n (acc, record) => ({\n gets: acc.gets + record.gets,\n puts: acc.puts + record.puts,\n storedBytes: acc.storedBytes + record.storedBytes,\n transferredBytes: acc.transferredBytes + record.transferredBytes,\n }),\n { gets: 0, puts: 0, storedBytes: 0, transferredBytes: 0 } as Omit<MetricsHistoryRecord, 'recordTime'>,\n ),\n [periodHistory],\n );\n\n const NoDataOverlay = () => {\n const yScale = useYScale();\n const { left, width, height } = useDrawingArea();\n\n // Conditional handling if bandwidth is not available\n // const bandWidth = xScale.bandwidth ? xScale.bandwidth() : 0;\n\n const [, top] = yScale.range();\n\n const padding = { top: 8, bottom: 8, left: 20, right: 20 };\n const text = 'No data for selected period';\n\n const textWidth = 211;\n const textHeight = 24;\n\n const backgroundWidth = textWidth + padding.left + padding.right;\n const backgroundHeight = textHeight + padding.top + padding.bottom;\n\n const rectX = left + (width - backgroundWidth) / 2;\n const rectY = top + (height - backgroundHeight) / 2;\n return (\n <g>\n <NoDataRect x={rectX} y={rectY} width={backgroundWidth} height={backgroundHeight} />\n <LoadingText style={{ ...theme.typography.subtitle1 }} x={left + width / 2} y={top + height / 2}>\n {text}\n </LoadingText>\n </g>\n );\n };\n\n return (\n <Card>\n <CardHeader title=\"GET / PUT Requests\" action={<PeriodSelect value={period} onChange={setPeriod} />} />\n <CardMedia>\n <Chart\n skipAnimation\n dataset={periodHistory || []}\n axisHighlight={{ x: 'none', y: 'none' }}\n grid={{ horizontal: true, vertical: false }}\n margin={{ top: 10, right: 20, bottom: 40, left: 40 }}\n colors={[theme.palette.primary.main, theme.palette.success.main]}\n slots={{\n noDataOverlay: NoDataOverlay,\n }}\n slotProps={{\n noDataOverlay: {\n style: {\n ...theme.typography.h4,\n },\n },\n }}\n yAxis={\n periodHistory.length\n ? [\n {\n min: periodHistory.length ? undefined : 0,\n max: periodHistory.length ? undefined : 100,\n tickNumber: periodHistory.length ? undefined : 5,\n disableLine: true,\n disableTicks: true,\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]\n : []\n }\n xAxis={[\n {\n dataKey: 'recordTime',\n min: periodFrom,\n max: new Date(),\n disableLine: false,\n disableTicks: false,\n valueFormatter: (date) => format(date, 'do MMM'),\n tickMinStep: 3600 * 1000 * 24, // min step: 24h\n\n tickLabelStyle: {\n fontSize: 10,\n transform: 'translate(-16px, 16px) rotate(-30deg)',\n },\n },\n ]}\n series={[\n {\n curve: 'linear',\n dataKey: 'gets',\n showMark: false,\n },\n\n {\n curve: 'linear',\n dataKey: 'puts',\n showMark: false,\n },\n ]}\n />\n {periodHistory.length > 0 && (\n <Stack direction=\"row\" spacing={2} marginY={3} justifyContent=\"center\">\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <Box sx={{ width: 14, height: 14, borderRadius: '4px', backgroundColor: theme.palette.primary.main }} />\n <Typography variant=\"body2\">Get</Typography>\n </Stack>\n\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <Box sx={{ width: 14, height: 14, borderRadius: '4px', backgroundColor: theme.palette.success.main }} />\n <Typography variant=\"body2\">Put</Typography>\n </Stack>\n </Stack>\n )}\n </CardMedia>\n <CardMedia>\n <Divider flexItem />\n <Stack direction=\"row\" spacing={2} padding={2}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Typography variant=\"body2\" color=\"secondary\">\n GET Requests per account\n </Typography>\n <Typography variant=\"h3\">{total.gets}</Typography>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Typography variant=\"body2\" color=\"secondary\">\n PUT Requests per account\n </Typography>\n <Typography variant=\"h3\">{total.puts}</Typography>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Typography variant=\"body2\" color=\"secondary\">\n Total Consumed per account\n </Typography>\n <Typography variant=\"h3\">\n <BytesSize bytes={total.transferredBytes} />\n </Typography>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Typography variant=\"body2\" color=\"secondary\">\n Total Stored per account\n </Typography>\n <Typography variant=\"h3\">\n <BytesSize bytes={total.storedBytes} />\n </Typography>\n </Stack>\n </Stack>\n </CardMedia>\n </Card>\n );\n};\n","import { MenuItem, TextField } from '@mui/material';\n\nexport type MetricsPeriod = 'hour' | 'day' | 'week' | 'month';\n\nexport type PeriodSelectProps = {\n value?: MetricsPeriod;\n onChange?: (value: MetricsPeriod) => void;\n};\n\ntype Option = {\n value: MetricsPeriod;\n label: string;\n};\n\nconst options: Option[] = [\n /**\n * TODO: Enable the options below when the backend supports them\n */\n // { value: 'hour', label: 'Last hour' },\n // { value: 'day', label: '24 hours' },\n { value: 'week', label: '1 week' },\n { value: 'month', label: '1 month' },\n];\n\nexport const PeriodSelect = ({ value, onChange }: PeriodSelectProps) => (\n <TextField\n select\n size=\"small\"\n value={value}\n defaultValue={options[0].value}\n onChange={(e) => onChange?.(e.target.value as MetricsPeriod)}\n >\n {options.map(({ value, label }) => (\n <MenuItem key={value} value={value}>\n {label}\n </MenuItem>\n ))}\n </TextField>\n);\n","import React, { useCallback } from 'react';\nimport ReactFlow, {\n Background,\n Controls,\n MiniMap,\n ReactFlowProvider,\n BackgroundVariant,\n ConnectionLineType,\n Node,\n Edge,\n OnNodesChange,\n OnEdgesChange,\n NodeTypes,\n EdgeTypes,\n ReactFlowInstance,\n ReactFlowProps,\n} from 'reactflow';\n// Note: reactflow CSS should be imported in Storybook preview.tsx\n// This ensures styles are available globally\nimport { Box, BoxProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n\nexport interface FlowEditorProps extends Omit<ReactFlowProps, 'nodes' | 'edges'> {\n /**\n * Nodes to display in the flow\n */\n nodes: Node[];\n /**\n * Edges to display in the flow\n */\n edges: Edge[];\n /**\n * Callback when nodes change\n */\n onNodesChange?: OnNodesChange;\n /**\n * Callback when edges change\n */\n onEdgesChange?: OnEdgesChange;\n /**\n * Custom node types\n */\n nodeTypes?: NodeTypes;\n /**\n * Custom edge types\n */\n edgeTypes?: EdgeTypes;\n /**\n * Height of the flow editor\n * @default '600px'\n */\n height?: string | number;\n /**\n * Show background grid\n * @default true\n */\n showBackground?: boolean;\n /**\n * Background variant\n * @default 'dots'\n */\n backgroundVariant?: BackgroundVariant;\n /**\n * Show controls\n * @default true\n */\n showControls?: boolean;\n /**\n * Show minimap\n * @default false\n */\n showMinimap?: boolean;\n /**\n * Container props\n */\n containerProps?: BoxProps;\n /**\n * Callback when flow instance is initialized\n */\n onInit?: (instance: ReactFlowInstance) => void;\n}\n\n/**\n * FlowEditor component - wrapper around ReactFlow with theme integration\n * \n * @example\n * ```tsx\n * <FlowEditor\n * nodes={nodes}\n * edges={edges}\n * onNodesChange={onNodesChange}\n * onEdgesChange={onEdgesChange}\n * height=\"500px\"\n * showBackground\n * showControls\n * />\n * ```\n */\nexport const FlowEditor: React.FC<FlowEditorProps> = ({\n nodes,\n edges,\n onNodesChange,\n onEdgesChange,\n nodeTypes,\n edgeTypes,\n height = '600px',\n showBackground = true,\n backgroundVariant = BackgroundVariant.Dots,\n showControls = true,\n showMinimap = false,\n containerProps,\n onInit,\n ...reactFlowProps\n}) => {\n const theme = useTheme();\n\n const handleInit = useCallback(\n (instance: ReactFlowInstance) => {\n if (onInit) {\n onInit(instance);\n }\n },\n [onInit]\n );\n\n return (\n <ReactFlowProvider>\n <Box\n sx={{\n width: '100%',\n height: typeof height === 'number' ? `${height}px` : height,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: theme.shape.borderRadius,\n overflow: 'hidden',\n backgroundColor: theme.palette.background.paper,\n ...containerProps?.sx,\n }}\n {...containerProps}\n >\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onInit={handleInit}\n connectionLineType={ConnectionLineType.SmoothStep}\n defaultEdgeOptions={{\n style: {\n stroke: theme.palette.primary.main,\n strokeWidth: 2,\n },\n }}\n style={{\n backgroundColor: 'transparent',\n }}\n {...reactFlowProps}\n >\n {showBackground && (\n <Background\n variant={backgroundVariant}\n gap={16}\n size={1}\n color={theme.palette.divider}\n />\n )}\n {showControls && <Controls />}\n {showMinimap && (\n <MiniMap\n nodeColor={(node) => {\n const color = node.data?.color || theme.palette.primary.main;\n return typeof color === 'string' ? color : theme.palette.primary.main;\n }}\n nodeStrokeWidth={3}\n nodeBorderRadius={8}\n maskColor={`${theme.palette.background.paper}80`}\n style={{\n backgroundColor: theme.palette.background.paper,\n }}\n />\n )}\n </ReactFlow>\n </Box>\n </ReactFlowProvider>\n );\n};\n\nexport default FlowEditor;\n\n// Re-export commonly used types and components from reactflow\nexport type {\n Node,\n Edge,\n NodeTypes,\n EdgeTypes,\n ReactFlowInstance,\n OnNodesChange,\n OnEdgesChange,\n} from 'reactflow';\nexport { Background, Controls, MiniMap, Panel, BackgroundVariant, ConnectionLineType } from 'reactflow';\n\n","import React, { useCallback, useEffect, useState, useRef } from 'react';\nimport Editor, { Monaco } from '@monaco-editor/react';\nimport { Box, BoxProps, IconButton, Tooltip } from '@mui/material';\nimport FullscreenIcon from '@mui/icons-material/Fullscreen';\nimport FullscreenExitIcon from '@mui/icons-material/FullscreenExit';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport type { editor } from 'monaco-editor';\n\nexport type CodeEditorLanguage =\n | 'typescript'\n | 'javascript'\n | 'json'\n | 'html'\n | 'css'\n | 'python'\n | 'yaml'\n | 'markdown'\n | 'sql'\n | 'xml'\n | 'plaintext';\n\nexport interface CodeEditorProps {\n /**\n * Current value of the editor\n */\n value: string;\n /**\n * Callback when value changes\n */\n onChange: (value: string) => void;\n /**\n * Programming language\n * @default 'typescript'\n */\n language?: CodeEditorLanguage;\n /**\n * Height of the editor\n * @default '400px'\n */\n height?: string | number;\n /**\n * Minimum height\n */\n minHeight?: string | number;\n /**\n * Theme ('light' | 'dark' | 'vs-dark' | 'hc-black')\n * If not provided, will use theme from design system\n */\n theme?: string;\n /**\n * Show line numbers\n * @default 'on'\n */\n lineNumbers?: 'on' | 'off' | 'relative' | 'interval';\n /**\n * Editor options (monaco editor options)\n */\n options?: editor.IStandaloneEditorConstructionOptions;\n /**\n * Callback when editor is mounted\n */\n onMount?: (editor: editor.IStandaloneCodeEditor, monaco: Monaco) => void;\n /**\n * Callback for validation errors\n */\n onValidate?: (markers: editor.IMarker[]) => void;\n /**\n * Ref to editor instance\n */\n editorRef?: React.MutableRefObject<editor.IStandaloneCodeEditor | null>;\n /**\n * Ref to Monaco instance\n */\n monacoRef?: React.MutableRefObject<Monaco | null>;\n /**\n * Callback when fullscreen state changes\n */\n onFullscreenChange?: (isFullscreen: boolean) => void;\n /**\n * Props for the container Box.\n */\n containerProps?: BoxProps;\n /**\n * Additional TypeScript type definitions to add to the editor context.\n * Can be a string with type definitions or an array of type definition strings.\n * Each string will be added as a separate extra lib to Monaco.\n *\n * @example\n * ```tsx\n * <CodeEditor\n * value={code}\n * onChange={setCode}\n * typeDefinitions={`\n * declare interface MyCustomType {\n * id: string;\n * name: string;\n * }\n * `}\n * />\n * ```\n */\n typeDefinitions?: string | string[];\n}\n\n// Monaco Editor will use the local version from node_modules automatically\n// No need to configure loader.config() - @monaco-editor/react handles it\n\n// Configure TypeScript settings when Monaco is loaded\nconst configureTypeScript = (monaco: Monaco) => {\n // Configure TypeScript settings\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES2020,\n allowNonTsExtensions: true,\n moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\n module: monaco.languages.typescript.ModuleKind.CommonJS,\n noEmit: false,\n lib: ['es2020', 'dom'],\n noUnusedLocals: false,\n noUnusedParameters: false,\n noImplicitAny: false,\n noImplicitReturns: false,\n noFallthroughCasesInSwitch: false,\n });\n\n monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: false,\n noSyntaxValidation: false,\n noSuggestionDiagnostics: true,\n diagnosticCodesToIgnore: [\n 6133, // 'x' is declared but its value is never read\n 6196, // 'x' is declared but its value is never read (different variant)\n ],\n });\n};\n\n/**\n * CodeEditor component - wrapper around Monaco Editor matching dynamic-indexer-client implementation\n *\n * @example\n * ```tsx\n * <CodeEditor\n * value={code}\n * onChange={setCode}\n * language=\"typescript\"\n * height=\"500px\"\n * onValidate={(markers) => console.log('Errors:', markers)}\n * />\n * ```\n */\nexport const CodeEditor: React.FC<CodeEditorProps> = ({\n value,\n onChange,\n language = 'typescript',\n height = '400px',\n minHeight,\n theme: themeProp,\n lineNumbers = 'on',\n options,\n onMount,\n onValidate,\n editorRef,\n monacoRef,\n onFullscreenChange,\n containerProps,\n typeDefinitions,\n}) => {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [validationErrors, setValidationErrors] = useState<editor.IMarker[]>([]);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [tsCode, setTsCode] = useState<string>(value);\n const [actualHeight, setActualHeight] = useState<string>(\n typeof height === 'number' ? `${height}px` : height\n );\n const [showProblems, setShowProblems] = useState(false);\n const [hasUserToggledProblems, setHasUserToggledProblems] = useState(false);\n\n // Auto-open the Problems panel only until the user manually toggles it.\n useEffect(() => {\n if (hasUserToggledProblems) return; // respect user's choice after first toggle\n if (validationErrors.length > 0) {\n setShowProblems(true);\n } else {\n setShowProblems(false);\n }\n }, [validationErrors, hasUserToggledProblems]);\n\n const internalEditorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n const internalMonacoRef = useRef<Monaco | null>(null);\n\n // Use provided refs or internal refs\n const finalEditorRef = editorRef || internalEditorRef;\n const finalMonacoRef = monacoRef || internalMonacoRef;\n\n useEffect(() => {\n if (isFullscreen) {\n // Account for header height (64px) + padding (16px) = 80px\n setActualHeight('calc(100vh - 80px)');\n } else {\n setActualHeight(typeof height === 'number' ? `${height}px` : height);\n }\n }, [height, isFullscreen]);\n\n // Toggle fullscreen\n const toggleFullscreen = useCallback(() => {\n const newFullscreenState = !isFullscreen;\n setIsFullscreen(newFullscreenState);\n if (onFullscreenChange) {\n onFullscreenChange(newFullscreenState);\n }\n }, [isFullscreen, onFullscreenChange]);\n\n // Jump to a marker position in the editor\n const gotoMarker = useCallback(\n (marker: editor.IMarker) => {\n const ed = finalEditorRef?.current;\n if (!ed) return;\n const position = { lineNumber: marker.startLineNumber, column: marker.startColumn || 1 };\n try {\n ed.revealPositionInCenter(position);\n ed.setPosition(position);\n ed.focus();\n } catch (e) {\n console.error('CodeEditor: Failed to navigate to marker', e);\n }\n },\n [finalEditorRef]\n );\n\n // Handle ESC key for fullscreen exit\n useEffect(() => {\n if (!isFullscreen) return;\n\n function escapeHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n\n setIsFullscreen(false);\n if (onFullscreenChange) {\n onFullscreenChange(false);\n }\n }\n }\n\n window.addEventListener('keydown', escapeHandler, { capture: true });\n\n return () => {\n window.removeEventListener('keydown', escapeHandler, { capture: true });\n };\n }, [isFullscreen, onFullscreenChange]);\n\n const handleEditorDidMount = useCallback(\n (editor: editor.IStandaloneCodeEditor, monaco: Monaco) => {\n console.log('CodeEditor: onMount called', { editor: !!editor, monaco: !!monaco });\n\n try {\n // Configure TypeScript settings when Monaco is loaded\n configureTypeScript(monaco);\n } catch (e) {\n console.error('CodeEditor: Failed to configure TypeScript', e);\n }\n\n if (finalEditorRef) {\n finalEditorRef.current = editor;\n }\n if (finalMonacoRef) {\n finalMonacoRef.current = monaco;\n }\n\n setIsEditorReady(true);\n console.log('CodeEditor: Editor ready');\n\n try {\n // Add ESC key binding directly in editor\n editor.addCommand(monaco.KeyCode.Escape, () => {\n if (isFullscreen) {\n setIsFullscreen(false);\n if (onFullscreenChange) {\n onFullscreenChange(false);\n }\n return true; // Command handled\n }\n return false; // Let default behavior work when not fullscreen\n });\n\n // Add validation callback\n editor.onDidChangeModelDecorations(() => {\n const model = editor.getModel();\n if (model && onValidate) {\n const markers = monaco.editor.getModelMarkers({ resource: model.uri });\n onValidate(markers);\n setValidationErrors(markers);\n }\n });\n\n // Also check initial markers\n const model = editor.getModel();\n if (model && onValidate) {\n const markers = monaco.editor.getModelMarkers({ resource: model.uri });\n onValidate(markers);\n setValidationErrors(markers);\n }\n } catch (e) {\n console.error('CodeEditor: Error setting up editor callbacks', e);\n }\n\n // Call custom onMount if provided\n if (onMount) {\n try {\n onMount(editor, monaco);\n } catch (e) {\n console.error('CodeEditor: Error in custom onMount', e);\n }\n }\n },\n [isFullscreen, onFullscreenChange, onValidate, onMount, finalEditorRef, finalMonacoRef]\n );\n\n // Add custom type definitions when Monaco is ready and typeDefinitions change\n useEffect(() => {\n if (!isEditorReady || !finalMonacoRef?.current || !typeDefinitions) return;\n\n const monaco = finalMonacoRef.current;\n const definitions = Array.isArray(typeDefinitions) ? typeDefinitions : [typeDefinitions];\n const uris: string[] = [];\n\n try {\n // Add each type definition as a separate extra lib\n definitions.forEach((def: string, index: number) => {\n if (def && def.trim()) {\n const uri = `ts:filename/custom-types-${index}.d.ts`;\n uris.push(uri);\n monaco.languages.typescript.typescriptDefaults.addExtraLib(def, uri);\n }\n });\n } catch (error) {\n console.error('CodeEditor: Error adding type definitions:', error);\n }\n\n // Note: Monaco doesn't have a direct removeExtraLib method\n // The definitions will be replaced when the component updates with new definitions\n // This is acceptable as extra libs are additive and don't cause conflicts\n }, [isEditorReady, finalMonacoRef, typeDefinitions]);\n\n const handleCodeChange = (newValue: string | undefined) => {\n const valueStr = newValue || '';\n setTsCode(valueStr);\n onChange(valueStr);\n };\n\n // Sync external value prop with internal state\n useEffect(() => {\n if (value !== tsCode) {\n setTsCode(value);\n if (isEditorReady && finalEditorRef?.current) {\n const editor = finalEditorRef.current;\n const currentValue = editor.getValue();\n if (currentValue !== value) {\n editor.setValue(value);\n }\n }\n }\n }, [value, tsCode, isEditorReady, finalEditorRef]);\n\n const editorMinHeight = minHeight\n ? typeof minHeight === 'number'\n ? `${minHeight}px`\n : minHeight\n : '400px';\n\n const defaultOptions: editor.IStandaloneEditorConstructionOptions = {\n lineNumbers,\n minimap: { enabled: false },\n readOnly: false,\n wordWrap: 'on',\n fontSize: 14,\n fontFamily: 'Monaco, Menlo, \"Ubuntu Mono\", Consolas, \"source-code-pro\", monospace',\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeProp || 'vs',\n ...options,\n };\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: isFullscreen ? '100vh' : '100%',\n minHeight: isFullscreen ? '100vh' : editorMinHeight,\n position: isFullscreen ? 'fixed' : 'relative',\n top: isFullscreen ? 0 : 'auto',\n left: isFullscreen ? 0 : 'auto',\n right: isFullscreen ? 0 : 'auto',\n bottom: isFullscreen ? 0 : 'auto',\n zIndex: isFullscreen ? 9999 : 'auto',\n bgcolor: 'background.paper',\n pt: isFullscreen ? '80px' : 0, // Add padding top in fullscreen to account for header (64px) + spacing (16px)\n px: isFullscreen ? 2 : 0,\n pb: isFullscreen ? 2 : 0,\n overflow: isFullscreen ? 'hidden' : 'visible',\n }}\n >\n <Box\n sx={{\n flex: 1,\n border: 1,\n borderColor: validationErrors.length > 0 ? 'error.main' : 'divider',\n borderRadius: 1,\n minHeight: editorMinHeight,\n overflow: 'hidden',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n }}\n {...containerProps}\n >\n <Tooltip title={isFullscreen ? 'Exit Fullscreen' : 'Fullscreen'}>\n <IconButton\n onClick={toggleFullscreen}\n size=\"small\"\n sx={{\n position: isFullscreen ? 'fixed' : 'absolute',\n top: isFullscreen ? 72 : 8, // Position below header in fullscreen mode (header is ~64px)\n right: isFullscreen ? 16 : 8,\n zIndex: 10000, // Ensure it's above other elements\n bgcolor: 'rgba(255, 255, 255, 0.7)',\n '&:hover': {\n bgcolor: 'rgba(255, 255, 255, 0.9)',\n },\n boxShadow: 1,\n }}\n >\n {isFullscreen ? (\n <FullscreenExitIcon fontSize=\"small\" />\n ) : (\n <FullscreenIcon fontSize=\"small\" />\n )}\n </IconButton>\n </Tooltip>\n\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n minHeight: editorMinHeight,\n position: 'relative',\n height: isFullscreen ? '100%' : actualHeight,\n }}\n >\n <Editor\n height=\"100%\"\n defaultLanguage={language}\n defaultValue={value}\n value={tsCode}\n onChange={handleCodeChange}\n onMount={handleEditorDidMount}\n theme={themeProp || 'vs'}\n options={defaultOptions}\n loading={\n <Box sx={{ p: 2, textAlign: 'center' }}>\n Loading Monaco Editor...\n </Box>\n }\n beforeMount={(monaco) => {\n console.log('CodeEditor: beforeMount called', { monaco: !!monaco });\n }}\n />\n </Box>\n\n {/* Problems panel at the bottom (Monaco-style) */}\n {validationErrors.length > 0 && (\n <Box\n sx={{\n borderTop: 1,\n borderColor: 'divider',\n bgcolor: 'background.default',\n display: 'flex',\n flexDirection: 'column',\n maxHeight: showProblems ? 180 : 40,\n minHeight: 40,\n transition: 'max-height 0.2s ease',\n }}\n >\n {/* Panel header */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 1,\n py: 0.5,\n gap: 1,\n borderBottom: showProblems ? '1px solid' : 'none',\n borderColor: 'divider',\n fontSize: '0.875rem',\n color: 'text.secondary',\n }}\n >\n <ErrorOutlineIcon color=\"error\" fontSize=\"small\" />\n <Box sx={{ fontWeight: 600, color: 'text.primary' }}>Problems</Box>\n <Box sx={{ ml: 1 }}>\n {validationErrors.length} error{validationErrors.length > 1 ? 's' : ''}\n </Box>\n <Box sx={{ flex: 1 }} />\n <IconButton\n size=\"small\"\n aria-label=\"Toggle problems panel\"\n onClick={() => {\n setHasUserToggledProblems(true);\n setShowProblems((s) => !s);\n }}\n >\n {showProblems ? <ExpandMoreIcon fontSize=\"small\" /> : <ExpandLessIcon fontSize=\"small\" />}\n </IconButton>\n </Box>\n {/* Problems list */}\n {showProblems && (\n <Box sx={{ overflow: 'auto' }}>\n {validationErrors.map((error, index) => (\n <Box\n key={`${error.startLineNumber}-${error.startColumn}-${index}`}\n onClick={() => gotoMarker(error)}\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 1.5,\n py: 0.75,\n gap: 1,\n cursor: 'pointer',\n '&:hover': { bgcolor: 'action.hover' },\n borderBottom: '1px dashed',\n borderColor: 'divider',\n fontSize: '0.85rem',\n }}\n >\n <ErrorOutlineIcon color=\"error\" sx={{ fontSize: 18 }} />\n <Box sx={{ color: 'text.secondary', width: 64 }}>Line {error.startLineNumber}</Box>\n <Box sx={{ color: 'text.primary', flex: 1, minWidth: 0 }}>\n {error.message}\n </Box>\n </Box>\n ))}\n </Box>\n )}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n\nexport default CodeEditor;\n"],"mappings":"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","names":["Alert","Avatar","Chip","CircularProgress","Divider","Drawer","Link","List","ListItem","Menu","Paper","RadioGroup","Snackbar","Tooltip","Lottie","import_lottie_react","import_jsx_runtime","Lottie","theme","import_styles","import_jsx_runtime","MuiButton","import_styles","import_jsx_runtime","MuiIconButton","import_jsx_runtime","MuiLoadingButton","import_material","import_jsx_runtime","size","MuiButtonGroup","import_styles","import_jsx_runtime","MuiTextField","size","import_jsx_runtime","InputAdornment","SearchIcon","import_material","import_material","import_styles","import_jsx_runtime","MuiToggleButton","MuiToggleButtonGroup","import_styles","import_jsx_runtime","MuiSwitch","theme","import_styles","import_jsx_runtime","MuiCheckbox","FormControlLabel","import_styles","import_FormControlLabel","import_jsx_runtime","MuiRadio","FormControlLabel","import_material","import_react","import_material","import_jsx_runtime","theme","import_jsx_runtime","open","import_material","import_material","import_jsx_runtime","size","import_jsx_runtime","import_react","import_material","import_Search","import_jsx_runtime","KeyboardArrowDownIcon","PersonAddAltIcon","SettingsIcon","SearchIcon","UnarchiveIcon","ArchiveIcon","CheckIcon","AddIcon","import_react","import_material","import_KeyboardArrowDown","import_Search","import_Add","import_Check","import_jsx_runtime","KeyboardArrowDownIcon","React","SearchIcon","CheckIcon","AddIcon","import_material","import_jsx_runtime","MuiStepper","MuiStep","MuiStepLabel","MuiStepContent","MuiStepButton","import_react","import_material","import_styles","import_jsx_runtime","React","theme","import_react","import_material","import_styles","import_jsx_runtime","theme","React","ChevronRightIcon","ChevronLeftIcon","import_react","import_material","import_react","import_material","import_styles","import_jsx_runtime","StyledListItemButton","theme","size","React","import_jsx_runtime","React","import_react","import_material","import_styles","import_jsx_runtime","theme","colors","React","PowerIcon","import_react","import_material","import_styles","import_jsx_runtime","theme","React","LogoutIcon","import_styles","import_jsx_runtime","MuiBadge","import_styles","import_jsx_runtime","MuiChip","Chip","import_Chip","import_styles","import_jsx_runtime","MuiChip","size","import_react","import_IconButton","import_styles","import_jsx_runtime","Box","Typography","IconButton","ContentCopyIcon","Snackbar","Alert","import_styles","import_jsx_runtime","MuiTooltip","Tooltip","import_material","import_jsx_runtime","size","import_styles","import_jsx_runtime","MuiTab","import_material","import_styles","import_jsx_runtime","MuiMenu","Menu","MuiMenuItem","import_styles","import_jsx_runtime","MuiPagination","import_react","import_material","import_KeyboardArrowDown","import_Search","import_Add","import_styles","import_jsx_runtime","MuiLink","Link","import_jsx_runtime","options","SearchIcon","AddIcon","Link","KeyboardArrowDownIcon","import_material","import_react","import_material","import_jsx_runtime","import_jsx_runtime","size","import_Box","import_Typography","import_IconButton","import_jsx_runtime","Box","Typography","IconButton","MoreHorizIcon","Divider","import_material","import_jsx_runtime","MuiDialog","CloseIcon","import_styles","import_material","import_Close","import_jsx_runtime","StyledDrawer","MuiDrawer","theme","Drawer","CloseIcon","import_styles","import_jsx_runtime","MuiCard","MuiCardContent","MuiCardHeader","MuiCardActions","import_material","import_styles","import_jsx_runtime","List","MuiList","MuiListItem","ListItem","import_material","import_ChevronRight","import_styles","import_react","import_jsx_runtime","WorkOutlineIcon","WavesIcon","RocketLaunchOutlinedIcon","InsertLinkIcon","SmartToyOutlinedIcon","theme","capacity","ExpandMoreIcon","ChevronRightIcon","import_material","import_styles","import_jsx_runtime","StyledMenu","import_ContentCopy","import_SmartToyOutlined","import_Settings","import_jsx_runtime","AddCircleOutlineIcon","EditIcon","ContentCopyIcon","SmartToyOutlinedIcon","DescriptionIcon","SettingsIcon","import_material","import_styles","import_jsx_runtime","import_material","import_styles","import_jsx_runtime","import_styles","import_jsx_runtime","MuiAvatar","Avatar","size","import_material","import_styles","import_jsx_runtime","MuiTable","import_material","import_Link","import_Typography","import_styles","import_jsx_runtime","MuiBreadcrumbs","StyledLink","Link","Typography","import_material","import_ExpandMore","import_styles","import_jsx_runtime","MuiAccordion","ExpandMoreIcon","import_styles","import_jsx_runtime","MuiPaper","Paper","import_Divider","import_styles","import_jsx_runtime","StyledDivider","MuiDivider","Divider","import_material","import_material","import_material","import_material","import_material","import_styles","import_jsx_runtime","MuiAppBar","theme","import_material","import_jsx_runtime","MuiCollapse","import_react","import_Alert","import_material","import_Snackbar","import_styles","import_jsx_runtime","MuiAlert","Alert","MuiAlertTitle","MuiSnackbar","Snackbar","Alert","React","props","import_material","import_jsx_runtime","import_material","import_jsx_runtime","size","import_material","import_jsx_runtime","import_material","import_jsx_runtime","CircularProgress","size","MuiCircularProgress","import_react","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_material","import_jsx_runtime","theme","MD","highlight","rehypeRaw","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","size","import_react","import_jsx_runtime","size","QR","import_material","import_byte_size","import_jsx_runtime","value","size","theme","import_date_fns","import_x_charts","import_material","import_material","import_jsx_runtime","value","import_react","import_jsx_runtime","Chart","theme","import_react","import_material","import_styles","import_reactflow","import_jsx_runtime","theme","ReactFlow","import_react","import_material","import_ExpandMore","import_jsx_runtime","options","model","FullscreenExitIcon","FullscreenIcon","Editor","ErrorOutlineIcon","ExpandMoreIcon","ExpandLessIcon","import_reactflow"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/theme/index.ts","../src/animations/CheckMarkAnimation/CheckMarkAnimation.tsx","../src/animations/CheckMarkAnimation/check.json","../src/animations/LoadingAnimation/LoadingAnimation.tsx","../src/animations/LoadingAnimation/loading.json","../src/hooks/useResponsive.ts","../src/components/buttons/Button.tsx","../src/components/buttons/IconButton.tsx","../src/components/buttons/LoadingButton.tsx","../src/components/buttons/ButtonGroup.tsx","../src/components/inputs/TextField.tsx","../src/components/inputs/SearchField.tsx","../src/components/inputs/FormControl.tsx","../src/components/inputs/ToggleButton.tsx","../src/components/inputs/Switch.tsx","../src/components/inputs/Checkbox.tsx","../src/components/inputs/Radio.tsx","../src/components/navigation/Dropdown/Dropdown.tsx","../src/components/navigation/Dropdown/DropdownAnchor.tsx","../src/components/navigation/Sidebar.tsx","../src/components/navigation/SidebarItem.tsx","../src/components/navigation/ServiceSelector.tsx","../src/components/navigation/WorkspaceSelector.tsx","../src/components/navigation/Stepper.tsx","../src/components/navigation/SideNav/SideNav.tsx","../src/components/navigation/SideNav/styles.ts","../src/components/navigation/SideNav/SideNavHeader.tsx","../src/components/navigation/SideNav/NavigationList.tsx","../src/components/navigation/SideNav/NavigationItem.tsx","../src/components/navigation/SideNav/ConnectionStatus.tsx","../src/components/navigation/SideNav/AccountSection.tsx","../src/components/feedback/Badge.tsx","../src/components/feedback/Chip.tsx","../src/components/feedback/RoleBadge.tsx","../src/components/feedback/IDBlock.tsx","../src/components/feedback/Tooltip.tsx","../src/components/feedback/Progress.tsx","../src/components/navigation/Tab.tsx","../src/components/navigation/Menu.tsx","../src/components/navigation/Pagination.tsx","../src/components/navigation/Selector.tsx","../src/components/layout/Link.tsx","../src/components/layout/Logo.tsx","../src/components/icons/CereIcon.tsx","../src/components/layout/EntityHeader/EntityHeader.tsx","../src/components/layout/Dialog.tsx","../src/components/layout/Drawer.tsx","../src/components/layout/Card.tsx","../src/components/layout/List.tsx","../src/components/layout/DeploymentDashboardCard/DeploymentDashboardCard.tsx","../src/hooks/useControlledExpand.ts","../src/components/layout/DeploymentEntityContextMenu/DeploymentEntityContextMenu.tsx","../src/components/layout/DeploymentEntityContextMenu/contextMenuItems.tsx","../src/components/layout/DeploymentDashboardTree/DeploymentDashboardTree.tsx","../src/components/layout/DeploymentDashboardPanel/DeploymentDashboardPanel.tsx","../src/components/layout/Avatar.tsx","../src/components/layout/Table.tsx","../src/components/layout/Grid.tsx","../src/components/layout/Breadcrumbs.tsx","../src/components/layout/Accordion.tsx","../src/components/layout/Paper.tsx","../src/components/layout/Divider.tsx","../src/components/layout/Stack.tsx","../src/components/layout/Box.tsx","../src/components/layout/Typography.tsx","../src/components/layout/Container.tsx","../src/components/layout/AppBar.tsx","../src/components/layout/Collapse.tsx","../src/components/feedback/Alert.tsx","../src/components/feedback/EmptyState.tsx","../src/components/feedback/Loading.tsx","../src/components/feedback/AppLoading.tsx","../src/components/feedback/CircularProgress.tsx","../src/components/icons/ActivityAppIcon.tsx","../src/components/icons/ArrowLeft.tsx","../src/components/icons/ArrowRight.tsx","../src/components/icons/AvatarIcon.tsx","../src/components/icons/BarTrackingIcon.tsx","../src/components/icons/ClockIcon.tsx","../src/components/icons/CloudFlashIcon.tsx","../src/components/icons/DecentralizedServerIcon.tsx","../src/components/icons/DiscordIcon.tsx","../src/components/icons/DownloadIcon.tsx","../src/components/icons/FilledFolderIcon.tsx","../src/components/icons/FolderIcon.tsx","../src/components/icons/GithubLogoIcon.tsx","../src/components/icons/ShareIcon.tsx","../src/components/icons/StorageAppIcon.tsx","../src/components/icons/UploadFileIcon.tsx","../src/components/icons/UploadFolderIcon.tsx","../src/components/utilities/Markdown/Markdown.tsx","../src/components/utilities/OnboardingProvider/OnboardingProvider.tsx","../src/components/utilities/Truncate/Truncate.tsx","../src/components/utilities/BytesSize/BytesSize.tsx","../src/components/utilities/QRCode/QRCode.tsx","../src/components/charts/ChartWidget/ChartWidget.tsx","../src/components/charts/MetricsChart/MetricsChart.tsx","../src/components/charts/MetricsChart/PeriodSelect.tsx","../src/components/charts/TimeSeriesGraph/TimeSeriesGraph.tsx","../src/components/charts/TimeSeriesGraph/TimeRangeSelect.tsx","../src/components/charts/TimeSeriesGraph/SummaryStats.tsx","../src/components/third-party/FlowEditor.tsx","../src/components/third-party/CodeEditor.tsx"],"sourcesContent":["// Theme\nexport { theme, colors, robPrimaryPalette, robPaletteExtended } from './theme';\n\n// Fonts\nexport * from './assets/fonts';\n\n// Animations\nexport * from './animations';\n\n// Hooks\nexport { useIsDesktop, useIsTablet, useIsMobile } from './hooks/useResponsive';\n\n// Buttons\nexport { Button } from './components/buttons/Button';\nexport type { ButtonProps } from './components/buttons/Button';\nexport { IconButton } from './components/buttons/IconButton';\nexport type { IconButtonProps } from './components/buttons/IconButton';\nexport { LoadingButton } from './components/buttons/LoadingButton';\nexport type { LoadingButtonProps } from './components/buttons/LoadingButton';\nexport { ButtonGroup } from './components/buttons/ButtonGroup';\nexport type { ButtonGroupProps } from './components/buttons/ButtonGroup';\n\n// Inputs\nexport { TextField } from './components/inputs/TextField';\nexport type { TextFieldProps } from './components/inputs/TextField';\nexport { SearchField } from './components/inputs/SearchField';\nexport type { SearchFieldProps } from './components/inputs/SearchField';\nexport {\n FormControl,\n FormLabel,\n FormHelperText,\n FormControlLabel,\n InputLabel,\n InputAdornment,\n} from './components/inputs/FormControl';\nexport type {\n FormControlProps,\n FormLabelProps,\n FormHelperTextProps,\n FormControlLabelProps,\n InputLabelProps,\n InputAdornmentProps,\n} from './components/inputs/FormControl';\nexport { ToggleButton, ToggleButtonGroup } from './components/inputs/ToggleButton';\nexport type { ToggleButtonProps, ToggleButtonGroupProps } from './components/inputs/ToggleButton';\nexport { Switch } from './components/inputs/Switch';\nexport type { SwitchProps } from './components/inputs/Switch';\nexport { Checkbox } from './components/inputs/Checkbox';\nexport type { CheckboxProps } from './components/inputs/Checkbox';\nexport { Radio, RadioGroup } from './components/inputs/Radio';\nexport type { RadioProps } from './components/inputs/Radio';\n\n// Navigation\nexport { Dropdown } from './components/navigation/Dropdown';\nexport type { DropdownProps } from './components/navigation/Dropdown';\nexport { DropdownAnchor } from './components/navigation/Dropdown';\nexport type { DropdownAnchorProps } from './components/navigation/Dropdown';\nexport { Sidebar } from './components/navigation/Sidebar';\nexport type { SidebarProps } from './components/navigation/Sidebar';\nexport { SidebarItem } from './components/navigation/SidebarItem';\nexport type { SidebarItemProps } from './components/navigation/SidebarItem';\nexport { ServiceSelectorButton } from './components/navigation/ServiceSelector';\nexport type { ServiceSelectorButtonProps, Service } from './components/navigation/ServiceSelector';\nexport { WorkspaceSelectorButton } from './components/navigation/WorkspaceSelector';\nexport type { WorkspaceSelectorButtonProps, Workspace } from './components/navigation/WorkspaceSelector';\nexport { Stepper, Step, StepLabel, StepContent, StepButton } from './components/navigation/Stepper';\nexport type { StepperProps, StepProps, StepLabelProps, StepContentProps, StepButtonProps } from './components/navigation/Stepper';\nexport { SideNav } from './components/navigation/SideNav';\nexport { SideNavHeader } from './components/navigation/SideNav';\nexport { NavigationList } from './components/navigation/SideNav';\nexport { NavigationItem } from './components/navigation/SideNav';\nexport { ConnectionStatus } from './components/navigation/SideNav';\nexport { AccountSection } from './components/navigation/SideNav';\nexport type {\n SideNavProps,\n SideNavHeaderProps,\n NavigationListProps,\n NavigationItemProps,\n ConnectionStatusProps,\n AccountSectionProps,\n UserInfo,\n} from './components/navigation/SideNav';\n\n// Feedback\nexport { Badge } from './components/feedback/Badge';\nexport type { BadgeProps } from './components/feedback/Badge';\nexport { Chip } from './components/feedback/Chip';\nexport type { ChipProps } from './components/feedback/Chip';\nexport { RoleBadge } from './components/feedback/RoleBadge';\nexport type { RoleBadgeProps, RoleBadgeColor, RoleBadgeSize } from './components/feedback/RoleBadge';\nexport { IDBlock } from './components/feedback/IDBlock';\nexport type { IDBlockProps } from './components/feedback/IDBlock';\nexport { Tooltip } from './components/feedback/Tooltip';\nexport type { TooltipProps } from './components/feedback/Tooltip';\nexport { Progress } from './components/feedback/Progress';\nexport type { ProgressProps } from './components/feedback/Progress';\n\n// Tabs\nexport { Tab } from './components/navigation/Tab';\nexport type { TabProps } from './components/navigation/Tab';\nexport { Menu, MenuItem } from './components/navigation/Menu';\nexport type { MenuProps, MenuItemProps } from './components/navigation/Menu';\nexport { Pagination } from './components/navigation/Pagination';\nexport type { PaginationProps } from './components/navigation/Pagination';\nexport { Selector } from './components/navigation/Selector';\nexport type { SelectorProps, SelectorOption } from './components/navigation/Selector';\n\n// Layout\nexport { Logo } from './components/layout/Logo';\nexport type { LogoProps } from './components/layout/Logo';\nexport { EntityHeader } from './components/layout/EntityHeader/EntityHeader';\nexport type { EntityHeaderProps, PrimaryAction } from './components/layout/EntityHeader/EntityHeader';\nexport { Dialog } from './components/layout/Dialog';\nexport type { DialogProps } from './components/layout/Dialog';\nexport { Drawer } from './components/layout/Drawer';\nexport type { DrawerProps } from './components/layout/Drawer';\nexport { Card, CardContent, CardHeader, CardActions } from './components/layout/Card';\nexport type { CardProps } from './components/layout/Card';\nexport { List, ListItem, ListItemText, ListItemIcon, ListItemSecondaryAction } from './components/layout/List';\nexport type { ListProps, ListItemProps } from './components/layout/List';\nexport { DeploymentDashboardCard } from './components/layout/DeploymentDashboardCard/DeploymentDashboardCard';\nexport type {\n DeploymentDashboardCardProps,\n DeploymentEntityType,\n DeploymentCardAction,\n DeploymentStatusIndicator,\n} from './components/layout/DeploymentDashboardCard/DeploymentDashboardCard';\nexport { DeploymentEntityContextMenu } from './components/layout/DeploymentEntityContextMenu/DeploymentEntityContextMenu';\nexport { contextMenuItems } from './components/layout/DeploymentEntityContextMenu/contextMenuItems';\nexport type {\n DeploymentEntityContextMenuProps,\n ContextMenuItem,\n} from './components/layout/DeploymentEntityContextMenu/DeploymentEntityContextMenu';\nexport { DeploymentDashboardTree } from './components/layout/DeploymentDashboardTree/DeploymentDashboardTree';\nexport type {\n DeploymentDashboardTreeProps,\n DeploymentTreeNode,\n} from './components/layout/DeploymentDashboardTree/DeploymentDashboardTree';\nexport { DeploymentDashboardPanel } from './components/layout/DeploymentDashboardPanel/DeploymentDashboardPanel';\nexport type { DeploymentDashboardPanelProps } from './components/layout/DeploymentDashboardPanel/DeploymentDashboardPanel';\nexport { Avatar } from './components/layout/Avatar';\nexport type { AvatarProps } from './components/layout/Avatar';\nexport { Table, TableHeader } from './components/layout/Table';\nexport type { TableProps, TableHeaderProps } from './components/layout/Table';\nexport { Grid } from './components/layout/Grid';\nexport type { GridProps } from './components/layout/Grid';\nexport { Breadcrumbs } from './components/layout/Breadcrumbs';\nexport type { BreadcrumbsProps, BreadcrumbItem } from './components/layout/Breadcrumbs';\nexport { Accordion } from './components/layout/Accordion';\nexport type { AccordionProps } from './components/layout/Accordion';\nexport { Paper } from './components/layout/Paper';\nexport type { PaperProps } from './components/layout/Paper';\nexport { Divider } from './components/layout/Divider';\nexport type { DividerProps } from './components/layout/Divider';\nexport { Stack } from './components/layout/Stack';\nexport type { StackProps } from './components/layout/Stack';\nexport { Box } from './components/layout/Box';\nexport type { BoxProps } from './components/layout/Box';\nexport { Typography } from './components/layout/Typography';\nexport type { TypographyProps } from './components/layout/Typography';\nexport { Link } from './components/layout/Link';\nexport type { LinkProps } from './components/layout/Link';\nexport { Container } from './components/layout/Container';\nexport type { ContainerProps } from './components/layout/Container';\nexport { AppBar, Toolbar } from './components/layout/AppBar';\nexport type { AppBarProps, ToolbarProps } from './components/layout/AppBar';\nexport { Collapse } from './components/layout/Collapse';\nexport type { CollapseProps } from './components/layout/Collapse';\n\n// Feedback (extended)\nexport { Alert, Snackbar } from './components/feedback/Alert';\nexport type { AlertProps, SnackbarProps, AlertSeverity } from './components/feedback/Alert';\nexport { EmptyState } from './components/feedback/EmptyState';\nexport type { EmptyStateProps } from './components/feedback/EmptyState';\nexport { Loading } from './components/feedback/Loading';\nexport type { LoadingProps } from './components/feedback/Loading';\nexport { AppLoading } from './components/feedback/AppLoading';\nexport type { AppLoadingProps } from './components/feedback/AppLoading';\nexport { CircularProgress } from './components/feedback/CircularProgress';\nexport type { CircularProgressProps } from './components/feedback/CircularProgress';\n\n// Icons\nexport * from './components/icons';\n\n// Utilities\nexport { Markdown } from './components/utilities/Markdown';\nexport type { MarkdownProps } from './components/utilities/Markdown';\nexport { OnboardingProvider, useOnboarding } from './components/utilities/OnboardingProvider';\nexport { Truncate } from './components/utilities/Truncate';\nexport type { TruncateProps } from './components/utilities/Truncate';\nexport { BytesSize } from './components/utilities/BytesSize';\nexport type { BytesSizeProps } from './components/utilities/BytesSize';\nexport { QRCode } from './components/utilities/QRCode';\nexport type { QRCodeProps } from './components/utilities/QRCode';\n\n// Charts\nexport { ChartWidget } from './components/charts/ChartWidget';\nexport type { ChartWidgetProps } from './components/charts/ChartWidget';\nexport { MetricsChart } from './components/charts/MetricsChart';\nexport type { MetricsChartProps } from './components/charts/MetricsChart';\nexport { PeriodSelect } from './components/charts/MetricsChart';\nexport type { MetricsPeriod } from './components/charts/MetricsChart';\nexport { TimeSeriesGraph } from './components/charts/TimeSeriesGraph';\nexport type {\n TimeSeriesGraphProps,\n DataSeries,\n DataPoint,\n} from './components/charts/TimeSeriesGraph';\nexport { TimeRangeSelect } from './components/charts/TimeSeriesGraph';\nexport type { TimeRangeSelectProps, TimeRangeOption } from './components/charts/TimeSeriesGraph';\nexport { SummaryStats } from './components/charts/TimeSeriesGraph';\nexport type { SummaryStatsProps, SummaryItem } from './components/charts/TimeSeriesGraph';\n\n// Third Party Components\nexport { FlowEditor } from './components/third-party/FlowEditor';\nexport type { FlowEditorProps } from './components/third-party/FlowEditor';\nexport { CodeEditor } from './components/third-party/CodeEditor';\nexport type { CodeEditorProps, CodeEditorLanguage } from './components/third-party/CodeEditor';\n// Re-export commonly used ReactFlow types\nexport type {\n Node,\n Edge,\n NodeTypes,\n EdgeTypes,\n ReactFlowInstance,\n OnNodesChange,\n OnEdgesChange,\n} from './components/third-party/FlowEditor';\nexport {\n Background,\n Controls,\n MiniMap,\n BackgroundVariant,\n ConnectionLineType,\n} from './components/third-party/FlowEditor';\nexport { Panel } from 'reactflow';\n\n","import { createTheme, Theme } from '@mui/material/styles';\n\n// ---------------------------------------------------------------------------\n// Module augmentation — gives consumers type-safe access to theme.palette.deployment\n// ---------------------------------------------------------------------------\ndeclare module '@mui/material/styles' {\n interface Palette {\n deployment: {\n entity: typeof import('./index').deploymentEntityColors;\n status: typeof import('./index').deploymentStatusColors;\n };\n }\n interface PaletteOptions {\n deployment?: {\n entity?: Record<string, string>;\n status?: Record<string, string>;\n };\n }\n}\n\n// Color palette - matching ROB application\nconst colors = {\n primary: {\n main: '#1976d2', // ROB primary color\n light: '#1976d2', // Same as main for selected background\n dark: '#1565c0',\n contrastText: '#FFFFFF',\n },\n secondary: {\n main: '#666666',\n light: '#999999',\n dark: '#333333',\n contrastText: '#FFFFFF',\n },\n success: {\n main: '#10B981',\n light: '#34D399',\n dark: '#059669',\n contrastText: '#FFFFFF',\n },\n error: {\n main: '#EF4444',\n light: '#F87171',\n dark: '#DC2626',\n contrastText: '#FFFFFF',\n },\n warning: {\n main: '#F59E0B',\n light: '#FBBF24',\n dark: '#D97706',\n contrastText: '#FFFFFF',\n },\n tertiary: {\n main: '#F59E0B',\n light: '#FBBF24',\n dark: '#D97706',\n contrastText: '#1A1A1A',\n },\n grey: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n },\n text: {\n primary: '#1A1A1A',\n secondary: '#666666',\n disabled: '#999999',\n },\n background: {\n default: '#FFFFFF',\n paper: '#FFFFFF',\n selected: 'rgba(123, 44, 191, 0.1)',\n },\n};\n\n// Deployment dashboard entity colors (Figma 11-2105, research.md)\nexport const deploymentEntityColors = {\n workspace: '#aa44f2',\n stream: '#53b96a',\n deployment: '#eeb510',\n engagement: '#f941e6',\n agent: '#77c3ff',\n};\n\n// Deployment dashboard status colors (Figma 11-2105)\nexport const deploymentStatusColors = {\n normal: '#53b96a',\n warning: '#eeb510',\n error: '#ef5059',\n disabled: '#ffffff',\n disabledDim: '#ded8e1',\n};\n\n/** Shared Figma surface/stroke tokens used across deployment dashboard components */\nexport const deploymentSurfaceTokens = {\n /** Surface/high background (Figma #fefcff) */\n surfaceHigh: '#fefcff',\n /** Stroke/Outside border (Figma #e6e6e6) */\n strokeOutside: '#e6e6e6',\n /** Default card border (Figma #cdcccd) */\n borderDefault: '#cdcccd',\n /** Primary text (Figma #1d1b20) */\n textPrimary: '#1d1b20',\n /** Secondary/muted text (Figma #818083) */\n textSecondary: '#818083',\n /** Accent blue for workspace border, capacity bar, chevrons (Figma #5865f2) */\n accentBlue: '#5865f2',\n /** Workspace card shadow */\n workspaceShadow: '0px 8px 12px rgba(26, 10, 124, 0.1)',\n /** Hover state for context menu items */\n hoverLight: '#F0F1FF',\n /** Generic hover overlay (buttons, icon-buttons, rows) */\n hoverOverlay: 'rgba(0, 0, 0, 0.04)',\n /** Blue-50 highlight background for active menu items (Figma blue-50) */\n highlightBg: '#f5f6ff',\n /** Blue-50 highlight background hover state */\n highlightBgHover: '#eceeff',\n /** Blue-100 highlight border for active menu items (Figma blue-100) */\n highlightBorder: '#cbcffb',\n /** Switch track enabled (Figma basic/green #53b96a) */\n switchGreen: '#53b96a',\n /** Switch track disabled/off (Figma neutral track) */\n switchTrackOff: '#e0e0e0',\n} as const;\n\n/**\n * ROB primary brand color palette (Figma node 11-1393)\n * Four main brand colors for the ROB design system\n */\nexport const robPrimaryPalette = {\n /** Primary magenta/pink - Figma node 11-1394 */\n fandango: '#BD32A7',\n /** Vivid purple - Figma node 11-1407 */\n electricViolet: '#8B00EC',\n /** Mid-tone purple - Figma node 11-1420 */\n ultraViolet: '#6750A4',\n /** Light lavender - Figma node 11-1433 */\n periwinkle: '#D0BCFF',\n} as const;\n\n/**\n * ROB extended palette with additional swatches (Figma node 11-1447)\n * Gradient shades and secondary accents from the ROB color grid\n */\nexport const robPaletteExtended = {\n // Dark shades (6 colors)\n dark1: '#280e61',\n dark2: '#531584',\n dark3: '#710c7a',\n dark4: '#920269',\n dark5: '#c71454',\n dark6: '#ff6341',\n // Bright shades (4 colors)\n bright1: '#5311e3',\n bright2: '#eb03ff',\n bright3: '#ff17ab',\n bright4: '#ff6a85',\n // Light shades (5 colors)\n light1: '#baa0f4',\n light2: '#d399fc',\n light3: '#f79aff',\n light4: '#faabde',\n light5: '#ffc4ce',\n // Near-black shades (4 colors)\n nearBlack1: '#0b0f18',\n nearBlack2: '#0d0627',\n nearBlack3: '#161d30',\n nearBlack4: '#23194b',\n} as const;\n\nconst baseTheme = createTheme({\n palette: {\n mode: 'light',\n primary: colors.primary,\n secondary: colors.secondary,\n success: colors.success,\n error: colors.error,\n warning: colors.warning,\n grey: colors.grey,\n text: colors.text,\n background: colors.background,\n },\n typography: {\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Human Sans', 'Nohemi', sans-serif\",\n h1: {\n fontWeight: 700,\n fontSize: '96px',\n lineHeight: 1.2,\n },\n h2: {\n fontWeight: 700,\n fontSize: '60px',\n lineHeight: 1.2,\n },\n h3: {\n fontWeight: 700,\n fontSize: '48px',\n lineHeight: 1.2,\n },\n h4: {\n fontWeight: 600,\n fontSize: '34px',\n lineHeight: 1.2,\n },\n h5: {\n fontWeight: 600,\n fontSize: '24px',\n lineHeight: 1.2,\n },\n h6: {\n fontWeight: 600,\n fontSize: '20px',\n lineHeight: 1.2,\n },\n subtitle1: {\n fontWeight: 700,\n fontSize: '16px',\n lineHeight: 1.5,\n },\n subtitle2: {\n fontWeight: 700,\n fontSize: '14px',\n lineHeight: 1.5,\n },\n body1: {\n fontWeight: 400,\n fontSize: '16px',\n lineHeight: 1.5,\n },\n body2: {\n fontWeight: 400,\n fontSize: '14px',\n lineHeight: 1.5,\n },\n button: {\n fontWeight: 700,\n fontSize: '14px',\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n },\n caption: {\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: 1.5,\n },\n overline: {\n fontWeight: 800,\n fontSize: '10px',\n textTransform: 'uppercase',\n letterSpacing: '1px',\n },\n },\n shape: {\n borderRadius: 16,\n },\n components: {\n MuiButton: {\n styleOverrides: {\n root: {\n textTransform: 'none',\n borderRadius: 12,\n fontWeight: 600,\n padding: '8px 24px',\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none',\n },\n },\n sizeSmall: {\n padding: '4px 12px',\n fontSize: '12px',\n },\n sizeMedium: {\n padding: '8px 24px',\n fontSize: '14px',\n },\n sizeLarge: {\n padding: '12px 24px',\n fontSize: '16px',\n },\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-root': {\n borderRadius: 12,\n },\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n root: {\n borderRadius: 12,\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n borderRadius: 16,\n fontWeight: 500,\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.05)',\n border: '1px solid rgba(0, 0, 0, 0.05)',\n },\n },\n },\n MuiDrawer: {\n styleOverrides: {\n paper: {\n borderRight: '1px solid rgba(0, 0, 0, 0.05)',\n },\n },\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n },\n filled: {\n borderRadius: 8,\n },\n },\n },\n },\n});\n\n// Extend palette with deployment dashboard tokens (consumers use theme.palette.deployment)\nexport const theme: Theme = createTheme(baseTheme, {\n palette: {\n deployment: {\n entity: deploymentEntityColors,\n status: deploymentStatusColors,\n },\n },\n});\n\n// Export colors for use in components\nexport { colors };\n\n","import Lottie from 'lottie-react';\nimport checkMarkAnimation from './check.json';\n\nexport const CheckMarkAnimation = () => {\n return <Lottie animationData={checkMarkAnimation} />;\n};\n","{\n \"nm\": \"CHECK\",\n \"ddd\": 0,\n \"h\": 1000,\n \"w\": 1000,\n \"meta\": {\"g\": \"@lottiefiles/toolkit-js 0.33.2\"},\n \"layers\": [\n {\n \"ty\": 4,\n \"nm\": \"Shape Layer 3\",\n \"sr\": 1,\n \"st\": 0,\n \"op\": 30,\n \"ip\": 0,\n \"hd\": false,\n \"ddd\": 0,\n \"bm\": 0,\n \"hasMask\": false,\n \"ao\": 0,\n \"ks\": {\n \"a\": {\"a\": 0, \"k\": [0, 9, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100, 100], \"ix\": 6},\n \"sk\": {\"a\": 0, \"k\": 0},\n \"p\": {\"a\": 0, \"k\": [500, 500, 0], \"ix\": 2},\n \"r\": {\n \"a\": 1,\n \"k\": [\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0], \"t\": 0},\n {\"s\": [0], \"t\": 29}\n ]\n },\n \"sa\": {\"a\": 0, \"k\": 0},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 11}\n },\n \"ef\": [],\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Group\",\n \"nm\": \"Ellipse 1\",\n \"ix\": 1,\n \"cix\": 2,\n \"np\": 3,\n \"it\": [\n {\n \"ty\": \"el\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Shape - Ellipse\",\n \"nm\": \"Ellipse Path 1\",\n \"d\": 1,\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 3},\n \"s\": {\"a\": 0, \"k\": [494, 494], \"ix\": 2}\n },\n {\n \"ty\": \"st\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Graphic - Stroke\",\n \"nm\": \"Stroke 1\",\n \"lc\": 2,\n \"lj\": 1,\n \"ml\": 4,\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 4},\n \"w\": {\"a\": 0, \"k\": 40, \"ix\": 5},\n \"c\": {\"a\": 0, \"k\": [0.2863, 0.749, 0.3882], \"ix\": 3}\n },\n {\n \"ty\": \"tr\",\n \"a\": {\"a\": 0, \"k\": [0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100], \"ix\": 3},\n \"sk\": {\"a\": 0, \"k\": 0, \"ix\": 4},\n \"p\": {\"a\": 0, \"k\": [0, 9], \"ix\": 2},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 6},\n \"sa\": {\"a\": 0, \"k\": 0, \"ix\": 5},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 7}\n }\n ]\n },\n {\n \"ty\": \"tm\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Filter - Trim\",\n \"nm\": \"Trim Paths 1\",\n \"ix\": 2,\n \"e\": {\n \"a\": 1,\n \"k\": [\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0], \"t\": 0},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0.195], \"t\": 2},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0.391], \"t\": 3},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0.781], \"t\": 4},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [1.562], \"t\": 5},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [3.125], \"t\": 6},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [6.25], \"t\": 7},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [12.5], \"t\": 8},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [25], \"t\": 9},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [75], \"t\": 11},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [87.5], \"t\": 12},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [93.75], \"t\": 13},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [96.875], \"t\": 14},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [98.438], \"t\": 15},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [99.219], \"t\": 16},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [99.609], \"t\": 17},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [99.805], \"t\": 18},\n {\"s\": [100], \"t\": 20}\n ]\n },\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-180], \"t\": 0},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-179.791], \"t\": 1},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-179.5], \"t\": 2},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-178.819], \"t\": 3},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-177.188], \"t\": 4},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-173.309], \"t\": 5},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-164.092], \"t\": 6},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-142.158], \"t\": 7},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-37.842], \"t\": 9},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-15.908], \"t\": 10},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-6.691], \"t\": 11},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-2.812], \"t\": 12},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-1.181], \"t\": 13},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-0.5], \"t\": 14},\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [-0.209], \"t\": 15},\n {\"s\": [0], \"t\": 16}\n ]\n },\n \"s\": {\"a\": 0, \"k\": 0, \"ix\": 1},\n \"m\": 1\n }\n ],\n \"ind\": 1\n },\n {\n \"ty\": 4,\n \"nm\": \"Shape Layer 2\",\n \"sr\": 1,\n \"st\": 0,\n \"op\": 30,\n \"ip\": 0,\n \"hd\": false,\n \"ddd\": 0,\n \"bm\": 0,\n \"hasMask\": false,\n \"ao\": 0,\n \"ks\": {\n \"a\": {\"a\": 0, \"k\": [0, 0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100, 100], \"ix\": 6},\n \"sk\": {\"a\": 0, \"k\": 0},\n \"p\": {\"a\": 0, \"k\": [500, 500, 0], \"ix\": 2},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 10},\n \"sa\": {\"a\": 0, \"k\": 0},\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\"o\": {\"x\": 0.167, \"y\": 0.167}, \"i\": {\"x\": 0.833, \"y\": 0.833}, \"s\": [0], \"t\": 0},\n {\"s\": [100], \"t\": 1.5}\n ],\n \"ix\": 11\n }\n },\n \"ef\": [],\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Group\",\n \"nm\": \"Shape 1\",\n \"ix\": 1,\n \"cix\": 2,\n \"np\": 3,\n \"it\": [\n {\n \"ty\": \"sh\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Shape - Group\",\n \"nm\": \"Path 1\",\n \"ix\": 1,\n \"d\": 1,\n \"ks\": {\n \"a\": 1,\n \"k\": [\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [-89, -33.188],\n [-88.875, -33.062],\n [-89, -32.5],\n [-124.5, 3],\n [-124.437, 3.188],\n [-88.75, -33.062]\n ]\n }\n ],\n \"t\": 0\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [-62.748, -6.833],\n [-62.624, -6.708],\n [-89, -32.5],\n [-124.5, 3],\n [-83.642, 43.932],\n [-47.954, 7.682]\n ]\n }\n ],\n \"t\": 1\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [-41.913, 14.085],\n [-41.788, 14.21],\n [-89, -32.5],\n [-124.5, 3],\n [-51.263, 76.27],\n [-15.575, 40.02]\n ]\n }\n ],\n \"t\": 2\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [-25.375, 30.688],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [10.125, 65.688]\n ]\n }\n ],\n \"t\": 3\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [1.111, 4.24],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.937],\n [36.611, 39.24]\n ]\n }\n ],\n \"t\": 4\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [22.13, -16.749],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.937],\n [57.63, 18.251]\n ]\n }\n ],\n \"t\": 5\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [38.812, -33.406],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [74.312, 1.594]\n ]\n }\n ],\n \"t\": 6\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [52.055, -46.63],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [87.555, -11.63]\n ]\n }\n ],\n \"t\": 7\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [62.565, -57.124],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [98.065, -22.124]\n ]\n }\n ],\n \"t\": 8\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [70.906, -65.453],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [106.406, -30.453]\n ]\n }\n ],\n \"t\": 9\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [77.526, -72.063],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [113.026, -37.063]\n ]\n }\n ],\n \"t\": 10\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [82.783, -77.312],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [118.283, -42.312]\n ]\n }\n ],\n \"t\": 11\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [86.953, -81.477],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [122.453, -46.477]\n ]\n }\n ],\n \"t\": 12\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [90.263, -84.781],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [125.763, -49.781]\n ]\n }\n ],\n \"t\": 13\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [92.891, -87.406],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [128.391, -52.406]\n ]\n }\n ],\n \"t\": 14\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [94.977, -89.488],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [130.477, -54.488]\n ]\n }\n ],\n \"t\": 15\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [96.631, -91.141],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [132.131, -56.141]\n ]\n }\n ],\n \"t\": 16\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [97.944, -92.451],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [133.444, -57.451]\n ]\n }\n ],\n \"t\": 17\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [98.988, -93.494],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [134.488, -58.494]\n ]\n }\n ],\n \"t\": 18\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [99.816, -94.32],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [135.316, -59.32]\n ]\n }\n ],\n \"t\": 19\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [100.472, -94.975],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [135.972, -59.975]\n ]\n }\n ],\n \"t\": 20\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [100.994, -95.497],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [136.494, -60.497]\n ]\n }\n ],\n \"t\": 21\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [101.408, -95.91],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [136.908, -60.91]\n ]\n }\n ],\n \"t\": 22\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [101.738, -96.24],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.238, -61.24]\n ]\n }\n ],\n \"t\": 23\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [101.997, -96.499],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.497, -61.499]\n ]\n }\n ],\n \"t\": 24\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.206, -96.707],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.706, -61.707]\n ]\n }\n ],\n \"t\": 25\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.369, -96.87],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.869, -61.87]\n ]\n }\n ],\n \"t\": 26\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.499, -96.999],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [137.999, -61.999]\n ]\n }\n ],\n \"t\": 27\n },\n {\n \"o\": {\"x\": 0.167, \"y\": 0.167},\n \"i\": {\"x\": 0.833, \"y\": 0.833},\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.603, -97.104],\n [-25.25, 30.812],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [138.103, -62.104]\n ]\n }\n ],\n \"t\": 28\n },\n {\n \"s\": [\n {\n \"c\": true,\n \"i\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"o\": [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0]\n ],\n \"v\": [\n [102.682, -97.183],\n [-25.25, 30.813],\n [-89, -32.5],\n [-124.5, 3],\n [-25.562, 101.938],\n [138.182, -62.183]\n ]\n }\n ],\n \"t\": 29\n }\n ]\n }\n },\n {\n \"ty\": \"fl\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"nm\": \"Fill 1\",\n \"c\": {\"a\": 0, \"k\": [0.2863, 0.749, 0.3882], \"ix\": 4},\n \"r\": 1,\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 5}\n },\n {\n \"ty\": \"tr\",\n \"a\": {\"a\": 0, \"k\": [0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100], \"ix\": 3},\n \"sk\": {\"a\": 0, \"k\": 0, \"ix\": 4},\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 2},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 6},\n \"sa\": {\"a\": 0, \"k\": 0, \"ix\": 5},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 7}\n }\n ]\n },\n {\n \"ty\": \"rd\",\n \"bm\": 0,\n \"hd\": false,\n \"mn\": \"ADBE Vector Filter - RC\",\n \"nm\": \"Round Corners 1\",\n \"ix\": 2,\n \"r\": {\"a\": 0, \"k\": 16, \"ix\": 1}\n }\n ],\n \"ind\": 2\n }\n ],\n \"v\": \"5.12.0\",\n \"fr\": 15,\n \"op\": 30,\n \"ip\": 0,\n \"assets\": []\n}\n","import Lottie, { LottieComponentProps } from 'lottie-react';\nimport loadingAnimation from './loading.json';\n\nexport type LoadingAnimationProps = Omit<LottieComponentProps, 'animationData'>;\n\nexport const LoadingAnimation = (props: LoadingAnimationProps) => {\n return <Lottie animationData={loadingAnimation} {...props} />;\n};\n","{\n \"v\": \"5.8.1\",\n \"fr\": 30,\n \"ip\": 0,\n \"op\": 60,\n \"w\": 300,\n \"h\": 300,\n \"nm\": \"loading_6\",\n \"ddd\": 0,\n \"assets\": [],\n \"layers\": [\n {\n \"ddd\": 0,\n \"ind\": 1,\n \"ty\": 4,\n \"nm\": \"Shape Layer 2\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 11},\n \"r\": {\n \"a\": 1,\n \"k\": [\n {\"i\": {\"x\": [0.833], \"y\": [0.833]}, \"o\": {\"x\": [0.167], \"y\": [0.167]}, \"t\": 0, \"s\": [0]},\n {\"t\": 60, \"s\": [360]}\n ],\n \"ix\": 10\n },\n \"p\": {\"a\": 0, \"k\": [150.00000000000003, 150.00000000000003, 0], \"ix\": 2, \"l\": 2},\n \"a\": {\"a\": 0, \"k\": [0, 0, 0], \"ix\": 1, \"l\": 2},\n \"s\": {\"a\": 0, \"k\": [30.000000000000004, 30.000000000000004, 100], \"ix\": 6, \"l\": 2}\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"d\": 1,\n \"ty\": \"el\",\n \"s\": {\"a\": 0, \"k\": [300, 300], \"ix\": 2},\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 3},\n \"nm\": \"Ellipse Path 1\",\n \"mn\": \"ADBE Vector Shape - Ellipse\",\n \"hd\": false\n },\n {\n \"ty\": \"st\",\n \"c\": {\"a\": 0, \"k\": [0.22745098039215686, 0.6627450980392157, 0.8627450980392157, 1], \"ix\": 3},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 4},\n \"w\": {\"a\": 0, \"k\": 50, \"ix\": 5},\n \"lc\": 2,\n \"lj\": 1,\n \"ml\": 4,\n \"bm\": 0,\n \"nm\": \"Stroke 1\",\n \"mn\": \"ADBE Vector Graphic - Stroke\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 2},\n \"a\": {\"a\": 0, \"k\": [0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100], \"ix\": 3},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 6},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 7},\n \"sk\": {\"a\": 0, \"k\": 0, \"ix\": 4},\n \"sa\": {\"a\": 0, \"k\": 0, \"ix\": 5},\n \"nm\": \"Transform\"\n }\n ],\n \"nm\": \"Ellipse 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n },\n {\n \"ty\": \"tm\",\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\"i\": {\"x\": [0.667], \"y\": [1]}, \"o\": {\"x\": [0.333], \"y\": [0]}, \"t\": 10, \"s\": [0]},\n {\"t\": 60, \"s\": [99]}\n ],\n \"ix\": 1\n },\n \"e\": {\n \"a\": 1,\n \"k\": [\n {\"i\": {\"x\": [0.667], \"y\": [1]}, \"o\": {\"x\": [0.333], \"y\": [0]}, \"t\": 0, \"s\": [1]},\n {\"t\": 50, \"s\": [100]}\n ],\n \"ix\": 2\n },\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\"i\": {\"x\": [0.833], \"y\": [0.833]}, \"o\": {\"x\": [0.167], \"y\": [0.167]}, \"t\": 0, \"s\": [0]},\n {\"t\": 60, \"s\": [3]}\n ],\n \"ix\": 3\n },\n \"m\": 1,\n \"ix\": 2,\n \"nm\": \"Trim Paths 1\",\n \"mn\": \"ADBE Vector Filter - Trim\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 300,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 2,\n \"ty\": 4,\n \"nm\": \"Shape Layer 1\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\"a\": 0, \"k\": 30, \"ix\": 11},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 10},\n \"p\": {\"a\": 0, \"k\": [150.00000000000003, 150.00000000000003, 0], \"ix\": 2, \"l\": 2},\n \"a\": {\"a\": 0, \"k\": [0, 0, 0], \"ix\": 1, \"l\": 2},\n \"s\": {\"a\": 0, \"k\": [30.000000000000004, 30.000000000000004, 100], \"ix\": 6, \"l\": 2}\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"d\": 1,\n \"ty\": \"el\",\n \"s\": {\"a\": 0, \"k\": [300, 300], \"ix\": 2},\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 3},\n \"nm\": \"Ellipse Path 1\",\n \"mn\": \"ADBE Vector Shape - Ellipse\",\n \"hd\": false\n },\n {\n \"ty\": \"st\",\n \"c\": {\"a\": 0, \"k\": [0.6666666666666666, 0.8431372549019608, 0.9215686274509803, 1], \"ix\": 3},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 4},\n \"w\": {\"a\": 0, \"k\": 50, \"ix\": 5},\n \"lc\": 1,\n \"lj\": 1,\n \"ml\": 4,\n \"bm\": 0,\n \"nm\": \"Stroke 1\",\n \"mn\": \"ADBE Vector Graphic - Stroke\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": {\"a\": 0, \"k\": [0, 0], \"ix\": 2},\n \"a\": {\"a\": 0, \"k\": [0, 0], \"ix\": 1},\n \"s\": {\"a\": 0, \"k\": [100, 100], \"ix\": 3},\n \"r\": {\"a\": 0, \"k\": 0, \"ix\": 6},\n \"o\": {\"a\": 0, \"k\": 100, \"ix\": 7},\n \"sk\": {\"a\": 0, \"k\": 0, \"ix\": 4},\n \"sa\": {\"a\": 0, \"k\": 0, \"ix\": 5},\n \"nm\": \"Transform\"\n }\n ],\n \"nm\": \"Ellipse 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 300,\n \"st\": 0,\n \"bm\": 0\n }\n ],\n \"markers\": []\n}\n","import { useMediaQuery, useTheme } from '@mui/material';\n\nexport const useIsDesktop = () => {\n const theme = useTheme();\n return useMediaQuery(theme.breakpoints.up('md'));\n};\n\nexport const useIsTablet = () => {\n const theme = useTheme();\n return useMediaQuery(theme.breakpoints.between('sm', 'md'));\n};\n\nexport const useIsMobile = () => {\n const theme = useTheme();\n return useMediaQuery(theme.breakpoints.down('sm'));\n};\n","import React from 'react';\nimport MuiButton, { ButtonProps as MuiButtonProps } from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport { colors, deploymentSurfaceTokens } from '../../theme';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary';\n\nexport interface ButtonProps extends Omit<MuiButtonProps, 'variant' | 'color'> {\n /**\n * The visual style variant of the button\n * - primary: Filled button with primary color background\n * - secondary: Outlined button with transparent background and border\n * - tertiary: Text button with no background or border\n */\n variant?: ButtonVariant;\n /**\n * The size of the button\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * Icon element to display before the button text\n */\n startIcon?: React.ReactNode;\n /**\n * Icon element to display after the button text\n */\n endIcon?: React.ReactNode;\n}\n\n// Design system constants matching Figma specs\nconst BUTTON_SPACING = {\n borderRadius: '8px',\n padding: '8px 16px',\n iconMargin: '8px',\n} as const;\n\nconst BUTTON_TYPOGRAPHY = {\n fontSize: '16px',\n fontWeight: 500,\n lineHeight: 1.5,\n letterSpacing: '0.8px',\n} as const;\n\nconst StyledPrimaryButton = styled(MuiButton)(() => ({\n backgroundColor: colors.primary.main,\n color: colors.primary.contrastText,\n '&:hover': {\n backgroundColor: colors.primary.light,\n },\n '&:active': {\n backgroundColor: colors.primary.dark,\n },\n '&:disabled': {\n backgroundColor: colors.grey[300],\n color: colors.grey[500],\n },\n}));\n\nconst iconStyles = {\n '& > *': {\n fontSize: BUTTON_TYPOGRAPHY.fontSize,\n },\n};\n\nconst StyledSecondaryButton = styled(MuiButton)(() => ({\n backgroundColor: deploymentSurfaceTokens.surfaceHigh,\n color: deploymentSurfaceTokens.textPrimary,\n border: `1px solid ${deploymentSurfaceTokens.strokeOutside}`,\n borderRadius: BUTTON_SPACING.borderRadius,\n padding: BUTTON_SPACING.padding,\n textTransform: 'capitalize',\n letterSpacing: BUTTON_TYPOGRAPHY.letterSpacing,\n fontSize: BUTTON_TYPOGRAPHY.fontSize,\n fontWeight: BUTTON_TYPOGRAPHY.fontWeight,\n lineHeight: BUTTON_TYPOGRAPHY.lineHeight,\n '&:hover': {\n backgroundColor: colors.background.selected,\n borderColor: deploymentSurfaceTokens.strokeOutside,\n },\n '&:active': {\n backgroundColor: colors.background.selected,\n borderColor: deploymentSurfaceTokens.borderDefault,\n },\n '&:disabled': {\n borderColor: colors.grey[300],\n color: colors.grey[500],\n backgroundColor: colors.grey[50],\n },\n '& .MuiButton-startIcon': {\n marginRight: BUTTON_SPACING.iconMargin,\n ...iconStyles,\n },\n '& .MuiButton-endIcon': {\n marginLeft: BUTTON_SPACING.iconMargin,\n ...iconStyles,\n },\n}));\n\nconst StyledTertiaryButton = styled(MuiButton)(() => ({\n backgroundColor: 'transparent',\n color: colors.tertiary.main,\n '&:hover': {\n backgroundColor: 'rgba(245, 158, 11, 0.1)',\n },\n '&:active': {\n backgroundColor: 'rgba(245, 158, 11, 0.2)',\n },\n '&:disabled': {\n color: colors.grey[500],\n },\n}));\n\nconst BUTTON_COMPONENTS: Record<ButtonVariant, React.ComponentType<any>> = {\n primary: StyledPrimaryButton,\n secondary: StyledSecondaryButton,\n tertiary: StyledTertiaryButton,\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n children,\n startIcon,\n endIcon,\n ...props\n}) => {\n const ButtonComponent = BUTTON_COMPONENTS[variant];\n const buttonProps = {\n ...props,\n startIcon,\n endIcon,\n };\n\n return <ButtonComponent {...buttonProps}>{children}</ButtonComponent>;\n};\n\n","import React from 'react';\nimport MuiIconButton, { IconButtonProps as MuiIconButtonProps } from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface IconButtonProps extends MuiIconButtonProps {\n variant?: 'default' | 'primary' | 'secondary';\n}\n\nconst StyledIconButton = styled(MuiIconButton, {\n shouldForwardProp: (prop) => prop !== 'buttonVariant',\n})<{ buttonVariant?: string }>(({ buttonVariant = 'default' }) => {\n const variants: Record<string, any> = {\n primary: {\n color: colors.primary.main,\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n },\n secondary: {\n color: colors.text.secondary,\n '&:hover': {\n backgroundColor: colors.grey[50],\n },\n },\n default: {\n color: colors.text.primary,\n '&:hover': {\n backgroundColor: colors.grey[50],\n },\n },\n };\n\n return variants[buttonVariant] || variants.default;\n});\n\nexport const IconButton: React.FC<IconButtonProps> = ({\n variant = 'default',\n ...props\n}) => {\n return <StyledIconButton buttonVariant={variant} {...props} />;\n};\n\n","import React from 'react';\nimport { LoadingButton as MuiLoadingButton, LoadingButtonProps as MuiLoadingButtonProps } from '@mui/lab';\n\nexport interface LoadingButtonProps extends MuiLoadingButtonProps {\n /**\n * If `true`, the button will show a loading indicator\n */\n loading?: boolean;\n /**\n * The loading indicator can be positioned inside the button or in the center\n */\n loadingPosition?: 'start' | 'end' | 'center';\n}\n\n/**\n * LoadingButton component - Button with loading state from MUI Lab\n * \n * @example\n * ```tsx\n * <LoadingButton\n * variant=\"contained\"\n * loading={isLoading}\n * onClick={handleSubmit}\n * >\n * Submit\n * </LoadingButton>\n * ```\n */\nexport const LoadingButton: React.FC<LoadingButtonProps> = ({\n loading = false,\n loadingPosition = 'center',\n ...props\n}) => {\n return (\n <MuiLoadingButton\n loading={loading}\n loadingPosition={loadingPosition}\n {...props}\n />\n );\n};\n\nexport default LoadingButton;\n\n","import React from 'react';\nimport {\n ButtonGroup as MuiButtonGroup,\n ButtonGroupProps as MuiButtonGroupProps,\n} from '@mui/material';\n\nexport interface ButtonGroupProps extends MuiButtonGroupProps {\n /**\n * The content of the button group\n */\n children?: React.ReactNode;\n /**\n * If `true`, the buttons will be disabled\n */\n disabled?: boolean;\n /**\n * If `true`, the button group will take full width\n */\n fullWidth?: boolean;\n /**\n * The orientation of the button group\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n /**\n * The size of the buttons\n * @default 'medium'\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * The variant to use\n * @default 'outlined'\n */\n variant?: 'text' | 'outlined' | 'contained';\n}\n\n/**\n * ButtonGroup component - groups related buttons together\n * \n * @example\n * ```tsx\n * <ButtonGroup variant=\"contained\">\n * <Button>One</Button>\n * <Button>Two</Button>\n * <Button>Three</Button>\n * </ButtonGroup>\n * ```\n */\nexport const ButtonGroup: React.FC<ButtonGroupProps> = ({\n orientation = 'horizontal',\n size = 'medium',\n variant = 'outlined',\n ...props\n}) => {\n return (\n <MuiButtonGroup\n orientation={orientation}\n size={size}\n variant={variant}\n {...props}\n />\n );\n};\n\nexport default ButtonGroup;\n\n","import React from 'react';\nimport MuiTextField, { TextFieldProps as MuiTextFieldProps } from '@mui/material/TextField';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type TextFieldSize = 'small' | 'medium';\n\nexport interface TextFieldProps extends Omit<MuiTextFieldProps, 'size'> {\n size?: TextFieldSize;\n}\n\nconst StyledTextField = styled(MuiTextField)(({ error }) => ({\n '& .MuiOutlinedInput-root': {\n '&:hover fieldset': {\n borderColor: error ? colors.error.main : colors.primary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: error ? colors.error.main : colors.primary.main,\n },\n '&.Mui-error fieldset': {\n borderColor: colors.error.main,\n },\n },\n '& .MuiInputLabel-root': {\n '&.Mui-focused': {\n color: error ? colors.error.main : colors.primary.main,\n },\n },\n}));\n\nexport const TextField: React.FC<TextFieldProps> = ({\n size = 'medium',\n ...props\n}) => {\n return <StyledTextField size={size === 'medium' ? 'medium' : 'small'} {...props} />;\n};\n\n","import React from 'react';\nimport { TextField } from './TextField';\nimport { TextFieldProps } from './TextField';\nimport SearchIcon from '@mui/icons-material/Search';\nimport InputAdornment from '@mui/material/InputAdornment';\n\nexport interface SearchFieldProps extends Omit<TextFieldProps, 'InputProps'> {\n placeholder?: string;\n onSearch?: (value: string) => void;\n}\n\nexport const SearchField: React.FC<SearchFieldProps> = ({\n placeholder = 'Search...',\n onSearch,\n onChange,\n ...props\n}) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n }\n if (onSearch) {\n onSearch(e.target.value);\n }\n };\n\n return (\n <TextField\n placeholder={placeholder}\n onChange={handleChange}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon style={{ fontSize: 18, color: '#999' }} />\n </InputAdornment>\n ),\n }}\n {...props}\n />\n );\n};\n\n","export {\n FormControl,\n FormLabel,\n FormHelperText,\n FormControlLabel,\n InputLabel,\n InputAdornment,\n} from '@mui/material';\nexport type {\n FormControlProps,\n FormLabelProps,\n FormHelperTextProps,\n FormControlLabelProps,\n InputLabelProps,\n InputAdornmentProps,\n} from '@mui/material';\n\n","import React from 'react';\nimport {\n ToggleButton as MuiToggleButton,\n ToggleButtonGroup as MuiToggleButtonGroup,\n ToggleButtonProps as MuiToggleButtonProps,\n ToggleButtonGroupProps as MuiToggleButtonGroupProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type ToggleButtonProps = MuiToggleButtonProps\n\nexport const ToggleButton: React.FC<ToggleButtonProps> = (props) => {\n return <MuiToggleButton {...props} />;\n};\n\nexport type ToggleButtonGroupProps = MuiToggleButtonGroupProps\n\nconst StyledToggleButtonGroup = styled(MuiToggleButtonGroup)({\n '& .MuiToggleButton-root': {\n border: `1px solid ${colors.grey[300]}`,\n '&.Mui-selected': {\n backgroundColor: colors.primary.main,\n color: colors.primary.contrastText,\n '&:hover': {\n backgroundColor: colors.primary.light,\n },\n },\n '&:hover': {\n backgroundColor: colors.grey[50],\n },\n },\n});\n\nexport const ToggleButtonGroup: React.FC<ToggleButtonGroupProps> = (props) => {\n return <StyledToggleButtonGroup {...props} />;\n};\n\n","import React from 'react';\nimport MuiSwitch, { SwitchProps as MuiSwitchProps } from '@mui/material/Switch';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface SwitchProps extends MuiSwitchProps {\n label?: string;\n labelPosition?: 'left' | 'right';\n}\n\nconst StyledSwitch = styled(MuiSwitch)(({ theme }) => ({\n width: 44,\n height: 24,\n padding: 0,\n '& .MuiSwitch-switchBase': {\n padding: 0,\n margin: 2,\n transitionDuration: '300ms',\n '&.Mui-checked': {\n transform: 'translateX(20px)',\n color: '#fff',\n '& + .MuiSwitch-track': {\n backgroundColor: colors.success.main,\n opacity: 1,\n border: 0,\n },\n '&.Mui-disabled + .MuiSwitch-track': {\n opacity: 0.5,\n },\n },\n '&.Mui-focusVisible .MuiSwitch-thumb': {\n color: colors.success.main,\n border: `6px solid #fff`,\n },\n '&.Mui-disabled .MuiSwitch-thumb': {\n color: colors.grey[300],\n },\n '&.Mui-disabled + .MuiSwitch-track': {\n opacity: 0.5,\n backgroundColor: colors.grey[300],\n },\n },\n '& .MuiSwitch-thumb': {\n boxSizing: 'border-box',\n width: 20,\n height: 20,\n },\n '& .MuiSwitch-track': {\n borderRadius: 24 / 2,\n backgroundColor: colors.grey[300],\n opacity: 1,\n transition: theme.transitions.create(['background-color'], {\n duration: 500,\n }),\n },\n}));\n\nexport const Switch: React.FC<SwitchProps> = ({\n label,\n labelPosition = 'right',\n ...props\n}) => {\n const switchComponent = <StyledSwitch {...props} />;\n\n if (!label) {\n return switchComponent;\n }\n\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n {labelPosition === 'left' && <span>{label}</span>}\n {switchComponent}\n {labelPosition === 'right' && <span>{label}</span>}\n </div>\n );\n};\n\n","import React from 'react';\nimport MuiCheckbox, { CheckboxProps as MuiCheckboxProps } from '@mui/material/Checkbox';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nexport interface CheckboxProps extends Omit<MuiCheckboxProps, 'color'> {\n label?: string;\n labelPosition?: 'left' | 'right';\n}\n\nconst StyledCheckbox = styled(MuiCheckbox)(() => ({\n color: colors.grey[400],\n '&.Mui-checked': {\n color: colors.primary.main,\n },\n '&.MuiCheckbox-indeterminate': {\n color: colors.primary.main,\n },\n '&.Mui-disabled': {\n color: colors.grey[300],\n },\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n '&.Mui-focusVisible': {\n outline: `2px solid ${colors.primary.main}`,\n outlineOffset: 2,\n },\n}));\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n label,\n labelPosition = 'right',\n ...props\n}) => {\n const checkboxComponent = <StyledCheckbox {...props} />;\n\n if (!label) {\n return checkboxComponent;\n }\n\n const labelPlacementMap: Record<string, 'start' | 'end' | 'top' | 'bottom'> = {\n left: 'start',\n right: 'end',\n };\n\n return (\n <FormControlLabel\n control={checkboxComponent}\n label={label}\n labelPlacement={labelPlacementMap[labelPosition] || 'end'}\n />\n );\n};\n\n","import React from 'react';\nimport MuiRadio, { RadioProps as MuiRadioProps } from '@mui/material/Radio';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\n\nexport interface RadioProps extends Omit<MuiRadioProps, 'color'> {\n label?: string;\n labelPosition?: 'left' | 'right';\n}\n\nconst StyledRadio = styled(MuiRadio)(() => ({\n color: colors.grey[400],\n '&.Mui-checked': {\n color: colors.primary.main,\n },\n '&.Mui-disabled': {\n color: colors.grey[300],\n },\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n '&.Mui-focusVisible': {\n outline: `2px solid ${colors.primary.main}`,\n outlineOffset: 2,\n },\n}));\n\nexport const Radio: React.FC<RadioProps> = ({\n label,\n labelPosition = 'right',\n ...props\n}) => {\n const radioComponent = <StyledRadio {...props} />;\n\n if (!label) {\n return radioComponent;\n }\n\n const labelPlacementMap: Record<string, 'start' | 'end' | 'top' | 'bottom'> = {\n left: 'start',\n right: 'end',\n };\n\n return (\n <FormControlLabel\n control={radioComponent}\n label={label}\n labelPlacement={labelPlacementMap[labelPosition] || 'end'}\n />\n );\n};\n\nexport { RadioGroup };\n\n","import { Popover, PopoverProps } from '@mui/material';\nimport { ReactNode, Ref, useCallback, useRef } from 'react';\n\nimport { DropdownAnchor, DropdownAnchorProps } from './DropdownAnchor';\n\ntype RenderAnchorOptions = {\n ref: Ref<any>;\n open: boolean;\n onOpen: () => void;\n};\n\nexport type DropdownProps = Pick<PopoverProps, 'open' | 'children'> &\n Omit<DropdownAnchorProps, 'open'> & {\n direction?: 'right' | 'left';\n dense?: boolean;\n disableGutters?: boolean;\n disablePaddings?: boolean;\n onToggle?: (open: boolean) => void;\n renderAnchor?: (options: RenderAnchorOptions) => ReactNode;\n variant: 'header' | 'button';\n };\n\nexport const Dropdown = ({\n open,\n label,\n leftElement,\n direction = 'left',\n children,\n onToggle,\n dense = false,\n disableGutters = false,\n disablePaddings = false,\n variant,\n renderAnchor = ({ ref, open, onOpen }) => (\n <DropdownAnchor ref={ref} open={open} label={label} leftElement={leftElement} onOpen={onOpen} variant={variant} />\n ),\n}: DropdownProps) => {\n const anchorRef = useRef(null);\n const horizontal = direction === 'left' ? 'right' : 'left';\n const onOpen = useCallback(() => onToggle?.(true), [onToggle]);\n const padding = dense ? 1 : 2;\n\n return (\n <>\n {renderAnchor({ ref: anchorRef, onOpen, open })}\n <Popover\n aria-label=\"Overlay\"\n open={open}\n onClose={() => onToggle?.(false)}\n anchorEl={anchorRef.current}\n anchorOrigin={{\n horizontal,\n vertical: 'bottom',\n }}\n transformOrigin={{\n horizontal,\n vertical: -8,\n }}\n slotProps={{\n paper: {\n elevation: 0,\n sx: {\n padding: disablePaddings ? 0 : padding,\n paddingX: !disablePaddings && disableGutters ? 0 : padding,\n borderRadius: 3,\n border: '1px solid',\n borderColor: 'divider',\n boxShadow: 2,\n },\n },\n }}\n >\n {children}\n </Popover>\n </>\n );\n};\n","import { forwardRef, ReactNode, Ref } from 'react';\nimport { Stack, styled, avatarClasses, Typography, Button } from '@mui/material';\nimport { ArrowDropUp, ArrowDropDown } from '@mui/icons-material';\n\nexport type DropdownAnchorProps = {\n open?: boolean;\n label?: ReactNode;\n leftElement?: ReactNode;\n onOpen?: () => void;\n variant?: 'header' | 'button';\n};\n\nconst Clickable = styled(Button)({\n padding: 0,\n});\n\nconst Anchor = styled(Stack)<{ variant?: DropdownAnchorProps['variant'] }>(({ theme, variant }) => ({\n height: 40,\n borderRadius: 25,\n padding: theme.spacing(1),\n color: theme.palette.text.secondary,\n backgroundColor: variant !== 'header' ? theme.palette.grey[200] : 'transparent',\n cursor: 'pointer',\n}));\n\nconst Left = styled('div')(({ theme }) => ({\n [`& .${avatarClasses.root}`]: {\n width: 30,\n height: 30,\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: theme.palette.background.paper,\n },\n}));\n\nconst Center = styled(Typography)(({ theme }) => ({\n fontWeight: theme.typography.fontWeightBold,\n color: theme.palette.text.primary,\n}));\n\nexport const DropdownAnchor = forwardRef(\n ({ open, label, leftElement, onOpen, variant, ...props }: DropdownAnchorProps, ref: Ref<HTMLButtonElement>) => (\n <Clickable ref={ref} {...props} color=\"inherit\" variant=\"text\" onClick={onOpen}>\n <Anchor variant={variant} spacing={1} direction=\"row\" alignItems=\"stretch\">\n <Left>{leftElement}</Left>\n <Center variant=\"body1\">{label}</Center>\n {variant !== 'header' && (open ? <ArrowDropUp /> : <ArrowDropDown />)}\n </Anchor>\n </Clickable>\n ),\n);\n\nDropdownAnchor.displayName = 'DropdownAnchor';\n","import React from 'react';\nimport {\n Drawer,\n List,\n styled,\n Box,\n} from '@mui/material';\nimport { colors } from '../../theme';\nimport { SidebarItem, SidebarItemProps } from './SidebarItem';\n\nexport interface SidebarProps {\n open?: boolean;\n width?: number;\n items: SidebarItemProps[];\n onClose?: () => void;\n variant?: 'permanent' | 'persistent' | 'temporary';\n}\n\nconst StyledDrawer = styled(Drawer)(() => ({\n '& .MuiDrawer-paper': {\n backgroundColor: colors.background.paper,\n borderRight: `1px solid ${colors.grey[200]}`,\n boxShadow: 'none',\n },\n}));\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n open = true,\n width = 280,\n items,\n onClose,\n variant = 'permanent',\n}) => {\n return (\n <StyledDrawer\n variant={variant}\n open={open}\n onClose={onClose}\n sx={{\n width,\n flexShrink: 0,\n '& .MuiDrawer-paper': {\n width,\n boxSizing: 'border-box',\n },\n }}\n >\n <Box sx={{ overflow: 'auto', padding: '8px 0' }}>\n <List>\n {items.map((item, index) => (\n <SidebarItem key={index} {...item} />\n ))}\n </List>\n </Box>\n </StyledDrawer>\n );\n};\n\n","import React from 'react';\nimport {\n ListItemButton,\n ListItemIcon,\n ListItemText,\n styled,\n} from '@mui/material';\nimport { colors } from '../../theme';\n\nexport interface SidebarItemProps {\n label: string;\n icon?: React.ReactNode;\n selected?: boolean;\n onClick?: () => void;\n size?: 'small' | 'medium' | 'large';\n endIcon?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nconst StyledListItemButton = styled(ListItemButton, {\n shouldForwardProp: (prop) => prop !== 'selected' && prop !== 'size',\n})<{ selected?: boolean; size?: string }>(({ selected, size = 'medium' }) => {\n const heightMap: Record<string, string> = {\n small: '40px',\n medium: '56px',\n large: '64px',\n };\n\n return {\n height: heightMap[size],\n paddingLeft: '16px',\n paddingRight: '16px',\n borderRadius: '8px',\n margin: '4px 8px',\n color: selected ? colors.primary.main : colors.text.primary,\n backgroundColor: selected ? colors.background.selected : 'transparent',\n '&:hover': {\n backgroundColor: selected ? colors.background.selected : colors.grey[50],\n },\n '& .MuiListItemIcon-root': {\n color: selected ? colors.primary.main : colors.text.secondary,\n minWidth: '40px',\n },\n '& .MuiListItemText-primary': {\n fontWeight: selected ? 600 : 400,\n color: selected ? colors.primary.main : colors.text.primary,\n },\n };\n});\n\nexport const SidebarItem: React.FC<SidebarItemProps> = ({\n label,\n icon,\n selected = false,\n onClick,\n size = 'medium',\n endIcon,\n children,\n}) => {\n return (\n <StyledListItemButton selected={selected} size={size} onClick={onClick}>\n {icon && <ListItemIcon>{icon}</ListItemIcon>}\n <ListItemText primary={label} />\n {endIcon && <div style={{ marginLeft: 'auto' }}>{endIcon}</div>}\n {children}\n </StyledListItemButton>\n );\n};\n\n","import React, { useState, useCallback } from 'react';\nimport {\n Box,\n Typography,\n Avatar,\n Tooltip,\n IconButton,\n Link,\n Chip,\n TextField,\n InputAdornment,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Button,\n Menu,\n} from '@mui/material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport ArchiveIcon from '@mui/icons-material/Archive';\nimport UnarchiveIcon from '@mui/icons-material/Unarchive';\nimport SearchIcon from '@mui/icons-material/Search';\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport PersonAddAltIcon from '@mui/icons-material/PersonAddAlt';\n\nexport interface Service {\n id: string;\n name: string;\n description?: string;\n type?: string;\n lastAccessed?: string;\n memberCount?: number;\n favorited?: boolean;\n isPersonal?: boolean;\n avatar?: string;\n archived?: boolean;\n}\n\nexport interface ServiceSelectorButtonProps {\n /**\n * List of services to display\n */\n services: Service[];\n /**\n * Currently selected service ID\n */\n selectedServiceId: string | null;\n /**\n * Loading state\n */\n loading?: boolean;\n /**\n * Compact mode for mobile or mini-sidebar\n */\n compact?: boolean;\n /**\n * Callback when service is selected\n */\n onSelectService?: (serviceId: string) => void;\n /**\n * Callback when service name is clicked (for navigation)\n */\n onServiceClick?: (serviceId: string) => void;\n /**\n * Callback when \"Create Service\" is clicked\n */\n onCreateService?: () => void;\n /**\n * Callback after service is created\n */\n onServiceCreated?: () => void;\n /**\n * Whether user is a manager for the selected service\n */\n isManager?: boolean;\n /**\n * Custom styles\n */\n sx?: never;\n /**\n * Panel width\n * @default 350\n */\n panelWidth?: number;\n /**\n * Callback when Settings button is clicked\n */\n onOpenSettings?: (serviceId: string) => void;\n /**\n * Callback when Add Member button is clicked\n */\n onOpenAddMember?: (serviceId: string) => void;\n}\n\nexport const ServiceSelectorButton: React.FC<ServiceSelectorButtonProps> = ({\n services,\n selectedServiceId,\n loading = false,\n compact = false,\n onSelectService,\n onServiceClick,\n onCreateService,\n onServiceCreated,\n isManager = false,\n sx = {},\n panelWidth = 350,\n onOpenSettings,\n onOpenAddMember,\n}) => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [searchTerm, setSearchTerm] = useState('');\n const [showArchived, setShowArchived] = useState(false);\n\n // Handle opening the service selector\n const handleOpenSelector = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n // Handle closing the service selector\n const handleClose = () => {\n setAnchorEl(null);\n setSearchTerm('');\n setShowArchived(false);\n };\n\n // Handle clicking on the service name (navigates to dashboard)\n const handleServiceClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (selectedServiceId && onServiceClick) {\n onServiceClick(selectedServiceId);\n }\n };\n\n // Handle selecting a service\n const handleSelectService = useCallback(\n (serviceId: string) => {\n handleClose();\n if (onSelectService) {\n onSelectService(serviceId);\n }\n },\n [onSelectService]\n );\n\n const handleCreateClick = () => {\n handleClose();\n if (onCreateService) {\n onCreateService();\n }\n };\n\n // Get the selected service\n const selectedService = Array.isArray(services)\n ? services.find((s) => s.id === selectedServiceId)\n : null;\n\n // Filter services based on search term and archived status\n const filteredServices = services.filter((service) => {\n const matchesSearch =\n searchTerm === '' ||\n service.name.toLowerCase().includes(searchTerm.toLowerCase());\n const isArchived = service.archived === true;\n const matchesArchivedFilter = showArchived ? isArchived : !isArchived;\n return matchesSearch && matchesArchivedFilter;\n });\n\n // Compact version for mobile or mini-sidebar\n if (compact) {\n return (\n <>\n <Box sx={{ position: 'relative' }}>\n <Tooltip title=\"Select service\" placement=\"right\">\n <IconButton\n onClick={handleOpenSelector}\n sx={{\n p: 1,\n '&:hover': {\n bgcolor: 'rgba(0, 0, 0, 0.04)',\n },\n ...sx,\n }}\n >\n <Avatar\n sx={{\n width: 32,\n height: 32,\n bgcolor: selectedServiceId ? 'primary.main' : 'grey.400',\n fontSize: '0.9rem',\n }}\n >\n {selectedService ? selectedService.name.charAt(0) : 'D'}\n </Avatar>\n </IconButton>\n </Tooltip>\n </Box>\n\n <ServiceSelectorPanel\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleClose}\n services={services}\n selectedServiceId={selectedServiceId}\n onSelectService={handleSelectService}\n onCreateService={handleCreateClick}\n onServiceCreated={onServiceCreated}\n loading={loading}\n width={panelWidth}\n isManager={isManager}\n selectedService={selectedService}\n searchTerm={searchTerm}\n onSearchChange={setSearchTerm}\n showArchived={showArchived}\n onToggleArchived={() => setShowArchived(!showArchived)}\n filteredServices={filteredServices}\n onOpenSettings={onOpenSettings}\n onOpenAddMember={onOpenAddMember}\n />\n </>\n );\n }\n\n // Standard breadcrumb style\n return (\n <>\n <Box sx={{ display: 'flex', alignItems: 'center', ...sx }}>\n {selectedService ? (\n <>\n {/* Service name as a regular breadcrumb link if user is manager, otherwise just text */}\n {isManager ? (\n <Link\n underline=\"hover\"\n color=\"inherit\"\n onClick={handleServiceClick}\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontSize: '0.875rem',\n cursor: 'pointer',\n mr: 0.5,\n }}\n >\n <Avatar\n sx={{\n width: 20,\n height: 20,\n bgcolor: 'primary.main',\n fontSize: '0.7rem',\n mr: 0.5,\n }}\n >\n {selectedService.name.charAt(0)}\n </Avatar>\n {selectedService.name}\n </Link>\n ) : (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontSize: '0.875rem',\n mr: 0.5,\n color: 'text.primary',\n }}\n >\n <Avatar\n sx={{\n width: 20,\n height: 20,\n bgcolor: 'primary.main',\n fontSize: '0.7rem',\n mr: 0.5,\n }}\n >\n {selectedService.name.charAt(0)}\n </Avatar>\n {selectedService.name}\n </Box>\n )}\n\n {/* Show archived chip if service is archived */}\n {selectedService.archived && (\n <Chip\n size=\"small\"\n label=\"Archived\"\n color=\"error\"\n variant=\"outlined\"\n sx={{\n ml: 0.5,\n height: 20,\n fontSize: '0.8rem',\n '& .MuiChip-label': { px: 1 },\n '& .MuiChip-icon': { fontSize: '0.7rem', ml: 0.5 },\n }}\n />\n )}\n </>\n ) : (\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n sx={{\n fontSize: '0.875rem',\n }}\n >\n Select Service\n </Typography>\n )}\n\n {/* Separate selector button */}\n <IconButton\n onClick={handleOpenSelector}\n size=\"small\"\n sx={{\n p: 0.2,\n ml: 0.5,\n color: 'text.secondary',\n }}\n >\n <KeyboardArrowDownIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n <ServiceSelectorPanel\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleClose}\n services={services}\n selectedServiceId={selectedServiceId}\n onSelectService={handleSelectService}\n onCreateService={handleCreateClick}\n onServiceCreated={onServiceCreated}\n loading={loading}\n width={panelWidth}\n isManager={isManager}\n selectedService={selectedService}\n searchTerm={searchTerm}\n onSearchChange={setSearchTerm}\n showArchived={showArchived}\n onToggleArchived={() => setShowArchived(!showArchived)}\n filteredServices={filteredServices}\n onOpenSettings={onOpenSettings}\n onOpenAddMember={onOpenAddMember}\n />\n </>\n );\n};\n\ninterface ServiceSelectorPanelProps {\n open: boolean;\n anchorEl: HTMLElement | null;\n onClose: () => void;\n services: Service[];\n selectedServiceId: string | null;\n onSelectService: (serviceId: string) => void;\n onCreateService?: () => void;\n onServiceCreated?: () => void;\n loading?: boolean;\n width?: number;\n isManager?: boolean;\n selectedService?: Service | null;\n searchTerm?: string;\n onSearchChange?: (term: string) => void;\n showArchived?: boolean;\n onToggleArchived?: () => void;\n filteredServices?: Service[];\n onOpenSettings?: (serviceId: string) => void;\n onOpenAddMember?: (serviceId: string) => void;\n}\n\nconst ServiceSelectorPanel: React.FC<ServiceSelectorPanelProps> = ({\n open,\n anchorEl,\n onClose,\n services,\n selectedServiceId,\n onSelectService,\n onCreateService,\n onServiceCreated,\n loading = false,\n width = 350,\n isManager = false,\n selectedService,\n searchTerm: externalSearchTerm,\n onSearchChange: externalOnSearchChange,\n showArchived: externalShowArchived,\n onToggleArchived: externalOnToggleArchived,\n filteredServices: externalFilteredServices,\n onOpenSettings,\n onOpenAddMember,\n}) => {\n const [internalSearchTerm, setInternalSearchTerm] = useState('');\n const [internalShowArchived, setInternalShowArchived] = useState(false);\n\n const searchTerm = externalSearchTerm !== undefined ? externalSearchTerm : internalSearchTerm;\n const setSearchTerm = externalOnSearchChange || setInternalSearchTerm;\n const showArchived = externalShowArchived !== undefined ? externalShowArchived : internalShowArchived;\n const toggleArchived = externalOnToggleArchived || (() => setInternalShowArchived(!internalShowArchived));\n\n // Filter services if not provided externally\n const filteredServices =\n externalFilteredServices ||\n services.filter((service) => {\n const matchesSearch =\n searchTerm === '' ||\n service.name.toLowerCase().includes(searchTerm.toLowerCase());\n const isArchived = service.archived === true;\n const matchesArchivedFilter = showArchived ? isArchived : !isArchived;\n return matchesSearch && matchesArchivedFilter;\n });\n\n const handleCreateClick = () => {\n if (onCreateService) {\n onCreateService();\n } else {\n // If no onCreateService handler, just close and call onServiceCreated\n onClose();\n if (onServiceCreated) {\n onServiceCreated();\n }\n }\n };\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n PaperProps={{\n sx: {\n width: width,\n maxHeight: '80vh',\n borderRadius: 1,\n boxShadow: '0 2px 10px rgba(0, 0, 0, 0.12)',\n overflow: 'hidden',\n mt: 1,\n },\n }}\n >\n {/* Header with selected service and management buttons */}\n {selectedService && (\n <Box\n sx={{\n paddingLeft: 2,\n paddingRight: 2,\n paddingTop: 1.5,\n paddingBottom: 1.5,\n borderBottom: 1,\n borderColor: 'divider',\n }}\n >\n {/* Top section with service name */}\n <Box sx={{\n display: 'flex',\n alignItems: 'center',\n mb: 1.5\n }}>\n <Avatar\n sx={{\n width: 32,\n height: 32,\n bgcolor: 'primary.main',\n fontSize: '0.9rem',\n mr: 1.5\n }}\n >\n {selectedService.name.charAt(0)}\n </Avatar>\n <Box sx={{ flex: 1 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 600, fontSize: '1rem' }}>\n {selectedService.name}\n </Typography>\n <Box\n sx={{\n display: 'inline-block',\n bgcolor: 'rgba(0, 0, 0, 0.04)',\n color: 'text.secondary',\n px: 1,\n py: 0.3,\n borderRadius: '12px',\n fontSize: '0.7rem',\n fontWeight: 500,\n lineHeight: 1,\n }}\n >\n {isManager ? 'Manager' : 'Viewer'}\n </Box>\n </Box>\n </Box>\n </Box>\n\n {/* Bottom section with management buttons - always visible */}\n {(onOpenSettings || onOpenAddMember) && (\n <Box sx={{ display: 'flex', gap: 1 }}>\n {onOpenAddMember && (\n <Button\n startIcon={<PersonAddAltIcon />}\n variant=\"outlined\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n onOpenAddMember(selectedServiceId || '');\n }}\n disabled={!isManager}\n sx={{\n flex: 1,\n textTransform: 'none',\n color: 'text.secondary',\n fontSize: '0.8rem',\n py: 0.75,\n justifyContent: 'flex-start',\n borderColor: 'rgba(0, 0, 0, 0.12)',\n borderRadius: '6px',\n '&:hover': {\n borderColor: 'rgba(0, 0, 0, 0.23)',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'not-allowed'\n }\n }}\n >\n Add member\n </Button>\n )}\n\n {onOpenSettings && (\n <Button\n startIcon={<SettingsIcon />}\n variant=\"outlined\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n onOpenSettings(selectedServiceId || '');\n }}\n disabled={!isManager}\n sx={{\n flex: 1,\n textTransform: 'none',\n color: 'text.secondary',\n fontSize: '0.8rem',\n py: 0.75,\n justifyContent: 'flex-start',\n borderColor: 'rgba(0, 0, 0, 0.12)',\n borderRadius: '6px',\n '&:hover': {\n borderColor: 'rgba(0, 0, 0, 0.23)',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'not-allowed'\n }\n }}\n >\n Settings\n </Button>\n )}\n </Box>\n )}\n </Box>\n )}\n\n {/* Search box with archive toggle */}\n <Box sx={{ px: 2, pt: 2, pb: 1.5 }}>\n <Box sx={{ display: 'flex', alignItems: 'center', mb: 1.5 }}>\n <TextField\n size=\"small\"\n placeholder=\"Search services...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n sx={{ flex: 1 }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" color=\"action\" />\n </InputAdornment>\n ),\n sx: {\n borderRadius: 1.5,\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n '& fieldset': { border: 'none' },\n py: 0.5,\n },\n }}\n />\n <Tooltip title={showArchived ? 'Show active' : 'Show archived'}>\n <IconButton\n size=\"small\"\n onClick={toggleArchived}\n color={showArchived ? 'primary' : 'default'}\n sx={{ ml: 1 }}\n >\n {showArchived ? (\n <UnarchiveIcon fontSize=\"small\" />\n ) : (\n <ArchiveIcon fontSize=\"small\" />\n )}\n </IconButton>\n </Tooltip>\n </Box>\n\n {/* Service list content */}\n <Box\n sx={{\n maxHeight: 400,\n overflow: 'auto',\n py: 1,\n }}\n >\n {loading ? (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Loading services...\n </Typography>\n </Box>\n ) : filteredServices.length === 0 ? (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {searchTerm\n ? `No ${showArchived ? 'archived ' : ''}services matching \"${searchTerm}\"`\n : showArchived\n ? 'No archived services found'\n : 'No active services found'}\n </Typography>\n </Box>\n ) : (\n <>\n {/* Group Header */}\n <Typography\n variant=\"caption\"\n sx={{\n display: 'block',\n px: 2.5,\n py: 0.5,\n color: 'text.secondary',\n fontWeight: 600,\n textTransform: 'uppercase',\n fontSize: '0.65rem',\n letterSpacing: 0.5,\n }}\n >\n Services\n {showArchived && (\n <Chip\n size=\"small\"\n label=\"Archived\"\n color=\"error\"\n variant=\"outlined\"\n sx={{\n ml: 1,\n height: 20,\n fontSize: '0.6rem',\n '& .MuiChip-label': { px: 0.5 },\n '& .MuiChip-icon': { fontSize: '0.7rem', ml: 0.5 },\n }}\n />\n )}\n </Typography>\n\n {/* Group Services */}\n <List disablePadding>\n {filteredServices.map((service) => (\n <ListItem\n key={service.id}\n sx={{\n py: 0.75,\n px: 2,\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n },\n backgroundColor:\n service.id === selectedServiceId\n ? 'rgba(25, 118, 210, 0.08)'\n : 'transparent',\n position: 'relative',\n }}\n onClick={() => onSelectService(service.id)}\n secondaryAction={\n service.id === selectedServiceId ? (\n <CheckIcon\n sx={{\n color: 'primary.main',\n fontSize: '1.2rem',\n }}\n />\n ) : null\n }\n >\n <ListItemAvatar sx={{ minWidth: 40 }}>\n <Avatar\n sx={{\n width: 26,\n height: 26,\n bgcolor:\n service.id === selectedServiceId ? 'primary.main' : 'grey.400',\n fontSize: '0.8rem',\n }}\n src={service.avatar}\n >\n {service.name.charAt(0)}\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography\n variant=\"body2\"\n sx={{\n fontWeight: service.id === selectedServiceId ? 600 : 400,\n color:\n service.id === selectedServiceId\n ? 'primary.main'\n : 'text.primary',\n }}\n >\n {service.name}\n </Typography>\n </Box>\n }\n primaryTypographyProps={{ sx: { fontWeight: 500 } }}\n sx={{ my: 0 }}\n />\n </ListItem>\n ))}\n </List>\n </>\n )}\n </Box>\n\n {/* Footer actions */}\n <Box\n sx={{\n paddingTop: 2,\n paddingLeft: 2,\n paddingRight: 2,\n borderTop: 1,\n borderColor: 'divider',\n }}\n >\n <Button\n fullWidth\n variant=\"text\"\n startIcon={<AddIcon />}\n onClick={handleCreateClick}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n justifyContent: 'flex-start',\n color: 'primary.main',\n py: 1,\n px: 1.5,\n '&:hover': {\n backgroundColor: 'rgba(25, 118, 210, 0.08)',\n },\n }}\n >\n New Service\n </Button>\n </Box>\n </Box>\n </Menu>\n );\n};\n\nexport default ServiceSelectorButton;\n\n","import React, { useState, useCallback } from 'react';\nimport {\n Box,\n Typography,\n Avatar,\n IconButton,\n Link,\n TextField,\n InputAdornment,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Button,\n Menu,\n} from '@mui/material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport SearchIcon from '@mui/icons-material/Search';\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\n\nexport interface Workspace {\n id: string;\n name: string;\n description?: string;\n}\n\nexport interface WorkspaceSelectorButtonProps {\n /**\n * List of workspaces to display\n */\n workspaces: Workspace[];\n /**\n * Currently selected workspace ID\n */\n selectedWorkspaceId: string | null;\n /**\n * Loading state\n */\n loading?: boolean;\n /**\n * Callback when workspace is selected\n */\n onSelectWorkspace?: (workspaceId: string) => void;\n /**\n * Callback when workspace name is clicked (for navigation)\n */\n onWorkspaceClick?: (workspaceId: string) => void;\n /**\n * Callback when \"Create Workspace\" is clicked\n */\n onCreateWorkspace?: () => void;\n /**\n * Custom styles\n */\n sx?: any;\n /**\n * Panel width\n * @default 350\n */\n panelWidth?: number;\n}\n\nexport const WorkspaceSelectorButton: React.FC<WorkspaceSelectorButtonProps> = ({\n workspaces,\n selectedWorkspaceId,\n loading = false,\n onSelectWorkspace,\n onWorkspaceClick,\n onCreateWorkspace,\n sx = {},\n panelWidth = 350,\n}) => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n // Handle opening the workspace selector\n const handleOpenSelector = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n // Handle closing the workspace selector\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n // Handle selecting a workspace\n const handleSelectWorkspace = useCallback(\n (workspaceId: string) => {\n handleClose();\n if (onSelectWorkspace) {\n onSelectWorkspace(workspaceId);\n }\n },\n [onSelectWorkspace]\n );\n\n // Get the selected workspace\n const selectedWorkspace = Array.isArray(workspaces)\n ? workspaces.find((w) => w.id === selectedWorkspaceId)\n : null;\n\n if (!workspaces || workspaces.length === 0) {\n return null;\n }\n\n return (\n <>\n <Box sx={{ display: 'flex', alignItems: 'center', ...sx }}>\n {selectedWorkspace ? (\n <>\n {/* Workspace name as a regular breadcrumb link */}\n <Link\n underline=\"hover\"\n color=\"inherit\"\n onClick={(e) => {\n e.stopPropagation();\n if (onWorkspaceClick) {\n onWorkspaceClick(selectedWorkspace.id);\n }\n }}\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontSize: '0.875rem',\n cursor: 'pointer',\n mr: 0.5,\n }}\n >\n <Avatar\n sx={{\n width: 20,\n height: 20,\n bgcolor: 'secondary.main',\n fontSize: '0.7rem',\n mr: 0.5,\n }}\n >\n {selectedWorkspace.name.charAt(0)}\n </Avatar>\n {selectedWorkspace.name}\n </Link>\n </>\n ) : (\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n sx={{\n fontSize: '0.875rem',\n }}\n >\n Select Workspace\n </Typography>\n )}\n\n {/* Separate selector button */}\n <IconButton\n onClick={handleOpenSelector}\n size=\"small\"\n sx={{\n p: 0.2,\n ml: 0.5,\n color: 'text.secondary',\n }}\n >\n <KeyboardArrowDownIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n <WorkspaceSelectorPanel\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleClose}\n workspaces={workspaces}\n selectedWorkspaceId={selectedWorkspaceId}\n onSelectWorkspace={handleSelectWorkspace}\n onCreateWorkspace={onCreateWorkspace}\n loading={loading}\n width={panelWidth}\n />\n </>\n );\n};\n\ninterface WorkspaceSelectorPanelProps {\n open: boolean;\n anchorEl: HTMLElement | null;\n onClose: () => void;\n workspaces: Workspace[];\n selectedWorkspaceId: string | null;\n onSelectWorkspace: (workspaceId: string) => void;\n onCreateWorkspace?: () => void;\n loading?: boolean;\n width?: number;\n}\n\nconst WorkspaceSelectorPanel: React.FC<WorkspaceSelectorPanelProps> = ({\n open,\n anchorEl,\n onClose,\n workspaces,\n selectedWorkspaceId,\n onSelectWorkspace,\n onCreateWorkspace,\n loading = false,\n width = 350,\n}) => {\n const [searchTerm, setSearchTerm] = useState('');\n\n // Reset search when panel opens\n React.useEffect(() => {\n if (open) {\n setSearchTerm('');\n }\n }, [open]);\n\n const filteredWorkspaces = workspaces.filter((w) =>\n w.name.toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n const handleCreateClick = () => {\n onClose();\n if (onCreateWorkspace) {\n onCreateWorkspace();\n }\n };\n\n const handleSelect = (workspaceId: string) => {\n onSelectWorkspace(workspaceId);\n onClose();\n };\n\n return (\n <Menu\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n PaperProps={{\n sx: {\n width: width,\n maxHeight: 600,\n mt: 1,\n borderRadius: 2,\n },\n }}\n >\n <Box>\n {/* Search box */}\n <Box sx={{ px: 2, pt: 2, pb: 1.5 }}>\n <TextField\n fullWidth\n size=\"small\"\n placeholder=\"Search workspaces...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n\n {/* Workspace list */}\n <Box sx={{ maxHeight: 400, overflowY: 'auto' }}>\n {loading ? (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Loading...\n </Typography>\n </Box>\n ) : filteredWorkspaces.length === 0 ? (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n No workspaces found\n </Typography>\n </Box>\n ) : (\n <List dense>\n {filteredWorkspaces.map((workspace) => (\n <ListItem\n key={workspace.id}\n onClick={() => handleSelect(workspace.id)}\n sx={{\n py: 0.5,\n cursor: 'pointer',\n bgcolor:\n workspace.id === selectedWorkspaceId\n ? 'action.selected'\n : 'transparent',\n '&:hover': {\n bgcolor: 'action.hover',\n },\n }}\n >\n <ListItemAvatar>\n <Avatar\n sx={{ width: 32, height: 32, bgcolor: 'secondary.main' }}\n >\n {workspace.name.charAt(0)}\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Typography variant=\"body2\" fontWeight={500}>\n {workspace.name}\n </Typography>\n {workspace.id === selectedWorkspaceId && (\n <CheckIcon fontSize=\"small\" color=\"primary\" />\n )}\n </Box>\n }\n secondary={workspace.description}\n />\n </ListItem>\n ))}\n </List>\n )}\n </Box>\n\n {/* Footer actions */}\n <Box\n sx={{\n paddingTop: 2,\n paddingLeft: 2,\n paddingRight: 2,\n borderTop: 1,\n borderColor: 'divider',\n }}\n >\n <Button\n fullWidth\n variant=\"text\"\n startIcon={<AddIcon />}\n onClick={handleCreateClick}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n justifyContent: 'flex-start',\n color: 'primary.main',\n py: 1,\n px: 1.5,\n '&:hover': {\n backgroundColor: 'rgba(25, 118, 210, 0.08)',\n },\n }}\n >\n New Workspace\n </Button>\n </Box>\n </Box>\n </Menu>\n );\n};\n\nexport default WorkspaceSelectorButton;\n\n","import React from 'react';\nimport {\n Stepper as MuiStepper,\n Step as MuiStep,\n StepLabel as MuiStepLabel,\n StepContent as MuiStepContent,\n StepButton as MuiStepButton,\n StepperProps as MuiStepperProps,\n StepProps as MuiStepProps,\n StepLabelProps as MuiStepLabelProps,\n StepContentProps as MuiStepContentProps,\n StepButtonProps as MuiStepButtonProps,\n} from '@mui/material';\n\nexport type StepperProps = MuiStepperProps\n\n/**\n * Stepper component - displays progress through a sequence of steps\n *\n * @example\n * ```tsx\n * <Stepper activeStep={activeStep}>\n * <Step>\n * <StepLabel>Step 1</StepLabel>\n * </Step>\n * <Step>\n * <StepLabel>Step 2</StepLabel>\n * </Step>\n * </Stepper>\n * ```\n */\nexport const Stepper: React.FC<StepperProps> = (props) => {\n return <MuiStepper {...props} />;\n};\n\nexport type StepProps = MuiStepProps\n\n/**\n * Step component - represents a single step in a Stepper\n */\nexport const Step: React.FC<StepProps> = (props) => {\n return <MuiStep {...props} />;\n};\n\nexport type StepLabelProps = MuiStepLabelProps\n\n/**\n * StepLabel component - label for a Step\n */\nexport const StepLabel: React.FC<StepLabelProps> = (props) => {\n return <MuiStepLabel {...props} />;\n};\n\nexport type StepContentProps = MuiStepContentProps\n\n/**\n * StepContent component - optional content that appears below a StepLabel\n */\nexport const StepContent: React.FC<StepContentProps> = (props) => {\n return <MuiStepContent {...props} />;\n};\n\nexport type StepButtonProps = MuiStepButtonProps\n\n/**\n * StepButton component - makes a Step clickable\n */\nexport const StepButton: React.FC<StepButtonProps> = (props) => {\n return <MuiStepButton {...props} />;\n};\n\nexport default Stepper;\n\n","/**\n * SideNav Component\n * Main container for side navigation with compound components\n * V2: Added collapsed state support with animated transitions\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { Box } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport type { SideNavProps, SideNavHeaderSlotProps, SideNavNavigationProps, SideNavFooterProps } from './types';\nimport { scrollbarStyles } from './styles';\n\n// Context to pass collapsed state and handlers to child components\ninterface SideNavContextValue {\n collapsed: boolean;\n showTooltips: boolean;\n onToggleCollapse?: () => void;\n}\n\nconst SideNavContext = React.createContext<SideNavContextValue>({\n collapsed: false,\n showTooltips: true,\n});\n\n/**\n * Styled main container with collapsed state support\n */\nconst SideNavContainer = styled(Box, {\n shouldForwardProp: (prop) => !['navWidth', 'navPosition', 'showBorder', 'backgroundColor', 'isCollapsed', 'collapsedWidth', 'transitionDuration'].includes(prop as string),\n})<{\n navWidth?: number;\n navPosition?: string;\n showBorder?: boolean;\n backgroundColor?: string;\n isCollapsed?: boolean;\n collapsedWidth?: number;\n transitionDuration?: number;\n}>(({ theme, navWidth = 280, navPosition = 'left', showBorder = true, backgroundColor, isCollapsed = false, collapsedWidth = 68, transitionDuration = 300 }) => ({\n width: isCollapsed ? collapsedWidth : navWidth,\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: backgroundColor || theme.palette.background.paper,\n overflow: 'hidden',\n transition: `width ${transitionDuration}ms ${theme.transitions.easing.easeInOut}`,\n\n // Disable transition for reduced motion preference\n '@media (prefers-reduced-motion: reduce)': {\n transition: 'none',\n },\n\n // Border on the appropriate side\n ...(showBorder && {\n borderRight: navPosition === 'left' ? `1px solid ${theme.palette.divider}` : 'none',\n borderLeft: navPosition === 'right' ? `1px solid ${theme.palette.divider}` : 'none',\n }),\n}));\n\n/**\n * Header section (fixed at top)\n */\nconst HeaderSection = styled(Box)(({ theme }) => ({\n flexShrink: 0,\n backgroundColor: theme.palette.background.paper,\n}));\n\n/**\n * Navigation section (scrollable)\n */\nconst NavigationSection = styled(Box)(() => ({\n flexGrow: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n ...scrollbarStyles,\n}));\n\n/**\n * Footer section (fixed)\n */\nconst FooterSection = styled(Box)(({ theme }) => ({\n flexShrink: 0,\n backgroundColor: theme.palette.background.paper,\n}));\n\n/**\n * SideNav.Header compound component\n * Passes collapsed state and toggle handler to children\n */\nconst Header = React.memo<SideNavHeaderSlotProps>(({ children, className }) => {\n const { collapsed, onToggleCollapse } = React.useContext(SideNavContext);\n \n // Clone children and inject collapsed prop\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement<any>, {\n collapsed,\n onCollapse: onToggleCollapse,\n });\n }\n return child;\n });\n\n return (\n <HeaderSection className={className} data-testid=\"sidenav-header\">\n {enhancedChildren}\n </HeaderSection>\n );\n});\n\nHeader.displayName = 'SideNav.Header';\n\n/**\n * SideNav.Navigation compound component\n * Passes collapsed state to children\n */\nconst Navigation = React.memo<SideNavNavigationProps>(({ children, className }) => {\n const { collapsed, showTooltips } = React.useContext(SideNavContext);\n \n // Clone children and inject collapsed and showTooltips props\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement<any>, {\n collapsed,\n showTooltips,\n });\n }\n return child;\n });\n\n return (\n <NavigationSection className={className} data-testid=\"sidenav-navigation\">\n {enhancedChildren}\n </NavigationSection>\n );\n});\n\nNavigation.displayName = 'SideNav.Navigation';\n\n/**\n * SideNav.Footer compound component\n * Passes collapsed state to children\n */\nconst Footer = React.memo<SideNavFooterProps>(({ children, className }) => {\n const { collapsed } = React.useContext(SideNavContext);\n \n // Clone children and inject compact prop\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child as React.ReactElement<any>, {\n compact: collapsed,\n });\n }\n return child;\n });\n\n return (\n <FooterSection className={className} data-testid=\"sidenav-footer\">\n {enhancedChildren}\n </FooterSection>\n );\n});\n\nFooter.displayName = 'SideNav.Footer';\n\n/**\n * Main SideNav component with compound components\n * V2: Supports controlled/uncontrolled collapsed state\n */\ninterface SideNavComponent extends React.FC<SideNavProps> {\n Header: typeof Header;\n Navigation: typeof Navigation;\n Footer: typeof Footer;\n}\n\nexport const SideNav: SideNavComponent = Object.assign(\n React.memo<SideNavProps>(({\n width = 280,\n collapsedWidth = 68,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapseChange,\n transitionDuration = 300,\n showTooltips = true,\n position = 'left',\n showBorder = true,\n backgroundColor,\n children,\n className,\n ariaLabel = 'Main navigation',\n }) => {\n // Internal state for uncontrolled mode\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n\n // Determine if we're in controlled mode\n const isControlled = controlledCollapsed !== undefined;\n const collapsed = isControlled ? controlledCollapsed : internalCollapsed;\n\n // Toggle handler\n const handleToggleCollapse = useCallback(() => {\n const newCollapsed = !collapsed;\n \n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalCollapsed(newCollapsed);\n }\n\n // Call the callback if provided\n if (onCollapseChange) {\n onCollapseChange(newCollapsed);\n }\n }, [collapsed, isControlled, onCollapseChange]);\n\n // Context value to pass to children\n const contextValue: SideNavContextValue = {\n collapsed,\n showTooltips,\n onToggleCollapse: handleToggleCollapse,\n };\n\n return (\n <SideNavContext.Provider value={contextValue}>\n <SideNavContainer\n role=\"navigation\"\n aria-label={ariaLabel}\n navWidth={width}\n collapsedWidth={collapsedWidth}\n isCollapsed={collapsed}\n transitionDuration={transitionDuration}\n navPosition={position}\n showBorder={showBorder}\n backgroundColor={backgroundColor}\n className={className}\n >\n {children}\n </SideNavContainer>\n </SideNavContext.Provider>\n );\n }),\n {\n Header,\n Navigation,\n Footer,\n }\n);\n\nSideNav.displayName = 'SideNav';\n\n// Export context for use by child components\nexport { SideNavContext };\n","/**\n * Shared styles for SideNav components\n */\n\n/**\n * Custom scrollbar styling for scrollable containers\n * Used by NavigationSection (SideNav) and NavigationList\n */\nexport const scrollbarStyles = {\n '&::-webkit-scrollbar': {\n width: '8px',\n },\n '&::-webkit-scrollbar-track': {\n backgroundColor: 'transparent',\n },\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n borderRadius: '4px',\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n },\n },\n} as const;\n","/**\n * SideNavHeader Component\n * Displays app branding (logo + title) and an optional collapse toggle button\n * V2: Supports collapsed state with compact logo-only view\n */\n\nimport React from 'react';\nimport { Box, Typography, IconButton, Tooltip, ButtonBase } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport type { SideNavHeaderProps } from './types';\n\n/**\n * Styled container for the header section\n */\nconst HeaderContainer = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'isCollapsed',\n})<{ isCollapsed?: boolean }>(({ theme, isCollapsed }) => ({\n display: 'flex',\n flexDirection: isCollapsed ? 'column' : 'row',\n alignItems: 'center',\n justifyContent: isCollapsed ? 'center' : 'flex-start',\n gap: isCollapsed ? theme.spacing(1) : theme.spacing(1.5),\n padding: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n transition: theme.transitions.create(['gap', 'justify-content', 'flex-direction'], {\n duration: theme.transitions.duration.shorter,\n }),\n}));\n\n/**\n * Styled clickable branding area (logo + title).\n * Only this region triggers onLogoClick — not the full header.\n */\nconst BrandingButton = styled(ButtonBase)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1.5),\n minWidth: 0,\n padding: 0,\n borderRadius: theme.shape.borderRadius,\n // Subtle hover feedback only when clickable\n '&:hover': {\n opacity: 0.8,\n },\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: 2,\n },\n}));\n\n/**\n * SideNavHeader Component\n *\n * Renders the app branding area at the top of the side navigation.\n * Includes an optional logo, a title, and an optional collapse toggle button.\n * V2: In collapsed state, shows logo stacked vertically above toggle button.\n *\n * If `onLogoClick` is provided, only the logo+title area is clickable\n * (e.g. to navigate back to the home page). The rest of the header\n * (collapse button, surrounding padding) does NOT trigger that callback.\n */\nexport const SideNavHeader = React.memo<SideNavHeaderProps>(({\n logo,\n title,\n showCollapseButton = true,\n onCollapse,\n onLogoClick,\n ariaLabel,\n collapsed = false,\n}) => {\n const headerAriaLabel = ariaLabel || `${title} navigation header`;\n\n // The logo + title content (shared between clickable and non-clickable variants)\n const brandingContent = (\n <>\n {/* Logo - Always visible */}\n {logo && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n >\n {logo}\n </Box>\n )}\n\n {/* Title - Hidden when collapsed */}\n {!collapsed && (\n <Typography\n variant=\"subtitle1\"\n sx={{\n fontWeight: 700,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n >\n {title}\n </Typography>\n )}\n </>\n );\n\n return (\n <HeaderContainer\n data-testid=\"sidenav-header-content\"\n aria-label={headerAriaLabel}\n isCollapsed={collapsed}\n >\n {/* Branding area — only this region is clickable for \"go home\" */}\n {onLogoClick ? (\n <BrandingButton\n onClick={onLogoClick}\n aria-label={`Go to ${title} home`}\n data-testid=\"sidenav-home-link\"\n >\n {brandingContent}\n </BrandingButton>\n ) : (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n minWidth: 0,\n }}\n >\n {brandingContent}\n </Box>\n )}\n\n {/* Collapse toggle button — pushed to the right edge via marginLeft auto */}\n {showCollapseButton && (\n <Tooltip\n title={collapsed ? 'Expand navigation' : 'Collapse navigation'}\n placement=\"right\"\n arrow\n >\n <IconButton\n onClick={onCollapse}\n aria-label={collapsed ? 'Expand navigation' : 'Collapse navigation'}\n aria-expanded={!collapsed}\n size=\"small\"\n sx={{\n flexShrink: 0,\n marginLeft: collapsed ? 0 : 'auto',\n color: 'text.secondary',\n '&:hover': {\n backgroundColor: 'action.hover',\n color: 'text.primary',\n },\n }}\n >\n {collapsed ? <ChevronRightIcon /> : <ChevronLeftIcon />}\n </IconButton>\n </Tooltip>\n )}\n </HeaderContainer>\n );\n});\n\nSideNavHeader.displayName = 'SideNavHeader';\n","/**\n * NavigationList Component\n * Container for multiple navigation items with scroll support\n * V2: Passes collapsed state to navigation items\n */\n\nimport React, { useState } from 'react';\nimport { List, ListItem } from '@mui/material';\nimport { NavigationItem } from './NavigationItem';\nimport { scrollbarStyles } from './styles';\nimport type { NavigationListProps } from './types';\n\n/**\n * NavigationList Component\n */\nexport const NavigationList = React.memo<NavigationListProps>(({\n items,\n selectedId,\n onSelectionChange,\n maxHeight = 'auto',\n ariaLabel = 'Navigation menu',\n collapsed = false,\n showTooltips = true,\n}) => {\n // Internal state for uncontrolled mode\n const [internalSelectedId, setInternalSelectedId] = useState<string | undefined>(\n selectedId\n );\n\n // Determine if we're in controlled mode\n const isControlled = selectedId !== undefined;\n const currentSelectedId = isControlled ? selectedId : internalSelectedId;\n\n const handleItemClick = (id: string) => {\n // Update internal state if uncontrolled\n if (!isControlled) {\n setInternalSelectedId(id);\n }\n\n // Call the callback if provided\n if (onSelectionChange) {\n onSelectionChange(id);\n }\n };\n\n return (\n <List\n role=\"list\"\n aria-label={ariaLabel}\n sx={{\n padding: 0,\n maxHeight,\n overflowY: maxHeight !== 'auto' ? 'auto' : 'visible',\n overflowX: 'hidden',\n ...(maxHeight !== 'auto' ? scrollbarStyles : {}),\n }}\n >\n {items.map((item, index) => {\n const isSelected = currentSelectedId === item.id;\n\n return (\n <ListItem\n key={`${item.id}-${index}`}\n role=\"listitem\"\n sx={{\n padding: 0,\n display: 'block',\n }}\n >\n <NavigationItem\n {...item}\n selected={isSelected}\n collapsed={collapsed}\n showTooltip={showTooltips}\n onClick={(id) => {\n // Don't handle click if item is disabled\n if (item.disabled) {\n return;\n }\n\n // Call the item's onClick if provided\n if (item.onClick) {\n item.onClick(id);\n }\n\n // Handle selection change\n handleItemClick(id);\n }}\n />\n </ListItem>\n );\n })}\n </List>\n );\n});\n\nNavigationList.displayName = 'NavigationList';\n","/**\n * NavigationItem Component\n * Individual navigation menu item with icon, label, and interactive states\n * V2: Added collapsed state support with tooltips\n */\n\nimport React from 'react';\nimport {\n ListItemButton,\n ListItemIcon,\n ListItemText,\n Box,\n Tooltip,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport type { NavigationItemProps } from './types';\n\n/**\n * Styled ListItemButton with custom states and collapsed support\n */\nconst StyledListItemButton = styled(ListItemButton, {\n shouldForwardProp: (prop) => \n !['selected', 'size', 'iconPosition', 'isCollapsed'].includes(prop as string),\n})<{ selected?: boolean; size?: string; isCollapsed?: boolean }>(({ theme, selected, size, isCollapsed }) => {\n const heights = {\n small: 40,\n medium: 48,\n large: 56,\n };\n\n return {\n minHeight: heights[size as keyof typeof heights] || heights.medium,\n padding: theme.spacing(1, 1.5), // 8px 12px\n margin: theme.spacing(0.5, 1), // 4px 8px\n borderRadius: theme.shape.borderRadius,\n gap: isCollapsed ? 0 : theme.spacing(1), // No gap in collapsed mode\n justifyContent: isCollapsed ? 'center' : 'flex-start',\n transition: theme.transitions.create(\n ['background-color', 'color', 'justify-content'],\n { duration: theme.transitions.duration.shortest }\n ),\n\n // Default state\n color: theme.palette.text.primary,\n backgroundColor: 'transparent',\n\n '& .MuiListItemIcon-root': {\n minWidth: 'auto',\n color: theme.palette.text.secondary,\n },\n\n // Hover state\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n '& .MuiListItemIcon-root': {\n color: theme.palette.text.primary,\n },\n },\n\n // Selected state\n ...(selected && {\n color: theme.palette.primary.main,\n backgroundColor: theme.palette.action.selected,\n\n '& .MuiListItemIcon-root': {\n minWidth: 'auto',\n color: theme.palette.primary.main,\n },\n\n '&:hover': {\n backgroundColor: theme.palette.action.selected,\n '& .MuiListItemIcon-root': {\n color: theme.palette.primary.main,\n },\n },\n }),\n\n // Disabled state\n '&.Mui-disabled': {\n opacity: 1,\n color: theme.palette.text.disabled,\n '& .MuiListItemIcon-root': {\n color: theme.palette.action.disabled,\n },\n },\n };\n});\n\n/**\n * NavigationItem Component\n * V2: Supports collapsed state with tooltip\n */\nexport const NavigationItem = React.memo<NavigationItemProps>(({\n id,\n label,\n icon,\n iconPosition = 'left',\n selected = false,\n disabled = false,\n onClick,\n endContent,\n href,\n ariaLabel,\n size = 'medium',\n collapsed = false,\n showTooltip = true,\n tooltipPlacement = 'right',\n ...rest\n}) => {\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick(id);\n }\n };\n\n const iconElement = icon && (\n <ListItemIcon\n sx={{\n fontSize: 24,\n width: 24,\n height: 24,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n {icon}\n </ListItemIcon>\n );\n\n const labelElement = (\n <ListItemText\n primary={label}\n primaryTypographyProps={{\n sx: {\n fontWeight: 400,\n fontSize: 16,\n lineHeight: 1.5,\n letterSpacing: '0.0168em',\n display: collapsed ? 'none' : 'block',\n opacity: collapsed ? 0 : 1,\n transition: (theme) => theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.shorter,\n }),\n },\n }}\n />\n );\n\n const buttonContent = (\n <StyledListItemButton\n selected={selected}\n disabled={disabled}\n onClick={handleClick}\n {...(href && { component: 'a', href })}\n aria-label={ariaLabel || label}\n aria-current={selected ? 'page' : undefined}\n aria-disabled={disabled}\n size={size}\n isCollapsed={collapsed}\n {...rest}\n >\n {/* Icon on left */}\n {icon && iconPosition === 'left' && iconElement}\n\n {/* Label (hidden in collapsed mode) */}\n {labelElement}\n\n {/* Icon on right */}\n {icon && iconPosition === 'right' && iconElement}\n\n {/* End content (hidden in collapsed mode) */}\n {endContent && !collapsed && (\n <Box\n sx={{\n marginLeft: 'auto',\n display: 'flex',\n alignItems: 'center',\n }}\n >\n {endContent}\n </Box>\n )}\n </StyledListItemButton>\n );\n\n // Wrap in tooltip when collapsed\n if (collapsed && showTooltip) {\n return (\n <Tooltip\n title={label}\n placement={tooltipPlacement}\n enterDelay={200}\n leaveDelay={0}\n arrow\n >\n {buttonContent}\n </Tooltip>\n );\n }\n\n return buttonContent;\n});\n\nNavigationItem.displayName = 'NavigationItem';\n","/**\n * ConnectionStatus Component\n * Displays connection status with pill-style indicator\n * V2: Supports compact mode for collapsed sidebar\n */\n\nimport React from 'react';\nimport { Box, Typography, Tooltip } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport PowerIcon from '@mui/icons-material/Power';\nimport type { ConnectionStatusProps } from './types';\n\n/**\n * Styled container for the status pill\n */\nconst StatusPill = styled(Box, {\n shouldForwardProp: (prop) => !['variant', 'interactive'].includes(prop as string),\n})<{ variant?: string; interactive?: boolean }>(({ theme, variant = 'info', interactive }) => {\n const variantColors = {\n success: {\n background: theme.palette.success.light + '20',\n text: theme.palette.success.dark,\n },\n warning: {\n background: theme.palette.warning.light + '20',\n text: theme.palette.warning.dark,\n },\n error: {\n background: theme.palette.error.light + '20',\n text: theme.palette.error.dark,\n },\n info: {\n background: theme.palette.grey[100],\n text: theme.palette.text.primary,\n },\n };\n\n const colors = variantColors[variant as keyof typeof variantColors] || variantColors.info;\n\n return {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(0.75, 1.5), // 6px 12px\n borderRadius: 16, // Always pill-shaped\n backgroundColor: colors.background,\n cursor: interactive ? 'pointer' : 'default',\n transition: theme.transitions.create(['background-color', 'transform'], {\n duration: theme.transitions.duration.shortest,\n }),\n maxWidth: '100%',\n\n ...(interactive && {\n '&:hover': {\n backgroundColor: colors.background + '40', // Slightly darker on hover\n transform: 'scale(1.02)',\n },\n '&:active': {\n transform: 'scale(0.98)',\n },\n }),\n\n '& .status-text': {\n color: colors.text,\n fontWeight: 500,\n fontSize: 14,\n lineHeight: 1.5,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0, // Allow text to shrink and truncate in flex container\n },\n };\n});\n\n/**\n * ConnectionStatus Component\n * V2: Supports compact mode\n */\nexport const ConnectionStatus = React.memo<ConnectionStatusProps>(({\n status,\n variant = 'info',\n icon,\n onClick,\n compact = false,\n compactText,\n}) => {\n const interactive = !!onClick;\n\n const handleClick = () => {\n if (onClick) {\n onClick();\n }\n };\n\n const statusContent = (\n <StatusPill\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n aria-label={compact ? status : undefined}\n variant={variant}\n interactive={interactive}\n onClick={handleClick}\n >\n {/* Icon */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n fontSize: 16,\n color: 'inherit',\n }}\n >\n {icon || <PowerIcon fontSize=\"small\" />}\n </Box>\n\n {/* Status text: compactText in compact mode, full status in normal mode */}\n <Typography className=\"status-text\" variant=\"body2\">\n {compact ? (compactText ?? status) : status}\n </Typography>\n </StatusPill>\n );\n\n // Wrap in tooltip when compact\n if (compact) {\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n padding: 1,\n }}\n >\n <Tooltip title={status} placement=\"right\" arrow>\n {statusContent}\n </Tooltip>\n </Box>\n );\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n padding: 1,\n }}\n >\n {statusContent}\n </Box>\n );\n});\n\nConnectionStatus.displayName = 'ConnectionStatus';\n","/**\n * AccountSection Component\n * Displays user account information with avatar, name, and logout\n * V2: Supports compact mode for collapsed sidebar\n */\n\nimport React from 'react';\nimport { Box, Avatar, Typography, Button, IconButton, Tooltip } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport LogoutIcon from '@mui/icons-material/Logout';\nimport type { AccountSectionProps } from './types';\n\n/**\n * Styled container for account section\n */\nconst AccountContainer = styled(Box, {\n shouldForwardProp: (prop) => !['layout', 'isCompact'].includes(prop as string),\n})<{ layout?: string; isCompact?: boolean }>(({ theme, layout = 'horizontal', isCompact }) => ({\n display: 'flex',\n flexDirection: isCompact ? 'column' : 'row',\n alignItems: 'center',\n justifyContent: isCompact ? 'center' : 'flex-start',\n gap: isCompact ? theme.spacing(1) : theme.spacing(1.5),\n padding: theme.spacing(2),\n borderTop: `1px solid ${theme.palette.divider}`,\n transition: theme.transitions.create(['gap', 'justify-content'], {\n duration: theme.transitions.duration.shorter,\n }),\n\n ...(layout === 'vertical' && !isCompact && {\n flexDirection: 'column',\n textAlign: 'center',\n }),\n}));\n\n/**\n * Derive initials from user name\n */\nconst deriveInitials = (name: string): string => {\n if (!name || name.trim() === '') {\n return '?';\n }\n\n const words = name.trim().split(/\\s+/);\n \n if (words.length === 1) {\n // Single word: use first letter\n return words[0][0].toUpperCase();\n }\n \n if (words.length === 2) {\n // Two words: use first letter of each\n return (words[0][0] + words[1][0]).toUpperCase();\n }\n \n // Three or more words: use first and last\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n};\n\n/**\n * AccountSection Component\n * V2: Supports compact mode\n */\nexport const AccountSection = React.memo<AccountSectionProps>(({\n user,\n onLogout,\n showEmail = false,\n layout = 'horizontal',\n compact = false,\n}) => {\n const initials = user.initials || deriveInitials(user.name);\n const avatarSrc = user.avatarUrl;\n\n // Compact mode: Avatar + logout icon button\n if (compact) {\n return (\n <AccountContainer layout={layout} isCompact={true} aria-label=\"Account section\">\n {/* Avatar with tooltip */}\n <Tooltip\n title={`${user.name}${user.email ? ` (${user.email})` : ''}`}\n placement=\"right\"\n arrow\n >\n <Avatar\n src={avatarSrc}\n alt={user.name}\n sx={{\n width: 40,\n height: 40,\n backgroundColor: 'primary.main',\n fontSize: 16,\n fontWeight: 600,\n flexShrink: 0,\n cursor: 'default',\n }}\n >\n {initials}\n </Avatar>\n </Tooltip>\n\n {/* Compact logout icon button */}\n <Tooltip title=\"Logout\" placement=\"right\" arrow>\n <IconButton\n onClick={onLogout}\n aria-label=\"Logout\"\n size=\"small\"\n sx={{\n color: 'text.secondary',\n '&:hover': {\n backgroundColor: 'action.hover',\n color: 'text.primary',\n },\n }}\n >\n <LogoutIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </AccountContainer>\n );\n }\n\n // Normal mode: Full layout\n return (\n <AccountContainer layout={layout} isCompact={false} aria-label=\"Account section\">\n {/* Avatar */}\n <Avatar\n src={avatarSrc}\n alt={user.name}\n sx={{\n width: 40,\n height: 40,\n backgroundColor: 'primary.main',\n fontSize: 16,\n fontWeight: 600,\n flexShrink: 0,\n }}\n >\n {initials}\n </Avatar>\n\n {/* User info and logout stacked vertically */}\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 0.5,\n flexGrow: 1,\n minWidth: 0, // Allow text truncation\n }}\n >\n {/* User name */}\n <Typography\n variant=\"body2\"\n sx={{\n fontWeight: 600,\n lineHeight: 1.5,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {user.name}\n </Typography>\n\n {showEmail && user.email && (\n <Typography\n variant=\"caption\"\n sx={{\n color: 'text.secondary',\n lineHeight: 1.5,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n display: 'block',\n }}\n >\n {user.email}\n </Typography>\n )}\n\n {/* Logout button below name */}\n <Button\n onClick={onLogout}\n aria-label=\"Logout\"\n startIcon={<LogoutIcon fontSize=\"small\" />}\n sx={{\n color: 'text.secondary',\n textTransform: 'none',\n fontSize: '14px',\n fontWeight: 400,\n padding: '4px 8px',\n justifyContent: 'flex-start',\n alignSelf: 'flex-start',\n minWidth: 'auto',\n '&:hover': {\n backgroundColor: 'action.hover',\n color: 'text.primary',\n },\n }}\n >\n Logout\n </Button>\n </Box>\n </AccountContainer>\n );\n});\n\nAccountSection.displayName = 'AccountSection';\n","import React from 'react';\nimport MuiBadge, { BadgeProps as MuiBadgeProps } from '@mui/material/Badge';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type BadgeVariant = 'default' | 'primary' | 'success' | 'error';\n\nexport interface BadgeProps extends Omit<MuiBadgeProps, 'color' | 'variant'> {\n variant?: BadgeVariant;\n children?: React.ReactNode;\n}\n\nconst getBadgeColor = (variant: BadgeVariant) => {\n switch (variant) {\n case 'primary':\n return colors.primary.main;\n case 'success':\n return colors.success.main;\n case 'error':\n return colors.error.main;\n default:\n return colors.grey[400];\n }\n};\n\nconst StyledBadge = styled(MuiBadge, {\n shouldForwardProp: (prop) => prop !== 'badgeVariant',\n})<{ badgeVariant?: BadgeVariant }>(({ badgeVariant = 'default' }) => ({\n '& .MuiBadge-badge': {\n backgroundColor: getBadgeColor(badgeVariant),\n color: '#FFFFFF',\n },\n}));\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = 'default',\n children,\n badgeContent,\n ...props\n}) => {\n return (\n <StyledBadge badgeVariant={variant} badgeContent={badgeContent} {...props}>\n {children}\n </StyledBadge>\n );\n};\n\n","import React from 'react';\nimport MuiChip, { ChipProps as MuiChipProps } from '@mui/material/Chip';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type ChipVariant = 'default' | 'active';\n\nexport interface ChipProps extends Omit<MuiChipProps, 'color' | 'variant'> {\n variant?: ChipVariant;\n}\n\nconst StyledDefaultChip = styled(MuiChip)({\n backgroundColor: colors.grey[100],\n color: colors.text.primary,\n '&:hover': {\n backgroundColor: colors.grey[200],\n },\n});\n\nconst StyledActiveChip = styled(MuiChip)({\n backgroundColor: colors.background.selected,\n color: colors.primary.main,\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n});\n\nexport const Chip: React.FC<ChipProps> = ({\n variant = 'default',\n ...props\n}) => {\n if (variant === 'active') {\n return <StyledActiveChip {...props} />;\n }\n return <StyledDefaultChip {...props} />;\n};\n\n","import React from 'react';\nimport MuiChip, { ChipProps as MuiChipProps } from '@mui/material/Chip';\nimport { styled } from '@mui/material/styles';\n\n/**\n * Color variants for the RoleBadge component\n */\nexport type RoleBadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n\n/**\n * Size variants for the RoleBadge component\n */\nexport type RoleBadgeSize = 'small' | 'medium';\n\n/**\n * RoleBadge component props\n */\nexport interface RoleBadgeProps extends Omit<MuiChipProps, 'label' | 'variant' | 'color' | 'size'> {\n /**\n * The text content to display in the badge\n */\n label: string;\n /**\n * The color theme of the badge\n * @default 'primary'\n */\n color?: RoleBadgeColor;\n /**\n * The size of the badge\n * @default 'small'\n */\n size?: RoleBadgeSize;\n}\n\n/**\n * Styled MUI Chip with pill shape and outlined style\n * Matches Figma node 17-3595 specifications\n */\nconst StyledRoleBadge = styled(MuiChip)<MuiChipProps>(() => ({\n // Pill shape - 100px border radius\n borderRadius: '100px',\n // Typography specifications from Figma\n fontSize: '13px',\n fontWeight: 400,\n lineHeight: '18px',\n letterSpacing: '0.16px',\n // Padding specifications from Figma\n padding: '3px 4px',\n height: 'auto',\n // Outlined style (no background fill)\n '& .MuiChip-label': {\n padding: '0 8px',\n },\n}));\n\n/**\n * RoleBadge - Pill-shaped badge component for displaying roles or status labels\n *\n * A reusable badge component that extends MUI Chip with a pill-shaped outline style.\n * Designed for displaying user roles, status indicators, or categorization labels.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <RoleBadge label=\"Manager\" />\n *\n * // With color variants\n * <RoleBadge label=\"Admin\" color=\"error\" />\n * <RoleBadge label=\"Active\" color=\"success\" />\n *\n * // With size variants\n * <RoleBadge label=\"Owner\" size=\"medium\" />\n * ```\n *\n * @see Figma node 17-3595 for design specifications\n */\nexport const RoleBadge: React.FC<RoleBadgeProps> = ({\n label,\n color = 'primary',\n size = 'small',\n ...props\n}) => {\n if (!label || label.trim() === '') {\n return null;\n }\n\n return (\n <StyledRoleBadge\n label={label}\n variant=\"outlined\"\n color={color}\n size={size}\n {...props}\n />\n );\n};\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport Snackbar from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport { styled } from '@mui/material/styles';\nimport type { AlertColor } from '@mui/material';\nimport { deploymentSurfaceTokens } from '../../theme';\n\n/**\n * IDBlock component props\n */\nexport interface IDBlockProps {\n /**\n * The identifier value to display and copy\n */\n id: string;\n /**\n * Label prefix text\n * @default 'ID'\n */\n label?: string;\n /**\n * Entity type for accessibility (used in aria-label)\n * @default 'entity'\n */\n entityType?: string;\n /**\n * Additional callback to execute after successful copy\n */\n onCopy?: () => void;\n}\n\n/**\n * Styled container for the ID block\n * Matches Figma node 17-3596 specifications\n */\nconst IDContainer = styled(Box)(() => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '8px 16px',\n backgroundColor: deploymentSurfaceTokens.surfaceHigh,\n border: `1px solid ${deploymentSurfaceTokens.strokeOutside}`,\n borderRadius: '8px',\n}));\n\n/**\n * IDBlock - Read-only identifier display with integrated copy-to-clipboard button\n *\n * A component that displays an identifier (ID, account number, etc.) with a copy button.\n * Provides user feedback via an inline Snackbar when copy succeeds or fails.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <IDBlock id=\"W1234567890\" />\n *\n * // With custom label\n * <IDBlock id=\"ACC-9876543\" label=\"Account ID\" entityType=\"account\" />\n *\n * // With callback\n * <IDBlock\n * id=\"DEPLOY-12345\"\n * label=\"Deployment ID\"\n * entityType=\"deployment\"\n * onCopy={() => console.log('ID copied')}\n * />\n * ```\n *\n * @see Figma node 17-3596 for design specifications\n */\nexport const IDBlock: React.FC<IDBlockProps> = ({\n id,\n label = 'ID',\n entityType = 'entity',\n onCopy,\n}) => {\n const [snackbar, setSnackbar] = useState<{ open: boolean; message: string; severity: AlertColor }>({\n open: false,\n message: '',\n severity: 'success',\n });\n\n if (!id || id.trim() === '') {\n return null;\n }\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(id);\n setSnackbar({ open: true, message: 'ID copied to clipboard', severity: 'success' });\n onCopy?.();\n } catch {\n setSnackbar({ open: true, message: 'Failed to copy ID', severity: 'error' });\n }\n };\n\n const handleSnackbarClose = () => {\n setSnackbar((prev) => ({ ...prev, open: false }));\n };\n\n return (\n <>\n <IDContainer>\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: '13px',\n fontWeight: 500,\n color: deploymentSurfaceTokens.textSecondary,\n }}\n >\n {label}:\n </Typography>\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: '13px',\n fontWeight: 500,\n color: deploymentSurfaceTokens.textPrimary,\n userSelect: 'all',\n }}\n >\n {id}\n </Typography>\n <IconButton\n onClick={handleCopy}\n size=\"small\"\n aria-label={`Copy ${entityType} ID ${id}`}\n sx={{\n padding: '4px',\n '&:hover': {\n backgroundColor: deploymentSurfaceTokens.hoverOverlay,\n },\n }}\n >\n <ContentCopyIcon\n sx={{\n fontSize: '16px',\n color: deploymentSurfaceTokens.textSecondary,\n }}\n />\n </IconButton>\n </IDContainer>\n <Snackbar\n open={snackbar.open}\n autoHideDuration={3000}\n onClose={handleSnackbarClose}\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n >\n <Alert onClose={handleSnackbarClose} severity={snackbar.severity}>\n {snackbar.message}\n </Alert>\n </Snackbar>\n </>\n );\n};\n","import React from 'react';\nimport MuiTooltip, { TooltipProps as MuiTooltipProps } from '@mui/material/Tooltip';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type TooltipProps = MuiTooltipProps\n\nconst StyledTooltip = styled(MuiTooltip)({\n '& .MuiTooltip-tooltip': {\n backgroundColor: colors.grey[800],\n color: '#FFFFFF',\n fontSize: '12px',\n padding: '8px 12px',\n borderRadius: '4px',\n },\n '& .MuiTooltip-arrow': {\n color: colors.grey[800],\n },\n});\n\nexport const Tooltip: React.FC<TooltipProps> = (props) => {\n return <StyledTooltip {...props} />;\n};\n\n","import React from 'react';\nimport {\n LinearProgress,\n CircularProgress,\n styled,\n} from '@mui/material';\nimport { colors } from '../../theme';\n\nexport type ProgressVariant = 'linear' | 'circular';\n\nexport interface ProgressProps {\n variant?: ProgressVariant;\n value?: number;\n size?: number;\n thickness?: number;\n}\n\nconst StyledLinearProgress = styled(LinearProgress)({\n height: 4,\n borderRadius: 2,\n backgroundColor: colors.grey[200],\n '& .MuiLinearProgress-bar': {\n backgroundColor: colors.primary.main,\n borderRadius: 2,\n },\n});\n\nconst StyledCircularProgress = styled(CircularProgress)({\n color: colors.primary.main,\n});\n\nexport const Progress: React.FC<ProgressProps> = ({\n variant = 'linear',\n value,\n size = 40,\n thickness = 4,\n}) => {\n if (variant === 'circular') {\n return <StyledCircularProgress size={size} thickness={thickness} />;\n }\n\n return (\n <StyledLinearProgress\n variant={value !== undefined ? 'determinate' : 'indeterminate'}\n value={value}\n />\n );\n};\n\n","import React from 'react';\nimport MuiTab, { TabProps as MuiTabProps } from '@mui/material/Tab';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\nimport { Badge } from '../feedback/Badge';\n\nexport interface TabProps extends Omit<MuiTabProps, 'icon'> {\n badge?: number | string;\n badgeVariant?: 'default' | 'primary' | 'success' | 'error';\n}\n\nconst StyledTab = styled(MuiTab)({\n textTransform: 'none',\n minHeight: '48px',\n fontWeight: 400,\n color: colors.text.primary,\n borderBottom: '2px solid transparent',\n '&:hover': {\n color: colors.primary.main,\n },\n '&.Mui-selected': {\n fontWeight: 600,\n color: colors.primary.main,\n borderBottom: `2px solid ${colors.primary.main}`,\n },\n});\n\nexport const Tab: React.FC<TabProps> = ({\n badge,\n badgeVariant = 'primary',\n label,\n ...props\n}) => {\n const tabLabel = badge !== undefined ? (\n <Badge variant={badgeVariant} badgeContent={badge}>\n {label}\n </Badge>\n ) : (\n label\n );\n\n return <StyledTab label={tabLabel} {...props} />;\n};\n\n","import React from 'react';\nimport {\n Menu as MuiMenu,\n MenuItem as MuiMenuItem,\n MenuProps as MuiMenuProps,\n ListItemIcon,\n ListItemText,\n Divider,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface MenuProps extends Omit<MuiMenuProps, 'open'> {\n anchorEl?: HTMLElement | null;\n onClose: () => void;\n}\n\nconst StyledMenu = styled(MuiMenu)({\n '& .MuiPaper-root': {\n borderRadius: 8,\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.15)',\n minWidth: 200,\n },\n '& .MuiMenuItem-root': {\n padding: '8px 16px',\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n },\n});\n\nexport const Menu: React.FC<MenuProps> = ({ anchorEl, onClose, children, ...props }) => {\n return (\n <StyledMenu\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n {...props}\n >\n {children}\n </StyledMenu>\n );\n};\n\nexport interface MenuItemProps {\n icon?: React.ReactNode;\n label: string;\n onClick?: () => void;\n disabled?: boolean;\n divider?: boolean;\n}\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n icon,\n label,\n onClick,\n disabled = false,\n divider = false,\n}) => {\n return (\n <>\n <MuiMenuItem onClick={onClick} disabled={disabled}>\n {icon && <ListItemIcon>{icon}</ListItemIcon>}\n <ListItemText>{label}</ListItemText>\n </MuiMenuItem>\n {divider && <Divider />}\n </>\n );\n};\n\n","import React from 'react';\nimport MuiPagination, { PaginationProps as MuiPaginationProps } from '@mui/material/Pagination';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface PaginationProps extends Omit<MuiPaginationProps, 'color'> {\n color?: 'primary' | 'secondary' | 'standard';\n}\n\nconst StyledPagination = styled(MuiPagination)({\n '& .MuiPaginationItem-root': {\n '&.Mui-selected': {\n backgroundColor: colors.primary.main,\n color: colors.primary.contrastText,\n '&:hover': {\n backgroundColor: colors.primary.light,\n },\n },\n '&:hover': {\n backgroundColor: colors.background.selected,\n },\n },\n});\n\nexport const Pagination: React.FC<PaginationProps> = ({ color = 'primary', ...props }) => {\n return <StyledPagination color={color} {...props} />;\n};\n\n","import React, { useState } from 'react';\nimport {\n Box,\n Typography,\n Avatar,\n Menu,\n InputAdornment,\n List,\n ListItemButton,\n ListItemAvatar,\n ListItemText,\n CircularProgress,\n} from '@mui/material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport SearchIcon from '@mui/icons-material/Search';\nimport AddIcon from '@mui/icons-material/Add';\nimport { colors } from '../../theme';\nimport { Link } from '../layout/Link';\nimport { IconButton } from '../buttons/IconButton';\nimport { TextField } from '../inputs/TextField';\nimport { Button } from '../buttons/Button';\n\nexport interface SelectorOption {\n id: string;\n name: string;\n description?: string;\n avatar?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectorProps {\n options: SelectorOption[];\n selectedId: string | null;\n onSelect: (id: string) => void;\n onCreate?: () => void;\n loading?: boolean;\n placeholder?: string;\n emptyMessage?: string;\n compact?: boolean;\n renderSelected?: (option: SelectorOption) => React.ReactNode;\n width?: number;\n}\n\nexport const Selector: React.FC<SelectorProps> = ({\n options,\n selectedId,\n onSelect,\n onCreate,\n loading = false,\n placeholder = 'Select...',\n emptyMessage = 'No items found',\n compact = false,\n renderSelected,\n width = 350,\n}) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [searchTerm, setSearchTerm] = useState('');\n\n const open = Boolean(anchorEl);\n const selectedOption = options.find((opt) => opt.id === selectedId);\n\n const filteredOptions = options.filter((opt) =>\n opt.name.toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n const handleOpen = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n setSearchTerm('');\n };\n\n const handleSelect = (id: string) => {\n onSelect(id);\n handleClose();\n };\n\n const defaultRenderSelected = (option: SelectorOption) => (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n {option.avatar ? (\n <Avatar src={option.avatar} sx={{ width: 20, height: 20 }} />\n ) : option.icon ? (\n option.icon\n ) : (\n <Avatar sx={{ width: 20, height: 20, bgcolor: colors.primary.main, fontSize: '0.7rem' }}>\n {option.name.charAt(0)}\n </Avatar>\n )}\n <Typography variant=\"body2\">{option.name}</Typography>\n </Box>\n );\n\n if (compact) {\n return (\n <>\n <IconButton onClick={handleOpen} size=\"small\">\n {selectedOption ? (\n selectedOption.avatar ? (\n <Avatar src={selectedOption.avatar} sx={{ width: 32, height: 32 }} />\n ) : (\n <Avatar sx={{ width: 32, height: 32, bgcolor: colors.primary.main }}>\n {selectedOption.name.charAt(0)}\n </Avatar>\n )\n ) : (\n <Avatar sx={{ width: 32, height: 32, bgcolor: colors.grey[400] }}>?</Avatar>\n )}\n </IconButton>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n PaperProps={{\n sx: { width, maxHeight: 600, mt: 1 },\n }}\n >\n {loading ? (\n <Box sx={{ display: 'flex', justifyContent: 'center', p: 2 }}>\n <CircularProgress size={24} />\n </Box>\n ) : (\n <>\n {options.length > 5 && (\n <Box sx={{ p: 1, borderBottom: `1px solid ${colors.grey[200]}` }}>\n <TextField\n size=\"small\"\n fullWidth\n placeholder=\"Search...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n )}\n <List sx={{ maxHeight: 400, overflow: 'auto' }}>\n {filteredOptions.map((option) => (\n <ListItemButton\n key={option.id}\n selected={option.id === selectedId}\n onClick={() => handleSelect(option.id)}\n disabled={option.disabled}\n >\n {option.avatar ? (\n <ListItemAvatar>\n <Avatar src={option.avatar} />\n </ListItemAvatar>\n ) : option.icon ? (\n <ListItemAvatar>{option.icon}</ListItemAvatar>\n ) : (\n <ListItemAvatar>\n <Avatar sx={{ bgcolor: colors.primary.main }}>\n {option.name.charAt(0)}\n </Avatar>\n </ListItemAvatar>\n )}\n <ListItemText primary={option.name} secondary={option.description} />\n </ListItemButton>\n ))}\n {filteredOptions.length === 0 && (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {emptyMessage}\n </Typography>\n </Box>\n )}\n </List>\n {onCreate && (\n <Box sx={{ p: 1, borderTop: `1px solid ${colors.grey[200]}` }}>\n <Button\n fullWidth\n startIcon={<AddIcon />}\n onClick={() => {\n onCreate();\n handleClose();\n }}\n >\n Create New\n </Button>\n </Box>\n )}\n </>\n )}\n </Menu>\n </>\n );\n }\n\n return (\n <>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n {selectedOption ? (\n renderSelected ? (\n <Link onClick={handleOpen} underline=\"hover\">\n {renderSelected(selectedOption)}\n </Link>\n ) : (\n <Link onClick={handleOpen} underline=\"hover\">\n {defaultRenderSelected(selectedOption)}\n </Link>\n )\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {placeholder}\n </Typography>\n )}\n <IconButton onClick={handleOpen} size=\"small\" sx={{ p: 0.2, ml: 0.5 }}>\n <KeyboardArrowDownIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n PaperProps={{\n sx: { width, maxHeight: 600, mt: 1 },\n }}\n >\n {loading ? (\n <Box sx={{ display: 'flex', justifyContent: 'center', p: 2 }}>\n <CircularProgress size={24} />\n </Box>\n ) : (\n <>\n {options.length > 5 && (\n <Box sx={{ p: 1, borderBottom: `1px solid ${colors.grey[200]}` }}>\n <TextField\n size=\"small\"\n fullWidth\n placeholder=\"Search...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n )}\n <List sx={{ maxHeight: 400, overflow: 'auto' }}>\n {filteredOptions.map((option) => (\n <ListItemButton\n key={option.id}\n selected={option.id === selectedId}\n onClick={() => handleSelect(option.id)}\n disabled={option.disabled}\n >\n {option.avatar ? (\n <ListItemAvatar>\n <Avatar src={option.avatar} />\n </ListItemAvatar>\n ) : option.icon ? (\n <ListItemAvatar>{option.icon}</ListItemAvatar>\n ) : (\n <ListItemAvatar>\n <Avatar sx={{ bgcolor: colors.primary.main }}>\n {option.name.charAt(0)}\n </Avatar>\n </ListItemAvatar>\n )}\n <ListItemText primary={option.name} secondary={option.description} />\n </ListItemButton>\n ))}\n {filteredOptions.length === 0 && (\n <Box sx={{ p: 2, textAlign: 'center' }}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {emptyMessage}\n </Typography>\n </Box>\n )}\n </List>\n {onCreate && (\n <Box sx={{ p: 1, borderTop: `1px solid ${colors.grey[200]}` }}>\n <Button\n fullWidth\n startIcon={<AddIcon />}\n onClick={() => {\n onCreate();\n handleClose();\n }}\n >\n Create New\n </Button>\n </Box>\n )}\n </>\n )}\n </Menu>\n </>\n );\n};\n\n","import React from 'react';\nimport MuiLink, { LinkProps as MuiLinkProps } from '@mui/material/Link';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface LinkProps extends MuiLinkProps {\n underline?: 'none' | 'hover' | 'always';\n}\n\nconst StyledLink = styled(MuiLink)({\n color: colors.primary.main,\n '&:hover': {\n color: colors.primary.light,\n },\n});\n\nexport const Link: React.FC<LinkProps> = ({ underline = 'hover', ...props }) => {\n return <StyledLink underline={underline} {...props} />;\n};\n\n","import { Stack, styled, svgIconClasses } from '@mui/material';\nimport { PropsWithChildren, ReactElement } from 'react';\nimport { CereIcon } from '../icons/CereIcon';\n\ntype LogoSize = 'large' | 'medium' | 'small';\n\nexport type LogoProps = PropsWithChildren<{\n icon?: ReactElement;\n size?: LogoSize;\n}>;\n\nconst sizesMap: Record<LogoSize, number> = {\n large: 38,\n medium: 32,\n small: 24,\n};\n\nconst Container = styled(Stack)({\n [`& .${svgIconClasses.root}`]: {\n fontSize: 'inherit',\n },\n});\n\nexport const Logo = ({ children, size = 'medium', icon = <CereIcon color=\"primary\" /> }: LogoProps) => (\n <Container direction=\"row\" alignItems=\"center\" spacing={2} fontSize={sizesMap[size]}>\n {icon}\n {children && <Stack>{children}</Stack>}\n </Container>\n);\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const CereIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 24 28\">\n <g clipPath=\"url(#a)\">\n <path\n d=\"M12.77 26.848c-5.95 0-10.572-2.88-12.063-7.515l-.334-1.037.978-.471c.103-.051 2.668-1.35 2.509-3.901-.169-2.695-2.339-3.96-2.431-4.012L.475 9.37l.412-1.025C2.838 3.601 7.28.77 12.77.77c4.314 0 8.095 1.698 10.37 4.658l.575.748-4.535 6.146-1.013-.984c-.02-.019-2.175-2.069-4.678-2.08-2.411-.012-3.362.902-3.401.941L8.3 8.473c.164-.175 1.695-1.733 5.199-1.707 2.232.01 4.161 1.084 5.3 1.896l1.778-2.41c-1.845-1.91-4.636-2.99-7.808-2.99-4.095 0-7.459 1.91-9.182 5.155 1.042.879 2.57 2.62 2.742 5.35.185 2.95-1.692 4.806-2.913 5.692 1.445 3.043 4.932 4.895 9.354 4.895 3.063 0 6.198-1.2 8.134-3.053l-2.023-2.55c-1.077.768-2.917 1.764-5.323 1.89-3.416.177-5.436-1.404-5.52-1.471l1.536-1.954c.047.035 1.42 1.065 3.855.936 2.884-.15 4.734-2.012 4.75-2.032l.98-1.002.874 1.094 4.088 5.155-.627.779c-2.3 2.856-6.508 4.702-10.726 4.702Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"currentColor\" transform=\"translate(.373 .77)\" d=\"M0 0h23.615v26.36H0z\" />\n </clipPath>\n </defs>\n </SvgIcon>\n));\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport Divider from '@mui/material/Divider';\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\nimport { Button } from '../../buttons/Button';\nimport { RoleBadge } from '../../feedback/RoleBadge';\nimport { IDBlock } from '../../feedback/IDBlock';\nimport { deploymentSurfaceTokens } from '../../../theme';\n\n/**\n * Primary action configuration for EntityHeader\n */\nexport interface PrimaryAction {\n /**\n * Button label text\n */\n label: string;\n /**\n * Optional count to display as \"Label (N)\"\n */\n count?: number;\n /**\n * Optional leading icon\n */\n icon?: React.ReactNode;\n /**\n * Click handler for the button\n */\n onClick?: () => void;\n}\n\n/**\n * EntityHeader component props\n */\nexport interface EntityHeaderProps {\n /**\n * Primary title text (e.g., entity name)\n * @required\n */\n title: string;\n /**\n * Secondary descriptive text below title\n */\n subtitle?: string;\n /**\n * Role or status label - displays as RoleBadge pill\n */\n role?: string;\n /**\n * Entity identifier - displays as IDBlock with copy action\n */\n id?: string;\n /**\n * Main action button configuration\n */\n primaryAction?: PrimaryAction;\n /**\n * Callback when ID is copied (internal copy + this callback)\n */\n onCopyId?: () => void;\n /**\n * Callback when more options button clicked (receives event for anchor positioning)\n */\n onMoreOptions?: (event: React.MouseEvent<HTMLElement>) => void;\n /**\n * HTML heading level for the title element\n * @default 'h2'\n */\n headingLevel?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n /**\n * Show bottom divider line\n * @default true\n */\n divider?: boolean;\n}\n\n/**\n * EntityHeader - Composite UI component for entity (workspace, account, etc.) headers\n *\n * Displays an entity with title, optional subtitle, role badge, ID with copy action,\n * primary action button, and more options control. Matches Figma node 15-1258 specifications.\n *\n * @example\n * ```tsx\n * // Full example with all props\n * <EntityHeader\n * title=\"Game Co. WF 1769936170928\"\n * subtitle=\"Gaming Demo Account\"\n * role=\"Manager\"\n * id=\"W1234567890\"\n * primaryAction={{\n * label: 'Members',\n * count: 5,\n * icon: <AddCircleIcon />,\n * onClick: () => console.log('Open members')\n * }}\n * onCopyId={() => console.log('ID copied')}\n * onMoreOptions={(e) => setAnchorEl(e.currentTarget)}\n * />\n *\n * // Minimal example\n * <EntityHeader title=\"Simple Entity\" />\n * ```\n *\n * @see Figma node 15-1258 for design specifications\n */\nexport const EntityHeader: React.FC<EntityHeaderProps> = ({\n title,\n subtitle,\n role,\n id,\n primaryAction,\n onCopyId,\n onMoreOptions,\n headingLevel = 'h2',\n divider = true,\n}) => {\n const getPrimaryActionLabel = () => {\n if (!primaryAction) return '';\n const { label, count } = primaryAction;\n return count !== undefined ? `${label} (${count})` : label;\n };\n\n return (\n <Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: 3,\n py: 2,\n gap: 1,\n }}\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n flexWrap: 'wrap',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 0.5,\n }}\n >\n <Typography\n component={headingLevel}\n sx={{\n fontSize: '16px',\n fontWeight: 500,\n lineHeight: '24px',\n letterSpacing: '0.15px',\n color: deploymentSurfaceTokens.textPrimary,\n }}\n >\n {title}\n </Typography>\n\n {subtitle && (\n <Typography\n variant=\"body2\"\n sx={{\n fontSize: '11px',\n fontWeight: 500,\n lineHeight: '16px',\n letterSpacing: '0.5px',\n color: deploymentSurfaceTokens.textSecondary,\n }}\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n\n {role && <RoleBadge label={role} color=\"primary\" size=\"small\" />}\n\n {id && <IDBlock id={id} label=\"ID\" entityType=\"entity\" onCopy={onCopyId} />}\n </Box>\n\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n flexShrink: 0,\n }}\n >\n {primaryAction && (\n <Button\n variant=\"primary\"\n startIcon={primaryAction.icon}\n onClick={primaryAction.onClick}\n sx={{\n textTransform: 'capitalize',\n }}\n >\n {getPrimaryActionLabel()}\n </Button>\n )}\n\n {onMoreOptions && (\n <IconButton\n onClick={onMoreOptions}\n size=\"small\"\n aria-label=\"More options\"\n sx={{\n padding: '8px',\n border: `1px solid ${deploymentSurfaceTokens.strokeOutside}`,\n borderRadius: '8px',\n '&:hover': {\n backgroundColor: deploymentSurfaceTokens.hoverOverlay,\n borderColor: deploymentSurfaceTokens.borderDefault,\n },\n }}\n >\n <MoreHorizIcon\n sx={{\n fontSize: '20px',\n color: deploymentSurfaceTokens.textSecondary,\n }}\n />\n </IconButton>\n )}\n </Box>\n </Box>\n\n {divider && (\n <Divider\n sx={{\n borderColor: deploymentSurfaceTokens.strokeOutside,\n }}\n />\n )}\n </Box>\n );\n};\n","import React, { ReactNode } from 'react';\nimport {\n Dialog as MuiDialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n IconButton,\n Box,\n Typography,\n Divider,\n DialogProps as MuiDialogProps,\n CircularProgress,\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\n\nexport interface DialogProps extends Omit<MuiDialogProps, 'title'> {\n open: boolean;\n title: ReactNode;\n onClose: () => void;\n onSubmit?: () => void;\n submitLabel?: string;\n cancelLabel?: string;\n isLoading?: boolean;\n disableSubmit?: boolean;\n showActions?: boolean;\n headerAction?: ReactNode;\n fullWidth?: boolean;\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n children: ReactNode;\n dividers?: boolean;\n confirmBeforeClose?: boolean;\n /**\n * Custom actions to render instead of default actions\n * If provided, showActions is ignored and custom actions are used\n */\n customActions?: ReactNode;\n}\n\nexport const Dialog: React.FC<DialogProps> = ({\n open,\n title,\n onClose,\n onSubmit,\n submitLabel = 'Save',\n cancelLabel = 'Cancel',\n isLoading = false,\n disableSubmit = false,\n showActions = true,\n headerAction,\n fullWidth = true,\n maxWidth = 'md',\n children,\n dividers = true,\n confirmBeforeClose = false,\n customActions,\n ...dialogProps\n}) => {\n const handleCloseAttempt = (e?: React.MouseEvent) => {\n if (e) e.stopPropagation();\n onClose();\n };\n\n return (\n <MuiDialog\n open={open}\n onClose={(_, reason) => {\n if (reason === 'backdropClick' || reason === 'escapeKeyDown' && !confirmBeforeClose) {\n onClose();\n }\n }}\n fullWidth={fullWidth}\n maxWidth={maxWidth}\n {...dialogProps}\n PaperProps={{\n sx: { minHeight: dialogProps.fullScreen ? undefined : 'auto' },\n ...dialogProps.PaperProps\n }}\n >\n <DialogTitle sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', p: 2 }}>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {typeof title === 'string' ? (\n <Typography variant=\"h6\">{title}</Typography>\n ) : (\n title\n )}\n </Box>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {headerAction}\n <IconButton\n edge=\"end\"\n color=\"inherit\"\n onClick={handleCloseAttempt}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n\n {dividers && <Divider />}\n\n <DialogContent dividers={dividers}>\n {children}\n </DialogContent>\n\n {(showActions || customActions) && (\n <>\n {dividers && <Divider />}\n <DialogActions>\n {customActions || (\n <>\n <Button\n onClick={handleCloseAttempt}\n disabled={isLoading}\n >\n {cancelLabel}\n </Button>\n {onSubmit && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={onSubmit}\n disabled={disableSubmit || isLoading}\n startIcon={isLoading ? <CircularProgress size={20} /> : undefined}\n >\n {submitLabel}\n </Button>\n )}\n </>\n )}\n </DialogActions>\n </>\n )}\n </MuiDialog>\n );\n};\n\n","import React, { ReactNode } from 'react';\nimport MuiDrawer, { DrawerProps as MuiDrawerProps } from '@mui/material/Drawer';\nimport { styled } from '@mui/material/styles';\nimport { Box, IconButton, Typography, Divider, Tabs, Tab, BoxProps } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\n\nexport interface DrawerProps extends Omit<MuiDrawerProps, 'title'> {\n /**\n * Width of the drawer when open\n * @default 400 for temporary/temporary variant, 240 for permanent\n */\n width?: number;\n /**\n * Width of the drawer when collapsed (mini variant)\n * @default 72\n */\n miniWidth?: number;\n /**\n * Whether the drawer is in collapsed/mini state\n * @default false\n */\n collapsed?: boolean;\n /**\n * Title to display in the drawer header\n */\n title?: ReactNode;\n /**\n * Custom header content (replaces title if provided)\n */\n header?: ReactNode;\n /**\n * Show close button in header\n * @default true for temporary variant, false for permanent\n */\n showCloseButton?: boolean;\n /**\n * Tab labels for tabbed drawer content\n */\n tabs?: string[];\n /**\n * Active tab index\n */\n activeTab?: number;\n /**\n * Callback when tab changes\n */\n onTabChange?: (index: number) => void;\n /**\n * Footer content (actions, buttons, etc.)\n */\n footer?: ReactNode;\n /**\n * Props for drawer content container\n */\n contentProps?: BoxProps;\n /**\n * Anchor position\n * @default 'right'\n */\n anchor?: 'left' | 'right' | 'top' | 'bottom';\n /**\n * Top offset in pixels (e.g., for header + breadcrumbs)\n * @default 0\n */\n topOffset?: number;\n}\n\nconst StyledDrawer = styled(MuiDrawer, {\n shouldForwardProp: (prop) => prop !== 'width' && prop !== 'miniWidth' && prop !== 'collapsed' && prop !== 'topOffset',\n})<Pick<DrawerProps, 'width' | 'miniWidth' | 'collapsed' | 'topOffset'>>(({ theme, width = 240, miniWidth = 72, collapsed, topOffset = 0 }) => ({\n width: collapsed ? miniWidth : width,\n flexShrink: 0,\n '& .MuiDrawer-paper': {\n width: collapsed ? miniWidth : width,\n boxSizing: 'border-box',\n boxShadow: '0px 2px 10px rgba(0, 0, 0, 0.05)',\n transition: theme.transitions.create(['width', 'top', 'height'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflow: 'visible', // Let internal content handle scrolling\n display: 'flex',\n flexDirection: 'column',\n top: `${topOffset}px !important`,\n height: topOffset > 0 ? `calc(100% - ${topOffset}px) !important` : '100%',\n zIndex: `${theme.zIndex.modal} !important`, // Use modal zIndex to be above everything except AppBar (which is modal + 1)\n },\n}));\n\n/**\n * Drawer component for navigation drawers and side panels\n * Can be used as a replacement for Dialog for better UX\n * \n * @example\n * ```tsx\n * // Simple drawer\n * <Drawer open={true} variant=\"temporary\" width={400} title=\"Settings\" onClose={handleClose}>\n * <Box p={2}>Content here</Box>\n * </Drawer>\n * \n * // Drawer with tabs\n * <Drawer \n * open={true} \n * variant=\"temporary\" \n * width={600} \n * title=\"Edit Stream\"\n * tabs={['General', 'Rules', 'Settings']}\n * activeTab={activeTab}\n * onTabChange={setActiveTab}\n * onClose={handleClose}\n * >\n * <Box p={2}>{tabContent}</Box>\n * </Drawer>\n * ```\n */\nexport const Drawer: React.FC<DrawerProps> = ({\n width,\n miniWidth = 72,\n collapsed = false,\n title,\n header,\n showCloseButton,\n tabs,\n activeTab = 0,\n onTabChange,\n footer,\n contentProps,\n anchor = 'right',\n variant = 'temporary',\n topOffset = 0,\n children,\n onClose,\n ...props\n}) => {\n // Determine default width based on variant\n const defaultWidth = variant === 'temporary' || variant === 'persistent' ? 400 : 240;\n const finalWidth = width ?? defaultWidth;\n \n // Determine if close button should be shown\n const shouldShowClose = showCloseButton ?? (variant === 'temporary' || variant === 'persistent');\n \n // Determine if we should show header\n const hasHeader = title || header || shouldShowClose || tabs;\n \n return (\n <StyledDrawer\n width={finalWidth}\n miniWidth={miniWidth}\n collapsed={collapsed}\n anchor={anchor}\n variant={variant}\n topOffset={topOffset}\n onClose={onClose}\n ModalProps={{\n ...props.ModalProps,\n style: {\n zIndex: topOffset > 0 ? undefined : undefined, // Let styled component handle zIndex\n },\n }}\n BackdropProps={{\n ...props.BackdropProps,\n style: {\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n }}\n {...props}\n >\n {hasHeader && (\n <>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n p: 2,\n minHeight: 64,\n borderBottom: 1,\n borderColor: 'divider',\n }}\n >\n {header || (\n <>\n <Box sx={{ flex: 1 }}>\n {typeof title === 'string' ? (\n <Typography variant=\"h6\">{title}</Typography>\n ) : (\n title\n )}\n </Box>\n {shouldShowClose && onClose && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n onClose(e, 'backdropClick');\n }}\n size=\"small\"\n sx={{ ml: 1 }}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n )}\n </>\n )}\n </Box>\n {tabs && tabs.length > 0 && (\n <Tabs\n value={activeTab}\n onChange={(_, newValue) => onTabChange?.(newValue)}\n variant={tabs.length > 4 ? \"scrollable\" : \"standard\"}\n scrollButtons={tabs.length > 4 ? \"auto\" : false}\n sx={{\n borderBottom: 1,\n borderColor: 'divider',\n px: 2,\n '& .MuiTabs-scrollableContainer': {\n overflow: 'auto',\n },\n }}\n >\n {tabs.map((tab, index) => (\n <Tab key={index} label={tab} />\n ))}\n </Tabs>\n )}\n </>\n )}\n \n <Box\n sx={{\n flex: 1,\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n }}\n {...contentProps}\n >\n {children}\n </Box>\n \n {footer && (\n <>\n <Divider />\n <Box\n sx={{\n p: 2,\n borderTop: 1,\n borderColor: 'divider',\n }}\n >\n {footer}\n </Box>\n </>\n )}\n </StyledDrawer>\n );\n};\n\nexport default Drawer;\n\n","import React from 'react';\nimport MuiCard, { CardProps as MuiCardProps } from '@mui/material/Card';\nimport MuiCardContent, { CardContentProps } from '@mui/material/CardContent';\nimport MuiCardHeader, { CardHeaderProps } from '@mui/material/CardHeader';\nimport MuiCardActions, { CardActionsProps } from '@mui/material/CardActions';\nimport { styled } from '@mui/material/styles';\n\nexport interface CardProps extends MuiCardProps {\n hoverable?: boolean;\n clickable?: boolean;\n}\n\nconst StyledCard = styled(MuiCard, {\n shouldForwardProp: (prop) => prop !== 'hoverable' && prop !== 'clickable',\n})<{ hoverable?: boolean; clickable?: boolean }>(({ hoverable, clickable }) => ({\n borderRadius: 8,\n boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.12)',\n transition: 'all 0.2s ease-in-out',\n ...(clickable && {\n cursor: 'pointer',\n }),\n ...(hoverable && {\n '&:hover': {\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.15)',\n transform: 'translateY(-2px)',\n },\n }),\n}));\n\nexport const Card: React.FC<CardProps> = ({ hoverable = false, clickable = false, children, ...props }) => {\n return (\n <StyledCard hoverable={hoverable} clickable={clickable} {...props}>\n {children}\n </StyledCard>\n );\n};\n\nexport const CardContent: React.FC<CardContentProps> = (props) => {\n return <MuiCardContent {...props} />;\n};\n\nexport const CardHeader: React.FC<CardHeaderProps> = (props) => {\n return <MuiCardHeader {...props} />;\n};\n\nexport const CardActions: React.FC<CardActionsProps> = (props) => {\n return <MuiCardActions {...props} />;\n};\n\n","import React from 'react';\nimport {\n List as MuiList,\n ListItem as MuiListItem,\n ListItemText,\n ListItemIcon,\n ListItemSecondaryAction,\n ListProps as MuiListProps,\n ListItemProps as MuiListItemProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport type ListProps = MuiListProps\n\nexport const List: React.FC<ListProps> = (props) => {\n return <MuiList {...props} />;\n};\n\nexport interface ListItemProps extends MuiListItemProps {\n primary?: React.ReactNode;\n secondary?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n hoverable?: boolean;\n}\n\nconst StyledListItem = styled(MuiListItem, {\n shouldForwardProp: (prop) => prop !== 'hoverable',\n})<{ hoverable?: boolean }>(({ hoverable = true }) => ({\n border: `1px solid ${colors.grey[200]}`,\n borderRadius: 8,\n marginBottom: 8,\n ...(hoverable && {\n '&:hover': {\n backgroundColor: colors.grey[50],\n },\n }),\n}));\n\nexport const ListItem: React.FC<ListItemProps> = ({\n primary,\n secondary,\n icon,\n action,\n hoverable = true,\n children,\n ...props\n}) => {\n return (\n <StyledListItem hoverable={hoverable} {...props}>\n {icon && <ListItemIcon>{icon}</ListItemIcon>}\n {(primary || secondary) && (\n <ListItemText\n primary={primary}\n secondary={secondary}\n />\n )}\n {children}\n {action && (action)}\n </StyledListItem>\n );\n};\n\nexport { ListItemText, ListItemIcon, ListItemSecondaryAction };\n\n","import React from 'react';\nimport {\n Paper,\n Box,\n Typography,\n IconButton,\n useTheme,\n LinearProgress,\n} from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport WorkOutlineIcon from '@mui/icons-material/WorkOutline';\nimport WavesIcon from '@mui/icons-material/Waves';\nimport RocketLaunchOutlinedIcon from '@mui/icons-material/RocketLaunchOutlined';\nimport InsertLinkIcon from '@mui/icons-material/InsertLink';\nimport SmartToyOutlinedIcon from '@mui/icons-material/SmartToyOutlined';\nimport { styled } from '@mui/material/styles';\nimport {\n deploymentEntityColors,\n deploymentStatusColors,\n deploymentSurfaceTokens as tokens,\n} from '../../../theme';\nimport { useControlledExpand } from '@/hooks/useControlledExpand';\nimport { IDBlock } from '../../feedback/IDBlock';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type DeploymentEntityType =\n | 'workspace'\n | 'stream'\n | 'deployment'\n | 'engagement'\n | 'agent';\n\nexport type DeploymentStatusIndicator =\n | 'normal'\n | 'warning'\n | 'error'\n | 'disabled'\n | null;\n\nexport interface DeploymentCardAction {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n highlight?: boolean;\n outlined?: boolean;\n}\n\nexport interface DeploymentDashboardCardProps {\n /** Entity type: drives chip color and icon (Figma 15-1725, 15-1276) */\n entityType: DeploymentEntityType;\n /** Primary title */\n title: string;\n /** Display id; when present shows \"ID: {id}\" with copy action */\n id?: string;\n /** Shown as \"Created: …\" */\n createdAt?: string;\n /** Shown as \"Last Updated: …\" */\n updatedAt?: string;\n /** Only for entityType === 'deployment'; shows Capacity label, progress bar, \"X%\" */\n capacity?: number;\n /** Action buttons/chips rendered inline on the right */\n actions?: DeploymentCardAction[];\n /** Status dot: green (normal), amber (warning), red (error), white/dim (disabled) */\n statusIndicator?: DeploymentStatusIndicator;\n /** Whether to show expand/collapse chevron on the left */\n expandable?: boolean;\n /** Controlled expanded state */\n expanded?: boolean;\n /** Called when chevron is clicked */\n onExpandToggle?: () => void;\n /** When copy ID is clicked */\n onCopyId?: () => void;\n /** Optional className */\n className?: string;\n /** Child content rendered inside the card border (used by tree to nest children) */\n children?: React.ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// Entity constants\n// ---------------------------------------------------------------------------\n\nconst ENTITY_LABELS: Record<DeploymentEntityType, string> = {\n workspace: 'Workspace',\n stream: 'Stream',\n deployment: 'Deployment',\n engagement: 'Engagement',\n agent: 'Agent',\n};\n\nconst ENTITY_ICON_SIZE = 16;\n\nconst ENTITY_ICONS: Record<DeploymentEntityType, React.ReactNode> = {\n workspace: <WorkOutlineIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n stream: <WavesIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n deployment: <RocketLaunchOutlinedIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n engagement: <InsertLinkIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n agent: <SmartToyOutlinedIcon sx={{ fontSize: ENTITY_ICON_SIZE }} />,\n};\n\nconst STATUS_DOT_COLORS: Record<string, string> = {\n normal: deploymentStatusColors.normal,\n warning: deploymentStatusColors.warning,\n error: deploymentStatusColors.error,\n disabled: deploymentStatusColors.disabledDim,\n};\n\nconst CHEVRON_SIZE = 16;\n\n// Entity chip styling constants matching Figma specs\nconst ENTITY_CHIP_STYLES = {\n borderRadius: '12px',\n borderWidth: '1.5px',\n padding: { left: 0.75, right: 1, vertical: 0.25 },\n gap: 0.5,\n} as const;\n\nconst ENTITY_CHIP_TYPOGRAPHY = {\n fontSize: '12px',\n fontWeight: 500,\n lineHeight: 1.33,\n letterSpacing: '0.07px',\n} as const;\n\n// ---------------------------------------------------------------------------\n// Sub-components\n// ---------------------------------------------------------------------------\n\n/** Status dot colored by severity (Figma 15-1725) */\nconst StatusDot = styled(Box, {\n shouldForwardProp: (p) => p !== 'status',\n})<{ status: DeploymentStatusIndicator }>(({ status }) => ({\n width: 8,\n height: 8,\n borderRadius: '50%',\n backgroundColor: status ? STATUS_DOT_COLORS[status] ?? 'transparent' : 'transparent',\n flexShrink: 0,\n}));\n\n/** Colored entity type pill (Figma 15-1725: outlined chip with icon) */\nconst EntityChip: React.FC<{\n entityType: DeploymentEntityType;\n color: string;\n}> = ({ entityType, color }) => (\n <Box\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: ENTITY_CHIP_STYLES.gap,\n pl: ENTITY_CHIP_STYLES.padding.left,\n pr: ENTITY_CHIP_STYLES.padding.right,\n py: ENTITY_CHIP_STYLES.padding.vertical,\n borderRadius: ENTITY_CHIP_STYLES.borderRadius,\n backgroundColor: tokens.surfaceHigh,\n border: `${ENTITY_CHIP_STYLES.borderWidth} solid ${color}`,\n flexShrink: 0,\n }}\n >\n <Box sx={{ color, display: 'flex', alignItems: 'center' }}>\n {ENTITY_ICONS[entityType]}\n </Box>\n <Typography\n variant=\"body2\"\n fontWeight={ENTITY_CHIP_TYPOGRAPHY.fontWeight}\n sx={{\n color: 'black',\n lineHeight: ENTITY_CHIP_TYPOGRAPHY.lineHeight,\n fontSize: ENTITY_CHIP_TYPOGRAPHY.fontSize,\n letterSpacing: ENTITY_CHIP_TYPOGRAPHY.letterSpacing,\n }}\n >\n {ENTITY_LABELS[entityType]}\n </Typography>\n </Box>\n);\n\n/** Capacity progress bar — deployment only (Figma 15-1725) */\nconst CapacityBar: React.FC<{\n value: number;\n indented?: boolean;\n}> = ({ value, indented = false }) => (\n <Box sx={{ pl: indented ? '40px' : 0, pr: '20px', py: 1 }}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', mb: 1 }}>\n <Typography variant=\"body2\" sx={{ color: tokens.textPrimary }}>\n Capacity\n </Typography>\n <Typography variant=\"body2\" sx={{ color: tokens.accentBlue }}>\n {value}%\n </Typography>\n </Box>\n <LinearProgress\n variant=\"determinate\"\n value={value}\n sx={{\n height: 4,\n borderRadius: '20px',\n backgroundColor: tokens.strokeOutside,\n '& .MuiLinearProgress-bar': {\n borderRadius: '20px',\n backgroundColor: tokens.accentBlue,\n },\n }}\n />\n </Box>\n);\n\n/** Helper to get action button styles based on variant */\nconst getActionButtonStyles = (action: DeploymentCardAction) => {\n const baseStyles = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n cursor: action.onClick ? 'pointer' : 'default',\n background: 'none',\n font: 'inherit',\n color: tokens.textPrimary,\n whiteSpace: 'nowrap',\n '&:hover': action.onClick ? { opacity: 0.7 } : undefined,\n } as const;\n\n const variantStyles = action.outlined\n ? {\n border: `1px solid ${tokens.strokeOutside}`,\n borderRadius: '8px',\n p: 1,\n bgcolor: 'white',\n }\n : {\n border: 'none',\n p: 0,\n };\n\n return { ...baseStyles, ...variantStyles };\n};\n\n/** Single action button/chip */\nconst CardAction: React.FC<{ action: DeploymentCardAction }> = ({ action }) => (\n <Box\n component={action.onClick ? 'button' : 'span'}\n onClick={action.onClick}\n sx={getActionButtonStyles(action)}\n >\n {action.icon && (\n <Box component=\"span\" sx={{ display: 'flex', alignItems: 'center' }}>\n {action.icon}\n </Box>\n )}\n {action.label && (\n <Typography variant=\"body2\" fontWeight={500} component=\"span\" sx={{ fontSize: '14px' }}>\n {action.label}\n </Typography>\n )}\n </Box>\n);\n\n/** Inline action items rendered in the right column */\nconst CardActionList: React.FC<{\n actions: DeploymentCardAction[];\n}> = ({ actions }) => (\n <>\n {actions.map((action) => (\n <CardAction key={action.id} action={action} />\n ))}\n </>\n);\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\nexport const DeploymentDashboardCard: React.FC<DeploymentDashboardCardProps> = ({\n entityType,\n title,\n id: idDisplay,\n createdAt,\n updatedAt,\n capacity,\n actions = [],\n statusIndicator = null,\n expandable = false,\n expanded: controlledExpanded,\n onExpandToggle,\n onCopyId,\n className,\n children,\n}) => {\n const theme = useTheme();\n const entityColor =\n theme.palette.deployment?.entity?.[entityType] ?? deploymentEntityColors[entityType];\n\n const isControlled = expandable && onExpandToggle != null;\n const { expanded, toggle } = useControlledExpand(\n isControlled ? controlledExpanded : undefined,\n isControlled ? onExpandToggle : undefined,\n );\n\n const isWorkspace = entityType === 'workspace';\n const isDeployment = entityType === 'deployment';\n\n const getClampedCapacity = (capacity: number | undefined): number | undefined => {\n if (!isDeployment || capacity == null) {\n return undefined;\n }\n return Math.min(100, Math.max(0, capacity));\n };\n\n const capacityClamped = getClampedCapacity(capacity);\n\n return (\n <Paper\n className={className}\n elevation={0}\n sx={{\n border: `1px solid ${isWorkspace ? tokens.accentBlue : tokens.borderDefault}`,\n borderRadius: isWorkspace ? '4px' : '12px',\n boxShadow: isWorkspace ? tokens.workspaceShadow : 'none',\n px: 1,\n py: isDeployment ? 2 : 1,\n pl: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n }}\n >\n {/* Main row: left column + right column */}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: isDeployment ? 'flex-start' : 'center',\n width: '100%',\n }}\n >\n {/* Left column */}\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.5, minWidth: 0 }}>\n {/* Title row: [chevron/spacer] [entity chip] [title] [ID badge] */}\n <Box sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>\n {expandable ? (\n <IconButton\n size=\"small\"\n onClick={toggle}\n aria-label={expanded ? 'Collapse' : 'Expand'}\n sx={{ p: '5px' }}\n >\n {expanded ? (\n <ExpandMoreIcon sx={{ fontSize: CHEVRON_SIZE, color: tokens.accentBlue }} />\n ) : (\n <ChevronRightIcon sx={{ fontSize: CHEVRON_SIZE, color: tokens.accentBlue }} />\n )}\n </IconButton>\n ) : (\n <Box sx={{ width: 26, flexShrink: 0 }} />\n )}\n\n <EntityChip entityType={entityType} color={entityColor} />\n\n <Typography\n variant=\"subtitle1\"\n fontWeight={500}\n noWrap\n sx={{ color: tokens.textPrimary, fontSize: '16px', letterSpacing: '0.08px' }}\n >\n {title}\n </Typography>\n\n {idDisplay != null && <IDBlock id={idDisplay} label=\"ID\" entityType={entityType} onCopy={onCopyId} />}\n </Box>\n\n {/* Timestamps */}\n {(createdAt != null || updatedAt != null) && (\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n px: '34px',\n color: tokens.textSecondary,\n }}\n >\n {createdAt != null && (\n <Typography variant=\"body2\" sx={{ color: 'inherit', fontSize: '14px' }}>\n Created: {createdAt}\n </Typography>\n )}\n {updatedAt != null && (\n <Typography variant=\"body2\" sx={{ color: 'inherit', fontSize: '14px' }}>\n Last Updated: {updatedAt}\n </Typography>\n )}\n </Box>\n )}\n\n {/* Capacity bar — deployment only */}\n {capacityClamped !== undefined && (\n <CapacityBar value={capacityClamped} indented={expandable} />\n )}\n </Box>\n\n {/* Right column: status dot, actions, context menu */}\n <Box sx={{ display: 'flex', gap: 1, alignItems: 'center', flexShrink: 0 }}>\n {statusIndicator != null && <StatusDot status={statusIndicator} aria-hidden />}\n\n <CardActionList actions={actions} />\n </Box>\n </Box>\n\n {/* Children rendered inside the card border (tree nests children here) */}\n {children && (\n <Box sx={{ mt: 1.5, display: 'flex', flexDirection: 'column', gap: 1 }}>\n {children}\n </Box>\n )}\n </Paper>\n );\n};\n","import { useState } from 'react';\n\n/**\n * Shared hook for controlled/uncontrolled expand state.\n *\n * - **Controlled**: when `controlledExpanded` is defined and `onToggle` is provided,\n * the consumer owns the state.\n * - **Uncontrolled**: otherwise, the hook manages its own internal state starting\n * from `defaultExpanded`.\n */\nexport function useControlledExpand(\n controlledExpanded: boolean | undefined,\n onToggle: (() => void) | undefined,\n defaultExpanded = false,\n) {\n const [internal, setInternal] = useState(defaultExpanded);\n const isControlled = controlledExpanded !== undefined && onToggle != null;\n const expanded = isControlled ? controlledExpanded! : internal;\n const toggle = isControlled\n ? () => onToggle!()\n : () => setInternal((prev) => !prev);\n return { expanded, toggle };\n}\n","import React from 'react';\nimport { Menu, MenuItem, Switch, Divider, ListItemIcon, ListItemText } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { deploymentSurfaceTokens as tokens } from '../../../theme';\nimport type { ContextMenuItem } from './contextMenuItems';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type { ContextMenuItem } from './contextMenuItems';\n\nexport interface DeploymentEntityContextMenuProps {\n /** Controlled open state */\n open: boolean;\n /** Anchor element for menu position */\n anchorEl: HTMLElement | null;\n /** Callback when the menu closes */\n onClose: () => void;\n /** Menu items to render (use contextMenuItems helpers to build) */\n items: ContextMenuItem[];\n /** Whether to show an \"Enable\" row with toggle at the bottom (legacy — prefer inline toggle item) */\n enableToggle?: boolean;\n /** Toggle checked state */\n enableChecked?: boolean;\n /** Toggle callback */\n onEnableChange?: (checked: boolean) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Styled wrappers – matching Figma 11-1102\n// ---------------------------------------------------------------------------\n\n/** Menu paper: 4px radius, Figma shadow, 8px inner padding */\nconst StyledMenu = styled(Menu)({\n '& .MuiPaper-root': {\n borderRadius: 4,\n boxShadow: tokens.workspaceShadow,\n minWidth: 220,\n border: `1px solid ${tokens.strokeOutside}`,\n padding: 8,\n },\n '& .MuiList-root': {\n padding: 0,\n },\n});\n\n/** Standard menu item: 24px icon, 16px/500 label, 8px vertical padding */\nconst StyledMenuItem = styled(MenuItem)({\n gap: 8,\n padding: '8px 0',\n borderRadius: 4,\n minHeight: 'auto',\n '&:hover': {\n backgroundColor: tokens.hoverLight,\n },\n '& .MuiListItemIcon-root': {\n minWidth: 'auto',\n color: tokens.textPrimary,\n '& .MuiSvgIcon-root': {\n fontSize: 24,\n },\n },\n '& .MuiListItemText-root .MuiTypography-root': {\n fontSize: 16,\n fontWeight: 500,\n lineHeight: 1.5,\n letterSpacing: '0.08px',\n color: tokens.textPrimary,\n },\n});\n\n/** Highlighted menu item for active/special rows (e.g. Agent Flow Visualization) */\nconst HighlightedMenuItem = styled(StyledMenuItem)({\n backgroundColor: tokens.highlightBg,\n border: `1px solid ${tokens.highlightBorder}`,\n padding: 8,\n '&:hover': {\n backgroundColor: tokens.highlightBgHover,\n },\n});\n\n/** Toggle row: switch on left + label (uses MenuItem for MUI compliance) */\nconst ToggleMenuItem = styled(MenuItem)({\n gap: 8,\n padding: '8px 0',\n cursor: 'default',\n minHeight: 'auto',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n '& .MuiListItemText-root .MuiTypography-root': {\n fontSize: 16,\n fontWeight: 500,\n lineHeight: 1.5,\n letterSpacing: '0.08px',\n color: tokens.textPrimary,\n },\n});\n\n/** Green toggle switch matching Figma design */\nconst EnableSwitch = styled(Switch)({\n width: 32,\n height: 20,\n padding: 0,\n '& .MuiSwitch-switchBase': {\n padding: 2,\n '&.Mui-checked': {\n transform: 'translateX(12px)',\n color: '#fff',\n '& + .MuiSwitch-track': {\n backgroundColor: tokens.switchGreen,\n opacity: 1,\n },\n },\n },\n '& .MuiSwitch-thumb': {\n width: 16,\n height: 16,\n },\n '& .MuiSwitch-track': {\n borderRadius: 100,\n backgroundColor: tokens.switchTrackOff,\n opacity: 1,\n },\n});\n\n/** Divider matching Figma stroke/outside token */\nconst StyledDivider = styled(Divider)({\n margin: '0 !important',\n borderColor: tokens.strokeOutside,\n});\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * Floating context menu for deployment entities.\n *\n * Use the `contextMenuItems` factory to compose your menu. Supports action items,\n * dividers, toggle rows, and highlighted (active-state) items.\n *\n * @see {@link https://www.figma.com/design/xky11VbkkFcgZLwZE8BdCN/ROB?node-id=11-1102 Figma 11-1102}\n */\nexport const DeploymentEntityContextMenu: React.FC<DeploymentEntityContextMenuProps> = ({\n open,\n anchorEl,\n onClose,\n items,\n enableToggle = false,\n enableChecked = false,\n onEnableChange,\n}) => {\n return (\n <StyledMenu\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{ paper: { 'aria-label': 'Entity context menu' } }}\n >\n {items.map((item) => {\n if (item.type === 'divider') {\n return <StyledDivider key={item.id} />;\n }\n\n if (item.type === 'toggle') {\n return (\n <ToggleMenuItem key={item.id} disableRipple>\n {onEnableChange && (\n <EnableSwitch\n size=\"small\"\n checked={enableChecked}\n onChange={(_, checked) => onEnableChange(checked)}\n inputProps={{ 'aria-label': item.label }}\n />\n )}\n <ListItemText primary={item.label} />\n </ToggleMenuItem>\n );\n }\n\n const Row = item.highlighted ? HighlightedMenuItem : StyledMenuItem;\n return (\n <Row\n key={item.id}\n onClick={() => {\n item.onClick?.();\n onClose();\n }}\n >\n {item.icon && <ListItemIcon>{item.icon}</ListItemIcon>}\n <ListItemText primary={item.label} />\n </Row>\n );\n })}\n {enableToggle && (\n <>\n <StyledDivider />\n <ToggleMenuItem disableRipple>\n {onEnableChange && (\n <EnableSwitch\n size=\"small\"\n checked={enableChecked}\n onChange={(_, checked) => onEnableChange(checked)}\n inputProps={{ 'aria-label': 'Enable' }}\n />\n )}\n <ListItemText primary=\"Enable\" />\n </ToggleMenuItem>\n </>\n )}\n </StyledMenu>\n );\n};\n","import React from 'react';\nimport AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport SmartToyOutlinedIcon from '@mui/icons-material/SmartToyOutlined';\nimport DescriptionIcon from '@mui/icons-material/Description';\nimport SettingsIcon from '@mui/icons-material/Settings';\n\n/**\n * Describes a single item inside {@link DeploymentEntityContextMenu}.\n *\n * Items can be action rows (icon + label), toggle rows (switch + label),\n * or visual dividers. Use the pre-built `contextMenuItems` factories\n * for standard deployment-entity actions.\n *\n * @see Figma 11-1102\n */\nexport interface ContextMenuItem {\n /** Unique key used for React reconciliation */\n id: string;\n /** Display label shown next to the icon */\n label: string;\n /** Optional leading icon (24 × 24) */\n icon?: React.ReactNode;\n /** Click handler — called when an action item is selected */\n onClick?: () => void;\n /**\n * Item variant:\n * - `'action'` (default) — clickable row with icon + label\n * - `'toggle'` — switch on left + label, controlled by `enableChecked` / `onEnableChange`\n * - `'divider'` — horizontal separator (label is ignored)\n */\n type?: 'action' | 'toggle' | 'divider';\n /**\n * When `true` the item renders with a blue highlight background\n * (Figma blue-50 / blue-100 tokens). Used for the \"Agent Flow Visualization\" row.\n * @default false\n */\n highlighted?: boolean;\n}\n\n/** Pre-built item factories for common deployment entity actions (Figma 11-1102) */\nexport const contextMenuItems = {\n /** Add Engagement action (Add Circle icon) */\n addEngagement: (onClick: () => void): ContextMenuItem => ({\n id: 'add-engagement',\n label: 'Add Engagement',\n icon: <AddCircleOutlineIcon />,\n onClick,\n }),\n /** Add Agent action (Add Circle icon) */\n addAgent: (onClick: () => void): ContextMenuItem => ({\n id: 'add-agent',\n label: 'Add Agent',\n icon: <AddCircleOutlineIcon />,\n onClick,\n }),\n /** Add Stream action (Add Circle icon) */\n addStream: (onClick: () => void): ContextMenuItem => ({\n id: 'add-stream',\n label: 'Add Stream',\n icon: <AddCircleOutlineIcon />,\n onClick,\n }),\n /** Edit action (Pen / Edit icon) */\n edit: (onClick: () => void): ContextMenuItem => ({\n id: 'edit',\n label: 'Edit',\n icon: <EditIcon />,\n onClick,\n }),\n /** Copy ID action (Copy icon) */\n copyId: (onClick: () => void): ContextMenuItem => ({\n id: 'copy-id',\n label: 'Copy ID',\n icon: <ContentCopyIcon />,\n onClick,\n }),\n /** Agent Flow Visualization — highlighted action (SmartToy icon) */\n agentFlowVisualization: (onClick: () => void): ContextMenuItem => ({\n id: 'agent-flow',\n label: 'Agent Flow Visualization',\n icon: <SmartToyOutlinedIcon />,\n onClick,\n highlighted: true,\n }),\n /** View Logs action (Document / Description icon) */\n viewLogs: (onClick: () => void): ContextMenuItem => ({\n id: 'view-logs',\n label: 'View Logs',\n icon: <DescriptionIcon />,\n onClick,\n }),\n /** Horizontal divider between sections */\n divider: (): ContextMenuItem => ({\n id: 'divider',\n label: '',\n type: 'divider',\n }),\n /** Enable toggle row (switch on left + label) */\n enable: (): ContextMenuItem => ({\n id: 'enable',\n label: 'Enable',\n type: 'toggle',\n }),\n /** Settings action (Settings / Gear icon) */\n settings: (onClick: () => void): ContextMenuItem => ({\n id: 'settings',\n label: 'Settings',\n icon: <SettingsIcon />,\n onClick,\n }),\n} as const;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { styled, alpha } from '@mui/material/styles';\nimport { deploymentEntityColors } from '../../../theme';\nimport { useControlledExpand } from '@/hooks/useControlledExpand';\nimport { DeploymentDashboardCard } from '../DeploymentDashboardCard/DeploymentDashboardCard';\nimport type {\n DeploymentEntityType,\n DeploymentCardAction,\n DeploymentStatusIndicator,\n} from '../DeploymentDashboardCard/DeploymentDashboardCard';\n\nexport interface DeploymentTreeNode {\n id: string;\n entityType: DeploymentEntityType;\n title: string;\n idDisplay?: string;\n createdAt?: string;\n updatedAt?: string;\n capacity?: number;\n actions?: DeploymentCardAction[];\n statusIndicator?: DeploymentStatusIndicator;\n children?: DeploymentTreeNode[];\n expanded?: boolean;\n}\n\nexport interface DeploymentDashboardTreeProps {\n /** Tree of entities */\n nodes: DeploymentTreeNode[];\n /** When a row's expand is toggled */\n onExpandToggle?: (nodeId: string) => void;\n /** When a card's copy-ID button is clicked */\n onCopyId?: (nodeId: string) => void;\n /** Override row content; default: render DeploymentDashboardCard from node data */\n renderCard?: (node: DeploymentTreeNode) => React.ReactNode;\n}\n\n/**\n * Figma 15-1276 spacing (fixed, not dynamic). From variable defs:\n * Units/sp-4 = 4px, Units/sp-8 = 8px (S), Units/sp-12 = 12px, Units/sp-16 = 16px (M).\n * Use these so tree indent and row gaps match the design exactly.\n */\nconst TREE_SP = {\n /** Vertical gap between sibling rows (Figma S / sp-8) */\n rowGap: 8,\n /** Gap between rail and children column (Figma sp-12) */\n railGap: 12,\n /** Rail width (Figma) */\n railWidth: 4,\n /** Total horizontal indent per level = railWidth + railGap (Figma M = 16) */\n indentPerLevel: 4 + 12,\n} as const;\n\n/**\n * Rail opacity per entity type — matching Figma 15-1276 absolute-positioned bars:\n * workspace rgba(182,95,244,0.5) → 0.5\n * stream rgba(83,185,106,0.5) → 0.5\n * deployment rgba(238,181,16,0.4) → 0.4\n * engagement rgba(217,72,201,0.4) → 0.4\n * agent (follows pattern) → 0.4\n */\nconst RAIL_OPACITY: Record<DeploymentEntityType, number> = {\n workspace: 0.5,\n stream: 0.5,\n deployment: 0.4,\n engagement: 0.4,\n agent: 0.4,\n};\n\nconst Rail = styled(Box, {\n shouldForwardProp: (p) => p !== 'railColor',\n})<{ railColor: string }>(({ railColor }) => ({\n width: TREE_SP.railWidth,\n borderRadius: TREE_SP.railWidth / 2,\n backgroundColor: railColor,\n flexShrink: 0,\n alignSelf: 'stretch',\n}));\n\nconst TreeRow: React.FC<{\n node: DeploymentTreeNode;\n depth: number;\n onExpandToggle?: (nodeId: string) => void;\n onCopyId?: (nodeId: string) => void;\n renderCard?: (node: DeploymentTreeNode) => React.ReactNode;\n}> = ({ node, depth, onExpandToggle, onCopyId, renderCard }) => {\n const hasChildren = Boolean(node.children && node.children.length > 0);\n\n const { expanded, toggle } = useControlledExpand(\n onExpandToggle != null ? node.expanded : undefined,\n onExpandToggle ? () => onExpandToggle(node.id) : undefined,\n node.expanded ?? false,\n );\n\n const entityColor =\n deploymentEntityColors[node.entityType] ?? deploymentEntityColors.workspace;\n const railOpacity = RAIL_OPACITY[node.entityType] ?? 0.5;\n const railColor = alpha(entityColor, railOpacity);\n\n /*\n * Rendered children — wrapped with the PARENT's rail so the rail sits\n * inside the card border, alongside the children (Figma 15-1276).\n * Agents are leaf nodes so they never contribute a rail.\n * Spacing: TREE_SP (fixed Figma Units/sp-8, sp-12, M=16).\n */\n const renderedChildren =\n hasChildren && expanded ? (\n <Box sx={{ display: 'flex', gap: `${TREE_SP.railGap}px` }}>\n {/* Parent's rail — inside the card border, next to children */}\n <Rail railColor={railColor} aria-hidden data-rail />\n\n <Box\n role=\"group\"\n sx={{\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: `${TREE_SP.rowGap}px`,\n }}\n >\n {node.children!.map((child) => (\n <TreeRow\n key={child.id}\n node={child}\n depth={depth + 1}\n onExpandToggle={onExpandToggle}\n onCopyId={onCopyId}\n renderCard={renderCard}\n />\n ))}\n </Box>\n </Box>\n ) : null;\n\n const cardContent =\n renderCard?.(node) ?? (\n <DeploymentDashboardCard\n entityType={node.entityType}\n title={node.title}\n id={node.idDisplay}\n createdAt={node.createdAt}\n updatedAt={node.updatedAt}\n capacity={node.capacity}\n actions={node.actions}\n statusIndicator={node.statusIndicator}\n expandable={hasChildren}\n expanded={expanded}\n onExpandToggle={hasChildren ? toggle : undefined}\n onCopyId={\n onCopyId && node.idDisplay\n ? () => onCopyId(node.id)\n : undefined\n }\n >\n {renderedChildren}\n </DeploymentDashboardCard>\n );\n\n return (\n <Box role=\"treeitem\">\n {cardContent}\n </Box>\n );\n};\n\nexport const DeploymentDashboardTree: React.FC<DeploymentDashboardTreeProps> = ({\n nodes,\n onExpandToggle,\n onCopyId,\n renderCard,\n}) => {\n return (\n <Box\n role=\"tree\"\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: `${TREE_SP.rowGap}px`,\n p: `${TREE_SP.rowGap}px`,\n }}\n >\n {nodes.map((node) => (\n <TreeRow\n key={node.id}\n node={node}\n depth={0}\n onExpandToggle={onExpandToggle}\n onCopyId={onCopyId}\n renderCard={renderCard}\n />\n ))}\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { deploymentSurfaceTokens as tokens } from '../../../theme';\n\n/**\n * Backdrop/background panel for the deployment list (Figma 15-1325).\n * Wraps the deployment tree or list in a rounded, light surface with a subtle border\n * so the list has a clear visual container.\n */\nexport interface DeploymentDashboardPanelProps {\n /** Content (e.g. DeploymentDashboardTree or a list of DeploymentDashboardCards) */\n children: React.ReactNode;\n /** Optional className */\n className?: string;\n /** Optional padding override; default uses theme spacing */\n padding?: number | string;\n}\n\nconst PANEL_RADIUS = 12;\nconst PANEL_SHADOW = '0px 1px 3px rgba(0, 0, 0, 0.08)';\n\nconst StyledPanel = styled(Box)({\n backgroundColor: tokens.surfaceHigh,\n border: `1px solid ${tokens.strokeOutside}`,\n borderRadius: PANEL_RADIUS,\n boxShadow: PANEL_SHADOW,\n overflow: 'hidden',\n});\n\nexport const DeploymentDashboardPanel: React.FC<DeploymentDashboardPanelProps> = ({\n children,\n className,\n padding = 2,\n}) => {\n return (\n <StyledPanel className={className} sx={{ p: padding }}>\n {children}\n </StyledPanel>\n );\n};\n","import React from 'react';\nimport MuiAvatar, { AvatarProps as MuiAvatarProps } from '@mui/material/Avatar';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface AvatarProps extends MuiAvatarProps {\n size?: 'small' | 'medium' | 'large' | number;\n}\n\nconst sizeMap = {\n small: 32,\n medium: 40,\n large: 56,\n};\n\nconst StyledAvatar = styled(MuiAvatar, {\n shouldForwardProp: (prop) => prop !== 'avatarSize',\n})<{ avatarSize?: number }>(({ avatarSize = 40 }) => ({\n width: avatarSize,\n height: avatarSize,\n backgroundColor: colors.primary.main,\n color: colors.primary.contrastText,\n fontWeight: 600,\n}));\n\nexport const Avatar: React.FC<AvatarProps> = ({ size = 'medium', ...props }) => {\n const avatarSize = typeof size === 'number' ? size : sizeMap[size];\n\n return <StyledAvatar avatarSize={avatarSize} {...props} />;\n};\n\n","import React from 'react';\nimport {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TableProps as MuiTableProps,\n TableSortLabel,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface TableProps extends MuiTableProps {\n stickyHeader?: boolean;\n}\n\nconst StyledTableContainer = styled(TableContainer)({\n borderRadius: 8,\n border: `1px solid ${colors.grey[200]}`,\n});\n\nconst StyledTableHead = styled(TableHead)({\n backgroundColor: colors.grey[50],\n '& .MuiTableCell-head': {\n fontWeight: 600,\n color: colors.text.primary,\n },\n});\n\n\nexport const Table: React.FC<TableProps> = ({ stickyHeader = false, children, ...props }) => {\n return (\n <StyledTableContainer>\n <MuiTable stickyHeader={stickyHeader} {...props}>\n {children}\n </MuiTable>\n </StyledTableContainer>\n );\n};\n\nexport interface TableHeaderProps {\n columns: Array<{\n id: string;\n label: string;\n sortable?: boolean;\n align?: 'left' | 'center' | 'right';\n }>;\n orderBy?: string;\n order?: 'asc' | 'desc';\n onSort?: (columnId: string) => void;\n}\n\nexport const TableHeader: React.FC<TableHeaderProps> = ({\n columns,\n orderBy,\n order = 'asc',\n onSort,\n}) => {\n return (\n <StyledTableHead>\n <TableRow>\n {columns.map((column) => (\n <TableCell key={column.id} align={column.align || 'left'}>\n {column.sortable && onSort ? (\n <TableSortLabel\n active={orderBy === column.id}\n direction={orderBy === column.id ? order : 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n ) : (\n column.label\n )}\n </TableCell>\n ))}\n </TableRow>\n </StyledTableHead>\n );\n};\n\nexport { TableBody, TableCell, TableContainer, TableHead, TableRow, TableSortLabel };\n\n","export { Grid2 as Grid } from '@mui/material';\nexport type { Grid2Props as GridProps } from '@mui/material';\n\n","import React from 'react';\nimport MuiBreadcrumbs, { BreadcrumbsProps as MuiBreadcrumbsProps } from '@mui/material/Breadcrumbs';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface BreadcrumbsProps extends Omit<MuiBreadcrumbsProps, 'children'> {\n items: BreadcrumbItem[];\n}\n\nconst StyledBreadcrumbs = styled(MuiBreadcrumbs)({\n '& .MuiBreadcrumbs-ol': {\n flexWrap: 'nowrap',\n },\n '& .MuiBreadcrumbs-separator': {\n color: colors.text.secondary,\n },\n});\n\nconst StyledLink = styled(Link)({\n color: colors.primary.main,\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n});\n\nexport const Breadcrumbs: React.FC<BreadcrumbsProps> = ({ items, ...props }) => {\n return (\n <StyledBreadcrumbs {...props}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n if (isLast || (!item.href && !item.onClick)) {\n return (\n <Typography key={index} color=\"text.primary\">\n {item.label}\n </Typography>\n );\n }\n\n return (\n <StyledLink\n key={index}\n href={item.href}\n onClick={(e) => {\n if (item.onClick) {\n e.preventDefault();\n item.onClick();\n }\n }}\n >\n {item.label}\n </StyledLink>\n );\n })}\n </StyledBreadcrumbs>\n );\n};\n\n","import React from 'react';\nimport {\n Accordion as MuiAccordion,\n AccordionSummary,\n AccordionDetails,\n AccordionProps as MuiAccordionProps,\n} from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface AccordionProps extends Omit<MuiAccordionProps, 'children'> {\n title: string;\n children: NonNullable<React.ReactNode>;\n defaultExpanded?: boolean;\n}\n\nconst StyledAccordion = styled(MuiAccordion)({\n borderRadius: 8,\n boxShadow: 'none',\n border: `1px solid ${colors.grey[200]}`,\n '&:before': {\n display: 'none',\n },\n '&.Mui-expanded': {\n margin: 0,\n },\n});\n\nconst StyledAccordionSummary = styled(AccordionSummary)({\n backgroundColor: colors.grey[50],\n borderRadius: '8px 8px 0 0',\n '&.Mui-expanded': {\n borderRadius: '8px 8px 0 0',\n },\n '& .MuiAccordionSummary-content': {\n margin: '12px 0',\n },\n});\n\nconst StyledAccordionDetails = styled(AccordionDetails)({\n padding: '16px',\n});\n\nexport const Accordion: React.FC<AccordionProps> = ({\n title,\n children,\n defaultExpanded = false,\n ...props\n}) => {\n return (\n <StyledAccordion defaultExpanded={defaultExpanded} {...props}>\n <StyledAccordionSummary expandIcon={<ExpandMoreIcon />}>\n {title}\n </StyledAccordionSummary>\n <StyledAccordionDetails>{children}</StyledAccordionDetails>\n </StyledAccordion>\n );\n};\n\n","import React from 'react';\nimport MuiPaper, { PaperProps as MuiPaperProps } from '@mui/material/Paper';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface PaperProps extends MuiPaperProps {\n variant?: 'elevation' | 'outlined';\n}\n\nconst StyledPaper = styled(MuiPaper)({\n borderRadius: 8,\n '&.MuiPaper-elevation': {\n boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.08)',\n },\n '&.MuiPaper-outlined': {\n border: `1px solid ${colors.grey[200]}`,\n boxShadow: 'none',\n },\n});\n\nexport const Paper: React.FC<PaperProps> = ({ variant = 'elevation', ...props }) => {\n return <StyledPaper variant={variant} elevation={variant === 'elevation' ? 1 : 0} {...props} />;\n};\n\n","import React from 'react';\nimport MuiDivider, { DividerProps as MuiDividerProps } from '@mui/material/Divider';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface DividerProps extends MuiDividerProps {\n variant?: 'fullWidth' | 'inset' | 'middle';\n}\n\nconst StyledDivider = styled(MuiDivider)({\n borderColor: colors.grey[200],\n});\n\nexport const Divider: React.FC<DividerProps> = ({ ...props }) => {\n return <StyledDivider {...props} />;\n};\n\n","export { Stack } from '@mui/material';\nexport type { StackProps } from '@mui/material';\n\n","export { Box } from '@mui/material';\nexport type { BoxProps } from '@mui/material';\n\n","export { Typography } from '@mui/material';\nexport type { TypographyProps } from '@mui/material';\n\n","export { Container } from '@mui/material';\nexport type { ContainerProps } from '@mui/material';\n\n","import React from 'react';\nimport {\n AppBar as MuiAppBar,\n Toolbar,\n AppBarProps as MuiAppBarProps,\n ToolbarProps,\n} from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { colors } from '../../theme';\n\nexport interface AppBarProps extends MuiAppBarProps {\n height?: number;\n}\n\nconst StyledAppBar = styled(MuiAppBar, {\n shouldForwardProp: (prop) => prop !== 'appBarHeight',\n})<{ appBarHeight?: number }>(({ appBarHeight = 64 }) => ({\n backgroundColor: colors.background.paper,\n borderBottom: `1px solid ${colors.grey[200]}`,\n boxShadow: 'none',\n height: appBarHeight,\n zIndex: 1300,\n}));\n\nconst StyledToolbar = styled(Toolbar)(({ theme }) => ({\n height: '100%',\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n gap: theme.spacing(2),\n}));\n\nexport const AppBar: React.FC<AppBarProps> = ({ height = 64, children, ...props }) => {\n return (\n <StyledAppBar position=\"fixed\" appBarHeight={height} {...props}>\n <StyledToolbar>{children}</StyledToolbar>\n </StyledAppBar>\n );\n};\n\nexport { Toolbar };\nexport type { ToolbarProps };\n\n","import React from 'react';\nimport {\n Collapse as MuiCollapse,\n CollapseProps as MuiCollapseProps,\n} from '@mui/material';\n\nexport interface CollapseProps extends MuiCollapseProps {\n /**\n * If `true`, the component will transition in\n */\n in?: boolean;\n /**\n * The content to collapse\n */\n children?: React.ReactNode;\n}\n\n/**\n * Collapse component - provides a collapse animation\n * \n * @example\n * ```tsx\n * <Collapse in={open}>\n * <Box>Collapsible content</Box>\n * </Collapse>\n * ```\n */\nexport const Collapse: React.FC<CollapseProps> = (props) => {\n return <MuiCollapse {...props} />;\n};\n\nexport default Collapse;\n\n","import React from 'react';\nimport MuiAlert, { AlertProps as MuiAlertProps } from '@mui/material/Alert';\nimport { AlertTitle as MuiAlertTitle } from '@mui/material';\nimport MuiSnackbar, { SnackbarProps as MuiSnackbarProps } from '@mui/material/Snackbar';\nimport { styled } from '@mui/material/styles';\n\nexport type AlertSeverity = 'success' | 'error' | 'warning' | 'info';\n\nexport interface AlertProps extends Omit<MuiAlertProps, 'severity'> {\n severity?: AlertSeverity;\n /**\n * Title to display above the alert message\n */\n title?: string;\n}\n\nconst StyledAlert = styled(MuiAlert)({\n borderRadius: 8,\n '&.MuiAlert-filled': {\n borderRadius: 8,\n },\n});\n\nexport const Alert: React.FC<AlertProps> = ({ \n severity = 'info', \n title,\n children,\n ...props \n}) => {\n return (\n <StyledAlert severity={severity} {...props}>\n {title && <MuiAlertTitle>{title}</MuiAlertTitle>}\n {children}\n </StyledAlert>\n );\n};\n\nexport { MuiAlertTitle as AlertTitle };\n\nexport interface SnackbarProps extends Omit<MuiSnackbarProps, 'children'> {\n /**\n * Message to display in the snackbar\n */\n message?: string;\n /**\n * Severity of the alert inside snackbar\n */\n severity?: AlertSeverity;\n /**\n * Title to display in the alert (optional)\n */\n title?: string;\n /**\n * Alert variant\n * @default 'filled'\n */\n variant?: 'filled' | 'standard' | 'outlined';\n /**\n * Callback when snackbar is closed\n */\n onClose?: () => void;\n /**\n * Children to render instead of message (allows custom content)\n * Must be a ReactElement to match MuiSnackbar requirements\n */\n children?: React.ReactElement;\n}\n\nconst StyledSnackbar = styled(MuiSnackbar)({});\n\nexport const Snackbar: React.FC<SnackbarProps> = ({\n message,\n severity = 'info',\n title,\n variant = 'filled',\n onClose,\n children,\n anchorOrigin = { vertical: 'bottom', horizontal: 'center' },\n autoHideDuration = 6000,\n ...props\n}) => {\n const handleClose = (_event?: React.SyntheticEvent | Event, reason?: string) => {\n // Prevent closing on clickaway if we have a custom onClose handler\n if (reason === 'clickaway' && onClose) {\n return;\n }\n onClose?.();\n };\n\n const content = children || (message ? (\n <Alert \n onClose={onClose ? handleClose : undefined} \n severity={severity} \n variant={variant}\n title={title}\n sx={{ width: '100%', borderRadius: 2 }}\n >\n {message}\n </Alert>\n ) : undefined);\n\n if (!content) {\n return null;\n }\n\n // Create a simple transition component that doesn't access scrollTop\n const NoTransition = React.forwardRef<HTMLDivElement, { children: React.ReactElement }>(\n (props, ref) => {\n return React.cloneElement(props.children, {\n ref,\n style: {\n ...props.children.props.style,\n transition: 'opacity 0.3s ease-in-out',\n },\n });\n }\n );\n NoTransition.displayName = 'NoTransition';\n\n return (\n <StyledSnackbar\n anchorOrigin={anchorOrigin}\n autoHideDuration={autoHideDuration}\n onClose={handleClose}\n disableWindowBlurListener\n ClickAwayListenerProps={{\n onClickAway: () => {} // Prevent scroll issues\n }}\n TransitionComponent={NoTransition}\n {...props}\n >\n {content}\n </StyledSnackbar>\n );\n};\n\n","import React from 'react';\nimport { Box, Typography } from '@mui/material';\nimport { colors } from '../../theme';\n\nexport interface EmptyStateProps {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n title = 'No items found',\n description,\n icon,\n action,\n}) => {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 6,\n textAlign: 'center',\n minHeight: 200,\n }}\n >\n {icon && (\n <Box\n sx={{\n color: colors.text.secondary,\n marginBottom: 2,\n fontSize: 64,\n }}\n >\n {icon}\n </Box>\n )}\n <Typography variant=\"h6\" sx={{ marginBottom: 1, color: colors.text.primary }}>\n {title}\n </Typography>\n {description && (\n <Typography variant=\"body2\" sx={{ color: colors.text.secondary, marginBottom: 3 }}>\n {description}\n </Typography>\n )}\n {action && <Box>{action}</Box>}\n </Box>\n );\n};\n\n","import React from 'react';\nimport { Box, CircularProgress, Typography } from '@mui/material';\nimport { colors } from '../../theme';\n\nexport interface LoadingProps {\n message?: string;\n size?: number;\n fullScreen?: boolean;\n}\n\nexport const Loading: React.FC<LoadingProps> = ({\n message = 'Loading...',\n size = 40,\n fullScreen = false,\n}) => {\n const content = (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 2,\n ...(fullScreen && {\n height: '100vh',\n width: '100vw',\n position: 'fixed',\n top: 0,\n left: 0,\n backgroundColor: colors.background.default,\n zIndex: 9999,\n }),\n ...(!fullScreen && {\n padding: 4,\n }),\n }}\n >\n <CircularProgress size={size} thickness={4} />\n {message && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {message}\n </Typography>\n )}\n </Box>\n );\n\n return content;\n};\n\n","import React from 'react';\nimport { Box, CircularProgress, Typography } from '@mui/material';\n\nexport interface AppLoadingProps {\n /**\n * Loading message to display\n * @default \"Loading...\"\n */\n message?: string;\n /**\n * Logo source URL or path\n * @default \"/icons/logo.png\"\n */\n logo?: string;\n /**\n * Custom styles\n */\n sx?: any;\n}\n\n/**\n * AppLoading component - Full-screen loading indicator with logo\n * \n * @example\n * ```tsx\n * <AppLoading message=\"Initializing application...\" />\n * ```\n */\nexport const AppLoading: React.FC<AppLoadingProps> = ({\n message = 'Loading...',\n logo = '/icons/logo.png',\n sx = {},\n}) => {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n height: '100vh',\n width: '100vw',\n position: 'fixed',\n top: 0,\n left: 0,\n backgroundColor: '#f8f9fa', // Light background\n zIndex: 9999,\n ...sx,\n }}\n >\n {logo && (\n <Box\n component=\"img\"\n src={logo}\n alt=\"Logo\"\n sx={{\n height: 80,\n width: 'auto',\n mb: 4,\n }}\n />\n )}\n\n <CircularProgress size={40} thickness={4} sx={{ mb: 2 }} />\n\n <Typography variant=\"body1\" color=\"text.secondary\">\n {message}\n </Typography>\n </Box>\n );\n};\n\nexport default AppLoading;\n\n","import React from 'react';\nimport {\n CircularProgress as MuiCircularProgress,\n CircularProgressProps as MuiCircularProgressProps,\n} from '@mui/material';\n\nexport interface CircularProgressProps extends MuiCircularProgressProps {\n /**\n * Size of the progress indicator\n * @default 40\n */\n size?: number | string;\n /**\n * Thickness of the progress indicator\n * @default 4\n */\n thickness?: number;\n}\n\n/**\n * CircularProgress component - wrapper around MUI CircularProgress\n * \n * @example\n * ```tsx\n * <CircularProgress size={40} thickness={4} />\n * ```\n */\nexport const CircularProgress: React.FC<CircularProgressProps> = ({\n size = 40,\n thickness = 4,\n ...props\n}) => {\n return <MuiCircularProgress size={size} thickness={thickness} {...props} />;\n};\n\nexport default CircularProgress;\n\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const ActivityAppIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 36 36\">\n <rect fill=\"none\" stroke=\"currentColor\" width={34} height={34} x={1} y={1} strokeWidth={1.5} rx={6.8} />\n <rect\n fill=\"none\"\n stroke=\"currentColor\"\n width={6.277}\n height={11.018}\n x={6.771}\n y={18.267}\n strokeWidth={1.5}\n rx={1.7}\n />\n <rect\n fill=\"none\"\n stroke=\"currentColor\"\n width={6.277}\n height={22.57}\n x={14.861}\n y={6.714}\n strokeWidth={1.5}\n rx={1.7}\n />\n <rect\n fill=\"none\"\n stroke=\"currentColor\"\n width={6.277}\n height={16.872}\n x={22.949}\n y={12.414}\n strokeWidth={1.5}\n rx={1.7}\n />\n </SvgIcon>\n));\n","import { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const LeftArrowIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <g id=\" Arrow Left\">\n <path\n id=\"Vector (Stroke)\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M10.5303 5.46967C10.8232 5.76256 10.8232 6.23744 10.5303 6.53033L5.81066 11.25H20C20.4142 11.25 20.75 11.5858 20.75 12C20.75 12.4142 20.4142 12.75 20 12.75H5.81066L10.5303 17.4697C10.8232 17.7626 10.8232 18.2374 10.5303 18.5303C10.2374 18.8232 9.76256 18.8232 9.46967 18.5303L3.46967 12.5303C3.17678 12.2374 3.17678 11.7626 3.46967 11.4697L9.46967 5.46967C9.76256 5.17678 10.2374 5.17678 10.5303 5.46967Z\"\n />\n </g>\n </SvgIcon>\n );\n};\n","import { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const RightArrowIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} width=\"25\" height=\"24\" viewBox=\"0 0 25 24\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M13.9697 5.46967C14.2626 5.17678 14.7374 5.17678 15.0303 5.46967L21.0303 11.4697C21.3232 11.7626 21.3232 12.2374 21.0303 12.5303L15.0303 18.5303C14.7374 18.8232 14.2626 18.8232 13.9697 18.5303C13.6768 18.2374 13.6768 17.7626 13.9697 17.4697L18.6893 12.75H4.5C4.08579 12.75 3.75 12.4142 3.75 12C3.75 11.5858 4.08579 11.25 4.5 11.25H18.6893L13.9697 6.53033C13.6768 6.23744 13.6768 5.76256 13.9697 5.46967Z\"\n />\n </SvgIcon>\n );\n};\n","import { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const AvatarIcon = (props: SvgIconProps) => {\n return (\n <SvgIcon {...props} viewBox=\"0 0 16 16\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.99999 0.833313C6.25109 0.833313 4.83332 2.25108 4.83332 3.99998C4.83332 5.74888 6.25109 7.16665 7.99999 7.16665C9.74889 7.16665 11.1667 5.74888 11.1667 3.99998C11.1667 2.25108 9.74889 0.833313 7.99999 0.833313ZM5.83332 3.99998C5.83332 2.80336 6.80337 1.83331 7.99999 1.83331C9.1966 1.83331 10.1667 2.80336 10.1667 3.99998C10.1667 5.1966 9.1966 6.16665 7.99999 6.16665C6.80337 6.16665 5.83332 5.1966 5.83332 3.99998Z\"\n fill=\"#1D1B20\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.99999 8.16665C6.45762 8.16665 5.0366 8.51723 3.98362 9.10954C2.94631 9.69302 2.16665 10.5774 2.16665 11.6666L2.16661 11.7346C2.16586 12.5092 2.16491 13.4813 3.0176 14.1757C3.43724 14.5174 4.02431 14.7604 4.81746 14.921C5.61283 15.0819 6.64947 15.1666 7.99999 15.1666C9.3505 15.1666 10.3871 15.0819 11.1825 14.921C11.9757 14.7604 12.5627 14.5174 12.9824 14.1757C13.8351 13.4813 13.8341 12.5092 13.8334 11.7346L13.8333 11.6666C13.8333 10.5774 13.0537 9.69302 12.0164 9.10954C10.9634 8.51723 9.54236 8.16665 7.99999 8.16665ZM3.16665 11.6666C3.16665 11.0991 3.58091 10.4834 4.47388 9.98111C5.35119 9.48763 6.59684 9.16665 7.99999 9.16665C9.40314 9.16665 10.6488 9.48763 11.5261 9.98111C12.4191 10.4834 12.8333 11.0991 12.8333 11.6666C12.8333 12.5385 12.8064 13.0293 12.3509 13.4003C12.1039 13.6014 11.691 13.7978 10.9841 13.9408C10.2795 14.0835 9.31614 14.1666 7.99999 14.1666C6.68384 14.1666 5.72048 14.0835 5.01585 13.9408C4.309 13.7978 3.89607 13.6014 3.64905 13.4003C3.19353 13.0293 3.16665 12.5385 3.16665 11.6666Z\"\n fill=\"#1D1B20\"\n />\n </SvgIcon>\n );\n};\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const BarTrackingIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 96 97\">\n <rect\n x=\"7.19922\"\n y=\"7.70312\"\n width=\"81.6\"\n height=\"81.6\"\n rx=\"16.32\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n <rect\n x=\"21.0371\"\n y=\"49.1426\"\n width=\"15.0657\"\n height=\"26.4441\"\n rx=\"4.08\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <rect\n x=\"40.4746\"\n y=\"21.4297\"\n width=\"15.0657\"\n height=\"54.1691\"\n rx=\"4.08\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <rect\n x=\"59.8828\"\n y=\"35.0859\"\n width=\"15.0657\"\n height=\"40.4922\"\n rx=\"4.08\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const ClockIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n d=\"M10.943.25h.114c2.309 0 4.118 0 5.53.19 1.444.194 2.584.6 3.479 1.494.895.895 1.3 2.035 1.494 3.48.19 1.411.19 3.22.19 5.529v.114c0 2.309 0 4.118-.19 5.53-.194 1.444-.6 2.584-1.494 3.479-.895.895-2.035 1.3-3.48 1.494-1.411.19-3.22.19-5.529.19h-.114c-2.309 0-4.118 0-5.53-.19-1.444-.194-2.584-.6-3.479-1.494-.895-.895-1.3-2.035-1.494-3.48-.19-1.411-.19-3.22-.19-5.529v-.114c0-2.309 0-4.118.19-5.53.194-1.444.6-2.584 1.494-3.479C2.83 1.04 3.97.634 5.414.44 6.825.25 8.634.25 10.943.25Zm-5.33 1.676c-1.278.172-2.049.5-2.618 1.069-.57.57-.897 1.34-1.069 2.619-.174 1.3-.176 3.008-.176 5.386s.002 4.086.176 5.386c.172 1.279.5 2.05 1.069 2.62.57.569 1.34.896 2.619 1.068 1.3.174 3.008.176 5.386.176s4.086-.002 5.386-.176c1.279-.172 2.05-.5 2.62-1.069.569-.57.896-1.34 1.068-2.619.174-1.3.176-3.008.176-5.386s-.002-4.086-.176-5.386c-.172-1.279-.5-2.05-1.069-2.62-.57-.569-1.34-.896-2.619-1.068-1.3-.174-3.008-.176-5.386-.176s-4.086.002-5.386.176ZM11 6.25a.75.75 0 0 1 .75.75v3.69l2.28 2.28a.75.75 0 1 1-1.06 1.06l-2.134-2.134c-.29-.289-.434-.433-.51-.617-.076-.184-.076-.388-.076-.797V7a.75.75 0 0 1 .75-.75Z\"\n clipRule=\"evenodd\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const CloudFlashIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} fill=\"none\" viewBox=\"0 0 96 97\">\n <path\n d=\"M18.8029 43.3396V43.2933H19.8029C20.3752 43.2933 20.9384 43.328 21.4908 43.3937C21.9111 39.4438 22.9817 34.2181 25.6601 29.8138C28.6259 24.937 33.5595 21.0898 41.5689 21.0898C46.9417 21.0898 50.8839 22.9055 53.7292 25.6773C56.5498 28.4249 58.2303 32.0495 59.2307 35.5901C60.1768 38.9386 60.5315 42.2718 60.6446 44.8476C60.891 44.4671 61.1651 44.0792 61.4696 43.691C63.7235 40.8178 67.6089 37.9824 74.0317 37.9824C77.222 37.9824 79.8196 38.6871 81.9219 39.7574L81.9232 39.7581C86.8327 42.2671 89.793 47.4136 89.793 52.8846V54.7368C89.793 65.644 80.9404 74.4889 70.0269 74.4889H18.865C11.867 74.4889 6.19295 68.8202 6.19295 61.8256V57.184C6.19295 49.9845 11.6911 43.8799 18.8029 43.3396Z\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M79.1804 45.7001C79.1804 45.7001 60.7908 47.259 60.7908 10.0898C60.7908 10.0898 60.9856 45.7768 43.1934 45.7768C43.1934 45.7768 61.1933 48.1151 61.1933 67.6899C61.1933 67.6899 61.1933 45.7001 79.1934 45.7001H79.1804Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const DecentralizedServerIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 96 97\">\n <path\n d=\"M14.5706 15.0858L48.016 8.29688L81.3694 15.0858L88.2242 48.3742L81.3694 81.6556L48.016 88.4445L14.5706 81.6556L7.80078 48.3742L14.5706 15.0858Z\"\n stroke=\"currentColor\"\n fill=\"none\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M48.0118 11.2609C49.6622 11.2609 51.0001 9.92755 51.0001 8.28279C51.0001 6.63803 49.6622 5.30469 48.0118 5.30469C46.3614 5.30469 45.0234 6.63803 45.0234 8.28279C45.0234 9.92755 46.3614 11.2609 48.0118 11.2609Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M48.0118 91.4132C49.6622 91.4132 51.0001 90.0799 51.0001 88.4351C51.0001 86.7904 49.6622 85.457 48.0118 85.457C46.3614 85.457 45.0234 86.7904 45.0234 88.4351C45.0234 90.0799 46.3614 91.4132 48.0118 91.4132Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7.79304 51.339C9.44346 51.339 10.7814 50.0057 10.7814 48.3609C10.7814 46.7162 9.44346 45.3828 7.79304 45.3828C6.14262 45.3828 4.80469 46.7162 4.80469 48.3609C4.80469 50.0057 6.14262 51.339 7.79304 51.339Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M88.2247 51.339C89.8751 51.339 91.213 50.0057 91.213 48.3609C91.213 46.7162 89.8751 45.3828 88.2247 45.3828C86.5743 45.3828 85.2363 46.7162 85.2363 48.3609C85.2363 50.0057 86.5743 51.339 88.2247 51.339Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M81.3477 18.0539C82.9982 18.0539 84.3361 16.7205 84.3361 15.0758C84.3361 13.431 82.9982 12.0977 81.3477 12.0977C79.6973 12.0977 78.3594 13.431 78.3594 15.0758C78.3594 16.7205 79.6973 18.0539 81.3477 18.0539Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14.5508 84.6203C16.2013 84.6203 17.5392 83.2869 17.5392 81.6422C17.5392 79.9974 16.2013 78.6641 14.5508 78.6641C12.9004 78.6641 11.5625 79.9974 11.5625 81.6422C11.5625 83.2869 12.9004 84.6203 14.5508 84.6203Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M81.3477 84.6203C82.9982 84.6203 84.3361 83.2869 84.3361 81.6422C84.3361 79.9974 82.9982 78.6641 81.3477 78.6641C79.6973 78.6641 78.3594 79.9974 78.3594 81.6422C78.3594 83.2869 79.6973 84.6203 81.3477 84.6203Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14.5508 18.0539C16.2013 18.0539 17.5392 16.7205 17.5392 15.0758C17.5392 13.431 16.2013 12.0977 14.5508 12.0977C12.9004 12.0977 11.5625 13.431 11.5625 15.0758C11.5625 16.7205 12.9004 18.0539 14.5508 18.0539Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n strokeLinejoin=\"round\"\n />\n <rect\n x=\"22.623\"\n y=\"27.332\"\n width=\"51.0819\"\n height=\"13.888\"\n rx=\"4.77987\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <rect\n x=\"22.623\"\n y=\"41.4062\"\n width=\"51.0819\"\n height=\"13.888\"\n rx=\"4.77987\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <rect\n x=\"22.623\"\n y=\"55.3125\"\n width=\"51.0819\"\n height=\"13.888\"\n rx=\"4.77987\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M29.612 37.1542C31.2803 37.1542 32.634 35.8026 32.634 34.1337C32.634 32.4649 31.2803 31.1133 29.612 31.1133C27.9437 31.1133 26.5901 32.4649 26.5901 34.1337C26.5901 35.8026 27.9437 37.1542 29.612 37.1542Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n />\n <path\n d=\"M40.3464 37.1542C42.0147 37.1542 43.3684 35.8026 43.3684 34.1337C43.3684 32.4649 42.0147 31.1133 40.3464 31.1133C38.6782 31.1133 37.3245 32.4649 37.3245 34.1337C37.3245 35.8026 38.6782 37.1542 40.3464 37.1542Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n />\n <path\n d=\"M51.0808 37.1542C52.7491 37.1542 54.1028 35.8026 54.1028 34.1337C54.1028 32.4649 52.7491 31.1133 51.0808 31.1133C49.4125 31.1133 48.0588 32.4649 48.0588 34.1337C48.0588 35.8026 49.4125 37.1542 51.0808 37.1542Z\"\n fill=\"white\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeMiterlimit=\"10\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const DiscordIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 15 12\">\n <path\n fill=\"currentColor\"\n d=\"M12.589 1.56A11.64 11.64 0 0 0 9.685.667a7.977 7.977 0 0 0-.372.756 10.813 10.813 0 0 0-3.222 0 8.01 8.01 0 0 0-.372-.756c-1.003.17-1.98.472-2.906.895C.976 4.281.477 6.932.727 9.546c1.076.795 2.28 1.4 3.56 1.787.289-.388.544-.799.763-1.23a7.575 7.575 0 0 1-1.2-.573c.1-.073.198-.148.294-.221a8.365 8.365 0 0 0 7.12 0c.096.078.195.154.294.221a7.602 7.602 0 0 1-1.203.575c.219.43.474.841.762 1.228a11.65 11.65 0 0 0 3.564-1.786c.292-3.031-.5-5.658-2.092-7.987ZM5.366 7.938c-.694 0-1.268-.63-1.268-1.404 0-.775.554-1.41 1.266-1.41.711 0 1.28.635 1.268 1.41-.012.774-.559 1.404-1.266 1.404Zm4.676 0c-.696 0-1.267-.63-1.267-1.404 0-.775.554-1.41 1.267-1.41.713 0 1.277.635 1.265 1.41-.012.774-.558 1.404-1.265 1.404Z\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const DownloadIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 17 16\" fill=\"none\">\n <path\n d=\"M8.86902 11.0041C8.77429 11.1077 8.64038 11.1667 8.5 11.1667C8.35962 11.1667 8.22571 11.1077 8.13099 11.0041L5.46432 8.08738C5.27799 7.88358 5.29215 7.56732 5.49595 7.38099C5.69975 7.19465 6.01602 7.20881 6.20235 7.41262L8 9.3788V2C8 1.72386 8.22386 1.5 8.5 1.5C8.77614 1.5 9 1.72386 9 2V9.3788L10.7977 7.41262C10.984 7.20881 11.3003 7.19465 11.5041 7.38099C11.7079 7.56732 11.722 7.88358 11.5357 8.08738L8.86902 11.0041Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3 10C3 9.72386 2.77614 9.5 2.5 9.5C2.22386 9.5 2 9.72386 2 10V10.0366C1.99999 10.9483 1.99998 11.6832 2.07768 12.2612C2.15836 12.8612 2.33096 13.3665 2.73223 13.7678C3.13351 14.169 3.63876 14.3416 4.23883 14.4223C4.81681 14.5 5.55169 14.5 6.46342 14.5H10.5366C11.4483 14.5 12.1832 14.5 12.7612 14.4223C13.3612 14.3416 13.8665 14.169 14.2678 13.7678C14.669 13.3665 14.8416 12.8612 14.9223 12.2612C15 11.6832 15 10.9483 15 10.0366V10C15 9.72386 14.7761 9.5 14.5 9.5C14.2239 9.5 14 9.72386 14 10C14 10.9569 13.9989 11.6244 13.9312 12.1279C13.8655 12.6171 13.7452 12.8762 13.5607 13.0607C13.3762 13.2452 13.1171 13.3655 12.6279 13.4312C12.1244 13.4989 11.4569 13.5 10.5 13.5H6.5C5.54306 13.5 4.87565 13.4989 4.37208 13.4312C3.8829 13.3655 3.62385 13.2452 3.43934 13.0607C3.25483 12.8762 3.13453 12.6171 3.06877 12.1279C3.00106 11.6244 3 10.9569 3 10Z\"\n fill=\"currentColor\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const FilledFolderIcon = memo((props: SvgIconProps) => (\n <SvgIcon sx={{ fill: 'none' }} {...props} fill=\"none\" viewBox=\"0 0 22 22\">\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"21\" rx=\"4.5\" fill=\"#FCF8EC\" />\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"21\" rx=\"4.5\" stroke=\"#E1B43E\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.03468 7.62919C6 7.81298 6 8.03361 6 8.47487V12C6 13.8856 6 14.8284 6.58579 15.4142C7.17157 16 8.11438 16 10 16H12C13.8856 16 14.8284 16 15.4142 15.4142C16 14.8284 16 13.8856 16 12V10.899C16 9.58277 16 8.92468 15.6153 8.49692C15.5799 8.45757 15.5424 8.42012 15.5031 8.38473C15.0753 8 14.4172 8 13.101 8H12.9142C12.3374 8 12.0489 8 11.7802 7.92339C11.6325 7.8813 11.4902 7.82236 11.3561 7.74771C11.1118 7.61183 10.9079 7.40789 10.5 7L10.2249 6.72487C10.0882 6.58816 10.0198 6.51981 9.94797 6.46026C9.63826 6.20352 9.25833 6.04614 8.85779 6.00869C8.76488 6 8.66821 6 8.47487 6C8.03361 6 7.81298 6 7.62919 6.03468C6.82015 6.18732 6.18732 6.82015 6.03468 7.62919ZM11.125 10C11.125 9.79289 11.2929 9.625 11.5 9.625H14C14.2071 9.625 14.375 9.79289 14.375 10C14.375 10.2071 14.2071 10.375 14 10.375H11.5C11.2929 10.375 11.125 10.2071 11.125 10Z\"\n fill=\"#E1B43E\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const FolderIcon = memo((props: SvgIconProps) => (\n <SvgIcon sx={{ fill: 'none' }} {...props} fill=\"none\" viewBox=\"0 0 22 22\">\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"21\" rx=\"4.5\" fill=\"#F5F7FA\" />\n <rect x=\"0.5\" y=\"0.5\" width=\"21\" height=\"21\" rx=\"4.5\" stroke=\"#E6E6E6\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.125 6.41711C10.8948 6.37799 10.581 6.37503 10.0149 6.37503C9.05656 6.37503 8.37537 6.37581 7.85893 6.44493C7.35298 6.51265 7.06226 6.63966 6.85095 6.85098C6.63935 7.06258 6.51251 7.3524 6.44488 7.85545C6.3758 8.36928 6.375 9.04661 6.375 10V12C6.375 12.9534 6.3758 13.6308 6.44488 14.1446C6.51251 14.6476 6.63935 14.9375 6.85095 15.1491C7.06256 15.3607 7.35238 15.4875 7.85542 15.5551C8.36926 15.6242 9.04659 15.625 10 15.625H12C12.9534 15.625 13.6307 15.6242 14.1446 15.5551C14.6476 15.4875 14.9374 15.3607 15.149 15.1491C15.3607 14.9375 15.4875 14.6476 15.5551 14.1446C15.6242 13.6308 15.625 12.9534 15.625 12V11.7815C15.625 11.0135 15.6196 10.6494 15.5381 10.375H13.9732C13.4067 10.375 12.9439 10.375 12.5784 10.3259C12.1965 10.2746 11.8653 10.1634 11.601 9.89907C11.3366 9.63473 11.2255 9.30356 11.1741 8.92158C11.125 8.55615 11.125 8.09329 11.125 7.52687V6.41711ZM11.875 6.80475V7.50003C11.875 8.09988 11.8758 8.51205 11.9174 8.82165C11.9576 9.12046 12.0295 9.26697 12.1313 9.36874C12.2331 9.47051 12.3796 9.54243 12.6784 9.5826C12.988 9.62423 13.4001 9.62502 14 9.62502H15.0097C14.8615 9.48125 14.6716 9.30898 14.425 9.08703L12.4456 7.30558C12.2029 7.08716 12.0223 6.92594 11.875 6.80475ZM10.0877 5.62501C10.78 5.62483 11.2273 5.62471 11.639 5.78268C12.0506 5.94064 12.3816 6.23867 12.8936 6.69978C12.9113 6.71569 12.9292 6.73181 12.9473 6.74811L14.9267 8.52956C14.9478 8.54853 14.9686 8.56725 14.9892 8.58575C15.581 9.11807 15.9637 9.46229 16.1696 9.92451C16.3754 10.3867 16.3753 10.9015 16.375 11.6975C16.375 11.7251 16.375 11.7531 16.375 11.7815V12.0282C16.375 12.9471 16.375 13.6749 16.2984 14.2445C16.2196 14.8307 16.0536 15.3052 15.6794 15.6794C15.3052 16.0536 14.8307 16.2196 14.2445 16.2985C13.6749 16.375 12.9471 16.375 12.0282 16.375H9.9718C9.05291 16.375 8.3251 16.375 7.75549 16.2985C7.16928 16.2196 6.6948 16.0536 6.32062 15.6794C5.94644 15.3052 5.78038 14.8307 5.70157 14.2445C5.62499 13.6749 5.62499 12.9471 5.625 12.0282V9.97182C5.62499 9.05294 5.62499 8.32512 5.70157 7.75551C5.78038 7.1693 5.94644 6.69483 6.32062 6.32065C6.6951 5.94617 7.17116 5.7803 7.75944 5.70156C8.33141 5.62501 9.06285 5.62502 9.98676 5.62503L10.0149 5.62503C10.0395 5.62503 10.0637 5.62502 10.0877 5.62501Z\"\n fill=\"#818083\"\n stroke=\"#818083\"\n strokeWidth=\"0.5\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const GithubLogoIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 17 16\" sx={{ fill: 'none' }}>\n <path\n d=\"M8.79754 0C4.268 0 0.595032 3.67233 0.595032 8.20251C0.595032 11.8267 2.9453 14.9013 6.20443 15.9859C6.61435 16.0618 6.76488 15.808 6.76488 15.5913C6.76488 15.3957 6.75723 14.7495 6.75375 14.0642C4.47174 14.5603 3.99022 13.0964 3.99022 13.0964C3.61711 12.1483 3.07949 11.8962 3.07949 11.8962C2.33531 11.3871 3.13559 11.3975 3.13559 11.3975C3.95928 11.4554 4.393 12.2428 4.393 12.2428C5.12457 13.4968 6.31186 13.1343 6.77993 12.9247C6.85353 12.3945 7.06614 12.0327 7.30069 11.8279C5.47884 11.6204 3.56358 10.9171 3.56358 7.77413C3.56358 6.87865 3.88401 6.14688 4.40876 5.57247C4.32359 5.36584 4.04285 4.5316 4.48821 3.40175C4.48821 3.40175 5.177 3.18129 6.74449 4.24256C7.39873 4.06076 8.10045 3.96967 8.79754 3.96658C9.49463 3.96967 10.1969 4.06076 10.8524 4.24256C12.418 3.18129 13.1059 3.40175 13.1059 3.40175C13.5523 4.5316 13.2714 5.36584 13.1863 5.57247C13.7122 6.14688 14.0304 6.87858 14.0304 7.77413C14.0304 10.9245 12.1116 11.6183 10.2851 11.8213C10.5793 12.0759 10.8414 12.5751 10.8414 13.3403C10.8414 14.4378 10.8319 15.3211 10.8319 15.5913C10.8319 15.8096 10.9795 16.0654 11.3954 15.9848C14.6527 14.899 17 11.8254 17 8.20251C17 3.67233 13.3275 0 8.79754 0Z\"\n fill=\"white\"\n />\n <path\n d=\"M3.66696 11.6845C3.64895 11.7252 3.58474 11.7374 3.5264 11.7095C3.46689 11.6828 3.43344 11.6272 3.45274 11.5863C3.47043 11.5443 3.53463 11.5326 3.59401 11.5608C3.65364 11.5875 3.68761 11.6436 3.66696 11.6845ZM4.07044 12.0445C4.03133 12.0808 3.95484 12.0639 3.90292 12.0066C3.84927 11.9494 3.83924 11.873 3.87893 11.8361C3.91926 11.7999 3.99344 11.8168 4.04722 11.8741C4.10087 11.9319 4.11129 12.0079 4.07038 12.0446M4.34726 12.5051C4.29695 12.54 4.21474 12.5073 4.16398 12.4343C4.11374 12.3615 4.11374 12.274 4.16507 12.2389C4.21602 12.2038 4.29695 12.2354 4.34842 12.3077C4.39859 12.3819 4.39859 12.4694 4.34719 12.5052M4.81533 13.0386C4.77036 13.0881 4.67464 13.0749 4.60452 13.0072C4.53285 12.9411 4.51285 12.8472 4.55794 12.7976C4.60342 12.748 4.69973 12.7619 4.77036 12.829C4.84158 12.895 4.86332 12.9896 4.81539 13.0386M5.4203 13.2187C5.40055 13.2829 5.3083 13.3121 5.2154 13.2849C5.12264 13.2568 5.06191 13.1815 5.08063 13.1166C5.09993 13.0519 5.19257 13.0215 5.28617 13.0507C5.37881 13.0787 5.43966 13.1534 5.42036 13.2187M6.1089 13.2951C6.11121 13.3628 6.03241 13.4189 5.93488 13.4201C5.83678 13.4222 5.75746 13.3675 5.75643 13.3009C5.75643 13.2326 5.83343 13.177 5.93147 13.1754C6.029 13.1735 6.1089 13.2279 6.1089 13.2951ZM6.78527 13.2692C6.79698 13.3352 6.72918 13.403 6.63236 13.421C6.53715 13.4384 6.44901 13.3976 6.43686 13.3322C6.42502 13.2645 6.49411 13.1968 6.58913 13.1792C6.68614 13.1624 6.77292 13.2021 6.78527 13.2692Z\"\n fill=\"white\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const ShareIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 17 16\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.5 1.5C10.3033 1.5 9.33329 2.47005 9.33329 3.66667C9.33329 3.79727 9.34485 3.92518 9.36699 4.04942L6.21323 6.25705C6.1972 6.26827 6.18204 6.28026 6.16775 6.29293C5.79991 6.00498 5.33665 5.83333 4.83329 5.83333C3.63668 5.83333 2.66663 6.80338 2.66663 8C2.66663 9.19662 3.63668 10.1667 4.83329 10.1667C5.33665 10.1667 5.79991 9.99502 6.16775 9.70707C6.18204 9.71974 6.1972 9.73173 6.21323 9.74295L9.36699 11.9506C9.34485 12.0748 9.33329 12.2027 9.33329 12.3333C9.33329 13.53 10.3033 14.5 11.5 14.5C12.6966 14.5 13.6666 13.53 13.6666 12.3333C13.6666 11.1367 12.6966 10.1667 11.5 10.1667C10.7981 10.1667 10.1742 10.5004 9.77824 11.0178L6.792 8.92743C6.92535 8.64628 6.99996 8.33185 6.99996 8C6.99996 7.66815 6.92535 7.35372 6.792 7.07257L9.77824 4.9822C10.1742 5.49961 10.7981 5.83333 11.5 5.83333C12.6966 5.83333 13.6666 4.86328 13.6666 3.66667C13.6666 2.47005 12.6966 1.5 11.5 1.5ZM10.3333 3.66667C10.3333 3.02233 10.8556 2.5 11.5 2.5C12.1443 2.5 12.6666 3.02233 12.6666 3.66667C12.6666 4.311 12.1443 4.83333 11.5 4.83333C10.8556 4.83333 10.3333 4.311 10.3333 3.66667ZM4.83329 6.83333C4.18896 6.83333 3.66663 7.35567 3.66663 8C3.66663 8.64433 4.18896 9.16667 4.83329 9.16667C5.47762 9.16667 5.99996 8.64433 5.99996 8C5.99996 7.35567 5.47762 6.83333 4.83329 6.83333ZM11.5 11.1667C10.8556 11.1667 10.3333 11.689 10.3333 12.3333C10.3333 12.9777 10.8556 13.5 11.5 13.5C12.1443 13.5 12.6666 12.9777 12.6666 12.3333C12.6666 11.689 12.1443 11.1667 11.5 11.1667Z\"\n fill=\"currentColor\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const StorageAppIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 38 29\" fill=\"none\">\n <path\n d=\"M6.25415 13.3371V13.2515H7.25415C7.31809 13.2515 7.38176 13.2524 7.44516 13.2543C7.66366 11.6446 8.14354 9.64623 9.19625 7.91521C10.5234 5.73296 12.756 4 16.3233 4C18.7076 4 20.4981 4.81149 21.7972 6.07693C23.0714 7.31823 23.8108 8.93436 24.2437 10.4665C24.4895 11.3363 24.6426 12.2007 24.7362 12.9909C25.8141 11.9297 27.4506 11.0385 29.8495 11.0385C31.2681 11.0385 32.4415 11.3528 33.4017 11.8416L33.4031 11.8423C35.655 12.9932 37 15.3454 37 17.8312V18.6029C37 23.4701 33.0499 27.4163 28.1808 27.4163H6.86335C3.62577 27.4163 1 24.7935 1 21.5565V19.6226C1 16.5122 3.24401 13.8341 6.25415 13.3371Z\"\n stroke=\"#5865F2\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n <path\n d=\"M31.9946 14.8376C31.9946 14.8376 24.3322 15.4871 24.3322 0C24.3322 0 24.4134 14.8696 17 14.8696C17 14.8696 24.5 15.8438 24.5 24C24.5 24 24.5 14.8376 32 14.8376H31.9946Z\"\n fill=\"white\"\n stroke=\"#5865F2\"\n strokeWidth=\"1.5\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const UploadFileIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 12 12\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.125 1.41711C5.8948 1.37799 5.58099 1.37503 5.0149 1.37503C4.05656 1.37503 3.37537 1.37581 2.85893 1.44493C2.35298 1.51265 2.06226 1.63966 1.85095 1.85098C1.63935 2.06258 1.51251 2.3524 1.44488 2.85545C1.3758 3.36928 1.375 4.04661 1.375 5.00002V7.00002C1.375 7.95343 1.3758 8.63077 1.44488 9.1446C1.51251 9.64764 1.63935 9.93747 1.85095 10.1491C2.06256 10.3607 2.35238 10.4875 2.85542 10.5551C3.36926 10.6242 4.04659 10.625 5 10.625H7C7.95341 10.625 8.63074 10.6242 9.14458 10.5551C9.64762 10.4875 9.93744 10.3607 10.149 10.1491C10.3607 9.93747 10.4875 9.64764 10.5551 9.1446C10.6242 8.63077 10.625 7.95343 10.625 7.00002V6.78147C10.625 6.01347 10.6196 5.64939 10.5381 5.37502H8.97316C8.40674 5.37504 7.94387 5.37505 7.57844 5.32592C7.19647 5.27456 6.8653 5.16342 6.60095 4.89907C6.33661 4.63473 6.22546 4.30356 6.17411 3.92158C6.12498 3.55615 6.12499 3.09329 6.125 2.52687V1.41711ZM6.875 1.80475V2.50003C6.875 3.09988 6.8758 3.51205 6.91742 3.82165C6.95759 4.12046 7.02951 4.26697 7.13128 4.36874C7.23305 4.47051 7.37957 4.54243 7.67838 4.5826C7.98798 4.62423 8.40014 4.62502 9 4.62502H10.0097C9.86152 4.48125 9.67161 4.30898 9.425 4.08703L7.44561 2.30558C7.20292 2.08716 7.02229 1.92594 6.875 1.80475ZM5.08773 0.625012C5.78003 0.624827 6.2273 0.624708 6.63896 0.782677C7.05062 0.940644 7.38158 1.23867 7.89364 1.69978C7.91132 1.71569 7.92921 1.73181 7.94733 1.74811L9.92672 3.52956C9.94779 3.54853 9.96861 3.56725 9.98917 3.58575C10.581 4.11807 10.9637 4.46229 11.1696 4.92451C11.3754 5.38672 11.3753 5.90146 11.375 6.69746C11.375 6.72512 11.375 6.75312 11.375 6.78147V7.02823C11.375 7.94711 11.375 8.67493 11.2984 9.24454C11.2196 9.83075 11.0536 10.3052 10.6794 10.6794C10.3052 11.0536 9.83072 11.2196 9.24451 11.2985C8.6749 11.375 7.94709 11.375 7.02821 11.375H4.9718C4.05291 11.375 3.3251 11.375 2.75549 11.2985C2.16928 11.2196 1.6948 11.0536 1.32062 10.6794C0.94644 10.3052 0.780382 9.83075 0.701568 9.24454C0.624986 8.67493 0.624992 7.94711 0.625 7.02823V4.97182C0.624992 4.05294 0.624986 3.32512 0.701568 2.75551C0.780382 2.1693 0.94644 1.69483 1.32062 1.32065C1.6951 0.946173 2.17116 0.780296 2.75944 0.701563C3.33141 0.625011 4.06285 0.625017 4.98676 0.625025L5.0149 0.625025C5.03947 0.625025 5.06375 0.625019 5.08773 0.625012Z\"\n fill=\"currentColor\"\n stroke=\"#1D1B20\"\n strokeWidth=\"0.5\"\n />\n </SvgIcon>\n));\n","import { memo } from 'react';\nimport { SvgIcon, SvgIconProps } from '@mui/material';\n\nexport const UploadFolderIcon = memo((props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 12 12\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.42964 0.625004C3.44452 0.625006 3.4596 0.625008 3.47488 0.625008L3.49338 0.625007C3.66909 0.624995 3.78216 0.624988 3.89271 0.635325C4.36835 0.679803 4.81952 0.866685 5.1873 1.17156C5.27278 1.24242 5.35273 1.32238 5.47698 1.44665L5.76517 1.73484C6.18803 2.1577 6.3506 2.31555 6.53839 2.42002C6.64739 2.48067 6.76302 2.52857 6.88298 2.56276C7.08964 2.62167 7.31621 2.62501 7.91422 2.62501L8.12651 2.62501C8.76298 2.625 9.27607 2.62499 9.68201 2.67603C10.1027 2.72892 10.4602 2.84179 10.7539 3.10592C10.803 3.15016 10.8499 3.19697 10.8941 3.24615C11.1582 3.53983 11.2711 3.89729 11.324 4.318C11.375 4.72395 11.375 5.23704 11.375 5.8735V7.02821C11.375 7.94709 11.375 8.67491 11.2984 9.24452C11.2196 9.83073 11.0536 10.3052 10.6794 10.6794C10.3052 11.0536 9.83073 11.2196 9.24452 11.2984C8.67491 11.375 7.94709 11.375 7.02821 11.375H4.9718C4.05292 11.375 3.3251 11.375 2.7555 11.2984C2.16929 11.2196 1.69481 11.0536 1.32063 10.6794C0.946448 10.3052 0.78039 9.83073 0.701576 9.24452C0.624994 8.67491 0.625 7.9471 0.625008 7.02822L0.625008 3.47488C0.625008 3.4596 0.625006 3.44452 0.625004 3.42964C0.624948 3.03169 0.624912 2.77843 0.666185 2.55967C0.847451 1.59894 1.59894 0.847451 2.55967 0.666185C2.77843 0.624912 3.03169 0.624948 3.42964 0.625004ZM3.47488 1.37501C3.01656 1.37501 2.83936 1.37665 2.69873 1.40318C2.04138 1.52721 1.52721 2.04138 1.40318 2.69873C1.37665 2.83936 1.37501 3.01656 1.37501 3.47488V7.00001C1.37501 7.95342 1.3758 8.63075 1.44489 9.14458C1.51252 9.64763 1.63935 9.93745 1.85096 10.1491C2.06256 10.3607 2.35239 10.4875 2.85543 10.5551C3.36926 10.6242 4.0466 10.625 5.00001 10.625H7.00001C7.95342 10.625 8.63075 10.6242 9.14458 10.5551C9.64763 10.4875 9.93745 10.3607 10.1491 10.1491C10.3607 9.93745 10.4875 9.64763 10.5551 9.14458C10.6242 8.63075 10.625 7.95342 10.625 7.00001V5.89896C10.625 5.23103 10.6243 4.76525 10.5798 4.41156C10.5366 4.06724 10.4571 3.88178 10.3365 3.74769C10.3099 3.71819 10.2818 3.6901 10.2523 3.66356C10.1182 3.54296 9.93278 3.46346 9.58846 3.42017C9.23477 3.3757 8.76898 3.37501 8.10106 3.37501H7.91422C7.89562 3.37501 7.87724 3.37501 7.85909 3.37502C7.33511 3.37512 6.9972 3.37519 6.67739 3.28403C6.50206 3.23405 6.33306 3.16406 6.17375 3.07542C5.88315 2.91374 5.64426 2.67475 5.27382 2.30416C5.26099 2.29133 5.248 2.27833 5.23484 2.26517L4.95972 1.99005C4.81808 1.84841 4.76389 1.79475 4.70865 1.74897C4.45702 1.54037 4.14832 1.4125 3.82288 1.38207C3.75145 1.37539 3.67519 1.37501 3.47488 1.37501ZM6.12501 5.00001C6.12501 4.7929 6.2929 4.62501 6.50001 4.62501H9.00001C9.20712 4.62501 9.37501 4.7929 9.37501 5.00001C9.37501 5.20711 9.20712 5.37501 9.00001 5.37501H6.50001C6.2929 5.37501 6.12501 5.20711 6.12501 5.00001Z\"\n fill=\"currentColor\"\n stroke=\"#1D1B20\"\n strokeWidth=\"0.5\"\n />\n </SvgIcon>\n));\n","import { Box, styled } from '@mui/material';\n\nimport 'highlight.js/styles/github.css';\nimport 'github-markdown-css/github-markdown-light.css';\n\nimport MD from 'react-markdown';\nimport highlight from 'rehype-highlight';\nimport rehypeRaw from 'rehype-raw';\n\nexport type MarkdownProps = {\n children?: string;\n content?: string;\n};\n\nconst Content = styled(Box)(({ theme }) => ({\n backgroundColor: 'transparent',\n\n ...theme.typography.body1,\n color: theme.palette.text.primary,\n\n ['& a']: {\n color: theme.palette.primary.main,\n },\n\n ['& pre']: {\n padding: theme.spacing(2),\n borderRadius: theme.shape.borderRadius,\n backgroundColor: theme.palette.background.paper,\n },\n\n ['& code']: {\n borderRadius: 2,\n backgroundColor: theme.palette.background.paper,\n },\n}));\n\nexport const Markdown = ({ content, children }: MarkdownProps) => (\n <Content className=\"markdown-body\">\n <MD rehypePlugins={[highlight, rehypeRaw]}>{content || children}</MD>\n </Content>\n);\n","import { createContext, useContext, useState, ReactNode, useCallback, useEffect } from 'react';\n\ninterface OnboardingContextType {\n isOnboardingActive: boolean;\n startOnboarding: () => void;\n stopOnboarding: () => void;\n restartOnboarding: () => void;\n}\n\nconst OnboardingContext = createContext<OnboardingContextType | undefined>(undefined);\n\nexport const useOnboarding = () => {\n const context = useContext(OnboardingContext);\n if (!context) {\n throw new Error('useOnboarding should be used inside OnboardingProvider');\n }\n return context;\n};\n\nexport const OnboardingProvider = ({ children }: { children: ReactNode }) => {\n const [isOnboardingActive, setIsOnboardingActive] = useState(() => {\n const savedState = localStorage.getItem('isOnboardingActive');\n return savedState !== null ? JSON.parse(savedState) : true;\n });\n\n useEffect(() => {\n localStorage.setItem('isOnboardingActive', JSON.stringify(isOnboardingActive));\n }, [isOnboardingActive]);\n\n const startOnboarding = useCallback(() => setIsOnboardingActive(true), []);\n const stopOnboarding = useCallback(() => {\n setIsOnboardingActive(false);\n }, []);\n\n const restartOnboarding = useCallback(() => {\n setIsOnboardingActive(false);\n\n setTimeout(() => setIsOnboardingActive(true), 0);\n }, []);\n\n return (\n <OnboardingContext.Provider\n value={{\n isOnboardingActive,\n startOnboarding,\n stopOnboarding,\n restartOnboarding,\n }}\n >\n {children}\n </OnboardingContext.Provider>\n );\n};\n","import { AriaAttributes } from 'react';\n\nexport type TruncateProps = AriaAttributes & {\n text: string;\n maxLength?: number;\n endingLength?: number;\n variant?: 'text' | 'email' | 'hex';\n};\n\nconst getDefaultEndingLength = ({ text, variant, maxLength = text.length }: TruncateProps) => {\n if (variant === 'hex') {\n return 4;\n }\n\n if (variant === 'email') {\n const [, domain] = text.split('@');\n\n return domain.length + 1;\n }\n\n return Math.round(maxLength / 2);\n};\n\nexport const Truncate = ({\n text,\n variant = 'text',\n maxLength = text.length,\n endingLength = getDefaultEndingLength({ text, variant, maxLength }),\n ...props\n}: TruncateProps) => {\n let truncatedText = text;\n\n if (maxLength < text.length) {\n const ending = text.slice(-endingLength);\n const truncated = text.slice(0, maxLength - endingLength);\n\n truncatedText = [truncated, ending].filter(Boolean).join('...');\n }\n\n return (\n <span {...props} data-full={text}>\n {truncatedText}\n </span>\n );\n};\n","import size from 'byte-size';\n\nexport type BytesSizeProps = {\n bytes: number;\n};\n\nexport const BytesSize = ({ bytes }: BytesSizeProps) => {\n return <>{size(bytes).toString()}</>;\n};\n","import { forwardRef, Ref } from 'react';\nimport QR, { QRCodeProps as QRProps } from 'react-qr-code';\n\nexport type QRCodeProps = Omit<QRProps, 'ref'>;\n\nexport const QRCode = forwardRef(({ size = 168, ...props }: QRCodeProps, ref: Ref<SVGElement>) => (\n <QR ref={ref as Ref<any>} size={size} {...props} />\n));\n\nQRCode.displayName = 'QRCode';\n","import { ReactNode } from 'react';\nimport { Box, Stack, Typography, styled, useTheme } from '@mui/material';\nimport { LineChart } from '@mui/x-charts';\nimport size from 'byte-size';\nimport { format } from 'date-fns';\n\ntype ChartWidgetHistoryRecord = {\n date: Date;\n value: number;\n};\n\nexport type ChartWidgetProps = {\n title: string;\n value?: ReactNode;\n history?: ChartWidgetHistoryRecord[];\n formatValue?: (value: number) => string;\n};\n\nconst Chart = styled(Box)(() => ({\n height: 200,\n}));\n\nexport const ChartWidget = ({\n title,\n value,\n history,\n formatValue = (value) => size(value || 0).toString(),\n}: ChartWidgetProps) => {\n const theme = useTheme();\n\n return (\n <Stack spacing={1}>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {title}\n </Typography>\n <Typography fontWeight=\"bold\">{value}</Typography>\n\n <Chart>\n <LineChart\n dataset={history || []}\n axisHighlight={{ x: 'none', y: 'none' }}\n grid={{ horizontal: true, vertical: false }}\n margin={{ top: 10, right: 20, bottom: 40, left: 40 }}\n colors={[theme.palette.primary.main]}\n slots={{\n noDataOverlay: () => null,\n }}\n yAxis={[\n {\n dataKey: 'value',\n disableLine: true,\n disableTicks: true,\n min: history?.length ? undefined : 0,\n max: history?.length ? undefined : 100,\n tickNumber: history?.length ? undefined : 5,\n valueFormatter: (value) => formatValue(value || 0),\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]}\n xAxis={[\n {\n dataKey: 'date',\n min: history && Math.min(...history.map((record) => +record.date)),\n max: history && Math.max(...history.map((record) => +record.date)),\n disableLine: true,\n disableTicks: true,\n valueFormatter: (date) => format(date, 'do MMM'),\n tickPlacement: 'end',\n tickNumber: 1,\n\n tickLabelStyle: {\n fontSize: 10,\n transform: 'translate(-16px, 16px) rotate(-30deg)',\n },\n },\n ]}\n series={[\n {\n curve: 'linear',\n dataKey: 'value',\n showMark: false,\n valueFormatter: (value) => formatValue(value || 0),\n },\n ]}\n />\n </Chart>\n </Stack>\n );\n};\n","import { format, startOfDay, subHours, subWeeks, subMonths } from 'date-fns';\nimport { LineChart } from '@mui/x-charts';\nimport { useDrawingArea, useYScale } from '@mui/x-charts/hooks';\nimport { Box, Card, CardHeader, CardMedia, Divider, Stack, styled, Typography, useTheme } from '@mui/material';\n\nimport { PeriodSelect, MetricsPeriod } from './PeriodSelect';\nimport { useMemo, useState } from 'react';\nimport { BytesSize } from '../../utilities/BytesSize';\n\ntype MetricsHistoryRecord = {\n storedBytes: number;\n transferredBytes: number;\n puts: number;\n gets: number;\n recordTime: Date;\n};\n\nexport type MetricsChartProps = {\n history?: MetricsHistoryRecord[];\n};\n\nconst mapPeriodToFromDate = (period: MetricsPeriod = 'month') => {\n const date = new Date();\n\n if (period === 'hour') {\n return subHours(date, 1);\n }\n\n if (period === 'day') {\n return subHours(date, 24);\n }\n\n if (period === 'week') {\n return startOfDay(subWeeks(date, 1));\n }\n\n return startOfDay(subMonths(date, 1));\n};\n\nconst Chart = styled(LineChart)({\n height: 320,\n marginBottom: 16,\n});\n\nconst NoDataRect = styled('rect')({\n fill: '#F5F6FF',\n});\n\nconst LoadingText = styled('text')(({ theme }) => ({\n stroke: 'none',\n fill: theme.palette.text.primary,\n shapeRendering: 'crispEdges',\n textAnchor: 'middle',\n dominantBaseline: 'middle',\n}));\n\n/**\n * TODO: Refactor this component to use shared graphs configuration\n */\nexport const MetricsChart = ({ history = [] }: MetricsChartProps) => {\n const theme = useTheme();\n const [period, setPeriod] = useState<MetricsPeriod>('week');\n const periodFrom = useMemo(() => mapPeriodToFromDate(period), [period]);\n const periodHistory = useMemo(\n () => history.filter((record) => record.recordTime > periodFrom),\n [history, periodFrom],\n );\n\n const total = useMemo(\n () =>\n periodHistory.reduce(\n (acc, record) => ({\n gets: acc.gets + record.gets,\n puts: acc.puts + record.puts,\n storedBytes: acc.storedBytes + record.storedBytes,\n transferredBytes: acc.transferredBytes + record.transferredBytes,\n }),\n { gets: 0, puts: 0, storedBytes: 0, transferredBytes: 0 } as Omit<MetricsHistoryRecord, 'recordTime'>,\n ),\n [periodHistory],\n );\n\n const NoDataOverlay = () => {\n const yScale = useYScale();\n const { left, width, height } = useDrawingArea();\n\n // Conditional handling if bandwidth is not available\n // const bandWidth = xScale.bandwidth ? xScale.bandwidth() : 0;\n\n const [, top] = yScale.range();\n\n const padding = { top: 8, bottom: 8, left: 20, right: 20 };\n const text = 'No data for selected period';\n\n const textWidth = 211;\n const textHeight = 24;\n\n const backgroundWidth = textWidth + padding.left + padding.right;\n const backgroundHeight = textHeight + padding.top + padding.bottom;\n\n const rectX = left + (width - backgroundWidth) / 2;\n const rectY = top + (height - backgroundHeight) / 2;\n return (\n <g>\n <NoDataRect x={rectX} y={rectY} width={backgroundWidth} height={backgroundHeight} />\n <LoadingText style={{ ...theme.typography.subtitle1 }} x={left + width / 2} y={top + height / 2}>\n {text}\n </LoadingText>\n </g>\n );\n };\n\n return (\n <Card>\n <CardHeader title=\"GET / PUT Requests\" action={<PeriodSelect value={period} onChange={setPeriod} />} />\n <CardMedia>\n <Chart\n skipAnimation\n dataset={periodHistory || []}\n axisHighlight={{ x: 'none', y: 'none' }}\n grid={{ horizontal: true, vertical: false }}\n margin={{ top: 10, right: 20, bottom: 40, left: 40 }}\n colors={[theme.palette.primary.main, theme.palette.success.main]}\n slots={{\n noDataOverlay: NoDataOverlay,\n }}\n slotProps={{\n noDataOverlay: {\n style: {\n ...theme.typography.h4,\n },\n },\n }}\n yAxis={\n periodHistory.length\n ? [\n {\n min: periodHistory.length ? undefined : 0,\n max: periodHistory.length ? undefined : 100,\n tickNumber: periodHistory.length ? undefined : 5,\n disableLine: true,\n disableTicks: true,\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]\n : []\n }\n xAxis={[\n {\n dataKey: 'recordTime',\n min: periodFrom,\n max: new Date(),\n disableLine: false,\n disableTicks: false,\n valueFormatter: (date) => format(date, 'do MMM'),\n tickMinStep: 3600 * 1000 * 24, // min step: 24h\n\n tickLabelStyle: {\n fontSize: 10,\n transform: 'translate(-16px, 16px) rotate(-30deg)',\n },\n },\n ]}\n series={[\n {\n curve: 'linear',\n dataKey: 'gets',\n showMark: false,\n },\n\n {\n curve: 'linear',\n dataKey: 'puts',\n showMark: false,\n },\n ]}\n />\n {periodHistory.length > 0 && (\n <Stack direction=\"row\" spacing={2} marginY={3} justifyContent=\"center\">\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <Box sx={{ width: 14, height: 14, borderRadius: '4px', backgroundColor: theme.palette.primary.main }} />\n <Typography variant=\"body2\">Get</Typography>\n </Stack>\n\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <Box sx={{ width: 14, height: 14, borderRadius: '4px', backgroundColor: theme.palette.success.main }} />\n <Typography variant=\"body2\">Put</Typography>\n </Stack>\n </Stack>\n )}\n </CardMedia>\n <CardMedia>\n <Divider flexItem />\n <Stack direction=\"row\" spacing={2} padding={2}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Typography variant=\"body2\" color=\"secondary\">\n GET Requests per account\n </Typography>\n <Typography variant=\"h3\">{total.gets}</Typography>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Typography variant=\"body2\" color=\"secondary\">\n PUT Requests per account\n </Typography>\n <Typography variant=\"h3\">{total.puts}</Typography>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Typography variant=\"body2\" color=\"secondary\">\n Total Consumed per account\n </Typography>\n <Typography variant=\"h3\">\n <BytesSize bytes={total.transferredBytes} />\n </Typography>\n </Stack>\n\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Typography variant=\"body2\" color=\"secondary\">\n Total Stored per account\n </Typography>\n <Typography variant=\"h3\">\n <BytesSize bytes={total.storedBytes} />\n </Typography>\n </Stack>\n </Stack>\n </CardMedia>\n </Card>\n );\n};\n","import { MenuItem, TextField } from '@mui/material';\n\nexport type MetricsPeriod = 'hour' | 'day' | 'week' | 'month';\n\nexport type PeriodSelectProps = {\n value?: MetricsPeriod;\n onChange?: (value: MetricsPeriod) => void;\n};\n\ntype Option = {\n value: MetricsPeriod;\n label: string;\n};\n\nconst options: Option[] = [\n /**\n * TODO: Enable the options below when the backend supports them\n */\n // { value: 'hour', label: 'Last hour' },\n // { value: 'day', label: '24 hours' },\n { value: 'week', label: '1 week' },\n { value: 'month', label: '1 month' },\n];\n\nexport const PeriodSelect = ({ value, onChange }: PeriodSelectProps) => (\n <TextField\n select\n size=\"small\"\n value={value}\n defaultValue={options[0].value}\n onChange={(e) => onChange?.(e.target.value as MetricsPeriod)}\n >\n {options.map(({ value, label }) => (\n <MenuItem key={value} value={value}>\n {label}\n </MenuItem>\n ))}\n </TextField>\n);\n","import { ReactNode, useCallback, useMemo, useState } from 'react';\nimport {\n Box,\n Card,\n CardHeader,\n CardMedia,\n CircularProgress,\n Divider,\n Stack,\n Typography,\n styled,\n useTheme,\n} from '@mui/material';\nimport { LineChart } from '@mui/x-charts';\nimport { format } from 'date-fns';\n\nimport { TimeRangeSelect, type TimeRangeOption } from './TimeRangeSelect';\nimport { SummaryStats, type SummaryItem } from './SummaryStats';\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\n/**\n * A single data point in a time series.\n * Use `null` for the value to represent missing/gap data — the line will break.\n */\nexport interface DataPoint {\n /** Timestamp of the observation */\n timestamp: Date;\n /** Numeric value, or `null` to indicate a gap in the data */\n value: number | null;\n}\n\n/**\n * Represents one line on the graph (a named data series).\n */\nexport interface DataSeries {\n /** Unique display name for this series (shown in legend) */\n name: string;\n /** CSS color string for the line and legend indicator */\n color: string;\n /** Ordered array of data points */\n data: DataPoint[];\n}\n\nexport interface TimeSeriesGraphProps {\n /** Optional title displayed at the top-left of the graph card */\n title?: string;\n /**\n * Array of data series to render. Each series becomes one line on the graph.\n * There is no hardcoded limit on the number of series.\n */\n series: DataSeries[];\n /**\n * Configurable time range options for the dropdown selector.\n * When omitted, the time range dropdown is not rendered.\n */\n timeRangeOptions?: TimeRangeOption[];\n /** Currently selected time range value (controlled) */\n selectedTimeRange?: string;\n /** Callback invoked when the user picks a different time range */\n onTimeRangeChange?: (value: string) => void;\n /**\n * Optional array of summary statistics displayed below the graph.\n * When omitted or empty, the summary section is hidden.\n */\n summaryItems?: SummaryItem[];\n /**\n * Whether to show the summary statistics section.\n * Defaults to `true`. Set to `false` to explicitly hide, even when `summaryItems` are provided.\n */\n showSummary?: boolean;\n /**\n * Optional header action element rendered to the right of the title\n * (e.g., a secondary dropdown or filter control).\n */\n headerAction?: ReactNode;\n /**\n * When `true`, shows a loading overlay (spinner) over the graph area\n * while the header remains visible and interactive.\n */\n loading?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Styled helpers\n// ---------------------------------------------------------------------------\n\nconst ChartContainer = styled(Box)({\n position: 'relative',\n height: 320,\n});\n\nconst LoadingOverlay = styled(Box)(({ theme }) => ({\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(255, 255, 255, 0.7)',\n zIndex: 1,\n borderRadius: theme.shape.borderRadius,\n}));\n\nconst LegendDot = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'dotColor',\n})<{ dotColor: string }>(({ dotColor }) => ({\n width: 14,\n height: 14,\n borderRadius: 4,\n backgroundColor: dotColor,\n flexShrink: 0,\n}));\n\n// ---------------------------------------------------------------------------\n// Utility functions\n// ---------------------------------------------------------------------------\n\n/**\n * Formats large Y-axis values into shorthand notation.\n * 1,000 → 1K, 1,000,000 → 1M, 1,000,000,000 → 1B\n */\nconst formatYAxisValue = (value: number): string => {\n const absValue = Math.abs(value);\n if (absValue >= 1_000_000_000) {\n return `${(value / 1_000_000_000).toFixed(absValue % 1_000_000_000 === 0 ? 0 : 1)}B`;\n }\n if (absValue >= 1_000_000) {\n return `${(value / 1_000_000).toFixed(absValue % 1_000_000 === 0 ? 0 : 1)}M`;\n }\n if (absValue >= 1_000) {\n return `${(value / 1_000).toFixed(absValue % 1_000 === 0 ? 0 : 1)}K`;\n }\n return String(value);\n};\n\n/** A single row in the chart dataset — timestamp plus one field per series. */\ntype DatasetRow = Record<string, string | number | Date | null | undefined>;\n\n/**\n * Builds the unified dataset array that MUI X-Charts expects.\n * Each row is keyed by timestamp with one field per series.\n */\nconst buildDataset = (\n series: DataSeries[],\n hiddenSeries: Set<string>,\n): DatasetRow[] => {\n // Collect all unique timestamps across all visible series\n const timestampMap = new Map<number, DatasetRow>();\n\n series.forEach((s) => {\n if (hiddenSeries.has(s.name)) return;\n s.data.forEach((dp) => {\n const ts = dp.timestamp.getTime();\n if (!timestampMap.has(ts)) {\n timestampMap.set(ts, { timestamp: dp.timestamp } as DatasetRow);\n }\n timestampMap.get(ts)![s.name] = dp.value;\n });\n });\n\n // Sort by timestamp ascending\n return Array.from(timestampMap.values()).sort(\n (a, b) => (a.timestamp as Date).getTime() - (b.timestamp as Date).getTime(),\n );\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * A reusable time series graph component that displays one or more data lines\n * over a shared time axis. Supports configurable time range selection,\n * optional summary statistics, interactive legend toggling, crosshair tooltips,\n * and a loading state.\n *\n * Built on `@mui/x-charts` LineChart and the Cere Design System theme.\n *\n * @example\n * ```tsx\n * <TimeSeriesGraph\n * title=\"Engagement over time\"\n * series={[\n * { name: 'Engagements', color: '#6750A4', data: engagementData },\n * { name: 'Unique Streams', color: '#4caf50', data: streamData },\n * ]}\n * timeRangeOptions={[\n * { label: 'Last hour', value: 'hour' },\n * { label: '24 hours', value: 'day' },\n * { label: '1 week', value: 'week' },\n * { label: '1 month', value: 'month' },\n * ]}\n * selectedTimeRange=\"week\"\n * onTimeRangeChange={(range) => fetchData(range)}\n * summaryItems={[\n * { label: 'Total Engagements', value: 11372 },\n * { label: 'Daily Engagements', value: 156 },\n * ]}\n * />\n * ```\n *\n * Figma reference: [ROB Design - Node 162:1172](https://www.figma.com/design/xky11VbkkFcgZLwZE8BdCN/ROB?node-id=162-1172&m=dev)\n */\nexport const TimeSeriesGraph = ({\n title,\n series,\n timeRangeOptions,\n selectedTimeRange,\n onTimeRangeChange,\n summaryItems,\n showSummary = true,\n headerAction,\n loading = false,\n}: TimeSeriesGraphProps) => {\n const theme = useTheme();\n const [hiddenSeries, setHiddenSeries] = useState<Set<string>>(new Set());\n\n // Build the MUI X-Charts dataset from visible series\n const dataset = useMemo(() => buildDataset(series, hiddenSeries), [series, hiddenSeries]);\n\n // Visible series (exclude hidden)\n const visibleSeries = useMemo(\n () => series.filter((s) => !hiddenSeries.has(s.name)),\n [series, hiddenSeries],\n );\n\n // Colors array matching the order of visible series\n const chartColors = useMemo(() => visibleSeries.map((s) => s.color), [visibleSeries]);\n\n // Toggle a series' visibility\n const handleLegendToggle = useCallback((seriesName: string) => {\n setHiddenSeries((prev) => {\n const next = new Set(prev);\n if (next.has(seriesName)) {\n next.delete(seriesName);\n } else {\n next.add(seriesName);\n }\n return next;\n });\n }, []);\n\n // Compute time bounds for the X-axis from visible data\n const timeBounds = useMemo(() => {\n if (dataset.length === 0) return { min: undefined, max: undefined };\n const timestamps = dataset.map((row) => (row.timestamp as Date).getTime());\n return {\n min: new Date(Math.min(...timestamps)),\n max: new Date(Math.max(...timestamps)),\n };\n }, [dataset]);\n\n // Determine whether we have data to display\n const hasData = dataset.length > 0;\n\n // Whether to render the summary section\n const shouldShowSummary = showSummary && summaryItems && summaryItems.length > 0;\n\n // Build the header action area (time range + optional custom action)\n const headerActionElement = (\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n {headerAction}\n {timeRangeOptions && timeRangeOptions.length > 0 && (\n <TimeRangeSelect\n options={timeRangeOptions}\n value={selectedTimeRange}\n onChange={onTimeRangeChange}\n />\n )}\n </Stack>\n );\n\n // Determine whether to show the header at all\n const showHeader = !!title || !!headerAction || (timeRangeOptions && timeRangeOptions.length > 0);\n\n return (\n <Card\n aria-label={title ? `Line chart showing ${title}` : 'Line chart'}\n role=\"figure\"\n >\n {showHeader && (\n <CardHeader\n title={title}\n titleTypographyProps={{\n variant: 'subtitle1',\n fontWeight: 500,\n }}\n action={headerActionElement}\n />\n )}\n\n <CardMedia>\n <ChartContainer>\n {loading && (\n <LoadingOverlay role=\"status\" aria-label=\"Loading chart data\">\n <CircularProgress size={40} />\n </LoadingOverlay>\n )}\n\n <LineChart\n dataset={dataset}\n axisHighlight={{ x: 'line', y: 'none' }}\n grid={{ horizontal: true, vertical: false }}\n margin={{ top: 10, right: 20, bottom: 40, left: 50 }}\n colors={chartColors.length > 0 ? chartColors : [theme.palette.primary.main]}\n slots={{\n noDataOverlay: () => null,\n }}\n tooltip={{ trigger: hasData ? 'axis' : 'none' }}\n yAxis={[\n {\n disableLine: true,\n disableTicks: true,\n min: hasData ? undefined : 0,\n max: hasData ? undefined : 100,\n tickNumber: hasData ? undefined : 5,\n valueFormatter: (value: number) => formatYAxisValue(value || 0),\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]}\n xAxis={[\n {\n dataKey: 'timestamp',\n scaleType: 'time',\n min: timeBounds.min,\n max: timeBounds.max,\n disableLine: true,\n disableTicks: true,\n valueFormatter: (date: Date) => format(date, 'do MMM'),\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]}\n series={visibleSeries.map((s) => ({\n curve: 'linear' as const,\n dataKey: s.name,\n label: s.name,\n showMark: false,\n connectNulls: false,\n }))}\n // Hide the built-in legend — we render a custom one below\n slotProps={{\n legend: { hidden: true },\n }}\n />\n </ChartContainer>\n\n {/* Custom interactive legend */}\n {series.length > 0 && (\n <Stack\n direction=\"row\"\n spacing={2}\n justifyContent=\"center\"\n paddingY={1}\n flexWrap=\"wrap\"\n useFlexGap\n role=\"list\"\n aria-label=\"Chart legend\"\n >\n {series.map((s) => {\n const isHidden = hiddenSeries.has(s.name);\n return (\n <Stack\n key={s.name}\n direction=\"row\"\n spacing={1}\n alignItems=\"center\"\n role=\"listitem\"\n onClick={() => handleLegendToggle(s.name)}\n sx={{\n cursor: 'pointer',\n opacity: isHidden ? 0.4 : 1,\n transition: 'opacity 0.2s ease',\n userSelect: 'none',\n }}\n aria-pressed={!isHidden}\n aria-label={`Toggle ${s.name} visibility`}\n >\n <LegendDot dotColor={s.color} />\n <Typography variant=\"body2\">{s.name}</Typography>\n </Stack>\n );\n })}\n </Stack>\n )}\n </CardMedia>\n\n {/* Summary statistics */}\n {shouldShowSummary && (\n <>\n <Divider />\n <SummaryStats items={summaryItems!} />\n </>\n )}\n </Card>\n );\n};\n","import { MenuItem, TextField } from '@mui/material';\n\n/**\n * Represents a single time range option in the dropdown.\n */\nexport interface TimeRangeOption {\n /** Display label shown in the dropdown (e.g., \"1 week\") */\n label: string;\n /** Value identifier passed to the callback on selection */\n value: string;\n}\n\nexport interface TimeRangeSelectProps {\n /** Available time range options */\n options: TimeRangeOption[];\n /** Currently selected time range value */\n value?: string;\n /** Callback invoked when user selects a different time range */\n onChange?: (value: string) => void;\n}\n\n/**\n * Configurable time range dropdown selector.\n * Renders a compact select field with the provided time range options.\n *\n * @example\n * ```tsx\n * <TimeRangeSelect\n * options={[\n * { label: 'Last hour', value: 'hour' },\n * { label: '24 hours', value: 'day' },\n * { label: '1 week', value: 'week' },\n * ]}\n * value=\"week\"\n * onChange={(value) => console.log(value)}\n * />\n * ```\n */\nexport const TimeRangeSelect = ({ options, value, onChange }: TimeRangeSelectProps) => (\n <TextField\n select\n size=\"small\"\n value={value ?? (options.length > 0 ? options[0].value : '')}\n onChange={(e) => onChange?.(e.target.value)}\n aria-label=\"Time range selector\"\n sx={{ minWidth: 120 }}\n >\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n);\n","import { Stack, Typography } from '@mui/material';\n\n/**\n * Represents a single summary statistic item displayed below the graph.\n */\nexport interface SummaryItem {\n /** Descriptive label (e.g., \"Total Engagements\") */\n label: string;\n /** Numeric or string value (e.g., \"13.72\" or 11372) */\n value: string | number;\n /** Optional unit suffix (e.g., \"K\", \"GB\", \"%\") */\n unit?: string;\n}\n\nexport interface SummaryStatsProps {\n /** Array of summary items to display */\n items: SummaryItem[];\n}\n\n/**\n * Formats a summary value with its optional unit.\n */\nconst formatSummaryValue = (value: string | number, unit?: string): string => {\n const displayValue = typeof value === 'number' ? value.toLocaleString() : value;\n return unit ? `${displayValue} ${unit}` : displayValue;\n};\n\n/**\n * Renders a horizontal row of summary statistics below the graph.\n * Each item shows a label with its corresponding value and optional unit.\n *\n * Matches the Figma design layout with label in secondary text color\n * and value in bold heading typography.\n *\n * @example\n * ```tsx\n * <SummaryStats\n * items={[\n * { label: 'Total Engagements', value: 11372 },\n * { label: 'Total Consumed', value: '156.91', unit: 'GB' },\n * ]}\n * />\n * ```\n */\nexport const SummaryStats = ({ items }: SummaryStatsProps) => {\n if (items.length === 0) {\n return null;\n }\n\n return (\n <Stack\n direction=\"row\"\n spacing={3}\n padding={2}\n flexWrap=\"wrap\"\n useFlexGap\n role=\"list\"\n aria-label=\"Summary statistics\"\n >\n {items.map((item) => (\n <Stack\n key={item.label}\n direction=\"row\"\n alignItems=\"center\"\n spacing={1}\n role=\"listitem\"\n >\n <Typography variant=\"body2\" color=\"text.secondary\">\n {item.label}\n </Typography>\n <Typography variant=\"h5\" fontWeight={600}>\n {formatSummaryValue(item.value, item.unit)}\n </Typography>\n </Stack>\n ))}\n </Stack>\n );\n};\n","import React, { useCallback } from 'react';\nimport ReactFlow, {\n Background,\n Controls,\n MiniMap,\n ReactFlowProvider,\n BackgroundVariant,\n ConnectionLineType,\n Node,\n Edge,\n OnNodesChange,\n OnEdgesChange,\n NodeTypes,\n EdgeTypes,\n ReactFlowInstance,\n ReactFlowProps,\n} from 'reactflow';\n// Note: reactflow CSS should be imported in Storybook preview.tsx\n// This ensures styles are available globally\nimport { Box, BoxProps } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n\nexport interface FlowEditorProps extends Omit<ReactFlowProps, 'nodes' | 'edges'> {\n /**\n * Nodes to display in the flow\n */\n nodes: Node[];\n /**\n * Edges to display in the flow\n */\n edges: Edge[];\n /**\n * Callback when nodes change\n */\n onNodesChange?: OnNodesChange;\n /**\n * Callback when edges change\n */\n onEdgesChange?: OnEdgesChange;\n /**\n * Custom node types\n */\n nodeTypes?: NodeTypes;\n /**\n * Custom edge types\n */\n edgeTypes?: EdgeTypes;\n /**\n * Height of the flow editor\n * @default '600px'\n */\n height?: string | number;\n /**\n * Show background grid\n * @default true\n */\n showBackground?: boolean;\n /**\n * Background variant\n * @default 'dots'\n */\n backgroundVariant?: BackgroundVariant;\n /**\n * Show controls\n * @default true\n */\n showControls?: boolean;\n /**\n * Show minimap\n * @default false\n */\n showMinimap?: boolean;\n /**\n * Container props\n */\n containerProps?: BoxProps;\n /**\n * Callback when flow instance is initialized\n */\n onInit?: (instance: ReactFlowInstance) => void;\n}\n\n/**\n * FlowEditor component - wrapper around ReactFlow with theme integration\n * \n * @example\n * ```tsx\n * <FlowEditor\n * nodes={nodes}\n * edges={edges}\n * onNodesChange={onNodesChange}\n * onEdgesChange={onEdgesChange}\n * height=\"500px\"\n * showBackground\n * showControls\n * />\n * ```\n */\nexport const FlowEditor: React.FC<FlowEditorProps> = ({\n nodes,\n edges,\n onNodesChange,\n onEdgesChange,\n nodeTypes,\n edgeTypes,\n height = '600px',\n showBackground = true,\n backgroundVariant = BackgroundVariant.Dots,\n showControls = true,\n showMinimap = false,\n containerProps,\n onInit,\n ...reactFlowProps\n}) => {\n const theme = useTheme();\n\n const handleInit = useCallback(\n (instance: ReactFlowInstance) => {\n if (onInit) {\n onInit(instance);\n }\n },\n [onInit]\n );\n\n return (\n <ReactFlowProvider>\n <Box\n sx={{\n width: '100%',\n height: typeof height === 'number' ? `${height}px` : height,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: theme.shape.borderRadius,\n overflow: 'hidden',\n backgroundColor: theme.palette.background.paper,\n ...containerProps?.sx,\n }}\n {...containerProps}\n >\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onInit={handleInit}\n connectionLineType={ConnectionLineType.SmoothStep}\n defaultEdgeOptions={{\n style: {\n stroke: theme.palette.primary.main,\n strokeWidth: 2,\n },\n }}\n style={{\n backgroundColor: 'transparent',\n }}\n {...reactFlowProps}\n >\n {showBackground && (\n <Background\n variant={backgroundVariant}\n gap={16}\n size={1}\n color={theme.palette.divider}\n />\n )}\n {showControls && <Controls />}\n {showMinimap && (\n <MiniMap\n nodeColor={(node) => {\n const color = node.data?.color || theme.palette.primary.main;\n return typeof color === 'string' ? color : theme.palette.primary.main;\n }}\n nodeStrokeWidth={3}\n nodeBorderRadius={8}\n maskColor={`${theme.palette.background.paper}80`}\n style={{\n backgroundColor: theme.palette.background.paper,\n }}\n />\n )}\n </ReactFlow>\n </Box>\n </ReactFlowProvider>\n );\n};\n\nexport default FlowEditor;\n\n// Re-export commonly used types and components from reactflow\nexport type {\n Node,\n Edge,\n NodeTypes,\n EdgeTypes,\n ReactFlowInstance,\n OnNodesChange,\n OnEdgesChange,\n} from 'reactflow';\nexport { Background, Controls, MiniMap, Panel, BackgroundVariant, ConnectionLineType } from 'reactflow';\n\n","import React, { useCallback, useEffect, useState, useRef } from 'react';\nimport Editor, { Monaco } from '@monaco-editor/react';\nimport { Box, BoxProps, IconButton, Tooltip } from '@mui/material';\nimport FullscreenIcon from '@mui/icons-material/Fullscreen';\nimport FullscreenExitIcon from '@mui/icons-material/FullscreenExit';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport type { editor } from 'monaco-editor';\n\nexport type CodeEditorLanguage =\n | 'typescript'\n | 'javascript'\n | 'json'\n | 'html'\n | 'css'\n | 'python'\n | 'yaml'\n | 'markdown'\n | 'sql'\n | 'xml'\n | 'plaintext';\n\nexport interface CodeEditorProps {\n /**\n * Current value of the editor\n */\n value: string;\n /**\n * Callback when value changes\n */\n onChange: (value: string) => void;\n /**\n * Programming language\n * @default 'typescript'\n */\n language?: CodeEditorLanguage;\n /**\n * Height of the editor\n * @default '400px'\n */\n height?: string | number;\n /**\n * Minimum height\n */\n minHeight?: string | number;\n /**\n * Theme ('light' | 'dark' | 'vs-dark' | 'hc-black')\n * If not provided, will use theme from design system\n */\n theme?: string;\n /**\n * Show line numbers\n * @default 'on'\n */\n lineNumbers?: 'on' | 'off' | 'relative' | 'interval';\n /**\n * Editor options (monaco editor options)\n */\n options?: editor.IStandaloneEditorConstructionOptions;\n /**\n * Callback when editor is mounted\n */\n onMount?: (editor: editor.IStandaloneCodeEditor, monaco: Monaco) => void;\n /**\n * Callback for validation errors\n */\n onValidate?: (markers: editor.IMarker[]) => void;\n /**\n * Ref to editor instance\n */\n editorRef?: React.MutableRefObject<editor.IStandaloneCodeEditor | null>;\n /**\n * Ref to Monaco instance\n */\n monacoRef?: React.MutableRefObject<Monaco | null>;\n /**\n * Callback when fullscreen state changes\n */\n onFullscreenChange?: (isFullscreen: boolean) => void;\n /**\n * Props for the container Box.\n */\n containerProps?: BoxProps;\n /**\n * Additional TypeScript type definitions to add to the editor context.\n * Can be a string with type definitions or an array of type definition strings.\n * Each string will be added as a separate extra lib to Monaco.\n *\n * @example\n * ```tsx\n * <CodeEditor\n * value={code}\n * onChange={setCode}\n * typeDefinitions={`\n * declare interface MyCustomType {\n * id: string;\n * name: string;\n * }\n * `}\n * />\n * ```\n */\n typeDefinitions?: string | string[];\n}\n\n// Monaco Editor will use the local version from node_modules automatically\n// No need to configure loader.config() - @monaco-editor/react handles it\n\n// Configure TypeScript settings when Monaco is loaded\nconst configureTypeScript = (monaco: Monaco) => {\n // Configure TypeScript settings\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES2020,\n allowNonTsExtensions: true,\n moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\n module: monaco.languages.typescript.ModuleKind.CommonJS,\n noEmit: false,\n lib: ['es2020', 'dom'],\n noUnusedLocals: false,\n noUnusedParameters: false,\n noImplicitAny: false,\n noImplicitReturns: false,\n noFallthroughCasesInSwitch: false,\n });\n\n monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: false,\n noSyntaxValidation: false,\n noSuggestionDiagnostics: true,\n diagnosticCodesToIgnore: [\n 6133, // 'x' is declared but its value is never read\n 6196, // 'x' is declared but its value is never read (different variant)\n ],\n });\n};\n\n/**\n * CodeEditor component - wrapper around Monaco Editor matching dynamic-indexer-client implementation\n *\n * @example\n * ```tsx\n * <CodeEditor\n * value={code}\n * onChange={setCode}\n * language=\"typescript\"\n * height=\"500px\"\n * onValidate={(markers) => console.log('Errors:', markers)}\n * />\n * ```\n */\nexport const CodeEditor: React.FC<CodeEditorProps> = ({\n value,\n onChange,\n language = 'typescript',\n height = '400px',\n minHeight,\n theme: themeProp,\n lineNumbers = 'on',\n options,\n onMount,\n onValidate,\n editorRef,\n monacoRef,\n onFullscreenChange,\n containerProps,\n typeDefinitions,\n}) => {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [validationErrors, setValidationErrors] = useState<editor.IMarker[]>([]);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [tsCode, setTsCode] = useState<string>(value);\n const [actualHeight, setActualHeight] = useState<string>(\n typeof height === 'number' ? `${height}px` : height\n );\n const [showProblems, setShowProblems] = useState(false);\n const [hasUserToggledProblems, setHasUserToggledProblems] = useState(false);\n\n // Auto-open the Problems panel only until the user manually toggles it.\n useEffect(() => {\n if (hasUserToggledProblems) return; // respect user's choice after first toggle\n if (validationErrors.length > 0) {\n setShowProblems(true);\n } else {\n setShowProblems(false);\n }\n }, [validationErrors, hasUserToggledProblems]);\n\n const internalEditorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n const internalMonacoRef = useRef<Monaco | null>(null);\n\n // Use provided refs or internal refs\n const finalEditorRef = editorRef || internalEditorRef;\n const finalMonacoRef = monacoRef || internalMonacoRef;\n\n useEffect(() => {\n if (isFullscreen) {\n // Account for header height (64px) + padding (16px) = 80px\n setActualHeight('calc(100vh - 80px)');\n } else {\n setActualHeight(typeof height === 'number' ? `${height}px` : height);\n }\n }, [height, isFullscreen]);\n\n // Toggle fullscreen\n const toggleFullscreen = useCallback(() => {\n const newFullscreenState = !isFullscreen;\n setIsFullscreen(newFullscreenState);\n if (onFullscreenChange) {\n onFullscreenChange(newFullscreenState);\n }\n }, [isFullscreen, onFullscreenChange]);\n\n // Jump to a marker position in the editor\n const gotoMarker = useCallback(\n (marker: editor.IMarker) => {\n const ed = finalEditorRef?.current;\n if (!ed) return;\n const position = { lineNumber: marker.startLineNumber, column: marker.startColumn || 1 };\n try {\n ed.revealPositionInCenter(position);\n ed.setPosition(position);\n ed.focus();\n } catch (e) {\n console.error('CodeEditor: Failed to navigate to marker', e);\n }\n },\n [finalEditorRef]\n );\n\n // Handle ESC key for fullscreen exit\n useEffect(() => {\n if (!isFullscreen) return;\n\n function escapeHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n\n setIsFullscreen(false);\n if (onFullscreenChange) {\n onFullscreenChange(false);\n }\n }\n }\n\n window.addEventListener('keydown', escapeHandler, { capture: true });\n\n return () => {\n window.removeEventListener('keydown', escapeHandler, { capture: true });\n };\n }, [isFullscreen, onFullscreenChange]);\n\n const handleEditorDidMount = useCallback(\n (editor: editor.IStandaloneCodeEditor, monaco: Monaco) => {\n console.log('CodeEditor: onMount called', { editor: !!editor, monaco: !!monaco });\n\n try {\n // Configure TypeScript settings when Monaco is loaded\n configureTypeScript(monaco);\n } catch (e) {\n console.error('CodeEditor: Failed to configure TypeScript', e);\n }\n\n if (finalEditorRef) {\n finalEditorRef.current = editor;\n }\n if (finalMonacoRef) {\n finalMonacoRef.current = monaco;\n }\n\n setIsEditorReady(true);\n console.log('CodeEditor: Editor ready');\n\n try {\n // Add ESC key binding directly in editor\n editor.addCommand(monaco.KeyCode.Escape, () => {\n if (isFullscreen) {\n setIsFullscreen(false);\n if (onFullscreenChange) {\n onFullscreenChange(false);\n }\n return true; // Command handled\n }\n return false; // Let default behavior work when not fullscreen\n });\n\n // Add validation callback\n editor.onDidChangeModelDecorations(() => {\n const model = editor.getModel();\n if (model && onValidate) {\n const markers = monaco.editor.getModelMarkers({ resource: model.uri });\n onValidate(markers);\n setValidationErrors(markers);\n }\n });\n\n // Also check initial markers\n const model = editor.getModel();\n if (model && onValidate) {\n const markers = monaco.editor.getModelMarkers({ resource: model.uri });\n onValidate(markers);\n setValidationErrors(markers);\n }\n } catch (e) {\n console.error('CodeEditor: Error setting up editor callbacks', e);\n }\n\n // Call custom onMount if provided\n if (onMount) {\n try {\n onMount(editor, monaco);\n } catch (e) {\n console.error('CodeEditor: Error in custom onMount', e);\n }\n }\n },\n [isFullscreen, onFullscreenChange, onValidate, onMount, finalEditorRef, finalMonacoRef]\n );\n\n // Add custom type definitions when Monaco is ready and typeDefinitions change\n useEffect(() => {\n if (!isEditorReady || !finalMonacoRef?.current || !typeDefinitions) return;\n\n const monaco = finalMonacoRef.current;\n const definitions = Array.isArray(typeDefinitions) ? typeDefinitions : [typeDefinitions];\n const uris: string[] = [];\n\n try {\n // Add each type definition as a separate extra lib\n definitions.forEach((def: string, index: number) => {\n if (def && def.trim()) {\n const uri = `ts:filename/custom-types-${index}.d.ts`;\n uris.push(uri);\n monaco.languages.typescript.typescriptDefaults.addExtraLib(def, uri);\n }\n });\n } catch (error) {\n console.error('CodeEditor: Error adding type definitions:', error);\n }\n\n // Note: Monaco doesn't have a direct removeExtraLib method\n // The definitions will be replaced when the component updates with new definitions\n // This is acceptable as extra libs are additive and don't cause conflicts\n }, [isEditorReady, finalMonacoRef, typeDefinitions]);\n\n const handleCodeChange = (newValue: string | undefined) => {\n const valueStr = newValue || '';\n setTsCode(valueStr);\n onChange(valueStr);\n };\n\n // Sync external value prop with internal state\n useEffect(() => {\n if (value !== tsCode) {\n setTsCode(value);\n if (isEditorReady && finalEditorRef?.current) {\n const editor = finalEditorRef.current;\n const currentValue = editor.getValue();\n if (currentValue !== value) {\n editor.setValue(value);\n }\n }\n }\n }, [value, tsCode, isEditorReady, finalEditorRef]);\n\n const editorMinHeight = minHeight\n ? typeof minHeight === 'number'\n ? `${minHeight}px`\n : minHeight\n : '400px';\n\n const defaultOptions: editor.IStandaloneEditorConstructionOptions = {\n lineNumbers,\n minimap: { enabled: false },\n readOnly: false,\n wordWrap: 'on',\n fontSize: 14,\n fontFamily: 'Monaco, Menlo, \"Ubuntu Mono\", Consolas, \"source-code-pro\", monospace',\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeProp || 'vs',\n ...options,\n };\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: isFullscreen ? '100vh' : '100%',\n minHeight: isFullscreen ? '100vh' : editorMinHeight,\n position: isFullscreen ? 'fixed' : 'relative',\n top: isFullscreen ? 0 : 'auto',\n left: isFullscreen ? 0 : 'auto',\n right: isFullscreen ? 0 : 'auto',\n bottom: isFullscreen ? 0 : 'auto',\n zIndex: isFullscreen ? 9999 : 'auto',\n bgcolor: 'background.paper',\n pt: isFullscreen ? '80px' : 0, // Add padding top in fullscreen to account for header (64px) + spacing (16px)\n px: isFullscreen ? 2 : 0,\n pb: isFullscreen ? 2 : 0,\n overflow: isFullscreen ? 'hidden' : 'visible',\n }}\n >\n <Box\n sx={{\n flex: 1,\n border: 1,\n borderColor: validationErrors.length > 0 ? 'error.main' : 'divider',\n borderRadius: 1,\n minHeight: editorMinHeight,\n overflow: 'hidden',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n }}\n {...containerProps}\n >\n <Tooltip title={isFullscreen ? 'Exit Fullscreen' : 'Fullscreen'}>\n <IconButton\n onClick={toggleFullscreen}\n size=\"small\"\n sx={{\n position: isFullscreen ? 'fixed' : 'absolute',\n top: isFullscreen ? 72 : 8, // Position below header in fullscreen mode (header is ~64px)\n right: isFullscreen ? 16 : 8,\n zIndex: 10000, // Ensure it's above other elements\n bgcolor: 'rgba(255, 255, 255, 0.7)',\n '&:hover': {\n bgcolor: 'rgba(255, 255, 255, 0.9)',\n },\n boxShadow: 1,\n }}\n >\n {isFullscreen ? (\n <FullscreenExitIcon fontSize=\"small\" />\n ) : (\n <FullscreenIcon fontSize=\"small\" />\n )}\n </IconButton>\n </Tooltip>\n\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n minHeight: editorMinHeight,\n position: 'relative',\n height: isFullscreen ? '100%' : actualHeight,\n }}\n >\n <Editor\n height=\"100%\"\n defaultLanguage={language}\n defaultValue={value}\n value={tsCode}\n onChange={handleCodeChange}\n onMount={handleEditorDidMount}\n theme={themeProp || 'vs'}\n options={defaultOptions}\n loading={\n <Box sx={{ p: 2, textAlign: 'center' }}>\n Loading Monaco Editor...\n </Box>\n }\n beforeMount={(monaco) => {\n console.log('CodeEditor: beforeMount called', { monaco: !!monaco });\n }}\n />\n </Box>\n\n {/* Problems panel at the bottom (Monaco-style) */}\n {validationErrors.length > 0 && (\n <Box\n sx={{\n borderTop: 1,\n borderColor: 'divider',\n bgcolor: 'background.default',\n display: 'flex',\n flexDirection: 'column',\n maxHeight: showProblems ? 180 : 40,\n minHeight: 40,\n transition: 'max-height 0.2s ease',\n }}\n >\n {/* Panel header */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 1,\n py: 0.5,\n gap: 1,\n borderBottom: showProblems ? '1px solid' : 'none',\n borderColor: 'divider',\n fontSize: '0.875rem',\n color: 'text.secondary',\n }}\n >\n <ErrorOutlineIcon color=\"error\" fontSize=\"small\" />\n <Box sx={{ fontWeight: 600, color: 'text.primary' }}>Problems</Box>\n <Box sx={{ ml: 1 }}>\n {validationErrors.length} error{validationErrors.length > 1 ? 's' : ''}\n </Box>\n <Box sx={{ flex: 1 }} />\n <IconButton\n size=\"small\"\n aria-label=\"Toggle problems panel\"\n onClick={() => {\n setHasUserToggledProblems(true);\n setShowProblems((s) => !s);\n }}\n >\n {showProblems ? <ExpandMoreIcon fontSize=\"small\" /> : <ExpandLessIcon fontSize=\"small\" />}\n </IconButton>\n </Box>\n {/* Problems list */}\n {showProblems && (\n <Box sx={{ overflow: 'auto' }}>\n {validationErrors.map((error, index) => (\n <Box\n key={`${error.startLineNumber}-${error.startColumn}-${index}`}\n onClick={() => gotoMarker(error)}\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 1.5,\n py: 0.75,\n gap: 1,\n cursor: 'pointer',\n '&:hover': { bgcolor: 'action.hover' },\n borderBottom: '1px dashed',\n borderColor: 'divider',\n fontSize: '0.85rem',\n }}\n >\n <ErrorOutlineIcon color=\"error\" sx={{ fontSize: 18 }} />\n <Box sx={{ color: 'text.secondary', width: 64 }}>Line {error.startLineNumber}</Box>\n <Box sx={{ color: 'text.primary', flex: 1, minWidth: 0 }}>\n {error.message}\n </Box>\n </Box>\n ))}\n </Box>\n )}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n\nexport default CodeEditor;\n"],"mappings":"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","names":["Alert","Avatar","Chip","CircularProgress","Divider","Drawer","Link","List","ListItem","Menu","Paper","RadioGroup","Snackbar","Tooltip","Lottie","import_lottie_react","import_jsx_runtime","Lottie","theme","import_styles","import_jsx_runtime","MuiButton","import_styles","import_jsx_runtime","MuiIconButton","import_jsx_runtime","MuiLoadingButton","import_material","import_jsx_runtime","size","MuiButtonGroup","import_styles","import_jsx_runtime","MuiTextField","size","import_jsx_runtime","InputAdornment","SearchIcon","import_material","import_material","import_styles","import_jsx_runtime","MuiToggleButton","MuiToggleButtonGroup","import_styles","import_jsx_runtime","MuiSwitch","theme","import_styles","import_jsx_runtime","MuiCheckbox","FormControlLabel","import_styles","import_FormControlLabel","import_jsx_runtime","MuiRadio","FormControlLabel","import_material","import_react","import_material","import_jsx_runtime","theme","import_jsx_runtime","open","import_material","import_material","import_jsx_runtime","size","import_jsx_runtime","import_react","import_material","import_Search","import_jsx_runtime","KeyboardArrowDownIcon","PersonAddAltIcon","SettingsIcon","SearchIcon","UnarchiveIcon","ArchiveIcon","CheckIcon","AddIcon","import_react","import_material","import_KeyboardArrowDown","import_Search","import_Add","import_Check","import_jsx_runtime","KeyboardArrowDownIcon","React","SearchIcon","CheckIcon","AddIcon","import_material","import_jsx_runtime","MuiStepper","MuiStep","MuiStepLabel","MuiStepContent","MuiStepButton","import_react","import_material","import_styles","import_jsx_runtime","React","theme","import_react","import_material","import_styles","import_jsx_runtime","theme","React","ChevronRightIcon","ChevronLeftIcon","import_react","import_material","import_react","import_material","import_styles","import_jsx_runtime","StyledListItemButton","theme","size","React","import_jsx_runtime","React","import_react","import_material","import_styles","import_jsx_runtime","theme","colors","React","PowerIcon","import_react","import_material","import_styles","import_jsx_runtime","theme","React","LogoutIcon","import_styles","import_jsx_runtime","MuiBadge","import_styles","import_jsx_runtime","MuiChip","Chip","import_Chip","import_styles","import_jsx_runtime","MuiChip","size","import_react","import_IconButton","import_styles","import_jsx_runtime","Box","Typography","IconButton","ContentCopyIcon","Snackbar","Alert","import_styles","import_jsx_runtime","MuiTooltip","Tooltip","import_material","import_jsx_runtime","size","import_styles","import_jsx_runtime","MuiTab","import_material","import_styles","import_jsx_runtime","MuiMenu","Menu","MuiMenuItem","import_styles","import_jsx_runtime","MuiPagination","import_react","import_material","import_KeyboardArrowDown","import_Search","import_Add","import_styles","import_jsx_runtime","MuiLink","Link","import_jsx_runtime","options","SearchIcon","AddIcon","Link","KeyboardArrowDownIcon","import_material","import_react","import_material","import_jsx_runtime","import_jsx_runtime","size","import_Box","import_Typography","import_IconButton","import_jsx_runtime","Box","Typography","IconButton","MoreHorizIcon","Divider","import_material","import_jsx_runtime","MuiDialog","CloseIcon","import_styles","import_material","import_Close","import_jsx_runtime","StyledDrawer","MuiDrawer","theme","Drawer","CloseIcon","import_styles","import_jsx_runtime","MuiCard","MuiCardContent","MuiCardHeader","MuiCardActions","import_material","import_styles","import_jsx_runtime","List","MuiList","MuiListItem","ListItem","import_material","import_ChevronRight","import_styles","import_react","import_jsx_runtime","WorkOutlineIcon","WavesIcon","RocketLaunchOutlinedIcon","InsertLinkIcon","SmartToyOutlinedIcon","theme","capacity","ExpandMoreIcon","ChevronRightIcon","import_material","import_styles","import_jsx_runtime","StyledMenu","import_ContentCopy","import_SmartToyOutlined","import_Settings","import_jsx_runtime","AddCircleOutlineIcon","EditIcon","ContentCopyIcon","SmartToyOutlinedIcon","DescriptionIcon","SettingsIcon","import_material","import_styles","import_jsx_runtime","import_material","import_styles","import_jsx_runtime","import_styles","import_jsx_runtime","MuiAvatar","Avatar","size","import_material","import_styles","import_jsx_runtime","MuiTable","import_material","import_Link","import_Typography","import_styles","import_jsx_runtime","MuiBreadcrumbs","StyledLink","Link","Typography","import_material","import_ExpandMore","import_styles","import_jsx_runtime","MuiAccordion","ExpandMoreIcon","import_styles","import_jsx_runtime","MuiPaper","Paper","import_Divider","import_styles","import_jsx_runtime","StyledDivider","MuiDivider","Divider","import_material","import_material","import_material","import_material","import_material","import_styles","import_jsx_runtime","MuiAppBar","theme","import_material","import_jsx_runtime","MuiCollapse","import_react","import_Alert","import_material","import_Snackbar","import_styles","import_jsx_runtime","MuiAlert","Alert","MuiAlertTitle","MuiSnackbar","Snackbar","Alert","React","props","import_material","import_jsx_runtime","import_material","import_jsx_runtime","size","import_material","import_jsx_runtime","import_material","import_jsx_runtime","CircularProgress","size","MuiCircularProgress","import_react","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_react","import_material","import_jsx_runtime","import_material","import_jsx_runtime","theme","MD","highlight","rehypeRaw","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","size","import_react","import_jsx_runtime","size","QR","import_material","import_byte_size","import_jsx_runtime","value","size","theme","import_date_fns","import_x_charts","import_material","import_material","import_jsx_runtime","value","import_react","import_jsx_runtime","Chart","theme","import_react","import_material","import_x_charts","import_date_fns","import_material","import_jsx_runtime","options","import_material","import_jsx_runtime","import_jsx_runtime","theme","import_react","import_material","import_styles","import_reactflow","import_jsx_runtime","theme","ReactFlow","import_react","import_material","import_ExpandMore","import_jsx_runtime","options","model","FullscreenExitIcon","FullscreenIcon","Editor","ErrorOutlineIcon","ExpandMoreIcon","ExpandLessIcon","import_reactflow"]}