Side
The design system for Sipe products
Tokens first
Color, spacing, radius and type all resolve through @sipe-team/tokens. Components read the contract rather than literal values, so a token change lands everywhere at once.
Typed and tested
Every package ships ESM and CJS with types, and each component carries Vitest coverage for its variants, accessibility states and controlled behavior.
Composable by default
Components forward refs, extend their native element props and support asChild through Radix Slot — so they fit the markup you already have.