@designcrowd/fe-shared-lib 1.8.0 → 1.8.2-voice-cumulative-transcript-1

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 (38) hide show
  1. package/.claude/scheduled_tasks.lock +1 -0
  2. package/package.json +1 -1
  3. package/src/atoms/components/Icon/Icon.stories.js +1 -0
  4. package/src/atoms/components/Icon/icons/select-all.vue +12 -4
  5. package/src/useVoiceToText.ts +3 -8
  6. package/.playwright-cli/page-2026-04-15T02-26-54-483Z.yml +0 -68
  7. package/.playwright-cli/page-2026-04-15T02-27-08-312Z.yml +0 -0
  8. package/.playwright-cli/page-2026-04-15T02-27-25-596Z.yml +0 -0
  9. package/.playwright-cli/page-2026-04-15T02-27-40-203Z.yml +0 -0
  10. package/.playwright-cli/page-2026-04-15T02-38-58-180Z.yml +0 -0
  11. package/.playwright-cli/page-2026-04-15T02-39-01-736Z.yml +0 -26
  12. package/.playwright-cli/page-2026-04-15T02-39-10-233Z.yml +0 -26
  13. package/.playwright-cli/page-2026-04-15T02-39-43-909Z.yml +0 -26
  14. package/.playwright-cli/page-2026-04-15T02-40-44-800Z.yml +0 -0
  15. package/.playwright-cli/page-2026-04-15T02-40-54-188Z.yml +0 -26
  16. package/.playwright-cli/page-2026-04-15T02-40-59-031Z.yml +0 -26
  17. package/.playwright-cli/page-2026-04-15T02-51-07-111Z.yml +0 -0
  18. package/.playwright-cli/page-2026-04-15T02-51-10-941Z.yml +0 -26
  19. package/.playwright-cli/page-2026-04-15T02-51-17-020Z.yml +0 -26
  20. package/.playwright-cli/page-2026-04-15T02-51-42-403Z.yml +0 -2
  21. package/.playwright-cli/page-2026-04-15T02-51-53-552Z.yml +0 -26
  22. package/.playwright-cli/page-2026-04-15T02-51-54-631Z.yml +0 -26
  23. package/.playwright-cli/page-2026-04-15T02-52-16-170Z.yml +0 -26
  24. package/.playwright-cli/page-2026-04-15T02-52-17-246Z.yml +0 -26
  25. package/.playwright-cli/page-2026-04-15T02-52-28-472Z.yml +0 -26
  26. package/.playwright-cli/page-2026-04-15T02-53-15-507Z.yml +0 -0
  27. package/.playwright-cli/page-2026-04-15T02-53-16-554Z.yml +0 -26
  28. package/.playwright-cli/page-2026-04-15T02-53-22-178Z.yml +0 -26
  29. package/.playwright-cli/page-2026-04-15T02-53-34-973Z.yml +0 -26
  30. package/.playwright-cli/page-2026-04-15T06-15-29-589Z.yml +0 -68
  31. package/docs/voice-to-text-discussion-attachments/Screenshot 2026-04-15 at 11.44.18/342/200/257am.png +0 -0
  32. package/docs/voice-to-text-discussion-attachments/image.png +0 -0
  33. package/docs/voice-to-text-discussion-attachments/image_1.png +0 -0
  34. package/docs/voice-to-text-discussion-attachments/image_2.png +0 -0
  35. package/docs/voice-to-text-discussion-attachments/image_3.png +0 -0
  36. package/docs/voice-to-text-discussion-attachments/image_4.png +0 -0
  37. package/docs/voice-to-text-discussion.md +0 -330
  38. /package/.playwright-cli/{page-2026-04-15T06-15-41-114Z.yml → page-2026-04-27T23-43-18-200Z.yml} +0 -0
@@ -0,0 +1 @@
1
+ {"sessionId":"33dfc84f-253d-421e-b0c6-adbf8fc2c94d","pid":84069,"procStart":"339429","acquiredAt":1777334296981}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designcrowd/fe-shared-lib",
3
- "version": "1.8.0",
3
+ "version": "1.8.2-voice-cumulative-transcript-1",
4
4
  "scripts": {
5
5
  "start": "run-p storybook watch:translation",
6
6
  "build": "npm run build:css --production",
@@ -216,6 +216,7 @@ export const IconSample = () => {
216
216
  { name: 'media' },
217
217
  { name: 'search' },
218
218
  { name: 'secure' },
219
+ { name: 'select-all' },
219
220
  { name: 'send' },
220
221
  { name: 'services' },
221
222
  { name: 'settings' },
@@ -1,7 +1,15 @@
1
1
  <template>
2
- <g>
3
- <rect x="0.75" y="0.75" width="14.5" height="14.5" rx="1.25" fill="none" stroke="currentColor" stroke-width="1.5" stroke-dasharray="4 4"/>
4
- <path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 8.5V4.5H8.5V5.80003H10V4C10 3.44772 9.55228 3 9 3H4C3.44772 3 3 3.44772 3 4V9C3 9.55228 3.44772 10 4 10H5.80005V8.5H4.5Z"/>
5
- <rect x="6" y="6" width="7" height="7" rx="1" fill="none" stroke="currentColor" stroke-width="1.5"/>
2
+ <g clip-path="url(#clip0_3437_2353)">
3
+ <path
4
+ d="M13.9163 12.0003C13.9163 11.5862 14.2523 11.2505 14.6663 11.2503C15.0806 11.2503 15.4163 11.5861 15.4163 12.0003C15.4163 12.5718 15.4227 13.0046 15.3226 13.3783C15.0683 14.3273 14.3273 15.0683 13.3783 15.3226C13.0046 15.4227 12.5718 15.4163 12.0003 15.4163C11.5861 15.4163 11.2503 15.0806 11.2503 14.6663C11.2505 14.2523 11.5862 13.9163 12.0003 13.9163C12.6683 13.9163 12.8557 13.9105 12.9906 13.8743C13.4217 13.7587 13.7587 13.4217 13.8743 12.9906C13.9105 12.8557 13.9163 12.6683 13.9163 12.0003ZM1.32943 11.2503C1.74344 11.2475 2.08126 11.5805 2.08431 11.9945C2.08796 12.5202 2.10485 12.8174 2.14974 13.0257C2.2144 13.3254 2.44543 13.6173 2.76595 13.7806C2.93554 13.867 3.19601 13.9097 4.00521 13.9154C4.41941 13.9182 4.7532 14.257 4.75033 14.6712C4.74719 15.0852 4.40851 15.4182 3.99447 15.4154C3.2509 15.4102 2.62318 15.3905 2.08529 15.1165C1.4157 14.7754 0.855501 14.1374 0.68392 13.3421C0.601897 12.9618 0.587871 12.5175 0.584311 12.0052C0.581435 11.591 0.915226 11.2532 1.32943 11.2503ZM9.33333 13.6986C9.74751 13.6986 10.0833 14.0344 10.0833 14.4486C10.0833 14.8628 9.74755 15.1986 9.33333 15.1986H6.66634C6.25228 15.1984 5.91634 14.8627 5.91634 14.4486C5.9164 14.0345 6.25232 13.6987 6.66634 13.6986H9.33333ZM0.583334 9.33333V6.66634C0.58351 6.25228 0.919229 5.91634 1.33333 5.91634C1.74744 5.91634 2.08316 6.25228 2.08333 6.66634V9.33333C2.08333 9.74755 1.74755 10.0833 1.33333 10.0833C0.91912 10.0833 0.583334 9.74755 0.583334 9.33333ZM13.9163 9.33333V6.66634C13.9165 6.25239 14.2524 5.91652 14.6663 5.91634C15.0804 5.91634 15.4162 6.25228 15.4163 6.66634V9.33333C15.4163 9.74755 15.0806 10.0833 14.6663 10.0833C14.2523 10.0832 13.9163 9.74744 13.9163 9.33333ZM0.583334 4.00033C0.583334 3.42863 0.576938 2.99517 0.677084 2.62142C0.931395 1.67255 1.67255 0.931395 2.62142 0.677084C2.99517 0.576938 3.42863 0.583334 4.00033 0.583334C4.41439 0.58351 4.75033 0.919229 4.75033 1.33333C4.75033 1.74744 4.41439 2.08316 4.00033 2.08333C3.33234 2.08333 3.145 2.09019 3.01009 2.1263C2.57873 2.24189 2.24189 2.57873 2.1263 3.01009C2.09019 3.145 2.08333 3.33234 2.08333 4.00033C2.08316 4.41439 1.74744 4.75033 1.33333 4.75033C0.919229 4.75033 0.58351 4.41439 0.583334 4.00033ZM13.9163 4.00033C13.9163 3.33261 13.9104 3.14498 13.8743 3.01009C13.7588 2.57887 13.4217 2.242 12.9906 2.1263C12.8557 2.09016 12.6683 2.08334 12.0003 2.08333C11.5861 2.08333 11.2503 1.74755 11.2503 1.33333C11.2503 0.91912 11.5861 0.583334 12.0003 0.583334C12.5718 0.583332 13.0046 0.576996 13.3783 0.677084C14.3272 0.931347 15.0682 1.67253 15.3226 2.62142C15.4227 2.99517 15.4163 3.42863 15.4163 4.00033C15.4162 4.41439 15.0804 4.75033 14.6663 4.75033C14.2524 4.75015 13.9165 4.41428 13.9163 4.00033ZM9.33333 0.583334C9.74755 0.583334 10.0833 0.91912 10.0833 1.33333C10.0833 1.74755 9.74755 2.08333 9.33333 2.08333H6.66634C6.25228 2.08316 5.91634 1.74744 5.91634 1.33333C5.91634 0.919229 6.25228 0.58351 6.66634 0.583334H9.33333Z"
5
+ />
6
+ <path
7
+ d="M10.25 6.59961C10.25 6.30744 10.2498 6.13298 10.2393 6.00391C10.2294 5.88384 10.2143 5.87034 10.2227 5.88672C10.1987 5.83968 10.1603 5.80131 10.1133 5.77734C10.1297 5.78569 10.1162 5.77058 9.99609 5.76074C9.86702 5.7502 9.69256 5.75 9.40039 5.75H6.59961C6.30744 5.75 6.13298 5.7502 6.00391 5.76074C5.88384 5.77058 5.87034 5.78569 5.88672 5.77734C5.83968 5.80131 5.80131 5.83968 5.77734 5.88672C5.78569 5.87034 5.77058 5.88384 5.76074 6.00391C5.7502 6.13298 5.75 6.30744 5.75 6.59961V9.40039C5.75 9.69256 5.7502 9.86702 5.76074 9.99609C5.77058 10.1162 5.78569 10.1297 5.77734 10.1133C5.80131 10.1603 5.83968 10.1987 5.88672 10.2227C5.87034 10.2143 5.88384 10.2294 6.00391 10.2393C6.13298 10.2498 6.30744 10.25 6.59961 10.25H9.40039C9.69256 10.25 9.86702 10.2498 9.99609 10.2393C10.1162 10.2294 10.1297 10.2143 10.1133 10.2227C10.1603 10.1987 10.1987 10.1603 10.2227 10.1133C10.2143 10.1297 10.2294 10.1162 10.2393 9.99609C10.2498 9.86702 10.25 9.69256 10.25 9.40039V6.59961ZM11.75 9.40039C11.75 9.66789 11.7501 9.91389 11.7334 10.1182C11.716 10.3312 11.6769 10.5647 11.5596 10.7949C11.3918 11.124 11.124 11.3918 10.7949 11.5596C10.5647 11.6769 10.3312 11.716 10.1182 11.7334C9.91389 11.7501 9.66789 11.75 9.40039 11.75H6.59961C6.33211 11.75 6.08611 11.7501 5.88184 11.7334C5.66879 11.716 5.43527 11.6769 5.20508 11.5596C4.87597 11.3918 4.60818 11.124 4.44043 10.7949C4.32314 10.5647 4.28403 10.3312 4.2666 10.1182C4.24991 9.91389 4.25 9.66789 4.25 9.40039V6.59961C4.25 6.33211 4.24991 6.08611 4.2666 5.88184C4.28403 5.66879 4.32314 5.43527 4.44043 5.20508C4.60818 4.87597 4.87597 4.60818 5.20508 4.44043C5.43527 4.32314 5.66879 4.28403 5.88184 4.2666C6.08611 4.24991 6.33211 4.25 6.59961 4.25H9.40039C9.66789 4.25 9.91389 4.24991 10.1182 4.2666C10.3312 4.28403 10.5647 4.32314 10.7949 4.44043C11.124 4.60818 11.3918 4.87597 11.5596 5.20508C11.6769 5.43527 11.716 5.66879 11.7334 5.88184C11.7501 6.08611 11.75 6.33211 11.75 6.59961V9.40039Z"
8
+ />
6
9
  </g>
10
+ <defs>
11
+ <clipPath id="clip0_3437_2353">
12
+ <rect width="16" height="16" fill="white" />
13
+ </clipPath>
14
+ </defs>
7
15
  </template>
@@ -79,7 +79,7 @@ export function useVoiceToText(options: UseVoiceToTextOptions = {}): UseVoiceToT
79
79
  let interimTranscript = '';
80
80
  let finalTranscript = '';
81
81
 
82
- for (let i = event.resultIndex; i < event.results.length; i += 1) {
82
+ for (let i = 0; i < event.results.length; i += 1) {
83
83
  const result = event.results[i];
84
84
  if (result.isFinal) {
85
85
  finalTranscript += result[0].transcript;
@@ -88,13 +88,8 @@ export function useVoiceToText(options: UseVoiceToTextOptions = {}): UseVoiceToT
88
88
  }
89
89
  }
90
90
 
91
- if (finalTranscript) {
92
- transcript.value = finalTranscript;
93
- isFinal.value = true;
94
- } else {
95
- transcript.value = interimTranscript;
96
- isFinal.value = false;
97
- }
91
+ transcript.value = finalTranscript + interimTranscript;
92
+ isFinal.value = interimTranscript === '';
98
93
  };
99
94
 
100
95
  recognition.onerror = (event: SpeechRecognitionErrorEvent) => {
@@ -1,68 +0,0 @@
1
- - generic [ref=e3]:
2
- - navigation "Global" [ref=e6]:
3
- - generic [ref=e10]:
4
- - generic [ref=e11]:
5
- - link "Skip to canvas" [ref=e12] [cursor=pointer]:
6
- - /url: "#storybook-preview-wrapper"
7
- - link "Storybook" [ref=e14] [cursor=pointer]:
8
- - /url: ./
9
- - img "Storybook" [ref=e15]
10
- - button "Shortcuts" [ref=e21] [cursor=pointer]:
11
- - img [ref=e22]
12
- - generic [ref=e25]: Search for components
13
- - combobox "Search for components" [ref=e27]:
14
- - generic:
15
- - img
16
- - searchbox "Search for components" [ref=e28]
17
- - code: ⌃ K
18
- - main [ref=e52]:
19
- - generic [ref=e54]:
20
- - generic [ref=e55]:
21
- - button "Remount component" [ref=e56] [cursor=pointer]:
22
- - img [ref=e57]
23
- - button "Zoom in" [ref=e59] [cursor=pointer]:
24
- - img [ref=e60]
25
- - button "Zoom out" [ref=e63] [cursor=pointer]:
26
- - img [ref=e64]
27
- - button "Reset zoom" [ref=e67] [cursor=pointer]:
28
- - img [ref=e68]
29
- - button "Enable measure" [ref=e71] [cursor=pointer]:
30
- - img [ref=e72]
31
- - button "Apply outlines to the preview" [ref=e75] [cursor=pointer]:
32
- - img [ref=e76]
33
- - button "Change the size of the preview" [ref=e79] [cursor=pointer]:
34
- - img [ref=e80]
35
- - button "Vision simulator" [ref=e85] [cursor=pointer]:
36
- - img [ref=e86]
37
- - generic:
38
- - img
39
- - generic [ref=e90]:
40
- - button "Go full screen" [ref=e91] [cursor=pointer]:
41
- - img [ref=e92]
42
- - link "Open canvas in new tab" [ref=e94] [cursor=pointer]:
43
- - /url: iframe.html?id=components-voicetotextbutton--side-by-side
44
- - img [ref=e95]
45
- - button "Copy canvas link" [ref=e98] [cursor=pointer]:
46
- - img [ref=e99]
47
- - generic [ref=e103]:
48
- - progressbar "Content is loading..." [ref=e105]
49
- - generic [ref=e106]:
50
- - link "Skip to sidebar" [ref=e107] [cursor=pointer]:
51
- - /url: "#components-voicetotextbutton--side-by-side"
52
- - iframe [ref=e108]:
53
-
54
- - generic [ref=e113]:
55
- - tablist [ref=e115]:
56
- - tab "Controls" [ref=e116] [cursor=pointer]:
57
- - generic [ref=e118]: Controls
58
- - tab "Actions" [ref=e119] [cursor=pointer]:
59
- - generic [ref=e121]: Actions
60
- - tab "Interactions" [ref=e122] [cursor=pointer]:
61
- - generic [ref=e124]: Interactions
62
- - tab "Accessibility" [ref=e125] [cursor=pointer]:
63
- - generic [ref=e127]: Accessibility
64
- - generic [ref=e130]:
65
- - button "Change addon orientation [alt D]" [ref=e131] [cursor=pointer]:
66
- - img [ref=e132]
67
- - button "Hide addons [alt A]" [ref=e135] [cursor=pointer]:
68
- - img [ref=e136]
File without changes
File without changes
File without changes
File without changes
@@ -1,26 +0,0 @@
1
- - generic [active] [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e10] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [ref=e17] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e24] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e31] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
@@ -1,26 +0,0 @@
1
- - generic [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e10] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [active] [ref=e17] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e24] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e31] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
@@ -1,26 +0,0 @@
1
- - generic [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e10] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [active] [ref=e17] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e24] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e31] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
File without changes
@@ -1,26 +0,0 @@
1
- - generic [active] [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e10] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [ref=e17] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e24] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e31] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
@@ -1,26 +0,0 @@
1
- - generic [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e10] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [active] [ref=e17] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e24] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e31] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
File without changes
@@ -1,26 +0,0 @@
1
- - generic [active] [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e10] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [ref=e17] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e24] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e31] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
@@ -1,26 +0,0 @@
1
- - generic [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e10] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [active] [ref=e17] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e24] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e31] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
@@ -1,2 +0,0 @@
1
- - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]:
2
- - img [ref=e3]
@@ -1,26 +0,0 @@
1
- - generic [active] [ref=e7]:
2
- - generic [ref=e9]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e10]
4
- - generic [ref=e11]:
5
- - generic [ref=e12]:
6
- - button "Start voice input" [ref=e14] [cursor=pointer]:
7
- - img [ref=e16]
8
- - paragraph [ref=e18]: Small
9
- - generic [ref=e19]:
10
- - button "Start voice input" [ref=e21] [cursor=pointer]:
11
- - img [ref=e23]
12
- - paragraph [ref=e25]: Medium (default)
13
- - generic [ref=e26]:
14
- - button "Start voice input" [ref=e28] [cursor=pointer]:
15
- - img [ref=e30]
16
- - paragraph [ref=e32]: Large
17
- - generic [ref=e33]:
18
- - button "Start voice input" [disabled] [ref=e35] [cursor=pointer]:
19
- - img [ref=e37]
20
- - paragraph [ref=e39]: Disabled
21
- - paragraph [ref=e40]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e1]:
23
- - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]:
24
- - img [ref=e3]
25
- - generic "Toggle Component Inspector" [ref=e42] [cursor=pointer]:
26
- - img [ref=e43]
@@ -1,26 +0,0 @@
1
- - generic [ref=e7]:
2
- - generic [ref=e9]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e10]
4
- - generic [ref=e11]:
5
- - generic [ref=e12]:
6
- - button "Stop voice input" [active] [ref=e47] [cursor=pointer]:
7
- - img [ref=e16]
8
- - paragraph [ref=e18]: Small
9
- - generic [ref=e19]:
10
- - button "Stop voice input" [ref=e48] [cursor=pointer]:
11
- - img [ref=e23]
12
- - paragraph [ref=e25]: Medium (default)
13
- - generic [ref=e26]:
14
- - button "Stop voice input" [ref=e49] [cursor=pointer]:
15
- - img [ref=e30]
16
- - paragraph [ref=e32]: Large
17
- - generic [ref=e33]:
18
- - button "Stop voice input" [disabled] [ref=e50] [cursor=pointer]:
19
- - img [ref=e37]
20
- - paragraph [ref=e39]: Disabled
21
- - paragraph [ref=e40]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e1]:
23
- - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]:
24
- - img [ref=e3]
25
- - generic "Toggle Component Inspector" [ref=e42] [cursor=pointer]:
26
- - img [ref=e43]
@@ -1,26 +0,0 @@
1
- - generic [ref=e7]:
2
- - generic [ref=e9]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e10]
4
- - generic [ref=e11]:
5
- - generic [ref=e12]:
6
- - button "Stop voice input" [active] [ref=e47] [cursor=pointer]:
7
- - img [ref=e16]
8
- - paragraph [ref=e18]: Small
9
- - generic [ref=e19]:
10
- - button "Stop voice input" [ref=e48] [cursor=pointer]:
11
- - img [ref=e23]
12
- - paragraph [ref=e25]: Medium (default)
13
- - generic [ref=e26]:
14
- - button "Stop voice input" [ref=e49] [cursor=pointer]:
15
- - img [ref=e30]
16
- - paragraph [ref=e32]: Large
17
- - generic [ref=e33]:
18
- - button "Stop voice input" [disabled] [ref=e50] [cursor=pointer]:
19
- - img [ref=e37]
20
- - paragraph [ref=e39]: Disabled
21
- - paragraph [ref=e40]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e1]:
23
- - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]:
24
- - img [ref=e3]
25
- - generic "Toggle Component Inspector" [ref=e42] [cursor=pointer]:
26
- - img [ref=e43]
@@ -1,26 +0,0 @@
1
- - generic [active] [ref=e7]:
2
- - generic [ref=e9]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e10]
4
- - generic [ref=e11]:
5
- - generic [ref=e12]:
6
- - button "Stop voice input" [ref=e47] [cursor=pointer]:
7
- - img [ref=e16]
8
- - paragraph [ref=e18]: Small
9
- - generic [ref=e19]:
10
- - button "Stop voice input" [ref=e48] [cursor=pointer]:
11
- - img [ref=e23]
12
- - paragraph [ref=e25]: Medium (default)
13
- - generic [ref=e26]:
14
- - button "Stop voice input" [ref=e49] [cursor=pointer]:
15
- - img [ref=e30]
16
- - paragraph [ref=e32]: Large
17
- - generic [ref=e33]:
18
- - button "Stop voice input" [disabled] [ref=e50] [cursor=pointer]:
19
- - img [ref=e37]
20
- - paragraph [ref=e39]: Disabled
21
- - paragraph [ref=e40]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e1]:
23
- - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]:
24
- - img [ref=e3]
25
- - generic "Toggle Component Inspector" [ref=e42] [cursor=pointer]:
26
- - img [ref=e43]
@@ -1,26 +0,0 @@
1
- - generic [active] [ref=e7]:
2
- - generic [ref=e9]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e10]
4
- - generic [ref=e11]:
5
- - generic [ref=e12]:
6
- - button "Stop voice input" [ref=e47] [cursor=pointer]:
7
- - img [ref=e16]
8
- - paragraph [ref=e18]: Small
9
- - generic [ref=e19]:
10
- - button "Stop voice input" [ref=e48] [cursor=pointer]:
11
- - img [ref=e23]
12
- - paragraph [ref=e25]: Medium (default)
13
- - generic [ref=e26]:
14
- - button "Stop voice input" [ref=e49] [cursor=pointer]:
15
- - img [ref=e30]
16
- - paragraph [ref=e32]: Large
17
- - generic [ref=e33]:
18
- - button "Stop voice input" [disabled] [ref=e50] [cursor=pointer]:
19
- - img [ref=e37]
20
- - paragraph [ref=e39]: Disabled
21
- - paragraph [ref=e40]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e1]:
23
- - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]:
24
- - img [ref=e3]
25
- - generic "Toggle Component Inspector" [ref=e42] [cursor=pointer]:
26
- - img [ref=e43]
File without changes
@@ -1,26 +0,0 @@
1
- - generic [active] [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e10] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [ref=e17] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e24] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e31] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
@@ -1,26 +0,0 @@
1
- - generic [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Stop voice input" [ref=e49] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Stop voice input" [active] [ref=e50] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Stop voice input" [ref=e51] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Stop voice input" [disabled] [ref=e52] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
@@ -1,26 +0,0 @@
1
- - generic [ref=e3]:
2
- - generic [ref=e5]:
3
- - heading "Dark Variant - All States" [level=3] [ref=e6]
4
- - generic [ref=e7]:
5
- - generic [ref=e8]:
6
- - button "Start voice input" [ref=e53] [cursor=pointer]:
7
- - img [ref=e12]
8
- - paragraph [ref=e14]: Small
9
- - generic [ref=e15]:
10
- - button "Start voice input" [active] [ref=e54] [cursor=pointer]:
11
- - img [ref=e19]
12
- - paragraph [ref=e21]: Medium (default)
13
- - generic [ref=e22]:
14
- - button "Start voice input" [ref=e55] [cursor=pointer]:
15
- - img [ref=e26]
16
- - paragraph [ref=e28]: Large
17
- - generic [ref=e29]:
18
- - button "Start voice input" [disabled] [ref=e56] [cursor=pointer]:
19
- - img [ref=e33]
20
- - paragraph [ref=e35]: Disabled
21
- - paragraph [ref=e36]: Click any button to see the recording state with grey circle indicator
22
- - generic [ref=e37]:
23
- - generic "Toggle devtools panel" [ref=e38] [cursor=pointer]:
24
- - img [ref=e39]
25
- - generic "Toggle Component Inspector" [ref=e44] [cursor=pointer]:
26
- - img [ref=e45]
@@ -1,68 +0,0 @@
1
- - generic [ref=e3]:
2
- - navigation "Global" [ref=e6]:
3
- - generic [ref=e10]:
4
- - generic [ref=e11]:
5
- - link "Skip to canvas" [ref=e12] [cursor=pointer]:
6
- - /url: "#storybook-preview-wrapper"
7
- - link "Storybook" [ref=e14] [cursor=pointer]:
8
- - /url: ./
9
- - img "Storybook" [ref=e15]
10
- - button "Shortcuts" [ref=e21] [cursor=pointer]:
11
- - img [ref=e22]
12
- - generic [ref=e25]: Search for components
13
- - combobox "Search for components" [ref=e27]:
14
- - generic:
15
- - img
16
- - searchbox "Search for components" [ref=e28]
17
- - code: ⌃ K
18
- - main [ref=e52]:
19
- - generic [ref=e54]:
20
- - generic [ref=e55]:
21
- - button "Remount component" [ref=e56] [cursor=pointer]:
22
- - img [ref=e57]
23
- - button "Zoom in" [ref=e59] [cursor=pointer]:
24
- - img [ref=e60]
25
- - button "Zoom out" [ref=e63] [cursor=pointer]:
26
- - img [ref=e64]
27
- - button "Reset zoom" [ref=e67] [cursor=pointer]:
28
- - img [ref=e68]
29
- - button "Enable measure" [ref=e71] [cursor=pointer]:
30
- - img [ref=e72]
31
- - button "Apply outlines to the preview" [ref=e75] [cursor=pointer]:
32
- - img [ref=e76]
33
- - button "Change the size of the preview" [ref=e79] [cursor=pointer]:
34
- - img [ref=e80]
35
- - button "Vision simulator" [ref=e85] [cursor=pointer]:
36
- - img [ref=e86]
37
- - generic:
38
- - img
39
- - generic [ref=e90]:
40
- - button "Go full screen" [ref=e91] [cursor=pointer]:
41
- - img [ref=e92]
42
- - link "Open canvas in new tab" [ref=e94] [cursor=pointer]:
43
- - /url: iframe.html?id=components-voicetotextbutton--side-by-side
44
- - img [ref=e95]
45
- - button "Copy canvas link" [ref=e98] [cursor=pointer]:
46
- - img [ref=e99]
47
- - generic [ref=e103]:
48
- - progressbar "Content is loading..." [ref=e105]
49
- - generic [ref=e106]:
50
- - link "Skip to sidebar" [ref=e107] [cursor=pointer]:
51
- - /url: "#components-voicetotextbutton--side-by-side"
52
- - iframe [ref=e108]:
53
-
54
- - generic [ref=e113]:
55
- - tablist [ref=e115]:
56
- - tab "Controls" [ref=e116] [cursor=pointer]:
57
- - generic [ref=e118]: Controls
58
- - tab "Actions" [ref=e119] [cursor=pointer]:
59
- - generic [ref=e121]: Actions
60
- - tab "Interactions" [ref=e122] [cursor=pointer]:
61
- - generic [ref=e124]: Interactions
62
- - tab "Accessibility" [ref=e125] [cursor=pointer]:
63
- - generic [ref=e127]: Accessibility
64
- - generic [ref=e130]:
65
- - button "Change addon orientation [alt D]" [ref=e131] [cursor=pointer]:
66
- - img [ref=e132]
67
- - button "Hide addons [alt A]" [ref=e135] [cursor=pointer]:
68
- - img [ref=e136]
@@ -1,330 +0,0 @@
1
- # Slack Thread: #growth-it-runs-on-local-team
2
-
3
- **Date:** 2026-04-09
4
- **Thread link:** https://designcrowd.slack.com/archives/C02955Q465R/p1775707213792599
5
- **Participants:** Zach, Loïc, ap, pmac, Mik
6
-
7
- ---
8
-
9
- ## Zach — 4:00 AM
10
-
11
- **@Loïc** for https://designcrowd.atlassian.net/browse/GT-9885 there is a chromium package that handles voice to text really well. Works on Edge, Chrome and Safari but not other browsers. I've slapped together a PoC here https://gt-9885.bc.designcrowd.ninja/ . Nothing I need you to do, just wanted you to be aware so you can coordinate/plan appropriately.
12
-
13
- ![image.png](voice-to-text-discussion-attachments/image.png)
14
-
15
- ---
16
-
17
- ## Loïc — 4:41 AM
18
-
19
- Thanks Zach. Have you got a link to that package?
20
-
21
- Doesn’t seem to work in other languages but maybe relies on the browser set language?
22
-
23
- &gt; Works on Edge, Chrome and Safari but not other browsers
24
- What other browsers would that not work on? Would imagine it would cover most if built on Chromium?
25
-
26
- ---
27
-
28
- ## Loïc — 4:43 AM
29
-
30
- &gt; Doesn’t seem to work in other languages but maybe relies on the browser set language?
31
- GPT voice to text works fine on the same browser for me when I speak in French.
32
-
33
- ---
34
-
35
- ## Zach — 4:46 AM
36
-
37
- https://vueuse.org/core/useSpeechRecognition/ is the package. This is the browser support breakdown https://caniuse.com/mdn-api_speechrecognitionevent. It uses https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API under the hood. Skimming the docs I dont see anything about language support.
38
-
39
- ![image.png](voice-to-text-discussion-attachments/image_1.png)
40
-
41
- ---
42
-
43
- ## Loïc — 4:49 AM
44
-
45
- GPT:
46
- &gt; Short answer: **yes — but not by itself.**
47
- &gt; How `useSpeechRecognition` handles languages
48
- &gt; The VueUse composable is just a thin wrapper around the browser’s **Web Speech API**. It lets you *set* the language via the `lang` option:
49
- &gt; ```useSpeechRecognition({
50
- &gt; lang: 'fr-FR' // or 'es-ES', 'de-DE', etc.
51
- &gt; })```
52
- &gt; So technically:
53
- &gt; :white_check_mark: You **can use other languages** by changing `lang`
54
- &gt; • :exclamation: But support depends entirely on the **browser + underlying speech engine** ([vueuse.org](http://vueuse.org))
55
- &gt;
56
- &gt; What actually determines language support
57
- &gt; The real behavior comes from the browser’s `SpeechRecognition` implementation:
58
- &gt; Chrome (and Chromium browsers) → best support, many languages
59
- &gt; Safari → limited support
60
- &gt; • Firefox → basically **no support** for this API
61
- &gt; VueUse just passes your config through — it doesn’t add language models itself. ([vueuse.org](http://vueuse.org))
62
- &gt;
63
- &gt; Practical implications
64
- &gt; • You can switch languages dynamically:
65
- &gt; ```const lang = ref('en-US')
66
- &gt;
67
- &gt; const speech = useSpeechRecognition({ lang })```
68
- &gt; • But:
69
- &gt; Some languages may be **less accurate**
70
- &gt; Some may **not work at all** depending on browser
71
- &gt; Offline support is usually **not available**
72
- &gt;
73
- &gt; TL;DR
74
- &gt; • :white_check_mark: Works with multiple languages via `lang`
75
- &gt; • :exclamation: Limited by browser + Web Speech API support
76
- &gt; • :x: Not a full multilingual engine on its own
77
- &gt;
78
- &gt; If you tell me what languages you want (e.g. French + English switching), I can suggest the most reliable setup or alternatives (like Whisper, Vosk, etc.).
79
-
80
- ---
81
-
82
- ## Zach — 4:49 AM
83
-
84
- Oh thats super easy.
85
-
86
- ---
87
-
88
- ## Zach — 4:50 AM
89
-
90
- We always have the users language handy
91
-
92
- ---
93
-
94
- ## Loïc — 4:50 AM
95
-
96
- :+1:
97
-
98
- ---
99
-
100
- ## Loïc — 4:50 AM
101
-
102
- No Firefox support is probably the biggest unknown here but if we are able to hide the functionality if the browser is not supported then that should be fine.
103
-
104
- ---
105
-
106
- ## Loïc — 4:51 AM
107
-
108
- FYI **@ap** ^
109
-
110
- ---
111
-
112
- ## Zach — 4:52 AM
113
-
114
- Hiding should also be easy. It's already working in my demo.
115
-
116
- ---
117
-
118
- ## ap — 5:02 AM
119
-
120
- we could extend this to send to a cloud service to do the speech to text for firefox?
121
-
122
- ---
123
-
124
- ## Zach — 5:04 AM
125
-
126
- Thats where it starts to get tricky. We would need to use/build a cloud service if we wanted to support firefox. It's just a lot more effort.
127
-
128
- ---
129
-
130
- ## Zach — 5:04 AM
131
-
132
- Also this is free
133
-
134
- ---
135
-
136
- ## ap — 5:10 AM
137
-
138
- i was thinking as a fallback at a later stage once we understand the take up from customers
139
-
140
- ---
141
-
142
- ## Loïc — 12:13 AM
143
-
144
- **@pmac**
145
-
146
- ---
147
-
148
- ## Zach — 3:28 AM
149
-
150
- https://gt-9885.dcom.designcrowd.ninja/ **@Loïc** **@ap** Check it out.
151
- 1. Use Chrome or Safari
152
- 2. Make sure to set the AB test variations like in the screen shot.
153
- 3. First click should ask for microphone permissions
154
- 4. It will transcribe into the input in real time
155
- 5. Click to stop
156
- 6. ta daaa
157
- **@ap** It is very easy to wire up: https://github.com/designcrowd/BrandCrowd.Net/pull/12884/changes#diff-8cf5baa45c1f1700d712ccef3bc0485214f743b907c9916c9bc6372b9475bbf8
158
-
159
- • It will hide itself if the browser does not support it
160
- • Language support is there but not tested yet
161
- • emits events for interim transcript chunks and the final transcript
162
- • Easy to drop in and wire up to any existing input
163
- • Its only styled for the new ai prompt input at the moment. We will need to add style variations in fe-shared-lib.
164
- Lets me know if there are any questions/changes you want. If not, I will wrap it up and get it to QA.
165
-
166
- ![image.png](voice-to-text-discussion-attachments/image_2.png)
167
-
168
- ---
169
-
170
- ## pmac — 3:32 AM
171
-
172
- just catching up .. this is client side and only works in some browsers?
173
-
174
- ---
175
-
176
- ## Zach — 3:32 AM
177
-
178
- correct
179
-
180
- ---
181
-
182
- ## pmac — 3:39 AM
183
-
184
- .. and I assume you chose this path as it was quick to implement
185
-
186
- ---
187
-
188
- ## pmac — 3:39 AM
189
-
190
- I have a feeling that we're going to see much better transcription using the newer speech to text models
191
-
192
- ---
193
-
194
- ## pmac — 3:47 AM
195
-
196
- what does the server side solution look like, that would work for all browsers? I suppose we'd be sending wav/mp3 to a backend transcription.
197
-
198
- ---
199
-
200
- ## Zach — 1:10 AM
201
-
202
- If we wanted to do server side we have a few options. Best choice is to buy something off the shelf. Having made my own local tool for voice to text using whisper, there are a bunch of issues we just dont want to handle. Whisper starts to hallucinate pretty badly after about 90 seconds, so we would have to handle streaming, chunking and a bunch of other stuff.
203
-
204
- I would want to find something that we just import a package and set an API key somewhere and then its done.
205
-
206
- The approach using the built in browser tools was so easy and fast I think it makes sense to try it out first and see what kind of returns we get. Also, all phone keyboards have voice to text built in that I think most people prefer to use.
207
-
208
- Where we are at now with the browser solution is to just do a once over on styling and nail down the AB test variation details and timing. It's code complete.
209
-
210
- ---
211
-
212
- ## pmac — 1:13 AM
213
-
214
- for server side, I would be expecting us to use something like the AWS Transcribe product
215
-
216
- ---
217
-
218
- ## Zach — 1:15 AM
219
-
220
- Thats the one I was looking at before I stumbled onto the browser native option.
221
-
222
- ---
223
-
224
- ## Zach — 1:17 AM
225
-
226
- Looks like the price is $1.44/hr for streaming transcription.
227
-
228
- ---
229
-
230
- ## pmac — 1:18 AM
231
-
232
- lets leave it in the back pocket
233
-
234
- ---
235
-
236
- ## Loïc — 1:41 AM
237
-
238
- works well in French
239
-
240
- ---
241
-
242
- ## Loïc — 1:42 AM
243
-
244
- the UI doesn’t look like what we had in designs?
245
-
246
- ---
247
-
248
- ## Zach — 1:43 AM
249
-
250
- Yea, I can't find designs for the new AI long prompt input we've got.
251
-
252
- ---
253
-
254
- ## Zach — 1:44 AM
255
-
256
- If you are happy with the design we've got in the figma for the other style I can apply to both.
257
-
258
- ---
259
-
260
- ## Loïc — 1:44 AM
261
-
262
- these ones in the ticket https://www.figma.com/design/gz0bEUjboSGaAMMtalOqVS/Maker---Speech-to-Text-in-AI?node-id=7-636&amp;t=cIYxelUljv4Qp17M-1 ?
263
-
264
- ![Screenshot 2026-04-15 at 11.44.18 am.png](voice-to-text-discussion-attachments/Screenshot 2026-04-15 at 11.44.18 am.png)
265
-
266
- ---
267
-
268
- ## Zach — 1:45 AM
269
-
270
- You sure you want that same design for the dark theme AI prompt as well?
271
-
272
- ---
273
-
274
- ## Zach — 1:45 AM
275
-
276
- Happy to do it, I can just implement both dark and light so it looks like the figma designs just with reversed colors on the AI prompt.
277
-
278
- ---
279
-
280
- ## pmac — 1:48 AM
281
-
282
- **@Zach** how do I get it to show for me?
283
-
284
- ---
285
-
286
- ## Zach — 1:49 AM
287
-
288
- In the bottom right there is an "AB" button. Click it and set these two campaigns to variation 1.
289
-
290
- ![image.png](voice-to-text-discussion-attachments/image_3.png)
291
-
292
- ---
293
-
294
- ## Loïc — 1:49 AM
295
-
296
- **@Mik** see Zach’s comment about dark theme AI prompt
297
-
298
- ---
299
-
300
- ## Mik — 2:00 AM
301
-
302
- hey **@Zach**, ideally it should look like this in dark mode - is this also what you envision?
303
-
304
- ![image.png](voice-to-text-discussion-attachments/image_4.png)
305
-
306
- ---
307
-
308
- ## Loïc — 2:01 AM
309
-
310
- have you got a screen for when it’s recording?
311
-
312
- ---
313
-
314
- ## Zach — 2:06 AM
315
-
316
- **@Mik** that was what I was thinking. We've already got the microphone icon so all good there. Is the light grey circle around the microphone icon indicating when its recording?
317
-
318
- ---
319
-
320
- ## Mik — 2:08 AM
321
-
322
- yes, it's recording
323
-
324
- ---
325
-
326
- ## Zach — 2:09 AM
327
-
328
- I will get the UI tightened up then lets everyone know when its ready for another review.
329
-
330
- ---