XV
UI

Frameworks

The elements are standard custom elements with Shadow DOM, so any framework can render them and own their children. Import an element once to define it.

HTML and Astro

<script type="module">
  import '@raven/ui/xv-dialog'
  import '@raven/ui/xv-button'
</script>

<xv-dialog dialog-title="Delete item?">
  <xv-button slot="trigger" variant="destructive">Delete</xv-button>
  <p>This cannot be undone.</p>
</xv-dialog>

Solid

// src/xv-ui.d.ts
import type {} from '@raven/ui/solid'

// component.tsx
import '@raven/ui/xv-checkbox'
<xv-checkbox label="Remember me" on:xvChange={(e) => setRemember(e.detail.checked)} />

React 19

// src/xv-ui.d.ts
import type {} from '@raven/ui/react'

// component.tsx
import '@raven/ui/xv-checkbox'
<xv-checkbox label="Remember me" onxvChange={(e) => setRemember(e.detail.checked)} />

Forms

Inputs, checkboxes, switches, sliders, radio groups and autocomplete are form-associated: they submit under their name, validate, and reset with the form, and <xv-button type="submit"> submits it.