@designcrowd/fe-shared-lib 1.6.10-voiceText → 1.6.10-voiceText-2
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.
- package/.claude/settings.local.json +4 -9
- package/.claude/skills/playwright-cli/SKILL.md +278 -0
- package/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/.claude/skills/playwright-cli/references/running-code.md +232 -0
- package/.claude/skills/playwright-cli/references/session-management.md +169 -0
- package/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/.claude/skills/playwright-cli/references/test-generation.md +88 -0
- package/.claude/skills/playwright-cli/references/tracing.md +139 -0
- package/.claude/skills/playwright-cli/references/video-recording.md +43 -0
- package/.playwright-cli/page-2026-04-15T02-26-54-483Z.yml +68 -0
- package/.playwright-cli/page-2026-04-15T02-27-08-312Z.yml +0 -0
- package/.playwright-cli/page-2026-04-15T02-27-25-596Z.yml +0 -0
- package/.playwright-cli/page-2026-04-15T02-27-40-203Z.yml +0 -0
- package/.playwright-cli/page-2026-04-15T02-38-58-180Z.yml +0 -0
- package/.playwright-cli/page-2026-04-15T02-39-01-736Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-39-10-233Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-39-43-909Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-40-44-800Z.yml +0 -0
- package/.playwright-cli/page-2026-04-15T02-40-54-188Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-40-59-031Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-51-07-111Z.yml +0 -0
- package/.playwright-cli/page-2026-04-15T02-51-10-941Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-51-17-020Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-51-42-403Z.yml +2 -0
- package/.playwright-cli/page-2026-04-15T02-51-53-552Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-51-54-631Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-52-16-170Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-52-17-246Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-52-28-472Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-53-15-507Z.yml +0 -0
- package/.playwright-cli/page-2026-04-15T02-53-16-554Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-53-22-178Z.yml +26 -0
- package/.playwright-cli/page-2026-04-15T02-53-34-973Z.yml +26 -0
- package/CLAUDE.md +35 -0
- package/docs/voice-to-text-discussion-attachments/Screenshot 2026-04-15 at 11.44.18/342/200/257am.png +0 -0
- package/docs/voice-to-text-discussion-attachments/image.png +0 -0
- package/docs/voice-to-text-discussion-attachments/image_1.png +0 -0
- package/docs/voice-to-text-discussion-attachments/image_2.png +0 -0
- package/docs/voice-to-text-discussion-attachments/image_3.png +0 -0
- package/docs/voice-to-text-discussion-attachments/image_4.png +0 -0
- package/docs/voice-to-text-discussion.md +330 -0
- package/package.json +3 -1
- package/public/css/tailwind-brandCrowd.css +29 -0
- package/public/css/tailwind-brandPage.css +25 -0
- package/public/css/tailwind-crazyDomains.css +29 -0
- package/public/css/tailwind-designCom.css +29 -0
- package/public/css/tailwind-designCrowd.css +29 -0
- package/src/atoms/components/Modal/Modal.vue +9 -0
- package/src/atoms/components/VoiceToTextButton/VoiceToTextButton.stories.js +185 -50
- package/src/atoms/components/VoiceToTextButton/VoiceToTextButton.vue +73 -13
- package/src/useVoiceToText.js +1 -0
|
@@ -0,0 +1,330 @@
|
|
|
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
|
+

|
|
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
|
+
> 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
|
+
> 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
|
+

|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Loïc — 4:49 AM
|
|
44
|
+
|
|
45
|
+
GPT:
|
|
46
|
+
> Short answer: **yes — but not by itself.**
|
|
47
|
+
> How `useSpeechRecognition` handles languages
|
|
48
|
+
> 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
|
+
> ```useSpeechRecognition({
|
|
50
|
+
> lang: 'fr-FR' // or 'es-ES', 'de-DE', etc.
|
|
51
|
+
> })```
|
|
52
|
+
> So technically:
|
|
53
|
+
> :white_check_mark: You **can use other languages** by changing `lang`
|
|
54
|
+
> • :exclamation: But support depends entirely on the **browser + underlying speech engine** ([vueuse.org](http://vueuse.org))
|
|
55
|
+
>
|
|
56
|
+
> What actually determines language support
|
|
57
|
+
> The real behavior comes from the browser’s `SpeechRecognition` implementation:
|
|
58
|
+
> Chrome (and Chromium browsers) → best support, many languages
|
|
59
|
+
> Safari → limited support
|
|
60
|
+
> • Firefox → basically **no support** for this API
|
|
61
|
+
> VueUse just passes your config through — it doesn’t add language models itself. ([vueuse.org](http://vueuse.org))
|
|
62
|
+
>
|
|
63
|
+
> Practical implications
|
|
64
|
+
> • You can switch languages dynamically:
|
|
65
|
+
> ```const lang = ref('en-US')
|
|
66
|
+
>
|
|
67
|
+
> const speech = useSpeechRecognition({ lang })```
|
|
68
|
+
> • But:
|
|
69
|
+
> Some languages may be **less accurate**
|
|
70
|
+
> Some may **not work at all** depending on browser
|
|
71
|
+
> Offline support is usually **not available**
|
|
72
|
+
>
|
|
73
|
+
> TL;DR
|
|
74
|
+
> • :white_check_mark: Works with multiple languages via `lang`
|
|
75
|
+
> • :exclamation: Limited by browser + Web Speech API support
|
|
76
|
+
> • :x: Not a full multilingual engine on its own
|
|
77
|
+
>
|
|
78
|
+
> 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
|
+

|
|
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&t=cIYxelUljv4Qp17M-1 ?
|
|
263
|
+
|
|
264
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@designcrowd/fe-shared-lib",
|
|
3
|
-
"version": "1.6.10-voiceText",
|
|
3
|
+
"version": "1.6.10-voiceText-2",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"start": "run-p storybook watch:translation",
|
|
6
6
|
"build": "npm run build:css --production",
|
|
@@ -71,6 +71,8 @@
|
|
|
71
71
|
"postcss-import": "16.0.0",
|
|
72
72
|
"postcss-nested": "6.0.1",
|
|
73
73
|
"prettier": "3.2.4",
|
|
74
|
+
"react": "^19.2.5",
|
|
75
|
+
"react-dom": "^19.2.5",
|
|
74
76
|
"storybook": "9.0.4",
|
|
75
77
|
"stylelint": "16.2.1",
|
|
76
78
|
"stylelint-config-standard": "36.0.0",
|
|
@@ -1438,6 +1438,10 @@ video {
|
|
|
1438
1438
|
--tw-bg-opacity: 1;
|
|
1439
1439
|
background-color: rgb(208 208 208 / var(--tw-bg-opacity));
|
|
1440
1440
|
}
|
|
1441
|
+
.theme-brandCrowd .tw-bg-grayscale-700 {
|
|
1442
|
+
--tw-bg-opacity: 1;
|
|
1443
|
+
background-color: rgb(43 43 43 / var(--tw-bg-opacity));
|
|
1444
|
+
}
|
|
1441
1445
|
.theme-brandCrowd .tw-bg-info-100 {
|
|
1442
1446
|
--tw-bg-opacity: 1;
|
|
1443
1447
|
background-color: rgb(204 234 247 / var(--tw-bg-opacity));
|
|
@@ -1896,6 +1900,10 @@ video {
|
|
|
1896
1900
|
--tw-text-opacity: 1;
|
|
1897
1901
|
color: rgb(145 16 38 / var(--tw-text-opacity));
|
|
1898
1902
|
}
|
|
1903
|
+
.theme-brandCrowd .tw-text-grayscale-400 {
|
|
1904
|
+
--tw-text-opacity: 1;
|
|
1905
|
+
color: rgb(230 230 230 / var(--tw-text-opacity));
|
|
1906
|
+
}
|
|
1899
1907
|
.theme-brandCrowd .tw-text-grayscale-500 {
|
|
1900
1908
|
--tw-text-opacity: 1;
|
|
1901
1909
|
color: rgb(208 208 208 / var(--tw-text-opacity));
|
|
@@ -2049,6 +2057,11 @@ video {
|
|
|
2049
2057
|
--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / 0.05));
|
|
2050
2058
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2051
2059
|
}
|
|
2060
|
+
.theme-brandCrowd .tw-transition-all {
|
|
2061
|
+
transition-property: all;
|
|
2062
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
2063
|
+
transition-duration: 150ms;
|
|
2064
|
+
}
|
|
2052
2065
|
.theme-brandCrowd .tw-transition-colors {
|
|
2053
2066
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
|
|
2054
2067
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -2124,6 +2137,10 @@ video {
|
|
|
2124
2137
|
--tw-bg-opacity: 1;
|
|
2125
2138
|
background-color: rgb(208 208 208 / var(--tw-bg-opacity));
|
|
2126
2139
|
}
|
|
2140
|
+
.theme-brandCrowd .hover\:tw-bg-grayscale-700:hover {
|
|
2141
|
+
--tw-bg-opacity: 1;
|
|
2142
|
+
background-color: rgb(43 43 43 / var(--tw-bg-opacity));
|
|
2143
|
+
}
|
|
2127
2144
|
.theme-brandCrowd .hover\:tw-bg-info-100:hover {
|
|
2128
2145
|
--tw-bg-opacity: 1;
|
|
2129
2146
|
background-color: rgb(204 234 247 / var(--tw-bg-opacity));
|
|
@@ -2240,6 +2257,18 @@ video {
|
|
|
2240
2257
|
outline: 2px solid transparent;
|
|
2241
2258
|
outline-offset: 2px;
|
|
2242
2259
|
}
|
|
2260
|
+
.theme-brandCrowd .focus\:tw-ring-2:focus {
|
|
2261
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
2262
|
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
2263
|
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
2264
|
+
}
|
|
2265
|
+
.theme-brandCrowd .focus\:tw-ring-primary-500:focus {
|
|
2266
|
+
--tw-ring-opacity: 1;
|
|
2267
|
+
--tw-ring-color: rgb(242 27 63 / var(--tw-ring-opacity));
|
|
2268
|
+
}
|
|
2269
|
+
.theme-brandCrowd .focus\:tw-ring-offset-2:focus {
|
|
2270
|
+
--tw-ring-offset-width: 2px;
|
|
2271
|
+
}
|
|
2243
2272
|
.theme-brandCrowd .tw-group:hover .group-hover\:tw-text-info-500 {
|
|
2244
2273
|
--tw-text-opacity: 1;
|
|
2245
2274
|
color: rgb(0 151 215 / var(--tw-text-opacity));
|
|
@@ -1362,6 +1362,10 @@ video {
|
|
|
1362
1362
|
--tw-bg-opacity: 1;
|
|
1363
1363
|
background-color: rgb(208 208 208 / var(--tw-bg-opacity));
|
|
1364
1364
|
}
|
|
1365
|
+
.theme-brandPage .tw-bg-grayscale-700 {
|
|
1366
|
+
--tw-bg-opacity: 1;
|
|
1367
|
+
background-color: rgb(43 43 43 / var(--tw-bg-opacity));
|
|
1368
|
+
}
|
|
1365
1369
|
.theme-brandPage .tw-bg-transparent {
|
|
1366
1370
|
background-color: transparent;
|
|
1367
1371
|
}
|
|
@@ -1736,6 +1740,10 @@ video {
|
|
|
1736
1740
|
--tw-text-opacity: 1;
|
|
1737
1741
|
color: rgb(0 0 0 / var(--tw-text-opacity));
|
|
1738
1742
|
}
|
|
1743
|
+
.theme-brandPage .tw-text-grayscale-400 {
|
|
1744
|
+
--tw-text-opacity: 1;
|
|
1745
|
+
color: rgb(230 230 230 / var(--tw-text-opacity));
|
|
1746
|
+
}
|
|
1739
1747
|
.theme-brandPage .tw-text-grayscale-500 {
|
|
1740
1748
|
--tw-text-opacity: 1;
|
|
1741
1749
|
color: rgb(208 208 208 / var(--tw-text-opacity));
|
|
@@ -1837,6 +1845,11 @@ video {
|
|
|
1837
1845
|
--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / 0.05));
|
|
1838
1846
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
1839
1847
|
}
|
|
1848
|
+
.theme-brandPage .tw-transition-all {
|
|
1849
|
+
transition-property: all;
|
|
1850
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
1851
|
+
transition-duration: 150ms;
|
|
1852
|
+
}
|
|
1840
1853
|
.theme-brandPage .tw-transition-colors {
|
|
1841
1854
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
|
|
1842
1855
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -1888,6 +1901,10 @@ video {
|
|
|
1888
1901
|
--tw-bg-opacity: 1;
|
|
1889
1902
|
background-color: rgb(208 208 208 / var(--tw-bg-opacity));
|
|
1890
1903
|
}
|
|
1904
|
+
.theme-brandPage .hover\:tw-bg-grayscale-700:hover {
|
|
1905
|
+
--tw-bg-opacity: 1;
|
|
1906
|
+
background-color: rgb(43 43 43 / var(--tw-bg-opacity));
|
|
1907
|
+
}
|
|
1891
1908
|
.theme-brandPage .hover\:tw-text-white:hover {
|
|
1892
1909
|
--tw-text-opacity: 1;
|
|
1893
1910
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
|
@@ -1916,6 +1933,14 @@ video {
|
|
|
1916
1933
|
outline: 2px solid transparent;
|
|
1917
1934
|
outline-offset: 2px;
|
|
1918
1935
|
}
|
|
1936
|
+
.theme-brandPage .focus\:tw-ring-2:focus {
|
|
1937
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
1938
|
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
1939
|
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
1940
|
+
}
|
|
1941
|
+
.theme-brandPage .focus\:tw-ring-offset-2:focus {
|
|
1942
|
+
--tw-ring-offset-width: 2px;
|
|
1943
|
+
}
|
|
1919
1944
|
@media (min-width: 640px) {
|
|
1920
1945
|
.theme-brandPage .sm\:tw-absolute {
|
|
1921
1946
|
position: absolute;
|
|
@@ -1438,6 +1438,10 @@ video {
|
|
|
1438
1438
|
--tw-bg-opacity: 1;
|
|
1439
1439
|
background-color: rgb(199 204 207 / var(--tw-bg-opacity));
|
|
1440
1440
|
}
|
|
1441
|
+
.theme-crazyDomains .tw-bg-grayscale-700 {
|
|
1442
|
+
--tw-bg-opacity: 1;
|
|
1443
|
+
background-color: rgb(87 97 99 / var(--tw-bg-opacity));
|
|
1444
|
+
}
|
|
1441
1445
|
.theme-crazyDomains .tw-bg-info-100 {
|
|
1442
1446
|
--tw-bg-opacity: 1;
|
|
1443
1447
|
background-color: rgb(230 246 253 / var(--tw-bg-opacity));
|
|
@@ -1896,6 +1900,10 @@ video {
|
|
|
1896
1900
|
--tw-text-opacity: 1;
|
|
1897
1901
|
color: rgb(140 18 59 / var(--tw-text-opacity));
|
|
1898
1902
|
}
|
|
1903
|
+
.theme-crazyDomains .tw-text-grayscale-400 {
|
|
1904
|
+
--tw-text-opacity: 1;
|
|
1905
|
+
color: rgb(235 238 243 / var(--tw-text-opacity));
|
|
1906
|
+
}
|
|
1899
1907
|
.theme-crazyDomains .tw-text-grayscale-500 {
|
|
1900
1908
|
--tw-text-opacity: 1;
|
|
1901
1909
|
color: rgb(199 204 207 / var(--tw-text-opacity));
|
|
@@ -2049,6 +2057,11 @@ video {
|
|
|
2049
2057
|
--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / 0.05));
|
|
2050
2058
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2051
2059
|
}
|
|
2060
|
+
.theme-crazyDomains .tw-transition-all {
|
|
2061
|
+
transition-property: all;
|
|
2062
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
2063
|
+
transition-duration: 150ms;
|
|
2064
|
+
}
|
|
2052
2065
|
.theme-crazyDomains .tw-transition-colors {
|
|
2053
2066
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
|
|
2054
2067
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -2124,6 +2137,10 @@ video {
|
|
|
2124
2137
|
--tw-bg-opacity: 1;
|
|
2125
2138
|
background-color: rgb(199 204 207 / var(--tw-bg-opacity));
|
|
2126
2139
|
}
|
|
2140
|
+
.theme-crazyDomains .hover\:tw-bg-grayscale-700:hover {
|
|
2141
|
+
--tw-bg-opacity: 1;
|
|
2142
|
+
background-color: rgb(87 97 99 / var(--tw-bg-opacity));
|
|
2143
|
+
}
|
|
2127
2144
|
.theme-crazyDomains .hover\:tw-bg-info-100:hover {
|
|
2128
2145
|
--tw-bg-opacity: 1;
|
|
2129
2146
|
background-color: rgb(230 246 253 / var(--tw-bg-opacity));
|
|
@@ -2240,6 +2257,18 @@ video {
|
|
|
2240
2257
|
outline: 2px solid transparent;
|
|
2241
2258
|
outline-offset: 2px;
|
|
2242
2259
|
}
|
|
2260
|
+
.theme-crazyDomains .focus\:tw-ring-2:focus {
|
|
2261
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
2262
|
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
2263
|
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
2264
|
+
}
|
|
2265
|
+
.theme-crazyDomains .focus\:tw-ring-primary-500:focus {
|
|
2266
|
+
--tw-ring-opacity: 1;
|
|
2267
|
+
--tw-ring-color: rgb(111 172 47 / var(--tw-ring-opacity));
|
|
2268
|
+
}
|
|
2269
|
+
.theme-crazyDomains .focus\:tw-ring-offset-2:focus {
|
|
2270
|
+
--tw-ring-offset-width: 2px;
|
|
2271
|
+
}
|
|
2243
2272
|
.theme-crazyDomains .tw-group:hover .group-hover\:tw-text-info-500 {
|
|
2244
2273
|
--tw-text-opacity: 1;
|
|
2245
2274
|
color: rgb(0 161 239 / var(--tw-text-opacity));
|
|
@@ -1438,6 +1438,10 @@ video {
|
|
|
1438
1438
|
--tw-bg-opacity: 1;
|
|
1439
1439
|
background-color: rgb(209 209 209 / var(--tw-bg-opacity));
|
|
1440
1440
|
}
|
|
1441
|
+
.theme-designCom .tw-bg-grayscale-700 {
|
|
1442
|
+
--tw-bg-opacity: 1;
|
|
1443
|
+
background-color: rgb(38 38 38 / var(--tw-bg-opacity));
|
|
1444
|
+
}
|
|
1441
1445
|
.theme-designCom .tw-bg-info-100 {
|
|
1442
1446
|
--tw-bg-opacity: 1;
|
|
1443
1447
|
background-color: rgb(236 238 254 / var(--tw-bg-opacity));
|
|
@@ -1896,6 +1900,10 @@ video {
|
|
|
1896
1900
|
--tw-text-opacity: 1;
|
|
1897
1901
|
color: rgb(136 44 32 / var(--tw-text-opacity));
|
|
1898
1902
|
}
|
|
1903
|
+
.theme-designCom .tw-text-grayscale-400 {
|
|
1904
|
+
--tw-text-opacity: 1;
|
|
1905
|
+
color: rgb(227 227 227 / var(--tw-text-opacity));
|
|
1906
|
+
}
|
|
1899
1907
|
.theme-designCom .tw-text-grayscale-500 {
|
|
1900
1908
|
--tw-text-opacity: 1;
|
|
1901
1909
|
color: rgb(209 209 209 / var(--tw-text-opacity));
|
|
@@ -2049,6 +2057,11 @@ video {
|
|
|
2049
2057
|
--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / 0.05));
|
|
2050
2058
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2051
2059
|
}
|
|
2060
|
+
.theme-designCom .tw-transition-all {
|
|
2061
|
+
transition-property: all;
|
|
2062
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
2063
|
+
transition-duration: 150ms;
|
|
2064
|
+
}
|
|
2052
2065
|
.theme-designCom .tw-transition-colors {
|
|
2053
2066
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
|
|
2054
2067
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -2124,6 +2137,10 @@ video {
|
|
|
2124
2137
|
--tw-bg-opacity: 1;
|
|
2125
2138
|
background-color: rgb(209 209 209 / var(--tw-bg-opacity));
|
|
2126
2139
|
}
|
|
2140
|
+
.theme-designCom .hover\:tw-bg-grayscale-700:hover {
|
|
2141
|
+
--tw-bg-opacity: 1;
|
|
2142
|
+
background-color: rgb(38 38 38 / var(--tw-bg-opacity));
|
|
2143
|
+
}
|
|
2127
2144
|
.theme-designCom .hover\:tw-bg-info-100:hover {
|
|
2128
2145
|
--tw-bg-opacity: 1;
|
|
2129
2146
|
background-color: rgb(236 238 254 / var(--tw-bg-opacity));
|
|
@@ -2240,6 +2257,18 @@ video {
|
|
|
2240
2257
|
outline: 2px solid transparent;
|
|
2241
2258
|
outline-offset: 2px;
|
|
2242
2259
|
}
|
|
2260
|
+
.theme-designCom .focus\:tw-ring-2:focus {
|
|
2261
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
2262
|
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
2263
|
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
2264
|
+
}
|
|
2265
|
+
.theme-designCom .focus\:tw-ring-primary-500:focus {
|
|
2266
|
+
--tw-ring-opacity: 1;
|
|
2267
|
+
--tw-ring-color: rgb(63 89 246 / var(--tw-ring-opacity));
|
|
2268
|
+
}
|
|
2269
|
+
.theme-designCom .focus\:tw-ring-offset-2:focus {
|
|
2270
|
+
--tw-ring-offset-width: 2px;
|
|
2271
|
+
}
|
|
2243
2272
|
.theme-designCom .tw-group:hover .group-hover\:tw-text-info-500 {
|
|
2244
2273
|
--tw-text-opacity: 1;
|
|
2245
2274
|
color: rgb(63 89 246 / var(--tw-text-opacity));
|
|
@@ -1438,6 +1438,10 @@ video {
|
|
|
1438
1438
|
--tw-bg-opacity: 1;
|
|
1439
1439
|
background-color: rgb(204 204 204 / var(--tw-bg-opacity));
|
|
1440
1440
|
}
|
|
1441
|
+
.theme-designCrowd .tw-bg-grayscale-700 {
|
|
1442
|
+
--tw-bg-opacity: 1;
|
|
1443
|
+
background-color: rgb(82 93 96 / var(--tw-bg-opacity));
|
|
1444
|
+
}
|
|
1441
1445
|
.theme-designCrowd .tw-bg-info-100 {
|
|
1442
1446
|
--tw-bg-opacity: 1;
|
|
1443
1447
|
background-color: rgb(207 234 251 / var(--tw-bg-opacity));
|
|
@@ -1896,6 +1900,10 @@ video {
|
|
|
1896
1900
|
--tw-text-opacity: 1;
|
|
1897
1901
|
color: rgb(146 38 36 / var(--tw-text-opacity));
|
|
1898
1902
|
}
|
|
1903
|
+
.theme-designCrowd .tw-text-grayscale-400 {
|
|
1904
|
+
--tw-text-opacity: 1;
|
|
1905
|
+
color: rgb(230 230 230 / var(--tw-text-opacity));
|
|
1906
|
+
}
|
|
1899
1907
|
.theme-designCrowd .tw-text-grayscale-500 {
|
|
1900
1908
|
--tw-text-opacity: 1;
|
|
1901
1909
|
color: rgb(204 204 204 / var(--tw-text-opacity));
|
|
@@ -2049,6 +2057,11 @@ video {
|
|
|
2049
2057
|
--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / 0.05));
|
|
2050
2058
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2051
2059
|
}
|
|
2060
|
+
.theme-designCrowd .tw-transition-all {
|
|
2061
|
+
transition-property: all;
|
|
2062
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
2063
|
+
transition-duration: 150ms;
|
|
2064
|
+
}
|
|
2052
2065
|
.theme-designCrowd .tw-transition-colors {
|
|
2053
2066
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
|
|
2054
2067
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -2124,6 +2137,10 @@ video {
|
|
|
2124
2137
|
--tw-bg-opacity: 1;
|
|
2125
2138
|
background-color: rgb(204 204 204 / var(--tw-bg-opacity));
|
|
2126
2139
|
}
|
|
2140
|
+
.theme-designCrowd .hover\:tw-bg-grayscale-700:hover {
|
|
2141
|
+
--tw-bg-opacity: 1;
|
|
2142
|
+
background-color: rgb(82 93 96 / var(--tw-bg-opacity));
|
|
2143
|
+
}
|
|
2127
2144
|
.theme-designCrowd .hover\:tw-bg-info-100:hover {
|
|
2128
2145
|
--tw-bg-opacity: 1;
|
|
2129
2146
|
background-color: rgb(207 234 251 / var(--tw-bg-opacity));
|
|
@@ -2240,6 +2257,18 @@ video {
|
|
|
2240
2257
|
outline: 2px solid transparent;
|
|
2241
2258
|
outline-offset: 2px;
|
|
2242
2259
|
}
|
|
2260
|
+
.theme-designCrowd .focus\:tw-ring-2:focus {
|
|
2261
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
2262
|
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
2263
|
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
2264
|
+
}
|
|
2265
|
+
.theme-designCrowd .focus\:tw-ring-primary-500:focus {
|
|
2266
|
+
--tw-ring-opacity: 1;
|
|
2267
|
+
--tw-ring-color: rgb(17 151 235 / var(--tw-ring-opacity));
|
|
2268
|
+
}
|
|
2269
|
+
.theme-designCrowd .focus\:tw-ring-offset-2:focus {
|
|
2270
|
+
--tw-ring-offset-width: 2px;
|
|
2271
|
+
}
|
|
2243
2272
|
.theme-designCrowd .tw-group:hover .group-hover\:tw-text-info-500 {
|
|
2244
2273
|
--tw-text-opacity: 1;
|
|
2245
2274
|
color: rgb(17 151 235 / var(--tw-text-opacity));
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-show="visible"
|
|
4
|
+
role="dialog"
|
|
5
|
+
aria-modal="true"
|
|
4
6
|
:aria-hidden="visible ? 'false' : 'true'"
|
|
7
|
+
:aria-label="ariaLabel"
|
|
5
8
|
class="tw-bg-black tw-flex tw-items-center tw-justify-center tw-fixed tw-w-full tw-h-full tw-top-0 tw-left-0 tw-z-50"
|
|
6
9
|
:class="{
|
|
7
10
|
'tw-px-4': fullScreenBreakpoint === undefined && !isImageMode,
|
|
@@ -47,6 +50,7 @@
|
|
|
47
50
|
v-if="!mandatory"
|
|
48
51
|
class="tw-absolute tw-right-0 tw-top-0 tw-border-none tw-text-secondary-500 tw-appearance-none tw-bg-transparent tw-p-0 tw-w-8 tw-h-8 tw-ml-auto tw-cursor-pointer"
|
|
49
52
|
data-test-modal-close-btn
|
|
53
|
+
aria-label="Close"
|
|
50
54
|
@click="close($event)"
|
|
51
55
|
>
|
|
52
56
|
<span class="tw-sr-only">Close modal</span>
|
|
@@ -161,6 +165,11 @@ export default {
|
|
|
161
165
|
required: false,
|
|
162
166
|
default: false,
|
|
163
167
|
},
|
|
168
|
+
ariaLabel: {
|
|
169
|
+
type: String,
|
|
170
|
+
required: false,
|
|
171
|
+
default: undefined,
|
|
172
|
+
},
|
|
164
173
|
},
|
|
165
174
|
computed: {
|
|
166
175
|
isImageMode() {
|