{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "register", "type": "registry:block", "title": "register", "description": "Bloque Concorde register — incluye sus 5 componentes.", "dependencies": [ "react" ], "registryDependencies": [], "files": [ { "path": "bloques/register/desktop/BillingCard.tsx", "type": "registry:file", "target": "bloques/register/desktop/BillingCard.tsx", "content": "\"use client\";\n\n/**\n * BillingCard — Bloque de Concorde (Voyager DS)\n *\n * Card \"Quiero Recibir\" del Register: título + divisor, toggle Boleta/Factura\n * (reusa TabSelector) y el campo RUC — a diferencia de los campos de\n * PersonalDataCard, aquí el label va INLINE dentro del mismo box del input,\n * no arriba.\n *\n * Desktop (766 de ancho, ~149 alto): toggle + RUC en una fila.\n * Mobile (`mobile` prop, 388 de ancho): toggle arriba, RUC debajo (apilados).\n */\n\nimport type { JSX } from \"react\";\nimport TabSelector from \"../../../components/TabSelector\";\n\nexport interface BillingCardProps {\n className?: string;\n /** Layout mobile: card 388 de ancho, toggle y RUC apilados (no en fila) */\n mobile?: boolean;\n}\n\nconst STYLE_ID = \"concorde-billing-card-styles\";\n\nconst STYLES = `\n.bc-card {\n width: 766px;\n min-height: 149px;\n box-sizing: border-box;\n background: #ffffff;\n border-radius: 16px;\n box-shadow: rgba(0,0,0,0.1) 0px 0px 16px 4px;\n padding: 24px 16px;\n display: flex;\n flex-direction: column;\n}\n.bc-card--mobile { width: 388px; min-height: 0; }\n.bc-title { margin: 0; font-size: 18px; font-weight: 700; color: #3B1782; }\n.bc-divider { height: 1px; background: #E1E3E2; margin: 16px 0 20px; }\n.bc-row { display: flex; align-items: center; gap: 16px; }\n.bc-row--mobile { flex-direction: column; align-items: stretch; gap: 16px; }\n.bc-row--mobile .bc-ruc { flex: none; width: 100%; }\n\n.bc-ruc {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n height: 49px;\n box-sizing: border-box;\n padding: 0 20px;\n border-radius: 16px;\n border: 1px solid transparent;\n background-image: linear-gradient(#ffffff, #ffffff), linear-gradient(338deg, #8460E5 0%, #FFF8F1 100%);\n background-origin: border-box;\n background-clip: padding-box, border-box;\n}\n.bc-ruc__label { font-size: 14px; font-weight: 600; color: #3B1782; white-space: nowrap; }\n.bc-ruc__required { color: #ED8936; margin-right: 8px; }\n.bc-ruc__input {\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n font-family: inherit;\n font-size: 16px;\n color: #191C1C;\n}\n`;\n\nlet _stylesInjected = false;\n\nexport default function BillingCard({ className = \"\", mobile = false }: BillingCardProps): JSX.Element {\n if (typeof document !== \"undefined\" && !_stylesInjected) {\n if (!document.getElementById(STYLE_ID)) {\n const el = document.createElement(\"style\");\n el.id = STYLE_ID;\n el.textContent = STYLES;\n document.head.appendChild(el);\n }\n _stylesInjected = true;\n }\n\n return (\n
\n