feat: shop 4-section category banners + brand-feedback pass
Shop page rebuilt into four brand colour-coded use-group sections (Küche/lime, Reinigung/grapefruit, Wäsche/plum, Pflege/care/orange): colour banners with diagonal dividers, per-section grid titles, crimson 'add to cart' + white-outline 'learn more' CTAs, plain-name eyebrows, first-fold halved + thin white band. Split old Haushalt group into clean+wash. Also in this checkpoint (brand-owner feedback items): - L11: Kaiser-Natron® on every visible mention, hyphenated (de+en, products, logo, nav) - L4: product-hero headline reworded to the brand versatility voice - L5/L6: faint 'AI Edited' badge on AI bundle images (data-driven aiEdited flag) - L10: Revitalization animation row + early-access CTA removed - U2: membership 'become a member' button removed - New category tokens (cat-kitchen/clean/wash/care) + Hero/WaveDivider tones - New /kueche category page (route + copy) — not yet linked (see STYLE-CHANGES caveat) - Homepage reverted to original ProductTeaser (banners belong on /shop) dist/ rebuilt and included for the Portainer/gitea deploy. Open decisions tracked in STYLE-CHANGES.md §20 and memory. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
170
STYLE-CHANGES.md
170
STYLE-CHANGES.md
@@ -333,6 +333,176 @@ to the colour-swatch reference so the in-app design-system page stays accurate.
|
||||
|
||||
---
|
||||
|
||||
## 16. Brand name — ® trademark + hyphenation pass
|
||||
|
||||
**Files:** `src/i18n/messages.js` (de + en), `src/api/products.js`,
|
||||
`src/design-system/components/Logo.vue`, `src/design-system/components/Navbar.vue`
|
||||
|
||||
The brand name is now written **`Kaiser-Natron®`** consistently — hyphenated,
|
||||
with the ® mark — on every visible mention. Two problems were fixed:
|
||||
|
||||
- **Missing ®** — display headlines, CTAs, the bundle line-item lists and the
|
||||
product `brand` field carried no trademark mark. (The long Kaiserhacks recipe
|
||||
copy and the product `title` fields already had `Kaiser-Natron®` and were left
|
||||
as-is.)
|
||||
- **Spelling drift** — the English locale (and one German headline) used the
|
||||
un-hyphenated `Kaiser Natron`. All standardised to the hyphenated form.
|
||||
|
||||
| File | What changed |
|
||||
|------|--------------|
|
||||
| `src/i18n/messages.js` | `shop.headline`, `ds.hero.headline.a`, `home.banner.sub`, `home.brand.headline.a`, `home.teaser.cta`, and the `bundle.*.items.*` lists — de **and** en — now read `Kaiser-Natron®` |
|
||||
| `src/api/products.js` | `brand: 'Kaiser-Natron'` → `'Kaiser-Natron®'` (all 11 products; shown in search results via `Search.vue`) |
|
||||
| `src/design-system/components/Logo.vue` | default accessible `title` prop `'Kaiser Natron'` → `'Kaiser-Natron®'` |
|
||||
| `src/design-system/components/Navbar.vue` | logo link `aria-label` `'Kaiser Natron home'` → `'Kaiser-Natron home'` |
|
||||
|
||||
> Not touched: generic ingredient references ("Natron", "Natronwasser",
|
||||
> "Natron-basierte …") — those mean the substance, not the brand, so they take
|
||||
> no ®. Image `alt` text keeps the plain hyphenated name (not on-screen).
|
||||
|
||||
---
|
||||
|
||||
## 17. Hero headline copy — versatility, not "shine"
|
||||
|
||||
**File:** `src/i18n/messages.js` (`ds.hero.headline.*`, de + en)
|
||||
|
||||
The product-hero headline was reworded from a generic cleaning-shine line to the
|
||||
brand's own versatility voice (drawn from kaiser-natron.de — *"Die
|
||||
Verwendungsmöglichkeiten … sind beinah grenzenlos"*). The three-part split
|
||||
(`a` / emphasised `em` / `b`) is unchanged; only the words changed.
|
||||
|
||||
```
|
||||
DE "Kaiser-Natron® für alles was glänzen soll."
|
||||
→ "Kaiser-Natron® für fast alles im Alltag."
|
||||
|
||||
EN "Kaiser-Natron® for everything that should shine."
|
||||
→ "Kaiser-Natron® for almost anything at home."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 18. Bundle artwork — "AI Edited" disclosure (L5 + L6)
|
||||
|
||||
**Files:** `src/api/bundles.js`, `src/design-system/components/BundleCard.vue`,
|
||||
`src/design-system/components/Bundles.vue`, `src/pages/HomePage.vue`,
|
||||
`src/pages/BundlePage.vue`
|
||||
|
||||
The bundle images are AI-composed. Rather than replace them, each is now marked
|
||||
with a small, faint **"AI Edited"** caption in the bottom-right of the image, so
|
||||
the AI origin is disclosed. It's data-driven, so it disappears automatically once
|
||||
real photography replaces a given image.
|
||||
|
||||
- `bundles.js` — each bundle record gains `aiEdited: true`.
|
||||
- `BundleCard.vue` — new `aiEdited` Boolean prop; when true, renders the overlay
|
||||
span inside the media area (both the card-link and plain-media branches).
|
||||
- `Bundles.vue` — passes `:ai-edited="bundle.aiEdited"` to all four BundleCard
|
||||
instances (mobile + grid + sidebar + carousel).
|
||||
- `HomePage.vue` / `BundlePage.vue` — carry `aiEdited` through to the rendered
|
||||
records; BundlePage renders the same overlay on its large hero image (desktop
|
||||
+ mobile).
|
||||
|
||||
```html
|
||||
<span class="pointer-events-none absolute bottom-0 right-0 z-[1] px-2 py-0.5
|
||||
text-[10px] font-medium uppercase tracking-label text-white/55
|
||||
drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]">AI Edited</span>
|
||||
```
|
||||
|
||||
> Set a bundle's `aiEdited: false` (or drop it) in `bundles.js` to remove the
|
||||
> badge once its image is a real photo.
|
||||
|
||||
---
|
||||
|
||||
## 19. Revitalization section — animation row + CTA removed (L10)
|
||||
|
||||
**File:** `src/pages/HomePage.vue` (`revitCopy`, Revitalization usage)
|
||||
|
||||
The Revitalization section was stripped back. Removed entirely:
|
||||
|
||||
- the **three-pillar feature row** with the spinning orbit animations (the
|
||||
emoji icons ⚗️💊🌿 were off-brand; the brand owner wanted the whole row gone), and
|
||||
- the **"early access" CTA** button (`revit.notifyCta` — "Get early access" /
|
||||
"Early Access sichern").
|
||||
|
||||
This is done at the **usage** site, not the component: `revitCopy` no longer
|
||||
passes `features` or `notifyCta`, and the `:features` / `:notify-cta` / `@notify`
|
||||
bindings (and the orphaned `onRevitNotify` handler) were removed. The section now
|
||||
renders **eyebrow + headline + sub only**.
|
||||
|
||||
`Revitalization.vue` is unchanged and still reusable — its `v-if="features.length"`
|
||||
and `v-if="notifyCta"` guards simply render nothing when those props are absent.
|
||||
The unused `revit.feature.*` / `revit.notifyCta` i18n keys are left in place
|
||||
(harmless) in case the section is restored.
|
||||
|
||||
---
|
||||
|
||||
## 20. Shop page category banners + colours + Küche page (L8/U4)
|
||||
|
||||
**Files:** `src/design-system/tokens.css`, `src/design-system/components/Hero.vue`,
|
||||
`src/pages/ShopPage.vue`, `src/router/index.js`, `src/pages/CategoryPage.vue`,
|
||||
`src/i18n/messages.js`
|
||||
|
||||
On the **shop page**, the catalogue is split into **four** use-group sections,
|
||||
each fronted by a **full-width colour banner** in the brand's own use-group
|
||||
colour (sourced from kaiser-natron.de), with diagonal dividers carrying the
|
||||
colour in and back out to the neutral product grid below. (The home page was
|
||||
left unchanged — it keeps its 3-card `ProductTeaser`.)
|
||||
|
||||
**Four sections + colours (design tokens).** `tokens.css` — the old "Haushalt"
|
||||
lump was split into **Clean** (cleaning) and **Wash** (laundry):
|
||||
| Token | Hex | Section | Products |
|
||||
|-------|-----|---------|----------|
|
||||
| `--color-cat-kitchen` | `#c6d47d` (lime) | Küche / cook | Pulver, Tabletten |
|
||||
| `--color-cat-clean` | `#eb5a61` (grapefruit) | Reinigung / clean | cleaners, sprays, descalers |
|
||||
| `--color-cat-wash` | `#c15a7e` (plum) | Wäsche / wash | wash-soda, starch, stain removers |
|
||||
| `--color-cat-care` | `#f1864c` (orange) | Pflege / care | bath, foot-bath, sport |
|
||||
Tailwind v4 auto-emits `bg-cat-kitchen` / `bg-cat-clean` / `bg-cat-wash` / `bg-cat-care`.
|
||||
|
||||
**Product grouping.** `src/api/products.js` — `USE_CASES` is now
|
||||
`['cook','clean','wash','care']`; `Wäsche` maps to the new `wash` group (was
|
||||
`clean`). `productsByUseCase` returns all four buckets.
|
||||
|
||||
**Hero tones.** `Hero.vue` has `kitchen` / `clean` / `wash` / `care` tones. Lime
|
||||
keeps dark ink text; the other three take cream (white) text. Each sets an
|
||||
`eyebrowColor` applied inline (overrides the global `.eyebrow { color: muted }`).
|
||||
`WaveDivider.vue` gained matching `kitchen` / `clean` / `wash` / `care` tones.
|
||||
|
||||
**Shop page.** `ShopPage.vue` loops the four use-cases; each renders
|
||||
`WaveDivider → <Hero :tone="section.cat"> (hero product + mixed-font heading +
|
||||
CTAs) → WaveDivider → a section title + product grid`. `CAT_TONE` maps
|
||||
cook→kitchen, clean→clean, wash→wash, care→care; `CAT_HERO_ID` picks the headline
|
||||
product (Pulver / Allzweck-Spray / Daunenwasch / Bad). A per-section title
|
||||
(`shop.section.<id>.products.title`) now sits above each grid.
|
||||
|
||||
**Banner CTAs.** Each banner carries two buttons (via the Hero `#actions` slot):
|
||||
**"add to cart"** in the brand crimson (`Button variant="accent"`, adds the
|
||||
section's hero product) and **"learn more"** as a white-outline ghost
|
||||
(`border-white/90 text-white`, links to the product page).
|
||||
> ⚠️ The white-outline "learn more" reads well on the saturated grapefruit / plum
|
||||
> / orange banners but is low-contrast on the light lime (Kitchen) banner — may
|
||||
> want a dark-outline variant there.
|
||||
|
||||
**Shop first fold — halved.** The green title fold was `min-h:calc(100svh − nav)`
|
||||
but only holds a compact title band, leaving too much empty green. Reduced to
|
||||
`calc(50svh − var(--nav-h))`. A diagonal then drops into a **thin white band**
|
||||
(`h-6 md:h-10`) before the first colour banner, so the green hero and the lime
|
||||
Kitchen banner don't butt directly together.
|
||||
|
||||
**Küche category page (new, separate from the shop sections).** Added for parity
|
||||
with `/haushalt` + `/pflege`:
|
||||
- `router/index.js` — new `/kueche` route → `CategoryPage` `{ slug: 'kueche', useCase: 'cook' }`.
|
||||
- `CategoryPage.vue` — `slug` validator allows `kueche`; `useCase` allows `cook`.
|
||||
- `messages.js` — full `category.kueche.*` copy (de + en), mirroring pflege/haushalt.
|
||||
|
||||
> ⚠️ **Open decision on the standalone category pages.** The footer
|
||||
> (`Footer.vue:54-55`) links only to `/pflege` and `/haushalt` — **`/kueche` is not
|
||||
> linked anywhere** (reachable only by direct URL). Also, splitting Wäsche into the
|
||||
> `wash` group means the `/haushalt` page (`useCase: clean`) no longer lists laundry
|
||||
> products, and there's no `/waesche` page. The **shop page itself is complete** (all
|
||||
> four groups); only these secondary category pages need a taxonomy decision — wire
|
||||
> up `/kueche` (+ a `/waesche`?) and a footer link, or retire the standalone pages in
|
||||
> favour of the shop's in-page sections.
|
||||
|
||||
---
|
||||
|
||||
## Quick reference — the two new colours
|
||||
|
||||
```
|
||||
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as a}from"./i18n-BvZbJICa.js";import{t as o}from"./About-DFXxc7oN.js";var s={class:`min-h-screen bg-cream`},c={__name:`AboutPreview`,setup(c){let{t:l}=a(),u=r(()=>[1,2,3].map(e=>({year:l(`about.milestone.${e}.year`),title:l(`about.milestone.${e}.title`),text:l(`about.milestone.${e}.text`)})));return(r,a)=>(e(),i(`div`,s,[n(o,{eyebrow:t(l)(`about.eyebrow`),headline:t(l)(`about.headline`),sub:t(l)(`about.sub`),milestones:u.value},null,8,[`eyebrow`,`headline`,`sub`,`milestones`])]))}};export{c as default};
|
||||
import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as a}from"./i18n-C2O_jcDr.js";import{t as o}from"./About-DFXxc7oN.js";var s={class:`min-h-screen bg-cream`},c={__name:`AboutPreview`,setup(c){let{t:l}=a(),u=r(()=>[1,2,3].map(e=>({year:l(`about.milestone.${e}.year`),title:l(`about.milestone.${e}.title`),text:l(`about.milestone.${e}.text`)})));return(r,a)=>(e(),i(`div`,s,[n(o,{eyebrow:t(l)(`about.eyebrow`),headline:t(l)(`about.headline`),sub:t(l)(`about.sub`),milestones:u.value},null,8,[`eyebrow`,`headline`,`sub`,`milestones`])]))}};export{c as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-BvZbJICa.js";import{t as l}from"./SectionShell-XUVs_07L.js";import{t as u}from"./DevicePreview-CxF-mErd.js";var d={class:`eyebrow mb-5`},f=`/design/preview/about`,p={__name:`AboutSection`,setup(p){let{t:m}=c();return(c,p)=>(e(),n(l,{eyebrow:t(m)(`ds.eyebrow.components`),title:t(m)(`ds.about.title`),description:t(m)(`ds.about.description`),wide:``},{default:i(()=>[s(`section`,null,[a(u,{src:f,initial:`desktop`,height:820})]),s(`section`,null,[s(`h2`,d,r(t(m)(`ds.heading.usage`)),1),p[0]||=s(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[s(`pre`,{class:`whitespace-pre-wrap`},`<About
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-C2O_jcDr.js";import{t as l}from"./SectionShell-XUVs_07L.js";import{t as u}from"./DevicePreview-CxF-mErd.js";var d={class:`eyebrow mb-5`},f=`/design/preview/about`,p={__name:`AboutSection`,setup(p){let{t:m}=c();return(c,p)=>(e(),n(l,{eyebrow:t(m)(`ds.eyebrow.components`),title:t(m)(`ds.about.title`),description:t(m)(`ds.about.description`),wide:``},{default:i(()=>[s(`section`,null,[a(u,{src:f,initial:`desktop`,height:820})]),s(`section`,null,[s(`h2`,d,r(t(m)(`ds.heading.usage`)),1),p[0]||=s(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[s(`pre`,{class:`whitespace-pre-wrap`},`<About
|
||||
:eyebrow="t('about.eyebrow')"
|
||||
:headline="t('about.headline')"
|
||||
:sub="t('about.sub')"
|
||||
@@ -1 +1 @@
|
||||
import{B as e,C as t,D as n,G as r,S as i,T as a,c as o,ft as s,j as c,l,m as u,o as d,p as f,r as p,s as m,u as h,ut as g}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{c as _}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{o as v}from"./vue-router-Cyqru1db.js";import{t as y}from"./i18n-BvZbJICa.js";import{i as b,n as x,t as S}from"./api-CJ2exAVU.js";import{t as C}from"./Button-DG-tA4DQ.js";import{t as w}from"./checkout-DTEUVxo-.js";import{t as T}from"./Input-RN3gn2df.js";var E={class:`flex flex-col gap-6`},D=[`aria-label`],O=[`aria-selected`,`onClick`],k={key:0,class:`grid gap-5 md:grid-cols-2`},A={key:3,class:`inline-flex items-center gap-3 cursor-pointer select-none`},j=[`checked`],M={class:`text-sm text-ink`},N={key:4,class:`text-sm text-danger`,role:`alert`,"aria-live":`polite`},P={key:5,class:`text-[13px] text-muted`},F={href:`/account/reset-password`,class:`text-brand hover:underline`},I={class:`fixed inset-x-0 bottom-0 z-30 bg-cream border-t border-line`,role:`contentinfo`},L={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))`}},R={class:`flex-1 sm:flex-initial`},z={__name:`AccountStep`,setup(z){let{t:B}=y(),V=w(),H=v(),U=e(!1),W=e(``),G=[{key:`guest`,label:`checkout.account.tab.guest`},{key:`signin`,label:`checkout.account.tab.signin`},{key:`register`,label:`checkout.account.tab.register`}];function K(e){W.value=``,V.setAccountMode(e)}let q=d(()=>V.accountMode===`guest`),J=d(()=>V.accountMode===`signin`),Y=d(()=>V.accountMode===`register`),X=d(()=>!Y.value||V.password===V.passwordConfirm),Z=d(()=>V.email?q.value?!1:!!(!V.password||V.password.length<8||Y.value&&!X.value):!0);async function Q(){W.value=``,U.value=!0;try{J.value?await b({email:V.email,password:V.password}):Y.value&&await x({email:V.email,password:V.password,firstName:V.firstName,lastName:V.lastName,acceptsMarketing:V.acceptsMarketing}),V.persist(),H.push(`/checkout/shipping`)}catch(e){W.value=e?.message||B(`checkout.error.generic`)}finally{U.value=!1}}return i(async()=>{let e=await S();e?.user?.email&&!V.email&&V.update({email:e.user.email})}),(e,i)=>{let d=n(`RouterLink`);return t(),h(p,null,[m(`section`,E,[m(`div`,{role:`tablist`,"aria-label":r(B)(`checkout.account.tabsLabel`),class:`flex w-full rounded-pill border border-line bg-paper p-1`},[(t(),h(p,null,a(G,e=>m(`button`,{key:e.key,role:`tab`,type:`button`,"aria-selected":r(V).accountMode===e.key,class:g([`flex-1 px-4 py-2 rounded-pill text-[13px] font-semibold tracking-label transition-colors duration-base text-center`,r(V).accountMode===e.key?`bg-brand text-cream`:`text-brand hover:bg-cream`]),onClick:t=>K(e.key)},s(r(B)(e.label)),11,O)),64))],8,D),m(`form`,{class:`flex flex-col gap-5 md:min-h-[28rem]`,novalidate:``,onSubmit:_(Q,[`prevent`])},[u(T,{"model-value":r(V).email,label:r(B)(`checkout.field.email`),type:`email`,required:``,placeholder:r(B)(`checkout.placeholder.email`),hint:q.value?r(B)(`checkout.hint.email`):``,"onUpdate:modelValue":i[0]||=e=>r(V).update({email:e})},null,8,[`model-value`,`label`,`placeholder`,`hint`]),Y.value?(t(),h(`div`,k,[u(T,{"model-value":r(V).firstName,label:r(B)(`checkout.field.firstName`),"onUpdate:modelValue":i[1]||=e=>r(V).update({firstName:e})},null,8,[`model-value`,`label`]),u(T,{"model-value":r(V).lastName,label:r(B)(`checkout.field.lastName`),"onUpdate:modelValue":i[2]||=e=>r(V).update({lastName:e})},null,8,[`model-value`,`label`])])):l(``,!0),J.value||Y.value?(t(),o(T,{key:1,"model-value":r(V).password,label:r(B)(`checkout.field.password`),type:`password`,required:``,hint:Y.value?r(B)(`checkout.hint.password`):``,"onUpdate:modelValue":i[3]||=e=>r(V).update({password:e})},null,8,[`model-value`,`label`,`hint`])):l(``,!0),Y.value?(t(),o(T,{key:2,"model-value":r(V).passwordConfirm,label:r(B)(`checkout.field.passwordConfirm`),type:`password`,required:``,error:X.value?``:r(B)(`checkout.error.passwordMismatch`),"onUpdate:modelValue":i[4]||=e=>r(V).update({passwordConfirm:e})},null,8,[`model-value`,`label`,`error`])):l(``,!0),q.value||Y.value?(t(),h(`label`,A,[m(`input`,{checked:r(V).acceptsMarketing,type:`checkbox`,class:`w-5 h-5 rounded-xs border border-line accent-brand`,onChange:i[5]||=e=>r(V).update({acceptsMarketing:e.target.checked})},null,40,j),m(`span`,M,s(r(B)(`checkout.field.marketing`)),1)])):l(``,!0),W.value?(t(),h(`p`,N,s(W.value),1)):l(``,!0),J.value?(t(),h(`p`,P,[m(`a`,F,s(r(B)(`checkout.account.forgot`)),1)])):l(``,!0)],32)]),m(`footer`,I,[m(`div`,L,[u(d,{to:`/checkout/cart`,class:`flex-1 sm:flex-initial`},{default:c(()=>[u(C,{variant:`primary`,size:`lg`,block:``,type:`button`},{default:c(()=>[f(s(r(B)(`checkout.back`)),1)]),_:1})]),_:1}),m(`div`,R,[u(C,{variant:`accent`,size:`lg`,block:``,loading:U.value,disabled:Z.value,onClick:Q},{default:c(()=>[f(s(r(B)(`checkout.account.cta.continue`)),1)]),_:1},8,[`loading`,`disabled`])])])])],64)}}};export{z as default};
|
||||
import{B as e,C as t,D as n,G as r,S as i,T as a,c as o,ft as s,j as c,l,m as u,o as d,p as f,r as p,s as m,u as h,ut as g}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{c as _}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{o as v}from"./vue-router-Cyqru1db.js";import{t as y}from"./i18n-C2O_jcDr.js";import{i as b,n as x,t as S}from"./api-DeBxQCQq.js";import{t as C}from"./Button-DG-tA4DQ.js";import{t as w}from"./checkout-DTEUVxo-.js";import{t as T}from"./Input-RN3gn2df.js";var E={class:`flex flex-col gap-6`},D=[`aria-label`],O=[`aria-selected`,`onClick`],k={key:0,class:`grid gap-5 md:grid-cols-2`},A={key:3,class:`inline-flex items-center gap-3 cursor-pointer select-none`},j=[`checked`],M={class:`text-sm text-ink`},N={key:4,class:`text-sm text-danger`,role:`alert`,"aria-live":`polite`},P={key:5,class:`text-[13px] text-muted`},F={href:`/account/reset-password`,class:`text-brand hover:underline`},I={class:`fixed inset-x-0 bottom-0 z-30 bg-cream border-t border-line`,role:`contentinfo`},L={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))`}},R={class:`flex-1 sm:flex-initial`},z={__name:`AccountStep`,setup(z){let{t:B}=y(),V=w(),H=v(),U=e(!1),W=e(``),G=[{key:`guest`,label:`checkout.account.tab.guest`},{key:`signin`,label:`checkout.account.tab.signin`},{key:`register`,label:`checkout.account.tab.register`}];function K(e){W.value=``,V.setAccountMode(e)}let q=d(()=>V.accountMode===`guest`),J=d(()=>V.accountMode===`signin`),Y=d(()=>V.accountMode===`register`),X=d(()=>!Y.value||V.password===V.passwordConfirm),Z=d(()=>V.email?q.value?!1:!!(!V.password||V.password.length<8||Y.value&&!X.value):!0);async function Q(){W.value=``,U.value=!0;try{J.value?await b({email:V.email,password:V.password}):Y.value&&await x({email:V.email,password:V.password,firstName:V.firstName,lastName:V.lastName,acceptsMarketing:V.acceptsMarketing}),V.persist(),H.push(`/checkout/shipping`)}catch(e){W.value=e?.message||B(`checkout.error.generic`)}finally{U.value=!1}}return i(async()=>{let e=await S();e?.user?.email&&!V.email&&V.update({email:e.user.email})}),(e,i)=>{let d=n(`RouterLink`);return t(),h(p,null,[m(`section`,E,[m(`div`,{role:`tablist`,"aria-label":r(B)(`checkout.account.tabsLabel`),class:`flex w-full rounded-pill border border-line bg-paper p-1`},[(t(),h(p,null,a(G,e=>m(`button`,{key:e.key,role:`tab`,type:`button`,"aria-selected":r(V).accountMode===e.key,class:g([`flex-1 px-4 py-2 rounded-pill text-[13px] font-semibold tracking-label transition-colors duration-base text-center`,r(V).accountMode===e.key?`bg-brand text-cream`:`text-brand hover:bg-cream`]),onClick:t=>K(e.key)},s(r(B)(e.label)),11,O)),64))],8,D),m(`form`,{class:`flex flex-col gap-5 md:min-h-[28rem]`,novalidate:``,onSubmit:_(Q,[`prevent`])},[u(T,{"model-value":r(V).email,label:r(B)(`checkout.field.email`),type:`email`,required:``,placeholder:r(B)(`checkout.placeholder.email`),hint:q.value?r(B)(`checkout.hint.email`):``,"onUpdate:modelValue":i[0]||=e=>r(V).update({email:e})},null,8,[`model-value`,`label`,`placeholder`,`hint`]),Y.value?(t(),h(`div`,k,[u(T,{"model-value":r(V).firstName,label:r(B)(`checkout.field.firstName`),"onUpdate:modelValue":i[1]||=e=>r(V).update({firstName:e})},null,8,[`model-value`,`label`]),u(T,{"model-value":r(V).lastName,label:r(B)(`checkout.field.lastName`),"onUpdate:modelValue":i[2]||=e=>r(V).update({lastName:e})},null,8,[`model-value`,`label`])])):l(``,!0),J.value||Y.value?(t(),o(T,{key:1,"model-value":r(V).password,label:r(B)(`checkout.field.password`),type:`password`,required:``,hint:Y.value?r(B)(`checkout.hint.password`):``,"onUpdate:modelValue":i[3]||=e=>r(V).update({password:e})},null,8,[`model-value`,`label`,`hint`])):l(``,!0),Y.value?(t(),o(T,{key:2,"model-value":r(V).passwordConfirm,label:r(B)(`checkout.field.passwordConfirm`),type:`password`,required:``,error:X.value?``:r(B)(`checkout.error.passwordMismatch`),"onUpdate:modelValue":i[4]||=e=>r(V).update({passwordConfirm:e})},null,8,[`model-value`,`label`,`error`])):l(``,!0),q.value||Y.value?(t(),h(`label`,A,[m(`input`,{checked:r(V).acceptsMarketing,type:`checkbox`,class:`w-5 h-5 rounded-xs border border-line accent-brand`,onChange:i[5]||=e=>r(V).update({acceptsMarketing:e.target.checked})},null,40,j),m(`span`,M,s(r(B)(`checkout.field.marketing`)),1)])):l(``,!0),W.value?(t(),h(`p`,N,s(W.value),1)):l(``,!0),J.value?(t(),h(`p`,P,[m(`a`,F,s(r(B)(`checkout.account.forgot`)),1)])):l(``,!0)],32)]),m(`footer`,I,[m(`div`,L,[u(d,{to:`/checkout/cart`,class:`flex-1 sm:flex-initial`},{default:c(()=>[u(C,{variant:`primary`,size:`lg`,block:``,type:`button`},{default:c(()=>[f(s(r(B)(`checkout.back`)),1)]),_:1})]),_:1}),m(`div`,R,[u(C,{variant:`accent`,size:`lg`,block:``,loading:U.value,disabled:Z.value,onClick:Q},{default:c(()=>[f(s(r(B)(`checkout.account.cta.continue`)),1)]),_:1},8,[`loading`,`disabled`])])])])],64)}}};export{z as default};
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-BvZbJICa.js";import{t as l}from"./Badge-CudT491x.js";import{t as u}from"./SectionShell-XUVs_07L.js";import{t as d}from"./Card-CPlQ-6EI.js";var f={class:`eyebrow mb-5`},p={class:`flex flex-wrap gap-3`},m={class:`eyebrow mb-5`},h={class:`flex flex-wrap gap-3`},g={__name:`BadgesSection`,setup(g){let{t:_}=c();return(c,g)=>(e(),n(u,{eyebrow:t(_)(`ds.eyebrow.components`),title:t(_)(`ds.badges.title`),description:t(_)(`ds.badges.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,f,r(t(_)(`ds.heading.variants`)),1),a(d,{tone:`paper`},{default:i(()=>[s(`div`,p,[a(l,{variant:`neutral`},{default:i(()=>[o(r(t(_)(`ds.badges.neutral`)),1)]),_:1}),a(l,{variant:`brand`},{default:i(()=>[o(r(t(_)(`ds.badges.brand`)),1)]),_:1}),a(l,{variant:`accent`},{default:i(()=>[o(r(t(_)(`ds.badges.accent`)),1)]),_:1}),a(l,{variant:`subtle`},{default:i(()=>[o(r(t(_)(`ds.badges.subtle`)),1)]),_:1}),a(l,{variant:`success`},{default:i(()=>[o(r(t(_)(`ds.badges.success`)),1)]),_:1}),a(l,{variant:`warning`},{default:i(()=>[o(r(t(_)(`ds.badges.warning`)),1)]),_:1}),a(l,{variant:`danger`},{default:i(()=>[o(r(t(_)(`ds.badges.danger`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,m,r(t(_)(`ds.heading.nonUppercase`)),1),a(d,{tone:`paper`},{default:i(()=>[s(`div`,h,[a(l,{variant:`brand`,uppercase:!1},{default:i(()=>[o(r(t(_)(`ds.badges.newRelease`)),1)]),_:1}),a(l,{variant:`accent`,uppercase:!1},{default:i(()=>[o(r(t(_)(`ds.badges.featured`)),1)]),_:1}),a(l,{variant:`subtle`,uppercase:!1},{default:i(()=>[...g[0]||=[o(`v2.1.0`,-1)]]),_:1})])]),_:1})])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{g as default};
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-C2O_jcDr.js";import{t as l}from"./Badge-CudT491x.js";import{t as u}from"./SectionShell-XUVs_07L.js";import{t as d}from"./Card-CPlQ-6EI.js";var f={class:`eyebrow mb-5`},p={class:`flex flex-wrap gap-3`},m={class:`eyebrow mb-5`},h={class:`flex flex-wrap gap-3`},g={__name:`BadgesSection`,setup(g){let{t:_}=c();return(c,g)=>(e(),n(u,{eyebrow:t(_)(`ds.eyebrow.components`),title:t(_)(`ds.badges.title`),description:t(_)(`ds.badges.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,f,r(t(_)(`ds.heading.variants`)),1),a(d,{tone:`paper`},{default:i(()=>[s(`div`,p,[a(l,{variant:`neutral`},{default:i(()=>[o(r(t(_)(`ds.badges.neutral`)),1)]),_:1}),a(l,{variant:`brand`},{default:i(()=>[o(r(t(_)(`ds.badges.brand`)),1)]),_:1}),a(l,{variant:`accent`},{default:i(()=>[o(r(t(_)(`ds.badges.accent`)),1)]),_:1}),a(l,{variant:`subtle`},{default:i(()=>[o(r(t(_)(`ds.badges.subtle`)),1)]),_:1}),a(l,{variant:`success`},{default:i(()=>[o(r(t(_)(`ds.badges.success`)),1)]),_:1}),a(l,{variant:`warning`},{default:i(()=>[o(r(t(_)(`ds.badges.warning`)),1)]),_:1}),a(l,{variant:`danger`},{default:i(()=>[o(r(t(_)(`ds.badges.danger`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,m,r(t(_)(`ds.heading.nonUppercase`)),1),a(d,{tone:`paper`},{default:i(()=>[s(`div`,h,[a(l,{variant:`brand`,uppercase:!1},{default:i(()=>[o(r(t(_)(`ds.badges.newRelease`)),1)]),_:1}),a(l,{variant:`accent`,uppercase:!1},{default:i(()=>[o(r(t(_)(`ds.badges.featured`)),1)]),_:1}),a(l,{variant:`subtle`,uppercase:!1},{default:i(()=>[...g[0]||=[o(`v2.1.0`,-1)]]),_:1})])]),_:1})])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{g as default};
|
||||
1
dist/assets/BundleCard-Bgh6G83l.js
vendored
Normal file
1
dist/assets/BundleCard-Bgh6G83l.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/assets/BundleCard-DQifBKz2.js
vendored
1
dist/assets/BundleCard-DQifBKz2.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,c as r,ft as i,j as a,l as o,m as s,p as c,s as l,u,y as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as f}from"./i18n-BvZbJICa.js";import{t as p}from"./BundleCard-DQifBKz2.js";import{t as m}from"./SectionShell-XUVs_07L.js";var h={class:`eyebrow mb-5`},g={class:`grid sm:grid-cols-2 lg:grid-cols-3 gap-6`},_={key:0,class:`mt-5 text-sm text-muted`},v={class:`font-mono text-[12px]`},y={class:`grid gap-6`},b={class:`eyebrow mb-5`},x={class:`grid sm:grid-cols-2 gap-6`},S={class:`eyebrow mb-5`},C=`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,w={__name:`BundleCardSection`,setup(w){let{t:T}=f(),E=e(``);function D(e){E.value=e,setTimeout(()=>{E.value===e&&(E.value=``)},2e3)}let O={name:`Haushalts-Bundle`,usage:`2–3× pro Quartal empfohlen`,items:[`1× Kaiser-Natron Pulver 250 g`,`1× Allzweck-Spray 500 ml`,`1× Spülmittel 500 ml`],price:24.9,memberPrice:21.17,image:C,imageAlt:`Haushalts-Bundle`},k={...O,items:[...O.items,`1× Holste Wasch-Soda 500 g`,`1× Allzweckreiniger 750 ml`]};return(e,f)=>(t(),r(m,{eyebrow:n(T)(`ds.eyebrow.components`),title:n(T)(`ds.bundleCard.title`),description:n(T)(`ds.bundleCard.description`)},{default:a(()=>[l(`section`,null,[l(`h2`,h,i(n(T)(`ds.heading.default`)),1),l(`div`,g,[s(p,d(O,{onAdd:f[0]||=e=>D(`default`)}),null,16),s(p,d(O,{badge:`Bestseller`,"badge-variant":`accent`,onAdd:f[1]||=e=>D(`bestseller`)}),null,16),s(p,d(O,{tone:`cream`,onAdd:f[2]||=e=>D(`cream`)}),null,16)]),E.value?(t(),u(`p`,_,[c(i(n(T)(`ds.product.added`))+`: `,1),l(`code`,v,i(E.value),1)])):o(``,!0)]),l(`section`,null,[f[5]||=l(`h2`,{class:`eyebrow mb-5`},`Horizontal layout`,-1),f[6]||=l(`p`,{class:`text-sm text-muted mb-5 max-w-2xl`},[c(` Passed as `),l(`code`,{class:`font-mono text-[12px]`},`layout="horizontal"`),c(`. From `),l(`code`,{class:`font-mono text-[12px]`},`md`),c(` up the media takes ~38% of the row and the body fills the rest, with the CTA inlined next to the price block. Below `),l(`code`,{class:`font-mono text-[12px]`},`md`),c(` it collapses back to vertical. `)],-1),l(`div`,y,[s(p,d(O,{layout:`horizontal`,badge:`Bestseller`,"badge-variant":`accent`,onAdd:f[3]||=e=>D(`horizontal`)}),null,16)])]),l(`section`,null,[l(`h2`,b,i(n(T)(`ds.heading.states`)),1),f[7]||=l(`p`,{class:`text-sm text-muted mb-5 max-w-2xl`},` Same bundle across both cards — only the state being demonstrated changes. `,-1),l(`div`,x,[s(p,d(O,{"in-stock":!1}),null,16),s(p,d(k,{onAdd:f[4]||=e=>D(`overflow`)}),null,16)]),f[8]||=l(`p`,{class:`mt-3 text-sm text-muted max-w-2xl`},[c(` More than three items collapse the tail into a `),l(`code`,{class:`font-mono text-[12px]`},`+ N weitere`),c(` line so the card stays scannable. `)],-1)]),l(`section`,null,[l(`h2`,S,i(n(T)(`ds.heading.usage`)),1),f[9]||=l(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[l(`pre`,{class:`whitespace-pre-wrap`},`<BundleCard
|
||||
import{B as e,C as t,G as n,c as r,ft as i,j as a,l as o,m as s,p as c,s as l,u,y as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as f}from"./i18n-C2O_jcDr.js";import{t as p}from"./BundleCard-Bgh6G83l.js";import{t as m}from"./SectionShell-XUVs_07L.js";var h={class:`eyebrow mb-5`},g={class:`grid sm:grid-cols-2 lg:grid-cols-3 gap-6`},_={key:0,class:`mt-5 text-sm text-muted`},v={class:`font-mono text-[12px]`},y={class:`grid gap-6`},b={class:`eyebrow mb-5`},x={class:`grid sm:grid-cols-2 gap-6`},S={class:`eyebrow mb-5`},C=`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,w={__name:`BundleCardSection`,setup(w){let{t:T}=f(),E=e(``);function D(e){E.value=e,setTimeout(()=>{E.value===e&&(E.value=``)},2e3)}let O={name:`Haushalts-Bundle`,usage:`2–3× pro Quartal empfohlen`,items:[`1× Kaiser-Natron Pulver 250 g`,`1× Allzweck-Spray 500 ml`,`1× Spülmittel 500 ml`],price:24.9,memberPrice:21.17,image:C,imageAlt:`Haushalts-Bundle`},k={...O,items:[...O.items,`1× Holste Wasch-Soda 500 g`,`1× Allzweckreiniger 750 ml`]};return(e,f)=>(t(),r(m,{eyebrow:n(T)(`ds.eyebrow.components`),title:n(T)(`ds.bundleCard.title`),description:n(T)(`ds.bundleCard.description`)},{default:a(()=>[l(`section`,null,[l(`h2`,h,i(n(T)(`ds.heading.default`)),1),l(`div`,g,[s(p,d(O,{onAdd:f[0]||=e=>D(`default`)}),null,16),s(p,d(O,{badge:`Bestseller`,"badge-variant":`accent`,onAdd:f[1]||=e=>D(`bestseller`)}),null,16),s(p,d(O,{tone:`cream`,onAdd:f[2]||=e=>D(`cream`)}),null,16)]),E.value?(t(),u(`p`,_,[c(i(n(T)(`ds.product.added`))+`: `,1),l(`code`,v,i(E.value),1)])):o(``,!0)]),l(`section`,null,[f[5]||=l(`h2`,{class:`eyebrow mb-5`},`Horizontal layout`,-1),f[6]||=l(`p`,{class:`text-sm text-muted mb-5 max-w-2xl`},[c(` Passed as `),l(`code`,{class:`font-mono text-[12px]`},`layout="horizontal"`),c(`. From `),l(`code`,{class:`font-mono text-[12px]`},`md`),c(` up the media takes ~38% of the row and the body fills the rest, with the CTA inlined next to the price block. Below `),l(`code`,{class:`font-mono text-[12px]`},`md`),c(` it collapses back to vertical. `)],-1),l(`div`,y,[s(p,d(O,{layout:`horizontal`,badge:`Bestseller`,"badge-variant":`accent`,onAdd:f[3]||=e=>D(`horizontal`)}),null,16)])]),l(`section`,null,[l(`h2`,b,i(n(T)(`ds.heading.states`)),1),f[7]||=l(`p`,{class:`text-sm text-muted mb-5 max-w-2xl`},` Same bundle across both cards — only the state being demonstrated changes. `,-1),l(`div`,x,[s(p,d(O,{"in-stock":!1}),null,16),s(p,d(k,{onAdd:f[4]||=e=>D(`overflow`)}),null,16)]),f[8]||=l(`p`,{class:`mt-3 text-sm text-muted max-w-2xl`},[c(` More than three items collapse the tail into a `),l(`code`,{class:`font-mono text-[12px]`},`+ N weitere`),c(` line so the card stays scannable. `)],-1)]),l(`section`,null,[l(`h2`,S,i(n(T)(`ds.heading.usage`)),1),f[9]||=l(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[l(`pre`,{class:`whitespace-pre-wrap`},`<BundleCard
|
||||
name="Haushalts-Bundle"
|
||||
usage="2–3× pro Quartal empfohlen"
|
||||
:items="[
|
||||
1
dist/assets/BundlePage-Bq-6d-X8.js
vendored
1
dist/assets/BundlePage-Bq-6d-X8.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/BundlePage-BtRLHc9H.js
vendored
Normal file
1
dist/assets/BundlePage-BtRLHc9H.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/assets/Bundles-C6zd-SgA.css
vendored
Normal file
1
dist/assets/Bundles-C6zd-SgA.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.no-scrollbar[data-v-84e5faca]::-webkit-scrollbar{display:none}.no-scrollbar[data-v-84e5faca]{scrollbar-width:none;-ms-overflow-style:none}
|
||||
1
dist/assets/Bundles-CAjLaQ_O.css
vendored
1
dist/assets/Bundles-CAjLaQ_O.css
vendored
@@ -1 +0,0 @@
|
||||
.no-scrollbar[data-v-86262777]::-webkit-scrollbar{display:none}.no-scrollbar[data-v-86262777]{scrollbar-width:none;-ms-overflow-style:none}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a}from"./vue-router-Cyqru1db.js";import{t as o}from"./i18n-BvZbJICa.js";import{t as s}from"./Bundles-CvTZ82YZ.js";var c={class:`min-h-screen bg-surface`},l={__name:`BundlesPreview`,setup(l){let{t:u}=o(),d=a(),f=r(()=>d.query.layout===`stacked`?`stacked`:`sidebar`),p=[{id:`haushalt`,name:`Haushalts-Bundle`,usage:`2–3× pro Quartal empfohlen`,items:[`1× Kaiser-Natron Pulver 250 g`,`1× Allzweck-Spray 500 ml`,`1× Spülmittel 500 ml`],price:24.9,memberPrice:21.17,image:`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,imageAlt:`Haushalts-Bundle mit Kaiser-Natron`,badge:`Bestseller`,badgeVariant:`accent`},{id:`waesche`,name:`Wäsche & Pflege`,usage:`1–2× pro Quartal`,items:[`1× Holste Wasch-Soda 500 g`,`1× Gazelle Wäschestärke 1 l`,`1× Linda Fleckenweg 200 ml`],price:22.9,memberPrice:19.47,image:`/products/holste-wasch-soda-500-g-beutel.webp`,imageAlt:`Wäsche & Pflege Bundle`},{id:`wohlfuehl`,name:`Wohlfühl-Bundle`,usage:`1× pro Quartal`,items:[`1× Kaiser-Natron Tabletten 100 g`,`1× Kaiser-Natron Bad 500 g`,`1× Kaiser-Natron Fußbad 500 g`],price:29.9,memberPrice:25.42,image:`/products/kaiser-natron-bad-500-g.webp`,imageAlt:`Wohlfühl-Bundle`}],m=r(()=>[u(`bundles.benefit.1.title`),u(`bundles.benefit.2.title`),u(`bundles.benefit.3.title`)]);return(r,a)=>(e(),i(`div`,c,[n(s,{layout:f.value,bundles:p,headline:t(u)(`bundles.headline.a`),"headline-em":t(u)(`bundles.headline.em`),sub:t(u)(`bundles.sub`),benefits:m.value,"join-cta":t(u)(`bundles.joinCta`)},null,8,[`layout`,`headline`,`headline-em`,`sub`,`benefits`,`join-cta`])]))}};export{l as default};
|
||||
import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a}from"./vue-router-Cyqru1db.js";import{t as o}from"./i18n-C2O_jcDr.js";import{t as s}from"./Bundles-hfeZFK7S.js";var c={class:`min-h-screen bg-surface`},l={__name:`BundlesPreview`,setup(l){let{t:u}=o(),d=a(),f=r(()=>d.query.layout===`stacked`?`stacked`:`sidebar`),p=[{id:`haushalt`,name:`Haushalts-Bundle`,usage:`2–3× pro Quartal empfohlen`,items:[`1× Kaiser-Natron Pulver 250 g`,`1× Allzweck-Spray 500 ml`,`1× Spülmittel 500 ml`],price:24.9,memberPrice:21.17,image:`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,imageAlt:`Haushalts-Bundle mit Kaiser-Natron`,badge:`Bestseller`,badgeVariant:`accent`},{id:`waesche`,name:`Wäsche & Pflege`,usage:`1–2× pro Quartal`,items:[`1× Holste Wasch-Soda 500 g`,`1× Gazelle Wäschestärke 1 l`,`1× Linda Fleckenweg 200 ml`],price:22.9,memberPrice:19.47,image:`/products/holste-wasch-soda-500-g-beutel.webp`,imageAlt:`Wäsche & Pflege Bundle`},{id:`wohlfuehl`,name:`Wohlfühl-Bundle`,usage:`1× pro Quartal`,items:[`1× Kaiser-Natron Tabletten 100 g`,`1× Kaiser-Natron Bad 500 g`,`1× Kaiser-Natron Fußbad 500 g`],price:29.9,memberPrice:25.42,image:`/products/kaiser-natron-bad-500-g.webp`,imageAlt:`Wohlfühl-Bundle`}],m=r(()=>[u(`bundles.benefit.1.title`),u(`bundles.benefit.2.title`),u(`bundles.benefit.3.title`)]);return(r,a)=>(e(),i(`div`,c,[n(s,{layout:f.value,bundles:p,headline:t(u)(`bundles.headline.a`),"headline-em":t(u)(`bundles.headline.em`),sub:t(u)(`bundles.sub`),benefits:m.value,"join-cta":t(u)(`bundles.joinCta`)},null,8,[`layout`,`headline`,`headline-em`,`sub`,`benefits`,`join-cta`])]))}};export{l as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,T as r,c as i,ft as a,j as o,m as s,o as c,p as l,r as u,s as d,u as f,ut as p}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as m}from"./i18n-BvZbJICa.js";import{t as h}from"./SectionShell-XUVs_07L.js";import{t as g}from"./DevicePreview-CxF-mErd.js";var _={role:`tablist`,"aria-label":`Layout variant`,class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},v=[`aria-selected`,`onClick`],y={class:`eyebrow mb-5`},b={__name:`BundlesSection`,setup(b){let{t:x}=m(),S=[{id:`sidebar`,label:`Option 1`},{id:`stacked`,label:`Option 2`}],C=e(`sidebar`),w=c(()=>`/design/preview/bundles?layout=${C.value}`);return(e,c)=>(t(),i(h,{eyebrow:n(x)(`ds.eyebrow.components`),title:n(x)(`ds.bundles.title`),description:n(x)(`ds.bundles.description`),wide:``},{default:o(()=>[d(`section`,null,[s(g,{src:w.value,initial:`desktop`,height:1080},{controls:o(()=>[d(`div`,_,[(t(),f(u,null,r(S,e=>d(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":C.value===e.id,class:p([`inline-flex items-center gap-2 px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,C.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>C.value=e.id},a(e.label),11,v)),64))])]),_:1},8,[`src`])]),d(`section`,null,[d(`h2`,y,a(n(x)(`ds.heading.usage`)),1),c[0]||=d(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[d(`pre`,{class:`whitespace-pre-wrap`},`<Bundles
|
||||
import{B as e,C as t,G as n,T as r,c as i,ft as a,j as o,m as s,o as c,p as l,r as u,s as d,u as f,ut as p}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as m}from"./i18n-C2O_jcDr.js";import{t as h}from"./SectionShell-XUVs_07L.js";import{t as g}from"./DevicePreview-CxF-mErd.js";var _={role:`tablist`,"aria-label":`Layout variant`,class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},v=[`aria-selected`,`onClick`],y={class:`eyebrow mb-5`},b={__name:`BundlesSection`,setup(b){let{t:x}=m(),S=[{id:`sidebar`,label:`Option 1`},{id:`stacked`,label:`Option 2`}],C=e(`sidebar`),w=c(()=>`/design/preview/bundles?layout=${C.value}`);return(e,c)=>(t(),i(h,{eyebrow:n(x)(`ds.eyebrow.components`),title:n(x)(`ds.bundles.title`),description:n(x)(`ds.bundles.description`),wide:``},{default:o(()=>[d(`section`,null,[s(g,{src:w.value,initial:`desktop`,height:1080},{controls:o(()=>[d(`div`,_,[(t(),f(u,null,r(S,e=>d(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":C.value===e.id,class:p([`inline-flex items-center gap-2 px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,C.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>C.value=e.id},a(e.label),11,v)),64))])]),_:1},8,[`src`])]),d(`section`,null,[d(`h2`,y,a(n(x)(`ds.heading.usage`)),1),c[0]||=d(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[d(`pre`,{class:`whitespace-pre-wrap`},`<Bundles
|
||||
:bundles="bundles"
|
||||
:headline="t('bundles.headline.a')"
|
||||
:headline-em="t('bundles.headline.em')"
|
||||
@@ -1,4 +1,4 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./Icon-CtR1FGIT.js";import{t as l}from"./i18n-BvZbJICa.js";import{t as u}from"./Button-DG-tA4DQ.js";import{t as d}from"./SectionShell-XUVs_07L.js";import{t as f}from"./Card-CPlQ-6EI.js";var p={class:`eyebrow mb-5`},m={class:`flex flex-wrap gap-3`},h={class:`eyebrow mb-5`},g={class:`grid md:grid-cols-3 gap-4`},_={class:`eyebrow mb-4`},v={class:`flex flex-wrap gap-3`},y={class:`eyebrow mb-4`},b={class:`flex flex-wrap gap-3`},x={class:`eyebrow mb-4 !text-cream opacity-80`},S={class:`flex flex-wrap gap-3`},C={class:`eyebrow mb-5`},w={class:`flex flex-wrap items-center gap-3`},T={class:`eyebrow mb-5`},E={class:`flex flex-wrap items-center gap-3`},D={class:`eyebrow mb-5`},O={class:`flex flex-wrap gap-3 items-center`},k={class:`eyebrow mb-5`},A={class:`max-w-md space-y-3`},j={class:`eyebrow mb-5`},M={class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},N={class:`whitespace-pre-wrap`},P={__name:`ButtonsSection`,setup(P){let{t:F}=l();return(l,P)=>(e(),n(d,{eyebrow:t(F)(`ds.eyebrow.components`),title:t(F)(`ds.buttons.title`),description:t(F)(`ds.buttons.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,p,r(t(F)(`ds.heading.variants`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,m,[a(u,{variant:`primary`},{default:i(()=>[o(r(t(F)(`ds.buttons.primary`)),1)]),_:1}),a(u,{variant:`accent`},{default:i(()=>[o(r(t(F)(`ds.buttons.accent`)),1)]),_:1}),a(u,{variant:`secondary`},{default:i(()=>[o(r(t(F)(`ds.buttons.secondary`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.ghost`)),1)]),_:1}),a(u,{variant:`danger`},{default:i(()=>[o(r(t(F)(`ds.buttons.danger`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,h,r(t(F)(`ds.heading.onDifferentSurfaces`)),1),s(`div`,g,[a(f,{tone:`paper`},{default:i(()=>[s(`p`,_,r(t(F)(`ds.cards.paper`)),1),s(`div`,v,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1}),a(f,{tone:`cream`},{default:i(()=>[s(`p`,y,r(t(F)(`ds.cards.cream`)),1),s(`div`,b,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1}),a(f,{tone:`brand`},{default:i(()=>[s(`p`,x,r(t(F)(`ds.cards.brand`)),1),s(`div`,S,[a(u,{variant:`accent`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`,class:`!text-cream hover:!bg-cream-wash`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1})])]),s(`section`,null,[s(`h2`,C,r(t(F)(`ds.heading.sizes`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,w,[a(u,{size:`sm`},{default:i(()=>[o(r(t(F)(`ds.buttons.small`)),1)]),_:1}),a(u,{size:`md`},{default:i(()=>[o(r(t(F)(`ds.buttons.medium`)),1)]),_:1}),a(u,{size:`lg`},{default:i(()=>[o(r(t(F)(`ds.buttons.large`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,T,r(t(F)(`ds.heading.withIcons`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,E,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`secondary`},{after:i(()=>[a(c,{name:`arrow-right`,size:18})]),default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`))+` `,1)]),_:1}),a(u,{variant:`ghost`},{before:i(()=>[a(c,{name:`heart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.save`)),1)]),_:1}),a(u,{variant:`accent`,size:`sm`},{before:i(()=>[a(c,{name:`check`,size:16})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.confirm`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,D,r(t(F)(`ds.heading.states`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,O,[a(u,null,{default:i(()=>[o(r(t(F)(`ds.heading.default`)),1)]),_:1}),a(u,{disabled:``},{default:i(()=>[o(r(t(F)(`ds.buttons.disabled`)),1)]),_:1}),a(u,{loading:``},{default:i(()=>[o(r(t(F)(`ds.buttons.loading`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,k,r(t(F)(`ds.heading.block`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,A,[a(u,{block:``,variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{block:``,variant:`secondary`},{default:i(()=>[o(r(t(F)(`ds.buttons.continueShopping`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,j,r(t(F)(`ds.heading.usage`)),1),s(`div`,M,[s(`pre`,N,`<Button variant="primary" size="md">
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./Icon-CtR1FGIT.js";import{t as l}from"./i18n-C2O_jcDr.js";import{t as u}from"./Button-DG-tA4DQ.js";import{t as d}from"./SectionShell-XUVs_07L.js";import{t as f}from"./Card-CPlQ-6EI.js";var p={class:`eyebrow mb-5`},m={class:`flex flex-wrap gap-3`},h={class:`eyebrow mb-5`},g={class:`grid md:grid-cols-3 gap-4`},_={class:`eyebrow mb-4`},v={class:`flex flex-wrap gap-3`},y={class:`eyebrow mb-4`},b={class:`flex flex-wrap gap-3`},x={class:`eyebrow mb-4 !text-cream opacity-80`},S={class:`flex flex-wrap gap-3`},C={class:`eyebrow mb-5`},w={class:`flex flex-wrap items-center gap-3`},T={class:`eyebrow mb-5`},E={class:`flex flex-wrap items-center gap-3`},D={class:`eyebrow mb-5`},O={class:`flex flex-wrap gap-3 items-center`},k={class:`eyebrow mb-5`},A={class:`max-w-md space-y-3`},j={class:`eyebrow mb-5`},M={class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},N={class:`whitespace-pre-wrap`},P={__name:`ButtonsSection`,setup(P){let{t:F}=l();return(l,P)=>(e(),n(d,{eyebrow:t(F)(`ds.eyebrow.components`),title:t(F)(`ds.buttons.title`),description:t(F)(`ds.buttons.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,p,r(t(F)(`ds.heading.variants`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,m,[a(u,{variant:`primary`},{default:i(()=>[o(r(t(F)(`ds.buttons.primary`)),1)]),_:1}),a(u,{variant:`accent`},{default:i(()=>[o(r(t(F)(`ds.buttons.accent`)),1)]),_:1}),a(u,{variant:`secondary`},{default:i(()=>[o(r(t(F)(`ds.buttons.secondary`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.ghost`)),1)]),_:1}),a(u,{variant:`danger`},{default:i(()=>[o(r(t(F)(`ds.buttons.danger`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,h,r(t(F)(`ds.heading.onDifferentSurfaces`)),1),s(`div`,g,[a(f,{tone:`paper`},{default:i(()=>[s(`p`,_,r(t(F)(`ds.cards.paper`)),1),s(`div`,v,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1}),a(f,{tone:`cream`},{default:i(()=>[s(`p`,y,r(t(F)(`ds.cards.cream`)),1),s(`div`,b,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1}),a(f,{tone:`brand`},{default:i(()=>[s(`p`,x,r(t(F)(`ds.cards.brand`)),1),s(`div`,S,[a(u,{variant:`accent`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`,class:`!text-cream hover:!bg-cream-wash`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1})])]),s(`section`,null,[s(`h2`,C,r(t(F)(`ds.heading.sizes`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,w,[a(u,{size:`sm`},{default:i(()=>[o(r(t(F)(`ds.buttons.small`)),1)]),_:1}),a(u,{size:`md`},{default:i(()=>[o(r(t(F)(`ds.buttons.medium`)),1)]),_:1}),a(u,{size:`lg`},{default:i(()=>[o(r(t(F)(`ds.buttons.large`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,T,r(t(F)(`ds.heading.withIcons`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,E,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`secondary`},{after:i(()=>[a(c,{name:`arrow-right`,size:18})]),default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`))+` `,1)]),_:1}),a(u,{variant:`ghost`},{before:i(()=>[a(c,{name:`heart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.save`)),1)]),_:1}),a(u,{variant:`accent`,size:`sm`},{before:i(()=>[a(c,{name:`check`,size:16})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.confirm`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,D,r(t(F)(`ds.heading.states`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,O,[a(u,null,{default:i(()=>[o(r(t(F)(`ds.heading.default`)),1)]),_:1}),a(u,{disabled:``},{default:i(()=>[o(r(t(F)(`ds.buttons.disabled`)),1)]),_:1}),a(u,{loading:``},{default:i(()=>[o(r(t(F)(`ds.buttons.loading`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,k,r(t(F)(`ds.heading.block`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,A,[a(u,{block:``,variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{block:``,variant:`secondary`},{default:i(()=>[o(r(t(F)(`ds.buttons.continueShopping`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,j,r(t(F)(`ds.heading.usage`)),1),s(`div`,M,[s(`pre`,N,`<Button variant="primary" size="md">
|
||||
<template #before><Icon name="cart" :size="18" /></template>
|
||||
`+r(t(F)(`ds.buttons.addToCart`))+`
|
||||
</Button>`,1)])])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{P as default};
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-BvZbJICa.js";import{t as l}from"./Badge-CudT491x.js";import{t as u}from"./SectionShell-XUVs_07L.js";import{t as d}from"./Card-CPlQ-6EI.js";var f={class:`eyebrow mb-5`},p={class:`grid md:grid-cols-3 gap-6`},m={class:`font-display text-2xl font-normal mb-2`},h={class:`text-[14px] text-muted leading-relaxed`},g={class:`font-display text-2xl font-normal mb-2`},_={class:`text-[14px] text-muted leading-relaxed`},v={class:`font-display text-2xl font-normal mb-2`},y={class:`text-[14px] opacity-80 leading-relaxed`},b={class:`eyebrow mb-5`},x={class:`grid md:grid-cols-2 gap-6`},S={class:`font-display text-2xl font-normal mb-2`},C={class:`text-[14px] text-muted leading-relaxed`},w={class:`font-display text-2xl font-normal mb-2`},T={class:`text-[14px] text-muted leading-relaxed`},E={class:`eyebrow mb-5`},D={class:`p-7`},O={class:`font-display text-2xl font-normal mb-2`},k={class:`text-[14px] text-muted leading-relaxed`},A={__name:`CardsSection`,setup(A){let{t:j}=c();return(c,A)=>(e(),n(u,{eyebrow:t(j)(`ds.eyebrow.components`),title:t(j)(`ds.cards.title`),description:t(j)(`ds.cards.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,f,r(t(j)(`ds.heading.tones`)),1),s(`div`,p,[a(d,{tone:`paper`},{default:i(()=>[a(l,{variant:`subtle`,class:`mb-4`},{default:i(()=>[o(r(t(j)(`ds.cards.paper`)),1)]),_:1}),s(`h3`,m,r(t(j)(`ds.cards.paperTitle`)),1),s(`p`,h,r(t(j)(`ds.cards.paperBody`)),1)]),_:1}),a(d,{tone:`cream`},{default:i(()=>[a(l,{variant:`subtle`,class:`mb-4`},{default:i(()=>[o(r(t(j)(`ds.cards.cream`)),1)]),_:1}),s(`h3`,g,r(t(j)(`ds.cards.creamTitle`)),1),s(`p`,_,r(t(j)(`ds.cards.creamBody`)),1)]),_:1}),a(d,{tone:`brand`},{default:i(()=>[a(l,{variant:`accent`,class:`mb-4`},{default:i(()=>[o(r(t(j)(`ds.cards.brand`)),1)]),_:1}),s(`h3`,v,r(t(j)(`ds.cards.brandTitle`)),1),s(`p`,y,r(t(j)(`ds.cards.brandBody`)),1)]),_:1})])]),s(`section`,null,[s(`h2`,b,r(t(j)(`ds.heading.interactive`)),1),s(`div`,x,[a(d,{tone:`paper`,interactive:``},{default:i(()=>[s(`h3`,S,r(t(j)(`ds.cards.hoverMe`)),1),s(`p`,C,r(t(j)(`ds.cards.hoverBody`)),1)]),_:1}),a(d,{tone:`cream`,interactive:``},{default:i(()=>[s(`h3`,w,r(t(j)(`ds.cards.hoverMeToo`)),1),s(`p`,T,r(t(j)(`ds.cards.hoverBodyAlt`)),1)]),_:1})])]),s(`section`,null,[s(`h2`,E,r(t(j)(`ds.heading.withoutPadding`)),1),a(d,{tone:`paper`,padded:!1},{default:i(()=>[A[2]||=s(`div`,{class:`h-40 bg-cream rounded-t-md`},null,-1),s(`div`,D,[s(`h3`,O,r(t(j)(`ds.cards.mediaTitle`)),1),s(`p`,k,[o(r(t(j)(`ds.cards.mediaBody`))+` `,1),A[0]||=s(`code`,{class:`font-mono text-[12px]`},`:padded="false"`,-1),A[1]||=o(`. `,-1)])])]),_:1})])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{A as default};
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-C2O_jcDr.js";import{t as l}from"./Badge-CudT491x.js";import{t as u}from"./SectionShell-XUVs_07L.js";import{t as d}from"./Card-CPlQ-6EI.js";var f={class:`eyebrow mb-5`},p={class:`grid md:grid-cols-3 gap-6`},m={class:`font-display text-2xl font-normal mb-2`},h={class:`text-[14px] text-muted leading-relaxed`},g={class:`font-display text-2xl font-normal mb-2`},_={class:`text-[14px] text-muted leading-relaxed`},v={class:`font-display text-2xl font-normal mb-2`},y={class:`text-[14px] opacity-80 leading-relaxed`},b={class:`eyebrow mb-5`},x={class:`grid md:grid-cols-2 gap-6`},S={class:`font-display text-2xl font-normal mb-2`},C={class:`text-[14px] text-muted leading-relaxed`},w={class:`font-display text-2xl font-normal mb-2`},T={class:`text-[14px] text-muted leading-relaxed`},E={class:`eyebrow mb-5`},D={class:`p-7`},O={class:`font-display text-2xl font-normal mb-2`},k={class:`text-[14px] text-muted leading-relaxed`},A={__name:`CardsSection`,setup(A){let{t:j}=c();return(c,A)=>(e(),n(u,{eyebrow:t(j)(`ds.eyebrow.components`),title:t(j)(`ds.cards.title`),description:t(j)(`ds.cards.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,f,r(t(j)(`ds.heading.tones`)),1),s(`div`,p,[a(d,{tone:`paper`},{default:i(()=>[a(l,{variant:`subtle`,class:`mb-4`},{default:i(()=>[o(r(t(j)(`ds.cards.paper`)),1)]),_:1}),s(`h3`,m,r(t(j)(`ds.cards.paperTitle`)),1),s(`p`,h,r(t(j)(`ds.cards.paperBody`)),1)]),_:1}),a(d,{tone:`cream`},{default:i(()=>[a(l,{variant:`subtle`,class:`mb-4`},{default:i(()=>[o(r(t(j)(`ds.cards.cream`)),1)]),_:1}),s(`h3`,g,r(t(j)(`ds.cards.creamTitle`)),1),s(`p`,_,r(t(j)(`ds.cards.creamBody`)),1)]),_:1}),a(d,{tone:`brand`},{default:i(()=>[a(l,{variant:`accent`,class:`mb-4`},{default:i(()=>[o(r(t(j)(`ds.cards.brand`)),1)]),_:1}),s(`h3`,v,r(t(j)(`ds.cards.brandTitle`)),1),s(`p`,y,r(t(j)(`ds.cards.brandBody`)),1)]),_:1})])]),s(`section`,null,[s(`h2`,b,r(t(j)(`ds.heading.interactive`)),1),s(`div`,x,[a(d,{tone:`paper`,interactive:``},{default:i(()=>[s(`h3`,S,r(t(j)(`ds.cards.hoverMe`)),1),s(`p`,C,r(t(j)(`ds.cards.hoverBody`)),1)]),_:1}),a(d,{tone:`cream`,interactive:``},{default:i(()=>[s(`h3`,w,r(t(j)(`ds.cards.hoverMeToo`)),1),s(`p`,T,r(t(j)(`ds.cards.hoverBodyAlt`)),1)]),_:1})])]),s(`section`,null,[s(`h2`,E,r(t(j)(`ds.heading.withoutPadding`)),1),a(d,{tone:`paper`,padded:!1},{default:i(()=>[A[2]||=s(`div`,{class:`h-40 bg-cream rounded-t-md`},null,-1),s(`div`,D,[s(`h3`,O,r(t(j)(`ds.cards.mediaTitle`)),1),s(`p`,k,[o(r(t(j)(`ds.cards.mediaBody`))+` `,1),A[0]||=s(`code`,{class:`font-mono text-[12px]`},`:padded="false"`,-1),A[1]||=o(`. `,-1)])])]),_:1})])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{A as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,S as r,c as i,ft as a,j as o,m as s,p as c,s as l}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as u}from"./Icon-CtR1FGIT.js";import{t as d}from"./i18n-BvZbJICa.js";import{c as f,d as p,f as m,l as h,p as g,u as _}from"./api-CJ2exAVU.js";import{t as v}from"./Button-DG-tA4DQ.js";import{t as y}from"./CartDrawer-Ut6nxZa3.js";import{t as b}from"./SectionShell-XUVs_07L.js";var x={class:`eyebrow mb-5`},S={class:`rounded-md border border-line bg-paper p-6 flex flex-col sm:flex-row sm:items-center gap-4`},C={class:`text-[13px] text-muted`},w={class:`eyebrow mb-5`},T={class:`text-[15px] text-muted leading-relaxed mb-4 max-w-2xl`},E={class:`eyebrow mb-5`},D={__name:`CartDrawerSection`,setup(D){let{t:O}=d(),k=g(),A=e(!1);async function j(){await h(),await f(`kaiser-natron-pulver-250-g-grosspackung`,2),await f(`kaiser-natron-bad-500-g`,1),A.value=!0}async function M({productId:e,quantity:t}){await m(e,t)}async function N(e){await p(e)}return r(()=>{_()}),(e,r)=>(t(),i(b,{eyebrow:n(O)(`ds.eyebrow.components`),title:n(O)(`ds.cartDrawer.title`),description:n(O)(`ds.cartDrawer.description`)},{default:o(()=>[l(`section`,null,[l(`h2`,x,a(n(O)(`ds.heading.default`)),1),l(`div`,S,[s(v,{variant:`primary`,onClick:j},{before:o(()=>[s(u,{name:`cart`,size:18})]),default:o(()=>[c(` `+a(n(O)(`ds.cartDrawer.demoLabel`)),1)]),_:1}),l(`p`,C,a(n(O)(`ds.cartDrawer.demoHint`)),1)])]),l(`section`,null,[l(`h2`,w,a(n(O)(`ds.cartDrawer.integrationTitle`)),1),l(`p`,T,a(n(O)(`ds.cartDrawer.integrationBody`)),1),r[2]||=l(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[l(`pre`,{class:`whitespace-pre-wrap`},`import {
|
||||
import{B as e,C as t,G as n,S as r,c as i,ft as a,j as o,m as s,p as c,s as l}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as u}from"./Icon-CtR1FGIT.js";import{t as d}from"./i18n-C2O_jcDr.js";import{c as f,d as p,f as m,l as h,p as g,u as _}from"./api-DeBxQCQq.js";import{t as v}from"./Button-DG-tA4DQ.js";import{t as y}from"./CartDrawer-CegjvllQ.js";import{t as b}from"./SectionShell-XUVs_07L.js";var x={class:`eyebrow mb-5`},S={class:`rounded-md border border-line bg-paper p-6 flex flex-col sm:flex-row sm:items-center gap-4`},C={class:`text-[13px] text-muted`},w={class:`eyebrow mb-5`},T={class:`text-[15px] text-muted leading-relaxed mb-4 max-w-2xl`},E={class:`eyebrow mb-5`},D={__name:`CartDrawerSection`,setup(D){let{t:O}=d(),k=g(),A=e(!1);async function j(){await h(),await f(`kaiser-natron-pulver-250-g-grosspackung`,2),await f(`kaiser-natron-bad-500-g`,1),A.value=!0}async function M({productId:e,quantity:t}){await m(e,t)}async function N(e){await p(e)}return r(()=>{_()}),(e,r)=>(t(),i(b,{eyebrow:n(O)(`ds.eyebrow.components`),title:n(O)(`ds.cartDrawer.title`),description:n(O)(`ds.cartDrawer.description`)},{default:o(()=>[l(`section`,null,[l(`h2`,x,a(n(O)(`ds.heading.default`)),1),l(`div`,S,[s(v,{variant:`primary`,onClick:j},{before:o(()=>[s(u,{name:`cart`,size:18})]),default:o(()=>[c(` `+a(n(O)(`ds.cartDrawer.demoLabel`)),1)]),_:1}),l(`p`,C,a(n(O)(`ds.cartDrawer.demoHint`)),1)])]),l(`section`,null,[l(`h2`,w,a(n(O)(`ds.cartDrawer.integrationTitle`)),1),l(`p`,T,a(n(O)(`ds.cartDrawer.integrationBody`)),1),r[2]||=l(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[l(`pre`,{class:`whitespace-pre-wrap`},`import {
|
||||
fetchCart,
|
||||
addToCart,
|
||||
updateCartItem,
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,T as n,ft as r,j as i,l as a,m as o,o as s,p as c,r as l,s as u,u as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{o as ee,t as te}from"./vue-router-Cyqru1db.js";import{t as f}from"./Icon-CtR1FGIT.js";import{t as p}from"./i18n-BvZbJICa.js";import{n as m}from"./products-BqW5PUnm.js";import{d as ne,f as re,p as ie}from"./api-CJ2exAVU.js";import{t as h}from"./Button-DG-tA4DQ.js";import{t as ae}from"./QuantityStepper-BB38-Td1.js";var g={key:0,class:`min-h-[55svh] flex items-center justify-center`},_={class:`flex flex-col gap-4 items-center text-center rounded-md border border-line bg-paper p-10 max-w-md w-full`},v={class:`inline-flex items-center justify-center w-14 h-14 rounded-full bg-cream text-brand`},y={class:`font-display text-xl text-brand`},b={class:`text-[14px] text-muted max-w-sm`},x={key:1,class:`flex flex-col gap-6`},S={class:`flex flex-col rounded-md border border-line bg-paper divide-y divide-line`},C={class:`shrink-0 w-20 h-20 rounded-sm bg-cream overflow-hidden flex items-center justify-center`},w=[`src`,`alt`],T={class:`flex-1 min-w-0`},E={class:`font-display text-base text-ink leading-tight`},D={key:0,class:`text-[12px] text-muted`},O={class:`mt-2 text-[13px] text-muted`},k={class:`flex items-center gap-4`},A={class:`text-[14px] font-semibold text-ink tabular-nums w-20 text-right`},j=[`aria-label`,`onClick`],M={class:`rounded-md border border-line bg-paper px-6 py-5 flex flex-col gap-2`},N={class:`flex items-baseline justify-between text-[14px]`},P={class:`text-muted`},F={class:`text-ink tabular-nums`},oe={class:`flex items-baseline justify-between text-[14px]`},I={class:`text-muted`},L={class:`text-ink tabular-nums`},R={class:`mt-1 pt-3 border-t border-line flex items-baseline justify-between`},z={class:`eyebrow`},B={class:`font-display text-2xl text-brand tabular-nums`},V={key:2,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={class:`flex-1 sm:flex-initial`},G=4.9,K={__name:`CartStep`,setup(K){let{t:q}=p(),J=ie(),Y=ee(),X=s(()=>J.isEmpty),Z=s(()=>J.subtotal),Q=s(()=>J.items.length?G:0),se=s(()=>+(Z.value+Q.value).toFixed(2));async function ce(e,t){await re(e,t)}async function le(e){await ne(e)}function $(){Y.push(`/checkout/account`)}function ue(){Y.push(`/`)}return(s,ee)=>(e(),d(l,null,[X.value?(e(),d(`div`,g,[u(`div`,_,[u(`span`,v,[o(f,{name:`cart`,size:24,"stroke-width":2})]),u(`p`,y,r(t(q)(`cart.empty.title`)),1),u(`p`,b,r(t(q)(`cart.empty.subtitle`)),1),o(t(te),{to:`/shop`,class:`inline-flex`},{default:i(()=>[o(h,{variant:`primary`,size:`md`},{default:i(()=>[c(r(t(q)(`checkout.cart.cta.shop`)),1)]),_:1})]),_:1})])])):(e(),d(`section`,x,[u(`ul`,S,[(e(!0),d(l,null,n(t(J).items,n=>(e(),d(`li`,{key:n.productId,class:`flex flex-col sm:flex-row sm:items-center gap-4 sm:gap-5 px-5 py-5 sm:px-6`},[u(`div`,C,[n.product?.image?(e(),d(`img`,{key:0,src:n.product.image,alt:n.product?.title||``,loading:`lazy`,decoding:`async`,class:`w-full h-full object-contain p-2`},null,8,w)):a(``,!0)]),u(`div`,T,[u(`p`,E,r(n.product?.title),1),n.product?.size?(e(),d(`p`,D,r(n.product.size),1)):a(``,!0),u(`p`,O,r(t(m)(n.unitPrice))+` `+r(t(q)(`checkout.cart.perItem`)),1)]),u(`div`,k,[o(ae,{"model-value":n.quantity,min:1,"onUpdate:modelValue":e=>ce(n.productId,e)},null,8,[`model-value`,`onUpdate:modelValue`]),u(`span`,A,r(t(m)(n.lineTotal)),1),u(`button`,{type:`button`,class:`text-muted hover:text-danger transition-colors duration-base`,"aria-label":t(q)(`cart.remove`),onClick:e=>le(n.productId)},[o(f,{name:`trash`,size:18,"stroke-width":2})],8,j)])]))),128))]),u(`dl`,M,[u(`div`,N,[u(`dt`,P,r(t(q)(`cart.subtotal`)),1),u(`dd`,F,r(t(m)(Z.value)),1)]),u(`div`,oe,[u(`dt`,I,r(t(q)(`checkout.cart.shipping`)),1),u(`dd`,L,r(t(m)(Q.value)),1)]),u(`div`,R,[u(`dt`,z,r(t(q)(`checkout.cart.total`)),1),u(`dd`,B,r(t(m)(se.value)),1)])])])),X.value?a(``,!0):(e(),d(`footer`,V,[u(`div`,H,[u(`div`,U,[o(h,{variant:`primary`,size:`lg`,block:``,type:`button`,onClick:ue},{default:i(()=>[c(r(t(q)(`checkout.exit`)),1)]),_:1})]),u(`div`,W,[o(h,{variant:`accent`,size:`lg`,block:``,onClick:$},{default:i(()=>[c(r(t(q)(`checkout.cart.cta.continue`)),1)]),_:1})])])]))],64))}};export{K as default};
|
||||
import{C as e,G as t,T as n,ft as r,j as i,l as a,m as o,o as s,p as c,r as l,s as u,u as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{o as ee,t as te}from"./vue-router-Cyqru1db.js";import{t as f}from"./Icon-CtR1FGIT.js";import{t as p}from"./i18n-C2O_jcDr.js";import{n as m}from"./products-CfIXFr2X.js";import{d as ne,f as re,p as ie}from"./api-DeBxQCQq.js";import{t as h}from"./Button-DG-tA4DQ.js";import{t as ae}from"./QuantityStepper-BB38-Td1.js";var g={key:0,class:`min-h-[55svh] flex items-center justify-center`},_={class:`flex flex-col gap-4 items-center text-center rounded-md border border-line bg-paper p-10 max-w-md w-full`},v={class:`inline-flex items-center justify-center w-14 h-14 rounded-full bg-cream text-brand`},y={class:`font-display text-xl text-brand`},b={class:`text-[14px] text-muted max-w-sm`},x={key:1,class:`flex flex-col gap-6`},S={class:`flex flex-col rounded-md border border-line bg-paper divide-y divide-line`},C={class:`shrink-0 w-20 h-20 rounded-sm bg-cream overflow-hidden flex items-center justify-center`},w=[`src`,`alt`],T={class:`flex-1 min-w-0`},E={class:`font-display text-base text-ink leading-tight`},D={key:0,class:`text-[12px] text-muted`},O={class:`mt-2 text-[13px] text-muted`},k={class:`flex items-center gap-4`},A={class:`text-[14px] font-semibold text-ink tabular-nums w-20 text-right`},j=[`aria-label`,`onClick`],M={class:`rounded-md border border-line bg-paper px-6 py-5 flex flex-col gap-2`},N={class:`flex items-baseline justify-between text-[14px]`},P={class:`text-muted`},F={class:`text-ink tabular-nums`},oe={class:`flex items-baseline justify-between text-[14px]`},I={class:`text-muted`},L={class:`text-ink tabular-nums`},R={class:`mt-1 pt-3 border-t border-line flex items-baseline justify-between`},z={class:`eyebrow`},B={class:`font-display text-2xl text-brand tabular-nums`},V={key:2,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={class:`flex-1 sm:flex-initial`},G=4.9,K={__name:`CartStep`,setup(K){let{t:q}=p(),J=ie(),Y=ee(),X=s(()=>J.isEmpty),Z=s(()=>J.subtotal),Q=s(()=>J.items.length?G:0),se=s(()=>+(Z.value+Q.value).toFixed(2));async function ce(e,t){await re(e,t)}async function le(e){await ne(e)}function $(){Y.push(`/checkout/account`)}function ue(){Y.push(`/`)}return(s,ee)=>(e(),d(l,null,[X.value?(e(),d(`div`,g,[u(`div`,_,[u(`span`,v,[o(f,{name:`cart`,size:24,"stroke-width":2})]),u(`p`,y,r(t(q)(`cart.empty.title`)),1),u(`p`,b,r(t(q)(`cart.empty.subtitle`)),1),o(t(te),{to:`/shop`,class:`inline-flex`},{default:i(()=>[o(h,{variant:`primary`,size:`md`},{default:i(()=>[c(r(t(q)(`checkout.cart.cta.shop`)),1)]),_:1})]),_:1})])])):(e(),d(`section`,x,[u(`ul`,S,[(e(!0),d(l,null,n(t(J).items,n=>(e(),d(`li`,{key:n.productId,class:`flex flex-col sm:flex-row sm:items-center gap-4 sm:gap-5 px-5 py-5 sm:px-6`},[u(`div`,C,[n.product?.image?(e(),d(`img`,{key:0,src:n.product.image,alt:n.product?.title||``,loading:`lazy`,decoding:`async`,class:`w-full h-full object-contain p-2`},null,8,w)):a(``,!0)]),u(`div`,T,[u(`p`,E,r(n.product?.title),1),n.product?.size?(e(),d(`p`,D,r(n.product.size),1)):a(``,!0),u(`p`,O,r(t(m)(n.unitPrice))+` `+r(t(q)(`checkout.cart.perItem`)),1)]),u(`div`,k,[o(ae,{"model-value":n.quantity,min:1,"onUpdate:modelValue":e=>ce(n.productId,e)},null,8,[`model-value`,`onUpdate:modelValue`]),u(`span`,A,r(t(m)(n.lineTotal)),1),u(`button`,{type:`button`,class:`text-muted hover:text-danger transition-colors duration-base`,"aria-label":t(q)(`cart.remove`),onClick:e=>le(n.productId)},[o(f,{name:`trash`,size:18,"stroke-width":2})],8,j)])]))),128))]),u(`dl`,M,[u(`div`,N,[u(`dt`,P,r(t(q)(`cart.subtotal`)),1),u(`dd`,F,r(t(m)(Z.value)),1)]),u(`div`,oe,[u(`dt`,I,r(t(q)(`checkout.cart.shipping`)),1),u(`dd`,L,r(t(m)(Q.value)),1)]),u(`div`,R,[u(`dt`,z,r(t(q)(`checkout.cart.total`)),1),u(`dd`,B,r(t(m)(se.value)),1)])])])),X.value?a(``,!0):(e(),d(`footer`,V,[u(`div`,H,[u(`div`,U,[o(h,{variant:`primary`,size:`lg`,block:``,type:`button`,onClick:ue},{default:i(()=>[c(r(t(q)(`checkout.exit`)),1)]),_:1})]),u(`div`,W,[o(h,{variant:`accent`,size:`lg`,block:``,onClick:$},{default:i(()=>[c(r(t(q)(`checkout.cart.cta.continue`)),1)]),_:1})])])]))],64))}};export{K as default};
|
||||
1
dist/assets/CategoryPage-Bl_skZ4f.js
vendored
Normal file
1
dist/assets/CategoryPage-Bl_skZ4f.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/assets/CategoryPage-CnItmUTD.js
vendored
1
dist/assets/CategoryPage-CnItmUTD.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,T as r,c as i,ft as a,j as o,m as s,o as c,r as l,s as u,u as d,ut as f}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as p}from"./i18n-BvZbJICa.js";import{t as m}from"./CheckoutStepper-EkS1Qntj.js";import{t as h}from"./SectionShell-XUVs_07L.js";var g={class:`eyebrow mb-5`},_={class:`flex flex-col gap-6`},v={class:`eyebrow text-muted`},y={class:`eyebrow mb-5`},b={class:`rounded-md border border-line bg-paper p-6 flex flex-col gap-4`},x={class:`flex flex-wrap gap-2`},S=[`onClick`],C={class:`eyebrow mb-5`},w={__name:`CheckoutStepperSection`,setup(w){let{t:T}=p(),E=e(`shipping`),D=c(()=>[{key:`cart`,label:T(`checkout.step.cart`),to:`/checkout/cart`,completed:!0},{key:`account`,label:T(`checkout.step.account`),to:`/checkout/account`,completed:!0},{key:`shipping`,label:T(`checkout.step.shipping`),to:`/checkout/shipping`,completed:!1},{key:`payment`,label:T(`checkout.step.payment`),to:`/checkout/payment`,completed:!1}]),O=[`cart`,`account`,`shipping`,`payment`];return(e,c)=>(t(),i(h,{eyebrow:n(T)(`ds.eyebrow.components`),title:n(T)(`ds.checkoutStepper.title`),description:n(T)(`ds.checkoutStepper.description`)},{default:o(()=>[u(`section`,null,[u(`h2`,g,a(n(T)(`ds.heading.states`)),1),u(`div`,_,[(t(),d(l,null,r(O,e=>u(`div`,{key:e,class:`rounded-md border border-line bg-paper p-6 flex flex-col gap-3`},[u(`p`,v,a(n(T)(`checkout.step.${e}`))+` active`,1),s(m,{steps:D.value,"active-key":e},null,8,[`steps`,`active-key`])])),64))])]),u(`section`,null,[u(`h2`,y,a(n(T)(`ds.heading.interactive`)),1),u(`div`,b,[u(`div`,x,[(t(),d(l,null,r(O,e=>u(`button`,{key:e,type:`button`,class:f([`px-3 py-1.5 rounded-pill border text-[12px] font-semibold tracking-label`,E.value===e?`bg-brand text-cream border-brand`:`bg-paper text-brand border-line hover:border-brand`]),onClick:t=>E.value=e},a(n(T)(`checkout.step.${e}`)),11,S)),64))]),s(m,{steps:D.value,"active-key":E.value},null,8,[`steps`,`active-key`])])]),u(`section`,null,[u(`h2`,C,a(n(T)(`ds.heading.usage`)),1),c[0]||=u(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[u(`pre`,{class:`whitespace-pre-wrap`},`<CheckoutStepper
|
||||
import{B as e,C as t,G as n,T as r,c as i,ft as a,j as o,m as s,o as c,r as l,s as u,u as d,ut as f}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as p}from"./i18n-C2O_jcDr.js";import{t as m}from"./CheckoutStepper-EkS1Qntj.js";import{t as h}from"./SectionShell-XUVs_07L.js";var g={class:`eyebrow mb-5`},_={class:`flex flex-col gap-6`},v={class:`eyebrow text-muted`},y={class:`eyebrow mb-5`},b={class:`rounded-md border border-line bg-paper p-6 flex flex-col gap-4`},x={class:`flex flex-wrap gap-2`},S=[`onClick`],C={class:`eyebrow mb-5`},w={__name:`CheckoutStepperSection`,setup(w){let{t:T}=p(),E=e(`shipping`),D=c(()=>[{key:`cart`,label:T(`checkout.step.cart`),to:`/checkout/cart`,completed:!0},{key:`account`,label:T(`checkout.step.account`),to:`/checkout/account`,completed:!0},{key:`shipping`,label:T(`checkout.step.shipping`),to:`/checkout/shipping`,completed:!1},{key:`payment`,label:T(`checkout.step.payment`),to:`/checkout/payment`,completed:!1}]),O=[`cart`,`account`,`shipping`,`payment`];return(e,c)=>(t(),i(h,{eyebrow:n(T)(`ds.eyebrow.components`),title:n(T)(`ds.checkoutStepper.title`),description:n(T)(`ds.checkoutStepper.description`)},{default:o(()=>[u(`section`,null,[u(`h2`,g,a(n(T)(`ds.heading.states`)),1),u(`div`,_,[(t(),d(l,null,r(O,e=>u(`div`,{key:e,class:`rounded-md border border-line bg-paper p-6 flex flex-col gap-3`},[u(`p`,v,a(n(T)(`checkout.step.${e}`))+` active`,1),s(m,{steps:D.value,"active-key":e},null,8,[`steps`,`active-key`])])),64))])]),u(`section`,null,[u(`h2`,y,a(n(T)(`ds.heading.interactive`)),1),u(`div`,b,[u(`div`,x,[(t(),d(l,null,r(O,e=>u(`button`,{key:e,type:`button`,class:f([`px-3 py-1.5 rounded-pill border text-[12px] font-semibold tracking-label`,E.value===e?`bg-brand text-cream border-brand`:`bg-paper text-brand border-line hover:border-brand`]),onClick:t=>E.value=e},a(n(T)(`checkout.step.${e}`)),11,S)),64))]),s(m,{steps:D.value,"active-key":E.value},null,8,[`steps`,`active-key`])])]),u(`section`,null,[u(`h2`,C,a(n(T)(`ds.heading.usage`)),1),c[0]||=u(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[u(`pre`,{class:`whitespace-pre-wrap`},`<CheckoutStepper
|
||||
:steps="steps"
|
||||
:active-key="activeKey"
|
||||
/>
|
||||
@@ -1 +1 @@
|
||||
import{B as e,C as t,G as n,S as r,ft as i,j as a,l as o,m as s,o as c,p as l,s as u,u as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as f,t as p}from"./vue-router-Cyqru1db.js";import{t as m}from"./Icon-CtR1FGIT.js";import{t as h}from"./i18n-BvZbJICa.js";import{a as g}from"./api-CJ2exAVU.js";import{t as _}from"./Button-DG-tA4DQ.js";var v={class:`min-h-svh flex flex-col bg-cream`},y={class:`text-ink flex-1 flex flex-col justify-center`},b={class:`mx-auto w-full max-w-3xl px-6 sm:px-8 md:px-12 lg:px-16 py-10 sm:py-14 md:py-16 lg:py-20`},x={class:`rounded-md border border-line bg-paper p-8 md:p-10 flex flex-col gap-6 items-center text-center`},S={class:`relative w-20 h-20`},C={class:`absolute inset-0 rounded-full bg-brand text-accent flex items-center justify-center`},w={class:`eyebrow`},T={class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},E={class:`italic font-light text-brand`},D={class:`text-base leading-relaxed text-muted max-w-md`},O={key:0,class:`mt-2 inline-flex items-center gap-2 rounded-pill border border-cream-dark bg-cream px-4 py-2 text-[13px] text-ink`},k={class:`eyebrow text-muted`},A={class:`font-mono text-[12px] text-brand`},j={key:1,class:`text-[13px] text-danger mt-2`,role:`alert`,"aria-live":`polite`},M={class:`mt-4 flex flex-col gap-3 w-full max-w-sm`},N={key:2,class:`text-[12px] text-muted mt-2`},P={__name:`CheckoutSuccessPage`,setup(P){let{t:F}=h(),I=f(),L=e(null),R=e(``),z=e(!0),B=c(()=>String(I.query.order||``));return r(async()=>{if(!B.value){R.value=F(`checkout.success.missing`),z.value=!1;return}try{L.value=await g({orderId:B.value})}catch(e){R.value=e?.message||F(`checkout.error.generic`)}finally{z.value=!1}}),(e,r)=>(t(),d(`div`,v,[u(`main`,y,[u(`div`,b,[u(`article`,x,[u(`div`,S,[r[0]||=u(`span`,{"aria-hidden":`true`,class:`absolute inset-0 rounded-full bg-brand-wash`,style:{animation:`var(--animate-pulse-soft)`}},null,-1),u(`span`,C,[s(m,{name:`check`,size:36,"stroke-width":2.4})])]),u(`p`,w,i(n(F)(`checkout.success.eyebrow`)),1),u(`h1`,T,[l(i(n(F)(`checkout.success.headline`))+` `,1),u(`em`,E,i(n(F)(`checkout.success.headline.em`)),1)]),u(`p`,D,i(n(F)(`checkout.success.sub`)),1),B.value?(t(),d(`div`,O,[u(`span`,k,i(n(F)(`checkout.success.orderId`)),1),u(`span`,A,i(B.value),1)])):o(``,!0),R.value?(t(),d(`p`,j,i(R.value),1)):o(``,!0),u(`div`,M,[s(n(p),{to:`/`,class:`block`},{default:a(()=>[s(_,{variant:`primary`,size:`lg`,class:`w-full`},{default:a(()=>[l(i(n(F)(`checkout.success.cta.home`)),1)]),_:1})]),_:1}),s(n(p),{to:`/shop`,class:`block`},{default:a(()=>[s(_,{variant:`secondary`,size:`lg`,class:`w-full`},{default:a(()=>[l(i(n(F)(`checkout.success.cta.shop`)),1)]),_:1})]),_:1})]),!z.value&&L.value?(t(),d(`p`,N,i(n(F)(`checkout.success.email`)),1)):o(``,!0)])])])]))}};export{P as default};
|
||||
import{B as e,C as t,G as n,S as r,ft as i,j as a,l as o,m as s,o as c,p as l,s as u,u as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as f,t as p}from"./vue-router-Cyqru1db.js";import{t as m}from"./Icon-CtR1FGIT.js";import{t as h}from"./i18n-C2O_jcDr.js";import{a as g}from"./api-DeBxQCQq.js";import{t as _}from"./Button-DG-tA4DQ.js";var v={class:`min-h-svh flex flex-col bg-cream`},y={class:`text-ink flex-1 flex flex-col justify-center`},b={class:`mx-auto w-full max-w-3xl px-6 sm:px-8 md:px-12 lg:px-16 py-10 sm:py-14 md:py-16 lg:py-20`},x={class:`rounded-md border border-line bg-paper p-8 md:p-10 flex flex-col gap-6 items-center text-center`},S={class:`relative w-20 h-20`},C={class:`absolute inset-0 rounded-full bg-brand text-accent flex items-center justify-center`},w={class:`eyebrow`},T={class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},E={class:`italic font-light text-brand`},D={class:`text-base leading-relaxed text-muted max-w-md`},O={key:0,class:`mt-2 inline-flex items-center gap-2 rounded-pill border border-cream-dark bg-cream px-4 py-2 text-[13px] text-ink`},k={class:`eyebrow text-muted`},A={class:`font-mono text-[12px] text-brand`},j={key:1,class:`text-[13px] text-danger mt-2`,role:`alert`,"aria-live":`polite`},M={class:`mt-4 flex flex-col gap-3 w-full max-w-sm`},N={key:2,class:`text-[12px] text-muted mt-2`},P={__name:`CheckoutSuccessPage`,setup(P){let{t:F}=h(),I=f(),L=e(null),R=e(``),z=e(!0),B=c(()=>String(I.query.order||``));return r(async()=>{if(!B.value){R.value=F(`checkout.success.missing`),z.value=!1;return}try{L.value=await g({orderId:B.value})}catch(e){R.value=e?.message||F(`checkout.error.generic`)}finally{z.value=!1}}),(e,r)=>(t(),d(`div`,v,[u(`main`,y,[u(`div`,b,[u(`article`,x,[u(`div`,S,[r[0]||=u(`span`,{"aria-hidden":`true`,class:`absolute inset-0 rounded-full bg-brand-wash`,style:{animation:`var(--animate-pulse-soft)`}},null,-1),u(`span`,C,[s(m,{name:`check`,size:36,"stroke-width":2.4})])]),u(`p`,w,i(n(F)(`checkout.success.eyebrow`)),1),u(`h1`,T,[l(i(n(F)(`checkout.success.headline`))+` `,1),u(`em`,E,i(n(F)(`checkout.success.headline.em`)),1)]),u(`p`,D,i(n(F)(`checkout.success.sub`)),1),B.value?(t(),d(`div`,O,[u(`span`,k,i(n(F)(`checkout.success.orderId`)),1),u(`span`,A,i(B.value),1)])):o(``,!0),R.value?(t(),d(`p`,j,i(R.value),1)):o(``,!0),u(`div`,M,[s(n(p),{to:`/`,class:`block`},{default:a(()=>[s(_,{variant:`primary`,size:`lg`,class:`w-full`},{default:a(()=>[l(i(n(F)(`checkout.success.cta.home`)),1)]),_:1})]),_:1}),s(n(p),{to:`/shop`,class:`block`},{default:a(()=>[s(_,{variant:`secondary`,size:`lg`,class:`w-full`},{default:a(()=>[l(i(n(F)(`checkout.success.cta.shop`)),1)]),_:1})]),_:1})]),!z.value&&L.value?(t(),d(`p`,N,i(n(F)(`checkout.success.email`)),1)):o(``,!0)])])])]))}};export{P as default};
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,T as n,c as r,dt as i,ft as a,j as o,o as s,r as c,s as l,u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as d}from"./i18n-BvZbJICa.js";import{t as f}from"./SectionShell-XUVs_07L.js";var p={class:`eyebrow mb-5`},m={class:`grid grid-cols-2 sm:grid-cols-3 gap-4`},h={class:`px-4 py-3`},g={class:`font-mono text-[12px] text-ink block`},_={__name:`ColorsSection`,setup(_){let{t:v}=d(),y=s(()=>[{title:v(`ds.colors.group.brand`),names:[`brand`,`brand-hover`,`brand-soft`]},{title:v(`ds.colors.group.accent`),names:[`accent`,`accent-soft`,`accent-ink`,`accent-fill`,`accent-fill-hover`,`accent-fill-ink`]},{title:v(`ds.colors.group.surface`),names:[`surface`,`paper`,`cream`]},{title:v(`ds.colors.group.ink`),names:[`ink`,`muted`]},{title:v(`ds.colors.group.line`),names:[`line`,`line-strong`]},{title:v(`ds.colors.group.semantic`),names:[`success`,`warning`,`danger`]}]);return(s,d)=>(e(),r(f,{eyebrow:t(v)(`ds.eyebrow.tokens`),title:t(v)(`ds.colors.title`),description:t(v)(`ds.colors.description`)},{default:o(()=>[(e(!0),u(c,null,n(y.value,t=>(e(),u(`section`,{key:t.title},[l(`h2`,p,a(t.title),1),l(`div`,m,[(e(!0),u(c,null,n(t.names,t=>(e(),u(`div`,{key:t,class:`rounded-md border border-line overflow-hidden bg-paper`},[l(`div`,{class:`h-28 border-b border-line`,style:i({background:`var(--color-${t})`})},null,4),l(`div`,h,[l(`code`,g,`--color-`+a(t),1)])]))),128))])]))),128))]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{_ as default};
|
||||
import{C as e,G as t,T as n,c as r,dt as i,ft as a,j as o,o as s,r as c,s as l,u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as d}from"./i18n-C2O_jcDr.js";import{t as f}from"./SectionShell-XUVs_07L.js";var p={class:`eyebrow mb-5`},m={class:`grid grid-cols-2 sm:grid-cols-3 gap-4`},h={class:`px-4 py-3`},g={class:`font-mono text-[12px] text-ink block`},_={__name:`ColorsSection`,setup(_){let{t:v}=d(),y=s(()=>[{title:v(`ds.colors.group.brand`),names:[`brand`,`brand-hover`,`brand-soft`]},{title:v(`ds.colors.group.accent`),names:[`accent`,`accent-soft`,`accent-ink`,`accent-fill`,`accent-fill-hover`,`accent-fill-ink`]},{title:v(`ds.colors.group.surface`),names:[`surface`,`paper`,`cream`]},{title:v(`ds.colors.group.ink`),names:[`ink`,`muted`]},{title:v(`ds.colors.group.line`),names:[`line`,`line-strong`]},{title:v(`ds.colors.group.semantic`),names:[`success`,`warning`,`danger`]}]);return(s,d)=>(e(),r(f,{eyebrow:t(v)(`ds.eyebrow.tokens`),title:t(v)(`ds.colors.title`),description:t(v)(`ds.colors.description`)},{default:o(()=>[(e(!0),u(c,null,n(y.value,t=>(e(),u(`section`,{key:t.title},[l(`h2`,p,a(t.title),1),l(`div`,m,[(e(!0),u(c,null,n(t.names,t=>(e(),u(`div`,{key:t,class:`rounded-md border border-line overflow-hidden bg-paper`},[l(`div`,{class:`h-28 border-b border-line`,style:i({background:`var(--color-${t})`})},null,4),l(`div`,h,[l(`code`,g,`--color-`+a(t),1)])]))),128))])]))),128))]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{_ as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{A as e,B as t,C as n,G as r,S as i,f as a,ft as o,l as s,o as c,s as l,u,ut as d,x as f}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as p}from"./preload-helper-ca-nBW7U.js";import{t as m}from"./i18n-BvZbJICa.js";var h={class:`flex flex-col gap-3`},g={key:1,class:`grid gap-3 sm:grid-cols-2`},_=[`disabled`,`aria-label`],v=[`disabled`,`aria-label`],y={key:2,class:`text-[13px] text-danger`},b={__name:`ExpressCheckoutMount`,props:{intent:{type:Object,default:null},returnUrl:{type:String,required:!0},busy:{type:Boolean,default:!1}},emits:[`pay`,`error`],setup(b,{expose:x,emit:S}){let{t:C}=m(),w=b,T=S,E=t(null),D=t(null),O=t(!1),k=t(``),A=c(()=>/^pi_stub_express_/.test(w.intent?.clientSecret||``));function j(e){w.busy||w.intent||T(`pay`,{wallet:e})}async function M(){if(!(!w.intent||typeof window>`u`)){if(A.value){O.value=!0;return}try{let e=[`@stripe`,`stripe-js`].join(`/`),{loadStripe:t}=await p(()=>import(e),[]),n=await t(w.intent.publishableKey);if(!n)throw Error(`Stripe.js failed to initialise.`);E.value=n;let r=n.elements({clientSecret:w.intent.clientSecret,appearance:{theme:`flat`,variables:{colorPrimary:`#006548`,colorBackground:`#ffffff`,colorText:`#0f3825`,fontFamily:`"DM Sans", ui-sans-serif, system-ui, sans-serif`,borderRadius:`10px`,spacingUnit:`4px`}}});D.value=r;let i=r.create(`expressCheckout`,{buttonType:{applePay:`buy`,googlePay:`buy`},buttonTheme:{applePay:`black`,googlePay:`black`},buttonHeight:48});i.mount(`#express-checkout-element`),i.on(`ready`,()=>{O.value=!0}),i.on(`loaderror`,e=>{k.value=e?.error?.message||`Failed to load wallet buttons.`}),i.on(`confirm`,async()=>{let e=await n.confirmPayment({elements:r,clientSecret:w.intent.clientSecret,confirmParams:{return_url:w.returnUrl}});e?.error&&T(`error`,e.error)})}catch(e){k.value=e?.message||String(e)}}}async function N(){return w.intent?A.value?(await new Promise(e=>setTimeout(e,600)),{paymentIntent:{id:(w.intent.clientSecret||``).split(`_secret_`)[0]||`pi_stub`,status:`succeeded`}}):{error:{message:`Express confirm is driven by Stripe.`}}:{error:{message:`No intent.`}}}return x({confirm:N,ready:O}),i(()=>{w.intent&&M()}),e(()=>w.intent?.clientSecret,e=>{e&&M()}),f(()=>{E.value=null,D.value=null}),(e,t)=>(n(),u(`div`,h,[b.intent&&!A.value?(n(),u(`div`,{key:0,id:`express-checkout-element`,class:d([`min-h-[52px]`,{"opacity-60":!O.value}]),"aria-live":`polite`},null,2)):(n(),u(`div`,g,[l(`button`,{type:`button`,class:`inline-flex items-center justify-center gap-2 rounded-sm bg-ink h-12 px-5 text-paper transition-colors duration-base hover:bg-brand disabled:opacity-50 disabled:cursor-not-allowed`,disabled:b.busy,"aria-label":r(C)(`checkout.express.applePay.aria`),onClick:t[0]||=e=>j(`apple`)},[...t[2]||=[l(`svg`,{width:`18`,height:`22`,viewBox:`0 0 18 22`,fill:`currentColor`,"aria-hidden":`true`},[l(`path`,{d:`M14.94 11.36c-.02-2.5 2.04-3.7 2.13-3.76-1.16-1.7-2.97-1.94-3.61-1.96-1.54-.16-3 .9-3.78.9-.78 0-1.98-.88-3.26-.86-1.68.02-3.23.97-4.1 2.47-1.74 3.02-.45 7.5 1.25 9.95.83 1.2 1.82 2.55 3.12 2.5 1.25-.05 1.72-.81 3.23-.81 1.51 0 1.93.81 3.25.78 1.34-.02 2.2-1.22 3.02-2.43.95-1.4 1.34-2.75 1.36-2.82-.03-.01-2.61-1-2.61-3.96zM12.6 4.05c.7-.85 1.16-2.02 1.04-3.18-1 .04-2.21.66-2.93 1.5-.65.74-1.21 1.93-1.06 3.07 1.11.09 2.25-.56 2.95-1.39z`})],-1),l(`span`,{class:`text-[14px] font-medium tracking-tight`},`Pay`,-1)]],8,_),l(`button`,{type:`button`,class:`inline-flex items-center justify-center gap-2 rounded-sm bg-ink h-12 px-5 text-paper transition-colors duration-base hover:bg-brand disabled:opacity-50 disabled:cursor-not-allowed`,disabled:b.busy,"aria-label":r(C)(`checkout.express.googlePay.aria`),onClick:t[1]||=e=>j(`google`)},[...t[3]||=[a(`<svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M19.6 10.23c0-.68-.06-1.36-.18-2.03H10v3.84h5.4a4.62 4.62 0 0 1-2 3.03v2.5h3.22c1.89-1.74 2.98-4.31 2.98-7.34z" fill="#4285F4"></path><path d="M10 20c2.7 0 4.97-.89 6.62-2.42l-3.22-2.5c-.9.6-2.04.96-3.4.96-2.6 0-4.81-1.76-5.6-4.13H1.07v2.59A10 10 0 0 0 10 20z" fill="#34A853"></path><path d="M4.4 11.91a6 6 0 0 1 0-3.83V5.5H1.07a10 10 0 0 0 0 9l3.33-2.59z" fill="#FBBC04"></path><path d="M10 3.96a5.4 5.4 0 0 1 3.83 1.5l2.85-2.85A9.6 9.6 0 0 0 10 0 10 10 0 0 0 1.07 5.5L4.4 8.08C5.19 5.71 7.4 3.96 10 3.96z" fill="#EA4335"></path></svg><span class="text-[14px] font-medium tracking-tight">Pay</span>`,2)]],8,v)])),k.value?(n(),u(`p`,y,o(k.value),1)):s(``,!0)]))}};export{b as t};
|
||||
import{A as e,B as t,C as n,G as r,S as i,f as a,ft as o,l as s,o as c,s as l,u,ut as d,x as f}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as p}from"./preload-helper-ca-nBW7U.js";import{t as m}from"./i18n-C2O_jcDr.js";var h={class:`flex flex-col gap-3`},g={key:1,class:`grid gap-3 sm:grid-cols-2`},_=[`disabled`,`aria-label`],v=[`disabled`,`aria-label`],y={key:2,class:`text-[13px] text-danger`},b={__name:`ExpressCheckoutMount`,props:{intent:{type:Object,default:null},returnUrl:{type:String,required:!0},busy:{type:Boolean,default:!1}},emits:[`pay`,`error`],setup(b,{expose:x,emit:S}){let{t:C}=m(),w=b,T=S,E=t(null),D=t(null),O=t(!1),k=t(``),A=c(()=>/^pi_stub_express_/.test(w.intent?.clientSecret||``));function j(e){w.busy||w.intent||T(`pay`,{wallet:e})}async function M(){if(!(!w.intent||typeof window>`u`)){if(A.value){O.value=!0;return}try{let e=[`@stripe`,`stripe-js`].join(`/`),{loadStripe:t}=await p(()=>import(e),[]),n=await t(w.intent.publishableKey);if(!n)throw Error(`Stripe.js failed to initialise.`);E.value=n;let r=n.elements({clientSecret:w.intent.clientSecret,appearance:{theme:`flat`,variables:{colorPrimary:`#006548`,colorBackground:`#ffffff`,colorText:`#0f3825`,fontFamily:`"DM Sans", ui-sans-serif, system-ui, sans-serif`,borderRadius:`10px`,spacingUnit:`4px`}}});D.value=r;let i=r.create(`expressCheckout`,{buttonType:{applePay:`buy`,googlePay:`buy`},buttonTheme:{applePay:`black`,googlePay:`black`},buttonHeight:48});i.mount(`#express-checkout-element`),i.on(`ready`,()=>{O.value=!0}),i.on(`loaderror`,e=>{k.value=e?.error?.message||`Failed to load wallet buttons.`}),i.on(`confirm`,async()=>{let e=await n.confirmPayment({elements:r,clientSecret:w.intent.clientSecret,confirmParams:{return_url:w.returnUrl}});e?.error&&T(`error`,e.error)})}catch(e){k.value=e?.message||String(e)}}}async function N(){return w.intent?A.value?(await new Promise(e=>setTimeout(e,600)),{paymentIntent:{id:(w.intent.clientSecret||``).split(`_secret_`)[0]||`pi_stub`,status:`succeeded`}}):{error:{message:`Express confirm is driven by Stripe.`}}:{error:{message:`No intent.`}}}return x({confirm:N,ready:O}),i(()=>{w.intent&&M()}),e(()=>w.intent?.clientSecret,e=>{e&&M()}),f(()=>{E.value=null,D.value=null}),(e,t)=>(n(),u(`div`,h,[b.intent&&!A.value?(n(),u(`div`,{key:0,id:`express-checkout-element`,class:d([`min-h-[52px]`,{"opacity-60":!O.value}]),"aria-live":`polite`},null,2)):(n(),u(`div`,g,[l(`button`,{type:`button`,class:`inline-flex items-center justify-center gap-2 rounded-sm bg-ink h-12 px-5 text-paper transition-colors duration-base hover:bg-brand disabled:opacity-50 disabled:cursor-not-allowed`,disabled:b.busy,"aria-label":r(C)(`checkout.express.applePay.aria`),onClick:t[0]||=e=>j(`apple`)},[...t[2]||=[l(`svg`,{width:`18`,height:`22`,viewBox:`0 0 18 22`,fill:`currentColor`,"aria-hidden":`true`},[l(`path`,{d:`M14.94 11.36c-.02-2.5 2.04-3.7 2.13-3.76-1.16-1.7-2.97-1.94-3.61-1.96-1.54-.16-3 .9-3.78.9-.78 0-1.98-.88-3.26-.86-1.68.02-3.23.97-4.1 2.47-1.74 3.02-.45 7.5 1.25 9.95.83 1.2 1.82 2.55 3.12 2.5 1.25-.05 1.72-.81 3.23-.81 1.51 0 1.93.81 3.25.78 1.34-.02 2.2-1.22 3.02-2.43.95-1.4 1.34-2.75 1.36-2.82-.03-.01-2.61-1-2.61-3.96zM12.6 4.05c.7-.85 1.16-2.02 1.04-3.18-1 .04-2.21.66-2.93 1.5-.65.74-1.21 1.93-1.06 3.07 1.11.09 2.25-.56 2.95-1.39z`})],-1),l(`span`,{class:`text-[14px] font-medium tracking-tight`},`Pay`,-1)]],8,_),l(`button`,{type:`button`,class:`inline-flex items-center justify-center gap-2 rounded-sm bg-ink h-12 px-5 text-paper transition-colors duration-base hover:bg-brand disabled:opacity-50 disabled:cursor-not-allowed`,disabled:b.busy,"aria-label":r(C)(`checkout.express.googlePay.aria`),onClick:t[1]||=e=>j(`google`)},[...t[3]||=[a(`<svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M19.6 10.23c0-.68-.06-1.36-.18-2.03H10v3.84h5.4a4.62 4.62 0 0 1-2 3.03v2.5h3.22c1.89-1.74 2.98-4.31 2.98-7.34z" fill="#4285F4"></path><path d="M10 20c2.7 0 4.97-.89 6.62-2.42l-3.22-2.5c-.9.6-2.04.96-3.4.96-2.6 0-4.81-1.76-5.6-4.13H1.07v2.59A10 10 0 0 0 10 20z" fill="#34A853"></path><path d="M4.4 11.91a6 6 0 0 1 0-3.83V5.5H1.07a10 10 0 0 0 0 9l3.33-2.59z" fill="#FBBC04"></path><path d="M10 3.96a5.4 5.4 0 0 1 3.83 1.5l2.85-2.85A9.6 9.6 0 0 0 10 0 10 10 0 0 0 1.07 5.5L4.4 8.08C5.19 5.71 7.4 3.96 10 3.96z" fill="#EA4335"></path></svg><span class="text-[14px] font-medium tracking-tight">Pay</span>`,2)]],8,v)])),k.value?(n(),u(`p`,y,o(k.value),1)):s(``,!0)]))}};export{b as t};
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,T as n,ft as r,m as i,o as a,r as o,s,u as c,ut as l}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as u}from"./Logo-K2VN1F6l.js";import{t as d}from"./i18n-BvZbJICa.js";var f={class:`mx-auto w-full max-w-6xl px-6 py-12 sm:px-8 sm:py-14 md:px-12 md:py-16 lg:px-16`},p={class:`grid gap-10 md:grid-cols-[1.4fr_1fr_1fr] md:gap-12`},m={class:`flex flex-col gap-4 max-w-sm`},h=[`aria-label`],g={class:`flex flex-col gap-2`},_=[`href`],v=[`aria-label`],y={class:`flex flex-col gap-2`},b=[`href`],x={__name:`Footer`,props:{variant:{type:String,default:`cream`,validator:e=>[`cream`,`brand`,`paper`].includes(e)}},setup(x){let S=x,{t:C}=d(),w=a(()=>S.variant===`brand`?{surface:`bg-brand text-cream`,topRule:`border-cream-line`,bottomRule:`border-cream-line/40`,muted:`text-cream/80`,logo:`text-cream`,link:`hover:text-highlight`}:S.variant===`paper`?{surface:`bg-paper text-brand`,topRule:`border-line`,bottomRule:`border-line/60`,muted:`text-muted`,logo:`text-brand`,link:`hover:text-brand-hover`}:{surface:`bg-cream text-brand`,topRule:`border-line`,bottomRule:`border-line/60`,muted:`text-muted`,logo:`text-brand`,link:`hover:text-brand-hover`}),T=[{key:`footer.legal.impressum`,href:`/impressum`},{key:`footer.legal.datenschutz`,href:`/datenschutz`}],E=[{key:`footer.explore.shop`,href:`/shop`},{key:`footer.explore.pflege`,href:`/pflege`},{key:`footer.explore.haushalt`,href:`/haushalt`},{key:`footer.explore.bundles`,href:`/#bundles`},{key:`footer.explore.about`,href:`/#about`}],D=new Date().getFullYear();return(a,d)=>(e(),c(`footer`,{class:l([`border-t`,w.value.surface,w.value.topRule])},[s(`div`,f,[s(`div`,p,[s(`div`,m,[i(u,{class:l([`w-20 md:w-24 h-auto`,w.value.logo])},null,8,[`class`]),s(`p`,{class:l([`text-sm leading-relaxed`,w.value.muted])},r(t(C)(`footer.tagline`)),3)]),s(`nav`,{"aria-label":t(C)(`footer.explore.heading`),class:`flex flex-col gap-3`},[s(`p`,{class:l([`eyebrow`,w.value.muted])},r(t(C)(`footer.explore.heading`)),3),s(`ul`,g,[(e(),c(o,null,n(E,e=>s(`li`,{key:e.href},[s(`a`,{href:e.href,class:l([`text-sm underline-offset-4 decoration-1 hover:underline`,w.value.link])},r(t(C)(e.key)),11,_)])),64))])],8,h),s(`nav`,{"aria-label":t(C)(`footer.legal.heading`),class:`flex flex-col gap-3`},[s(`p`,{class:l([`eyebrow`,w.value.muted])},r(t(C)(`footer.legal.heading`)),3),s(`ul`,y,[(e(),c(o,null,n(T,e=>s(`li`,{key:e.href},[s(`a`,{href:e.href,class:l([`text-sm underline-offset-4 decoration-1 hover:underline`,w.value.link])},r(t(C)(e.key)),11,b)])),64))])],8,v)]),s(`div`,{class:l([`mt-12 pt-6 border-t flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3`,w.value.bottomRule])},[s(`p`,{class:l([`text-xs`,w.value.muted])},` © `+r(t(D))+` `+r(t(C)(`footer.copyright`)),3),s(`p`,{class:l([`text-xs`,w.value.muted])},r(t(C)(`footer.madeIn`)),3)],2)])],2))}};export{x as t};
|
||||
import{C as e,G as t,T as n,ft as r,m as i,o as a,r as o,s,u as c,ut as l}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as u}from"./Logo-FD-JLoLl.js";import{t as d}from"./i18n-C2O_jcDr.js";var f={class:`mx-auto w-full max-w-6xl px-6 py-12 sm:px-8 sm:py-14 md:px-12 md:py-16 lg:px-16`},p={class:`grid gap-10 md:grid-cols-[1.4fr_1fr_1fr] md:gap-12`},m={class:`flex flex-col gap-4 max-w-sm`},h=[`aria-label`],g={class:`flex flex-col gap-2`},_=[`href`],v=[`aria-label`],y={class:`flex flex-col gap-2`},b=[`href`],x={__name:`Footer`,props:{variant:{type:String,default:`cream`,validator:e=>[`cream`,`brand`,`paper`].includes(e)}},setup(x){let S=x,{t:C}=d(),w=a(()=>S.variant===`brand`?{surface:`bg-brand text-cream`,topRule:`border-cream-line`,bottomRule:`border-cream-line/40`,muted:`text-cream/80`,logo:`text-cream`,link:`hover:text-highlight`}:S.variant===`paper`?{surface:`bg-paper text-brand`,topRule:`border-line`,bottomRule:`border-line/60`,muted:`text-muted`,logo:`text-brand`,link:`hover:text-brand-hover`}:{surface:`bg-cream text-brand`,topRule:`border-line`,bottomRule:`border-line/60`,muted:`text-muted`,logo:`text-brand`,link:`hover:text-brand-hover`}),T=[{key:`footer.legal.impressum`,href:`/impressum`},{key:`footer.legal.datenschutz`,href:`/datenschutz`}],E=[{key:`footer.explore.shop`,href:`/shop`},{key:`footer.explore.pflege`,href:`/pflege`},{key:`footer.explore.haushalt`,href:`/haushalt`},{key:`footer.explore.bundles`,href:`/#bundles`},{key:`footer.explore.about`,href:`/#about`}],D=new Date().getFullYear();return(a,d)=>(e(),c(`footer`,{class:l([`border-t`,w.value.surface,w.value.topRule])},[s(`div`,f,[s(`div`,p,[s(`div`,m,[i(u,{class:l([`w-20 md:w-24 h-auto`,w.value.logo])},null,8,[`class`]),s(`p`,{class:l([`text-sm leading-relaxed`,w.value.muted])},r(t(C)(`footer.tagline`)),3)]),s(`nav`,{"aria-label":t(C)(`footer.explore.heading`),class:`flex flex-col gap-3`},[s(`p`,{class:l([`eyebrow`,w.value.muted])},r(t(C)(`footer.explore.heading`)),3),s(`ul`,g,[(e(),c(o,null,n(E,e=>s(`li`,{key:e.href},[s(`a`,{href:e.href,class:l([`text-sm underline-offset-4 decoration-1 hover:underline`,w.value.link])},r(t(C)(e.key)),11,_)])),64))])],8,h),s(`nav`,{"aria-label":t(C)(`footer.legal.heading`),class:`flex flex-col gap-3`},[s(`p`,{class:l([`eyebrow`,w.value.muted])},r(t(C)(`footer.legal.heading`)),3),s(`ul`,y,[(e(),c(o,null,n(T,e=>s(`li`,{key:e.href},[s(`a`,{href:e.href,class:l([`text-sm underline-offset-4 decoration-1 hover:underline`,w.value.link])},r(t(C)(e.key)),11,b)])),64))])],8,v)]),s(`div`,{class:l([`mt-12 pt-6 border-t flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3`,w.value.bottomRule])},[s(`p`,{class:l([`text-xs`,w.value.muted])},` © `+r(t(D))+` `+r(t(C)(`footer.copyright`)),3),s(`p`,{class:l([`text-xs`,w.value.muted])},r(t(C)(`footer.madeIn`)),3)],2)])],2))}};export{x as t};
|
||||
@@ -1,3 +1,3 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./i18n-BvZbJICa.js";import{t as c}from"./Footer-CTDuSDnI.js";import{t as l}from"./SectionShell-XUVs_07L.js";var u={class:`eyebrow mb-5`},d={class:`rounded-md overflow-hidden border border-line`},f={class:`eyebrow mb-5`},p={class:`rounded-md overflow-hidden border border-line`},m={class:`eyebrow mb-5`},h={class:`rounded-md overflow-hidden border border-line`},g={class:`eyebrow mb-5`},_={__name:`FooterSection`,setup(_){let{t:v}=s();return(s,_)=>(e(),n(l,{eyebrow:t(v)(`ds.eyebrow.components`),title:t(v)(`ds.footer.title`),description:t(v)(`ds.footer.description`)},{default:i(()=>[o(`section`,null,[o(`h2`,u,r(t(v)(`ds.footer.tone.cream`)),1),o(`div`,d,[a(c,{variant:`cream`})])]),o(`section`,null,[o(`h2`,f,r(t(v)(`ds.footer.tone.brand`)),1),o(`div`,p,[a(c,{variant:`brand`})])]),o(`section`,null,[o(`h2`,m,r(t(v)(`ds.footer.tone.paper`)),1),o(`div`,h,[a(c,{variant:`paper`})])]),o(`section`,null,[o(`h2`,g,r(t(v)(`ds.heading.usage`)),1),_[0]||=o(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[o(`pre`,{class:`whitespace-pre-wrap`},`<Footer variant="cream" />
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./i18n-C2O_jcDr.js";import{t as c}from"./Footer-Co01VUwo.js";import{t as l}from"./SectionShell-XUVs_07L.js";var u={class:`eyebrow mb-5`},d={class:`rounded-md overflow-hidden border border-line`},f={class:`eyebrow mb-5`},p={class:`rounded-md overflow-hidden border border-line`},m={class:`eyebrow mb-5`},h={class:`rounded-md overflow-hidden border border-line`},g={class:`eyebrow mb-5`},_={__name:`FooterSection`,setup(_){let{t:v}=s();return(s,_)=>(e(),n(l,{eyebrow:t(v)(`ds.eyebrow.components`),title:t(v)(`ds.footer.title`),description:t(v)(`ds.footer.description`)},{default:i(()=>[o(`section`,null,[o(`h2`,u,r(t(v)(`ds.footer.tone.cream`)),1),o(`div`,d,[a(c,{variant:`cream`})])]),o(`section`,null,[o(`h2`,f,r(t(v)(`ds.footer.tone.brand`)),1),o(`div`,p,[a(c,{variant:`brand`})])]),o(`section`,null,[o(`h2`,m,r(t(v)(`ds.footer.tone.paper`)),1),o(`div`,h,[a(c,{variant:`paper`})])]),o(`section`,null,[o(`h2`,g,r(t(v)(`ds.heading.usage`)),1),_[0]||=o(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[o(`pre`,{class:`whitespace-pre-wrap`},`<Footer variant="cream" />
|
||||
<Footer variant="brand" />
|
||||
<Footer variant="paper" />`)],-1)])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{_ as default};
|
||||
1
dist/assets/Hero-C-nrEk39.css
vendored
Normal file
1
dist/assets/Hero-C-nrEk39.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.hero-section[data-v-d0408ca1]{overflow-clip-margin:1rem}.hero-headline[data-v-d0408ca1]{overflow-wrap:anywhere;word-break:normal}
|
||||
1
dist/assets/Hero-CZ1TqBhT.css
vendored
1
dist/assets/Hero-CZ1TqBhT.css
vendored
@@ -1 +0,0 @@
|
||||
.hero-section[data-v-28ac99ac]{overflow-clip-margin:1rem}.hero-headline[data-v-28ac99ac]{overflow-wrap:anywhere;word-break:normal}
|
||||
1
dist/assets/Hero-CwIf29AA.js
vendored
Normal file
1
dist/assets/Hero-CwIf29AA.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/assets/Hero-DEmCd2Kv.js
vendored
1
dist/assets/Hero-DEmCd2Kv.js
vendored
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{C as e,G as t,ft as n,j as r,m as i,o as a,p as o,r as s,s as c,u as l,ut as u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as d}from"./vue-router-Cyqru1db.js";import{t as f}from"./i18n-BvZbJICa.js";import{t as p}from"./Navbar-DCC7hefD.js";import{t as m}from"./Hero-DEmCd2Kv.js";var h={class:`italic font-light text-brand-soft`},g={class:`italic font-light text-brand-soft`},_=`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,v=`/products/kaiser-natron-bad-500-g.webp`,y={__name:`HeroPreview`,setup(y){let b=d(),{t:x}=f(),S=a(()=>[`split`,`centered`].includes(b.query.variant)?b.query.variant:`split`),C=a(()=>[`cream`,`paper`,`brand`].includes(b.query.tone)?b.query.tone:`cream`),w=a(()=>b.query.reverse===`1`),T=a(()=>C.value===`brand`?`brand`:C.value),E=a(()=>w.value?v:_),D=a(()=>w.value?`Kaiser-Natron Bad 500 g`:`Kaiser-Natron Pulver 250 g Großpackung`);return(a,d)=>(e(),l(`div`,{class:u([`min-h-screen`,C.value===`brand`?`bg-brand`:`bg-surface`])},[i(p,{variant:T.value,"cart-count":0},null,8,[`variant`]),i(m,{variant:S.value,tone:C.value,reverse:w.value,eyebrow:w.value?t(x)(`home.banner.eyebrow`):t(x)(`ds.hero.eyebrow`),subheadline:w.value?t(x)(`home.banner.sub`):t(x)(`ds.hero.sub`),image:E.value,"image-alt":D.value,badge:w.value?``:t(x)(`ds.badges.featured`),"cta-label":t(x)(`ds.buttons.addToCart`),"secondary-label":t(x)(`ds.buttons.learnMore`)},{headline:r(()=>[w.value?(e(),l(s,{key:0},[o(n(t(x)(`home.banner.headline.a`))+` `,1),c(`em`,h,n(t(x)(`home.banner.headline.em`)),1),o(` `+n(t(x)(`home.banner.headline.b`)),1)],64)):(e(),l(s,{key:1},[o(n(t(x)(`ds.hero.headline.a`))+` `,1),c(`em`,g,n(t(x)(`ds.hero.headline.em`)),1),o(` `+n(t(x)(`ds.hero.headline.b`)),1)],64))]),_:1},8,[`variant`,`tone`,`reverse`,`eyebrow`,`subheadline`,`image`,`image-alt`,`badge`,`cta-label`,`secondary-label`])],2))}};export{y as default};
|
||||
import{C as e,G as t,ft as n,j as r,m as i,o as a,p as o,r as s,s as c,u as l,ut as u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as d}from"./vue-router-Cyqru1db.js";import{t as f}from"./i18n-C2O_jcDr.js";import{t as p}from"./Navbar--vwcBwtS.js";import{t as m}from"./Hero-CwIf29AA.js";var h={class:`italic font-light text-brand-soft`},g={class:`italic font-light text-brand-soft`},_=`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,v=`/products/kaiser-natron-bad-500-g.webp`,y={__name:`HeroPreview`,setup(y){let b=d(),{t:x}=f(),S=a(()=>[`split`,`centered`].includes(b.query.variant)?b.query.variant:`split`),C=a(()=>[`cream`,`paper`,`brand`].includes(b.query.tone)?b.query.tone:`cream`),w=a(()=>b.query.reverse===`1`),T=a(()=>C.value===`brand`?`brand`:C.value),E=a(()=>w.value?v:_),D=a(()=>w.value?`Kaiser-Natron Bad 500 g`:`Kaiser-Natron Pulver 250 g Großpackung`);return(a,d)=>(e(),l(`div`,{class:u([`min-h-screen`,C.value===`brand`?`bg-brand`:`bg-surface`])},[i(p,{variant:T.value,"cart-count":0},null,8,[`variant`]),i(m,{variant:S.value,tone:C.value,reverse:w.value,eyebrow:w.value?t(x)(`home.banner.eyebrow`):t(x)(`ds.hero.eyebrow`),subheadline:w.value?t(x)(`home.banner.sub`):t(x)(`ds.hero.sub`),image:E.value,"image-alt":D.value,badge:w.value?``:t(x)(`ds.badges.featured`),"cta-label":t(x)(`ds.buttons.addToCart`),"secondary-label":t(x)(`ds.buttons.learnMore`)},{headline:r(()=>[w.value?(e(),l(s,{key:0},[o(n(t(x)(`home.banner.headline.a`))+` `,1),c(`em`,h,n(t(x)(`home.banner.headline.em`)),1),o(` `+n(t(x)(`home.banner.headline.b`)),1)],64)):(e(),l(s,{key:1},[o(n(t(x)(`ds.hero.headline.a`))+` `,1),c(`em`,g,n(t(x)(`ds.hero.headline.em`)),1),o(` `+n(t(x)(`ds.hero.headline.b`)),1)],64))]),_:1},8,[`variant`,`tone`,`reverse`,`eyebrow`,`subheadline`,`image`,`image-alt`,`badge`,`cta-label`,`secondary-label`])],2))}};export{y as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,T as r,c as i,dt as a,ft as o,j 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"./i18n-BvZbJICa.js";import{t as g}from"./SectionShell-XUVs_07L.js";import{t as _}from"./DevicePreview-CxF-mErd.js";var v=[`aria-label`],y=[`aria-selected`,`onClick`],b=[`aria-label`],x=[`aria-selected`,`onClick`],S={class:`eyebrow mb-5`},C={__name:`HeroSection`,setup(C){let{t:w}=h(),T=l(()=>[{id:`split`,label:w(`ds.hero.variant.split`)},{id:`centered`,label:w(`ds.hero.variant.centered`)}]),E=l(()=>[{id:`cream`,label:w(`ds.navbar.tone.cream`),swatch:`var(--color-cream)`},{id:`paper`,label:w(`ds.navbar.tone.paper`),swatch:`#ffffff`},{id:`brand`,label:w(`ds.navbar.tone.brand`),swatch:`var(--color-brand)`}]),D=e(`split`),O=e(`cream`),k=l(()=>`/design/preview/hero?variant=${D.value}&tone=${O.value}`);return(e,l)=>(t(),i(g,{eyebrow:n(w)(`ds.eyebrow.components`),title:n(w)(`ds.hero.title`),description:n(w)(`ds.hero.description`),wide:``},{default:s(()=>[f(`section`,null,[c(_,{src:k.value,initial:`desktop`,height:760},{controls:s(()=>[f(`div`,{role:`tablist`,"aria-label":n(w)(`ds.hero.variant.label`),class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},[(t(!0),p(d,null,r(T.value,e=>(t(),p(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":D.value===e.id,class:m([`px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,D.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>D.value=e.id},o(e.label),11,y))),128))],8,v),f(`div`,{role:`tablist`,"aria-label":n(w)(`ds.navbar.tone`),class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},[(t(!0),p(d,null,r(E.value,e=>(t(),p(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":O.value===e.id,class:m([`inline-flex items-center gap-2 px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,O.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>O.value=e.id},[f(`span`,{class:`w-2.5 h-2.5 rounded-full border border-line-strong`,style:a({backgroundColor:e.swatch})},null,4),u(` `+o(e.label),1)],10,x))),128))],8,b)]),_:1},8,[`src`])]),f(`section`,null,[f(`h2`,S,o(n(w)(`ds.heading.usage`)),1),l[0]||=f(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[f(`pre`,{class:`whitespace-pre-wrap`},`<Hero
|
||||
import{B as e,C as t,G as n,T as r,c as i,dt as a,ft as o,j 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"./i18n-C2O_jcDr.js";import{t as g}from"./SectionShell-XUVs_07L.js";import{t as _}from"./DevicePreview-CxF-mErd.js";var v=[`aria-label`],y=[`aria-selected`,`onClick`],b=[`aria-label`],x=[`aria-selected`,`onClick`],S={class:`eyebrow mb-5`},C={__name:`HeroSection`,setup(C){let{t:w}=h(),T=l(()=>[{id:`split`,label:w(`ds.hero.variant.split`)},{id:`centered`,label:w(`ds.hero.variant.centered`)}]),E=l(()=>[{id:`cream`,label:w(`ds.navbar.tone.cream`),swatch:`var(--color-cream)`},{id:`paper`,label:w(`ds.navbar.tone.paper`),swatch:`#ffffff`},{id:`brand`,label:w(`ds.navbar.tone.brand`),swatch:`var(--color-brand)`}]),D=e(`split`),O=e(`cream`),k=l(()=>`/design/preview/hero?variant=${D.value}&tone=${O.value}`);return(e,l)=>(t(),i(g,{eyebrow:n(w)(`ds.eyebrow.components`),title:n(w)(`ds.hero.title`),description:n(w)(`ds.hero.description`),wide:``},{default:s(()=>[f(`section`,null,[c(_,{src:k.value,initial:`desktop`,height:760},{controls:s(()=>[f(`div`,{role:`tablist`,"aria-label":n(w)(`ds.hero.variant.label`),class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},[(t(!0),p(d,null,r(T.value,e=>(t(),p(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":D.value===e.id,class:m([`px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,D.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>D.value=e.id},o(e.label),11,y))),128))],8,v),f(`div`,{role:`tablist`,"aria-label":n(w)(`ds.navbar.tone`),class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},[(t(!0),p(d,null,r(E.value,e=>(t(),p(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":O.value===e.id,class:m([`inline-flex items-center gap-2 px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,O.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>O.value=e.id},[f(`span`,{class:`w-2.5 h-2.5 rounded-full border border-line-strong`,style:a({backgroundColor:e.swatch})},null,4),u(` `+o(e.label),1)],10,x))),128))],8,b)]),_:1},8,[`src`])]),f(`section`,null,[f(`h2`,S,o(n(w)(`ds.heading.usage`)),1),l[0]||=f(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[f(`pre`,{class:`whitespace-pre-wrap`},`<Hero
|
||||
variant="split"
|
||||
tone="cream"
|
||||
eyebrow="Neu"
|
||||
1
dist/assets/HomePage-DTNbICzw.js
vendored
1
dist/assets/HomePage-DTNbICzw.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/HomePage-Dt7PRxoU.js
vendored
Normal file
1
dist/assets/HomePage-Dt7PRxoU.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
||||
import{B as e,C as t,G as n,M as r,T as i,c as a,ft as o,j as s,l as c,m as l,o as u,r as d,s as f,u as p}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as m}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{n as h,t as g}from"./Icon-CtR1FGIT.js";import{t as _}from"./i18n-BvZbJICa.js";import{t as v}from"./SectionShell-XUVs_07L.js";var y={class:`mb-5 flex items-center gap-3 flex-wrap`},b={class:`relative inline-flex items-center`},x={class:`absolute left-3 text-muted pointer-events-none`},S=[`placeholder`],C={class:`text-[12px] text-muted`},w={key:0,class:`text-[14px] text-muted`},T={class:`eyebrow mb-4`},E={class:`grid grid-cols-[repeat(auto-fill,minmax(120px,1fr))] gap-3`},D=[`onClick`],O={class:`w-10 h-10 rounded-sm bg-cream text-brand flex items-center justify-center`},k={class:`font-mono text-[11px] text-muted group-hover:text-brand transition-colors`},A={class:`eyebrow mb-5`},j={class:`grid md:grid-cols-3 gap-4`},M={class:`rounded-md border border-line bg-paper text-brand p-8 flex items-center justify-center gap-6`},N={class:`rounded-md border border-line bg-cream text-brand p-8 flex items-center justify-center gap-6`},P={class:`rounded-md bg-brand text-accent p-8 flex items-center justify-center gap-6`},F={class:`eyebrow mb-5`},I={class:`rounded-md border border-line bg-paper p-8 flex items-end gap-8 text-brand`},L={class:`flex flex-col items-center gap-3`},R={class:`flex flex-col items-center gap-3`},z={class:`font-mono text-[11px] text-muted`},B={class:`flex flex-col items-center gap-3`},V={class:`flex flex-col items-center gap-3`},H={class:`flex flex-col items-center gap-3`},U={class:`eyebrow mb-5`},W={__name:`IconsSection`,setup(W){let{t:G}=_(),K=u(()=>[{title:G(`ds.icons.group.commerce`),names:[`cart`,`bag`,`heart`,`user`,`search`]},{title:G(`ds.icons.group.navigation`),names:[`menu`,`close`,`chevron-left`,`chevron-right`,`chevron-down`,`chevron-up`,`arrow-left`,`arrow-right`]},{title:G(`ds.icons.group.actions`),names:[`plus`,`minus`,`check`]},{title:G(`ds.icons.group.contact`),names:[`mail`,`phone`,`map-pin`,`external-link`]},{title:G(`ds.icons.group.feedback`),names:[`info`,`star`]},{title:G(`ds.icons.group.devices`),names:[`mobile`,`tablet`,`desktop`]}]),q=e(``),J=u(()=>{let e=q.value.trim().toLowerCase();return e?K.value.map(t=>({...t,names:t.names.filter(t=>t.includes(e)||(h[t]?.label||``).toLowerCase().includes(e))})).filter(e=>e.names.length>0):K.value}),Y=e(``);async function X(e){let t=`<Icon name="${e}" />`;try{await navigator.clipboard.writeText(t),Y.value=e,setTimeout(()=>{Y.value===e&&(Y.value=``)},1200)}catch{}}return(e,u)=>(t(),a(v,{eyebrow:n(G)(`ds.eyebrow.components`),title:n(G)(`ds.icons.title`),description:n(G)(`ds.icons.description`)},{default:s(()=>[f(`section`,null,[f(`div`,y,[f(`label`,b,[f(`span`,x,[l(g,{name:`search`,size:16})]),r(f(`input`,{"onUpdate:modelValue":u[0]||=e=>q.value=e,type:`search`,placeholder:n(G)(`ds.icons.search`),class:`pl-9 pr-4 py-2 rounded-pill border border-line bg-paper text-[14px] text-ink placeholder:text-muted focus:outline-none focus:border-brand w-[260px]`},null,8,S),[[m,q.value]])]),f(`span`,C,o(n(G)(`ds.icons.copyHint`)),1)]),J.value.length===0?(t(),p(`div`,w,o(n(G)(`ds.icons.noMatch`))+` "`+o(q.value)+`". `,1)):c(``,!0),(t(!0),p(d,null,i(J.value,e=>(t(),p(`div`,{key:e.title,class:`mb-10 last:mb-0`},[f(`h2`,T,o(e.title),1),f(`div`,E,[(t(!0),p(d,null,i(e.names,e=>(t(),p(`button`,{key:e,type:`button`,class:`group flex flex-col items-center justify-center gap-2 p-4 rounded-md border border-line bg-paper text-ink hover:border-brand-soft hover:-translate-y-0.5 hover:shadow-sm transition-all duration-base ease-out`,onClick:t=>X(e)},[f(`span`,O,[l(g,{name:e,size:22},null,8,[`name`])]),f(`span`,k,o(Y.value===e?n(G)(`ds.icons.copied`):e),1)],8,D))),128))])]))),128))]),f(`section`,null,[f(`h2`,A,o(n(G)(`ds.heading.onDifferentSurfaces`)),1),f(`div`,j,[f(`div`,M,[l(g,{name:`cart`,size:28}),l(g,{name:`heart`,size:28}),l(g,{name:`user`,size:28})]),f(`div`,N,[l(g,{name:`cart`,size:28}),l(g,{name:`heart`,size:28}),l(g,{name:`user`,size:28})]),f(`div`,P,[l(g,{name:`cart`,size:28}),l(g,{name:`heart`,size:28}),l(g,{name:`user`,size:28})])])]),f(`section`,null,[f(`h2`,F,o(n(G)(`ds.heading.sizes`)),1),f(`div`,I,[f(`div`,L,[l(g,{name:`cart`,size:16}),u[1]||=f(`code`,{class:`font-mono text-[11px] text-muted`},`16`,-1)]),f(`div`,R,[l(g,{name:`cart`,size:20}),f(`code`,z,o(n(G)(`ds.icons.sizeDefault`)),1)]),f(`div`,B,[l(g,{name:`cart`,size:24}),u[2]||=f(`code`,{class:`font-mono text-[11px] text-muted`},`24`,-1)]),f(`div`,V,[l(g,{name:`cart`,size:32}),u[3]||=f(`code`,{class:`font-mono text-[11px] text-muted`},`32`,-1)]),f(`div`,H,[l(g,{name:`cart`,size:48}),u[4]||=f(`code`,{class:`font-mono text-[11px] text-muted`},`48`,-1)])])]),f(`section`,null,[f(`h2`,U,o(n(G)(`ds.heading.usage`)),1),u[5]||=f(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[f(`pre`,{class:`whitespace-pre-wrap`},`<Icon name="cart" :size="20" />
|
||||
import{B as e,C as t,G as n,M as r,T as i,c as a,ft as o,j as s,l as c,m as l,o as u,r as d,s as f,u as p}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as m}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{n as h,t as g}from"./Icon-CtR1FGIT.js";import{t as _}from"./i18n-C2O_jcDr.js";import{t as v}from"./SectionShell-XUVs_07L.js";var y={class:`mb-5 flex items-center gap-3 flex-wrap`},b={class:`relative inline-flex items-center`},x={class:`absolute left-3 text-muted pointer-events-none`},S=[`placeholder`],C={class:`text-[12px] text-muted`},w={key:0,class:`text-[14px] text-muted`},T={class:`eyebrow mb-4`},E={class:`grid grid-cols-[repeat(auto-fill,minmax(120px,1fr))] gap-3`},D=[`onClick`],O={class:`w-10 h-10 rounded-sm bg-cream text-brand flex items-center justify-center`},k={class:`font-mono text-[11px] text-muted group-hover:text-brand transition-colors`},A={class:`eyebrow mb-5`},j={class:`grid md:grid-cols-3 gap-4`},M={class:`rounded-md border border-line bg-paper text-brand p-8 flex items-center justify-center gap-6`},N={class:`rounded-md border border-line bg-cream text-brand p-8 flex items-center justify-center gap-6`},P={class:`rounded-md bg-brand text-accent p-8 flex items-center justify-center gap-6`},F={class:`eyebrow mb-5`},I={class:`rounded-md border border-line bg-paper p-8 flex items-end gap-8 text-brand`},L={class:`flex flex-col items-center gap-3`},R={class:`flex flex-col items-center gap-3`},z={class:`font-mono text-[11px] text-muted`},B={class:`flex flex-col items-center gap-3`},V={class:`flex flex-col items-center gap-3`},H={class:`flex flex-col items-center gap-3`},U={class:`eyebrow mb-5`},W={__name:`IconsSection`,setup(W){let{t:G}=_(),K=u(()=>[{title:G(`ds.icons.group.commerce`),names:[`cart`,`bag`,`heart`,`user`,`search`]},{title:G(`ds.icons.group.navigation`),names:[`menu`,`close`,`chevron-left`,`chevron-right`,`chevron-down`,`chevron-up`,`arrow-left`,`arrow-right`]},{title:G(`ds.icons.group.actions`),names:[`plus`,`minus`,`check`]},{title:G(`ds.icons.group.contact`),names:[`mail`,`phone`,`map-pin`,`external-link`]},{title:G(`ds.icons.group.feedback`),names:[`info`,`star`]},{title:G(`ds.icons.group.devices`),names:[`mobile`,`tablet`,`desktop`]}]),q=e(``),J=u(()=>{let e=q.value.trim().toLowerCase();return e?K.value.map(t=>({...t,names:t.names.filter(t=>t.includes(e)||(h[t]?.label||``).toLowerCase().includes(e))})).filter(e=>e.names.length>0):K.value}),Y=e(``);async function X(e){let t=`<Icon name="${e}" />`;try{await navigator.clipboard.writeText(t),Y.value=e,setTimeout(()=>{Y.value===e&&(Y.value=``)},1200)}catch{}}return(e,u)=>(t(),a(v,{eyebrow:n(G)(`ds.eyebrow.components`),title:n(G)(`ds.icons.title`),description:n(G)(`ds.icons.description`)},{default:s(()=>[f(`section`,null,[f(`div`,y,[f(`label`,b,[f(`span`,x,[l(g,{name:`search`,size:16})]),r(f(`input`,{"onUpdate:modelValue":u[0]||=e=>q.value=e,type:`search`,placeholder:n(G)(`ds.icons.search`),class:`pl-9 pr-4 py-2 rounded-pill border border-line bg-paper text-[14px] text-ink placeholder:text-muted focus:outline-none focus:border-brand w-[260px]`},null,8,S),[[m,q.value]])]),f(`span`,C,o(n(G)(`ds.icons.copyHint`)),1)]),J.value.length===0?(t(),p(`div`,w,o(n(G)(`ds.icons.noMatch`))+` "`+o(q.value)+`". `,1)):c(``,!0),(t(!0),p(d,null,i(J.value,e=>(t(),p(`div`,{key:e.title,class:`mb-10 last:mb-0`},[f(`h2`,T,o(e.title),1),f(`div`,E,[(t(!0),p(d,null,i(e.names,e=>(t(),p(`button`,{key:e,type:`button`,class:`group flex flex-col items-center justify-center gap-2 p-4 rounded-md border border-line bg-paper text-ink hover:border-brand-soft hover:-translate-y-0.5 hover:shadow-sm transition-all duration-base ease-out`,onClick:t=>X(e)},[f(`span`,O,[l(g,{name:e,size:22},null,8,[`name`])]),f(`span`,k,o(Y.value===e?n(G)(`ds.icons.copied`):e),1)],8,D))),128))])]))),128))]),f(`section`,null,[f(`h2`,A,o(n(G)(`ds.heading.onDifferentSurfaces`)),1),f(`div`,j,[f(`div`,M,[l(g,{name:`cart`,size:28}),l(g,{name:`heart`,size:28}),l(g,{name:`user`,size:28})]),f(`div`,N,[l(g,{name:`cart`,size:28}),l(g,{name:`heart`,size:28}),l(g,{name:`user`,size:28})]),f(`div`,P,[l(g,{name:`cart`,size:28}),l(g,{name:`heart`,size:28}),l(g,{name:`user`,size:28})])])]),f(`section`,null,[f(`h2`,F,o(n(G)(`ds.heading.sizes`)),1),f(`div`,I,[f(`div`,L,[l(g,{name:`cart`,size:16}),u[1]||=f(`code`,{class:`font-mono text-[11px] text-muted`},`16`,-1)]),f(`div`,R,[l(g,{name:`cart`,size:20}),f(`code`,z,o(n(G)(`ds.icons.sizeDefault`)),1)]),f(`div`,B,[l(g,{name:`cart`,size:24}),u[2]||=f(`code`,{class:`font-mono text-[11px] text-muted`},`24`,-1)]),f(`div`,V,[l(g,{name:`cart`,size:32}),u[3]||=f(`code`,{class:`font-mono text-[11px] text-muted`},`32`,-1)]),f(`div`,H,[l(g,{name:`cart`,size:48}),u[4]||=f(`code`,{class:`font-mono text-[11px] text-muted`},`48`,-1)])])]),f(`section`,null,[f(`h2`,U,o(n(G)(`ds.heading.usage`)),1),u[5]||=f(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[f(`pre`,{class:`whitespace-pre-wrap`},`<Icon name="cart" :size="20" />
|
||||
<Icon name="arrow-right" :size="16" label="Next slide" />`)],-1)])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{W as default};
|
||||
@@ -1 +1 @@
|
||||
import{B as e,C as t,G as n,c as r,ft as i,j as a,m as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-BvZbJICa.js";import{t as l}from"./Input-RN3gn2df.js";import{t as u}from"./SectionShell-XUVs_07L.js";import{t as d}from"./Card-CPlQ-6EI.js";var f={class:`eyebrow mb-5`},p={class:`grid md:grid-cols-2 gap-6 max-w-3xl`},m={class:`eyebrow mb-5`},h={class:`grid md:grid-cols-2 gap-6 max-w-3xl`},g={__name:`InputsSection`,setup(g){let{t:_}=c(),v=e(``),y=e(``),b=e(``);return(e,c)=>(t(),r(u,{eyebrow:n(_)(`ds.eyebrow.components`),title:n(_)(`ds.inputs.title`),description:n(_)(`ds.inputs.description`)},{default:a(()=>[s(`section`,null,[s(`h2`,f,i(n(_)(`ds.heading.default`)),1),o(d,{tone:`paper`},{default:a(()=>[s(`div`,p,[o(l,{modelValue:v.value,"onUpdate:modelValue":c[0]||=e=>v.value=e,label:n(_)(`ds.inputs.email`),type:`email`,placeholder:`you@example.com`,hint:n(_)(`ds.inputs.emailHint`)},null,8,[`modelValue`,`label`,`hint`]),o(l,{modelValue:y.value,"onUpdate:modelValue":c[1]||=e=>y.value=e,label:n(_)(`ds.inputs.password`),type:`password`,placeholder:`••••••••`},null,8,[`modelValue`,`label`])])]),_:1})]),s(`section`,null,[s(`h2`,m,i(n(_)(`ds.heading.states`)),1),o(d,{tone:`paper`},{default:a(()=>[s(`div`,h,[o(l,{modelValue:b.value,"onUpdate:modelValue":c[2]||=e=>b.value=e,label:n(_)(`ds.inputs.required`),required:``,error:n(_)(`ds.inputs.requiredError`)},null,8,[`modelValue`,`label`,`error`]),o(l,{label:n(_)(`ds.inputs.disabled`),placeholder:n(_)(`ds.inputs.disabledPlaceholder`),disabled:``},null,8,[`label`,`placeholder`])])]),_:1})])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{g as default};
|
||||
import{B as e,C as t,G as n,c as r,ft as i,j as a,m as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-C2O_jcDr.js";import{t as l}from"./Input-RN3gn2df.js";import{t as u}from"./SectionShell-XUVs_07L.js";import{t as d}from"./Card-CPlQ-6EI.js";var f={class:`eyebrow mb-5`},p={class:`grid md:grid-cols-2 gap-6 max-w-3xl`},m={class:`eyebrow mb-5`},h={class:`grid md:grid-cols-2 gap-6 max-w-3xl`},g={__name:`InputsSection`,setup(g){let{t:_}=c(),v=e(``),y=e(``),b=e(``);return(e,c)=>(t(),r(u,{eyebrow:n(_)(`ds.eyebrow.components`),title:n(_)(`ds.inputs.title`),description:n(_)(`ds.inputs.description`)},{default:a(()=>[s(`section`,null,[s(`h2`,f,i(n(_)(`ds.heading.default`)),1),o(d,{tone:`paper`},{default:a(()=>[s(`div`,p,[o(l,{modelValue:v.value,"onUpdate:modelValue":c[0]||=e=>v.value=e,label:n(_)(`ds.inputs.email`),type:`email`,placeholder:`you@example.com`,hint:n(_)(`ds.inputs.emailHint`)},null,8,[`modelValue`,`label`,`hint`]),o(l,{modelValue:y.value,"onUpdate:modelValue":c[1]||=e=>y.value=e,label:n(_)(`ds.inputs.password`),type:`password`,placeholder:`••••••••`},null,8,[`modelValue`,`label`])])]),_:1})]),s(`section`,null,[s(`h2`,m,i(n(_)(`ds.heading.states`)),1),o(d,{tone:`paper`},{default:a(()=>[s(`div`,h,[o(l,{modelValue:b.value,"onUpdate:modelValue":c[2]||=e=>b.value=e,label:n(_)(`ds.inputs.required`),required:``,error:n(_)(`ds.inputs.requiredError`)},null,8,[`modelValue`,`label`,`error`]),o(l,{label:n(_)(`ds.inputs.disabled`),placeholder:n(_)(`ds.inputs.disabledPlaceholder`),disabled:``},null,8,[`label`,`placeholder`])])]),_:1})])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{g as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{B as e,C as t,G as n,S as r,c as i,ft as a,i as o,j as s,l as c,m as l,o as u,r as d,s as f,u as p,ut as m,x as h}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{c as g,t as ee}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{o as _}from"./vue-router-Cyqru1db.js";import{t as v}from"./IconButton-UABNp_yn.js";import{t as y}from"./i18n-BvZbJICa.js";import{r as b}from"./products-BqW5PUnm.js";import{c as x,d as S,f as C,p as w,u as T}from"./api-CJ2exAVU.js";import{n as E,t as D}from"./kaiserhacks-B4r9oXf7.js";import{t as O}from"./Navbar-DCC7hefD.js";import{t as k}from"./CartDrawer-Ut6nxZa3.js";import{t as A}from"./Footer-CTDuSDnI.js";import{t as j}from"./Kaiserhacks-BXeAyg9G.js";var M=[`aria-label`],N={class:`relative my-auto flex max-h-[calc(100svh-2rem)] w-full max-w-[min(430px,calc(100vw-2rem))] flex-col overflow-hidden rounded-md bg-paper shadow-lg sm:max-h-[calc(100svh-3rem)] sm:max-w-[min(430px,calc(100vw-3rem))]`},P={class:`absolute right-3 top-3 z-10`},F=[`poster`],I=[`src`],te=[`src`,`alt`],L={class:`min-h-0 overflow-y-auto p-5`},R={class:`eyebrow mb-2`},z={class:`font-display text-2xl font-normal leading-tight text-ink`},B={class:`mt-2 text-sm leading-relaxed text-muted`},V={__name:`KaiserhacksPage`,setup(V){let{t:H}=y(),U=w(),W=_(),G=e(!1),K=e(null),q=e(null),J=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`},{key:`nav.kaiserhacks`,href:`/kaiserhacks`}],Y=[],X=u(()=>E(D,H)),Z=u(()=>({categories:H(`kaiserhacks.labels.categories`),categoryNav:H(`kaiserhacks.labels.categoryNav`),openVideo:H(`kaiserhacks.labels.openVideo`),openImage:H(`kaiserhacks.labels.openImage`),community:H(`kaiserhacks.labels.community`),handoffNote:H(`kaiserhacks.labels.handoffNote`)})),Q=null;function $(){let e=q.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}function ne(){G.value=!1,W.push(`/checkout`)}async function re(e){await x(e.id,1),G.value=!0}function ie(e){!e?.video?.src&&!e?.video?.poster||(K.value=e)}async function ae({productId:e,quantity:t}){await C(e,t)}async function oe(e){await S(e)}return r(()=>{if(T(),$(),typeof ResizeObserver<`u`&&q.value){let e=q.value.$el||q.value;Q=new ResizeObserver($),Q.observe(e)}window.addEventListener(`resize`,$)}),h(()=>{Q&&Q.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,$)}),(e,r)=>(t(),p(d,null,[l(O,{ref_key:`navRef`,ref:q,variant:`brand`,layout:`standard`,items:J,"secondary-items":Y,"cart-count":n(U).count,products:n(b),onCart:r[0]||=e=>G.value=!0,onSearch:re},null,8,[`cart-count`,`products`]),l(j,{eyebrow:X.value.eyebrow,headline:X.value.headline,sub:X.value.sub,categories:X.value.categories,"instagram-href":X.value.instagramHref,labels:Z.value,onSelect:ie},null,8,[`eyebrow`,`headline`,`sub`,`categories`,`instagram-href`,`labels`]),l(A),(t(),i(o,{to:`body`},[l(ee,{"enter-active-class":`transition duration-slow ease-out`,"enter-from-class":`opacity-0`,"enter-to-class":`opacity-100`,"leave-active-class":`transition duration-base ease-out`,"leave-from-class":`opacity-100`,"leave-to-class":`opacity-0`},{default:s(()=>[K.value?(t(),p(`div`,{key:0,class:`fixed inset-0 z-50 flex items-center justify-center overflow-y-auto bg-ink/70 p-4 sm:p-6`,role:`dialog`,"aria-modal":`true`,"aria-label":K.value.title,onClick:r[2]||=g(e=>K.value=null,[`self`])},[f(`div`,N,[f(`div`,P,[l(v,{icon:`close`,variant:`float`,size:`sm`,"aria-label":n(H)(`menu.close`),onClick:r[1]||=e=>K.value=null},null,8,[`aria-label`])]),f(`div`,{class:m([`relative min-h-0 w-full shrink overflow-hidden bg-ink`,K.value.video?.src?`aspect-[9/16] h-[min(62svh,640px)] max-h-[calc(100svh-14rem)]`:`aspect-[11/9] max-h-[min(54svh,450px)]`])},[K.value.video?.src?(t(),p(`video`,{key:K.value.id,class:`absolute inset-0 h-full w-full bg-ink object-contain`,poster:K.value.video?.poster,controls:``,autoplay:``,playsinline:``},[f(`source`,{src:K.value.video.src,type:`video/mp4`},null,8,I)],8,F)):(t(),p(`img`,{key:1,src:K.value.video?.poster,alt:K.value.video?.alt||K.value.title,class:`absolute inset-0 h-full w-full bg-paper object-contain`},null,8,te))],2),f(`div`,L,[f(`p`,R,a(n(H)(`nav.kaiserhacks`)),1),f(`h2`,z,a(K.value.title),1),f(`p`,B,a(K.value.detailDescription||K.value.description),1)])])],8,M)):c(``,!0)]),_:1})])),r[4]||=f(`div`,{"aria-hidden":`true`,class:`min-[1100px]:hidden bg-cream`,style:{height:`calc(100px + env(safe-area-inset-bottom))`}},null,-1),l(k,{modelValue:G.value,"onUpdate:modelValue":r[3]||=e=>G.value=e,items:n(U).items,subtotal:n(U).subtotal,count:n(U).count,onUpdateQuantity:ae,onRemove:oe,onCheckout:ne},null,8,[`modelValue`,`items`,`subtotal`,`count`])],64))}};export{V as default};
|
||||
import{B as e,C as t,G as n,S as r,c as i,ft as a,i as o,j as s,l as c,m as l,o as u,r as d,s as f,u as p,ut as m,x as h}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{c as g,t as ee}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{o as _}from"./vue-router-Cyqru1db.js";import{t as v}from"./IconButton-UABNp_yn.js";import{t as y}from"./i18n-C2O_jcDr.js";import{r as b}from"./products-CfIXFr2X.js";import{c as x,d as S,f as C,p as w,u as T}from"./api-DeBxQCQq.js";import{n as E,t as D}from"./kaiserhacks-B4r9oXf7.js";import{t as O}from"./Navbar--vwcBwtS.js";import{t as k}from"./CartDrawer-CegjvllQ.js";import{t as A}from"./Footer-Co01VUwo.js";import{t as j}from"./Kaiserhacks-vVxHMG66.js";var M=[`aria-label`],N={class:`relative my-auto flex max-h-[calc(100svh-2rem)] w-full max-w-[min(430px,calc(100vw-2rem))] flex-col overflow-hidden rounded-md bg-paper shadow-lg sm:max-h-[calc(100svh-3rem)] sm:max-w-[min(430px,calc(100vw-3rem))]`},P={class:`absolute right-3 top-3 z-10`},F=[`poster`],I=[`src`],te=[`src`,`alt`],L={class:`min-h-0 overflow-y-auto p-5`},R={class:`eyebrow mb-2`},z={class:`font-display text-2xl font-normal leading-tight text-ink`},B={class:`mt-2 text-sm leading-relaxed text-muted`},V={__name:`KaiserhacksPage`,setup(V){let{t:H}=y(),U=w(),W=_(),G=e(!1),K=e(null),q=e(null),J=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`},{key:`nav.kaiserhacks`,href:`/kaiserhacks`}],Y=[],X=u(()=>E(D,H)),Z=u(()=>({categories:H(`kaiserhacks.labels.categories`),categoryNav:H(`kaiserhacks.labels.categoryNav`),openVideo:H(`kaiserhacks.labels.openVideo`),openImage:H(`kaiserhacks.labels.openImage`),community:H(`kaiserhacks.labels.community`),handoffNote:H(`kaiserhacks.labels.handoffNote`)})),Q=null;function $(){let e=q.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}function ne(){G.value=!1,W.push(`/checkout`)}async function re(e){await x(e.id,1),G.value=!0}function ie(e){!e?.video?.src&&!e?.video?.poster||(K.value=e)}async function ae({productId:e,quantity:t}){await C(e,t)}async function oe(e){await S(e)}return r(()=>{if(T(),$(),typeof ResizeObserver<`u`&&q.value){let e=q.value.$el||q.value;Q=new ResizeObserver($),Q.observe(e)}window.addEventListener(`resize`,$)}),h(()=>{Q&&Q.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,$)}),(e,r)=>(t(),p(d,null,[l(O,{ref_key:`navRef`,ref:q,variant:`brand`,layout:`standard`,items:J,"secondary-items":Y,"cart-count":n(U).count,products:n(b),onCart:r[0]||=e=>G.value=!0,onSearch:re},null,8,[`cart-count`,`products`]),l(j,{eyebrow:X.value.eyebrow,headline:X.value.headline,sub:X.value.sub,categories:X.value.categories,"instagram-href":X.value.instagramHref,labels:Z.value,onSelect:ie},null,8,[`eyebrow`,`headline`,`sub`,`categories`,`instagram-href`,`labels`]),l(A),(t(),i(o,{to:`body`},[l(ee,{"enter-active-class":`transition duration-slow ease-out`,"enter-from-class":`opacity-0`,"enter-to-class":`opacity-100`,"leave-active-class":`transition duration-base ease-out`,"leave-from-class":`opacity-100`,"leave-to-class":`opacity-0`},{default:s(()=>[K.value?(t(),p(`div`,{key:0,class:`fixed inset-0 z-50 flex items-center justify-center overflow-y-auto bg-ink/70 p-4 sm:p-6`,role:`dialog`,"aria-modal":`true`,"aria-label":K.value.title,onClick:r[2]||=g(e=>K.value=null,[`self`])},[f(`div`,N,[f(`div`,P,[l(v,{icon:`close`,variant:`float`,size:`sm`,"aria-label":n(H)(`menu.close`),onClick:r[1]||=e=>K.value=null},null,8,[`aria-label`])]),f(`div`,{class:m([`relative min-h-0 w-full shrink overflow-hidden bg-ink`,K.value.video?.src?`aspect-[9/16] h-[min(62svh,640px)] max-h-[calc(100svh-14rem)]`:`aspect-[11/9] max-h-[min(54svh,450px)]`])},[K.value.video?.src?(t(),p(`video`,{key:K.value.id,class:`absolute inset-0 h-full w-full bg-ink object-contain`,poster:K.value.video?.poster,controls:``,autoplay:``,playsinline:``},[f(`source`,{src:K.value.video.src,type:`video/mp4`},null,8,I)],8,F)):(t(),p(`img`,{key:1,src:K.value.video?.poster,alt:K.value.video?.alt||K.value.title,class:`absolute inset-0 h-full w-full bg-paper object-contain`},null,8,te))],2),f(`div`,L,[f(`p`,R,a(n(H)(`nav.kaiserhacks`)),1),f(`h2`,z,a(K.value.title),1),f(`p`,B,a(K.value.detailDescription||K.value.description),1)])])],8,M)):c(``,!0)]),_:1})])),r[4]||=f(`div`,{"aria-hidden":`true`,class:`min-[1100px]:hidden bg-cream`,style:{height:`calc(100px + env(safe-area-inset-bottom))`}},null,-1),l(k,{modelValue:G.value,"onUpdate:modelValue":r[3]||=e=>G.value=e,items:n(U).items,subtotal:n(U).subtotal,count:n(U).count,onUpdateQuantity:ae,onRemove:oe,onCheckout:ne},null,8,[`modelValue`,`items`,`subtotal`,`count`])],64))}};export{V as default};
|
||||
@@ -1 +1 @@
|
||||
import{C as e,m as t,o as n,u as r}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as i}from"./i18n-BvZbJICa.js";import{n as a,t as o}from"./kaiserhacks-B4r9oXf7.js";import{t as s}from"./Kaiserhacks-BXeAyg9G.js";var c={class:`min-h-screen bg-surface`},l={__name:`KaiserhacksPreview`,setup(l){let{t:u}=i(),d=n(()=>a(o,u)),f=n(()=>({categories:u(`kaiserhacks.labels.categories`),categoryNav:u(`kaiserhacks.labels.categoryNav`),openVideo:u(`kaiserhacks.labels.openVideo`),openImage:u(`kaiserhacks.labels.openImage`),community:u(`kaiserhacks.labels.community`),handoffNote:u(`kaiserhacks.labels.handoffNote`)}));return(n,i)=>(e(),r(`div`,c,[t(s,{eyebrow:d.value.eyebrow,headline:d.value.headline,sub:d.value.sub,categories:d.value.categories,"instagram-href":d.value.instagramHref,labels:f.value},null,8,[`eyebrow`,`headline`,`sub`,`categories`,`instagram-href`,`labels`])]))}};export{l as default};
|
||||
import{C as e,m as t,o as n,u as r}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as i}from"./i18n-C2O_jcDr.js";import{n as a,t as o}from"./kaiserhacks-B4r9oXf7.js";import{t as s}from"./Kaiserhacks-vVxHMG66.js";var c={class:`min-h-screen bg-surface`},l={__name:`KaiserhacksPreview`,setup(l){let{t:u}=i(),d=n(()=>a(o,u)),f=n(()=>({categories:u(`kaiserhacks.labels.categories`),categoryNav:u(`kaiserhacks.labels.categoryNav`),openVideo:u(`kaiserhacks.labels.openVideo`),openImage:u(`kaiserhacks.labels.openImage`),community:u(`kaiserhacks.labels.community`),handoffNote:u(`kaiserhacks.labels.handoffNote`)}));return(n,i)=>(e(),r(`div`,c,[t(s,{eyebrow:d.value.eyebrow,headline:d.value.headline,sub:d.value.sub,categories:d.value.categories,"instagram-href":d.value.instagramHref,labels:f.value},null,8,[`eyebrow`,`headline`,`sub`,`categories`,`instagram-href`,`labels`])]))}};export{l as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./i18n-BvZbJICa.js";import{t as c}from"./SectionShell-XUVs_07L.js";import{t as l}from"./DevicePreview-CxF-mErd.js";var u={class:`eyebrow mb-5`},d={class:`eyebrow mb-5`},f={class:`max-w-2xl text-sm leading-relaxed text-muted`},p=`/design/preview/kaiserhacks`,m={__name:`KaiserhacksSection`,setup(m){let{t:h}=s();return(s,m)=>(e(),n(c,{eyebrow:t(h)(`ds.eyebrow.components`),title:t(h)(`ds.kaiserhacks.title`),description:t(h)(`ds.kaiserhacks.description`),wide:``},{default:i(()=>[o(`section`,null,[a(l,{src:p,initial:`desktop`,height:900})]),o(`section`,null,[o(`h2`,u,r(t(h)(`ds.heading.usage`)),1),m[0]||=o(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[o(`pre`,{class:`whitespace-pre-wrap`},`<Kaiserhacks
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./i18n-C2O_jcDr.js";import{t as c}from"./SectionShell-XUVs_07L.js";import{t as l}from"./DevicePreview-CxF-mErd.js";var u={class:`eyebrow mb-5`},d={class:`eyebrow mb-5`},f={class:`max-w-2xl text-sm leading-relaxed text-muted`},p=`/design/preview/kaiserhacks`,m={__name:`KaiserhacksSection`,setup(m){let{t:h}=s();return(s,m)=>(e(),n(c,{eyebrow:t(h)(`ds.eyebrow.components`),title:t(h)(`ds.kaiserhacks.title`),description:t(h)(`ds.kaiserhacks.description`),wide:``},{default:i(()=>[o(`section`,null,[a(l,{src:p,initial:`desktop`,height:900})]),o(`section`,null,[o(`h2`,u,r(t(h)(`ds.heading.usage`)),1),m[0]||=o(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[o(`pre`,{class:`whitespace-pre-wrap`},`<Kaiserhacks
|
||||
:eyebrow="page.eyebrow"
|
||||
:headline="page.headline"
|
||||
:sub="page.sub"
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,T as n,ft as r,o as i,r as a,u as o,ut as s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-BvZbJICa.js";var l=[`aria-label`,`aria-pressed`,`onClick`],u={__name:`LanguageSwitcher`,props:{floating:{type:Boolean,default:!1},tone:{type:String,default:`paper`,validator:e=>[`paper`,`cream`,`brand`].includes(e)}},setup(u){let d=u,{locale:f,setLocale:p,availableLocales:m}=c(),h={paper:{container:`border border-line bg-paper`,active:`bg-accent-fill text-accent-fill-ink`,inactive:`text-muted hover:text-brand`},cream:{container:`border border-line-strong bg-paper`,active:`bg-accent-fill text-accent-fill-ink`,inactive:`text-muted hover:text-brand`},brand:{container:`border border-cream-line bg-cream-wash`,active:`bg-accent-fill text-accent-fill-ink`,inactive:`text-cream hover:text-accent`}},g=i(()=>h[d.tone]);return(i,c)=>(e(),o(`div`,{role:`group`,"aria-label":`Language`,class:s([`inline-flex items-center h-10 px-2 gap-0.5 rounded-pill font-sans`,g.value.container,u.floating?`fixed top-6 right-6 z-[60] shadow-sm`:``])},[(e(!0),o(a,null,n(t(m),n=>(e(),o(`button`,{key:n.code,type:`button`,"aria-label":n.name,"aria-pressed":t(f)===n.code,class:s([`px-2.5 py-1 text-[11px] font-bold tracking-eyebrow rounded-pill transition-colors duration-base`,t(f)===n.code?g.value.active:g.value.inactive]),onClick:e=>t(p)(n.code)},r(n.label),11,l))),128))],2))}};export{u as t};
|
||||
import{C as e,G as t,T as n,ft as r,o as i,r as a,u as o,ut as s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-C2O_jcDr.js";var l=[`aria-label`,`aria-pressed`,`onClick`],u={__name:`LanguageSwitcher`,props:{floating:{type:Boolean,default:!1},tone:{type:String,default:`paper`,validator:e=>[`paper`,`cream`,`brand`].includes(e)}},setup(u){let d=u,{locale:f,setLocale:p,availableLocales:m}=c(),h={paper:{container:`border border-line bg-paper`,active:`bg-accent-fill text-accent-fill-ink`,inactive:`text-muted hover:text-brand`},cream:{container:`border border-line-strong bg-paper`,active:`bg-accent-fill text-accent-fill-ink`,inactive:`text-muted hover:text-brand`},brand:{container:`border border-cream-line bg-cream-wash`,active:`bg-accent-fill text-accent-fill-ink`,inactive:`text-cream hover:text-accent`}},g=i(()=>h[d.tone]);return(i,c)=>(e(),o(`div`,{role:`group`,"aria-label":`Language`,class:s([`inline-flex items-center h-10 px-2 gap-0.5 rounded-pill font-sans`,g.value.container,u.floating?`fixed top-6 right-6 z-[60] shadow-sm`:``])},[(e(!0),o(a,null,n(t(m),n=>(e(),o(`button`,{key:n.code,type:`button`,"aria-label":n.name,"aria-pressed":t(f)===n.code,class:s([`px-2.5 py-1 text-[11px] font-bold tracking-eyebrow rounded-pill transition-colors duration-base`,t(f)===n.code?g.value.active:g.value.inactive]),onClick:e=>t(p)(n.code)},r(n.label),11,l))),128))],2))}};export{u as t};
|
||||
@@ -1,3 +1,3 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./i18n-BvZbJICa.js";import{t as c}from"./LanguageSwitcher-CbV4jegQ.js";import{t as l}from"./SectionShell-XUVs_07L.js";import{t as u}from"./Card-CPlQ-6EI.js";var d={class:`eyebrow mb-5`},f={class:`grid md:grid-cols-3 gap-4`},p={class:`eyebrow mb-4`},m={class:`text-[13px] text-muted mt-4 leading-relaxed`},h={class:`eyebrow mb-4`},g={class:`text-[13px] text-muted mt-4 leading-relaxed`},_={class:`eyebrow mb-4`},v={class:`text-[13px] opacity-80 mt-4 leading-relaxed`},y={class:`eyebrow mb-5`},b={class:`text-[13px] text-muted max-w-2xl leading-relaxed`},x={class:`eyebrow mb-5`},S={__name:`LanguageSwitcherSection`,setup(S){let{t:C}=s();return(s,S)=>(e(),n(l,{eyebrow:t(C)(`ds.eyebrow.components`),title:t(C)(`ds.language.title`),description:t(C)(`ds.language.description`)},{default:i(()=>[o(`section`,null,[o(`h2`,d,r(t(C)(`ds.heading.onDifferentSurfaces`)),1),o(`div`,f,[a(u,{tone:`paper`},{default:i(()=>[o(`p`,p,r(t(C)(`ds.cards.paper`)),1),a(c,{tone:`paper`}),o(`p`,m,r(t(C)(`ds.language.paperNote`)),1)]),_:1}),a(u,{tone:`cream`},{default:i(()=>[o(`p`,h,r(t(C)(`ds.cards.cream`)),1),a(c,{tone:`cream`}),o(`p`,g,r(t(C)(`ds.language.creamNote`)),1)]),_:1}),a(u,{tone:`brand`},{default:i(()=>[o(`p`,_,r(t(C)(`ds.cards.brand`)),1),a(c,{tone:`brand`}),o(`p`,v,r(t(C)(`ds.language.brandNote`)),1)]),_:1})])]),o(`section`,null,[o(`h2`,y,r(t(C)(`ds.language.floating`)),1),a(u,{tone:`paper`},{default:i(()=>[o(`p`,b,r(t(C)(`ds.language.floatingNote`)),1)]),_:1})]),o(`section`,null,[o(`h2`,x,r(t(C)(`ds.heading.usage`)),1),S[0]||=o(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[o(`pre`,{class:`whitespace-pre-wrap`},`<LanguageSwitcher />
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./i18n-C2O_jcDr.js";import{t as c}from"./LanguageSwitcher-Bts86QFA.js";import{t as l}from"./SectionShell-XUVs_07L.js";import{t as u}from"./Card-CPlQ-6EI.js";var d={class:`eyebrow mb-5`},f={class:`grid md:grid-cols-3 gap-4`},p={class:`eyebrow mb-4`},m={class:`text-[13px] text-muted mt-4 leading-relaxed`},h={class:`eyebrow mb-4`},g={class:`text-[13px] text-muted mt-4 leading-relaxed`},_={class:`eyebrow mb-4`},v={class:`text-[13px] opacity-80 mt-4 leading-relaxed`},y={class:`eyebrow mb-5`},b={class:`text-[13px] text-muted max-w-2xl leading-relaxed`},x={class:`eyebrow mb-5`},S={__name:`LanguageSwitcherSection`,setup(S){let{t:C}=s();return(s,S)=>(e(),n(l,{eyebrow:t(C)(`ds.eyebrow.components`),title:t(C)(`ds.language.title`),description:t(C)(`ds.language.description`)},{default:i(()=>[o(`section`,null,[o(`h2`,d,r(t(C)(`ds.heading.onDifferentSurfaces`)),1),o(`div`,f,[a(u,{tone:`paper`},{default:i(()=>[o(`p`,p,r(t(C)(`ds.cards.paper`)),1),a(c,{tone:`paper`}),o(`p`,m,r(t(C)(`ds.language.paperNote`)),1)]),_:1}),a(u,{tone:`cream`},{default:i(()=>[o(`p`,h,r(t(C)(`ds.cards.cream`)),1),a(c,{tone:`cream`}),o(`p`,g,r(t(C)(`ds.language.creamNote`)),1)]),_:1}),a(u,{tone:`brand`},{default:i(()=>[o(`p`,_,r(t(C)(`ds.cards.brand`)),1),a(c,{tone:`brand`}),o(`p`,v,r(t(C)(`ds.language.brandNote`)),1)]),_:1})])]),o(`section`,null,[o(`h2`,y,r(t(C)(`ds.language.floating`)),1),a(u,{tone:`paper`},{default:i(()=>[o(`p`,b,r(t(C)(`ds.language.floatingNote`)),1)]),_:1})]),o(`section`,null,[o(`h2`,x,r(t(C)(`ds.heading.usage`)),1),S[0]||=o(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[o(`pre`,{class:`whitespace-pre-wrap`},`<LanguageSwitcher />
|
||||
<LanguageSwitcher tone="brand" />
|
||||
<LanguageSwitcher floating />`)],-1)])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{S as default};
|
||||
@@ -1 +1 @@
|
||||
import{B as e,C as t,G as n,S as r,T as i,ft as a,l as o,m as s,o as c,r as l,s as u,u as d,x as f}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{o as p}from"./vue-router-Cyqru1db.js";import{t as m}from"./i18n-BvZbJICa.js";import{r as h}from"./products-BqW5PUnm.js";import{c as g,d as _,f as v,p as y,u as b}from"./api-CJ2exAVU.js";import{t as x}from"./Navbar-DCC7hefD.js";import{t as S}from"./CartDrawer-Ut6nxZa3.js";import{t as C}from"./Footer-CTDuSDnI.js";var w={class:`bg-cream text-ink min-h-svh`},T={class:`mx-auto w-full max-w-3xl px-6 py-14 sm:px-8 sm:py-16 md:px-12 md:py-20 lg:px-16 lg:py-24`},E={class:`flex flex-col gap-3 mb-10 md:mb-14`},D={class:`eyebrow`},O={class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},k={key:0,class:`text-[12px] text-muted`},A={class:`flex flex-col gap-10`},j=[`id`],M={class:`font-display text-xl md:text-2xl font-normal text-brand leading-tight`},N={class:`text-[15px] leading-relaxed text-ink whitespace-pre-line`},P={__name:`LegalPage`,props:{kind:{type:String,required:!0,validator:e=>[`impressum`,`datenschutz`].includes(e)}},setup(P){let F=P,{t:I}=m(),L=y(),R=p(),z=e(!1);function B(){z.value=!1,R.push(`/checkout`)}let V=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`},{key:`nav.kaiserhacks`,href:`/kaiserhacks`}],H=[],U={impressum:[`operator`,`contact`,`register`,`vat`,`authority`,`liability`,`copyright`],datenschutz:[`controller`,`scope`,`legalBasis`,`data`,`cookies`,`analytics`,`payments`,`rights`,`retention`,`contact`]},W=c(()=>U[F.kind].map(e=>({id:e,heading:I(`legal.${F.kind}.section.${e}.heading`),body:I(`legal.${F.kind}.section.${e}.body`)}))),G=c(()=>I(`legal.${F.kind}.updated`));async function K(e){await g(e.id,1),z.value=!0}async function q({productId:e,quantity:t}){await v(e,t)}async function J(e){await _(e)}let Y=e(null),X=null;function Z(){let e=Y.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}return r(()=>{if(b(),Z(),typeof ResizeObserver<`u`&&Y.value){let e=Y.value.$el||Y.value;X=new ResizeObserver(Z),X.observe(e)}window.addEventListener(`resize`,Z)}),f(()=>{X&&X.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,Z)}),(e,r)=>(t(),d(l,null,[s(x,{ref_key:`navRef`,ref:Y,variant:`cream`,layout:`standard`,items:V,"secondary-items":H,"cart-count":n(L).count,products:n(h),onCart:r[0]||=e=>z.value=!0,onSearch:K},null,8,[`cart-count`,`products`]),u(`main`,w,[u(`div`,T,[u(`header`,E,[u(`p`,D,a(n(I)(`legal.${P.kind}.eyebrow`)),1),u(`h1`,O,a(n(I)(`legal.${P.kind}.title`)),1),G.value?(t(),d(`p`,k,a(G.value),1)):o(``,!0)]),u(`article`,A,[(t(!0),d(l,null,i(W.value,e=>(t(),d(`section`,{id:e.id,key:e.id,class:`flex flex-col gap-3`},[u(`h2`,M,a(e.heading),1),u(`p`,N,a(e.body),1)],8,j))),128))])])]),s(C),r[2]||=u(`div`,{"aria-hidden":`true`,class:`md:hidden`,style:{height:`calc(64px + env(safe-area-inset-bottom))`}},null,-1),s(S,{modelValue:z.value,"onUpdate:modelValue":r[1]||=e=>z.value=e,items:n(L).items,subtotal:n(L).subtotal,count:n(L).count,onUpdateQuantity:q,onRemove:J,onCheckout:B},null,8,[`modelValue`,`items`,`subtotal`,`count`])],64))}};export{P as default};
|
||||
import{B as e,C as t,G as n,S as r,T as i,ft as a,l as o,m as s,o as c,r as l,s as u,u as d,x as f}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{o as p}from"./vue-router-Cyqru1db.js";import{t as m}from"./i18n-C2O_jcDr.js";import{r as h}from"./products-CfIXFr2X.js";import{c as g,d as _,f as v,p as y,u as b}from"./api-DeBxQCQq.js";import{t as x}from"./Navbar--vwcBwtS.js";import{t as S}from"./CartDrawer-CegjvllQ.js";import{t as C}from"./Footer-Co01VUwo.js";var w={class:`bg-cream text-ink min-h-svh`},T={class:`mx-auto w-full max-w-3xl px-6 py-14 sm:px-8 sm:py-16 md:px-12 md:py-20 lg:px-16 lg:py-24`},E={class:`flex flex-col gap-3 mb-10 md:mb-14`},D={class:`eyebrow`},O={class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},k={key:0,class:`text-[12px] text-muted`},A={class:`flex flex-col gap-10`},j=[`id`],M={class:`font-display text-xl md:text-2xl font-normal text-brand leading-tight`},N={class:`text-[15px] leading-relaxed text-ink whitespace-pre-line`},P={__name:`LegalPage`,props:{kind:{type:String,required:!0,validator:e=>[`impressum`,`datenschutz`].includes(e)}},setup(P){let F=P,{t:I}=m(),L=y(),R=p(),z=e(!1);function B(){z.value=!1,R.push(`/checkout`)}let V=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`},{key:`nav.kaiserhacks`,href:`/kaiserhacks`}],H=[],U={impressum:[`operator`,`contact`,`register`,`vat`,`authority`,`liability`,`copyright`],datenschutz:[`controller`,`scope`,`legalBasis`,`data`,`cookies`,`analytics`,`payments`,`rights`,`retention`,`contact`]},W=c(()=>U[F.kind].map(e=>({id:e,heading:I(`legal.${F.kind}.section.${e}.heading`),body:I(`legal.${F.kind}.section.${e}.body`)}))),G=c(()=>I(`legal.${F.kind}.updated`));async function K(e){await g(e.id,1),z.value=!0}async function q({productId:e,quantity:t}){await v(e,t)}async function J(e){await _(e)}let Y=e(null),X=null;function Z(){let e=Y.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}return r(()=>{if(b(),Z(),typeof ResizeObserver<`u`&&Y.value){let e=Y.value.$el||Y.value;X=new ResizeObserver(Z),X.observe(e)}window.addEventListener(`resize`,Z)}),f(()=>{X&&X.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,Z)}),(e,r)=>(t(),d(l,null,[s(x,{ref_key:`navRef`,ref:Y,variant:`cream`,layout:`standard`,items:V,"secondary-items":H,"cart-count":n(L).count,products:n(h),onCart:r[0]||=e=>z.value=!0,onSearch:K},null,8,[`cart-count`,`products`]),u(`main`,w,[u(`div`,T,[u(`header`,E,[u(`p`,D,a(n(I)(`legal.${P.kind}.eyebrow`)),1),u(`h1`,O,a(n(I)(`legal.${P.kind}.title`)),1),G.value?(t(),d(`p`,k,a(G.value),1)):o(``,!0)]),u(`article`,A,[(t(!0),d(l,null,i(W.value,e=>(t(),d(`section`,{id:e.id,key:e.id,class:`flex flex-col gap-3`},[u(`h2`,M,a(e.heading),1),u(`p`,N,a(e.body),1)],8,j))),128))])])]),s(C),r[2]||=u(`div`,{"aria-hidden":`true`,class:`md:hidden`,style:{height:`calc(64px + env(safe-area-inset-bottom))`}},null,-1),s(S,{modelValue:z.value,"onUpdate:modelValue":r[1]||=e=>z.value=e,items:n(L).items,subtotal:n(L).subtotal,count:n(L).count,onUpdateQuantity:q,onRemove:J,onCheckout:B},null,8,[`modelValue`,`items`,`subtotal`,`count`])],64))}};export{P as default};
|
||||
@@ -1 +1 @@
|
||||
import{B as e,C as t,G as n,S as r,c as i,ft as a,j as o,l as s,m as c,o as ee,p as l,r as u,s as d,u as f,x as te}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{c as ne}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{a as re,o as ie,t as ae}from"./vue-router-Cyqru1db.js";import{t as oe}from"./i18n-BvZbJICa.js";import{r as se}from"./products-BqW5PUnm.js";import{c as ce,d as p,f as m,i as h,p as g,r as _}from"./api-CJ2exAVU.js";import{t as v}from"./Navbar-DCC7hefD.js";import{t as y}from"./Button-DG-tA4DQ.js";import{t as b}from"./CartDrawer-Ut6nxZa3.js";import{t as x}from"./Footer-CTDuSDnI.js";import{t as S}from"./Input-RN3gn2df.js";var C={class:`bg-cream text-ink min-h-svh`},w={class:`mx-auto w-full max-w-md px-6 py-14 sm:px-8 sm:py-20 md:py-24`},T={class:`flex flex-col gap-3 mb-8 text-center`},E={class:`eyebrow`},D={class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},O={class:`text-[14px] text-muted`},k={key:1,class:`text-sm text-danger`,role:`alert`,"aria-live":`polite`},A={key:1,class:`rounded-md border border-line bg-paper p-6 md:p-8 flex flex-col gap-3 text-center`},j={class:`font-display text-xl text-brand`},M={class:`text-[14px] text-muted`},N={class:`mt-8 text-center text-[14px] text-muted`},P={__name:`LoginPage`,setup(P){let{t:F}=oe(),I=g(),le=re(),L=ie(),R=e(!1);function z(){R.value=!1,L.push(`/checkout`)}async function B(e){await ce(e.id,1),R.value=!0}async function V({productId:e,quantity:t}){await m(e,t)}async function H(e){await p(e)}let U=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`},{key:`nav.kaiserhacks`,href:`/kaiserhacks`}],W=[],G=e(``),K=e(``),q=e(!1),J=e(``),Y=e(!1),X=e(!1),ue=ee(()=>G.value?Y.value?!1:K.value.length<8:!0);async function de(){J.value=``,q.value=!0;try{if(Y.value){await _({email:G.value}),X.value=!0;return}await h({email:G.value,password:K.value});let e=String(le.query.next||`/`);L.push(e)}catch(e){J.value=e?.message||F(`checkout.error.generic`)}finally{q.value=!1}}let Z=e(null),Q=null;function $(){let e=Z.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}return r(()=>{if($(),typeof ResizeObserver<`u`&&Z.value){let e=Z.value.$el||Z.value;Q=new ResizeObserver($),Q.observe(e)}window.addEventListener(`resize`,$)}),te(()=>{Q&&Q.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,$)}),(e,r)=>(t(),f(u,null,[c(v,{ref_key:`navRef`,ref:Z,variant:`cream`,layout:`standard`,items:U,"secondary-items":W,"cart-count":n(I).count,products:n(se),onCart:r[0]||=e=>R.value=!0,onSearch:B},null,8,[`cart-count`,`products`]),d(`main`,C,[d(`div`,w,[d(`header`,T,[d(`p`,E,a(n(F)(`auth.login.eyebrow`)),1),d(`h1`,D,a(Y.value?n(F)(`auth.reset.title`):n(F)(`auth.login.title`)),1),d(`p`,O,a(Y.value?n(F)(`auth.reset.sub`):n(F)(`auth.login.sub`)),1)]),X.value?(t(),f(`div`,A,[d(`h2`,j,a(n(F)(`auth.reset.sent.title`)),1),d(`p`,M,a(n(F)(`auth.reset.sent.body`)),1),d(`button`,{type:`button`,class:`text-[13px] text-brand hover:underline self-center mt-2`,onClick:r[4]||=e=>{Y.value=!1,X.value=!1}},a(n(F)(`auth.reset.back`)),1)])):(t(),f(`form`,{key:0,class:`flex flex-col gap-5 rounded-md border border-line bg-paper p-6 md:p-8`,novalidate:``,onSubmit:ne(de,[`prevent`])},[c(S,{modelValue:G.value,"onUpdate:modelValue":r[1]||=e=>G.value=e,label:n(F)(`checkout.field.email`),type:`email`,required:``,placeholder:n(F)(`checkout.placeholder.email`)},null,8,[`modelValue`,`label`,`placeholder`]),Y.value?s(``,!0):(t(),i(S,{key:0,modelValue:K.value,"onUpdate:modelValue":r[2]||=e=>K.value=e,label:n(F)(`checkout.field.password`),type:`password`,required:``},null,8,[`modelValue`,`label`])),J.value?(t(),f(`p`,k,a(J.value),1)):s(``,!0),c(y,{type:`submit`,variant:`primary`,size:`lg`,block:``,loading:q.value,disabled:ue.value},{default:o(()=>[l(a(Y.value?n(F)(`auth.reset.cta`):n(F)(`auth.login.cta`)),1)]),_:1},8,[`loading`,`disabled`]),d(`button`,{type:`button`,class:`text-[13px] text-brand hover:underline self-start`,onClick:r[3]||=e=>Y.value=!Y.value},a(Y.value?n(F)(`auth.reset.back`):n(F)(`auth.login.forgot`)),1)],32)),d(`p`,N,[l(a(n(F)(`auth.login.newCustomer`))+` `,1),c(n(ae),{to:`/register`,class:`text-brand hover:underline`},{default:o(()=>[l(a(n(F)(`auth.login.cta.register`)),1)]),_:1})])])]),c(x),c(b,{modelValue:R.value,"onUpdate:modelValue":r[5]||=e=>R.value=e,items:n(I).items,subtotal:n(I).subtotal,count:n(I).count,onUpdateQuantity:V,onRemove:H,onCheckout:z},null,8,[`modelValue`,`items`,`subtotal`,`count`])],64))}};export{P as default};
|
||||
import{B as e,C as t,G as n,S as r,c as i,ft as a,j as o,l as s,m as c,o as ee,p as l,r as u,s as d,u as f,x as te}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{c as ne}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{a as re,o as ie,t as ae}from"./vue-router-Cyqru1db.js";import{t as oe}from"./i18n-C2O_jcDr.js";import{r as se}from"./products-CfIXFr2X.js";import{c as ce,d as p,f as m,i as h,p as g,r as _}from"./api-DeBxQCQq.js";import{t as v}from"./Navbar--vwcBwtS.js";import{t as y}from"./Button-DG-tA4DQ.js";import{t as b}from"./CartDrawer-CegjvllQ.js";import{t as x}from"./Footer-Co01VUwo.js";import{t as S}from"./Input-RN3gn2df.js";var C={class:`bg-cream text-ink min-h-svh`},w={class:`mx-auto w-full max-w-md px-6 py-14 sm:px-8 sm:py-20 md:py-24`},T={class:`flex flex-col gap-3 mb-8 text-center`},E={class:`eyebrow`},D={class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},O={class:`text-[14px] text-muted`},k={key:1,class:`text-sm text-danger`,role:`alert`,"aria-live":`polite`},A={key:1,class:`rounded-md border border-line bg-paper p-6 md:p-8 flex flex-col gap-3 text-center`},j={class:`font-display text-xl text-brand`},M={class:`text-[14px] text-muted`},N={class:`mt-8 text-center text-[14px] text-muted`},P={__name:`LoginPage`,setup(P){let{t:F}=oe(),I=g(),le=re(),L=ie(),R=e(!1);function z(){R.value=!1,L.push(`/checkout`)}async function B(e){await ce(e.id,1),R.value=!0}async function V({productId:e,quantity:t}){await m(e,t)}async function H(e){await p(e)}let U=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`},{key:`nav.kaiserhacks`,href:`/kaiserhacks`}],W=[],G=e(``),K=e(``),q=e(!1),J=e(``),Y=e(!1),X=e(!1),ue=ee(()=>G.value?Y.value?!1:K.value.length<8:!0);async function de(){J.value=``,q.value=!0;try{if(Y.value){await _({email:G.value}),X.value=!0;return}await h({email:G.value,password:K.value});let e=String(le.query.next||`/`);L.push(e)}catch(e){J.value=e?.message||F(`checkout.error.generic`)}finally{q.value=!1}}let Z=e(null),Q=null;function $(){let e=Z.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}return r(()=>{if($(),typeof ResizeObserver<`u`&&Z.value){let e=Z.value.$el||Z.value;Q=new ResizeObserver($),Q.observe(e)}window.addEventListener(`resize`,$)}),te(()=>{Q&&Q.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,$)}),(e,r)=>(t(),f(u,null,[c(v,{ref_key:`navRef`,ref:Z,variant:`cream`,layout:`standard`,items:U,"secondary-items":W,"cart-count":n(I).count,products:n(se),onCart:r[0]||=e=>R.value=!0,onSearch:B},null,8,[`cart-count`,`products`]),d(`main`,C,[d(`div`,w,[d(`header`,T,[d(`p`,E,a(n(F)(`auth.login.eyebrow`)),1),d(`h1`,D,a(Y.value?n(F)(`auth.reset.title`):n(F)(`auth.login.title`)),1),d(`p`,O,a(Y.value?n(F)(`auth.reset.sub`):n(F)(`auth.login.sub`)),1)]),X.value?(t(),f(`div`,A,[d(`h2`,j,a(n(F)(`auth.reset.sent.title`)),1),d(`p`,M,a(n(F)(`auth.reset.sent.body`)),1),d(`button`,{type:`button`,class:`text-[13px] text-brand hover:underline self-center mt-2`,onClick:r[4]||=e=>{Y.value=!1,X.value=!1}},a(n(F)(`auth.reset.back`)),1)])):(t(),f(`form`,{key:0,class:`flex flex-col gap-5 rounded-md border border-line bg-paper p-6 md:p-8`,novalidate:``,onSubmit:ne(de,[`prevent`])},[c(S,{modelValue:G.value,"onUpdate:modelValue":r[1]||=e=>G.value=e,label:n(F)(`checkout.field.email`),type:`email`,required:``,placeholder:n(F)(`checkout.placeholder.email`)},null,8,[`modelValue`,`label`,`placeholder`]),Y.value?s(``,!0):(t(),i(S,{key:0,modelValue:K.value,"onUpdate:modelValue":r[2]||=e=>K.value=e,label:n(F)(`checkout.field.password`),type:`password`,required:``},null,8,[`modelValue`,`label`])),J.value?(t(),f(`p`,k,a(J.value),1)):s(``,!0),c(y,{type:`submit`,variant:`primary`,size:`lg`,block:``,loading:q.value,disabled:ue.value},{default:o(()=>[l(a(Y.value?n(F)(`auth.reset.cta`):n(F)(`auth.login.cta`)),1)]),_:1},8,[`loading`,`disabled`]),d(`button`,{type:`button`,class:`text-[13px] text-brand hover:underline self-start`,onClick:r[3]||=e=>Y.value=!Y.value},a(Y.value?n(F)(`auth.reset.back`):n(F)(`auth.login.forgot`)),1)],32)),d(`p`,N,[l(a(n(F)(`auth.login.newCustomer`))+` `,1),c(n(ae),{to:`/register`,class:`text-brand hover:underline`},{default:o(()=>[l(a(n(F)(`auth.login.cta.register`)),1)]),_:1})])])]),c(x),c(b,{modelValue:R.value,"onUpdate:modelValue":r[5]||=e=>R.value=e,items:n(I).items,subtotal:n(I).subtotal,count:n(I).count,onUpdateQuantity:V,onRemove:H,onCheckout:z},null,8,[`modelValue`,`items`,`subtotal`,`count`])],64))}};export{P as default};
|
||||
1
dist/assets/Logo-FD-JLoLl.js
vendored
Normal file
1
dist/assets/Logo-FD-JLoLl.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{C as e,f as t,ft as n,s as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";var a=[`aria-label`],o={__name:`Logo`,props:{title:{type:String,default:`Kaiser-Natron®`}},setup(o){return(s,c)=>(e(),i(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 121.9 76.9`,role:`img`,"aria-label":o.title,fill:`currentColor`},[r(`title`,null,n(o.title),1),c[0]||=t(`<g><polygon points="13.8,15.6 6.7,28.7 6.7,17.5 0,19.3 0,46.4 6.8,44.6 6.7,38.4 9.8,33.3 15.3,42.4 22.4,40.4 14.1,25.9 21.3,13.6"></polygon><path d="M33.1,32c0.6-0.2,1.1-0.4,1.6-0.9l0-7.3c-0.7-0.1-1.3,0-2.1,0.2c-3.1,0.8-3.9,3.2-3.2,5.7 C29.9,31.8,31.2,32.5,33.1,32 M36.3,35.3c-1.1,1.5-2.6,2.6-4.5,3.1c-3.7,1-7.3-0.6-8.8-5.9c-1.7-6.3,1.1-12,7.5-13.7 c2.3-0.6,4.4-0.5,6.1,0.2l1-1.7l3.5-0.9l0,19.1l-3.6,1L36.3,35.3z"></path><path d="M44.9,15.4l6.4-1.7l0,19.1l-6.4,1.7L44.9,15.4z M44.7,5.9l6.6-1.8l0,6.6l-6.7,1.8L44.7,5.9z"></path><path d="M55.6,29.9l-1.3-6.1c2.6,1.1,5.3,1.7,7.2,1.2c0.8-0.2,1.1-0.7,1-1.3c-0.1-0.5-0.6-0.7-2.2-1.1l-0.4-0.1 c-2.9-0.6-4.5-1.8-5.1-4.1c-0.9-3.3,1.1-6.7,5.4-7.8c2.4-0.6,4.9-0.6,6.9,0l0.2,5.6c-1.7-0.7-3.9-0.9-5.1-0.6 c-1,0.3-1.4,0.8-1.2,1.5c0.1,0.4,0.5,0.7,2,1l0.5,0.1c3,0.7,4.3,1.7,4.9,3.8c1,3.6-1.4,6.7-5.6,7.9C60,30.8,57.6,30.8,55.6,29.9"></path><path d="M76.4,14.7l5.4-1.4c-0.6-1.8-1.7-2.5-3-2.1C77.4,11.5,76.5,12.8,76.4,14.7 M80.5,25.3 c-4.5,1.2-8.6,0.2-10.1-5.4c-1.8-6.5,1.7-12.3,7.2-13.8c4.8-1.3,7.8,1.1,9.1,6.1c0.2,0.7,0.4,1.6,0.4,2.4l-10.4,2.8 c0.8,2.3,2.4,2.5,4.5,1.9c1.8-0.5,3.6-1.5,4.8-2.6l-0.8,5.9C83.9,24,82.4,24.7,80.5,25.3"></path><path d="M96,10l0,10.7l-6.4,1.7l0-19.1l4.7-1.3L95.8,4c1.5-2.5,3.2-3.5,4.9-4l0,7.9C99.1,8.4,97.5,9.1,96,10"></path><polygon points="104.5,6.3 112.6,4.1 112.6,7.1 104.5,9.2"></polygon><polygon points="15.5,45.6 15.5,59.7 4.6,48.5 0,49.7 0,76.9 6.6,75.1 6.7,60.7 17.6,72.1 22.1,70.9 22.1,43.8"></polygon><path d="M35.8,61.6c0.6-0.2,1.1-0.4,1.6-0.9l0-7.3c-0.7-0.1-1.3,0-2.1,0.2c-3.1,0.8-3.9,3.2-3.2,5.7 C32.7,61.5,33.9,62.1,35.8,61.6 M39.1,64.9c-1.1,1.5-2.6,2.6-4.5,3.1c-3.7,1-7.3-0.6-8.8-5.9c-1.7-6.3,1.1-12,7.5-13.7 c2.3-0.6,4.4-0.5,6.1,0.2l1-1.7l3.5-0.9l0,19.1l-3.6,1L39.1,64.9z"></path><path d="M54.8,62.5c-3,0.8-5.4,0.3-6.4-3.4C48.2,58,48,56.5,48,54.6l0-4l-1.6,0.4l0-5.7l1.6-0.4l0-5.4l6.4-1.7 l0,5.4l3.1-0.8l0,5.7l-3.1,0.8l0,5.1c0,0.4,0,0.6,0.1,0.9c0.2,0.8,0.8,1,1.8,0.7c0.4-0.1,0.8-0.3,1.3-0.5l-0.5,6.4 C56.4,62,55.6,62.3,54.8,62.5"></path><path d="M67.3,48.1l0,10.7l-6.4,1.7l0-19.1l4.7-1.3l1.5,1.8c1.5-2.5,3.2-3.5,4.9-4l0,7.9 C70.3,46.5,68.8,47.2,67.3,48.1"></path><path d="M86,43.3c-0.5-1.9-1.7-2.7-3.4-2.3c-2.2,0.6-3.2,3-2.4,5.7c0.6,2.1,1.9,2.8,3.4,2.4 C85.8,48.5,86.7,46,86,43.3 M73.9,49.2c-1.6-5.9,1.3-12,8.1-13.9c5.5-1.5,9.1,0.9,10.3,5.4c1.5,5.6-0.9,12-8,13.9 C78.9,56.2,75.2,54.1,73.9,49.2"></path><path d="M101.8,37l0,12.6l-6.4,1.7l0-19.1l3.7-1l2,1.9c1.1-2.3,2.8-3.6,4.6-4.1c2.9-0.8,5.3,0.5,6.3,4.1 c0.3,1.3,0.6,3.3,0.6,5.6l0,7.9l-6.4,1.7l0-8.3c0-1.1,0-2.1-0.2-2.9c-0.3-1.3-1.1-1.5-2.2-1.2C103.2,36.1,102.6,36.4,101.8,37"></path><path d="M117.2,30.5v-2h0.6c0.7,0,1,0.4,1,1c0,0.6-0.4,1-1,1H117.2z M117.2,31.1h0.7c0.1,0,0.2,0,0.3,0l0.7,1.2h0.9 l-1-1.6c0.4-0.3,0.6-0.8,0.6-1.3c0-1-0.7-1.6-1.7-1.6h-1.4v4.5h0.8V31.1z M117.9,33.5c-1.9,0-3.2-1.1-3.2-3.4 c0-2.1,1.4-3.3,3.2-3.3c1.9,0,3.2,1.2,3.2,3.4C121.1,32.3,119.8,33.5,117.9,33.5 M117.8,34.2c2.4,0,4-1.5,4-4.1 c0-2.5-1.6-4.1-4-4.1c-2.3,0-4,1.6-4,4.1C113.8,32.7,115.4,34.2,117.8,34.2"></path></g>`,1)],8,a))}};export{o as t};
|
||||
1
dist/assets/Logo-K2VN1F6l.js
vendored
1
dist/assets/Logo-K2VN1F6l.js
vendored
@@ -1 +0,0 @@
|
||||
import{C as e,f as t,ft as n,s as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";var a=[`aria-label`],o={__name:`Logo`,props:{title:{type:String,default:`Kaiser Natron`}},setup(o){return(s,c)=>(e(),i(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 121.9 76.9`,role:`img`,"aria-label":o.title,fill:`currentColor`},[r(`title`,null,n(o.title),1),c[0]||=t(`<g><polygon points="13.8,15.6 6.7,28.7 6.7,17.5 0,19.3 0,46.4 6.8,44.6 6.7,38.4 9.8,33.3 15.3,42.4 22.4,40.4 14.1,25.9 21.3,13.6"></polygon><path d="M33.1,32c0.6-0.2,1.1-0.4,1.6-0.9l0-7.3c-0.7-0.1-1.3,0-2.1,0.2c-3.1,0.8-3.9,3.2-3.2,5.7 C29.9,31.8,31.2,32.5,33.1,32 M36.3,35.3c-1.1,1.5-2.6,2.6-4.5,3.1c-3.7,1-7.3-0.6-8.8-5.9c-1.7-6.3,1.1-12,7.5-13.7 c2.3-0.6,4.4-0.5,6.1,0.2l1-1.7l3.5-0.9l0,19.1l-3.6,1L36.3,35.3z"></path><path d="M44.9,15.4l6.4-1.7l0,19.1l-6.4,1.7L44.9,15.4z M44.7,5.9l6.6-1.8l0,6.6l-6.7,1.8L44.7,5.9z"></path><path d="M55.6,29.9l-1.3-6.1c2.6,1.1,5.3,1.7,7.2,1.2c0.8-0.2,1.1-0.7,1-1.3c-0.1-0.5-0.6-0.7-2.2-1.1l-0.4-0.1 c-2.9-0.6-4.5-1.8-5.1-4.1c-0.9-3.3,1.1-6.7,5.4-7.8c2.4-0.6,4.9-0.6,6.9,0l0.2,5.6c-1.7-0.7-3.9-0.9-5.1-0.6 c-1,0.3-1.4,0.8-1.2,1.5c0.1,0.4,0.5,0.7,2,1l0.5,0.1c3,0.7,4.3,1.7,4.9,3.8c1,3.6-1.4,6.7-5.6,7.9C60,30.8,57.6,30.8,55.6,29.9"></path><path d="M76.4,14.7l5.4-1.4c-0.6-1.8-1.7-2.5-3-2.1C77.4,11.5,76.5,12.8,76.4,14.7 M80.5,25.3 c-4.5,1.2-8.6,0.2-10.1-5.4c-1.8-6.5,1.7-12.3,7.2-13.8c4.8-1.3,7.8,1.1,9.1,6.1c0.2,0.7,0.4,1.6,0.4,2.4l-10.4,2.8 c0.8,2.3,2.4,2.5,4.5,1.9c1.8-0.5,3.6-1.5,4.8-2.6l-0.8,5.9C83.9,24,82.4,24.7,80.5,25.3"></path><path d="M96,10l0,10.7l-6.4,1.7l0-19.1l4.7-1.3L95.8,4c1.5-2.5,3.2-3.5,4.9-4l0,7.9C99.1,8.4,97.5,9.1,96,10"></path><polygon points="104.5,6.3 112.6,4.1 112.6,7.1 104.5,9.2"></polygon><polygon points="15.5,45.6 15.5,59.7 4.6,48.5 0,49.7 0,76.9 6.6,75.1 6.7,60.7 17.6,72.1 22.1,70.9 22.1,43.8"></polygon><path d="M35.8,61.6c0.6-0.2,1.1-0.4,1.6-0.9l0-7.3c-0.7-0.1-1.3,0-2.1,0.2c-3.1,0.8-3.9,3.2-3.2,5.7 C32.7,61.5,33.9,62.1,35.8,61.6 M39.1,64.9c-1.1,1.5-2.6,2.6-4.5,3.1c-3.7,1-7.3-0.6-8.8-5.9c-1.7-6.3,1.1-12,7.5-13.7 c2.3-0.6,4.4-0.5,6.1,0.2l1-1.7l3.5-0.9l0,19.1l-3.6,1L39.1,64.9z"></path><path d="M54.8,62.5c-3,0.8-5.4,0.3-6.4-3.4C48.2,58,48,56.5,48,54.6l0-4l-1.6,0.4l0-5.7l1.6-0.4l0-5.4l6.4-1.7 l0,5.4l3.1-0.8l0,5.7l-3.1,0.8l0,5.1c0,0.4,0,0.6,0.1,0.9c0.2,0.8,0.8,1,1.8,0.7c0.4-0.1,0.8-0.3,1.3-0.5l-0.5,6.4 C56.4,62,55.6,62.3,54.8,62.5"></path><path d="M67.3,48.1l0,10.7l-6.4,1.7l0-19.1l4.7-1.3l1.5,1.8c1.5-2.5,3.2-3.5,4.9-4l0,7.9 C70.3,46.5,68.8,47.2,67.3,48.1"></path><path d="M86,43.3c-0.5-1.9-1.7-2.7-3.4-2.3c-2.2,0.6-3.2,3-2.4,5.7c0.6,2.1,1.9,2.8,3.4,2.4 C85.8,48.5,86.7,46,86,43.3 M73.9,49.2c-1.6-5.9,1.3-12,8.1-13.9c5.5-1.5,9.1,0.9,10.3,5.4c1.5,5.6-0.9,12-8,13.9 C78.9,56.2,75.2,54.1,73.9,49.2"></path><path d="M101.8,37l0,12.6l-6.4,1.7l0-19.1l3.7-1l2,1.9c1.1-2.3,2.8-3.6,4.6-4.1c2.9-0.8,5.3,0.5,6.3,4.1 c0.3,1.3,0.6,3.3,0.6,5.6l0,7.9l-6.4,1.7l0-8.3c0-1.1,0-2.1-0.2-2.9c-0.3-1.3-1.1-1.5-2.2-1.2C103.2,36.1,102.6,36.4,101.8,37"></path><path d="M117.2,30.5v-2h0.6c0.7,0,1,0.4,1,1c0,0.6-0.4,1-1,1H117.2z M117.2,31.1h0.7c0.1,0,0.2,0,0.3,0l0.7,1.2h0.9 l-1-1.6c0.4-0.3,0.6-0.8,0.6-1.3c0-1-0.7-1.6-1.7-1.6h-1.4v4.5h0.8V31.1z M117.9,33.5c-1.9,0-3.2-1.1-3.2-3.4 c0-2.1,1.4-3.3,3.2-3.3c1.9,0,3.2,1.2,3.2,3.4C121.1,32.3,119.8,33.5,117.9,33.5 M117.8,34.2c2.4,0,4-1.5,4-4.1 c0-2.5-1.6-4.1-4-4.1c-2.3,0-4,1.6-4,4.1C113.8,32.7,115.4,34.2,117.8,34.2"></path></g>`,1)],8,a))}};export{o as t};
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./Logo-K2VN1F6l.js";import{t as c}from"./i18n-BvZbJICa.js";import{t as l}from"./SectionShell-XUVs_07L.js";var u={class:`eyebrow mb-5`},d={class:`grid md:grid-cols-3 gap-4`},f={class:`rounded-md border border-line bg-paper p-10 flex flex-col items-center gap-4`},p={class:`font-mono text-[11px] text-muted`},m={class:`rounded-md border border-line bg-cream p-10 flex flex-col items-center gap-4`},h={class:`font-mono text-[11px] text-muted`},g={class:`rounded-md bg-brand p-10 flex flex-col items-center gap-4`},_={class:`font-mono text-[11px] text-cream opacity-70`},v={class:`eyebrow mb-5`},y={class:`rounded-md border border-line bg-paper p-10 flex items-end gap-10 flex-wrap`},b={class:`flex flex-col items-center gap-3`},x={class:`flex flex-col items-center gap-3`},S={class:`flex flex-col items-center gap-3`},C={class:`eyebrow mb-5`},w={class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},T={class:`mb-2 text-muted`},E={__name:`LogoSection`,setup(E){let{t:D}=c();return(c,E)=>(e(),n(l,{eyebrow:t(D)(`ds.eyebrow.brand`),title:t(D)(`ds.logo.title`),description:t(D)(`ds.logo.description`)},{default:i(()=>[o(`section`,null,[o(`h2`,u,r(t(D)(`ds.heading.onDifferentSurfaces`)),1),o(`div`,d,[o(`div`,f,[a(s,{class:`w-40 h-auto text-brand`}),o(`code`,p,r(t(D)(`ds.cards.paper`)),1)]),o(`div`,m,[a(s,{class:`w-40 h-auto text-brand`}),o(`code`,h,r(t(D)(`ds.cards.cream`)),1)]),o(`div`,g,[a(s,{class:`w-40 h-auto text-paper`}),o(`code`,_,r(t(D)(`ds.cards.brand`)),1)])])]),o(`section`,null,[o(`h2`,v,r(t(D)(`ds.heading.sizes`)),1),o(`div`,y,[o(`div`,b,[a(s,{class:`w-16 h-auto text-brand`}),E[0]||=o(`code`,{class:`font-mono text-[11px] text-muted`},`w-16`,-1)]),o(`div`,x,[a(s,{class:`w-32 h-auto text-brand`}),E[1]||=o(`code`,{class:`font-mono text-[11px] text-muted`},`w-32`,-1)]),o(`div`,S,[a(s,{class:`w-60 h-auto text-brand`}),E[2]||=o(`code`,{class:`font-mono text-[11px] text-muted`},`w-60`,-1)])])]),o(`section`,null,[o(`h2`,C,r(t(D)(`ds.heading.usage`)),1),o(`div`,w,[o(`p`,T,r(t(D)(`ds.logo.usageIntro`)),1),E[3]||=o(`pre`,{class:`whitespace-pre-wrap`},`<Logo class="w-60 h-auto text-brand" />`,-1)])])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{E as default};
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./Logo-FD-JLoLl.js";import{t as c}from"./i18n-C2O_jcDr.js";import{t as l}from"./SectionShell-XUVs_07L.js";var u={class:`eyebrow mb-5`},d={class:`grid md:grid-cols-3 gap-4`},f={class:`rounded-md border border-line bg-paper p-10 flex flex-col items-center gap-4`},p={class:`font-mono text-[11px] text-muted`},m={class:`rounded-md border border-line bg-cream p-10 flex flex-col items-center gap-4`},h={class:`font-mono text-[11px] text-muted`},g={class:`rounded-md bg-brand p-10 flex flex-col items-center gap-4`},_={class:`font-mono text-[11px] text-cream opacity-70`},v={class:`eyebrow mb-5`},y={class:`rounded-md border border-line bg-paper p-10 flex items-end gap-10 flex-wrap`},b={class:`flex flex-col items-center gap-3`},x={class:`flex flex-col items-center gap-3`},S={class:`flex flex-col items-center gap-3`},C={class:`eyebrow mb-5`},w={class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},T={class:`mb-2 text-muted`},E={__name:`LogoSection`,setup(E){let{t:D}=c();return(c,E)=>(e(),n(l,{eyebrow:t(D)(`ds.eyebrow.brand`),title:t(D)(`ds.logo.title`),description:t(D)(`ds.logo.description`)},{default:i(()=>[o(`section`,null,[o(`h2`,u,r(t(D)(`ds.heading.onDifferentSurfaces`)),1),o(`div`,d,[o(`div`,f,[a(s,{class:`w-40 h-auto text-brand`}),o(`code`,p,r(t(D)(`ds.cards.paper`)),1)]),o(`div`,m,[a(s,{class:`w-40 h-auto text-brand`}),o(`code`,h,r(t(D)(`ds.cards.cream`)),1)]),o(`div`,g,[a(s,{class:`w-40 h-auto text-paper`}),o(`code`,_,r(t(D)(`ds.cards.brand`)),1)])])]),o(`section`,null,[o(`h2`,v,r(t(D)(`ds.heading.sizes`)),1),o(`div`,y,[o(`div`,b,[a(s,{class:`w-16 h-auto text-brand`}),E[0]||=o(`code`,{class:`font-mono text-[11px] text-muted`},`w-16`,-1)]),o(`div`,x,[a(s,{class:`w-32 h-auto text-brand`}),E[1]||=o(`code`,{class:`font-mono text-[11px] text-muted`},`w-32`,-1)]),o(`div`,S,[a(s,{class:`w-60 h-auto text-brand`}),E[2]||=o(`code`,{class:`font-mono text-[11px] text-muted`},`w-60`,-1)])])]),o(`section`,null,[o(`h2`,C,r(t(D)(`ds.heading.usage`)),1),o(`div`,w,[o(`p`,T,r(t(D)(`ds.logo.usageIntro`)),1),E[3]||=o(`pre`,{class:`whitespace-pre-wrap`},`<Logo class="w-60 h-auto text-brand" />`,-1)])])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{E as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{C as e,T as t,dt as n,m as r,o as i,r as a,s as o,u as s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as c}from"./vue-router-Cyqru1db.js";import{t as l}from"./Navbar-DCC7hefD.js";var u={class:`min-h-screen bg-surface`},d={class:`max-w-5xl mx-auto px-6 py-16 space-y-6`},f={__name:`NavbarPreview`,setup(f){let p=c(),m=i(()=>{let e=p.query.variant;return[`paper`,`cream`,`brand`].includes(e)?e:`paper`}),h=i(()=>p.query.layout===`floating`?`floating`:`standard`);return(i,c)=>(e(),s(`div`,u,[r(l,{variant:m.value,layout:h.value,"cart-count":2},null,8,[`variant`,`layout`]),o(`div`,d,[(e(),s(a,null,t([40,28,40,32,40,28,36,40],e=>o(`div`,{key:e,class:`rounded-md border border-line bg-paper`,style:n({height:e*4+`px`})},null,4)),64))])]))}};export{f as default};
|
||||
import{C as e,T as t,dt as n,m as r,o as i,r as a,s as o,u as s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as c}from"./vue-router-Cyqru1db.js";import{t as l}from"./Navbar--vwcBwtS.js";var u={class:`min-h-screen bg-surface`},d={class:`max-w-5xl mx-auto px-6 py-16 space-y-6`},f={__name:`NavbarPreview`,setup(f){let p=c(),m=i(()=>{let e=p.query.variant;return[`paper`,`cream`,`brand`].includes(e)?e:`paper`}),h=i(()=>p.query.layout===`floating`?`floating`:`standard`);return(i,c)=>(e(),s(`div`,u,[r(l,{variant:m.value,layout:h.value,"cart-count":2},null,8,[`variant`,`layout`]),o(`div`,d,[(e(),s(a,null,t([40,28,40,32,40,28,36,40],e=>o(`div`,{key:e,class:`rounded-md border border-line bg-paper`,style:n({height:e*4+`px`})},null,4)),64))])]))}};export{f as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,T as r,c as i,dt as a,ft as o,j 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"./i18n-BvZbJICa.js";import{t as g}from"./SectionShell-XUVs_07L.js";import{t as _}from"./DevicePreview-CxF-mErd.js";var v=[`aria-label`],y=[`aria-selected`,`onClick`],b=[`aria-label`],x=[`aria-selected`,`onClick`],S={class:`eyebrow mb-5`},C={__name:`NavbarSection`,setup(C){let{t:w}=h(),T=l(()=>[{id:`paper`,label:w(`ds.navbar.tone.paper`),swatch:`#ffffff`},{id:`cream`,label:w(`ds.navbar.tone.cream`),swatch:`var(--color-cream)`},{id:`brand`,label:w(`ds.navbar.tone.brand`),swatch:`var(--color-brand)`}]),E=l(()=>[{id:`standard`,label:w(`ds.navbar.layout.standard`)},{id:`floating`,label:w(`ds.navbar.layout.floating`)}]),D=e(`paper`),O=e(`standard`),k=l(()=>`/design/preview/navbar?variant=${D.value}&layout=${O.value}`);return(e,l)=>(t(),i(g,{eyebrow:n(w)(`ds.eyebrow.components`),title:n(w)(`ds.navbar.title`),description:n(w)(`ds.navbar.description`),wide:``},{default:s(()=>[f(`section`,null,[c(_,{src:k.value,initial:`mobile`,height:720},{controls:s(()=>[f(`div`,{role:`tablist`,"aria-label":n(w)(`ds.navbar.layout`),class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},[(t(!0),p(d,null,r(E.value,e=>(t(),p(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":O.value===e.id,class:m([`px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,O.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>O.value=e.id},o(e.label),11,y))),128))],8,v),f(`div`,{role:`tablist`,"aria-label":n(w)(`ds.navbar.tone`),class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},[(t(!0),p(d,null,r(T.value,e=>(t(),p(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":D.value===e.id,class:m([`inline-flex items-center gap-2 px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,D.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>D.value=e.id},[f(`span`,{class:`w-2.5 h-2.5 rounded-full border border-line-strong`,style:a({backgroundColor:e.swatch})},null,4),u(` `+o(e.label),1)],10,x))),128))],8,b)]),_:1},8,[`src`])]),f(`section`,null,[f(`h2`,S,o(n(w)(`ds.heading.usage`)),1),l[0]||=f(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[f(`pre`,{class:`whitespace-pre-wrap`},`<Navbar
|
||||
import{B as e,C as t,G as n,T as r,c as i,dt as a,ft as o,j 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"./i18n-C2O_jcDr.js";import{t as g}from"./SectionShell-XUVs_07L.js";import{t as _}from"./DevicePreview-CxF-mErd.js";var v=[`aria-label`],y=[`aria-selected`,`onClick`],b=[`aria-label`],x=[`aria-selected`,`onClick`],S={class:`eyebrow mb-5`},C={__name:`NavbarSection`,setup(C){let{t:w}=h(),T=l(()=>[{id:`paper`,label:w(`ds.navbar.tone.paper`),swatch:`#ffffff`},{id:`cream`,label:w(`ds.navbar.tone.cream`),swatch:`var(--color-cream)`},{id:`brand`,label:w(`ds.navbar.tone.brand`),swatch:`var(--color-brand)`}]),E=l(()=>[{id:`standard`,label:w(`ds.navbar.layout.standard`)},{id:`floating`,label:w(`ds.navbar.layout.floating`)}]),D=e(`paper`),O=e(`standard`),k=l(()=>`/design/preview/navbar?variant=${D.value}&layout=${O.value}`);return(e,l)=>(t(),i(g,{eyebrow:n(w)(`ds.eyebrow.components`),title:n(w)(`ds.navbar.title`),description:n(w)(`ds.navbar.description`),wide:``},{default:s(()=>[f(`section`,null,[c(_,{src:k.value,initial:`mobile`,height:720},{controls:s(()=>[f(`div`,{role:`tablist`,"aria-label":n(w)(`ds.navbar.layout`),class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},[(t(!0),p(d,null,r(E.value,e=>(t(),p(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":O.value===e.id,class:m([`px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,O.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>O.value=e.id},o(e.label),11,y))),128))],8,v),f(`div`,{role:`tablist`,"aria-label":n(w)(`ds.navbar.tone`),class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},[(t(!0),p(d,null,r(T.value,e=>(t(),p(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":D.value===e.id,class:m([`inline-flex items-center gap-2 px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,D.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>D.value=e.id},[f(`span`,{class:`w-2.5 h-2.5 rounded-full border border-line-strong`,style:a({backgroundColor:e.swatch})},null,4),u(` `+o(e.label),1)],10,x))),128))],8,b)]),_:1},8,[`src`])]),f(`section`,null,[f(`h2`,S,o(n(w)(`ds.heading.usage`)),1),l[0]||=f(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[f(`pre`,{class:`whitespace-pre-wrap`},`<Navbar
|
||||
variant="paper"
|
||||
layout="floating"
|
||||
:items="[{ key: 'nav.shop', href: '/shop' }]"
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{C as e,G as t,O as n,c as r,ft as i,j as a,l as o,m as s,o as c,p as l,s as u,u as d,ut as f}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as p}from"./vue-router-Cyqru1db.js";import{t as m}from"./Icon-CtR1FGIT.js";import{t as h}from"./i18n-BvZbJICa.js";import{t as g}from"./Badge-CudT491x.js";import{t as _}from"./Button-DG-tA4DQ.js";var v=[`src`,`alt`],y=[`src`,`alt`],b={class:`flex flex-col gap-3 p-6`},x={class:`flex flex-col gap-1`},S={class:`text-sm text-muted tracking-label min-h-[1lh]`},C={class:`mt-auto flex items-center justify-between gap-3 pt-2`},w={class:`font-display text-2xl font-normal text-brand`},T={key:0,class:`text-xs font-semibold tracking-label uppercase text-danger`},E={__name:`ProductCard`,props:{title:{type:String,required:!0},size:{type:String,default:``},price:{type:[String,Number],required:!0},currency:{type:String,default:`€`},image:{type:String,required:!0},imageAlt:{type:String,default:``},badge:{type:String,default:``},badgeVariant:{type:String,default:`accent`,validator:e=>[`neutral`,`brand`,`accent`,`subtle`,`success`,`warning`,`danger`].includes(e)},tone:{type:String,default:`paper`,validator:e=>[`paper`,`cream`,`brand`].includes(e)},inStock:{type:Boolean,default:!0},href:{type:String,default:``},ctaVariant:{type:String,default:`accent`}},emits:[`add`],setup(E){function D(e){return typeof e==`string`&&e.startsWith(`/`)&&!e.startsWith(`//`)}let O=E,{t:k}=h(),A={paper:{surface:`bg-paper`,media:`bg-paper`,border:`border-line`},cream:{surface:`bg-cream`,media:`bg-paper`,border:`border-line`},brand:{surface:`bg-paper`,media:`bg-brand`,border:`border-line`}},j=c(()=>A[O.tone]),M=c(()=>typeof O.price==`number`?`${O.currency} ${O.price.toFixed(2).replace(`.`,`,`)}`:`${O.currency} ${O.price}`);return(c,h)=>(e(),d(`article`,{class:f([`group flex flex-col overflow-hidden rounded-md border transition-all duration-base ease-out`,j.value.surface,j.value.border,`hover:-translate-y-1 hover:shadow-md hover:border-brand-soft`])},[E.href&&D(E.href)?(e(),r(t(p),{key:0,to:E.href,class:f([`relative flex items-center justify-center h-40 md:h-48 overflow-hidden`,j.value.media])},{default:a(()=>[E.badge?(e(),r(g,{key:0,variant:E.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:a(()=>[l(i(E.badge),1)]),_:1},8,[`variant`])):o(``,!0),u(`img`,{src:E.image,alt:E.imageAlt||E.title,loading:`lazy`,decoding:`async`,class:`max-w-[55%] max-h-[80%] object-contain transition-transform duration-slow ease-out group-hover:scale-105`},null,8,v)]),_:1},8,[`to`,`class`])):(e(),r(n(E.href?`a`:`div`),{key:1,href:E.href||null,class:f([`relative flex items-center justify-center h-40 md:h-48 overflow-hidden`,j.value.media])},{default:a(()=>[E.badge?(e(),r(g,{key:0,variant:E.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:a(()=>[l(i(E.badge),1)]),_:1},8,[`variant`])):o(``,!0),u(`img`,{src:E.image,alt:E.imageAlt||E.title,loading:`lazy`,decoding:`async`,class:`max-w-[55%] max-h-[80%] object-contain transition-transform duration-slow ease-out group-hover:scale-105`},null,8,y)]),_:1},8,[`href`,`class`])),u(`div`,b,[u(`div`,x,[E.href&&D(E.href)?(e(),r(t(p),{key:0,to:E.href,class:f([`font-display text-xl font-normal leading-tight text-ink min-h-[2lh]`,`hover:text-brand transition-colors duration-base`])},{default:a(()=>[l(i(E.title),1)]),_:1},8,[`to`])):(e(),r(n(E.href?`a`:`h3`),{key:1,href:E.href||null,class:f([`font-display text-xl font-normal leading-tight text-ink min-h-[2lh]`,E.href?`hover:text-brand transition-colors duration-base`:``])},{default:a(()=>[l(i(E.title),1)]),_:1},8,[`href`,`class`])),u(`p`,S,i(E.size||`\xA0`),1)]),u(`div`,C,[u(`span`,w,i(M.value),1),E.inStock?o(``,!0):(e(),d(`span`,T,i(t(k)(`ds.product.outOfStock`)),1))]),s(_,{variant:E.ctaVariant,size:`md`,block:``,disabled:!E.inStock,onClick:h[0]||=e=>c.$emit(`add`)},{before:a(()=>[s(m,{name:`plus`,size:16})]),default:a(()=>[l(` `+i(t(k)(`ds.buttons.addToCart`)),1)]),_:1},8,[`variant`,`disabled`])])],2))}};export{E as t};
|
||||
import{C as e,G as t,O as n,c as r,ft as i,j as a,l as o,m as s,o as c,p as l,s as u,u as d,ut as f}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as p}from"./vue-router-Cyqru1db.js";import{t as m}from"./Icon-CtR1FGIT.js";import{t as h}from"./i18n-C2O_jcDr.js";import{t as g}from"./Badge-CudT491x.js";import{t as _}from"./Button-DG-tA4DQ.js";var v=[`src`,`alt`],y=[`src`,`alt`],b={class:`flex flex-col gap-3 p-6`},x={class:`flex flex-col gap-1`},S={class:`text-sm text-muted tracking-label min-h-[1lh]`},C={class:`mt-auto flex items-center justify-between gap-3 pt-2`},w={class:`font-display text-2xl font-normal text-brand`},T={key:0,class:`text-xs font-semibold tracking-label uppercase text-danger`},E={__name:`ProductCard`,props:{title:{type:String,required:!0},size:{type:String,default:``},price:{type:[String,Number],required:!0},currency:{type:String,default:`€`},image:{type:String,required:!0},imageAlt:{type:String,default:``},badge:{type:String,default:``},badgeVariant:{type:String,default:`accent`,validator:e=>[`neutral`,`brand`,`accent`,`subtle`,`success`,`warning`,`danger`].includes(e)},tone:{type:String,default:`paper`,validator:e=>[`paper`,`cream`,`brand`].includes(e)},inStock:{type:Boolean,default:!0},href:{type:String,default:``},ctaVariant:{type:String,default:`accent`}},emits:[`add`],setup(E){function D(e){return typeof e==`string`&&e.startsWith(`/`)&&!e.startsWith(`//`)}let O=E,{t:k}=h(),A={paper:{surface:`bg-paper`,media:`bg-paper`,border:`border-line`},cream:{surface:`bg-cream`,media:`bg-paper`,border:`border-line`},brand:{surface:`bg-paper`,media:`bg-brand`,border:`border-line`}},j=c(()=>A[O.tone]),M=c(()=>typeof O.price==`number`?`${O.currency} ${O.price.toFixed(2).replace(`.`,`,`)}`:`${O.currency} ${O.price}`);return(c,h)=>(e(),d(`article`,{class:f([`group flex flex-col overflow-hidden rounded-md border transition-all duration-base ease-out`,j.value.surface,j.value.border,`hover:-translate-y-1 hover:shadow-md hover:border-brand-soft`])},[E.href&&D(E.href)?(e(),r(t(p),{key:0,to:E.href,class:f([`relative flex items-center justify-center h-40 md:h-48 overflow-hidden`,j.value.media])},{default:a(()=>[E.badge?(e(),r(g,{key:0,variant:E.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:a(()=>[l(i(E.badge),1)]),_:1},8,[`variant`])):o(``,!0),u(`img`,{src:E.image,alt:E.imageAlt||E.title,loading:`lazy`,decoding:`async`,class:`max-w-[55%] max-h-[80%] object-contain transition-transform duration-slow ease-out group-hover:scale-105`},null,8,v)]),_:1},8,[`to`,`class`])):(e(),r(n(E.href?`a`:`div`),{key:1,href:E.href||null,class:f([`relative flex items-center justify-center h-40 md:h-48 overflow-hidden`,j.value.media])},{default:a(()=>[E.badge?(e(),r(g,{key:0,variant:E.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:a(()=>[l(i(E.badge),1)]),_:1},8,[`variant`])):o(``,!0),u(`img`,{src:E.image,alt:E.imageAlt||E.title,loading:`lazy`,decoding:`async`,class:`max-w-[55%] max-h-[80%] object-contain transition-transform duration-slow ease-out group-hover:scale-105`},null,8,y)]),_:1},8,[`href`,`class`])),u(`div`,b,[u(`div`,x,[E.href&&D(E.href)?(e(),r(t(p),{key:0,to:E.href,class:f([`font-display text-xl font-normal leading-tight text-ink min-h-[2lh]`,`hover:text-brand transition-colors duration-base`])},{default:a(()=>[l(i(E.title),1)]),_:1},8,[`to`])):(e(),r(n(E.href?`a`:`h3`),{key:1,href:E.href||null,class:f([`font-display text-xl font-normal leading-tight text-ink min-h-[2lh]`,E.href?`hover:text-brand transition-colors duration-base`:``])},{default:a(()=>[l(i(E.title),1)]),_:1},8,[`href`,`class`])),u(`p`,S,i(E.size||`\xA0`),1)]),u(`div`,C,[u(`span`,w,i(M.value),1),E.inStock?o(``,!0):(e(),d(`span`,T,i(t(k)(`ds.product.outOfStock`)),1))]),s(_,{variant:E.ctaVariant,size:`md`,block:``,disabled:!E.inStock,onClick:h[0]||=e=>c.$emit(`add`)},{before:a(()=>[s(m,{name:`plus`,size:16})]),default:a(()=>[l(` `+i(t(k)(`ds.buttons.addToCart`)),1)]),_:1},8,[`variant`,`disabled`])])],2))}};export{E as t};
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,c as r,ft as i,j as a,l as o,m as s,p as c,s as l,u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as d}from"./i18n-BvZbJICa.js";import{t as f}from"./ProductCard-aUeDK0tY.js";import{t as p}from"./SectionShell-XUVs_07L.js";var m={class:`eyebrow mb-5`},h={class:`grid sm:grid-cols-2 lg:grid-cols-3 gap-6`},g={key:0,class:`mt-5 text-sm text-muted`},_={class:`font-mono text-[12px]`},v={class:`eyebrow mb-5`},y={class:`grid sm:grid-cols-2 lg:grid-cols-3 gap-6`},b={class:`eyebrow mb-5`},x=`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,S={__name:`ProductsSection`,setup(S){let{t:C}=d(),w=e(``);function T(e){w.value=e,setTimeout(()=>{w.value===e&&(w.value=``)},2e3)}return(e,d)=>(t(),r(p,{eyebrow:n(C)(`ds.eyebrow.components`),title:n(C)(`ds.product.title`),description:n(C)(`ds.product.description`)},{default:a(()=>[l(`section`,null,[l(`h2`,m,i(n(C)(`ds.heading.default`)),1),l(`div`,h,[s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,"image-alt":`Kaiser-Natron Pulver 250 g Großpackung`,href:`#`,onAdd:d[0]||=e=>T(`pulver-250`)}),s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,badge:n(C)(`ds.badges.featured`),"badge-variant":`accent`,href:`#`,onAdd:d[1]||=e=>T(`pulver-250-featured`)},null,8,[`badge`]),s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,tone:`cream`,href:`#`,onAdd:d[2]||=e=>T(`pulver-250-cream`)})]),w.value?(t(),u(`p`,g,[c(i(n(C)(`ds.product.added`))+`: `,1),l(`code`,_,i(w.value),1)])):o(``,!0)]),l(`section`,null,[l(`h2`,v,i(n(C)(`ds.heading.states`)),1),l(`div`,y,[s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,"in-stock":!1}),s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,badge:n(C)(`ds.badges.newRelease`),"badge-variant":`brand`,href:`#`},null,8,[`badge`])])]),l(`section`,null,[l(`h2`,b,i(n(C)(`ds.heading.usage`)),1),d[3]||=l(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[l(`pre`,{class:`whitespace-pre-wrap`},`<ProductCard
|
||||
import{B as e,C as t,G as n,c as r,ft as i,j as a,l as o,m as s,p as c,s as l,u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as d}from"./i18n-C2O_jcDr.js";import{t as f}from"./ProductCard-C-W-Yc1y.js";import{t as p}from"./SectionShell-XUVs_07L.js";var m={class:`eyebrow mb-5`},h={class:`grid sm:grid-cols-2 lg:grid-cols-3 gap-6`},g={key:0,class:`mt-5 text-sm text-muted`},_={class:`font-mono text-[12px]`},v={class:`eyebrow mb-5`},y={class:`grid sm:grid-cols-2 lg:grid-cols-3 gap-6`},b={class:`eyebrow mb-5`},x=`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,S={__name:`ProductsSection`,setup(S){let{t:C}=d(),w=e(``);function T(e){w.value=e,setTimeout(()=>{w.value===e&&(w.value=``)},2e3)}return(e,d)=>(t(),r(p,{eyebrow:n(C)(`ds.eyebrow.components`),title:n(C)(`ds.product.title`),description:n(C)(`ds.product.description`)},{default:a(()=>[l(`section`,null,[l(`h2`,m,i(n(C)(`ds.heading.default`)),1),l(`div`,h,[s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,"image-alt":`Kaiser-Natron Pulver 250 g Großpackung`,href:`#`,onAdd:d[0]||=e=>T(`pulver-250`)}),s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,badge:n(C)(`ds.badges.featured`),"badge-variant":`accent`,href:`#`,onAdd:d[1]||=e=>T(`pulver-250-featured`)},null,8,[`badge`]),s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,tone:`cream`,href:`#`,onAdd:d[2]||=e=>T(`pulver-250-cream`)})]),w.value?(t(),u(`p`,g,[c(i(n(C)(`ds.product.added`))+`: `,1),l(`code`,_,i(w.value),1)])):o(``,!0)]),l(`section`,null,[l(`h2`,v,i(n(C)(`ds.heading.states`)),1),l(`div`,y,[s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,"in-stock":!1}),s(f,{title:`Kaiser-Natron® Pulver`,size:`250 g Großpackung`,price:4.49,image:x,badge:n(C)(`ds.badges.newRelease`),"badge-variant":`brand`,href:`#`},null,8,[`badge`])])]),l(`section`,null,[l(`h2`,b,i(n(C)(`ds.heading.usage`)),1),d[3]||=l(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[l(`pre`,{class:`whitespace-pre-wrap`},`<ProductCard
|
||||
title="Kaiser-Natron® Pulver"
|
||||
size="250 g Großpackung"
|
||||
:price="4.49"
|
||||
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,c as r,ft as i,j as a,m as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-BvZbJICa.js";import{t as l}from"./QuantityStepper-BB38-Td1.js";import{t as u}from"./SectionShell-XUVs_07L.js";var d={class:`eyebrow mb-5`},f={class:`flex flex-wrap items-center gap-6`},p={class:`eyebrow mb-5`},m={class:`flex flex-wrap items-center gap-6`},h={class:`flex flex-col gap-2`},g={class:`eyebrow`},_={class:`flex flex-col gap-2`},v={class:`eyebrow`},y={class:`flex flex-col gap-2`},b={class:`eyebrow`},x={class:`eyebrow mb-5`},S={__name:`QuantityStepperSection`,setup(S){let{t:C}=c(),w=e(1),T=e(3),E=e(5),D=e(2);return(e,c)=>(t(),r(u,{eyebrow:n(C)(`ds.eyebrow.components`),title:n(C)(`ds.qtyStepper.title`),description:n(C)(`ds.qtyStepper.description`)},{default:a(()=>[s(`section`,null,[s(`h2`,d,i(n(C)(`ds.heading.sizes`)),1),s(`div`,f,[o(l,{modelValue:w.value,"onUpdate:modelValue":c[0]||=e=>w.value=e,size:`sm`,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`modelValue`,`decrease-label`,`increase-label`]),o(l,{modelValue:T.value,"onUpdate:modelValue":c[1]||=e=>T.value=e,size:`md`,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`modelValue`,`decrease-label`,`increase-label`])])]),s(`section`,null,[s(`h2`,p,i(n(C)(`ds.heading.states`)),1),s(`div`,m,[s(`div`,h,[s(`span`,g,i(n(C)(`ds.qtyStepper.minBoundary`)),1),o(l,{"model-value":0,min:0,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`decrease-label`,`increase-label`])]),s(`div`,_,[s(`span`,v,i(n(C)(`ds.qtyStepper.maxBoundary`)),1),o(l,{modelValue:E.value,"onUpdate:modelValue":c[2]||=e=>E.value=e,max:5,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`modelValue`,`decrease-label`,`increase-label`])]),s(`div`,y,[s(`span`,b,i(n(C)(`ds.buttons.disabled`)),1),o(l,{modelValue:D.value,"onUpdate:modelValue":c[3]||=e=>D.value=e,disabled:``,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`modelValue`,`decrease-label`,`increase-label`])])])]),s(`section`,null,[s(`h2`,x,i(n(C)(`ds.heading.usage`)),1),c[4]||=s(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[s(`pre`,{class:`whitespace-pre-wrap`},`<QuantityStepper
|
||||
import{B as e,C as t,G as n,c as r,ft as i,j as a,m as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-C2O_jcDr.js";import{t as l}from"./QuantityStepper-BB38-Td1.js";import{t as u}from"./SectionShell-XUVs_07L.js";var d={class:`eyebrow mb-5`},f={class:`flex flex-wrap items-center gap-6`},p={class:`eyebrow mb-5`},m={class:`flex flex-wrap items-center gap-6`},h={class:`flex flex-col gap-2`},g={class:`eyebrow`},_={class:`flex flex-col gap-2`},v={class:`eyebrow`},y={class:`flex flex-col gap-2`},b={class:`eyebrow`},x={class:`eyebrow mb-5`},S={__name:`QuantityStepperSection`,setup(S){let{t:C}=c(),w=e(1),T=e(3),E=e(5),D=e(2);return(e,c)=>(t(),r(u,{eyebrow:n(C)(`ds.eyebrow.components`),title:n(C)(`ds.qtyStepper.title`),description:n(C)(`ds.qtyStepper.description`)},{default:a(()=>[s(`section`,null,[s(`h2`,d,i(n(C)(`ds.heading.sizes`)),1),s(`div`,f,[o(l,{modelValue:w.value,"onUpdate:modelValue":c[0]||=e=>w.value=e,size:`sm`,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`modelValue`,`decrease-label`,`increase-label`]),o(l,{modelValue:T.value,"onUpdate:modelValue":c[1]||=e=>T.value=e,size:`md`,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`modelValue`,`decrease-label`,`increase-label`])])]),s(`section`,null,[s(`h2`,p,i(n(C)(`ds.heading.states`)),1),s(`div`,m,[s(`div`,h,[s(`span`,g,i(n(C)(`ds.qtyStepper.minBoundary`)),1),o(l,{"model-value":0,min:0,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`decrease-label`,`increase-label`])]),s(`div`,_,[s(`span`,v,i(n(C)(`ds.qtyStepper.maxBoundary`)),1),o(l,{modelValue:E.value,"onUpdate:modelValue":c[2]||=e=>E.value=e,max:5,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`modelValue`,`decrease-label`,`increase-label`])]),s(`div`,y,[s(`span`,b,i(n(C)(`ds.buttons.disabled`)),1),o(l,{modelValue:D.value,"onUpdate:modelValue":c[3]||=e=>D.value=e,disabled:``,"decrease-label":n(C)(`cart.qty.decrease`),"increase-label":n(C)(`cart.qty.increase`)},null,8,[`modelValue`,`decrease-label`,`increase-label`])])])]),s(`section`,null,[s(`h2`,x,i(n(C)(`ds.heading.usage`)),1),c[4]||=s(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[s(`pre`,{class:`whitespace-pre-wrap`},`<QuantityStepper
|
||||
v-model="quantity"
|
||||
:min="0"
|
||||
:max="10"
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,T as n,c as r,dt as i,ft as a,j as o,r as s,s as c,u as l}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as u}from"./i18n-BvZbJICa.js";import{t as d}from"./SectionShell-XUVs_07L.js";var f={class:`grid grid-cols-2 sm:grid-cols-3 gap-6`},p={class:`font-mono text-[12px] text-ink block`},m={class:`text-[12px] text-muted mt-1`},h={__name:`RadiiSection`,setup(h){let{t:g}=u(),_=[{name:`xs`,value:`6px`},{name:`sm`,value:`10px`},{name:`md`,value:`16px`},{name:`lg`,value:`20px`},{name:`xl`,value:`28px`},{name:`pill`,value:`100px`}];return(u,h)=>(e(),r(d,{eyebrow:t(g)(`ds.eyebrow.tokens`),title:t(g)(`ds.radii.title`),description:t(g)(`ds.radii.description`)},{default:o(()=>[c(`div`,f,[(e(),l(s,null,n(_,e=>c(`div`,{key:e.name,class:`flex flex-col items-center`},[c(`div`,{class:`h-32 w-full bg-paper border border-line mb-4 shadow-sm`,style:i({borderRadius:`var(--radius-${e.name})`})},null,4),c(`code`,p,`--radius-`+a(e.name),1),c(`span`,m,a(e.value),1)])),64))])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{h as default};
|
||||
import{C as e,G as t,T as n,c as r,dt as i,ft as a,j as o,r as s,s as c,u as l}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as u}from"./i18n-C2O_jcDr.js";import{t as d}from"./SectionShell-XUVs_07L.js";var f={class:`grid grid-cols-2 sm:grid-cols-3 gap-6`},p={class:`font-mono text-[12px] text-ink block`},m={class:`text-[12px] text-muted mt-1`},h={__name:`RadiiSection`,setup(h){let{t:g}=u(),_=[{name:`xs`,value:`6px`},{name:`sm`,value:`10px`},{name:`md`,value:`16px`},{name:`lg`,value:`20px`},{name:`xl`,value:`28px`},{name:`pill`,value:`100px`}];return(u,h)=>(e(),r(d,{eyebrow:t(g)(`ds.eyebrow.tokens`),title:t(g)(`ds.radii.title`),description:t(g)(`ds.radii.description`)},{default:o(()=>[c(`div`,f,[(e(),l(s,null,n(_,e=>c(`div`,{key:e.name,class:`flex flex-col items-center`},[c(`div`,{class:`h-32 w-full bg-paper border border-line mb-4 shadow-sm`,style:i({borderRadius:`var(--radius-${e.name})`})},null,4),c(`code`,p,`--radius-`+a(e.name),1),c(`span`,m,a(e.value),1)])),64))])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{h as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as a}from"./i18n-BvZbJICa.js";import{t as o}from"./Revitalization-B4uAvZpk.js";var s={class:`min-h-screen bg-brand`},c={__name:`RevitalizationPreview`,setup(c){let{t:l}=a(),u=r(()=>[{title:l(`revit.feature.1.title`),icon:`⚗️`},{title:l(`revit.feature.2.title`),icon:`💊`},{title:l(`revit.feature.3.title`),icon:`🌿`}]);return(r,a)=>(e(),i(`div`,s,[n(o,{eyebrow:t(l)(`revit.eyebrow`),headline:t(l)(`revit.headline.a`),"headline-em":t(l)(`revit.headline.em`),sub:t(l)(`revit.sub`),features:u.value,"notify-cta":t(l)(`revit.notifyCta`)},null,8,[`eyebrow`,`headline`,`headline-em`,`sub`,`features`,`notify-cta`])]))}};export{c as default};
|
||||
import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as a}from"./i18n-C2O_jcDr.js";import{t as o}from"./Revitalization-B4uAvZpk.js";var s={class:`min-h-screen bg-brand`},c={__name:`RevitalizationPreview`,setup(c){let{t:l}=a(),u=r(()=>[{title:l(`revit.feature.1.title`),icon:`⚗️`},{title:l(`revit.feature.2.title`),icon:`💊`},{title:l(`revit.feature.3.title`),icon:`🌿`}]);return(r,a)=>(e(),i(`div`,s,[n(o,{eyebrow:t(l)(`revit.eyebrow`),headline:t(l)(`revit.headline.a`),"headline-em":t(l)(`revit.headline.em`),sub:t(l)(`revit.sub`),features:u.value,"notify-cta":t(l)(`revit.notifyCta`)},null,8,[`eyebrow`,`headline`,`headline-em`,`sub`,`features`,`notify-cta`])]))}};export{c as default};
|
||||
@@ -1,4 +1,4 @@
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./i18n-BvZbJICa.js";import{t as c}from"./SectionShell-XUVs_07L.js";import{t as l}from"./DevicePreview-CxF-mErd.js";var u={class:`eyebrow mb-5`},d=`/design/preview/revitalization`,f={__name:`RevitalizationSection`,setup(f){let{t:p}=s();return(s,f)=>(e(),n(c,{eyebrow:t(p)(`ds.eyebrow.components`),title:t(p)(`ds.revitalization.title`),description:t(p)(`ds.revitalization.description`),wide:``},{default:i(()=>[o(`section`,null,[a(l,{src:d,initial:`desktop`,height:720})]),o(`section`,null,[o(`h2`,u,r(t(p)(`ds.heading.usage`)),1),f[0]||=o(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[o(`pre`,{class:`whitespace-pre-wrap`},`<Revitalization
|
||||
import{C as e,G as t,c as n,ft as r,j as i,m as a,s as o}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as s}from"./i18n-C2O_jcDr.js";import{t as c}from"./SectionShell-XUVs_07L.js";import{t as l}from"./DevicePreview-CxF-mErd.js";var u={class:`eyebrow mb-5`},d=`/design/preview/revitalization`,f={__name:`RevitalizationSection`,setup(f){let{t:p}=s();return(s,f)=>(e(),n(c,{eyebrow:t(p)(`ds.eyebrow.components`),title:t(p)(`ds.revitalization.title`),description:t(p)(`ds.revitalization.description`),wide:``},{default:i(()=>[o(`section`,null,[a(l,{src:d,initial:`desktop`,height:720})]),o(`section`,null,[o(`h2`,u,r(t(p)(`ds.heading.usage`)),1),f[0]||=o(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[o(`pre`,{class:`whitespace-pre-wrap`},`<Revitalization
|
||||
:eyebrow="t('revit.eyebrow')"
|
||||
:headline="t('revit.headline.a')"
|
||||
:headline-em="t('revit.headline.em')"
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{B as e,C as t,G as n,T as r,c as i,ft as a,j as o,m as s,p as c,r as l,s as u,u as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as f}from"./Icon-CtR1FGIT.js";import{t as p}from"./i18n-BvZbJICa.js";import{t as m}from"./Search-7HBN-r7u.js";import{a as h,r as g}from"./products-BqW5PUnm.js";import{t as _}from"./Button-DG-tA4DQ.js";import{t as v}from"./SectionShell-XUVs_07L.js";var y={class:`eyebrow mb-5`},b={class:`rounded-md border border-line bg-paper p-6 flex flex-col sm:flex-row sm:items-center gap-4`},x={class:`text-[13px] text-muted`},S={class:`eyebrow mb-5`},C={class:`rounded-md border border-line bg-paper divide-y divide-line overflow-hidden`},w=[`src`,`alt`],T={class:`min-w-0 flex-1`},E={class:`text-[14px] font-semibold text-ink truncate`},D={class:`text-[12px] text-muted truncate`},O={class:`shrink-0 text-[13px] font-semibold text-brand`},k={class:`eyebrow mb-5`},A=`natron pulver`,j={__name:`SearchSection`,setup(j){let{t:M}=p(),N=e(!1),P=h(A,g,4);return(e,p)=>(t(),i(v,{eyebrow:n(M)(`ds.eyebrow.components`),title:n(M)(`ds.search.title`),description:n(M)(`ds.search.description`)},{default:o(()=>[u(`section`,null,[u(`h2`,y,a(n(M)(`ds.heading.default`)),1),u(`div`,b,[s(_,{variant:`primary`,onClick:p[0]||=e=>N.value=!0},{before:o(()=>[s(f,{name:`search`,size:18})]),default:o(()=>[c(` `+a(n(M)(`ds.search.demo.label`)),1)]),_:1}),u(`p`,x,a(n(M)(`ds.search.demo.hint`)),1)])]),u(`section`,null,[u(`h2`,S,a(n(M)(`ds.heading.variants`))+` — "`+a(A)+`"`,1),u(`ul`,C,[(t(!0),d(l,null,r(n(P),e=>(t(),d(`li`,{key:e.id,class:`flex items-center gap-4 px-4 py-3`},[u(`img`,{src:e.image,alt:e.title,loading:`lazy`,decoding:`async`,class:`shrink-0 w-12 h-12 rounded-sm object-cover bg-cream`},null,8,w),u(`div`,T,[u(`p`,E,a(e.title),1),u(`p`,D,a(e.size)+` · `+a(e.category),1)]),u(`span`,O,`€ `+a(e.price.toFixed(2).replace(`.`,`,`)),1)]))),128))])]),u(`section`,null,[u(`h2`,k,a(n(M)(`ds.heading.usage`)),1),p[2]||=u(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[u(`pre`,{class:`whitespace-pre-wrap`},`import { products } from '@/api/products.js'
|
||||
import{B as e,C as t,G as n,T as r,c as i,ft as a,j as o,m as s,p as c,r as l,s as u,u as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as f}from"./Icon-CtR1FGIT.js";import{t as p}from"./i18n-C2O_jcDr.js";import{t as m}from"./Search-C4BYc3mK.js";import{a as h,r as g}from"./products-CfIXFr2X.js";import{t as _}from"./Button-DG-tA4DQ.js";import{t as v}from"./SectionShell-XUVs_07L.js";var y={class:`eyebrow mb-5`},b={class:`rounded-md border border-line bg-paper p-6 flex flex-col sm:flex-row sm:items-center gap-4`},x={class:`text-[13px] text-muted`},S={class:`eyebrow mb-5`},C={class:`rounded-md border border-line bg-paper divide-y divide-line overflow-hidden`},w=[`src`,`alt`],T={class:`min-w-0 flex-1`},E={class:`text-[14px] font-semibold text-ink truncate`},D={class:`text-[12px] text-muted truncate`},O={class:`shrink-0 text-[13px] font-semibold text-brand`},k={class:`eyebrow mb-5`},A=`natron pulver`,j={__name:`SearchSection`,setup(j){let{t:M}=p(),N=e(!1),P=h(A,g,4);return(e,p)=>(t(),i(v,{eyebrow:n(M)(`ds.eyebrow.components`),title:n(M)(`ds.search.title`),description:n(M)(`ds.search.description`)},{default:o(()=>[u(`section`,null,[u(`h2`,y,a(n(M)(`ds.heading.default`)),1),u(`div`,b,[s(_,{variant:`primary`,onClick:p[0]||=e=>N.value=!0},{before:o(()=>[s(f,{name:`search`,size:18})]),default:o(()=>[c(` `+a(n(M)(`ds.search.demo.label`)),1)]),_:1}),u(`p`,x,a(n(M)(`ds.search.demo.hint`)),1)])]),u(`section`,null,[u(`h2`,S,a(n(M)(`ds.heading.variants`))+` — "`+a(A)+`"`,1),u(`ul`,C,[(t(!0),d(l,null,r(n(P),e=>(t(),d(`li`,{key:e.id,class:`flex items-center gap-4 px-4 py-3`},[u(`img`,{src:e.image,alt:e.title,loading:`lazy`,decoding:`async`,class:`shrink-0 w-12 h-12 rounded-sm object-cover bg-cream`},null,8,w),u(`div`,T,[u(`p`,E,a(e.title),1),u(`p`,D,a(e.size)+` · `+a(e.category),1)]),u(`span`,O,`€ `+a(e.price.toFixed(2).replace(`.`,`,`)),1)]))),128))])]),u(`section`,null,[u(`h2`,k,a(n(M)(`ds.heading.usage`)),1),p[2]||=u(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[u(`pre`,{class:`whitespace-pre-wrap`},`import { products } from '@/api/products.js'
|
||||
import Search from '@/design-system/components/Search.vue'
|
||||
|
||||
const open = ref(false)
|
||||
@@ -1 +1 @@
|
||||
import{C as e,G as t,T as n,c as r,dt as i,ft as a,j as o,o as s,r as c,s as l,u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as d}from"./i18n-BvZbJICa.js";import{t as f}from"./SectionShell-XUVs_07L.js";var p={class:`grid sm:grid-cols-3 gap-8`},m={class:`font-mono text-[12px] text-ink block`},h={class:`text-[13px] text-muted mt-1`},g={__name:`ShadowsSection`,setup(g){let{t:_}=d(),v=s(()=>[{name:`sm`,css:`var(--shadow-sm)`,note:_(`ds.shadows.sm.note`)},{name:`md`,css:`var(--shadow-md)`,note:_(`ds.shadows.md.note`)},{name:`lg`,css:`var(--shadow-lg)`,note:_(`ds.shadows.lg.note`)}]);return(s,d)=>(e(),r(f,{eyebrow:t(_)(`ds.eyebrow.tokens`),title:t(_)(`ds.shadows.title`),description:t(_)(`ds.shadows.description`)},{default:o(()=>[l(`div`,p,[(e(!0),u(c,null,n(v.value,t=>(e(),u(`div`,{key:t.name,class:`space-y-4`},[l(`div`,{class:`h-36 rounded-md bg-paper`,style:i({boxShadow:t.css})},null,4),l(`div`,null,[l(`code`,m,`--shadow-`+a(t.name),1),l(`p`,h,a(t.note),1)])]))),128))])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{g as default};
|
||||
import{C as e,G as t,T as n,c as r,dt as i,ft as a,j as o,o as s,r as c,s as l,u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as d}from"./i18n-C2O_jcDr.js";import{t as f}from"./SectionShell-XUVs_07L.js";var p={class:`grid sm:grid-cols-3 gap-8`},m={class:`font-mono text-[12px] text-ink block`},h={class:`text-[13px] text-muted mt-1`},g={__name:`ShadowsSection`,setup(g){let{t:_}=d(),v=s(()=>[{name:`sm`,css:`var(--shadow-sm)`,note:_(`ds.shadows.sm.note`)},{name:`md`,css:`var(--shadow-md)`,note:_(`ds.shadows.md.note`)},{name:`lg`,css:`var(--shadow-lg)`,note:_(`ds.shadows.lg.note`)}]);return(s,d)=>(e(),r(f,{eyebrow:t(_)(`ds.eyebrow.tokens`),title:t(_)(`ds.shadows.title`),description:t(_)(`ds.shadows.description`)},{default:o(()=>[l(`div`,p,[(e(!0),u(c,null,n(v.value,t=>(e(),u(`div`,{key:t.name,class:`space-y-4`},[l(`div`,{class:`h-36 rounded-md bg-paper`,style:i({boxShadow:t.css})},null,4),l(`div`,null,[l(`code`,m,`--shadow-`+a(t.name),1),l(`p`,h,a(t.note),1)])]))),128))])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{g as default};
|
||||
File diff suppressed because one or more lines are too long
1
dist/assets/ShopPage-E--3-ycH.js
vendored
1
dist/assets/ShopPage-E--3-ycH.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/ShopPage-hUwcG4tN.js
vendored
Normal file
1
dist/assets/ShopPage-hUwcG4tN.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{C as e,G as t,T as n,c as r,ft as i,j as a,m as o,r as s,s as c,u as l,ut as u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as d}from"./i18n-BvZbJICa.js";import{t as f}from"./SectionShell-XUVs_07L.js";import{t as p}from"./Card-CPlQ-6EI.js";var m={class:`grid md:grid-cols-2 gap-6`},h={class:`eyebrow mb-3`},g={class:`text-[14px] text-muted leading-relaxed`},_={class:`eyebrow mb-3`},v={class:`text-[14px] text-muted leading-relaxed`},y={class:`eyebrow mb-6`},b={class:`divide-y divide-line rounded-md border border-line bg-paper px-6`},x={class:`font-mono text-[11px] text-muted w-24 shrink-0`},S={__name:`TypographySection`,setup(S){let{t:C}=d(),w=[`xs`,`sm`,`base`,`lg`,`xl`,`2xl`,`3xl`,`4xl`,`5xl`];return(d,S)=>(e(),r(f,{eyebrow:t(C)(`ds.eyebrow.tokens`),title:t(C)(`ds.typography.title`),description:t(C)(`ds.typography.description`)},{default:a(()=>[c(`section`,m,[o(p,{tone:`paper`},{default:a(()=>[c(`p`,h,i(t(C)(`ds.heading.display`)),1),S[0]||=c(`p`,{class:`font-display text-5xl font-normal leading-[1.05] mb-3`},`Fraunces`,-1),c(`p`,g,i(t(C)(`ds.typography.serifDesc`)),1),S[1]||=c(`code`,{class:`font-mono text-[11px] text-muted block mt-5`},`var(--font-serif)`,-1)]),_:1}),o(p,{tone:`paper`},{default:a(()=>[c(`p`,_,i(t(C)(`ds.heading.body`)),1),S[2]||=c(`p`,{class:`font-sans text-5xl font-medium leading-[1.05] mb-3`},`DM Sans`,-1),c(`p`,v,i(t(C)(`ds.typography.sansDesc`)),1),S[3]||=c(`code`,{class:`font-mono text-[11px] text-muted block mt-5`},`var(--font-sans)`,-1)]),_:1})]),c(`section`,null,[c(`h2`,y,i(t(C)(`ds.heading.scale`)),1),c(`div`,b,[(e(),l(s,null,n(w,e=>c(`div`,{key:e,class:`flex items-baseline gap-8 py-4`},[c(`code`,x,`text-`+i(e),1),c(`span`,{class:u(`text-${e}`)},i(t(C)(`ds.typography.sample`)),3)])),64))])])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{S as default};
|
||||
import{C as e,G as t,T as n,c as r,ft as i,j as a,m as o,r as s,s as c,u as l,ut as u}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as d}from"./i18n-C2O_jcDr.js";import{t as f}from"./SectionShell-XUVs_07L.js";import{t as p}from"./Card-CPlQ-6EI.js";var m={class:`grid md:grid-cols-2 gap-6`},h={class:`eyebrow mb-3`},g={class:`text-[14px] text-muted leading-relaxed`},_={class:`eyebrow mb-3`},v={class:`text-[14px] text-muted leading-relaxed`},y={class:`eyebrow mb-6`},b={class:`divide-y divide-line rounded-md border border-line bg-paper px-6`},x={class:`font-mono text-[11px] text-muted w-24 shrink-0`},S={__name:`TypographySection`,setup(S){let{t:C}=d(),w=[`xs`,`sm`,`base`,`lg`,`xl`,`2xl`,`3xl`,`4xl`,`5xl`];return(d,S)=>(e(),r(f,{eyebrow:t(C)(`ds.eyebrow.tokens`),title:t(C)(`ds.typography.title`),description:t(C)(`ds.typography.description`)},{default:a(()=>[c(`section`,m,[o(p,{tone:`paper`},{default:a(()=>[c(`p`,h,i(t(C)(`ds.heading.display`)),1),S[0]||=c(`p`,{class:`font-display text-5xl font-normal leading-[1.05] mb-3`},`Fraunces`,-1),c(`p`,g,i(t(C)(`ds.typography.serifDesc`)),1),S[1]||=c(`code`,{class:`font-mono text-[11px] text-muted block mt-5`},`var(--font-serif)`,-1)]),_:1}),o(p,{tone:`paper`},{default:a(()=>[c(`p`,_,i(t(C)(`ds.heading.body`)),1),S[2]||=c(`p`,{class:`font-sans text-5xl font-medium leading-[1.05] mb-3`},`DM Sans`,-1),c(`p`,v,i(t(C)(`ds.typography.sansDesc`)),1),S[3]||=c(`code`,{class:`font-mono text-[11px] text-muted block mt-5`},`var(--font-sans)`,-1)]),_:1})]),c(`section`,null,[c(`h2`,y,i(t(C)(`ds.heading.scale`)),1),c(`div`,b,[(e(),l(s,null,n(w,e=>c(`div`,{key:e,class:`flex items-baseline gap-8 py-4`},[c(`code`,x,`text-`+i(e),1),c(`span`,{class:u(`text-${e}`)},i(t(C)(`ds.typography.sample`)),3)])),64))])])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{S as default};
|
||||
1
dist/assets/WaveDivider-4IPF5EPg.js
vendored
1
dist/assets/WaveDivider-4IPF5EPg.js
vendored
@@ -1 +0,0 @@
|
||||
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-24 md:h-32 shrink-0 -mb-px`,d.value]),viewBox:`0 0 1440 128`,preserveAspectRatio:`none`},[n(`rect`,{width:`1440`,height:`128`,fill:p.value},null,8,a),n(`path`,{d:`M0,0 L0,116 L1440,12 L1440,0 Z`,fill:f.value},null,8,o)],2))}};export{s as t};
|
||||
1
dist/assets/WaveDivider-Bj5UZ0Z6.js
vendored
Normal file
1
dist/assets/WaveDivider-Bj5UZ0Z6.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
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`,`kitchen`,`clean`,`wash`,`care`].includes(e)},to:{type:String,default:`cream`,validator:e=>[`brand`,`cream`,`surface`,`paper`,`kitchen`,`clean`,`wash`,`care`].includes(e)}},setup(s){let c=s,l={brand:`var(--color-brand)`,cream:`var(--color-cream)`,surface:`var(--color-surface)`,paper:`var(--color-paper)`,kitchen:`var(--color-cat-kitchen)`,clean:`var(--color-cat-clean)`,wash:`var(--color-cat-wash)`,care:`var(--color-cat-care)`},u={brand:`bg-brand`,cream:`bg-cream`,surface:`bg-surface`,paper:`bg-paper`,kitchen:`bg-cat-kitchen`,clean:`bg-cat-clean`,wash:`bg-cat-wash`,care:`bg-cat-care`},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-24 md:h-32 shrink-0 -mb-px`,d.value]),viewBox:`0 0 1440 128`,preserveAspectRatio:`none`},[n(`rect`,{width:`1440`,height:`128`,fill:p.value},null,8,a),n(`path`,{d:`M0,0 L0,116 L1440,12 L1440,0 Z`,fill:f.value},null,8,o)],2))}};export{s as t};
|
||||
File diff suppressed because one or more lines are too long
1
dist/assets/bundles-CDwVE6_O.js
vendored
1
dist/assets/bundles-CDwVE6_O.js
vendored
@@ -1 +0,0 @@
|
||||
var e=[{id:`haushalt`,nameKey:`bundle.haushalt.name`,usageKey:`bundle.haushalt.usage`,descriptionKey:`bundle.haushalt.description`,imageAltKey:`bundle.haushalt.imageAlt`,itemKeys:[`bundle.haushalt.items.0`,`bundle.haushalt.items.1`,`bundle.haushalt.items.2`],badgeKey:`bundle.haushalt.badge`,badgeVariant:`accent`,price:24.9,memberPrice:21.17,image:`/bundles/background/haushalt-bundle-2.webp`,anchorProductId:`kaiser-natron-pulver-250-g-grosspackung`,href:`/bundles/haushalt`},{id:`waesche`,nameKey:`bundle.waesche.name`,usageKey:`bundle.waesche.usage`,descriptionKey:`bundle.waesche.description`,imageAltKey:`bundle.waesche.imageAlt`,itemKeys:[`bundle.waesche.items.0`,`bundle.waesche.items.1`,`bundle.waesche.items.2`],badgeKey:``,badgeVariant:`accent`,price:22.9,memberPrice:19.47,image:`/bundles/background/waesche-pflege-bundle.webp`,anchorProductId:`holste-wasch-soda-500-g-beutel`,href:`/bundles/waesche`},{id:`wohlfuehl`,nameKey:`bundle.wohlfuehl.name`,usageKey:`bundle.wohlfuehl.usage`,descriptionKey:`bundle.wohlfuehl.description`,imageAltKey:`bundle.wohlfuehl.imageAlt`,itemKeys:[`bundle.wohlfuehl.items.0`,`bundle.wohlfuehl.items.1`,`bundle.wohlfuehl.items.2`],badgeKey:``,badgeVariant:`accent`,price:29.9,memberPrice:25.42,image:`/bundles/background/wohlfuehl-bundle.webp`,anchorProductId:`kaiser-natron-bad-500-g`,href:`/bundles/wohlfuehl`}];function t(t){return e.find(e=>e.id===t)||null}export{t as n,e as t};
|
||||
1
dist/assets/bundles-CbVF2Hvx.js
vendored
Normal file
1
dist/assets/bundles-CbVF2Hvx.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
var e=[{id:`haushalt`,nameKey:`bundle.haushalt.name`,usageKey:`bundle.haushalt.usage`,descriptionKey:`bundle.haushalt.description`,imageAltKey:`bundle.haushalt.imageAlt`,itemKeys:[`bundle.haushalt.items.0`,`bundle.haushalt.items.1`,`bundle.haushalt.items.2`],badgeKey:`bundle.haushalt.badge`,badgeVariant:`accent`,price:24.9,memberPrice:21.17,image:`/bundles/background/haushalt-bundle-2.webp`,aiEdited:!0,anchorProductId:`kaiser-natron-pulver-250-g-grosspackung`,href:`/bundles/haushalt`},{id:`waesche`,nameKey:`bundle.waesche.name`,usageKey:`bundle.waesche.usage`,descriptionKey:`bundle.waesche.description`,imageAltKey:`bundle.waesche.imageAlt`,itemKeys:[`bundle.waesche.items.0`,`bundle.waesche.items.1`,`bundle.waesche.items.2`],badgeKey:``,badgeVariant:`accent`,price:22.9,memberPrice:19.47,image:`/bundles/background/waesche-pflege-bundle.webp`,aiEdited:!0,anchorProductId:`holste-wasch-soda-500-g-beutel`,href:`/bundles/waesche`},{id:`wohlfuehl`,nameKey:`bundle.wohlfuehl.name`,usageKey:`bundle.wohlfuehl.usage`,descriptionKey:`bundle.wohlfuehl.description`,imageAltKey:`bundle.wohlfuehl.imageAlt`,itemKeys:[`bundle.wohlfuehl.items.0`,`bundle.wohlfuehl.items.1`,`bundle.wohlfuehl.items.2`],badgeKey:``,badgeVariant:`accent`,price:29.9,memberPrice:25.42,image:`/bundles/background/wohlfuehl-bundle.webp`,aiEdited:!0,anchorProductId:`kaiser-natron-bad-500-g`,href:`/bundles/wohlfuehl`}];function t(t){return e.find(e=>e.id===t)||null}export{t as n,e as t};
|
||||
21
dist/assets/i18n-BvZbJICa.js
vendored
21
dist/assets/i18n-BvZbJICa.js
vendored
File diff suppressed because one or more lines are too long
21
dist/assets/i18n-C2O_jcDr.js
vendored
Normal file
21
dist/assets/i18n-C2O_jcDr.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
dist/assets/index-CAzFHHfv.js
vendored
Normal file
2
dist/assets/index-CAzFHHfv.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
dist/assets/index-HghiGINV.js
vendored
2
dist/assets/index-HghiGINV.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/index-ruA6A7hc.css
vendored
Normal file
2
dist/assets/index-ruA6A7hc.css
vendored
Normal file
File diff suppressed because one or more lines are too long
2
dist/assets/index-xMZLOM4l.css
vendored
2
dist/assets/index-xMZLOM4l.css
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/products-BqW5PUnm.js
vendored
1
dist/assets/products-BqW5PUnm.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/products-CfIXFr2X.js
vendored
Normal file
1
dist/assets/products-CfIXFr2X.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
dist/index.html
vendored
4
dist/index.html
vendored
@@ -7,13 +7,13 @@
|
||||
<meta name="theme-color" content="#ffffff" />
|
||||
<title>Kaiser Natron</title>
|
||||
<!-- Zeitung is self-hosted (see @font-face in src/assets/styles.css); no external font CDN. -->
|
||||
<script type="module" crossorigin src="/assets/index-HghiGINV.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-CAzFHHfv.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="/assets/preload-helper-ca-nBW7U.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/runtime-core.esm-bundler-DTXUv7Wx.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/runtime-dom.esm-bundler-Bg1uJ-W7.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/pinia-D94NEbtV.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/vue-router-Cyqru1db.js">
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-xMZLOM4l.css">
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-ruA6A7hc.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@@ -31,6 +31,9 @@ export const bundles = [
|
||||
price: 24.9,
|
||||
memberPrice: 21.17,
|
||||
image: '/bundles/background/haushalt-bundle-2.webp',
|
||||
// AI-composed artwork — disclosed with an "AI Edited" overlay until
|
||||
// real product photography replaces it (brand-owner L5/L6).
|
||||
aiEdited: true,
|
||||
anchorProductId: 'kaiser-natron-pulver-250-g-grosspackung',
|
||||
href: '/bundles/haushalt',
|
||||
},
|
||||
@@ -50,6 +53,7 @@ export const bundles = [
|
||||
price: 22.9,
|
||||
memberPrice: 19.47,
|
||||
image: '/bundles/background/waesche-pflege-bundle.webp',
|
||||
aiEdited: true,
|
||||
anchorProductId: 'holste-wasch-soda-500-g-beutel',
|
||||
href: '/bundles/waesche',
|
||||
},
|
||||
@@ -69,6 +73,7 @@ export const bundles = [
|
||||
price: 29.9,
|
||||
memberPrice: 25.42,
|
||||
image: '/bundles/background/wohlfuehl-bundle.webp',
|
||||
aiEdited: true,
|
||||
anchorProductId: 'kaiser-natron-bad-500-g',
|
||||
href: '/bundles/wohlfuehl',
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export const products = [
|
||||
{
|
||||
id: 'kaiser-natron-pulver-50-g-beutel',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Pulver',
|
||||
size: '50 g Beutel',
|
||||
category: 'Pulver',
|
||||
@@ -17,7 +17,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-pulver-250-g-grosspackung',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Pulver',
|
||||
size: '250 g Großpackung',
|
||||
category: 'Pulver',
|
||||
@@ -30,7 +30,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-pulver-3490-g-eimer',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Pulver',
|
||||
size: '3.490 g Eimer',
|
||||
category: 'Pulver',
|
||||
@@ -43,7 +43,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-tabletten-100-g-dose',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Tabletten',
|
||||
size: '100 g Dose',
|
||||
category: 'Tabletten',
|
||||
@@ -56,7 +56,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-bad-500-g',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Bad',
|
||||
size: '500 g',
|
||||
category: 'Körperpflege',
|
||||
@@ -69,7 +69,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-fussbad-500-g',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Fußbad',
|
||||
size: '500 g',
|
||||
category: 'Körperpflege',
|
||||
@@ -82,7 +82,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-daunenwasch-250-ml',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Daunenwasch',
|
||||
size: '250 ml',
|
||||
category: 'Wäsche',
|
||||
@@ -95,7 +95,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-sport-profi-250-ml',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Sport Profi',
|
||||
size: '250 ml',
|
||||
category: 'Sport',
|
||||
@@ -108,7 +108,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-spuelmittel-500-ml',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Spülmittel',
|
||||
size: '500 ml',
|
||||
category: 'Reinigung',
|
||||
@@ -121,7 +121,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-allzweck-reiniger-750-ml',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Allzweck-Reiniger',
|
||||
size: '750 ml',
|
||||
category: 'Reinigung',
|
||||
@@ -134,7 +134,7 @@ export const products = [
|
||||
},
|
||||
{
|
||||
id: 'kaiser-natron-allzweck-spray-500-ml',
|
||||
brand: 'Kaiser-Natron',
|
||||
brand: 'Kaiser-Natron®',
|
||||
title: 'Kaiser-Natron® Allzweck-Spray',
|
||||
size: '500 ml',
|
||||
category: 'Reinigung',
|
||||
@@ -351,22 +351,23 @@ export function formatPrice(amount, currency = '€') {
|
||||
}
|
||||
|
||||
/**
|
||||
* Shop use-cases — the three top-level bands on the Shop page and in
|
||||
* the desktop nav (Cook / Clean / Care). Product-level `category`
|
||||
* strings are fine-grained (Pulver, Reinigung, Wäsche, Körperpflege,
|
||||
* Sport, Tabletten); this table rolls them up into the three shop-
|
||||
* facing groups so the mapping is declared in one place.
|
||||
* Shop use-cases — the four top-level bands on the Shop page, each in
|
||||
* its own brand colour (kaiser-natron.de palette). Product-level
|
||||
* `category` strings are fine-grained (Pulver, Reinigung, Wäsche,
|
||||
* Körperpflege, Sport, Tabletten); this table rolls them up into the
|
||||
* four shop-facing groups so the mapping is declared in one place.
|
||||
*
|
||||
* cook — kitchen & digestion (baking, gastro)
|
||||
* clean — household cleaning & laundry
|
||||
* care — bath, body and sport
|
||||
* cook — Küche: kitchen & digestion (baking, gastro) — lime
|
||||
* clean — Reinigung: household cleaning — grapefruit
|
||||
* wash — Wäsche: laundry & textile care — plum
|
||||
* care — Pflege: bath, body and sport — orange
|
||||
*/
|
||||
export const USE_CASES = ['cook', 'clean', 'care']
|
||||
export const USE_CASES = ['cook', 'clean', 'wash', 'care']
|
||||
const USE_CASE_BY_CATEGORY = {
|
||||
Pulver: 'cook',
|
||||
Tabletten: 'cook',
|
||||
Reinigung: 'clean',
|
||||
Wäsche: 'clean',
|
||||
Wäsche: 'wash',
|
||||
Körperpflege: 'care',
|
||||
Sport: 'care',
|
||||
}
|
||||
@@ -381,6 +382,6 @@ export function productsByUseCase(list = products) {
|
||||
acc[useCaseFor(p)].push(p)
|
||||
return acc
|
||||
},
|
||||
{ cook: [], clean: [], care: [] },
|
||||
{ cook: [], clean: [], wash: [], care: [] },
|
||||
)
|
||||
}
|
||||
|
||||
@@ -60,6 +60,9 @@ const props = defineProps({
|
||||
default: 'cover',
|
||||
validator: (v) => ['contain', 'cover'].includes(v),
|
||||
},
|
||||
// Overlays a faint "AI Edited" disclosure on the media when the
|
||||
// artwork is AI-composed (brand-owner transparency request).
|
||||
aiEdited: { type: Boolean, default: false },
|
||||
})
|
||||
|
||||
defineEmits(['add'])
|
||||
@@ -128,6 +131,10 @@ const extraCount = computed(() => Math.max(0, props.items.length - MAX_ITEMS))
|
||||
: 'object-contain ' + (layout === 'horizontal' ? 'p-6 md:p-5' : 'p-8'),
|
||||
]"
|
||||
/>
|
||||
<span
|
||||
v-if="aiEdited"
|
||||
class="pointer-events-none absolute bottom-0 right-0 z-[1] px-2 py-0.5 text-[10px] font-medium uppercase tracking-label text-white/55 drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]"
|
||||
>AI Edited</span>
|
||||
</RouterLink>
|
||||
<component
|
||||
v-else
|
||||
@@ -158,6 +165,10 @@ const extraCount = computed(() => Math.max(0, props.items.length - MAX_ITEMS))
|
||||
: 'object-contain ' + (layout === 'horizontal' ? 'p-6 md:p-5' : 'p-8'),
|
||||
]"
|
||||
/>
|
||||
<span
|
||||
v-if="aiEdited"
|
||||
class="pointer-events-none absolute bottom-0 right-0 z-[1] px-2 py-0.5 text-[10px] font-medium uppercase tracking-label text-white/55 drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]"
|
||||
>AI Edited</span>
|
||||
</component>
|
||||
|
||||
<!-- Body -->
|
||||
|
||||
@@ -206,6 +206,7 @@ onBeforeUnmount(() => {
|
||||
:usage="bundle.usage"
|
||||
:image="bundle.image"
|
||||
:image-alt="bundle.imageAlt"
|
||||
:ai-edited="bundle.aiEdited"
|
||||
:badge="bundle.badge"
|
||||
:badge-variant="bundle.badgeVariant || 'accent'"
|
||||
:href="bundle.href || ''"
|
||||
@@ -225,6 +226,7 @@ onBeforeUnmount(() => {
|
||||
:usage="bundle.usage"
|
||||
:image="bundle.image"
|
||||
:image-alt="bundle.imageAlt"
|
||||
:ai-edited="bundle.aiEdited"
|
||||
:badge="bundle.badge"
|
||||
:badge-variant="bundle.badgeVariant || 'accent'"
|
||||
:href="bundle.href || ''"
|
||||
@@ -288,6 +290,7 @@ onBeforeUnmount(() => {
|
||||
:usage="bundle.usage"
|
||||
:image="bundle.image"
|
||||
:image-alt="bundle.imageAlt"
|
||||
:ai-edited="bundle.aiEdited"
|
||||
:badge="bundle.badge"
|
||||
:badge-variant="bundle.badgeVariant || 'accent'"
|
||||
:href="bundle.href || ''"
|
||||
@@ -328,6 +331,7 @@ onBeforeUnmount(() => {
|
||||
:usage="bundle.usage"
|
||||
:image="bundle.image"
|
||||
:image-alt="bundle.imageAlt"
|
||||
:ai-edited="bundle.aiEdited"
|
||||
:badge="bundle.badge"
|
||||
:badge-variant="bundle.badgeVariant || 'accent'"
|
||||
:href="bundle.href || ''"
|
||||
|
||||
@@ -37,7 +37,7 @@ const props = defineProps({
|
||||
tone: {
|
||||
type: String,
|
||||
default: 'cream',
|
||||
validator: (t) => ['cream', 'paper', 'brand'].includes(t),
|
||||
validator: (t) => ['cream', 'paper', 'brand', 'kitchen', 'clean', 'wash', 'care'].includes(t),
|
||||
},
|
||||
/** Only affects the split variant. When true, the image sits on the left
|
||||
* and copy on the right from `lg` up. Mobile order is unchanged (image
|
||||
@@ -75,6 +75,42 @@ const tones = {
|
||||
disc: 'bg-brand-soft/30',
|
||||
glow: 'bg-accent/5',
|
||||
},
|
||||
// Category use-group tones (home-page banners). Lime is light, so it
|
||||
// keeps dark ink text; grapefruit + orange are saturated, so they take
|
||||
// cream (white) text. The decorative disc/glow are soft white tints so
|
||||
// they read on any of the three category grounds.
|
||||
kitchen: {
|
||||
surface: 'bg-cat-kitchen',
|
||||
text: 'text-ink',
|
||||
sub: 'text-ink/70',
|
||||
disc: 'bg-white/35',
|
||||
glow: 'bg-white/25',
|
||||
eyebrowColor: 'var(--color-brand)',
|
||||
},
|
||||
clean: {
|
||||
surface: 'bg-cat-clean',
|
||||
text: 'text-cream',
|
||||
sub: 'text-cream/85',
|
||||
disc: 'bg-white/15',
|
||||
glow: 'bg-white/10',
|
||||
eyebrowColor: 'rgba(255,255,255,0.9)',
|
||||
},
|
||||
wash: {
|
||||
surface: 'bg-cat-wash',
|
||||
text: 'text-cream',
|
||||
sub: 'text-cream/85',
|
||||
disc: 'bg-white/15',
|
||||
glow: 'bg-white/10',
|
||||
eyebrowColor: 'rgba(255,255,255,0.9)',
|
||||
},
|
||||
care: {
|
||||
surface: 'bg-cat-care',
|
||||
text: 'text-cream',
|
||||
sub: 'text-cream/85',
|
||||
disc: 'bg-white/15',
|
||||
glow: 'bg-white/10',
|
||||
eyebrowColor: 'rgba(255,255,255,0.9)',
|
||||
},
|
||||
}
|
||||
|
||||
const tone = computed(() => tones[props.tone])
|
||||
@@ -177,7 +213,11 @@ const imageHeightClass = computed(() =>
|
||||
lets the headline actually respect its own max width so
|
||||
the font-size clamp and wrapping can take effect. -->
|
||||
<div :class="['relative z-[1] flex flex-col gap-6 min-w-0', layout.copy]">
|
||||
<p v-if="eyebrow" class="eyebrow">{{ eyebrow }}</p>
|
||||
<p
|
||||
v-if="eyebrow"
|
||||
class="eyebrow"
|
||||
:style="tone.eyebrowColor ? { color: tone.eyebrowColor } : null"
|
||||
>{{ eyebrow }}</p>
|
||||
|
||||
<!-- Headline sizing uses responsive Tailwind arbitrary values
|
||||
so each breakpoint compiles to a plain media-query
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script setup>
|
||||
defineProps({
|
||||
title: { type: String, default: 'Kaiser Natron' },
|
||||
title: { type: String, default: 'Kaiser-Natron®' },
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -204,7 +204,7 @@ onBeforeUnmount(() => {
|
||||
<RouterLink
|
||||
to="/"
|
||||
:class="['block shrink-0 py-1', tone.logo]"
|
||||
aria-label="Kaiser Natron home"
|
||||
aria-label="Kaiser-Natron home"
|
||||
@click="onLogoClick"
|
||||
>
|
||||
<Logo :class="logoClasses" />
|
||||
|
||||
@@ -26,13 +26,15 @@ const props = defineProps({
|
||||
from: {
|
||||
type: String,
|
||||
default: 'brand',
|
||||
validator: (v) => ['brand', 'cream', 'surface', 'paper'].includes(v),
|
||||
validator: (v) =>
|
||||
['brand', 'cream', 'surface', 'paper', 'kitchen', 'clean', 'wash', 'care'].includes(v),
|
||||
},
|
||||
/** Colour of the section below the wave — fills the solid bottom. */
|
||||
to: {
|
||||
type: String,
|
||||
default: 'cream',
|
||||
validator: (v) => ['brand', 'cream', 'surface', 'paper'].includes(v),
|
||||
validator: (v) =>
|
||||
['brand', 'cream', 'surface', 'paper', 'kitchen', 'clean', 'wash', 'care'].includes(v),
|
||||
},
|
||||
})
|
||||
|
||||
@@ -41,12 +43,20 @@ const toneVar = {
|
||||
cream: 'var(--color-cream)',
|
||||
surface: 'var(--color-surface)',
|
||||
paper: 'var(--color-paper)',
|
||||
kitchen: 'var(--color-cat-kitchen)',
|
||||
clean: 'var(--color-cat-clean)',
|
||||
wash: 'var(--color-cat-wash)',
|
||||
care: 'var(--color-cat-care)',
|
||||
}
|
||||
const toneBg = {
|
||||
brand: 'bg-brand',
|
||||
cream: 'bg-cream',
|
||||
surface: 'bg-surface',
|
||||
paper: 'bg-paper',
|
||||
kitchen: 'bg-cat-kitchen',
|
||||
clean: 'bg-cat-clean',
|
||||
wash: 'bg-cat-wash',
|
||||
care: 'bg-cat-care',
|
||||
}
|
||||
|
||||
// The wrapping bg-* class paints any 1-device-pixel gap that could
|
||||
|
||||
@@ -34,6 +34,17 @@
|
||||
accent highlight. */
|
||||
--color-highlight: #6eceb2;
|
||||
|
||||
/* Category use-groups — the brand colour-codes its four product
|
||||
use-groups (sourced from kaiser-natron.de): Küche=lime,
|
||||
Reinigung=grapefruit, Wäsche=plum, Pflege=orange. Drive the shop
|
||||
page's per-section colour banners (Hero tones kitchen/clean/wash/
|
||||
care). Lime is light → dark ink text; the other three are saturated
|
||||
→ cream (white) text. Tailwind v4 emits bg-cat-* utilities. */
|
||||
--color-cat-kitchen: #c6d47d;
|
||||
--color-cat-clean: #eb5a61;
|
||||
--color-cat-wash: #c15a7e;
|
||||
--color-cat-care: #f1864c;
|
||||
|
||||
/* Neutrals — warm, brand-tinted */
|
||||
--color-ink: color-mix(in oklch, var(--color-brand), black 50%);
|
||||
--color-ink-placeholder: color-mix(in srgb, var(--color-ink) 35%, transparent);
|
||||
|
||||
@@ -16,24 +16,33 @@ const de = {
|
||||
'nav.contact': 'Kontakt',
|
||||
// Shop page — section headlines for the three use-case groups.
|
||||
'shop.eyebrow': 'Unser Sortiment',
|
||||
'shop.headline': 'Kaiser-Natron',
|
||||
'shop.headline': 'Kaiser-Natron®',
|
||||
'shop.headline.em': 'für jeden Bereich',
|
||||
'shop.sub': 'Vom Kochen über das Reinigen bis zur Pflege: drei Sammlungen, ein Rohstoff.',
|
||||
'shop.section.cook.headline': 'Backen, kochen,',
|
||||
'shop.section.cook.headline.em': 'gesund verdauen.',
|
||||
'shop.section.cook.sub': 'Pulver und Tabletten — die Basis für Teig, Gerichte und guten Geschmack.',
|
||||
'shop.section.clean.headline': 'Schrubben, waschen,',
|
||||
'shop.section.clean.headline': 'Schrubben, wischen,',
|
||||
'shop.section.clean.headline.em': 'alles sauber.',
|
||||
'shop.section.clean.sub': 'Natron-basierte Reiniger und Waschhelfer, die auch bei hartnäckigem Schmutz überzeugen.',
|
||||
'shop.section.clean.sub': 'Natron-basierte Reiniger, Sprays und Entkalker für Küche, Bad und den ganzen Haushalt.',
|
||||
'shop.section.wash.headline': 'Waschen, stärken,',
|
||||
'shop.section.wash.headline.em': 'auffrischen.',
|
||||
'shop.section.wash.sub': 'Wasch-Soda, Wäschestärke und Fleckenhelfer – traditionelle Wäschepflege auf Natron-Basis.',
|
||||
'shop.section.care.headline': 'Baden, pflegen,',
|
||||
'shop.section.care.headline.em': 'durchatmen.',
|
||||
'shop.section.care.sub': 'Bade- und Pflegeprodukte, abgestimmt auf den Alltag und den Sport.',
|
||||
'shop.feature.cook': 'Für die Küche',
|
||||
'shop.feature.clean': 'Für den Haushalt',
|
||||
'shop.feature.care': 'Für Körper & Pflege',
|
||||
'shop.feature.cook': 'Küche',
|
||||
'shop.feature.clean': 'Reinigung',
|
||||
'shop.feature.wash': 'Wäsche',
|
||||
'shop.feature.care': 'Pflege',
|
||||
'shop.feature.cta.cook': 'Zur Küche',
|
||||
'shop.feature.cta.clean': 'Zum Haushalt',
|
||||
'shop.feature.cta.clean': 'Zur Reinigung',
|
||||
'shop.feature.cta.wash': 'Zur Wäsche',
|
||||
'shop.feature.cta.care': 'Zur Pflege',
|
||||
'shop.section.cook.products.title': 'Sortiment für Küche & Backen',
|
||||
'shop.section.clean.products.title': 'Sortiment für Reinigung',
|
||||
'shop.section.wash.products.title': 'Sortiment für Wäsche & Textilpflege',
|
||||
'shop.section.care.products.title': 'Sortiment für Körper & Pflege',
|
||||
// Kaiserhacks page — localized copy resolved from the API fixture keys.
|
||||
'kaiserhacks.eyebrow': '#kaiserhacks',
|
||||
'kaiserhacks.headline': 'Unsere Kaiserhacks',
|
||||
@@ -426,9 +435,9 @@ const de = {
|
||||
'ds.hero.variant.split': 'Split',
|
||||
'ds.hero.variant.centered': 'Zentriert',
|
||||
'ds.hero.eyebrow': 'Neu im Shop',
|
||||
'ds.hero.headline.a': 'Kaiser-Natron',
|
||||
'ds.hero.headline.em': 'für alles',
|
||||
'ds.hero.headline.b': 'was glänzen soll.',
|
||||
'ds.hero.headline.a': 'Kaiser-Natron®',
|
||||
'ds.hero.headline.em': 'für fast',
|
||||
'ds.hero.headline.b': 'alles im Alltag.',
|
||||
'ds.hero.sub': 'Reinigt, backt und neutralisiert Gerüche. Die 250-g-Großpackung für den Haushalt, der sich auf das Original verlässt.',
|
||||
|
||||
// Home page – second-fold banner
|
||||
@@ -436,7 +445,7 @@ const de = {
|
||||
'home.banner.headline.a': 'Ein Pulver,',
|
||||
'home.banner.headline.em': 'hundert Anwendungen',
|
||||
'home.banner.headline.b': 'im Haushalt.',
|
||||
'home.banner.sub': 'Vom Kuchen über das Bad bis zur Wäsche – Kaiser-Natron leistet überall still und zuverlässig seine Arbeit.',
|
||||
'home.banner.sub': 'Vom Kuchen über das Bad bis zur Wäsche – Kaiser-Natron® leistet überall still und zuverlässig seine Arbeit.',
|
||||
|
||||
// Home page – mobile-only hero category shortcuts (Clean / Cook / Care).
|
||||
'home.categories.clean': 'Putzen',
|
||||
@@ -457,7 +466,7 @@ const de = {
|
||||
'bundle.haushalt.description': 'Die drei Klassiker für die wöchentliche Haushaltsroutine — Pulver, Allzweck-Spray und Spülmittel. Spart gegenüber dem Einzelkauf und sorgt dafür, dass die Standards immer im Schrank sind.',
|
||||
'bundle.haushalt.imageAlt': 'Haushalts-Bundle mit Kaiser-Natron',
|
||||
'bundle.haushalt.badge': 'Bestseller',
|
||||
'bundle.haushalt.items.0': '1× Kaiser-Natron Pulver 250 g',
|
||||
'bundle.haushalt.items.0': '1× Kaiser-Natron® Pulver 250 g',
|
||||
'bundle.haushalt.items.1': '1× Allzweck-Spray 500 ml',
|
||||
'bundle.haushalt.items.2': '1× Spülmittel 500 ml',
|
||||
|
||||
@@ -473,12 +482,12 @@ const de = {
|
||||
'bundle.wohlfuehl.usage': '1× pro Quartal',
|
||||
'bundle.wohlfuehl.description': 'Drei Anwendungen für den Körper — Tabletten zur Verdauung, Voll- und Fußbad zur Entspannung. Die ruhigste Routine im Sortiment.',
|
||||
'bundle.wohlfuehl.imageAlt': 'Wohlfühl-Bundle mit Kaiser-Natron Bad',
|
||||
'bundle.wohlfuehl.items.0': '1× Kaiser-Natron Tabletten 100 g',
|
||||
'bundle.wohlfuehl.items.1': '1× Kaiser-Natron Bad 500 g',
|
||||
'bundle.wohlfuehl.items.2': '1× Kaiser-Natron Fußbad 500 g',
|
||||
'bundle.wohlfuehl.items.0': '1× Kaiser-Natron® Tabletten 100 g',
|
||||
'bundle.wohlfuehl.items.1': '1× Kaiser-Natron® Bad 500 g',
|
||||
'bundle.wohlfuehl.items.2': '1× Kaiser-Natron® Fußbad 500 g',
|
||||
|
||||
// Home page – brand hero (top-of-fold, splash artwork settles here).
|
||||
'home.brand.headline.a': 'Kaiser Natron –',
|
||||
'home.brand.headline.a': 'Kaiser-Natron® –',
|
||||
'home.brand.headline.em': 'der Premium-Anbieter',
|
||||
'home.brand.headline.b': 'für Reinigen, Kochen, Pflegen.',
|
||||
'home.brand.since': 'seit 1881',
|
||||
@@ -486,7 +495,7 @@ const de = {
|
||||
'home.teaser.eyebrow': 'Drei Klassiker',
|
||||
'home.teaser.headline': 'Für jeden Bereich das Richtige.',
|
||||
'home.teaser.sub': 'Ein Beispiel aus jeder Familie – Kochen, Reinigen, Pflegen.',
|
||||
'home.teaser.cta': 'Kaiser Natron Shop',
|
||||
'home.teaser.cta': 'Kaiser-Natron® Shop',
|
||||
|
||||
// Checkout page (DE).
|
||||
'checkout.eyebrow': 'Bestellung abschließen',
|
||||
@@ -726,6 +735,27 @@ const de = {
|
||||
'category.haushalt.cta.sub': 'Bade- und Küchenartikel, Bundles und mehr — alles auf einer Seite.',
|
||||
'category.haushalt.cta.button': 'Zum Shop',
|
||||
|
||||
'category.kueche.eyebrow': 'Küche & Backen',
|
||||
'category.kueche.title.a': 'Backen, kochen,',
|
||||
'category.kueche.title.em': 'fein dosiert.',
|
||||
'category.kueche.sub': 'Reines Kaiser-Natron® in Lebensmittelqualität – zum Backen, Kochen und für die kleinen Küchentricks des Alltags.',
|
||||
'category.kueche.products.headline': 'Sortiment für',
|
||||
'category.kueche.products.headline.em': 'Küche & Backen',
|
||||
'category.kueche.products.sub': 'Vom 50-g-Beutel über die Großpackung bis zu den praktischen Tabletten – das Original für die Küche.',
|
||||
'category.kueche.benefits.eyebrow': 'Warum Natron in die Küche gehört',
|
||||
'category.kueche.benefits.headline': 'Rein, vielseitig,',
|
||||
'category.kueche.benefits.headline.em': 'küchenecht.',
|
||||
'category.kueche.benefit.1.title': 'Lebensmittelqualität',
|
||||
'category.kueche.benefit.1.text': 'Reines Natriumhydrogencarbonat mit Lebensmittelzulassung E500(ii) – extra gereinigt, standardisiert und chargenweise geprüft.',
|
||||
'category.kueche.benefit.2.title': 'Backtriebmittel & mehr',
|
||||
'category.kueche.benefit.2.text': 'Lockert Teig, mildert Säure in Soßen und Suppen und macht Hülsenfrüchte bekömmlicher – ein Pulver, viele Küchentricks.',
|
||||
'category.kueche.benefit.3.title': 'Natürlich entsäuern',
|
||||
'category.kueche.benefit.3.text': 'Bindet überschüssige Säure, statt sie zu überdecken – auch als praktische Tablette für unterwegs.',
|
||||
'category.kueche.cta.headline': 'Auch für Haushalt &',
|
||||
'category.kueche.cta.headline.em': 'Pflege im Shop.',
|
||||
'category.kueche.cta.sub': 'Reinigung, Wäsche und Pflege – das ganze Sortiment auf einen Blick.',
|
||||
'category.kueche.cta.button': 'Zum Shop',
|
||||
|
||||
// Stepped checkout — chrome and step-level copy.
|
||||
'checkout.stepper.label': 'Kassenfortschritt',
|
||||
'checkout.step.cart': 'Warenkorb',
|
||||
@@ -843,24 +873,33 @@ const en = {
|
||||
'nav.contact': 'Contact',
|
||||
// Shop page — section headlines for the three use-case groups.
|
||||
'shop.eyebrow': 'Our range',
|
||||
'shop.headline': 'Kaiser Natron',
|
||||
'shop.headline': 'Kaiser-Natron®',
|
||||
'shop.headline.em': 'for every corner',
|
||||
'shop.sub': 'From cooking to cleaning to care — three collections, one ingredient.',
|
||||
'shop.section.cook.headline': 'Bake, cook,',
|
||||
'shop.section.cook.headline.em': 'digest well.',
|
||||
'shop.section.cook.sub': 'Powders and tablets — the quiet foundation under bread, cakes and good digestion.',
|
||||
'shop.section.clean.headline': 'Scrub, wash,',
|
||||
'shop.section.clean.headline': 'Scrub, wipe,',
|
||||
'shop.section.clean.headline.em': 'all clean.',
|
||||
'shop.section.clean.sub': 'Natron-based cleaners and laundry helpers that hold up against stubborn grime.',
|
||||
'shop.section.clean.sub': 'Natron-based cleaners, sprays and descalers for the kitchen, bathroom and the whole home.',
|
||||
'shop.section.wash.headline': 'Wash, starch,',
|
||||
'shop.section.wash.headline.em': 'freshen up.',
|
||||
'shop.section.wash.sub': 'Wash soda, laundry starch and stain helpers — traditional natron-based laundry care.',
|
||||
'shop.section.care.headline': 'Bathe, soften,',
|
||||
'shop.section.care.headline.em': 'breathe easy.',
|
||||
'shop.section.care.sub': 'Bath and care products tuned for daily life and sport.',
|
||||
'shop.feature.cook': 'For the kitchen',
|
||||
'shop.feature.clean': 'For the home',
|
||||
'shop.feature.care': 'For body & care',
|
||||
'shop.feature.cook': 'Kitchen',
|
||||
'shop.feature.clean': 'Clean',
|
||||
'shop.feature.wash': 'Wash',
|
||||
'shop.feature.care': 'Care',
|
||||
'shop.feature.cta.cook': 'Shop kitchen',
|
||||
'shop.feature.cta.clean': 'Shop home',
|
||||
'shop.feature.cta.clean': 'Shop cleaning',
|
||||
'shop.feature.cta.wash': 'Shop laundry',
|
||||
'shop.feature.cta.care': 'Shop care',
|
||||
'shop.section.cook.products.title': 'Range for kitchen & baking',
|
||||
'shop.section.clean.products.title': 'Range for cleaning',
|
||||
'shop.section.wash.products.title': 'Range for laundry & textile care',
|
||||
'shop.section.care.products.title': 'Range for body & care',
|
||||
// Kaiserhacks page — localized copy resolved from the API fixture keys.
|
||||
'kaiserhacks.eyebrow': '#kaiserhacks',
|
||||
'kaiserhacks.headline': 'Our Kaiserhacks',
|
||||
@@ -1225,9 +1264,9 @@ const en = {
|
||||
'ds.hero.variant.split': 'Split',
|
||||
'ds.hero.variant.centered': 'Centered',
|
||||
'ds.hero.eyebrow': 'New in shop',
|
||||
'ds.hero.headline.a': 'Kaiser Natron',
|
||||
'ds.hero.headline.em': 'for everything',
|
||||
'ds.hero.headline.b': 'that should shine.',
|
||||
'ds.hero.headline.a': 'Kaiser-Natron®',
|
||||
'ds.hero.headline.em': 'for almost',
|
||||
'ds.hero.headline.b': 'anything at home.',
|
||||
'ds.hero.sub': 'Cleans, bakes, and neutralises odours. The 250 g large pack for the household that trusts the original.',
|
||||
|
||||
// Home page – second-fold banner
|
||||
@@ -1235,7 +1274,7 @@ const en = {
|
||||
'home.banner.headline.a': 'One powder,',
|
||||
'home.banner.headline.em': 'a hundred uses',
|
||||
'home.banner.headline.b': 'around the home.',
|
||||
'home.banner.sub': 'From baking to bathing to laundry — Kaiser Natron quietly does its work wherever you need it.',
|
||||
'home.banner.sub': 'From baking to bathing to laundry — Kaiser-Natron® quietly does its work wherever you need it.',
|
||||
|
||||
// Home page – mobile-only hero category shortcuts.
|
||||
'home.categories.clean': 'Clean',
|
||||
@@ -1253,7 +1292,7 @@ const en = {
|
||||
'bundle.haushalt.description': 'The three classics for the weekly household routine — powder, all-purpose spray and washing-up liquid. Saves vs single purchase and keeps the staples in stock.',
|
||||
'bundle.haushalt.imageAlt': 'Household bundle with Kaiser-Natron',
|
||||
'bundle.haushalt.badge': 'Bestseller',
|
||||
'bundle.haushalt.items.0': '1× Kaiser-Natron Powder 250 g',
|
||||
'bundle.haushalt.items.0': '1× Kaiser-Natron® Powder 250 g',
|
||||
'bundle.haushalt.items.1': '1× All-purpose Spray 500 ml',
|
||||
'bundle.haushalt.items.2': '1× Washing-up Liquid 500 ml',
|
||||
|
||||
@@ -1269,12 +1308,12 @@ const en = {
|
||||
'bundle.wohlfuehl.usage': '1× per quarter',
|
||||
'bundle.wohlfuehl.description': 'Three body applications — tablets for digestion, full bath and foot bath for relaxation. The quietest routine in the range.',
|
||||
'bundle.wohlfuehl.imageAlt': 'Wellbeing bundle with Kaiser-Natron Bath',
|
||||
'bundle.wohlfuehl.items.0': '1× Kaiser-Natron Tablets 100 g',
|
||||
'bundle.wohlfuehl.items.1': '1× Kaiser-Natron Bath 500 g',
|
||||
'bundle.wohlfuehl.items.2': '1× Kaiser-Natron Foot Bath 500 g',
|
||||
'bundle.wohlfuehl.items.0': '1× Kaiser-Natron® Tablets 100 g',
|
||||
'bundle.wohlfuehl.items.1': '1× Kaiser-Natron® Bath 500 g',
|
||||
'bundle.wohlfuehl.items.2': '1× Kaiser-Natron® Foot Bath 500 g',
|
||||
|
||||
// Home page – brand hero (top-of-fold, splash artwork settles here).
|
||||
'home.brand.headline.a': 'Kaiser Natron —',
|
||||
'home.brand.headline.a': 'Kaiser-Natron® —',
|
||||
'home.brand.headline.em': 'the premium provider',
|
||||
'home.brand.headline.b': 'for Clean, Cook, Care.',
|
||||
'home.brand.since': 'since 1881',
|
||||
@@ -1282,7 +1321,7 @@ const en = {
|
||||
'home.teaser.eyebrow': 'Three classics',
|
||||
'home.teaser.headline': 'One pick from every family.',
|
||||
'home.teaser.sub': 'A flagship for cooking, cleaning and care — three SKUs, one origin.',
|
||||
'home.teaser.cta': 'Shop Kaiser Natron',
|
||||
'home.teaser.cta': 'Shop Kaiser-Natron®',
|
||||
|
||||
// Checkout page (EN).
|
||||
'checkout.eyebrow': 'Complete your order',
|
||||
@@ -1527,6 +1566,27 @@ const en = {
|
||||
'category.haushalt.cta.sub': 'Bath and kitchen products, bundles and more — all on one page.',
|
||||
'category.haushalt.cta.button': 'Visit the shop',
|
||||
|
||||
'category.kueche.eyebrow': 'Kitchen & baking',
|
||||
'category.kueche.title.a': 'Bake, cook,',
|
||||
'category.kueche.title.em': 'finely dosed.',
|
||||
'category.kueche.sub': 'Pure food-grade Kaiser-Natron® — for baking, cooking, and the small everyday kitchen tricks.',
|
||||
'category.kueche.products.headline': 'Range for',
|
||||
'category.kueche.products.headline.em': 'kitchen & baking',
|
||||
'category.kueche.products.sub': 'From the 50 g sachet and the large pack to the handy tablets — the original for the kitchen.',
|
||||
'category.kueche.benefits.eyebrow': 'Why natron belongs in the kitchen',
|
||||
'category.kueche.benefits.headline': 'Pure, versatile,',
|
||||
'category.kueche.benefits.headline.em': 'kitchen-grade.',
|
||||
'category.kueche.benefit.1.title': 'Food grade',
|
||||
'category.kueche.benefit.1.text': 'Pure sodium bicarbonate with E500(ii) food approval — extra purified, standardised and batch-tested.',
|
||||
'category.kueche.benefit.2.title': 'Raising agent & more',
|
||||
'category.kueche.benefit.2.text': 'Lightens dough, softens acidity in sauces and soups, and makes pulses easier to digest — one powder, many kitchen tricks.',
|
||||
'category.kueche.benefit.3.title': 'Natural deacidifying',
|
||||
'category.kueche.benefit.3.text': 'Binds excess acid rather than masking it — also as a handy tablet on the go.',
|
||||
'category.kueche.cta.headline': 'Home &',
|
||||
'category.kueche.cta.headline.em': 'care too in the shop.',
|
||||
'category.kueche.cta.sub': 'Cleaning, laundry and care — the whole range at a glance.',
|
||||
'category.kueche.cta.button': 'Visit the shop',
|
||||
|
||||
// Stepped checkout (EN).
|
||||
'checkout.stepper.label': 'Checkout progress',
|
||||
'checkout.step.cart': 'Cart',
|
||||
|
||||
@@ -239,6 +239,10 @@ onBeforeUnmount(() => {
|
||||
decoding="async"
|
||||
class="absolute inset-0 w-full h-full object-cover"
|
||||
/>
|
||||
<span
|
||||
v-if="bundle.aiEdited"
|
||||
class="pointer-events-none absolute bottom-0 right-0 z-[1] px-2.5 py-1 text-[11px] font-medium uppercase tracking-label text-white/55 drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]"
|
||||
>AI Edited</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -311,6 +315,10 @@ onBeforeUnmount(() => {
|
||||
decoding="async"
|
||||
class="block w-full h-auto"
|
||||
/>
|
||||
<span
|
||||
v-if="bundle.aiEdited"
|
||||
class="pointer-events-none absolute bottom-0 right-0 z-[1] px-2.5 py-1 text-[11px] font-medium uppercase tracking-label text-white/55 drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]"
|
||||
>AI Edited</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -23,13 +23,13 @@ const props = defineProps({
|
||||
slug: {
|
||||
type: String,
|
||||
required: true,
|
||||
validator: (v) => ['pflege', 'haushalt'].includes(v),
|
||||
validator: (v) => ['pflege', 'haushalt', 'kueche'].includes(v),
|
||||
},
|
||||
/** Maps to the existing use-case grouping (clean / care). */
|
||||
/** Maps to the existing use-case grouping (cook / clean / care). */
|
||||
useCase: {
|
||||
type: String,
|
||||
required: true,
|
||||
validator: (v) => ['clean', 'care'].includes(v),
|
||||
validator: (v) => ['cook', 'clean', 'care'].includes(v),
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ const bundlesCopy = computed(() => ({
|
||||
headline: t('bundles.headline.a'),
|
||||
headlineEm: t('bundles.headline.em'),
|
||||
sub: t('bundles.sub'),
|
||||
joinCta: t('bundles.joinCta'),
|
||||
// "Become a member" CTA removed (U2 — no membership programme exists).
|
||||
benefits: [
|
||||
t('bundles.benefit.1.title'),
|
||||
t('bundles.benefit.2.title'),
|
||||
@@ -126,12 +126,8 @@ const revitCopy = computed(() => ({
|
||||
headline: t('revit.headline.a'),
|
||||
headlineEm: t('revit.headline.em'),
|
||||
sub: t('revit.sub'),
|
||||
notifyCta: t('revit.notifyCta'),
|
||||
features: [
|
||||
{ title: t('revit.feature.1.title'), icon: '⚗️' },
|
||||
{ title: t('revit.feature.2.title'), icon: '💊' },
|
||||
{ title: t('revit.feature.3.title'), icon: '🌿' },
|
||||
],
|
||||
// Feature/animation row AND the "early access" CTA removed at the brand
|
||||
// owner's request (L10) → Revitalization renders eyebrow + headline + sub.
|
||||
}))
|
||||
|
||||
const aboutCopy = computed(() => ({
|
||||
@@ -164,6 +160,7 @@ const localizedBundles = computed(() =>
|
||||
price: b.price,
|
||||
memberPrice: b.memberPrice,
|
||||
href: b.href,
|
||||
aiEdited: b.aiEdited || false,
|
||||
})),
|
||||
)
|
||||
|
||||
@@ -177,11 +174,6 @@ async function onBannerAdd() {
|
||||
cartOpen.value = true
|
||||
}
|
||||
|
||||
async function onTeaserAdd(productId) {
|
||||
if (!productId) return
|
||||
await addToCart(productId, 1)
|
||||
cartOpen.value = true
|
||||
}
|
||||
|
||||
// Bundles share a single "add" handler. Until the backend exposes a
|
||||
// real bundle SKU endpoint, the UI stand-in adds the bundle's anchor
|
||||
@@ -195,16 +187,10 @@ async function onBundleAdd(bundleId) {
|
||||
cartOpen.value = true
|
||||
}
|
||||
|
||||
function onBundleJoin() {
|
||||
// Placeholder — member signup flow is a backend concern. For now,
|
||||
// clicking "Mitglied werden" simply scrolls to the bundles grid.
|
||||
const el = document.getElementById('bundles')
|
||||
if (el) el.scrollIntoView({ block: 'start' })
|
||||
}
|
||||
|
||||
function onRevitNotify() {
|
||||
// Placeholder — early-access capture goes to the backend once wired.
|
||||
// No-op for the demo.
|
||||
async function onTeaserAdd(productId) {
|
||||
if (!productId) return
|
||||
await addToCart(productId, 1)
|
||||
cartOpen.value = true
|
||||
}
|
||||
|
||||
async function onQty({ productId, quantity }) {
|
||||
@@ -383,9 +369,7 @@ onBeforeUnmount(() => {
|
||||
:headline-em="bundlesCopy.headlineEm"
|
||||
:sub="bundlesCopy.sub"
|
||||
:benefits="bundlesCopy.benefits"
|
||||
:join-cta="bundlesCopy.joinCta"
|
||||
@add="onBundleAdd"
|
||||
@join="onBundleJoin"
|
||||
/>
|
||||
|
||||
<!-- Wave surface → cream into the second-fold cream banner. -->
|
||||
@@ -442,17 +426,14 @@ onBeforeUnmount(() => {
|
||||
/>
|
||||
</svg>
|
||||
|
||||
<!-- Revitalization Center — brand green "coming soon" section. Three
|
||||
pillars (science / therapy / natural healing), single CTA. -->
|
||||
<!-- Revitalization Center — brand green "coming soon" section.
|
||||
Headline + sub + single CTA (feature/animation row removed). -->
|
||||
<Revitalization
|
||||
class="-mt-px"
|
||||
:eyebrow="revitCopy.eyebrow"
|
||||
:headline="revitCopy.headline"
|
||||
:headline-em="revitCopy.headlineEm"
|
||||
:sub="revitCopy.sub"
|
||||
:features="revitCopy.features"
|
||||
:notify-cta="revitCopy.notifyCta"
|
||||
@notify="onRevitNotify"
|
||||
/>
|
||||
|
||||
<!-- Brand → cream wave. Same construction as the first-fold wave, just
|
||||
|
||||
@@ -3,6 +3,8 @@ import { computed, onBeforeUnmount, onMounted, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import Navbar from '@/design-system/components/Navbar.vue'
|
||||
import ProductCard from '@/design-system/components/ProductCard.vue'
|
||||
import Hero from '@/design-system/components/Hero.vue'
|
||||
import Button from '@/design-system/components/Button.vue'
|
||||
import WaveDivider from '@/design-system/components/WaveDivider.vue'
|
||||
import Footer from '@/design-system/components/Footer.vue'
|
||||
import CartDrawer from '@/design-system/components/CartDrawer.vue'
|
||||
@@ -49,47 +51,54 @@ const navItems = [
|
||||
const navSecondaryItems = []
|
||||
|
||||
// Group products by use-case once; iterate a stable config below.
|
||||
// The featured tiles in the top banner each pick the FIRST product
|
||||
// in their group — a representative face for that band. The
|
||||
// sections themselves display every product in the group.
|
||||
const grouped = computed(() => productsByUseCase(products))
|
||||
const featuredTiles = computed(() =>
|
||||
USE_CASES.map((id) => ({
|
||||
id,
|
||||
label: t(`shop.feature.${id}`),
|
||||
cta: t(`shop.feature.cta.${id}`),
|
||||
product: grouped.value[id][0],
|
||||
})),
|
||||
)
|
||||
|
||||
// Each use-case fronts a full-width category colour banner. The colour
|
||||
// is the brand's own use-group palette (tokens.css --color-cat-*):
|
||||
// cook=Küche=lime, clean=Haushalt=grapefruit, care=Pflege=orange. Each
|
||||
// banner is headed by a representative product image for that group.
|
||||
const CAT_TONE = { cook: 'kitchen', clean: 'clean', wash: 'wash', care: 'care' }
|
||||
const CAT_HERO_ID = {
|
||||
cook: 'kaiser-natron-pulver-250-g-grosspackung',
|
||||
clean: 'kaiser-natron-allzweck-spray-500-ml',
|
||||
wash: 'kaiser-natron-daunenwasch-250-ml',
|
||||
care: 'kaiser-natron-bad-500-g',
|
||||
}
|
||||
const sections = computed(() =>
|
||||
USE_CASES.map((id, i) => ({
|
||||
id,
|
||||
headline: t(`shop.section.${id}.headline`),
|
||||
headlineEm: t(`shop.section.${id}.headline.em`),
|
||||
sub: t(`shop.section.${id}.sub`),
|
||||
products: grouped.value[id],
|
||||
// Alternate tones so neighbouring sections read as distinct
|
||||
// surfaces without a hard rule. Cook/Care land on cream;
|
||||
// Clean sits on surface between them for contrast.
|
||||
tone: i % 2 === 0 ? 'cream' : 'surface',
|
||||
})),
|
||||
USE_CASES.map((id) => {
|
||||
const heroProduct =
|
||||
products.find((p) => p.id === CAT_HERO_ID[id]) || grouped.value[id][0]
|
||||
return {
|
||||
id,
|
||||
cat: CAT_TONE[id],
|
||||
feature: t(`shop.feature.${id}`),
|
||||
headline: t(`shop.section.${id}.headline`),
|
||||
headlineEm: t(`shop.section.${id}.headline.em`),
|
||||
sub: t(`shop.section.${id}.sub`),
|
||||
productsTitle: t(`shop.section.${id}.products.title`),
|
||||
products: grouped.value[id],
|
||||
heroImage: heroProduct.image,
|
||||
heroAlt: heroProduct.title,
|
||||
heroId: heroProduct.id,
|
||||
heroHref: heroProduct.href,
|
||||
}
|
||||
}),
|
||||
)
|
||||
|
||||
async function onAdd(product) {
|
||||
await addToCart(product.id, 1)
|
||||
cartOpen.value = true
|
||||
}
|
||||
// Banner "add to cart" — adds that section's representative hero product.
|
||||
async function onHeroAdd(productId) {
|
||||
if (!productId) return
|
||||
await addToCart(productId, 1)
|
||||
cartOpen.value = true
|
||||
}
|
||||
async function onSearchSelect(product) {
|
||||
await addToCart(product.id, 1)
|
||||
cartOpen.value = true
|
||||
}
|
||||
function scrollToSection(event, id) {
|
||||
const target = document.getElementById(id)
|
||||
if (!target) return
|
||||
event.preventDefault()
|
||||
target.scrollIntoView({ behavior: 'smooth', block: 'start' })
|
||||
history.pushState(null, '', `#${id}`)
|
||||
}
|
||||
async function onQty({ productId, quantity }) {
|
||||
await updateCartItem(productId, quantity)
|
||||
}
|
||||
@@ -138,13 +147,11 @@ onBeforeUnmount(() => {
|
||||
@search="onSearchSelect"
|
||||
/>
|
||||
|
||||
<!-- First-fold green banner — full viewport height, pulled up under
|
||||
the sticky nav so the hero content centers at the TRUE viewport
|
||||
midpoint (matches the home page's first fold). The content is a
|
||||
page-title band + three featured product tiles, one per use-case
|
||||
section, with anchor links into the sections below. -->
|
||||
<!-- First-fold green banner — HALF viewport height (it only holds a
|
||||
compact title band, so a full fold left too much empty green).
|
||||
Pulled up under the sticky nav and vertically centred. -->
|
||||
<div
|
||||
class="flex flex-col bg-brand text-cream md:min-h-[calc(100svh-var(--nav-h))] md:justify-center"
|
||||
class="flex flex-col bg-brand text-cream md:min-h-[calc(50svh-var(--nav-h))] md:justify-center"
|
||||
>
|
||||
<div class="mx-auto w-full max-w-6xl px-6 py-12 sm:px-8 sm:py-16 md:px-12 md:py-12 lg:px-16 lg:py-16">
|
||||
<!-- Title band. Mixed-font banner treatment (Hero-style): normal
|
||||
@@ -159,88 +166,71 @@ onBeforeUnmount(() => {
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Three featured tiles — rule of 3. One representative product
|
||||
per use-case, each tile is an anchor into its section. Uses
|
||||
the cream-wash-on-brand container pattern from the
|
||||
LanguageSwitcher's `brand` tone so tiles read as lifted off
|
||||
the green ground without another heavy surface.
|
||||
Image uses aspect-[4/3] (not aspect-square) with a svh-
|
||||
relative height cap so the whole fold — title + sub + three
|
||||
tiles + padding — stays inside 100svh at desktop heights
|
||||
from ~720px up. Mobile stacks the tiles; the fold can
|
||||
overflow below there because phones scroll naturally. -->
|
||||
<ul class="mt-8 md:mt-10 grid gap-4 sm:gap-5 md:gap-6 grid-cols-1 sm:grid-cols-3">
|
||||
<li v-for="tile in featuredTiles" :key="tile.id">
|
||||
<a
|
||||
:href="`#${tile.id}`"
|
||||
class="group flex h-full flex-col items-center gap-4 p-4 md:p-5 rounded-md border border-cream-line bg-cream-wash hover:bg-cream-wash-strong transition-colors duration-base"
|
||||
@click="scrollToSection($event, tile.id)"
|
||||
>
|
||||
<div class="w-full aspect-[4/3] max-h-[30svh] md:max-h-[26svh] lg:max-h-[28svh] rounded-md bg-paper overflow-hidden flex items-center justify-center">
|
||||
<img
|
||||
:src="tile.product.image"
|
||||
:alt="tile.product.title"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
class="w-full h-full object-contain p-4 md:p-5"
|
||||
/>
|
||||
</div>
|
||||
<div class="flex flex-col items-center text-center gap-1">
|
||||
<p class="eyebrow text-cream/75">{{ tile.label }}</p>
|
||||
<h3 class="font-display text-lg md:text-xl font-normal leading-tight text-cream">
|
||||
{{ tile.product.title }}
|
||||
</h3>
|
||||
</div>
|
||||
<span
|
||||
class="mt-auto inline-flex items-center gap-1.5 text-sm font-semibold tracking-label text-cream/80 group-hover:text-accent transition-colors duration-base"
|
||||
>
|
||||
{{ tile.cta }}
|
||||
<span aria-hidden="true" class="transition-transform duration-base group-hover:translate-x-1">→</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- The three featured product tiles were removed; each use-case is
|
||||
now fronted by its own full-width colour banner below. The green
|
||||
fold keeps just the title band. -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Three use-case sections. Each has its own banner-style mixed-font
|
||||
heading (no eyebrow pill), a 3-up product grid capped at the
|
||||
rule of 3 per row, and wave dividers on either side so the
|
||||
page reads with the same rhythm as the home page. -->
|
||||
<template v-for="(section, i) in sections" :key="section.id">
|
||||
<!-- Wave into the section. Previous surface is `brand` for the
|
||||
first divider (coming out of the green fold), then alternates
|
||||
between cream/surface to match the previous section's tone. -->
|
||||
<WaveDivider :from="i === 0 ? 'brand' : sections[i - 1].tone" :to="section.tone" />
|
||||
<!-- Thin white separation between the green hero and the first colour
|
||||
banner: a diagonal out of the green, then a slim white band. Each
|
||||
section's own diagonal then carries cream → its colour. -->
|
||||
<WaveDivider from="brand" to="cream" />
|
||||
<div aria-hidden="true" class="-mt-px h-6 md:h-10 bg-cream"></div>
|
||||
|
||||
<section
|
||||
:id="section.id"
|
||||
:class="[
|
||||
'-mt-px scroll-mt-[calc(var(--nav-h)+1rem)]',
|
||||
section.tone === 'cream' ? 'bg-cream text-ink' : 'bg-surface text-ink',
|
||||
]"
|
||||
>
|
||||
<!-- Per use-case: a full-width category COLOUR banner (representative
|
||||
product + the section's mixed-font heading) heads each group, then
|
||||
the product grid sits on a neutral surface below. Diagonal wave
|
||||
dividers carry the colour in and back out, matching the home-page
|
||||
rhythm. Colours: cook=lime, clean=grapefruit, wash=plum, care=orange. -->
|
||||
<template v-for="section in sections" :key="section.id">
|
||||
<!-- Wave into the colour banner from the neutral surface above (the
|
||||
white band for the first section, the product grid for the rest). -->
|
||||
<WaveDivider from="cream" :to="section.cat" />
|
||||
|
||||
<!-- Category colour banner. `id` + scroll-mt keep deep-links
|
||||
(/shop#care) landing just under the sticky nav. -->
|
||||
<div :id="section.id" class="-mt-px scroll-mt-[calc(var(--nav-h)+1rem)]">
|
||||
<Hero
|
||||
class="w-full"
|
||||
variant="split"
|
||||
:tone="section.cat"
|
||||
:eyebrow="section.feature"
|
||||
:image="section.heroImage"
|
||||
:image-alt="section.heroAlt"
|
||||
>
|
||||
<template #headline>
|
||||
{{ section.headline }}
|
||||
<em class="italic font-light">{{ section.headlineEm }}</em>
|
||||
</template>
|
||||
<template #subheadline>{{ section.sub }}</template>
|
||||
<!-- Banner CTAs: "add to cart" in the brand crimson, "learn more"
|
||||
as a white-outline ghost (adds / links the section's hero
|
||||
product). -->
|
||||
<template #actions>
|
||||
<Button variant="accent" size="lg" @click="onHeroAdd(section.heroId)">
|
||||
{{ t('ds.buttons.addToCart') }}
|
||||
</Button>
|
||||
<RouterLink
|
||||
:to="section.heroHref"
|
||||
class="inline-flex items-center justify-center rounded-pill border border-white/90 px-[34px] py-[17px] text-[14px] font-semibold uppercase tracking-label text-white transition-colors duration-base hover:bg-white/10"
|
||||
>{{ t('ds.buttons.learnMore') }}</RouterLink>
|
||||
</template>
|
||||
</Hero>
|
||||
</div>
|
||||
|
||||
<!-- Wave back out of the colour into the neutral product grid. -->
|
||||
<WaveDivider :from="section.cat" to="cream" />
|
||||
|
||||
<section class="-mt-px bg-cream text-ink">
|
||||
<div class="mx-auto w-full max-w-6xl px-6 py-16 sm:px-8 sm:py-20 md:px-12 md:py-24 lg:px-16 lg:py-28">
|
||||
<div class="flex flex-col gap-4 max-w-3xl">
|
||||
<h2 class="font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-lg">
|
||||
{{ section.headline }}
|
||||
<em class="italic font-light text-brand">{{ section.headlineEm }}</em>
|
||||
</h2>
|
||||
<p class="text-lg leading-relaxed text-muted max-w-2xl">
|
||||
{{ section.sub }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h2
|
||||
class="font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md mb-10 md:mb-12"
|
||||
>{{ section.productsTitle }}</h2>
|
||||
<div
|
||||
v-if="section.products.length"
|
||||
class="mt-12 md:mt-14 grid gap-5 md:gap-7 grid-cols-1 sm:grid-cols-2 md:grid-cols-3"
|
||||
class="grid gap-5 md:gap-7 grid-cols-1 sm:grid-cols-2 md:grid-cols-3"
|
||||
>
|
||||
<!-- Add-to-cart variant alternates by section index so
|
||||
the three bands read as a pattern: green → yellow →
|
||||
green. Only the middle band uses the accent (yellow)
|
||||
variant; first and last stay on primary (brand green).
|
||||
`i % 2 === 1` keeps this rhythm working if more
|
||||
sections are ever appended. -->
|
||||
<ProductCard
|
||||
v-for="product in section.products"
|
||||
:key="product.id"
|
||||
|
||||
@@ -91,6 +91,13 @@ const routes = [
|
||||
props: { slug: 'haushalt', useCase: 'clean' },
|
||||
meta: { layout: 'none' },
|
||||
},
|
||||
{
|
||||
path: '/kueche',
|
||||
name: 'kueche',
|
||||
component: () => import('@/pages/CategoryPage.vue'),
|
||||
props: { slug: 'kueche', useCase: 'cook' },
|
||||
meta: { layout: 'none' },
|
||||
},
|
||||
{
|
||||
path: '/impressum',
|
||||
name: 'impressum',
|
||||
|
||||
Reference in New Issue
Block a user