@arolariu/components
Version:
🎨 70+ beautiful, accessible React components built on Base UI. TypeScript-first, CSS Modules styling, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡
90 lines (79 loc) • 1.81 kB
CSS
.root {
/* Minimal default — consumers can add borders/background via className */
}
.list {
display: flex;
position: relative;
z-index: 0;
padding-inline: 0;
gap: 0;
border-bottom: 1px solid var(--ac-border);
background-color: transparent;
}
.tab {
display: flex;
align-items: center;
justify-content: center;
border: 0;
margin: 0;
outline: none;
background: none;
appearance: none;
color: var(--ac-muted-foreground);
font-family: inherit;
font-size: var(--ac-text-sm);
font-weight: 500;
user-select: none;
white-space: nowrap;
word-break: keep-all;
padding-inline: var(--ac-space-3);
padding-block: 0;
height: 2.25rem;
cursor: pointer;
transition: color var(--ac-transition-fast);
&[data-active] {
color: var(--ac-foreground);
}
@media (hover: hover) {
&:hover {
color: var(--ac-foreground);
}
}
&:focus-visible {
position: relative;
&::before {
content: "";
position: absolute;
inset: var(--ac-space-1) 0;
border-radius: var(--ac-radius-xs);
outline: 2px solid var(--ac-ring);
outline-offset: -1px;
}
}
}
.indicator {
position: absolute;
z-index: 0;
left: 0;
bottom: -1px;
translate: var(--active-tab-left) 0;
width: var(--active-tab-width);
height: 2px;
background-color: var(--ac-foreground);
transition-property: translate, width;
transition-duration: 200ms;
transition-timing-function: ease-in-out;
}
.panel {
position: relative;
outline: none;
padding-top: var(--ac-space-4);
&:focus-visible {
outline: 2px solid var(--ac-ring);
outline-offset: -1px;
border-radius: var(--ac-radius-md);
}
&[hidden] {
display: none;
}
}