From eb0684b99ca61f1439911a3203f5724477c6578d Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sun, 12 Jul 2026 22:10:52 +0200 Subject: [PATCH] Add birthday feature (web) - views render display_title (age) and a cake icon for is_birthday events (month/week/agenda + quarter tooltip) via shared eventTitle/birthdayIconSvg - create split-button caret opens a menu: new event / new birthday - new birthday modal: name + date + "year unknown" + target birthday calendar, saved as an all-day FREQ=YEARLY local event with birth_year - local-calendar modal gains a "birthday calendar" toggle + "notify N days before" - i18n de/en strings Co-Authored-By: Claude Opus 4.8 --- frontend/css/app.css | 9 +++ frontend/index.html | 61 ++++++++++++++++++-- frontend/js/calendar.js | 109 ++++++++++++++++++++++++++++++++++- frontend/js/i18n.js | 36 ++++++++++++ frontend/js/utils.js | 20 +++++++ frontend/js/views/agenda.js | 4 +- frontend/js/views/month.js | 15 ++--- frontend/js/views/quarter.js | 4 +- frontend/js/views/week.js | 14 +++-- 9 files changed, 250 insertions(+), 22 deletions(-) diff --git a/frontend/css/app.css b/frontend/css/app.css index eca0afe..d2846f8 100644 --- a/frontend/css/app.css +++ b/frontend/css/app.css @@ -165,6 +165,15 @@ a { color: var(--primary); text-decoration: none; } } .btn-fab:active { transform: translateY(0) scale(.985); } +/* Split create button: main "Erstellen" action + a caret that opens a small + menu (new event / new birthday). */ +.create-split { display: flex; align-items: stretch; gap: 4px; margin: 16px 12px 8px; } +.create-split .btn-fab { margin: 0; } +.create-split .create-main { flex: 1; justify-content: center; } +.create-split .create-caret { flex: 0 0 auto; padding: 12px 12px; } +.create-split .create-caret svg { width: 18px; height: 18px; } +.create-menu { left: 0; right: auto; min-width: 200px; } + /* Circular icon buttons (topbar nav, modal close, etc.) */ .icon-btn { display: inline-flex; align-items: center; justify-content: center; diff --git a/frontend/index.html b/frontend/index.html index 1e236ae..8628794 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -158,10 +158,19 @@