UNPKG

@metropolle/design-system

Version:

Sistema de design unificado para a plataforma Metropolle

333 lines (276 loc) 7.64 kB
/* Metropolle Design System - Component Styles */ /* Button Styles */ .mds-button { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--mds-spacing-sm); font-family: var(--mds-typography-fontFamily-brand); font-weight: var(--mds-typography-fontWeight-medium); text-decoration: none; border: none; border-radius: var(--mds-spacing-borderRadius-md); cursor: pointer; transition: var(--mds-effects-transition-normal); /* Remove default button styles */ background: none; outline: none; /* Prevent text selection */ -moz-user-select: none; user-select: none; -webkit-user-select: none; } .mds-button:disabled, .mds-button--disabled { opacity: var(--mds-effects-opacity-disabled); cursor: not-allowed; pointer-events: none; } .mds-button--loading { cursor: wait; } .mds-button--full-width { width: 100%; } /* Button Sizes */ .mds-button--sm { padding: var(--mds-spacing-sm) var(--mds-spacing-md); font-size: var(--mds-typography-fontSize-sm); min-height: 2rem; } .mds-button--md { padding: var(--mds-spacing-md) var(--mds-spacing-lg); font-size: var(--mds-typography-fontSize-base); min-height: 2.5rem; } .mds-button--lg { padding: var(--mds-spacing-lg) var(--mds-spacing-xl); font-size: var(--mds-typography-fontSize-lg); min-height: 3rem; } /* Button Variants */ .mds-button--primary { background: var(--mds-color-brand-primary); color: white; box-shadow: var(--mds-spacing-shadow-md); } .mds-button--primary:hover:not(:disabled) { background: #0044CC; transform: var(--mds-effects-transform-scale-hover); box-shadow: var(--mds-spacing-shadow-lg); } .mds-button--primary:active:not(:disabled) { transform: var(--mds-effects-transform-scale-active); } .mds-button--secondary { background: var(--mds-color-brand-secondary); color: white; box-shadow: var(--mds-spacing-shadow-md); } .mds-button--secondary:hover:not(:disabled) { background: #E68A00; transform: var(--mds-effects-transform-scale-hover); box-shadow: var(--mds-spacing-shadow-lg); } .mds-button--outline { background: transparent; color: var(--mds-color-text-primary); border: 2px solid var(--mds-color-border-medium); } .mds-button--outline:hover:not(:disabled) { background: var(--mds-color-background-secondary); border-color: var(--mds-color-border-strong); } .mds-button--ghost { background: transparent; color: var(--mds-color-text-primary); } .mds-button--ghost:hover:not(:disabled) { background: var(--mds-color-background-secondary); } .mds-button--glass { background: var(--mds-color-background-glass-light); color: var(--mds-color-text-primary); backdrop-filter: var(--mds-effects-backdrop-glass-filter); -webkit-backdrop-filter: var(--mds-effects-backdrop-glass-webkitFilter); border: 1px solid var(--mds-color-border-light); box-shadow: var(--mds-spacing-shadow-glass-light); } .mds-button--glass:hover:not(:disabled) { background: var(--mds-color-background-glass-dark); border-color: var(--mds-color-border-medium); transform: var(--mds-effects-transform-hoverUp); box-shadow: var(--mds-spacing-shadow-glass-lightHover); } /* Button Icons */ .mds-button__icon { display: inline-flex; align-items: center; justify-content: center; } .mds-button__icon--left { margin-right: calc(var(--mds-spacing-sm) * -0.5); } .mds-button__icon--right { margin-left: calc(var(--mds-spacing-sm) * -0.5); } .mds-button__content { display: inline-flex; align-items: center; } /* Spinner Animation */ .mds-spinner { animation: mds-spin 1s linear infinite; } .mds-spinner__path { animation: mds-spinner-dash 2s ease-in-out infinite; } @keyframes mds-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes mds-spinner-dash { 0% { stroke-dasharray: 1 40; stroke-dashoffset: 0; } 50% { stroke-dasharray: 40 40; stroke-dashoffset: -15; } 100% { stroke-dasharray: 40 40; stroke-dashoffset: -60; } } /* Typography Styles */ .mds-text { font-family: var(--mds-typography-fontFamily-brand); color: var(--mds-color-text-primary); margin: 0; } .mds-text--color-primary { color: var(--mds-color-text-primary); } .mds-text--color-secondary { color: var(--mds-color-text-secondary); } .mds-text--color-muted { color: var(--mds-color-text-muted); } /* Font Weights */ .mds-text--weight-light { font-weight: var(--mds-typography-fontWeight-light); } .mds-text--weight-normal { font-weight: var(--mds-typography-fontWeight-normal); } .mds-text--weight-medium { font-weight: var(--mds-typography-fontWeight-medium); } .mds-text--weight-semibold { font-weight: var(--mds-typography-fontWeight-semibold); } .mds-text--weight-bold { font-weight: var(--mds-typography-fontWeight-bold); } /* Font Sizes */ .mds-text--size-xs { font-size: var(--mds-typography-fontSize-xs); } .mds-text--size-sm { font-size: var(--mds-typography-fontSize-sm); } .mds-text--size-base { font-size: var(--mds-typography-fontSize-base); line-height: var(--mds-typography-lineHeight-normal); } .mds-text--size-lg { font-size: var(--mds-typography-fontSize-lg); } .mds-text--size-xl { font-size: var(--mds-typography-fontSize-xl); } .mds-text--size-2xl { font-size: var(--mds-typography-fontSize-2xl); line-height: var(--mds-typography-lineHeight-tight); } .mds-text--size-3xl { font-size: var(--mds-typography-fontSize-3xl); line-height: var(--mds-typography-lineHeight-tight); } .mds-text--size-4xl { font-size: var(--mds-typography-fontSize-4xl); line-height: var(--mds-typography-lineHeight-tight); } /* Typography Variants */ .mds-text--h1, .mds-text--h2, .mds-text--h3, .mds-text--h4 { font-weight: var(--mds-typography-fontWeight-semibold); line-height: var(--mds-typography-lineHeight-tight); } .mds-text--body { line-height: var(--mds-typography-lineHeight-normal); } .mds-text--caption { font-size: var(--mds-typography-fontSize-sm); color: var(--mds-color-text-secondary); } .mds-text--brand, .mds-brand-logo { font-size: var(--mds-typography-fontSize-4xl); line-height: var(--mds-typography-lineHeight-tight); letter-spacing: var(--mds-typography-letterSpacing-brand); font-weight: var(--mds-typography-fontWeight-bold); color: var(--mds-color-text-primary); } /* Logo brand class for consistent branding */ .logo-brand { font-size: var(--mds-typography-fontSize-4xl); color: var(--mds-color-text-primary); letter-spacing: var(--mds-typography-letterSpacing-brand); font-weight: var(--mds-typography-fontWeight-bold); font-family: var(--mds-typography-fontFamily-brand); } /* Brand Logo Responsive */ @media (max-width: 768px) { .mds-text--brand, .mds-brand-logo, .mds-brand-logo--sm, .mds-brand-logo--md, .mds-brand-logo--lg, .logo-brand { font-size: 1.8rem; letter-spacing: var(--mds-typography-letterSpacing-tight); } } /* Glass Card - Enhanced styles (complementing base tokens.css) */ .mds-glass-card--no-hover:hover { transform: none !important; box-shadow: inherit !important; border-color: inherit !important; background: inherit !important; } /* Utility Classes */ .mds-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .mds-focus-visible { outline: 2px solid var(--mds-color-brand-primary); outline-offset: 2px; } /* Dark mode support (future) */ @media (prefers-color-scheme: dark) { /* Enhanced styles for dark mode when implemented */ }