chahinebrini 5d6c322129 wip: KeyboardAwareSheet migrations + Snake/Tetris UI + iron.png + useMe live-update
Sheets via neuer KeyboardAwareSheet-Composable (in Modal pattern, auto-grow
mit Tastatur, paddingBottom-Lift): EditMail, AddDomain, CreateRoom, ConnectMail.
GameOverScreen behält Spring-Slide-In, nutzt RN Keyboard.addListener für Lift.

- KeyboardAwareSheet.tsx — universal modal with sheet-grow + keyboard-padding
- react-native-keyboard-controller installiert + KeyboardProvider in Root
- Snake: time + ScoreProgressBar + useSnakeSounds (haptic, audio TODO)
- Tetris: title weg, Buttons zentriert, kein Pressable mit style-fn
- DPad-Buttons 60→48, more bg, no scale
- useMe: pub-sub listener pattern für app-weite avatar/nickname-Updates
- dm.tsx: resolveAvatar wrap (iron.png-Warning)
- Mail-error-humanizer + locales

Recovery-Doc-Update in docs/internal/RECOVERY_LOG_2026-05-10.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 23:59:25 +02:00

53 lines
3.2 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 140 56">
<defs>
<radialGradient id="rb-glow" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#ffcc44" stop-opacity="1"/>
<stop offset="25%" stop-color="#ff9900" stop-opacity="0.85"/>
<stop offset="55%" stop-color="#ff6600" stop-opacity="0.45"/>
<stop offset="100%" stop-color="#ff3300" stop-opacity="0"/>
</radialGradient>
<linearGradient id="rb-metal" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="#c8d8ea"/>
<stop offset="30%" stop-color="#8898aa"/>
<stop offset="60%" stop-color="#566070"/>
<stop offset="100%" stop-color="#a0b4c4"/>
</linearGradient>
<linearGradient id="rb-shine" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="rgba(220,240,255,0.55)"/>
<stop offset="100%" stop-color="rgba(220,240,255,0)"/>
</linearGradient>
</defs>
<circle cx="70" cy="28" r="26" fill="url(#rb-glow)" opacity="0.95"/>
<g stroke="#ffcc44" stroke-linecap="round">
<line x1="70" y1="2" x2="70" y2="54" stroke-width="1.6"/>
<line x1="44" y1="28" x2="96" y2="28" stroke-width="1.6"/>
<line x1="51" y1="9" x2="89" y2="47" stroke-width="1.2"/>
<line x1="89" y1="9" x2="51" y2="47" stroke-width="1.2"/>
<line x1="58" y1="4" x2="56" y2="1" stroke-width="0.9" opacity="0.7"/>
<line x1="82" y1="4" x2="84" y2="1" stroke-width="0.9" opacity="0.7"/>
<line x1="94" y1="16" x2="97" y2="14" stroke-width="0.9" opacity="0.7"/>
<line x1="94" y1="40" x2="97" y2="42" stroke-width="0.9" opacity="0.7"/>
<line x1="82" y1="52" x2="84" y2="55" stroke-width="0.9" opacity="0.7"/>
<line x1="58" y1="52" x2="56" y2="55" stroke-width="0.9" opacity="0.7"/>
<line x1="46" y1="40" x2="43" y2="42" stroke-width="0.9" opacity="0.7"/>
<line x1="46" y1="16" x2="43" y2="14" stroke-width="0.9" opacity="0.7"/>
</g>
<circle cx="61" cy="4" r="1.4" fill="#ffcc44" opacity="0.85"/>
<circle cx="79" cy="4" r="1.1" fill="#ffcc44" opacity="0.75"/>
<circle cx="96" cy="10" r="1.0" fill="#ffcc44" opacity="0.70"/>
<circle cx="98" cy="45" r="1.3" fill="#ffcc44" opacity="0.75"/>
<circle cx="62" cy="51" r="1.5" fill="#ffcc44" opacity="0.80"/>
<circle cx="44" cy="42" r="1.0" fill="#ffcc44" opacity="0.65"/>
<ellipse cx="24" cy="28" rx="16" ry="10.5" fill="none" stroke="url(#rb-metal)" stroke-width="6"/>
<ellipse cx="24" cy="24" rx="11" ry="4.5" fill="none" stroke="url(#rb-shine)" stroke-width="3"/>
<ellipse cx="46" cy="28" rx="16" ry="10.5" fill="none" stroke="url(#rb-metal)" stroke-width="6"/>
<ellipse cx="46" cy="24" rx="11" ry="4.5" fill="none" stroke="url(#rb-shine)" stroke-width="3"/>
<ellipse cx="94" cy="28" rx="16" ry="10.5" fill="none" stroke="url(#rb-metal)" stroke-width="6"/>
<ellipse cx="94" cy="24" rx="11" ry="4.5" fill="none" stroke="url(#rb-shine)" stroke-width="3"/>
<ellipse cx="116" cy="28" rx="16" ry="10.5" fill="none" stroke="url(#rb-metal)" stroke-width="6"/>
<ellipse cx="116" cy="24" rx="11" ry="4.5" fill="none" stroke="url(#rb-shine)" stroke-width="3"/>
<circle cx="70" cy="28" r="5" fill="#ffaa00"/>
<circle cx="70" cy="28" r="2.8" fill="#ffdd88"/>
<circle cx="70" cy="28" r="1.2" fill="#fffbe0"/>
</svg>