UNPKG

@buun_group/brutalist-ui

Version:
213 lines (179 loc) 3.88 kB
.tabs { display: flex; flex-direction: column; width: 100%; } .tabs.fullWidth { width: 100%; } /* Orientation */ .tabs.vertical { flex-direction: row; } /* List container */ .list { display: flex; background-color: var(--brutal-gray-100); border: 3px solid var(--brutal-black); box-shadow: 4px 4px 0px var(--brutal-black); } .list.horizontal { flex-direction: row; border-bottom: none; } .list.vertical { flex-direction: column; border-right: none; min-width: 200px; } /* Tab trigger */ .trigger { position: relative; padding: var(--brutal-space-3) var(--brutal-space-4); background-color: transparent; border: none; font-family: var(--brutal-font-mono); font-weight: var(--brutal-font-bold); text-transform: uppercase; cursor: pointer; transition: var(--brutal-transition-fast); user-select: none; color: var(--brutal-black); } /* Size variants */ .trigger.sm { padding: var(--brutal-space-2) var(--brutal-space-3); font-size: var(--brutal-text-xs); } .trigger.md { padding: var(--brutal-space-3) var(--brutal-space-4); font-size: var(--brutal-text-sm); } .trigger.lg { padding: var(--brutal-space-4) var(--brutal-space-6); font-size: var(--brutal-text-base); } /* Horizontal triggers */ .horizontal .trigger { border-right: 3px solid var(--brutal-black); } .horizontal .trigger:last-child { border-right: none; } /* Vertical triggers */ .vertical .trigger { border-bottom: 3px solid var(--brutal-black); text-align: left; width: 100%; } .vertical .trigger:last-child { border-bottom: none; } /* States */ .trigger:hover:not(.disabled) { background-color: var(--brutal-gray-300); } .trigger:focus { outline: none; background-color: var(--brutal-gray-300); z-index: 1; } .trigger.active { background-color: var(--brutal-black); color: var(--brutal-white); } .trigger.active::after { content: ''; position: absolute; background-color: var(--brutal-white); } /* Active indicator for horizontal */ .horizontal .trigger.active::after { bottom: -3px; left: 0; right: 0; height: 3px; } /* Active indicator for vertical */ .vertical .trigger.active::after { right: -3px; top: 0; bottom: 0; width: 3px; } .trigger.disabled { opacity: 0.5; cursor: not-allowed; } /* Content */ .content { padding: var(--brutal-space-6); background-color: var(--brutal-white); border: 3px solid var(--brutal-black); box-shadow: 4px 4px 0px var(--brutal-black); animation: contentEnter 0.2s ease-out; } .content:focus { outline: none; } .content.inactive { display: none; } @keyframes contentEnter { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* Mobile responsive */ @media (max-width: 768px) { .list { border-width: 2px; box-shadow: 2px 2px 0px var(--brutal-black); } .content { padding: var(--brutal-space-4); border-width: 2px; box-shadow: 2px 2px 0px var(--brutal-black); } .trigger.sm { padding: var(--brutal-space-1) var(--brutal-space-2); font-size: 10px; } .trigger.md { padding: var(--brutal-space-2) var(--brutal-space-3); font-size: var(--brutal-text-xs); } .trigger.lg { padding: var(--brutal-space-3) var(--brutal-space-4); font-size: var(--brutal-text-sm); } /* Force horizontal on mobile for vertical tabs */ .tabs.vertical { flex-direction: column; } .list.vertical { flex-direction: row; border-right: 3px solid var(--brutal-black); border-bottom: none; min-width: auto; } .vertical .trigger { border-bottom: none; border-right: 3px solid var(--brutal-black); } .vertical .trigger:last-child { border-right: none; } .vertical .trigger.active::after { right: auto; bottom: -3px; left: 0; width: auto; height: 3px; } }