@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! ⚡
145 lines (125 loc) • 3.1 kB
CSS
.root {
display: inline-flex;
align-items: center;
gap: var(--ac-space-1);
min-height: var(--ac-size-default);
padding: var(--ac-space-1);
border: 1px solid var(--ac-border);
border-radius: var(--ac-radius-md);
background-color: var(--ac-background);
box-shadow: 0 1px 2px rgb(0 0 0 / 0.04);
}
.trigger {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: calc(var(--ac-size-default) - var(--ac-space-1));
padding: 0 var(--ac-space-3);
border: none;
border-radius: var(--ac-radius-sm);
background: transparent;
color: var(--ac-foreground);
font-size: var(--ac-text-sm);
font-weight: 500;
cursor: default;
outline: none;
}
.trigger[data-popup-open],
.trigger:focus-visible {
background-color: var(--ac-accent);
color: var(--ac-accent-foreground);
}
.positioner {
z-index: 50;
}
.content {
min-width: 12rem;
max-height: min(24rem, var(--available-height, 24rem));
overflow-x: hidden;
overflow-y: auto;
padding: var(--ac-space-1);
border: 1px solid var(--ac-border);
border-radius: var(--ac-radius-md);
background-color: var(--ac-popover);
color: var(--ac-popover-foreground);
box-shadow: 0 16px 40px -16px rgb(0 0 0 / 0.35);
transition: opacity var(--ac-transition-normal), transform var(--ac-transition-normal);
}
.content[data-starting-style],
.content[data-ending-style] {
opacity: 0;
transform: scale(0.96);
}
.item {
position: relative;
display: flex;
align-items: center;
gap: var(--ac-space-2);
width: 100%;
min-height: var(--ac-size-default);
padding: var(--ac-space-1) var(--ac-space-2);
border-radius: var(--ac-radius-sm);
outline: none;
font-size: var(--ac-text-sm);
user-select: none;
cursor: default;
}
.item[data-highlighted] {
background-color: var(--ac-accent);
color: var(--ac-accent-foreground);
}
.item[data-disabled] {
opacity: 0.5;
pointer-events: none;
}
.subTrigger {
padding-right: var(--ac-space-3);
}
.subTrigger[data-popup-open] {
background-color: var(--ac-accent);
color: var(--ac-accent-foreground);
}
.subTriggerIcon {
width: 1rem;
height: 1rem;
margin-left: auto;
}
.indicatorItem {
padding-left: calc(var(--ac-space-2) + 1.25rem);
}
.indicatorSlot {
position: absolute;
left: var(--ac-space-2);
display: inline-flex;
align-items: center;
justify-content: center;
width: 1rem;
height: 1rem;
}
.indicatorIcon,
.radioIndicatorIcon {
width: 0.875rem;
height: 0.875rem;
}
.radioIndicatorIcon {
fill: currentcolor;
}
.label {
padding: var(--ac-space-1) var(--ac-space-2);
font-size: var(--ac-text-sm);
font-weight: 600;
}
.inset {
padding-left: calc(var(--ac-space-2) + 1.25rem);
}
.separator {
height: 1px;
margin: var(--ac-space-1) calc(var(--ac-space-1) * -1);
background-color: var(--ac-border);
}
.shortcut {
margin-left: auto;
color: var(--ac-muted-foreground);
font-size: var(--ac-text-xs);
letter-spacing: 0.08em;
}