The grown-up home for the Elements framework

DOM UI

A flashy, serious interface kit built from headless custom elements, Vue components, and inspectable docs that AI can actually work with.

28+primitives
<2kbheadless avg
0styling lock-in
Dialogfocus trap
Comboboxtypeahead
Popoverfloating
Formschema
Tabsroving focus
Toastlive region
customElements.define('dom-dialog', Dialog);
export { DomDialog } from '@getdom/studio/vue';

One system, three surfaces

Ship the primitive, wrap the framework, document the intent.

@getdom/studio/vue

Product-ready Vue components with the DOM still in charge.

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

Not another pretty button pack. A source-owned interface system.

Framework-neutral core

Plain custom elements handle behavior first, so the same primitive can work in Vue, Rails, static HTML, or whatever comes next.

Vue layer that feels native

The Vue package gives app teams the ergonomics they expect without hiding the underlying DOM contract.

Documentation as source

Examples, prop metadata, events, keyboard support, and inspector hints travel with the component instead of living in a separate graveyard.

Built for AI editing

Generated screens can expose their component tree, adjust props, and keep real source code readable after the first pass.

Prototype direction

Make dom-ui.com feel like a product, then split the repo when the shape is right.

Pressure test the offer