Component & design-token showcase

Full reference

Everything in zeyo-ui, for completeness — including the handful this showcase doesn't render live, and why.

A few more, live

Three small pieces that didn't earn their own page. CopyButton is already doing real work — it's what renders the copy button on every code block on this site.

Buttons
Code
<BackButton href={resolve('/components/buttons')} label="Buttons" />
<CopyButton clipboardText={async () => 'npm install zeyo-ui'} />
<CopyArea clipboardText={async () => 'pureleaves'}>
  {#snippet children({ copied, onclick })}
    <button {onclick}>{copied ? 'Copied!' : 'pureleaves'}</button>
  {/snippet}
</CopyArea>
App-specific

Needs a live app context this static showcase doesn’t have

Component Import Note
QueryState zeyo-ui/query-state/QueryState.svelte Renders the pending/error/empty states of a real remote query() instance.
More form fields

Same Field pattern already shown — not repeated for every variant

Component Import Note
DateField / TimeField / DateRangeField zeyo-ui/form/fields Built on @internationalized/date — see docs/datetime.md for the CalendarDate/ZonedDateTime convention.
PinField / HexColorField / PasswordField zeyo-ui/form/fields Same Field pattern as TextField/EmailField shown in Components → Forms.
PhoneField zeyo-ui/form/PhoneField.svelte Wraps libphonenumber-js for validated phone input.
More form primitives

Exist and are used elsewhere, just not yet demoed here

Component Import Note
Choice / ChoiceMulti / WeekdayChoice(Multi) zeyo-ui/form/primitives Segmented single/multi picker, generic over item type.
ContextMenu + Content/Item/Separator/Trigger zeyo-ui/form/primitives Right-click menu primitives.
Draggable / Dropzone / DragManager zeyo-ui/form/primitives Drag-and-drop primitives.
DateInput zeyo-ui/form/primitives Raw date input, lower-level than DateField.
A few more

Simple, but need real data/route context to look right

Component Import Note
ErrorPage zeyo-ui/error/ErrorPage.svelte Full-page error state, meant for a route’s +error.svelte.
Found while building this: packages/ui/package.json exports ./typing-dots/*, but no typing-dots directory exists in packages/ui and nothing in the repo imports it — a dead export worth removing.
Also found: zeyo-ui/table/Table.svelte renders <TableRow> (a <tr>) as a direct child of <table>, with no <tbody> — every consumer (this app's Table/GroupedGrid demos included) logs a Svelte node_invalid_placement_ssr hydration warning in dev, even though the browser auto-corrects it and the rendered table looks right. Cosmetic today, but wrapping children in a <tbody> inside Table.svelte would clear it repo-wide in one place.