Web Awesome Documentation
repository·next·Indexed 23 days ago
https://github.com/shoelace-style/webawesomeA collection of customizable, accessible, and framework-agnostic web components built with Lit and esbuild. This documentation covers the library's core components, the doc transformer pipeline for Eleventy, and the agent skill system used to provide AI tools with hand-authored references for component selection and design guidance.
What's inside Web Awesome
- Web Awesome is an open-source library of meticulously designed, highly customizable, and framework-agnostic UI components. It is built on web standards to ensure longevity without third-party bloat, is designed with an accessibility-forward approach, and allows for deep customization through theming.
Configure the Button component
nextThe
<wa-button>component is used for actions like form submission, links, and icon-only triggers. It supports various semantic variants, visual appearances, and sizes. You can also add decorations using slots or use it as a link by providing anhrefattribute.<wa-button>Save</wa-button>Access Web Awesome documentation
nextThe official documentation for Web Awesome, including guides, component references, and usage instructions, is hosted at https://webawesome.com.New features in Web Awesome
nextWeb Awesome introduces several new capabilities compared to Shoelace:
- New Components: Includes
<wa-callout>,<wa-comparison>,<wa-popover>,<wa-page>,<wa-scroller>,<wa-zoomable-frame>,<wa-number-input>,<wa-markdown>, and<wa-intersection-observer>. - Native HTML Styling: Use
dist/styles/native.cssto theme plain HTML elements (like<button>,<input>,<table>) using Web Awesome design tokens. - Utility CSS Layer: Provides layout and spacing primitives via plain CSS classes like
wa-stack,wa-cluster, andwa-grid(no JS required). - Theming: Includes
wa-theme-default,-awesome, and-shoelace(the latter approximates the Shoelace look for easier migration). - Brand Hue Swapping: Apply a brand color class to the
<html>element (e.g.,class="wa-brand-purple") to re-skin the entire application. - OKLCH Color Palettes: Uses OKLCH for perceptually uniform color tints.
- SSR-Friendly Hydration: Components use
did-ssrandwith-*slot markers to support clean server-side rendering hydration.
- New Components: Includes
Web Awesome Pro features and components
nextWeb Awesome Pro is a paid superset package (
@awesome.me/webawesome-pro) that includes advanced components and tools:Pro Components:
<wa-toast>and<wa-toast-item>(notification stacks)<wa-combobox>(autocomplete/multiselect)<wa-file-input>(drag-and-drop with previews)<wa-chart>and seven typed subclasses (built on Chart.js)<wa-sparkline>(inline trend visualization)
Pro Extras:
- 8 additional themes (
active,brutalist,glossy,matter,mellow,playful,premium,tailspin) - Pro Theme Builder, Pro Color Tools, Pattern Library, and Figma Design Kit.
Use the wa-number-input component
nextThe
wa-number-inputcomponent provides a numeric input field with stepper buttons for incrementing and decrementing values. It integrates with standard HTML<form>elements for submission and validation.<wa-number-input label="Quantity" value="1" style="max-width: 260px;"></wa-number-input>Web Awesome Browser Support Policy
nextWeb Awesome officially supports the latest two major versions of the following popular browsers:
- Chrome
- Safari
- Edge
- Firefox
- Opera
For the best experience, it is strongly recommended to use these supported versions. While fixes or workarounds for older browsers may be provided for critical issues at the project's discretion, the primary focus is on modern browser versions.
Use the `<wa-popup>` component for positioning
nextThe
<wa-popup>component is a low-level positioning utility powered by Floating UI. It is designed to position floating elements (like tooltips or dropdowns) relative to an anchor element.Important Considerations:
- Not an accessible component: It does not handle accessibility (ARIA, keyboard navigation, etc.) on its own. It is intended to be used as a building block inside more complex, accessible components (like a
<wa-tooltip>or<wa-dropdown>). - Anchor Slot: Use the
slot="anchor"on an element inside the<wa-popup>to define the target element for positioning. If the anchor is a<slot>, the popup uses the first assigned element as the anchor. - Styling Warning: Do not style the popup's anchor with
display: contents, as this prevents the component from calculating the correct coordinates.
- Not an accessible component: It does not handle accessibility (ARIA, keyboard navigation, etc.) on its own. It is intended to be used as a building block inside more complex, accessible components (like a
Use the wa-slider component
nextThe
wa-slidercomponent provides a range input (scrubber) for selecting values. It supports single-thumb selection and dual-thumb range selection. It is compatible with standard<form>elements for submission and validation.<wa-slider label="Number of users" hint="Limit six per team" name="value" value="3" min="0" max="6" with-markers with-tooltip > <span slot="reference">Less</span <span slot="reference">More</span </wa-slider>Configure the `wa-tag` component
nextThe
<wa-tag>component (also known as a chip, label, pill, token, or badge) is used for feedback, filtering, or categorizing content. You can customize its semantic meaning, visual style, size, and shape using attributes.<wa-tag>Featured</wa-tag>Using Web Awesome with frameworks
nextWeb Awesome is built on standard web components, which means it is framework-agnostic and can be used with any modern web framework or library.
Specific setup guides and known limitations are available for the following frameworks:
- Angular
- React
- Svelte
- Vue (including Vue 2 and Vue 3)
- Express
- Astro
- Build Awesome (11ty)
What is the icon `canvas` and how to use it?
nextThecanvasis the bounding box an icon sits in. You can choose from four mutually exclusive modes using thecanvasattribute. The default mode isfixed. The canvas scales withfont-sizeindependently of the icon's internal sizing.