{ "schemaVersion": 2, "generatedAt": "2026-08-16T00:00:00Z", "title": "Design System: LabPréstamos", "extensions": { "colorMeta": { "verde-institucional": { "role": "primary", "displayName": "Verde Institucional", "canonical": "oklch(48.5% 0.12 154.8)", "tonalRamp": [ "oklch(15% 0.12 154.8)", "oklch(28% 0.12 154.8)", "oklch(40% 0.12 154.8)", "oklch(52% 0.12 154.8)", "oklch(65% 0.12 154.8)", "oklch(76% 0.12 154.8)", "oklch(86% 0.12 154.8)", "oklch(95% 0.12 154.8)" ] }, "dorado-uabc": { "role": "secondary", "displayName": "Dorado UABC", "canonical": "oklch(72.8% 0.148 74.4)", "tonalRamp": [ "oklch(15% 0.148 74.4)", "oklch(28% 0.148 74.4)", "oklch(40% 0.148 74.4)", "oklch(52% 0.148 74.4)", "oklch(65% 0.148 74.4)", "oklch(76% 0.148 74.4)", "oklch(86% 0.148 74.4)", "oklch(95% 0.148 74.4)" ] }, "superficie": { "role": "neutral", "displayName": "Superficie", "canonical": "oklch(97.3% 0.004 157.2)", "tonalRamp": [ "oklch(15% 0.004 157.2)", "oklch(28% 0.004 157.2)", "oklch(40% 0.004 157.2)", "oklch(52% 0.004 157.2)", "oklch(65% 0.004 157.2)", "oklch(76% 0.004 157.2)", "oklch(86% 0.004 157.2)", "oklch(95% 0.004 157.2)" ] }, "tinta": { "role": "neutral", "displayName": "Tinta", "canonical": "oklch(33.5% 0.033 260.9)", "tonalRamp": [ "oklch(15% 0.033 260.9)", "oklch(28% 0.033 260.9)", "oklch(40% 0.033 260.9)", "oklch(52% 0.033 260.9)", "oklch(65% 0.033 260.9)", "oklch(76% 0.033 260.9)", "oklch(86% 0.033 260.9)", "oklch(95% 0.033 260.9)" ] }, "peligro": { "role": "danger", "displayName": "Peligro", "canonical": "oklch(54.4% 0.186 26)", "tonalRamp": [ "oklch(15% 0.186 26)", "oklch(28% 0.186 26)", "oklch(40% 0.186 26)", "oklch(52% 0.186 26)", "oklch(65% 0.186 26)", "oklch(76% 0.186 26)", "oklch(86% 0.186 26)", "oklch(95% 0.186 26)" ] } }, "typographyMeta": { "headline": { "displayName": "Headline", "purpose": "Page-level h1 — dashboard/section titles, login title." }, "title": { "displayName": "Title", "purpose": "Card and section headers within a page." }, "body": { "displayName": "Body", "purpose": "Default text size across the whole system: table cells, descriptions, list content." }, "label": { "displayName": "Label", "purpose": "Form field labels, always paired with htmlFor/id." }, "caption": { "displayName": "Caption", "purpose": "Metadata: matrícula, inventory numbers, timestamps, field hints." } }, "shadows": [ { "name": "floating-chrome", "value": "0 10px 30px -8px rgba(0,0,0,0.25)", "purpose": "Mobile dock nav — soft ambient shadow signaling it floats above the scrolling page." }, { "name": "overlay-notification", "value": "0 16px 40px -12px rgba(0,0,0,0.25)", "purpose": "Toast stack — same ambient quality, slightly heavier, paired with backdrop-blur-xl." } ], "motion": [ { "name": "toast-entrance", "value": "cubic-bezier(0.22, 1, 0.36, 1)", "purpose": "260ms translate+scale+fade entrance for toast notifications." }, { "name": "chrome-transition", "value": "cubic-bezier(0, 0, 0.2, 1)", "purpose": "150-200ms default ease-out for sidebar collapse, hover states, dock icon transitions." } ], "breakpoints": [ { "name": "md", "value": "768px" } ] }, "components": [ { "name": "Primary Button", "kind": "button", "refersTo": "button-primary", "description": "Default call to action: submit, approve, continue with Google.", "html": "", "css": ".ds-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 16px; border-radius: 8px; font-weight: 500; font-size: 0.875rem; border: none; cursor: pointer; touch-action: manipulation; transition: filter 150ms ease-out, background-color 150ms ease-out; } .ds-btn-primary { background: #00723F; color: #ffffff; } .ds-btn-primary:hover { filter: brightness(1.1); } .ds-btn-primary:focus-visible { outline: 2px solid #00723F; outline-offset: 2px; } .ds-btn-primary:disabled { opacity: 0.5; pointer-events: none; }" }, { "name": "Secondary Button", "kind": "button", "refersTo": "button-secondary", "description": "Sparingly used accent action — filtering, non-primary confirms.", "html": "", "css": ".ds-btn-secondary { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 16px; border-radius: 8px; font-weight: 500; font-size: 0.875rem; border: none; cursor: pointer; touch-action: manipulation; background: #DD971A; color: #ffffff; transition: filter 150ms ease-out; } .ds-btn-secondary:hover { filter: brightness(1.1); } .ds-btn-secondary:focus-visible { outline: 2px solid #00723F; outline-offset: 2px; }" }, { "name": "Ghost Button", "kind": "button", "refersTo": "button-ghost", "description": "Low-commitment counterpart to Primary — cancel, clear filters.", "html": "", "css": ".ds-btn-ghost { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 16px; border-radius: 8px; font-weight: 500; font-size: 0.875rem; cursor: pointer; touch-action: manipulation; background: transparent; color: #2D3748; border: 1px solid color-mix(in oklab, #2D3748 15%, transparent); transition: background-color 150ms ease-out; } .ds-btn-ghost:hover { background: color-mix(in oklab, #2D3748 5%, transparent); } .ds-btn-ghost:focus-visible { outline: 2px solid #00723F; outline-offset: 2px; }" }, { "name": "Status Pill", "kind": "chip", "refersTo": "badge", "description": "Tinted-fill status indicator used for every préstamo/material estado; solid-fill only for the confirmed Vencido exception.", "html": "Disponible Mantenimiento Vencido", "css": ".ds-pill { display: inline-flex; align-items: center; border-radius: 9999px; padding: 2px 10px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; } .ds-pill-primary { background: color-mix(in oklab, #00723F 13%, transparent); color: #00723F; } .ds-pill-secondary { background: color-mix(in oklab, #DD971A 15%, transparent); color: #c78614; } .ds-pill-danger-solid { background: #C53030; color: #ffffff; }" }, { "name": "Card", "kind": "card", "refersTo": "card", "description": "Flat white container — the system's default surface for content, forms, and KPI tiles. No shadow, hairline ink-mix border only.", "html": "
Accede con tu cuenta institucional.