@epam/ai-dial-conversation-input 1.1.0-dev.11 → 1.1.0-dev.17

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.
@@ -1 +1 @@
1
- {"version":3,"file":"EditMessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/EditMessageInput/EditMessageInput.tsx"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAI5E,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAmKtD,CAAC"}
1
+ {"version":3,"file":"EditMessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/EditMessageInput/EditMessageInput.tsx"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAI5E,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAqKtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAeA,OAAO,EAEL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUrD,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CA+ahC,CAAC"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAeA,OAAO,EAEL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUrD,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAgbhC,CAAC"}
@@ -1,35 +1,33 @@
1
- import { CSSProperties, FC } from 'react';
1
+ import { CSSProperties, FC, RefObject } from 'react';
2
2
  import { VoiceRecorderState } from '../../hooks/useVoiceRecorder';
3
3
  /** Props accepted by the `VoiceBar` component. */
4
4
  export interface VoiceBarProps {
5
5
  /** Current recorder state — must not be `'idle'` when this component is rendered. */
6
6
  state: VoiceRecorderState;
7
- /** Accumulated RMS amplitude history. `null` before recording starts. */
8
- waveformData: Float32Array | null;
7
+ /** Stable ref to the live `AnalyserNode` during recording; `.current` is `null` when idle. */
8
+ analyserNodeRef: RefObject<AnalyserNode | null>;
9
+ /** Elapsed recording time in whole seconds. */
10
+ elapsedSeconds: number;
9
11
  /** Error message in `error` state; `null` otherwise. */
10
12
  errorMessage: string | null;
11
- /** Called when the user clicks the red mic button to stop recording. */
13
+ /** Called when the user clicks the stop button to finish recording. */
12
14
  onStop: () => void;
13
- /** Called when the user clicks the checkmark to confirm, or retry after an error. */
14
- onConfirm: () => void;
15
- /** Called when the user clicks the X to discard the recording or cancel uploading. */
15
+ /** Called when the user clicks the X to discard the recording. */
16
16
  onDiscard: () => void;
17
- /** Accessible label for the stop-recording mic button. Defaults to `'Stop recording'`. */
17
+ /** Accessible label for the stop-recording button. Defaults to `'Stop recording'`. */
18
18
  stopLabel?: string;
19
- /** Accessible label for the confirm / retry button. Defaults to `'Send voice message'`. */
20
- confirmLabel?: string;
21
19
  /** Accessible label for the discard / cancel button. Defaults to `'Discard recording'`. */
22
20
  discardLabel?: string;
23
- /** Accessible label for the uploading progress indicator. Defaults to `'Uploading…'`. */
24
- uploadingLabel?: string;
21
+ /** Accessible label for the recording timer region. Defaults to `'Recording time'`. */
22
+ timerLabel?: string;
25
23
  /** CSS custom properties forwarded from the parent (e.g. `--ci-bg`, `--ci-border`). */
26
24
  style?: CSSProperties;
27
25
  /** Extra class names applied to the root element. */
28
26
  className?: string;
29
27
  }
30
28
  /**
31
- * Renders the voice recording bar: waveform canvas, state-based controls,
32
- * and an error text for the `error` state. Replaces the `Input` component
29
+ * Renders the voice recording bar: a live MM:SS timer, a scrolling waveform canvas
30
+ * driven by a ring buffer, and state-based controls. Replaces the `Input` component
33
31
  * while voice state is not `idle`.
34
32
  */
35
33
  export declare const VoiceBar: FC<VoiceBarProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceBar.d.ts","sourceRoot":"","sources":["../../../src/components/VoiceBar/VoiceBar.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EAIR,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AASlE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,KAAK,EAAE,kBAAkB,CAAC;IAC1B,yEAAyE;IACzE,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,wDAAwD;IACxD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wEAAwE;IACxE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,qFAAqF;IACrF,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,sFAAsF;IACtF,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAyNtC,CAAC"}
1
+ {"version":3,"file":"VoiceBar.d.ts","sourceRoot":"","sources":["../../../src/components/VoiceBar/VoiceBar.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EACP,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAWlE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,KAAK,EAAE,kBAAkB,CAAC;IAC1B,8FAA8F;IAC9F,eAAe,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAChD,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uEAAuE;IACvE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,kEAAkE;IAClE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAuMtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAttachments.d.ts","sourceRoot":"","sources":["../../src/hooks/useAttachments.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,qBAAqB,EAGtB,MAAM,2BAA2B,CAAC;AAInC,sDAAsD;AACtD,UAAU,oBAAoB;IAC5B,sDAAsD;IACtD,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CACnB,UAAU,EAAE,UAAU,KACnB,qBAAqB,GAAG,SAAS,CAAC;IACvC,yDAAyD;IACzD,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzB,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,4EAA4E;IAC5E,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,4DAA4D;IAC5D,4BAA4B,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oFAAoF;IACpF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAED,uDAAuD;AACvD,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gFAAgF;IAChF,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;IAClD,kFAAkF;IAClF,cAAc,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,+EAA+E;IAC/E,gBAAgB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAChD,6EAA6E;IAC7E,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,sDAAsD;IACtD,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8DAA8D;IAC9D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,0EAA0E;IAC1E,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,gRAa5B,oBAAoB,KAAG,oBAwQzB,CAAC"}
1
+ {"version":3,"file":"useAttachments.d.ts","sourceRoot":"","sources":["../../src/hooks/useAttachments.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,qBAAqB,EAGtB,MAAM,2BAA2B,CAAC;AAInC,sDAAsD;AACtD,UAAU,oBAAoB;IAC5B,sDAAsD;IACtD,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CACnB,UAAU,EAAE,UAAU,KACnB,qBAAqB,GAAG,SAAS,CAAC;IACvC,yDAAyD;IACzD,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzB,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,4EAA4E;IAC5E,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,4DAA4D;IAC5D,4BAA4B,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oFAAoF;IACpF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAED,uDAAuD;AACvD,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gFAAgF;IAChF,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;IAClD,kFAAkF;IAClF,cAAc,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,+EAA+E;IAC/E,gBAAgB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAChD,6EAA6E;IAC7E,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,sDAAsD;IACtD,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8DAA8D;IAC9D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,0EAA0E;IAC1E,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,gRAa5B,oBAAoB,KAAG,oBAyQzB,CAAC"}
@@ -4,45 +4,43 @@ export declare enum VoiceRecorderState {
4
4
  Idle = "idle",
5
5
  /** Microphone is open and audio is being captured. */
6
6
  Recording = "recording",
7
- /** Recording has ended; awaiting user confirmation or discard. */
8
- Stopped = "stopped",
9
- /** Audio is being uploaded and transcribed. */
10
- Uploading = "uploading",
11
- /** An error occurred during recording, upload, or transcription. */
7
+ /** An error occurred during microphone access (e.g. permission denied). */
12
8
  Error = "error"
13
9
  }
14
10
  /** Options accepted by `useVoiceRecorder`. */
15
11
  export interface UseVoiceRecorderOptions {
16
- /** Called when the user confirms the recording. Resolves with the DIAL storage URL. */
17
- onUploadAudio?: (file: File, contentType: string) => Promise<string>;
18
- /** Called after successful upload. Resolves with the transcript text. */
19
- onTranscribeAudio?: (audioUrl: string) => Promise<string>;
20
- /** Called when transcription completes successfully. */
21
- onTranscript?: (transcript: string) => void;
12
+ /** Called when the user stops recording. Receives a ready-to-attach `File` with a timestamped name. */
13
+ onAttachAudio: (file: File) => void;
22
14
  }
23
15
  /** Return value of `useVoiceRecorder`. */
24
16
  export interface UseVoiceRecorderResult {
25
17
  /** Current recorder state. */
26
18
  state: VoiceRecorderState;
27
- /** Accumulated RMS amplitude history (one value per ~30 fps frame). `null` when idle. Frozen on stop. */
28
- waveformData: Float32Array | null;
19
+ /**
20
+ * Stable ref to the live `AnalyserNode` during recording; `.current` is `null` when idle.
21
+ * Passed to `VoiceBar` for waveform rendering.
22
+ */
23
+ analyserNodeRef: React.RefObject<AnalyserNode | null>;
24
+ /** Elapsed recording time in whole seconds. Resets to `0` when transitioning to `idle`. */
25
+ elapsedSeconds: number;
29
26
  /** Human-readable error message in `error` state, otherwise `null`. */
30
27
  errorMessage: string | null;
31
28
  /** Requests microphone access and starts recording. No-op unless `state === 'idle'`. */
32
29
  startRecording: () => void;
33
- /** Stops the active recording. No-op unless `state === 'recording'`. */
30
+ /**
31
+ * Stops the active recording, calls `onAttachAudio` with the blob, and resets to `idle`.
32
+ * No-op unless `state === 'recording'`.
33
+ */
34
34
  stopRecording: () => void;
35
- /** Uploads and transcribes the recorded audio. No-op unless `state === 'stopped' | 'error'`. */
36
- confirmRecording: () => void;
37
35
  /** Discards the current recording and resets to `idle`. Works from any non-idle state. */
38
36
  discardRecording: () => void;
39
37
  }
40
38
  /**
41
- * Manages the five-state voice recording lifecycle:
42
- * `idle` → `recording` → `stopped` `uploading` `idle` (success) | `error` (failure)
39
+ * Manages the three-state voice recording lifecycle:
40
+ * `idle` → `recording` → `idle` (blob attached on stop) | `error` (permission denied)
43
41
  *
44
- * Waveform data is sampled via `AnalyserNode` at ~30 fps during recording and
45
- * frozen on stop. Media resources are released on discard and on unmount.
42
+ * On stop the recorded blob is passed to `onAttachAudio` and the state resets to `idle`.
43
+ * Media resources are released on discard and on unmount.
46
44
  */
47
- export declare const useVoiceRecorder: ({ onUploadAudio, onTranscribeAudio, onTranscript, }: UseVoiceRecorderOptions) => UseVoiceRecorderResult;
45
+ export declare const useVoiceRecorder: ({ onAttachAudio, }: UseVoiceRecorderOptions) => UseVoiceRecorderResult;
48
46
  //# sourceMappingURL=useVoiceRecorder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAEA,uDAAuD;AACvD,oBAAY,kBAAkB;IAC5B,0DAA0D;IAC1D,IAAI,SAAS;IACb,sDAAsD;IACtD,SAAS,cAAc;IACvB,kEAAkE;IAClE,OAAO,YAAY;IACnB,+CAA+C;IAC/C,SAAS,cAAc;IACvB,oEAAoE;IACpE,KAAK,UAAU;CAChB;AAED,8CAA8C;AAC9C,MAAM,WAAW,uBAAuB;IACtC,uFAAuF;IACvF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,wDAAwD;IACxD,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,yGAAyG;IACzG,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,uEAAuE;IACvE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wFAAwF;IACxF,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,wEAAwE;IACxE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gGAAgG;IAChG,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,0FAA0F;IAC1F,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAYD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,qDAI9B,uBAAuB,KAAG,sBAmL5B,CAAC"}
1
+ {"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAEA,uDAAuD;AACvD,oBAAY,kBAAkB;IAC5B,0DAA0D;IAC1D,IAAI,SAAS;IACb,sDAAsD;IACtD,SAAS,cAAc;IACvB,2EAA2E;IAC3E,KAAK,UAAU;CAChB;AAED,8CAA8C;AAC9C,MAAM,WAAW,uBAAuB;IACtC,uGAAuG;IACvG,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CACrC;AAED,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,KAAK,EAAE,kBAAkB,CAAC;IAC1B;;;OAGG;IACH,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACtD,2FAA2F;IAC3F,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wFAAwF;IACxF,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;OAGG;IACH,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,0FAA0F;IAC1F,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAYD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,oBAE9B,uBAAuB,KAAG,sBAuI5B,CAAC"}
package/index.css CHANGED
@@ -1,2 +1,2 @@
1
- @keyframes _slide-up_3xrn0_1{0%{transform:translateY(100%)}to{transform:translateY(0)}}._backdrop_3xrn0_9{background:var(--ci-background-Backdrop,#0c101db2)}._sheet_3xrn0_13{background:var(--ci-sheet-bg,var(--bg-layer-0,#fcfcfc));animation:.3s cubic-bezier(.32,.72,0,1) _slide-up_3xrn0_1}._title_3xrn0_18{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._divider_3xrn0_22{background:var(--ci-sheet-divider,var(--bg-layer-4,#d1dbea))}._item_vou13_1{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._item_vou13_1:hover{background:var(--ci-sheet-item-hover,var(--bg-layer-3,#fcfcfc))}._item_vou13_1:active{background:var(--ci-sheet-item-active,var(--bg-layer-4,#d1dbea))}._itemIcon_vou13_11{color:var(--ci-sheet-icon,var(--text-secondary,#575f73))}._tabContainer_rzv03_1{background-color:#0000;color:var(--text-tertiary,#808898)!important;border-color:#0000!important}._tabContainer_rzv03_1:hover{background-color:#5c8dea0f;color:var(--text-secondary,#64748b)!important}._tabContainer_rzv03_1>span{text-align:center}._tabContainer_rzv03_1._tabActive_rzv03_13{background-color:#2764d912;color:var(--text-secondary,#64748b)!important}._tabContainer_rzv03_1._tabActive_rzv03_13:hover{background-color:#5c8dea0f}.dial-primary-solid-button{background-image:linear-gradient(135deg, var(--bg-accent-secondary,#37babc) 0%, var(--bg-accent-primary,#5c8dea) 30%, var(--bg-accent-tertiary,#a972ff) 100%);border-style:none;border-radius:9999px;transition:box-shadow .2s,transform .15s;box-shadow:0 0 16px #37babc40,0 4px 12px #a972ff38;background-color:#0000!important;padding-inline:24px!important}@media (hover:hover){.dial-primary-solid-button:hover{background-color:#0000;background-image:linear-gradient(135deg, var(--bg-accent-secondary,#37babc) 0%, var(--bg-accent-primary,#5c8dea) 30%, var(--bg-accent-tertiary,#a972ff) 100%);transform:translateY(-1px);box-shadow:0 0 24px #37babc59,0 6px 18px #a972ff4d}}.dial-primary-solid-button:active{background-color:#0000;background-image:linear-gradient(135deg, var(--bg-accent-secondary,#37babc) 0%, var(--bg-accent-primary,#5c8dea) 30%, var(--bg-accent-tertiary,#a972ff) 100%);filter:brightness(.92);transform:translateY(0);box-shadow:0 0 10px #37babc33,0 2px 6px #a972ff29}.dial-primary-solid-button:disabled{box-shadow:none;cursor:not-allowed;background-image:none;transform:none;background-color:var(--controls-bg-disable,#d1dbea)!important;color:var(--text-white,#fff)!important}.dial-danger-solid-button{border-radius:9999px!important}.dial-primary-solid-button.dial-primary-solid-button{background-color:#0000;background-image:linear-gradient(135deg,#4b7be6 0%,#9355f4 100%);border:none;border-radius:9999px;transition:box-shadow .2s,transform .15s;box-shadow:0 4px 16px #5c8dea52}@media (hover:hover){.dial-primary-solid-button.dial-primary-solid-button:hover{background-color:#0000;background-image:linear-gradient(135deg,#4b7be6 0%,#9355f4 100%);transform:translateY(-1px);box-shadow:0 6px 20px #5c8dea6b}}.dial-primary-solid-button.dial-primary-solid-button:active{filter:brightness(.92);background-color:#0000;background-image:linear-gradient(135deg,#4b7be6 0%,#9355f4 100%);transform:translateY(0);box-shadow:0 2px 8px #5c8dea38}.dial-primary-solid-button.dial-primary-solid-button:disabled{box-shadow:none;background-image:none;transform:none}.dial-neutral-outlined-button{transition:background-color .15s,border-color .15s;color:var(--bg-accent-primary,#2764d9)!important;background-color:#2764d914!important;background-image:none!important;border:1px solid #2764d933!important;border-radius:9999px!important}@media (hover:hover){.dial-neutral-outlined-button:hover:enabled{background-color:#2764d921!important;border-color:#2764d959!important}}.dial-neutral-outlined-button:active:enabled{background-color:#2764d92e!important;border-color:#2764d973!important}.dial-neutral-outlined-button:disabled{border-color:var(--stroke-secondary,#d1dbea);color:var(--controls-text-neutral-disable,#575f73);background-color:#0000;background-image:none}.dial-primary-ghost-button:not(.dial-icon-button){border-style:none;border-radius:9999px;color:var(--bg-accent-primary,#2764d9)!important}@media (hover:hover){.dial-primary-ghost-button:not(.dial-icon-button):hover:enabled{background-color:#2764d90d!important}}.dial-primary-ghost-button:not(.dial-icon-button):active:enabled{background-color:#2764d914!important}.dial-icon-button{border-radius:6px!important}.dial-input:not(.dial-input-error){transition:border-color .15s,box-shadow .15s;border-color:var(--stroke-tertiary,#e0e6f0)!important;border-radius:.75rem!important}.dial-input:not(.dial-input-error):not(:disabled):hover{border-color:var(--stroke-accent-primary,#7da4ff)!important}.dial-input:not(.dial-input-error):not(:disabled):active,.dial-input:not(.dial-input-error):not(:disabled):focus,.dial-input:not(.dial-input-error):not(:disabled):focus-within{border-color:var(--stroke-accent-primary,#124ace)!important;box-shadow:0 0 0 4px var(--bg-accent-primary-alpha,#7da4ff2e)!important}.dial-input-error{border-radius:.75rem!important}._container_9pzud_1{background:var(--ci-bg,var(--bg-layer-0,#fcfcfc));border-color:var(--ci-border,#0000000d);box-shadow:var(--ci-shadow,0 8px 24px #10182814);transition:border-color .15s,box-shadow .15s}._container_9pzud_1:hover:not(:focus-within){border-color:var(--ci-border-hover,#0000001f)}._container_9pzud_1:focus-within{border-color:var(--ci-border-focus,color-mix(in srgb, var(--stroke-accent-primary,#7da4ff) 50%, transparent));box-shadow:var(--ci-shadow-focus,0 8px 24px #10182814)}._container_9pzud_1._containerError_9pzud_14{border-color:var(--ci-voice-error,var(--stroke-error,#ae2f2f))}._waveformCanvas_9pzud_18{color:var(--ci-voice-waveform,var(--text-tertiary,#808898))}._recordingDot_9pzud_22{background:var(--ci-voice-accent,var(--controls-bg-error,#ae2f2f))}._micRecordingIcon_9pzud_26{color:var(--ci-voice-accent,var(--text-error,#ae2f2f))}._wrapper_1q2nu_2{background:var(--ci-bg,var(--bg-layer-0,#fcfcfc));border-color:var(--ci-border,#0000000d);box-shadow:var(--ci-shadow,0 8px 24px #10182814);transition:border-color .15s,box-shadow .15s}._wrapper_1q2nu_2:hover:not(:focus-within){border-color:var(--ci-border-hover,#0000001f)}._wrapper_1q2nu_2:focus-within{border-color:var(--ci-border-focus,color-mix(in srgb, var(--stroke-accent-primary,#7da4ff) 50%, transparent));box-shadow:var(--ci-shadow-focus,0 8px 24px #10182814)}._wrapper_1q2nu_2._wrapperDisabled_1q2nu_15{background:var(--ci-bg-disabled,var(--controls-bg-disable,#d1dbea));cursor:not-allowed}._textarea_1q2nu_20{color:var(--ci-text,var(--text-primary,#161b2d))}._textarea_1q2nu_20::placeholder{color:var(--ci-placeholder,var(--text-secondary,#9fa6bd))}._textarea_1q2nu_20:disabled{color:var(--ci-text-disabled,var(--controls-text-primary-disable,#696e7c));cursor:not-allowed}._textarea_1q2nu_20:disabled::placeholder{color:var(--ci-placeholder-disabled,var(--controls-text-secondary-disable,#9fa6bd))}._stopIcon_1q2nu_34{color:var(--ci-stop-color,var(--text-secondary,#575f73))}._modelSelectorButton_1q2nu_38 ._modelSelectorCaret_1q2nu_38{color:var(--ci-model-selector-caret-color,var(--text-primary,#161b2d))}._modelSelectorButton_1q2nu_38:hover,._modelSelectorButton_1q2nu_38:active{background:var(--ci-model-selector-hover-bg,var(--controls-bg-accent-primary-alpha-active,#7da4ff5c))}._modelSelectorButton_1q2nu_38._modelSelectorButtonDisabled_1q2nu_44,._modelSelectorButton_1q2nu_38._modelSelectorButtonDisabled_1q2nu_44 ._modelSelectorCaret_1q2nu_38{color:var(--ci-model-selector-disabled-color,var(--controls-text-primary-disable,#696e7c))}@keyframes _sendButtonEnter_1q2nu_1{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes _sendButtonExit_1q2nu_55{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.85)}}._sendButton_1q2nu_55{background-color:#0000;background-image:var(--ci-send-bg-gradient,linear-gradient(135deg, #4b7be6 0%, #9355f4 100%));color:var(--ci-send-text,var(--controls-text-permanent,#fcfcfc));transition:filter .15s;animation:.22s cubic-bezier(.34,1.56,.64,1) _sendButtonEnter_1q2nu_1}._sendButton_1q2nu_55:hover{filter:brightness(1.08)}._sendButton_1q2nu_55:active{filter:brightness(.92)}._sendButton_1q2nu_55._sendButtonExiting_1q2nu_55{pointer-events:none;animation:.16s ease-in forwards _sendButtonExit_1q2nu_55}@media (prefers-reduced-motion:reduce){._sendButton_1q2nu_55,._sendButton_1q2nu_55._sendButtonExiting_1q2nu_55{animation:none}}._sendButton_1q2nu_55:disabled{background-image:none;background-color:var(--ci-send-bg-disabled,var(--controls-bg-disable,#d1dbea));color:var(--ci-send-text-disabled,var(--controls-text-primary-disable,#696e7c));filter:none}._divider_3wv6u_1{background:var(--ci-sheet-divider,var(--bg-layer-4,#d1dbea))}._item_3wv6u_5{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._item_3wv6u_5:hover{background:var(--ci-sheet-item-hover,var(--bg-layer-3,#fcfcfc))}._item_3wv6u_5:active{background:var(--ci-sheet-item-active,var(--bg-layer-4,#d1dbea))}._itemIcon_3wv6u_15{color:var(--ci-sheet-icon,var(--text-secondary,#575f73))}._checkIcon_3wv6u_19{color:var(--ci-check-icon,var(--text-accent-primary,#124ace))}._stateLabel_3wv6u_23{color:var(--ci-sheet-text,var(--text-secondary,#575f73))}._welcome_n2ph8_1{color:var(--ci-welcome-color,var(--text-primary,#161b2d))}
1
+ @keyframes _slide-up_3xrn0_1{0%{transform:translateY(100%)}to{transform:translateY(0)}}._backdrop_3xrn0_9{background:var(--ci-background-Backdrop,#0c101db2)}._sheet_3xrn0_13{background:var(--ci-sheet-bg,var(--bg-layer-0,#fcfcfc));animation:.3s cubic-bezier(.32,.72,0,1) _slide-up_3xrn0_1}._title_3xrn0_18{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._divider_3xrn0_22{background:var(--ci-sheet-divider,var(--bg-layer-4,#d1dbea))}._item_vou13_1{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._item_vou13_1:hover{background:var(--ci-sheet-item-hover,var(--bg-layer-3,#fcfcfc))}._item_vou13_1:active{background:var(--ci-sheet-item-active,var(--bg-layer-4,#d1dbea))}._itemIcon_vou13_11{color:var(--ci-sheet-icon,var(--text-secondary,#575f73))}._tabContainer_rzv03_1{background-color:#0000;color:var(--text-tertiary,#808898)!important;border-color:#0000!important}._tabContainer_rzv03_1:hover{background-color:#5c8dea0f;color:var(--text-secondary,#64748b)!important}._tabContainer_rzv03_1>span{text-align:center}._tabContainer_rzv03_1._tabActive_rzv03_13{background-color:#2764d912;color:var(--text-secondary,#64748b)!important}._tabContainer_rzv03_1._tabActive_rzv03_13:hover{background-color:#5c8dea0f}.dial-primary-solid-button{background-image:linear-gradient(135deg, var(--bg-accent-secondary,#37babc) 0%, var(--bg-accent-primary,#5c8dea) 30%, var(--bg-accent-tertiary,#a972ff) 100%);border-style:none;border-radius:9999px;transition:box-shadow .2s,transform .15s;box-shadow:0 0 16px #37babc40,0 4px 12px #a972ff38;background-color:#0000!important;padding-inline:24px!important}@media (hover:hover){.dial-primary-solid-button:hover{background-color:#0000;background-image:linear-gradient(135deg, var(--bg-accent-secondary,#37babc) 0%, var(--bg-accent-primary,#5c8dea) 30%, var(--bg-accent-tertiary,#a972ff) 100%);transform:translateY(-1px);box-shadow:0 0 24px #37babc59,0 6px 18px #a972ff4d}}.dial-primary-solid-button:active{background-color:#0000;background-image:linear-gradient(135deg, var(--bg-accent-secondary,#37babc) 0%, var(--bg-accent-primary,#5c8dea) 30%, var(--bg-accent-tertiary,#a972ff) 100%);filter:brightness(.92);transform:translateY(0);box-shadow:0 0 10px #37babc33,0 2px 6px #a972ff29}.dial-primary-solid-button:disabled{box-shadow:none;cursor:not-allowed;background-image:none;transform:none;background-color:var(--controls-bg-disable,#d1dbea)!important;color:var(--text-white,#fff)!important}.dial-danger-solid-button{border-radius:9999px!important}.dial-primary-solid-button.dial-primary-solid-button{background-color:#0000;background-image:linear-gradient(135deg,#4b7be6 0%,#9355f4 100%);border:none;border-radius:9999px;transition:box-shadow .2s,transform .15s;box-shadow:0 4px 16px #5c8dea52}@media (hover:hover){.dial-primary-solid-button.dial-primary-solid-button:hover{background-color:#0000;background-image:linear-gradient(135deg,#4b7be6 0%,#9355f4 100%);transform:translateY(-1px);box-shadow:0 6px 20px #5c8dea6b}}.dial-primary-solid-button.dial-primary-solid-button:active{filter:brightness(.92);background-color:#0000;background-image:linear-gradient(135deg,#4b7be6 0%,#9355f4 100%);transform:translateY(0);box-shadow:0 2px 8px #5c8dea38}.dial-primary-solid-button.dial-primary-solid-button:disabled{box-shadow:none;background-image:none;transform:none}.dial-neutral-outlined-button{transition:background-color .15s,border-color .15s;color:var(--bg-accent-primary,#2764d9)!important;background-color:#2764d914!important;background-image:none!important;border:1px solid #2764d933!important;border-radius:9999px!important}@media (hover:hover){.dial-neutral-outlined-button:hover:enabled{background-color:#2764d921!important;border-color:#2764d959!important}}.dial-neutral-outlined-button:active:enabled{background-color:#2764d92e!important;border-color:#2764d973!important}.dial-neutral-outlined-button:disabled{border-color:var(--stroke-secondary,#d1dbea);color:var(--controls-text-neutral-disable,#575f73);background-color:#0000;background-image:none}.dial-primary-ghost-button:not(.dial-icon-button){border-style:none;border-radius:9999px;color:var(--bg-accent-primary,#2764d9)!important}@media (hover:hover){.dial-primary-ghost-button:not(.dial-icon-button):hover:enabled{background-color:#2764d90d!important}}.dial-primary-ghost-button:not(.dial-icon-button):active:enabled{background-color:#2764d914!important}.dial-icon-button{border-radius:6px!important}.dial-input:not(.dial-input-error){transition:border-color .15s,box-shadow .15s;border-color:var(--stroke-tertiary,#e0e6f0)!important;border-radius:.75rem!important}.dial-input:not(.dial-input-error):not(:disabled):hover{border-color:var(--stroke-accent-primary,#7da4ff)!important}.dial-input:not(.dial-input-error):not(:disabled):active,.dial-input:not(.dial-input-error):not(:disabled):focus,.dial-input:not(.dial-input-error):not(:disabled):focus-within{border-color:var(--stroke-accent-primary,#124ace)!important;box-shadow:0 0 0 4px var(--bg-accent-primary-alpha,#7da4ff2e)!important}.dial-input-error{border-radius:.75rem!important}._container_8j81i_1{background:var(--ci-bg,var(--bg-layer-0,#fcfcfc));border-color:var(--ci-border,#0000000d);box-shadow:var(--ci-shadow,0 8px 24px #10182814);transition:border-color .15s,box-shadow .15s}._container_8j81i_1:hover:not(:focus-within){border-color:var(--ci-border-hover,#0000001f)}._container_8j81i_1:focus-within{border-color:var(--ci-border-focus,color-mix(in srgb, var(--stroke-accent-primary,#7da4ff) 50%, transparent));box-shadow:var(--ci-shadow-focus,0 8px 24px #10182814)}._container_8j81i_1._containerError_8j81i_14{border-color:var(--ci-voice-error,var(--stroke-error,#ae2f2f))}._waveformCanvas_8j81i_18{color:var(--ci-voice-waveform,var(--text-primary,#161b2d))}._timer_8j81i_22{color:var(--ci-voice-waveform,var(--text-primary,#161b2d));font-variant-numeric:tabular-nums;white-space:nowrap}._stopRecordingIcon_8j81i_28{color:var(--ci-voice-accent,var(--text-error,#ae2f2f))}@keyframes _recording-pulse_8j81i_1{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.8)}}._recordingDot_8j81i_42{background:var(--ci-voice-accent,var(--text-error,#ae2f2f));pointer-events:none;border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:1.2s ease-in-out infinite _recording-pulse_8j81i_1;display:block}._wrapper_1q2nu_2{background:var(--ci-bg,var(--bg-layer-0,#fcfcfc));border-color:var(--ci-border,#0000000d);box-shadow:var(--ci-shadow,0 8px 24px #10182814);transition:border-color .15s,box-shadow .15s}._wrapper_1q2nu_2:hover:not(:focus-within){border-color:var(--ci-border-hover,#0000001f)}._wrapper_1q2nu_2:focus-within{border-color:var(--ci-border-focus,color-mix(in srgb, var(--stroke-accent-primary,#7da4ff) 50%, transparent));box-shadow:var(--ci-shadow-focus,0 8px 24px #10182814)}._wrapper_1q2nu_2._wrapperDisabled_1q2nu_15{background:var(--ci-bg-disabled,var(--controls-bg-disable,#d1dbea));cursor:not-allowed}._textarea_1q2nu_20{color:var(--ci-text,var(--text-primary,#161b2d))}._textarea_1q2nu_20::placeholder{color:var(--ci-placeholder,var(--text-secondary,#9fa6bd))}._textarea_1q2nu_20:disabled{color:var(--ci-text-disabled,var(--controls-text-primary-disable,#696e7c));cursor:not-allowed}._textarea_1q2nu_20:disabled::placeholder{color:var(--ci-placeholder-disabled,var(--controls-text-secondary-disable,#9fa6bd))}._stopIcon_1q2nu_34{color:var(--ci-stop-color,var(--text-secondary,#575f73))}._modelSelectorButton_1q2nu_38 ._modelSelectorCaret_1q2nu_38{color:var(--ci-model-selector-caret-color,var(--text-primary,#161b2d))}._modelSelectorButton_1q2nu_38:hover,._modelSelectorButton_1q2nu_38:active{background:var(--ci-model-selector-hover-bg,var(--controls-bg-accent-primary-alpha-active,#7da4ff5c))}._modelSelectorButton_1q2nu_38._modelSelectorButtonDisabled_1q2nu_44,._modelSelectorButton_1q2nu_38._modelSelectorButtonDisabled_1q2nu_44 ._modelSelectorCaret_1q2nu_38{color:var(--ci-model-selector-disabled-color,var(--controls-text-primary-disable,#696e7c))}@keyframes _sendButtonEnter_1q2nu_1{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes _sendButtonExit_1q2nu_55{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.85)}}._sendButton_1q2nu_55{background-color:#0000;background-image:var(--ci-send-bg-gradient,linear-gradient(135deg, #4b7be6 0%, #9355f4 100%));color:var(--ci-send-text,var(--controls-text-permanent,#fcfcfc));transition:filter .15s;animation:.22s cubic-bezier(.34,1.56,.64,1) _sendButtonEnter_1q2nu_1}._sendButton_1q2nu_55:hover{filter:brightness(1.08)}._sendButton_1q2nu_55:active{filter:brightness(.92)}._sendButton_1q2nu_55._sendButtonExiting_1q2nu_55{pointer-events:none;animation:.16s ease-in forwards _sendButtonExit_1q2nu_55}@media (prefers-reduced-motion:reduce){._sendButton_1q2nu_55,._sendButton_1q2nu_55._sendButtonExiting_1q2nu_55{animation:none}}._sendButton_1q2nu_55:disabled{background-image:none;background-color:var(--ci-send-bg-disabled,var(--controls-bg-disable,#d1dbea));color:var(--ci-send-text-disabled,var(--controls-text-primary-disable,#696e7c));filter:none}._divider_3wv6u_1{background:var(--ci-sheet-divider,var(--bg-layer-4,#d1dbea))}._item_3wv6u_5{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._item_3wv6u_5:hover{background:var(--ci-sheet-item-hover,var(--bg-layer-3,#fcfcfc))}._item_3wv6u_5:active{background:var(--ci-sheet-item-active,var(--bg-layer-4,#d1dbea))}._itemIcon_3wv6u_15{color:var(--ci-sheet-icon,var(--text-secondary,#575f73))}._checkIcon_3wv6u_19{color:var(--ci-check-icon,var(--text-accent-primary,#124ace))}._stateLabel_3wv6u_23{color:var(--ci-sheet-text,var(--text-secondary,#575f73))}._welcome_n2ph8_1{color:var(--ci-welcome-color,var(--text-primary,#161b2d))}
2
2
  /*$vite$:1*/