{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "businessicon", "type": "registry:component", "title": "BusinessIcon", "description": "Componente Concorde BusinessIcon — un solo archivo, BusinessIcon.tsx.", "dependencies": [ "react" ], "registryDependencies": [], "files": [ { "path": "components/BusinessIcon.tsx", "type": "registry:file", "target": "components/BusinessIcon.tsx", "content": "\"use client\";\n\nimport { useId, useState } from \"react\";\nimport type { JSX } from \"react\";\n\nexport interface BusinessIconProps {\n size?: number;\n /** Controlled visual state — omit to let the icon track its own hover/active */\n state?: \"default\" | \"hover\" | \"active\";\n title?: string;\n className?: string;\n}\n\nexport default function BusinessIcon({ size = 24, state: controlled, title, className = \"\" }: BusinessIconProps): JSX.Element {\n const uid = useId().replace(/:/g, \"-\");\n const [hovered, setHovered] = useState(false);\n const [pressed, setPressed] = useState(false);\n\n const resolved = controlled ?? (pressed ? \"active\" : hovered ? \"hover\" : \"default\");\n const isActive = resolved === \"active\";\n const isHover = resolved === \"hover\";\n const paint = isActive ? \"white\" : `url(#${uid}g)`;\n\n const handlers = controlled ? {} : {\n onMouseEnter: () => setHovered(true),\n onMouseLeave: () => { setHovered(false); setPressed(false); },\n onMouseDown: () => setPressed(true),\n onMouseUp: () => setPressed(false),\n };\n\n return (\n \n {title && {title}}\n\n {!isActive && (\n \n {isHover ? (\n \n \n \n \n \n ) : (\n \n \n \n \n \n \n )}\n \n )}\n\n {/* Building — stroke-based icon */}\n \n \n );\n}\n" } ] }