@designcrowd/fe-shared-lib 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/css/tailwind-brandCrowd.css +59 -4
  2. package/dist/css/tailwind-brandPage.css +46 -3
  3. package/dist/css/tailwind-crazyDomains.css +59 -4
  4. package/dist/css/tailwind-designCom.css +59 -4
  5. package/dist/css/tailwind-designCrowd.css +59 -4
  6. package/package.json +1 -1
  7. package/src/atoms/components/Icon/Icon.stories.js +1 -0
  8. package/src/atoms/components/Icon/icons/select-all.vue +12 -4
  9. package/.claude/settings.local.json +0 -54
  10. package/.playwright-cli/page-2026-04-15T02-26-54-483Z.yml +0 -68
  11. package/.playwright-cli/page-2026-04-15T02-27-08-312Z.yml +0 -0
  12. package/.playwright-cli/page-2026-04-15T02-27-25-596Z.yml +0 -0
  13. package/.playwright-cli/page-2026-04-15T02-27-40-203Z.yml +0 -0
  14. package/.playwright-cli/page-2026-04-15T02-38-58-180Z.yml +0 -0
  15. package/.playwright-cli/page-2026-04-15T02-39-01-736Z.yml +0 -26
  16. package/.playwright-cli/page-2026-04-15T02-39-10-233Z.yml +0 -26
  17. package/.playwright-cli/page-2026-04-15T02-39-43-909Z.yml +0 -26
  18. package/.playwright-cli/page-2026-04-15T02-40-44-800Z.yml +0 -0
  19. package/.playwright-cli/page-2026-04-15T02-40-54-188Z.yml +0 -26
  20. package/.playwright-cli/page-2026-04-15T02-40-59-031Z.yml +0 -26
  21. package/.playwright-cli/page-2026-04-15T02-51-07-111Z.yml +0 -0
  22. package/.playwright-cli/page-2026-04-15T02-51-10-941Z.yml +0 -26
  23. package/.playwright-cli/page-2026-04-15T02-51-17-020Z.yml +0 -26
  24. package/.playwright-cli/page-2026-04-15T02-51-42-403Z.yml +0 -2
  25. package/.playwright-cli/page-2026-04-15T02-51-53-552Z.yml +0 -26
  26. package/.playwright-cli/page-2026-04-15T02-51-54-631Z.yml +0 -26
  27. package/.playwright-cli/page-2026-04-15T02-52-16-170Z.yml +0 -26
  28. package/.playwright-cli/page-2026-04-15T02-52-17-246Z.yml +0 -26
  29. package/.playwright-cli/page-2026-04-15T02-52-28-472Z.yml +0 -26
  30. package/.playwright-cli/page-2026-04-15T02-53-15-507Z.yml +0 -0
  31. package/.playwright-cli/page-2026-04-15T02-53-16-554Z.yml +0 -26
  32. package/.playwright-cli/page-2026-04-15T02-53-22-178Z.yml +0 -26
  33. package/.playwright-cli/page-2026-04-15T02-53-34-973Z.yml +0 -26
  34. package/.playwright-cli/page-2026-04-15T06-15-29-589Z.yml +0 -68
  35. package/.playwright-cli/page-2026-04-15T06-15-41-114Z.yml +0 -68
  36. package/.storybook-static/assets/Auth-DT64t5h-.css +0 -1
  37. package/.storybook-static/assets/Auth.stories-C6eXcTSu.js +0 -490
  38. package/.storybook-static/assets/AuthCrazyDomains.stories-DGvEoWCa.js +0 -73
  39. package/.storybook-static/assets/Button-5UzSGUF6.css +0 -1
  40. package/.storybook-static/assets/Button-DKdQT6Fq.js +0 -1
  41. package/.storybook-static/assets/ButtonGroup-DDPXuhxR.css +0 -1
  42. package/.storybook-static/assets/ButtonGroup.stories-DlrYMRSk.js +0 -504
  43. package/.storybook-static/assets/ButtonPrimary-Bu6bXb_c.css +0 -1
  44. package/.storybook-static/assets/ButtonPrimary-BvWW6Duz.js +0 -1
  45. package/.storybook-static/assets/Buttons.stories-CKmd6hkZ.js +0 -761
  46. package/.storybook-static/assets/ButtonsCrazyDomains.stories-DdEuOUrn.js +0 -199
  47. package/.storybook-static/assets/Checkbox.mixin-DkHpdvGa.js +0 -1
  48. package/.storybook-static/assets/Checkbox.stories-DPBUC2Mx.js +0 -246
  49. package/.storybook-static/assets/Checktile.stories-ByaFwplD.js +0 -88
  50. package/.storybook-static/assets/CollapsiblePanel.stories-Y6q3gP9j.js +0 -56
  51. package/.storybook-static/assets/ColorPicker.stories-DdxPUB_R.js +0 -73
  52. package/.storybook-static/assets/CopyToClipboardText.stories-J9qndWxd.js +0 -32
  53. package/.storybook-static/assets/Dropdown.stories-1zKPATii.js +0 -159
  54. package/.storybook-static/assets/DropdownItem-BV-BdThU.css +0 -1
  55. package/.storybook-static/assets/DropdownItem-DA6TdpDb.js +0 -1
  56. package/.storybook-static/assets/FormControl.mixin-DcEBwrV3.js +0 -1
  57. package/.storybook-static/assets/HashRouteModal.stories-BGxvqE22.js +0 -60
  58. package/.storybook-static/assets/HelloBar-CYEZR2kQ.js +0 -1
  59. package/.storybook-static/assets/HelloBar.stories-597Kxj0W.js +0 -342
  60. package/.storybook-static/assets/Icon-C17LFvsP.js +0 -145
  61. package/.storybook-static/assets/Icon.stories-B9iAmcTU.js +0 -151
  62. package/.storybook-static/assets/Icon.stories-CR5vT9H7.js +0 -791
  63. package/.storybook-static/assets/Loader-BWGoT_xC.js +0 -1
  64. package/.storybook-static/assets/LogoBusinessBrandColours-CExzox1Z.js +0 -1
  65. package/.storybook-static/assets/LogoBusinessBrandColours-CeAaMKke.css +0 -1
  66. package/.storybook-static/assets/LogoBusinessBrandColours.stories-kuxAH8B8.js +0 -36
  67. package/.storybook-static/assets/Masonry-C2MNiGg0.css +0 -1
  68. package/.storybook-static/assets/Masonry.stories-CTXJLQ_i.js +0 -71
  69. package/.storybook-static/assets/Modal-CGwEIF5R.css +0 -1
  70. package/.storybook-static/assets/Modal-CydTNprT.js +0 -1
  71. package/.storybook-static/assets/Modal.stories-DZiG5NGM.js +0 -345
  72. package/.storybook-static/assets/Notice.stories-ChOj8CWm.js +0 -222
  73. package/.storybook-static/assets/NumberStepper-Blffv09R.css +0 -1
  74. package/.storybook-static/assets/NumberStepper.stories-CVbKJ_oJ.js +0 -64
  75. package/.storybook-static/assets/PaymentConfigList-BpUMV6cp.css +0 -1
  76. package/.storybook-static/assets/PaymentConfigList.stories-DUD7OZBS.js +0 -130
  77. package/.storybook-static/assets/Picture-B8m1I9xN.js +0 -1
  78. package/.storybook-static/assets/Picture.stories-MMzybhJ6.js +0 -119
  79. package/.storybook-static/assets/Pill-DLXZ_TL8.js +0 -1
  80. package/.storybook-static/assets/Pill.stories-DCP7szJm.js +0 -18
  81. package/.storybook-static/assets/PillBar-os4mJV3M.css +0 -1
  82. package/.storybook-static/assets/PillBar.stories-Bry-zQ6f.js +0 -41
  83. package/.storybook-static/assets/Price-C4GZbDSa.js +0 -1
  84. package/.storybook-static/assets/Price.stories-CMHly9V0.js +0 -337
  85. package/.storybook-static/assets/PromoCard.stories-xsbFtADE.js +0 -299
  86. package/.storybook-static/assets/PublishBrandPageModal-Q9-mNG1q.css +0 -1
  87. package/.storybook-static/assets/PublishBrandPageModal.stories-C9XzW_1m.js +0 -324
  88. package/.storybook-static/assets/SearchBar.stories-DaIneOSz.js +0 -12
  89. package/.storybook-static/assets/Select-DnioWQmi.css +0 -1
  90. package/.storybook-static/assets/Select.stories-BmGYB4pw.js +0 -108
  91. package/.storybook-static/assets/SellDomainNameList.fixtures-LC6fjr_b.js +0 -1
  92. package/.storybook-static/assets/SellDomainNameListModal-DH6khE10.css +0 -1
  93. package/.storybook-static/assets/SellDomainNameListModal-ymtVclFP.js +0 -1
  94. package/.storybook-static/assets/SellDomainNameListModal.stories-DvGvylgx.js +0 -71
  95. package/.storybook-static/assets/SellDomainNameListSearchResult-Cpxq0jDA.css +0 -1
  96. package/.storybook-static/assets/SellDomainNameListSearchResult-D-1CrQyf.js +0 -1
  97. package/.storybook-static/assets/SellDomainNameSearchWithResults-bX--zu97.js +0 -1
  98. package/.storybook-static/assets/SellDomainNameSearchWithResults.stories-DRUJjSdH.js +0 -37
  99. package/.storybook-static/assets/SellDomainNameWidget.stories-CC3LX10s.js +0 -36
  100. package/.storybook-static/assets/SignIn-CPjf8_2O.css +0 -1
  101. package/.storybook-static/assets/SignIn-DI0DSDFe.js +0 -1
  102. package/.storybook-static/assets/Slider-Cog2FFdj.css +0 -1
  103. package/.storybook-static/assets/Slider.stories-B2KGwnJy.js +0 -141
  104. package/.storybook-static/assets/SparkleIcon.stories-Dk904hVE.js +0 -547
  105. package/.storybook-static/assets/StarRating-BtKh7pzm.css +0 -1
  106. package/.storybook-static/assets/StarRating.stories-d2mgOuo2.js +0 -45
  107. package/.storybook-static/assets/TabMenu.stories-Cg2yenqj.js +0 -47
  108. package/.storybook-static/assets/TextCopyField-B66NKTk_.js +0 -1
  109. package/.storybook-static/assets/TextCopyField.stories-B4_ZlfLU.js +0 -47
  110. package/.storybook-static/assets/TextInput-CMoUjT_5.js +0 -1
  111. package/.storybook-static/assets/TextInput.stories-oyyxxf3j.js +0 -233
  112. package/.storybook-static/assets/Textarea.stories-BvhZR6K2.js +0 -207
  113. package/.storybook-static/assets/Toggle.stories-yT5-rL2k.js +0 -161
  114. package/.storybook-static/assets/Tooltip-DyXIgFQH.css +0 -1
  115. package/.storybook-static/assets/Tooltip-ZukyujG5.js +0 -1
  116. package/.storybook-static/assets/Tooltip.stories-sJFylRS_.js +0 -953
  117. package/.storybook-static/assets/UploadYourLogoApplication-Dmw8QcH3.css +0 -1
  118. package/.storybook-static/assets/UploadYourLogoApplication.stories-C9AvzHO_.js +0 -186
  119. package/.storybook-static/assets/UploadYourLogoDropzone-B1ffcicv.js +0 -24
  120. package/.storybook-static/assets/UploadYourLogoDropzone-DQqACf-e.css +0 -1
  121. package/.storybook-static/assets/UploadYourLogoDropzone.stories-D1Dt2ord.js +0 -55
  122. package/.storybook-static/assets/UploadedLogoSearchResultCard.stories-D8oF1Yrx.js +0 -79
  123. package/.storybook-static/assets/WebsiteContextualUpgradeModal-8u1zOZrW.css +0 -1
  124. package/.storybook-static/assets/WebsiteContextualUpgradeModal.stories-mtcvWOAg.js +0 -211
  125. package/.storybook-static/assets/_commonjsHelpers-CE1G-McA.js +0 -1
  126. package/.storybook-static/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
  127. package/.storybook-static/assets/api-lSJGRrF2.js +0 -1
  128. package/.storybook-static/assets/axe-DrS73Vi2.js +0 -20
  129. package/.storybook-static/assets/brand-crowd-api.client-D45NKshX.js +0 -1
  130. package/.storybook-static/assets/bundled-translations-BoWhEDU_.js +0 -1
  131. package/.storybook-static/assets/bundled-translations.de-DE-C4lqla4O.js +0 -1
  132. package/.storybook-static/assets/bundled-translations.es-ES-BxMIllUH.js +0 -1
  133. package/.storybook-static/assets/bundled-translations.fr-CA-MxZpyz0w.js +0 -1
  134. package/.storybook-static/assets/bundled-translations.fr-FR-N7UPCZVr.js +0 -1
  135. package/.storybook-static/assets/bundled-translations.pt-BR-C8tscYuG.js +0 -1
  136. package/.storybook-static/assets/bundled-translations.pt-PT-Dszj5Xfa.js +0 -1
  137. package/.storybook-static/assets/carousel-BelyIYOK.css +0 -1
  138. package/.storybook-static/assets/carousel.stories-CJw3-Iy6.js +0 -668
  139. package/.storybook-static/assets/event-constants-CMO9VQVu.js +0 -1
  140. package/.storybook-static/assets/iframe-B3A6OXQU.js +0 -1104
  141. package/.storybook-static/assets/index-B-eiLVzF.js +0 -7
  142. package/.storybook-static/assets/index-QquxUozE.js +0 -6
  143. package/.storybook-static/assets/matchers-5TDFFDYO-HJu_DfWo.js +0 -14
  144. package/.storybook-static/assets/mediaQueryMixin-CISNqd93.js +0 -1
  145. package/.storybook-static/assets/preload-helper-PPVm8Dsz.js +0 -1
  146. package/.storybook-static/assets/tracking-ATsLLehC.js +0 -1
  147. package/.storybook-static/css/tailwind-brandCrowd.css +0 -2508
  148. package/.storybook-static/css/tailwind-brandPage.css +0 -2188
  149. package/.storybook-static/css/tailwind-crazyDomains.css +0 -2508
  150. package/.storybook-static/css/tailwind-designCom.css +0 -2508
  151. package/.storybook-static/css/tailwind-designCrowd.css +0 -2508
  152. package/.storybook-static/favicon-wrapper.svg +0 -46
  153. package/.storybook-static/favicon.svg +0 -1
  154. package/.storybook-static/iframe.html +0 -713
  155. package/.storybook-static/index.html +0 -148
  156. package/.storybook-static/index.json +0 -1
  157. package/.storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  158. package/.storybook-static/nunito-sans-bold.woff2 +0 -0
  159. package/.storybook-static/nunito-sans-italic.woff2 +0 -0
  160. package/.storybook-static/nunito-sans-regular.woff2 +0 -0
  161. package/.storybook-static/project.json +0 -1
  162. package/.storybook-static/sb-addons/a11y-1/manager-bundle.js +0 -57
  163. package/.storybook-static/sb-addons/links-2/manager-bundle.js +0 -3
  164. package/.storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +0 -628
  165. package/.storybook-static/sb-addons/themes-3/manager-bundle.js +0 -3
  166. package/.storybook-static/sb-common-assets/favicon-wrapper.svg +0 -46
  167. package/.storybook-static/sb-common-assets/favicon.svg +0 -1
  168. package/.storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  169. package/.storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  170. package/.storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  171. package/.storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  172. package/.storybook-static/sb-manager/globals-runtime.js +0 -77935
  173. package/.storybook-static/sb-manager/globals.js +0 -24
  174. package/.storybook-static/sb-manager/manager-stores.js +0 -23
  175. package/.storybook-static/sb-manager/runtime.js +0 -20404
  176. package/.storybook-static/vite-inject-mocker-entry.js +0 -2
  177. package/docs/voice-to-text-discussion-attachments/Screenshot 2026-04-15 at 11.44.18/342/200/257am.png +0 -0
  178. package/docs/voice-to-text-discussion-attachments/image.png +0 -0
  179. package/docs/voice-to-text-discussion-attachments/image_1.png +0 -0
  180. package/docs/voice-to-text-discussion-attachments/image_2.png +0 -0
  181. package/docs/voice-to-text-discussion-attachments/image_3.png +0 -0
  182. package/docs/voice-to-text-discussion-attachments/image_4.png +0 -0
  183. package/docs/voice-to-text-discussion.md +0 -330
  184. package/public/css/tailwind-brandCrowd.css +0 -2563
  185. package/public/css/tailwind-brandPage.css +0 -2231
  186. package/public/css/tailwind-crazyDomains.css +0 -2563
  187. package/public/css/tailwind-designCom.css +0 -2563
  188. package/public/css/tailwind-designCrowd.css +0 -2563
@@ -1,2 +0,0 @@
1
- import{_ as ke}from"./assets/preload-helper-PPVm8Dsz.js";var O={client:!0},ae=class{registryByUrl=new Map;registryById=new Map;clear(){this.registryByUrl.clear(),this.registryById.clear()}keys(){return this.registryByUrl.keys()}add(e){this.registryByUrl.set(e.url,e),this.registryById.set(e.id,e)}register(e,r,t,n,i){let a=typeof e=="object"?e.type:e;if(typeof e=="object"){let o=e;if(o instanceof X||o instanceof q||o instanceof W||o instanceof F)throw new TypeError(`[vitest] Cannot register a mock that is already defined. Expected a JSON representation from \`MockedModule.toJSON\`, instead got "${o.type}". Use "registry.add()" to update a mock instead.`);if(o.type==="automock"){let s=X.fromJSON(o);return this.add(s),s}else if(o.type==="autospy"){let s=q.fromJSON(o);return this.add(s),s}else if(o.type==="redirect"){let s=F.fromJSON(o);return this.add(s),s}else throw o.type==="manual"?new Error("Cannot set serialized manual mock. Define a factory function manually with `ManualMockedModule.fromJSON()`."):new Error(`Unknown mock type: ${o.type}`)}if(typeof r!="string")throw new TypeError("[vitest] Mocks require a raw string.");if(typeof n!="string")throw new TypeError("[vitest] Mocks require a url string.");if(typeof t!="string")throw new TypeError("[vitest] Mocks require an id string.");if(a==="manual"){if(typeof i!="function")throw new TypeError("[vitest] Manual mocks require a factory function.");let o=new W(r,t,n,i);return this.add(o),o}else if(a==="automock"||a==="autospy"){let o=a==="automock"?new X(r,t,n):new q(r,t,n);return this.add(o),o}else if(a==="redirect"){if(typeof i!="string")throw new TypeError("[vitest] Redirect mocks require a redirect string.");let o=new F(r,t,n,i);return this.add(o),o}else throw new Error(`[vitest] Unknown mock type: ${a}`)}delete(e){this.registryByUrl.delete(e)}get(e){return this.registryByUrl.get(e)}getById(e){return this.registryById.get(e)}has(e){return this.registryByUrl.has(e)}},X=class{type="automock";constructor(e,r,t){this.raw=e,this.id=r,this.url=t}static fromJSON(e){return new q(e.raw,e.id,e.url)}toJSON(){return{type:this.type,url:this.url,raw:this.raw,id:this.id}}},q=class le{type="autospy";constructor(r,t,n){this.raw=r,this.id=t,this.url=n}static fromJSON(r){return new le(r.raw,r.id,r.url)}toJSON(){return{type:this.type,url:this.url,id:this.id,raw:this.raw}}},F=class ce{type="redirect";constructor(r,t,n,i){this.raw=r,this.id=t,this.url=n,this.redirect=i}static fromJSON(r){return new ce(r.raw,r.id,r.url,r.redirect)}toJSON(){return{type:this.type,url:this.url,raw:this.raw,id:this.id,redirect:this.redirect}}},W=class ue{cache;type="manual";constructor(r,t,n,i){this.raw=r,this.id=t,this.url=n,this.factory=i}async resolve(){if(this.cache)return this.cache;let r;try{r=await this.factory()}catch(t){let n=new Error('[vitest] There was an error when mocking a module. If you are using "vi.mock" factory, make sure there are no top level variables inside, since this call is hoisted to top of the file. Read more: https://vitest.dev/api/vi.html#vi-mock');throw n.cause=t,n}if(r===null||typeof r!="object"||Array.isArray(r))throw new TypeError(`[vitest] vi.mock("${this.raw}", factory?: () => unknown) is not returning an object. Did you mean to return an object with a "default" key?`);return this.cache=r}static fromJSON(r,t){return new ue(r.raw,r.id,r.url,t)}toJSON(){return{type:this.type,url:this.url,id:this.id,raw:this.raw}}};function we(e,r,t={}){let n=new Array,i=new Se,a=(u,d,y)=>{try{return u[d]=y,!0}catch{return!1}},o=(u,d)=>{let y=D(u),g=y==="Module"||!!u.__esModule;for(let{key:m,descriptor:I}of Y(u,g,e.globalConstructors)){if(!g&&I.get){try{Object.defineProperty(d,m,I)}catch{}continue}if(_e(m,y))continue;let v=u[m],l=i.getId(v);if(l!==void 0){n.push(()=>a(d,m,i.getMockedValue(l)));continue}let c=D(v);if(Array.isArray(v)){a(d,m,[]);continue}let x=c.includes("Function")&&typeof v=="function";if((!x||v._isMockFunction)&&c!=="Object"&&c!=="Module"){a(d,m,v);continue}if(a(d,m,x?v:{})){if(x){let R=function(){if(this instanceof d[m])for(let{key:b,descriptor:$}of Y(this,!1,e.globalConstructors)){if($.get)continue;let C=this[b];if(D(C).includes("Function")&&typeof C=="function"){let p=this[b],h=_(this,b).mockImplementation(p),B=h.mockReset;h.mockRestore=h.mockReset=()=>(B.call(h),h.mockImplementation(p),h)}}};if(!e.spyOn)throw new Error("[@vitest/mocker] `spyOn` is not defined. This is a Vitest error. Please open a new issue with reproduction.");let _=e.spyOn,M=_(d,m);if(e.type==="automock"){M.mockImplementation(R);let b=M.mockReset;M.mockRestore=M.mockReset=()=>(b.call(M),M.mockImplementation(R),M)}Object.defineProperty(d[m],"length",{value:0})}i.track(v,d[m]),o(v,d[m])}}},s=t;o(r,s);for(let u of n)u();return s}var Se=class{idMap=new Map;mockedValueMap=new Map;getId(e){return this.idMap.get(e)}getMockedValue(e){return this.mockedValueMap.get(e)}track(e,r){let t=this.idMap.size;return this.idMap.set(e,t),this.mockedValueMap.set(t,r),t}};function D(e){return Object.prototype.toString.apply(e).slice(8,-1)}function _e(e,r){return r.includes("Function")&&typeof e=="string"&&["arguments","callee","caller","length","name"].includes(e)}function Y(e,r,t){let{Map:n,Object:i,Function:a,RegExp:o,Array:s}=t,u=new n,d=e;do{if(d===i.prototype||d===a.prototype||d===o.prototype)break;Ee(d,y=>{let g=i.getOwnPropertyDescriptor(d,y);g&&u.set(y,{key:y,descriptor:g})})}while(d=i.getPrototypeOf(d));if(r&&!u.has("default")&&"default"in e){let y=i.getOwnPropertyDescriptor(e,"default");y&&u.set("default",{key:"default",descriptor:y})}return s.from(u.values())}function Ee(e,r){let t=typeof r=="function"?r:n=>r.add(n);Object.getOwnPropertyNames(e).forEach(t),Object.getOwnPropertySymbols(e).forEach(t)}var Ie=/^[A-Za-z]:\//;function fe(e=""){return e&&e.replace(/\\/g,"/").replace(Ie,r=>r.toUpperCase())}var be=/^[/\\]{2}/,xe=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,Te=/^[A-Za-z]:$/,Me=/.(\.[^./]+|\.)$/,Pe=function(e){if(e.length===0)return".";e=fe(e);let r=e.match(be),t=K(e),n=e[e.length-1]==="/";return e=$e(e,!t),e.length===0?t?"/":n?"./":".":(n&&(e+="/"),Te.test(e)&&(e+="/"),r?t?`//${e}`:`//./${e}`:t&&!K(e)?`/${e}`:e)},Re=function(...e){let r="";for(let t of e)if(t)if(r.length>0){let n=r[r.length-1]==="/",i=t[0]==="/";n&&i?r+=t.slice(1):r+=n||i?t:`/${t}`}else r+=t;return Pe(r)};function $e(e,r){let t="",n=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else{if(o==="/")break;o="/"}if(o==="/"){if(!(i===s-1||a===1))if(a===2){if(t.length<2||n!==2||t[t.length-1]!=="."||t[t.length-2]!=="."){if(t.length>2){let u=t.lastIndexOf("/");u===-1?(t="",n=0):(t=t.slice(0,u),n=t.length-1-t.lastIndexOf("/")),i=s,a=0;continue}else if(t.length>0){t="",n=0,i=s,a=0;continue}}r&&(t+=t.length>0?"/..":"..",n=2)}else t.length>0?t+=`/${e.slice(i+1,s)}`:t=e.slice(i+1,s),n=s-i-1;i=s,a=0}else o==="."&&a!==-1?++a:a=-1}return t}var K=function(e){return xe.test(e)},Ae=function(e){if(e==="..")return"";let r=Me.exec(fe(e));return r&&r[1]||""},Oe={reset:[0,0],bold:[1,22,"\x1B[22m\x1B[1m"],dim:[2,22,"\x1B[22m\x1B[2m"],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]},Ce=Object.entries(Oe);function j(e){return String(e)}j.open="";j.close="";function Ne(e=!1){let r=typeof O<"u"?O:void 0,t=r?.env||{},n=r?.argv||[];return!("NO_COLOR"in t||n.includes("--no-color"))&&("FORCE_COLOR"in t||n.includes("--color")||r?.platform==="win32"||e&&t.TERM!=="dumb"||"CI"in t)||typeof window<"u"&&!!window.chrome}function Le(e=!1){let r=Ne(e),t=(o,s,u,d)=>{let y="",g=0;do y+=o.substring(g,d)+u,g=d+s.length,d=o.indexOf(s,g);while(~d);return y+o.substring(g)},n=(o,s,u=o)=>{let d=y=>{let g=String(y),m=g.indexOf(s,o.length);return~m?o+t(g,s,u,m)+s:o+g+s};return d.open=o,d.close=s,d},i={isColorSupported:r},a=o=>`\x1B[${o}m`;for(let[o,s]of Ce)i[o]=r?n(a(s[0]),a(s[1]),s[2]):j;return i}Le();function de(e,r){return r.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(n){if(n!=="default"&&!(n in e)){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})}})}),Object.freeze(e)}function pe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H={exports:{}},w={},Z;function Je(){if(Z)return w;Z=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),y=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),m=Symbol.for("react.view_transition"),I=Symbol.for("react.client.reference");function v(l){if(typeof l=="object"&&l!==null){var c=l.$$typeof;switch(c){case e:switch(l=l.type,l){case t:case i:case n:case u:case d:case m:return l;default:switch(l=l&&l.$$typeof,l){case o:case s:case g:case y:return l;case a:return l;default:return c}}case r:return c}}}return w.ContextConsumer=a,w.ContextProvider=o,w.Element=e,w.ForwardRef=s,w.Fragment=t,w.Lazy=g,w.Memo=y,w.Portal=r,w.Profiler=i,w.StrictMode=n,w.Suspense=u,w.SuspenseList=d,w.isContextConsumer=function(l){return v(l)===a},w.isContextProvider=function(l){return v(l)===o},w.isElement=function(l){return typeof l=="object"&&l!==null&&l.$$typeof===e},w.isForwardRef=function(l){return v(l)===s},w.isFragment=function(l){return v(l)===t},w.isLazy=function(l){return v(l)===g},w.isMemo=function(l){return v(l)===y},w.isPortal=function(l){return v(l)===r},w.isProfiler=function(l){return v(l)===i},w.isStrictMode=function(l){return v(l)===n},w.isSuspense=function(l){return v(l)===u},w.isSuspenseList=function(l){return v(l)===d},w.isValidElementType=function(l){return typeof l=="string"||typeof l=="function"||l===t||l===i||l===n||l===u||l===d||typeof l=="object"&&l!==null&&(l.$$typeof===g||l.$$typeof===y||l.$$typeof===o||l.$$typeof===a||l.$$typeof===s||l.$$typeof===I||l.getModuleId!==void 0)},w.typeOf=v,w}var G;function Be(){return G||(G=1,H.exports=Je()),H.exports}var he=Be(),Xe=pe(he),qe=de({__proto__:null,default:Xe},[he]),Q={exports:{}},k={},ee;function Fe(){if(ee)return k;ee=1;var e=Symbol.for("react.element"),r=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),o=Symbol.for("react.context"),s=Symbol.for("react.server_context"),u=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),y=Symbol.for("react.suspense_list"),g=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),I=Symbol.for("react.offscreen"),v;v=Symbol.for("react.module.reference");function l(c){if(typeof c=="object"&&c!==null){var x=c.$$typeof;switch(x){case e:switch(c=c.type,c){case t:case i:case n:case d:case y:return c;default:switch(c=c&&c.$$typeof,c){case s:case o:case u:case m:case g:case a:return c;default:return x}}case r:return x}}}return k.ContextConsumer=o,k.ContextProvider=a,k.Element=e,k.ForwardRef=u,k.Fragment=t,k.Lazy=m,k.Memo=g,k.Portal=r,k.Profiler=i,k.StrictMode=n,k.Suspense=d,k.SuspenseList=y,k.isAsyncMode=function(){return!1},k.isConcurrentMode=function(){return!1},k.isContextConsumer=function(c){return l(c)===o},k.isContextProvider=function(c){return l(c)===a},k.isElement=function(c){return typeof c=="object"&&c!==null&&c.$$typeof===e},k.isForwardRef=function(c){return l(c)===u},k.isFragment=function(c){return l(c)===t},k.isLazy=function(c){return l(c)===m},k.isMemo=function(c){return l(c)===g},k.isPortal=function(c){return l(c)===r},k.isProfiler=function(c){return l(c)===i},k.isStrictMode=function(c){return l(c)===n},k.isSuspense=function(c){return l(c)===d},k.isSuspenseList=function(c){return l(c)===y},k.isValidElementType=function(c){return typeof c=="string"||typeof c=="function"||c===t||c===i||c===n||c===d||c===y||c===I||typeof c=="object"&&c!==null&&(c.$$typeof===m||c.$$typeof===g||c.$$typeof===a||c.$$typeof===o||c.$$typeof===u||c.$$typeof===v||c.getModuleId!==void 0)},k.typeOf=l,k}var te;function De(){return te||(te=1,Q.exports=Fe()),Q.exports}var ye=De(),Ue=pe(ye),ze=de({__proto__:null,default:Ue},[ye]),je=["isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","isValidElementType"];Object.fromEntries(je.map(e=>[e,r=>ze[e](r)||qe[e](r)]));var Ve=()=>"Promise{…}";try{let{getPromiseDetails:e,kPending:r,kRejected:t}=O.binding("util");Array.isArray(e(Promise.resolve()))&&(Ve=(n,i)=>{let[a,o]=e(n);return a===r?"Promise{<pending>}":`Promise${a===t?"!":""}{${i.inspect(o,i)}}`})}catch{}function We(e){let{message:r="$$stack trace error",stackTraceLimit:t=1}=e||{},n=Error.stackTraceLimit,i=Error.prepareStackTrace;Error.stackTraceLimit=t,Error.prepareStackTrace=o=>o.stack;let a=new Error(r).stack||"";return Error.prepareStackTrace=i,Error.stackTraceLimit=n,a}var U,re;function Ye(){if(re)return U;re=1;var e,r,t,n,i,a,o,s,u,d,y,g,m,I,v,l,c,x,R;return m=/\/(?![*\/])(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\\]).|\\.)*(\/[$_\u200C\u200D\p{ID_Continue}]*|\\)?/uy,g=/--|\+\+|=>|\.{3}|\??\.(?!\d)|(?:&&|\|\||\?\?|[+\-%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2}|\/(?![\/*]))=?|[?~,:;[\](){}]/y,e=/(\x23?)(?=[$_\p{ID_Start}\\])(?:[$_\u200C\u200D\p{ID_Continue}]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+/uy,v=/(['"])(?:(?!\1)[^\\\n\r]|\\(?:\r\n|[^]))*(\1)?/y,y=/(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|0n|[1-9](?:_?\d)*n|(?:(?:0(?!\d)|0\d*[89]\d*|[1-9](?:_?\d)*)(?:\.(?:\d(?:_?\d)*)?)?|\.\d(?:_?\d)*)(?:[eE][+-]?\d(?:_?\d)*)?|0[0-7]+/y,l=/[`}](?:[^`\\$]|\\[^]|\$(?!\{))*(`|\$\{)?/y,R=/[\t\v\f\ufeff\p{Zs}]+/uy,s=/\r?\n|[\r\u2028\u2029]/y,u=/\/\*(?:[^*]|\*(?!\/))*(\*\/)?/y,I=/\/\/.*/y,t=/[<>.:={}]|\/(?![\/*])/y,r=/[$_\p{ID_Start}][$_\u200C\u200D\p{ID_Continue}-]*/uy,n=/(['"])(?:(?!\1)[^])*(\1)?/y,i=/[^<>{}]+/y,x=/^(?:[\/+-]|\.{3}|\?(?:InterpolationIn(?:JSX|Template)|NoLineTerminatorHere|NonExpressionParenEnd|UnaryIncDec))?$|[{}([,;<>=*%&|^!~?:]$/,c=/^(?:=>|[;\]){}]|else|\?(?:NoLineTerminatorHere|NonExpressionParenEnd))?$/,a=/^(?:await|case|default|delete|do|else|instanceof|new|return|throw|typeof|void|yield)$/,o=/^(?:return|throw|yield)$/,d=RegExp(s.source),U=function*(_,{jsx:M=!1}={}){var b,$,C,p,h,B,f,P,V,T,N,S,L,E;for({length:B}=_,p=0,h="",E=[{tag:"JS"}],b=[],N=0,S=!1;p<B;){switch(P=E[E.length-1],P.tag){case"JS":case"JSNonExpressionParen":case"InterpolationInTemplate":case"InterpolationInJSX":if(_[p]==="/"&&(x.test(h)||a.test(h))&&(m.lastIndex=p,f=m.exec(_))){p=m.lastIndex,h=f[0],S=!0,yield{type:"RegularExpressionLiteral",value:f[0],closed:f[1]!==void 0&&f[1]!=="\\"};continue}if(g.lastIndex=p,f=g.exec(_)){switch(L=f[0],V=g.lastIndex,T=L,L){case"(":h==="?NonExpressionParenKeyword"&&E.push({tag:"JSNonExpressionParen",nesting:N}),N++,S=!1;break;case")":N--,S=!0,P.tag==="JSNonExpressionParen"&&N===P.nesting&&(E.pop(),T="?NonExpressionParenEnd",S=!1);break;case"{":g.lastIndex=0,C=!c.test(h)&&(x.test(h)||a.test(h)),b.push(C),S=!1;break;case"}":switch(P.tag){case"InterpolationInTemplate":if(b.length===P.nesting){l.lastIndex=p,f=l.exec(_),p=l.lastIndex,h=f[0],f[1]==="${"?(h="?InterpolationInTemplate",S=!1,yield{type:"TemplateMiddle",value:f[0]}):(E.pop(),S=!0,yield{type:"TemplateTail",value:f[0],closed:f[1]==="`"});continue}break;case"InterpolationInJSX":if(b.length===P.nesting){E.pop(),p+=1,h="}",yield{type:"JSXPunctuator",value:"}"};continue}}S=b.pop(),T=S?"?ExpressionBraceEnd":"}";break;case"]":S=!0;break;case"++":case"--":T=S?"?PostfixIncDec":"?UnaryIncDec";break;case"<":if(M&&(x.test(h)||a.test(h))){E.push({tag:"JSXTag"}),p+=1,h="<",yield{type:"JSXPunctuator",value:L};continue}S=!1;break;default:S=!1}p=V,h=T,yield{type:"Punctuator",value:L};continue}if(e.lastIndex=p,f=e.exec(_)){switch(p=e.lastIndex,T=f[0],f[0]){case"for":case"if":case"while":case"with":h!=="."&&h!=="?."&&(T="?NonExpressionParenKeyword")}h=T,S=!a.test(f[0]),yield{type:f[1]==="#"?"PrivateIdentifier":"IdentifierName",value:f[0]};continue}if(v.lastIndex=p,f=v.exec(_)){p=v.lastIndex,h=f[0],S=!0,yield{type:"StringLiteral",value:f[0],closed:f[2]!==void 0};continue}if(y.lastIndex=p,f=y.exec(_)){p=y.lastIndex,h=f[0],S=!0,yield{type:"NumericLiteral",value:f[0]};continue}if(l.lastIndex=p,f=l.exec(_)){p=l.lastIndex,h=f[0],f[1]==="${"?(h="?InterpolationInTemplate",E.push({tag:"InterpolationInTemplate",nesting:b.length}),S=!1,yield{type:"TemplateHead",value:f[0]}):(S=!0,yield{type:"NoSubstitutionTemplate",value:f[0],closed:f[1]==="`"});continue}break;case"JSXTag":case"JSXTagEnd":if(t.lastIndex=p,f=t.exec(_)){switch(p=t.lastIndex,T=f[0],f[0]){case"<":E.push({tag:"JSXTag"});break;case">":E.pop(),h==="/"||P.tag==="JSXTagEnd"?(T="?JSX",S=!0):E.push({tag:"JSXChildren"});break;case"{":E.push({tag:"InterpolationInJSX",nesting:b.length}),T="?InterpolationInJSX",S=!1;break;case"/":h==="<"&&(E.pop(),E[E.length-1].tag==="JSXChildren"&&E.pop(),E.push({tag:"JSXTagEnd"}))}h=T,yield{type:"JSXPunctuator",value:f[0]};continue}if(r.lastIndex=p,f=r.exec(_)){p=r.lastIndex,h=f[0],yield{type:"JSXIdentifier",value:f[0]};continue}if(n.lastIndex=p,f=n.exec(_)){p=n.lastIndex,h=f[0],yield{type:"JSXString",value:f[0],closed:f[2]!==void 0};continue}break;case"JSXChildren":if(i.lastIndex=p,f=i.exec(_)){p=i.lastIndex,h=f[0],yield{type:"JSXText",value:f[0]};continue}switch(_[p]){case"<":E.push({tag:"JSXTag"}),p++,h="<",yield{type:"JSXPunctuator",value:"<"};continue;case"{":E.push({tag:"InterpolationInJSX",nesting:b.length}),p++,h="?InterpolationInJSX",S=!1,yield{type:"JSXPunctuator",value:"{"};continue}}if(R.lastIndex=p,f=R.exec(_)){p=R.lastIndex,yield{type:"WhiteSpace",value:f[0]};continue}if(s.lastIndex=p,f=s.exec(_)){p=s.lastIndex,S=!1,o.test(h)&&(h="?NoLineTerminatorHere"),yield{type:"LineTerminatorSequence",value:f[0]};continue}if(u.lastIndex=p,f=u.exec(_)){p=u.lastIndex,d.test(f[0])&&(S=!1,o.test(h)&&(h="?NoLineTerminatorHere")),yield{type:"MultiLineComment",value:f[0],closed:f[1]!==void 0};continue}if(I.lastIndex=p,f=I.exec(_)){p=I.lastIndex,S=!1,yield{type:"SingleLineComment",value:f[0]};continue}$=String.fromCodePoint(_.codePointAt(p)),p+=$.length,h=$,S=!1,yield{type:P.tag.startsWith("JSX")?"JSXInvalid":"Invalid",value:$}}},U}Ye();var me={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"]};new Set(me.keyword);new Set(me.strict);var ne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ke=new Uint8Array(64),He=new Uint8Array(128);for(let e=0;e<ne.length;e++){let r=ne.charCodeAt(e);Ke[e]=r,He[r]=e}var ie;(function(e){e[e.Empty=1]="Empty",e[e.Hash=2]="Hash",e[e.Query=3]="Query",e[e.RelativePath=4]="RelativePath",e[e.AbsolutePath=5]="AbsolutePath",e[e.SchemeRelative=6]="SchemeRelative",e[e.Absolute=7]="Absolute"})(ie||(ie={}));var Ze=/^[A-Za-z]:\//;function Ge(e=""){return e&&e.replace(/\\/g,"/").replace(Ze,r=>r.toUpperCase())}var Qe=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;function et(){return typeof O<"u"&&typeof O.cwd=="function"?O.cwd().replace(/\\/g,"/"):"/"}var tt=function(...e){e=e.map(n=>Ge(n));let r="",t=!1;for(let n=e.length-1;n>=-1&&!t;n--){let i=n>=0?e[n]:et();!i||i.length===0||(r=`${i}/${r}`,t=oe(i))}return r=rt(r,!t),t&&!oe(r)?`/${r}`:r.length>0?r:"."};function rt(e,r){let t="",n=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else{if(o==="/")break;o="/"}if(o==="/"){if(!(i===s-1||a===1))if(a===2){if(t.length<2||n!==2||t[t.length-1]!=="."||t[t.length-2]!=="."){if(t.length>2){let u=t.lastIndexOf("/");u===-1?(t="",n=0):(t=t.slice(0,u),n=t.length-1-t.lastIndexOf("/")),i=s,a=0;continue}else if(t.length>0){t="",n=0,i=s,a=0;continue}}r&&(t+=t.length>0?"/..":"..",n=2)}else t.length>0?t+=`/${e.slice(i+1,s)}`:t=e.slice(i+1,s),n=s-i-1;i=s,a=0}else o==="."&&a!==-1?++a:a=-1}return t}var oe=function(e){return Qe.test(e)},ge=/^\s*at .*(?:\S:\d+|\(native\))/m,nt=/^(?:eval@)?(?:\[native code\])?$/;function ve(e){if(!e.includes(":"))return[e];let r=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/^\(|\)$/g,""));if(!r)return[e];let t=r[1];if(t.startsWith("async ")&&(t=t.slice(6)),t.startsWith("http:")||t.startsWith("https:")){let n=new URL(t);n.searchParams.delete("import"),n.searchParams.delete("browserv"),t=n.pathname+n.hash+n.search}if(t.startsWith("/@fs/")){let n=/^\/@fs\/[a-zA-Z]:\//.test(t);t=t.slice(n?5:4)}return[t,r[2]||void 0,r[3]||void 0]}function it(e){let r=e.trim();if(nt.test(r)||(r.includes(" > eval")&&(r=r.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),!r.includes("@")&&!r.includes(":")))return null;let t=/((.*".+"[^@]*)?[^@]*)(@)/,n=r.match(t),i=n&&n[1]?n[1]:void 0,[a,o,s]=ve(r.replace(t,""));return!a||!o||!s?null:{file:a,method:i||"",line:Number.parseInt(o),column:Number.parseInt(s)}}function ot(e){let r=e.trim();return ge.test(r)?st(r):it(r)}function st(e){let r=e.trim();if(!ge.test(r))return null;r.includes("(eval ")&&(r=r.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));let t=r.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),n=t.match(/ (\(.+\)$)/);t=n?t.replace(n[0],""):t;let[i,a,o]=ve(n?n[1]:t),s=n&&t||"",u=i&&["eval","<anonymous>"].includes(i)?void 0:i;return!u||!a||!o?null:(s.startsWith("async ")&&(s=s.slice(6)),u.startsWith("file://")&&(u=u.slice(7)),u=u.startsWith("node:")||u.startsWith("internal:")?u:tt(u),s&&(s=s.replace(/__vite_ssr_import_\d+__\./g,"")),{method:s,file:u,line:Number.parseInt(a),column:Number.parseInt(o)})}function at(e){let r=e?.globalThisKey;function t(){return typeof globalThis[r]<"u"?globalThis[r]:new Proxy({},{get(n,i){throw new Error(`Vitest mocker was not initialized in this environment. vi.${String(i)}() is forbidden.`)}})}return{hoisted(n){if(typeof n!="function")throw new TypeError(`vi.hoisted() expects a function, but received a ${typeof n}`);return n()},mock(n,i){if(typeof n!="string")throw new TypeError(`vi.mock() expects a string path, but received a ${typeof n}`);let a=A("mock");t().queueMock(n,a,typeof i=="function"?()=>i(()=>t().importActual(n,a)):i)},unmock(n){if(typeof n!="string")throw new TypeError(`vi.unmock() expects a string path, but received a ${typeof n}`);t().queueUnmock(n,A("unmock"))},doMock(n,i){if(typeof n!="string")throw new TypeError(`vi.doMock() expects a string path, but received a ${typeof n}`);let a=A("doMock");t().queueMock(n,a,typeof i=="function"?()=>i(()=>t().importActual(n,a)):i)},doUnmock(n){if(typeof n!="string")throw new TypeError(`vi.doUnmock() expects a string path, but received a ${typeof n}`);t().queueUnmock(n,A("doUnmock"))},async importActual(n){return t().importActual(n,A("importActual"))},async importMock(n){return t().importMock(n,A("importMock"))}}}function A(e){let r=We({stackTraceLimit:5}).split(`
2
- `),t=r.findIndex(i=>i.includes(` at Object.${e}`)||i.includes(`${e}@`));return ot(r[t+1])?.file||""}var{now:se}=Date,lt=class{registry=new ae;queue=new Set;mockedIds=new Set;constructor(e,r,t,n){this.interceptor=e,this.rpc=r,this.spyOn=t,this.config=n}async prepare(){this.queue.size&&await Promise.all([...this.queue.values()])}async resolveFactoryModule(e){let r=this.registry.get(e);if(!r||r.type!=="manual")throw new Error(`Mock ${e} wasn't registered. This is probably a Vitest error. Please, open a new issue with reproduction.`);return await r.resolve()}getFactoryModule(e){let r=this.registry.get(e);if(!r||r.type!=="manual")throw new Error(`Mock ${e} wasn't registered. This is probably a Vitest error. Please, open a new issue with reproduction.`);if(!r.cache)throw new Error(`Mock ${e} wasn't resolved. This is probably a Vitest error. Please, open a new issue with reproduction.`);return r.cache}async invalidate(){let e=Array.from(this.mockedIds);e.length&&(await this.rpc.invalidate(e),await this.interceptor.invalidate(),this.registry.clear())}async importActual(e,r){let t=await this.rpc.resolveId(e,r);if(t==null)throw new Error(`[vitest] Cannot resolve "${e}" imported from "${r}"`);let n=Ae(t.id),i=new URL(t.url,location.href),a=`_vitest_original&ext${n}`,o=`${i.pathname}${i.search?`${i.search}&${a}`:`?${a}`}${i.hash}`;return this.wrapDynamicImport(()=>import(o)).then(s=>{if(!t.optimized||typeof s.default>"u")return s;let u=s.default;return u?.__esModule?u:{...typeof u=="object"&&!Array.isArray(u)||typeof u=="function"?u:{},default:u}})}async importMock(e,r){await this.prepare();let{resolvedId:t,resolvedUrl:n,redirectUrl:i}=await this.rpc.resolveMock(e,r,{mock:"auto"}),a=this.resolveMockPath(J(n)),o=this.registry.get(a);if(!o)if(i){let s=new URL(this.resolveMockPath(J(i)),location.href).toString();o=new F(e,t,a,s)}else o=new X(e,t,a);if(o.type==="manual")return await o.resolve();if(o.type==="automock"||o.type==="autospy"){let s=new URL(`/@id/${t}`,location.href),u=s.search?`${s.search}&t=${se()}`:`?t=${se()}`,d=await ke(()=>import(`${s.pathname}${u}&mock=${o.type}${s.hash}`),[],import.meta.url);return this.mockObject(d,o.type)}return import(o.redirect)}mockObject(e,r="automock"){return we({globalConstructors:{Object,Function,Array,Map,RegExp},spyOn:this.spyOn,type:r},e)}queueMock(e,r,t){let n=this.rpc.resolveMock(e,r,{mock:typeof t=="function"?"factory":t?.spy?"spy":"auto"}).then(async({redirectUrl:i,resolvedId:a,resolvedUrl:o,needsInterop:s,mockType:u})=>{let d=this.resolveMockPath(J(o));this.mockedIds.add(a);let y=typeof t=="function"?async()=>{let I=await t();return s?{default:I}:I}:void 0,g=typeof i=="string"?new URL(this.resolveMockPath(J(i)),location.href).toString():null,m;u==="manual"?m=this.registry.register("manual",e,a,d,y):u==="autospy"?m=this.registry.register("autospy",e,a,d):u==="redirect"?m=this.registry.register("redirect",e,a,d,g):m=this.registry.register("automock",e,a,d),await this.interceptor.register(m)}).finally(()=>{this.queue.delete(n)});this.queue.add(n)}queueUnmock(e,r){let t=this.rpc.resolveId(e,r).then(async n=>{if(!n)return;let i=this.resolveMockPath(J(n.url));this.mockedIds.add(n.id),this.registry.delete(i),await this.interceptor.delete(i)}).finally(()=>{this.queue.delete(t)});this.queue.add(t)}wrapDynamicImport(e){return typeof e=="function"?new Promise((r,t)=>{this.prepare().finally(()=>{e().then(r,t)})}):e}resolveMockPath(e){let r=this.config,t=Re("/@fs/",r.root);return e.startsWith(r.root)?e.slice(r.root.length):e.startsWith(t)?e.slice(t.length):e}},ct=/(\?|&)v=\w{8}/;function J(e){return e.replace(ct,"")}var ut=class{mocks=new ae;constructor(){}async register(e){this.mocks.add(e)}async delete(e){this.mocks.delete(e)}async invalidate(){this.mocks.clear()}},z=e=>{switch(e){case"resolveId":return Promise.resolve({id:"",url:"",optimized:!1});case"resolveMock":return Promise.resolve({mockType:"dummy",resolvedId:"",resolvedUrl:"",redirectUrl:"",needsInterop:!1});case"invalidate":return Promise.resolve()}},ft=class extends lt{queueMock(){}};function dt(e){let r=new ft(e("__vitest_mocker__"),{resolveId(t,n){return z("resolveId")},resolveMock(t,n,i){return z("resolveMock")},async invalidate(t){return z("invalidate")}},(...t)=>globalThis.__STORYBOOK_MODULE_TEST__.spyOn(...t),{root:""});return globalThis.__vitest_mocker__=r,at({globalThisKey:"__vitest_mocker__"})}globalThis.__STORYBOOK_MOCKER__=dt(()=>new ut);
@@ -1,330 +0,0 @@
1
- # Slack Thread: #growth-it-runs-on-local-team
2
-
3
- **Date:** 2026-04-09
4
- **Thread link:** https://designcrowd.slack.com/archives/C02955Q465R/p1775707213792599
5
- **Participants:** Zach, Loïc, ap, pmac, Mik
6
-
7
- ---
8
-
9
- ## Zach — 4:00 AM
10
-
11
- **@Loïc** for https://designcrowd.atlassian.net/browse/GT-9885 there is a chromium package that handles voice to text really well. Works on Edge, Chrome and Safari but not other browsers. I've slapped together a PoC here https://gt-9885.bc.designcrowd.ninja/ . Nothing I need you to do, just wanted you to be aware so you can coordinate/plan appropriately.
12
-
13
- ![image.png](voice-to-text-discussion-attachments/image.png)
14
-
15
- ---
16
-
17
- ## Loïc — 4:41 AM
18
-
19
- Thanks Zach. Have you got a link to that package?
20
-
21
- Doesn’t seem to work in other languages but maybe relies on the browser set language?
22
-
23
- &gt; Works on Edge, Chrome and Safari but not other browsers
24
- What other browsers would that not work on? Would imagine it would cover most if built on Chromium?
25
-
26
- ---
27
-
28
- ## Loïc — 4:43 AM
29
-
30
- &gt; Doesn’t seem to work in other languages but maybe relies on the browser set language?
31
- GPT voice to text works fine on the same browser for me when I speak in French.
32
-
33
- ---
34
-
35
- ## Zach — 4:46 AM
36
-
37
- https://vueuse.org/core/useSpeechRecognition/ is the package. This is the browser support breakdown https://caniuse.com/mdn-api_speechrecognitionevent. It uses https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API under the hood. Skimming the docs I dont see anything about language support.
38
-
39
- ![image.png](voice-to-text-discussion-attachments/image_1.png)
40
-
41
- ---
42
-
43
- ## Loïc — 4:49 AM
44
-
45
- GPT:
46
- &gt; Short answer: **yes — but not by itself.**
47
- &gt; How `useSpeechRecognition` handles languages
48
- &gt; The VueUse composable is just a thin wrapper around the browser’s **Web Speech API**. It lets you *set* the language via the `lang` option:
49
- &gt; ```useSpeechRecognition({
50
- &gt; lang: 'fr-FR' // or 'es-ES', 'de-DE', etc.
51
- &gt; })```
52
- &gt; So technically:
53
- &gt; :white_check_mark: You **can use other languages** by changing `lang`
54
- &gt; • :exclamation: But support depends entirely on the **browser + underlying speech engine** ([vueuse.org](http://vueuse.org))
55
- &gt;
56
- &gt; What actually determines language support
57
- &gt; The real behavior comes from the browser’s `SpeechRecognition` implementation:
58
- &gt; Chrome (and Chromium browsers) → best support, many languages
59
- &gt; Safari → limited support
60
- &gt; • Firefox → basically **no support** for this API
61
- &gt; VueUse just passes your config through — it doesn’t add language models itself. ([vueuse.org](http://vueuse.org))
62
- &gt;
63
- &gt; Practical implications
64
- &gt; • You can switch languages dynamically:
65
- &gt; ```const lang = ref('en-US')
66
- &gt;
67
- &gt; const speech = useSpeechRecognition({ lang })```
68
- &gt; • But:
69
- &gt; Some languages may be **less accurate**
70
- &gt; Some may **not work at all** depending on browser
71
- &gt; Offline support is usually **not available**
72
- &gt;
73
- &gt; TL;DR
74
- &gt; • :white_check_mark: Works with multiple languages via `lang`
75
- &gt; • :exclamation: Limited by browser + Web Speech API support
76
- &gt; • :x: Not a full multilingual engine on its own
77
- &gt;
78
- &gt; If you tell me what languages you want (e.g. French + English switching), I can suggest the most reliable setup or alternatives (like Whisper, Vosk, etc.).
79
-
80
- ---
81
-
82
- ## Zach — 4:49 AM
83
-
84
- Oh thats super easy.
85
-
86
- ---
87
-
88
- ## Zach — 4:50 AM
89
-
90
- We always have the users language handy
91
-
92
- ---
93
-
94
- ## Loïc — 4:50 AM
95
-
96
- :+1:
97
-
98
- ---
99
-
100
- ## Loïc — 4:50 AM
101
-
102
- No Firefox support is probably the biggest unknown here but if we are able to hide the functionality if the browser is not supported then that should be fine.
103
-
104
- ---
105
-
106
- ## Loïc — 4:51 AM
107
-
108
- FYI **@ap** ^
109
-
110
- ---
111
-
112
- ## Zach — 4:52 AM
113
-
114
- Hiding should also be easy. It's already working in my demo.
115
-
116
- ---
117
-
118
- ## ap — 5:02 AM
119
-
120
- we could extend this to send to a cloud service to do the speech to text for firefox?
121
-
122
- ---
123
-
124
- ## Zach — 5:04 AM
125
-
126
- Thats where it starts to get tricky. We would need to use/build a cloud service if we wanted to support firefox. It's just a lot more effort.
127
-
128
- ---
129
-
130
- ## Zach — 5:04 AM
131
-
132
- Also this is free
133
-
134
- ---
135
-
136
- ## ap — 5:10 AM
137
-
138
- i was thinking as a fallback at a later stage once we understand the take up from customers
139
-
140
- ---
141
-
142
- ## Loïc — 12:13 AM
143
-
144
- **@pmac**
145
-
146
- ---
147
-
148
- ## Zach — 3:28 AM
149
-
150
- https://gt-9885.dcom.designcrowd.ninja/ **@Loïc** **@ap** Check it out.
151
- 1. Use Chrome or Safari
152
- 2. Make sure to set the AB test variations like in the screen shot.
153
- 3. First click should ask for microphone permissions
154
- 4. It will transcribe into the input in real time
155
- 5. Click to stop
156
- 6. ta daaa
157
- **@ap** It is very easy to wire up: https://github.com/designcrowd/BrandCrowd.Net/pull/12884/changes#diff-8cf5baa45c1f1700d712ccef3bc0485214f743b907c9916c9bc6372b9475bbf8
158
-
159
- • It will hide itself if the browser does not support it
160
- • Language support is there but not tested yet
161
- • emits events for interim transcript chunks and the final transcript
162
- • Easy to drop in and wire up to any existing input
163
- • Its only styled for the new ai prompt input at the moment. We will need to add style variations in fe-shared-lib.
164
- Lets me know if there are any questions/changes you want. If not, I will wrap it up and get it to QA.
165
-
166
- ![image.png](voice-to-text-discussion-attachments/image_2.png)
167
-
168
- ---
169
-
170
- ## pmac — 3:32 AM
171
-
172
- just catching up .. this is client side and only works in some browsers?
173
-
174
- ---
175
-
176
- ## Zach — 3:32 AM
177
-
178
- correct
179
-
180
- ---
181
-
182
- ## pmac — 3:39 AM
183
-
184
- .. and I assume you chose this path as it was quick to implement
185
-
186
- ---
187
-
188
- ## pmac — 3:39 AM
189
-
190
- I have a feeling that we're going to see much better transcription using the newer speech to text models
191
-
192
- ---
193
-
194
- ## pmac — 3:47 AM
195
-
196
- what does the server side solution look like, that would work for all browsers? I suppose we'd be sending wav/mp3 to a backend transcription.
197
-
198
- ---
199
-
200
- ## Zach — 1:10 AM
201
-
202
- If we wanted to do server side we have a few options. Best choice is to buy something off the shelf. Having made my own local tool for voice to text using whisper, there are a bunch of issues we just dont want to handle. Whisper starts to hallucinate pretty badly after about 90 seconds, so we would have to handle streaming, chunking and a bunch of other stuff.
203
-
204
- I would want to find something that we just import a package and set an API key somewhere and then its done.
205
-
206
- The approach using the built in browser tools was so easy and fast I think it makes sense to try it out first and see what kind of returns we get. Also, all phone keyboards have voice to text built in that I think most people prefer to use.
207
-
208
- Where we are at now with the browser solution is to just do a once over on styling and nail down the AB test variation details and timing. It's code complete.
209
-
210
- ---
211
-
212
- ## pmac — 1:13 AM
213
-
214
- for server side, I would be expecting us to use something like the AWS Transcribe product
215
-
216
- ---
217
-
218
- ## Zach — 1:15 AM
219
-
220
- Thats the one I was looking at before I stumbled onto the browser native option.
221
-
222
- ---
223
-
224
- ## Zach — 1:17 AM
225
-
226
- Looks like the price is $1.44/hr for streaming transcription.
227
-
228
- ---
229
-
230
- ## pmac — 1:18 AM
231
-
232
- lets leave it in the back pocket
233
-
234
- ---
235
-
236
- ## Loïc — 1:41 AM
237
-
238
- works well in French
239
-
240
- ---
241
-
242
- ## Loïc — 1:42 AM
243
-
244
- the UI doesn’t look like what we had in designs?
245
-
246
- ---
247
-
248
- ## Zach — 1:43 AM
249
-
250
- Yea, I can't find designs for the new AI long prompt input we've got.
251
-
252
- ---
253
-
254
- ## Zach — 1:44 AM
255
-
256
- If you are happy with the design we've got in the figma for the other style I can apply to both.
257
-
258
- ---
259
-
260
- ## Loïc — 1:44 AM
261
-
262
- these ones in the ticket https://www.figma.com/design/gz0bEUjboSGaAMMtalOqVS/Maker---Speech-to-Text-in-AI?node-id=7-636&amp;t=cIYxelUljv4Qp17M-1 ?
263
-
264
- ![Screenshot 2026-04-15 at 11.44.18 am.png](voice-to-text-discussion-attachments/Screenshot 2026-04-15 at 11.44.18 am.png)
265
-
266
- ---
267
-
268
- ## Zach — 1:45 AM
269
-
270
- You sure you want that same design for the dark theme AI prompt as well?
271
-
272
- ---
273
-
274
- ## Zach — 1:45 AM
275
-
276
- Happy to do it, I can just implement both dark and light so it looks like the figma designs just with reversed colors on the AI prompt.
277
-
278
- ---
279
-
280
- ## pmac — 1:48 AM
281
-
282
- **@Zach** how do I get it to show for me?
283
-
284
- ---
285
-
286
- ## Zach — 1:49 AM
287
-
288
- In the bottom right there is an "AB" button. Click it and set these two campaigns to variation 1.
289
-
290
- ![image.png](voice-to-text-discussion-attachments/image_3.png)
291
-
292
- ---
293
-
294
- ## Loïc — 1:49 AM
295
-
296
- **@Mik** see Zach’s comment about dark theme AI prompt
297
-
298
- ---
299
-
300
- ## Mik — 2:00 AM
301
-
302
- hey **@Zach**, ideally it should look like this in dark mode - is this also what you envision?
303
-
304
- ![image.png](voice-to-text-discussion-attachments/image_4.png)
305
-
306
- ---
307
-
308
- ## Loïc — 2:01 AM
309
-
310
- have you got a screen for when it’s recording?
311
-
312
- ---
313
-
314
- ## Zach — 2:06 AM
315
-
316
- **@Mik** that was what I was thinking. We've already got the microphone icon so all good there. Is the light grey circle around the microphone icon indicating when its recording?
317
-
318
- ---
319
-
320
- ## Mik — 2:08 AM
321
-
322
- yes, it's recording
323
-
324
- ---
325
-
326
- ## Zach — 2:09 AM
327
-
328
- I will get the UI tightened up then lets everyone know when its ready for another review.
329
-
330
- ---