mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 13:01:00 +00:00
Polish the copy the audit flagged across all six locales
- Singular variants for the bulk-delete toast and confirm dialog (measurements + mood); the call sites branch on a count of one. - Consent confirm buttons shortened so they no longer overflow the small button on phones. - Workouts empty-state CTA is source-neutral instead of assuming an iPhone with Apple Health. - "Pills" is no longer a navigation term in a medication app: DE says Navigations-Chips, EN chips, PL chipy; ES/FR/IT subtitles align with their own established terms. - Health-score insufficient hint drops the translationese and fixes the pronoun. - Side-effect tag helper uses the established Stimmungs-Tags term. - Success toasts that are single fragments lose the terminal period (37 keys, all locales). - Integration pill parked state short enough to survive truncation. - The iPhone-managed reminder badge carries a short label; the full sentence moved to a helper line below instead of clipping mid-word.
This commit is contained in:
1 parent
1cde353965
commit
487eb6970c
10 files changed
+371
-300
No files matched your search
@@ -625,7 +625,9 @@ export function MeasurementList({
|
||||
await refetchInactiveDailyReads(queryClient);
|
||||
clearSelection();
|
||||
toast.success(
|
||||
t("measurements.bulkDeleteSuccess", { count: String(deleted) }),
|
||||
deleted === 1
|
||||
? t("measurements.bulkDeleteSuccessOne")
|
||||
: t("measurements.bulkDeleteSuccess", { count: String(deleted) }),
|
||||
{
|
||||
action: {
|
||||
label: t("common.undo"),
|
||||
@@ -1462,12 +1464,20 @@ export function MeasurementList({
|
||||
onClear={clearSelection}
|
||||
onConfirmDelete={onConfirmBulkDelete}
|
||||
isDeleting={bulkDeleteMutation.isPending}
|
||||
confirmTitle={t("measurements.bulkDeleteConfirmTitle", {
|
||||
count: String(selectedOnPage),
|
||||
})}
|
||||
confirmBody={t("measurements.bulkDeleteConfirmBody", {
|
||||
count: String(selectedOnPage),
|
||||
})}
|
||||
confirmTitle={
|
||||
selectedOnPage === 1
|
||||
? t("measurements.bulkDeleteConfirmTitleOne")
|
||||
: t("measurements.bulkDeleteConfirmTitle", {
|
||||
count: String(selectedOnPage),
|
||||
})
|
||||
}
|
||||
confirmBody={
|
||||
selectedOnPage === 1
|
||||
? t("measurements.bulkDeleteConfirmBodyOne")
|
||||
: t("measurements.bulkDeleteConfirmBody", {
|
||||
count: String(selectedOnPage),
|
||||
})
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Pagination */}
|
||||
|
||||
@@ -150,14 +150,20 @@ export function NotificationsBody({
|
||||
{clientManaged ? (
|
||||
// v1.5.5 §9.6 — iPhone-managed path. The switch is hidden;
|
||||
// the read-only chip tells the user where the toggle lives.
|
||||
<p
|
||||
className="text-foreground text-sm"
|
||||
// The badge carries a short label only (a full sentence used to
|
||||
// hard-clip mid-word in the nowrap badge); the sentence moved to
|
||||
// the helper line below.
|
||||
<div
|
||||
className="space-y-1"
|
||||
data-slot="notifications-client-managed-chip"
|
||||
>
|
||||
<Badge variant="outline" className="font-normal">
|
||||
{t("medications.detail.notifications.clientManagedChip")}
|
||||
</Badge>
|
||||
</p>
|
||||
<p className="text-muted-foreground text-sm">
|
||||
{t("medications.detail.notifications.clientManagedHint")}
|
||||
</p>
|
||||
</div>
|
||||
) : (
|
||||
<label
|
||||
htmlFor={SWITCH_ID}
|
||||
|
||||
@@ -394,12 +394,17 @@ export function MoodList({ onAddFirst }: MoodListProps = {}) {
|
||||
await invalidateKeys(queryClient, moodDependentKeys);
|
||||
await refetchInactiveDailyReads(queryClient);
|
||||
clearSelection();
|
||||
toast.success(t("mood.bulkDeleteSuccess", { count: String(deleted) }), {
|
||||
action: {
|
||||
label: t("common.undo"),
|
||||
onClick: () => void restoreEntries(ids),
|
||||
toast.success(
|
||||
deleted === 1
|
||||
? t("mood.bulkDeleteSuccessOne")
|
||||
: t("mood.bulkDeleteSuccess", { count: String(deleted) }),
|
||||
{
|
||||
action: {
|
||||
label: t("common.undo"),
|
||||
onClick: () => void restoreEntries(ids),
|
||||
},
|
||||
},
|
||||
});
|
||||
);
|
||||
},
|
||||
onError: () => {
|
||||
toast.error(t("mood.bulkDeleteError"));
|
||||
@@ -955,12 +960,20 @@ export function MoodList({ onAddFirst }: MoodListProps = {}) {
|
||||
onClear={clearSelection}
|
||||
onConfirmDelete={onConfirmBulkDelete}
|
||||
isDeleting={bulkDeleteMutation.isPending}
|
||||
confirmTitle={t("mood.bulkDeleteConfirmTitle", {
|
||||
count: String(selectedOnPage),
|
||||
})}
|
||||
confirmBody={t("mood.bulkDeleteConfirmBody", {
|
||||
count: String(selectedOnPage),
|
||||
})}
|
||||
confirmTitle={
|
||||
selectedOnPage === 1
|
||||
? t("mood.bulkDeleteConfirmTitleOne")
|
||||
: t("mood.bulkDeleteConfirmTitle", {
|
||||
count: String(selectedOnPage),
|
||||
})
|
||||
}
|
||||
confirmBody={
|
||||
selectedOnPage === 1
|
||||
? t("mood.bulkDeleteConfirmBodyOne")
|
||||
: t("mood.bulkDeleteConfirmBody", {
|
||||
count: String(selectedOnPage),
|
||||
})
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Pagination */}
|
||||
|
||||
@@ -62,7 +62,7 @@ describe("OAuthProviderCard — parked + test + data-link parity", () => {
|
||||
expect(html).toContain('data-state="parked"');
|
||||
expect(html).toContain('data-testid="polar-parked-banner"');
|
||||
expect(html).toContain('data-testid="polar-resume-button"');
|
||||
expect(html).toContain("reconnect manually");
|
||||
expect(html).toContain("Paused — reconnect");
|
||||
// The parked banner uses the same warning treatment as the WHOOP card.
|
||||
expect(html).toContain("border-warning/30 bg-warning/10");
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user