From 677104d4a61a971661712b15e24328143d34c61a Mon Sep 17 00:00:00 2001 From: qcigano Date: Sun, 2 Aug 2026 20:21:30 +0200 Subject: [PATCH] =?UTF-8?q?Warenkorb:=20Artikel=20einzeln=20zum=20Kauf=20a?= =?UTF-8?q?usw=C3=A4hlen,=20andere=20bleiben=20unverbindlich=20liegen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jeder Artikel im Warenkorb hat jetzt eine Checkbox "Jetzt kaufen". Nur angehakte Artikel zählen zur Zwischensumme, zum Versand, zum Gutschein und zum Checkout — abgewählte Artikel bleiben sichtbar (leicht abgedunkelt, mit "Bleibt im Warenkorb, wird noch nicht gekauft"-Hinweis) im Warenkorb liegen, ohne mitgekauft zu werden. Die Auswahl wird pro Artikel gespeichert (localStorage) und bleibt bis zur nächsten Änderung bestehen. Der Checkout übernimmt automatisch nur die ausgewählten Artikel. Verifiziert per Puppeteer: Abwählen eines Artikels reduziert Summe/ Rechnungsliste sofort korrekt, Checkout zeigt nur den ausgewählten Artikel, keine Konsolenfehler. --- src/i18n/ui.ts | 4 ++++ src/pages/ch/checkout/index.astro | 6 ++++-- src/pages/ch/warenkorb/index.astro | 29 +++++++++++++++++++------- src/pages/checkout/index.astro | 6 ++++-- src/pages/en/checkout/index.astro | 6 ++++-- src/pages/en/warenkorb/index.astro | 29 +++++++++++++++++++------- src/pages/fr/checkout/index.astro | 6 ++++-- src/pages/fr/warenkorb/index.astro | 29 +++++++++++++++++++------- src/pages/warenkorb/index.astro | 29 +++++++++++++++++++------- src/scripts/cart.ts | 33 +++++++++++++++++++++++++----- src/styles/global.css | 32 +++++++++++++++++++++++++++++ 11 files changed, 168 insertions(+), 41 deletions(-) diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts index 35bda35..278f046 100644 --- a/src/i18n/ui.ts +++ b/src/i18n/ui.ts @@ -152,6 +152,7 @@ export const ui = { discount: "Rabatt", mengenrabatt: (p: string) => `Mengenrabatt -${p}%`, mengenrabattTier: (ab: string, p: string) => `ab ${ab} Stück -${p}%`, couponLabel: "🎟️ Gutscheincode", couponPlaceholder: "Code eingeben", couponApply: "Einlösen", couponRemove: "Entfernen", + buyNow: "Jetzt kaufen", keptInCart: "Bleibt im Warenkorb, wird noch nicht gekauft", couponInvalid: "Code ungültig oder abgelaufen.", couponApplied: (code: string) => `Gutschein „${code}" eingelöst`, }, checkout: { @@ -333,6 +334,7 @@ export const ui = { discount: "Discount", mengenrabatt: (p: string) => `Bulk discount -${p}%`, mengenrabattTier: (ab: string, p: string) => `from ${ab} pcs -${p}%`, couponLabel: "🎟️ Coupon code", couponPlaceholder: "Enter code", couponApply: "Apply", couponRemove: "Remove", + buyNow: "Buy now", keptInCart: "Stays in cart, not purchased yet", couponInvalid: "Code invalid or expired.", couponApplied: (code: string) => `Coupon "${code}" applied`, }, checkout: { @@ -514,6 +516,7 @@ export const ui = { discount: "Rabatt", mengenrabatt: (p: string) => `Mengerabatt -${p}%`, mengenrabattTier: (ab: string, p: string) => `ab ${ab} Stuck -${p}%`, couponLabel: "🎟️ Gutschy-Code", couponPlaceholder: "Code igäh", couponApply: "Ilöse", couponRemove: "Ewägmache", + buyNow: "Jetzt chaufe", keptInCart: "Blibt im Warenchorb, wird no nid chauft", couponInvalid: "Code ungültig oder abgloffe.", couponApplied: (code: string) => `Gutschy „${code}" iglöst`, }, checkout: { @@ -695,6 +698,7 @@ export const ui = { discount: "Remise", mengenrabatt: (p: string) => `Remise de quantité -${p}%`, mengenrabattTier: (ab: string, p: string) => `dès ${ab} pièces -${p}%`, couponLabel: "🎟️ Code promo", couponPlaceholder: "Entrer le code", couponApply: "Valider", couponRemove: "Retirer", + buyNow: "Acheter maintenant", keptInCart: "Reste dans le panier, pas encore acheté", couponInvalid: "Code invalide ou expiré.", couponApplied: (code: string) => `Code promo « ${code} » appliqué`, }, checkout: { diff --git a/src/pages/ch/checkout/index.astro b/src/pages/ch/checkout/index.astro index 612f79d..5673e51 100644 --- a/src/pages/ch/checkout/index.astro +++ b/src/pages/ch/checkout/index.astro @@ -147,7 +147,7 @@ const t = useTranslations(lang); window.__checkoutVars = { freeLabel, totalLabel, shippingLabel, emptyCartAlert, thankYouPath, checkoutLang, discountLabel, couponInvalid, couponAppliedTemplate, couponRemoveLabel, klarnaConnectLabel, klarnaConnectingLabel, klarnaConnectedLabel, bankHolderLabel, bankIbanLabel, bankBicLabel, bankBankNameLabel, bankPlaceholderLabel };