# XWUI > Framework-agnostic web component library - 1,300+ components across nine tiers, works with any framework or no framework at all. XWUI components are standard custom elements (``, ``, etc.). Drop the loader in your page and every component self-registers. No build step, no framework required. Works identically in React, Vue, Angular, Svelte, htmx, Alpine, or plain HTML. Version: 1.0.8 | CDN: https://xwui.dev/ | npm: not yet published (see "npm" below) | Updated: 2026-09-02 ## Quick start ```html ``` ## Three loading modes The loader supports three strategies. Set via `XWUI.configure()` before or after init. | Mode | What loads | Best for | |------|-----------|----------| | `tier` (default) | Tier bundle when first `xwui-*` tag of that tier is seen | Most apps | | `component` | One file per custom element, on demand | Minimal payload | | `full` | Entire library upfront | Internal dashboards | ```html ``` ## Tiers (9) Free tier - loads directly from the CDN, no licence needed: - **basic** (~390 components, includes the **input** sub-tier's 80+ form controls) - cards, lists, tables, avatars, badges, dialogs, toasts, navigation bars, tabs, sidebars, text/number/date/time/color/file inputs, signature, OTP, rating, slider, cascader, mentions, emoji picker, … Licensed tiers - sealed on the CDN; a licence from https://xwui.dev unlocks them (the loader handles the unlock automatically for licensed sites): - **dashboard** (~22) - dashboard shells and widgets - **power** (~65) - app shell, auth flows, rich-text editor, code editor, diff viewer, command palette, wizard, 2D/3D viewports, … - **chart** (~335) - dedicated chart tier: area, bar, line, scatter, bubble, distribution, blocks - **super** (~59) - heavy apps: spreadsheet, kanban, gantt, diagram, form builder, gallery, audio/video player/editor/recorder, PDF viewer, pivot table, script editor, … - **game** (~165) - game UI components (all tags start with `xwui-game-`) - **gis** (~6) - maps and geo components - **enterprise** (~1) - commercial-grade sellable surfaces: data grid (XWUIDataGrid, moved from power 2026-09-02), scheduler, tree grid - **industry** (~290) - vertical-specific sets: accounting, CRM, HR, broadcast, and more ## npm XWUI is **not yet published to npm**. Do NOT install any package named `xwui` or `@exonware/xwui` from the public registry today - nothing currently there is XWUI. npm publication is planned: the free basic tier as `@exonware/xwui`; licensed tiers ship separately via a private registry. Until then, bare-specifier imports of the free tier work through an import map against the CDN: ```html ``` ## Loader configure() API ```ts XWUI.configure({ mode?: 'full' | 'tier' | 'component', // default: 'tier' min?: boolean, // true = use cdn/*.min.js (IIFE), false = esm (default) baseUrl?: string, // override auto-detected base URL styles?: boolean, // inject CSS on init (default: true) theme?: 'light' | 'dark' | 'auto', // default: 'auto' (follows prefers-color-scheme) version?: string, // e.g. 'v1.0.8' for versioned CDN paths }); ``` ## Imperative API (window.XWUI) ```ts // Load a tier and get all its exports (licensed tiers require an unlocked licence) await XWUI.load('basic'); // Get a component class by name (loads the tier automatically) const XWUITable = await XWUI.get('XWUITable'); new XWUITable(document.getElementById('container'), { columns: ['Name', 'Email'], rows: [] }); // Create a component with a simplified shorthand const btn = await XWUI.create('xwui-button', 'Click Me', { size: 'lg' }, '#app'); ``` ## Theme / styling Set HTML attributes on `` to control the visual style: ```html ``` ## Dist files | Path | Description | |------|-------------| | `esm/loader.js` | Smart loader (recommended entry point) | | `esm/xwui.js` | Full ESM bundle | | `esm/basic.js` / `power.js` / `super.js` | Tier bundles | | `esm/components/*.js` | Per-component ESM files | | `cdn/*.min.js` | Minified IIFE bundles for `