Bundle data was carrying localized strings (name, usage, items, description, imageAlt, badge) directly, so EN visitors saw German copy on the bundle page and home grid. Strings are now keyed under bundle.<id>.<field> in the i18n catalogue (DE + EN); src/api/bundles.js keeps only structural data + i18n key references. HomePage builds a localizedBundles computed that resolves the keys through t() before passing to the Bundles design-system component, so the existing component stays agnostic of i18n. BundlePage exposes a `bundleCopy` computed for the same reason, and resolvedItems now maps over `itemKeys` instead of static labels. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 line
6.3 KiB
JavaScript
1 line
6.3 KiB
JavaScript
import{B as e,C as t,D as n,G as r,T 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}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{s as m}from"./runtime-dom.esm-bundler-CXLmyuFK.js";import{o as h}from"./vue-router-Cyqru1db.js";import{t as g}from"./Icon-BCo6-bGH.js";import{t as _}from"./i18n-XDSWEyNo.js";import{t as v}from"./Button-D1Rp2Xe1.js";import{t as y}from"./checkout-CguIVnMk.js";import{t as b}from"./Input-B1vjqdSR.js";var x={class:`flex flex-col gap-5 rounded-md border border-line bg-paper p-6 md:p-8`},S={class:`grid gap-5 md:grid-cols-2`},C={class:`md:col-span-2`},w={class:`flex flex-col gap-2`},T={class:`text-[11px] font-bold uppercase tracking-eyebrow text-muted`},E={class:`relative`},D=[`value`],O=[`value`],k={class:`flex flex-col gap-5 rounded-md border border-line bg-paper p-6 md:p-8`},A={class:`inline-flex items-center gap-3 cursor-pointer select-none`},j=[`checked`],M={class:`text-sm text-ink`},N={key:0,class:`grid gap-5 md:grid-cols-2`},P={class:`md:col-span-2`},F={class:`flex flex-col gap-2`},I={class:`text-[11px] font-bold uppercase tracking-eyebrow text-muted`},L={class:`relative`},R=[`value`],z=[`value`],B={key:0,class:`text-sm text-danger`,role:`alert`,"aria-live":`polite`},V={class:`fixed inset-x-0 bottom-0 z-30 bg-cream border-t border-line`,role:`contentinfo`},H={class:`mx-auto w-full max-w-7xl px-6 sm:px-8 md:px-12 lg:px-16 py-3 flex gap-3 sm:justify-between`,style:{paddingBottom:`max(0.75rem, env(safe-area-inset-bottom))`}},U={class:`flex-1 sm:flex-initial`},W={__name:`ShippingStep`,setup(W){let{t:G}=_(),K=y(),q=h(),J=e(``),Y=[{code:`AT`,label:`Österreich`},{code:`DE`,label:`Deutschland`},{code:`CH`,label:`Schweiz`},{code:`IT`,label:`Italien`},{code:`FR`,label:`Frankreich`}],X=l(()=>!K.shippingComplete);function Z(){if(J.value=``,X.value){J.value=G(`checkout.error.addressIncomplete`);return}K.persist(),q.push(`/checkout/payment`)}return(e,l)=>{let h=n(`RouterLink`);return t(),p(d,null,[f(`form`,{class:`flex flex-col gap-8`,novalidate:``,onSubmit:m(Z,[`prevent`])},[f(`section`,x,[f(`div`,S,[c(b,{"model-value":r(K).shippingAddress.name,label:r(G)(`checkout.field.name`),required:``,"onUpdate:modelValue":l[0]||=e=>r(K).updateShipping({name:e})},null,8,[`model-value`,`label`]),c(b,{"model-value":r(K).shippingAddress.company,label:r(G)(`checkout.field.company`),"onUpdate:modelValue":l[1]||=e=>r(K).updateShipping({company:e})},null,8,[`model-value`,`label`]),f(`div`,C,[c(b,{"model-value":r(K).shippingAddress.street,label:r(G)(`checkout.field.street`),required:``,"onUpdate:modelValue":l[2]||=e=>r(K).updateShipping({street:e})},null,8,[`model-value`,`label`])]),c(b,{"model-value":r(K).shippingAddress.postalCode,label:r(G)(`checkout.field.postal`),required:``,"onUpdate:modelValue":l[3]||=e=>r(K).updateShipping({postalCode:e})},null,8,[`model-value`,`label`]),c(b,{"model-value":r(K).shippingAddress.city,label:r(G)(`checkout.field.city`),required:``,"onUpdate:modelValue":l[4]||=e=>r(K).updateShipping({city:e})},null,8,[`model-value`,`label`]),f(`div`,w,[f(`label`,T,[u(a(r(G)(`checkout.field.country`)),1),l[15]||=f(`span`,{class:`text-danger`},` *`,-1)]),f(`div`,E,[f(`select`,{value:r(K).shippingAddress.country,required:``,class:`appearance-none w-full rounded-sm border border-line bg-paper pl-4 pr-10 py-3 text-[15px] text-ink transition-colors duration-base focus:outline-none focus:border-brand`,onChange:l[5]||=e=>r(K).updateShipping({country:e.target.value})},[(t(),p(d,null,i(Y,e=>f(`option`,{key:e.code,value:e.code},a(e.label),9,O)),64))],40,D),c(g,{name:`chevron-down`,size:18,"stroke-width":2,class:`absolute right-4 top-1/2 -translate-y-1/2 text-muted pointer-events-none`})])]),c(b,{"model-value":r(K).shippingAddress.phone,label:r(G)(`checkout.field.phone`),type:`tel`,hint:r(G)(`checkout.hint.phone`),"onUpdate:modelValue":l[6]||=e=>r(K).updateShipping({phone:e})},null,8,[`model-value`,`label`,`hint`])])]),f(`section`,k,[f(`label`,A,[f(`input`,{checked:r(K).billingSame,type:`checkbox`,class:`w-5 h-5 rounded-xs border border-line accent-brand`,onChange:l[7]||=e=>r(K).update({billingSame:e.target.checked})},null,40,j),f(`span`,M,a(r(G)(`checkout.field.billingSame`)),1)]),r(K).billingSame?s(``,!0):(t(),p(`div`,N,[c(b,{"model-value":r(K).billingAddress.name,label:r(G)(`checkout.field.name`),required:``,"onUpdate:modelValue":l[8]||=e=>r(K).updateBilling({name:e})},null,8,[`model-value`,`label`]),c(b,{"model-value":r(K).billingAddress.company,label:r(G)(`checkout.field.company`),"onUpdate:modelValue":l[9]||=e=>r(K).updateBilling({company:e})},null,8,[`model-value`,`label`]),f(`div`,P,[c(b,{"model-value":r(K).billingAddress.street,label:r(G)(`checkout.field.street`),required:``,"onUpdate:modelValue":l[10]||=e=>r(K).updateBilling({street:e})},null,8,[`model-value`,`label`])]),c(b,{"model-value":r(K).billingAddress.postalCode,label:r(G)(`checkout.field.postal`),required:``,"onUpdate:modelValue":l[11]||=e=>r(K).updateBilling({postalCode:e})},null,8,[`model-value`,`label`]),c(b,{"model-value":r(K).billingAddress.city,label:r(G)(`checkout.field.city`),required:``,"onUpdate:modelValue":l[12]||=e=>r(K).updateBilling({city:e})},null,8,[`model-value`,`label`]),f(`div`,F,[f(`label`,I,[u(a(r(G)(`checkout.field.country`)),1),l[16]||=f(`span`,{class:`text-danger`},` *`,-1)]),f(`div`,L,[f(`select`,{value:r(K).billingAddress.country,required:``,class:`appearance-none w-full rounded-sm border border-line bg-paper pl-4 pr-10 py-3 text-[15px] text-ink transition-colors duration-base focus:outline-none focus:border-brand`,onChange:l[13]||=e=>r(K).updateBilling({country:e.target.value})},[(t(),p(d,null,i(Y,e=>f(`option`,{key:e.code,value:e.code},a(e.label),9,z)),64))],40,R),c(g,{name:`chevron-down`,size:18,"stroke-width":2,class:`absolute right-4 top-1/2 -translate-y-1/2 text-muted pointer-events-none`})])]),c(b,{"model-value":r(K).billingAddress.phone,label:r(G)(`checkout.field.phone`),type:`tel`,"onUpdate:modelValue":l[14]||=e=>r(K).updateBilling({phone:e})},null,8,[`model-value`,`label`])]))]),J.value?(t(),p(`p`,B,a(J.value),1)):s(``,!0)],32),f(`footer`,V,[f(`div`,H,[c(h,{to:`/checkout/account`,class:`flex-1 sm:flex-initial`},{default:o(()=>[c(v,{variant:`primary`,size:`lg`,block:``,type:`button`},{default:o(()=>[u(a(r(G)(`checkout.back`)),1)]),_:1})]),_:1}),f(`div`,U,[c(v,{variant:`accent`,size:`lg`,block:``,disabled:X.value,onClick:Z},{default:o(()=>[u(a(r(G)(`checkout.shipping.cta.continue`)),1)]),_:1},8,[`disabled`])])])])],64)}}};export{W as default}; |