refactor(ui): mint the text-2xs token and the neutral TagChip

Three integration cards carried the same hand-copied chip literal in the
card-header accessory slot, each free to drift on the next touch; the size
itself was an arbitrary value repeated at three slightly different spellings
across the tree.

- Mint `--text-2xs` (0.6875rem with a matched line-height) as the one
  sanctioned step below `text-xs`.
- Mint `TagChip` and adopt it on the Fitbit, Google Health, and Nightscout
  cards. It stays distinct from `Badge`, which carries status meaning.
- Sweep the arbitrary micro sizes: the stepper label and the two dose-ledger
  outline badges move onto the token; the muted target caption and the muted
  ledger meta row move up to the `text-xs` muted floor.

No visible change beyond the two muted rows gaining a fraction of a pixel.
This commit is contained in:
Marc-André Bombeck committed 2026-07-25 14:00:25 +02:00
1 parent 405bebf1a0
commit 933dfcfdfb
9 files changed
+90 -16

No files matched your search

@@ -623,7 +623,7 @@ function LedgerRowItem({
{t(`medications.detail.verlauf.status.${row.status}`)}
</span>
{row.kind === "ad_hoc" && (
<Badge variant="outline" className="text-[0.65rem]">
<Badge variant="outline" className="text-2xs">
{t("medications.detail.verlauf.adHocTag")}
</Badge>
)}
@@ -634,7 +634,7 @@ function LedgerRowItem({
{row.kind === "slot" && row.pinned && (
<Badge
variant="outline"
className="text-[0.65rem]"
className="text-2xs"
data-slot="ledger-pinned-badge"
>
{t("medications.detail.verlauf.pin.pinnedTag")}
@@ -862,7 +862,7 @@ function LedgerSummaryChart({
style={{ width: `${pct(missed)}%` }}
/>
</div>
<div className="text-muted-foreground flex flex-wrap gap-x-3 gap-y-0.5 text-[0.7rem]">
<div className="text-muted-foreground flex flex-wrap gap-x-3 gap-y-0.5 text-xs">
<span className="text-success">
{t("medications.detail.verlauf.status.taken_on_time")}: {takenOnTime}
</span>
@@ -162,7 +162,7 @@ export function WizardStepper({
/>
<span
className={cn(
"max-w-[6rem] truncate text-[0.6875rem] leading-none",
"text-2xs max-w-[6rem] truncate leading-none",
isActive
? "text-foreground font-medium"
: "text-muted-foreground",