Framework-neutral core
Plain custom elements handle behavior first, so the same primitive can work in Vue, Rails, static HTML, or whatever comes next.
The grown-up home for the Elements framework
A flashy, serious interface kit built from headless custom elements, Vue components, and inspectable docs that AI can actually work with.
customElements.define('dom-dialog', Dialog);
export { DomDialog } from '@getdom/studio/vue';One system, three surfaces
@getdom/studio/vue
Slots, v-model, form state, and polished styling sit on top of framework-neutral primitives.
import { DomButton, DomDialog } from '@getdom/studio/vue';
<DomDialog v-model="open" title="Invite teammate">
<DomButton>Send invite</DomButton>
</DomDialog>Why DOM UI exists
Plain custom elements handle behavior first, so the same primitive can work in Vue, Rails, static HTML, or whatever comes next.
The Vue package gives app teams the ergonomics they expect without hiding the underlying DOM contract.
Examples, prop metadata, events, keyboard support, and inspector hints travel with the component instead of living in a separate graveyard.
Generated screens can expose their component tree, adjust props, and keep real source code readable after the first pass.
Prototype direction