E-Commerce
Variant Swatch Picker
Colour swatch and size button picker with per-combination availability so unavailable sizes show struck-through instead of disappearing.
$ velocityx add variant-swatch-picker
Built for react.
Needs react, react-dom already installed
as peer dependencies.
An Astro-only project needs @astrojs/react wired up first — this won't run on its own in plain Astro.
Full docs for Variant Swatch Picker →
Needs a licence key —
subscribe here, then
velocityx loginonce.
Colour — Black
Size — US 9
Props
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colors | { id, label, swatch (css colour or image url), image? }[] | No | [] | |
| sizes | { id, label }[] | No | [] | |
| selectedColor | string | Yes | ||
| selectedSize | string | Yes | ||
| onSelectColor | (id) => void | Yes | ||
| onSelectSize | (id) => void | Yes | ||
| isAvailable | (colorId, sizeId) => boolean | No | () => true |
File this creates
The CLI writes this path into your project, relative to its root — nothing else moves.
components/velocity/variant-swatch-picker/VariantSwatchPicker.jsx Using the Variant Swatch Picker component
Install it with velocityx add variant-swatch-picker.
The CLI writes the source straight into your project — no runtime dependency, no registry
lock-in, and it themes itself from the same primary-*/accent-* scale as the rest of the library.
Related components
More from E-Commerce.
Primary CTA with loading, success checkmark and error states around an async add-to-cart handler.
reactRight-docked cart drawer on desktop and a three-snap-point bottom sheet on mobile, with no backdrop-blur scrim, focus trap and Escape to close.
reactSingle cart row with thumbnail, variant text, quantity stepper, line total and a fade-out remove action.
reactTwo-column shipping and payment form with native HTML5 validation and a submit button with a loading state.
react