+
+
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 ? (
) : null}
@@ -132,7 +132,7 @@ export function NavRail() {
})}
-
diff --git a/src/ui/PlayPanel.tsx b/src/ui/PlayPanel.tsx
index 01e5623..788e26b 100644
--- a/src/ui/PlayPanel.tsx
+++ b/src/ui/PlayPanel.tsx
@@ -1,9 +1,17 @@
import { ActionPanel } from './ActionPanel';
+import { EventLog } from './EventLog';
+import { ResourceBar } from './ResourceBar';
export function PlayPanel() {
return (
);
}
diff --git a/src/ui/RightRail.tsx b/src/ui/RightRail.tsx
index 3c0cc8c..453fc04 100644
--- a/src/ui/RightRail.tsx
+++ b/src/ui/RightRail.tsx
@@ -11,7 +11,6 @@ export function RightRail() {
-
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 */}
-