export type Role = "admin" | "staff"; export interface Profile { id: string; email: string; full_name: string; role: Role; password_auth_enabled: boolean; created_at: string; } export interface Section { key: string; label: string; time_range: string; sort: number; } export interface Dish { id: string; name: string; price: number; allergens: string[]; additives: string[]; } export interface MenuEntry { id: string; menu_date: string; section_key: string; position: number; dish: Dish; } export interface CodeItem { code: string; name: string; sort: number; } // Farb-Defaults (r-hofmann.de: Blau #003388, Navy #0d315c, Orange #ff6900) export const DEFAULT_COLORS: Record = { primary: "#003388", primaryDark: "#0d315c", accent: "#ff6900", headerText: "#ffffff", rowBg: "#e3e4f1", rowBgAlt: "#f4f4fa", addBtn: "#6da54c", deleteBtn: "#e2371d", }; export const COLOR_VARS: Record = { primary: "--c-primary", primaryDark: "--c-primary-dark", accent: "--c-accent", headerText: "--c-header-text", rowBg: "--c-row-bg", rowBgAlt: "--c-row-bg-alt", addBtn: "--c-add", deleteBtn: "--c-del", }; export const COLOR_LABELS: Record = { primary: "Primärfarbe (Tabellenkopf)", primaryDark: "Primärfarbe dunkel (Kopfleiste intern)", accent: "Akzentfarbe", headerText: "Schriftfarbe im Tabellenkopf", rowBg: "Zellen-Hintergrund", rowBgAlt: "Zellen-Hintergrund (alternierend)", addBtn: "Button „Hinzufügen“", deleteBtn: "Button „Löschen“", }; export function logoUrl(path: string | null | undefined): string | null { if (!path) return null; return `${process.env.NEXT_PUBLIC_SUPABASE_URL}/storage/v1/object/public/branding/${path}`; } export function faviconUrl(path: string | null | undefined): string | null { if (!path) return null; return `${process.env.NEXT_PUBLIC_SUPABASE_URL}/storage/v1/object/public/branding/${path}`; } export const SITE_TITLE = process.env.SITE_TITLE?.trim() || "Canteen Menu";