UNPKG

@gambito-corp/mbs-library

Version:

Librería de componentes React reutilizables - Sistema de diseño modular y escalable

291 lines (242 loc) 5.45 kB
/* ===== BLOCK: badge ===== */ .badge { display: inline-flex; align-items: center; justify-content: center; font-weight: 500; font-size: 0.75rem; line-height: 1; padding: 0.25rem 0.5rem; min-width: 1.25rem; height: 1.25rem; border-radius: 0.25rem; background-color: #f3f4f6; color: #374151; border: 1px solid #e5e7eb; transition: all 0.2s ease-in-out; white-space: nowrap; box-sizing: border-box; } /* ===== ELEMENT: badge__icon ===== */ .badge__icon { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; } .badge__icon--left { margin-right: 0.25rem; } .badge__icon--right { margin-left: 0.25rem; } .badge__icon--dismiss { margin-left: 0.25rem; cursor: pointer; opacity: 0.7; transition: opacity 0.2s ease-in-out; } .badge__icon--dismiss:hover { opacity: 1; } /* ===== ELEMENT: badge__text ===== */ .badge__text { line-height: 1; font-weight: 500; } /* ===== MODIFIERS: Variantes ===== */ .badge--primary { background-color: #3b82f6; color: #ffffff; border-color: transparent; } .badge--secondary { background-color: #6b7280; color: #ffffff; border-color: transparent; } .badge--success { background-color: #10b981; color: #ffffff; border-color: transparent; } .badge--warning { background-color: #f59e0b; color: #111827; border-color: transparent; } .badge--error { background-color: #ef4444; color: #ffffff; border-color: transparent; } .badge--info { background-color: #60a5fa; color: #ffffff; border-color: transparent; } .badge--light { background-color: #f9fafb; color: #374151; border-color: #e5e7eb; } .badge--dark { background-color: #1f2937; color: #ffffff; border-color: transparent; } /* ===== MODIFIERS: Tamaños ===== */ .badge--small { padding: 0.125rem 0.375rem; font-size: 0.75rem; min-width: 1rem; height: 1rem; } .badge--large { padding: 0.25rem 0.625rem; font-size: 0.875rem; min-width: 1.5rem; height: 1.5rem; } /* ===== MODIFIERS: Formas ===== */ .badge--pill { border-radius: 9999px; } .badge--square { border-radius: 0; } /* ===== MODIFIERS: Dot ===== */ .badge--dot { padding: 0; min-width: 0.625rem; width: 0.625rem; height: 0.625rem; border-radius: 50%; } .badge--dot.badge--small { width: 0.5rem; height: 0.5rem; } .badge--dot.badge--large { width: 0.75rem; height: 0.75rem; } /* ===== MODIFIERS: Estados ===== */ .badge--clickable { cursor: pointer; } .badge--clickable:hover { opacity: 0.8; transform: translateY(-1px); } .badge--dismissible { padding-right: 0.125rem; } /* ===== MODIFIERS: Posicionamiento ===== */ .badge--positioned { position: absolute; z-index: 10; } .badge--top-right { top: -0.25rem; right: -0.25rem; transform: translate(50%, -50%); } .badge--top-left { top: -0.25rem; left: -0.25rem; transform: translate(-50%, -50%); } .badge--bottom-right { bottom: -0.25rem; right: -0.25rem; transform: translate(50%, 50%); } .badge--bottom-left { bottom: -0.25rem; left: -0.25rem; transform: translate(-50%, 50%); } /* ===== MODO OSCURO ===== */ [data-theme="dark"] .badge { background-color: #374151; color: #f9fafb; border-color: #4b5563; } [data-theme="dark"] .badge--primary { background-color: #2563eb; } [data-theme="dark"] .badge--secondary { background-color: #4b5563; } [data-theme="dark"] .badge--success { background-color: #059669; } [data-theme="dark"] .badge--warning { background-color: #d97706; color: #ffffff; } [data-theme="dark"] .badge--error { background-color: #dc2626; } [data-theme="dark"] .badge--info { background-color: #3b82f6; } [data-theme="dark"] .badge--light { background-color: #6b7280; color: #f9fafb; border-color: #4b5563; } [data-theme="dark"] .badge--dark { background-color: #111827; } /* ===== ANIMACIONES ===== */ @keyframes badge-bounce { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } .badge--animated { animation: badge-bounce 0.6s ease-in-out; } /* ===== ACCESIBILIDAD ===== */ .badge:focus-visible { outline: 2px solid #3b82f6; outline-offset: 2px; } @media (prefers-reduced-motion: reduce) { .badge, .badge__icon--dismiss { transition: none !important; animation: none !important; } .badge--clickable:hover { transform: none !important; } } /* ===== RESPONSIVE ===== */ @media (max-width: 640px) { .badge { font-size: 0.75rem; } .badge--large { font-size: 0.875rem; } } /* ===== HIGH CONTRAST ===== */ @media (prefers-contrast: high) { .badge { border-width: 2px; } .badge:focus-visible { outline-width: 3px; outline-offset: 3px; } } /* ===== PRINT STYLES ===== */ @media print { .badge { background: white !important; color: black !important; border: 1px solid black !important; } }