diff --git a/app/components/VatBreakdown.tsx b/app/components/VatBreakdown.tsx index 8b91904..0711a4b 100644 --- a/app/components/VatBreakdown.tsx +++ b/app/components/VatBreakdown.tsx @@ -4,33 +4,37 @@ import type { TaxBreakdownGroup } from "../lib/taxBreakdown"; // The actual amount of VAT included in a total — not just a disclosure // that VAT is included (see cartTotals.ts's effectiveTaxRate() for the // "which %" shown next to each line item elsewhere). One line per rate -// when a cart/order spans more than one; a single line otherwise. Each -// line is a flex row with a spacer (same "label, flex-1 spacer, value" -// shape as every other Zwischensumme/Versand/Gesamtsumme row in the -// sidebars this renders inside) so every € amount lands on the same -// right-hand edge — a plain "X%: Y €" text line left the amount starting -// wherever the rate's own digit count happened to end, visibly misaligned -// as soon as two different rates (e.g. "7%" vs "19%") were both present. +// when a cart/order spans more than one; a single line otherwise. +// +// `self-start` (not `w-full`/`flex-1` spacer) — an earlier version +// right-aligned each € amount by spanning the row edge-to-edge across the +// full summary panel, matching the Gesamtsumme total line above it. That +// made this secondary "enthält X% MwSt." hint visually disconnect from +// its own label whenever the panel was wide, dragging the amount far off +// to the right. Sized to its own content instead: the rate column is a +// fixed width (`w-8`) and right-aligned with `tabular-nums` (equal-width +// digits) so a single-digit rate like "7%" lines up with a two-digit one +// like "19%" — same alignment guarantee as before, without stretching the +// block itself. `self-start` overrides the parent +// flex-col's default stretch (both call sites are plain `flex flex-col` +// with no `items-start`, so children fill its width unless told not to). export function VatBreakdown({ groups }: { groups: TaxBreakdownGroup[] }) { if (groups.length === 0) return null; if (groups.length === 1) { const [g] = groups; return ( -
+ enthält {g.rate}% MwSt.: {formatPrice(g.tax)} +
); } return ( -enthält MwSt.:
{groups.map((g) => ( -