{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "detalle", "type": "registry:block", "title": "detalle", "description": "Bloque Concorde detalle — incluye sus 8 componentes.", "dependencies": [ "react" ], "registryDependencies": [], "files": [ { "path": "bloques/detalle/desktop/Detalle.tsx", "type": "registry:file", "target": "bloques/detalle/desktop/Detalle.tsx", "content": "/**\n * Detalle — Bloque de Concorde (Voyager DS)\n *\n * Página de detalle. Por ahora es solo el lienzo base: un fondo blanco de\n * 799 × 1483. Iremos montando las secciones encima.\n */\n\nimport type { JSX } from \"react\";\nimport AuctionStatus from \"../../../components/AuctionStatus\";\nimport CardViewer from \"../../../components/CardViewer\";\nimport Accordion from \"../../../components/Accordion\";\nimport DetailCard from \"../../../components/DetailCard\";\nimport ConditionPill from \"../../../components/ConditionPill\";\nimport Button, { CalendarIcon } from \"../../../components/Button\";\nimport CardTitle from \"../../../components/CardTitle\";\nimport OfferCard from \"../../../components/OfferCard\";\nimport { DETALLE_PILLS, type DetalleVariant } from \"../pills\";\n\n// Título del accordion VISITAS · dot verde + texto (CardTitle acepta nodos)\nconst VISITAS_TITLE = (\n \n \n VISITAS\n \n);\n\n// Cada ConditionPill mide 136×46 fijo (hug del Figma), no se estira. Padding\n// lateral 10px y texto 12px/14px para que las etiquetas largas (p.ej. «Cuota\n// mínima de 2 participantes») entren en ese ancho. `.pcondpill.dt-pill` gana en\n// especificidad al `.pcondpill` base.\nconst DETALLE_PILL_STYLES = `\n.pcondpill.dt-pill { width: 136px; box-sizing: border-box; padding-left: 10px; padding-right: 10px; font-size: 12px; line-height: 14px; }\n/* Pill solitaria en fila impar (3 pills) → centrada */\n.pcondpill.dt-pill.dt-pill-c { grid-column: 1 / -1; justify-self: center; }\n`;\n\nconst DETALLE_IMAGES = Array.from({ length: 8 }, function img() { return \"/demo/bronco.jpg\"; });\n\nexport interface DetalleProps {\n /** Variante de la oferta — controla AuctionStatus/CardViewer/DetailCard y los pills. */\n variant?: DetalleVariant;\n className?: string;\n}\n\nimport { DETALLE_WIDTH, DETALLE_HEIGHT } from \"./dimensions\";\nexport { DETALLE_WIDTH, DETALLE_HEIGHT } from \"./dimensions\";\n\nexport default function Detalle({ variant = \"live\", className = \"\" }: DetalleProps): JSX.Element {\n return (\n \n {/* Fila de 2 columnas alineadas por arriba (top 16). El AuctionStatus (header\n del carro) va DENTRO de la columna izquierda, pegado al CardViewer, así su\n top coincide con el del DetailCard de la derecha (ambas columnas empiezan\n a la misma altura). */}\n