games: per-game pages, games.library table, games group in header/tiles/start
All checks were successful
Deploy production / deploy (push) Successful in 1m7s
All checks were successful
Deploy production / deploy (push) Successful in 1m7s
This commit is contained in:
@@ -39,6 +39,10 @@ type Tracker = {
|
||||
external: boolean;
|
||||
/** Sub-trackers linked directly from this item (header flyout, tile chips). */
|
||||
children?: readonly Tracker[];
|
||||
/** Icon key in #lib/tracker-icons when it differs from `name` (games). */
|
||||
icon?: string;
|
||||
/** Shown on group tiles before the "more" chip (main and actively played games). */
|
||||
featured?: boolean;
|
||||
};
|
||||
|
||||
// The spotting trackers: pokedexes of things I can spot in the wild. Grouped under one
|
||||
@@ -72,6 +76,37 @@ export const spottingTrackers: readonly Tracker[] = [
|
||||
}
|
||||
];
|
||||
|
||||
// Games I play (plus speedcubing), grouped under "games" like spotting: every game has its
|
||||
// own page at /trackers/games/<slug>, one click away from the header flyout and the chips.
|
||||
// `featured` games (my main game and the ones I actively play) show first on tiles; the
|
||||
// rest sit behind a "more" chip. Data per game lives in games.library (same slugs).
|
||||
const game = (slug: string, name: string, subtitle: string, featured = false): Tracker => ({
|
||||
name,
|
||||
subtitle,
|
||||
href: `/trackers/games/${slug}`,
|
||||
external: false,
|
||||
icon: `game-${slug}`,
|
||||
...(featured ? { featured } : {})
|
||||
});
|
||||
export const gameTrackers: readonly Tracker[] = [
|
||||
game('osu', 'osu!', 'rhythm game, my main focus right now', true),
|
||||
game('cs2', 'cs2', 'Counter-Strike 2 (CS:GO)', true),
|
||||
game('pubg', 'pubg', 'PUBG: Battlegrounds', true),
|
||||
game('r6', 'r6 siege', 'Tom Clancy’s Rainbow Six Siege', true),
|
||||
game('tarkov', 'tarkov', 'Escape from Tarkov', true),
|
||||
game('bo2', 'bo2', 'Call of Duty: Black Ops II', true),
|
||||
game('valorant', 'valorant', 'Riot’s tactical shooter', false),
|
||||
game('lol', 'league', 'League of Legends', false),
|
||||
game('overwatch', 'overwatch 2', 'Blizzard’s hero shooter', false),
|
||||
game('minecraft', 'minecraft', 'blocks, mining and building', false),
|
||||
game('factorio', 'factorio', 'factory building and automation', false),
|
||||
game('ksp', 'ksp', 'Kerbal Space Program', false),
|
||||
game('smash', 'smash bros', 'Super Smash Bros.', false),
|
||||
game('cubing', 'speedcubing', 'Rubik’s cube solving, not a video game', false),
|
||||
game('pokemon', 'pokémon', 'catching them all across the games', false),
|
||||
game('sot', 'sea of thieves', 'pirate sandbox', false)
|
||||
];
|
||||
|
||||
// Trackers, in display order. Names are short single nouns. Most keep their existing
|
||||
// /projects/... URLs (no moves, so no redirects needed). `private` trackers are shown in the
|
||||
// header, home page and /trackers only to the logged-in owner (layout data `isOwner`), never
|
||||
@@ -153,6 +188,7 @@ const allTrackers: readonly (Tracker & { private: boolean })[] = [
|
||||
subtitle: 'every pokemon in every game, and call of duty camo mastery',
|
||||
href: '/projects/game-tracker',
|
||||
external: false,
|
||||
children: gameTrackers,
|
||||
private: false
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user