Files
kaiser-natron/dist/assets/Hero-DIBhYrxg.js
Dorian fe28c47c7c bundles: dedicated /bundles/<slug> pages, full-bleed background art
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>
2026-05-04 10:22:25 +01:00

1 line
6.6 KiB
JavaScript

import{C as e,E as t,G as n,O as r,c as i,ft as a,j as o,l as s,m as c,o as l,p as u,r as d,s as f,u as p,ut as m}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as h}from"./vue-router-Cyqru1db.js";import{t as g}from"./Badge-DiccZCC_.js";import{t as _}from"./_plugin-vue_export-helper-0vLWKQyu.js";import{t as v}from"./Button-D1Rp2Xe1.js";var y={key:0,class:`eyebrow`},b={class:`hero-headline font-display font-normal leading-[1.04] tracking-tight hyphens-auto break-words text-[1.625rem] sm:text-[2.25rem] lg:text-[3rem] xl:text-[3.75rem] 2xl:text-[4.5rem]`},x=[`href`],S=[`href`],C=[`src`,`alt`],w=_({__name:`Hero`,props:{eyebrow:{type:String,default:``},headline:{type:String,default:``},subheadline:{type:String,default:``},image:{type:String,default:``},imageAlt:{type:String,default:``},badge:{type:String,default:``},badgeVariant:{type:String,default:`accent`,validator:e=>[`neutral`,`brand`,`accent`,`subtle`,`success`,`warning`,`danger`].includes(e)},ctaLabel:{type:String,default:``},ctaHref:{type:String,default:``},secondaryLabel:{type:String,default:``},secondaryHref:{type:String,default:``},variant:{type:String,default:`split`,validator:e=>[`split`,`centered`].includes(e)},tone:{type:String,default:`cream`,validator:e=>[`cream`,`paper`,`brand`].includes(e)},reverse:{type:Boolean,default:!1},compact:{type:Boolean,default:!1}},emits:[`cta`,`secondary`],setup(_){function w(e){return typeof e==`string`&&e.startsWith(`/`)&&!e.startsWith(`//`)}let T=_,E={cream:{surface:`bg-cream`,text:`text-ink`,sub:`text-muted`,disc:`bg-accent-soft/60`,glow:`bg-accent/8`},paper:{surface:`bg-paper`,text:`text-ink`,sub:`text-muted`,disc:`bg-cream`,glow:`bg-brand-soft-wash`},brand:{surface:`bg-brand`,text:`text-cream`,sub:`text-cream/80`,disc:`bg-brand-soft/30`,glow:`bg-accent/5`}},D=l(()=>E[T.tone]),O=l(()=>T.tone===`brand`),k=l(()=>O.value?`accent`:`primary`),A=l(()=>T.variant===`centered`?{root:`flex flex-col items-center text-center gap-10 md:gap-12`,copy:`max-w-2xl mx-auto items-center text-center`,actions:`justify-center`,media:`mt-4 md:mt-6`,mediaSize:`w-full max-w-[287px] sm:max-w-[354px] md:max-w-[442px] lg:max-w-[530px]`}:{root:T.reverse?`grid grid-cols-1 gap-10 md:gap-14 lg:grid-cols-[1fr_1.05fr]`:`grid grid-cols-1 gap-10 md:gap-14 lg:grid-cols-[1.05fr_1fr]`,copy:[`order-2 max-w-xl mx-auto lg:mx-0 items-center text-center lg:justify-center`,T.reverse?`lg:order-2 lg:items-start lg:text-left`:`lg:order-1 lg:items-start lg:text-left`].join(` `),actions:`justify-center lg:justify-start`,media:T.reverse?`order-1 lg:order-1`:`order-1 lg:order-2`,mediaSize:T.compact?`w-full max-w-[373px] sm:max-w-[489px] md:max-w-[603px] lg:max-w-[460px] mx-auto`:`w-full max-w-[300px] sm:max-w-[390px] md:max-w-[480px] lg:max-w-[600px] mx-auto`}),j=l(()=>T.compact?`max-h-[44svh] md:max-h-[61svh] lg:max-h-[48svh]`:`max-h-[35svh] md:max-h-[49svh] lg:max-h-[62svh]`);return(l,T)=>(e(),p(`section`,{class:m([`hero-section relative overflow-clip`,`px-6 py-10 sm:px-8 sm:py-12 md:px-12 md:py-16 lg:px-16 lg:py-20`,D.value.surface,D.value.text])},[f(`div`,{class:m([`relative mx-auto w-full max-w-6xl`,A.value.root])},[f(`div`,{class:m([`relative z-[1] flex flex-col gap-6 min-w-0`,A.value.copy])},[_.eyebrow?(e(),p(`p`,y,a(_.eyebrow),1)):s(``,!0),f(`h1`,b,[t(l.$slots,`headline`,{},()=>[u(a(_.headline),1)],!0)]),_.subheadline||l.$slots.subheadline?(e(),p(`p`,{key:1,class:m([`text-lg leading-relaxed max-w-xl`,D.value.sub])},[t(l.$slots,`subheadline`,{},()=>[u(a(_.subheadline),1)],!0)],2)):s(``,!0),_.ctaLabel||_.secondaryLabel||l.$slots.actions?(e(),p(`div`,{key:2,class:m([`mt-2 flex flex-wrap items-center gap-3`,A.value.actions])},[t(l.$slots,`actions`,{},()=>[_.ctaLabel&&_.ctaHref&&w(_.ctaHref)?(e(),i(n(h),{key:0,to:_.ctaHref,class:`inline-flex`},{default:o(()=>[c(v,{variant:k.value,size:`lg`},{default:o(()=>[t(l.$slots,`cta`,{},()=>[u(a(_.ctaLabel),1)],!0)]),_:3},8,[`variant`])]),_:3},8,[`to`])):_.ctaLabel&&_.ctaHref?(e(),p(`a`,{key:1,href:_.ctaHref,class:`inline-flex`},[c(v,{variant:k.value,size:`lg`},{default:o(()=>[t(l.$slots,`cta`,{},()=>[u(a(_.ctaLabel),1)],!0)]),_:3},8,[`variant`])],8,x)):_.ctaLabel?(e(),i(v,{key:2,variant:k.value,size:`lg`,onClick:T[0]||=e=>l.$emit(`cta`)},{default:o(()=>[t(l.$slots,`cta`,{},()=>[u(a(_.ctaLabel),1)],!0)]),_:3},8,[`variant`])):s(``,!0),_.secondaryLabel?(e(),p(d,{key:3},[O.value&&_.secondaryHref&&w(_.secondaryHref)?(e(),i(n(h),{key:0,to:_.secondaryHref,class:`inline-flex items-center justify-center rounded-pill border border-cream/50 px-[34px] py-[17px] text-[16px] font-semibold tracking-label text-cream transition-colors duration-base hover:border-cream hover:bg-cream-wash-strong`},{default:o(()=>[u(a(_.secondaryLabel),1)]),_:1},8,[`to`])):O.value?(e(),i(r(_.secondaryHref?`a`:`button`),{key:1,type:_.secondaryHref?void 0:`button`,href:_.secondaryHref||void 0,class:`inline-flex items-center justify-center rounded-pill border border-cream/50 px-[34px] py-[17px] text-[16px] font-semibold tracking-label text-cream transition-colors duration-base hover:border-cream hover:bg-cream-wash-strong`,onClick:T[1]||=e=>_.secondaryHref?null:l.$emit(`secondary`)},{default:o(()=>[u(a(_.secondaryLabel),1)]),_:1},8,[`type`,`href`])):_.secondaryHref&&w(_.secondaryHref)?(e(),i(n(h),{key:2,to:_.secondaryHref,class:`inline-flex`},{default:o(()=>[c(v,{variant:`secondary`,size:`lg`},{default:o(()=>[u(a(_.secondaryLabel),1)]),_:1})]),_:1},8,[`to`])):_.secondaryHref?(e(),p(`a`,{key:3,href:_.secondaryHref,class:`inline-flex`},[c(v,{variant:`secondary`,size:`lg`},{default:o(()=>[u(a(_.secondaryLabel),1)]),_:1})],8,S)):(e(),i(v,{key:4,variant:`secondary`,size:`lg`,onClick:T[2]||=e=>l.$emit(`secondary`)},{default:o(()=>[u(a(_.secondaryLabel),1)]),_:1}))],64)):s(``,!0)],!0)],2)):s(``,!0)],2),_.image||l.$slots.media?(e(),p(`div`,{key:0,class:m([`relative flex items-center justify-center`,A.value.media])},[f(`div`,{"aria-hidden":`true`,class:m([`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2`,`w-[80%] aspect-square rounded-full blur-xl`,D.value.glow])},null,2),f(`div`,{"aria-hidden":`true`,class:m([`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2`,`w-[70%] aspect-square rounded-full`,D.value.disc])},null,2),f(`div`,{class:m([`relative`,A.value.mediaSize])},[_.badge?(e(),i(g,{key:0,variant:_.badgeVariant,class:`absolute -top-3 -left-3 z-[1] shadow-sm`},{default:o(()=>[u(a(_.badge),1)]),_:1},8,[`variant`])):s(``,!0),t(l.$slots,`media`,{},()=>[f(`img`,{src:_.image,alt:_.imageAlt||_.headline,loading:`eager`,decoding:`async`,class:m([`relative mx-auto w-auto max-w-full object-contain drop-shadow-[0_20px_40px_rgba(28,58,40,0.18)]`,j.value])},null,10,C)],!0),t(l.$slots,`afterMedia`,{},void 0,!0)],2)],2)):s(``,!0)],2)],2))}},[[`__scopeId`,`data-v-1d18fd71`]]);export{w as t};