diff --git a/CHANGELOG.md b/CHANGELOG.md
index a658e51..02a6821 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,17 @@ Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert.
Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
Versionierung nach [Semantic Versioning](https://semver.org/lang/de/).
+## [1.12.1] – 2026-07-20
+
+### Geändert
+- Bedienung geschlossener Tage im Wochenplan überarbeitet: Statt eines
+ Text-Links am Datum markiert jetzt ein Schloss-Symbol (🔓 zum
+ Schließen, 🔒 zeigt „geschlossen" an und öffnet per Klick wieder) den
+ Tag. Ein geschlossener Tag zeigt sowohl im Wochenplan als auch auf
+ der öffentlichen Speisekarte (Desktop-Tabelle) einen einzigen, über
+ alle Essenszeiten-Zeilen durchgehenden „Geschlossen"-Hinweis statt
+ einer Wiederholung in jeder einzelnen Zeile.
+
## [1.12.0] – 2026-07-20
### Hinzugefügt
diff --git a/app/globals.css b/app/globals.css
index 1abad04..92137f4 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -102,6 +102,10 @@ body {
font-size: 0.85rem;
}
.menu-table tr:nth-child(even) td.cell { background: var(--c-row-bg-alt); }
+.menu-table td.cell.closed-cell {
+ vertical-align: middle;
+ background: #fee2e2;
+}
.menu-table td.cell .dish { margin-bottom: 0.35rem; }
.menu-table td.cell .dish sup {
font-size: 0.6rem;
diff --git a/app/page.tsx b/app/page.tsx
index 8c03d5d..2e2346b 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -160,58 +160,62 @@ export default async function Home({
diff --git a/components/WeekEditor.tsx b/components/WeekEditor.tsx
index bbfa47c..f64eca1 100644
--- a/components/WeekEditor.tsx
+++ b/components/WeekEditor.tsx
@@ -208,38 +208,49 @@ export default function WeekEditor({
? dishes.filter((d) => localized(d, locale).toLowerCase().includes(query))
: dishes;
- // Kleine Anzeige/Umschaltung unter dem Tagesdatum: "Geschlossen" +
- // Wieder-öffnen-Button, sonst ein dezenter "Tag schließen"-Link.
- function renderClosureBadge(iso: string) {
- const closed = closedDayFor(iso);
- if (closed) {
- return (
-
-
- {dict.weekEditor.closedLabel}
-
-
-
- );
- }
+ // Kleines Schloss-Symbol neben dem Tagesdatum: 🔓 zum Schließen
+ // anklicken, 🔒 zeigt einen geschlossenen Tag und öffnet ihn per Klick
+ // wieder – der Zustand des Symbols selbst ist die Beschriftung.
+ function renderClosureToggle(iso: string) {
+ const closed = Boolean(closedDayFor(iso));
return (
);
}
+ // Banner, das bei einem geschlossenen Tag alle Essenszeiten-Zellen
+ // dieses Tages ersetzt (Desktop: eine über rowSpan verbundene Zelle,
+ // Mobil: anstelle der Essenszeiten-Karten) – "Bearbeiten" öffnet das
+ // Formular erneut, um nur den Grund anzupassen, ohne den Tag über das
+ // Symbol im Header erst wieder öffnen zu müssen.
+ function renderClosedBanner(iso: string, closed: ClosedDay) {
+ return (
+
+ );
+ }
+
// Formular zum Schließen/Bearbeiten eines Tages – ein gemeinsames
// Formular für Desktop-Tabelle und mobile Tagesansicht, da immer nur
// ein Tag gleichzeitig bearbeitet werden kann.
@@ -330,7 +341,6 @@ export default function WeekEditor({
// unabhängig davon, welche Ansicht gerade rendert.
function renderCell(iso: string, sectionKey: string) {
const isAdding = adding?.iso === iso && adding?.section === sectionKey;
- const closed = Boolean(closedDayFor(iso));
return (
<>
{entriesFor(entries, iso, sectionKey).map((e) => {
@@ -353,7 +363,7 @@ export default function WeekEditor({