import { twMerge } from "tailwind-merge"; import { FrontEndEmulator, RPC_URL } from "@/shared/constants"; import { Button } from "../options/Button"; import useActiveControl from "@/mainview/scripts/gamepads"; import { useFocusable } from "@noriginmedia/norigin-spatial-navigation"; import { GamePadButtonCode, useShortcuts } from "@/mainview/scripts/shortcuts"; import { ChevronRight, EllipsisVertical, HardDrive } from "lucide-react"; import { FOCUS_KEYS } from "@/mainview/scripts/types"; export function StoreEmulatorCard (data: { id: string; emulator: FrontEndEmulator; onSelect?: (id: string, focusKey: string) => void; onFocus?: (data: { id: string; node: HTMLElement; details: Record; }) => void; className?: string; }) { const handleSelect = () => data.onSelect?.(data.emulator.name, focusKey); const { ref, focusKey } = useFocusable({ focusKey: FOCUS_KEYS.EMULATOR_CARD(data.id), onEnterPress: handleSelect, onFocus: (_l, _p, details) => { data.onFocus?.({ id: data.emulator.name, node: ref.current as HTMLElement, details }); } }); useShortcuts(focusKey, () => [{ button: GamePadButtonCode.A, label: "Details", action: handleSelect }], [handleSelect]); const { isMouse, isTouch } = useActiveControl(); return (

{data.emulator.name}

    {data.emulator.systems.map(({ id, name, icon }) => { return
    {!!icon && }

    {name}

    ; })}
{data.emulator.exists &&
} {
{data.emulator.gameCount}
} {isMouse && <> }
); }