import { AnimatedBackground } from './AnimatedBackground'; import { FocusContext, useFocusable } from '@noriginmedia/norigin-spatial-navigation'; import { HeaderUI } from './Header'; import { GameList, GameListFilter } from './GameList'; import { Search, Settings2 } from 'lucide-react'; import { JSX, Suspense } from 'react'; import Shortcuts from './Shortcuts'; import { AutoFocus } from './AutoFocus'; import { GamePadButtonCode, useShortcutContext, useShortcuts } from '../scripts/shortcuts'; import { Router } from '..'; import { PopSource } from '../scripts/spatialNavigation'; import { GameListFilterType } from '@/shared/constants'; import { GameCardFocusHandler } from './GameCard'; export interface CollectionsDetailParams { id?: string; setBackground: (url: string) => void; filters?: GameListFilterType; headerTitle?: JSX.Element; title?: JSX.Element; footer?: JSX.Element; } function HandleGoBack () { const source = PopSource('game-list'); if (source) { console.log("Found source ", source, " to go back to"); } Router.navigate({ to: source ?? "/", viewTransition: { types: ['zoom-out'] } }); } export function CollectionsDetail (data: CollectionsDetailParams) { const focusKey = `game-list-${data.id}-${data.filters ? Object.values(data.filters).map(f => String(f)).join(",") : ''}`; const { ref, focusSelf } = useFocusable({ focusKey, preferredChildFocusKey: `${focusKey}-list`, }); useShortcuts(focusKey, () => [{ label: "Back", button: GamePadButtonCode.B, action: HandleGoBack }]); const { shortcuts } = useShortcutContext(); const handleScroll: GameCardFocusHandler = (id, node, details) => { if (!(details.nativeEvent instanceof MouseEvent)) { node.scrollIntoView({ block: 'center', behavior: 'smooth' }); } }; return (
}, { id: "filter", icon: }]} />
{data.title}
); }