From 69e2f18788e2db1da680d7eaedc16c7883c436ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Fri, 16 Oct 2026 08:03:29 +0200 Subject: [PATCH] fix(ui): tidy the new record and settings surfaces at phone width MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Composition amounts show only the decimals they carry, so 100 µg no longer reads as 100.000 µg; the remove button stays on the amount row. - AUDIT-C remove controls are icon-only, so they no longer spill out of the card or cover the earlier answer. - Life-circumstance labels keep their colon when they wrap, checkbox groups sit in two columns and the weekly-minutes sentence ends. - Link chips get a 44 px hit area for their remove control. - The AI usage level reports a failed save with a sentence and the error id instead of a bare "Error". - The Dawarich home-country and admin refresh-gap labels sit above their fields. --- messages/de.json | 5 +++-- messages/en.json | 5 +++-- messages/es.json | 5 +++-- messages/fr.json | 5 +++-- messages/it.json | 5 +++-- messages/ko.json | 5 +++-- messages/pl.json | 5 +++-- src/components/admin/ai-usage-section.tsx | 2 +- src/components/links/entity-link-picker.tsx | 2 +- .../medications/sections/composition-section.tsx | 12 +++++++++--- src/components/records/audit-c-panel.tsx | 10 +++++----- .../records/life-circumstances-manager.tsx | 11 ++++++++--- src/components/settings/ai/ai-usage-card.tsx | 10 ++++------ .../settings/integrations/dawarich-card.tsx | 2 +- 14 files changed, 50 insertions(+), 34 deletions(-) diff --git a/messages/de.json b/messages/de.json index b89725bc1..657fb5adf 100644 --- a/messages/de.json +++ b/messages/de.json @@ -6427,7 +6427,8 @@ "noEstimate": "Eine Schätzung je Stufe erscheint nach drei Tagen KI-Nutzung.", "capped": "Du hast {choice} gewählt, das der Server gerade nicht erlaubt, deshalb gilt {level}. Deine Wahl bleibt gespeichert.", "followsDefault": "Du folgst dem Standard des Servers ({level}).", - "useDefault": "Standard des Servers verwenden ({level})" + "useDefault": "Standard des Servers verwenden ({level})", + "saveError": "Die Stufe konnte nicht gespeichert werden. Bitte versuche es erneut." } }, "dashboard": { @@ -11261,7 +11262,7 @@ "derived": { "packYears": "{value} Packungsjahre", "packYearsMissing": "Für Packungsjahre fehlen Zigaretten pro Tag oder das Jahr des Rauchbeginns.", - "activityMinutes": "{value} Minuten pro Woche", + "activityMinutes": "{value} Minuten pro Woche.", "meetsWho": "Damit erreichst du die WHO-Empfehlung von 150 Minuten pro Woche.", "belowWho": "Das liegt unter der WHO-Empfehlung von 150 Minuten pro Woche.", "measuredSteps": "Deine gemessenen Schritte haben Vorrang, diese Angabe ergänzt sie.", diff --git a/messages/en.json b/messages/en.json index b20d52ba7..c15fa1e2c 100644 --- a/messages/en.json +++ b/messages/en.json @@ -6427,7 +6427,8 @@ "noEstimate": "An estimate per level appears after three days of AI use.", "capped": "You chose {choice}, which the server does not allow at the moment, so {level} applies. Your choice is kept.", "followsDefault": "You follow the server default ({level}).", - "useDefault": "Use the server default ({level})" + "useDefault": "Use the server default ({level})", + "saveError": "The level could not be saved. Please try again." } }, "dashboard": { @@ -11261,7 +11262,7 @@ "derived": { "packYears": "{value} pack-years", "packYearsMissing": "Pack-years need cigarettes per day and the year you started.", - "activityMinutes": "{value} minutes a week", + "activityMinutes": "{value} minutes a week.", "meetsWho": "That meets the WHO recommendation of 150 minutes a week.", "belowWho": "That is below the WHO recommendation of 150 minutes a week.", "measuredSteps": "Your measured steps come first; this answer adds context.", diff --git a/messages/es.json b/messages/es.json index 3dde73720..22c33b2ef 100644 --- a/messages/es.json +++ b/messages/es.json @@ -6427,7 +6427,8 @@ "noEstimate": "La estimación por nivel aparece tras tres días de uso de la IA.", "capped": "Elegiste {choice}, que el servidor no permite ahora mismo, así que se aplica {level}. Tu elección se conserva.", "followsDefault": "Sigues el valor predeterminado del servidor ({level}).", - "useDefault": "Usar el valor predeterminado del servidor ({level})" + "useDefault": "Usar el valor predeterminado del servidor ({level})", + "saveError": "No se pudo guardar el nivel. Inténtalo de nuevo." } }, "dashboard": { @@ -11261,7 +11262,7 @@ "derived": { "packYears": "{value} paquetes-año", "packYearsMissing": "Para los paquetes-año faltan los cigarrillos al día o el año en que empezaste.", - "activityMinutes": "{value} minutos a la semana", + "activityMinutes": "{value} minutos a la semana.", "meetsWho": "Cumple la recomendación de la OMS de 150 minutos semanales.", "belowWho": "Está por debajo de la recomendación de la OMS de 150 minutos semanales.", "measuredSteps": "Tus pasos medidos tienen prioridad; esta respuesta aporta contexto.", diff --git a/messages/fr.json b/messages/fr.json index f53f6dc32..4c90c4215 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -6427,7 +6427,8 @@ "noEstimate": "Une estimation par niveau apparaît après trois jours d'utilisation de l'IA.", "capped": "Vous avez choisi {choice}, que le serveur n'autorise pas pour le moment, donc {level} s'applique. Votre choix est conservé.", "followsDefault": "Vous suivez le réglage par défaut du serveur ({level}).", - "useDefault": "Utiliser le réglage par défaut du serveur ({level})" + "useDefault": "Utiliser le réglage par défaut du serveur ({level})", + "saveError": "Le niveau n'a pas pu être enregistré. Réessaie." } }, "dashboard": { @@ -11261,7 +11262,7 @@ "derived": { "packYears": "{value} paquets-années", "packYearsMissing": "Pour les paquets-années, il manque les cigarettes par jour ou l'année de début.", - "activityMinutes": "{value} minutes par semaine", + "activityMinutes": "{value} minutes par semaine.", "meetsWho": "Cela atteint la recommandation de l'OMS de 150 minutes par semaine.", "belowWho": "C'est en dessous de la recommandation de l'OMS de 150 minutes par semaine.", "measuredSteps": "Vos pas mesurés passent en premier ; cette réponse apporte du contexte.", diff --git a/messages/it.json b/messages/it.json index 9ec0dc003..77dd8683d 100644 --- a/messages/it.json +++ b/messages/it.json @@ -6427,7 +6427,8 @@ "noEstimate": "La stima per livello compare dopo tre giorni di uso dell'IA.", "capped": "Hai scelto {choice}, che il server al momento non consente, quindi vale {level}. La tua scelta resta salvata.", "followsDefault": "Segui l'impostazione predefinita del server ({level}).", - "useDefault": "Usa l'impostazione predefinita del server ({level})" + "useDefault": "Usa l'impostazione predefinita del server ({level})", + "saveError": "Non è stato possibile salvare il livello. Riprova." } }, "dashboard": { @@ -11261,7 +11262,7 @@ "derived": { "packYears": "{value} pacchetti-anno", "packYearsMissing": "Per i pacchetti-anno mancano le sigarette al giorno o l'anno di inizio.", - "activityMinutes": "{value} minuti a settimana", + "activityMinutes": "{value} minuti a settimana.", "meetsWho": "Raggiunge la raccomandazione dell'OMS di 150 minuti a settimana.", "belowWho": "È sotto la raccomandazione dell'OMS di 150 minuti a settimana.", "measuredSteps": "I tuoi passi misurati hanno la precedenza; questa risposta aggiunge contesto.", diff --git a/messages/ko.json b/messages/ko.json index d35f2619b..88a66ee7a 100644 --- a/messages/ko.json +++ b/messages/ko.json @@ -6427,7 +6427,8 @@ "noEstimate": "AI를 3일 사용하면 단계별 추정치가 표시돼요.", "capped": "{choice} 단계를 선택했지만 지금은 서버에서 허용하지 않아 {level} 단계가 적용돼요. 선택은 그대로 저장돼요.", "followsDefault": "서버 기본값({level})을 따르고 있어요.", - "useDefault": "서버 기본값 사용({level})" + "useDefault": "서버 기본값 사용({level})", + "saveError": "단계를 저장하지 못했어요. 다시 시도해 주세요." } }, "dashboard": { @@ -11261,7 +11262,7 @@ "derived": { "packYears": "{value}갑년", "packYearsMissing": "갑년을 계산하려면 하루 개비 수와 흡연 시작 연도가 필요해요.", - "activityMinutes": "주당 {value}분", + "activityMinutes": "주당 {value}분.", "meetsWho": "WHO 권장량인 주당 150분을 채워요.", "belowWho": "WHO 권장량인 주당 150분보다 적어요.", "measuredSteps": "측정된 걸음 수가 우선이고, 이 응답은 맥락을 더해요.", diff --git a/messages/pl.json b/messages/pl.json index 3284806be..447d0aa93 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -6427,7 +6427,8 @@ "noEstimate": "Szacunek dla każdego poziomu pojawi się po trzech dniach korzystania z AI.", "capped": "Wybrano poziom {choice}, na który serwer obecnie nie pozwala, więc obowiązuje {level}. Twój wybór zostaje zapisany.", "followsDefault": "Korzystasz z ustawienia domyślnego serwera ({level}).", - "useDefault": "Użyj ustawienia domyślnego serwera ({level})" + "useDefault": "Użyj ustawienia domyślnego serwera ({level})", + "saveError": "Nie udało się zapisać poziomu. Spróbuj ponownie." } }, "dashboard": { @@ -11261,7 +11262,7 @@ "derived": { "packYears": "{value} paczkolat", "packYearsMissing": "Do paczkolat brakuje liczby papierosów dziennie albo roku rozpoczęcia.", - "activityMinutes": "{value} minut w tygodniu", + "activityMinutes": "{value} minut w tygodniu.", "meetsWho": "To spełnia zalecenie WHO 150 minut tygodniowo.", "belowWho": "To poniżej zalecenia WHO 150 minut tygodniowo.", "measuredSteps": "Zmierzone kroki mają pierwszeństwo, ta odpowiedź dodaje kontekst.", diff --git a/src/components/admin/ai-usage-section.tsx b/src/components/admin/ai-usage-section.tsx index e84cd425b..94cdd4bcf 100644 --- a/src/components/admin/ai-usage-section.tsx +++ b/src/components/admin/ai-usage-section.tsx @@ -188,7 +188,7 @@ function AiUsageForm({ bounds }: { bounds: AiUsageBounds }) {

) : null}
-