From baaa89756f8dce41534314b476a4cf39e7e7821a Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Fri, 5 Jun 2026 09:03:32 -0400 Subject: [PATCH] feat(ui): center avatar as hero, ~1/3 viewport height; tools grid below - Avatar now centered in its own row above the tools grid (was crammed in column 1) - KiraAvatar container: min-height 33vh, canvas up to 500px wide - Tools reorganized into 4 columns below: Chat, Timer+Music, Notes+Noise, Clock+Pets+Wardrobe - WelcomeScreen restored to full (not compact) for first-time users --- frontend/src/App.tsx | 57 ++++++++++++++------------ frontend/src/components/KiraAvatar.tsx | 9 ++-- 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index edac050..05651a8 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -80,7 +80,7 @@ export default function App() { if (!identified && !loadingPrefs) { const savedId = localStorage.getItem('kira-user-id'); if (!savedId) { - return ; + return ; } // Has saved ID but not identified yet — show welcome with their name return ( @@ -121,37 +121,29 @@ export default function App() { - {/* Main grid */} -
+ {/* Hero: Avatar centered, ~1/3 of viewport */} +
+
+ +
+
+ + {/* Tools grid below the avatar */} +
- {/* Column 1: Kira + Clock */} -
- - -
- - {/* Column 2: Timer + Music + Notes + WhiteNoise */} -
- - - - -
- - {/* Column 3: Chat + Text Input */} + {/* Column 1: Chat + Text Input */}
{/* Text input fallback */}
- {/* Subtle greeting */}
hey {userName} ✨
@@ -174,8 +166,21 @@ export default function App() {
- {/* Column 4: Cats + Wardrobe */} + {/* Column 2: Timer + Music */}
+ + +
+ + {/* Column 3: Notes + White Noise */} +
+ + +
+ + {/* Column 4: Cats + Wardrobe + Clock */} +
+
diff --git a/frontend/src/components/KiraAvatar.tsx b/frontend/src/components/KiraAvatar.tsx index cd6db08..447d701 100644 --- a/frontend/src/components/KiraAvatar.tsx +++ b/frontend/src/components/KiraAvatar.tsx @@ -55,8 +55,9 @@ export default function KiraAvatar(props: Props) { // Cast needed due to pixi-live2d-display expecting older Ticker type (Live2DModel as any).registerTicker(Ticker as any); - // Responsive sizing - const size = Math.min(container.clientWidth || 260, 260); + // Responsive sizing — fill the container, target ~1/3 viewport + const containerW = container.clientWidth || 400; + const size = Math.min(containerW, 500); const app = new Application({ width: size, height: size * 1.25, @@ -198,12 +199,12 @@ export default function KiraAvatar(props: Props) { }, [props.accessory, live2dReady]); return ( -
+
{/* Live2D canvas */}
{/* SVG fallback */}