{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "avatarzone", "type": "registry:component", "title": "AvatarZone", "description": "Componente Concorde AvatarZone — un solo archivo, AvatarZone.tsx.", "dependencies": [ "react" ], "registryDependencies": [], "files": [ { "path": "components/AvatarZone.tsx", "type": "registry:file", "target": "components/AvatarZone.tsx", "content": "\"use client\";\n\n/**\n * AvatarZone — Generado por Concorde\n * Fuente: Figma VOYAGER · \"Avatar Zone\" (nodo 2035:16583)\n *\n * Avatar circular 32×32: relleno gradiente naranja (#FF9639 → #EF852E → #BE3D00)\n * con silueta de persona blanca centrada. Tamaño personalizable:\n * \"sm\" (24px) · \"md\" (32px) · o número de px.\n */\n\nimport { useId } from \"react\";\nimport type { JSX } from \"react\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type AvatarZoneSize = \"sm\" | \"md\";\n\nexport interface AvatarZoneProps {\n /** Tamaño: \"sm\"=24px · \"md\"=32px · o número de px (default \"md\") */\n size?: AvatarZoneSize | number;\n /** Texto accesible — si se omite, el avatar es decorativo (aria-hidden) */\n title?: string;\n className?: string;\n}\n\nconst SIZE_PX: Record = { sm: 24, md: 32 };\n\nconst CIRCLE_PATH =\n \"M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z\";\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport default function AvatarZone({ size = \"md\", title, className = \"\" }: AvatarZoneProps): JSX.Element {\n const uid = useId().replace(/:/g, \"-\");\n const px = typeof size === \"number\" ? size : SIZE_PX[size];\n\n return (\n \n {title ? {title} : null}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n" } ] }