@luciodale/react-searchable-dropdown
Version:
A reusable React searchable dropdown component.
113 lines (95 loc) • 2.45 kB
CSS
@import './variables.css';
.lda-dropdown-container {
position: relative;
width: var(--width-container);
display: flex;
align-items: center;
justify-content: center;
background-color: var(--color-background);
border-radius: var(--border-radius-md);
cursor: text;
}
.lda-dropdown-container.disabled {
background-color: var(--color-disabled);
opacity: 0.7;
cursor: not-allowed;
}
.lda-dropdown-search-query-input {
width: 100%;
border: 1px solid var(--color-border);
padding: var(--spacing-md) var(--spacing-lg);
border-radius: var(--border-radius-md);
font-size: var(--font-size-base);
outline: none;
color: var(--color-text);
background-color: transparent;
z-index: 2;
}
.lda-dropdown-search-query-input:disabled {
background-color: var(--color-disabled);
cursor: not-allowed;
}
.lda-dropdown-search-query-input:focus {
border-color: var(--color-focus);
box-shadow: 0 0 0 2px rgba(38, 132, 255, 0.2);
}
.lda-dropdown-trigger-icon {
width: 24px;
height: 24px;
position: absolute;
right: var(--spacing-lg);
opacity: 0.7;
z-index: 1;
}
.lda-dropdown-trigger-icon path {
stroke: var(--color-text);
}
.lda-dropdown-container:hover .lda-dropdown-trigger-icon {
opacity: 1;
}
.lda-dropdown-trigger-icon-invert {
transform: rotate(180deg);
}
.lda-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-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-dropdown-option {
padding: var(--spacing-md) var(--spacing-lg);
cursor: pointer;
}
.lda-dropdown-option-focused {
background-color: var(--color-option-hover);
}
.lda-dropdown-option-selected {
background-color: var(--color-option-selected);
}
.lda-dropdown-option-disabled {
background-color: var(--color-option-disabled);
cursor: not-allowed;
opacity: 0.5;
}
.lda-dropdown-option-label {
font-size: var(--font-size-base);
}
.lda-dropdown-option-label-focused {
font-weight: 500;
color: var(--color-text);
}
.lda-dropdown-option-no-match {
padding: var(--spacing-md) var(--spacing-lg);
cursor: pointer;
color: var(--color-text-secondary);
font-style: italic;
}