// Single source of truth for the landing page's *non-translatable* config:
// domains, URLs, theme, launcher files, and the structural shape of the
// stat/feature lists. Translatable copy lives in src/i18n/ui.ts.
// BASE_DOMAIN is read at build time; falls back to ulicraft.local.
const BASE_DOMAIN = process.env.BASE_DOMAIN ?? "ulicraft.local";

// Minecraft / pack facts, surfaced in a few places.
const MC_VERSION = "1.21.1";

export const site = {
  name: "Ulicraft",
  baseDomain: BASE_DOMAIN,
  mcVersion: MC_VERSION,

  // Design knobs (replace the design's in-browser TweaksPanel). Baked at build.
  //   mood:     "grass" | "nether" | "end"
  //   hero:     "centered" | "split" | "spotlight"
  //   headFont: "pixelify" | "8bit" | "silkscreen"
  //   dust:     floating pixel particles in the hero
  theme: {
    mood: "grass",
    hero: "centered",
    headFont: "pixelify",
    dust: true,
  },

  // Connect target shown to guests. No port needed — a dnsmasq SRV record
  // (_minecraft._tcp.mc.<domain>) points clients at 25565.
  serverAddress: `mc.${BASE_DOMAIN}`,

  // Drasl auth web UI + authlib-injector API root.
  authUrl: `http://auth.${BASE_DOMAIN}`,
  authlibUrl: `http://auth.${BASE_DOMAIN}/authlib-injector`,

  // packwiz modpack entrypoint.
  packwizUrl: `http://packwiz.${BASE_DOMAIN}/pack.toml`,

  // Caddy local CA root — guests import this to trust the offline asset mirror.
  caCertUrl: `http://${BASE_DOMAIN}/ca.crt`,

  // Static server-list panel (Status section). No fake live count — see plan
  // 09-landing.md option B.
  status: {
    slots: 10,
  },

  // Honest stat tiles. Keys (numbers/versions) are language-neutral; labels
  // come from ui.ts (same order).
  stats: [
    { key: "50+" },
    { key: MC_VERSION },
    { key: "10" },
    { key: "6h" },
  ],

  // Feature cards. glyph ∈ shield|diamond|orb|heart; gold = gold pixel fill.
  // Text (h/p) comes from ui.ts (same order).
  features: [
    { glyph: "diamond", gold: true },
    { glyph: "shield", gold: false },
    { glyph: "orb", gold: false },
    { glyph: "heart", gold: true },
  ],

  // Launcher downloads. Stable filenames are symlinks created by
  // tooling/fetch-launcher.sh — keep these in sync with that script. OS names
  // and hints are technical, kept language-neutral here.
  launcher: {
    name: "Fjord Launcher",
    base: "/launcher/latest",
    downloads: [
      { os: "Windows", file: "fjord-windows-setup.exe", hint: "x64 installer" },
      { os: "macOS", file: "fjord-macos.dmg", hint: "Apple Silicon / Intel" },
      { os: "Linux", file: "fjord-linux-x86_64.AppImage", hint: "x86_64 AppImage" },
    ],
  },
} as const;

// Product / in-game UI literals — never translated (they match what guests see
// on screen or type verbatim).
export const LITERALS = {
  authlib: "authlib-injector",
  multiplayer: "Multiplayer",
  addServer: "Add Server",
} as const;

// Head-font CSS stacks, keyed by theme.headFont.
export const HEAD_FONTS: Record<string, string> = {
  pixelify: "'Pixelify Sans', system-ui, sans-serif",
  "8bit": "'Press Start 2P', monospace",
  silkscreen: "'Silkscreen', system-ui, sans-serif",
};
