import type { SystemId } from "./types";

export type ConsoleUiKind =
  | "ps3-xmb"
  | "psp-xmb"
  | "nes"
  | "snes"
  | "n64"
  | "gb"
  | "gbc"
  | "gba"
  | "nds"
  | "genesis"
  | "sms"
  | "gg"
  | "saturn"
  | "segacd"
  | "arcade"
  | "atari2600"
  | "vb";

export interface ConsoleTheme {
  kind: ConsoleUiKind;
  label: string;
  tagline: string;
  /** CSS class hook on the shell root */
  className: string;
}

export const CONSOLE_THEMES: Record<SystemId, ConsoleTheme> = {
  psx: {
    kind: "ps3-xmb",
    label: "PlayStation",
    tagline: "Cross Media Bar",
    className: "theme-ps3",
  },
  psp: {
    kind: "psp-xmb",
    label: "PSP",
    tagline: "XrossMediaBar",
    className: "theme-psp",
  },
  nes: {
    kind: "nes",
    label: "Nintendo Entertainment System",
    tagline: "Select a cartridge",
    className: "theme-nes",
  },
  snes: {
    kind: "snes",
    label: "Super Nintendo",
    tagline: "Mode 7 ready",
    className: "theme-snes",
  },
  n64: {
    kind: "n64",
    label: "Nintendo 64",
    tagline: "Get N or get out",
    className: "theme-n64",
  },
  gb: {
    kind: "gb",
    label: "Game Boy",
    tagline: "Dot matrix library",
    className: "theme-gb",
  },
  gbc: {
    kind: "gbc",
    label: "Game Boy Color",
    tagline: "Color cartridge select",
    className: "theme-gbc",
  },
  gba: {
    kind: "gba",
    label: "Game Boy Advance",
    tagline: "AGS library",
    className: "theme-gba",
  },
  nds: {
    kind: "nds",
    label: "Nintendo DS",
    tagline: "Touch to select",
    className: "theme-nds",
  },
  genesis: {
    kind: "genesis",
    label: "Sega Genesis",
    tagline: "Blast Processing",
    className: "theme-genesis",
  },
  sms: {
    kind: "sms",
    label: "Master System",
    tagline: "Sega card shelf",
    className: "theme-sms",
  },
  gg: {
    kind: "gg",
    label: "Game Gear",
    tagline: "Portable color",
    className: "theme-gg",
  },
  saturn: {
    kind: "saturn",
    label: "Sega Saturn",
    tagline: "Disc select",
    className: "theme-saturn",
  },
  segacd: {
    kind: "segacd",
    label: "Sega CD",
    tagline: "CD-ROM library",
    className: "theme-segacd",
  },
  arcade: {
    kind: "arcade",
    label: "Arcade",
    tagline: "Insert coin",
    className: "theme-arcade",
  },
  atari2600: {
    kind: "atari2600",
    label: "Atari 2600",
    tagline: "Woodgrain & switches",
    className: "theme-atari",
  },
  vb: {
    kind: "vb",
    label: "Virtual Boy",
    tagline: "Red LED world",
    className: "theme-vb",
  },
};

export function getConsoleTheme(id: SystemId): ConsoleTheme {
  return CONSOLE_THEMES[id];
}
