@getsoren/design-system 4.58.0 → 4.60.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.
@@ -6,7 +6,7 @@
6
6
  */
7
7
  declare const AiAssistant: {
8
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;
9
+ EmptyState: ({ message, children }: import('./types').AiAssistantEmptyStateProps) => import("@emotion/react/jsx-runtime").JSX.Element;
10
10
  Fab: ({ open, onClick, tooltip, dataTestId }: import('./types').AiAssistantFabProps) => import("@emotion/react/jsx-runtime").JSX.Element;
11
11
  Header: ({ title, subtitle, onClose, icon }: import('./types').AiAssistantHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
12
12
  Panel: ({ open, isBusy, children, dataTestId }: import('./types').AiAssistantPanelProps) => import("@emotion/react/jsx-runtime").JSX.Element;
@@ -3,5 +3,5 @@ import { AiAssistantEmptyStateProps } from '../types';
3
3
  * Centered invitation for an empty thread — render it conditionally in place of the
4
4
  * message list content ({!messages.length && <AiAssistant.EmptyState … />}).
5
5
  */
6
- declare const AiAssistantEmptyState: ({ message }: AiAssistantEmptyStateProps) => import("@emotion/react/jsx-runtime").JSX.Element;
6
+ declare const AiAssistantEmptyState: ({ message, children }: AiAssistantEmptyStateProps) => import("@emotion/react/jsx-runtime").JSX.Element;
7
7
  export default AiAssistantEmptyState;
@@ -25,6 +25,8 @@ export interface AiAssistantHeaderProps {
25
25
  export interface AiAssistantEmptyStateProps {
26
26
  /** Invitation shown while the thread is empty (e.g. "I'm Atlas, ask me anything…") */
27
27
  message: string;
28
+ /** Rendered centered under the invitation — quick actions, suggestion pills… */
29
+ children?: ReactNode;
28
30
  }
29
31
  export interface AiAssistantThinkingOrbProps {
30
32
  /** Orb diameter in px */
@@ -5,5 +5,5 @@ import { ChatVoiceRecorderProps } from '../types';
5
5
  * the recorded audio Blob to `onRecorded`; transcription/upload is the caller's job
6
6
  * (drive `isProcessing` while it runs).
7
7
  */
8
- export declare const ChatVoiceRecorder: ({ onRecorded, onError, isProcessing, disabled, maxDurationMs, labels, }: ChatVoiceRecorderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
8
+ export declare const ChatVoiceRecorder: ({ onRecorded, onError, labels, isProcessing, disabled, autoSubmitOnSilence, maxDurationMs, silenceTimeoutMs, }: ChatVoiceRecorderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
9
9
  export default ChatVoiceRecorder;
@@ -118,15 +118,39 @@ export interface ChatVoiceRecorderLabels {
118
118
  send?: string;
119
119
  }
120
120
  export interface ChatVoiceRecorderProps {
121
- /** Receives the recorded audio once the user validates the take */
121
+ /**
122
+ * Receives the recorded audio once the user validates the take
123
+ */
122
124
  onRecorded: (audio: Blob) => void;
123
- /** Typically a denied microphone permission */
125
+ /**
126
+ * Typically a denied microphone permission
127
+ */
124
128
  onError?: (error: unknown) => void;
125
- /** The caller is consuming the recording (upload/transcription): spinner on the mic, new take blocked */
129
+ /**
130
+ * The caller is consuming the recording (upload/transcription): spinner on the mic, new take blocked
131
+ */
126
132
  isProcessing?: boolean;
133
+ /**
134
+ * Disables the mic button (e.g. the chat is busy sending) — no recording can be started
135
+ */
127
136
  disabled?: boolean;
128
- /** Hard stop: past this duration the take is validated automatically (default 2 min) */
137
+ /**
138
+ * Hard stop: past this duration the take is validated automatically (default 2 min)
139
+ */
129
140
  maxDurationMs?: number;
141
+ /**
142
+ * Enables Siri-style auto-send: once the user has started speaking, the take is validated automatically
143
+ * after a trailing silence. Opt-in (default false) so a shared consumer never auto-sends by surprise.
144
+ */
145
+ autoSubmitOnSilence?: boolean;
146
+ /**
147
+ * Trailing silence, in ms, before the take is auto-validated when `autoSubmitOnSilence` is on (default
148
+ * 2500). The timer only arms after the first speech is detected, so a slow start never cuts the user off.
149
+ */
150
+ silenceTimeoutMs?: number;
151
+ /**
152
+ * Translated strings for the tooltips (record / cancel / send) — falls back to English defaults
153
+ */
130
154
  labels?: ChatVoiceRecorderLabels;
131
155
  }
132
156
  export interface ChatParticipantDialogProps {
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.58.0",
5
+ "version": "4.60.0",
6
6
  "license": "ISC",
7
7
  "type": "module",
8
8
  "types": "./dist/src/main.d.ts",