@studiocms/ui
Version:
The UI library for StudioCMS. Includes the layouts & components we use to build StudioCMS.
190 lines (189 loc) • 4.69 kB
CSS
.sui-select-label {
width: fit-content;
display: flex;
flex-direction: column;
gap: 0.25rem;
min-width: 200px;
position: relative;
height: fit-content;
}
.sui-select-label.full,
.sui-select-label.full .sui-select-button {
width: 100%;
}
.sui-select-label.disabled {
opacity: 0.5;
pointer-events: none;
color: hsl(var(--text-muted));
}
.label {
font-size: 14px;
}
.req-star {
color: hsl(var(--danger-base));
font-weight: 700;
}
.sui-select-button {
padding: 0.5rem 0.75rem 0.5rem 0.75rem;
border-radius: var(--radius-md);
border: 1px solid hsl(var(--border));
background: hsl(var(--background-step-2));
color: hsl(var(--text-normal));
transition: background, border 0.15s ease;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
cursor: pointer;
gap: 1rem;
}
.sui-select-button:focus {
border: 1px solid hsl(var(--primary-base));
}
.sui-select-button:hover,
.sui-select-button:focus {
background: hsl(var(--background-step-3));
}
.sui-select-button.active,
.sui-select-button:active,
.sui-select-button:has(+ .sui-select-dropdown.active) {
border: 1px solid hsl(var(--primary-base));
background: hsl(var(--background-step-2));
}
.sui-select-button:has(.sui-select-badge-container) {
padding: 0.5rem 0.75rem 0.5rem 0.5rem;
}
.sui-select-value-span {
position: relative;
display: flex;
align-items: flex-start;
gap: 0.25rem;
}
.sui-select-dropdown-container {
width: 100%;
display: flex;
flex-direction: column;
gap: 0.25rem;
position: relative;
height: fit-content;
}
.sui-select-dropdown {
position: absolute;
width: 100%;
top: calc(100% + 0.25rem);
left: 0;
display: none;
max-height: 300px;
border: 1px solid hsl(var(--border));
border-radius: var(--radius-md);
background-color: hsl(var(--background-step-2));
z-index: 90;
box-shadow: 0px 4px 8px hsl(var(--shadow), 0.5);
overflow: hidden;
}
.sui-select-dropdown-list {
width: 100%;
list-style: none;
margin: 0;
padding: 0;
flex-direction: column;
overflow-y: auto;
scrollbar-color: hsl(var(--border)) hsl(var(--background-step-2));
}
.sui-select-dropdown.active {
display: flex;
}
.sui-select-dropdown.above {
top: auto;
bottom: calc(100% + 0.25rem);
}
.sui-select-option {
padding: 0.5rem;
cursor: pointer;
font-size: 0.975em;
transition: all 0.15s ease;
}
.sui-select-option.disabled {
pointer-events: none;
color: hsl(var(--text-muted));
}
.sui-select-option:hover,
.sui-select-option:focus,
.sui-select-option.focused {
background-color: hsl(var(--background-step-3));
}
.sui-select-label[data-multiple=true] .sui-select-option.selected:hover,
.sui-select-label[data-multiple=true] .sui-select-option.selected:focus,
.sui-select-label[data-multiple=true] .sui-select-option.selected.focused {
background-color: hsl(var(--primary-hover));
}
.sui-select-option:focus {
outline: none;
border: none;
}
.sui-select-option.selected {
background-color: hsl(var(--primary-base));
color: hsl(var(--text-inverted));
cursor: default;
}
.sui-select-label[data-multiple=true] .sui-select-option.selected {
cursor: pointer;
}
.sui-hidden-select {
height: 0;
width: 0;
border: none;
outline: none;
position: absolute;
background-color: transparent;
pointer-events: none;
opacity: 0;
}
.sui-select-badge-container {
display: flex;
flex-direction: row;
gap: 0.25rem;
width: fit-content;
}
.sui-select-badge-container-below:has(.sui-select-badge-container) .sui-select-badge-container {
display: flex;
flex-direction: row;
width: 100%;
margin-top: 0.5rem;
gap: 0.5rem;
flex-wrap: wrap;
}
.sui-select-label:has(.sui-select-max-span) .sui-select-badge-container {
margin-top: 0rem;
}
.sui-select-badge-container .sui-select-badge.sui-badge {
white-space: nowrap;
cursor: default;
position: relative;
padding-right: 2rem;
border-block: 1.5px solid rgba(0, 0, 0, 0);
}
.sui-select-badge-container .sui-select-badge.sui-badge svg {
position: absolute;
right: 0.25rem;
padding: 4px;
height: 20px;
width: 20px;
aspect-ratio: 1 / 1;
border-radius: 999px;
cursor: pointer;
outline: 1px solid hsla(var(--border), 0);
transition: background-color 0.15s ease, outline 0.15s ease;
}
.sui-select-badge-container .sui-select-badge.sui-badge svg:hover {
background-color: hsla(100, 100%, 95%, 0.2);
}
.sui-select-badge-container .sui-select-badge.sui-badge svg:active,
.sui-select-badge-container .sui-select-badge.sui-badge svg:focus {
background-color: hsla(100, 100%, 95%, 0.2);
outline: 1px solid hsl(var(--border));
}
.sui-select-max-span {
font-size: 0.875em;
color: hsl(var(--text-muted));
}