Add Nebula guide sidebar and navigation
Introduce a new Xbox-style guide (rail + expanded panel) to the shell: adds guideSidebar component, data model, styles, and panel overlay (src/core/guideSidebar.js, src/core/sidebarData.js, src/styles/guide.css, src/views/overlays/guidePanel.*). Integrates the guide into the app lifecycle and routing (main.js): mounts the guide, remaps focus roots, adds guide open/close behavior, and registers placeholder views for store/mods. Input and navigation updated to support a dedicated "guide" action and region (src/core/input.js, src/core/nav.js) so focus movement and acceptance work inside the guide. index.html updated to mount the guide and include templates/styles; base/component CSS adjusted to accommodate the new mount and focus states. Misc: adds a placeholder view and wiring for guide panel overlays and tweaks power menu handling to cooperate with the guide.
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/** Primary shell navigation (data-driven). */
|
||||
export const PRIMARY_NAV = [
|
||||
{ id: "home", label: "Home", icon: "⌂", target: "home" },
|
||||
{ id: "library", label: "Library", icon: "⊟", target: "library" },
|
||||
{ id: "store", label: "Store", icon: "⊞", target: "store" },
|
||||
{ id: "mods", label: "Mods", icon: "◇", target: "mods" },
|
||||
{ id: "settings", label: "Settings", icon: "⚙", target: "settings" },
|
||||
];
|
||||
|
||||
/** Quick actions in the expanded guide. */
|
||||
export const QUICK_ACTIONS = [
|
||||
{ id: "search", label: "Search", icon: "⌕", panel: "search" },
|
||||
{ id: "notifications", label: "Notifications", icon: "🔔", panel: "notifications" },
|
||||
{ id: "downloads", label: "Downloads", icon: "↓", panel: "downloads" },
|
||||
{ id: "controller", label: "Controller Settings", icon: "🎮", panel: "controller" },
|
||||
{ id: "power", label: "Power Menu", icon: "⏻", action: "power" },
|
||||
];
|
||||
|
||||
/** Mock recently played titles (replace with library bridge later). */
|
||||
export const RECENT_ITEMS = [
|
||||
{
|
||||
id: "recent-halo",
|
||||
title: "Halo Infinite",
|
||||
source: "steam",
|
||||
lastPlayed: "2 hours ago",
|
||||
accent: "#1e4a6e",
|
||||
},
|
||||
{
|
||||
id: "recent-cyber",
|
||||
title: "Cyberpunk 2077",
|
||||
source: "gog",
|
||||
lastPlayed: "Yesterday",
|
||||
accent: "#5c1a3a",
|
||||
},
|
||||
{
|
||||
id: "recent-fortnite",
|
||||
title: "Fortnite",
|
||||
source: "epic",
|
||||
lastPlayed: "3 days ago",
|
||||
accent: "#2a3a5c",
|
||||
},
|
||||
{
|
||||
id: "recent-emulator",
|
||||
title: "Nebula Arcade",
|
||||
source: "local",
|
||||
lastPlayed: "Last week",
|
||||
accent: "#1a3c2e",
|
||||
},
|
||||
];
|
||||
|
||||
export const SOURCE_LABELS = {
|
||||
steam: "Steam",
|
||||
gog: "GOG",
|
||||
epic: "Epic",
|
||||
local: "Local",
|
||||
};
|
||||
|
||||
export const NAVIGABLE_VIEWS = new Set(PRIMARY_NAV.map((item) => item.target));
|
||||
Reference in New Issue
Block a user