"use client"; /** * Custom inline-SVG avatar art — a "pantheon" of gods & legends rendered as * heraldic medallions (gradient disc + gold ring + a bold mythic emblem). * Keyed by the same avatar ids used in types.ts AVATARS, so owned avatars keep * working; the Avatar component renders this when art exists, else falls back to * the emoji. No external assets. */ type Emblem = | "crown" | "trident" | "bolt" | "sun" | "eye" | "ankh" | "lion" | "eagle" | "owl" | "helmet" | "phoenix" | "laurel" | "star8" | "flame" | "moon" | "dragon" | "wings" | "skull" | "gem" | "lyre"; interface AvatarArt { nameFa: string; nameEn: string; c1: string; // disc gradient (top) c2: string; // disc gradient (bottom) ring: string; // ring / accent em: Emblem; emColor: string; } /* ----------------------------- emblems ------------------------------- */ // Each emblem is drawn for a 100×100 viewBox, roughly centred in 28..72, // using currentColor so the wrapper sets the tint. const EMBLEMS: Record = { crown: ( ), trident: ( <> ), bolt: , sun: ( <> ), eye: ( <> ), ankh: ( <> ), lion: ( <> ), eagle: ( <> ), owl: ( <> ), helmet: ( <> ), phoenix: ( <> ), laurel: ( <> ), star8: ( ), flame: , moon: ( <> ), dragon: ( <> ), wings: ( <> ), skull: ( <> ), gem: ( <> ), lyre: ( <> ), }; /* --------------- pantheon: id → god/legend + palette ----------------- */ const PANTHEON: [string, AvatarArt][] = [ ["a-fox", { nameFa: "آتنا", nameEn: "Athena", c1: "#1f7a6e", c2: "#0c2e2a", ring: "#f4d27a", em: "owl", emColor: "#f6e7b6" }], ["a-lion", { nameFa: "شیردل", nameEn: "Leonidas", c1: "#b5701c", c2: "#3a2207", ring: "#ffd98a", em: "lion", emColor: "#ffe9b0" }], ["a-owl", { nameFa: "هرمس", nameEn: "Hermes", c1: "#2f6fb0", c2: "#0e2240", ring: "#cfe2ff", em: "wings", emColor: "#eaf3ff" }], ["a-cat", { nameFa: "باستت", nameEn: "Bastet", c1: "#1d8f86", c2: "#0a2b29", ring: "#ffd98a", em: "ankh", emColor: "#ffe9b0" }], ["a-tiger", { nameFa: "آرش", nameEn: "Arash", c1: "#a8431f", c2: "#34110a", ring: "#ffb27a", em: "eagle", emColor: "#ffe0c2" }], ["a-panda", { nameFa: "تور", nameEn: "Thor", c1: "#566b86", c2: "#161f2e", ring: "#bcd0ff", em: "bolt", emColor: "#eef4ff" }], ["a-bear", { nameFa: "اودین", nameEn: "Odin", c1: "#475569", c2: "#13151b", ring: "#cbd5e1", em: "helmet", emColor: "#eef2f7" }], ["a-eagle", { nameFa: "هوروس", nameEn: "Horus", c1: "#2f7d7a", c2: "#0b2a2c", ring: "#ffd98a", em: "eagle", emColor: "#ffe9b0" }], ["a-wolf", { nameFa: "فِنریر", nameEn: "Fenrir", c1: "#3b4a63", c2: "#11151f", ring: "#9fb4d6", em: "lion", emColor: "#cfd9ec" }], ["a-shark", { nameFa: "پوزایدون", nameEn: "Poseidon", c1: "#1565a8", c2: "#08203a", ring: "#7fd4ff", em: "trident", emColor: "#e6f6ff" }], ["a-dragon", { nameFa: "اژدها", nameEn: "Drakon", c1: "#157a3e", c2: "#082416", ring: "#9af0b0", em: "dragon", emColor: "#dcffe6" }], ["a-unicorn", { nameFa: "سیمرغ", nameEn: "Simorgh", c1: "#b23a6a", c2: "#34101f", ring: "#ffc6dd", em: "phoenix", emColor: "#ffe3ee" }], ["a-peacock", { nameFa: "هرا", nameEn: "Hera", c1: "#136f86", c2: "#07232b", ring: "#7fe0d6", em: "eye", emColor: "#e6fffb" }], ["a-swan", { nameFa: "آفرودیت", nameEn: "Aphrodite", c1: "#9c5bd6", c2: "#2a1340", ring: "#e9c8ff", em: "wings", emColor: "#f6ecff" }], ["a-tophat", { nameFa: "مرلین", nameEn: "Merlin", c1: "#3b3170", c2: "#140e2c", ring: "#c9b6ff", em: "moon", emColor: "#ece2ff" }], ["a-diamond", { nameFa: "ایشتار", nameEn: "Ishtar", c1: "#1f6fae", c2: "#0a1f3a", ring: "#bfe6ff", em: "star8", emColor: "#eaf6ff" }], ["a-moneybag", { nameFa: "پلوتوس", nameEn: "Plutus", c1: "#b58a16", c2: "#3a2a06", ring: "#ffe28a", em: "gem", emColor: "#fff2c2" }], ["a-trophy", { nameFa: "نیکه", nameEn: "Nike", c1: "#b5901c", c2: "#3a2c07", ring: "#ffe9a0", em: "laurel", emColor: "#fff4c8" }], ["a-robot", { nameFa: "تالوس", nameEn: "Talos", c1: "#4a7c8c", c2: "#11242a", ring: "#a8e0ee", em: "gem", emColor: "#e6fbff" }], ["a-wizard", { nameFa: "زئوس", nameEn: "Zeus", c1: "#9a7b2a", c2: "#2e2208", ring: "#ffe79a", em: "bolt", emColor: "#fff6cf" }], ["a-ninja", { nameFa: "شینوبی", nameEn: "Shinobi", c1: "#2b3340", c2: "#0c0f14", ring: "#8f9bb0", em: "skull", emColor: "#dfe5ee" }], ["a-king", { nameFa: "کوروش", nameEn: "Cyrus", c1: "#9a6b1f", c2: "#2f2008", ring: "#ffd98a", em: "wings", emColor: "#ffefc2" }], ["a-genie", { nameFa: "دیو", nameEn: "Djinn", c1: "#7a2ea8", c2: "#260a3a", ring: "#d6a8ff", em: "flame", emColor: "#f1ddff" }], ["a-crown", { nameFa: "شاهنشاه", nameEn: "Shahanshah", c1: "#b58a16", c2: "#3a2a06", ring: "#ffe28a", em: "crown", emColor: "#fff4c8" }], ["a-gem", { nameFa: "اهورا", nameEn: "Ahura", c1: "#1f8fae", c2: "#082a3a", ring: "#9fe8ff", em: "sun", emColor: "#eafbff" }], ]; export const AVATAR_ART: Record = Object.fromEntries(PANTHEON); export function hasAvatarArt(id: string): boolean { return !!AVATAR_ART[id]; } export function avatarArtName(id: string, locale: "fa" | "en"): string | null { const a = AVATAR_ART[id]; return a ? (locale === "fa" ? a.nameFa : a.nameEn) : null; } /** Render a god/legend medallion for the given avatar id (returns null if none). */ export function AvatarArtSvg({ id, size }: { id: string; size: number }) { const a = AVATAR_ART[id]; if (!a) return null; const gid = `avg-${id}`; return ( {EMBLEMS[a.em]} ); }