diff --git a/backlog/tasks/task-1 - Redesign-dev-website-from-Canva-reference.md b/backlog/tasks/task-1 - Redesign-dev-website-from-Canva-reference.md index 00ebac7..5edc546 100644 --- a/backlog/tasks/task-1 - Redesign-dev-website-from-Canva-reference.md +++ b/backlog/tasks/task-1 - Redesign-dev-website-from-Canva-reference.md @@ -4,7 +4,7 @@ title: Redesign dev website from Canva reference status: In Progress assignee: [] created_date: '2026-05-05 20:20' -updated_date: '2026-05-05 20:32' +updated_date: '2026-05-05 20:35' labels: [] dependencies: [] priority: high @@ -40,4 +40,6 @@ Create an isolated worktree and redesign the regional dev landing page to match Created worktree at .worktrees/canva-redesign on branch codex/canva-redesign. Baseline build passes with CI=true pnpm run build after approving dependency build scripts. Implemented a consolidated Canva-inspired landing page in src/components/canva-landing.tsx and switched src/pages/index.astro to it. Smoke test and CI=true pnpm run build pass. Local dev server responds with HTTP 200 at http://127.0.0.1:4321/. Browser screenshot tooling is not available in this session, so visual review remains open. + +Converted visible German UI copy from ae/oe/ue fallbacks to real umlauts in the Canva landing page and legacy section components. Added smoke-test coverage for the Canva landing copy. diff --git a/src/components/canva-landing.tsx b/src/components/canva-landing.tsx index 2291d9b..eb0a4bb 100644 --- a/src/components/canva-landing.tsx +++ b/src/components/canva-landing.tsx @@ -16,12 +16,12 @@ const services = [ { number: "02", title: "Struktur", - text: "Angebot, Beweise, Ablauf und Kontakt werden so sortiert, dass Besucher nicht suchen muessen.", + text: "Angebot, Beweise, Ablauf und Kontakt werden so sortiert, dass Besucher nicht suchen müssen.", }, { number: "03", title: "Technik", - text: "Schnell, mobil sauber, DSGVO-arm und so gebaut, dass spaetere Aenderungen nicht zum Projekt werden.", + text: "Schnell, mobil sauber, DSGVO-arm und so gebaut, dass spätere Änderungen nicht zum Projekt werden.", }, ]; @@ -37,15 +37,15 @@ const packages = [ { name: "Basis", price: "799 EUR", - detail: "Eine starke Seite fuer ein klares Angebot.", + detail: "Eine starke Seite für ein klares Angebot.", }, { name: "Profi", price: "1.499 EUR", - detail: "Mehrere Seiten fuer Betriebe mit erklaerungsbeduerftigem Angebot.", + detail: "Mehrere Seiten für Betriebe mit erklärungsbedürftigem Angebot.", }, { - name: "Massarbeit", + name: "Maßarbeit", price: "2.499 EUR+", detail: "Individuelle Struktur, CMS und besondere Anforderungen.", }, @@ -69,7 +69,7 @@ const CanvaLanding = () => {
- Projektbrief fuer regionale Unternehmen + Projektbrief für regionale Unternehmen
- Ich baue Websites fuer Handwerk, Praxen, Salons und - Dienstleister aus der Region. Direkt, glaubwuerdig und so - reduziert, dass der naechste Kontakt naheliegt. + Ich baue Websites für Handwerk, Praxen, Salons und + Dienstleister aus der Region. Direkt, glaubwürdig und so + reduziert, dass der nächste Kontakt naheliegt.
- Klarer Auftritt. Harte Kante. Weniger Agenturlaerm. + Klarer Auftritt. Harte Kante. Weniger Agenturlärm.
{ Kontakt (05)- Ein paar Saetze reichen: Was bieten Sie an, was soll die Website + Ein paar Sätze reichen: Was bieten Sie an, was soll die Website leisten, und wann soll sie online sein?
{Noch bevor es um Pakete oder Features geht, soll direkt klar sein, warum diese Zusammenarbeit für regionale Unternehmen greifbar und - verlaesslich wirkt. + verlässlich wirkt.
- Falls noch etwas offen ist, schreiben Sie mir gern ueber das + Falls noch etwas offen ist, schreiben Sie mir gern über das Kontaktformular diff --git a/src/components/feature284.tsx b/src/components/feature284.tsx index 1fc5593..e641086 100644 --- a/src/components/feature284.tsx +++ b/src/components/feature284.tsx @@ -6,35 +6,35 @@ import { cn } from "@/lib/utils"; const featureData = [ { - desc: "Ihre Website erklaert in wenigen Sekunden, fuer wen Sie arbeiten und was Sie konkret anbieten.", + desc: "Ihre Website erklärt in wenigen Sekunden, für wen Sie arbeiten und was Sie konkret anbieten.", img: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/guri3/img1.jpeg", title: "Klare Positionierung", badgeTitle: "Vorteil 01", gridClass: "md:col-span-1", }, { - desc: "Ein zeitgemaesses Design sorgt fuer einen starken ersten Eindruck und passt zu Ihrem Unternehmen.", + desc: "Ein zeitgemäßes Design sorgt für einen starken ersten Eindruck und passt zu Ihrem Unternehmen.", img: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/guri3/img7.jpeg", title: "Modernes Erscheinungsbild", badgeTitle: "Vorteil 02", gridClass: "lg:col-span-2", }, { - desc: "Ihre Inhalte funktionieren sauber auf Smartphone, Tablet und Desktop - ohne Umwege fuer Besucher.", + desc: "Ihre Inhalte funktionieren sauber auf Smartphone, Tablet und Desktop - ohne Umwege für Besucher.", img: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/guri3/img11.jpeg", title: "Mobil optimiert", badgeTitle: "Vorteil 03", gridClass: "md:col-span-1 lg:row-span-2 ", }, { - desc: "Klare Kontaktwege mit gut sichtbaren Handlungsaufforderungen machen den naechsten Schritt leicht.", + desc: "Klare Kontaktwege mit gut sichtbaren Handlungsaufforderungen machen den nächsten Schritt leicht.", img: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/guri3/img2.jpeg", - title: "Anfragen ohne Huerden", + title: "Anfragen ohne Hürden", badgeTitle: "Vorteil 04", gridClass: "lg:col-span-2", }, { - desc: "Die Seite bleibt wartbar aufgebaut, damit Inhalte spaeter schnell angepasst oder erweitert werden koennen.", + desc: "Die Seite bleibt wartbar aufgebaut, damit Inhalte später schnell angepasst oder erweitert werden können.", img: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/guri3/img4.jpeg", title: "Pflegeleicht aufgebaut", badgeTitle: "Vorteil 05", diff --git a/tests/landing-content.test.mjs b/tests/landing-content.test.mjs index 53e87ef..7067d91 100644 --- a/tests/landing-content.test.mjs +++ b/tests/landing-content.test.mjs @@ -7,7 +7,26 @@ const componentPath = new URL("../src/components/canva-landing.tsx", import.meta test("Canva landing component contains the core brief anchors", async () => { const source = await readFile(componentPath, "utf8"); - for (const phrase of ["Projektbrief", "01", "Website", "Kontakt"]) { + for (const phrase of ["Projektbrief", "01", "Website", "Kontakt", "für", "müssen", "Änderungen"]) { assert.match(source, new RegExp(phrase)); } }); + +test("Canva landing component uses real German umlauts in visible copy", async () => { + const source = await readFile(componentPath, "utf8"); + + for (const asciiFallback of [ + "fuer", + "muessen", + "spaetere", + "Aenderungen", + "glaubwuerdig", + "naechste", + "Agenturlaerm", + "Erzaehlen", + "Saetze", + "Rueckmeldung", + ]) { + assert.doesNotMatch(source, new RegExp(asciiFallback)); + } +});