PDP: widen stepRow fact-cards back to 75rem (48rem read too squeezed)
This commit is contained in:
@@ -176,13 +176,12 @@ export function renderProductBlock(block: ProductBlock, ctx: ProductBlockContext
|
||||
// rendering diverges from Pages.layout's own connected-arrow stepRow
|
||||
// (renderPageBlockSync), scoped to ProductBlocks.tsx. Icons black
|
||||
// (#231f20), same override reasoning as the quote block below.
|
||||
// max-w-[48rem] — der-eine's own original Focus.tsx used 75rem, but
|
||||
// that read too wide/loose for this card row (reported 2026-08-30);
|
||||
// narrowed to match the blog body column's own width instead
|
||||
// (RichText.tsx's max-w-[48rem]).
|
||||
// max-w-[48rem] (blog-body width) read too squeezed for a 3-4-card
|
||||
// row (reported 2026-08-30, same day it was narrowed) — back to
|
||||
// der-eine's own original Focus.tsx width.
|
||||
case "stepRow":
|
||||
return (
|
||||
<div key={block.id} className="flex flex-col sm:flex-row gap-8 items-start w-full max-w-[48rem] mx-auto">
|
||||
<div key={block.id} className="flex flex-col sm:flex-row gap-8 items-start w-full max-w-[75rem] mx-auto">
|
||||
{block.items.map((item) => {
|
||||
const Icon = STEP_ICONS[item.icon];
|
||||
return (
|
||||
|
||||
@@ -0,0 +1,555 @@
|
||||
<title>Seiten-Inventar</title>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap">
|
||||
<style>
|
||||
:root {
|
||||
--bg: #F3F5F3;
|
||||
--surface: #FFFFFF;
|
||||
--surface-alt: #EAEEEA;
|
||||
--border: #D7DED9;
|
||||
--text: #16201C;
|
||||
--text-muted: #55625B;
|
||||
--text-faint: #8B968F;
|
||||
--accent: #2F6E5C;
|
||||
--accent-soft: #E4EFEA;
|
||||
--accent-ink: #1E4B3E;
|
||||
--ok: #2874A6;
|
||||
--ok-soft: #E4EEF6;
|
||||
--warn: #97650A;
|
||||
--warn-soft: #F5EAD4;
|
||||
--off: #5B6B66;
|
||||
--off-soft: #E9ECE9;
|
||||
--shadow: 0 1px 2px rgba(20, 30, 25, 0.06);
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root:not([data-theme="light"]) {
|
||||
--bg: #10150F;
|
||||
--surface: #171D18;
|
||||
--surface-alt: #1D2420;
|
||||
--border: #2A332C;
|
||||
--text: #E7EDE9;
|
||||
--text-muted: #9EAAA1;
|
||||
--text-faint: #6C7871;
|
||||
--accent: #5FBF9E;
|
||||
--accent-soft: #17332A;
|
||||
--accent-ink: #A9E6C9;
|
||||
--ok: #7DB8E8;
|
||||
--ok-soft: #17293A;
|
||||
--warn: #E0AA55;
|
||||
--warn-soft: #362B15;
|
||||
--off: #93A39B;
|
||||
--off-soft: #212822;
|
||||
--shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
:root[data-theme="dark"] {
|
||||
--bg: #10150F;
|
||||
--surface: #171D18;
|
||||
--surface-alt: #1D2420;
|
||||
--border: #2A332C;
|
||||
--text: #E7EDE9;
|
||||
--text-muted: #9EAAA1;
|
||||
--text-faint: #6C7871;
|
||||
--accent: #5FBF9E;
|
||||
--accent-soft: #17332A;
|
||||
--accent-ink: #A9E6C9;
|
||||
--ok: #7DB8E8;
|
||||
--ok-soft: #17293A;
|
||||
--warn: #E0AA55;
|
||||
--warn-soft: #362B15;
|
||||
--off: #93A39B;
|
||||
--off-soft: #212822;
|
||||
--shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
font-family: "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
|
||||
font-size: 15px;
|
||||
line-height: 1.5;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.wrap {
|
||||
max-width: 78rem;
|
||||
margin: 0 auto;
|
||||
padding: 2.75rem 1.5rem 5rem;
|
||||
}
|
||||
|
||||
header.doc-head {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.4rem;
|
||||
margin-bottom: 1.75rem;
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
font-family: "IBM Plex Mono", ui-monospace, monospace;
|
||||
font-size: 0.72rem;
|
||||
letter-spacing: 0.11em;
|
||||
text-transform: uppercase;
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: "Barlow Condensed", ui-sans-serif, sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: clamp(2rem, 4vw, 2.7rem);
|
||||
letter-spacing: -0.01em;
|
||||
margin: 0;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.dek {
|
||||
color: var(--text-muted);
|
||||
max-width: 46rem;
|
||||
margin: 0.15rem 0 0;
|
||||
font-size: 0.98rem;
|
||||
}
|
||||
|
||||
.stats {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
|
||||
gap: 0.75rem;
|
||||
margin: 1.75rem 0 2.5rem;
|
||||
}
|
||||
|
||||
.stat {
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 8px;
|
||||
padding: 0.9rem 1.05rem;
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.stat .n {
|
||||
font-family: "IBM Plex Mono", ui-monospace, monospace;
|
||||
font-size: 1.55rem;
|
||||
font-weight: 500;
|
||||
color: var(--text);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.stat .l {
|
||||
font-size: 0.78rem;
|
||||
color: var(--text-muted);
|
||||
margin-top: 0.15rem;
|
||||
}
|
||||
|
||||
.note {
|
||||
background: var(--accent-soft);
|
||||
border: 1px solid var(--accent);
|
||||
border-radius: 8px;
|
||||
padding: 0.85rem 1.1rem;
|
||||
font-size: 0.88rem;
|
||||
color: var(--accent-ink);
|
||||
margin-bottom: 2.5rem;
|
||||
line-height: 1.55;
|
||||
}
|
||||
.note strong { font-weight: 600; }
|
||||
|
||||
section.cat {
|
||||
margin-bottom: 2.25rem;
|
||||
}
|
||||
|
||||
.cat-head {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 0.6rem;
|
||||
margin-bottom: 0.7rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.cat-head h2 {
|
||||
font-family: "Barlow Condensed", ui-sans-serif, sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 1.35rem;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.cat-count {
|
||||
font-family: "IBM Plex Mono", ui-monospace, monospace;
|
||||
font-size: 0.76rem;
|
||||
color: var(--text-faint);
|
||||
}
|
||||
|
||||
.cat-desc {
|
||||
flex-basis: 100%;
|
||||
font-size: 0.85rem;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.table-scroll {
|
||||
overflow-x: auto;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 8px;
|
||||
background: var(--surface);
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
min-width: 34rem;
|
||||
}
|
||||
|
||||
thead th {
|
||||
text-align: left;
|
||||
font-size: 0.72rem;
|
||||
letter-spacing: 0.06em;
|
||||
text-transform: uppercase;
|
||||
color: var(--text-faint);
|
||||
font-weight: 500;
|
||||
padding: 0.55rem 0.9rem;
|
||||
border-bottom: 1px solid var(--border);
|
||||
background: var(--surface-alt);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
tbody td {
|
||||
padding: 0.55rem 0.9rem;
|
||||
border-bottom: 1px solid var(--border);
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
tbody tr:last-child td { border-bottom: none; }
|
||||
|
||||
tbody tr:hover { background: var(--surface-alt); }
|
||||
|
||||
.path {
|
||||
font-family: "IBM Plex Mono", ui-monospace, monospace;
|
||||
font-size: 0.83rem;
|
||||
color: var(--text);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.title-cell { color: var(--text-muted); }
|
||||
.title-cell .sub { color: var(--text-faint); font-size: 0.78rem; }
|
||||
|
||||
.pill {
|
||||
display: inline-block;
|
||||
font-family: "IBM Plex Mono", ui-monospace, monospace;
|
||||
font-size: 0.72rem;
|
||||
padding: 0.15rem 0.5rem;
|
||||
border-radius: 99px;
|
||||
white-space: nowrap;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.pill.ok { background: var(--ok-soft); color: var(--ok); border-color: color-mix(in srgb, var(--ok) 35%, transparent); }
|
||||
.pill.warn { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 35%, transparent); }
|
||||
.pill.off { background: var(--off-soft); color: var(--off); border-color: color-mix(in srgb, var(--off) 35%, transparent); }
|
||||
|
||||
.src { color: var(--text-faint); font-size: 0.82rem; white-space: nowrap; }
|
||||
|
||||
details.api {
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 8px;
|
||||
background: var(--surface);
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
details.api > summary {
|
||||
cursor: pointer;
|
||||
padding: 0.75rem 1.1rem;
|
||||
font-family: "Barlow Condensed", ui-sans-serif, sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 1.1rem;
|
||||
list-style: none;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 1rem;
|
||||
}
|
||||
details.api > summary::-webkit-details-marker { display: none; }
|
||||
details.api > summary .cat-count { font-family: "IBM Plex Mono", ui-monospace, monospace; font-weight: 400; }
|
||||
details.api > summary::after {
|
||||
content: "▸";
|
||||
color: var(--text-faint);
|
||||
transition: transform 0.15s ease;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
details.api[open] > summary::after { transform: rotate(90deg); }
|
||||
.api-grid {
|
||||
padding: 0.3rem 1.1rem 1rem;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
|
||||
gap: 0.2rem 1.2rem;
|
||||
}
|
||||
.api-grid div {
|
||||
font-family: "IBM Plex Mono", ui-monospace, monospace;
|
||||
font-size: 0.78rem;
|
||||
color: var(--text-muted);
|
||||
padding: 0.2rem 0;
|
||||
border-bottom: 1px dashed var(--border);
|
||||
}
|
||||
|
||||
footer.doc-foot {
|
||||
margin-top: 3rem;
|
||||
padding-top: 1.25rem;
|
||||
border-top: 1px solid var(--border);
|
||||
color: var(--text-faint);
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
details.api > summary::after { transition: none; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="wrap">
|
||||
|
||||
<header class="doc-head">
|
||||
<span class="eyebrow">einfach produktiv. — Frontend</span>
|
||||
<h1>Seiten-Inventar</h1>
|
||||
<p class="dek">Alle Routen der App, kategorisiert nach Sichtbarkeit und Quelle. Stand: 29.08.2026 — nach Einführung von <code style="font-family:'IBM Plex Mono',monospace">app/sitemap.ts</code>.</p>
|
||||
</header>
|
||||
|
||||
<div class="stats">
|
||||
<div class="stat"><div class="n">49</div><div class="l">Frontend-Seiten gesamt</div></div>
|
||||
<div class="stat"><div class="n">28</div><div class="l">in sitemap.xml, indexierbar</div></div>
|
||||
<div class="stat"><div class="n">15</div><div class="l">noindex / intern</div></div>
|
||||
<div class="stat"><div class="n">34</div><div class="l">API-Routen (kein UI)</div></div>
|
||||
</div>
|
||||
|
||||
<div class="note">
|
||||
<strong>Automatisierung:</strong> Statische Routen sind fest in <code style="font-family:inherit">app/sitemap.ts</code> hinterlegt. Die drei Payload-Collections darunter — Pages, Posts — werden bei jedem Sitemap-Aufruf live abgefragt (stündliches Revalidate), neue CMS-Seiten oder Blog-Artikel erscheinen also ohne Code-Änderung. <code style="font-family:inherit">robots.txt</code> verweist auf die Sitemap und sperrt Konto-/Checkout-Bereiche explizit aus.
|
||||
</div>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>Startseite & Marketing</h2>
|
||||
<span class="cat-count">1 Seite</span>
|
||||
<span class="cat-desc">Öffentlich, indexierbar, statischer Code.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Beschreibung</th><th>Status</th><th>Quelle</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/</td><td class="title-cell">Startseite</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>Content & Werkzeuge</h2>
|
||||
<span class="cat-count">7 Seiten</span>
|
||||
<span class="cat-desc">Blog-Übersicht, Shop, Newsletter-Anmeldung, eigenständige Tool-Seiten.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Beschreibung</th><th>Status</th><th>Quelle</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/blog</td><td class="title-cell">Blog-Übersicht</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/shop</td><td class="title-cell">Produktkatalog</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/newsletter</td><td class="title-cell">Impulse & Tipps — Anmeldung</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/die-sieben</td><td class="title-cell">Die Sieben — Monatsritual</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/einfach-anfangen</td><td class="title-cell">Einfach anfangen</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/7-tage-klarheits-check</td><td class="title-cell">7-Tage-Klarheits-Check</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/sticker</td><td class="title-cell">Sticker-Landingpage (QR-Ziel)</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>Produktseiten</h2>
|
||||
<span class="cat-count">3 Seiten</span>
|
||||
<span class="cat-desc">Bespoke Produktdetailseiten — kein generisches PDP-Template.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Beschreibung</th><th>Status</th><th>Quelle</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/der-eine</td><td class="title-cell">Produktseite „Der Eine.“</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/tasse-die-pause</td><td class="title-cell">Produktseite „Tasse Die Pause“</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/todo-cards</td><td class="title-cell">Produktseite ToDo-Karten</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>CMS-Seiten (Payload Pages)</h2>
|
||||
<span class="cat-count">3 Seiten</span>
|
||||
<span class="cat-desc">Über den Page-Builder erstellt, laufen über den generischen <span style="font-family:'IBM Plex Mono',monospace">app/[slug]</span>-Catch-all. Wächst automatisch mit jeder neuen Payload-Seite.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Titel</th><th>Zuletzt geändert</th><th>Status</th><th>Quelle</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/ueber-mich</td><td class="title-cell">Über mich</td><td class="src">27.08.2026</td><td><span class="pill ok">indexiert</span></td><td class="src">Payload: Pages</td></tr>
|
||||
<tr><td class="path">/3x3-system</td><td class="title-cell">Das 3×3-System</td><td class="src">27.08.2026</td><td><span class="pill ok">indexiert</span></td><td class="src">Payload: Pages</td></tr>
|
||||
<tr><td class="path">/lebensuhr</td><td class="title-cell">Lebensuhr</td><td class="src">27.08.2026</td><td><span class="pill ok">indexiert</span></td><td class="src">Payload: Pages</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>Blog-Artikel (Payload Posts)</h2>
|
||||
<span class="cat-count">12 Artikel</span>
|
||||
<span class="cat-desc">Nur <code style="font-family:inherit">status: published</code>. Wächst automatisch mit jedem neuen Artikel.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Titel</th><th>Veröffentlicht</th><th>Status</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/blog/produktivitat-alltag-leben</td><td class="title-cell">Warum zu viel Optimierung im Alltag oft das Gegenteil bewirkt</td><td class="src">26.08.2026</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/produktivitaets-system-familie-alltag</td><td class="title-cell">Was passiert, wenn weniger Entscheidungen im Alltag plötzlich zu gut funktionieren</td><td class="src">12.08.2026</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/warum-ich-die-sieben-gestartet-habe</td><td class="title-cell">Deshalb habe ich Die Sieben gestartet</td><td class="src">29.07.2026</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/entscheidungsstress-alltag</td><td class="title-cell">Warum gute Entscheidungen im Alltag trotzdem oft verloren gehen</td><td class="src">15.07.2026</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/warum-todo-listen-oft-nicht-funktionieren</td><td class="title-cell">Warum ToDo-Listen oft nicht funktionieren</td><td class="src">01.07.2026</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/3x3-system</td><td class="title-cell">Das 3×3-System: Warum du nicht zu wenig schaffst, sondern zu viel willst</td><td class="src">17.06.2026</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/produktivitaet-mit-kindern-was-sich-veraendert</td><td class="title-cell">Produktivität mit Kindern</td><td class="src">02.06.2026</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/warum-ich-abends-immer-die-spuelmaschine-anschalte</td><td class="title-cell">Warum ich abends immer die Spülmaschine anschalte</td><td class="src">01.10.2025</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/die-3-apps</td><td class="title-cell">Die 3 Apps</td><td class="src">17.09.2025</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/der-feierabend-knopf</td><td class="title-cell">Der Feierabend-Knopf</td><td class="src">10.09.2025</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/3minuten</td><td class="title-cell">Die 3-Minuten-Morgenroutine, die mir den Tag rettet</td><td class="src">20.08.2025</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
<tr><td class="path">/blog/promodoro-technik</td><td class="title-cell">Effektives Zeitmanagement mit einer Prise Tomate</td><td class="src">13.08.2025</td><td><span class="pill ok">indexiert</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>Rechtliches</h2>
|
||||
<span class="cat-count">5 Seiten</span>
|
||||
<span class="cat-desc">Pflichtseiten, statisch, indexierbar.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Beschreibung</th><th>Status</th><th>Quelle</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/agb</td><td class="title-cell">AGB</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/datenschutz</td><td class="title-cell">Datenschutz</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/impressum</td><td class="title-cell">Impressum</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/versand</td><td class="title-cell">Versand & Lieferung</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/widerruf</td><td class="title-cell">Widerrufsrecht</td><td><span class="pill ok">indexiert</span></td><td class="src">statisch</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>Konto-Bereich</h2>
|
||||
<span class="cat-count">8 Seiten</span>
|
||||
<span class="cat-desc">Personalisiert, hinter Login oder rein transaktional — bewusst <code style="font-family:inherit">noindex</code>.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Beschreibung</th><th>Status</th><th>Quelle</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/konto/login</td><td class="title-cell">Login</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/konto/registrieren</td><td class="title-cell">Registrierung</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/konto/passwort-vergessen</td><td class="title-cell">Passwort vergessen</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/konto/passwort-zuruecksetzen</td><td class="title-cell">Passwort zurücksetzen</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/konto/profil</td><td class="title-cell">Profil</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/konto/bestellungen</td><td class="title-cell">Bestellübersicht</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/konto/bestellungen/[orderNumber]</td><td class="title-cell">Bestelldetail<div class="sub">dynamisch je Bestellnummer</div></td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/konto/merkliste</td><td class="title-cell">Merkliste / Wishlist</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>Transaktions-Flow</h2>
|
||||
<span class="cat-count">5 Seiten</span>
|
||||
<span class="cat-desc">Warenkorb, Checkout und die beiden Bestätigungsseiten — spiegeln jeweils einen konkreten Vorgang, kein indexierbarer Inhalt.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Beschreibung</th><th>Status</th><th>Quelle</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/cart</td><td class="title-cell">Warenkorb</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/checkout</td><td class="title-cell">Checkout</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/checkout/verarbeitung</td><td class="title-cell">Zahlung wird verarbeitet</td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/bestellbestaetigung</td><td class="title-cell">Bestellbestätigung<div class="sub">explizit auf Wunsch geprüft — bleibt noindex, siehe Hinweis oben</div></td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/newsletter-confirmed</td><td class="title-cell">Newsletter-Anmeldung bestätigt<div class="sub">Double-Opt-in-Landing, dasselbe Prinzip</div></td><td><span class="pill warn">noindex</span></td><td class="src">statisch</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<div class="cat-head">
|
||||
<h2>Redirect-Ziele & interne Tools</h2>
|
||||
<span class="cat-count">4 Seiten</span>
|
||||
<span class="cat-desc">Kein eigener Inhalt (reine Weiterleitung) bzw. nicht kundenseitig.</span>
|
||||
</div>
|
||||
<div class="table-scroll">
|
||||
<table>
|
||||
<thead><tr><th>Pfad</th><th>Beschreibung</th><th>Status</th><th>Quelle</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="path">/sticker/[code]</td><td class="title-cell">QR-Code-Weiterleitung<div class="sub">leitet aktuell auf /sticker um</div></td><td><span class="pill off">intern</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/r/[code]</td><td class="title-cell">Kurzlink-Weiterleitung (Redirects-Collection)</td><td><span class="pill off">intern</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/company-settings-preview</td><td class="title-cell">Vorschau der Firmeneinstellungen</td><td><span class="pill off">intern</span></td><td class="src">statisch</td></tr>
|
||||
<tr><td class="path">/email-preview/[type]</td><td class="title-cell">E-Mail-Template-Vorschau</td><td><span class="pill off">intern</span></td><td class="src">statisch</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cat">
|
||||
<details class="api">
|
||||
<summary>
|
||||
<span>API-Endpunkte <span class="cat-count">34 Routen · kein UI, nicht in Sitemap/Robots-Sinn relevant</span></span>
|
||||
</summary>
|
||||
<div class="api-grid">
|
||||
<div>/api/account/cart</div>
|
||||
<div>/api/account/check-email</div>
|
||||
<div>/api/account/delete</div>
|
||||
<div>/api/account/export</div>
|
||||
<div>/api/account/forgot-password</div>
|
||||
<div>/api/account/login</div>
|
||||
<div>/api/account/logout</div>
|
||||
<div>/api/account/me</div>
|
||||
<div>/api/account/orders</div>
|
||||
<div>/api/account/orders/[orderNumber]</div>
|
||||
<div>/api/account/orders/[orderNumber]/correction-invoice</div>
|
||||
<div>/api/account/orders/[orderNumber]/invoice</div>
|
||||
<div>/api/account/orders/[orderNumber]/switch-to-stripe</div>
|
||||
<div>/api/account/password</div>
|
||||
<div>/api/account/profile</div>
|
||||
<div>/api/account/register</div>
|
||||
<div>/api/account/resend-verification</div>
|
||||
<div>/api/account/reset-password</div>
|
||||
<div>/api/account/verify-email</div>
|
||||
<div>/api/account/wishlist</div>
|
||||
<div>/api/checkout</div>
|
||||
<div>/api/checkout/autocomplete-address</div>
|
||||
<div>/api/checkout/status</div>
|
||||
<div>/api/checkout/validate-dhl-postnumber</div>
|
||||
<div>/api/checkout/validate-vat</div>
|
||||
<div>/api/discount/redeem</div>
|
||||
<div>/api/discount/validate</div>
|
||||
<div>/api/health</div>
|
||||
<div>/api/muster-widerrufsformular</div>
|
||||
<div>/api/newsletter/subscribe</div>
|
||||
<div>/api/preview</div>
|
||||
<div>/api/products</div>
|
||||
<div>/api/search</div>
|
||||
<div>/api/stock-notifications</div>
|
||||
<div>/api/webhooks/stripe</div>
|
||||
<div>/api/webhooks/stripe/test-confirm</div>
|
||||
</div>
|
||||
</details>
|
||||
</section>
|
||||
|
||||
<footer class="doc-foot">
|
||||
Quelle: <code style="font-family:inherit">next build</code>-Routenbaum + <code style="font-family:inherit">app/sitemap.ts</code> + Live-Abfrage von payload.mk360.de (Pages/Posts, Tenant „einfach-produktiv“), 29.08.2026.
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user