/** * Aufbau der öffentlichen Funktionsseiten (`/funktionen/`). Texte liegen in * `messages//marketing.json` unter `pages.`, Bildschirmfotos in `public/marketing/` * (erzeugt von `scripts/marketing-shots.ts`). */ export const FEATURE_SLUGS = ["planung", "baustelle", "zeiterfassung", "berichte", "abrechnung", "lotse"] as const; export type FeatureSlug = (typeof FEATURE_SLUGS)[number]; export type Shot = { src: string; kind: "desktop" | "mobile" }; export type FeaturePage = { /** Reihenfolge der Bildschirmfotos; Beschriftungen kommen aus `pages..shot` */ shots: Shot[]; points: number; cards: number; }; const desktop = (src: string): Shot => ({ src, kind: "desktop" }); const mobile = (src: string): Shot => ({ src, kind: "mobile" }); export const FEATURE_PAGES: Record = { planung: { shots: [desktop("plantafel"), desktop("live-lage")], points: 5, cards: 3 }, baustelle: { shots: [mobile("mobil-heute"), mobile("mobil-auftrag")], points: 5, cards: 3 }, zeiterfassung: { shots: [mobile("mobil-zeiten"), desktop("zeitfreigabe")], points: 5, cards: 3 }, berichte: { shots: [desktop("berichte"), desktop("auftrag")], points: 5, cards: 3 }, abrechnung: { shots: [desktop("abrechnung")], points: 5, cards: 3 }, lotse: { shots: [mobile("mobil-lotse")], points: 5, cards: 3 }, }; export const isFeatureSlug = (v: string): v is FeatureSlug => (FEATURE_SLUGS as readonly string[]).includes(v);