From 5e198a30c67f3b8b3900033e89c8e3a8f0fe6738 Mon Sep 17 00:00:00 2001 From: Marco Date: Wed, 22 Jul 2026 23:49:58 +0000 Subject: [PATCH] Un-stretch VAT breakdown, fix rate-column alignment properly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The earlier right-alignment fix spanned the row edge-to-edge across the full summary panel (same width as the Gesamtsumme total line), which visually disconnected the "enthält X% MwSt." hint from its own amount on wide panels. Reverted to content-sized (self-start, no w-full/flex-1 spacer), with a fixed-width right-aligned rate column instead so single-digit rates (7%) still line up with two-digit ones (19%). --- app/components/VatBreakdown.tsx | 38 ++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 17 deletions(-) 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)} -
+

+ enthält {g.rate}% MwSt.: {formatPrice(g.tax)} +

); } return ( -
+

enthält MwSt.:

{groups.map((g) => ( -
- {g.rate}% - - {formatPrice(g.tax)} +
+ {g.rate}% + {formatPrice(g.tax)}
))}