One component library.
Every framework. Every browser.
UWC Components are built on the browser platform — native
Works everywhere you do
Write your component once. Use it in any framework — or none at all.
Lit
Native
React
Drop-in JSX — works with React 18 and React 19
Angular
Vue
Get started in seconds
Drop it in plain HTML — no build step required.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@uwckit/layouts/dist/preflight.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@uwckit/components/dist/themes/index.css">
<script type="module" src="https://cdn.jsdelivr.net/npm/@uwckit/components/dist/index.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@uwckit/layouts/dist/index.js"></script>
<uwc-button variant="primary">Click me</uwc-button>
<uwc-dropdown placeholder="Select..."></uwc-dropdown>
Built on the browser platform
No polyfill soup. No virtual DOM. UWC reaches directly for primitives the browser already ships.
Modals and dialogs use the native
Tooltips, dropdowns, and menus use the native Popover API — top-layer rendering, light-dismiss, and no z-index wars.
Trigger elements use
Overlay placement is driven by CSS Anchor Positioning — no JS layout calculations, smooth browser-native repositioning.
One codebase. Every output.
The same
// Lit — property and event binding
html`<uwc-dropdown .options=${this.options} @uwc-change=${this.onChange}></uwc-dropdown>`
// Angular — [prop] and (event)
// <uwc-dropdown [options]="options" (uwc-change)="onChange($event)"></uwc-dropdown>
// Vue — :prop and @event
// <uwc-dropdown :options="options" @uwc-change="onChange"></uwc-dropdown>
// React 19 — direct JSX
// <uwc-dropdown options={options} onUwcChange={onChange} />
Everything you'd expect, and then some
Design tokens
Fully themeable via CSS custom properties. Swap between Default, Material, Fluent, and M3 themes at runtime.
Dark mode
Light and dark themes built in. Toggle with a single class attribute — no extra CSS required.
Accessible
ARIA roles, keyboard navigation, and focus management built in. Meets WCAG 2.1 AA out of the box.
TypeScript-first
Every component ships with full typings and a Custom Elements Manifest. Autocomplete everywhere.
Tiny footprint
Lit runtime is ~6 KB. Tree-shake individual components for minimal bundles on any build tool.
CDN ready
Use via npm or drop a script tag — no bundler, no build step, no configuration required.
Ready to build?
Pick a component and start in minutes.