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