Backend: - Modelle + Migration 0002: accounts, account_identifiers, category_groups, categories, transactions, exchange_rates (alle owner-gescoped). - EZB-Kursdienst (90-Tage/Historie) + Backfill-Skript; Umrechnung EUR<->CHF zum Buchungsdatum mit lokalem Cache und manueller Übersteuerung; EUR-Pivot (amount_eur_cents) eingefroren. - Kontostände + Netto-Vermögen (Umrechnung in Hauptwährung). - Router: accounts (inkl. IBAN-Identifikatoren), categories (Gruppen+Kategorien), transactions (Ausgabe/Einnahme/Transfer, cross-currency), rates. - Gruppierte Standard-Kategorien je Nutzer beim Anlegen. - pytest-Suite: Währung, Salden, Cross-Currency-Transfer, Nutzer-Isolation. Frontend: - Seiten Konten, Kategorien, Buchungen; Icon-Chip, Geldbetrag mit Umrechnung, Icon-/Farbwähler, Modal; erweitertes SVG-Icon-Set (Konto-/Kategorie-Icons). - Währungs-/Datumsformatierung (EUR de-DE, CHF de-CH), i18n DE/EN erweitert. - Live-Umrechnungs-Vorschau im Transfer-Formular. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
16 lines
479 B
React
16 lines
479 B
React
import Icon from "./Icon";
|
|
|
|
// Farbiges Icon-Plättchen für Konten und Kategorien: getönter Hintergrund,
|
|
// Icon in der Akzentfarbe. Farbe kommt aus dem Datensatz (hex).
|
|
export default function IconChip({ name, color = "#6b7480", size = 34 }) {
|
|
const inner = Math.round(size * 0.56);
|
|
return (
|
|
<span
|
|
className="icon-chip"
|
|
style={{ width: size, height: size, color, background: `${color}22` }}
|
|
>
|
|
<Icon name={name} size={inner} />
|
|
</span>
|
|
);
|
|
}
|