// 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 = { 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", };