Skip to content

CommandPalette theming

Every cosmetic value CommandPalette renders is a --rozie-command-palette-* 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-command-palette {
  --rozie-command-palette-z: 1000;
  --rozie-command-palette-width: min(40rem, 100%);
  --rozie-command-palette-search-padding: 0.75rem;
  --rozie-command-palette-header-font-size: 0.875rem;
}

Tokens

overlay / scrim

TokenDefault
--rozie-command-palette-z1000
--rozie-command-palette-overlay-padding12vh 1rem 1rem
--rozie-command-palette-backdrop-bgrgba(0, 0, 0, 0.5)
--rozie-command-palette-backdrop-filternone

panel chrome

Also carries the depth>0 header's title weight, which shares the panel's chrome semantics rather than the header's own.

TokenDefault
--rozie-command-palette-widthmin(40rem, 100%)
--rozie-command-palette-max-height70vh
--rozie-command-palette-fontinherit
--rozie-command-palette-colorinherit
--rozie-command-palette-bg#fff
--rozie-command-palette-bordernone
--rozie-command-palette-radius0.75rem
--rozie-command-palette-shadow0 10px 38px rgba(0, 0, 0, 0.35), 0 0 1px rgba(0, 0, 0, 0.25)
--rozie-command-palette-border-width1px
--rozie-command-palette-divider-colorrgba(0, 0, 0, 0.1)
--rozie-command-palette-title-weight600

search input

Also drives the vendored Combobox's render-neutral tokens, by aliasing them at panel scope.

TokenDefault
--rozie-command-palette-search-padding0.75rem
--rozie-command-palette-input-padding0.5rem 0.75rem
--rozie-command-palette-input-font-size1.05rem
--rozie-command-palette-input-bgtransparent
--rozie-command-palette-input-bordernone
--rozie-command-palette-input-radius0.5rem
--rozie-command-palette-input-border-colortransparent
--rozie-command-palette-input-focus-border-colortransparent
--rozie-command-palette-input-focus-ring-width0
--rozie-command-palette-input-underlinevar(--rozie-command-palette-border-width, 1px) solid var(--rozie-command-palette-divider-color, rgba(0, 0, 0, 0.1))
TokenDefault
--rozie-command-palette-header-font-size0.875rem
--rozie-command-palette-header-gap0.5rem
--rozie-command-palette-header-padding0.5rem 0.75rem

back button

TokenDefault
--rozie-command-palette-back-bgtransparent
--rozie-command-palette-back-bordernone
--rozie-command-palette-back-font-size1.1rem
--rozie-command-palette-back-hover-bgrgba(0, 0, 0, 0.06)
--rozie-command-palette-back-padding0.125rem 0.375rem
--rozie-command-palette-back-radius0.375rem
TokenDefault
--rozie-command-palette-breadcrumb-colorrgba(0, 0, 0, 0.55)
--rozie-command-palette-breadcrumb-current-colorinherit
--rozie-command-palette-breadcrumb-current-weight600
--rozie-command-palette-breadcrumb-gap0.25rem
--rozie-command-palette-breadcrumb-jump-hover-colorvar(--rozie-command-palette-breadcrumb-current-color, inherit)
--rozie-command-palette-breadcrumb-jump-hover-decorationunderline
--rozie-command-palette-breadcrumb-jump-radius0.25rem
--rozie-command-palette-breadcrumb-separator-colorrgba(0, 0, 0, 0.35)
--rozie-command-palette-breadcrumb-weight400

list + options

Also the option icon, the fuzzy-match highlight, the trailing slot, and group-heading spacing.

TokenDefault
--rozie-command-palette-list-padding0.5rem
--rozie-command-palette-option-gap0.75rem
--rozie-command-palette-icon-colorinherit
--rozie-command-palette-icon-size1rem
--rozie-command-palette-match-colorinherit
--rozie-command-palette-match-weight600
--rozie-command-palette-trailing-colorrgba(0, 0, 0, 0.5)
--rozie-command-palette-trailing-font-size0.75rem
--rozie-command-palette-section-gap0.375rem

per-item group label

TokenDefault
--rozie-command-palette-group-font-size0.75rem
--rozie-command-palette-group-colorrgba(0, 0, 0, 0.5)
--rozie-command-palette-group-transformuppercase

option actions

The row's right-side hint, plus the flyout trigger that hint opens when the option carries more than one action.

TokenDefault
--rozie-command-palette-actions-colorrgba(0, 0, 0, 0.55)
--rozie-command-palette-actions-font-size0.75rem
--rozie-command-palette-actions-gap0.375rem
--rozie-command-palette-actions-hint-bgrgba(0, 0, 0, 0.06)
--rozie-command-palette-actions-hint-colorinherit
--rozie-command-palette-actions-hint-font-size0.6875rem
--rozie-command-palette-actions-hint-padding0.0625rem 0.3125rem
--rozie-command-palette-actions-hint-radius0.25rem
--rozie-command-palette-actions-hover-bgrgba(0, 0, 0, 0.06)
--rozie-command-palette-actions-hover-colorrgba(0, 0, 0, 0.85)
--rozie-command-palette-actions-radius0.25rem

hotkey badge

The per-item teaching badge. Each token here falls back to the matching actions-hint-* token declared above, so setting the hint styles both.

TokenDefault
--rozie-command-palette-hotkey-bgvar(--rozie-command-palette-actions-hint-bg, rgba(0, 0, 0, 0.06))
--rozie-command-palette-hotkey-colorvar(--rozie-command-palette-actions-hint-color, inherit)
--rozie-command-palette-hotkey-font-sizevar(--rozie-command-palette-actions-hint-font-size, 0.6875rem)
--rozie-command-palette-hotkey-paddingvar(--rozie-command-palette-actions-hint-padding, 0.0625rem 0.3125rem)
--rozie-command-palette-hotkey-radiusvar(--rozie-command-palette-actions-hint-radius, 0.25rem)

action menu flyout

TokenDefault
--rozie-command-palette-action-active-bgrgba(0, 0, 0, 0.08)
--rozie-command-palette-action-bg#fff
--rozie-command-palette-action-border1px solid rgba(0, 0, 0, 0.1)
--rozie-command-palette-action-disabled-opacity0.5
--rozie-command-palette-action-gap0.5rem
--rozie-command-palette-action-icon-colorinherit
--rozie-command-palette-action-item-padding0.375rem 0.5rem
--rozie-command-palette-action-item-radius0.375rem
--rozie-command-palette-action-max-width16rem
--rozie-command-palette-action-min-width10rem
--rozie-command-palette-action-padding0.25rem
--rozie-command-palette-action-radius0.5rem
--rozie-command-palette-action-right0.5rem
--rozie-command-palette-action-shadow0 6px 24px rgba(0, 0, 0, 0.25)
--rozie-command-palette-action-shortcut-colorrgba(0, 0, 0, 0.5)
--rozie-command-palette-action-shortcut-font-size0.75rem
--rozie-command-palette-action-z10

args surface

Panel-internal: a chip plus a fields form, which replaces the result list once the palette descends to an argument-collecting depth.

TokenDefault
--rozie-command-palette-args-chip-bgrgba(0, 0, 0, 0.06)
--rozie-command-palette-args-chip-colorinherit
--rozie-command-palette-args-chip-padding0.125rem 0.5rem
--rozie-command-palette-args-dim-opacity0.45
--rozie-command-palette-args-field-bgvar(--rozie-command-palette-input-bg, transparent)
--rozie-command-palette-args-field-bordervar(--rozie-command-palette-border-width, 1px) solid var(--rozie-command-palette-divider-color, rgba(0, 0, 0, 0.1))
--rozie-command-palette-args-field-paddingvar(--rozie-command-palette-input-padding, 0.5rem 0.75rem)
--rozie-command-palette-args-field-radiusvar(--rozie-command-palette-input-radius, 0.5rem)
--rozie-command-palette-args-gap0.5rem
--rozie-command-palette-args-padding0.75rem

empty state

Also the loading and error states, which re-project into this same #empty region.

TokenDefault
--rozie-command-palette-empty-padding1.5rem
--rozie-command-palette-empty-colorrgba(0, 0, 0, 0.5)
--rozie-command-palette-loading-colorrgba(0, 0, 0, 0.5)
--rozie-command-palette-error-color#c0392b
TokenDefault
--rozie-command-palette-footer-padding0.5rem 0.75rem
--rozie-command-palette-footer-font-size0.8125rem
--rozie-command-palette-footer-colorrgba(0, 0, 0, 0.55)

Design-system bridges

Each package ships token presets that map CommandPalette's tokens onto a known design system's published CSS variables — import base.css first, then a bridge:

ts
import '@rozie-ui/command-palette-react/themes/base.css';
import '@rozie-ui/command-palette-react/themes/bootstrap.css';
import '@rozie-ui/command-palette-react/themes/material.css';
import '@rozie-ui/command-palette-react/themes/shadcn.css';

See also

Pre-1.0 — APIs may change between minor versions.