Appearance
Combobox theming
Every cosmetic value Combobox renders is a --rozie-combobox-* custom property with a built-in fallback, so the component works with zero configuration and stays fully re-skinnable. The structural rules compile per-leaf and are not consumer-overridable — only the values below flow through tokens.
css
.rozie-combobox {
--rozie-combobox-width: 16rem;
--rozie-combobox-accent: #0066cc;
--rozie-combobox-input-padding: 0.5rem 0.75rem;
--rozie-combobox-focus-ring-width: 3px;
}Tokens
layout / typography
| Token | Default |
|---|---|
--rozie-combobox-width | 16rem |
--rozie-combobox-font | inherit |
accent — the single color most consumers will set; focus ring + selected option derive from it
| Token | Default |
|---|---|
--rozie-combobox-accent | #0066cc |
input box model
| Token | Default |
|---|---|
--rozie-combobox-input-padding | 0.5rem 0.75rem |
--rozie-combobox-color | inherit |
--rozie-combobox-bg | #fff |
--rozie-combobox-border-width | 1px |
--rozie-combobox-border-color | rgba(0, 0, 0, 0.25) |
--rozie-combobox-radius | 0.5rem |
focus ring
| Token | Default |
|---|---|
--rozie-combobox-focus-ring-width | 3px |
--rozie-combobox-focus-ring-color | rgba(0, 102, 204, 0.25) |
--rozie-combobox-focus-border-color | var(--rozie-combobox-accent, #0066cc) |
disabled
| Token | Default |
|---|---|
--rozie-combobox-disabled-opacity | 0.55 |
--rozie-combobox-disabled-bg | rgba(0, 0, 0, 0.04) |
popup listbox
| Token | Default |
|---|---|
--rozie-combobox-list-z | 50 |
--rozie-combobox-list-gap | 0.25rem |
--rozie-combobox-list-padding | 0.25rem |
--rozie-combobox-list-max-height | 16rem |
--rozie-combobox-list-bg | #fff |
--rozie-combobox-list-border-color | rgba(0, 0, 0, 0.15) |
--rozie-combobox-list-shadow | 0 10px 24px rgba(0, 0, 0, 0.16) |
option
| Token | Default |
|---|---|
--rozie-combobox-option-padding | 0.4rem 0.6rem |
--rozie-combobox-option-radius | 0.375rem |
--rozie-combobox-option-active-bg | rgba(0, 102, 204, 0.12) |
--rozie-combobox-option-selected-weight | 600 |
--rozie-combobox-option-selected-color | var(--rozie-combobox-accent, #0066cc) |
--rozie-combobox-option-disabled-opacity | 0.45 |
--rozie-combobox-option-color | inherit |
group heading — the label rendered above a <optgroup>-style block of options when the options array is grouped
| Token | Default |
|---|---|
--rozie-combobox-group-heading-color | rgba(0, 0, 0, 0.5) |
--rozie-combobox-group-heading-letter-spacing | 0.03em |
--rozie-combobox-group-heading-margin-top | 0 |
--rozie-combobox-group-heading-padding | 0.35rem 0.6rem 0.15rem |
--rozie-combobox-group-heading-size | 0.75rem |
--rozie-combobox-group-heading-transform | uppercase |
--rozie-combobox-group-heading-weight | 600 |
empty state — rendered when the filtered options list has zero entries
| Token | Default |
|---|---|
--rozie-combobox-empty-color | rgba(0, 0, 0, 0.5) |
--rozie-combobox-empty-padding | 0.5rem 0.6rem |
overflow — the "+N more" affordance shown when the selection exceeds the visible chip count
| Token | Default |
|---|---|
--rozie-combobox-more-color | rgba(0, 0, 0, 0.55) |
--rozie-combobox-more-size | 0.875rem |
state-dependent — declared initial on purpose. The component reads this token with a DIFFERENT local fallback at each read site (resting input falls back through --rozie-combobox-border-color, the :focus rule falls back through --rozie-combobox-focus-border-color), so declaring a single frozen value here would collapse the focus-state transition. initial resets the custom property to the guaranteed-invalid value, which makes every var() substitute its OWN local fallback — exactly today's render output, but now discoverable and overridable.
| Token | Default |
|---|---|
--rozie-combobox-input-underline | initial |
Design-system bridges
Each package ships token presets that map Combobox's tokens onto a known design system's published CSS variables — import base.css first, then a bridge:
ts
import '@rozie-ui/combobox-react/themes/base.css';
import '@rozie-ui/combobox-react/themes/bootstrap.css';
import '@rozie-ui/combobox-react/themes/material.css';
import '@rozie-ui/combobox-react/themes/shadcn.css';See also
- Combobox — showcase & API — the full prop / event / slot / handle reference.
- Combobox — usage examples — idiomatic per-framework consumption code.
- Combobox comparison — how it stacks up against the per-framework libraries.
- Combobox — live demo — the real package running in the page.