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
675 B
JavaScript
1 line
675 B
JavaScript
import{C as e,E as t,u as n,ut as r}from"./runtime-core.esm-bundler-DTXUv7Wx.js";var i={__name:`Card`,props:{padded:{type:Boolean,default:!0},interactive:{type:Boolean,default:!1},tone:{type:String,default:`paper`,validator:e=>[`paper`,`cream`,`brand`].includes(e)}},setup(i){let a={paper:`bg-paper text-ink border-line`,cream:`bg-cream text-ink border-line`,brand:`bg-brand text-accent border-transparent`};return(o,s)=>(e(),n(`div`,{class:r([`rounded-md border`,[a[i.tone],i.padded?`p-7`:``,i.interactive?`transition-all duration-base ease-out hover:-translate-y-1 hover:shadow-md hover:border-brand-soft cursor-pointer`:``]])},[t(o.$slots,`default`)],2))}};export{i as t}; |