@admin-layout/tailwind-ui 12.2.4-alpha.60 → 12.2.4-alpha.62

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 (51) hide show
  1. package/lib/components/AIToolbar/components/AIToolBar.d.ts +1 -1
  2. package/lib/components/AIToolbar/components/AIToolBar.d.ts.map +1 -1
  3. package/lib/components/AIToolbar/components/AIToolBar.js +8 -4
  4. package/lib/components/AIToolbar/components/AIToolBar.js.map +1 -1
  5. package/lib/components/AIToolbar/components/completion/Audio.d.ts +3 -1
  6. package/lib/components/AIToolbar/components/completion/Audio.d.ts.map +1 -1
  7. package/lib/components/AIToolbar/components/completion/Audio.js +4 -2
  8. package/lib/components/AIToolbar/components/completion/Audio.js.map +1 -1
  9. package/lib/components/AIToolbar/components/completion/CharacterPicker.d.ts +3 -1
  10. package/lib/components/AIToolbar/components/completion/CharacterPicker.d.ts.map +1 -1
  11. package/lib/components/AIToolbar/components/completion/CharacterPicker.js +5 -2
  12. package/lib/components/AIToolbar/components/completion/CharacterPicker.js.map +1 -1
  13. package/lib/components/AIToolbar/components/completion/Files.d.ts +2 -1
  14. package/lib/components/AIToolbar/components/completion/Files.d.ts.map +1 -1
  15. package/lib/components/AIToolbar/components/completion/Files.js +6 -4
  16. package/lib/components/AIToolbar/components/completion/Files.js.map +1 -1
  17. package/lib/components/AIToolbar/components/completion/Input.d.ts +2 -1
  18. package/lib/components/AIToolbar/components/completion/Input.d.ts.map +1 -1
  19. package/lib/components/AIToolbar/components/completion/Input.js +7 -3
  20. package/lib/components/AIToolbar/components/completion/Input.js.map +1 -1
  21. package/lib/components/AIToolbar/components/completion/Screenshot.d.ts +2 -1
  22. package/lib/components/AIToolbar/components/completion/Screenshot.d.ts.map +1 -1
  23. package/lib/components/AIToolbar/components/completion/Screenshot.js +4 -2
  24. package/lib/components/AIToolbar/components/completion/Screenshot.js.map +1 -1
  25. package/lib/components/AIToolbar/components/completion/index.d.ts +3 -1
  26. package/lib/components/AIToolbar/components/completion/index.d.ts.map +1 -1
  27. package/lib/components/AIToolbar/components/completion/index.js +10 -5
  28. package/lib/components/AIToolbar/components/completion/index.js.map +1 -1
  29. package/lib/components/AIToolbar/components/speech/MicrophoneDiagnostics.d.ts +2 -0
  30. package/lib/components/AIToolbar/components/speech/MicrophoneDiagnostics.d.ts.map +1 -0
  31. package/lib/components/AIToolbar/components/speech/MicrophoneDiagnostics.js +396 -0
  32. package/lib/components/AIToolbar/components/speech/MicrophoneDiagnostics.js.map +1 -0
  33. package/lib/components/AIToolbar/components/speech/SettingsPanel.d.ts.map +1 -1
  34. package/lib/components/AIToolbar/components/speech/SettingsPanel.js +2 -2
  35. package/lib/components/AIToolbar/components/speech/SettingsPanel.js.map +1 -1
  36. package/lib/components/AIToolbar/components/speech/index.d.ts.map +1 -1
  37. package/lib/components/AIToolbar/components/speech/index.js +7 -5
  38. package/lib/components/AIToolbar/components/speech/index.js.map +1 -1
  39. package/lib/components/AIToolbar/components/types.d.ts +4 -0
  40. package/lib/components/AIToolbar/components/types.d.ts.map +1 -1
  41. package/lib/components/AIToolbar/hooks/marketplaceCharactersRegistry.d.ts +13 -0
  42. package/lib/components/AIToolbar/hooks/marketplaceCharactersRegistry.d.ts.map +1 -0
  43. package/lib/components/AIToolbar/hooks/marketplaceCharactersRegistry.js +6 -0
  44. package/lib/components/AIToolbar/hooks/marketplaceCharactersRegistry.js.map +1 -0
  45. package/lib/components/AIToolbar/hooks/useActiveCharacter.d.ts +2 -0
  46. package/lib/components/AIToolbar/hooks/useActiveCharacter.d.ts.map +1 -1
  47. package/lib/components/AIToolbar/hooks/useActiveCharacter.js +24 -9
  48. package/lib/components/AIToolbar/hooks/useActiveCharacter.js.map +1 -1
  49. package/lib/components/AIToolbar/index.d.ts +1 -1
  50. package/lib/components/AIToolbar/index.d.ts.map +1 -1
  51. package/package.json +2 -2
@@ -16,7 +16,7 @@ import type { AIToolbarAppProps } from './types';
16
16
  * />
17
17
  * ```
18
18
  */
19
- export declare function AIToolBar({ isHidden, systemAudio, completion, hasActiveLicense, supportsImages, cursorType, platform, onOpenDashboard, trailing, className, toolbarClassName, }: AIToolbarAppProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function AIToolBar({ isHidden, systemAudio, completion, hasActiveLicense, supportsImages, cursorType, platform, onOpenDashboard, trailing, className, toolbarClassName, showElementTitles, }: AIToolbarAppProps): import("react/jsx-runtime").JSX.Element;
20
20
  export { DragButton };
21
21
  export type { DragButtonProps } from './DragButton';
22
22
  //# sourceMappingURL=AIToolBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AIToolBar.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/components/AIToolBar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAIjD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,EACtB,QAAgB,EAChB,WAAW,EACX,UAAU,EACV,gBAAuB,EACvB,cAAqB,EACrB,UAAU,EACV,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,SAAS,EACT,gBAAgB,GACnB,EAAE,iBAAiB,2CAiEnB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"AIToolBar.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/components/AIToolBar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAIjD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,EACtB,QAAgB,EAChB,WAAW,EACX,UAAU,EACV,gBAAuB,EACvB,cAAqB,EACrB,UAAU,EACV,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,iBAAiB,GACpB,EAAE,iBAAiB,2CAoEnB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -25,8 +25,10 @@ function AIToolBar({
25
25
  onOpenDashboard,
26
26
  trailing,
27
27
  className,
28
- toolbarClassName
28
+ toolbarClassName,
29
+ showElementTitles
29
30
  }) {
31
+ const showTitles = showElementTitles !== false;
30
32
  const showCustomCursor = Boolean(platform && cursorType === 'invisible' && platform !== 'linux');
31
33
  return jsxs(Fragment, {
32
34
  children: [jsx("div", {
@@ -39,7 +41,8 @@ function AIToolBar({
39
41
  children: jsx(SystemAudio, {
40
42
  ...systemAudio,
41
43
  hasActiveLicense: hasActiveLicense,
42
- supportsImages: supportsImages
44
+ supportsImages: supportsImages,
45
+ toolbarShowElementTitles: showTitles
43
46
  })
44
47
  }), jsx(AIToolbarMain, {
45
48
  className: systemAudio?.capturing ? 'justify-between' : undefined,
@@ -63,11 +66,12 @@ function AIToolBar({
63
66
  children: [jsx(Completion, {
64
67
  completion: completion,
65
68
  isHidden: isHidden,
66
- supportsImages: supportsImages
69
+ supportsImages: supportsImages,
70
+ showElementTitles: showTitles
67
71
  }), onOpenDashboard ? jsx(Button, {
68
72
  size: 'icon',
69
73
  className: "cursor-pointer",
70
- title: "Open Dev Space",
74
+ title: showTitles ? 'Open Dev Space' : undefined,
71
75
  onClick: () => void onOpenDashboard(),
72
76
  children: jsx(YantraIcon, {
73
77
  className: "h-6 w-6"
@@ -1 +1 @@
1
- {"version":3,"file":"AIToolBar.js","sources":["../../../../src/components/AIToolbar/components/AIToolBar.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AA2BG;AACH;AA+EA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"AIToolBar.js","sources":["../../../../src/components/AIToolbar/components/AIToolBar.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AA2BG;AACH;AAmFA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,3 +1,5 @@
1
1
  import { UseCompletionReturn } from '../types';
2
- export declare const Audio: ({ micOpen, setMicOpen, enableVAD, setEnableVAD, submit, setState, selectedSttProvider, managedAiApiEnabled, selectedAudioDevices, transcribeAudio, }: UseCompletionReturn) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const Audio: ({ micOpen, setMicOpen, enableVAD, setEnableVAD, submit, setState, selectedSttProvider, managedAiApiEnabled, selectedAudioDevices, transcribeAudio, toolbarShowElementTitles, }: UseCompletionReturn & {
3
+ toolbarShowElementTitles?: boolean;
4
+ }) => import("react/jsx-runtime").JSX.Element;
3
5
  //# sourceMappingURL=Audio.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Audio.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/Audio.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,KAAK,GAAI,sJAWnB,mBAAmB,4CAuDrB,CAAC"}
1
+ {"version":3,"file":"Audio.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/Audio.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,KAAK,GAAI,gLAYnB,mBAAmB,GAAG;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,4CAwD9D,CAAC"}
@@ -8,9 +8,11 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {MicIcon,InfoIcon}from'
8
8
  selectedSttProvider,
9
9
  managedAiApiEnabled,
10
10
  selectedAudioDevices,
11
- transcribeAudio
11
+ transcribeAudio,
12
+ toolbarShowElementTitles
12
13
  }) => {
13
14
  const speechProviderStatus = selectedSttProvider.provider;
15
+ const showTitles = toolbarShowElementTitles !== false;
14
16
  return jsxs(Popover, {
15
17
  open: micOpen,
16
18
  onOpenChange: setMicOpen,
@@ -28,7 +30,7 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {MicIcon,InfoIcon}from'
28
30
  setEnableVAD(!enableVAD);
29
31
  },
30
32
  className: "cursor-pointer",
31
- title: "Toggle voice input",
33
+ title: showTitles ? 'Toggle voice input' : undefined,
32
34
  children: jsx(MicIcon, {
33
35
  className: "h-4 w-4"
34
36
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Audio.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Audio.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,3 +1,5 @@
1
- export declare function CharacterPicker(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function CharacterPicker({ toolbarShowElementTitles }: {
2
+ toolbarShowElementTitles?: boolean;
3
+ }): import("react/jsx-runtime").JSX.Element;
2
4
  export default CharacterPicker;
3
5
  //# sourceMappingURL=CharacterPicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CharacterPicker.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/CharacterPicker.tsx"],"names":[],"mappings":"AAgDA,wBAAgB,eAAe,4CAiD9B;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"CharacterPicker.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/CharacterPicker.tsx"],"names":[],"mappings":"AAgDA,wBAAgB,eAAe,CAAC,EAAE,wBAAwB,EAAE,EAAE;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,2CAkDnG;AAED,eAAe,eAAe,CAAC"}
@@ -28,13 +28,16 @@ import {jsxs,jsx}from'react/jsx-runtime';import*as React from'react';import {Che
28
28
  });
29
29
  }
30
30
  // main component
31
- function CharacterPicker() {
31
+ function CharacterPicker({
32
+ toolbarShowElementTitles
33
+ }) {
32
34
  const {
33
35
  characters,
34
36
  activeName,
35
37
  setActive
36
38
  } = useCharacterPicker();
37
39
  const [open, setOpen] = React.useState(false);
40
+ const showTitles = toolbarShowElementTitles !== false;
38
41
  if (characters.length < 2) return null;
39
42
  const active = characters.find(c => c.name === activeName) ?? characters[0] ?? null;
40
43
  return jsxs(Popover, {
@@ -46,7 +49,7 @@ function CharacterPicker() {
46
49
  size: "sm",
47
50
  variant: "ghost",
48
51
  className: "h-7 gap-1.5 rounded-full border border-border/50 bg-muted/30 px-1.5 py-0 text-[11px] font-medium",
49
- title: "Switch character",
52
+ title: showTitles ? 'Switch character' : undefined,
50
53
  children: [jsx(AvatarBadge, {
51
54
  entry: active,
52
55
  size: 20
@@ -1 +1 @@
1
- {"version":3,"file":"CharacterPicker.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CharacterPicker.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { UseCompletionReturn } from '../types';
2
- export declare const Files: ({ attachedFiles, handleFileSelect, removeFile, onRemoveAllFiles, isLoading, isFilesPopoverOpen, setIsFilesPopoverOpen, supportsImages, maxFiles, }: UseCompletionReturn & {
2
+ export declare const Files: ({ attachedFiles, handleFileSelect, removeFile, onRemoveAllFiles, isLoading, isFilesPopoverOpen, setIsFilesPopoverOpen, supportsImages, maxFiles, toolbarShowElementTitles, }: UseCompletionReturn & {
3
3
  supportsImages?: boolean;
4
4
  maxFiles?: number;
5
+ toolbarShowElementTitles?: boolean;
5
6
  }) => import("react/jsx-runtime").JSX.Element;
6
7
  //# sourceMappingURL=Files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Files.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/Files.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAK/C,eAAO,MAAM,KAAK,GAAI,oJAUnB,mBAAmB,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,4CA8IvE,CAAC"}
1
+ {"version":3,"file":"Files.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/Files.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAK/C,eAAO,MAAM,KAAK,GAAI,8KAWnB,mBAAmB,GAAG;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACtC,4CAiJA,CAAC"}
@@ -8,9 +8,11 @@ const Files = ({
8
8
  isFilesPopoverOpen,
9
9
  setIsFilesPopoverOpen,
10
10
  supportsImages,
11
- maxFiles = DEFAULT_MAX_FILES
11
+ maxFiles = DEFAULT_MAX_FILES,
12
+ toolbarShowElementTitles
12
13
  }) => {
13
14
  const fileInputRef = useRef(null);
15
+ const showTitles = toolbarShowElementTitles !== false;
14
16
  const handleAddMoreClick = () => {
15
17
  fileInputRef.current?.click();
16
18
  };
@@ -26,7 +28,7 @@ const Files = ({
26
28
  size: "icon",
27
29
  disabled: isLoading || supportsImages === false,
28
30
  className: "cursor-pointer",
29
- title: supportsImages !== false ? 'Attach images' : 'Image upload not supported by current AI provider',
31
+ title: showTitles ? supportsImages !== false ? 'Attach images' : 'Image upload not supported by current AI provider' : undefined,
30
32
  children: jsx(PaperclipIcon, {
31
33
  className: "h-4 w-4"
32
34
  })
@@ -65,7 +67,7 @@ const Files = ({
65
67
  variant: "ghost",
66
68
  onClick: () => setIsFilesPopoverOpen(false),
67
69
  className: "cursor-pointer",
68
- title: "Close",
70
+ title: showTitles ? 'Close' : undefined,
69
71
  children: jsx(XIcon, {
70
72
  className: "h-4 w-4"
71
73
  })
@@ -94,7 +96,7 @@ const Files = ({
94
96
  variant: "default",
95
97
  className: "absolute top-2 right-2 h-6 w-6 cursor-pointer",
96
98
  onClick: () => removeFile(file.id),
97
- title: "Remove image",
99
+ title: showTitles ? 'Remove image' : undefined,
98
100
  children: jsx(XIcon, {
99
101
  className: "h-3 w-3"
100
102
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Files.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Files.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
1
  import { UseCompletionReturn } from '../types';
2
- export declare const Input: ({ isPopoverOpen, isLoading, reset, input, setInput, handleKeyPress, handlePaste, currentConversationId, conversationHistory, startNewConversation, messageHistoryOpen, setMessageHistoryOpen, error, response, cancel, scrollAreaRef, inputRef, isHidden, keepEngaged, setKeepEngaged, regenerateAssistantMessage, }: UseCompletionReturn & {
2
+ export declare const Input: ({ isPopoverOpen, isLoading, reset, input, setInput, handleKeyPress, handlePaste, currentConversationId, conversationHistory, startNewConversation, messageHistoryOpen, setMessageHistoryOpen, error, response, cancel, scrollAreaRef, inputRef, isHidden, keepEngaged, setKeepEngaged, regenerateAssistantMessage, toolbarShowElementTitles, }: UseCompletionReturn & {
3
3
  isHidden: boolean;
4
+ toolbarShowElementTitles?: boolean;
4
5
  }) => import("react/jsx-runtime").JSX.Element;
5
6
  //# sourceMappingURL=Input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/Input.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQ/C,eAAO,MAAM,KAAK,GAAI,sTAsBnB,mBAAmB,GAAG;IACrB,QAAQ,EAAE,OAAO,CAAC;CACrB,4CA6TA,CAAC"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/Input.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQ/C,eAAO,MAAM,KAAK,GAAI,gVAuBnB,mBAAmB,GAAG;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACtC,4CAgUA,CAAC"}
@@ -19,8 +19,10 @@ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useRef,useMemo,useLayo
19
19
  isHidden,
20
20
  keepEngaged,
21
21
  setKeepEngaged,
22
- regenerateAssistantMessage
22
+ regenerateAssistantMessage,
23
+ toolbarShowElementTitles
23
24
  }) => {
25
+ const showTitles = toolbarShowElementTitles !== false;
24
26
  const conversationEndRef = useRef(null);
25
27
  const character = useActiveCharacter();
26
28
  const assistantName = character?.name ?? 'AI';
@@ -101,7 +103,9 @@ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useRef,useMemo,useLayo
101
103
  children: [jsx("h3", {
102
104
  className: "select-none text-xs font-semibold",
103
105
  children: keepEngaged ? 'Conversation Mode' : 'AI Response'
104
- }), jsx(CharacterPicker, {}), jsx("div", {
106
+ }), jsx(CharacterPicker, {
107
+ toolbarShowElementTitles: showTitles
108
+ }), jsx("div", {
105
109
  className: "text-[10px] text-muted-foreground/70",
106
110
  children: "(Use arrow keys to scroll)"
107
111
  })]
@@ -140,7 +144,7 @@ import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useRef,useMemo,useLayo
140
144
  }
141
145
  },
142
146
  className: "cursor-pointer",
143
- title: isLoading ? 'Cancel loading' : keepEngaged ? 'Close and start new conversation' : 'Clear conversation',
147
+ title: showTitles ? isLoading ? 'Cancel loading' : keepEngaged ? 'Close and start new conversation' : 'Clear conversation' : undefined,
144
148
  children: jsx(XIcon, {})
145
149
  })]
146
150
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Input.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { UseCompletionReturn } from '../types';
2
- export declare const Screenshot: ({ screenshotConfiguration, attachedFiles, isLoading, captureScreenshot, isScreenshotLoading, supportsImages, maxFiles, }: UseCompletionReturn & {
2
+ export declare const Screenshot: ({ screenshotConfiguration, attachedFiles, isLoading, captureScreenshot, isScreenshotLoading, supportsImages, maxFiles, toolbarShowElementTitles, }: UseCompletionReturn & {
3
3
  supportsImages?: boolean;
4
4
  maxFiles?: number;
5
+ toolbarShowElementTitles?: boolean;
5
6
  }) => import("react/jsx-runtime").JSX.Element;
6
7
  //# sourceMappingURL=Screenshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Screenshot.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/Screenshot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAI/C,eAAO,MAAM,UAAU,GAAI,0HAQxB,mBAAmB,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,4CA2BvE,CAAC"}
1
+ {"version":3,"file":"Screenshot.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/Screenshot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAI/C,eAAO,MAAM,UAAU,GAAI,oJASxB,mBAAmB,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,4CA8B3G,CAAC"}
@@ -6,15 +6,17 @@ const Screenshot = ({
6
6
  captureScreenshot,
7
7
  isScreenshotLoading,
8
8
  supportsImages,
9
- maxFiles = DEFAULT_MAX_FILES
9
+ maxFiles = DEFAULT_MAX_FILES,
10
+ toolbarShowElementTitles
10
11
  }) => {
11
12
  const captureMode = screenshotConfiguration.enabled ? 'Screenshot' : 'Selection';
12
13
  const processingMode = screenshotConfiguration.mode;
13
14
  const isDisabled = attachedFiles.length >= maxFiles || isLoading || isScreenshotLoading || supportsImages === false;
15
+ const showTitles = toolbarShowElementTitles !== false;
14
16
  return jsx(Button, {
15
17
  size: "icon",
16
18
  className: "cursor-pointer",
17
- title: supportsImages === false ? 'Screenshot not supported by current AI provider' : `${captureMode} mode (${processingMode}) - ${attachedFiles.length}/${maxFiles} files`,
19
+ title: showTitles ? supportsImages === false ? 'Screenshot not supported by current AI provider' : `${captureMode} mode (${processingMode}) - ${attachedFiles.length}/${maxFiles} files` : undefined,
18
20
  onClick: captureScreenshot,
19
21
  disabled: isDisabled,
20
22
  children: isScreenshotLoading ? jsx(Loader2, {
@@ -1 +1 @@
1
- {"version":3,"file":"Screenshot.js","sources":["../../../../../src/components/AIToolbar/components/completion/Screenshot.tsx"],"sourcesContent":[null],"names":[],"mappings":"miEAcqD,iBAAiB,GAAA,EAAA;AAAE,MAAA,UAAA,GAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Screenshot.js","sources":["../../../../../src/components/AIToolbar/components/completion/Screenshot.tsx"],"sourcesContent":[null],"names":[],"mappings":"miEAeqD,iBAAkB,GAAA,EAAA;AAAC,MAAA,UAAA,GAAA,CAAA;AAAoC,EAAA,uBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,6 +6,8 @@ export type CompletionProps = {
6
6
  isHidden: boolean;
7
7
  /** When true, paperclip + screenshot attach UI are enabled (from host; default true in {@link AIToolBar}). */
8
8
  supportsImages?: boolean;
9
+ /** When false, native `title=` tooltips on toolbar controls are omitted (desktop setting). Default: show. */
10
+ showElementTitles?: boolean;
9
11
  };
10
- export declare const Completion: ({ completion, isHidden, supportsImages }: CompletionProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const Completion: ({ completion, isHidden, supportsImages, showElementTitles }: CompletionProps) => import("react/jsx-runtime").JSX.Element;
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAMpD,OAAO,EACH,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,eAAe,GAAG;IAC1B,2CAA2C;IAC3C,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,8GAA8G;IAC9G,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,0CAAiD,eAAe,4CAS1F,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/completion/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAMpD,OAAO,EACH,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,eAAe,GAAG;IAC1B,2CAA2C;IAC3C,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,8GAA8G;IAC9G,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6GAA6G;IAC7G,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,6DAAoE,eAAe,4CAS7G,CAAC"}
@@ -1,20 +1,25 @@
1
1
  import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {Screenshot}from'./Screenshot.js';import {Files}from'./Files.js';import {Audio}from'./Audio.js';import {Input}from'./Input.js';import'react';import'lucide-react';import'../../../../shardui/accordion.js';import'../../../../shardui/alert.js';import'../../../../shardui/alert-dialog.js';import'@radix-ui/react-aspect-ratio';import'../../../../shardui/avatar.js';import'../../../../shardui/badge.js';import'../../../../shardui/breadcrumb.js';import'../../../../shardui/button.js';import'../../../../shardui/calendar.js';import'../../../../shardui/card.js';import'../../../../shardui/carousel.js';import'../../../../shardui/chart.js';import'../../../../shardui/checkbox.js';import'@radix-ui/react-collapsible';import'../../../../shardui/command.js';import'../../../../shardui/context-menu.js';import'../../../../shardui/dialog.js';import'../../../../shardui/drawer.js';import'../../../../shardui/dropdown-menu.js';import'../../../../shardui/form.js';import'../../../../shardui/hover-card.js';import'../../../../shardui/input.js';import'../../../../shardui/input-otp.js';import'../../../../shardui/label.js';import'../../../../shardui/menubar.js';import'../../../../shardui/navigation-menu.js';import'../../../../shardui/pagination.js';import'../../../../shardui/popover.js';import'../../../../shardui/progress.js';import'../../../../shardui/radio-group.js';import'react-resizable-panels';import'../../../../utils/isBrowser/index.js';import'clsx';import'tailwind-merge';import'fast-deep-equal/react.js';import'../../../../shardui/scroll-area.js';import'../../../../shardui/select.js';import'../../../../shardui/separator.js';import'../../../../shardui/sheet.js';import'../../../../shardui/sidebar.js';import'../../../../shardui/slider.js';import'../../../ThemeProvider/ThemeProvider.js';import'sonner';import'../../../../shardui/switch.js';import'../../../../shardui/table.js';import'../../../../shardui/tabs.js';import'../../../../shardui/textarea.js';import'../../../../shardui/toast.js';import'../../../../shardui/toggle.js';import'../../../../shardui/toggle-group.js';import'../../../../shardui/tooltip.js';const Completion = ({
2
2
  completion,
3
3
  isHidden,
4
- supportsImages = true
4
+ supportsImages = true,
5
+ showElementTitles
5
6
  }) => {
6
7
  return jsxs(Fragment, {
7
8
  children: [jsx(Audio, {
8
- ...completion
9
+ ...completion,
10
+ toolbarShowElementTitles: showElementTitles
9
11
  }), jsx(Input, {
10
12
  ...completion,
11
- isHidden: isHidden
13
+ isHidden: isHidden,
14
+ toolbarShowElementTitles: showElementTitles
12
15
  }), jsx(Screenshot, {
13
16
  ...completion,
14
- supportsImages: supportsImages
17
+ supportsImages: supportsImages,
18
+ toolbarShowElementTitles: showElementTitles
15
19
  }), jsx(Files, {
16
20
  ...completion,
17
- supportsImages: supportsImages
21
+ supportsImages: supportsImages,
22
+ toolbarShowElementTitles: showElementTitles
18
23
  })]
19
24
  });
20
25
  };export{Completion};//# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/AIToolbar/components/completion/index.tsx"],"sourcesContent":[null],"names":[],"mappings":"knEAgBI,MAAA,UAAA,GAAA,CAAA;YACA;EACF,QAAA;AAEF,EAAA;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/AIToolbar/components/completion/index.tsx"],"sourcesContent":[null],"names":[],"mappings":"knEAgBI,MAAA,UAAA,GAAA,CAAA;YACA;UACA;gBACA,GAAA,IAAkB;EACpB;AAEF,CAAA,KAAA;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ export declare function MicrophoneDiagnostics(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=MicrophoneDiagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MicrophoneDiagnostics.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/speech/MicrophoneDiagnostics.tsx"],"names":[],"mappings":"AA+LA,wBAAgB,qBAAqB,4CAmPpC"}
@@ -0,0 +1,396 @@
1
+ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useRef,useCallback,useEffect}from'react';import'../../../../shardui/accordion.js';import'../../../../shardui/alert.js';import'../../../../shardui/alert-dialog.js';import'@radix-ui/react-aspect-ratio';import'../../../../shardui/avatar.js';import'../../../../shardui/badge.js';import'../../../../shardui/breadcrumb.js';import {Button}from'../../../../shardui/button.js';import'../../../../shardui/calendar.js';import'../../../../shardui/card.js';import'../../../../shardui/carousel.js';import'../../../../shardui/chart.js';import'../../../../shardui/checkbox.js';import'@radix-ui/react-collapsible';import'../../../../shardui/command.js';import'../../../../shardui/context-menu.js';import'../../../../shardui/dialog.js';import'../../../../shardui/drawer.js';import'../../../../shardui/dropdown-menu.js';import'../../../../shardui/form.js';import'../../../../shardui/hover-card.js';import'../../../../shardui/input.js';import'../../../../shardui/input-otp.js';import {Label}from'../../../../shardui/label.js';import'../../../../shardui/menubar.js';import'../../../../shardui/navigation-menu.js';import'../../../../shardui/pagination.js';import'../../../../shardui/popover.js';import'../../../../shardui/progress.js';import'../../../../shardui/radio-group.js';import {MicIcon,RefreshCwIcon,LoaderIcon,SettingsIcon,RotateCcwIcon,CheckCircle2Icon,CircleAlertIcon,HelpCircleIcon}from'lucide-react';import'react-resizable-panels';import'../../../../utils/isBrowser/index.js';import {cn}from'../../../../utils/util.js';import'fast-deep-equal/react.js';import'../../../../shardui/scroll-area.js';import'../../../../shardui/select.js';import'../../../../shardui/separator.js';import'../../../../shardui/sheet.js';import'../../../../shardui/sidebar.js';import'../../../../shardui/slider.js';import'../../../ThemeProvider/ThemeProvider.js';import'sonner';import'../../../../shardui/switch.js';import'../../../../shardui/table.js';import'../../../../shardui/tabs.js';import'../../../../shardui/textarea.js';import'../../../../shardui/toast.js';import'../../../../shardui/toggle.js';import'../../../../shardui/toggle-group.js';import'../../../../shardui/tooltip.js';// constants
2
+ const TEST_DURATION_MS = 3000;
3
+ const STATUS_POLL_MS = 2000;
4
+ const TCC_RESET_HINT = 'tccutil reset Microphone com.cdebase.yantra';
5
+ const STATUS_COPY = {
6
+ authorized: {
7
+ label: 'Authorized',
8
+ tone: 'ok'
9
+ },
10
+ not_determined: {
11
+ label: 'Not requested yet',
12
+ tone: 'warn'
13
+ },
14
+ denied: {
15
+ label: 'Denied',
16
+ tone: 'err'
17
+ },
18
+ restricted: {
19
+ label: 'Restricted (MDM)',
20
+ tone: 'err'
21
+ },
22
+ unsupported: {
23
+ label: 'Not gated on this OS',
24
+ tone: 'muted'
25
+ }
26
+ };
27
+ // helper functions
28
+ function isTauriInvokeAvailable() {
29
+ return typeof window !== 'undefined' && Boolean(window.__TAURI_INTERNALS__?.invoke);
30
+ }
31
+ async function invokeTauri(command, args) {
32
+ const {
33
+ invoke
34
+ } = await import('@tauri-apps/api/core');
35
+ return invoke(command, args);
36
+ }
37
+ function computeLevels(samples) {
38
+ if (samples.length === 0) return {
39
+ peak: 0,
40
+ rms: 0
41
+ };
42
+ let peak = 0;
43
+ let sumSquares = 0;
44
+ for (let i = 0; i < samples.length; i += 1) {
45
+ const value = Math.abs(samples[i]);
46
+ if (value > peak) peak = value;
47
+ sumSquares += samples[i] * samples[i];
48
+ }
49
+ return {
50
+ peak,
51
+ rms: Math.sqrt(sumSquares / samples.length)
52
+ };
53
+ }
54
+ function delay(ms) {
55
+ return new Promise(resolve => setTimeout(resolve, ms));
56
+ }
57
+ async function copyToClipboard(text) {
58
+ try {
59
+ if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {
60
+ await navigator.clipboard.writeText(text);
61
+ return true;
62
+ }
63
+ } catch {
64
+ /* fall through */
65
+ }
66
+ return false;
67
+ }
68
+ // sub components
69
+ function StatusBadge({
70
+ status
71
+ }) {
72
+ if (!status) {
73
+ return jsxs("span", {
74
+ className: "inline-flex items-center gap-1.5 text-[11px] text-muted-foreground",
75
+ children: [jsx(LoaderIcon, {
76
+ className: "w-3 h-3 animate-spin"
77
+ }), "Checking\u2026"]
78
+ });
79
+ }
80
+ const copy = STATUS_COPY[status];
81
+ const toneClass = copy.tone === 'ok' ? 'text-emerald-600 bg-emerald-500/10 border-emerald-500/30' : copy.tone === 'warn' ? 'text-amber-600 bg-amber-500/10 border-amber-500/30' : copy.tone === 'err' ? 'text-red-600 bg-red-500/10 border-red-500/30' : 'text-muted-foreground bg-muted border-border';
82
+ return jsxs("span", {
83
+ className: cn('inline-flex items-center gap-1.5 rounded-full border px-2 py-0.5 text-[11px] font-medium', toneClass),
84
+ children: [copy.tone === 'ok' ? jsx(CheckCircle2Icon, {
85
+ className: "w-3 h-3"
86
+ }) : copy.tone === 'err' ? jsx(CircleAlertIcon, {
87
+ className: "w-3 h-3"
88
+ }) : jsx(HelpCircleIcon, {
89
+ className: "w-3 h-3"
90
+ }), copy.label]
91
+ });
92
+ }
93
+ function LevelBar({
94
+ value
95
+ }) {
96
+ const pct = Math.min(100, Math.max(0, Math.round(value * 100)));
97
+ return jsx("div", {
98
+ className: "h-1.5 w-full rounded-full bg-muted overflow-hidden",
99
+ children: jsx("div", {
100
+ className: cn('h-full transition-all', pct < 5 ? 'bg-muted-foreground/40' : pct < 25 ? 'bg-emerald-500' : 'bg-emerald-400'),
101
+ style: {
102
+ width: `${pct}%`
103
+ }
104
+ })
105
+ });
106
+ }
107
+ function TestResultView({
108
+ result
109
+ }) {
110
+ if (result.kind === 'idle') return null;
111
+ if (result.kind === 'running') {
112
+ return jsxs("div", {
113
+ className: "flex items-center gap-2 rounded-md border border-border/60 bg-muted/40 p-2 text-[11px]",
114
+ children: [jsx(LoaderIcon, {
115
+ className: "w-3.5 h-3.5 animate-spin text-muted-foreground"
116
+ }), jsxs("span", {
117
+ children: ["Recording ", Math.round(TEST_DURATION_MS / 1000), "s\u2026"]
118
+ })]
119
+ });
120
+ }
121
+ if (result.kind === 'error') {
122
+ return jsxs("div", {
123
+ className: "rounded-md border border-red-500/30 bg-red-500/10 p-2 text-[11px] text-red-600",
124
+ children: [jsx("strong", {
125
+ children: "Test failed."
126
+ }), " ", result.message]
127
+ });
128
+ }
129
+ if (result.kind === 'silent') {
130
+ return jsxs("div", {
131
+ className: "rounded-md border border-amber-500/30 bg-amber-500/10 p-2 text-[11px] text-amber-700",
132
+ children: [jsx("strong", {
133
+ children: "No audio detected."
134
+ }), " Captured ", result.samples, " samples but the signal was silent. The OS may have authorized us at the TCC layer but cpal/CoreAudio is still serving an empty stream \u2014 try Restart App, or reset TCC and re-grant."]
135
+ });
136
+ }
137
+ return jsxs("div", {
138
+ className: "space-y-1.5 rounded-md border border-emerald-500/30 bg-emerald-500/10 p-2 text-[11px] text-emerald-700",
139
+ children: [jsxs("div", {
140
+ className: "flex items-center justify-between font-medium",
141
+ children: [jsxs("span", {
142
+ className: "inline-flex items-center gap-1.5",
143
+ children: [jsx(CheckCircle2Icon, {
144
+ className: "w-3.5 h-3.5"
145
+ }), "Signal detected"]
146
+ }), jsxs("span", {
147
+ className: "font-mono text-[10px] text-emerald-700/80",
148
+ children: ["peak ", result.peak.toFixed(3), " \u00B7 rms ", result.rms.toFixed(3)]
149
+ })]
150
+ }), jsx(LevelBar, {
151
+ value: result.peak
152
+ }), jsxs("div", {
153
+ className: "text-[10px] text-emerald-700/80",
154
+ children: ["Captured ", result.samples, " samples over ", result.durationMs, "ms"]
155
+ })]
156
+ });
157
+ }
158
+ // main component
159
+ function MicrophoneDiagnostics() {
160
+ const [permission, setPermission] = useState(null);
161
+ const [devices, setDevices] = useState([]);
162
+ const [devicesLoading, setDevicesLoading] = useState(false);
163
+ const [testResult, setTestResult] = useState({
164
+ kind: 'idle'
165
+ });
166
+ const [tccCopied, setTccCopied] = useState(false);
167
+ const tauriAvailable = isTauriInvokeAvailable();
168
+ const inFlightRef = useRef(false);
169
+ const refreshPermission = useCallback(async () => {
170
+ if (!tauriAvailable) {
171
+ setPermission('unsupported');
172
+ return;
173
+ }
174
+ try {
175
+ const status = await invokeTauri('check_microphone_permission');
176
+ setPermission(status);
177
+ } catch {
178
+ setPermission('unsupported');
179
+ }
180
+ }, [tauriAvailable]);
181
+ const refreshDevices = useCallback(async () => {
182
+ if (!tauriAvailable) return;
183
+ setDevicesLoading(true);
184
+ try {
185
+ const list = await invokeTauri('list_audio_input_devices');
186
+ setDevices(list ?? []);
187
+ } catch {
188
+ setDevices([]);
189
+ } finally {
190
+ setDevicesLoading(false);
191
+ }
192
+ }, [tauriAvailable]);
193
+ useEffect(() => {
194
+ void refreshPermission();
195
+ void refreshDevices();
196
+ if (!tauriAvailable) return;
197
+ const interval = setInterval(() => {
198
+ void refreshPermission();
199
+ }, STATUS_POLL_MS);
200
+ return () => clearInterval(interval);
201
+ }, [refreshPermission, refreshDevices, tauriAvailable]);
202
+ const handleRunTest = useCallback(async () => {
203
+ if (inFlightRef.current || !tauriAvailable) return;
204
+ inFlightRef.current = true;
205
+ setTestResult({
206
+ kind: 'running'
207
+ });
208
+ try {
209
+ try {
210
+ await invokeTauri('clear_audio_buffer_cmd');
211
+ } catch {
212
+ /* non-fatal */
213
+ }
214
+ await invokeTauri('start_system_audio_capture');
215
+ await delay(TEST_DURATION_MS);
216
+ const captured = await invokeTauri('get_captured_audio');
217
+ try {
218
+ await invokeTauri('stop_system_audio_capture');
219
+ } catch {
220
+ /* non-fatal */
221
+ }
222
+ const {
223
+ peak,
224
+ rms
225
+ } = computeLevels(captured.samples ?? []);
226
+ const sampleCount = captured.samples?.length ?? 0;
227
+ if (sampleCount === 0 || peak < 1e-4) {
228
+ setTestResult({
229
+ kind: 'silent',
230
+ samples: sampleCount,
231
+ durationMs: captured.duration_ms
232
+ });
233
+ } else {
234
+ setTestResult({
235
+ kind: 'ok',
236
+ peak,
237
+ rms,
238
+ samples: sampleCount,
239
+ durationMs: captured.duration_ms
240
+ });
241
+ }
242
+ } catch (e) {
243
+ setTestResult({
244
+ kind: 'error',
245
+ message: e instanceof Error ? e.message : String(e)
246
+ });
247
+ try {
248
+ await invokeTauri('stop_system_audio_capture');
249
+ } catch {
250
+ /* swallow */
251
+ }
252
+ } finally {
253
+ inFlightRef.current = false;
254
+ void refreshPermission();
255
+ }
256
+ }, [refreshPermission, tauriAvailable]);
257
+ const handleOpenSettings = useCallback(async () => {
258
+ if (!tauriAvailable) return;
259
+ try {
260
+ await invokeTauri('open_microphone_settings');
261
+ } catch {
262
+ /* noop */
263
+ }
264
+ }, [tauriAvailable]);
265
+ const handleRestart = useCallback(async () => {
266
+ if (!tauriAvailable) return;
267
+ try {
268
+ await invokeTauri('restart_app');
269
+ } catch {
270
+ /* process is exec'ing — nothing to do */
271
+ }
272
+ }, [tauriAvailable]);
273
+ const handleCopyTcc = useCallback(async () => {
274
+ const ok = await copyToClipboard(TCC_RESET_HINT);
275
+ if (ok) {
276
+ setTccCopied(true);
277
+ setTimeout(() => setTccCopied(false), 2000);
278
+ }
279
+ }, []);
280
+ const defaultDevice = devices.find(device => device.is_default) ?? devices[0];
281
+ const isAuthorized = permission === 'authorized' || permission === 'unsupported';
282
+ const testDisabled = !tauriAvailable || !isAuthorized || testResult.kind === 'running';
283
+ return jsxs("div", {
284
+ className: "space-y-3 pt-3 border-t border-border/50",
285
+ children: [jsxs("div", {
286
+ className: "flex items-center justify-between gap-2",
287
+ children: [jsx("h4", {
288
+ className: "text-xs font-semibold text-muted-foreground uppercase tracking-wide",
289
+ children: "Microphone Diagnostics"
290
+ }), jsx(StatusBadge, {
291
+ status: permission
292
+ })]
293
+ }), jsx("div", {
294
+ className: "rounded-md border border-border/60 bg-muted/30 p-2",
295
+ children: jsxs("div", {
296
+ className: "flex items-center justify-between gap-2",
297
+ children: [jsxs("div", {
298
+ className: "flex min-w-0 items-center gap-2",
299
+ children: [jsx(MicIcon, {
300
+ className: "w-3.5 h-3.5 shrink-0 text-muted-foreground"
301
+ }), jsxs("div", {
302
+ className: "min-w-0",
303
+ children: [jsx("div", {
304
+ className: "truncate text-xs font-medium",
305
+ children: devicesLoading ? 'Loading devices…' : defaultDevice ? defaultDevice.name : 'No input device found'
306
+ }), jsx("div", {
307
+ className: "text-[10px] text-muted-foreground",
308
+ children: devices.length > 1 ? `${devices.length} input devices · system default highlighted` : 'System default input'
309
+ })]
310
+ })]
311
+ }), jsx(Button, {
312
+ size: "icon",
313
+ variant: "ghost",
314
+ className: "h-7 w-7 shrink-0",
315
+ onClick: () => {
316
+ void refreshDevices();
317
+ void refreshPermission();
318
+ },
319
+ title: "Refresh",
320
+ disabled: !tauriAvailable,
321
+ children: jsx(RefreshCwIcon, {
322
+ className: cn('w-3.5 h-3.5', devicesLoading && 'animate-spin')
323
+ })
324
+ })]
325
+ })
326
+ }), jsxs("div", {
327
+ className: "space-y-2",
328
+ children: [jsx(Label, {
329
+ className: "text-xs font-medium",
330
+ children: "Live Mic Test"
331
+ }), jsx(Button, {
332
+ size: "sm",
333
+ variant: testResult.kind === 'ok' ? 'outline' : 'default',
334
+ onClick: () => void handleRunTest(),
335
+ disabled: testDisabled,
336
+ className: "w-full text-xs",
337
+ children: testResult.kind === 'running' ? jsxs(Fragment, {
338
+ children: [jsx(LoaderIcon, {
339
+ className: "w-3 h-3 mr-1.5 animate-spin"
340
+ }), "Listening\u2026"]
341
+ }) : jsxs(Fragment, {
342
+ children: [jsx(MicIcon, {
343
+ className: "w-3 h-3 mr-1.5"
344
+ }), testResult.kind === 'ok' || testResult.kind === 'silent' || testResult.kind === 'error' ? 'Run mic test again' : `Run mic test (${Math.round(TEST_DURATION_MS / 1000)}s)`]
345
+ })
346
+ }), jsx(TestResultView, {
347
+ result: testResult
348
+ }), !isAuthorized && permission && jsx("p", {
349
+ className: "text-[10px] text-muted-foreground",
350
+ children: "Grant microphone access below before running the test."
351
+ })]
352
+ }), jsxs("div", {
353
+ className: "grid grid-cols-2 gap-2",
354
+ children: [jsxs(Button, {
355
+ size: "sm",
356
+ variant: "outline",
357
+ onClick: () => void handleOpenSettings(),
358
+ disabled: !tauriAvailable,
359
+ className: "text-xs",
360
+ children: [jsx(SettingsIcon, {
361
+ className: "w-3 h-3 mr-1.5"
362
+ }), "Open System Settings"]
363
+ }), jsxs(Button, {
364
+ size: "sm",
365
+ variant: "outline",
366
+ onClick: () => void handleRestart(),
367
+ disabled: !tauriAvailable,
368
+ className: "text-xs",
369
+ children: [jsx(RotateCcwIcon, {
370
+ className: "w-3 h-3 mr-1.5"
371
+ }), "Restart App"]
372
+ })]
373
+ }), jsxs("div", {
374
+ className: "rounded-md border border-border/60 bg-muted/30 p-2 space-y-1.5",
375
+ children: [jsx("div", {
376
+ className: "text-[11px] font-medium",
377
+ children: "Still no signal after granting?"
378
+ }), jsx("p", {
379
+ className: "text-[10px] text-muted-foreground leading-relaxed",
380
+ children: "Dev builds and signed installs have separate TCC entries. Reset the entry for this bundle in a terminal, then restart the app to re-prompt:"
381
+ }), jsxs("div", {
382
+ className: "flex items-center gap-1.5",
383
+ children: [jsx("code", {
384
+ className: "flex-1 truncate rounded bg-background border border-border px-1.5 py-1 text-[10px] font-mono",
385
+ children: TCC_RESET_HINT
386
+ }), jsx(Button, {
387
+ size: "sm",
388
+ variant: "ghost",
389
+ className: "h-7 px-2 text-[10px]",
390
+ onClick: () => void handleCopyTcc(),
391
+ children: tccCopied ? 'Copied' : 'Copy'
392
+ })]
393
+ })]
394
+ })]
395
+ });
396
+ }export{MicrophoneDiagnostics};//# sourceMappingURL=MicrophoneDiagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MicrophoneDiagnostics.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/speech/SettingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgBjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA4B1C,UAAU,kBAAkB;IAExB,SAAS,EAAE,SAAS,CAAC;IACrB,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE/C,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,uBAAuB,CAAC,EAAE,SAAS,CAAC;CACvC;AAED,eAAO,MAAM,aAAa,GAAI,oIAQ3B,kBAAkB,4CAsTpB,CAAC"}
1
+ {"version":3,"file":"SettingsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/speech/SettingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgBjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA6B1C,UAAU,kBAAkB;IAExB,SAAS,EAAE,SAAS,CAAC;IACrB,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE/C,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,uBAAuB,CAAC,EAAE,SAAS,CAAC;CACvC;AAED,eAAO,MAAM,aAAa,GAAI,oIAQ3B,kBAAkB,4CAyTpB,CAAC"}
@@ -1,4 +1,4 @@
1
- import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState}from'react';import'../../../../shardui/accordion.js';import'../../../../shardui/alert.js';import'../../../../shardui/alert-dialog.js';import'@radix-ui/react-aspect-ratio';import'../../../../shardui/avatar.js';import'../../../../shardui/badge.js';import'../../../../shardui/breadcrumb.js';import {Button}from'../../../../shardui/button.js';import'../../../../shardui/calendar.js';import'../../../../shardui/card.js';import'../../../../shardui/carousel.js';import'../../../../shardui/chart.js';import'../../../../shardui/checkbox.js';import'@radix-ui/react-collapsible';import'../../../../shardui/command.js';import'../../../../shardui/context-menu.js';import'../../../../shardui/dialog.js';import'../../../../shardui/drawer.js';import'../../../../shardui/dropdown-menu.js';import'../../../../shardui/form.js';import'../../../../shardui/hover-card.js';import'../../../../shardui/input.js';import'../../../../shardui/input-otp.js';import {Label}from'../../../../shardui/label.js';import'../../../../shardui/menubar.js';import'../../../../shardui/navigation-menu.js';import'../../../../shardui/pagination.js';import'../../../../shardui/popover.js';import'../../../../shardui/progress.js';import'../../../../shardui/radio-group.js';import {SettingsIcon,ChevronDownIcon,WandIcon,ChevronUpIcon,RotateCcwIcon}from'lucide-react';import'react-resizable-panels';import'../../../../utils/isBrowser/index.js';import {cn}from'../../../../utils/util.js';import'fast-deep-equal/react.js';import'../../../../shardui/scroll-area.js';import {Select,SelectTrigger,SelectValue,SelectContent,SelectGroup,SelectLabel,SelectItem}from'../../../../shardui/select.js';import'../../../../shardui/separator.js';import'../../../../shardui/sheet.js';import'../../../../shardui/sidebar.js';import {Slider}from'../../../../shardui/slider.js';import'../../../ThemeProvider/ThemeProvider.js';import'sonner';import {Switch}from'../../../../shardui/switch.js';import'../../../../shardui/table.js';import'../../../../shardui/tabs.js';import {Textarea}from'../../../../shardui/textarea.js';import'../../../../shardui/toast.js';import'../../../../shardui/toggle.js';import'../../../../shardui/toggle-group.js';import'../../../../shardui/tooltip.js';import {PROMPT_TEMPLATES,getPromptTemplateById}from'./promptTemplates.js';// Sensitivity presets for simpler UX
1
+ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState}from'react';import'../../../../shardui/accordion.js';import'../../../../shardui/alert.js';import'../../../../shardui/alert-dialog.js';import'@radix-ui/react-aspect-ratio';import'../../../../shardui/avatar.js';import'../../../../shardui/badge.js';import'../../../../shardui/breadcrumb.js';import {Button}from'../../../../shardui/button.js';import'../../../../shardui/calendar.js';import'../../../../shardui/card.js';import'../../../../shardui/carousel.js';import'../../../../shardui/chart.js';import'../../../../shardui/checkbox.js';import'@radix-ui/react-collapsible';import'../../../../shardui/command.js';import'../../../../shardui/context-menu.js';import'../../../../shardui/dialog.js';import'../../../../shardui/drawer.js';import'../../../../shardui/dropdown-menu.js';import'../../../../shardui/form.js';import'../../../../shardui/hover-card.js';import'../../../../shardui/input.js';import'../../../../shardui/input-otp.js';import {Label}from'../../../../shardui/label.js';import'../../../../shardui/menubar.js';import'../../../../shardui/navigation-menu.js';import'../../../../shardui/pagination.js';import'../../../../shardui/popover.js';import'../../../../shardui/progress.js';import'../../../../shardui/radio-group.js';import {SettingsIcon,ChevronDownIcon,WandIcon,ChevronUpIcon,RotateCcwIcon}from'lucide-react';import'react-resizable-panels';import'../../../../utils/isBrowser/index.js';import {cn}from'../../../../utils/util.js';import'fast-deep-equal/react.js';import'../../../../shardui/scroll-area.js';import {Select,SelectTrigger,SelectValue,SelectContent,SelectGroup,SelectLabel,SelectItem}from'../../../../shardui/select.js';import'../../../../shardui/separator.js';import'../../../../shardui/sheet.js';import'../../../../shardui/sidebar.js';import {Slider}from'../../../../shardui/slider.js';import'../../../ThemeProvider/ThemeProvider.js';import'sonner';import {Switch}from'../../../../shardui/switch.js';import'../../../../shardui/table.js';import'../../../../shardui/tabs.js';import {Textarea}from'../../../../shardui/textarea.js';import'../../../../shardui/toast.js';import'../../../../shardui/toggle.js';import'../../../../shardui/toggle-group.js';import'../../../../shardui/tooltip.js';import {PROMPT_TEMPLATES,getPromptTemplateById}from'./promptTemplates.js';import {MicrophoneDiagnostics}from'./MicrophoneDiagnostics.js';// Sensitivity presets for simpler UX
2
2
  const SENSITIVITY_PRESETS = {
3
3
  low: {
4
4
  sensitivity_rms: 0.015,
@@ -284,7 +284,7 @@ const SettingsPanel = ({
284
284
  }), "Reset to Defaults"]
285
285
  })]
286
286
  })]
287
- }), settingsDropdownContent ? jsx("div", {
287
+ }), jsx(MicrophoneDiagnostics, {}), settingsDropdownContent ? jsx("div", {
288
288
  className: "border-t border-border/50 pt-2",
289
289
  children: settingsDropdownContent
290
290
  }) : null]
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPanel.js","sources":["../../../../../src/components/AIToolbar/components/speech/SettingsPanel.tsx"],"sourcesContent":[null],"names":[],"mappings":"8yEAkDI;MACA,sBAAuB;AACvB,EAAA,GAAA,EAAA;IACA,eAAA,EAAA,KAAA;AACH,IAAA,oBAAA,EAAA,KAAA;AAED,IAAA,KAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SettingsPanel.js","sources":["../../../../../src/components/AIToolbar/components/speech/SettingsPanel.tsx"],"sourcesContent":[null],"names":[],"mappings":";AAqDI,MAAA,mBAAoB,GAAA;KACpB,EAAA;AACH,IAAA,eAAA,EAAA,KAAA;AAED,IAAA,oBAAa,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/speech/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGzE,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,4CAmWlD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/AIToolbar/components/speech/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGzE,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,4CAyWlD,CAAC"}
@@ -40,8 +40,10 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useEffect,use
40
40
  ignoreContinuousRecording,
41
41
  scrollAreaRef,
42
42
  settingsDropdownContent,
43
- voicePopoverFooter
43
+ voicePopoverFooter,
44
+ toolbarShowElementTitles
44
45
  } = props;
46
+ const showNativeTitles = toolbarShowElementTitles !== false;
45
47
  // View mode toggle
46
48
  const [conversationMode, setConversationMode] = useState(false);
47
49
  // Screenshot state
@@ -133,7 +135,7 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useEffect,use
133
135
  asChild: true,
134
136
  children: jsx(Button, {
135
137
  size: "icon",
136
- title: getButtonTitle(),
138
+ title: showNativeTitles ? getButtonTitle() : undefined,
137
139
  onClick: handleToggleCapture,
138
140
  className: cn(capturing && 'bg-green-50 hover:bg-green-100', error && 'bg-red-100 hover:bg-red-200'),
139
141
  children: getButtonIcon()
@@ -164,7 +166,7 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useEffect,use
164
166
  onClick: handleCaptureScreenshot,
165
167
  disabled: isCapturingScreenshot,
166
168
  className: cn('h-6 text-[10px] gap-1 px-2', screenshotImage && 'bg-primary text-primary-foreground'),
167
- title: "Capture screenshot to include with transcription",
169
+ title: showNativeTitles ? 'Capture screenshot to include with transcription' : undefined,
168
170
  children: [isCapturingScreenshot ? jsx(LoaderIcon, {
169
171
  className: "w-3 h-3 animate-spin"
170
172
  }) : jsx(CameraIcon, {
@@ -175,7 +177,7 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useEffect,use
175
177
  variant: "ghost",
176
178
  onClick: startNewConversation,
177
179
  className: "h-6 text-[10px] gap-1 px-2",
178
- title: "Start a new conversation",
180
+ title: showNativeTitles ? 'Start a new conversation' : undefined,
179
181
  children: [jsx(PlusIcon, {
180
182
  className: "w-3 h-3"
181
183
  }), "New"]
@@ -183,7 +185,7 @@ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useEffect,use
183
185
  size: "icon",
184
186
  variant: "ghost",
185
187
  className: "h-6 w-6",
186
- title: "Close",
188
+ title: showNativeTitles ? 'Close' : undefined,
187
189
  onClick: () => {
188
190
  setIsPopoverOpen(false);
189
191
  resizeWindow(false);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -173,6 +173,8 @@ export interface SystemAudioProps {
173
173
  settingsDropdownContent?: ReactNode;
174
174
  /** Optional footer (e.g. version, report bug) pinned under the scroll area, below Help & shortcuts. */
175
175
  voicePopoverFooter?: ReactNode;
176
+ /** When false, omit native `title=` tooltips on primary voice popover controls (desktop bar setting). */
177
+ toolbarShowElementTitles?: boolean;
176
178
  }
177
179
  export type AIToolbarAppProps = {
178
180
  isHidden?: boolean;
@@ -186,5 +188,7 @@ export type AIToolbarAppProps = {
186
188
  trailing?: ReactNode;
187
189
  className?: string;
188
190
  toolbarClassName?: string;
191
+ /** When false, omit native `title=` tooltips on toolbar controls (desktop bar setting). Default: show. */
192
+ showElementTitles?: boolean;
189
193
  };
190
194
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/components/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/components/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Entries fed from yantra marketplace uiLayout (`useMarketplaceCharacters`) before install. */
2
+ export type MarketplaceCharacterEntry = {
3
+ name: string;
4
+ fileName?: string;
5
+ extensionId?: string;
6
+ extensionSlug?: string;
7
+ avatarSrc: string | null;
8
+ };
9
+ /** Dispatched when {@link setMarketplaceCharacters} updates the overlay list. */
10
+ export declare const MARKETPLACE_CHARACTERS_CHANGED_EVENT = "yantra:marketplace-characters-changed";
11
+ export declare function setMarketplaceCharacters(entries: MarketplaceCharacterEntry[]): void;
12
+ export declare function getMarketplaceCharactersSnapshot(): MarketplaceCharacterEntry[];
13
+ //# sourceMappingURL=marketplaceCharactersRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplaceCharactersRegistry.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/hooks/marketplaceCharactersRegistry.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,MAAM,MAAM,yBAAyB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,oCAAoC,0CAA0C,CAAC;AAI5F,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,IAAI,CAKnF;AAED,wBAAgB,gCAAgC,IAAI,yBAAyB,EAAE,CAE9E"}
@@ -0,0 +1,6 @@
1
+ /** Dispatched when {@link setMarketplaceCharacters} updates the overlay list. */
2
+ const MARKETPLACE_CHARACTERS_CHANGED_EVENT = 'yantra:marketplace-characters-changed';
3
+ let marketplaceOverlay = [];
4
+ function getMarketplaceCharactersSnapshot() {
5
+ return marketplaceOverlay;
6
+ }export{MARKETPLACE_CHARACTERS_CHANGED_EVENT,getMarketplaceCharactersSnapshot};//# sourceMappingURL=marketplaceCharactersRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplaceCharactersRegistry.js","sources":["../../../../src/components/AIToolbar/hooks/marketplaceCharactersRegistry.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACY,0CAA4B,GAAA;IACpC,kBAAa,GAAA,EAAA;;;"}
@@ -1,3 +1,4 @@
1
+ import { readPreferredActiveCharacterFileName } from '../../../hooks/activeCharacterPreference';
1
2
  export interface ActiveCharacter {
2
3
  /** Manifest `name` (or filesystem stem) — e.g. "Seraphina". */
3
4
  name: string;
@@ -38,6 +39,7 @@ export interface MarketplaceCharacterEntry {
38
39
  * resolves. Triggers a re-render of any active character hook.
39
40
  */
40
41
  export declare function setMarketplaceCharacters(entries: MarketplaceCharacterEntry[]): void;
42
+ export { readPreferredActiveCharacterFileName };
41
43
  /**
42
44
  * Return the active character (name + avatar) or null when none is installed
43
45
  * / we're not running under Tauri. Selection follows `pickActiveMerged` (file_name
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveCharacter.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/hooks/useActiveCharacter.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,eAAe;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,sDAAsD;IACtD,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,gFAAgF;IAChF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iFAAiF;IACjF,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C;AASD;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAiCD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,IAAI,CASnF;AAkMD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAqC3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAoEpD"}
1
+ {"version":3,"file":"useActiveCharacter.d.ts","sourceRoot":"","sources":["../../../../src/components/AIToolbar/hooks/useActiveCharacter.ts"],"names":[],"mappings":"AA2BA,OAAO,EAGH,oCAAoC,EAEvC,MAAM,0CAA0C,CAAC;AASlD,MAAM,WAAW,eAAe;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,sDAAsD;IACtD,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,gFAAgF;IAChF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iFAAiF;IACjF,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C;AASD;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAiCD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,IAAI,CASnF;AAkMD,OAAO,EAAE,oCAAoC,EAAE,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAqC3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAmFpD"}
@@ -1,4 +1,4 @@
1
- import*as React from'react';import {setPreferredActiveCharacterFileName,ACTIVE_CHARACTER_CHANGE_EVENT,readPreferredActiveCharacterFileName,ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY}from'../../../hooks/activeCharacterPreference.js';import {clearCharacterSpriteCache}from'./useCharacterSprite.js';// Active-character lookup for the AIToolbar.
1
+ import*as React from'react';import {setPreferredActiveCharacterFileName,ACTIVE_CHARACTER_CHANGE_EVENT,readPreferredActiveCharacterFileName,ACTIVE_CHARACTER_FILE_NAME_STORAGE_KEY}from'../../../hooks/activeCharacterPreference.js';import {clearCharacterSpriteCache}from'./useCharacterSprite.js';import {MARKETPLACE_CHARACTERS_CHANGED_EVENT,getMarketplaceCharactersSnapshot}from'./marketplaceCharactersRegistry.js';// Active-character lookup for the AIToolbar.
2
2
  //
3
3
  // Surfaces the currently-selected character (name + avatar data URL) so the
4
4
  // completion popover and message history can show "Seraphina" with her avatar
@@ -230,7 +230,6 @@ function useCharacterPreferenceListeners(reload, bump) {
230
230
  };
231
231
  }, [reload, bump]);
232
232
  }
233
- // main API
234
233
  /**
235
234
  * Return the active character (name + avatar) or null when none is installed
236
235
  * / we're not running under Tauri. Selection follows `pickActiveMerged` (file_name
@@ -282,6 +281,13 @@ function useCharacterPicker() {
282
281
  const [list, setList] = React.useState([]);
283
282
  const [avatars, setAvatars] = React.useState({});
284
283
  const [bump, bumpFn] = usePreferenceSyncBump();
284
+ const [marketplaceBump, setMarketplaceBump] = React.useState(0);
285
+ React.useEffect(() => {
286
+ if (typeof window === 'undefined') return;
287
+ const onMk = () => setMarketplaceBump(n => n + 1);
288
+ window.addEventListener(MARKETPLACE_CHARACTERS_CHANGED_EVENT, onMk);
289
+ return () => window.removeEventListener(MARKETPLACE_CHARACTERS_CHANGED_EVENT, onMk);
290
+ }, []);
285
291
  const reload = React.useCallback(async () => {
286
292
  const next = await safeInvoke('character_list', {
287
293
  shallow: false
@@ -295,7 +301,7 @@ function useCharacterPicker() {
295
301
  });
296
302
  }, [reload]);
297
303
  useCharacterPreferenceListeners(reload, bumpFn);
298
- const activeName = React.useMemo(() => pickActiveMerged(list)?.name ?? null, [list, bump]);
304
+ const activeName = React.useMemo(() => pickActiveMerged(list)?.name ?? null, [list, bump, marketplaceBump]);
299
305
  // Resolve avatars for every character in the list (cached by file_name).
300
306
  React.useEffect(() => {
301
307
  let alive = true;
@@ -317,11 +323,20 @@ function useCharacterPicker() {
317
323
  alive = false;
318
324
  };
319
325
  }, [list, avatars]);
320
- const characters = React.useMemo(() => list.map(c => ({
321
- name: c.name,
322
- fileName: c.file_name,
323
- avatarSrc: c.file_name ? avatars[c.file_name] ?? null : null
324
- })), [list, avatars]);
326
+ const characters = React.useMemo(() => {
327
+ const installed = list.map(c => ({
328
+ name: c.name,
329
+ fileName: c.file_name,
330
+ avatarSrc: c.file_name ? avatars[c.file_name] ?? null : null
331
+ }));
332
+ const seen = new Set(installed.map(c => c.name));
333
+ const extras = getMarketplaceCharactersSnapshot().filter(m => !seen.has(m.name)).map(m => ({
334
+ name: m.name,
335
+ fileName: m.fileName,
336
+ avatarSrc: m.avatarSrc ?? null
337
+ }));
338
+ return [...installed, ...extras];
339
+ }, [list, avatars, marketplaceBump]);
325
340
  const setActive = React.useCallback(name => {
326
341
  writeStoredActiveName(name);
327
342
  const row = name ? list.find(c => c.name === name) : null;
@@ -341,4 +356,4 @@ function useCharacterPicker() {
341
356
  activeName,
342
357
  setActive
343
358
  };
344
- }export{setMarketplaceCharacters,useActiveCharacter,useCharacterPicker};//# sourceMappingURL=useActiveCharacter.js.map
359
+ }export{readPreferredActiveCharacterFileName,setMarketplaceCharacters,useActiveCharacter,useCharacterPicker};//# sourceMappingURL=useActiveCharacter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveCharacter.js","sources":["../../../../src/components/AIToolbar/hooks/useActiveCharacter.ts"],"sourcesContent":[null],"names":[],"mappings":"oSAqCA;;;;;;AAMI;AACH;AAED;;;AAGI;AACH;AAED;;;;AAII;;;AAGH;AASD;;;;;MAQI,uBAAqB,GAAA,0BAAA;;;AAGrB;AACH;AAiCD;;;;AAIG,MAAA,4BAAA,GAAA,8BAAA;AACH;AA2MA,MAAA,uBAAA,GAAA,CAAA,YAAA,EAAA,UAAA,CAAA;;;;AAIG,SAAA,oBAAA,CAAA,EAAA,EAAA;AACH,EAAA,sBAAgB,CAAA,GAAA,CAAA,EAAA,CAAA;AAuChB,EAAA,OAAA,MAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,CAAA;;;AAGG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"useActiveCharacter.js","sources":["../../../../src/components/AIToolbar/hooks/useActiveCharacter.ts"],"sourcesContent":[null],"names":[],"mappings":"2ZA2BA;AAcA;;;;;;AAMI;AACH;AAED;;;AAGI;AACH;AAED;;;;AAII;;;AAGH;AASD;;;;MAQI,uBAAqB,GAAA,0BAAA;;;AAGrB;AACH;AAiCD;;;;AAIG,MAAA,4BAAA,GAAA,8BAAA;AACH;AA2MA,MAAA,uBAAS,GAAA,CAAA,YAAoC,EAAE,UAAC,CAAA;AAEhD;;;;AAIG,EAAA,sBAAA,CAAA,GAAA,CAAA,EAAA,CAAA;AACH,EAAA,OAAA,MAAA,sBAAgB,CAAA,MAAkB,CAAA,EAAI,CAAA;AAuCtC;;;AAGG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,6 +2,6 @@ export { AIToolbar, AIToolbarLeading, AIToolbarMain, AIToolbarTrailing, AIToolba
2
2
  export type { AIToolbarProps, AIToolbarSectionProps, AIToolbarInputSurfaceProps, AIToolbarStatusDotProps, } from './components/AIToolbarPrimitives';
3
3
  export * from './components';
4
4
  export type { CompletionSubmitOptions, UseCompletionReturn, SystemAudioProps, AIToolbarAppProps, AIToolbarHostPlatform, ChatMessage, ChatConversation, VadConfig, ToolbarAiProvider, ToolbarSelectedProvider, ToolbarAudioDevices, ToolbarAttachedFile, ToolbarScreenshotConfiguration, } from './components/types';
5
- export { setMarketplaceCharacters, useActiveCharacter, useCharacterPicker } from './hooks/useActiveCharacter';
5
+ export { setMarketplaceCharacters, useActiveCharacter, useCharacterPicker, readPreferredActiveCharacterFileName, } from './hooks/useActiveCharacter';
6
6
  export type { MarketplaceCharacterEntry, ActiveCharacter, CharacterListEntry, CharacterPicker, } from './hooks/useActiveCharacter';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AIToolbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACR,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,GAC1B,MAAM,kCAAkC,CAAC;AAE1C,cAAc,cAAc,CAAC;AAE7B,YAAY,EACR,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,8BAA8B,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC9G,YAAY,EACR,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,eAAe,GAClB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AIToolbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACR,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,GAC1B,MAAM,kCAAkC,CAAC;AAE1C,cAAc,cAAc,CAAC;AAE7B,YAAY,EACR,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,8BAA8B,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACH,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,oCAAoC,GACvC,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACR,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,eAAe,GAClB,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@admin-layout/tailwind-ui",
3
- "version": "12.2.4-alpha.60",
3
+ "version": "12.2.4-alpha.62",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -96,5 +96,5 @@
96
96
  "typescript": {
97
97
  "definition": "lib/index.d.ts"
98
98
  },
99
- "gitHead": "5f1cbe79214debd2025b7e36e351fad227998a0f"
99
+ "gitHead": "4dec1930c6d2da179bd1279602305a49d3a3b75b"
100
100
  }