Skip to content

Theming

Vue Pick uses CSS custom properties for all visual styling. Override them at any scope — globally in your root stylesheet, per-container, or inline on a single instance.

Overriding variables

css
/* Global — in your main CSS file */
:root {
  --vpick-border-radius: 0;
  --vpick-border-color: #d1d5db;
}
vue
<!-- Scoped — affects only instances inside this container -->
<style scoped>
.my-form {
  --vpick-border-radius: 0px;
  --vpick-bg: #f9fafb;
}
</style>
vue
<!-- Inline — single instance -->
<VPickNative
  :options="options"
  style="--vpick-border-radius: 9999px; --vpick-border-color: #6366f1;"
/>

Shared variables

These apply to both VPickNative and VPick.

VariableDefault
--vpick-font-familyinherit
--vpick-font-size0.875rem
--vpick-line-height1.25rem
--vpick-widthfit-content
--vpick-border-color#e5e5e5
--vpick-border-radius0.625rem
--vpick-bgtransparent
--vpick-text-colorinherit
--vpick-placeholder-color#737373
--vpick-icon-color#737373
--vpick-focus-border-color#a1a1a1
--vpick-focus-ring-colorrgba(161, 161, 161, 0.5)
--vpick-error-border-color#dc2626
--vpick-error-bgrgba(220, 38, 38, 0.05)
--vpick-error-ring-colorrgba(220, 38, 38, 0.2)
--vpick-disabled-opacity0.5
--vpick-height-default2rem
--vpick-height-sm1.75rem
--vpick-shadow0 0 0 0 transparent

VPickNative variables

VariableDefault
--vpick-native-widthfit-content

VPick variables

VariableDefault
--vpick-option-radius0.5rem
--vpick-listbox-bg#fff
--vpick-listbox-shadow0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)
--vpick-listbox-ringrgba(0, 0, 0, 0.06)
--vpick-listbox-max-height16rem
--vpick-listbox-z-index50
--vpick-option-hover-bg#f5f5f5
--vpick-option-highlight-bg#f5f5f5
--vpick-option-selected-colorinherit
--vpick-option-check-colorcurrentColor
--vpick-group-label-color#737373
--vpick-group-label-size0.75rem

Released under the MIT License.