feat: add period tracker with calendar, predictions, fertility tracking, and sharing
Full period tracking system for the fitness measure page: - Period logging with start/end dates, edit/delete support - EMA-based cycle and period length predictions (α=0.3, 12 future cycles) - Calendar view with connected range strips, overflow days, today marker - Fertility window, peak fertility, ovulation, and luteal phase visualization - Period sharing between users with profile picture avatars - Cycle/period stats with 95% CI below calendar - Redesigned profile card as inline header metadata with Venus/Mars icons - Collapsible weight and period history sections - Full DE/EN i18n support
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -298,6 +298,38 @@ const translations: Translations = {
|
||||
log_food: { en: 'Log', de: 'Eintragen' },
|
||||
delete_entry_confirm: { en: 'Delete this food entry?', de: 'Diesen Eintrag löschen?' },
|
||||
|
||||
// Period tracker
|
||||
period_tracker: { en: 'Period Tracker', de: 'Periodentracker' },
|
||||
current_period: { en: 'Current Period', de: 'Aktuelle Periode' },
|
||||
no_period_data: { en: 'No period data yet. Log your first period to start tracking.', de: 'Noch keine Periodendaten. Erfasse deine erste Periode.' },
|
||||
start_period: { en: 'Start Period', de: 'Periode starten' },
|
||||
end_period: { en: 'End Period', de: 'Periode beenden' },
|
||||
period_day: { en: 'Day', de: 'Tag' },
|
||||
predicted_end: { en: 'Predicted end', de: 'Voraussichtliches Ende' },
|
||||
next_period: { en: 'Next period', de: 'Nächste Periode' },
|
||||
cycle_length: { en: 'Cycle length', de: 'Zykluslänge' },
|
||||
period_length: { en: 'Period length', de: 'Periodenlänge' },
|
||||
avg_cycle: { en: 'Avg. cycle', de: 'Ø Zyklus' },
|
||||
avg_period: { en: 'Avg. period', de: 'Ø Periode' },
|
||||
days: { en: 'days', de: 'Tage' },
|
||||
delete_period_confirm: { en: 'Delete this period entry?', de: 'Diesen Periodeneintrag löschen?' },
|
||||
add_past_period: { en: 'Add Past Period', de: 'Vergangene Periode hinzufügen' },
|
||||
period_start: { en: 'Start', de: 'Beginn' },
|
||||
period_end: { en: 'End', de: 'Ende' },
|
||||
ongoing: { en: 'ongoing', de: 'laufend' },
|
||||
share: { en: 'Share', de: 'Teilen' },
|
||||
shared_with: { en: 'Shared with', de: 'Geteilt mit' },
|
||||
add_user: { en: 'Add user…', de: 'Nutzer hinzufügen…' },
|
||||
no_shared: { en: 'Not shared with anyone.', de: 'Mit niemandem geteilt.' },
|
||||
shared_by: { en: 'Shared by', de: 'Geteilt von' },
|
||||
fertile_window: { en: 'Fertile window', de: 'Fruchtbares Fenster' },
|
||||
peak_fertility: { en: 'Peak fertility', de: 'Höchste Fruchtbarkeit' },
|
||||
ovulation: { en: 'Ovulation', de: 'Eisprung' },
|
||||
fertile: { en: 'Fertile', de: 'Fruchtbar' },
|
||||
luteal_phase: { en: 'Luteal', de: 'Luteal' },
|
||||
predicted_ovulation: { en: 'Predicted ovulation', de: 'Voraussichtlicher Eisprung' },
|
||||
to: { en: 'to', de: 'bis' },
|
||||
|
||||
// Custom meals
|
||||
custom_meals: { en: 'Custom Meals', de: 'Eigene Mahlzeiten' },
|
||||
custom_meal: { en: 'Custom Meal', de: 'Eigene Mahlzeit' },
|
||||
|
||||
Reference in New Issue
Block a user