@luciodale/react-searchable-dropdown
Version:
A reusable React searchable dropdown component.
182 lines (157 loc) • 4.09 kB
CSS
@import './variables.css';
.lda-multi-dropdown-container {
position: relative;
width: var(--width-container);
display: flex;
flex-wrap: wrap;
align-items: center;
padding: var(--spacing-sm) var(--spacing-xxl) var(--spacing-sm) var(--spacing-sm);
border: 1px solid var(--color-border);
border-radius: var(--border-radius-md);
min-height: var(--height-input);
background-color: var(--color-background);
cursor: text;
}
.lda-multi-dropdown-container:focus-within {
border-color: var(--color-focus);
box-shadow: 0 0 0 2px rgba(38, 132, 255, 0.2);
}
.lda-multi-dropdown-container.disabled {
background-color: var(--color-disabled);
opacity: 0.7;
cursor: not-allowed;
}
.lda-multi-search-query-input {
width: 100%;
border: none;
outline: none;
background: transparent;
padding: 0 32px 0 8px;
font-size: var(--font-size-base);
color: var(--color-text);
z-index: 2;
}
.lda-multi-search-query-input:disabled {
background-color: transparent;
cursor: not-allowed;
}
.lda-multi-search-query-input:focus {
outline: none;
box-shadow: none;
}
.lda-multi-trigger-icon {
width: 24px;
height: 24px;
position: absolute;
right: var(--spacing-lg);
opacity: 0.7;
z-index: 1;
}
.lda-multi-trigger-icon path {
stroke: var(--color-text);
}
.lda-multi-dropdown-container:hover .lda-multi-trigger-icon {
opacity: 1;
}
.lda-multi-trigger-icon-invert {
transform: rotate(180deg);
}
.lda-multi-dropdown-options {
background-color: var(--color-background);
border: 1px solid var(--color-border);
border-radius: var(--border-radius-md);
z-index: var(--z-dropdown);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
overflow: hidden;
}
.lda-multi-dropdown-group {
text-transform: uppercase;
font-weight: bold;
font-size: 12px;
background-color: var(--color-option-group);
padding: var(--spacing-md) var(--spacing-lg);
}
.lda-multi-dropdown-option {
padding: var(--spacing-md) var(--spacing-lg);
cursor: pointer;
}
.lda-multi-dropdown-option-focused {
background-color: var(--color-option-hover);
}
.lda-multi-dropdown-option-disabled {
background-color: var(--color-option-disabled);
cursor: not-allowed;
opacity: 0.5;
}
.lda-multi-dropdown-option-label {
font-size: var(--font-size-base);
}
.lda-multi-dropdown-option-label-focused {
font-weight: 500;
color: var(--color-text);
}
.lda-multi-dropdown-option-no-match {
padding: var(--spacing-md) var(--spacing-lg);
cursor: pointer;
color: var(--color-text-secondary);
font-style: italic;
}
.lda-multi-chip {
display: inline-flex;
align-items: center;
background-color: var(--color-chip-bg);
border-radius: var(--border-radius-md);
padding: var(--spacing-sm) var(--spacing-md);
margin: var(--spacing-xs);
font-size: var(--font-size-sm);
color: var(--color-chip-close-hover-text);
transition: background-color var(--transition-base) ease;
}
.lda-multi-chip:hover {
background-color: var(--color-chip-hover);
}
.lda-multi-chip-close {
display: inline-flex;
align-items: center;
justify-content: center;
width: var(--spacing-xl);
height: var(--spacing-xl);
margin-left: var(--spacing-sm);
border: none;
background: none;
color: var(--color-text-secondary);
font-size: var(--font-size-base);
line-height: 1;
cursor: pointer;
border-radius: var(--border-radius-circle);
padding: 0;
transition: background-color var(--transition-base) ease, color var(--transition-base) ease;
}
.lda-multi-chip-close:hover {
background-color: var(--color-chip-close-hover-bg);
color: var(--color-chip-close-hover-text);
}
.lda-multi-chip-close:focus {
outline: none;
box-shadow: var(--shadow-button);
}
.lda-multi-clear-all {
position: absolute;
right: var(--spacing-md);
top: 50%;
transform: translateY(-50%);
background: none;
border: none;
cursor: pointer;
padding: 4px;
display: flex;
align-items: center;
justify-content: center;
color: var(--text-color);
opacity: 0.5;
z-index: 2;
font-size: var(--font-size-base);
}
.lda-multi-clear-all:hover {
opacity: 1;
}