Landingpages als eigene Gattung, erster Typ: Mehrere Links

Die sechs noch offenen Typen haben kein fremdes Ziel, auf das man
weiterleiten koennte — sie brauchen eine Seite. Dafuer bekommt der
Typ-Vertrag `hasLandingPage`: /r/[slug] schickt solche Codes auf /s/[slug],
statt `redirectTarget` zu befragen.

Die oeffentlichen Seiten duerfen die Navigation der Anwendung nicht zeigen —
wer einen Code scannt, hat mit „Verwaltung" nichts zu tun. Deshalb liegt das
App-Chrome jetzt in der Routengruppe (app); das Wurzel-Layout traegt nur noch
html und body. Die URLs aendern sich dadurch nicht.
This commit is contained in:
Florian Wilde
2026-08-14 22:27:49 +02:00
parent b3d386b0d2
commit e627f7c372
27 changed files with 678 additions and 124 deletions
+19
View File
@@ -0,0 +1,19 @@
import type { ComponentType } from "react";
import { LinksLanding } from "@/components/landing/links-landing";
import type { LandingProps } from "@/components/landing/types";
import type { QrTypeId } from "@/lib/qr/type-module";
/**
* Zuordnung QR-Typ → öffentliche Landingpage.
*
* Dritter Teil des Musters aus Typ-Registry (`src/lib/qr/registry.ts`) und
* Formular-Registry (`src/components/qr-forms/index.ts`): Ein Typ, der
* `hasLandingPage` meldet, braucht hier genau einen Eintrag.
*/
export const qrLandings: Partial<Record<QrTypeId, ComponentType<LandingProps>>> =
{
links: LinksLanding,
};
export type { LandingProps };