Datenbank (prisma/migrations/20260904120000_add_performance_indexes): 7 fehlende Indizes auf Fremdschluessel-/Filter-Spalten ergaenzt (Order.customerId+createdAt, Order.status, Order.createdAt, Order.discountCodeId, OrderItem.orderId, Address.customerId, AuditLog.createdAt) — bislang volle Tabellenscans bei Bestelluebersicht, Admin-Dashboard, Checkout-Gutscheinpruefung und Audit-Log. Bundle-Groesse: Footer (TikTok/YouTube/Instagram-Icons, Copyright-Zeile) aus dem client-seitigen site-chrome.tsx in eine eigene Server Component (site-footer.tsx) ausgelagert — brauchte "use client" nur wegen useI18n(), jetzt getDictionary()-Server-Aufruf wie auf jeder Admin-Seite. Entfernt ungenutztes clientseitiges JS/Hydration aus jedem Seitenaufruf (Footer steht im Root-Layout). UX: app/not-found.tsx und app/error.tsx ergaenzt (Next.js-Konventionen fuer 404 bzw. Laufzeitfehler) — beide fehlten komplett, unbekannte Routen und Rendering-Fehler zeigten bisher Next.js' generische, unbrandete Standardseiten statt einer zur Seite passenden Nutzerfuehrung. Dictionary-Kollision dabei aufgefallen und aufgeloest: eine bereits bestehende, admin-interne errorPage-Uebersetzung (src/app/admin/error.tsx, seit dem urspruenglichen App-Grundgeruest vorhanden) blieb unangetastet, die neue site-weite Fehlerseite nutzt einen eigenen Schluessel (siteErrorPage). Verifiziert: tsc --noEmit clean, 118/118 Tests gruen, pnpm build clean. Co-Authored-By: Claude Sonnet 5 <[email protected]>
25 lines
786 B
TypeScript
25 lines
786 B
TypeScript
import { getContentValues } from "@/lib/content";
|
|
|
|
const SOCIAL_KEYS = ["social.tiktok", "social.youtube", "social.instagram"] as const;
|
|
|
|
export interface SocialLinks {
|
|
tiktok: string;
|
|
youtube: string;
|
|
instagram: string;
|
|
}
|
|
|
|
/**
|
|
* Admin-gepflegte Social-Media-Links (siehe admin/inhalte, Gruppe "Social
|
|
* Media") — nicht lokalisiert, wie Firmendaten (company-info.ts). Ein leerer
|
|
* String bedeutet "kein Profil hinterlegt"; der Footer rendert dann kein
|
|
* Icon fuer diese Plattform (siehe components/site-footer.tsx Footer()).
|
|
*/
|
|
export async function getSocialLinks(): Promise<SocialLinks> {
|
|
const v = await getContentValues([...SOCIAL_KEYS], "de");
|
|
return {
|
|
tiktok: v["social.tiktok"],
|
|
youtube: v["social.youtube"],
|
|
instagram: v["social.instagram"],
|
|
};
|
|
}
|