UNPKG

@penaprieto/design-system

Version:

Multi-brand React design system with design tokens from Figma

157 lines (138 loc) 3.86 kB
/* Base Combobox */ .ds-combobox { position: relative; display: inline-block; width: 100%; -webkit-font-smoothing: antialiased; } /* Input wrapper */ .ds-combobox__input-wrapper { position: relative; display: flex; align-items: center; } /* Input */ .ds-combobox__input { width: 100%; padding: var(--size2, 8px) var(--size3, 12px); padding-right: 72px; font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-regular-fontSize, 16px); line-height: var(--body-regular-lineHeight, 150%); color: var(--semantic-text-corp-primary); background-color: var(--text-field-bg-default); border: 1px solid var(--text-field-border-default); border-radius: var(--br-sm, 8px); outline: none; transition: all 0.2s ease-in-out; } .ds-combobox__input::placeholder { color: var(--text-field-text-placeholder); } .ds-combobox__input:hover:not(:disabled) { border-color: var(--text-field-border-hover); } .ds-combobox__input:focus { border-color: var(--text-field-border-focus); box-shadow: 0 0 0 3px var(--text-field-focus-ring); } .ds-combobox__input:disabled { background-color: var(--text-field-bg-disabled); border-color: var(--text-field-border-disabled); color: var(--text-field-text-disabled); cursor: not-allowed; } .ds-combobox--error .ds-combobox__input { border-color: var(--text-field-border-error); } .ds-combobox--error .ds-combobox__input:focus { border-color: var(--text-field-border-error); box-shadow: 0 0 0 3px var(--text-field-error-ring); } /* Icons */ .ds-combobox__icons { position: absolute; right: var(--size3, 12px); display: flex; align-items: center; gap: var(--size1, 4px); color: var(--semantic-icon-default-default); pointer-events: none; } .ds-combobox__clear { display: flex; align-items: center; justify-content: center; padding: 0; background: none; border: none; color: var(--semantic-icon-default-default); cursor: pointer; pointer-events: auto; transition: color 0.2s ease-in-out; } .ds-combobox__clear:hover { color: var(--semantic-text-corp-primary); } /* Dropdown */ .ds-combobox__dropdown { position: absolute; top: calc(100% + 4px); left: 0; z-index: 1000; width: 100%; max-height: 240px; overflow-y: auto; padding: var(--size1, 4px); background-color: var(--semantic-bg-surface-default); border: 1px solid var(--semantic-border-default-default); border-radius: var(--br-sm, 8px); box-shadow: var(--semantic-elevation-elevation2); animation: ds-combobox-fade-in 0.2s ease-out; } /* Option */ .ds-combobox__option { display: flex; align-items: center; width: 100%; padding: var(--size2, 8px) var(--size3, 12px); font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-regular-fontSize, 16px); color: var(--semantic-text-corp-primary); background: none; border: none; border-radius: var(--br-xs, 4px); cursor: pointer; transition: background-color 0.2s ease-in-out; text-align: left; } .ds-combobox__option:hover:not(:disabled) { background-color: var(--dropdown-bg-hover); } .ds-combobox__option--selected { background-color: var(--dropdown-bg-active); font-weight: var(--body-regular-strong-fontWeight, 700); } .ds-combobox__option--disabled { color: var(--semantic-text-corp-disabled); cursor: not-allowed; } /* Empty */ .ds-combobox__empty { padding: var(--size4, 16px); text-align: center; font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-regular-fontSize, 16px); color: var(--semantic-text-corp-secondary); } /* Animation */ @keyframes ds-combobox-fade-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }