Composition Recipes
Curated multi-component patterns. Each recipe shows the target Web Component API for composing common UI patterns.
Modal form with validation
Dialog + Text Input + Dropdown + Notification + primary/secondary buttons. Demonstrates focus trap, validation, and confirm/cancel actions.
Show code
<udc-dialog heading="Add Tenant" open>
<udc-text-input label="Full name" required></udc-text-input>
<udc-dropdown label="Property">
<udc-dropdown-item value="riverbend">Riverbend Estates</udc-dropdown-item>
</udc-dropdown>
<udc-notification tone="info" inline>
Saving will send a welcome email automatically.
</udc-notification>
<div slot="actions">
<udc-button variant="secondary">Cancel</udc-button>
<udc-button variant="primary">Save tenant</udc-button>
</div>
</udc-dialog>Searchable data table
Search + Chip filters + Data Table + bulk action bar. Shows the canonical pattern for a list page.
Show code
<!-- Filter bar: Search + Chips -->
<div style="display:flex;gap:12px;">
<udc-search label="Search tenants"></udc-search>
<udc-chip variant="filter" selected>Active</udc-chip>
</div>
<!-- Table -->
<udc-data-table>
<table>…</table>
</udc-data-table>Settings panel with tabs
Tabs + List + Text Input + Checkbox + Save action. Pattern for grouped settings or preferences.
Show code
<udc-tabs selected-panel="general">
<udc-tab panel="general">General</udc-tab>
<udc-tab panel="notifications">Notifications</udc-tab>
<udc-tab-panel panel="general">
<udc-text-input label="Display name"></udc-text-input>
<udc-checkbox name="summary">Send weekly summary email</udc-checkbox>
<udc-button variant="primary">Save changes</udc-button>
</udc-tab-panel>
</udc-tabs>App shell with nav
Nav Header + Nav Vertical + content area. The standard authenticated app layout.
Show code
<udc-nav-header>
<span slot="brand">Boardroom</span>
<udc-button slot="actions" variant="ghost" leading-icon="notifications" icon-only aria-label="Notifications"></udc-button>
</udc-nav-header>
<div style="display:flex;min-height:calc(100vh - 64px);">
<udc-nav-vertical aria-label="Main">
<udc-nav-item href="/dashboard" current>Dashboard</udc-nav-item>
<udc-nav-item href="/leasing">Leasing</udc-nav-item>
</udc-nav-vertical>
<main style="flex:1;">…</main>
</div>