@getsoren/design-system 4.57.0 → 4.58.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 (30) hide show
  1. package/dist/main.cjs +142 -139
  2. package/dist/main.js +17254 -15543
  3. package/dist/node_modules/@mui/material/esm/Button/Button.d.ts +132 -0
  4. package/dist/node_modules/@mui/material/esm/Button/buttonClasses.d.ts +194 -0
  5. package/dist/node_modules/@mui/material/esm/Button/index.d.ts +4 -0
  6. package/dist/node_modules/@mui/material/esm/ButtonGroup/ButtonGroupButtonContext.d.ts +6 -0
  7. package/dist/node_modules/@mui/material/esm/ButtonGroup/ButtonGroupContext.d.ts +18 -0
  8. package/dist/node_modules/@mui/material/esm/Fab/Fab.d.ts +82 -0
  9. package/dist/node_modules/@mui/material/esm/Fab/fabClasses.d.ts +26 -0
  10. package/dist/node_modules/@mui/material/esm/Fab/index.d.ts +4 -0
  11. package/dist/node_modules/@mui/material/esm/Tooltip/Tooltip.d.ts +230 -0
  12. package/dist/node_modules/@mui/material/esm/Tooltip/index.d.ts +4 -0
  13. package/dist/node_modules/@mui/material/esm/Tooltip/tooltipClasses.d.ts +30 -0
  14. package/dist/src/components/DataDisplay/AiAssistant/AiAssistant.d.ts +15 -0
  15. package/dist/src/components/DataDisplay/AiAssistant/components/AiAssistantConfirmationCard.d.ts +8 -0
  16. package/dist/src/components/DataDisplay/AiAssistant/components/AiAssistantEmptyState.d.ts +7 -0
  17. package/dist/src/components/DataDisplay/AiAssistant/components/AiAssistantFab.d.ts +9 -0
  18. package/dist/src/components/DataDisplay/AiAssistant/components/AiAssistantHeader.d.ts +4 -0
  19. package/dist/src/components/DataDisplay/AiAssistant/components/AiAssistantPanel.d.ts +9 -0
  20. package/dist/src/components/DataDisplay/AiAssistant/components/AiAssistantThinkingOrb.d.ts +9 -0
  21. package/dist/src/components/DataDisplay/AiAssistant/types.d.ts +56 -0
  22. package/dist/src/components/DataDisplay/Chat/Chat.d.ts +2 -0
  23. package/dist/src/components/DataDisplay/Chat/components/ChatMessageInput.d.ts +1 -1
  24. package/dist/src/components/DataDisplay/Chat/components/ChatVoiceRecorder.d.ts +9 -0
  25. package/dist/src/components/DataDisplay/Chat/types.d.ts +19 -1
  26. package/dist/src/components/DataDisplay/Icons/AiSparkIcon.d.ts +7 -0
  27. package/dist/src/components/DataDisplay/Icons/MicIcon.d.ts +5 -0
  28. package/dist/src/components/DataDisplay/Logo/Logo.d.ts +1 -1
  29. package/dist/src/main.d.ts +4 -0
  30. package/package.json +1 -1
@@ -0,0 +1,230 @@
1
+ import { MUIStyledCommonProps, SxProps } from '@mui/system';
2
+ import { PopperProps } from '../Popper/index.js';
3
+ import { Theme } from '../styles/index.js';
4
+ import { InternalStandardProps as StandardProps } from '../internal/index.js';
5
+ import { CreateSlotsAndSlotProps, SlotProps } from '../utils/types.js';
6
+ import { TransitionProps } from '../transitions/transition.js';
7
+ import { TooltipClasses } from './tooltipClasses.js';
8
+ import * as React from 'react';
9
+ export interface TooltipComponentsPropsOverrides {}
10
+ export interface TooltipPopperSlotPropsOverrides {}
11
+ export interface TooltipTransitionSlotPropsOverrides {}
12
+ export interface TooltipTooltipSlotPropsOverrides {}
13
+ export interface TooltipArrowSlotPropsOverrides {}
14
+ export interface TooltipSlots {
15
+ /**
16
+ * The component used for the popper.
17
+ * @default Popper
18
+ */
19
+ popper: React.ElementType;
20
+ /**
21
+ * The component used for the transition.
22
+ * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
23
+ * @default Grow
24
+ */
25
+ transition: React.ElementType;
26
+ /**
27
+ * The component used for the tooltip.
28
+ */
29
+ tooltip: React.ElementType;
30
+ /**
31
+ * The component used for the arrow.
32
+ */
33
+ arrow: React.ElementType;
34
+ }
35
+ export type TooltipSlotsAndSlotProps = CreateSlotsAndSlotProps<TooltipSlots, {
36
+ /**
37
+ * Props forwarded to the popper slot.
38
+ * By default, the available props are based on the [Popper](https://mui.com/material-ui/api/popper/#props) component.
39
+ */
40
+ popper: SlotProps<React.ElementType<PopperProps>, TooltipPopperSlotPropsOverrides, TooltipOwnerState>;
41
+ /**
42
+ * Props forwarded to the transition slot.
43
+ * By default, the available props are based on the [Grow](https://mui.com/material-ui/api/grow/#props) component.
44
+ */
45
+ transition: SlotProps<React.ElementType, TransitionProps & TooltipTransitionSlotPropsOverrides, TooltipOwnerState>;
46
+ /**
47
+ * Props forwarded to the tooltip slot.
48
+ * By default, the available props are based on the div element.
49
+ */
50
+ tooltip: SlotProps<'div', TooltipTooltipSlotPropsOverrides, TooltipOwnerState>;
51
+ /**
52
+ * Props forwarded to the tooltip slot.
53
+ * By default, the available props are based on the span element.
54
+ */
55
+ arrow: SlotProps<'span', TooltipArrowSlotPropsOverrides, TooltipOwnerState>;
56
+ }>;
57
+ export interface TooltipProps extends StandardProps<React.HTMLAttributes<HTMLDivElement>, 'title'>, TooltipSlotsAndSlotProps {
58
+ /**
59
+ * If `true`, adds an arrow to the tooltip.
60
+ * @default false
61
+ */
62
+ arrow?: boolean | undefined;
63
+ /**
64
+ * Tooltip reference element.
65
+ */
66
+ children: React.ReactElement<unknown, any>;
67
+ /**
68
+ * Override or extend the styles applied to the component.
69
+ */
70
+ classes?: Partial<TooltipClasses> | undefined;
71
+ /**
72
+ * The components used for each slot inside.
73
+ *
74
+ * @deprecated use the `slots` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
75
+ *
76
+ * @default {}
77
+ */
78
+ components?: {
79
+ Popper?: React.ElementType<PopperProps> | undefined;
80
+ Transition?: React.ElementType | undefined;
81
+ Tooltip?: React.ElementType | undefined;
82
+ Arrow?: React.ElementType | undefined;
83
+ } | undefined;
84
+ /**
85
+ * The extra props for the slot components.
86
+ * You can override the existing props or add new ones.
87
+ *
88
+ * @deprecated use the `slotProps` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
89
+ *
90
+ * @default {}
91
+ */
92
+ componentsProps?: {
93
+ popper?: (Partial<PopperProps> & TooltipComponentsPropsOverrides) | undefined;
94
+ transition?: (TransitionProps & TooltipComponentsPropsOverrides) | undefined;
95
+ tooltip?: (React.HTMLProps<HTMLDivElement> & MUIStyledCommonProps & TooltipComponentsPropsOverrides) | undefined;
96
+ arrow?: (React.HTMLProps<HTMLSpanElement> & MUIStyledCommonProps & TooltipComponentsPropsOverrides) | undefined;
97
+ } | undefined;
98
+ /**
99
+ * Set to `true` if the `title` acts as an accessible description.
100
+ * By default the `title` acts as an accessible label for the child.
101
+ * @default false
102
+ */
103
+ describeChild?: boolean | undefined;
104
+ /**
105
+ * Do not respond to focus-visible events.
106
+ * @default false
107
+ */
108
+ disableFocusListener?: boolean | undefined;
109
+ /**
110
+ * Do not respond to hover events.
111
+ * @default false
112
+ */
113
+ disableHoverListener?: boolean | undefined;
114
+ /**
115
+ * Makes a tooltip not interactive, i.e. it will close when the user
116
+ * hovers over the tooltip before the `leaveDelay` is expired.
117
+ * @default false
118
+ */
119
+ disableInteractive?: boolean | undefined;
120
+ /**
121
+ * Do not respond to long press touch events.
122
+ * @default false
123
+ */
124
+ disableTouchListener?: boolean | undefined;
125
+ /**
126
+ * The number of milliseconds to wait before showing the tooltip.
127
+ * This prop won't impact the enter touch delay (`enterTouchDelay`).
128
+ * @default 100
129
+ */
130
+ enterDelay?: number | undefined;
131
+ /**
132
+ * The number of milliseconds to wait before showing the tooltip when one was already recently opened.
133
+ * @default 0
134
+ */
135
+ enterNextDelay?: number | undefined;
136
+ /**
137
+ * The number of milliseconds a user must touch the element before showing the tooltip.
138
+ * @default 700
139
+ */
140
+ enterTouchDelay?: number | undefined;
141
+ /**
142
+ * If `true`, the tooltip follow the cursor over the wrapped element.
143
+ * @default false
144
+ */
145
+ followCursor?: boolean | undefined;
146
+ /**
147
+ * This prop is used to help implement the accessibility logic.
148
+ * If you don't provide this prop. It falls back to a randomly generated id.
149
+ */
150
+ id?: string | undefined;
151
+ /**
152
+ * The number of milliseconds to wait before hiding the tooltip.
153
+ * This prop won't impact the leave touch delay (`leaveTouchDelay`).
154
+ * @default 0
155
+ */
156
+ leaveDelay?: number | undefined;
157
+ /**
158
+ * The number of milliseconds after the user stops touching an element before hiding the tooltip.
159
+ * @default 1500
160
+ */
161
+ leaveTouchDelay?: number | undefined;
162
+ /**
163
+ * Callback fired when the component requests to be closed.
164
+ *
165
+ * @param {React.SyntheticEvent} event The event source of the callback.
166
+ */
167
+ onClose?: ((event: React.SyntheticEvent | Event) => void) | undefined;
168
+ /**
169
+ * Callback fired when the component requests to be open.
170
+ *
171
+ * @param {React.SyntheticEvent} event The event source of the callback.
172
+ */
173
+ onOpen?: ((event: React.SyntheticEvent) => void) | undefined;
174
+ /**
175
+ * If `true`, the component is shown.
176
+ */
177
+ open?: boolean | undefined;
178
+ /**
179
+ * Tooltip placement.
180
+ * @default 'bottom'
181
+ */
182
+ placement?: PopperProps['placement'] | undefined;
183
+ /**
184
+ * The component used for the popper.
185
+ * @deprecated use the `slots.popper` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
186
+ */
187
+ PopperComponent?: React.JSXElementConstructor<PopperProps> | undefined;
188
+ /**
189
+ * Props applied to the [`Popper`](https://mui.com/material-ui/api/popper/) element.
190
+ * @deprecated use the `slotProps.popper` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
191
+ * @default {}
192
+ */
193
+ PopperProps?: Partial<PopperProps> | undefined;
194
+ /**
195
+ * The system prop that allows defining system overrides as well as additional CSS styles.
196
+ */
197
+ sx?: SxProps<Theme> | undefined;
198
+ /**
199
+ * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.
200
+ */
201
+ title: React.ReactNode;
202
+ /**
203
+ * The component used for the transition.
204
+ * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
205
+ * @deprecated use the `slots.transition` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
206
+ */
207
+ TransitionComponent?: React.JSXElementConstructor<TransitionProps & {
208
+ children: React.ReactElement<unknown, any>;
209
+ }> | undefined;
210
+ /**
211
+ * Props applied to the transition element.
212
+ * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
213
+ * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
214
+ * @default {}
215
+ */
216
+ TransitionProps?: TransitionProps | undefined;
217
+ }
218
+ export interface TooltipOwnerState extends TooltipProps {}
219
+
220
+ /**
221
+ *
222
+ * Demos:
223
+ *
224
+ * - [Tooltip](https://v7.mui.com/material-ui/react-tooltip/)
225
+ *
226
+ * API:
227
+ *
228
+ * - [Tooltip API](https://v7.mui.com/material-ui/api/tooltip/)
229
+ */
230
+ export default function Tooltip(props: TooltipProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ export { default } from './Tooltip.js';
2
+ export * from './Tooltip.js';
3
+ export { default as tooltipClasses } from './tooltipClasses.js';
4
+ export * from './tooltipClasses.js';
@@ -0,0 +1,30 @@
1
+ export interface TooltipClasses {
2
+ /** Styles applied to the Popper component. */
3
+ popper: string;
4
+ /** Styles applied to the Popper component unless `disableInteractive={true}`. */
5
+ popperInteractive: string;
6
+ /** Styles applied to the Popper component if `arrow={true}`. */
7
+ popperArrow: string;
8
+ /** Styles applied to the Popper component unless the tooltip is open. */
9
+ popperClose: string;
10
+ /** Styles applied to the tooltip (label wrapper) element. */
11
+ tooltip: string;
12
+ /** Styles applied to the tooltip (label wrapper) element if `arrow={true}`. */
13
+ tooltipArrow: string;
14
+ /** Styles applied to the arrow element. */
15
+ arrow: string;
16
+ /** Styles applied to the tooltip (label wrapper) element if the tooltip is opened by touch. */
17
+ touch: string;
18
+ /** Styles applied to the tooltip (label wrapper) element if `placement` contains "left". */
19
+ tooltipPlacementLeft: string;
20
+ /** Styles applied to the tooltip (label wrapper) element if `placement` contains "right". */
21
+ tooltipPlacementRight: string;
22
+ /** Styles applied to the tooltip (label wrapper) element if `placement` contains "top". */
23
+ tooltipPlacementTop: string;
24
+ /** Styles applied to the tooltip (label wrapper) element if `placement` contains "bottom". */
25
+ tooltipPlacementBottom: string;
26
+ }
27
+ export type TooltipClassKey = keyof TooltipClasses;
28
+ export declare function getTooltipUtilityClass(slot: string): string;
29
+ declare const tooltipClasses: TooltipClasses;
30
+ export default tooltipClasses;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Building blocks for an in-app AI assistant (FAB orb, floating panel, header,
3
+ * thinking orb, confirmation cards). Purely presentational: the host app owns the
4
+ * agentic loop, the tools and the wording (assistant name, i18n labels) — combine
5
+ * with Chat.MessageBubble / Chat.MessageInput / Chat.VoiceRecorder for the thread.
6
+ */
7
+ declare const AiAssistant: {
8
+ ConfirmationCard: ({ heading, summary, details, status, onAccept, onDecline, labels, dataTestId, }: import('./types').AiAssistantConfirmationCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
9
+ EmptyState: ({ message }: import('./types').AiAssistantEmptyStateProps) => import("@emotion/react/jsx-runtime").JSX.Element;
10
+ Fab: ({ open, onClick, tooltip, dataTestId }: import('./types').AiAssistantFabProps) => import("@emotion/react/jsx-runtime").JSX.Element;
11
+ Header: ({ title, subtitle, onClose, icon }: import('./types').AiAssistantHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
12
+ Panel: ({ open, isBusy, children, dataTestId }: import('./types').AiAssistantPanelProps) => import("@emotion/react/jsx-runtime").JSX.Element;
13
+ ThinkingOrb: ({ size }: import('./types').AiAssistantThinkingOrbProps) => import("@emotion/react/jsx-runtime").JSX.Element;
14
+ };
15
+ export default AiAssistant;
@@ -0,0 +1,8 @@
1
+ import { AiAssistantConfirmationCardProps } from '../types';
2
+ /**
3
+ * Human-in-the-loop gate for destructive assistant actions: shows what is about to be
4
+ * done and blocks until the user accepts or declines. After the choice, the card stays
5
+ * in the thread as a record of the decision.
6
+ */
7
+ declare const AiAssistantConfirmationCard: ({ heading, summary, details, status, onAccept, onDecline, labels, dataTestId, }: AiAssistantConfirmationCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
8
+ export default AiAssistantConfirmationCard;
@@ -0,0 +1,7 @@
1
+ import { AiAssistantEmptyStateProps } from '../types';
2
+ /**
3
+ * Centered invitation for an empty thread — render it conditionally in place of the
4
+ * message list content ({!messages.length && <AiAssistant.EmptyState … />}).
5
+ */
6
+ declare const AiAssistantEmptyState: ({ message }: AiAssistantEmptyStateProps) => import("@emotion/react/jsx-runtime").JSX.Element;
7
+ export default AiAssistantEmptyState;
@@ -0,0 +1,9 @@
1
+ import { AiAssistantFabProps } from '../types';
2
+ /**
3
+ * The assistant's floating action button — a liquid orb: iridescent gradient flow,
4
+ * blob morph, breath and pulsing aura while idle; calm circle with a close glyph when
5
+ * the panel is open. The animations live on a ::before layer so the hit-box never
6
+ * moves (reliable clicks, stable e2e).
7
+ */
8
+ declare const AiAssistantFab: ({ open, onClick, tooltip, dataTestId }: AiAssistantFabProps) => import("@emotion/react/jsx-runtime").JSX.Element;
9
+ export default AiAssistantFab;
@@ -0,0 +1,4 @@
1
+ import { AiAssistantHeaderProps } from '../types';
2
+ /** Panel header: brand icon + assistant name (host-app choice) + close */
3
+ declare const AiAssistantHeader: ({ title, subtitle, onClose, icon }: AiAssistantHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
4
+ export default AiAssistantHeader;
@@ -0,0 +1,9 @@
1
+ import { AiAssistantPanelProps } from '../types';
2
+ /**
3
+ * Floating chat widget — no modal backdrop, so the host app stays visible (and usable)
4
+ * while the assistant navigates. While `isBusy`, a soft iridescent aura breathes around
5
+ * the panel; every animation frame keeps an ambient depth shadow (the animation
6
+ * overrides the elevation one).
7
+ */
8
+ declare const AiAssistantPanel: ({ open, isBusy, children, dataTestId }: AiAssistantPanelProps) => import("@emotion/react/jsx-runtime").JSX.Element;
9
+ export default AiAssistantPanel;
@@ -0,0 +1,9 @@
1
+ import { AiAssistantThinkingOrbProps } from '../types';
2
+ /**
3
+ * Living mini-orb shown while the assistant thinks — same visual language as the FAB
4
+ * orb: iridescent flow, blob morph, breath and pulsing aura (aura spread scales with
5
+ * size). Emotion emits @keyframes globally, hence the size-suffixed aura name (its
6
+ * content differs per size — the same name would collide).
7
+ */
8
+ declare const AiAssistantThinkingOrb: ({ size }: AiAssistantThinkingOrbProps) => import("@emotion/react/jsx-runtime").JSX.Element;
9
+ export default AiAssistantThinkingOrb;
@@ -0,0 +1,56 @@
1
+ import { ReactNode } from 'react';
2
+ export interface AiAssistantFabProps {
3
+ /** Panel visibility — the FAB shows a close glyph and calms down when open */
4
+ open: boolean;
5
+ onClick: () => void;
6
+ /** Tooltip content (e.g. the assistant's name) */
7
+ tooltip?: string;
8
+ dataTestId?: string;
9
+ }
10
+ export interface AiAssistantPanelProps {
11
+ open: boolean;
12
+ /** The assistant is working (streaming/tools): the panel breathes an iridescent aura */
13
+ isBusy?: boolean;
14
+ children: ReactNode;
15
+ dataTestId?: string;
16
+ }
17
+ export interface AiAssistantHeaderProps {
18
+ /** Product name of the assistant — a brand chosen by the host app */
19
+ title: string;
20
+ subtitle?: string;
21
+ onClose: () => void;
22
+ /** Defaults to the gradient AI spark */
23
+ icon?: ReactNode;
24
+ }
25
+ export interface AiAssistantEmptyStateProps {
26
+ /** Invitation shown while the thread is empty (e.g. "I'm Atlas, ask me anything…") */
27
+ message: string;
28
+ }
29
+ export interface AiAssistantThinkingOrbProps {
30
+ /** Orb diameter in px */
31
+ size?: number;
32
+ }
33
+ export interface AiAssistantConfirmationCardProps {
34
+ /** Small caption above the action ("Action to confirm") */
35
+ heading: string;
36
+ /** Human-readable sentence describing the action */
37
+ summary: string;
38
+ /** Raw params fallback, rendered monospace when provided */
39
+ details?: string;
40
+ status: "approved" | "declined" | "pending";
41
+ onAccept: () => void;
42
+ onDecline: () => void;
43
+ labels: {
44
+ accept: string;
45
+ decline: string;
46
+ };
47
+ dataTestId?: string;
48
+ }
49
+ export interface AiSparkIconProps {
50
+ /** Icon box in px */
51
+ size?: number;
52
+ /** Solid fill — ignored with variant="gradient" */
53
+ color?: string;
54
+ /** "solid" (currentColor/color) or "gradient" (brand gradient) */
55
+ variant?: "gradient" | "solid";
56
+ }
@@ -4,6 +4,7 @@ import { default as ChatConversationList } from './components/ChatConversationLi
4
4
  import { default as ChatMessageBubble } from './components/ChatMessageBubble';
5
5
  import { default as ChatMessageInput } from './components/ChatMessageInput';
6
6
  import { default as ChatParticipantDialog } from './components/ChatParticipantDialog';
7
+ import { default as ChatVoiceRecorder } from './components/ChatVoiceRecorder';
7
8
  interface ChatProps {
8
9
  children: ReactNode;
9
10
  height?: string | number;
@@ -20,6 +21,7 @@ type ChatComponent = FC<ChatProps> & {
20
21
  MessageBubble: typeof ChatMessageBubble;
21
22
  MessageInput: typeof ChatMessageInput;
22
23
  ParticipantDialog: typeof ChatParticipantDialog;
24
+ VoiceRecorder: typeof ChatVoiceRecorder;
23
25
  };
24
26
  declare const Chat: ChatComponent;
25
27
  export default Chat;
@@ -1,3 +1,3 @@
1
1
  import { ChatMessageInputProps } from '../types';
2
- declare const ChatMessageInput: ({ onSend, labels, autoFocusKey, isSending, defaultMessage, maxLength }: ChatMessageInputProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ declare const ChatMessageInput: ({ onSend, labels, autoFocusKey, isSending, defaultMessage, maxLength, startActions, }: ChatMessageInputProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
3
  export default ChatMessageInput;
@@ -0,0 +1,9 @@
1
+ import { ChatVoiceRecorderProps } from '../types';
2
+ /**
3
+ * Voice input for a chat composer: mic button that expands into a recording panel
4
+ * (pulsing dot, elapsed time, cancel / validate). Transport-agnostic — it only hands
5
+ * the recorded audio Blob to `onRecorded`; transcription/upload is the caller's job
6
+ * (drive `isProcessing` while it runs).
7
+ */
8
+ export declare const ChatVoiceRecorder: ({ onRecorded, onError, isProcessing, disabled, maxDurationMs, labels, }: ChatVoiceRecorderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
9
+ export default ChatVoiceRecorder;
@@ -100,7 +100,6 @@ export interface ChatMessageBubbleProps {
100
100
  avatarSrcResolver?: (src?: string | null) => string | undefined;
101
101
  renderAfterBubble?: (urls: string[]) => ReactNode;
102
102
  formatTime?: (date: string) => string;
103
- /** Hide the author avatar on received messages (e.g. single-author AI assistant chat) */
104
103
  hideAvatar?: boolean;
105
104
  }
106
105
  export interface ChatMessageInputProps {
@@ -110,6 +109,25 @@ export interface ChatMessageInputProps {
110
109
  isSending?: boolean;
111
110
  defaultMessage?: string;
112
111
  maxLength?: number;
112
+ /** Rendered on the left of the bottom bar, facing the send button (e.g. ChatVoiceRecorder) */
113
+ startActions?: ReactNode;
114
+ }
115
+ export interface ChatVoiceRecorderLabels {
116
+ record?: string;
117
+ cancel?: string;
118
+ send?: string;
119
+ }
120
+ export interface ChatVoiceRecorderProps {
121
+ /** Receives the recorded audio once the user validates the take */
122
+ onRecorded: (audio: Blob) => void;
123
+ /** Typically a denied microphone permission */
124
+ onError?: (error: unknown) => void;
125
+ /** The caller is consuming the recording (upload/transcription): spinner on the mic, new take blocked */
126
+ isProcessing?: boolean;
127
+ disabled?: boolean;
128
+ /** Hard stop: past this duration the take is validated automatically (default 2 min) */
129
+ maxDurationMs?: number;
130
+ labels?: ChatVoiceRecorderLabels;
113
131
  }
114
132
  export interface ChatParticipantDialogProps {
115
133
  open: boolean;
@@ -0,0 +1,7 @@
1
+ import { AiSparkIconProps } from '../AiAssistant/types';
2
+ /**
3
+ * Four-point spark with concave curved edges — the filled, organic "AI" glyph
4
+ * used across the AiAssistant components (FAB, panel header).
5
+ */
6
+ declare const AiSparkIcon: ({ size, color, variant }: AiSparkIconProps) => import("@emotion/react/jsx-runtime").JSX.Element;
7
+ export default AiSparkIcon;
@@ -0,0 +1,5 @@
1
+ interface MicIconProps {
2
+ color?: string;
3
+ }
4
+ declare const MicIcon: ({ color }: MicIconProps) => import("@emotion/react/jsx-runtime").JSX.Element;
5
+ export default MicIcon;
@@ -51,5 +51,5 @@ type ImgLogoProps = CommonLogoProps & {
51
51
  component?: "img";
52
52
  };
53
53
  export type LogoProps = SvgLogoProps | ImgLogoProps;
54
- declare const _default: import('react').ForwardRefExoticComponent<LogoProps & import('react').RefAttributes<HTMLDivElement | HTMLImageElement | SVGSVGElement>>;
54
+ declare const _default: import('react').ForwardRefExoticComponent<LogoProps & import('react').RefAttributes<SVGSVGElement | HTMLDivElement | HTMLImageElement>>;
55
55
  export default _default;
@@ -1,5 +1,7 @@
1
1
  export * from '@mui/material';
2
2
  export * from '@mui/material/transitions';
3
+ export { default as AiAssistant } from './components/DataDisplay/AiAssistant/AiAssistant';
4
+ export * from './components/DataDisplay/AiAssistant/types';
3
5
  export * from './components/DataDisplay/ArticleImage';
4
6
  export { default as ArticleImage } from './components/DataDisplay/ArticleImage';
5
7
  export * from './components/DataDisplay/Avatar';
@@ -16,11 +18,13 @@ export { default as ChatConversationList } from './components/DataDisplay/Chat/c
16
18
  export { default as ChatMessageBubble } from './components/DataDisplay/Chat/components/ChatMessageBubble';
17
19
  export { default as ChatMessageInput } from './components/DataDisplay/Chat/components/ChatMessageInput';
18
20
  export { default as ChatParticipantDialog } from './components/DataDisplay/Chat/components/ChatParticipantDialog';
21
+ export { default as ChatVoiceRecorder } from './components/DataDisplay/Chat/components/ChatVoiceRecorder';
19
22
  export * from './components/DataDisplay/Chat/types';
20
23
  export * from './components/DataDisplay/Chip';
21
24
  export { default as Chip } from './components/DataDisplay/Chip';
22
25
  export * from './components/DataDisplay/FileViewer';
23
26
  export { default as FileViewer } from './components/DataDisplay/FileViewer';
27
+ export { default as AiSparkIcon } from './components/DataDisplay/Icons/AiSparkIcon';
24
28
  export * from './components/DataDisplay/Kanban/Kanban';
25
29
  export { default as Kanban } from './components/DataDisplay/Kanban/Kanban';
26
30
  export * from './components/DataDisplay/ListAvatar';
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@getsoren/design-system",
3
3
  "description": "Design System React library",
4
4
  "sideEffects": false,
5
- "version": "4.57.0",
5
+ "version": "4.58.0",
6
6
  "license": "ISC",
7
7
  "type": "module",
8
8
  "types": "./dist/src/main.d.ts",