@cere/cere-design-system 0.0.45 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/WorkflowNode-BnxXO6t_.d.mts +46 -0
  2. package/dist/WorkflowNode-BnxXO6t_.d.ts +46 -0
  3. package/dist/buttons.d.mts +114 -0
  4. package/dist/buttons.d.ts +114 -0
  5. package/dist/buttons.js +19 -0
  6. package/dist/buttons.js.map +1 -0
  7. package/dist/buttons.mjs +19 -0
  8. package/dist/buttons.mjs.map +1 -0
  9. package/dist/carousel.d.mts +51 -0
  10. package/dist/carousel.d.ts +51 -0
  11. package/dist/carousel.js +185 -0
  12. package/dist/carousel.js.map +1 -0
  13. package/dist/carousel.mjs +185 -0
  14. package/dist/carousel.mjs.map +1 -0
  15. package/dist/charts.d.mts +209 -0
  16. package/dist/charts.d.ts +209 -0
  17. package/dist/charts.js +20 -0
  18. package/dist/charts.js.map +1 -0
  19. package/dist/charts.mjs +20 -0
  20. package/dist/charts.mjs.map +1 -0
  21. package/dist/chunk-27JEWSWA.mjs +233 -0
  22. package/dist/chunk-27JEWSWA.mjs.map +1 -0
  23. package/dist/chunk-2EBCST6X.js +25 -0
  24. package/dist/chunk-2EBCST6X.js.map +1 -0
  25. package/dist/chunk-3WCMINE5.mjs +490 -0
  26. package/dist/chunk-3WCMINE5.mjs.map +1 -0
  27. package/dist/chunk-463SRKKD.js +111 -0
  28. package/dist/chunk-463SRKKD.js.map +1 -0
  29. package/dist/chunk-5ASG6G6U.mjs +40 -0
  30. package/dist/chunk-5ASG6G6U.mjs.map +1 -0
  31. package/dist/chunk-6EUAU67C.mjs +374 -0
  32. package/dist/chunk-6EUAU67C.mjs.map +1 -0
  33. package/dist/chunk-AIY6222Q.js +11 -0
  34. package/dist/chunk-AIY6222Q.js.map +1 -0
  35. package/dist/chunk-AJBM7IE6.mjs +2366 -0
  36. package/dist/chunk-AJBM7IE6.mjs.map +1 -0
  37. package/dist/chunk-ATIFLPH6.mjs +278 -0
  38. package/dist/chunk-ATIFLPH6.mjs.map +1 -0
  39. package/dist/chunk-BIZK6FUD.js +37 -0
  40. package/dist/chunk-BIZK6FUD.js.map +1 -0
  41. package/dist/chunk-CCN6M4LI.js +103 -0
  42. package/dist/chunk-CCN6M4LI.js.map +1 -0
  43. package/dist/chunk-CUCKULYC.mjs +2658 -0
  44. package/dist/chunk-CUCKULYC.mjs.map +1 -0
  45. package/dist/chunk-CWJ4OU6W.mjs +45 -0
  46. package/dist/chunk-CWJ4OU6W.mjs.map +1 -0
  47. package/dist/chunk-EOF3QNPF.js +2366 -0
  48. package/dist/chunk-EOF3QNPF.js.map +1 -0
  49. package/dist/chunk-FFZ5S7PQ.mjs +146 -0
  50. package/dist/chunk-FFZ5S7PQ.mjs.map +1 -0
  51. package/dist/chunk-FN5YL4BK.js +278 -0
  52. package/dist/chunk-FN5YL4BK.js.map +1 -0
  53. package/dist/chunk-HLH2VWXL.js +2658 -0
  54. package/dist/chunk-HLH2VWXL.js.map +1 -0
  55. package/dist/chunk-IE6GCHDI.mjs +530 -0
  56. package/dist/chunk-IE6GCHDI.mjs.map +1 -0
  57. package/dist/chunk-JBHRAAN3.js +31 -0
  58. package/dist/chunk-JBHRAAN3.js.map +1 -0
  59. package/dist/chunk-JS4IB5IU.mjs +162 -0
  60. package/dist/chunk-JS4IB5IU.mjs.map +1 -0
  61. package/dist/chunk-KF2Y7HO3.js +595 -0
  62. package/dist/chunk-KF2Y7HO3.js.map +1 -0
  63. package/dist/chunk-KPDYKK3V.js +162 -0
  64. package/dist/chunk-KPDYKK3V.js.map +1 -0
  65. package/dist/chunk-KVBMZNWT.mjs +103 -0
  66. package/dist/chunk-KVBMZNWT.mjs.map +1 -0
  67. package/dist/chunk-L2TIGA7I.js +530 -0
  68. package/dist/chunk-L2TIGA7I.js.map +1 -0
  69. package/dist/chunk-MNM6HE72.js +146 -0
  70. package/dist/chunk-MNM6HE72.js.map +1 -0
  71. package/dist/chunk-NXTVJ6PY.js +374 -0
  72. package/dist/chunk-NXTVJ6PY.js.map +1 -0
  73. package/dist/chunk-OWWDNDF4.js +40 -0
  74. package/dist/chunk-OWWDNDF4.js.map +1 -0
  75. package/dist/chunk-PHMNZK2R.mjs +18 -0
  76. package/dist/chunk-PHMNZK2R.mjs.map +1 -0
  77. package/dist/chunk-PWF2NJDB.mjs +377 -0
  78. package/dist/chunk-PWF2NJDB.mjs.map +1 -0
  79. package/dist/chunk-QBCRH7YF.mjs +37 -0
  80. package/dist/chunk-QBCRH7YF.mjs.map +1 -0
  81. package/dist/chunk-QD6RLAO2.mjs +11 -0
  82. package/dist/chunk-QD6RLAO2.mjs.map +1 -0
  83. package/dist/chunk-QY65OUAC.mjs +111 -0
  84. package/dist/chunk-QY65OUAC.mjs.map +1 -0
  85. package/dist/chunk-QYYQYZHV.js +45 -0
  86. package/dist/chunk-QYYQYZHV.js.map +1 -0
  87. package/dist/chunk-T7LPABOL.mjs +595 -0
  88. package/dist/chunk-T7LPABOL.mjs.map +1 -0
  89. package/dist/chunk-THQKYTQE.js +490 -0
  90. package/dist/chunk-THQKYTQE.js.map +1 -0
  91. package/dist/chunk-U2QHFISG.js +18 -0
  92. package/dist/chunk-U2QHFISG.js.map +1 -0
  93. package/dist/chunk-UPGFBPFX.mjs +25 -0
  94. package/dist/chunk-UPGFBPFX.mjs.map +1 -0
  95. package/dist/chunk-X7E6GMFL.js +233 -0
  96. package/dist/chunk-X7E6GMFL.js.map +1 -0
  97. package/dist/chunk-XF66WQZE.mjs +1535 -0
  98. package/dist/chunk-XF66WQZE.mjs.map +1 -0
  99. package/dist/chunk-YQOZPLTY.js +1535 -0
  100. package/dist/chunk-YQOZPLTY.js.map +1 -0
  101. package/dist/chunk-ZGCN5WCG.js +377 -0
  102. package/dist/chunk-ZGCN5WCG.js.map +1 -0
  103. package/dist/chunk-ZP26PGMS.mjs +31 -0
  104. package/dist/chunk-ZP26PGMS.mjs.map +1 -0
  105. package/dist/feedback.d.mts +356 -0
  106. package/dist/feedback.d.ts +356 -0
  107. package/dist/feedback.js +43 -0
  108. package/dist/feedback.js.map +1 -0
  109. package/dist/feedback.mjs +43 -0
  110. package/dist/feedback.mjs.map +1 -0
  111. package/dist/icons.d.mts +22 -0
  112. package/dist/icons.d.ts +22 -0
  113. package/dist/icons.js +23 -0
  114. package/dist/icons.js.map +1 -0
  115. package/dist/icons.mjs +23 -0
  116. package/dist/icons.mjs.map +1 -0
  117. package/dist/index.d.mts +165 -3080
  118. package/dist/index.d.ts +165 -3080
  119. package/dist/index.js +320 -10082
  120. package/dist/index.js.map +1 -1
  121. package/dist/index.mjs +262 -9983
  122. package/dist/index.mjs.map +1 -1
  123. package/dist/inputs.d.mts +109 -0
  124. package/dist/inputs.d.ts +109 -0
  125. package/dist/inputs.js +43 -0
  126. package/dist/inputs.js.map +1 -0
  127. package/dist/inputs.mjs +43 -0
  128. package/dist/inputs.mjs.map +1 -0
  129. package/dist/layout.d.mts +927 -0
  130. package/dist/layout.d.ts +927 -0
  131. package/dist/layout.js +122 -0
  132. package/dist/layout.js.map +1 -0
  133. package/dist/layout.mjs +122 -0
  134. package/dist/layout.mjs.map +1 -0
  135. package/dist/navigation.d.mts +716 -0
  136. package/dist/navigation.d.ts +716 -0
  137. package/dist/navigation.js +58 -0
  138. package/dist/navigation.js.map +1 -0
  139. package/dist/navigation.mjs +58 -0
  140. package/dist/navigation.mjs.map +1 -0
  141. package/dist/third-party.d.mts +637 -0
  142. package/dist/third-party.d.ts +637 -0
  143. package/dist/third-party.js +45 -0
  144. package/dist/third-party.js.map +1 -0
  145. package/dist/third-party.mjs +45 -0
  146. package/dist/third-party.mjs.map +1 -0
  147. package/dist/utilities.d.mts +39 -0
  148. package/dist/utilities.d.ts +39 -0
  149. package/dist/utilities.js +19 -0
  150. package/dist/utilities.js.map +1 -0
  151. package/dist/utilities.mjs +19 -0
  152. package/dist/utilities.mjs.map +1 -0
  153. package/package.json +55 -1
package/dist/index.d.ts CHANGED
@@ -1,44 +1,51 @@
1
- import { Theme, SxProps } from '@mui/material/styles';
1
+ import { Theme } from '@mui/material/styles';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { LottieComponentProps } from 'lottie-react';
4
- import * as React$1 from 'react';
5
- import React__default, { RefObject, ReactNode, Ref, PropsWithChildren, ReactElement, Key, AriaAttributes } from 'react';
6
- import { ButtonProps as ButtonProps$1 } from '@mui/material/Button';
7
- import { IconButtonProps as IconButtonProps$1 } from '@mui/material/IconButton';
8
- import { LoadingButtonProps as LoadingButtonProps$1 } from '@mui/lab';
9
- import { ButtonGroupProps as ButtonGroupProps$1, ToggleButtonProps as ToggleButtonProps$1, ToggleButtonGroupProps as ToggleButtonGroupProps$1, PopoverProps, StepProps as StepProps$1, StepButtonProps as StepButtonProps$1, StepContentProps as StepContentProps$1, StepLabelProps as StepLabelProps$1, StepperProps as StepperProps$1, MenuProps as MenuProps$1, CircularProgressProps as CircularProgressProps$1, DialogProps as DialogProps$1, BoxProps, ListProps as ListProps$1, ListItemProps as ListItemProps$1, TableProps as TableProps$1, AccordionProps as AccordionProps$1, AppBarProps as AppBarProps$1, CollapseProps as CollapseProps$1, SvgIconProps } from '@mui/material';
4
+ export { Button, ButtonGroup, ButtonGroupProps, ButtonProps, ButtonTone, ButtonVariant, IconButton, IconButtonProps, LoadingButton, LoadingButtonProps } from './buttons.js';
5
+ export { Checkbox, CheckboxProps, CopyableField, CopyableFieldProps, DateRangePicker, DateRangePickerProps, Radio, RadioProps, SearchField, SearchFieldProps, SearchFieldVariant, Switch, SwitchProps, TextField, TextFieldProps, ToggleButton, ToggleButtonGroup, ToggleButtonGroupProps, ToggleButtonProps, useSearchHotkeys } from './inputs.js';
10
6
  export { Box, BoxProps, Container, ContainerProps, FormControl, FormControlLabel, FormControlLabelProps, FormControlProps, FormHelperText, FormHelperTextProps, FormLabel, FormLabelProps, Grid2 as Grid, Grid2Props as GridProps, InputAdornment, InputAdornmentProps, InputLabel, InputLabelProps, ListItemIcon, ListItemSecondaryAction, ListItemText, Stack, StackProps, Toolbar, ToolbarProps, Typography, TypographyProps } from '@mui/material';
11
- import { TextFieldProps as TextFieldProps$1 } from '@mui/material/TextField';
12
- import { SwitchProps as SwitchProps$1 } from '@mui/material/Switch';
13
- import { CheckboxProps as CheckboxProps$1 } from '@mui/material/Checkbox';
14
- import { RadioProps as RadioProps$1 } from '@mui/material/Radio';
15
- import { ListItemButtonProps } from '@mui/material/ListItemButton';
16
- import { TabProps as TabProps$1 } from '@mui/material/Tab';
17
- import { PaginationProps as PaginationProps$1 } from '@mui/material/Pagination';
18
- import { BadgeProps as BadgeProps$1 } from '@mui/material/Badge';
19
- import { ChipProps as ChipProps$1 } from '@mui/material/Chip';
20
- import { TooltipProps as TooltipProps$1 } from '@mui/material/Tooltip';
21
- import { AlertProps as AlertProps$1 } from '@mui/material/Alert';
22
- import { SnackbarProps as SnackbarProps$1 } from '@mui/material/Snackbar';
23
- import { DrawerProps as DrawerProps$1 } from '@mui/material/Drawer';
24
- import { EmblaOptionsType } from 'embla-carousel';
25
- import { CardProps as CardProps$1 } from '@mui/material/Card';
26
- import { CardContentProps } from '@mui/material/CardContent';
27
- import { CardHeaderProps } from '@mui/material/CardHeader';
28
- import { CardActionsProps } from '@mui/material/CardActions';
29
- import { CardMediaProps as CardMediaProps$1 } from '@mui/material/CardMedia';
30
- import { AvatarProps as AvatarProps$1 } from '@mui/material/Avatar';
31
- import { BreadcrumbsProps as BreadcrumbsProps$1 } from '@mui/material/Breadcrumbs';
32
- import { PaperProps as PaperProps$1 } from '@mui/material/Paper';
33
- import { DividerProps as DividerProps$1 } from '@mui/material/Divider';
34
- import { LinkProps as LinkProps$1 } from '@mui/material/Link';
35
- import { BoxProps as BoxProps$1 } from '@mui/material/Box';
36
- import { QRCodeProps as QRCodeProps$1 } from 'react-qr-code';
37
- import { ReactFlowProps, Node, Edge, OnNodesChange, OnEdgesChange, NodeTypes, EdgeTypes, BackgroundVariant, MiniMapProps, ReactFlowInstance, NodeProps } from 'reactflow';
7
+ export { AccountSection, AccountSectionProps, ConnectionStatus, ConnectionStatusProps, Dropdown, DropdownAnchor, DropdownAnchorProps, DropdownProps, Menu, MenuItem, MenuItemProps, MenuProps, NavigationItem, NavigationItemProps, NavigationList, NavigationListProps, NumberedStepper, NumberedStepperProps, NumberedStepperStep, Pagination, PaginationProps, Selector, SelectorOption, SelectorProps, Service, ServiceSelectorButton, ServiceSelectorButtonProps, SideNav, SideNavHeader, SideNavHeaderProps, SideNavProps, Sidebar, SidebarItem, SidebarItemProps, SidebarProps, Step, StepButton, StepButtonProps, StepContent, StepContentProps, StepLabel, StepLabelProps, StepProps, Stepper, StepperProps, Tab, TabProps, UserInfo, Workspace, WorkspaceSelectorButton, WorkspaceSelectorButtonProps } from './navigation.js';
8
+ export { Alert, AlertProps, AlertSeverity, AppLoading, AppLoadingProps, Badge, BadgeProps, Chip, ChipProps, ChipTone, ChipVariant, ChipVariantStyles, CircularProgress, CircularProgressProps, CopyChip, CopyChipProps, EmptyState, EmptyStateProps, IDBlock, IDBlockProps, Loading, LoadingProps, Progress, ProgressProps, RoleBadge, RoleBadgeColor, RoleBadgeProps, RoleBadgeSize, Snackbar, SnackbarProps, StatusDot, StatusDotProps, StatusDotStatus, StatusLabel, StatusLabelProps, StatusLabelSize, Tooltip, TooltipProps, getChipVariantStyles } from './feedback.js';
9
+ export { Accordion, AccordionProps, AgentAvatar, AgentAvatarProps, AppBar, AppBarProps, Avatar, AvatarProps, BreadcrumbItem, Breadcrumbs, BreadcrumbsProps, Card, CardActions, CardContent, CardHeader, CardMedia, CardMediaProps, CardProps, CardVariant, Collapse, CollapseProps, ContextMenuItem, DefinitionRow, DefinitionRowProps, DeploymentCardAction, DeploymentDashboardCard, DeploymentDashboardCardProps, DeploymentDashboardPanel, DeploymentDashboardPanelProps, DeploymentDashboardTree, DeploymentDashboardTreeProps, DeploymentEntityContextMenu, DeploymentEntityContextMenuProps, DeploymentEntityType, DeploymentStatusIndicator, DeploymentTreeNode, Dialog, DialogProps, Divider, DividerProps, Drawer, DrawerProps, DrawerWidth, DrawerWidthValue, EntityHeader, EntityHeaderProps, GRADIENT_PALETTE_COUNT, GradientSurface, GradientSurfaceProps, KpiCard, KpiCardProps, KpiTone, Link, LinkProps, List, ListItem, ListItemProps, ListProps, Logo, LogoProps, MetaField, MetaFieldProps, NumberedList, NumberedListItem, NumberedListProps, NumberedListTone, PanelDialog, PanelDialogProps, PanelDialogSide, PanelDialogWidth, Paper, PaperProps, PrimaryAction, ResponsiveDrawerWidth, ScrollableRow, ScrollableRowProps, SectionRow, SectionRowProps, SplitDialogContent, SplitDialogContentProps, Table, TableHeader, TableHeaderProps, TableProps, WorkflowSideInspector, WorkflowSideInspectorProps, WorkflowTimeBar, WorkflowTimeBarProps, WorkflowTopBar, WorkflowTopBarProps, contextMenuItems, resolveDrawerWidth } from './layout.js';
10
+ export { W as WORKFLOW_NODE_LABELS, a as WORKFLOW_NODE_SHADOW, b as WorkflowNode, c as WorkflowNodeProps, d as WorkflowNodeType } from './WorkflowNode-BnxXO6t_.js';
11
+ export { ActivityAppIcon, BarTrackingIcon, CereIcon, CloudFlashIcon, DecentralizedServerIcon, DiscordIcon, GithubLogoIcon, StorageAppIcon } from './icons.js';
12
+ export { BytesSize, BytesSizeProps, Markdown, MarkdownProps, OnboardingProvider, QRCode, QRCodeProps, Truncate, TruncateProps, useOnboarding } from './utilities.js';
13
+ export { ChartWidget, ChartWidgetProps, DataPoint, DataSeries, MetricsChart, MetricsChartProps, MetricsPeriod, PeriodSelect, SummaryItem, SummaryStats, SummaryStatsProps, TimeRangeOption, TimeRangeSelect, TimeRangeSelectProps, TimeSeriesGraph, TimeSeriesGraphProps } from './charts.js';
14
+ export { CodeEditor, CodeEditorFile, CodeEditorFileTree, CodeEditorFileTreeProps, CodeEditorLanguage, CodeEditorProps, CodeEditorStatusBar, CodeEditorStatusBarItem, CodeEditorStatusBarProps, CodeEditorStatusBarRenderProps, CodeEditorTab, CodeEditorTabRenderProps, CodeEditorTabs, CodeEditorTabsProps, CodeEditorWelcomeScreen, CodeEditorWelcomeScreenProps, CodeEditorWorkspace, CodeEditorWorkspaceProps, EXTENSION_LANGUAGE_MAP, FileTreeNode, FileTreeNodeRenderProps, FlowEditor, FlowEditorProps, GitInfo, UseCodeEditorWorkspaceOptions, UseCodeEditorWorkspaceReturn, WorkflowNodeData, WorkflowNodeHandle, detectLanguage, getFileName, useCodeEditorWorkspace } from './third-party.js';
38
15
  export { Background, BackgroundVariant, ConnectionLineType, Controls, Edge, EdgeTypes, MiniMap, Node, NodeTypes, OnEdgesChange, OnNodesChange, Panel, ReactFlowInstance } from 'reactflow';
39
- import { Monaco } from '@monaco-editor/react';
40
- import { editor } from 'monaco-editor';
41
16
  export { default as RadioGroup } from '@mui/material/RadioGroup';
17
+ import 'react';
18
+ import '@mui/material/Button';
19
+ import '@mui/material/IconButton';
20
+ import '@mui/lab';
21
+ import '@mui/material/TextField';
22
+ import '@mui/material/Switch';
23
+ import '@mui/material/Checkbox';
24
+ import '@mui/material/Radio';
25
+ import '@mui/material/ListItemButton';
26
+ import '@mui/material/Tab';
27
+ import '@mui/material/Pagination';
28
+ import '@mui/material/Badge';
29
+ import '@mui/material/Chip';
30
+ import '@mui/material/Tooltip';
31
+ import '@mui/material/Alert';
32
+ import '@mui/material/Snackbar';
33
+ import '@mui/material/Drawer';
34
+ import '@mui/material/Card';
35
+ import '@mui/material/CardContent';
36
+ import '@mui/material/CardHeader';
37
+ import '@mui/material/CardActions';
38
+ import '@mui/material/CardMedia';
39
+ import '@mui/material/Avatar';
40
+ import '@mui/material/Breadcrumbs';
41
+ import '@mui/material/Paper';
42
+ import '@mui/material/Divider';
43
+ import '@mui/material/Link';
44
+ import '@mui/material/Box';
45
+ import '@mui/material/SvgIcon';
46
+ import 'react-qr-code';
47
+ import '@monaco-editor/react';
48
+ import 'monaco-editor';
42
49
 
43
50
  /**
44
51
  * Module augmentation for the custom typography variants defined in
@@ -381,6 +388,114 @@ declare const webSurfaceTokens: {
381
388
  };
382
389
  type WebSurfaceTokenKey = keyof typeof webSurfaceTokens;
383
390
 
391
+ /**
392
+ * Surface variant: web-light.
393
+ *
394
+ * The marketplace + vault product palette. Both apps render on a light
395
+ * surface; the older audit synthesis (which assumed marketplace was dark)
396
+ * was wrong. There is no shipping dark variant today; that lands as part
397
+ * of the dark-mode work (blocker `B5` in `DESIGN_SYSTEM_TODO.md`).
398
+ *
399
+ * This variant currently mirrors `webSurfaceTokens` verbatim. Future
400
+ * work may diverge (e.g. a vault-specific accent override), at which
401
+ * point a new named variant should be added rather than forking values
402
+ * in app land.
403
+ *
404
+ * See `company-memory-bank/00-foundations/design-system.md` §4.
405
+ */
406
+ declare const webLight: {
407
+ readonly cViolet: "#aa44f2";
408
+ readonly cVioletTint: "#a54aff";
409
+ readonly cVioletLight: "#f0e0fb";
410
+ readonly cVioletDark: "#7c59ac";
411
+ readonly cPink: "#f941e6";
412
+ readonly cPinkLight: "#fcdff9";
413
+ readonly cRed: "#ff4f59";
414
+ readonly cGreen: "#49bf63";
415
+ readonly cBlueLight: "#e7f4fe";
416
+ readonly cBlueDark: "#598ab8";
417
+ readonly robFandango: "#BD32A7";
418
+ readonly robElectricViolet: "#8B00EC";
419
+ readonly robUltraViolet: "#6750A4";
420
+ readonly robPeriwinkle: "#D0BCFF";
421
+ readonly robBright1: "#5311e3";
422
+ readonly robNearBlack2: "#0d0627";
423
+ readonly robNearBlack4: "#23194b";
424
+ readonly surfaceLow: "#f5f1f7";
425
+ readonly surfaceMid: "#f5f1f7";
426
+ readonly surfaceHigh: "#fefcff";
427
+ readonly surfaceContrast: "#ffffff";
428
+ readonly bgDefault: "#f5f5f5";
429
+ readonly bgDim: "#e6e0e9";
430
+ readonly bgSuccess: "#eef5f0";
431
+ readonly bgWarning: "#fef8e8";
432
+ readonly bgDanger: "#f9dedc";
433
+ readonly textOnDanger: "#8c1d18";
434
+ readonly textPrimary: "#1d1b20";
435
+ readonly textSecondary: "#5f5c64";
436
+ readonly textMuted: "#938f99";
437
+ readonly textLink: "#aa44f2";
438
+ readonly strokeOnLow: "#e6e0e9";
439
+ readonly strokeOnMed: "#dad1e0";
440
+ readonly shadowSm: "0px 2px 8px rgba(0,0,0,0.04)";
441
+ readonly shadowMd: "0px 4px 20px rgba(0,0,0,0.05)";
442
+ readonly shadowFocus: "0 0 0 4px rgba(170,68,242,0.25)";
443
+ };
444
+ type WebLightVariant = typeof webLight;
445
+
446
+ /**
447
+ * Named surface variants. Consumers pick one variant per product surface
448
+ * by importing the matching CSS layer (`@cere/cere-design-system/surfaces/<name>.css`)
449
+ * AND optionally referencing the typed token bag here at the TS layer.
450
+ *
451
+ * Today there is only `webLight` (the shipped marketplace + vault
452
+ * palette). A future `webDark` lands with the dark-mode work
453
+ * (`DESIGN_SYSTEM_TODO.md` blocker `B5`).
454
+ *
455
+ * See `company-memory-bank/00-foundations/design-system.md` §4.
456
+ */
457
+ declare const surfaceVariants: {
458
+ readonly webLight: {
459
+ readonly cViolet: "#aa44f2";
460
+ readonly cVioletTint: "#a54aff";
461
+ readonly cVioletLight: "#f0e0fb";
462
+ readonly cVioletDark: "#7c59ac";
463
+ readonly cPink: "#f941e6";
464
+ readonly cPinkLight: "#fcdff9";
465
+ readonly cRed: "#ff4f59";
466
+ readonly cGreen: "#49bf63";
467
+ readonly cBlueLight: "#e7f4fe";
468
+ readonly cBlueDark: "#598ab8";
469
+ readonly robFandango: "#BD32A7";
470
+ readonly robElectricViolet: "#8B00EC";
471
+ readonly robUltraViolet: "#6750A4";
472
+ readonly robPeriwinkle: "#D0BCFF";
473
+ readonly robBright1: "#5311e3";
474
+ readonly robNearBlack2: "#0d0627";
475
+ readonly robNearBlack4: "#23194b";
476
+ readonly surfaceLow: "#f5f1f7";
477
+ readonly surfaceMid: "#f5f1f7";
478
+ readonly surfaceHigh: "#fefcff";
479
+ readonly surfaceContrast: "#ffffff";
480
+ readonly bgDefault: "#f5f5f5";
481
+ readonly bgDim: "#e6e0e9";
482
+ readonly bgSuccess: "#eef5f0";
483
+ readonly bgWarning: "#fef8e8";
484
+ readonly bgDanger: "#f9dedc";
485
+ readonly textOnDanger: "#8c1d18";
486
+ readonly textPrimary: "#1d1b20";
487
+ readonly textSecondary: "#5f5c64";
488
+ readonly textMuted: "#938f99";
489
+ readonly textLink: "#aa44f2";
490
+ readonly strokeOnLow: "#e6e0e9";
491
+ readonly strokeOnMed: "#dad1e0";
492
+ readonly shadowSm: "0px 2px 8px rgba(0,0,0,0.04)";
493
+ readonly shadowMd: "0px 4px 20px rgba(0,0,0,0.05)";
494
+ readonly shadowFocus: "0 0 0 4px rgba(170,68,242,0.25)";
495
+ };
496
+ };
497
+ type SurfaceVariant = keyof typeof surfaceVariants;
498
+
384
499
  /**
385
500
  * Design system theme barrel.
386
501
  *
@@ -492,3055 +607,25 @@ declare const useIsDesktop: () => boolean;
492
607
  declare const useIsTablet: () => boolean;
493
608
  declare const useIsMobile: () => boolean;
494
609
 
495
- type ButtonVariant = 'primary' | 'secondary' | 'tertiary';
496
- type ButtonTone = 'default' | 'onGradient';
497
- interface ButtonProps extends Omit<ButtonProps$1, 'variant' | 'color'> {
498
- /**
499
- * The visual style variant of the button
500
- * - primary: Filled button with primary color background
501
- * - secondary: Outlined button with transparent background and border
502
- * - tertiary: Text button with no background or border
503
- */
504
- variant?: ButtonVariant;
505
- /**
506
- * Tone overlay. When set, **replaces** the per-variant styling — `variant`
507
- * is ignored. Today the only non-default tone is `onGradient`, which paints
508
- * the button as a white pill on a dark gradient surface (banner CTA
509
- * pattern). Use the default tone if you want `variant` to drive the look.
510
- * @default 'default'
511
- */
512
- tone?: ButtonTone;
513
- /**
514
- * The size of the button
515
- */
516
- size?: 'small' | 'medium' | 'large';
517
- /**
518
- * Icon element to display before the button text
519
- */
520
- startIcon?: React__default.ReactNode;
521
- /**
522
- * Icon element to display after the button text
523
- */
524
- endIcon?: React__default.ReactNode;
525
- }
526
- declare const Button: React__default.FC<ButtonProps>;
527
-
528
- interface IconButtonProps extends IconButtonProps$1 {
529
- variant?: 'default' | 'primary' | 'secondary';
530
- }
531
- declare const IconButton: React__default.FC<IconButtonProps>;
532
-
533
- interface LoadingButtonProps extends LoadingButtonProps$1 {
534
- /**
535
- * If `true`, the button will show a loading indicator
536
- */
537
- loading?: boolean;
538
- /**
539
- * The loading indicator can be positioned inside the button or in the center
540
- */
541
- loadingPosition?: 'start' | 'end' | 'center';
542
- }
543
- /**
544
- * LoadingButton component - Button with loading state from MUI Lab
545
- *
546
- * @example
547
- * ```tsx
548
- * <LoadingButton
549
- * variant="contained"
550
- * loading={isLoading}
551
- * onClick={handleSubmit}
552
- * >
553
- * Submit
554
- * </LoadingButton>
555
- * ```
556
- */
557
- declare const LoadingButton: React__default.FC<LoadingButtonProps>;
558
-
559
- interface ButtonGroupProps extends ButtonGroupProps$1 {
560
- /**
561
- * The content of the button group
562
- */
563
- children?: React__default.ReactNode;
564
- /**
565
- * If `true`, the buttons will be disabled
566
- */
567
- disabled?: boolean;
568
- /**
569
- * If `true`, the button group will take full width
570
- */
571
- fullWidth?: boolean;
572
- /**
573
- * The orientation of the button group
574
- * @default 'horizontal'
575
- */
576
- orientation?: 'horizontal' | 'vertical';
577
- /**
578
- * The size of the buttons
579
- * @default 'medium'
580
- */
581
- size?: 'small' | 'medium' | 'large';
582
- /**
583
- * The variant to use
584
- * @default 'outlined'
585
- */
586
- variant?: 'text' | 'outlined' | 'contained';
587
- }
588
- /**
589
- * ButtonGroup component - groups related buttons together
590
- *
591
- * @example
592
- * ```tsx
593
- * <ButtonGroup variant="contained">
594
- * <Button>One</Button>
595
- * <Button>Two</Button>
596
- * <Button>Three</Button>
597
- * </ButtonGroup>
598
- * ```
599
- */
600
- declare const ButtonGroup: React__default.FC<ButtonGroupProps>;
601
-
602
- type TextFieldSize = 'small' | 'medium';
603
- interface TextFieldProps extends Omit<TextFieldProps$1, 'size'> {
604
- size?: TextFieldSize;
605
- }
606
- declare const TextField: React__default.FC<TextFieldProps>;
607
-
608
- interface CopyableFieldProps {
609
- /** The string copied to the clipboard. Also rendered as the button label. */
610
- value: string;
611
- /** Small label rendered above the value (overline-styled). */
612
- label?: React__default.ReactNode;
613
- /** Custom aria-label; defaults to "Copy {value}". */
614
- ariaLabel?: string;
615
- /** How long the "Copied" flash stays visible, in ms. @default 1400 */
616
- flashDurationMs?: number;
617
- /** Text shown during the flash. @default "Copied" */
618
- flashLabel?: string;
619
- /** Optional callback invoked after a successful copy. */
620
- onCopy?: (value: string) => void;
621
- }
622
- /**
623
- * Tinted card with a label row and a monospace, click-to-copy value button.
624
- * Replaces ad-hoc `.share-card / .url / .share-card__flash` markup.
625
- */
626
- declare const CopyableField: React__default.FC<CopyableFieldProps>;
627
-
628
- type SearchFieldVariant = 'standard' | 'pill';
629
- interface SearchFieldProps extends Omit<TextFieldProps, 'InputProps' | 'variant'> {
630
- placeholder?: string;
631
- /** Fires with the next input value on every change. */
632
- onSearch?: (value: string) => void;
633
- /** Visual treatment. `pill` renders a fully-rounded input. @default 'standard' */
634
- variant?: SearchFieldVariant;
635
- /**
636
- * Show a keyboard-shortcut hint adornment (⌘ K on Mac, Ctrl + K elsewhere) at
637
- * the right edge. Pair with `useSearchHotkeys` to wire the key handler.
638
- */
639
- shortcutHint?: boolean;
640
- }
641
- declare const SearchField: React__default.FC<SearchFieldProps>;
642
-
643
- interface UseSearchHotkeysOptions {
644
- /** Cmd/Ctrl + K focuses the ref. @default true */
645
- k?: boolean;
646
- /** `/` (when not already typing in another field) focuses the ref. @default true */
647
- slash?: boolean;
648
- }
649
- /**
650
- * Wire global Cmd+K (Mac) / Ctrl+K (everywhere else) and `/` hotkeys to focus
651
- * the input pointed to by `inputRef`. The `/` hotkey is suppressed while the
652
- * user is typing in another input, textarea or contentEditable element so it
653
- * doesn't hijack normal typing. Either hotkey can be disabled via options.
654
- */
655
- declare function useSearchHotkeys(inputRef: RefObject<HTMLInputElement | null>, options?: UseSearchHotkeysOptions): void;
656
-
657
- type ToggleButtonProps = ToggleButtonProps$1;
658
- declare const ToggleButton: React__default.FC<ToggleButtonProps>;
659
- type ToggleButtonGroupProps = ToggleButtonGroupProps$1;
660
- declare const ToggleButtonGroup: React__default.FC<ToggleButtonGroupProps>;
661
-
662
- interface SwitchProps extends SwitchProps$1 {
663
- label?: string;
664
- labelPosition?: 'left' | 'right';
665
- }
666
- declare const Switch: React__default.FC<SwitchProps>;
667
-
668
- interface CheckboxProps extends Omit<CheckboxProps$1, 'color'> {
669
- label?: string;
670
- labelPosition?: 'left' | 'right';
671
- }
672
- declare const Checkbox: React__default.FC<CheckboxProps>;
673
-
674
- interface RadioProps extends Omit<RadioProps$1, 'color'> {
675
- label?: string;
676
- labelPosition?: 'left' | 'right';
677
- }
678
- declare const Radio: React__default.FC<RadioProps>;
679
-
680
- /** Props for the DateRangePicker component. */
681
- interface DateRangePickerProps {
682
- /** The selected start date, or null if unset. */
683
- startDate: Date | null;
684
- /** The selected end date, or null if unset. */
685
- endDate: Date | null;
686
- /** Callback fired when the start date changes. */
687
- onStartDateChange: (date: Date | null) => void;
688
- /** Callback fired when the end date changes. */
689
- onEndDateChange: (date: Date | null) => void;
690
- /** Earliest selectable date for both pickers. */
691
- minDate?: Date;
692
- /** Latest selectable date for both pickers. */
693
- maxDate?: Date;
694
- /** If true, both date pickers are disabled. @default false */
695
- disabled?: boolean;
696
- /** Size of the text field inputs. @default 'small' */
697
- size?: 'small' | 'medium';
698
- }
699
- declare const DateRangePicker: React__default.FC<DateRangePickerProps>;
700
-
701
- type DropdownAnchorProps = {
702
- open?: boolean;
703
- label?: ReactNode;
704
- leftElement?: ReactNode;
705
- onOpen?: () => void;
706
- variant?: 'header' | 'button';
707
- };
708
- declare const DropdownAnchor: React$1.ForwardRefExoticComponent<DropdownAnchorProps & React$1.RefAttributes<HTMLButtonElement>>;
709
-
710
- type RenderAnchorOptions = {
711
- ref: Ref<any>;
712
- open: boolean;
713
- onOpen: () => void;
714
- };
715
- type DropdownProps = Pick<PopoverProps, 'open' | 'children'> & Omit<DropdownAnchorProps, 'open'> & {
716
- direction?: 'right' | 'left';
717
- dense?: boolean;
718
- disableGutters?: boolean;
719
- disablePaddings?: boolean;
720
- onToggle?: (open: boolean) => void;
721
- renderAnchor?: (options: RenderAnchorOptions) => ReactNode;
722
- variant: 'header' | 'button';
723
- };
724
- declare const Dropdown: ({ open, label, leftElement, direction, children, onToggle, dense, disableGutters, disablePaddings, variant, renderAnchor, }: DropdownProps) => react_jsx_runtime.JSX.Element;
725
-
726
- interface SidebarItemProps {
727
- label: string;
728
- icon?: React__default.ReactNode;
729
- selected?: boolean;
730
- onClick?: () => void;
731
- size?: 'small' | 'medium' | 'large';
732
- endIcon?: React__default.ReactNode;
733
- children?: React__default.ReactNode;
734
- }
735
- declare const SidebarItem: React__default.FC<SidebarItemProps>;
736
-
737
- interface SidebarProps {
738
- open?: boolean;
739
- width?: number;
740
- items: SidebarItemProps[];
741
- onClose?: () => void;
742
- variant?: 'permanent' | 'persistent' | 'temporary';
743
- }
744
- declare const Sidebar: React__default.FC<SidebarProps>;
745
-
746
- interface Service {
747
- id: string;
748
- name: string;
749
- description?: string;
750
- type?: string;
751
- lastAccessed?: string;
752
- memberCount?: number;
753
- favorited?: boolean;
754
- isPersonal?: boolean;
755
- avatar?: string;
756
- archived?: boolean;
757
- }
758
- interface ServiceSelectorButtonProps {
759
- /**
760
- * List of services to display
761
- */
762
- services: Service[];
763
- /**
764
- * Currently selected service ID
765
- */
766
- selectedServiceId: string | null;
767
- /**
768
- * Loading state
769
- */
770
- loading?: boolean;
771
- /**
772
- * Compact mode for mobile or mini-sidebar
773
- */
774
- compact?: boolean;
775
- /**
776
- * Callback when service is selected
777
- */
778
- onSelectService?: (serviceId: string) => void;
779
- /**
780
- * Callback when service name is clicked (for navigation)
781
- */
782
- onServiceClick?: (serviceId: string) => void;
783
- /**
784
- * Callback when "Create Service" is clicked
785
- */
786
- onCreateService?: () => void;
787
- /**
788
- * Callback after service is created
789
- */
790
- onServiceCreated?: () => void;
791
- /**
792
- * Whether user is a manager for the selected service
793
- */
794
- isManager?: boolean;
795
- /**
796
- * Custom styles
797
- */
798
- sx?: never;
799
- /**
800
- * Panel width
801
- * @default 350
802
- */
803
- panelWidth?: number;
804
- /**
805
- * Callback when Settings button is clicked
806
- */
807
- onOpenSettings?: (serviceId: string) => void;
808
- /**
809
- * Callback when Add Member button is clicked
810
- */
811
- onOpenAddMember?: (serviceId: string) => void;
812
- }
813
- declare const ServiceSelectorButton: React__default.FC<ServiceSelectorButtonProps>;
814
-
815
- interface Workspace {
816
- id: string;
817
- name: string;
818
- description?: string;
819
- }
820
- interface WorkspaceSelectorButtonProps {
821
- /**
822
- * List of workspaces to display
823
- */
824
- workspaces: Workspace[];
825
- /**
826
- * Currently selected workspace ID
827
- */
828
- selectedWorkspaceId: string | null;
829
- /**
830
- * Loading state
831
- */
832
- loading?: boolean;
833
- /**
834
- * Callback when workspace is selected
835
- */
836
- onSelectWorkspace?: (workspaceId: string) => void;
837
- /**
838
- * Callback when workspace name is clicked (for navigation)
839
- */
840
- onWorkspaceClick?: (workspaceId: string) => void;
841
- /**
842
- * Callback when "Create Workspace" is clicked
843
- */
844
- onCreateWorkspace?: () => void;
845
- /**
846
- * Custom styles
847
- */
848
- sx?: any;
849
- /**
850
- * Panel width
851
- * @default 350
852
- */
853
- panelWidth?: number;
854
- }
855
- declare const WorkspaceSelectorButton: React__default.FC<WorkspaceSelectorButtonProps>;
856
-
857
- type StepperProps = StepperProps$1;
858
610
  /**
859
- * Stepper component - displays progress through a sequence of steps
611
+ * Time formatters shared across CEF surfaces. Kept intentionally tiny and
612
+ * dependency-free so consumers (vault, marketplace, ROB) can render
613
+ * timestamps the same way without each shipping their own copy.
860
614
  *
861
- * @example
862
- * ```tsx
863
- * <Stepper activeStep={activeStep}>
864
- * <Step>
865
- * <StepLabel>Step 1</StepLabel>
866
- * </Step>
867
- * <Step>
868
- * <StepLabel>Step 2</StepLabel>
869
- * </Step>
870
- * </Stepper>
871
- * ```
872
- */
873
- declare const Stepper: React__default.FC<StepperProps>;
874
- type StepProps = StepProps$1;
875
- /**
876
- * Step component - represents a single step in a Stepper
877
- */
878
- declare const Step: React__default.FC<StepProps>;
879
- type StepLabelProps = StepLabelProps$1;
880
- /**
881
- * StepLabel component - label for a Step
882
- */
883
- declare const StepLabel: React__default.FC<StepLabelProps>;
884
- type StepContentProps = StepContentProps$1;
885
- /**
886
- * StepContent component - optional content that appears below a StepLabel
887
- */
888
- declare const StepContent: React__default.FC<StepContentProps>;
889
- type StepButtonProps = StepButtonProps$1;
890
- /**
891
- * StepButton component - makes a Step clickable
892
- */
893
- declare const StepButton: React__default.FC<StepButtonProps>;
894
-
895
- interface NumberedStepperStep {
896
- key: string;
897
- label: string;
898
- }
899
- interface NumberedStepperProps {
900
- steps: NumberedStepperStep[];
901
- /** Index of the active step. -1 = none active. */
902
- current: number;
903
- className?: string;
904
- }
905
- /**
906
- * Vertical numbered stepper used by Try-this-out and similar guided flows.
907
- * Brand-styled: active rows take the violet palette; completed rows show ✓.
908
- */
909
- declare const NumberedStepper: React__default.FC<NumberedStepperProps>;
910
-
911
- /**
912
- * Type definitions for SideNav components
913
- * Side Navigation Bar Component - V1 (Expanded State) & V2 (Collapsed State)
914
- */
915
-
916
- /**
917
- * Navigation Item Properties
918
- * Individual navigation menu item with icon, label, and interactive states
919
- */
920
- interface NavigationItemProps extends Omit<ListItemButtonProps, 'selected' | 'onClick'> {
921
- /**
922
- * Unique identifier for the navigation item
923
- * Used for selection tracking and key prop
924
- */
925
- id: string;
926
- /**
927
- * Display text for the navigation item
928
- */
929
- label: string;
930
- /**
931
- * Icon element to display (typically a Material UI icon component)
932
- */
933
- icon?: ReactNode;
934
- /**
935
- * Position of the icon relative to the label
936
- * @default 'left'
937
- */
938
- iconPosition?: 'left' | 'right';
939
- /**
940
- * Whether this item is currently selected/active
941
- * @default false
942
- */
943
- selected?: boolean;
944
- /**
945
- * Whether this item is disabled
946
- * @default false
947
- */
948
- disabled?: boolean;
949
- /**
950
- * Click handler for the navigation item
951
- * @param id - The id of the clicked item
952
- */
953
- onClick?: (id: string) => void;
954
- /**
955
- * Additional content to display on the right side
956
- * Can be a button, dropdown, badge, etc.
957
- */
958
- endContent?: ReactNode;
959
- /**
960
- * Optional URL for link-based navigation
961
- * If provided, component renders as a link
962
- */
963
- href?: string;
964
- /**
965
- * Accessibility label for screen readers
966
- * @default Uses 'label' prop value
967
- */
968
- ariaLabel?: string;
969
- /**
970
- * Size variant for the navigation item
971
- * @default 'medium'
972
- */
973
- size?: 'small' | 'medium' | 'large';
974
- /**
975
- * Whether sidebar is collapsed (icon-only mode) - V2
976
- * When true:
977
- * - Label is hidden
978
- * - Tooltip shows on hover/focus
979
- * - EndContent is hidden
980
- * - Icon is centered
981
- * @default false
982
- */
983
- collapsed?: boolean;
984
- /**
985
- * Whether to show tooltip in collapsed mode - V2
986
- * @default true
987
- */
988
- showTooltip?: boolean;
989
- /**
990
- * Tooltip placement - V2
991
- * @default 'right'
992
- */
993
- tooltipPlacement?: 'left' | 'right' | 'top' | 'bottom';
994
- }
995
- /**
996
- * Navigation List Properties
997
- * Container for multiple navigation items with scroll support
998
- */
999
- interface NavigationListProps {
1000
- /**
1001
- * Array of navigation items to display
1002
- */
1003
- items: NavigationItemProps[];
1004
- /**
1005
- * ID of currently selected item (controlled mode)
1006
- */
1007
- selectedId?: string;
1008
- /**
1009
- * Callback when selection changes
1010
- * @param id - The id of the newly selected item
1011
- */
1012
- onSelectionChange?: (id: string) => void;
1013
- /**
1014
- * Maximum height before scrolling kicks in
1015
- * @default 'auto'
1016
- */
1017
- maxHeight?: string | number;
1018
- /**
1019
- * Accessibility label for the list
1020
- * @default 'Navigation menu'
1021
- */
1022
- ariaLabel?: string;
1023
- /**
1024
- * Whether sidebar is collapsed - V2
1025
- * Passed down to all NavigationItem children
1026
- * @default false
1027
- */
1028
- collapsed?: boolean;
1029
- /**
1030
- * Whether to show tooltips on items when collapsed - V2
1031
- * Passed down to each NavigationItem's showTooltip prop
1032
- * @default true
1033
- */
1034
- showTooltips?: boolean;
1035
- }
1036
- /**
1037
- * User Information
1038
- * Used in AccountSection component
615
+ * Both helpers return the em-dash placeholder `'—'` for missing or
616
+ * unparseable input so call sites can drop the value directly into JSX
617
+ * without a guard.
1039
618
  */
1040
- interface UserInfo {
1041
- /**
1042
- * User's display name
1043
- */
1044
- name: string;
1045
- /**
1046
- * User's email address (optional)
1047
- */
1048
- email?: string;
1049
- /**
1050
- * User's initials for avatar fallback
1051
- * If not provided, will be derived from name
1052
- */
1053
- initials?: string;
1054
- /**
1055
- * URL for user avatar image
1056
- */
1057
- avatarUrl?: string;
1058
- }
1059
619
  /**
1060
- * Connection Status Properties
1061
- * Displays connection status with pill-style indicator
620
+ * Render an ISO-8601 timestamp as a coarse relative string ("12s ago",
621
+ * "7m ago", "3h ago"). For gaps of a day or more, falls back to the
622
+ * browser's locale string so the absolute date is still legible.
1062
623
  */
1063
- interface ConnectionStatusProps {
1064
- /**
1065
- * Status text to display (e.g., "Connected to Dragon 1")
1066
- */
1067
- status: string;
1068
- /**
1069
- * Visual variant of the status
1070
- * @default 'info'
1071
- */
1072
- variant?: 'success' | 'warning' | 'error' | 'info';
1073
- /**
1074
- * Optional custom icon to replace the default power icon
1075
- */
1076
- icon?: ReactNode;
1077
- /**
1078
- * Optional click handler (makes status interactive)
1079
- */
1080
- onClick?: () => void;
1081
- /**
1082
- * Compact mode for collapsed sidebar - V2
1083
- * When true:
1084
- * - Shows pill with icon + compactText (or falls back to icon-only)
1085
- * - Tooltip shows full status text on hover/focus
1086
- * @default false
1087
- */
1088
- compact?: boolean;
1089
- /**
1090
- * Short label to display in compact mode (e.g. "D1") - V2
1091
- * If not provided, compact mode shows icon-only
1092
- */
1093
- compactText?: string;
1094
- }
624
+ declare function formatRelativeTime(iso: string | undefined | null): string;
1095
625
  /**
1096
- * Account Section Properties
1097
- * Displays user account information with avatar, name, and logout
1098
- */
1099
- interface AccountSectionProps {
1100
- /**
1101
- * User information object
1102
- */
1103
- user: UserInfo;
1104
- /**
1105
- * Logout button click handler
1106
- */
1107
- onLogout: () => void;
1108
- /**
1109
- * Whether to show email below name
1110
- * @default false
1111
- */
1112
- showEmail?: boolean;
1113
- /**
1114
- * Layout variant
1115
- * @default 'horizontal'
1116
- */
1117
- layout?: 'horizontal' | 'vertical';
1118
- /**
1119
- * Compact mode (avatar-only for collapsed sidebar) - V2
1120
- * When true:
1121
- * - Name and email are hidden
1122
- * - Only avatar is shown (40px)
1123
- * - Tooltip shows name + email on hover/focus
1124
- * - Logout button becomes icon-only
1125
- * @default false
1126
- */
1127
- compact?: boolean;
1128
- }
1129
- /**
1130
- * SideNav Properties
1131
- * Main container component that composes all navigation sections
1132
- */
1133
- interface SideNavProps {
1134
- /**
1135
- * Width of the sidebar when expanded (pixels) - V1
1136
- * @default 280
1137
- */
1138
- width?: number;
1139
- /**
1140
- * Width of the sidebar when collapsed (pixels) - V2
1141
- * @default 68
1142
- */
1143
- collapsedWidth?: number;
1144
- /**
1145
- * Whether the sidebar is collapsed (controlled mode) - V2
1146
- * When provided: Component is controlled (parent manages state)
1147
- * When undefined: Component is uncontrolled (internal state)
1148
- * @default undefined
1149
- */
1150
- collapsed?: boolean;
1151
- /**
1152
- * Default collapsed state (uncontrolled mode only) - V2
1153
- * Ignored if `collapsed` prop is provided
1154
- * @default false
1155
- */
1156
- defaultCollapsed?: boolean;
1157
- /**
1158
- * Callback fired when collapsed state changes - V2
1159
- * Called after toggle button click or programmatic state change
1160
- * @param collapsed - New collapsed state value
1161
- */
1162
- onCollapseChange?: (collapsed: boolean) => void;
1163
- /**
1164
- * Duration of the collapse/expand width transition in ms - V2
1165
- * @default 300
1166
- */
1167
- transitionDuration?: number;
1168
- /**
1169
- * Whether to show tooltips on child items when collapsed - V2
1170
- * Passed down via context to NavigationList and NavigationItem
1171
- * @default true
1172
- */
1173
- showTooltips?: boolean;
1174
- /**
1175
- * Position of the sidebar
1176
- * @default 'left'
1177
- */
1178
- position?: 'left' | 'right';
1179
- /**
1180
- * Whether to show border on the edge
1181
- * @default true
1182
- */
1183
- showBorder?: boolean;
1184
- /**
1185
- * Custom background color
1186
- * @default theme.palette.background.paper
1187
- */
1188
- backgroundColor?: string;
1189
- /**
1190
- * Child components (NavigationList, ConnectionStatus, AccountSection)
1191
- */
1192
- children: ReactNode;
1193
- /**
1194
- * Additional CSS class name
1195
- */
1196
- className?: string;
1197
- /**
1198
- * Accessibility label for the navigation
1199
- * @default 'Main navigation'
1200
- */
1201
- ariaLabel?: string;
1202
- }
1203
- /**
1204
- * SideNav Header Properties
1205
- * Displays app branding (logo + title) and an optional collapse toggle button
1206
- */
1207
- interface SideNavHeaderProps {
1208
- /**
1209
- * App logo or icon element (e.g. an <img>, SVG, or MUI Icon)
1210
- */
1211
- logo?: ReactNode;
1212
- /**
1213
- * App or brand title text displayed next to the logo
1214
- */
1215
- title: string;
1216
- /**
1217
- * Whether to show the collapse toggle button
1218
- * @default true
1219
- */
1220
- showCollapseButton?: boolean;
1221
- /**
1222
- * Callback fired when the collapse button is clicked.
1223
- * Wire this up to toggle sidebar expanded/collapsed state (V2).
1224
- */
1225
- onCollapse?: () => void;
1226
- /**
1227
- * Callback fired when the logo/title branding area is clicked.
1228
- * Use this for "go to home" navigation. Only the logo + title region
1229
- * is clickable — the collapse button and surrounding padding are excluded.
1230
- */
1231
- onLogoClick?: () => void;
1232
- /**
1233
- * Accessibility label for the header region
1234
- * @default '{title} navigation header'
1235
- */
1236
- ariaLabel?: string;
1237
- /**
1238
- * Whether sidebar is collapsed - V2
1239
- * When true:
1240
- * - Title text is hidden
1241
- * - Logo remains visible (compact)
1242
- * - Toggle button shows expand icon (→)
1243
- * @default false
1244
- */
1245
- collapsed?: boolean;
1246
- }
1247
- /**
1248
- * Compound component slots for SideNav
1249
- */
1250
- interface SideNavHeaderSlotProps {
1251
- children: ReactNode;
1252
- className?: string;
1253
- }
1254
- interface SideNavNavigationProps {
1255
- children: ReactNode;
1256
- className?: string;
1257
- }
1258
- interface SideNavFooterProps {
1259
- children: ReactNode;
1260
- className?: string;
1261
- }
1262
-
1263
- /**
1264
- * SideNav Component
1265
- * Main container for side navigation with compound components
1266
- * V2: Added collapsed state support with animated transitions
1267
- */
1268
-
1269
- /**
1270
- * SideNav.Header compound component
1271
- * Passes collapsed state and toggle handler to children
1272
- */
1273
- declare const Header: React__default.NamedExoticComponent<SideNavHeaderSlotProps>;
1274
- /**
1275
- * SideNav.Navigation compound component
1276
- * Passes collapsed state to children
1277
- */
1278
- declare const Navigation: React__default.NamedExoticComponent<SideNavNavigationProps>;
1279
- /**
1280
- * SideNav.Footer compound component
1281
- * Passes collapsed state to children
1282
- */
1283
- declare const Footer: React__default.NamedExoticComponent<SideNavFooterProps>;
1284
- /**
1285
- * Main SideNav component with compound components
1286
- * V2: Supports controlled/uncontrolled collapsed state
1287
- */
1288
- interface SideNavComponent extends React__default.FC<SideNavProps> {
1289
- Header: typeof Header;
1290
- Navigation: typeof Navigation;
1291
- Footer: typeof Footer;
1292
- }
1293
- declare const SideNav: SideNavComponent;
1294
-
1295
- /**
1296
- * SideNavHeader Component
1297
- * Displays app branding (logo + title) and an optional collapse toggle button
1298
- * V2: Supports collapsed state with compact logo-only view
1299
- */
1300
-
1301
- /**
1302
- * SideNavHeader Component
1303
- *
1304
- * Renders the app branding area at the top of the side navigation.
1305
- * Includes an optional logo, a title, and an optional collapse toggle button.
1306
- * V2: In collapsed state, shows logo stacked vertically above toggle button.
1307
- *
1308
- * If `onLogoClick` is provided, only the logo+title area is clickable
1309
- * (e.g. to navigate back to the home page). The rest of the header
1310
- * (collapse button, surrounding padding) does NOT trigger that callback.
1311
- */
1312
- declare const SideNavHeader: React__default.NamedExoticComponent<SideNavHeaderProps>;
1313
-
1314
- /**
1315
- * NavigationList Component
1316
- * Container for multiple navigation items with scroll support
1317
- * V2: Passes collapsed state to navigation items
1318
- */
1319
-
1320
- /**
1321
- * NavigationList Component
1322
- */
1323
- declare const NavigationList: React__default.NamedExoticComponent<NavigationListProps>;
1324
-
1325
- /**
1326
- * NavigationItem Component
1327
- * Individual navigation menu item with icon, label, and interactive states
1328
- * V2: Added collapsed state support with tooltips
1329
- */
1330
-
1331
- /**
1332
- * NavigationItem Component
1333
- * V2: Supports collapsed state with tooltip
1334
- */
1335
- declare const NavigationItem: React__default.NamedExoticComponent<NavigationItemProps>;
1336
-
1337
- /**
1338
- * ConnectionStatus Component
1339
- * Displays connection status with pill-style indicator
1340
- * V2: Supports compact mode for collapsed sidebar
1341
- */
1342
-
1343
- /**
1344
- * ConnectionStatus Component
1345
- * V2: Supports compact mode
1346
- */
1347
- declare const ConnectionStatus: React__default.NamedExoticComponent<ConnectionStatusProps>;
1348
-
1349
- /**
1350
- * AccountSection Component
1351
- * Displays user account information with avatar, name, and logout
1352
- * V2: Supports compact mode for collapsed sidebar
1353
- */
1354
-
1355
- /**
1356
- * AccountSection Component
1357
- * V2: Supports compact mode
1358
- */
1359
- declare const AccountSection: React__default.NamedExoticComponent<AccountSectionProps>;
1360
-
1361
- interface TabProps extends Omit<TabProps$1, 'icon'> {
1362
- badge?: number | string;
1363
- badgeVariant?: 'default' | 'primary' | 'success' | 'error';
1364
- }
1365
- declare const Tab: React__default.FC<TabProps>;
1366
-
1367
- interface MenuProps extends Omit<MenuProps$1, 'open'> {
1368
- anchorEl?: HTMLElement | null;
1369
- onClose: () => void;
1370
- }
1371
- declare const Menu: React__default.FC<MenuProps>;
1372
- interface MenuItemProps {
1373
- icon?: React__default.ReactNode;
1374
- label: string;
1375
- onClick?: () => void;
1376
- disabled?: boolean;
1377
- divider?: boolean;
1378
- }
1379
- declare const MenuItem: React__default.FC<MenuItemProps>;
1380
-
1381
- interface PaginationProps extends Omit<PaginationProps$1, 'color'> {
1382
- color?: 'primary' | 'secondary' | 'standard';
1383
- }
1384
- declare const Pagination: React__default.FC<PaginationProps>;
1385
-
1386
- interface SelectorOption {
1387
- id: string;
1388
- name: string;
1389
- description?: string;
1390
- avatar?: string;
1391
- icon?: React__default.ReactNode;
1392
- disabled?: boolean;
1393
- }
1394
- interface SelectorProps {
1395
- options: SelectorOption[];
1396
- selectedId: string | null;
1397
- onSelect: (id: string) => void;
1398
- onCreate?: () => void;
1399
- loading?: boolean;
1400
- placeholder?: string;
1401
- emptyMessage?: string;
1402
- compact?: boolean;
1403
- renderSelected?: (option: SelectorOption) => React__default.ReactNode;
1404
- width?: number;
1405
- }
1406
- declare const Selector: React__default.FC<SelectorProps>;
1407
-
1408
- type BadgeVariant = 'default' | 'primary' | 'success' | 'error';
1409
- interface BadgeProps extends Omit<BadgeProps$1, 'color' | 'variant'> {
1410
- variant?: BadgeVariant;
1411
- children?: React__default.ReactNode;
1412
- }
1413
- declare const Badge: React__default.FC<BadgeProps>;
1414
-
1415
- type ChipVariant = 'default' | 'active' | 'success' | 'error' | 'warning' | 'info';
1416
- interface ChipVariantStyles {
1417
- backgroundColor: string;
1418
- color: string;
1419
- hoverBackgroundColor: string;
1420
- }
1421
- /**
1422
- * Resolve a Chip variant to its themed background/foreground/hover colors.
1423
- *
1424
- * Status variants (success/error/warning/info) use the `main` surface with
1425
- * `contrastText` (typically white) so chips read as loud solid pills.
1426
- * `default` is neutral grey; `active` uses the brand-selected background.
1427
- */
1428
- declare function getChipVariantStyles(variant: ChipVariant, theme: Theme): ChipVariantStyles;
1429
-
1430
- type ChipTone = 'default' | 'onGradient';
1431
- interface ChipProps extends Omit<ChipProps$1, 'color' | 'variant'> {
1432
- variant?: ChipVariant;
1433
- /**
1434
- * Visual tone overlay. `onGradient` styles the chip to read on a dark
1435
- * gradient surface (white text, mono caps, translucent border + bg).
1436
- * Positioning is the consumer's job.
1437
- * @default 'default'
1438
- */
1439
- tone?: ChipTone;
1440
- }
1441
- declare const Chip: React__default.FC<ChipProps>;
1442
-
1443
- type StatusDotStatus = 'success' | 'error' | 'warning' | 'info' | 'primary' | 'neutral';
1444
- interface StatusDotProps extends Omit<React__default.HTMLAttributes<HTMLSpanElement>, 'role'> {
1445
- /** Which themed color to render. `neutral` uses a grey for idle/queued states. */
1446
- status: StatusDotStatus;
1447
- /** Diameter in pixels. @default 8 */
1448
- size?: number;
1449
- /**
1450
- * Pulse animation for in-progress states (e.g., a running run). Respects
1451
- * `prefers-reduced-motion` and falls back to a static dot.
1452
- */
1453
- pulse?: boolean;
1454
- /**
1455
- * When provided, the dot becomes an accessible image with this label. When
1456
- * omitted, the dot is marked `aria-hidden` — assume an adjacent element
1457
- * carries the status semantics.
1458
- */
1459
- 'aria-label'?: string;
1460
- }
1461
- /**
1462
- * StatusDot — a small colored circle indicating entity status.
1463
- *
1464
- * Use alongside a text label for a labeled status; use with `aria-label` to
1465
- * make the dot itself a standalone accessible indicator.
1466
- *
1467
- * @example
1468
- * ```tsx
1469
- * // Labeled context — the dot is decorative
1470
- * <>
1471
- * <StatusDot status="success" />
1472
- * <span>Succeeded</span>
1473
- * </>
1474
- *
1475
- * // Standalone — dot carries the status meaning
1476
- * <StatusDot status="info" pulse aria-label="Running" />
1477
- * ```
1478
- */
1479
- declare const StatusDot: React__default.FC<StatusDotProps>;
1480
-
1481
- interface CopyChipProps {
1482
- /** The text to display and copy to the clipboard. */
1483
- text: string;
1484
- /** Max width in pixels for the (ellipsized) text label. @default 260 */
1485
- maxWidth?: number;
1486
- /**
1487
- * Accessible label for the button. Defaults to `Copy <text>`. Override when
1488
- * the raw text would be unclear to a screen-reader user (e.g., long hex IDs).
1489
- */
1490
- 'aria-label'?: string;
1491
- /** Tooltip copy shown before clicking. @default 'Copy' */
1492
- tooltipLabel?: string;
1493
- /** Tooltip copy shown after a successful copy. @default 'Copied' */
1494
- tooltipCopiedLabel?: string;
1495
- /** Fires after the clipboard write succeeds. */
1496
- onCopy?: () => void;
1497
- }
1498
- /**
1499
- * CopyChip — compact inline copy-to-clipboard control.
1500
- *
1501
- * Shows a monospace text label with an adjacent copy icon that toggles to a
1502
- * check mark for a moment after a successful copy. Use in dense metadata
1503
- * rows where an `IDBlock` would be visually too heavy; use `IDBlock` when
1504
- * the identifier is the primary affordance on the surface and deserves a
1505
- * full boxed treatment with snackbar feedback.
1506
- *
1507
- * @example
1508
- * ```tsx
1509
- * <CopyChip text="run_abc123" />
1510
- * <CopyChip text={longHexId} aria-label="Copy workspace ID" onCopy={track} />
1511
- * ```
1512
- */
1513
- declare const CopyChip: React__default.FC<CopyChipProps>;
1514
-
1515
- /**
1516
- * Color variants for the RoleBadge component
1517
- */
1518
- type RoleBadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning';
1519
- /**
1520
- * Size variants for the RoleBadge component
1521
- */
1522
- type RoleBadgeSize = 'small' | 'medium';
1523
- /**
1524
- * RoleBadge component props
1525
- */
1526
- interface RoleBadgeProps extends Omit<ChipProps$1, 'label' | 'variant' | 'color' | 'size'> {
1527
- /**
1528
- * The text content to display in the badge
1529
- */
1530
- label: string;
1531
- /**
1532
- * The color theme of the badge
1533
- * @default 'primary'
1534
- */
1535
- color?: RoleBadgeColor;
1536
- /**
1537
- * The size of the badge
1538
- * @default 'small'
1539
- */
1540
- size?: RoleBadgeSize;
1541
- }
1542
- /**
1543
- * RoleBadge - Pill-shaped badge component for displaying roles or status labels
1544
- *
1545
- * A reusable badge component that extends MUI Chip with a pill-shaped outline style.
1546
- * Designed for displaying user roles, status indicators, or categorization labels.
1547
- *
1548
- * @example
1549
- * ```tsx
1550
- * // Basic usage
1551
- * <RoleBadge label="Manager" />
1552
- *
1553
- * // With color variants
1554
- * <RoleBadge label="Admin" color="error" />
1555
- * <RoleBadge label="Active" color="success" />
1556
- *
1557
- * // With size variants
1558
- * <RoleBadge label="Owner" size="medium" />
1559
- * ```
1560
- *
1561
- * @see Figma node 17-3595 for design specifications
1562
- */
1563
- declare const RoleBadge: React__default.FC<RoleBadgeProps>;
1564
-
1565
- /**
1566
- * IDBlock component props
1567
- */
1568
- interface IDBlockProps {
1569
- /**
1570
- * The identifier value to display and copy
1571
- */
1572
- id: string;
1573
- /**
1574
- * Label prefix text
1575
- * @default 'ID'
1576
- */
1577
- label?: string;
1578
- /**
1579
- * Entity type for accessibility (used in aria-label)
1580
- * @default 'entity'
1581
- */
1582
- entityType?: string;
1583
- /**
1584
- * Additional callback to execute after successful copy
1585
- */
1586
- onCopy?: () => void;
1587
- }
1588
- /**
1589
- * IDBlock - Read-only identifier display with integrated copy-to-clipboard button
1590
- *
1591
- * A component that displays an identifier (ID, account number, etc.) with a copy button.
1592
- * Provides user feedback via an inline Snackbar when copy succeeds or fails.
1593
- *
1594
- * @example
1595
- * ```tsx
1596
- * // Basic usage
1597
- * <IDBlock id="W1234567890" />
1598
- *
1599
- * // With custom label
1600
- * <IDBlock id="ACC-9876543" label="Account ID" entityType="account" />
1601
- *
1602
- * // With callback
1603
- * <IDBlock
1604
- * id="DEPLOY-12345"
1605
- * label="Deployment ID"
1606
- * entityType="deployment"
1607
- * onCopy={() => console.log('ID copied')}
1608
- * />
1609
- * ```
1610
- *
1611
- * @see Figma node 17-3596 for design specifications
1612
- */
1613
- declare const IDBlock: React__default.FC<IDBlockProps>;
1614
-
1615
- type TooltipProps = TooltipProps$1;
1616
- declare const Tooltip: React__default.FC<TooltipProps>;
1617
-
1618
- type ProgressVariant = 'linear' | 'circular';
1619
- interface ProgressProps {
1620
- variant?: ProgressVariant;
1621
- value?: number;
1622
- size?: number;
1623
- thickness?: number;
1624
- }
1625
- declare const Progress: React__default.FC<ProgressProps>;
1626
-
1627
- type AlertSeverity = 'success' | 'error' | 'warning' | 'info';
1628
- interface AlertProps extends Omit<AlertProps$1, 'severity'> {
1629
- severity?: AlertSeverity;
1630
- /**
1631
- * Title to display above the alert message
1632
- */
1633
- title?: string;
1634
- }
1635
- declare const Alert: React__default.FC<AlertProps>;
1636
-
1637
- interface SnackbarProps extends Omit<SnackbarProps$1, 'children'> {
1638
- /**
1639
- * Message to display in the snackbar
1640
- */
1641
- message?: string;
1642
- /**
1643
- * Severity of the alert inside snackbar
1644
- */
1645
- severity?: AlertSeverity;
1646
- /**
1647
- * Title to display in the alert (optional)
1648
- */
1649
- title?: string;
1650
- /**
1651
- * Alert variant
1652
- * @default 'filled'
1653
- */
1654
- variant?: 'filled' | 'standard' | 'outlined';
1655
- /**
1656
- * Callback when snackbar is closed
1657
- */
1658
- onClose?: () => void;
1659
- /**
1660
- * Children to render instead of message (allows custom content)
1661
- * Must be a ReactElement to match MuiSnackbar requirements
1662
- */
1663
- children?: React__default.ReactElement;
1664
- }
1665
- declare const Snackbar: React__default.FC<SnackbarProps>;
1666
-
1667
- interface EmptyStateProps {
1668
- title?: string;
1669
- description?: string;
1670
- icon?: React__default.ReactNode;
1671
- action?: React__default.ReactNode;
1672
- }
1673
- declare const EmptyState: React__default.FC<EmptyStateProps>;
1674
-
1675
- interface LoadingProps {
1676
- message?: string;
1677
- size?: number;
1678
- fullScreen?: boolean;
1679
- }
1680
- declare const Loading: React__default.FC<LoadingProps>;
1681
-
1682
- interface AppLoadingProps {
1683
- /**
1684
- * Loading message to display
1685
- * @default "Loading..."
1686
- */
1687
- message?: string;
1688
- /**
1689
- * Logo source URL or path
1690
- * @default "/icons/logo.png"
1691
- */
1692
- logo?: string;
1693
- /**
1694
- * Custom styles
1695
- */
1696
- sx?: any;
1697
- }
1698
- /**
1699
- * AppLoading component - Full-screen loading indicator with logo
1700
- *
1701
- * @example
1702
- * ```tsx
1703
- * <AppLoading message="Initializing application..." />
1704
- * ```
1705
- */
1706
- declare const AppLoading: React__default.FC<AppLoadingProps>;
1707
-
1708
- interface CircularProgressProps extends CircularProgressProps$1 {
1709
- /**
1710
- * Size of the progress indicator
1711
- * @default 40
1712
- */
1713
- size?: number | string;
1714
- /**
1715
- * Thickness of the progress indicator
1716
- * @default 4
1717
- */
1718
- thickness?: number;
1719
- }
1720
- /**
1721
- * CircularProgress component - wrapper around MUI CircularProgress
1722
- *
1723
- * @example
1724
- * ```tsx
1725
- * <CircularProgress size={40} thickness={4} />
1726
- * ```
1727
- */
1728
- declare const CircularProgress: React__default.FC<CircularProgressProps>;
1729
-
1730
- type LogoSize = 'large' | 'medium' | 'small';
1731
- type LogoProps = PropsWithChildren<{
1732
- icon?: ReactElement;
1733
- size?: LogoSize;
1734
- }>;
1735
- declare const Logo: ({ children, size, icon }: LogoProps) => react_jsx_runtime.JSX.Element;
1736
-
1737
- interface DialogProps extends Omit<DialogProps$1, 'title'> {
1738
- open: boolean;
1739
- title: ReactNode;
1740
- onClose: () => void;
1741
- onSubmit?: () => void;
1742
- submitLabel?: string;
1743
- cancelLabel?: string;
1744
- isLoading?: boolean;
1745
- disableSubmit?: boolean;
1746
- showActions?: boolean;
1747
- headerAction?: ReactNode;
1748
- fullWidth?: boolean;
1749
- maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1750
- children: ReactNode;
1751
- dividers?: boolean;
1752
- confirmBeforeClose?: boolean;
1753
- /**
1754
- * Custom actions to render instead of default actions
1755
- * If provided, showActions is ignored and custom actions are used
1756
- */
1757
- customActions?: ReactNode;
1758
- }
1759
- declare const Dialog: React__default.FC<DialogProps>;
1760
-
1761
- type DrawerWidthValue = number | string;
1762
- /**
1763
- * Per-breakpoint drawer widths. `xs` sets the base width (mobile-first);
1764
- * `sm`/`md`/`lg`/`xl` override at and above the named MUI breakpoint.
1765
- */
1766
- interface ResponsiveDrawerWidth {
1767
- xs?: DrawerWidthValue;
1768
- sm?: DrawerWidthValue;
1769
- md?: DrawerWidthValue;
1770
- lg?: DrawerWidthValue;
1771
- xl?: DrawerWidthValue;
1772
- }
1773
- type DrawerWidth = DrawerWidthValue | ResponsiveDrawerWidth;
1774
- /**
1775
- * Resolve a `width` prop into a style object usable by `styled()`.
1776
- *
1777
- * - Number/string input returns a single `{ width }` rule.
1778
- * - Object input produces a mobile-first base width (from `xs`, or
1779
- * `defaultWidth` if `xs` is missing) plus breakpoint-scoped overrides
1780
- * for each of sm/md/lg/xl that was provided.
1781
- */
1782
- declare function resolveDrawerWidth(width: DrawerWidth | undefined, theme: Theme, defaultWidth?: DrawerWidthValue): Record<string, unknown> & {
1783
- width?: DrawerWidthValue;
1784
- };
1785
-
1786
- interface DrawerProps extends Omit<DrawerProps$1, 'title'> {
1787
- /**
1788
- * Width of the drawer when open. Accepts a single value (number or CSS
1789
- * string like `"100vw"`) or a responsive object keyed by MUI breakpoint
1790
- * (`{ xs, sm, md, lg, xl }`). Responsive widths are mobile-first: `xs`
1791
- * is the base, each named breakpoint overrides at that breakpoint and up.
1792
- * @default 400 for temporary/persistent, 240 for permanent
1793
- */
1794
- width?: DrawerWidth;
1795
- /**
1796
- * Width of the drawer when collapsed (mini variant)
1797
- * @default 72
1798
- */
1799
- miniWidth?: number;
1800
- /**
1801
- * Whether the drawer is in collapsed/mini state
1802
- * @default false
1803
- */
1804
- collapsed?: boolean;
1805
- /**
1806
- * Title to display in the drawer header
1807
- */
1808
- title?: ReactNode;
1809
- /**
1810
- * Custom header content (replaces title if provided)
1811
- */
1812
- header?: ReactNode;
1813
- /**
1814
- * Show close button in header
1815
- * @default true for temporary variant, false for permanent
1816
- */
1817
- showCloseButton?: boolean;
1818
- /**
1819
- * Tab labels for tabbed drawer content
1820
- */
1821
- tabs?: string[];
1822
- /**
1823
- * Active tab index
1824
- */
1825
- activeTab?: number;
1826
- /**
1827
- * Callback when tab changes
1828
- */
1829
- onTabChange?: (index: number) => void;
1830
- /**
1831
- * Footer content (actions, buttons, etc.)
1832
- */
1833
- footer?: ReactNode;
1834
- /**
1835
- * Props for drawer content container
1836
- */
1837
- contentProps?: BoxProps;
1838
- /**
1839
- * Anchor position
1840
- * @default 'right'
1841
- */
1842
- anchor?: 'left' | 'right' | 'top' | 'bottom';
1843
- /**
1844
- * Top offset in pixels (e.g., for header + breadcrumbs)
1845
- * @default 0
1846
- */
1847
- topOffset?: number;
1848
- }
1849
- /**
1850
- * Drawer component for navigation drawers and side panels
1851
- * Can be used as a replacement for Dialog for better UX
1852
- *
1853
- * @example
1854
- * ```tsx
1855
- * // Simple drawer
1856
- * <Drawer open={true} variant="temporary" width={400} title="Settings" onClose={handleClose}>
1857
- * <Box p={2}>Content here</Box>
1858
- * </Drawer>
1859
- *
1860
- * // Drawer with tabs
1861
- * <Drawer
1862
- * open={true}
1863
- * variant="temporary"
1864
- * width={600}
1865
- * title="Edit Stream"
1866
- * tabs={['General', 'Rules', 'Settings']}
1867
- * activeTab={activeTab}
1868
- * onTabChange={setActiveTab}
1869
- * onClose={handleClose}
1870
- * >
1871
- * <Box p={2}>{tabContent}</Box>
1872
- * </Drawer>
1873
- * ```
1874
- */
1875
- declare const Drawer: React__default.FC<DrawerProps>;
1876
-
1877
- interface MetaFieldProps {
1878
- /** Uppercase eyebrow label displayed above the value. */
1879
- label: string;
1880
- /** Value to display. String values get a `title` attribute for overflow tooltips. */
1881
- value: ReactNode;
1882
- /** Render the value in a monospace font (for IDs, durations, paths). */
1883
- mono?: boolean;
1884
- /**
1885
- * Override the auto-generated `title` attribute. Useful when the value is a
1886
- * ReactNode but you still want a hover tooltip, or to customize the string
1887
- * shown on hover.
1888
- */
1889
- title?: string;
1890
- }
1891
- /**
1892
- * MetaField — a compact label-over-value column for metadata lists.
1893
- *
1894
- * Wraps its content in a min-width-0 flex column so it collapses cleanly
1895
- * inside responsive grids. The value truncates with an ellipsis and shows
1896
- * the full text on hover (for string values by default).
1897
- *
1898
- * @example
1899
- * ```tsx
1900
- * <MetaField label="Run ID" value="run_abc123" mono />
1901
- * <MetaField label="Status" value={<StatusBadge status="ok" />} />
1902
- * ```
1903
- */
1904
- declare const MetaField: React__default.FC<MetaFieldProps>;
1905
-
1906
- interface ScrollableRowProps {
1907
- /** Row content. Rendered in a horizontally-scrolling flex container. */
1908
- children: ReactNode;
1909
- /** Accessible label for the left chevron. @default 'Scroll left' */
1910
- leftLabel?: string;
1911
- /** Accessible label for the right chevron. @default 'Scroll right' */
1912
- rightLabel?: string;
1913
- /**
1914
- * Minimum nudge distance (px) when a chevron is clicked. The component
1915
- * scrolls by max(minNudge, clientWidth * nudgeFraction). @default 160
1916
- */
1917
- minNudge?: number;
1918
- /** Fraction of the viewport scrolled per chevron click. @default 0.6 */
1919
- nudgeFraction?: number;
1920
- }
1921
- /**
1922
- * ScrollableRow — a horizontally-scrolling container that reveals chevron
1923
- * buttons at the left and right edges only when content actually overflows.
1924
- *
1925
- * Works with any children (chips, cards, pills). Uses a `ResizeObserver` on
1926
- * both the scroller and its children plus a `MutationObserver` to catch
1927
- * children being added/removed, so the chevrons stay in sync with real
1928
- * layout.
1929
- */
1930
- declare const ScrollableRow: React__default.FC<ScrollableRowProps>;
1931
-
1932
- interface SectionRowProps {
1933
- /** Section title (e.g. "Published by alice"). Rendered as an h2-equivalent. */
1934
- title: ReactNode;
1935
- /** Optional sublabel below the title (e.g. "3 agents"). */
1936
- subtitle?: ReactNode;
1937
- /** Optional right-aligned slot in the header (e.g. a "See all →" link). */
1938
- action?: ReactNode;
1939
- /** Accessible labels for the scroll chevrons. */
1940
- leftLabel?: string;
1941
- rightLabel?: string;
1942
- /** Tiles / cards rendered inside the horizontally-scrolling track. */
1943
- children: ReactNode;
1944
- }
1945
- /**
1946
- * SectionRow — header (title + subtitle + right-side action) on top of a
1947
- * ScrollableRow track. Use for "category row" or "publisher row" layouts in
1948
- * marketplace / library / dashboard contexts. The scroll mechanics and edge
1949
- * chevrons come from ScrollableRow.
1950
- */
1951
- declare function SectionRow({ title, subtitle, action, leftLabel, rightLabel, children, }: SectionRowProps): react_jsx_runtime.JSX.Element;
1952
-
1953
- interface CarouselProps<T> {
1954
- /** Slide data. Each entry is passed to `renderSlide`. */
1955
- slides: T[];
1956
- /** Render function for an individual slide. */
1957
- renderSlide: (item: T, index: number) => ReactNode;
1958
- /**
1959
- * Stable per-slide React key. Always set this when `slides` can be reordered
1960
- * or filtered; otherwise React will reuse the wrong slide's internal state
1961
- * across renders. Defaults to the slide's array index when omitted.
1962
- */
1963
- getKey?: (item: T, index: number) => Key;
1964
- /** Slides visible in the viewport. @default 1 */
1965
- slidesPerView?: number;
1966
- /** Auto-advance every `autoplayDelayMs` while not hovered. @default true */
1967
- autoplay?: boolean;
1968
- /** Autoplay tick in milliseconds. @default 5000 */
1969
- autoplayDelayMs?: number;
1970
- /** Show dot indicators when more than one slide. @default true */
1971
- showDots?: boolean;
1972
- /** Show the `01 / 03`-style counter when more than one slide. @default true */
1973
- showCounter?: boolean;
1974
- /** Show prev/next chevrons when more than one slide. @default true */
1975
- showArrows?: boolean;
1976
- /** Pause autoplay while the pointer is over the carousel. @default true */
1977
- pauseOnHover?: boolean;
1978
- /** Accessible label for the surrounding region. */
1979
- ariaLabel?: string;
1980
- /** Fires with the new index whenever embla selects a slide. */
1981
- onSelect?: (index: number) => void;
1982
- /** Override the IconButton sx for the prev/next arrows. */
1983
- arrowSx?: SxProps<Theme>;
1984
- /** Override the dot color (inactive). Accepts any CSS color string. */
1985
- dotColor?: string;
1986
- /** Override the active dot color. Accepts any CSS color string. */
1987
- dotActiveColor?: string;
1988
- /** Escape hatch for advanced embla options. Most consumers don't need this. */
1989
- emblaOptions?: EmblaOptionsType;
1990
- }
1991
- /**
1992
- * Carousel — embla-carousel-based slide deck with autoplay, dots, counter,
1993
- * prev/next arrows and pause-on-hover. Generic over slide payload type; the
1994
- * caller decides the slide markup via `renderSlide`.
1995
- */
1996
- declare function Carousel<T>({ slides, renderSlide, getKey, slidesPerView, autoplay, autoplayDelayMs, showDots, showCounter, showArrows, pauseOnHover, ariaLabel, onSelect, arrowSx, dotColor, dotActiveColor, emblaOptions, }: CarouselProps<T>): react_jsx_runtime.JSX.Element | null;
1997
-
1998
- /** Number of distinct gradient palettes. Useful for sizing slide cycles deterministically. */
1999
- declare const GRADIENT_PALETTE_COUNT: 6;
2000
- interface GradientSurfaceProps {
2001
- /**
2002
- * Which palette to use. Any integer (positive or negative) — the value is
2003
- * wrapped modulo the palette count, so callers can pass their own counter
2004
- * (`rowIndex + tileIndex`, slide index, etc.) without worrying about range.
2005
- */
2006
- index: number;
2007
- /** Optional body rendered over the gradient + blobs. */
2008
- children?: ReactNode;
2009
- /** Style overrides on the surface. */
2010
- sx?: SxProps<Theme>;
2011
- }
2012
- /**
2013
- * GradientSurface — a positioned, gradient-painted surface with two soft blob
2014
- * accents. Owns the brand palette cycle so consumers don't redeclare gradient
2015
- * colors per route. Pair with absolute-positioned children for hero artwork.
2016
- */
2017
- declare function GradientSurface({ index, children, sx }: GradientSurfaceProps): react_jsx_runtime.JSX.Element;
2018
-
2019
- interface DefinitionRowProps {
2020
- /** Optional leading icon (e.g. a scope or category glyph). */
2021
- icon?: ReactNode;
2022
- /** Primary label rendered on the left side. */
2023
- label: ReactNode;
2024
- /** Optional secondary line under the label (e.g. type, scope path). */
2025
- sublabel?: ReactNode;
2026
- /** Primary right-side content (e.g. `read`, `optional`). */
2027
- value?: ReactNode;
2028
- /** Secondary right-side line under the value (e.g. constraint, default). */
2029
- hint?: ReactNode;
2030
- /** Reduce vertical padding for compact lists. */
2031
- dense?: boolean;
2032
- /** Draw a bottom divider. The last row in a list never draws. @default true */
2033
- divider?: boolean;
2034
- }
2035
- /**
2036
- * DefinitionRow — `icon · label / sublabel … value / hint` row primitive
2037
- * for description-list style content (scope tables, settings, key/value
2038
- * panels).
2039
- */
2040
- declare function DefinitionRow({ icon, label, sublabel, value, hint, dense, divider, }: DefinitionRowProps): react_jsx_runtime.JSX.Element;
2041
-
2042
- type PanelDialogWidth = 'sm' | 'md' | 'lg' | 'xl';
2043
- type PanelDialogSide = 'right' | 'center';
2044
- type PanelDialogTransition = 'fade' | 'slide-up' | 'slide-left';
2045
- interface PanelDialogProps {
2046
- /** Controls visibility. */
2047
- open: boolean;
2048
- /** Fires when the user closes (close button, backdrop click, ESC). */
2049
- onClose: () => void;
2050
- /** Optional title rendered in the header. Used as the dialog accessible name when a string. */
2051
- title?: ReactNode;
2052
- /** Optional right-aligned slot in the header (e.g. install + share buttons). */
2053
- headerActions?: ReactNode;
2054
- /** Panel width. @default 'md' */
2055
- width?: PanelDialogWidth;
2056
- /** Where the panel docks. `right` slides in from the right edge; `center` is a regular centered panel. @default 'right' */
2057
- side?: PanelDialogSide;
2058
- /** Override the accessible name when `title` is not a string. */
2059
- ariaLabel?: string;
2060
- /**
2061
- * Drop the header bar entirely (no title row, no border). The close button
2062
- * still renders but floats absolute over the top-right of the body. Use when
2063
- * the body content has its own hero / chrome.
2064
- */
2065
- hideHeader?: boolean;
2066
- /** Style overrides on the dialog paper (border-radius, shadow, width tweaks). */
2067
- paperSx?: SxProps<Theme>;
2068
- /** Style overrides on the modal backdrop (e.g. tint, blur). */
2069
- backdropSx?: SxProps<Theme>;
2070
- /**
2071
- * Entry transition. Defaults to `slide-left` for `side='right'` and `fade`
2072
- * for `side='center'`.
2073
- */
2074
- transition?: PanelDialogTransition;
2075
- /** Body content. */
2076
- children: ReactNode;
2077
- }
2078
- /**
2079
- * PanelDialog — a right-anchored (or centered) slide-in panel for detail
2080
- * views, inspectors, and side sheets. Built on MUI Dialog; focus trap and
2081
- * ESC-to-close come from MUI. Use Dialog for centered modal-with-Save/Cancel.
2082
- */
2083
- declare function PanelDialog({ open, onClose, title, headerActions, width, side, ariaLabel, hideHeader, paperSx, backdropSx, transition, children, }: PanelDialogProps): react_jsx_runtime.JSX.Element;
2084
-
2085
- interface SplitDialogContentProps {
2086
- left: React__default.ReactNode;
2087
- right: React__default.ReactNode;
2088
- /** Width of the right (aside) column in px. @default 320 */
2089
- rightWidth?: number;
2090
- /** Viewport breakpoint (px) below which the layout collapses to one column. @default 860 */
2091
- collapseBelow?: number;
2092
- sx?: SxProps<Theme>;
2093
- }
2094
- /**
2095
- * Two-column dialog body used by detail / info modals: primary content on
2096
- * the left, sticky meta panel on the right. Collapses to a single column on
2097
- * narrow viewports.
2098
- *
2099
- * Compose inside a `<PanelDialog>`:
2100
- * <PanelDialog ...>
2101
- * <SplitDialogContent left={...} right={...} />
2102
- * </PanelDialog>
2103
- */
2104
- declare const SplitDialogContent: React__default.FC<SplitDialogContentProps>;
2105
-
2106
- type CardMediaProps = CardMediaProps$1;
2107
- declare const CardMedia: React__default.FC<CardMediaProps>;
2108
- type CardVariant = 'standard' | 'tinted' | 'outlined';
2109
- interface CardProps extends Omit<CardProps$1, 'variant'> {
2110
- /** Visual treatment. @default 'standard' */
2111
- variant?: CardVariant;
2112
- hoverable?: boolean;
2113
- /**
2114
- * Opt the card into being a real interactive element. When combined with
2115
- * `onClick`, the root renders via MUI ButtonBase — focusable button,
2116
- * Enter/Space activation, `:focus-visible` ring. When `clickable` is set
2117
- * without `onClick`, only the pointer cursor changes (back-compat).
2118
- *
2119
- * `<Card onClick={...}>` WITHOUT `clickable` keeps a `<div>` root and just
2120
- * forwards the click handler, so consumers using onClick for analytics or
2121
- * non-clickable side effects are not silently turned into buttons.
2122
- */
2123
- clickable?: boolean;
2124
- }
2125
- declare const Card: React__default.FC<CardProps>;
2126
- declare const CardContent: React__default.FC<CardContentProps>;
2127
- declare const CardHeader: React__default.FC<CardHeaderProps>;
2128
- declare const CardActions: React__default.FC<CardActionsProps>;
2129
-
2130
- type ListProps = ListProps$1;
2131
- declare const List: React__default.FC<ListProps>;
2132
- interface ListItemProps extends ListItemProps$1 {
2133
- primary?: React__default.ReactNode;
2134
- secondary?: React__default.ReactNode;
2135
- icon?: React__default.ReactNode;
2136
- action?: React__default.ReactNode;
2137
- hoverable?: boolean;
2138
- }
2139
- declare const ListItem: React__default.FC<ListItemProps>;
2140
-
2141
- interface AvatarProps extends AvatarProps$1 {
2142
- size?: 'small' | 'medium' | 'large' | number;
2143
- }
2144
- declare const Avatar: React__default.FC<AvatarProps>;
2145
-
2146
- interface TableProps extends TableProps$1 {
2147
- stickyHeader?: boolean;
2148
- }
2149
- declare const Table: React__default.FC<TableProps>;
2150
- interface TableHeaderProps {
2151
- columns: Array<{
2152
- id: string;
2153
- label: string;
2154
- sortable?: boolean;
2155
- align?: 'left' | 'center' | 'right';
2156
- }>;
2157
- orderBy?: string;
2158
- order?: 'asc' | 'desc';
2159
- onSort?: (columnId: string) => void;
2160
- }
2161
- declare const TableHeader: React__default.FC<TableHeaderProps>;
2162
-
2163
- interface BreadcrumbItem {
2164
- label: string;
2165
- href?: string;
2166
- onClick?: () => void;
2167
- }
2168
- interface BreadcrumbsProps extends Omit<BreadcrumbsProps$1, 'children'> {
2169
- items: BreadcrumbItem[];
2170
- }
2171
- declare const Breadcrumbs: React__default.FC<BreadcrumbsProps>;
2172
-
2173
- interface AccordionProps extends Omit<AccordionProps$1, 'children'> {
2174
- title: string;
2175
- children: NonNullable<React__default.ReactNode>;
2176
- defaultExpanded?: boolean;
2177
- }
2178
- declare const Accordion: React__default.FC<AccordionProps>;
2179
-
2180
- interface PaperProps extends PaperProps$1 {
2181
- variant?: 'elevation' | 'outlined';
2182
- }
2183
- declare const Paper: React__default.FC<PaperProps>;
2184
-
2185
- interface DividerProps extends DividerProps$1 {
2186
- variant?: 'fullWidth' | 'inset' | 'middle';
2187
- }
2188
- declare const Divider: React__default.FC<DividerProps>;
2189
-
2190
- interface LinkProps extends LinkProps$1 {
2191
- underline?: 'none' | 'hover' | 'always';
2192
- }
2193
- declare const Link: React__default.FC<LinkProps>;
2194
-
2195
- interface AppBarProps extends AppBarProps$1 {
2196
- height?: number;
2197
- }
2198
- declare const AppBar: React__default.FC<AppBarProps>;
2199
-
2200
- interface CollapseProps extends CollapseProps$1 {
2201
- /**
2202
- * If `true`, the component will transition in
2203
- */
2204
- in?: boolean;
2205
- /**
2206
- * The content to collapse
2207
- */
2208
- children?: React__default.ReactNode;
2209
- }
2210
- /**
2211
- * Collapse component - provides a collapse animation
2212
- *
2213
- * @example
2214
- * ```tsx
2215
- * <Collapse in={open}>
2216
- * <Box>Collapsible content</Box>
2217
- * </Collapse>
2218
- * ```
2219
- */
2220
- declare const Collapse: React__default.FC<CollapseProps>;
2221
-
2222
- /**
2223
- * Primary action configuration for EntityHeader
2224
- */
2225
- interface PrimaryAction {
2226
- /**
2227
- * Button label text
2228
- */
2229
- label: string;
2230
- /**
2231
- * Optional count to display as "Label (N)"
2232
- */
2233
- count?: number;
2234
- /**
2235
- * Optional leading icon
2236
- */
2237
- icon?: React__default.ReactNode;
2238
- /**
2239
- * Click handler for the button
2240
- */
2241
- onClick?: () => void;
2242
- }
2243
- /**
2244
- * EntityHeader component props
2245
- */
2246
- interface EntityHeaderProps {
2247
- /**
2248
- * Primary title text (e.g., entity name)
2249
- * @required
2250
- */
2251
- title: string;
2252
- /**
2253
- * Secondary descriptive text below title
2254
- */
2255
- subtitle?: string;
2256
- /**
2257
- * Role or status label - displays as RoleBadge pill
2258
- */
2259
- role?: string;
2260
- /**
2261
- * Entity identifier - displays as IDBlock with copy action
2262
- */
2263
- id?: string;
2264
- /**
2265
- * Main action button configuration
2266
- */
2267
- primaryAction?: PrimaryAction;
2268
- /**
2269
- * Additional content rendered before the primary action button.
2270
- * Accepts any ReactNode (buttons, dropdowns, etc.).
2271
- */
2272
- startActions?: React__default.ReactNode;
2273
- /**
2274
- * Additional content rendered after the primary action button
2275
- * but before the more-options icon button.
2276
- * Accepts any ReactNode (buttons, dropdowns, etc.).
2277
- */
2278
- endActions?: React__default.ReactNode;
2279
- /**
2280
- * Callback when ID is copied (internal copy + this callback)
2281
- */
2282
- onCopyId?: () => void;
2283
- /**
2284
- * Callback when more options button clicked (receives event for anchor positioning)
2285
- */
2286
- onMoreOptions?: (event: React__default.MouseEvent<HTMLElement>) => void;
2287
- /**
2288
- * HTML heading level for the title element
2289
- * @default 'h2'
2290
- */
2291
- headingLevel?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
2292
- /**
2293
- * Show bottom divider line
2294
- * @default true
2295
- */
2296
- divider?: boolean;
2297
- }
2298
- /**
2299
- * EntityHeader - Composite UI component for entity (workspace, account, etc.) headers
2300
- *
2301
- * Displays an entity with title, optional subtitle, role badge, ID with copy action,
2302
- * primary action button, and more options control. Matches Figma node 15-1258 specifications.
2303
- *
2304
- * @example
2305
- * ```tsx
2306
- * // Full example with all props
2307
- * <EntityHeader
2308
- * title="Game Co. WF 1769936170928"
2309
- * subtitle="Gaming Demo Account"
2310
- * role="Manager"
2311
- * id="W1234567890"
2312
- * primaryAction={{
2313
- * label: 'Members',
2314
- * count: 5,
2315
- * icon: <AddCircleIcon />,
2316
- * onClick: () => console.log('Open members')
2317
- * }}
2318
- * onCopyId={() => console.log('ID copied')}
2319
- * onMoreOptions={(e) => setAnchorEl(e.currentTarget)}
2320
- * />
2321
- *
2322
- * // Minimal example
2323
- * <EntityHeader title="Simple Entity" />
2324
- * ```
2325
- *
2326
- * @see Figma node 15-1258 for design specifications
2327
- */
2328
- declare const EntityHeader: React__default.FC<EntityHeaderProps>;
2329
-
2330
- type DeploymentEntityType = 'workspace' | 'stream' | 'deployment' | 'engagement' | 'agent';
2331
- type DeploymentStatusIndicator = 'normal' | 'warning' | 'error' | 'disabled' | null;
2332
- interface DeploymentCardAction {
2333
- id: string;
2334
- label: string;
2335
- icon?: React__default.ReactNode;
2336
- onClick?: () => void;
2337
- highlight?: boolean;
2338
- outlined?: boolean;
2339
- }
2340
- interface DeploymentDashboardCardProps {
2341
- /** Entity type: drives chip color and icon (Figma 15-1725, 15-1276) */
2342
- entityType: DeploymentEntityType;
2343
- /** Primary title */
2344
- title: string;
2345
- /** Display id; when present shows "ID: {id}" with copy action */
2346
- id?: string;
2347
- /** Shown as "Created: …" */
2348
- createdAt?: string;
2349
- /** Shown as "Last Updated: …" */
2350
- updatedAt?: string;
2351
- /** Only for entityType === 'deployment'; shows Capacity label, progress bar, "X%" */
2352
- capacity?: number;
2353
- /** Action buttons/chips rendered inline on the right */
2354
- actions?: DeploymentCardAction[];
2355
- /** Status dot: green (normal), amber (warning), red (error), white/dim (disabled) */
2356
- statusIndicator?: DeploymentStatusIndicator;
2357
- /** Whether to show expand/collapse chevron on the left */
2358
- expandable?: boolean;
2359
- /** Controlled expanded state */
2360
- expanded?: boolean;
2361
- /** Called when chevron is clicked */
2362
- onExpandToggle?: () => void;
2363
- /** When copy ID is clicked */
2364
- onCopyId?: () => void;
2365
- /** Optional className */
2366
- className?: string;
2367
- /** Child content rendered inside the card border (used by tree to nest children) */
2368
- children?: React__default.ReactNode;
2369
- }
2370
- declare const DeploymentDashboardCard: React__default.FC<DeploymentDashboardCardProps>;
2371
-
2372
- /**
2373
- * Describes a single item inside {@link DeploymentEntityContextMenu}.
2374
- *
2375
- * Items can be action rows (icon + label), toggle rows (switch + label),
2376
- * or visual dividers. Use the pre-built `contextMenuItems` factories
2377
- * for standard deployment-entity actions.
2378
- *
2379
- * @see Figma 11-1102
2380
- */
2381
- interface ContextMenuItem {
2382
- /** Unique key used for React reconciliation */
2383
- id: string;
2384
- /** Display label shown next to the icon */
2385
- label: string;
2386
- /** Optional leading icon (24 × 24) */
2387
- icon?: React__default.ReactNode;
2388
- /** Click handler — called when an action item is selected */
2389
- onClick?: () => void;
2390
- /**
2391
- * Item variant:
2392
- * - `'action'` (default) — clickable row with icon + label
2393
- * - `'toggle'` — switch on left + label, controlled by `enableChecked` / `onEnableChange`
2394
- * - `'divider'` — horizontal separator (label is ignored)
2395
- */
2396
- type?: 'action' | 'toggle' | 'divider';
2397
- /**
2398
- * When `true` the item renders with a blue highlight background
2399
- * (Figma blue-50 / blue-100 tokens). Used for the "Agent Flow Visualization" row.
2400
- * @default false
2401
- */
2402
- highlighted?: boolean;
2403
- }
2404
- /** Pre-built item factories for common deployment entity actions (Figma 11-1102) */
2405
- declare const contextMenuItems: {
2406
- /** Add Engagement action (Add Circle icon) */
2407
- readonly addEngagement: (onClick: () => void) => ContextMenuItem;
2408
- /** Add Agent action (Add Circle icon) */
2409
- readonly addAgent: (onClick: () => void) => ContextMenuItem;
2410
- /** Add Stream action (Add Circle icon) */
2411
- readonly addStream: (onClick: () => void) => ContextMenuItem;
2412
- /** Edit action (Pen / Edit icon) */
2413
- readonly edit: (onClick: () => void) => ContextMenuItem;
2414
- /** Copy ID action (Copy icon) */
2415
- readonly copyId: (onClick: () => void) => ContextMenuItem;
2416
- /** Agent Flow Visualization — highlighted action (SmartToy icon) */
2417
- readonly agentFlowVisualization: (onClick: () => void) => ContextMenuItem;
2418
- /** View Logs action (Document / Description icon) */
2419
- readonly viewLogs: (onClick: () => void) => ContextMenuItem;
2420
- /** Horizontal divider between sections */
2421
- readonly divider: () => ContextMenuItem;
2422
- /** Enable toggle row (switch on left + label) */
2423
- readonly enable: () => ContextMenuItem;
2424
- /** Settings action (Settings / Gear icon) */
2425
- readonly settings: (onClick: () => void) => ContextMenuItem;
2426
- };
2427
-
2428
- interface DeploymentEntityContextMenuProps {
2429
- /** Controlled open state */
2430
- open: boolean;
2431
- /** Anchor element for menu position */
2432
- anchorEl: HTMLElement | null;
2433
- /** Callback when the menu closes */
2434
- onClose: () => void;
2435
- /** Menu items to render (use contextMenuItems helpers to build) */
2436
- items: ContextMenuItem[];
2437
- /** Whether to show an "Enable" row with toggle at the bottom (legacy — prefer inline toggle item) */
2438
- enableToggle?: boolean;
2439
- /** Toggle checked state */
2440
- enableChecked?: boolean;
2441
- /** Toggle callback */
2442
- onEnableChange?: (checked: boolean) => void;
2443
- }
2444
- /**
2445
- * Floating context menu for deployment entities.
2446
- *
2447
- * Use the `contextMenuItems` factory to compose your menu. Supports action items,
2448
- * dividers, toggle rows, and highlighted (active-state) items.
2449
- *
2450
- * @see {@link https://www.figma.com/design/xky11VbkkFcgZLwZE8BdCN/ROB?node-id=11-1102 Figma 11-1102}
2451
- */
2452
- declare const DeploymentEntityContextMenu: React__default.FC<DeploymentEntityContextMenuProps>;
2453
-
2454
- interface DeploymentTreeNode {
2455
- id: string;
2456
- entityType: DeploymentEntityType;
2457
- title: string;
2458
- idDisplay?: string;
2459
- createdAt?: string;
2460
- updatedAt?: string;
2461
- capacity?: number;
2462
- actions?: DeploymentCardAction[];
2463
- statusIndicator?: DeploymentStatusIndicator;
2464
- children?: DeploymentTreeNode[];
2465
- expanded?: boolean;
2466
- }
2467
- interface DeploymentDashboardTreeProps {
2468
- /** Tree of entities */
2469
- nodes: DeploymentTreeNode[];
2470
- /** When a row's expand is toggled */
2471
- onExpandToggle?: (nodeId: string) => void;
2472
- /** When a card's copy-ID button is clicked */
2473
- onCopyId?: (nodeId: string) => void;
2474
- /** Override row content; default: render DeploymentDashboardCard from node data */
2475
- renderCard?: (node: DeploymentTreeNode) => React__default.ReactNode;
2476
- }
2477
- declare const DeploymentDashboardTree: React__default.FC<DeploymentDashboardTreeProps>;
2478
-
2479
- /**
2480
- * Backdrop/background panel for the deployment list (Figma 15-1325).
2481
- * Wraps the deployment tree or list in a rounded, light surface with a subtle border
2482
- * so the list has a clear visual container.
2483
- */
2484
- interface DeploymentDashboardPanelProps {
2485
- /** Content (e.g. DeploymentDashboardTree or a list of DeploymentDashboardCards) */
2486
- children: React__default.ReactNode;
2487
- /** Optional className */
2488
- className?: string;
2489
- /** Optional padding override; default uses theme spacing */
2490
- padding?: number | string;
2491
- }
2492
- declare const DeploymentDashboardPanel: React__default.FC<DeploymentDashboardPanelProps>;
2493
-
2494
- /** All supported workflow node types */
2495
- type WorkflowNodeType = 'start' | 'input' | 'stream' | 'rafts' | 'cubbies' | 'events' | 'trigger' | 'action' | 'aiModel' | 'aiAgent' | 'condition' | 'output' | 'end' | 'parallel' | 'merge';
2496
- interface WorkflowNodeProps extends Omit<PaperProps$1, 'title'> {
2497
- /** The workflow node type — drives accent color, default icon, and badge label */
2498
- nodeType: WorkflowNodeType;
2499
- /** Primary title displayed in the node */
2500
- title: string;
2501
- /** Optional description text below the title */
2502
- description?: string;
2503
- /** Override the default icon for this node type */
2504
- icon?: React__default.ReactNode;
2505
- /** Override the default badge label for this node type */
2506
- badgeLabel?: string;
2507
- /** Whether the node is currently selected (highlights border with accent color) */
2508
- selected?: boolean;
2509
- /** Optional className */
2510
- className?: string;
2511
- /** Renders left/right connector dots to match the design spec */
2512
- showSideDots?: boolean;
2513
- }
2514
- /** Human-readable labels for each node type (matches Figma badge text) */
2515
- declare const WORKFLOW_NODE_LABELS: Record<WorkflowNodeType, string>;
2516
- /** Shared elevation shadow for workflow node cards and connector handles (Figma 277-8244) */
2517
- declare const WORKFLOW_NODE_SHADOW = "0px 1px 3px rgba(0, 0, 0, 0.1), 0px 1px 2px rgba(0, 0, 0, 0.1)";
2518
- /**
2519
- * WorkflowNode — visual card for a workflow editor node.
2520
- *
2521
- * Renders a card with a colored left border strip, title, optional description,
2522
- * and a type badge/chip. Designed to integrate with FlowEditor (ReactFlow)
2523
- * via the WorkflowNodeHandle wrapper.
2524
- *
2525
- * @example
2526
- * ```tsx
2527
- * <WorkflowNode
2528
- * nodeType="trigger"
2529
- * title="HTTP Trigger"
2530
- * description="Listens for incoming webhook calls"
2531
- * />
2532
- * ```
2533
- */
2534
- declare const WorkflowNode: React__default.FC<WorkflowNodeProps>;
2535
-
2536
- interface WorkflowTopBarProps extends Omit<BoxProps$1, 'title'> {
2537
- /** Heading shown at the left side of the bar. */
2538
- title?: string;
2539
- /** Job identifier displayed in the Job ID field. */
2540
- executionId: string;
2541
- /** Label shown above the job ID input. Defaults to "Job ID". */
2542
- executionIdLabel?: string;
2543
- /** Called when the job ID value changes. */
2544
- onExecutionIdChange?: (value: string) => void;
2545
- /** Called when the job ID clear action is pressed. */
2546
- onClearExecutionId?: () => void;
2547
- /** Submit button label. */
2548
- submitLabel?: string;
2549
- /** Called when submit is pressed. */
2550
- onSubmit?: () => void;
2551
- /** Inspector toggle button label. */
2552
- inspectorLabel?: string;
2553
- /** Called when inspector toggle is pressed. */
2554
- onInspectorToggle?: () => void;
2555
- /** Called when close is pressed. */
2556
- onClose?: () => void;
2557
- /** Hides/shows the inspector toggle button. */
2558
- showInspectorToggle?: boolean;
2559
- /** Hides/shows the close icon action. */
2560
- showCloseButton?: boolean;
2561
- }
2562
- /**
2563
- * WorkflowTopBar
2564
- *
2565
- * Top chrome bar for workflow canvas screens based on Figma 277:8006.
2566
- */
2567
- declare const WorkflowTopBar: React__default.FC<WorkflowTopBarProps>;
2568
-
2569
- interface WorkflowSideInspectorProps extends PaperProps$1 {
2570
- /** Controls panel visibility for simple layouts. */
2571
- open?: boolean;
2572
- /** Header title. */
2573
- title?: string;
2574
- /** Selected node headline. */
2575
- nodeTitle?: string;
2576
- /** Selected node description. */
2577
- nodeDescription?: string;
2578
- /** Selected node type for the colored tag. */
2579
- nodeType?: WorkflowNodeType;
2580
- /** Input field value shown in details section. */
2581
- inputValue?: string;
2582
- /** Output field value shown in details section. */
2583
- outputValue?: string;
2584
- /** Cubby ID value shown in copy button. */
2585
- cubbyId?: string;
2586
- /** Timestamp value shown in metadata section. */
2587
- timestamp?: string;
2588
- /** Duration value shown in metadata section. */
2589
- duration?: string;
2590
- /** Whether to show the Input field in the details section. Defaults to true. */
2591
- showInput?: boolean;
2592
- /** Whether to show the Output field in the details section. Defaults to true. */
2593
- showOutput?: boolean;
2594
- /** Whether to show the Timestamp field in the metadata section. Defaults to true. */
2595
- showTimestamp?: boolean;
2596
- /** Whether to show the Duration field in the metadata section. Defaults to true. */
2597
- showDuration?: boolean;
2598
- /** Bottom CTA label. Set to `undefined` or `null` to hide the button. */
2599
- actionLabel?: string | null;
2600
- /** Called when close button is pressed. */
2601
- onClose?: () => void;
2602
- /** Called when cubby copy button is pressed. */
2603
- onCopyCubbyId?: () => void;
2604
- /** Called when bottom CTA is pressed. */
2605
- onAction?: () => void;
2606
- }
2607
- /**
2608
- * WorkflowSideInspector
2609
- *
2610
- * Right-side inspector panel based on Figma 277:8100.
2611
- */
2612
- declare const WorkflowSideInspector: React__default.FC<WorkflowSideInspectorProps>;
2613
-
2614
- interface WorkflowTimeBarProps extends BoxProps$1 {
2615
- /** Elapsed time label shown above the progress line. */
2616
- elapsedTime?: string;
2617
- /** Progress from 0 to 100. */
2618
- progress?: number;
2619
- /** Current step index for the step indicator. */
2620
- currentStep?: number;
2621
- /** Total number of steps for the step indicator. */
2622
- totalSteps?: number;
2623
- /** Available speed options (e.g. 0.5x, 1x, 2x). */
2624
- speedOptions?: number[];
2625
- /** Currently selected speed value. */
2626
- selectedSpeed?: number;
2627
- /** Called when stop is pressed. */
2628
- onStop?: () => void;
2629
- /** Called when previous step is pressed. */
2630
- onPreviousStep?: () => void;
2631
- /** Called when next step is pressed. */
2632
- onNextStep?: () => void;
2633
- /** Called when a speed option is selected. */
2634
- onSpeedChange?: (speed: number) => void;
2635
- /** Called when refresh is pressed. */
2636
- onReset?: () => void;
2637
- }
2638
- /**
2639
- * WorkflowTimeBar
2640
- *
2641
- * Bottom chrome bar for workflow playback controls based on Figma 277:8087.
2642
- */
2643
- declare const WorkflowTimeBar: React__default.FC<WorkflowTimeBarProps>;
2644
-
2645
- declare const ActivityAppIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2646
-
2647
- declare const LeftArrowIcon: (props: SvgIconProps) => react_jsx_runtime.JSX.Element;
2648
-
2649
- declare const RightArrowIcon: (props: SvgIconProps) => react_jsx_runtime.JSX.Element;
2650
-
2651
- declare const AvatarIcon: (props: SvgIconProps) => react_jsx_runtime.JSX.Element;
2652
-
2653
- declare const BarTrackingIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2654
-
2655
- declare const CereIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2656
-
2657
- declare const ClockIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2658
-
2659
- declare const CloudFlashIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2660
-
2661
- declare const DecentralizedServerIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2662
-
2663
- declare const DiscordIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2664
-
2665
- declare const DownloadIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2666
-
2667
- declare const FilledFolderIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2668
-
2669
- declare const FolderIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2670
-
2671
- declare const GithubLogoIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2672
-
2673
- declare const ShareIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2674
-
2675
- declare const StorageAppIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2676
-
2677
- declare const UploadFileIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2678
-
2679
- declare const UploadFolderIcon: React$1.MemoExoticComponent<(props: SvgIconProps) => react_jsx_runtime.JSX.Element>;
2680
-
2681
- type MarkdownProps = {
2682
- children?: string;
2683
- content?: string;
2684
- };
2685
- declare const Markdown: ({ content, children }: MarkdownProps) => react_jsx_runtime.JSX.Element;
2686
-
2687
- interface OnboardingContextType {
2688
- isOnboardingActive: boolean;
2689
- startOnboarding: () => void;
2690
- stopOnboarding: () => void;
2691
- restartOnboarding: () => void;
2692
- }
2693
- declare const useOnboarding: () => OnboardingContextType;
2694
- declare const OnboardingProvider: ({ children }: {
2695
- children: ReactNode;
2696
- }) => react_jsx_runtime.JSX.Element;
2697
-
2698
- type TruncateProps = AriaAttributes & {
2699
- text: string;
2700
- maxLength?: number;
2701
- endingLength?: number;
2702
- variant?: 'text' | 'email' | 'hex';
2703
- };
2704
- declare const Truncate: ({ text, variant, maxLength, endingLength, ...props }: TruncateProps) => react_jsx_runtime.JSX.Element;
2705
-
2706
- type BytesSizeProps = {
2707
- bytes: number;
2708
- };
2709
- declare const BytesSize: ({ bytes }: BytesSizeProps) => react_jsx_runtime.JSX.Element;
2710
-
2711
- type QRCodeProps = Omit<QRCodeProps$1, 'ref'>;
2712
- declare const QRCode: React$1.ForwardRefExoticComponent<QRCodeProps & React$1.RefAttributes<SVGElement>>;
2713
-
2714
- type ChartWidgetHistoryRecord = {
2715
- date: Date;
2716
- value: number;
2717
- };
2718
- type ChartWidgetProps = {
2719
- title: string;
2720
- value?: ReactNode;
2721
- history?: ChartWidgetHistoryRecord[];
2722
- formatValue?: (value: number) => string;
2723
- };
2724
- declare const ChartWidget: ({ title, value, history, formatValue, }: ChartWidgetProps) => react_jsx_runtime.JSX.Element;
2725
-
2726
- type MetricsHistoryRecord = {
2727
- storedBytes: number;
2728
- transferredBytes: number;
2729
- puts: number;
2730
- gets: number;
2731
- recordTime: Date;
2732
- };
2733
- type MetricsChartProps = {
2734
- history?: MetricsHistoryRecord[];
2735
- };
2736
- /**
2737
- * TODO: Refactor this component to use shared graphs configuration
2738
- */
2739
- declare const MetricsChart: ({ history }: MetricsChartProps) => react_jsx_runtime.JSX.Element;
2740
-
2741
- type MetricsPeriod = 'hour' | 'day' | 'week' | 'month';
2742
- type PeriodSelectProps = {
2743
- value?: MetricsPeriod;
2744
- onChange?: (value: MetricsPeriod) => void;
2745
- };
2746
- declare const PeriodSelect: ({ value, onChange }: PeriodSelectProps) => react_jsx_runtime.JSX.Element;
2747
-
2748
- /**
2749
- * Represents a single time range option in the dropdown.
2750
- */
2751
- interface TimeRangeOption {
2752
- /** Display label shown in the dropdown (e.g., "1 week") */
2753
- label: string;
2754
- /** Value identifier passed to the callback on selection */
2755
- value: string;
2756
- }
2757
- interface TimeRangeSelectProps {
2758
- /** Available time range options */
2759
- options: TimeRangeOption[];
2760
- /** Currently selected time range value */
2761
- value?: string;
2762
- /** Callback invoked when user selects a different time range */
2763
- onChange?: (value: string) => void;
2764
- }
2765
- /**
2766
- * Configurable time range dropdown selector.
2767
- * Renders a compact select field with the provided time range options.
2768
- *
2769
- * @example
2770
- * ```tsx
2771
- * <TimeRangeSelect
2772
- * options={[
2773
- * { label: 'Last hour', value: 'hour' },
2774
- * { label: '24 hours', value: 'day' },
2775
- * { label: '1 week', value: 'week' },
2776
- * ]}
2777
- * value="week"
2778
- * onChange={(value) => console.log(value)}
2779
- * />
2780
- * ```
2781
- */
2782
- declare const TimeRangeSelect: ({ options, value, onChange }: TimeRangeSelectProps) => react_jsx_runtime.JSX.Element;
2783
-
2784
- /**
2785
- * Represents a single summary statistic item displayed below the graph.
2786
- */
2787
- interface SummaryItem {
2788
- /** Descriptive label (e.g., "Total Engagements") */
2789
- label: string;
2790
- /** Numeric or string value (e.g., "13.72" or 11372) */
2791
- value: string | number;
2792
- /** Optional unit suffix (e.g., "K", "GB", "%") */
2793
- unit?: string;
2794
- }
2795
- interface SummaryStatsProps {
2796
- /** Array of summary items to display */
2797
- items: SummaryItem[];
2798
- }
2799
- /**
2800
- * Renders a horizontal row of summary statistics below the graph.
2801
- * Each item shows a label with its corresponding value and optional unit.
2802
- *
2803
- * Matches the Figma design layout with label in secondary text color
2804
- * and value in bold heading typography.
2805
- *
2806
- * @example
2807
- * ```tsx
2808
- * <SummaryStats
2809
- * items={[
2810
- * { label: 'Total Engagements', value: 11372 },
2811
- * { label: 'Total Consumed', value: '156.91', unit: 'GB' },
2812
- * ]}
2813
- * />
2814
- * ```
2815
- */
2816
- declare const SummaryStats: ({ items }: SummaryStatsProps) => react_jsx_runtime.JSX.Element | null;
2817
-
2818
- /**
2819
- * A single data point in a time series.
2820
- * Use `null` for the value to represent missing/gap data — the line will break.
2821
- */
2822
- interface DataPoint {
2823
- /** Timestamp of the observation */
2824
- timestamp: Date;
2825
- /** Numeric value, or `null` to indicate a gap in the data */
2826
- value: number | null;
2827
- }
2828
- /**
2829
- * Represents one line on the graph (a named data series).
2830
- */
2831
- interface DataSeries {
2832
- /** Unique display name for this series (shown in legend) */
2833
- name: string;
2834
- /** CSS color string for the line and legend indicator */
2835
- color: string;
2836
- /** Ordered array of data points */
2837
- data: DataPoint[];
2838
- }
2839
- interface TimeSeriesGraphProps {
2840
- /** Optional title displayed at the top-left of the graph card */
2841
- title?: string;
2842
- /**
2843
- * Array of data series to render. Each series becomes one line on the graph.
2844
- * There is no hardcoded limit on the number of series.
2845
- */
2846
- series: DataSeries[];
2847
- /**
2848
- * Configurable time range options for the dropdown selector.
2849
- * When omitted, the time range dropdown is not rendered.
2850
- */
2851
- timeRangeOptions?: TimeRangeOption[];
2852
- /** Currently selected time range value (controlled) */
2853
- selectedTimeRange?: string;
2854
- /** Callback invoked when the user picks a different time range */
2855
- onTimeRangeChange?: (value: string) => void;
2856
- /**
2857
- * Optional array of summary statistics displayed below the graph.
2858
- * When omitted or empty, the summary section is hidden.
2859
- */
2860
- summaryItems?: SummaryItem[];
2861
- /**
2862
- * Whether to show the summary statistics section.
2863
- * Defaults to `true`. Set to `false` to explicitly hide, even when `summaryItems` are provided.
2864
- */
2865
- showSummary?: boolean;
2866
- /**
2867
- * Optional header action element rendered to the right of the title
2868
- * (e.g., a secondary dropdown or filter control).
2869
- */
2870
- headerAction?: ReactNode;
2871
- /**
2872
- * When `true`, shows a loading overlay (spinner) over the graph area
2873
- * while the header remains visible and interactive.
2874
- */
2875
- loading?: boolean;
2876
- /**
2877
- * Override the x-axis date format string (date-fns format tokens).
2878
- * When omitted, the format is auto-detected from the data's time span:
2879
- * - <= 24 hours → `'HH:mm'`
2880
- * - > 24 hours → `'do MMM'`
2881
- */
2882
- xAxisFormat?: string;
2883
- }
2884
- /**
2885
- * A reusable time series graph component that displays one or more data lines
2886
- * over a shared time axis. Supports configurable time range selection,
2887
- * optional summary statistics, interactive legend toggling, crosshair tooltips,
2888
- * and a loading state.
2889
- *
2890
- * Built on `@mui/x-charts` LineChart and the Cere Design System theme.
2891
- *
2892
- * @example
2893
- * ```tsx
2894
- * <TimeSeriesGraph
2895
- * title="Engagement over time"
2896
- * series={[
2897
- * { name: 'Engagements', color: '#6750A4', data: engagementData },
2898
- * { name: 'Unique Streams', color: '#4caf50', data: streamData },
2899
- * ]}
2900
- * timeRangeOptions={[
2901
- * { label: 'Last hour', value: 'hour' },
2902
- * { label: '24 hours', value: 'day' },
2903
- * { label: '1 week', value: 'week' },
2904
- * { label: '1 month', value: 'month' },
2905
- * ]}
2906
- * selectedTimeRange="week"
2907
- * onTimeRangeChange={(range) => fetchData(range)}
2908
- * summaryItems={[
2909
- * { label: 'Total Engagements', value: 11372 },
2910
- * { label: 'Daily Engagements', value: 156 },
2911
- * ]}
2912
- * />
2913
- * ```
2914
- *
2915
- * Figma reference: [ROB Design - Node 162:1172](https://www.figma.com/design/xky11VbkkFcgZLwZE8BdCN/ROB?node-id=162-1172&m=dev)
2916
- */
2917
- declare const TimeSeriesGraph: ({ title, series, timeRangeOptions, selectedTimeRange, onTimeRangeChange, summaryItems, showSummary, headerAction, loading, xAxisFormat, }: TimeSeriesGraphProps) => react_jsx_runtime.JSX.Element;
2918
-
2919
- interface FlowEditorProps extends Omit<ReactFlowProps, 'nodes' | 'edges'> {
2920
- /**
2921
- * Nodes to display in the flow
2922
- */
2923
- nodes: Node[];
2924
- /**
2925
- * Edges to display in the flow
2926
- */
2927
- edges: Edge[];
2928
- /**
2929
- * Callback when nodes change
2930
- */
2931
- onNodesChange?: OnNodesChange;
2932
- /**
2933
- * Callback when edges change
2934
- */
2935
- onEdgesChange?: OnEdgesChange;
2936
- /**
2937
- * Custom node types
2938
- */
2939
- nodeTypes?: NodeTypes;
2940
- /**
2941
- * Custom edge types
2942
- */
2943
- edgeTypes?: EdgeTypes;
2944
- /**
2945
- * Height of the flow editor
2946
- * @default '600px'
2947
- */
2948
- height?: string | number;
2949
- /**
2950
- * Show background grid
2951
- * @default true
2952
- */
2953
- showBackground?: boolean;
2954
- /**
2955
- * Background variant
2956
- * @default 'dots'
2957
- */
2958
- backgroundVariant?: BackgroundVariant;
2959
- /**
2960
- * Show controls
2961
- * @default true
2962
- */
2963
- showControls?: boolean;
2964
- /**
2965
- * Show minimap
2966
- * @default false
2967
- */
2968
- showMinimap?: boolean;
2969
- /**
2970
- * Allow nodes to be dragged by the user
2971
- * @default true
2972
- */
2973
- nodesDraggable?: boolean;
2974
- /**
2975
- * Show border around the container
2976
- * @default true
2977
- */
2978
- showBorder?: boolean;
2979
- /**
2980
- * Border radius of the container in theme spacing units (e.g. 1 = 8px, 2 = 16px)
2981
- * @default 1
2982
- */
2983
- borderRadius?: number;
2984
- /**
2985
- * Container props
2986
- */
2987
- containerProps?: BoxProps;
2988
- /**
2989
- * Props passed directly to the ReactFlow MiniMap component, allowing full customization
2990
- * of colors, mask, style, and any other MiniMap option. Consumer values override defaults.
2991
- */
2992
- minimapProps?: Partial<MiniMapProps>;
2993
- /**
2994
- * Callback when flow instance is initialized
2995
- */
2996
- onInit?: (instance: ReactFlowInstance) => void;
2997
- }
2998
- /**
2999
- * FlowEditor component - wrapper around ReactFlow with theme integration
3000
- *
3001
- * @example
3002
- * ```tsx
3003
- * <FlowEditor
3004
- * nodes={nodes}
3005
- * edges={edges}
3006
- * onNodesChange={onNodesChange}
3007
- * onEdgesChange={onEdgesChange}
3008
- * height="500px"
3009
- * showBackground
3010
- * showControls
3011
- * />
3012
- * ```
3013
- */
3014
- declare const FlowEditor: React__default.FC<FlowEditorProps>;
3015
-
3016
- type CodeEditorLanguage = 'typescript' | 'javascript' | 'json' | 'html' | 'css' | 'python' | 'yaml' | 'markdown' | 'sql' | 'xml' | 'plaintext';
3017
- interface CodeEditorProps {
3018
- /**
3019
- * Current value of the editor
3020
- */
3021
- value: string;
3022
- /**
3023
- * Callback when value changes
3024
- */
3025
- onChange: (value: string) => void;
3026
- /**
3027
- * Programming language
3028
- * @default 'typescript'
3029
- */
3030
- language?: CodeEditorLanguage;
3031
- /**
3032
- * Height of the editor
3033
- * @default '400px'
3034
- */
3035
- height?: string | number;
3036
- /**
3037
- * Minimum height
3038
- */
3039
- minHeight?: string | number;
3040
- /**
3041
- * Theme ('light' | 'dark' | 'vs-dark' | 'hc-black')
3042
- * If not provided, will use theme from design system
3043
- */
3044
- theme?: string;
3045
- /**
3046
- * Show line numbers
3047
- * @default 'on'
3048
- */
3049
- lineNumbers?: 'on' | 'off' | 'relative' | 'interval';
3050
- /**
3051
- * Editor options (monaco editor options)
3052
- */
3053
- options?: editor.IStandaloneEditorConstructionOptions;
3054
- /**
3055
- * Callback when editor is mounted
3056
- */
3057
- onMount?: (editor: editor.IStandaloneCodeEditor, monaco: Monaco) => void;
3058
- /**
3059
- * Callback for validation errors
3060
- */
3061
- onValidate?: (markers: editor.IMarker[]) => void;
3062
- /**
3063
- * Ref to editor instance
3064
- */
3065
- editorRef?: React__default.MutableRefObject<editor.IStandaloneCodeEditor | null>;
3066
- /**
3067
- * Ref to Monaco instance
3068
- */
3069
- monacoRef?: React__default.MutableRefObject<Monaco | null>;
3070
- /**
3071
- * Callback when fullscreen state changes
3072
- */
3073
- onFullscreenChange?: (isFullscreen: boolean) => void;
3074
- /**
3075
- * Props for the container Box.
3076
- */
3077
- containerProps?: BoxProps;
3078
- /**
3079
- * Additional TypeScript type definitions to add to the editor context.
3080
- * Can be a string with type definitions or an array of type definition strings.
3081
- * Each string will be added as a separate extra lib to Monaco.
3082
- *
3083
- * @example
3084
- * ```tsx
3085
- * <CodeEditor
3086
- * value={code}
3087
- * onChange={setCode}
3088
- * typeDefinitions={`
3089
- * declare interface MyCustomType {
3090
- * id: string;
3091
- * name: string;
3092
- * }
3093
- * `}
3094
- * />
3095
- * ```
3096
- */
3097
- typeDefinitions?: string | string[];
3098
- /**
3099
- * When true, the editor skips internal value syncing and lets an external
3100
- * source (e.g. useCodeEditorWorkspace) manage Monaco models directly.
3101
- * The `value` prop is still used as the initial/display value but won't
3102
- * be force-synced to the editor.
3103
- * @default false
3104
- */
3105
- externalModelManagement?: boolean;
3106
- }
3107
- /**
3108
- * CodeEditor component - wrapper around Monaco Editor matching dynamic-indexer-client implementation
3109
- *
3110
- * @example
3111
- * ```tsx
3112
- * <CodeEditor
3113
- * value={code}
3114
- * onChange={setCode}
3115
- * language="typescript"
3116
- * height="500px"
3117
- * onValidate={(markers) => console.log('Errors:', markers)}
3118
- * />
3119
- * ```
3120
- */
3121
- declare const CodeEditor: React__default.FC<CodeEditorProps>;
3122
-
3123
- /** Data shape expected by the WorkflowNodeHandle custom ReactFlow node */
3124
- interface WorkflowNodeData {
3125
- /** Workflow node type — drives accent color, icon, and badge */
3126
- nodeType: WorkflowNodeType;
3127
- /** Primary title */
3128
- title: string;
3129
- /** Optional description */
3130
- description?: string;
3131
- /** Override default icon */
3132
- icon?: React__default.ReactNode;
3133
- /** Override default badge label */
3134
- badgeLabel?: string;
3135
- }
3136
- /**
3137
- * Thin ReactFlow custom-node wrapper around WorkflowNode.
3138
- *
3139
- * Renders a target Handle (top), the WorkflowNode card, and a source Handle (bottom).
3140
- * Register as a custom nodeType:
3141
- *
3142
- * @example
3143
- * ```tsx
3144
- * const nodeTypes = { workflowNode: WorkflowNodeHandle };
3145
- * <FlowEditor nodes={nodes} edges={edges} nodeTypes={nodeTypes} />
3146
- * ```
3147
- */
3148
- declare const WorkflowNodeHandle: React__default.FC<NodeProps<WorkflowNodeData>>;
3149
-
3150
- /**
3151
- * Represents a single file in the workspace.
3152
- */
3153
- interface CodeEditorFile {
3154
- /** Unique file path, e.g. "src/index.ts" */
3155
- path: string;
3156
- /** Programming language (auto-detected from extension when omitted) */
3157
- language?: CodeEditorLanguage;
3158
- /** File content */
3159
- value: string;
3160
- }
3161
- /**
3162
- * Represents an open tab in the editor.
3163
- */
3164
- interface CodeEditorTab {
3165
- /** File path this tab corresponds to */
3166
- path: string;
3167
- /** Display label (defaults to the filename portion of path) */
3168
- label?: string;
3169
- /** Whether the file has unsaved changes */
3170
- isDirty?: boolean;
3171
- /** Git sync status — distinct from isDirty (editor changes) */
3172
- syncStatus?: 'new' | 'modified';
3173
- }
3174
- /** Git sync status for a file tree node. */
3175
- type FileTreeNodeStatus = 'new' | 'modified' | 'deleted';
3176
- /**
3177
- * A node in the file tree.
3178
- */
3179
- interface FileTreeNode {
3180
- /** Display name */
3181
- name: string;
3182
- /** Full path (unique identifier) */
3183
- path: string;
3184
- /** Whether this is a file or folder */
3185
- type: 'file' | 'folder';
3186
- /** Children nodes (only for folders) */
3187
- children?: FileTreeNode[];
3188
- /** Optional custom icon */
3189
- icon?: ReactNode;
3190
- /** Git sync status indicator (new / modified / deleted) */
3191
- status?: FileTreeNodeStatus;
3192
- }
3193
- /**
3194
- * Git repository information passed into the workspace.
3195
- * The consuming app is responsible for fetching this data.
3196
- */
3197
- interface GitInfo {
3198
- /** Current branch name, e.g. "feat/advanced-code-editor" */
3199
- branch: string;
3200
- /** Whether the working tree has uncommitted changes */
3201
- isDirty?: boolean;
3202
- /** Short commit hash of HEAD */
3203
- commitHash?: string;
3204
- /** Remote name, e.g. "origin" */
3205
- remote?: string;
3206
- /** Number of commits ahead of remote */
3207
- ahead?: number;
3208
- /** Number of commits behind remote */
3209
- behind?: number;
3210
- }
3211
- /**
3212
- * A custom item to render in the status bar.
3213
- */
3214
- interface CodeEditorStatusBarItem {
3215
- /** Unique key */
3216
- id: string;
3217
- /** Content to display (string or ReactNode) */
3218
- content: ReactNode;
3219
- /** Side of the status bar */
3220
- align?: 'left' | 'right';
3221
- /** Optional click handler */
3222
- onClick?: () => void;
3223
- /** Tooltip text */
3224
- tooltip?: string;
3225
- }
3226
- /**
3227
- * Map from file extension to CodeEditorLanguage.
3228
- */
3229
- declare const EXTENSION_LANGUAGE_MAP: Record<string, CodeEditorLanguage>;
3230
- /**
3231
- * Detect language from a file path extension.
3232
- */
3233
- declare function detectLanguage(path: string): CodeEditorLanguage;
3234
- /**
3235
- * Extract the filename from a path.
3236
- */
3237
- declare function getFileName(path: string): string;
3238
-
3239
- interface UseCodeEditorWorkspaceOptions {
3240
- /** All files available in the workspace */
3241
- files: CodeEditorFile[];
3242
- /** File paths to open as tabs initially */
3243
- initialOpenPaths?: string[];
3244
- /** Called when a file's content is modified in the editor */
3245
- onFileChange?: (path: string, value: string) => void;
3246
- /** Called when validation markers change across all open models */
3247
- onValidationChange?: (markers: Record<string, editor.IMarker[]>) => void;
3248
- }
3249
- interface UseCodeEditorWorkspaceReturn {
3250
- /** Currently open tabs */
3251
- openTabs: CodeEditorTab[];
3252
- /** Path of the active file (shown in editor) */
3253
- activeFilePath: string | null;
3254
- /** Open a file by path (creates tab if not already open, sets it active) */
3255
- openFile: (path: string) => void;
3256
- /** Close a tab by path */
3257
- closeFile: (path: string) => void;
3258
- /** Set a specific file as active */
3259
- setActiveFile: (path: string) => void;
3260
- /** Programmatically update file content */
3261
- updateFileContent: (path: string, value: string) => void;
3262
- /** Get the current content of a file */
3263
- getFileContent: (path: string) => string | undefined;
3264
- /** Get the active file data */
3265
- activeFile: CodeEditorFile | undefined;
3266
- /** Ref to hold the Monaco instance — pass to CodeEditor's monacoRef */
3267
- monacoRef: React.MutableRefObject<Monaco | null>;
3268
- /** Ref to hold the editor instance — pass to CodeEditor's editorRef */
3269
- editorRef: React.MutableRefObject<editor.IStandaloneCodeEditor | null>;
3270
- /** Handler to pass to CodeEditor's onMount */
3271
- handleEditorMount: (editorInstance: editor.IStandaloneCodeEditor, monacoInstance: Monaco) => void;
3272
- /** Handler to pass to CodeEditor's onChange */
3273
- handleEditorChange: (value: string) => void;
3274
- /** Aggregated validation markers keyed by file path */
3275
- validationMarkers: Record<string, editor.IMarker[]>;
3276
- /** Mark a file as saved (clears dirty flag) */
3277
- markSaved: (path: string) => void;
3278
- /** Mark all files as saved */
3279
- markAllSaved: () => void;
3280
- /** Current cursor position in the active editor */
3281
- cursorPosition: {
3282
- line: number;
3283
- column: number;
3284
- } | null;
3285
- }
3286
- /**
3287
- * Headless hook for managing a multi-file Monaco editor workspace.
3288
- *
3289
- * Manages Monaco models, open tabs, active file, and dirty tracking.
3290
- * Pass the returned refs/handlers to a `CodeEditor` component.
3291
- *
3292
- * @example
3293
- * ```tsx
3294
- * const workspace = useCodeEditorWorkspace({ files, onFileChange });
3295
- *
3296
- * <CodeEditorTabs
3297
- * tabs={workspace.openTabs}
3298
- * activeTab={workspace.activeFilePath}
3299
- * onTabSelect={workspace.setActiveFile}
3300
- * onTabClose={workspace.closeFile}
3301
- * />
3302
- * <CodeEditor
3303
- * value={workspace.activeFile?.value ?? ''}
3304
- * onChange={workspace.handleEditorChange}
3305
- * language={workspace.activeFile?.language}
3306
- * editorRef={workspace.editorRef}
3307
- * monacoRef={workspace.monacoRef}
3308
- * onMount={workspace.handleEditorMount}
3309
- * />
3310
- * ```
3311
- */
3312
- declare function useCodeEditorWorkspace({ files, initialOpenPaths, onFileChange, onValidationChange, }: UseCodeEditorWorkspaceOptions): UseCodeEditorWorkspaceReturn;
3313
-
3314
- interface CodeEditorTabRenderProps {
3315
- tab: CodeEditorTab;
3316
- isActive: boolean;
3317
- onSelect: () => void;
3318
- onClose: () => void;
3319
- }
3320
- interface CodeEditorTabsProps {
3321
- /** Open tabs to display */
3322
- tabs: CodeEditorTab[];
3323
- /** Path of the currently active tab */
3324
- activeTab?: string | null;
3325
- /** Called when a tab is selected */
3326
- onTabSelect?: (path: string) => void;
3327
- /** Called when a tab's close button is clicked */
3328
- onTabClose?: (path: string) => void;
3329
- /**
3330
- * Render prop for full tab customisation.
3331
- * When provided, default tab rendering is skipped entirely.
3332
- */
3333
- renderTab?: (props: CodeEditorTabRenderProps) => React__default.ReactNode;
3334
- /** Props for the outer container */
3335
- containerProps?: BoxProps;
3336
- }
3337
- /**
3338
- * Tab bar for the CodeEditor workspace.
3339
- *
3340
- * Provides default MUI-based rendering, but consumers can fully replace it
3341
- * via the `renderTab` render prop.
3342
- *
3343
- * @example
3344
- * ```tsx
3345
- * <CodeEditorTabs
3346
- * tabs={workspace.openTabs}
3347
- * activeTab={workspace.activeFilePath}
3348
- * onTabSelect={workspace.setActiveFile}
3349
- * onTabClose={workspace.closeFile}
3350
- * />
3351
- * ```
3352
- */
3353
- declare const CodeEditorTabs: React__default.FC<CodeEditorTabsProps>;
3354
-
3355
- interface FileTreeNodeRenderProps {
3356
- node: FileTreeNode;
3357
- depth: number;
3358
- isSelected: boolean;
3359
- isExpanded: boolean;
3360
- onSelect: () => void;
3361
- onToggle: () => void;
3362
- }
3363
- interface CodeEditorFileTreeProps {
3364
- /** Tree data to render */
3365
- tree: FileTreeNode[];
3366
- /** Currently selected file path */
3367
- selectedPath?: string | null;
3368
- /** Called when a file node is clicked */
3369
- onFileSelect?: (path: string) => void;
3370
- /** Called when a folder is expanded/collapsed */
3371
- onFolderToggle?: (path: string, isExpanded: boolean) => void;
3372
- /**
3373
- * Render prop for full node customisation.
3374
- * When provided, default rendering is skipped.
3375
- */
3376
- renderNode?: (props: FileTreeNodeRenderProps) => React__default.ReactNode;
3377
- /** Paths of folders that should be expanded initially */
3378
- defaultExpandedPaths?: string[];
3379
- /** Width of the file tree panel */
3380
- width?: string | number;
3381
- /** Props for the outer container */
3382
- containerProps?: BoxProps;
3383
- }
3384
- /**
3385
- * File tree navigator for the CodeEditor workspace.
3386
- *
3387
- * Provides default MUI-based rendering with collapsible folders.
3388
- * Consumers can fully replace rendering via `renderNode`.
3389
- *
3390
- * @example
3391
- * ```tsx
3392
- * <CodeEditorFileTree
3393
- * tree={fileTree}
3394
- * selectedPath={workspace.activeFilePath}
3395
- * onFileSelect={workspace.openFile}
3396
- * />
3397
- * ```
3398
- */
3399
- declare const CodeEditorFileTree: React__default.FC<CodeEditorFileTreeProps>;
3400
-
3401
- interface CodeEditorStatusBarRenderProps {
3402
- gitInfo?: GitInfo;
3403
- language?: CodeEditorLanguage;
3404
- cursorPosition?: {
3405
- line: number;
3406
- column: number;
3407
- };
3408
- items?: CodeEditorStatusBarItem[];
3409
- }
3410
- interface CodeEditorStatusBarProps {
3411
- /** Git repository information */
3412
- gitInfo?: GitInfo;
3413
- /** Language of the active file */
3414
- language?: CodeEditorLanguage;
3415
- /** Current cursor position */
3416
- cursorPosition?: {
3417
- line: number;
3418
- column: number;
3419
- };
3420
- /** Additional custom items */
3421
- items?: CodeEditorStatusBarItem[];
3422
- /**
3423
- * Render prop for full status bar customisation.
3424
- * When provided, default rendering is skipped entirely.
3425
- */
3426
- renderStatusBar?: (props: CodeEditorStatusBarRenderProps) => React__default.ReactNode;
3427
- /** Called when the user clicks the branch name in the status bar */
3428
- onBranchClick?: () => void;
3429
- /** Props for the outer container */
3430
- containerProps?: BoxProps;
3431
- }
3432
- /**
3433
- * Status bar for the CodeEditor workspace.
3434
- *
3435
- * Displays git branch info, cursor position, file language, and custom items.
3436
- * Fully replaceable via `renderStatusBar` render prop.
3437
- *
3438
- * @example
3439
- * ```tsx
3440
- * <CodeEditorStatusBar
3441
- * gitInfo={{ branch: 'main', isDirty: true, commitHash: 'a1b2c3d' }}
3442
- * language="typescript"
3443
- * cursorPosition={{ line: 10, column: 5 }}
3444
- * />
3445
- * ```
3446
- */
3447
- declare const CodeEditorStatusBar: React__default.FC<CodeEditorStatusBarProps>;
3448
-
3449
- interface CodeEditorWelcomeScreenProps {
3450
- /** Custom logo or icon displayed in the center. Defaults to the Cere logo. */
3451
- logo?: React__default.ReactNode;
3452
- /**
3453
- * Content rendered below the logo. Accepts any ReactNode —
3454
- * shortcut hints, action buttons, descriptive text, etc.
3455
- */
3456
- children?: React__default.ReactNode;
3457
- /** Props forwarded to the outer container `Box`. */
3458
- containerProps?: BoxProps;
3459
- }
3460
- /**
3461
- * Default empty-state screen shown inside `CodeEditorWorkspace` when no file
3462
- * is open. Renders a centered logo with an optional content slot underneath.
3463
- *
3464
- * @example
3465
- * ```tsx
3466
- * <CodeEditorWelcomeScreen>
3467
- * <Typography variant="body2" color="text.secondary">
3468
- * Open a file from the tree to start editing
3469
- * </Typography>
3470
- * </CodeEditorWelcomeScreen>
3471
- * ```
3472
- */
3473
- declare const CodeEditorWelcomeScreen: React__default.FC<CodeEditorWelcomeScreenProps>;
3474
-
3475
- interface CodeEditorWorkspaceProps extends Pick<UseCodeEditorWorkspaceOptions, 'files' | 'initialOpenPaths' | 'onFileChange' | 'onValidationChange'> {
3476
- /** File tree data. When omitted the file tree panel is hidden. */
3477
- fileTree?: FileTreeNode[];
3478
- /** Paths of folders expanded by default in the file tree */
3479
- defaultExpandedPaths?: string[];
3480
- /** Whether to show the tab bar. @default true */
3481
- showTabs?: boolean;
3482
- /** Whether to show the file tree panel. @default true (when fileTree is provided) */
3483
- showFileTree?: boolean;
3484
- /** Width of the file tree panel */
3485
- fileTreeWidth?: string | number;
3486
- /** Overall height of the workspace */
3487
- height?: string | number;
3488
- /** Props passed through to the inner CodeEditor */
3489
- editorProps?: Partial<Omit<CodeEditorProps, 'value' | 'onChange' | 'language' | 'editorRef' | 'monacoRef' | 'onMount'>>;
3490
- /** Props for the outer container */
3491
- containerProps?: BoxProps;
3492
- /** Replace the default tab bar rendering */
3493
- renderTabs?: (props: CodeEditorTabsProps & {
3494
- workspace: UseCodeEditorWorkspaceReturn;
3495
- }) => React__default.ReactNode;
3496
- /** Replace the default file tree rendering */
3497
- renderFileTree?: (props: CodeEditorFileTreeProps & {
3498
- workspace: UseCodeEditorWorkspaceReturn;
3499
- }) => React__default.ReactNode;
3500
- /** Replace the default editor rendering */
3501
- renderEditor?: (workspace: UseCodeEditorWorkspaceReturn) => React__default.ReactNode;
3502
- /** Replace the default status bar rendering */
3503
- renderStatusBar?: (props: CodeEditorStatusBarProps & {
3504
- workspace: UseCodeEditorWorkspaceReturn;
3505
- }) => React__default.ReactNode;
3506
- /** Replace the default welcome screen rendering (shown when no file is open) */
3507
- renderWelcomeScreen?: (workspace: UseCodeEditorWorkspaceReturn) => React__default.ReactNode;
3508
- /** Static ReactNode that replaces the default welcome screen entirely */
3509
- welcomeScreen?: React__default.ReactNode;
3510
- /** Props forwarded to the default `CodeEditorWelcomeScreen` (ignored when `welcomeScreen` or `renderWelcomeScreen` is provided) */
3511
- welcomeScreenProps?: CodeEditorWelcomeScreenProps;
3512
- /** Git repository information to display in the status bar */
3513
- gitInfo?: GitInfo;
3514
- /** Whether to show the status bar. @default true */
3515
- showStatusBar?: boolean;
3516
- /** Additional custom items for the status bar */
3517
- statusBarItems?: CodeEditorStatusBarItem[];
3518
- /** Expose the workspace instance to the parent via ref-like callback */
3519
- onWorkspaceReady?: (workspace: UseCodeEditorWorkspaceReturn) => void;
3520
- /** Called when the user presses Ctrl+S / Cmd+S. Receives all dirty files. */
3521
- onSave?: (dirtyFiles: CodeEditorFile[]) => void;
3522
- /** Called when the user clicks the branch name in the status bar */
3523
- onBranchClick?: () => void;
3524
- }
3525
- /**
3526
- * Convenience composed workspace that combines `CodeEditorFileTree`,
3527
- * `CodeEditorTabs`, and `CodeEditor` into a single layout.
3528
- *
3529
- * For full control, use `useCodeEditorWorkspace` directly and assemble
3530
- * the pieces yourself.
3531
- *
3532
- * @example
3533
- * ```tsx
3534
- * <CodeEditorWorkspace
3535
- * files={files}
3536
- * fileTree={tree}
3537
- * initialOpenPaths={['src/index.ts']}
3538
- * height="600px"
3539
- * gitInfo={{ branch: 'main', isDirty: true, commitHash: 'a1b2c3d' }}
3540
- * onFileChange={(path, value) => console.log(path, value)}
3541
- * />
3542
- * ```
626
+ * Render the gap between two ISO-8601 timestamps. Returns `'—'` when
627
+ * either bound is missing, unparseable, or inverted.
3543
628
  */
3544
- declare const CodeEditorWorkspace: React__default.FC<CodeEditorWorkspaceProps>;
629
+ declare function formatDuration(startIso: string | undefined | null, endIso: string | undefined | null): string;
3545
630
 
3546
- export { Accordion, type AccordionProps, AccountSection, type AccountSectionProps, ActivityAppIcon, Alert, type AlertProps, type AlertSeverity, AppBar, type AppBarProps, AppLoading, type AppLoadingProps, Avatar, AvatarIcon, type AvatarProps, Badge, type BadgeProps, BarTrackingIcon, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, type ButtonTone, type ButtonVariant, BytesSize, type BytesSizeProps, Card, CardActions, CardContent, CardHeader, CardMedia, type CardMediaProps, type CardProps, type CardVariant, Carousel, type CarouselProps, CereIcon, ChartWidget, type ChartWidgetProps, CheckMarkAnimation, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipTone, type ChipVariant, type ChipVariantStyles, CircularProgress, type CircularProgressProps, ClockIcon, CloudFlashIcon, CodeEditor, type CodeEditorFile, CodeEditorFileTree, type CodeEditorFileTreeProps, type CodeEditorLanguage, type CodeEditorProps, CodeEditorStatusBar, type CodeEditorStatusBarItem, type CodeEditorStatusBarProps, type CodeEditorStatusBarRenderProps, type CodeEditorTab, type CodeEditorTabRenderProps, CodeEditorTabs, type CodeEditorTabsProps, CodeEditorWelcomeScreen, type CodeEditorWelcomeScreenProps, CodeEditorWorkspace, type CodeEditorWorkspaceProps, Collapse, type CollapseProps, ConnectionStatus, type ConnectionStatusProps, type ContextMenuItem, CopyChip, type CopyChipProps, CopyableField, type CopyableFieldProps, type DataPoint, type DataSeries, DateRangePicker, type DateRangePickerProps, DecentralizedServerIcon, DefinitionRow, type DefinitionRowProps, type DeploymentCardAction, DeploymentDashboardCard, type DeploymentDashboardCardProps, DeploymentDashboardPanel, type DeploymentDashboardPanelProps, DeploymentDashboardTree, type DeploymentDashboardTreeProps, DeploymentEntityContextMenu, type DeploymentEntityContextMenuProps, type DeploymentEntityType, type DeploymentStatusIndicator, type DeploymentTreeNode, Dialog, type DialogProps, DiscordIcon, Divider, type DividerProps, DownloadIcon, Drawer, type DrawerProps, type DrawerWidth, type DrawerWidthValue, Dropdown, DropdownAnchor, type DropdownAnchorProps, type DropdownProps, EXTENSION_LANGUAGE_MAP, EmptyState, type EmptyStateProps, EntityHeader, type EntityHeaderProps, type FileTreeNode, type FileTreeNodeRenderProps, FilledFolderIcon, FlowEditor, type FlowEditorProps, FolderIcon, GRADIENT_PALETTE_COUNT, type GitInfo, GithubLogoIcon, GradientSurface, type GradientSurfaceProps, IDBlock, type IDBlockProps, IconButton, type IconButtonProps, LeftArrowIcon, Link, type LinkProps, List, ListItem, type ListItemProps, type ListProps, Loading, LoadingAnimation, type LoadingAnimationProps, LoadingButton, type LoadingButtonProps, type LoadingProps, Logo, type LogoProps, Markdown, type MarkdownProps, Menu, MenuItem, type MenuItemProps, type MenuProps, MetaField, type MetaFieldProps, MetricsChart, type MetricsChartProps, type MetricsPeriod, NavigationItem, type NavigationItemProps, NavigationList, type NavigationListProps, NumberedStepper, type NumberedStepperProps, type NumberedStepperStep, OnboardingProvider, Pagination, type PaginationProps, PanelDialog, type PanelDialogProps, type PanelDialogSide, type PanelDialogWidth, Paper, type PaperProps, PeriodSelect, type PrimaryAction, Progress, type ProgressProps, QRCode, type QRCodeProps, Radio, type RadioProps, type ResponsiveDrawerWidth, RightArrowIcon, RoleBadge, type RoleBadgeColor, type RoleBadgeProps, type RoleBadgeSize, ScrollableRow, type ScrollableRowProps, SearchField, type SearchFieldProps, type SearchFieldVariant, SectionRow, type SectionRowProps, Selector, type SelectorOption, type SelectorProps, type Service, ServiceSelectorButton, type ServiceSelectorButtonProps, ShareIcon, SideNav, SideNavHeader, type SideNavHeaderProps, type SideNavProps, Sidebar, SidebarItem, type SidebarItemProps, type SidebarProps, Snackbar, type SnackbarProps, SplitDialogContent, type SplitDialogContentProps, StatusDot, type StatusDotProps, type StatusDotStatus, Step, StepButton, type StepButtonProps, StepContent, type StepContentProps, StepLabel, type StepLabelProps, type StepProps, Stepper, type StepperProps, StorageAppIcon, type SummaryItem, SummaryStats, type SummaryStatsProps, Switch, type SwitchProps, Tab, type TabProps, Table, TableHeader, type TableHeaderProps, type TableProps, TextField, type TextFieldProps, type TimeRangeOption, TimeRangeSelect, type TimeRangeSelectProps, TimeSeriesGraph, type TimeSeriesGraphProps, ToggleButton, ToggleButtonGroup, type ToggleButtonGroupProps, type ToggleButtonProps, Tooltip, type TooltipProps, Truncate, type TruncateProps, UploadFileIcon, UploadFolderIcon, type UseCodeEditorWorkspaceOptions, type UseCodeEditorWorkspaceReturn, type UserInfo, WORKFLOW_NODE_LABELS, WORKFLOW_NODE_SHADOW, type WebSurfaceTokenKey, WorkflowNode, type WorkflowNodeData, WorkflowNodeHandle, type WorkflowNodeProps, type WorkflowNodeType, WorkflowSideInspector, type WorkflowSideInspectorProps, WorkflowTimeBar, type WorkflowTimeBarProps, WorkflowTopBar, type WorkflowTopBarProps, type Workspace, WorkspaceSelectorButton, type WorkspaceSelectorButtonProps, borderRadius, colors, contextMenuItems, detectLanguage, getChipVariantStyles, getFileName, motion, resolveDrawerWidth, robPaletteExtended, robPrimaryPalette, theme, useCodeEditorWorkspace, useIsDesktop, useIsMobile, useIsTablet, useOnboarding, useSearchHotkeys, webSurfaceTokens, workflowConnectionColors, workflowNodeColors };
631
+ export { CheckMarkAnimation, LoadingAnimation, type LoadingAnimationProps, type SurfaceVariant, type WebLightVariant, type WebSurfaceTokenKey, borderRadius, colors, formatDuration, formatRelativeTime, motion, robPaletteExtended, robPrimaryPalette, surfaceVariants, theme, useIsDesktop, useIsMobile, useIsTablet, webLight, webSurfaceTokens, workflowConnectionColors, workflowNodeColors };