Design: warme Palette aus dem Entwurf (Beige/Gold/Tinte) statt iOS-Blau

Korrektur zur Rueckmeldung des Nutzers: der Lesbarkeits-Einwand galt nur der
duennen Serifenschrift, nicht den Farben. Die warmen Design-Farben sind gut
lesbar und vereinheitlichen App + Website.

- theme.ts: Papier-Beige-Grund, warme Karten, Gold-Akzent (#B68235) fuer
  Icons/Tabs/Rahmen, dunkles Bronze (#7D5411, neu: primaerFuellung) als
  Fuellung gefuellter Buttons (weisse Schrift kontrastreich), warme
  Ampel-Toene (Backstein/Bronze/Salbei), warme Trennlinien/Graustufen
- GrossButton: Fuellung + Sekundaer-Text auf primaerFuellung (Kontrast)
- FAB-Scan-Knopf auf Bronze
- FristenScreen: ueberfaellige Zeilen zeigen 'faellig' statt 'Tage'

Im Simulator geprueft: Fristen-Start + Scan-Screen in warmen Farben, gut
lesbar. Typecheck + 30 Tests gruen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-25 21:29:19 +02:00
parent ed627bc10e
commit 779261fbad
4 changed files with 31 additions and 27 deletions

View File

@@ -144,7 +144,7 @@ const styles = StyleSheet.create({
height: 56, height: 56,
borderRadius: 28, borderRadius: 28,
marginTop: -18, marginTop: -18,
backgroundColor: farben.primaer, backgroundColor: farben.primaerFuellung,
alignItems: 'center', alignItems: 'center',
justifyContent: 'center', justifyContent: 'center',
borderWidth: 3, borderWidth: 3,

View File

@@ -30,7 +30,8 @@ export function GrossButton({
}: Props) { }: Props) {
const istPrimaer = variante === 'primaer'; const istPrimaer = variante === 'primaer';
const istGefahr = variante === 'gefahr'; const istGefahr = variante === 'gefahr';
const inhaltsFarbe = istPrimaer || istGefahr ? farben.primaerText : farben.primaer; // Sekundär: dunkles Bronze statt hellem Gold — auf grauer Fläche gut lesbar
const inhaltsFarbe = istPrimaer || istGefahr ? farben.primaerText : farben.primaerFuellung;
return ( return (
<Pressable <Pressable
onPress={onPress} onPress={onPress}
@@ -68,7 +69,7 @@ const styles = StyleSheet.create({
paddingVertical: abstand.s, paddingVertical: abstand.s,
}, },
zeile: { flexDirection: 'row', alignItems: 'center', gap: abstand.xs + 2 }, zeile: { flexDirection: 'row', alignItems: 'center', gap: abstand.xs + 2 },
primaer: { backgroundColor: farben.primaer }, primaer: { backgroundColor: farben.primaerFuellung },
sekundaer: { backgroundColor: farben.flaecheSekundaer }, sekundaer: { backgroundColor: farben.flaecheSekundaer },
gefahr: { backgroundColor: farben.fehler }, gefahr: { backgroundColor: farben.fehler },
deaktiviert: { opacity: 0.4 }, deaktiviert: { opacity: 0.4 },

View File

@@ -177,7 +177,7 @@ export function FristenScreen() {
<Text style={[styles.zahlKlein, { color: f.farbe }]}> <Text style={[styles.zahlKlein, { color: f.farbe }]}>
{f.frist!.tage < 0 ? '!' : f.frist!.tage} {f.frist!.tage < 0 ? '!' : f.frist!.tage}
</Text> </Text>
<Text style={styles.zahlBoxLabel}>Tage</Text> <Text style={styles.zahlBoxLabel}>{f.frist!.tage < 0 ? 'fällig' : 'Tage'}</Text>
</View> </View>
<View style={{ flex: 1, minWidth: 0 }}> <View style={{ flex: 1, minWidth: 0 }}>
<Text style={styles.zeileTyp} numberOfLines={1}>{f.brief.analyse.brieftyp}</Text> <Text style={styles.zeileTyp} numberOfLines={1}>{f.brief.analyse.brieftyp}</Text>

View File

@@ -5,31 +5,34 @@
* - Große Touch-Targets (min. 56px Höhe) * - Große Touch-Targets (min. 56px Höhe)
*/ */
export const farben = { export const farben = {
// Grundfarben — natives iOS-Vorbild: gruppierter System-Hintergrund, // Warme, ruhige Palette nach dem Claude-Design-Entwurf ("Postklar/Classical")
// Inhalte als weiße Karten ohne Rahmen und Schatten (wie Einstellungen/Health) // und passend zur Website: Papier-Beige, Gold-Akzent, dunkle Tinte.
hintergrund: '#F2F2F7', // Gut lesbar (hoher Kontrast bei Fließtext), nur die Schrift bleibt
flaeche: '#FFFFFF', // die klare System-Schrift statt der dünnen Serifenschrift.
flaecheSekundaer: '#E9E9EB', // "graue Taste" nach Apple-Art (statt Umrandung) hintergrund: '#F1EFE9', // warmes Off-White (Grund)
primaer: '#007AFF', // Apple-System-Blau (Tint für Buttons, Icons, Links) flaeche: '#FBFAF6', // warme, fast weiße Karten
primaerText: '#FFFFFF', flaecheSekundaer: '#EAE7E0', // gedämpfte Fläche (graue Taste)
text: '#1A202C', primaer: '#B68235', // Gold-Akzent (Icons, aktive Tabs, Rahmen, Punkte)
textSekundaer: '#4A5568', primaerFuellung: '#7D5411', // dunkles Bronze — Hintergrund gefüllter Buttons (weiße Schrift lesbar)
textTertiaer: '#AEAEB2', // z. B. Chevrons (iOS systemGray2) primaerText: '#FBF7EF', // warmes Weiß (Text auf gefüllten Buttons)
rand: '#E2E2E7', text: '#201F1D', // dunkle Tinte
// Dezente Hervorhebung für DIE Kernaussage (leichter Blau-Tint) textSekundaer: '#6B675E', // warmes Grau (wie --grau der Website)
hervorhebung: '#EAF3FF', textTertiaer: '#A8A29A', // helles warmes Grau (Chevrons)
hervorhebungRand: '#D4E6FB', rand: '#E2DED6', // warme Trennlinie
// Dezente Gold-Hervorhebung (z. B. aktive Filter-Chips)
hervorhebung: '#F7EFE0',
hervorhebungRand: '#E9D8BC',
// Dringlichkeits-Ampel: frische Signalfarben in Apples "zugänglichen" // Dringlichkeits-Ampel in den warmen Design-Tönen — als Text auf hellem
// Varianten — kräftig, aber als Text auf Weiß noch gut lesbar (WCAG) // Tint gut lesbar (WCAG): Backstein-Rot, Bronze-Gold, Salbei-Grün.
ampelRot: '#D70015', ampelRot: '#A23B2B',
ampelGelb: '#C25400', ampelGelb: '#8A5E14',
ampelGruen: '#1E7E34', ampelGruen: '#3F5A4C',
ampelRotHintergrund: '#FFEAE8', ampelRotHintergrund: '#F5E9E5',
ampelGelbHintergrund: '#FFF1E0', ampelGelbHintergrund: '#F5EEDF',
ampelGruenHintergrund: '#E7F6EB', ampelGruenHintergrund: '#E8EFEA',
fehler: '#D70015', fehler: '#A23B2B',
}; };
export const schrift = { export const schrift = {