Presentational building blocks for a storefront: buttons, form controls, dialogs,
menus and layout primitives. They are generic and driven by props, with no data
fetching and no commerce concepts. Every structural element carries a data-component
attribute, so you can restyle it without copying the component, and every component
has its own import path (@evolve-storefront/ui/button).
Get started
Install the package with the peer dependencies it needs. It comes from the Evolve registry, which needs a one-time sign-in.
pnpmadd@evolve-storefront/uireact
Requirements1
react
>=19
Import its styles in the stylesheet where you load Tailwind. Without them the components render unstyled.
ComboBoxA text input that offers options as the user types, on react-aria-components, for a search answered elsewhere: the caller supplies items for the current inputValue.
LabelLabel for react-aria-components fields (TextField, Select, Checkbox, RadioGroup).
NavItemNavigation item — a prop-driven link that highlights the current route via isCurrent and defers routing to a renderLink seam.
PaginationProp-driven pager: previous/next plus a page / pageCount readout, no data fetching.
PasswordFieldPassword field (react-aria-components) with a reveal toggle.
MeterA bar showing a quantity inside a known range, such as credit left out of a limit.
PasswordStrengthMeterPresentational password-strength meter — a segmented bar driven by a numeric score.
PopoverGeneric popover primitive built on react-aria-components — a floating panel anchored to a trigger.
NumberFieldA number typed in the page's own notation, such as an amount of money, based on react-aria-components: "1.000,50" in Dutch, "1,000.50" in English.
MultiSelectSelect for choosing several options, such as roles: the listbox stays open while options are checked, and the trigger lists what is chosen.
QuantityStepperProp-driven quantity stepper: a typeable number field between two step buttons, clamped to [min, max] and stepping by step.
RadioGroupRadio group based on react-aria-components.
RangeSliderTwo thumbs picking a range, such as a price filter, based on react-aria-components.
SelectAccessible select based on react-aria-components (custom listbox, not a native
SheetEdge-anchored modal panel — a "side sheet" or drawer.