UNPKG

@buun_group/brutalist-ui

Version:
185 lines (155 loc) 3.7 kB
/* Base Toggle Styles */ .toggle { font-family: var(--brutal-font-mono); font-weight: var(--brutal-font-bold); text-transform: uppercase; background-color: var(--brutal-white); color: var(--brutal-black); border: var(--brutal-border-width) var(--brutal-border-style) var(--brutal-black); outline: none; cursor: pointer; transition: var(--brutal-transition-fast); position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--brutal-space-2); user-select: none; } /* Sizes */ .sm { padding: var(--brutal-space-2) var(--brutal-space-3); font-size: var(--brutal-text-xs); min-height: 32px; } .md { padding: var(--brutal-space-3) var(--brutal-space-4); font-size: var(--brutal-text-sm); min-height: 40px; } .lg { padding: var(--brutal-space-4) var(--brutal-space-6); font-size: var(--brutal-text-base); min-height: 48px; } /* Variants */ .default { background-color: var(--brutal-white); color: var(--brutal-black); border-color: var(--brutal-black); } .default:hover:not(.disabled) { background-color: var(--brutal-gray-100); } .default.pressed { background-color: var(--brutal-black); color: var(--brutal-white); } .default.pressed:hover:not(.disabled) { background-color: var(--brutal-gray-800); } .brutal { background-color: var(--brutal-yellow); color: var(--brutal-black); border-color: var(--brutal-black); font-weight: var(--brutal-font-black); } .brutal:hover:not(.disabled) { background-color: var(--brutal-yellow-dark); } .brutal.pressed { background-color: var(--brutal-accent); color: var(--brutal-white); } .brutal.pressed:hover:not(.disabled) { background-color: var(--brutal-accent-dark); } .outline { background-color: transparent; color: var(--brutal-black); border-color: var(--brutal-black); } .outline:hover:not(.disabled) { background-color: var(--brutal-gray-50); } .outline.pressed { background-color: var(--brutal-black); color: var(--brutal-white); } .outline.pressed:hover:not(.disabled) { background-color: var(--brutal-gray-800); } /* Shadow effect */ .withShadow { box-shadow: var(--brutal-shadow-sm); } .withShadow:hover:not(.disabled) { transform: translate(-1px, -1px); box-shadow: 3px 3px 0px var(--brutal-black); } .withShadow:active:not(.disabled), .withShadow.pressed { transform: translate(0, 0); box-shadow: 1px 1px 0px var(--brutal-black); } /* Focus state */ .toggle:focus-visible { outline: 3px solid var(--brutal-accent); outline-offset: 2px; } /* Disabled state */ .disabled { opacity: 0.5; cursor: not-allowed; } .disabled:hover { transform: none; box-shadow: var(--brutal-shadow-sm); } /* Icon adjustments when used with icons */ .toggle svg { width: 1em; height: 1em; fill: currentColor; } /* Pressed indicator - optional visual cue */ .pressed::before { content: ''; position: absolute; top: 2px; right: 2px; width: 6px; height: 6px; background-color: var(--brutal-accent); opacity: 0; transition: opacity var(--brutal-transition-fast); } .default.pressed::before, .outline.pressed::before { opacity: 1; background-color: var(--brutal-yellow); } .brutal.pressed::before { opacity: 1; background-color: var(--brutal-white); } /* Remove default button styles */ .toggle::-moz-focus-inner { border: 0; padding: 0; } /* Ensure text doesn't wrap */ .toggle { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Animation on press */ @keyframes press { 0% { transform: scale(1); } 50% { transform: scale(0.95); } 100% { transform: scale(1); } } .toggle:active:not(.disabled) { animation: press 0.15s ease-out; }