diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 0b53aaa..b225c12 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -19,12 +19,17 @@ const SetupsPage = lazy(() => import('./pages/SetupsPage')); const SetupPage = lazy(() => import('./pages/SetupPage')); export default function App() { - const { pathname } = useLocation(); + const pathname = useLocation().pathname; const isModRoute = pathname.startsWith('/mod/'); + // The inspector view is full-bleed/viewport-height; the setup sub-route keeps the standard centered layout. + const isModView = /^\/mod\/[^/]+$/.test(pathname); return (
-
+ {/* For the mod route the layout is full-bleed and fills the viewport so + the sidebar can scroll independently and the viewer gets all the space. */} +
+
{isModRoute ? ( ) : ( @@ -43,7 +48,7 @@ export default function App() {
)}
-
+
} /> } /> @@ -65,6 +70,7 @@ export default function App() { } />
+
); } \ No newline at end of file diff --git a/apps/web/src/components/ObjectTree.tsx b/apps/web/src/components/ObjectTree.tsx index 407736e..10d009e 100644 --- a/apps/web/src/components/ObjectTree.tsx +++ b/apps/web/src/components/ObjectTree.tsx @@ -32,44 +32,51 @@ export default function ObjectTree({ nodes, selectedPath, onSelect }: Props) { const clearAll = () => setHighlighted(new Set()); return ( -
+
{types.length > 0 && ( -
- {types.map(({ name, count }) => { - const active = highlighted.has(name); - return ( - - ); - })} + + {count} + + + ); + })} +
{highlighted.size > 0 && ( - +
+ +
)}
)} -