@designcrowd/fe-shared-lib 1.6.0 → 1.6.2-eng-4039-freemode
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/.github/workflows/claude.yml +72 -0
- package/.storybook/main.ts +2 -5
- package/CLAUDE.md +78 -55
- package/dist/css/tailwind-brandCrowd.css +25 -4
- package/dist/css/tailwind-brandPage.css +16 -3
- package/dist/css/tailwind-crazyDomains.css +25 -4
- package/dist/css/tailwind-designCom.css +25 -4
- package/dist/css/tailwind-designCrowd.css +25 -4
- package/index.js +2 -0
- package/package.json +36 -32
- package/src/atoms/components/AiPoweredLoader/AiPoweredLoader.stories.js +364 -0
- package/src/atoms/components/AiPoweredLoader/AiPoweredLoader.vue +296 -0
- package/src/atoms/components/Button/variants/ButtonGray.vue +3 -3
- package/src/atoms/components/Carousel/Carousel.vue +8 -2
- package/src/atoms/components/Icon/Icon.stories.js +5 -7
- package/src/atoms/components/Icon/Icon.vue +25 -15
- package/src/atoms/components/Icon/icons/crown-alt.vue +5 -0
- package/src/atoms/components/Icon/icons/crown.vue +6 -0
- package/src/atoms/components/Icon/icons/home-outline.vue +6 -0
- package/src/atoms/components/Icon/icons/page-blank.vue +6 -0
- package/src/atoms/components/Icon/icons/question-alt.vue +20 -0
- package/src/atoms/components/Price/Price.stories.js +42 -21
- package/src/experiences/components/AuthFlow/SignIn.vue +10 -3
- package/src/experiences/components/AuthFlow/SignUp.vue +1 -1
- package/src/experiences/components/SideNavigationPanel/MenuCta.vue +62 -0
- package/src/experiences/components/SideNavigationPanel/MenuItem.vue +40 -0
- package/src/experiences/components/SideNavigationPanel/SideNavigationPanel.stories.js +219 -0
- package/src/experiences/components/SideNavigationPanel/SideNavigationPanel.vue +48 -0
- package/src/experiences/components/SideNavigationPanel/types.ts +7 -0
- package/src/experiences/components/UploadYourLogoApplication/UploadYourLogoApplication.vue +5 -3
- package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploader.vue +8 -1
- package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploadingLoader.vue +17 -0
- package/src/experiences/components/UploadYourLogoOnBoarding/UploadYourLogoOnBoarding.vue +10 -1
- package/src/experiences/components/WebsitesContextualUpgradeModal/WebsiteContextualUpgradeModal.vue +2 -2
- package/tailwind.config.js +1 -1
- package/vite.config.ts +4 -0
- package/.claude/settings.local.json +0 -56
- package/.storybook-static/assets/Auth-DT64t5h-.css +0 -1
- package/.storybook-static/assets/Auth.stories-C6eXcTSu.js +0 -490
- package/.storybook-static/assets/AuthCrazyDomains.stories-DGvEoWCa.js +0 -73
- package/.storybook-static/assets/Button-5UzSGUF6.css +0 -1
- package/.storybook-static/assets/Button-DKdQT6Fq.js +0 -1
- package/.storybook-static/assets/ButtonGroup-DDPXuhxR.css +0 -1
- package/.storybook-static/assets/ButtonGroup.stories-DlrYMRSk.js +0 -504
- package/.storybook-static/assets/ButtonPrimary-Bu6bXb_c.css +0 -1
- package/.storybook-static/assets/ButtonPrimary-BvWW6Duz.js +0 -1
- package/.storybook-static/assets/Buttons.stories-CKmd6hkZ.js +0 -761
- package/.storybook-static/assets/ButtonsCrazyDomains.stories-DdEuOUrn.js +0 -199
- package/.storybook-static/assets/Checkbox.mixin-DkHpdvGa.js +0 -1
- package/.storybook-static/assets/Checkbox.stories-DPBUC2Mx.js +0 -246
- package/.storybook-static/assets/Checktile.stories-ByaFwplD.js +0 -88
- package/.storybook-static/assets/CollapsiblePanel.stories-Y6q3gP9j.js +0 -56
- package/.storybook-static/assets/ColorPicker.stories-DdxPUB_R.js +0 -73
- package/.storybook-static/assets/CopyToClipboardText.stories-J9qndWxd.js +0 -32
- package/.storybook-static/assets/Dropdown.stories-1zKPATii.js +0 -159
- package/.storybook-static/assets/DropdownItem-BV-BdThU.css +0 -1
- package/.storybook-static/assets/DropdownItem-DA6TdpDb.js +0 -1
- package/.storybook-static/assets/FormControl.mixin-DcEBwrV3.js +0 -1
- package/.storybook-static/assets/HashRouteModal.stories-BGxvqE22.js +0 -60
- package/.storybook-static/assets/HelloBar-CYEZR2kQ.js +0 -1
- package/.storybook-static/assets/HelloBar.stories-597Kxj0W.js +0 -342
- package/.storybook-static/assets/Icon-C17LFvsP.js +0 -145
- package/.storybook-static/assets/Icon.stories-B9iAmcTU.js +0 -151
- package/.storybook-static/assets/Icon.stories-CR5vT9H7.js +0 -791
- package/.storybook-static/assets/Loader-BWGoT_xC.js +0 -1
- package/.storybook-static/assets/LogoBusinessBrandColours-CExzox1Z.js +0 -1
- package/.storybook-static/assets/LogoBusinessBrandColours-CeAaMKke.css +0 -1
- package/.storybook-static/assets/LogoBusinessBrandColours.stories-kuxAH8B8.js +0 -36
- package/.storybook-static/assets/Masonry-C2MNiGg0.css +0 -1
- package/.storybook-static/assets/Masonry.stories-CTXJLQ_i.js +0 -71
- package/.storybook-static/assets/Modal-CGwEIF5R.css +0 -1
- package/.storybook-static/assets/Modal-CydTNprT.js +0 -1
- package/.storybook-static/assets/Modal.stories-DZiG5NGM.js +0 -345
- package/.storybook-static/assets/Notice.stories-ChOj8CWm.js +0 -222
- package/.storybook-static/assets/NumberStepper-Blffv09R.css +0 -1
- package/.storybook-static/assets/NumberStepper.stories-CVbKJ_oJ.js +0 -64
- package/.storybook-static/assets/PaymentConfigList-BpUMV6cp.css +0 -1
- package/.storybook-static/assets/PaymentConfigList.stories-DUD7OZBS.js +0 -130
- package/.storybook-static/assets/Picture-B8m1I9xN.js +0 -1
- package/.storybook-static/assets/Picture.stories-MMzybhJ6.js +0 -119
- package/.storybook-static/assets/Pill-DLXZ_TL8.js +0 -1
- package/.storybook-static/assets/Pill.stories-DCP7szJm.js +0 -18
- package/.storybook-static/assets/PillBar-os4mJV3M.css +0 -1
- package/.storybook-static/assets/PillBar.stories-Bry-zQ6f.js +0 -41
- package/.storybook-static/assets/Price-C4GZbDSa.js +0 -1
- package/.storybook-static/assets/Price.stories-CMHly9V0.js +0 -337
- package/.storybook-static/assets/PromoCard.stories-xsbFtADE.js +0 -299
- package/.storybook-static/assets/PublishBrandPageModal-Q9-mNG1q.css +0 -1
- package/.storybook-static/assets/PublishBrandPageModal.stories-C9XzW_1m.js +0 -324
- package/.storybook-static/assets/SearchBar.stories-DaIneOSz.js +0 -12
- package/.storybook-static/assets/Select-DnioWQmi.css +0 -1
- package/.storybook-static/assets/Select.stories-BmGYB4pw.js +0 -108
- package/.storybook-static/assets/SellDomainNameList.fixtures-LC6fjr_b.js +0 -1
- package/.storybook-static/assets/SellDomainNameListModal-DH6khE10.css +0 -1
- package/.storybook-static/assets/SellDomainNameListModal-ymtVclFP.js +0 -1
- package/.storybook-static/assets/SellDomainNameListModal.stories-DvGvylgx.js +0 -71
- package/.storybook-static/assets/SellDomainNameListSearchResult-Cpxq0jDA.css +0 -1
- package/.storybook-static/assets/SellDomainNameListSearchResult-D-1CrQyf.js +0 -1
- package/.storybook-static/assets/SellDomainNameSearchWithResults-bX--zu97.js +0 -1
- package/.storybook-static/assets/SellDomainNameSearchWithResults.stories-DRUJjSdH.js +0 -37
- package/.storybook-static/assets/SellDomainNameWidget.stories-CC3LX10s.js +0 -36
- package/.storybook-static/assets/SignIn-CPjf8_2O.css +0 -1
- package/.storybook-static/assets/SignIn-DI0DSDFe.js +0 -1
- package/.storybook-static/assets/Slider-Cog2FFdj.css +0 -1
- package/.storybook-static/assets/Slider.stories-B2KGwnJy.js +0 -141
- package/.storybook-static/assets/SparkleIcon.stories-Dk904hVE.js +0 -547
- package/.storybook-static/assets/StarRating-BtKh7pzm.css +0 -1
- package/.storybook-static/assets/StarRating.stories-d2mgOuo2.js +0 -45
- package/.storybook-static/assets/TabMenu.stories-Cg2yenqj.js +0 -47
- package/.storybook-static/assets/TextCopyField-B66NKTk_.js +0 -1
- package/.storybook-static/assets/TextCopyField.stories-B4_ZlfLU.js +0 -47
- package/.storybook-static/assets/TextInput-CMoUjT_5.js +0 -1
- package/.storybook-static/assets/TextInput.stories-oyyxxf3j.js +0 -233
- package/.storybook-static/assets/Textarea.stories-BvhZR6K2.js +0 -207
- package/.storybook-static/assets/Toggle.stories-yT5-rL2k.js +0 -161
- package/.storybook-static/assets/Tooltip-DyXIgFQH.css +0 -1
- package/.storybook-static/assets/Tooltip-ZukyujG5.js +0 -1
- package/.storybook-static/assets/Tooltip.stories-sJFylRS_.js +0 -953
- package/.storybook-static/assets/UploadYourLogoApplication-Dmw8QcH3.css +0 -1
- package/.storybook-static/assets/UploadYourLogoApplication.stories-C9AvzHO_.js +0 -186
- package/.storybook-static/assets/UploadYourLogoDropzone-B1ffcicv.js +0 -24
- package/.storybook-static/assets/UploadYourLogoDropzone-DQqACf-e.css +0 -1
- package/.storybook-static/assets/UploadYourLogoDropzone.stories-D1Dt2ord.js +0 -55
- package/.storybook-static/assets/UploadedLogoSearchResultCard.stories-D8oF1Yrx.js +0 -79
- package/.storybook-static/assets/WebsiteContextualUpgradeModal-8u1zOZrW.css +0 -1
- package/.storybook-static/assets/WebsiteContextualUpgradeModal.stories-mtcvWOAg.js +0 -211
- package/.storybook-static/assets/_commonjsHelpers-CE1G-McA.js +0 -1
- package/.storybook-static/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
- package/.storybook-static/assets/api-lSJGRrF2.js +0 -1
- package/.storybook-static/assets/axe-DrS73Vi2.js +0 -20
- package/.storybook-static/assets/brand-crowd-api.client-D45NKshX.js +0 -1
- package/.storybook-static/assets/bundled-translations-BoWhEDU_.js +0 -1
- package/.storybook-static/assets/bundled-translations.de-DE-C4lqla4O.js +0 -1
- package/.storybook-static/assets/bundled-translations.es-ES-BxMIllUH.js +0 -1
- package/.storybook-static/assets/bundled-translations.fr-CA-MxZpyz0w.js +0 -1
- package/.storybook-static/assets/bundled-translations.fr-FR-N7UPCZVr.js +0 -1
- package/.storybook-static/assets/bundled-translations.pt-BR-C8tscYuG.js +0 -1
- package/.storybook-static/assets/bundled-translations.pt-PT-Dszj5Xfa.js +0 -1
- package/.storybook-static/assets/carousel-BelyIYOK.css +0 -1
- package/.storybook-static/assets/carousel.stories-CJw3-Iy6.js +0 -668
- package/.storybook-static/assets/event-constants-CMO9VQVu.js +0 -1
- package/.storybook-static/assets/iframe-B3A6OXQU.js +0 -1104
- package/.storybook-static/assets/index-B-eiLVzF.js +0 -7
- package/.storybook-static/assets/index-QquxUozE.js +0 -6
- package/.storybook-static/assets/matchers-5TDFFDYO-HJu_DfWo.js +0 -14
- package/.storybook-static/assets/mediaQueryMixin-CISNqd93.js +0 -1
- package/.storybook-static/assets/preload-helper-PPVm8Dsz.js +0 -1
- package/.storybook-static/assets/tracking-ATsLLehC.js +0 -1
- package/.storybook-static/css/tailwind-brandCrowd.css +0 -2508
- package/.storybook-static/css/tailwind-brandPage.css +0 -2188
- package/.storybook-static/css/tailwind-crazyDomains.css +0 -2508
- package/.storybook-static/css/tailwind-designCom.css +0 -2508
- package/.storybook-static/css/tailwind-designCrowd.css +0 -2508
- package/.storybook-static/favicon-wrapper.svg +0 -46
- package/.storybook-static/favicon.svg +0 -1
- package/.storybook-static/iframe.html +0 -713
- package/.storybook-static/index.html +0 -148
- package/.storybook-static/index.json +0 -1
- package/.storybook-static/nunito-sans-bold-italic.woff2 +0 -0
- package/.storybook-static/nunito-sans-bold.woff2 +0 -0
- package/.storybook-static/nunito-sans-italic.woff2 +0 -0
- package/.storybook-static/nunito-sans-regular.woff2 +0 -0
- package/.storybook-static/project.json +0 -1
- package/.storybook-static/sb-addons/a11y-1/manager-bundle.js +0 -57
- package/.storybook-static/sb-addons/links-2/manager-bundle.js +0 -3
- package/.storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +0 -628
- package/.storybook-static/sb-addons/themes-3/manager-bundle.js +0 -3
- package/.storybook-static/sb-common-assets/favicon-wrapper.svg +0 -46
- package/.storybook-static/sb-common-assets/favicon.svg +0 -1
- package/.storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/.storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/.storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/.storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/.storybook-static/sb-manager/globals-runtime.js +0 -77935
- package/.storybook-static/sb-manager/globals.js +0 -24
- package/.storybook-static/sb-manager/manager-stores.js +0 -23
- package/.storybook-static/sb-manager/runtime.js +0 -20404
- package/.storybook-static/vite-inject-mocker-entry.js +0 -2
- package/docs/plans/2026-01-30-upgrade-vite7-storybook10-design.md +0 -177
- package/docs/plans/2026-01-30-upgrade-vite7-storybook10.md +0 -388
- package/public/css/tailwind-brandCrowd.css +0 -2508
- package/public/css/tailwind-brandPage.css +0 -2188
- package/public/css/tailwind-crazyDomains.css +0 -2508
- package/public/css/tailwind-designCom.css +0 -2508
- package/public/css/tailwind-designCrowd.css +0 -2508
|
@@ -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,177 +0,0 @@
|
|
|
1
|
-
# Upgrade Plan: Vite 7, Vue 3.5.26, Storybook 10
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Upgrade the project's core tooling to current stable versions:
|
|
6
|
-
|
|
7
|
-
| Package | Current | Target |
|
|
8
|
-
|---------|---------|--------|
|
|
9
|
-
| Vue | 3.5.15 | 3.5.26 |
|
|
10
|
-
| Vite | 6.3.5 | 7.3.1 |
|
|
11
|
-
| Storybook | 9.0.4 | 10.1.11 |
|
|
12
|
-
|
|
13
|
-
**Approach:** Automated migration tools where available (Storybook), manual updates for Vite/Vue.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Phase 1: Pre-Upgrade Preparation
|
|
18
|
-
|
|
19
|
-
### Steps
|
|
20
|
-
1. Verify current state works:
|
|
21
|
-
- `npm run build` - CSS builds
|
|
22
|
-
- `npm run storybook` - Storybook starts
|
|
23
|
-
- `npm run lint` - No lint errors
|
|
24
|
-
|
|
25
|
-
2. Create upgrade branch:
|
|
26
|
-
```bash
|
|
27
|
-
git checkout -b chore/upgrade-vite7-storybook10
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Phase 2: Vite 6 → 7
|
|
33
|
-
|
|
34
|
-
### Package Updates
|
|
35
|
-
```json
|
|
36
|
-
{
|
|
37
|
-
"vite": "^7.3.1",
|
|
38
|
-
"@vitejs/plugin-vue": "^5.3.0"
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Packages to Modify
|
|
43
|
-
|
|
44
|
-
| Package | Action | Reason |
|
|
45
|
-
|---------|--------|--------|
|
|
46
|
-
| `vite-plugin-eslint` | Remove | Unmaintained, incompatible with Vite 7. ESLint runs via `npm run lint` |
|
|
47
|
-
| `vite-plugin-vue-devtools` | Update to ^7.7.2+ | Vite 7 compatibility |
|
|
48
|
-
|
|
49
|
-
### Breaking Changes
|
|
50
|
-
- Sass legacy API removed (verify no deprecated Sass syntax)
|
|
51
|
-
- `splitVendorChunkPlugin` removed (check vite.config.ts)
|
|
52
|
-
|
|
53
|
-
### Verification
|
|
54
|
-
```bash
|
|
55
|
-
npm run build
|
|
56
|
-
npm run storybook
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Phase 3: Vue 3.5.15 → 3.5.26
|
|
62
|
-
|
|
63
|
-
### Package Updates
|
|
64
|
-
```json
|
|
65
|
-
{
|
|
66
|
-
"vue": "^3.5.26"
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Related Packages
|
|
71
|
-
No changes needed:
|
|
72
|
-
- `vue-router` 4.5.0 - compatible
|
|
73
|
-
- `@vue/test-utils` 2.4.4 - compatible
|
|
74
|
-
|
|
75
|
-
### Notes
|
|
76
|
-
Minor patch upgrade with no breaking changes. Includes bug fixes and performance improvements.
|
|
77
|
-
|
|
78
|
-
### Verification
|
|
79
|
-
```bash
|
|
80
|
-
npm run build
|
|
81
|
-
npm run storybook
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Phase 4: Storybook 9 → 10
|
|
87
|
-
|
|
88
|
-
### Automated Migration
|
|
89
|
-
```bash
|
|
90
|
-
npx storybook@latest upgrade
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
The CLI will:
|
|
94
|
-
- Detect breaking changes specific to this project
|
|
95
|
-
- Upgrade all @storybook/* packages
|
|
96
|
-
- Prompt for approval before changes
|
|
97
|
-
- Apply necessary codemods
|
|
98
|
-
|
|
99
|
-
### Packages Updated
|
|
100
|
-
```
|
|
101
|
-
storybook: ^10.1.11
|
|
102
|
-
@storybook/addon-a11y: ^10.1.11
|
|
103
|
-
@storybook/addon-links: ^10.1.11
|
|
104
|
-
@storybook/addon-themes: ^10.1.11
|
|
105
|
-
@storybook/vue3: ^10.1.11
|
|
106
|
-
@storybook/vue3-vite: ^10.1.11
|
|
107
|
-
eslint-plugin-storybook: ^0.12.0
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### Breaking Changes
|
|
111
|
-
- ESM-only distribution (project already uses ES modules)
|
|
112
|
-
- Node 20.19+ required (current: 20.19.6 ✓)
|
|
113
|
-
|
|
114
|
-
### Manual Cleanup
|
|
115
|
-
- Remove `overrides` block from package.json if no longer needed
|
|
116
|
-
- Verify `.storybook/main.js` config updated correctly
|
|
117
|
-
|
|
118
|
-
### Verification
|
|
119
|
-
```bash
|
|
120
|
-
npm run storybook
|
|
121
|
-
npm run build:storybook
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Phase 5: Final Verification & Cleanup
|
|
127
|
-
|
|
128
|
-
### Verification Checklist
|
|
129
|
-
- [ ] `npm run build` - CSS builds without errors
|
|
130
|
-
- [ ] `npm run storybook` - Dev server starts, components render
|
|
131
|
-
- [ ] `npm run build:storybook` - Static build succeeds
|
|
132
|
-
- [ ] `npm run lint` - No new lint errors
|
|
133
|
-
|
|
134
|
-
### Cleanup
|
|
135
|
-
1. Clean reinstall:
|
|
136
|
-
```bash
|
|
137
|
-
rm -rf node_modules package-lock.json
|
|
138
|
-
npm install
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
2. Remove `overrides` block from package.json
|
|
142
|
-
|
|
143
|
-
3. Check for deprecation warnings in console
|
|
144
|
-
|
|
145
|
-
### Troubleshooting
|
|
146
|
-
- Storybook issues: `npx storybook doctor`
|
|
147
|
-
- Vite issues: Check vite.config.ts for deprecated options
|
|
148
|
-
|
|
149
|
-
### Commit
|
|
150
|
-
```bash
|
|
151
|
-
git add -A
|
|
152
|
-
git commit -m "chore: upgrade vite 7, vue 3.5.26, storybook 10"
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Summary of All Package Changes
|
|
158
|
-
|
|
159
|
-
### Dependencies
|
|
160
|
-
| Package | From | To |
|
|
161
|
-
|---------|------|-----|
|
|
162
|
-
| vite | 6.3.5 | ^7.3.1 |
|
|
163
|
-
| vue | 3.5.15 | ^3.5.26 |
|
|
164
|
-
| vite-plugin-vue-devtools | 7.7.0 | ^7.7.2 |
|
|
165
|
-
| vite-plugin-eslint | 1.8.1 | (remove) |
|
|
166
|
-
|
|
167
|
-
### DevDependencies
|
|
168
|
-
| Package | From | To |
|
|
169
|
-
|---------|------|-----|
|
|
170
|
-
| @vitejs/plugin-vue | 5.2.4 | ^5.3.0 |
|
|
171
|
-
| storybook | 9.0.4 | ^10.1.11 |
|
|
172
|
-
| @storybook/addon-a11y | 9.0.4 | ^10.1.11 |
|
|
173
|
-
| @storybook/addon-links | 9.0.4 | ^10.1.11 |
|
|
174
|
-
| @storybook/addon-themes | 9.0.4 | ^10.1.11 |
|
|
175
|
-
| @storybook/vue3 | 9.0.4 | ^10.1.11 |
|
|
176
|
-
| @storybook/vue3-vite | 9.0.4 | ^10.1.11 |
|
|
177
|
-
| eslint-plugin-storybook | 0.8.0 | ^0.12.0 |
|
|
@@ -1,388 +0,0 @@
|
|
|
1
|
-
# Vite 7, Vue 3.5.26, Storybook 10 Upgrade Implementation Plan
|
|
2
|
-
|
|
3
|
-
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
|
4
|
-
|
|
5
|
-
**Goal:** Upgrade core tooling to current stable versions (Vite 7.3.1, Vue 3.5.26, Storybook 10.1.11).
|
|
6
|
-
|
|
7
|
-
**Architecture:** Sequential upgrade approach - Vite first (foundation), Vue second (minor patch), Storybook last (uses automated migration CLI). Each phase verified before proceeding.
|
|
8
|
-
|
|
9
|
-
**Tech Stack:** Vite 7, Vue 3.5, Storybook 10, TailwindCSS, TypeScript
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Task 1: Verify Current State Works
|
|
14
|
-
|
|
15
|
-
**Files:**
|
|
16
|
-
- None modified
|
|
17
|
-
|
|
18
|
-
**Step 1: Run CSS build**
|
|
19
|
-
|
|
20
|
-
Run: `npm run build`
|
|
21
|
-
Expected: Builds complete without errors
|
|
22
|
-
|
|
23
|
-
**Step 2: Run lint check**
|
|
24
|
-
|
|
25
|
-
Run: `npm run lint`
|
|
26
|
-
Expected: No lint errors (or only pre-existing ones)
|
|
27
|
-
|
|
28
|
-
**Step 3: Commit checkpoint (skip if nothing to commit)**
|
|
29
|
-
|
|
30
|
-
No commit needed - verification only.
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Task 2: Create Upgrade Branch
|
|
35
|
-
|
|
36
|
-
**Files:**
|
|
37
|
-
- None modified
|
|
38
|
-
|
|
39
|
-
**Step 1: Check current branch**
|
|
40
|
-
|
|
41
|
-
Run: `git branch --show-current`
|
|
42
|
-
Expected: Should show current branch (likely `upgrade` from design phase)
|
|
43
|
-
|
|
44
|
-
**Step 2: Create dedicated upgrade branch if not already on one**
|
|
45
|
-
|
|
46
|
-
Run: `git checkout -b chore/upgrade-vite7-storybook10 2>/dev/null || echo "Already on upgrade branch"`
|
|
47
|
-
Expected: Branch created or already exists
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Task 3: Update Vite to 7.x
|
|
52
|
-
|
|
53
|
-
**Files:**
|
|
54
|
-
- Modify: `package.json`
|
|
55
|
-
|
|
56
|
-
**Step 1: Update vite version in package.json**
|
|
57
|
-
|
|
58
|
-
Change in dependencies section:
|
|
59
|
-
```json
|
|
60
|
-
"vite": "^7.3.1",
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Step 2: Update @vitejs/plugin-vue in devDependencies**
|
|
64
|
-
|
|
65
|
-
Change:
|
|
66
|
-
```json
|
|
67
|
-
"@vitejs/plugin-vue": "^5.3.0",
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
**Step 3: Update vite-plugin-vue-devtools in dependencies**
|
|
71
|
-
|
|
72
|
-
Change:
|
|
73
|
-
```json
|
|
74
|
-
"vite-plugin-vue-devtools": "^7.7.2",
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Step 4: Do NOT run npm install yet**
|
|
78
|
-
|
|
79
|
-
We'll batch the dependency changes and install once.
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Task 4: Remove vite-plugin-eslint
|
|
84
|
-
|
|
85
|
-
**Files:**
|
|
86
|
-
- Modify: `package.json`
|
|
87
|
-
- Modify: `vite.config.ts`
|
|
88
|
-
|
|
89
|
-
**Step 1: Remove vite-plugin-eslint from package.json dependencies**
|
|
90
|
-
|
|
91
|
-
Remove this line from dependencies:
|
|
92
|
-
```json
|
|
93
|
-
"vite-plugin-eslint": "1.8.1",
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**Step 2: Remove eslint import from vite.config.ts**
|
|
97
|
-
|
|
98
|
-
In `vite.config.ts`, remove line 3:
|
|
99
|
-
```typescript
|
|
100
|
-
import eslint from 'vite-plugin-eslint';
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Step 3: Remove eslint plugin usage from vite.config.ts**
|
|
104
|
-
|
|
105
|
-
In `vite.config.ts`, remove lines 26-28 from the plugins array:
|
|
106
|
-
```typescript
|
|
107
|
-
eslint({
|
|
108
|
-
include: ['./src/client/**/*.[js|ts|vue]'],
|
|
109
|
-
}),
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
The plugins array should become:
|
|
113
|
-
```typescript
|
|
114
|
-
plugins: [
|
|
115
|
-
vue(),
|
|
116
|
-
process.env.NODE_ENV === 'development' ? vueDevTools() : false,
|
|
117
|
-
],
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
**Step 4: Do NOT commit yet**
|
|
121
|
-
|
|
122
|
-
Batch with other changes.
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Task 5: Update Vue to 3.5.26
|
|
127
|
-
|
|
128
|
-
**Files:**
|
|
129
|
-
- Modify: `package.json`
|
|
130
|
-
|
|
131
|
-
**Step 1: Update vue version in dependencies**
|
|
132
|
-
|
|
133
|
-
Change:
|
|
134
|
-
```json
|
|
135
|
-
"vue": "^3.5.26",
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
**Step 2: Do NOT run npm install yet**
|
|
139
|
-
|
|
140
|
-
Continue batching changes.
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Task 6: Install Updated Dependencies and Verify Vite/Vue
|
|
145
|
-
|
|
146
|
-
**Files:**
|
|
147
|
-
- Modify: `package-lock.json` (auto-generated)
|
|
148
|
-
|
|
149
|
-
**Step 1: Clean install dependencies**
|
|
150
|
-
|
|
151
|
-
Run: `rm -rf node_modules package-lock.json && npm install`
|
|
152
|
-
Expected: Installation completes without errors
|
|
153
|
-
|
|
154
|
-
**Step 2: Verify CSS build works**
|
|
155
|
-
|
|
156
|
-
Run: `npm run build`
|
|
157
|
-
Expected: CSS builds successfully
|
|
158
|
-
|
|
159
|
-
**Step 3: Commit Vite and Vue upgrades**
|
|
160
|
-
|
|
161
|
-
Run:
|
|
162
|
-
```bash
|
|
163
|
-
git add package.json package-lock.json vite.config.ts
|
|
164
|
-
git commit -m "chore: upgrade vite 6→7, vue 3.5.15→3.5.26
|
|
165
|
-
|
|
166
|
-
- Update vite to ^7.3.1
|
|
167
|
-
- Update @vitejs/plugin-vue to ^5.3.0
|
|
168
|
-
- Update vite-plugin-vue-devtools to ^7.7.2
|
|
169
|
-
- Update vue to ^3.5.26
|
|
170
|
-
- Remove vite-plugin-eslint (unmaintained, incompatible with Vite 7)
|
|
171
|
-
|
|
172
|
-
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Task 7: Run Storybook Automated Migration
|
|
178
|
-
|
|
179
|
-
**Files:**
|
|
180
|
-
- Modify: `package.json` (automated)
|
|
181
|
-
- Modify: `.storybook/main.ts` (potentially)
|
|
182
|
-
- Modify: `package-lock.json` (auto-generated)
|
|
183
|
-
|
|
184
|
-
**Step 1: Run Storybook upgrade CLI**
|
|
185
|
-
|
|
186
|
-
Run: `npx storybook@latest upgrade`
|
|
187
|
-
|
|
188
|
-
This is interactive. Follow the prompts:
|
|
189
|
-
- Accept the upgrade when prompted
|
|
190
|
-
- Let it detect and apply codemods
|
|
191
|
-
- Review any breaking change warnings
|
|
192
|
-
|
|
193
|
-
Expected: CLI upgrades all @storybook/* packages to 10.x
|
|
194
|
-
|
|
195
|
-
**Step 2: Verify Storybook packages updated**
|
|
196
|
-
|
|
197
|
-
Run: `grep -E '"(storybook|@storybook)' package.json`
|
|
198
|
-
Expected: All versions should be ^10.x or compatible
|
|
199
|
-
|
|
200
|
-
**Step 3: Do NOT commit yet**
|
|
201
|
-
|
|
202
|
-
Need to verify and potentially fix issues first.
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## Task 8: Update eslint-plugin-storybook
|
|
207
|
-
|
|
208
|
-
**Files:**
|
|
209
|
-
- Modify: `package.json`
|
|
210
|
-
|
|
211
|
-
**Step 1: Check if Storybook migration updated eslint-plugin-storybook**
|
|
212
|
-
|
|
213
|
-
Run: `grep eslint-plugin-storybook package.json`
|
|
214
|
-
|
|
215
|
-
If still 0.8.0, update manually:
|
|
216
|
-
```json
|
|
217
|
-
"eslint-plugin-storybook": "^0.12.0",
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
**Step 2: Run npm install if manual update was needed**
|
|
221
|
-
|
|
222
|
-
Run: `npm install`
|
|
223
|
-
Expected: Installation completes
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
## Task 9: Convert Storybook Config to ESM (if needed)
|
|
228
|
-
|
|
229
|
-
**Files:**
|
|
230
|
-
- Modify: `.storybook/main.ts`
|
|
231
|
-
|
|
232
|
-
**Step 1: Check if main.ts uses module.exports**
|
|
233
|
-
|
|
234
|
-
The current `.storybook/main.ts` uses `module.exports = {...}` which is CommonJS.
|
|
235
|
-
Storybook 10 is ESM-only, so convert to ESM syntax.
|
|
236
|
-
|
|
237
|
-
**Step 2: Update .storybook/main.ts to use ESM export**
|
|
238
|
-
|
|
239
|
-
Replace the entire file content with:
|
|
240
|
-
```typescript
|
|
241
|
-
import { mergeConfig } from 'vite';
|
|
242
|
-
import type { StorybookConfig } from '@storybook/vue3-vite';
|
|
243
|
-
|
|
244
|
-
const config: StorybookConfig = {
|
|
245
|
-
stories: ['../src/**/components/**/*.stories.@(js|jsx|ts|tsx)'],
|
|
246
|
-
addons: [
|
|
247
|
-
'@storybook/addon-a11y',
|
|
248
|
-
'@storybook/addon-links',
|
|
249
|
-
{
|
|
250
|
-
name: '@storybook/addon-themes',
|
|
251
|
-
options: {
|
|
252
|
-
postCss: true,
|
|
253
|
-
},
|
|
254
|
-
},
|
|
255
|
-
],
|
|
256
|
-
framework: {
|
|
257
|
-
name: '@storybook/vue3-vite',
|
|
258
|
-
options: {},
|
|
259
|
-
},
|
|
260
|
-
staticDirs: ['../public'],
|
|
261
|
-
docs: {
|
|
262
|
-
autodocs: true,
|
|
263
|
-
},
|
|
264
|
-
async viteFinal(config) {
|
|
265
|
-
const configExtension = {
|
|
266
|
-
optimizeDeps: {
|
|
267
|
-
include: ['deepmerge'],
|
|
268
|
-
},
|
|
269
|
-
build: {
|
|
270
|
-
commonjsOptions: {
|
|
271
|
-
include: [/node_modules/],
|
|
272
|
-
},
|
|
273
|
-
},
|
|
274
|
-
};
|
|
275
|
-
return mergeConfig(config, configExtension);
|
|
276
|
-
},
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
export default config;
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
---
|
|
283
|
-
|
|
284
|
-
## Task 10: Remove package.json Overrides Block
|
|
285
|
-
|
|
286
|
-
**Files:**
|
|
287
|
-
- Modify: `package.json`
|
|
288
|
-
|
|
289
|
-
**Step 1: Remove the overrides block**
|
|
290
|
-
|
|
291
|
-
Remove these lines from package.json:
|
|
292
|
-
```json
|
|
293
|
-
"overrides": {
|
|
294
|
-
"storybook": "$storybook"
|
|
295
|
-
}
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
**Step 2: Run npm install to update lock file**
|
|
299
|
-
|
|
300
|
-
Run: `npm install`
|
|
301
|
-
Expected: Installation completes
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
## Task 11: Verify Storybook Works
|
|
306
|
-
|
|
307
|
-
**Files:**
|
|
308
|
-
- None modified
|
|
309
|
-
|
|
310
|
-
**Step 1: Start Storybook dev server**
|
|
311
|
-
|
|
312
|
-
Run: `npm run storybook`
|
|
313
|
-
Expected: Storybook starts on port 6006, no errors in console
|
|
314
|
-
|
|
315
|
-
**Step 2: Manually verify in browser**
|
|
316
|
-
|
|
317
|
-
Open http://localhost:6006 and:
|
|
318
|
-
- Verify sidebar shows stories
|
|
319
|
-
- Click on a few components to verify they render
|
|
320
|
-
- Check browser console for errors
|
|
321
|
-
|
|
322
|
-
**Step 3: Stop Storybook (Ctrl+C)**
|
|
323
|
-
|
|
324
|
-
**Step 4: Build static Storybook**
|
|
325
|
-
|
|
326
|
-
Run: `npm run build:storybook`
|
|
327
|
-
Expected: Static build completes without errors
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
|
-
## Task 12: Final Verification
|
|
332
|
-
|
|
333
|
-
**Files:**
|
|
334
|
-
- None modified
|
|
335
|
-
|
|
336
|
-
**Step 1: Run CSS build**
|
|
337
|
-
|
|
338
|
-
Run: `npm run build`
|
|
339
|
-
Expected: Builds complete
|
|
340
|
-
|
|
341
|
-
**Step 2: Run lint**
|
|
342
|
-
|
|
343
|
-
Run: `npm run lint`
|
|
344
|
-
Expected: No new lint errors (pre-existing ones are OK)
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
|
|
348
|
-
## Task 13: Commit Storybook Upgrade
|
|
349
|
-
|
|
350
|
-
**Files:**
|
|
351
|
-
- Commit all remaining changes
|
|
352
|
-
|
|
353
|
-
**Step 1: Stage all changes**
|
|
354
|
-
|
|
355
|
-
Run: `git add -A`
|
|
356
|
-
|
|
357
|
-
**Step 2: Review staged changes**
|
|
358
|
-
|
|
359
|
-
Run: `git diff --cached --stat`
|
|
360
|
-
Expected: Shows package.json, package-lock.json, .storybook/main.ts
|
|
361
|
-
|
|
362
|
-
**Step 3: Commit**
|
|
363
|
-
|
|
364
|
-
Run:
|
|
365
|
-
```bash
|
|
366
|
-
git commit -m "chore: upgrade storybook 9→10
|
|
367
|
-
|
|
368
|
-
- Upgrade all @storybook/* packages to ^10.1.11
|
|
369
|
-
- Upgrade eslint-plugin-storybook to ^0.12.0
|
|
370
|
-
- Convert .storybook/main.ts to ESM syntax
|
|
371
|
-
- Remove package.json overrides block
|
|
372
|
-
|
|
373
|
-
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
---
|
|
377
|
-
|
|
378
|
-
## Summary
|
|
379
|
-
|
|
380
|
-
| Task | Description | Commit |
|
|
381
|
-
|------|-------------|--------|
|
|
382
|
-
| 1-2 | Verify current state, create branch | No |
|
|
383
|
-
| 3-6 | Vite 7 + Vue 3.5.26 upgrade | Yes |
|
|
384
|
-
| 7-10 | Storybook 10 migration | No |
|
|
385
|
-
| 11-12 | Verify everything works | No |
|
|
386
|
-
| 13 | Commit Storybook changes | Yes |
|
|
387
|
-
|
|
388
|
-
**Total commits:** 2 (plus the design doc commit already made)
|