Files
shadow-gunbuilder-ai-proto/types/gunbuilder.ts
T

84 lines
1.6 KiB
TypeScript

// Grouping for nav + layout
export type CategoryGroup = "lower" | "upper" | "accessories";
export type CategoryId =
| "upper"
| "completeUpper"
| "barrel"
| "gasBlock"
| "gasTube"
| "muzzleDevice"
| "suppressor"
| "handguard"
| "chargingHandle"
| "bcg"
| "buffer"
| "lower"
| "completeLower"
| "lowerParts"
| "trigger"
| "grip"
| "safety"
| "sights"
| "optic"
| "stock"
// NEW ACCESSORY CATEGORIES
| "magazine"
| "weaponLight"
| "foregrip"
| "bipod"
| "sling"
| "railAccessory"
| "tools";
export interface Category {
id: CategoryId;
name: string;
description?: string;
/** used for nav & grouping */
group?: CategoryGroup;
}
export interface Part {
id: string;
name: string;
brand: string;
categoryId: CategoryId;
price: number;
affiliateUrl?: string;
url?: string;
imageUrl?: string;
notes?: string;
}
export const CATEGORY_SLUGS: Record<CategoryId, string> = {
lower: "lower",
completeLower: "complete-lower",
lowerParts: "lower-parts",
trigger: "trigger",
grip: "grip",
safety: "safety",
buffer: "buffer",
stock: "stock",
upper: "upper",
completeUpper: "complete-upper",
barrel: "barrel",
handguard: "handguard",
gasBlock: "gas-block",
gasTube: "gas-tube",
muzzleDevice: "muzzle-device",
sights: "sights",
bcg: "bcg",
chargingHandle: "charging-handle",
suppressor: "suppressor",
optic: "optic",
magazine: "magazine",
weaponLight: "weapon-light",
foregrip: "foregrip",
bipod: "bipod",
sling: "sling",
railAccessory: "rail-accessory",
tools: "tools",
};