@corti/dictation-web 0.4.0 → 0.5.0-rc

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 (189) hide show
  1. package/README.md +53 -3
  2. package/dist/bundle.js +789 -146
  3. package/dist/components/corti-dictation.d.ts +15 -1
  4. package/dist/components/corti-dictation.js +35 -0
  5. package/dist/components/corti-dictation.js.map +1 -1
  6. package/dist/components/device-selector.d.ts +1 -1
  7. package/dist/components/keybinding-selector.d.ts +14 -0
  8. package/dist/components/keybinding-selector.js +82 -0
  9. package/dist/components/keybinding-selector.js.map +1 -0
  10. package/dist/components/language-selector.d.ts +1 -1
  11. package/dist/components/mode-selector.d.ts +14 -0
  12. package/dist/components/mode-selector.js +73 -0
  13. package/dist/components/mode-selector.js.map +1 -0
  14. package/dist/components/recording-button.d.ts +5 -2
  15. package/dist/components/recording-button.js +83 -17
  16. package/dist/components/recording-button.js.map +1 -1
  17. package/dist/components/settings-menu.d.ts +2 -0
  18. package/dist/components/settings-menu.js +20 -0
  19. package/dist/components/settings-menu.js.map +1 -1
  20. package/dist/contexts/dictation-context.d.ts +9 -1
  21. package/dist/contexts/dictation-context.js +35 -2
  22. package/dist/contexts/dictation-context.js.map +1 -1
  23. package/dist/controllers/dictation-controller.d.ts +2 -1
  24. package/dist/controllers/dictation-controller.js +53 -19
  25. package/dist/controllers/dictation-controller.js.map +1 -1
  26. package/dist/controllers/keybinding-controller.d.ts +18 -0
  27. package/dist/controllers/keybinding-controller.js +86 -0
  28. package/dist/controllers/keybinding-controller.js.map +1 -0
  29. package/dist/index.d.ts +4 -2
  30. package/dist/index.js +10 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/package.json +87 -7
  33. package/dist/styles/component-styles.d.ts +1 -0
  34. package/dist/styles/component-styles.js +10 -0
  35. package/dist/styles/component-styles.js.map +1 -1
  36. package/dist/styles/keybinding-selector.d.ts +2 -0
  37. package/dist/styles/keybinding-selector.js +72 -0
  38. package/dist/styles/keybinding-selector.js.map +1 -0
  39. package/dist/styles/mode-selector.d.ts +2 -0
  40. package/dist/styles/mode-selector.js +56 -0
  41. package/dist/styles/mode-selector.js.map +1 -0
  42. package/dist/styles/select.d.ts +1 -1
  43. package/dist/styles/select.js +6 -10
  44. package/dist/styles/select.js.map +1 -1
  45. package/dist/styles/settings-menu.js +9 -1
  46. package/dist/styles/settings-menu.js.map +1 -1
  47. package/dist/tsconfig.tsbuildinfo +1 -0
  48. package/dist/types.d.ts +3 -1
  49. package/dist/types.js.map +1 -1
  50. package/dist/utils/events.d.ts +14 -1
  51. package/dist/utils/events.js +22 -0
  52. package/dist/utils/events.js.map +1 -1
  53. package/dist/utils/keybinding.d.ts +36 -0
  54. package/dist/utils/keybinding.js +125 -0
  55. package/dist/utils/keybinding.js.map +1 -0
  56. package/package.json +1 -1
  57. package/dist/CortiDictation.d.ts +0 -55
  58. package/dist/CortiDictation.js +0 -303
  59. package/dist/CortiDictation.js.map +0 -1
  60. package/dist/DictationService.d.ts +0 -16
  61. package/dist/DictationService.js +0 -88
  62. package/dist/DictationService.js.map +0 -1
  63. package/dist/RecorderManager.d.ts +0 -25
  64. package/dist/RecorderManager.js +0 -145
  65. package/dist/RecorderManager.js.map +0 -1
  66. package/dist/audioService.d.ts +0 -6
  67. package/dist/audioService.js +0 -21
  68. package/dist/audioService.js.map +0 -1
  69. package/dist/controllers/DictationController.d.ts +0 -35
  70. package/dist/controllers/DictationController.js +0 -130
  71. package/dist/controllers/DictationController.js.map +0 -1
  72. package/dist/controllers/MediaController.d.ts +0 -31
  73. package/dist/controllers/MediaController.js +0 -99
  74. package/dist/controllers/MediaController.js.map +0 -1
  75. package/dist/src/components/audio-visualiser.d.ts +0 -14
  76. package/dist/src/components/audio-visualiser.js +0 -57
  77. package/dist/src/components/audio-visualiser.js.map +0 -1
  78. package/dist/src/components/corti-dictation.d.ts +0 -123
  79. package/dist/src/components/corti-dictation.js +0 -224
  80. package/dist/src/components/corti-dictation.js.map +0 -1
  81. package/dist/src/components/device-selector.d.ts +0 -24
  82. package/dist/src/components/device-selector.js +0 -106
  83. package/dist/src/components/device-selector.js.map +0 -1
  84. package/dist/src/components/language-selector.d.ts +0 -24
  85. package/dist/src/components/language-selector.js +0 -100
  86. package/dist/src/components/language-selector.js.map +0 -1
  87. package/dist/src/components/recording-button.d.ts +0 -37
  88. package/dist/src/components/recording-button.js +0 -203
  89. package/dist/src/components/recording-button.js.map +0 -1
  90. package/dist/src/components/settings-menu.d.ts +0 -16
  91. package/dist/src/components/settings-menu.js +0 -80
  92. package/dist/src/components/settings-menu.js.map +0 -1
  93. package/dist/src/constants.d.ts +0 -4
  94. package/dist/src/constants.js +0 -37
  95. package/dist/src/constants.js.map +0 -1
  96. package/dist/src/contexts/dictation-context.d.ts +0 -97
  97. package/dist/src/contexts/dictation-context.js +0 -208
  98. package/dist/src/contexts/dictation-context.js.map +0 -1
  99. package/dist/src/controllers/DictationController.d.ts +0 -35
  100. package/dist/src/controllers/DictationController.js +0 -130
  101. package/dist/src/controllers/DictationController.js.map +0 -1
  102. package/dist/src/controllers/MediaController.d.ts +0 -31
  103. package/dist/src/controllers/MediaController.js +0 -99
  104. package/dist/src/controllers/MediaController.js.map +0 -1
  105. package/dist/src/icons/icons.d.ts +0 -17
  106. package/dist/src/icons/icons.js +0 -158
  107. package/dist/src/icons/icons.js.map +0 -1
  108. package/dist/src/styles/ComponentStyles.d.ts +0 -2
  109. package/dist/src/styles/ComponentStyles.js +0 -18
  110. package/dist/src/styles/ComponentStyles.js.map +0 -1
  111. package/dist/src/styles/audio-visualiser.d.ts +0 -2
  112. package/dist/src/styles/audio-visualiser.js +0 -33
  113. package/dist/src/styles/audio-visualiser.js.map +0 -1
  114. package/dist/src/styles/buttons.d.ts +0 -2
  115. package/dist/src/styles/buttons.js +0 -52
  116. package/dist/src/styles/buttons.js.map +0 -1
  117. package/dist/src/styles/callout.d.ts +0 -2
  118. package/dist/src/styles/callout.js +0 -23
  119. package/dist/src/styles/callout.js.map +0 -1
  120. package/dist/src/styles/default-theme.d.ts +0 -2
  121. package/dist/src/styles/default-theme.js +0 -50
  122. package/dist/src/styles/default-theme.js.map +0 -1
  123. package/dist/src/styles/recording-button.d.ts +0 -2
  124. package/dist/src/styles/recording-button.js +0 -8
  125. package/dist/src/styles/recording-button.js.map +0 -1
  126. package/dist/src/styles/select.d.ts +0 -2
  127. package/dist/src/styles/select.js +0 -36
  128. package/dist/src/styles/select.js.map +0 -1
  129. package/dist/src/styles/settings-menu.d.ts +0 -2
  130. package/dist/src/styles/settings-menu.js +0 -34
  131. package/dist/src/styles/settings-menu.js.map +0 -1
  132. package/dist/src/types.d.ts +0 -7
  133. package/dist/src/types.js +0 -2
  134. package/dist/src/types.js.map +0 -1
  135. package/dist/src/utils/auth.d.ts +0 -9
  136. package/dist/src/utils/auth.js +0 -21
  137. package/dist/src/utils/auth.js.map +0 -1
  138. package/dist/src/utils/converters.d.ts +0 -4
  139. package/dist/src/utils/converters.js +0 -8
  140. package/dist/src/utils/converters.js.map +0 -1
  141. package/dist/src/utils/devices.d.ts +0 -26
  142. package/dist/src/utils/devices.js +0 -53
  143. package/dist/src/utils/devices.js.map +0 -1
  144. package/dist/src/utils/events.d.ts +0 -44
  145. package/dist/src/utils/events.js +0 -88
  146. package/dist/src/utils/events.js.map +0 -1
  147. package/dist/src/utils/languages.d.ts +0 -7
  148. package/dist/src/utils/languages.js +0 -29
  149. package/dist/src/utils/languages.js.map +0 -1
  150. package/dist/src/utils/media.d.ts +0 -6
  151. package/dist/src/utils/media.js +0 -39
  152. package/dist/src/utils/media.js.map +0 -1
  153. package/dist/src/utils/token.d.ts +0 -13
  154. package/dist/src/utils/token.js +0 -60
  155. package/dist/src/utils/token.js.map +0 -1
  156. package/dist/src/utils/validation.d.ts +0 -1
  157. package/dist/src/utils/validation.js +0 -7
  158. package/dist/src/utils/validation.js.map +0 -1
  159. package/dist/stories/audio-visualiser.stories.d.ts +0 -39
  160. package/dist/stories/audio-visualiser.stories.js +0 -71
  161. package/dist/stories/audio-visualiser.stories.js.map +0 -1
  162. package/dist/stories/corti-dictation.stories.d.ts +0 -27
  163. package/dist/stories/corti-dictation.stories.js +0 -129
  164. package/dist/stories/corti-dictation.stories.js.map +0 -1
  165. package/dist/stories/device-selector.stories.d.ts +0 -18
  166. package/dist/stories/device-selector.stories.js +0 -84
  167. package/dist/stories/device-selector.stories.js.map +0 -1
  168. package/dist/stories/language-selector.stories.d.ts +0 -18
  169. package/dist/stories/language-selector.stories.js +0 -53
  170. package/dist/stories/language-selector.stories.js.map +0 -1
  171. package/dist/stories/recording-button.stories.d.ts +0 -27
  172. package/dist/stories/recording-button.stories.js +0 -90
  173. package/dist/stories/recording-button.stories.js.map +0 -1
  174. package/dist/stories/settings-menu.stories.d.ts +0 -23
  175. package/dist/stories/settings-menu.stories.js +0 -156
  176. package/dist/stories/settings-menu.stories.js.map +0 -1
  177. package/dist/styles/ComponentStyles.d.ts +0 -2
  178. package/dist/styles/ComponentStyles.js +0 -18
  179. package/dist/styles/ComponentStyles.js.map +0 -1
  180. package/dist/styles/default-theme.d.ts +0 -2
  181. package/dist/styles/default-theme.js +0 -14
  182. package/dist/styles/default-theme.js.map +0 -1
  183. package/dist/styles/theme.d.ts +0 -2
  184. package/dist/styles/theme.js +0 -56
  185. package/dist/styles/theme.js.map +0 -1
  186. package/dist/tsconfig.stories.tsbuildinfo +0 -1
  187. package/dist/utils.d.ts +0 -59
  188. package/dist/utils.js +0 -179
  189. package/dist/utils.js.map +0 -1
package/README.md CHANGED
@@ -21,9 +21,11 @@ This library offers two approaches:
21
21
 
22
22
  **`<corti-dictation>`** - A complete, ready-to-use component that includes:
23
23
  - Recording button with visual feedback
24
- - Settings menu for device and language selection
24
+ - Settings menu for device, language, mode, and keybinding selection
25
25
  - Automatic state management
26
26
  - Built-in styling and theming
27
+ - Support for toggle-to-talk and push-to-talk modes
28
+ - Keyboard shortcut (keybinding) support
27
29
 
28
30
  This is the easiest way to get started and works out of the box.
29
31
 
@@ -33,9 +35,11 @@ For more control and flexibility, you can use individual components:
33
35
 
34
36
  - **`<dictation-root>`** - Context provider that manages authentication, configuration, and shared state
35
37
  - **`<dictation-recording-button>`** - Standalone recording button with audio visualization
36
- - **`<dictation-settings-menu>`** - Settings menu with device and language selectors
38
+ - **`<dictation-settings-menu>`** - Settings menu with device, language, mode, and keybinding selectors
37
39
  - **`<dictation-device-selector>`** - Device selection dropdown
38
40
  - **`<dictation-language-selector>`** - Language selection dropdown
41
+ - **`<dictation-mode-selector>`** - Mode selection component (toggle-to-talk or push-to-talk)
42
+ - **`<dictation-keybinding-selector>`** - Keybinding configuration component for keyboard shortcuts
39
43
 
40
44
  These components share state through a context system, allowing you to build custom UIs while leveraging the same underlying functionality.
41
45
 
@@ -128,7 +132,7 @@ For more control, use individual components to build a custom UI:
128
132
  <body>
129
133
  <dictation-root id="dictationRoot">
130
134
  <dictation-recording-button></dictation-recording-button>
131
- <dictation-settings-menu settingsEnabled="device,language"></dictation-settings-menu>
135
+ <dictation-settings-menu settingsEnabled="device,language,mode,keybinding"></dictation-settings-menu>
132
136
  </dictation-root>
133
137
 
134
138
  <textarea
@@ -156,6 +160,52 @@ For more control, use individual components to build a custom UI:
156
160
  </html>
157
161
  ```
158
162
 
163
+ ### Dictation Modes
164
+
165
+ The component supports two dictation modes:
166
+
167
+ **Toggle-to-Talk (default):**
168
+ - Click or tap the recording button to start recording
169
+ - Click or tap again to stop recording
170
+ - Press the keybinding to toggle recording state
171
+
172
+ ```html
173
+ <corti-dictation mode="toggle-to-talk"></corti-dictation>
174
+ ```
175
+
176
+ **Push-to-Talk:**
177
+ - Press and hold the recording button to record
178
+ - Release to stop recording
179
+ - Press and hold the keybinding to record (keydown starts, keyup stops)
180
+
181
+ ```html
182
+ <corti-dictation mode="push-to-talk"></corti-dictation>
183
+ ```
184
+
185
+ ### Keyboard Shortcuts (Keybindings)
186
+
187
+ Configure keyboard shortcuts to start/stop recording. You can use either key names (from `event.key`) or key codes (from `event.code`):
188
+
189
+ ```html
190
+ <!-- Use backtick key (default) - key name -->
191
+ <corti-dictation keybinding="`"></corti-dictation>
192
+
193
+ <!-- Use 'k' key - key name -->
194
+ <corti-dictation keybinding="k"></corti-dictation>
195
+
196
+ <!-- Use Meta key (Cmd on Mac, Meta elsewhere) - key name -->
197
+ <corti-dictation keybinding="meta"></corti-dictation>
198
+
199
+ <!-- Use key codes instead of key names -->
200
+ <corti-dictation keybinding="Backquote"></corti-dictation> <!-- backtick -->
201
+ <corti-dictation keybinding="KeyK"></corti-dictation> <!-- 'k' key -->
202
+ <corti-dictation keybinding="MetaLeft"></corti-dictation> <!-- Meta key -->
203
+ ```
204
+
205
+ Keybindings are platform-aware:
206
+ - Keybindings are automatically ignored when typing in input fields, textareas, or contenteditable elements
207
+ - Both key names (e.g., `"k"`, `"Meta"`) and key codes (e.g., `"KeyK"`, `"MetaLeft"`) are supported
208
+
159
209
  ## Documentation
160
210
 
161
211
  For more detailed information, see: