Bundle data extracted to src/api/bundles.js (single source of truth shared by HomePage's grid and the new BundlePage). Each card on the home grid now links to the bundle's detail route. BundleCard's `imageFit` default flipped to `cover` to match the new /bundles/background/* artwork — full-bleed lifestyle scenes instead of padded product line-ups. The `contain` mode stays available for future bundles whose art needs breathing room. BundlePage layout: split brand-green hero with the bundle artwork on the left, name + items list (linking to component product pages where matched) + pricing + qty + add-to-cart on the right. Mirrors ProductPage chrome (Navbar, dynamic back button, CartDrawer) so the detail-page experience reads as one piece across SKUs and bundles. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 line
946 B
JavaScript
1 line
946 B
JavaScript
import{C as e,o as t,s as n,u as r,ut as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";var a=[`fill`],o=[`fill`],s={__name:`WaveDivider`,props:{from:{type:String,default:`brand`,validator:e=>[`brand`,`cream`,`surface`,`paper`].includes(e)},to:{type:String,default:`cream`,validator:e=>[`brand`,`cream`,`surface`,`paper`].includes(e)}},setup(s){let c=s,l={brand:`var(--color-brand)`,cream:`var(--color-cream)`,surface:`var(--color-surface)`,paper:`var(--color-paper)`},u={brand:`bg-brand`,cream:`bg-cream`,surface:`bg-surface`,paper:`bg-paper`},d=t(()=>u[c.from]),f=t(()=>l[c.from]),p=t(()=>l[c.to]);return(t,s)=>(e(),r(`svg`,{"aria-hidden":`true`,class:i([`block w-full h-12 md:h-16 shrink-0 -mb-px`,d.value]),viewBox:`0 0 1440 64`,preserveAspectRatio:`none`},[n(`rect`,{width:`1440`,height:`64`,fill:p.value},null,8,a),n(`path`,{d:`M0,0 L0,40 C320,4 520,60 720,32 C920,4 1120,60 1440,24 L1440,0 Z`,fill:f.value},null,8,o)],2))}};export{s as t}; |