@movable/ui 5.0.0-five.0 → 5.0.0-five.2

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.
@@ -18,6 +18,7 @@ export type InkDialogProps = DialogProps & {
18
18
  hideCloseButton?: boolean;
19
19
  onClose: (e?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
20
20
  ActionsProp?: ActionsPropType;
21
+ ActionDescription?: string | JSX.Element;
21
22
  };
22
- export declare function InkDialog({ Title, Content, Actions, onClose, hideCloseButton, ActionsProp, children, ...props }: InkDialogProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function InkDialog({ Title, Content, Actions, onClose, hideCloseButton, ActionsProp, ActionDescription, children, ...props }: InkDialogProps): import("react/jsx-runtime").JSX.Element;
23
24
  export {};
@@ -1,4 +1,5 @@
1
1
  import { ButtonProps } from '@mui/material';
2
+ import type { ReactNode } from 'react';
2
3
  type PrimaryButtonType = ButtonProps & {
3
4
  label: string;
4
5
  loading?: boolean;
@@ -11,7 +12,7 @@ type ActionButtonPropType = {
11
12
  close?: closeButtonType;
12
13
  };
13
14
  type InkWorkflowHeaderProps = {
14
- label: string;
15
+ label: ReactNode;
15
16
  Stepper?: JSX.Element;
16
17
  ButtonGroup?: JSX.Element | ActionButtonPropType;
17
18
  subtitle?: string;
@@ -0,0 +1,40 @@
1
+ import { ReactNode } from 'react';
2
+ import { SxProps, Theme } from '@mui/material';
3
+ export type ChatChip = {
4
+ id: string;
5
+ label: string;
6
+ icon?: ReactNode;
7
+ };
8
+ export type ScopeOption = {
9
+ value: string;
10
+ label: string;
11
+ icon?: ReactNode;
12
+ };
13
+ export type InkAiChatInputProps = {
14
+ value: string;
15
+ onChange: (value: string) => void;
16
+ onSubmit: (value: string) => void;
17
+ isGenerating?: boolean;
18
+ onStop?: () => void;
19
+ disabled?: boolean;
20
+ placeholder?: string;
21
+ chips?: ChatChip[];
22
+ onRemoveChip?: (id: string) => void;
23
+ scopeOptions?: ScopeOption[];
24
+ scopeValue?: string;
25
+ onScopeChange?: (value: string) => void;
26
+ onAttachClick?: () => void;
27
+ onMentionClick?: () => void;
28
+ autoFocus?: boolean;
29
+ /**
30
+ * Stable name for the textarea. Also used as a fallback id for the scope
31
+ * select. Generated via `useId()` if omitted — supply explicitly when
32
+ * rendering multiple instances on the same page or when the consumer needs
33
+ * a predictable selector.
34
+ */
35
+ name?: string;
36
+ className?: string;
37
+ sx?: SxProps<Theme>;
38
+ };
39
+ declare const InkAiChatInput: import("react").ForwardRefExoticComponent<InkAiChatInputProps & import("react").RefAttributes<HTMLDivElement>>;
40
+ export { InkAiChatInput };
@@ -0,0 +1 @@
1
+ export { InkAiChatInput, type InkAiChatInputProps, type ChatChip, type ScopeOption, } from './InkAiChatInput';
@@ -0,0 +1,40 @@
1
+ import { SxProps, Theme } from '@mui/material';
2
+ export type InkAiAssistantMessageProps = {
3
+ /** Markdown string to render. */
4
+ content: string;
5
+ /**
6
+ * True when the LLM has accepted the prompt but has not yet produced any
7
+ * output. Renders the `InkAiThinkingIndicator` instead of the body.
8
+ * Mirrors CopilotKit's `isLoading` slot prop.
9
+ */
10
+ isLoading?: boolean;
11
+ /** True while the assistant is still streaming this message. Hides actions. */
12
+ isGenerating?: boolean;
13
+ /** Show the action row. Default: true when not generating. */
14
+ showActions?: boolean;
15
+ /**
16
+ * Optional label for the thinking indicator shown when `isLoading` is true
17
+ * or `content` is empty. Defaults to "Thinking…" (set by
18
+ * `InkAiThinkingIndicator`).
19
+ */
20
+ thinkingLabel?: string;
21
+ /**
22
+ * Called when the user clicks copy. Defaults to
23
+ * `navigator.clipboard.writeText(content)`.
24
+ */
25
+ onCopy?: (content: string) => void;
26
+ /** Called when the user clicks a feedback button. */
27
+ onFeedback?: (kind: 'up' | 'down') => void;
28
+ className?: string;
29
+ sx?: SxProps<Theme>;
30
+ };
31
+ /**
32
+ * Renders an assistant message: markdown body styled with MUI typography
33
+ * + an inline action row (thumbs up/down/copy). No CopilotKit dependency —
34
+ * the consuming app wires this into CopilotKit's `AssistantMessage` slot.
35
+ *
36
+ * When `isLoading` is true, or when `content` is empty/whitespace, the
37
+ * `InkAiThinkingIndicator` is rendered in place of the body and the action
38
+ * row is hidden.
39
+ */
40
+ export declare const InkAiAssistantMessage: ({ content, isLoading, isGenerating, showActions, thinkingLabel, onCopy, onFeedback, className, sx, }: InkAiAssistantMessageProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { SxProps, Theme } from '@mui/material';
2
+ export type InkAiMessageActionsProps = {
3
+ /** Called when the copy button is clicked. */
4
+ onCopy: () => void;
5
+ /** Called when a feedback button is clicked. */
6
+ onFeedback?: (kind: 'up' | 'down') => void;
7
+ className?: string;
8
+ sx?: SxProps<Theme>;
9
+ };
10
+ /**
11
+ * Action row rendered below an assistant message. Three buttons in an 8px
12
+ * horizontal stack: good response, bad response, copy message.
13
+ */
14
+ export declare const InkAiMessageActions: ({ onCopy, onFeedback, className, sx, }: InkAiMessageActionsProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+ import { SxProps, Theme } from '@mui/material';
3
+ export type InkAiUserMessageProps = {
4
+ /** Text content of the message. */
5
+ content: ReactNode;
6
+ className?: string;
7
+ sx?: SxProps<Theme>;
8
+ };
9
+ /**
10
+ * Light-blue user message bubble matching the Movable Ink AI assistant Figma
11
+ * design. Purely presentational — right-alignment within a conversation
12
+ * column is the parent's responsibility.
13
+ */
14
+ export declare const InkAiUserMessage: ({ content, className, sx, }: InkAiUserMessageProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { InkAiUserMessage, type InkAiUserMessageProps, } from './InkAiUserMessage';
2
+ export { InkAiAssistantMessage, type InkAiAssistantMessageProps, } from './InkAiAssistantMessage';
@@ -0,0 +1,8 @@
1
+ import type { MarkdownToJSX } from 'markdown-to-jsx';
2
+ /**
3
+ * Mapping passed to <Markdown options={{ overrides }} /> so markdown nodes
4
+ * inherit MUI typography/colors instead of browser defaults. Keeps the
5
+ * Movable Ink AI assistant brand styling (blue.800 inline link, semi-bold
6
+ * strong, body2 paragraphs, disc lists with 4px item gap).
7
+ */
8
+ export declare const markdownComponents: MarkdownToJSX.Overrides;
@@ -0,0 +1,21 @@
1
+ import { ReactNode } from 'react';
2
+ import { SxProps, Theme } from '@mui/material';
3
+ export type InkAiReasoningContentProps = {
4
+ /** Whether reasoning is still streaming. */
5
+ isStreaming?: boolean;
6
+ /** Whether the reasoning content has any text yet. */
7
+ hasContent?: boolean;
8
+ /**
9
+ * The reasoning content. CopilotKit passes the message body string here.
10
+ * Rendered as plain text inside caption typography.
11
+ */
12
+ children?: ReactNode;
13
+ className?: string;
14
+ sx?: SxProps<Theme>;
15
+ };
16
+ /**
17
+ * Body slot for CopilotKit's CopilotChatReasoningMessage `contentView`
18
+ * slot. Renders the streaming/static reasoning text in a left-bordered
19
+ * caption-typography block.
20
+ */
21
+ export declare const InkAiReasoningContent: ({ isStreaming, hasContent, children, className, sx, }: InkAiReasoningContentProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,42 @@
1
+ import { SxProps, Theme } from '@mui/material';
2
+ export type InkAiReasoningHeaderProps = {
3
+ /** Currently expanded? Comes from CopilotKit. */
4
+ isOpen?: boolean;
5
+ /**
6
+ * Whether the reasoning is still streaming. Comes from CopilotKit.
7
+ * Drives the gradient/gray styling switch.
8
+ */
9
+ isStreaming?: boolean;
10
+ /**
11
+ * Whether reasoning has produced any content yet. Comes from CopilotKit.
12
+ * When false AND not streaming, the header is non-interactive and the
13
+ * chevron is hidden.
14
+ */
15
+ hasContent?: boolean;
16
+ /**
17
+ * Label string supplied by CopilotKit's CopilotChatReasoningMessage
18
+ * (e.g. "Thinking…", "Thought for 14 seconds"). Rendered as-is unless
19
+ * `formatLabel` is provided.
20
+ */
21
+ label?: string;
22
+ /**
23
+ * Optional escape hatch for consumers who want to rewrite CopilotKit's
24
+ * default wording without forking. Receives the original label and the
25
+ * current state; returns the string actually rendered.
26
+ */
27
+ formatLabel?: (label: string, ctx: {
28
+ isStreaming: boolean;
29
+ isOpen: boolean;
30
+ hasContent: boolean;
31
+ }) => string;
32
+ /** Click handler from CopilotKit; toggles open/closed. */
33
+ onClick?: () => void;
34
+ className?: string;
35
+ sx?: SxProps<Theme>;
36
+ };
37
+ /**
38
+ * Header row for CopilotKit's CopilotChatReasoningMessage `header` slot.
39
+ * Switches between a purple-gradient streaming label and a gray
40
+ * collapsible label with a rotating chevron.
41
+ */
42
+ export declare const InkAiReasoningHeader: ({ isOpen, isStreaming, hasContent, label, formatLabel, onClick, className, sx, }: InkAiReasoningHeaderProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { SxProps, Theme } from '@mui/material';
2
+ export type InkAiThinkingIndicatorProps = {
3
+ /**
4
+ * The text label rendered with the purple gradient. Default: "Thinking…".
5
+ * Pass a label appropriate to the flow (e.g. "Doing some calculations…").
6
+ */
7
+ label?: string;
8
+ className?: string;
9
+ sx?: SxProps<Theme>;
10
+ };
11
+ /**
12
+ * Single-line purple-gradient label rendered while the assistant is in a
13
+ * pre-output "loading" state — before any reasoning or content arrives.
14
+ * Intended for use inside a custom CopilotKit `AssistantMessage` slot.
15
+ */
16
+ export declare const InkAiThinkingIndicator: ({ label, className, sx, }: InkAiThinkingIndicatorProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import type { SxProps, Theme } from '@mui/material';
2
+ /**
3
+ * Movable Ink AI assistant shimmering brand gradient applied via
4
+ * background-clip: text. Two stacked gradients — a moving white highlight
5
+ * over a horizontal brand-color band — animated to sweep continuously.
6
+ *
7
+ * Used by `InkAiThinkingIndicator` and by the streaming-state label in
8
+ * `InkAiReasoningHeader`.
9
+ *
10
+ * Visuals match `sampleMessage.html` (`.ai-status-text` / `--active`),
11
+ * which is itself derived from the Figma reference:
12
+ * https://www.figma.com/design/ZbPxTAveBsb7RRJyMj4Fbw/AI-Assistants?node-id=2437-5612
13
+ *
14
+ * Honors `prefers-reduced-motion: reduce` by stopping the animation while
15
+ * keeping the static gradient visible.
16
+ */
17
+ export declare const gradientTextSx: SxProps<Theme>;
@@ -0,0 +1,3 @@
1
+ export { InkAiThinkingIndicator, type InkAiThinkingIndicatorProps, } from './InkAiThinkingIndicator';
2
+ export { InkAiReasoningHeader, type InkAiReasoningHeaderProps, } from './InkAiReasoningHeader';
3
+ export { InkAiReasoningContent, type InkAiReasoningContentProps, } from './InkAiReasoningContent';
@@ -24,6 +24,8 @@ interface CollapsibleDrawerProps extends CommonDrawerProps {
24
24
  drawerType: 'basic' | 'filter';
25
25
  isOpen: boolean;
26
26
  handleDrawerClose: () => void;
27
+ closeIcon?: string;
28
+ closeTooltipText?: string;
27
29
  }
28
30
  interface PanelDrawerProps extends CommonDrawerProps {
29
31
  drawerType: 'panel';
@@ -13,6 +13,9 @@ export { InkToggleIcon } from './InkToggleIcon';
13
13
  export { InkToggleIconGroup, type InkToggleIconGroupProps, } from './InkToggleIconGroup';
14
14
  export { InkEmptyState } from './InkEmptyState';
15
15
  export { InkAttributeList } from './InkAttributeList';
16
+ export { InkAiChatInput, type InkAiChatInputProps, type ChatChip, type ScopeOption, } from './InkAiChatInput';
17
+ export { InkAiUserMessage, type InkAiUserMessageProps, InkAiAssistantMessage, type InkAiAssistantMessageProps, } from './InkAiMessages';
18
+ export { InkAiThinkingIndicator, type InkAiThinkingIndicatorProps, InkAiReasoningHeader, type InkAiReasoningHeaderProps, InkAiReasoningContent, type InkAiReasoningContentProps, } from './InkAiReasoning';
16
19
  export { InkImage } from './InkImage';
17
20
  export { InkDrawer } from './InkDrawer';
18
21
  export { InkComponentTile, type InkComponentTileProps, type InkTileIconProps, } from './InkComponentTile';
package/lib/index.d.ts CHANGED
@@ -126,6 +126,12 @@ declare type ChartProps<T extends ChartTypes> = {
126
126
 
127
127
  declare type ChartTypes = 'line' | 'bar' | 'pie';
128
128
 
129
+ export declare type ChatChip = {
130
+ id: string;
131
+ label: string;
132
+ icon?: ReactNode;
133
+ };
134
+
129
135
  declare type closeButtonType = {
130
136
  onClick: (e?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
131
137
  };
@@ -134,6 +140,8 @@ declare interface CollapsibleDrawerProps extends CommonDrawerProps {
134
140
  drawerType: 'basic' | 'filter';
135
141
  isOpen: boolean;
136
142
  handleDrawerClose: () => void;
143
+ closeIcon?: string;
144
+ closeTooltipText?: string;
137
145
  }
138
146
 
139
147
  declare interface CommonDrawerProps extends DrawerProps_2 {
@@ -338,6 +346,171 @@ export declare type InkAccordionProps = Omit<AccordionProps, 'children'> & {
338
346
  onDelete?: () => void;
339
347
  };
340
348
 
349
+ /**
350
+ * Renders an assistant message: markdown body styled with MUI typography
351
+ * + an inline action row (thumbs up/down/copy). No CopilotKit dependency —
352
+ * the consuming app wires this into CopilotKit's `AssistantMessage` slot.
353
+ *
354
+ * When `isLoading` is true, or when `content` is empty/whitespace, the
355
+ * `InkAiThinkingIndicator` is rendered in place of the body and the action
356
+ * row is hidden.
357
+ */
358
+ export declare const InkAiAssistantMessage: ({ content, isLoading, isGenerating, showActions, thinkingLabel, onCopy, onFeedback, className, sx, }: InkAiAssistantMessageProps) => JSX_2.Element;
359
+
360
+ export declare type InkAiAssistantMessageProps = {
361
+ /** Markdown string to render. */
362
+ content: string;
363
+ /**
364
+ * True when the LLM has accepted the prompt but has not yet produced any
365
+ * output. Renders the `InkAiThinkingIndicator` instead of the body.
366
+ * Mirrors CopilotKit's `isLoading` slot prop.
367
+ */
368
+ isLoading?: boolean;
369
+ /** True while the assistant is still streaming this message. Hides actions. */
370
+ isGenerating?: boolean;
371
+ /** Show the action row. Default: true when not generating. */
372
+ showActions?: boolean;
373
+ /**
374
+ * Optional label for the thinking indicator shown when `isLoading` is true
375
+ * or `content` is empty. Defaults to "Thinking…" (set by
376
+ * `InkAiThinkingIndicator`).
377
+ */
378
+ thinkingLabel?: string;
379
+ /**
380
+ * Called when the user clicks copy. Defaults to
381
+ * `navigator.clipboard.writeText(content)`.
382
+ */
383
+ onCopy?: (content: string) => void;
384
+ /** Called when the user clicks a feedback button. */
385
+ onFeedback?: (kind: 'up' | 'down') => void;
386
+ className?: string;
387
+ sx?: SxProps<Theme_2>;
388
+ };
389
+
390
+ export declare const InkAiChatInput: ForwardRefExoticComponent<InkAiChatInputProps & RefAttributes<HTMLDivElement>>;
391
+
392
+ export declare type InkAiChatInputProps = {
393
+ value: string;
394
+ onChange: (value: string) => void;
395
+ onSubmit: (value: string) => void;
396
+ isGenerating?: boolean;
397
+ onStop?: () => void;
398
+ disabled?: boolean;
399
+ placeholder?: string;
400
+ chips?: ChatChip[];
401
+ onRemoveChip?: (id: string) => void;
402
+ scopeOptions?: ScopeOption[];
403
+ scopeValue?: string;
404
+ onScopeChange?: (value: string) => void;
405
+ onAttachClick?: () => void;
406
+ onMentionClick?: () => void;
407
+ autoFocus?: boolean;
408
+ /**
409
+ * Stable name for the textarea. Also used as a fallback id for the scope
410
+ * select. Generated via `useId()` if omitted — supply explicitly when
411
+ * rendering multiple instances on the same page or when the consumer needs
412
+ * a predictable selector.
413
+ */
414
+ name?: string;
415
+ className?: string;
416
+ sx?: SxProps<Theme_2>;
417
+ };
418
+
419
+ /**
420
+ * Body slot for CopilotKit's CopilotChatReasoningMessage `contentView`
421
+ * slot. Renders the streaming/static reasoning text in a left-bordered
422
+ * caption-typography block.
423
+ */
424
+ export declare const InkAiReasoningContent: ({ isStreaming, hasContent, children, className, sx, }: InkAiReasoningContentProps) => JSX_2.Element | null;
425
+
426
+ export declare type InkAiReasoningContentProps = {
427
+ /** Whether reasoning is still streaming. */
428
+ isStreaming?: boolean;
429
+ /** Whether the reasoning content has any text yet. */
430
+ hasContent?: boolean;
431
+ /**
432
+ * The reasoning content. CopilotKit passes the message body string here.
433
+ * Rendered as plain text inside caption typography.
434
+ */
435
+ children?: ReactNode;
436
+ className?: string;
437
+ sx?: SxProps<Theme_2>;
438
+ };
439
+
440
+ /**
441
+ * Header row for CopilotKit's CopilotChatReasoningMessage `header` slot.
442
+ * Switches between a purple-gradient streaming label and a gray
443
+ * collapsible label with a rotating chevron.
444
+ */
445
+ export declare const InkAiReasoningHeader: ({ isOpen, isStreaming, hasContent, label, formatLabel, onClick, className, sx, }: InkAiReasoningHeaderProps) => JSX_2.Element;
446
+
447
+ export declare type InkAiReasoningHeaderProps = {
448
+ /** Currently expanded? Comes from CopilotKit. */
449
+ isOpen?: boolean;
450
+ /**
451
+ * Whether the reasoning is still streaming. Comes from CopilotKit.
452
+ * Drives the gradient/gray styling switch.
453
+ */
454
+ isStreaming?: boolean;
455
+ /**
456
+ * Whether reasoning has produced any content yet. Comes from CopilotKit.
457
+ * When false AND not streaming, the header is non-interactive and the
458
+ * chevron is hidden.
459
+ */
460
+ hasContent?: boolean;
461
+ /**
462
+ * Label string supplied by CopilotKit's CopilotChatReasoningMessage
463
+ * (e.g. "Thinking…", "Thought for 14 seconds"). Rendered as-is unless
464
+ * `formatLabel` is provided.
465
+ */
466
+ label?: string;
467
+ /**
468
+ * Optional escape hatch for consumers who want to rewrite CopilotKit's
469
+ * default wording without forking. Receives the original label and the
470
+ * current state; returns the string actually rendered.
471
+ */
472
+ formatLabel?: (label: string, ctx: {
473
+ isStreaming: boolean;
474
+ isOpen: boolean;
475
+ hasContent: boolean;
476
+ }) => string;
477
+ /** Click handler from CopilotKit; toggles open/closed. */
478
+ onClick?: () => void;
479
+ className?: string;
480
+ sx?: SxProps<Theme_2>;
481
+ };
482
+
483
+ /**
484
+ * Single-line purple-gradient label rendered while the assistant is in a
485
+ * pre-output "loading" state — before any reasoning or content arrives.
486
+ * Intended for use inside a custom CopilotKit `AssistantMessage` slot.
487
+ */
488
+ export declare const InkAiThinkingIndicator: ({ label, className, sx, }: InkAiThinkingIndicatorProps) => JSX_2.Element;
489
+
490
+ export declare type InkAiThinkingIndicatorProps = {
491
+ /**
492
+ * The text label rendered with the purple gradient. Default: "Thinking…".
493
+ * Pass a label appropriate to the flow (e.g. "Doing some calculations…").
494
+ */
495
+ label?: string;
496
+ className?: string;
497
+ sx?: SxProps<Theme_2>;
498
+ };
499
+
500
+ /**
501
+ * Light-blue user message bubble matching the Movable Ink AI assistant Figma
502
+ * design. Purely presentational — right-alignment within a conversation
503
+ * column is the parent's responsibility.
504
+ */
505
+ export declare const InkAiUserMessage: ({ content, className, sx, }: InkAiUserMessageProps) => JSX_2.Element;
506
+
507
+ export declare type InkAiUserMessageProps = {
508
+ /** Text content of the message. */
509
+ content: ReactNode;
510
+ className?: string;
511
+ sx?: SxProps<Theme_2>;
512
+ };
513
+
341
514
  /**
342
515
  * InkAlert component provides a consistent way to display alerts with proper
343
516
  * alignment and styling. It handles the vertical alignment issues when
@@ -615,7 +788,7 @@ export declare interface InkDataGridTextWrapCellProps {
615
788
  sx?: BoxProps['sx'];
616
789
  }
617
790
 
618
- export declare function InkDialog({ Title, Content, Actions, onClose, hideCloseButton, ActionsProp, children, ...props }: InkDialogProps): JSX_2.Element;
791
+ export declare function InkDialog({ Title, Content, Actions, onClose, hideCloseButton, ActionsProp, ActionDescription, children, ...props }: InkDialogProps): JSX_2.Element;
619
792
 
620
793
  export declare const inkDialog: InkDialogPageObject;
621
794
 
@@ -646,6 +819,7 @@ export declare type InkDialogProps = DialogProps & {
646
819
  hideCloseButton?: boolean;
647
820
  onClose: (e?: React_2.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
648
821
  ActionsProp?: ActionsPropType;
822
+ ActionDescription?: string | JSX.Element;
649
823
  };
650
824
 
651
825
  export declare function InkDrawer(props: PropsWithChildren<InkDrawerProps>): JSX_2.Element;
@@ -1018,7 +1192,7 @@ export declare class InkWorkflowHeaderPageObject {
1018
1192
  }
1019
1193
 
1020
1194
  declare type InkWorkflowHeaderProps = {
1021
- label: string;
1195
+ label: ReactNode;
1022
1196
  Stepper?: JSX.Element;
1023
1197
  ButtonGroup?: JSX.Element | ActionButtonPropType;
1024
1198
  subtitle?: string;
@@ -1188,6 +1362,12 @@ declare type RobustCardProps = BaseProps & {
1188
1362
  directIndirect?: DirectIndirectData;
1189
1363
  };
1190
1364
 
1365
+ export declare type ScopeOption = {
1366
+ value: string;
1367
+ label: string;
1368
+ icon?: ReactNode;
1369
+ };
1370
+
1191
1371
  export declare type SecondaryMetricData = {
1192
1372
  value: string;
1193
1373
  label: string;