Theming is done entirely through CSS custom properties β€” there are no styling attributes. Because the component lives in a Shadow DOM, variables must be set on the <web-multiselect> element itself (or a theme layer above it), never on an inner wrapper.

  • --ms-rem is the global sizing unit. It bridges to --base-rem (default 10px), so a single knob rescales the input, options, checkboxes, badges and dropdown together. Font sizes are unitless multipliers of it (e.g. 1.4 Γ— --ms-rem).
  • Colors, borders and radii are per-concern --ms-* variables that default to --base-* tokens, so a design system can theme every Keenmate component at once.
  • Icons flow from a --base-icon-* contract (new in v2.0.0) with a Lucide SVG fallback β€” swap one token and the chevron, checkbox glyphs and every βœ• reskin centrally.

TH01 Live theming

Drag the sliders and pick an accent β€” the variables are written straight onto the element, and the CSS snippet below updates to match.

Open the dropdown to see the accent carry into hover and selected rows.

Controls
Rescales the whole component (8–16px).
Applied CSS
 

CSS variables reference

A curated selection grouped by concern. See the full CSS variables reference for the complete list.

Scaling & typography

--ms-rem bridges to --base-rem (default 10px) β€” one knob rescales everything.

VariableTypeDefaultDescription
--ms-rem lengthvar(--base-rem, 10px)Global sizing unit. Font sizes are unitless multipliers of this.
--ms-font-family fontβ€”Component font family (inherits --base-font-family).
--ms-input-font-size multiplierβ€”Input font size (Γ— --ms-rem).

Colors & accent

The accent drives focus borders, checkboxes, selected rows and badges β€” set --ms-accent-color alone to recolor most of the component. Each falls back to a --base-* token (see the note at the top), then a hardcoded, light-dark()-aware default.

VariableTypeDefaultDescription
--ms-accent-color colorvar(--base-accent-color, #3b82f6)Primary accent β€” focus border, checkbox fill, selected/matched tint, counter, badge remove.
--ms-accent-color-hover colorvar(--base-accent-color-hover)Accent hover state.
--ms-accent-color-light colorβ€”Soft accent tint used behind badges / β€œ+X more” / popover header (a light-dark() pair).
--ms-text-color-1 colorβ€”Primary text (headings/labels). --ms-text-color-2/3/4 step down to muted/disabled.
--ms-border-color colorvar(--base-border-color)Shared border color for the field, dropdown, groups and checkboxes. One knob for every edge.

Input / field

VariableTypeDefaultDescription
--ms-input-bg colorβ€”Field background.
--ms-input-border borderβ€”Field border (shorthand, e.g. 1px solid #cbd5e1). Defaults to 1px solid var(--ms-border-color) β€” set --ms-border-color to recolor every edge at once.
--ms-input-border-hover borderβ€”Field border on hover. Defaults to 1px solid var(--ms-accent-color).
--ms-input-border-focus borderβ€”Field border on focus. Defaults to 1px solid var(--ms-accent-color).
--ms-input-border-radius lengthβ€”Field corner radius.
--ms-input-padding-h v2.0.0 lengthβ€”Horizontal field padding (replaces removed --ms-input-padding*).
--ms-input-gap v2.0.0 lengthβ€”Spacing between input, counter, clear and toggle.
--ms-input-current-width lengthβ€”Resolved field width (drives dropdown/popover default width).

Options & dropdown

VariableTypeDefaultDescription
--ms-dropdown-bg colorβ€”Dropdown background.
--ms-dropdown-width lengthβ€”Dropdown width (see dropdown-width).
--ms-option-bg-hover colorβ€”Option background on hover/focus.
--ms-option-bg-selected colorβ€”Selected option background.
--ms-option-min-height lengthβ€”Minimum option row height.
--ms-tree-indent v2.0.0 lengthβ€”Indent step per tree level.
--ms-tree-base-indent v2.0.0 lengthβ€”Indent of the first tree level.

Badges & tooltips

VariableTypeDefaultDescription
--ms-badge-bg colorβ€”Badge background.
--ms-badge-text-color colorβ€”Badge text color.
--ms-tooltip-bg colorβ€”Shared tooltip background.
--ms-option-tooltip-bg colorβ€”Option tooltip background (overrides shared).
--ms-option-tooltip-max-width lengthβ€”Option tooltip max width.

Transient message / toast (v2.0.0)

The showMessage() toast (also raised by a veto callback returning a reason). Per-variant colors default to --base-* status tones.

VariableTypeDefaultDescription
--ms-message-info-bg / --ms-message-info-color v2.0.0 colorβ€”Info variant (reuses the tooltip surface).
--ms-message-warning-bg / --ms-message-error-bg / --ms-message-success-bg v2.0.0 colorβ€”Status-tone backgrounds (default to --base-warning/danger/success-bg).
--ms-message-border-radius / --ms-message-padding v2.0.0 lengthβ€”Toast shape.

Icons (base contract, v2.0.0)

Each glyph flows from a --base-icon-* counterpart with a Lucide SVG fallback, so a theme can reskin all Keenmate components at once.

VariableTypeDefaultDescription
--ms-icon-chevron v2.0.0 imageβ€”Dropdown toggle chevron.
--ms-icon-check / --ms-icon-indeterminate v2.0.0 imageβ€”Checkbox check / dash (mask glyphs).
--ms-icon-clear / --ms-icon-remove v2.0.0 imageβ€”Clear button / badge remove.
--ms-icon-search / --ms-icon-filter v2.0.0 imageβ€”Search / filter glyphs (fullscreen toggle).
--ms-add-new-* v2.0.0 variousβ€”Add-new prompt row styling (--ms-icon-add-new glyph).