@designcrowd/fe-shared-lib 1.8.7 → 1.8.9-ai-switch

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 (160) hide show
  1. package/.storybook-static/assets/AiPoweredLoader-K9ofJ40T.js +1 -0
  2. package/.storybook-static/assets/AiPoweredLoader.stories-ek9rwGQG.js +567 -0
  3. package/.storybook-static/assets/Auth-BEjq1pFf.css +1 -0
  4. package/.storybook-static/assets/Auth.stories-D1247dT1.js +490 -0
  5. package/.storybook-static/assets/AuthCrazyDomains.stories-BIamICEC.js +73 -0
  6. package/.storybook-static/assets/Button-CkyYO9sU.js +1 -0
  7. package/.storybook-static/assets/Button-CsmXX2Kh.css +1 -0
  8. package/.storybook-static/assets/ButtonGroup-B1fnbW1G.css +1 -0
  9. package/.storybook-static/assets/ButtonGroup.stories-B_Y6Qiue.js +504 -0
  10. package/.storybook-static/assets/ButtonPrimary-Bu6bXb_c.css +1 -0
  11. package/.storybook-static/assets/ButtonPrimary-LDY_rMmo.js +1 -0
  12. package/.storybook-static/assets/Buttons.stories-UtLyTNDh.js +761 -0
  13. package/.storybook-static/assets/ButtonsCrazyDomains.stories-B_dAvsPN.js +199 -0
  14. package/.storybook-static/assets/Checkbox.mixin-DkHpdvGa.js +1 -0
  15. package/.storybook-static/assets/Checkbox.stories-C2JNNPiv.js +246 -0
  16. package/.storybook-static/assets/Checktile.stories-A2EEo588.js +88 -0
  17. package/.storybook-static/assets/CollapsiblePanel.stories-C1n7g5nQ.js +56 -0
  18. package/.storybook-static/assets/ColorPicker.stories-Qp6snl1f.js +73 -0
  19. package/.storybook-static/assets/CopyToClipboardText.stories-sChI7F7B.js +32 -0
  20. package/.storybook-static/assets/Dropdown.stories-b--FBRDl.js +159 -0
  21. package/.storybook-static/assets/DropdownItem-B-sUYaug.js +1 -0
  22. package/.storybook-static/assets/DropdownItem-BV-BdThU.css +1 -0
  23. package/.storybook-static/assets/FormControl.mixin-Du0pWSns.js +1 -0
  24. package/.storybook-static/assets/HashRouteModal.stories-CNcrRtbp.js +64 -0
  25. package/.storybook-static/assets/HelloBar-DEIIHhYa.js +1 -0
  26. package/.storybook-static/assets/HelloBar.stories-tyJmZL4_.js +342 -0
  27. package/.storybook-static/assets/Icon-B_xzgi_Q.js +145 -0
  28. package/.storybook-static/assets/Icon.stories-BZzjXimT.js +151 -0
  29. package/.storybook-static/assets/Icon.stories-Bgp3oN6t.js +787 -0
  30. package/.storybook-static/assets/Loader-w-8rPZZr.js +1 -0
  31. package/.storybook-static/assets/LogoBusinessBrandColours-CeAaMKke.css +1 -0
  32. package/.storybook-static/assets/LogoBusinessBrandColours-wfQKCU3x.js +1 -0
  33. package/.storybook-static/assets/LogoBusinessBrandColours.stories-Br6U96nz.js +36 -0
  34. package/.storybook-static/assets/LogoKeywords-eT_i8ucw.js +1 -0
  35. package/.storybook-static/assets/LogoKeywords.stories-2eAnYOwT.js +86 -0
  36. package/.storybook-static/assets/Masonry-C2MNiGg0.css +1 -0
  37. package/.storybook-static/assets/Masonry.stories-DvvP8ATW.js +71 -0
  38. package/.storybook-static/assets/Modal-CGwEIF5R.css +1 -0
  39. package/.storybook-static/assets/Modal-DKAacz7P.js +1 -0
  40. package/.storybook-static/assets/Modal.stories-B9faUP3R.js +345 -0
  41. package/.storybook-static/assets/Notice.stories-E5fzboZ_.js +222 -0
  42. package/.storybook-static/assets/NumberStepper-Blffv09R.css +1 -0
  43. package/.storybook-static/assets/NumberStepper.stories-DxFzm0J9.js +64 -0
  44. package/.storybook-static/assets/PaymentConfigList-BpUMV6cp.css +1 -0
  45. package/.storybook-static/assets/PaymentConfigList.stories-DgQ5DKoI.js +130 -0
  46. package/.storybook-static/assets/Picture-C-f6m6ze.js +1 -0
  47. package/.storybook-static/assets/Picture.stories-CDN0TmGy.js +119 -0
  48. package/.storybook-static/assets/Pill-40wjWWYr.js +1 -0
  49. package/.storybook-static/assets/Pill.stories-DlxPmQuw.js +18 -0
  50. package/.storybook-static/assets/PillBar-os4mJV3M.css +1 -0
  51. package/.storybook-static/assets/PillBar.stories-DuJpicaI.js +41 -0
  52. package/.storybook-static/assets/Price-DmIyQdA3.js +1 -0
  53. package/.storybook-static/assets/Price.stories-gvqiKJzs.js +358 -0
  54. package/.storybook-static/assets/PromoCard.stories-DCqsBuOI.js +299 -0
  55. package/.storybook-static/assets/PublishBrandPageModal-Q9-mNG1q.css +1 -0
  56. package/.storybook-static/assets/PublishBrandPageModal.stories-BFr76U5n.js +324 -0
  57. package/.storybook-static/assets/SearchBar.stories-BjqtXwFK.js +12 -0
  58. package/.storybook-static/assets/Select-Dw-zvSUg.css +1 -0
  59. package/.storybook-static/assets/Select.stories-LGfzNS8M.js +108 -0
  60. package/.storybook-static/assets/SellDomainNameList.fixtures-LC6fjr_b.js +1 -0
  61. package/.storybook-static/assets/SellDomainNameListModal-Cs6_cMyh.js +1 -0
  62. package/.storybook-static/assets/SellDomainNameListModal-DH6khE10.css +1 -0
  63. package/.storybook-static/assets/SellDomainNameListModal.stories-n-gs1OP1.js +71 -0
  64. package/.storybook-static/assets/SellDomainNameListSearchResult-Cpxq0jDA.css +1 -0
  65. package/.storybook-static/assets/SellDomainNameListSearchResult-DGov8cKY.js +1 -0
  66. package/.storybook-static/assets/SellDomainNameSearchWithResults-DHzu6fnp.js +1 -0
  67. package/.storybook-static/assets/SellDomainNameSearchWithResults.stories-CW_xjbiq.js +37 -0
  68. package/.storybook-static/assets/SellDomainNameWidget.stories-DwaHPJv8.js +36 -0
  69. package/.storybook-static/assets/SideNavigationPanel-CcuQm_Sc.css +1 -0
  70. package/.storybook-static/assets/SideNavigationPanel.stories-BkDnJq6A.js +143 -0
  71. package/.storybook-static/assets/SignIn-CE_SoJx-.css +1 -0
  72. package/.storybook-static/assets/SignIn-CVWfb7be.js +1 -0
  73. package/.storybook-static/assets/Slider-Cog2FFdj.css +1 -0
  74. package/.storybook-static/assets/Slider.stories-dEVLBxDH.js +141 -0
  75. package/.storybook-static/assets/SparkleIcon.stories-qzRF8GqJ.js +547 -0
  76. package/.storybook-static/assets/StarRating-BtKh7pzm.css +1 -0
  77. package/.storybook-static/assets/StarRating.stories-CaHUrkco.js +45 -0
  78. package/.storybook-static/assets/TabMenu.stories-zjRIYR91.js +47 -0
  79. package/.storybook-static/assets/TextCopyField-8fLItNK1.js +1 -0
  80. package/.storybook-static/assets/TextCopyField.stories-DhtlsOEJ.js +47 -0
  81. package/.storybook-static/assets/TextInput-ChcUAMVU.js +1 -0
  82. package/.storybook-static/assets/TextInput.stories-CYg-wtE3.js +233 -0
  83. package/.storybook-static/assets/Textarea.stories-CIbFJ5BC.js +207 -0
  84. package/.storybook-static/assets/Toggle.stories-PzUJM04E.js +161 -0
  85. package/.storybook-static/assets/Tooltip-DmYewPhE.js +1 -0
  86. package/.storybook-static/assets/Tooltip-DyXIgFQH.css +1 -0
  87. package/.storybook-static/assets/Tooltip.stories-BbvfQkdB.js +953 -0
  88. package/.storybook-static/assets/UploadYourLogoApplication-nGy7BMKH.css +9 -0
  89. package/.storybook-static/assets/UploadYourLogoApplication.stories-BhZE8DD8.js +252 -0
  90. package/.storybook-static/assets/UploadYourLogoDropzone-DQqACf-e.css +1 -0
  91. package/.storybook-static/assets/UploadYourLogoDropzone-DjLMXjVf.js +24 -0
  92. package/.storybook-static/assets/UploadYourLogoDropzone.stories-DmrtZdrQ.js +55 -0
  93. package/.storybook-static/assets/UploadedLogoSearchResultCard.stories-H46TQzf5.js +79 -0
  94. package/.storybook-static/assets/WebsiteContextualUpgradeModal-Dec1RypL.css +1 -0
  95. package/.storybook-static/assets/WebsiteContextualUpgradeModal.stories-CF2wZFGr.js +211 -0
  96. package/.storybook-static/assets/_commonjsHelpers-D6-XlEtG.js +1 -0
  97. package/.storybook-static/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  98. package/.storybook-static/assets/api-BlGvmpef.js +1 -0
  99. package/.storybook-static/assets/axe-CVuRbXyi.js +30 -0
  100. package/.storybook-static/assets/brand-crowd-api.client-CMc6GnPx.js +1 -0
  101. package/.storybook-static/assets/bundled-translations-BoWhEDU_.js +1 -0
  102. package/.storybook-static/assets/bundled-translations.de-DE-C4lqla4O.js +1 -0
  103. package/.storybook-static/assets/bundled-translations.es-ES-BxMIllUH.js +1 -0
  104. package/.storybook-static/assets/bundled-translations.fr-CA-MxZpyz0w.js +1 -0
  105. package/.storybook-static/assets/bundled-translations.fr-FR-N7UPCZVr.js +1 -0
  106. package/.storybook-static/assets/bundled-translations.pt-BR-C8tscYuG.js +1 -0
  107. package/.storybook-static/assets/bundled-translations.pt-PT-Dszj5Xfa.js +1 -0
  108. package/.storybook-static/assets/carousel-Dt2XmYc_.css +1 -0
  109. package/.storybook-static/assets/carousel.stories-CC4v-h62.js +668 -0
  110. package/.storybook-static/assets/event-constants-CMO9VQVu.js +1 -0
  111. package/.storybook-static/assets/iframe-ndUd-rmt.js +1126 -0
  112. package/.storybook-static/assets/index-Bz4la0P9.js +6 -0
  113. package/.storybook-static/assets/index-_aBqSnL8.js +29 -0
  114. package/.storybook-static/assets/matchers-7Z3WT2CE-OIiPHzXs.js +14 -0
  115. package/.storybook-static/assets/mediaQueryMixin-CISNqd93.js +1 -0
  116. package/.storybook-static/assets/tracking-ATsLLehC.js +1 -0
  117. package/.storybook-static/css/tailwind-brandCrowd.css +2623 -0
  118. package/.storybook-static/css/tailwind-brandPage.css +2295 -0
  119. package/.storybook-static/css/tailwind-crazyDomains.css +2623 -0
  120. package/.storybook-static/css/tailwind-designCom.css +2623 -0
  121. package/.storybook-static/css/tailwind-designCrowd.css +2623 -0
  122. package/.storybook-static/favicon.svg +1 -0
  123. package/.storybook-static/iframe.html +694 -0
  124. package/.storybook-static/index.html +156 -0
  125. package/.storybook-static/index.json +1 -0
  126. package/.storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  127. package/.storybook-static/nunito-sans-bold.woff2 +0 -0
  128. package/.storybook-static/nunito-sans-italic.woff2 +0 -0
  129. package/.storybook-static/nunito-sans-regular.woff2 +0 -0
  130. package/.storybook-static/project.json +1 -0
  131. package/.storybook-static/sb-addons/a11y-1/manager-bundle.js +5 -0
  132. package/.storybook-static/sb-addons/links-2/manager-bundle.js +3 -0
  133. package/.storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +188 -0
  134. package/.storybook-static/sb-addons/themes-3/manager-bundle.js +3 -0
  135. package/.storybook-static/sb-common-assets/favicon.svg +1 -0
  136. package/.storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  137. package/.storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  138. package/.storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  139. package/.storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  140. package/.storybook-static/sb-manager/globals-module-info.js +797 -0
  141. package/.storybook-static/sb-manager/globals-runtime.js +72062 -0
  142. package/.storybook-static/sb-manager/globals.js +34 -0
  143. package/.storybook-static/sb-manager/runtime.js +13002 -0
  144. package/.vscode/settings.json +2 -0
  145. package/dist/css/tailwind-brandCrowd.css +81 -16
  146. package/dist/css/tailwind-brandPage.css +80 -11
  147. package/dist/css/tailwind-crazyDomains.css +81 -16
  148. package/dist/css/tailwind-designCom.css +81 -16
  149. package/dist/css/tailwind-designCrowd.css +81 -16
  150. package/package.json +1 -1
  151. package/public/css/tailwind-brandCrowd.css +2644 -0
  152. package/public/css/tailwind-brandPage.css +2312 -0
  153. package/public/css/tailwind-crazyDomains.css +2644 -0
  154. package/public/css/tailwind-designCom.css +2644 -0
  155. package/public/css/tailwind-designCrowd.css +2644 -0
  156. package/src/atoms/components/AiSwitch/AiSwitch.stories.js +31 -0
  157. package/src/atoms/components/AiSwitch/AiSwitch.vue +225 -0
  158. package/src/atoms/components/AiSwitch/StarIcon.vue +7 -0
  159. package/src/atoms/components/Button/variants/ButtonDarkModePill.vue +5 -5
  160. package/src/useVoiceToText.ts +6 -1
@@ -0,0 +1,31 @@
1
+ import AiSwitch from './AiSwitch.vue';
2
+
3
+ export default {
4
+ title: 'Components/AiSwitch',
5
+ component: AiSwitch,
6
+ };
7
+
8
+ export const Default = () => ({
9
+ components: { AiSwitch },
10
+ template: '<AiSwitch />',
11
+ });
12
+
13
+ export const DarkMode = () => ({
14
+ components: { AiSwitch },
15
+ template: '<AiSwitch :is-dark-mode="true" />',
16
+ });
17
+ DarkMode.decorators = [
18
+ () => ({
19
+ template: '<div style="background: #000; padding: 2rem;"><story /></div>',
20
+ }),
21
+ ];
22
+
23
+ export const StarSwitch = () => ({
24
+ components: { AiSwitch },
25
+ template: '<AiSwitch :is-dark-mode="true" :show-stars="true" />',
26
+ });
27
+ StarSwitch.decorators = [
28
+ () => ({
29
+ template: '<div style="background: #000; padding: 2rem;"><story /></div>',
30
+ }),
31
+ ];
@@ -0,0 +1,225 @@
1
+ <template>
2
+ <div class="switch-container" :class="{ 'dark-mode': isDarkMode }">
3
+ <div class="switch-labels">
4
+ <span class="off-label">Templates</span>
5
+ <span class="on-label">
6
+ <Icon name="ai" class="tw-mr-1" style="fill: linear-gradient(180deg, #d946ef 0%, #8b5cf6 100%)" />AI Mode</span
7
+ >
8
+ </div>
9
+ <div class="switch-background" @click="toggleSwitch">
10
+ <div class="switch-block" :class="{ 'is-ai': isAi, 'star-block': showStars }"></div>
11
+ </div>
12
+ <StarIcon
13
+ v-for="star in stars"
14
+ :key="star.index"
15
+ class="star"
16
+ :class="{ 'throw-star': isAi && showStars }"
17
+ :style="{
18
+ left: `calc(19rem + ${star.x}px)`,
19
+ top: `calc(2.5rem + ${star.y}px)`,
20
+ transform: `rotate(${star.rotate}deg)`,
21
+ animationDelay: `0ms, ${star.fadeDelay}ms`,
22
+ fill: star.color,
23
+ }"
24
+ />
25
+ <!-- <StarIcon class="star2" /> -->
26
+ </div>
27
+ </template>
28
+
29
+ <script setup lang="ts">
30
+ import { ref } from 'vue';
31
+ import Icon from '../Icon/Icon.vue';
32
+ import StarIcon from './StarIcon.vue';
33
+
34
+ interface Props {
35
+ isDarkMode: boolean;
36
+ showStars: boolean;
37
+ }
38
+
39
+ const props = withDefaults(defineProps<Props>(), {
40
+ isDarkMode: false,
41
+ showStars: false,
42
+ });
43
+
44
+ const isAi = ref(false);
45
+
46
+ const ANGLE_CONST = 25;
47
+ const DIST_CONST = 25;
48
+ const ANGLE_JITTER = 90;
49
+ const DIST_JITTER = 30;
50
+ const NUM_STARS = 5;
51
+ const FADE_DELAY = 450;
52
+ const FADE_JITTER = 400;
53
+
54
+ const convertDegreesToRadians = (angle) => (angle * Math.PI) / 180;
55
+
56
+ const convertPolarToCartesian = (angle, distance) => {
57
+ const angleInRadians = convertDegreesToRadians(angle);
58
+ const x = Math.cos(angleInRadians) * distance;
59
+ const y = Math.sin(angleInRadians) * distance;
60
+
61
+ return [x, y];
62
+ };
63
+
64
+ const stars = ref([
65
+ {
66
+ index: 0,
67
+ x: 0,
68
+ y: 0,
69
+ rotate: 0,
70
+ fadeDelay: 0,
71
+ color: '#D946EF',
72
+ },
73
+ ]);
74
+
75
+ const randomizeStars = () => {
76
+ if (!isAi.value && !props.showStars) {
77
+ return;
78
+ }
79
+ stars.value = Array.from({ length: NUM_STARS }, (_, index) => {
80
+ const angle = Math.floor(
81
+ ANGLE_CONST - index * (ANGLE_JITTER / NUM_STARS) - Math.random() * (ANGLE_JITTER / NUM_STARS),
82
+ );
83
+ const dist = Math.floor(DIST_CONST + Math.random() * DIST_JITTER);
84
+ const rotate = Math.floor(180 + Math.random() * 90);
85
+ const fadeDelay = Math.floor(FADE_DELAY + Math.random() * FADE_JITTER);
86
+ const color = index % 2 === 0 ? '#D946EF' : '#8B5CF6';
87
+
88
+ const [x, y] = convertPolarToCartesian(angle, dist);
89
+ return { index, x, y, rotate, fadeDelay, color };
90
+ });
91
+ };
92
+
93
+ const toggleSwitch = () => {
94
+ // toggle left align class
95
+ // if moving right to left, play star animation after movement
96
+ isAi.value = !isAi.value;
97
+ console.log(`switch clicked, now ${isAi.value}`);
98
+ randomizeStars();
99
+ };
100
+ </script>
101
+
102
+ <style scoped>
103
+ .switch-container {
104
+ position: relative;
105
+ width: 23rem;
106
+ height: 6rem;
107
+ padding: 1rem 2rem;
108
+ display: flex;
109
+ align-items: center;
110
+ justify-content: space-around;
111
+ }
112
+
113
+ .switch-labels {
114
+ top: 0px;
115
+ left: 0px;
116
+ width: 100%;
117
+ height: 100%;
118
+ z-index: 10;
119
+ padding: 0 10px;
120
+ position: absolute;
121
+ display: flex;
122
+ align-items: center;
123
+ justify-content: space-evenly;
124
+ pointer-events: none;
125
+ > {
126
+ width: 8rem;
127
+ }
128
+ }
129
+
130
+ .switch-background {
131
+ position: relative;
132
+ width: 18rem;
133
+ height: 3rem;
134
+ background-color: bisque;
135
+ border-radius: 1.5rem;
136
+ padding: 6px;
137
+ z-index: 2;
138
+ }
139
+
140
+ .switch-block {
141
+ position: absolute;
142
+ height: 2.25rem;
143
+ width: 8.75rem;
144
+ border-radius: 1.125rem;
145
+ background-color: cornflowerblue;
146
+ }
147
+
148
+ .on-label {
149
+ display: flex;
150
+ align-items: center;
151
+ }
152
+
153
+ .switch-block.is-ai {
154
+ transform: translateX(97%);
155
+ background: linear-gradient(180deg, #d946ef 0%, #8b5cf6 100%);
156
+ }
157
+
158
+ .dark-mode {
159
+ @apply tw-text-grayscale-200;
160
+ .switch-background {
161
+ background-color: #3d3d3d;
162
+ }
163
+
164
+ .switch-block {
165
+ background-color: #252525;
166
+ }
167
+ }
168
+
169
+ .star {
170
+ position: absolute;
171
+ opacity: 0;
172
+ width: 0.75rem;
173
+ height: 0.75rem;
174
+ }
175
+
176
+ @keyframes star-spread {
177
+ from {
178
+ left: 19rem;
179
+ top: 2.5rem;
180
+ transform: rotate(0deg);
181
+ }
182
+ 40% {
183
+ left: 19rem;
184
+ top: 2.5rem;
185
+ transform: rotate(0deg);
186
+ }
187
+ }
188
+
189
+ @keyframes fade-out {
190
+ to {
191
+ opacity: 0;
192
+ }
193
+ }
194
+
195
+ @media (prefers-reduced-motion: no-preference) {
196
+ .switch-block.is-ai.star-block {
197
+ transition:
198
+ transform 300ms
199
+ linear(
200
+ 0,
201
+ 0.371 6.2%,
202
+ 0.652 12.9%,
203
+ 0.85 20.3%,
204
+ 0.922 24.4%,
205
+ 0.977 28.8%,
206
+ 1.027 36.1%,
207
+ 1.045 44.8%,
208
+ 1.006 77.3%,
209
+ 1
210
+ ),
211
+ color 300ms;
212
+ }
213
+ .switch-block {
214
+ transition:
215
+ transform 300ms ease-in,
216
+ color 300ms ease-in;
217
+ }
218
+ .throw-star {
219
+ opacity: 1;
220
+ animation:
221
+ star-spread 450ms cubic-bezier(0.43, 1.032, 0.618, 1.003) forwards,
222
+ fade-out 400ms ease-out forwards;
223
+ }
224
+ }
225
+ </style>
@@ -0,0 +1,7 @@
1
+ <template>
2
+ <svg class="star1" viewBox="18 23 48 48">
3
+ <path
4
+ d="M65.653886,47.229432c-13.71205,5.484135-18.128049,9.928695-23.576943,23.729431C36.62805,57.158127,32.212051,52.713567,18.5,47.229432C32.212051,41.745296,36.62805,37.300736,42.076943,23.5c5.448894,13.800736,9.864893,18.245296,23.576943,23.729432Z"
5
+ ></path>
6
+ </svg>
7
+ </template>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <button
3
3
  v-if="!url"
4
- class="tw-rounded-full tw-font-sans tw-border-2 tw-border-solid tw-font-bold tw-capitalize tw-transition-colors tw-duration-300 tw-border-white hover:tw-bg-secondary-400 tw-py-1.5 tw-px-4"
4
+ class="tw-rounded-full tw-font-sans tw-border tw-border-solid tw-font-bold tw-capitalize tw-transition-colors tw-duration-300 tw-border-grayscale-400 hover:tw-bg-secondary-400 tw-py-1.5 tw-px-4"
5
5
  :class="[
6
6
  classes,
7
7
  {
@@ -10,7 +10,7 @@
10
10
  'tw-cursor-not-allowed': disabled,
11
11
  'tw-cursor-pointer': !disabled,
12
12
  'tw-text-secondary-600 tw-bg-white': active,
13
- 'tw-text-white tw-bg-transparent': !active || disabled,
13
+ 'tw-text-grayscale-300 tw-bg-transparent': !active || disabled,
14
14
  },
15
15
  ]"
16
16
  :disabled="disabled"
@@ -23,7 +23,7 @@
23
23
  <a
24
24
  v-else
25
25
  :href="computedUrl"
26
- class="tw-rounded-full tw-font-sans tw-inline-flex tw-border-2 tw-border-solid tw-font-bold tw-capitalize tw-transition-colors tw-duration-300 tw-border-white hover:tw-bg-secondary-400 tw-py-1.5 tw-px-4 tw-no-underline"
26
+ class="tw-rounded-full tw-font-sans tw-inline-flex tw-border tw-border-solid tw-font-bold tw-capitalize tw-transition-colors tw-duration-300 tw-border-grayscale-400 hover:tw-bg-secondary-400 tw-py-1.5 tw-px-4 tw-no-underline"
27
27
  :class="[
28
28
  classes,
29
29
  {
@@ -31,8 +31,8 @@
31
31
  'tw-text-sm': size !== 'small',
32
32
  'tw-cursor-not-allowed': disabled,
33
33
  'tw-cursor-pointer': !disabled,
34
- 'tw-text-secondary-600 tw-bg-white': active,
35
- 'tw-text-white tw-bg-transparent': !active || disabled,
34
+ 'tw-text-secondary-600 tw-bg-grayscale-300': active,
35
+ 'tw-text-grayscale-300 tw-bg-transparent': !active || disabled,
36
36
  },
37
37
  ]"
38
38
  :download="download"
@@ -104,6 +104,8 @@ export function useVoiceToText(options: UseVoiceToTextOptions = {}): UseVoiceToT
104
104
  return;
105
105
  }
106
106
 
107
+ isListening.value = false;
108
+
107
109
  const message = ERROR_MESSAGES[event.error] || 'An error occurred with speech recognition.';
108
110
  error.value = message;
109
111
 
@@ -118,6 +120,10 @@ export function useVoiceToText(options: UseVoiceToTextOptions = {}): UseVoiceToT
118
120
  }, ERROR_CLEAR_DELAY);
119
121
  };
120
122
 
123
+ recognition.onstart = () => {
124
+ isListening.value = true;
125
+ };
126
+
121
127
  recognition.onend = () => {
122
128
  isListening.value = false;
123
129
  };
@@ -142,7 +148,6 @@ export function useVoiceToText(options: UseVoiceToTextOptions = {}): UseVoiceToT
142
148
 
143
149
  try {
144
150
  recognition.start();
145
- isListening.value = true;
146
151
  } catch (e: unknown) {
147
152
  // eslint-disable-next-line no-console
148
153
  console.warn('[useVoiceToText] Failed to start:', (e as Error).message);