/** * layer-graph — maps each TAB id to its page component + pane count. * * Split out of `navigation.ts` so that the nav-model primitives (TABS, * TabsCount, DEPTH_TABS, rootFrameFor, TabPaneCount, PANE_RATIO) in * `navigation.ts` stay free of any `.tsx` / JSX imports. This lets unit tests * import the pure navigation store without pulling the OpenTUI JSX runtime * (which is only provided by the build-time @opentui/solid bun-plugin). * * The page modules live alongside their pages and export `PaneCount` * constants describing how many focusable panes each fixed page owns. */ import { DiscoverPage, DiscoverPaneCount, } from "@/pages/Discover/DiscoverPage"; import { FeedPage, FeedPaneCount } from "@/pages/Feed/FeedPage"; import { MyShowsPage, MyShowsPaneCount, } from "@/pages/MyShows/MyShowsPage"; import { PlayerPage, PlayerPaneCount } from "@/pages/Player/PlayerPage"; import { SearchPage, SearchPaneCount } from "@/pages/Search/SearchPage"; import { SettingsPage, SettingsPaneCount, } from "@/pages/Settings/SettingsPage"; import { TABS } from "@/utils/navigation"; /** Maps a TAB id to the page component that renders it. */ export const LayerGraph = { [TABS.FEED]: FeedPage, [TABS.MYSHOWS]: MyShowsPage, [TABS.DISCOVER]: DiscoverPage, [TABS.SEARCH]: SearchPage, [TABS.PLAYER]: PlayerPage, [TABS.SETTINGS]: SettingsPage, }; /** Per-tab focusable-pane counts (forwarded from each page's `*PaneCount`). */ export const LayerDepths = { [TABS.FEED]: FeedPaneCount, [TABS.MYSHOWS]: MyShowsPaneCount, [TABS.DISCOVER]: DiscoverPaneCount, [TABS.SEARCH]: SearchPaneCount, [TABS.PLAYER]: PlayerPaneCount, [TABS.SETTINGS]: SettingsPaneCount, };