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 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-12 22:10:52 +02:00
parent ca09538971
commit eb0684b99c
9 changed files with 250 additions and 22 deletions

View File

@@ -272,6 +272,24 @@ const translations = {
account_added: 'Konto "{name}" hinzugefügt',
error_enter_name: 'Bitte Name eingeben',
calendar_created: 'Kalender "{name}" erstellt',
// Birthdays
create_event_option: 'Neuer Termin',
birthday_new: 'Neuer Geburtstag',
birthday_modal_title: 'Neuen Geburtstag hinzufügen',
birthday_calendar: 'Geburtstagskalender',
birthday_calendar_hint: 'Ganztägige, jährliche Termine mit Alter und Geburtstags-Icon.',
birthday_notify: 'Erinnerung',
birthday_notify_off: 'Aus',
birthday_notify_same_day: 'Am Tag',
birthday_notify_one_day: '1 Tag vorher',
birthday_notify_days: '{n} Tage vorher',
birthday_person: 'Name',
birthday_person_ph: 'Name der Person',
birthday_date: 'Geburtstag',
birthday_year_unknown: 'Jahr unbekannt',
birthday_target: 'Geburtstagskalender',
birthday_no_calendars: 'Kein Geburtstagskalender vorhanden. Erstelle zuerst einen Kalender und aktiviere „Geburtstagskalender".',
birthday_created: 'Geburtstag „{name}" hinzugefügt',
error_name_url: 'Bitte Name und URL eingeben',
ical_subscribed: '"{name}" abonniert',
google_synced: 'Kalender synchronisiert',
@@ -589,6 +607,24 @@ const translations = {
account_added: 'Account "{name}" added',
error_enter_name: 'Please enter a name',
calendar_created: 'Calendar "{name}" created',
// Birthdays
create_event_option: 'New event',
birthday_new: 'New birthday',
birthday_modal_title: 'Add new birthday',
birthday_calendar: 'Birthday calendar',
birthday_calendar_hint: 'All-day, yearly events with age and a birthday icon.',
birthday_notify: 'Reminder',
birthday_notify_off: 'Off',
birthday_notify_same_day: 'On the day',
birthday_notify_one_day: '1 day before',
birthday_notify_days: '{n} days before',
birthday_person: 'Name',
birthday_person_ph: "Person's name",
birthday_date: 'Birthday',
birthday_year_unknown: 'Year unknown',
birthday_target: 'Birthday calendar',
birthday_no_calendars: 'No birthday calendar yet. Create a calendar and enable “Birthday calendar” first.',
birthday_created: 'Birthday “{name}” added',
error_name_url: 'Please enter a name and URL',
ical_subscribed: '"{name}" subscribed',
google_synced: 'Calendar synced',