Commit Graph

20 Commits

Author SHA1 Message Date
Dorian
15c951c2a0 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>
2026-06-23 12:35:52 +01:00
Dorian
c837dfdad7 Add Kaiserhacks page 2026-05-19 20:58:07 -05:00
Dorian
fe28c47c7c bundles: dedicated /bundles/<slug> pages, full-bleed background art
Bundle data extracted to src/api/bundles.js (single source of truth
shared by HomePage's grid and the new BundlePage). Each card on the
home grid now links to the bundle's detail route.

BundleCard's `imageFit` default flipped to `cover` to match the new
/bundles/background/* artwork — full-bleed lifestyle scenes instead
of padded product line-ups. The `contain` mode stays available for
future bundles whose art needs breathing room.

BundlePage layout: split brand-green hero with the bundle artwork
on the left, name + items list (linking to component product pages
where matched) + pricing + qty + add-to-cart on the right. Mirrors
ProductPage chrome (Navbar, dynamic back button, CartDrawer) so the
detail-page experience reads as one piece across SKUs and bundles.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 10:22:25 +01:00
Dorian
d6a40592ff design system: add Footer and CheckoutStepper sections
The two newly-shipped components (Footer with cream/brand/paper
tones, CheckoutStepper with active/completed/upcoming states) are
now documented in the design system at /design/footer and
/design/checkout-stepper. Sidebar entries added under "Sections"
and "Components" respectively, with DE + EN copy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 19:14:09 +01:00
Dorian
eefaa06995 scroll: smooth only for same-route hash, restore savedPosition
Three rules:
- Browser back/forward → restore exact scroll y (preserves shop ⇄
  product round-trips, fixes regression).
- Same-route hash nav (clicking Bundles while on home) → smooth.
- Cross-route hash nav (/shop → /#bundles) → instant.

Removed the global `html { scroll-behavior: smooth }` so plain
forward navigations and back/forward jumps stay instant.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 16:16:32 +01:00
Dorian
4f6c697bc6 restore savedPosition + force smooth scroll on hash via HomePage watcher
Two fixes:
- Bring back savedPosition handling in scrollBehavior so /shop ⇄
  /shop/<slug> back-nav restores the previous scroll y.
- Add a route.hash watcher in HomePage that calls scrollIntoView with
  smooth behaviour. Vue Router's scrollBehavior alone wasn't reliably
  firing for same-route hash navigations, so this catches them
  explicitly. Also handles direct /#bundles deep-links via immediate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 16:15:58 +01:00
Dorian
b48b34f424 smooth-scroll on hash nav
Anchor links like /#bundles, /#revitalize, /#about now smooth-scroll
to their target instead of jumping. Reverts the earlier instant-jump
choice — for the homepage nav, the animation is the desired feedback.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 16:10:09 +01:00
Dorian
f0470fc113 drop savedPosition from scrollBehavior
Anchor links (e.g. /#bundles) still scroll to their target section.
Back/forward navigation now lands at the top of the destination
instead of restoring the previous scroll y, for predictable arrivals.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 16:07:50 +01:00
Dorian
c600fadadb stepped checkout, auth pages, sticky stepper bar, action footer
- 4-step checkout (cart, account, shipping, payment) with Pinia store and route children
- minimal cream sticky top bar (logo + stepper + back-to-shopping) replacing nav/footer in checkout
- fixed cream action footer at viewport bottom for back/continue on every step
- guest / sign-in / register tabs on account step + standalone /login and /register
- src/api/auth.js stub matching expected backend contract
- legal pages (/impressum, /datenschutz) and category landings (/pflege, /haushalt)
- success page stacked CTAs (back-to-home primary, keep-shopping secondary)
- footer logo size aligned with navbar; cream variant footer

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 16:06:26 +01:00
Dorian
e5bd1f65fc product detail pages, footer, category and legal routes
- /shop/:slug product detail pages with green hero, per-product locale files (de.js + en.js), and viewport-fit hero sizing
- footer component integrated across home/shop/checkout/success
- /pflege, /haushalt, /impressum, /datenschutz routes via CategoryPage / LegalPage
- scrollBehavior honours savedPosition (back-button restores y); smooth scrolling removed everywhere for accessibility
- ProductCard + Hero CTAs use RouterLink for internal paths so SPA history survives clicks
- homepage hero image cap reduced ~20% on width and height
- dist/ rebuild

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 14:33:22 +01:00
Dorian
16910c49d4 product pages navigation tweaks and layout improvements 2026-05-03 14:17:07 +01:00
Dorian
0883571a31 shop work and regression to original menu as well as checkout 2026-04-28 18:08:48 +01:00
Dorian
2707036b61 changes since conversation categories and layout fixes andshop 2026-04-24 13:05:03 +01:00
Dorian
f001d65c7f updates to new sections and design system page 2026-04-23 15:02:54 +01:00
Dorian
32d6807def added bundle revit and about 2026-04-23 13:24:29 +01:00
Dorian
b0d0267934 added cart 2026-04-22 08:50:25 +01:00
Dorian
af4e03a155 feat(search): tone-aware product search with mobile + desktop triggers
Introduces:
- src/api/fixtures/products.js + src/api/index.js — placeholder catalog
  (24 products across Kaiser-Natron / Holste / Gazelle / Grüne Tante /
  Linda) so search has real data. Same shape the backend will return.
- Search.vue — Teleported dialog. Token-scored, diacritics-folded, ß→ss
  normalized so German terms still match when users type ASCII. Keyboard
  navigation (↑/↓/Enter/Esc), autofocus on open, scroll-lock. Full-screen
  on mobile, centered command-palette modal on md+. Tone prop defaults
  to 'brand' so the overlay reads as the site's primary affordance
  (green), with 'paper' and 'cream' variants available.
- SearchSection.vue + ds-search route + sidebar entry.
- DE + EN strings for the overlay and the showcase.

Navbar wires the triggers: desktop search button sits left of the
LanguageSwitcher in the right cluster; mobile gets a matching bottom-
left floating button (cream surface, safe-area padded) that mirrors the
existing bottom-right cart/menu cluster. The Search overlay is mounted
inside Navbar with the default catalog, so every page that renders a
Navbar gets search for free. Selected products bubble up as a
@select event for navigation handling.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:33:18 +01:00
Dorian
a07058d656 feat: add Hero component to design system
- Responsive hero for home + category tops (390→1280px), composed from
  Button, Badge, and the Icon/Logo primitives already in the DS.
- Two layouts — split (copy left / product right on lg, stacked below)
  and centered — and three surface tones — cream, paper, brand. On the
  brand-green surface the secondary CTA is rendered with a cream outline
  pill since Button's ghost/secondary variants read dark-on-dark there.
- Decorative disc + soft glow behind the product cutout give the image
  a focal point without needing a photographed backdrop.
- Headline can be passed as a string prop or as a slot (so consumers
  can mix in the italic `text-brand-soft` emphasis used on the home page).
- Ships with a /design/hero showcase page that renders the component in
  the DevicePreview iframe across mobile / tablet / desktop, plus
  layout and tone tabs and a usage snippet. Preview route is
  /design/preview/hero so the iframe can include the live Navbar.
- i18n keys added to DE + EN; AT inherits from DE.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 11:44:15 +01:00
Dorian
9bc6b842cf product cards and containerisation 2026-04-21 11:27:25 +01:00
Dorian
7bd8e0a181 chore: initial commit
Vue 3 + Tailwind v4 frontend scaffold with living design system
at /design. Pinned dependencies, dev-only a11y toolbar with
colour-vision simulation, WCAG contrast checker, and axe-core audit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-19 15:09:27 +01:00