Skip to content

Introduction ​

Ropav is a Vue 3 component library built on Vapor Mode. Every component compiles to direct DOM operations rather than to a virtual DOM tree, and the behaviour layer — focus, press, selection, collections, dates — is re-implemented from React Aria rather than reinvented.

It is a port of HeroUI v3 to Vue: the style layer is vendored from @heroui/styles, so the visual language is theirs; the behaviour is a fresh implementation, because none of theirs could carry across.

What's in the box ​

PackageWhat it is
ropavThe components. Depends on the one below and pulls it in for you.
@ropav/stylesPlain CSS for every component, the themes, and the tv() recipes that map props to class names. Framework-agnostic — not a line of Vue in it.

You install ropav. @ropav/styles arrives with it, and you import its stylesheet once.

What the split buys you ​

The style layer never imports Vue, so a component's appearance is readable without reading its behaviour, and a design change is a CSS change. It also means the classes are yours to work with: every component takes a class prop, every colour is a custom property, and a theme is a token block rather than a build step. See Theming.

Where to start ​

  • Installation — one package, and the stylesheet two ways.
  • Vapor mode — what it changes for you, and the one line a VDOM app needs.
  • Theming — two axes, and the palettes that ship.
  • Button — the component page every other one is shaped like.