feat(database): add public game data registries

This commit is contained in:
JB
2026-07-26 00:39:09 -04:00
parent ae6013d9d6
commit 317e5b39bd
12 changed files with 702 additions and 20 deletions
+14
View File
@@ -0,0 +1,14 @@
export const databaseCategories = [
{ slug: 'gear', label: 'Gear', code: 'GEAR', description: 'Equipment slots, base health and armor, tiers, Brand Sets, and talents.' },
{ slug: 'weapons', label: 'Weapons', code: 'WPN', description: 'Weapon families, damage types, tier ranges, handling, talents, and bonuses.' },
{ slug: 'weapon-mods', label: 'Weapon Mods', code: 'WMOD', description: 'Slot and weapon compatibility, quality rolls, secondary pools, and Mod Effects.' },
{ slug: 'gear-mods', label: 'Gear Mods', code: 'GMOD', description: 'Quality-scaled primary rolls and selectable secondary attribute pools.' },
{ slug: 'os-protocols', label: 'OS Protocols', code: 'OSPR', description: 'Quality, core profile, primary effect, and unique upgradeable talent.' },
{ slug: 'talents', label: 'Talents', code: 'TLNT', description: 'Equipment and weapon talents with tiered descriptions and combat mechanics.' },
{ slug: 'brands', label: 'Brands', code: 'BRND', description: 'Brand Set identities and their two-, three-, and four-piece bonuses.' },
{ slug: 'skill-chips', label: 'Skill Chips', code: 'CHIP', description: 'Set bonuses, primary and secondary pools, and quality-scaled unique talents.' }
] as const;
export type DatabaseCategorySlug = typeof databaseCategories[number]['slug'];
export const databaseCategory = (slug: string) => databaseCategories.find((category) => category.slug === slug);
+31
View File
@@ -0,0 +1,31 @@
export type DatabaseBadge = { label: string; tone?: string };
export type DatabaseFact = { label: string; value: string };
export type DatabaseItem = {
id: string;
name: string;
kicker: string;
iconUrl?: string;
gameIcon?: string;
badges?: DatabaseBadge[];
facts: DatabaseFact[];
factLayout?: 'grid' | 'stack';
actions?: Array<{ label: string; href: string }>;
lines?: DatabaseFact[];
iconGroups?: DatabaseIconGroup[];
description?: string;
secondaryDescription?: string;
};
export type DatabaseRelatedItem = {
id: string;
name: string;
iconUrl?: string;
preview?: DatabaseItem;
};
export type DatabaseIconGroup = {
label: string;
items: DatabaseRelatedItem[];
emptyLabel?: string;
};