diff --git a/src/ui/AppShell.tsx b/src/ui/AppShell.tsx index 952cca6..b120c1a 100644 --- a/src/ui/AppShell.tsx +++ b/src/ui/AppShell.tsx @@ -8,7 +8,13 @@ interface AppShellProps { export function AppShell({ nav, center, right }: AppShellProps) { return ( -
+
{nav}
{center}
{right ? ( diff --git a/src/ui/NavRail.tsx b/src/ui/NavRail.tsx index 050a9e9..35289f2 100644 --- a/src/ui/NavRail.tsx +++ b/src/ui/NavRail.tsx @@ -95,8 +95,8 @@ export function NavRail() { ]; return ( -
-
+
+
IDLEGAME @@ -113,17 +113,17 @@ export function NavRail() { key={item.id} type="button" onClick={() => gameRuntime.setActivePanel(item.id)} - className={`relative flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2.5 text-sm font-medium transition-all duration-200 ${ + className={`relative flex cursor-pointer items-center justify-center md:justify-start gap-3 rounded-lg px-2.5 py-2.5 md:px-3 text-sm font-medium transition-all duration-200 ${ isActive ? 'border border-amber-500/30 bg-amber-500/10 text-amber-400' : 'border border-transparent text-slate-400 hover:bg-slate-900/60 hover:text-slate-200' }`} > {item.icon} - {item.label} + {item.label} {item.id === 'story' && storyHasUnread ? (
-

Log

diff --git a/src/ui/SettingsDrawer.tsx b/src/ui/SettingsDrawer.tsx deleted file mode 100644 index 0d467ff..0000000 --- a/src/ui/SettingsDrawer.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { ActionDetailMode, StoryOpenMode } from '../state/prefs'; -import { useGameStore } from '../state/store'; - -/** Preference panel toggled from the header gear; changes persist immediately. */ -export function SettingsDrawer() { - const open = useGameStore((s) => s.settingsOpen); - const prefs = useGameStore((s) => s.prefs); - const setPrefs = useGameStore((s) => s.setPrefs); - - if (!open) return null; - - return ( -
- - -
- ); -} diff --git a/src/ui/StoryPanel.tsx b/src/ui/StoryPanel.tsx deleted file mode 100644 index 97481f2..0000000 --- a/src/ui/StoryPanel.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { gameRuntime } from '../state/runtime'; -import { useGameStore } from '../state/store'; - -/** Full-screen VN overlay with prose, choices, and desktop story log sidebar. */ -export function StoryPanel() { - const open = useGameStore((s) => s.storyPanelOpen); - const story = useGameStore((s) => s.story); - const storyLog = useGameStore((s) => s.storyLog); - - if (!open) return null; - - const hasChoices = story.choices.length > 0; - - return ( -
-
- -
-

{story.currentProse}

- {hasChoices ? ( -
- {story.choices.map((choice) => ( - - ))} -
- ) : ( - - )} - -
-
-
- ); -} diff --git a/src/ui/StoryView.tsx b/src/ui/StoryView.tsx index ec7c2bf..609e50b 100644 --- a/src/ui/StoryView.tsx +++ b/src/ui/StoryView.tsx @@ -8,9 +8,9 @@ export function StoryView() { const hasChoices = story.choices.length > 0; return ( -
+
{/* Story Log Section */} -
+

Story Log

@@ -34,7 +34,7 @@ export function StoryView() {
{/* Active Node Section */} -
+

{story.currentProse ||