diff --git a/apps/mana/apps/web/src/lib/i18n/locales/cycles/de.json b/apps/mana/apps/web/src/lib/i18n/locales/cycles/de.json
index 4e74b2915..84e70857d 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/cycles/de.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/cycles/de.json
@@ -67,6 +67,11 @@
"emotional": "Emotional",
"other": "Sonstiges"
},
+ "calendar": {
+ "title": "Kalender",
+ "prev": "Vorheriger Monat",
+ "next": "Nächster Monat"
+ },
"symptomManager": {
"title": "Symptome verwalten",
"open": "Verwalten",
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/cycles/en.json b/apps/mana/apps/web/src/lib/i18n/locales/cycles/en.json
index cb89c5822..7a5bee423 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/cycles/en.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/cycles/en.json
@@ -67,6 +67,11 @@
"emotional": "Emotional",
"other": "Other"
},
+ "calendar": {
+ "title": "Calendar",
+ "prev": "Previous month",
+ "next": "Next month"
+ },
"symptomManager": {
"title": "Manage symptoms",
"open": "Manage",
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/cycles/es.json b/apps/mana/apps/web/src/lib/i18n/locales/cycles/es.json
index cb89c5822..7a5bee423 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/cycles/es.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/cycles/es.json
@@ -67,6 +67,11 @@
"emotional": "Emotional",
"other": "Other"
},
+ "calendar": {
+ "title": "Calendar",
+ "prev": "Previous month",
+ "next": "Next month"
+ },
"symptomManager": {
"title": "Manage symptoms",
"open": "Manage",
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/cycles/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/cycles/fr.json
index cb89c5822..7a5bee423 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/cycles/fr.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/cycles/fr.json
@@ -67,6 +67,11 @@
"emotional": "Emotional",
"other": "Other"
},
+ "calendar": {
+ "title": "Calendar",
+ "prev": "Previous month",
+ "next": "Next month"
+ },
"symptomManager": {
"title": "Manage symptoms",
"open": "Manage",
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/cycles/it.json b/apps/mana/apps/web/src/lib/i18n/locales/cycles/it.json
index cb89c5822..7a5bee423 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/cycles/it.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/cycles/it.json
@@ -67,6 +67,11 @@
"emotional": "Emotional",
"other": "Other"
},
+ "calendar": {
+ "title": "Calendar",
+ "prev": "Previous month",
+ "next": "Next month"
+ },
"symptomManager": {
"title": "Manage symptoms",
"open": "Manage",
diff --git a/apps/mana/apps/web/src/lib/modules/cycles/ListView.svelte b/apps/mana/apps/web/src/lib/modules/cycles/ListView.svelte
index d33eac608..50d7749a4 100644
--- a/apps/mana/apps/web/src/lib/modules/cycles/ListView.svelte
+++ b/apps/mana/apps/web/src/lib/modules/cycles/ListView.svelte
@@ -21,6 +21,7 @@
predictNextPeriodStart,
} from './utils/prediction';
import { FLOW_COLORS, MOOD_COLORS, PHASE_COLORS, type Flow, type Mood } from './types';
+ import CycleCalendar from './components/CycleCalendar.svelte';
import SymptomManager from './components/SymptomManager.svelte';
import type { ViewProps } from '$lib/app-registry';
@@ -52,6 +53,9 @@
// ─ Symptom manager modal state
let symptomManagerOpen = $state(false);
+ // ─ Calendar visibility toggle
+ let calendarOpen = $state(true);
+
// ─ Editing state — defaults to today, can be switched to any past day
let editingDate = $state(todayIso);
let editingLog = $derived(logs.find((l) => l.logDate === editingDate) ?? null);
@@ -177,6 +181,19 @@
+
+ {$_('cycles.calendar.title')}
+
+