Files
cup26/src/components/ui/SectionTitle.tsx
T
NilsBriggen 05010771a3 German language option + a full wording-clarity pass
A tiny typed i18n layer (no library): en.ts is the single source of UI
copy and the clarity rewrite lives there — shorter sentences, plain
words, the dense Methodology/Scoreboard copy untangled. de.ts mirrors
its shape exactly, enforced by the compiler, with placeholder parity
covered by tests. Every page now reads from the dictionary via useT();
dates flip locale through useFormat() (en-GB/de-DE); raw server values
(status, outcome, stage) map through total records.

The header gains an EN/DE toggle (persisted, defaults from the
browser language); <html lang> stays in sync.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 00:20:07 +02:00

12 lines
512 B
TypeScript

import type { ReactNode } from 'react';
/** Consistent section heading: smallcaps label with optional right-side extra. */
export function SectionTitle({ children, extra }: { children: ReactNode; extra?: ReactNode }) {
return (
<div className="mb-3 mt-6 flex items-baseline justify-between gap-3 first:mt-0">
<h2 className="smallcaps text-xs font-bold uppercase tracking-widest text-faint">{children}</h2>
{extra != null && <div className="text-xs text-faint">{extra}</div>}
</div>
);
}