diff --git a/messages/de.json b/messages/de.json index 5076b1e23..3d4dabe73 100644 --- a/messages/de.json +++ b/messages/de.json @@ -642,45 +642,6 @@ } }, "scheduling": { - "section": "Zeitplan", - "loading": "Lade Zeitplan-Daten", - "loadFailed": "Zeitplan-Daten konnten nicht geladen werden.", - "editCta": "Bearbeiten", - "reminders": { - "on": "Erinnerungen an", - "off": "Erinnerungen aus" - }, - "cadenceViz": { - "title": "Letzte 30 Tage", - "ariaTimeline": "Dosis-Zeitstrahl der letzten 30 Tage", - "emptyState": "Im Zeitfenster sind keine Dosen geplant.", - "nextDoseLabel": "Nächste Dosis:", - "noNextDose": "Keine kommende Dosis geplant.", - "status": { - "taken": "Genommen", - "skipped": "Ausgelassen", - "missed": "Verpasst", - "upcoming": "Geplant" - } - }, - "compliance": { - "title": "Adhärenz", - "noData": "Keine Daten", - "adherenceRate": "Adhärenz", - "currentStreak": "Aktuelle Serie", - "longestStreak": "Längste Serie", - "missedLast30": "Verpasst (30 T.)", - "unit": { - "days": "T.", - "doses": "Dosen" - }, - "chips": { - "adherenceTooltip": "Anteil genommener Dosen im 30-Tage-Fenster (ausgelassene Dosen werden ausgenommen).", - "streakTooltip": "Aufeinanderfolgende Tage bis heute, an denen alle geplanten Dosen genommen oder bewusst ausgelassen wurden.", - "longestTooltip": "Längste durchgehende Serie im 30-Tage-Fenster.", - "missedTooltip": "Anzahl verpasster Dosen in den letzten 30 Tagen." - } - }, "naturalLanguage": { "title": "Medikament beschreiben", "description": "Beschreibe das Medikament in eigenen Worten — das Formular wird automatisch vorausgefüllt.", @@ -786,14 +747,6 @@ "noEndDate": "Kein Enddatum", "oneShotCaption": "(einmalige Dosis)", "invalidRange": "Das Enddatum muss am oder nach dem Startdatum liegen." - }, - "oneShot": { - "section": "Einmaldosis", - "collapseWarning": "Einmaldosis aktiv — alle weiteren Pläne wurden auf den ersten zusammengeführt." - }, - "legacyWindow": { - "section": "Erinnerungsfenster (alt)", - "help": "Ältere Pläne nutzen noch ein Zeitfenster-Paar. Neue Pläne nutzen die Uhrzeiten oben — das Fenster bleibt aus Kompatibilitätsgründen erhalten und entfällt in einer späteren Version." } }, "wizard": { @@ -1153,7 +1106,6 @@ "error": "Dosis konnte nicht erfasst werden." }, "cadence": { - "title": "Rhythmus", "oneShotOn": "Einmalige Dosis am {date}.", "oneShotPending": "Einmalige Dosis ausstehend." }, diff --git a/messages/en.json b/messages/en.json index 524e50c1a..34617458f 100644 --- a/messages/en.json +++ b/messages/en.json @@ -642,45 +642,6 @@ } }, "scheduling": { - "section": "Schedule", - "loading": "Loading schedule data", - "loadFailed": "Schedule data failed to load.", - "editCta": "Edit", - "reminders": { - "on": "Reminders on", - "off": "Reminders off" - }, - "cadenceViz": { - "title": "Last 30 days", - "ariaTimeline": "Dose timeline for the last 30 days", - "emptyState": "No doses scheduled in this window.", - "nextDoseLabel": "Next dose:", - "noNextDose": "No upcoming dose scheduled.", - "status": { - "taken": "Taken", - "skipped": "Skipped", - "missed": "Missed", - "upcoming": "Upcoming" - } - }, - "compliance": { - "title": "Adherence", - "noData": "No data", - "adherenceRate": "Adherence", - "currentStreak": "Current streak", - "longestStreak": "Longest streak", - "missedLast30": "Missed (30 d.)", - "unit": { - "days": "d.", - "doses": "doses" - }, - "chips": { - "adherenceTooltip": "Share of doses taken across the last 30 days (skipped doses are excluded from the denominator).", - "streakTooltip": "Consecutive days up to today on which every scheduled dose was taken or deliberately skipped.", - "longestTooltip": "Longest unbroken streak within the 30-day window.", - "missedTooltip": "Count of doses missed in the last 30 days." - } - }, "naturalLanguage": { "title": "Describe your medication", "description": "Write the medication in your own words and we will pre-fill the form for you.", @@ -786,14 +747,6 @@ "noEndDate": "No end date", "oneShotCaption": "(one-time dose)", "invalidRange": "End date must be on or after the start date." - }, - "oneShot": { - "section": "Single dose", - "collapseWarning": "Single dose enabled — every other schedule was merged into the first." - }, - "legacyWindow": { - "section": "Reminder window (legacy)", - "help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release." } }, "wizard": { @@ -1153,7 +1106,6 @@ "error": "Could not log the dose." }, "cadence": { - "title": "Cadence", "oneShotOn": "One-time dose on {date}.", "oneShotPending": "One-time dose pending." }, diff --git a/messages/es.json b/messages/es.json index 6721d9ebc..ef3581641 100644 --- a/messages/es.json +++ b/messages/es.json @@ -642,45 +642,6 @@ } }, "scheduling": { - "section": "Programa", - "loading": "Cargando datos del programa", - "loadFailed": "No se han podido cargar los datos del programa.", - "editCta": "Editar", - "reminders": { - "on": "Recordatorios activos", - "off": "Recordatorios desactivados" - }, - "cadenceViz": { - "title": "Últimos 30 días", - "ariaTimeline": "Línea temporal de dosis de los últimos 30 días", - "emptyState": "No hay dosis programadas en este intervalo.", - "nextDoseLabel": "Próxima dosis:", - "noNextDose": "No hay ninguna dosis próxima programada.", - "status": { - "taken": "Tomada", - "skipped": "Omitida", - "missed": "Olvidada", - "upcoming": "Pendiente" - } - }, - "compliance": { - "title": "Adherencia", - "noData": "Sin datos", - "adherenceRate": "Adherencia", - "currentStreak": "Racha actual", - "longestStreak": "Racha más larga", - "missedLast30": "Olvidadas (30 d.)", - "unit": { - "days": "d.", - "doses": "dosis" - }, - "chips": { - "adherenceTooltip": "Proporción de dosis tomadas en los últimos 30 días (las dosis omitidas se excluyen del denominador).", - "streakTooltip": "Días consecutivos hasta hoy en los que se ha tomado o se ha omitido deliberadamente cada dosis programada.", - "longestTooltip": "Racha continua más larga dentro de la ventana de 30 días.", - "missedTooltip": "Número de dosis olvidadas en los últimos 30 días." - } - }, "naturalLanguage": { "title": "Describe tu medicación", "description": "Describe la medicación con tus propias palabras y completaremos el formulario por ti.", @@ -786,14 +747,6 @@ "noEndDate": "No end date", "oneShotCaption": "(one-time dose)", "invalidRange": "End date must be on or after the start date." - }, - "oneShot": { - "section": "Single dose", - "collapseWarning": "Single dose enabled — every other schedule was merged into the first." - }, - "legacyWindow": { - "section": "Reminder window (legacy)", - "help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release." } }, "wizard": { @@ -1153,7 +1106,6 @@ "error": "Could not log the dose." }, "cadence": { - "title": "Cadence", "oneShotOn": "One-time dose on {date}.", "oneShotPending": "One-time dose pending." }, diff --git a/messages/fr.json b/messages/fr.json index 877109ca5..4773f79c0 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -642,45 +642,6 @@ } }, "scheduling": { - "section": "Calendrier", - "loading": "Chargement des données du calendrier", - "loadFailed": "Échec du chargement des données du calendrier.", - "editCta": "Modifier", - "reminders": { - "on": "Rappels activés", - "off": "Rappels désactivés" - }, - "cadenceViz": { - "title": "30 derniers jours", - "ariaTimeline": "Chronologie des doses des 30 derniers jours", - "emptyState": "Aucune dose prévue sur cette période.", - "nextDoseLabel": "Prochaine dose :", - "noNextDose": "Aucune dose à venir programmée.", - "status": { - "taken": "Prise", - "skipped": "Sautée", - "missed": "Manquée", - "upcoming": "À venir" - } - }, - "compliance": { - "title": "Observance", - "noData": "Aucune donnée", - "adherenceRate": "Observance", - "currentStreak": "Série en cours", - "longestStreak": "Série la plus longue", - "missedLast30": "Manquées (30 j.)", - "unit": { - "days": "j.", - "doses": "doses" - }, - "chips": { - "adherenceTooltip": "Part des doses prises sur les 30 derniers jours (les doses sautées sont exclues du dénominateur).", - "streakTooltip": "Jours consécutifs jusqu'à aujourd'hui où chaque dose prévue a été prise ou volontairement sautée.", - "longestTooltip": "Série continue la plus longue sur la fenêtre de 30 jours.", - "missedTooltip": "Nombre de doses manquées au cours des 30 derniers jours." - } - }, "naturalLanguage": { "title": "Décris ton médicament", "description": "Décris le médicament avec tes propres mots et le formulaire sera pré-rempli pour toi.", @@ -786,14 +747,6 @@ "noEndDate": "No end date", "oneShotCaption": "(one-time dose)", "invalidRange": "End date must be on or after the start date." - }, - "oneShot": { - "section": "Single dose", - "collapseWarning": "Single dose enabled — every other schedule was merged into the first." - }, - "legacyWindow": { - "section": "Reminder window (legacy)", - "help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release." } }, "wizard": { @@ -1153,7 +1106,6 @@ "error": "Could not log the dose." }, "cadence": { - "title": "Cadence", "oneShotOn": "One-time dose on {date}.", "oneShotPending": "One-time dose pending." }, diff --git a/messages/it.json b/messages/it.json index b7956882a..2f4de0f1b 100644 --- a/messages/it.json +++ b/messages/it.json @@ -642,45 +642,6 @@ } }, "scheduling": { - "section": "Programma", - "loading": "Caricamento dei dati del programma", - "loadFailed": "Impossibile caricare i dati del programma.", - "editCta": "Modifica", - "reminders": { - "on": "Promemoria attivi", - "off": "Promemoria disattivati" - }, - "cadenceViz": { - "title": "Ultimi 30 giorni", - "ariaTimeline": "Cronologia delle dosi degli ultimi 30 giorni", - "emptyState": "Nessuna dose programmata in questo intervallo.", - "nextDoseLabel": "Prossima dose:", - "noNextDose": "Nessuna dose programmata in arrivo.", - "status": { - "taken": "Assunta", - "skipped": "Saltata", - "missed": "Mancata", - "upcoming": "In arrivo" - } - }, - "compliance": { - "title": "Aderenza", - "noData": "Nessun dato", - "adherenceRate": "Aderenza", - "currentStreak": "Serie attuale", - "longestStreak": "Serie più lunga", - "missedLast30": "Mancate (30 g.)", - "unit": { - "days": "gg.", - "doses": "dosi" - }, - "chips": { - "adherenceTooltip": "Quota di dosi assunte negli ultimi 30 giorni (le dosi saltate sono escluse dal denominatore).", - "streakTooltip": "Giorni consecutivi fino a oggi in cui ogni dose programmata è stata assunta o deliberatamente saltata.", - "longestTooltip": "Serie continua più lunga nella finestra di 30 giorni.", - "missedTooltip": "Numero di dosi mancate negli ultimi 30 giorni." - } - }, "naturalLanguage": { "title": "Descrivi il farmaco", "description": "Descrivi il farmaco con parole tue e il modulo verrà precompilato per te.", @@ -786,14 +747,6 @@ "noEndDate": "No end date", "oneShotCaption": "(one-time dose)", "invalidRange": "End date must be on or after the start date." - }, - "oneShot": { - "section": "Single dose", - "collapseWarning": "Single dose enabled — every other schedule was merged into the first." - }, - "legacyWindow": { - "section": "Reminder window (legacy)", - "help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release." } }, "wizard": { @@ -1153,7 +1106,6 @@ "error": "Could not log the dose." }, "cadence": { - "title": "Cadence", "oneShotOn": "One-time dose on {date}.", "oneShotPending": "One-time dose pending." }, diff --git a/messages/pl.json b/messages/pl.json index 02d9c4561..b1a0dc14f 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -642,45 +642,6 @@ } }, "scheduling": { - "section": "Harmonogram", - "loading": "Wczytywanie danych harmonogramu", - "loadFailed": "Nie udało się wczytać danych harmonogramu.", - "editCta": "Edytuj", - "reminders": { - "on": "Przypomnienia włączone", - "off": "Przypomnienia wyłączone" - }, - "cadenceViz": { - "title": "Ostatnie 30 dni", - "ariaTimeline": "Oś czasu dawek z ostatnich 30 dni", - "emptyState": "Brak zaplanowanych dawek w tym oknie.", - "nextDoseLabel": "Następna dawka:", - "noNextDose": "Brak zaplanowanej nadchodzącej dawki.", - "status": { - "taken": "Przyjęta", - "skipped": "Pominięta", - "missed": "Niepodjęta", - "upcoming": "Nadchodząca" - } - }, - "compliance": { - "title": "Adherencja", - "noData": "Brak danych", - "adherenceRate": "Adherencja", - "currentStreak": "Bieżąca seria", - "longestStreak": "Najdłuższa seria", - "missedLast30": "Pominięte (30 d.)", - "unit": { - "days": "d.", - "doses": "dawek" - }, - "chips": { - "adherenceTooltip": "Udział dawek przyjętych w ostatnich 30 dniach (pominięte dawki są wyłączone z mianownika).", - "streakTooltip": "Kolejne dni do dziś, w których każda zaplanowana dawka została przyjęta lub świadomie pominięta.", - "longestTooltip": "Najdłuższa nieprzerwana seria w 30-dniowym oknie.", - "missedTooltip": "Liczba dawek pominiętych w ostatnich 30 dniach." - } - }, "naturalLanguage": { "title": "Opisz lek", "description": "Opisz lek własnymi słowami, a my wstępnie wypełnimy formularz za Ciebie.", @@ -786,14 +747,6 @@ "noEndDate": "No end date", "oneShotCaption": "(one-time dose)", "invalidRange": "End date must be on or after the start date." - }, - "oneShot": { - "section": "Single dose", - "collapseWarning": "Single dose enabled — every other schedule was merged into the first." - }, - "legacyWindow": { - "section": "Reminder window (legacy)", - "help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release." } }, "wizard": { @@ -1153,7 +1106,6 @@ "error": "Could not log the dose." }, "cadence": { - "title": "Cadence", "oneShotOn": "One-time dose on {date}.", "oneShotPending": "One-time dose pending." }, diff --git a/src/components/medications/medication-card-menu.tsx b/src/components/medications/medication-card-menu.tsx index a5690692f..cec65b51f 100644 --- a/src/components/medications/medication-card-menu.tsx +++ b/src/components/medications/medication-card-menu.tsx @@ -8,9 +8,15 @@ * / advanced) into a single overflow kebab so the card header carries one * affordance instead of a cluster. The card body itself navigates to the * detail page (the former chevron target); this menu owns the edit / - * history / advanced actions. The GLP-1 card folds its "Log side effect" - * item into the SAME menu via the optional `onLogSideEffect` slot so the - * two card variants stay byte-symmetric in the header. + * history / advanced actions. + * + * The optional `onLogSideEffect` slot exists for the GLP-1 card to fold a + * "Log side effect" item into the SAME menu, but it is NOT wired on the + * medications list page — both card variants there receive only the + * edit / history / advanced handlers, so the item never renders. Side- + * effect logging lives on the detail page's ``. When + * the slot is left undefined the two card variants stay byte-symmetric in + * the header (one kebab, identical items). * * The trigger is a 44px ghost icon-button (WCAG 2.5.5); every * `DropdownMenuItem` already carries `min-h-11` from the shadcn