kempo-ui 0.4.3 → 0.4.4

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 (96) hide show
  1. package/.claude/skills/get-icon/SKILL.md +144 -0
  2. package/.claude/skills/highlight-code/SKILL.md +62 -0
  3. package/.claude/skills/new-component/SKILL.md +362 -0
  4. package/.github/skills/get-icon/SKILL.md +4 -4
  5. package/.github/skills/highlight-code/SKILL.md +51 -20
  6. package/.github/skills/new-component/SKILL.md +183 -152
  7. package/AGENTS.md +2 -2
  8. package/dist/components/SpeechToText.js +60 -0
  9. package/dist/components/TextToSpeech.js +56 -0
  10. package/docs/components/accordion.html +8 -0
  11. package/docs/components/aside.html +8 -0
  12. package/docs/components/calendar.html +8 -0
  13. package/docs/components/card.html +8 -0
  14. package/docs/components/code-editor.html +8 -0
  15. package/docs/components/color-picker.html +8 -0
  16. package/docs/components/combobox.html +8 -0
  17. package/docs/components/content-slider.html +8 -0
  18. package/docs/components/context.html +8 -0
  19. package/docs/components/dialog.html +8 -0
  20. package/docs/components/dropdown.html +8 -0
  21. package/docs/components/filter-list.html +8 -0
  22. package/docs/components/focus-capture.html +8 -0
  23. package/docs/components/html-editor.html +8 -0
  24. package/docs/components/hybrid-component.html +8 -0
  25. package/docs/components/icon.html +8 -0
  26. package/docs/components/import.html +8 -0
  27. package/docs/components/light-component.html +8 -0
  28. package/docs/components/nav-spacer.html +8 -0
  29. package/docs/components/nav.html +8 -0
  30. package/docs/components/photo-viewer.html +8 -0
  31. package/docs/components/progress.html +8 -0
  32. package/docs/components/resize.html +8 -0
  33. package/docs/components/shadow-component.html +8 -0
  34. package/docs/components/show-more.html +8 -0
  35. package/docs/components/slider.html +8 -0
  36. package/docs/components/sortable.html +8 -0
  37. package/docs/components/speech-to-text.html +717 -0
  38. package/docs/components/spinner.html +8 -0
  39. package/docs/components/split.html +8 -0
  40. package/docs/components/table.html +8 -0
  41. package/docs/components/tableControls.html +8 -0
  42. package/docs/components/tableCustomFields.html +8 -0
  43. package/docs/components/tableFetchRecords.html +8 -0
  44. package/docs/components/tableFieldSortHide.html +8 -0
  45. package/docs/components/tablePagination.html +8 -0
  46. package/docs/components/tablePlaceholder.html +8 -0
  47. package/docs/components/tableRecordEditing.html +8 -0
  48. package/docs/components/tableRecordFiltering.html +8 -0
  49. package/docs/components/tableRecordHiding.html +8 -0
  50. package/docs/components/tableRecordSearching.html +8 -0
  51. package/docs/components/tableRecordSelection.html +8 -0
  52. package/docs/components/tableRowControls.html +8 -0
  53. package/docs/components/tableServerSync.html +8 -0
  54. package/docs/components/tableSorting.html +8 -0
  55. package/docs/components/tabs.html +8 -0
  56. package/docs/components/tags.html +8 -0
  57. package/docs/components/text-to-speech.html +668 -0
  58. package/docs/components/theme-select.html +8 -0
  59. package/docs/components/theme-switcher.html +8 -0
  60. package/docs/components/time.html +8 -0
  61. package/docs/components/timestamp.html +8 -0
  62. package/docs/components/toast.html +8 -0
  63. package/docs/components/toggle.html +8 -0
  64. package/docs/components/tree.html +8 -0
  65. package/docs/icons/mic.svg +1 -0
  66. package/docs/icons/record_voice_over.svg +1 -0
  67. package/docs/icons/stop.svg +1 -0
  68. package/docs/index.html +20 -0
  69. package/docs/src/components/SpeechToText.js +60 -0
  70. package/docs/src/components/TextToSpeech.js +56 -0
  71. package/docs/utils/context.html +8 -0
  72. package/docs/utils/cookie.html +8 -0
  73. package/docs/utils/debounce.html +8 -0
  74. package/docs/utils/drag.html +8 -0
  75. package/docs/utils/elevation.html +8 -0
  76. package/docs/utils/formatTimestamp.html +8 -0
  77. package/docs/utils/object.html +8 -0
  78. package/docs/utils/propConverters.html +8 -0
  79. package/docs/utils/string.html +8 -0
  80. package/docs/utils/theme.html +8 -0
  81. package/docs/utils/toTitleCase.html +8 -0
  82. package/docs/utils/type.html +8 -0
  83. package/docs/utils/wait.html +8 -0
  84. package/docs-src/components/speech-to-text.page.html +251 -0
  85. package/docs-src/components/text-to-speech.page.html +202 -0
  86. package/docs-src/index.page.html +12 -0
  87. package/docs-src/nav.fragment.html +8 -0
  88. package/icons/mic.svg +1 -0
  89. package/icons/record_voice_over.svg +1 -0
  90. package/icons/stop.svg +1 -0
  91. package/llms.txt +2 -0
  92. package/package.json +1 -1
  93. package/src/components/SpeechToText.js +252 -0
  94. package/src/components/TextToSpeech.js +194 -0
  95. package/tests/components/SpeechToText.browser-test.js +530 -0
  96. package/tests/components/TextToSpeech.browser-test.js +432 -0
@@ -0,0 +1,60 @@
1
+ import{html as t,css as i}from"../lit-all.min.js";import n from"./ShadowComponent.js";import"./Icon.js";export default class e extends n{static properties={language:{type:String,reflect:!0},continuous:{type:Boolean,reflect:!0},interim:{type:Boolean,reflect:!0},minConfidence:{type:Number,reflect:!0,attribute:"min-confidence"},timeout:{type:Number,reflect:!0},disabled:{type:Boolean,reflect:!0},listening:{type:Boolean,reflect:!0}};#t=null;#i="";#n="";#e=!1;#s=null;constructor(){super(),this.language="en-US",this.continuous=!1,this.interim=!1,this.minConfidence=0,this.timeout=0,this.disabled=!1,this.listening=!1}connectedCallback(){super.connectedCallback();const t=window.SpeechRecognition||window.webkitSpeechRecognition;t?(this.#t=new t,this.#t.lang=this.language,this.#t.continuous=this.continuous,this.#t.interimResults=!0,this.#t.onstart=this.handleStart,this.#t.onend=this.handleEnd,this.#t.onresult=this.handleResult,this.#t.onerror=this.handleError):this.#e=!0}disconnectedCallback(){if(super.disconnectedCallback(),this.#o(),this.#t){try{this.#t.stop()}catch(t){}this.#t.onstart=null,this.#t.onend=null,this.#t.onresult=null,this.#t.onerror=null,this.#t=null}}updated(t){super.updated(t),this.#t&&(t.has("language")&&(this.#t.lang=this.language),t.has("continuous")&&(this.#t.continuous=this.continuous))}handleStart=()=>{this.#i="",this.#n="",this.listening=!0,this.#r(),this.dispatchEvent(new CustomEvent("start",{bubbles:!0}))};handleResult=t=>{let i="",n="";for(let e=t.resultIndex;e<t.results.length;e++){const s=t.results[e],o=s[0];("number"==typeof o.confidence?o.confidence:0)<this.minConfidence||(s.isFinal?i+=o.transcript:n+=o.transcript)}i&&(this.#i+=i),(i||n)&&(this.#n=n),(i||this.interim)&&this.dispatchEvent(new CustomEvent("result",{detail:{text:(this.#i+(n||this.#n)).trim(),isFinal:!!i&&!n},bubbles:!0}))};handleEnd=()=>{this.listening=!1,this.#o();const t=(this.#i+this.#n).trim();this.dispatchEvent(new CustomEvent("end",{detail:{text:t},bubbles:!0}))};handleError=t=>{this.listening=!1,this.#o(),this.dispatchEvent(new CustomEvent("error",{detail:{error:t.error,message:t.message},bubbles:!0}))};#r=()=>{this.#o(),this.timeout>0&&(this.#s=setTimeout(()=>this.stop(),1e3*this.timeout))};#o=()=>{this.#s&&(clearTimeout(this.#s),this.#s=null)};handleClick=()=>{this.disabled||(this.listening?this.stop():this.start())};start=()=>{if(!this.disabled&&this.#t&&!this.listening)try{this.#t.start()}catch(t){}};stop=()=>{if(this.#t&&this.listening)try{this.#t.stop()}catch(t){}};toggle=()=>{this.handleClick()};render(){const i=!this.#e,n=i?this.listening?"Stop listening":"Start listening":"Speech recognition not supported in this browser";return t`
2
+ <button
3
+ type="button"
4
+ class="no-btn btn ${this.listening?"listening":""}"
5
+ ?disabled=${this.disabled||!i}
6
+ @click=${this.handleClick}
7
+ aria-label=${n}
8
+ title=${n}
9
+ >
10
+ <k-icon name=${this.listening?"stop":"mic"}></k-icon>
11
+ </button>
12
+ `}static styles=i`
13
+ :host {
14
+ --btn_size: 2.5rem;
15
+ --btn_bg: var(--c_bg);
16
+ --btn_bg__listening: var(--c_danger, #d32f2f);
17
+ --btn_tc__listening: white;
18
+ display: inline-block;
19
+ }
20
+ :host([disabled]) {
21
+ opacity: 0.5;
22
+ pointer-events: none;
23
+ }
24
+ .btn {
25
+ display: inline-flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ width: var(--btn_size);
29
+ height: var(--btn_size);
30
+ padding: 0;
31
+ border: 1px solid var(--c_border);
32
+ border-radius: 50%;
33
+ background: var(--btn_bg);
34
+ color: var(--tc);
35
+ cursor: pointer;
36
+ transition: background var(--animation_ms), color var(--animation_ms), border-color var(--animation_ms);
37
+ }
38
+ .btn:hover:not(:disabled) {
39
+ background: var(--c_bg__alt);
40
+ }
41
+ .btn:focus-visible {
42
+ outline: none;
43
+ box-shadow: var(--focus_shadow);
44
+ }
45
+ :host([listening]) .btn,
46
+ :host([listening]) .btn:hover,
47
+ :host([listening]) .btn:focus-visible {
48
+ background: var(--btn_bg__listening);
49
+ color: var(--btn_tc__listening);
50
+ border-color: transparent;
51
+ animation: pulse 1.4s infinite;
52
+ }
53
+ .btn:disabled {
54
+ cursor: not-allowed;
55
+ }
56
+ @keyframes pulse {
57
+ 0%, 100% { box-shadow: 0 0 0 0 rgba(211, 47, 47, 0.5); }
58
+ 50% { box-shadow: 0 0 0 10px rgba(211, 47, 47, 0); }
59
+ }
60
+ `}customElements.define("k-speech-to-text",e);
@@ -0,0 +1,56 @@
1
+ import{html as e,css as t}from"../lit-all.min.js";import n from"./ShadowComponent.js";import"./Icon.js";export default class s extends n{static properties={text:{type:String,reflect:!0},voice:{type:String,reflect:!0},language:{type:String,reflect:!0},rate:{type:Number,reflect:!0},pitch:{type:Number,reflect:!0},volume:{type:Number,reflect:!0},disabled:{type:Boolean,reflect:!0},speaking:{type:Boolean,reflect:!0}};#e=!1;#t=null;constructor(){super(),this.text="",this.voice="",this.language="",this.rate=1,this.pitch=1,this.volume=1,this.disabled=!1,this.speaking=!1}connectedCallback(){super.connectedCallback(),"undefined"!=typeof window&&window.speechSynthesis&&"function"==typeof window.SpeechSynthesisUtterance||(this.#e=!0)}disconnectedCallback(){super.disconnectedCallback(),this.stop()}get effectiveText(){return this.text?this.text:this.textContent.trim()}resolveVoice=()=>{if(!this.voice||this.#e)return null;return window.speechSynthesis.getVoices().find(e=>e.name===this.voice)||null};speak=e=>{if(this.disabled||this.#e)return;const t=(void 0!==e?String(e):this.effectiveText).trim();if(!t)return;window.speechSynthesis.cancel();const n=new window.SpeechSynthesisUtterance(t);n.rate=this.rate,n.pitch=this.pitch,n.volume=this.volume,this.language&&(n.lang=this.language);const s=this.resolveVoice();s&&(n.voice=s),n.onstart=this.handleStart,n.onend=this.handleEnd,n.onerror=this.handleError,this.#t=n,window.speechSynthesis.speak(n)};stop=()=>{this.#e||window.speechSynthesis.cancel()};toggle=()=>{this.speaking?this.stop():this.speak()};handleStart=()=>{this.speaking=!0,this.dispatchEvent(new CustomEvent("start",{bubbles:!0}))};handleEnd=()=>{this.speaking=!1,this.#t=null,this.dispatchEvent(new CustomEvent("end",{bubbles:!0}))};handleError=e=>{this.speaking=!1,this.#t=null,this.dispatchEvent(new CustomEvent("error",{detail:{error:e.error||"unknown"},bubbles:!0}))};handleClick=()=>{this.disabled||this.toggle()};render(){const t=!this.#e,n=t?this.speaking?"Stop speaking":"Speak":"Text-to-speech not supported in this browser";return e`
2
+ <button
3
+ type="button"
4
+ class="no-btn btn"
5
+ ?disabled=${this.disabled||!t}
6
+ @click=${this.handleClick}
7
+ aria-label=${n}
8
+ title=${n}
9
+ >
10
+ <k-icon name=${this.speaking?"stop":"record_voice_over"}></k-icon>
11
+ </button>
12
+ <slot style="display:none"></slot>
13
+ `}static styles=t`
14
+ :host {
15
+ --btn_size: 2.5rem;
16
+ --btn_bg: var(--c_bg);
17
+ --btn_bg__speaking: var(--c_primary);
18
+ --btn_tc__speaking: white;
19
+ display: inline-block;
20
+ }
21
+ :host([disabled]) {
22
+ opacity: 0.5;
23
+ pointer-events: none;
24
+ }
25
+ .btn {
26
+ display: inline-flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ width: var(--btn_size);
30
+ height: var(--btn_size);
31
+ padding: 0;
32
+ border: 1px solid var(--c_border);
33
+ border-radius: 50%;
34
+ background: var(--btn_bg);
35
+ color: var(--tc);
36
+ cursor: pointer;
37
+ transition: background var(--animation_ms), color var(--animation_ms), border-color var(--animation_ms);
38
+ }
39
+ .btn:hover:not(:disabled) {
40
+ background: var(--c_bg__alt);
41
+ }
42
+ .btn:focus-visible {
43
+ outline: none;
44
+ box-shadow: var(--focus_shadow);
45
+ }
46
+ :host([speaking]) .btn,
47
+ :host([speaking]) .btn:hover,
48
+ :host([speaking]) .btn:focus-visible {
49
+ background: var(--btn_bg__speaking);
50
+ color: var(--btn_tc__speaking);
51
+ border-color: transparent;
52
+ }
53
+ .btn:disabled {
54
+ cursor: not-allowed;
55
+ }
56
+ `}customElements.define("k-text-to-speech",s);
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>
@@ -120,6 +120,9 @@
120
120
  <k-filter-item filter-keywords="sortable drag drop sort components"><a
121
121
  href="../components/sortable.html"
122
122
  >Sortable<br><small>Component</small></a></k-filter-item>
123
+ <k-filter-item filter-keywords="speech to text speechtotext microphone voice recognition transcription components"><a
124
+ href="../components/speech-to-text.html"
125
+ >Speech To Text<br><small>Component</small></a></k-filter-item>
123
126
  <k-filter-item filter-keywords="spinner loading components"><a
124
127
  href="../components/spinner.html">Spinner<br><small>Component</small></a></k-filter-item>
125
128
  <k-filter-item filter-keywords="split pane components"><a
@@ -172,6 +175,9 @@
172
175
  href="../components/tabs.html">Tabs<br><small>Component</small></a></k-filter-item>
173
176
  <k-filter-item filter-keywords="tags tag input components"><a
174
177
  href="../components/tags.html">Tags<br><small>Component</small></a></k-filter-item>
178
+ <k-filter-item filter-keywords="text to speech texttospeech tts speak voice synthesis components"><a
179
+ href="../components/text-to-speech.html"
180
+ >Text To Speech<br><small>Component</small></a></k-filter-item>
175
181
  <k-filter-item filter-keywords="theme select dropdown dark light components"><a
176
182
  href="../components/theme-select.html"
177
183
  >Theme Select<br><small>Component</small></a></k-filter-item>
@@ -297,11 +303,13 @@
297
303
  <a href="../components/show-more.html">Show More</a>
298
304
  <a href="../components/slider.html">Slider</a>
299
305
  <a href="../components/sortable.html">Sortable</a>
306
+ <a href="../components/speech-to-text.html">Speech To Text</a>
300
307
  <a href="../components/spinner.html">Spinner</a>
301
308
  <a href="../components/split.html">Split</a>
302
309
  <a href="../components/table.html">Table</a>
303
310
  <a href="../components/tabs.html">Tabs</a>
304
311
  <a href="../components/tags.html">Tags</a>
312
+ <a href="../components/text-to-speech.html">Text To Speech</a>
305
313
  <a href="../components/theme-select.html">Theme Select</a>
306
314
  <a href="../components/theme-switcher.html">Theme Switcher</a>
307
315
  <a href="../components/time.html">Time</a>