diff --git a/messages/de.json b/messages/de.json index 3b18d9658..a925e5193 100644 --- a/messages/de.json +++ b/messages/de.json @@ -9757,9 +9757,11 @@ "accessReadLabel": "Darf lesen", "accessReadCapability": "Sie kann alles lesen, was von dieser Akte geteilt wird. Hinzufügen oder ändern kann sie nichts.", "accessWriteLabel": "Darf lesen und hinzufügen", - "accessWriteCapability": "Sie kann außerdem etwas zur Akte hinzufügen: Messwerte, Laborergebnisse, einen neuen Laborwert, einen Krankheitseintrag, eine Nebenwirkung zu einem Medikament, ein neues Medikament und eine Dosis als genommen oder ausgelassen markieren. Ändern oder löschen kann sie nichts, auch nicht das, was sie selbst eingetragen hat, und eine deiner Erinnerungen verschieben kann sie auch nicht. Das kannst nur du.", + "accessWriteCapability": "Sie kann Einträge hinzufügen, aber nichts ändern oder löschen, auch nicht das, was sie selbst eingetragen hat.", + "accessWriteDetail": "Sie kann Messwerte, Laborergebnisse, einen neuen Laborwert, einen Krankheitseintrag, eine Nebenwirkung zu einem Medikament und ein neues Medikament hinzufügen sowie eine Dosis als genommen oder ausgelassen markieren. Ändern oder löschen kann sie nichts, auch nicht das Eigene, und eine deiner Erinnerungen verschieben kann sie nicht. Das kannst nur du.", "accessManageLabel": "Darf verwalten", - "accessManageCapability": "Sie kann Einträge in deiner Akte anlegen, ändern und löschen, auch solche, die du selbst erfasst hast, und sie kann die daraus erzeugten Auswertungen lesen. Deine Anmeldung, deine Sicherheitseinstellungen, deine Verbindungen und den Zugriff anderer Personen kann sie nicht ändern. Du kannst das jederzeit beenden.", + "accessManageCapability": "Sie kann Einträge anlegen, ändern und löschen, auch solche, die du selbst erfasst hast.", + "accessManageDetail": "Sie kann außerdem die daraus erzeugten Auswertungen lesen. Deine Anmeldung, deine Sicherheitseinstellungen, deine Verbindungen und den Zugriff anderer Personen kann sie nicht ändern. Du kannst das jederzeit beenden.", "manageStepUpNote": "Dafür wird dein zweiter Faktor abgefragt, deshalb geht das nur im Browser.", "scopeLegend": "Was die Person öffnen darf", "scopeAllLabel": "Gesamte Akte", diff --git a/messages/en.json b/messages/en.json index de7446b0a..12f18a262 100644 --- a/messages/en.json +++ b/messages/en.json @@ -9757,9 +9757,11 @@ "accessReadLabel": "Can view", "accessReadCapability": "They can read everything this record shares. They cannot add or change anything.", "accessWriteLabel": "Can view and add", - "accessWriteCapability": "They can also add to the record: readings, lab results, a new analyte to track, an illness entry, a side effect against a drug, a new medication, and marking a dose taken or skipped. They cannot edit or delete anything, not even what they added, and they cannot defer one of your reminders. Only you can.", + "accessWriteCapability": "They can add to the record but cannot edit or delete anything, not even what they added.", + "accessWriteDetail": "They can add readings, lab results, a new analyte to track, an illness entry, a side effect against a drug, a new medication, and mark a dose taken or skipped. They cannot edit or delete anything, not even what they added, and they cannot defer one of your reminders. Only you can.", "accessManageLabel": "Can manage", - "accessManageCapability": "They can add, change and remove entries in your record, including ones you entered yourself, and they can read the insights generated from it. They cannot change your login, your security settings, your connections, or who else has access. You can end this at any time.", + "accessManageCapability": "They can add, change and remove entries, including ones you entered yourself.", + "accessManageDetail": "They can also read the insights generated from your record. They cannot change your login, your security settings, your connections, or who else has access. You can end this at any time.", "manageStepUpNote": "Offering this asks for your second factor, so it can only be done in a browser.", "scopeLegend": "What they can open", "scopeAllLabel": "Entire record", diff --git a/messages/es.json b/messages/es.json index a3e5fe307..3ec016e1c 100644 --- a/messages/es.json +++ b/messages/es.json @@ -9757,9 +9757,11 @@ "accessReadLabel": "Puede ver", "accessReadCapability": "Puede leer todo lo que este historial comparte. No puede añadir ni cambiar nada.", "accessWriteLabel": "Puede ver y añadir", - "accessWriteCapability": "También puede añadir a la ficha: mediciones, resultados de laboratorio, un nuevo analito a seguir, una entrada de enfermedad, un efecto secundario de un medicamento, un medicamento nuevo, y marcar una dosis como tomada u omitida. No puede editar ni borrar nada, ni siquiera lo que añadió, ni aplazar uno de tus recordatorios. Solo tú puedes.", + "accessWriteCapability": "Puede añadir a la ficha, pero no puede editar ni borrar nada, ni siquiera lo que añadió.", + "accessWriteDetail": "Puede añadir mediciones, resultados de laboratorio, un nuevo analito a seguir, una entrada de enfermedad, un efecto secundario de un medicamento y un medicamento nuevo, y marcar una dosis como tomada u omitida. No puede editar ni borrar nada, ni siquiera lo que añadió, ni aplazar uno de tus recordatorios. Solo tú puedes.", "accessManageLabel": "Puede gestionar", - "accessManageCapability": "Puede añadir, cambiar y eliminar entradas de tu ficha, incluidas las que has escrito tú, y puede leer los análisis generados a partir de ella. No puede cambiar tu inicio de sesión, tus ajustes de seguridad, tus servicios conectados ni quién más tiene acceso. Puedes terminarlo cuando quieras.", + "accessManageCapability": "Puede añadir, cambiar y eliminar entradas, incluidas las que has escrito tú.", + "accessManageDetail": "También puede leer los análisis generados a partir de tu ficha. No puede cambiar tu inicio de sesión, tus ajustes de seguridad, tus servicios conectados ni quién más tiene acceso. Puedes terminarlo cuando quieras.", "manageStepUpNote": "Ofrecerlo pide tu segundo factor, así que solo se puede hacer en un navegador.", "scopeLegend": "Qué puede abrir", "scopeAllLabel": "Todo el historial", diff --git a/messages/fr.json b/messages/fr.json index 2d1cd9291..0a07a45b3 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -9757,9 +9757,11 @@ "accessReadLabel": "Peut consulter", "accessReadCapability": "Elle peut lire tout ce que ce dossier partage. Elle ne peut rien ajouter ni rien modifier.", "accessWriteLabel": "Peut consulter et ajouter", - "accessWriteCapability": "Elle peut aussi ajouter au dossier : des mesures, des résultats de laboratoire, un nouvel analyte à suivre, une entrée de maladie, un effet indésirable lié à un médicament, un nouveau médicament, et marquer une dose comme prise ou sautée. Elle ne peut rien modifier ni supprimer, pas même ce qu'elle a ajouté, et elle ne peut pas reporter un de vos rappels. Vous seul le pouvez.", + "accessWriteCapability": "Elle peut ajouter au dossier, mais ne peut rien modifier ni supprimer, pas même ce qu'elle a ajouté.", + "accessWriteDetail": "Elle peut ajouter des mesures, des résultats de laboratoire, un nouvel analyte à suivre, une entrée de maladie, un effet indésirable lié à un médicament et un nouveau médicament, et marquer une dose comme prise ou sautée. Elle ne peut rien modifier ni supprimer, pas même ce qu'elle a ajouté, et elle ne peut pas reporter un de vos rappels. Vous seul le pouvez.", "accessManageLabel": "Peut gérer", - "accessManageCapability": "Elle peut ajouter, modifier et supprimer des entrées de votre dossier, y compris celles que vous avez saisies vous-même, et lire les analyses qui en sont tirées. Elle ne peut modifier ni votre connexion, ni vos paramètres de sécurité, ni vos services connectés, ni la liste des personnes qui ont accès. Vous pouvez y mettre fin à tout moment.", + "accessManageCapability": "Elle peut ajouter, modifier et supprimer des entrées, y compris celles que vous avez saisies vous-même.", + "accessManageDetail": "Elle peut aussi lire les analyses tirées de votre dossier. Elle ne peut modifier ni votre connexion, ni vos paramètres de sécurité, ni vos services connectés, ni la liste des personnes qui ont accès. Vous pouvez y mettre fin à tout moment.", "manageStepUpNote": "Cette offre demande votre deuxième facteur, elle n'est donc possible que dans un navigateur.", "scopeLegend": "Ce que cette personne peut ouvrir", "scopeAllLabel": "Dossier complet", diff --git a/messages/it.json b/messages/it.json index dcbfe6ead..a820bcf1e 100644 --- a/messages/it.json +++ b/messages/it.json @@ -9757,9 +9757,11 @@ "accessReadLabel": "Può vedere", "accessReadCapability": "Può leggere tutto ciò che questa cartella condivide. Non può aggiungere né modificare nulla.", "accessWriteLabel": "Può vedere e aggiungere", - "accessWriteCapability": "Può anche aggiungere alla cartella: misurazioni, risultati di laboratorio, un nuovo analita da seguire, una voce di malattia, un effetto collaterale di un farmaco, un nuovo farmaco e segnare una dose come presa o saltata. Non può modificare né eliminare nulla, nemmeno ciò che ha aggiunto, e non può rimandare uno dei tuoi promemoria. Solo tu puoi.", + "accessWriteCapability": "Può aggiungere alla cartella, ma non può modificare né eliminare nulla, nemmeno ciò che ha aggiunto.", + "accessWriteDetail": "Può aggiungere misurazioni, risultati di laboratorio, un nuovo analita da seguire, una voce di malattia, un effetto collaterale di un farmaco e un nuovo farmaco, e segnare una dose come presa o saltata. Non può modificare né eliminare nulla, nemmeno ciò che ha aggiunto, e non può rimandare uno dei tuoi promemoria. Solo tu puoi.", "accessManageLabel": "Può gestire", - "accessManageCapability": "Può aggiungere, modificare ed eliminare voci della tua cartella, comprese quelle inserite da te, e può leggere le analisi generate a partire da essa. Non può cambiare il tuo accesso, le tue impostazioni di sicurezza, i tuoi servizi collegati né chi altro ha accesso. Puoi terminare tutto questo in qualsiasi momento.", + "accessManageCapability": "Può aggiungere, modificare ed eliminare voci, comprese quelle inserite da te.", + "accessManageDetail": "Può anche leggere le analisi generate dalla tua cartella. Non può cambiare il tuo accesso, le tue impostazioni di sicurezza, i tuoi servizi collegati né chi altro ha accesso. Puoi terminare tutto questo in qualsiasi momento.", "manageStepUpNote": "Per offrirlo viene richiesto il tuo secondo fattore, quindi si può fare solo da browser.", "scopeLegend": "Che cosa può aprire", "scopeAllLabel": "Intera cartella", diff --git a/messages/pl.json b/messages/pl.json index 4250a0e17..724882a79 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -9757,9 +9757,11 @@ "accessReadLabel": "Może przeglądać", "accessReadCapability": "Może czytać wszystko, co ta karta udostępnia. Nie może niczego dodać ani zmienić.", "accessWriteLabel": "Może przeglądać i dodawać", - "accessWriteCapability": "Może też dodawać do kartoteki: pomiary, wyniki badań, nowy analit do śledzenia, wpis o chorobie, działanie niepożądane leku, nowy lek oraz oznaczyć dawkę jako przyjętą lub pominiętą. Nie może niczego edytować ani usuwać, nawet tego, co sama dodała, ani odłożyć żadnego z Twoich przypomnień. Tylko Ty możesz.", + "accessWriteCapability": "Może dodawać do kartoteki, ale nie może niczego edytować ani usuwać, nawet tego, co sama dodała.", + "accessWriteDetail": "Może dodawać pomiary, wyniki badań, nowy analit do śledzenia, wpis o chorobie, działanie niepożądane leku i nowy lek oraz oznaczyć dawkę jako przyjętą lub pominiętą. Nie może niczego edytować ani usuwać, nawet tego, co sama dodała, ani odłożyć żadnego z Twoich przypomnień. Tylko Ty możesz.", "accessManageLabel": "Może zarządzać", - "accessManageCapability": "Może dodawać, zmieniać i usuwać wpisy w Twojej kartotece, także te, które wprowadziłeś samodzielnie, oraz czytać wygenerowane na jej podstawie analizy. Nie może zmienić Twojego logowania, ustawień bezpieczeństwa, połączonych usług ani tego, kto jeszcze ma dostęp. Możesz to zakończyć w dowolnym momencie.", + "accessManageCapability": "Może dodawać, zmieniać i usuwać wpisy, także te, które wprowadziłeś samodzielnie.", + "accessManageDetail": "Może też czytać analizy wygenerowane na podstawie Twojej kartoteki. Nie może zmienić Twojego logowania, ustawień bezpieczeństwa, połączonych usług ani tego, kto jeszcze ma dostęp. Możesz to zakończyć w dowolnym momencie.", "manageStepUpNote": "Przy takim zaproszeniu prosimy o drugi składnik logowania, dlatego można to zrobić tylko w przeglądarce.", "scopeLegend": "Co ta osoba może otworzyć", "scopeAllLabel": "Cała kartoteka", diff --git a/src/components/settings/access/__tests__/grant-invite-scope.test.tsx b/src/components/settings/access/__tests__/grant-invite-scope.test.tsx index 8ff438423..49d017322 100644 --- a/src/components/settings/access/__tests__/grant-invite-scope.test.tsx +++ b/src/components/settings/access/__tests__/grant-invite-scope.test.tsx @@ -134,15 +134,22 @@ describe("the bundle behind the expanded state", () => { }); it("states the manage fence in the invitation copy itself", () => { - // Not in a tooltip and not in the docs: on the label, where somebody is - // deciding. + // The consent line stays one sentence and inline — what Manage lets someone + // do. The full fence (what it does NOT reach) rides the (i) detail rather + // than a wall of text, but it is still shipped copy, not docs. expect(invite.accessManageCapability).toContain( "add, change and remove entries", ); expect(invite.accessManageCapability).toContain( "including ones you entered yourself", ); - expect(invite.accessManageCapability).toContain("They cannot change your"); + // The one-liner is a single sentence, not a paragraph. + expect(invite.accessManageCapability.split(". ").length).toBeLessThan(2); + expect(invite.accessManageDetail).toContain("They cannot change your"); + // WRITE is split the same way: a one-line consent sentence, the full + // enumeration behind the (i). + expect(invite.accessWriteCapability.split(". ").length).toBeLessThan(2); + expect(invite.accessWriteDetail).toContain("mark a dose taken or skipped"); }); }); diff --git a/src/components/settings/access/grant-invite-card.tsx b/src/components/settings/access/grant-invite-card.tsx index f655652a4..24a336e8b 100644 --- a/src/components/settings/access/grant-invite-card.tsx +++ b/src/components/settings/access/grant-invite-card.tsx @@ -9,6 +9,7 @@ import { SettingsCardHeader } from "@/components/settings/_card-header"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { DateField } from "@/components/ui/date-field"; +import { InfoPopover } from "@/components/ui/info-popover"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { useAuth } from "@/hooks/use-auth"; @@ -190,6 +191,7 @@ export function GrantInviteCard() { onSelect={() => chooseAccess("WRITE")} label={t("recordSharing.invite.accessWriteLabel")} capability={t("recordSharing.invite.accessWriteCapability")} + detail={t("recordSharing.invite.accessWriteDetail")} /> chooseAccess("MANAGE")} label={t("recordSharing.invite.accessManageLabel")} capability={t("recordSharing.invite.accessManageCapability")} + detail={t("recordSharing.invite.accessManageDetail")} /> {choice.mode === "manage" && ( @@ -431,13 +434,17 @@ export function resolveInviteScope({ } /** - * One level, with the sentence that says what it actually does. + * One level, with the one sentence that says what it actually does. * - * The capability line is not decoration and it is not a tooltip: it is the - * part the owner is consenting to, so it sits under the label where it has to - * be read past rather than behind an info icon. Muted because it describes the - * option rather than being the option (UI-STANDARDS §3), `text-xs` because - * that is the meta floor. + * The capability line is the part the owner is consenting to, so it stays + * inline under the label rather than behind an icon — but it is one line, not a + * wall. Where a level has more to say than fits on a line (the exact list WRITE + * may add, the fence MANAGE does NOT reach), that detail rides an `InfoPopover` + * at the option-heading height. The (i) sits OUTSIDE the ` + {detail ? ( + + ) : null} + ); }