@epam/ai-dial-conversation-input 1.1.0-dev.9 → 1.1.0-dev.91

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 (61) hide show
  1. package/components/AddAttachmentButton/AddAttachmentButton.d.ts +21 -0
  2. package/components/AddAttachmentButton/AddAttachmentButton.d.ts.map +1 -1
  3. package/components/BottomSheet/BottomSheet.d.ts +17 -4
  4. package/components/BottomSheet/BottomSheet.d.ts.map +1 -1
  5. package/components/BottomSheetShell/BottomSheetShell.d.ts +16 -13
  6. package/components/BottomSheetShell/BottomSheetShell.d.ts.map +1 -1
  7. package/components/ChatSettingsBottomSheet/ChatSettingsBottomSheet.d.ts +1 -4
  8. package/components/ChatSettingsBottomSheet/ChatSettingsBottomSheet.d.ts.map +1 -1
  9. package/components/ChatSettingsFields/ChatSettingsFields.d.ts +9 -0
  10. package/components/ChatSettingsFields/ChatSettingsFields.d.ts.map +1 -1
  11. package/components/ChatSettingsModal/ChatSettingsModal.d.ts +3 -0
  12. package/components/ChatSettingsModal/ChatSettingsModal.d.ts.map +1 -1
  13. package/components/ConversationInput/ConversationInput.d.ts +1 -0
  14. package/components/ConversationInput/ConversationInput.d.ts.map +1 -1
  15. package/components/EditMessageInput/EditMessageInput.d.ts +1 -0
  16. package/components/EditMessageInput/EditMessageInput.d.ts.map +1 -1
  17. package/components/Input/Buttons/SendButton.d.ts +1 -2
  18. package/components/Input/Buttons/SendButton.d.ts.map +1 -1
  19. package/components/Input/Buttons/StopButton.d.ts +1 -0
  20. package/components/Input/Buttons/StopButton.d.ts.map +1 -1
  21. package/components/Input/Input.d.ts +1 -0
  22. package/components/Input/Input.d.ts.map +1 -1
  23. package/components/Input/ModelSelectorControl.d.ts +9 -10
  24. package/components/Input/ModelSelectorControl.d.ts.map +1 -1
  25. package/components/ModelSelectorBottomSheet/ModelSelectorBottomSheet.d.ts +21 -5
  26. package/components/ModelSelectorBottomSheet/ModelSelectorBottomSheet.d.ts.map +1 -1
  27. package/components/ModelSelectorSkeleton/ModelSelectorSkeleton.d.ts +4 -0
  28. package/components/ModelSelectorSkeleton/ModelSelectorSkeleton.d.ts.map +1 -1
  29. package/components/SelectedToolsChips/SelectedToolsChips.d.ts +42 -0
  30. package/components/SelectedToolsChips/SelectedToolsChips.d.ts.map +1 -0
  31. package/components/ToolsBottomSheet/ToolsBottomSheet.d.ts +38 -0
  32. package/components/ToolsBottomSheet/ToolsBottomSheet.d.ts.map +1 -0
  33. package/components/VoiceBar/VoiceBar.d.ts +11 -17
  34. package/components/VoiceBar/VoiceBar.d.ts.map +1 -1
  35. package/hooks/useAttachments.d.ts +1 -5
  36. package/hooks/useAttachments.d.ts.map +1 -1
  37. package/hooks/useBottomSheet.d.ts +1 -4
  38. package/hooks/useBottomSheet.d.ts.map +1 -1
  39. package/hooks/useDelayedUnmount.d.ts +3 -12
  40. package/hooks/useDelayedUnmount.d.ts.map +1 -1
  41. package/hooks/useInputHistoryNavigation.d.ts +1 -12
  42. package/hooks/useInputHistoryNavigation.d.ts.map +1 -1
  43. package/hooks/useMessageState.d.ts +1 -4
  44. package/hooks/useMessageState.d.ts.map +1 -1
  45. package/hooks/useModelSelector.d.ts +4 -2
  46. package/hooks/useModelSelector.d.ts.map +1 -1
  47. package/hooks/useVoiceRecorder.d.ts +16 -24
  48. package/hooks/useVoiceRecorder.d.ts.map +1 -1
  49. package/index.css +1 -1
  50. package/index.d.ts +1 -1
  51. package/index.d.ts.map +1 -1
  52. package/index.js +1212 -995
  53. package/models/ConversationInput.d.ts +67 -32
  54. package/models/ConversationInput.d.ts.map +1 -1
  55. package/models/Input.d.ts +67 -34
  56. package/models/Input.d.ts.map +1 -1
  57. package/package.json +5 -5
  58. package/utils/concurrency.d.ts +3 -12
  59. package/utils/concurrency.d.ts.map +1 -1
  60. package/utils/deployment.d.ts +1 -4
  61. package/utils/deployment.d.ts.map +1 -1
@@ -4,22 +4,13 @@ export interface DelayedUnmountState {
4
4
  shouldRender: boolean;
5
5
  /** Whether the element is currently playing its exit animation. */
6
6
  isExiting: boolean;
7
- /**
8
- * Increments every time the element (re)appears. Pass as the rendered
9
- * element's `key` so React remounts it on a fresh DOM node instead of
10
- * toggling `isExiting` in place — relying on a CSS `animation-name` change
11
- * to restart cleanly mid-animation is exactly the kind of transition that
12
- * can drop a stray unstyled frame in some browsers, e.g. if visibility is
13
- * toggled back to `true` while the exit animation is still playing.
14
- */
7
+ /** Monotonically increasing counter that increments every time the element transitions from hidden to visible. */
15
8
  instanceKey: number;
16
9
  }
17
10
  /**
18
11
  * Keeps a conditionally-rendered element mounted for `exitDurationMs` after
19
- * `isVisible` turns `false`, so a CSS exit animation can play before the
20
- * caller actually removes it from the tree. `isVisible` turning back to
21
- * `true` mid-exit cancels the pending unmount and bumps `instanceKey` so the
22
- * caller remounts fresh rather than resuming the same DOM node.
12
+ * `isVisible` turns `false`, so a CSS exit animation can play to completion.
13
+ * Cancels the pending unmount if `isVisible` turns `true` again mid-exit.
23
14
  */
24
15
  export declare const useDelayedUnmount: (isVisible: boolean, exitDurationMs: number) => DelayedUnmountState;
25
16
  //# sourceMappingURL=useDelayedUnmount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDelayedUnmount.d.ts","sourceRoot":"","sources":["../../src/hooks/useDelayedUnmount.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,WAAW,OAAO,EAClB,gBAAgB,MAAM,KACrB,mBAyBF,CAAC"}
1
+ {"version":3,"file":"useDelayedUnmount.d.ts","sourceRoot":"","sources":["../../src/hooks/useDelayedUnmount.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,kHAAkH;IAClH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,WAAW,OAAO,EAClB,gBAAgB,MAAM,KACrB,mBAyBF,CAAC"}
@@ -1,15 +1,4 @@
1
- /**
2
- * Manages keyboard-driven Up/Down navigation through a list of previously
3
- * sent messages from a chat input textarea.
4
- *
5
- * The hook tracks the current history index (-1 = draft mode) and saves the
6
- * unsent draft when the user first enters history mode. The returned object
7
- * reference is stable across renders so it does not cause unnecessary
8
- * re-renders when passed as a dependency.
9
- *
10
- * @param messageHistory - Ordered list of previously sent message strings
11
- * (oldest first). Pass `undefined` or an empty array to disable navigation.
12
- */
1
+ /** Manages keyboard-driven Up/Down navigation through a list of previously sent messages from a chat input textarea. */
13
2
  export declare const useInputHistoryNavigation: (messageHistory: readonly string[] | undefined) => {
14
3
  navigate: (direction: "up" | "down", currentValue: string, cursorPos: number) => string | null;
15
4
  notifyChange: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useInputHistoryNavigation.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputHistoryNavigation.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,GACpC,gBAAgB,SAAS,MAAM,EAAE,GAAG,SAAS;0BAgB9B,IAAI,GAAG,MAAM,gBACV,MAAM,aACT,MAAM,KAChB,MAAM,GAAG,IAAI;;;CAqDnB,CAAC"}
1
+ {"version":3,"file":"useInputHistoryNavigation.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputHistoryNavigation.ts"],"names":[],"mappings":"AAUA,wHAAwH;AACxH,eAAO,MAAM,yBAAyB,GACpC,gBAAgB,SAAS,MAAM,EAAE,GAAG,SAAS;0BAgB9B,IAAI,GAAG,MAAM,gBACV,MAAM,aACT,MAAM,KAChB,MAAM,GAAG,IAAI;;;CAqDnB,CAAC"}
@@ -17,10 +17,7 @@ export interface UseMessageStateResult {
17
17
  /** `true` when the textarea content spans more than one visual line. */
18
18
  isMultiLine: boolean;
19
19
  }
20
- /**
21
- * Manages textarea message value, parent-prop sync, and multi-line detection
22
- * for the `Input` component.
23
- */
20
+ /** Manages textarea value and multi-line state for the `Input` component. */
24
21
  export declare const useMessageState: ({ messageProp, messageRevision, }: UseMessageStateParams) => UseMessageStateResult;
25
22
  export {};
26
23
  //# sourceMappingURL=useMessageState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageState.d.ts","sourceRoot":"","sources":["../../src/hooks/useMessageState.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EAKf,MAAM,OAAO,CAAC;AAEf,uDAAuD;AACvD,UAAU,qBAAqB;IAC7B,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wDAAwD;AACxD,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,gDAAgD;IAChD,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACzD,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,mCAG7B,qBAAqB,KAAG,qBA8B1B,CAAC"}
1
+ {"version":3,"file":"useMessageState.d.ts","sourceRoot":"","sources":["../../src/hooks/useMessageState.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EAKf,MAAM,OAAO,CAAC;AAEf,uDAAuD;AACvD,UAAU,qBAAqB;IAC7B,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wDAAwD;AACxD,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,gDAAgD;IAChD,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACzD,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,GAAI,mCAG7B,qBAAqB,KAAG,qBA8B1B,CAAC"}
@@ -12,8 +12,10 @@ export interface UseModelSelectorOptions {
12
12
  onDeploymentChange?: (id: string) => void;
13
13
  /** Status labels for the selector dropdown. */
14
14
  modelSelectorLabels?: ModelSelectorLabels;
15
- /** Class applied to the sticky search header wrapper for theming. Defaults to `'bg-layer-0'`. */
15
+ /** Class applied to the sticky search header wrapper for theming. Defaults to a `--bg-layer-raised` background. */
16
16
  searchHeaderClassName?: string;
17
+ /** Class applied to the currently selected menu item. Defaults to a `--bg-accent-primary-alpha` background. */
18
+ selectedItemClassName?: string;
17
19
  }
18
20
  /** Values returned by `useModelSelector`. */
19
21
  export interface UseModelSelectorResult {
@@ -31,5 +33,5 @@ export interface UseModelSelectorResult {
31
33
  onOpenChange: (isOpen: boolean) => void;
32
34
  }
33
35
  /** Encapsulates model selector state, filtering, and menu construction. */
34
- export declare const useModelSelector: ({ deployments, selectedDeploymentId, onDeploymentChange, modelSelectorLabels, searchHeaderClassName, }: UseModelSelectorOptions) => UseModelSelectorResult;
36
+ export declare const useModelSelector: ({ deployments, selectedDeploymentId, onDeploymentChange, modelSelectorLabels, searchHeaderClassName, selectedItemClassName, }: UseModelSelectorOptions) => UseModelSelectorResult;
35
37
  //# sourceMappingURL=useModelSelector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModelSelector.d.ts","sourceRoot":"","sources":["../../src/hooks/useModelSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAGL,YAAY,EAEb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAM1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAO3D,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,gIAAgI;IAChI,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,+CAA+C;IAC/C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,iGAAiG;IACjG,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,YAAY,EAAE,SAAS,CAAC;IACxB,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0GAA0G;IAC1G,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,8CAA8C;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,0DAA0D;IAC1D,UAAU,EAAE,SAAS,CAAC;IACtB,wFAAwF;IACxF,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,GAAI,wGAM9B,uBAAuB,KAAG,sBA+H5B,CAAC"}
1
+ {"version":3,"file":"useModelSelector.d.ts","sourceRoot":"","sources":["../../src/hooks/useModelSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EAGL,YAAY,EAGb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAM1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAQ3D,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,gIAAgI;IAChI,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,+CAA+C;IAC/C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,mHAAmH;IACnH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+GAA+G;IAC/G,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,YAAY,EAAE,SAAS,CAAC;IACxB,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0GAA0G;IAC1G,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,8CAA8C;IAC9C,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,0DAA0D;IAC1D,UAAU,EAAE,SAAS,CAAC;IACtB,wFAAwF;IACxF,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,GAAI,+HAO9B,uBAAuB,KAAG,sBAgI5B,CAAC"}
@@ -4,45 +4,37 @@ 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
- /**
41
- * Manages the five-state voice recording lifecycle:
42
- * `idle` → `recording` → `stopped` → `uploading` → `idle` (success) | `error` (failure)
43
- *
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.
46
- */
47
- export declare const useVoiceRecorder: ({ onUploadAudio, onTranscribeAudio, onTranscript, }: UseVoiceRecorderOptions) => UseVoiceRecorderResult;
38
+ /** Manages voice recording state and media resources. */
39
+ export declare const useVoiceRecorder: ({ onAttachAudio, }: UseVoiceRecorderOptions) => UseVoiceRecorderResult;
48
40
  //# 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,yDAAyD;AACzD,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_1yh0r_1{0%{transform:translateY(100%)}to{transform:translateY(0)}}._backdrop_1yh0r_9{background:var(--ci-backdrop,var(--bg-backdrop,#161b2d4d))}._sheet_1yh0r_13{background:var(--ci-sheet-bg,var(--bg-layer-raised,#fcfcfc));animation:.3s cubic-bezier(.32,.72,0,1) _slide-up_1yh0r_1}._title_1yh0r_18{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._divider_1yh0r_22{background:var(--ci-sheet-divider,var(--bg-layer-4,#d1dbea))}._item_l2r5m_1{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._item_l2r5m_1:hover{background:var(--ci-sheet-item-hover,var(--bg-layer-3,#fcfcfc))}._item_l2r5m_1:active{background:var(--ci-sheet-item-active,var(--bg-layer-4,#d1dbea))}._itemIcon_l2r5m_11{color:var(--ci-sheet-icon,var(--text-secondary,#6b7280))}._label_14i7c_1{color:var(--csf-label-text,var(--text-primary,#161b2d))!important}._modal_1clcg_1{background:var(--csm-bg,var(--bg-layer-2,#eef1f7))!important}._icon_1oz9i_1{color:var(--tbs-icon-text,var(--text-secondary,#6b7280))}._selectedIcon_1oz9i_5{color:var(--tbs-selected-icon-text,var(--text-accent,#1d4ed8))}._selectedToolIcon_1lz31_1{color:var(--aab-selected-tool-icon,var(--text-accent,#1d4ed8))}._toolIcon_1lz31_5{color:var(--aab-tool-icon,var(--text-secondary,#6b7280))}._chevronIcon_1lz31_9{color:var(--aab-chevron-icon,var(--text-secondary,#6b7280))}._chip_1gvzk_1{background:var(--ci-chip-bg,var(--bg-layer-base,#f5f7fa));border-color:var(--ci-chip-border,var(--stroke-secondary,#d1dbea))}._chipIcon_1gvzk_6{color:var(--ci-chip-icon,var(--text-secondary,#575f73))}._chipText_1gvzk_10{color:var(--ci-chip-text,var(--text-primary,#161b2d))}._chipClose_1gvzk_14{color:var(--ci-chip-close,var(--text-secondary,#575f73))}._chipClose_1gvzk_14:hover,._chipClose_1gvzk_14:focus-visible{color:var(--ci-chip-close-hover,var(--text-primary,#161b2d))}._wrapper_4e8i8_1{background:var(--ci-bg,var(--bg-control-neutral,#fcfcfc));border-color:var(--ci-border,var(--stroke-tertiary,#e0e6f0))}._wrapper_4e8i8_1:focus-within,._wrapper_4e8i8_1:active{border-color:var(--ci-border-focus,var(--stroke-info,#124ace))}._wrapper_4e8i8_1._wrapperDisabled_4e8i8_8{color:var(--ci-text-disabled,var(--text-control-disable,#6b7280));cursor:not-allowed}._textarea_4e8i8_13{color:var(--ci-text,var(--text-primary,#161b2d))}._textarea_4e8i8_13::placeholder{color:var(--ci-placeholder,var(--text-secondary,#6b7280))}._textarea_4e8i8_13:disabled{color:var(--ci-text-disabled,var(--text-control-disable,#6b7280));cursor:not-allowed}._modelSelectorButton_4e8i8_24 ._modelSelectorCaret_4e8i8_24{color:var(--ci-model-selector-caret-color,var(--text-primary,#161b2d))}._modelSelectorButton_4e8i8_24:hover{background:var(--ci-model-selector-hover-bg,var(--bg-control-accent-alpha-hover,#2764d924))}._modelSelectorButton_4e8i8_24:active{background:var(--ci-model-selector-hover-bg,var(--bg-control-accent-alpha-active,#2764d933))}._modelSelectorButton_4e8i8_24._modelSelectorButtonDisabled_4e8i8_33{opacity:.5}._modelSelectorButton_4e8i8_24._modelSelectorButtonDisabled_4e8i8_33 ._modelSelectorCaret_4e8i8_24{color:var(--ci-model-selector-disabled-color,var(--text-control-disable,#6b7280))}._wrapperError_5wiyg_1{border-color:var(--ci-voice-error,var(--stroke-error,#ae2f2f))}._waveformCanvas_5wiyg_5{color:var(--ci-voice-waveform,var(--text-primary,#161b2d))}._timer_5wiyg_9{color:var(--ci-voice-waveform,var(--text-primary,#161b2d));font-variant-numeric:tabular-nums;white-space:nowrap}._stopRecordingIcon_5wiyg_15{color:var(--ci-voice-accent,var(--text-error,#ae2f2f))}@keyframes _recording-pulse_5wiyg_1{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.8)}}._recordingDot_5wiyg_29{background:var(--ci-voice-accent,var(--text-error,#ae2f2f));animation:1.2s ease-in-out infinite _recording-pulse_5wiyg_1}._tabContainer_153ct_1{background-color:#0000;color:var(--text-tertiary,#c7cbd4)!important;border-color:#0000!important}._tabContainer_153ct_1:hover{background-color:#5c8dea0f;color:var(--text-secondary,#6b7280)!important}._tabContainer_153ct_1>span{text-align:center}._tabContainer_153ct_1._tabActive_153ct_13{background-color:#2764d912;color:var(--text-secondary,#6b7280)!important}._tabContainer_153ct_1._tabActive_153ct_13:hover{background-color:#5c8dea0f}.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}._searchHeader_3587a_1{background:var(--ms-search-header-bg,var(--bg-layer-raised,#fcfcfc))}._selectedItem_3587a_5{background:var(--ms-selected-item-bg,var(--bg-accent-primary-alpha,#7da4ff2e))}._divider_13nxz_1{background:var(--ci-sheet-divider,var(--bg-layer-4,#d1dbea))}._item_13nxz_5{color:var(--ci-sheet-text,var(--text-primary,#161b2d))}._item_13nxz_5:hover{background:var(--ci-sheet-item-hover,var(--bg-layer-3,#fcfcfc))}._item_13nxz_5:active{background:var(--ci-sheet-item-active,var(--bg-layer-4,#d1dbea))}._itemIcon_13nxz_15{color:var(--ci-sheet-icon,var(--text-secondary,#6b7280))}._checkIcon_13nxz_19{color:var(--ci-check-icon,var(--text-accent-primary,#124ace))}._stateLabel_13nxz_23{color:var(--ci-sheet-text,var(--text-secondary,#6b7280))}._welcome_n2ph8_1{color:var(--ci-welcome-color,var(--text-primary,#161b2d))}
2
2
  /*$vite$:1*/
package/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export { EditMessageInput } from './components/EditMessageInput/EditMessageInput
5
5
  export { Input } from './components/Input/Input';
6
6
  export type { ConversationInputColors, ConversationInputProps, ConversationInputStyles, ConversationInputTypography, EditMessageInputProps, } from './models/ConversationInput';
7
7
  export { SendOnEnter } from './models/Input';
8
- export type { ChatSettingsValues, InputColors, InputProps, InputTypography, } from './models/Input';
8
+ export type { ChatSettingsValues, InputColors, InputProps, InputTypography, ToolsChipLabels, } from './models/Input';
9
9
  export { AttachmentCard, AttachmentTray, AttachmentGroup, FileDndOverlay, getAttachmentIcon, } from '../../attachment-input/src/index.ts';
10
10
  export type { AttachmentGroupProps } from '../../attachment-input/src/index.ts';
11
11
  export type { BottomSheetItem } from './components/BottomSheet/BottomSheet';
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,YAAY,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,kDAAkD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,YAAY,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,kDAAkD,CAAC"}