# Web Awesome > A forward-thinking library of web components. Version 3.3.1. Web Awesome provides a comprehensive set of customizable, accessible web components for building modern web applications. All components use shadow DOM and are framework-agnostic, working with vanilla JavaScript or any framework including React, Vue, Angular, and Svelte. Form controls are form-associated custom elements that work with native form validation and the Constraint Validation API. Font Awesome is the default icon library, so `` values should reference Font Awesome icon names. ## Documentation For comprehensive documentation, visit https://webawesome.com/docs/ - [Getting Started](https://webawesome.com/docs/getting-started): Installation and setup guide - [Components Overview](https://webawesome.com/docs/components): Complete component reference - [Theming](https://webawesome.com/docs/theming): Customization and design tokens - [Form Controls](https://webawesome.com/docs/form-controls): Form integration and validation ## Components - [Animated Image](https://webawesome.com/docs/components/animated-image): A component for displaying animated GIFs and WEBPs that play and pause on interaction. - [Animation](https://webawesome.com/docs/components/animation): Animate elements declaratively with nearly 100 baked-in presets, or roll your own with custom keyframes. - [Avatar](https://webawesome.com/docs/components/avatar): Avatars are used to represent a person or object. - [Badge](https://webawesome.com/docs/components/badge): Badges are used to draw attention and display statuses or counts. - [Bar Chart](https://webawesome.com/docs/components/bar-chart): They work well for comparing quantities across categories, showing rankings, and highlighting differences between groups. - [Breadcrumb](https://webawesome.com/docs/components/breadcrumb): Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy. - [Breadcrumb Item](https://webawesome.com/docs/components/breadcrumb-item): Breadcrumb Items are used inside breadcrumbs to represent different links. - [Bubble Chart](https://webawesome.com/docs/components/bubble-chart): They are useful for visualizing relationships where a third variable adds meaning beyond a simple x/y correlation. - [Button](https://webawesome.com/docs/components/button): Buttons represent actions that are available to the user. - [Button Group](https://webawesome.com/docs/components/button-group): Button groups can be used to group related buttons into sections. - [Callout](https://webawesome.com/docs/components/callout): Callouts are used to display important messages inline. - [Card](https://webawesome.com/docs/components/card): Cards can be used to group related subjects in a container. - [Carousel](https://webawesome.com/docs/components/carousel): Carousels display an arbitrary number of content slides along a horizontal or vertical axis. - [Carousel Item](https://webawesome.com/docs/components/carousel-item): A carousel item represent a slide within a carousel. - [Chart](https://webawesome.com/docs/components/chart): Use this component for advanced configuration such as mixed chart types, custom plugins, and direct Chart.js access. - [Checkbox](https://webawesome.com/docs/components/checkbox): Checkboxes allow the user to toggle an option on or off. - [Color Picker](https://webawesome.com/docs/components/color-picker): Color pickers allow the user to select a color. - [Combobox](https://webawesome.com/docs/components/combobox): Comboboxes combine a text input with a listbox, allowing users to filter and select from predefined options or enter custom values. - [Comparison](https://webawesome.com/docs/components/comparison): Compare visual differences between similar content with a sliding panel. - [Copy Button](https://webawesome.com/docs/components/copy-button): Copies data to the clipboard when the user clicks the button. - [Details](https://webawesome.com/docs/components/details): Details show a brief summary and expand to show additional content. - [Dialog](https://webawesome.com/docs/components/dialog): Dialogs, sometimes called "modals", appear above the page and require the user's immediate attention. - [Divider](https://webawesome.com/docs/components/divider): Dividers are used to visually separate or group elements. - [Doughnut Chart](https://webawesome.com/docs/components/doughnut-chart): They offer a cleaner look than pie charts that works well in dashboards, and are best suited for a small number of categories. - [Drawer](https://webawesome.com/docs/components/drawer): Drawers slide in from a container to expose additional options and information. - [Dropdown](https://webawesome.com/docs/components/dropdown): Dropdowns expose additional content that "drops down" in a panel. - [Dropdown Item](https://webawesome.com/docs/components/dropdown-item): Provides items to select in a dropdown. - [File Input](https://webawesome.com/docs/components/file-input): File inputs allow users to select files from their device. - [Format Bytes](https://webawesome.com/docs/components/format-bytes): Formats a number as a human readable bytes value. - [Format Date](https://webawesome.com/docs/components/format-date): Formats a date/time using the specified locale and options. - [Format Number](https://webawesome.com/docs/components/format-number): Formats a number using the specified locale and options. - [Icon](https://webawesome.com/docs/components/icon): Icons are symbols that can be used to represent various options within an application. - [Include](https://webawesome.com/docs/components/include): Includes give you the power to embed external HTML files into the page. - [Input](https://webawesome.com/docs/components/input): Inputs collect data from the user. - [Intersection Observer](https://webawesome.com/docs/components/intersection-observer): Tracks immediate child elements and fires events as they move in and out of view. - [Line Chart](https://webawesome.com/docs/components/line-chart): Use them when the x-axis represents a sequential dimension and you want to emphasize the shape and direction of the data. - [Mutation Observer](https://webawesome.com/docs/components/mutation-observer): The Mutation Observer component offers a thin, declarative interface to the MutationObserver API. - [Number Input](https://webawesome.com/docs/components/number-input): Number inputs allow users to enter and edit numeric values with optional stepper buttons. - [Option](https://webawesome.com/docs/components/option): Options define the selectable items within various form controls such as select. - [Page](https://webawesome.com/docs/components/page): Pages offer an easy way to scaffold entire page layouts using minimal markup. - [Pie Chart](https://webawesome.com/docs/components/pie-chart): They work best with a small number of categories where the relative proportions matter more than exact values. - [Polar Area Chart](https://webawesome.com/docs/components/polar-area-chart): Unlike pie charts, each segment has an equal angle while the radius varies, making them useful for comparing magnitudes without visual bias. - [Popover](https://webawesome.com/docs/components/popover): Popovers display interactive content when their anchor element is clicked. - [Popup](https://webawesome.com/docs/components/popup): Popup is a utility that lets you declaratively anchor "popup" containers to another element. - [Progress Bar](https://webawesome.com/docs/components/progress-bar): Progress bars are used to show the status of an ongoing operation. - [Progress Ring](https://webawesome.com/docs/components/progress-ring): Progress rings are used to show the progress of a determinate operation in a circular fashion. - [QR Code](https://webawesome.com/docs/components/qr-code): Generates a QR code and renders it using the Canvas API. - [Radar Chart](https://webawesome.com/docs/components/radar-chart): They are well-suited for comparing profiles across several dimensions, such as skill assessments, product attributes, or performance metrics. - [Radio](https://webawesome.com/docs/components/radio): Radios allow the user to select a single option from a group. - [Radio Group](https://webawesome.com/docs/components/radio-group): Radio groups are used to group multiple radios so they function as a single form control. - [Rating](https://webawesome.com/docs/components/rating): Ratings give users a way to quickly view and provide feedback. - [Relative Time](https://webawesome.com/docs/components/relative-time): Outputs a localized time phrase relative to the current date and time. - [Resize Observer](https://webawesome.com/docs/components/resize-observer): The Resize Observer component offers a thin, declarative interface to the ResizeObserver API. - [Scatter Chart](https://webawesome.com/docs/components/scatter-chart): They are ideal for identifying correlations, clusters, and outliers in datasets. - [Scroller](https://webawesome.com/docs/components/scroller): Scrollers create an accessible container while providing visual cues that help users identify and navigate through content that scrolls. - [Select](https://webawesome.com/docs/components/select): Selects allow you to choose items from a menu of predefined options. - [Skeleton](https://webawesome.com/docs/components/skeleton): Skeletons are used to provide a visual representation of where content will eventually be drawn. - [Slider](https://webawesome.com/docs/components/slider): Ranges allow the user to select a single value within a given range using a slider. - [Sparkline](https://webawesome.com/docs/components/sparkline): Sparklines display inline data trends as compact, visual charts. - [Spinner](https://webawesome.com/docs/components/spinner): Spinners are used to show the progress of an indeterminate operation. - [Split Panel](https://webawesome.com/docs/components/split-panel): Split panels display two adjacent panels, allowing the user to reposition them. - [Switch](https://webawesome.com/docs/components/switch): Switches allow the user to toggle an option on or off. - [Tab](https://webawesome.com/docs/components/tab): Tabs are used inside tab groups to represent and activate tab panels. - [Tab Group](https://webawesome.com/docs/components/tab-group): Tab groups organize content into a container that shows one section at a time. - [Tab Panel](https://webawesome.com/docs/components/tab-panel): Tab panels are used inside tab groups to display tabbed content. - [Tag](https://webawesome.com/docs/components/tag): Tags are used as labels to organize things or to indicate a selection. - [Textarea](https://webawesome.com/docs/components/textarea): Textareas collect data from the user and allow multiple lines of text. - [Toast](https://webawesome.com/docs/components/toast): Toasts display brief, non-blocking notifications that appear temporarily above the page content. - [Toast Item](https://webawesome.com/docs/components/toast-item): Toast items are individual notifications displayed within a toast container. - [Tooltip](https://webawesome.com/docs/components/tooltip): Tooltips display additional information based on a specific action. - [Tree](https://webawesome.com/docs/components/tree): Trees allow you to display a hierarchical list of selectable tree items. Items with children can be expanded and collapsed as desired by the user. - [Tree Item](https://webawesome.com/docs/components/tree-item): A tree item serves as a hierarchical node that lives inside a tree. - [Zoomable Frame](https://webawesome.com/docs/components/zoomable-frame): Zoomable frames render iframe content with zoom and interaction controls. ## Optional The following is a quick reference describing every component's API. For comprehensive documentation, refer to the component documentation using the URLs provided above. #### `` **Description:** A component for displaying animated GIFs and WEBPs that play and pause on interaction. **Documentation:** https://webawesome.com/docs/components/animated-image **Slots:** - `play-icon`: Optional play icon to use instead of the default. Works best with ``. - `pause-icon`: Optional pause icon to use instead of the default. Works best with ``. **Properties:** - `css`: One or more CSSResultGroup to include in the component's shadow root. Host styles are automatically prepended. (Type: `CSSResultGroup | undefined`, Default: `styles`) - `src`: The path to the image to load. (Type: `string`) - `alt`: A description of the image used by assistive devices. (Type: `string`) - `play`: Plays the animation. When this attribute is remove, the animation will pause. (Type: `boolean`) **Events:** - `wa-load`: Emitted when the image loads successfully. - `wa-error`: Emitted when the image fails to load. **CSS Custom Properties:** - `--control-box-size`: The size of the icon box. - `--icon-size`: The size of the play/pause icons. **CSS Parts:** - `control-box`: The container that surrounds the pause/play icons and provides their background. #### `` **Description:** Animate elements declaratively with nearly 100 baked-in presets, or roll your own with custom keyframes. **Documentation:** https://webawesome.com/docs/components/animation **Slots:** - `(default)`: The element to animate. Avoid slotting in more than one element, as subsequent ones will be ignored. To animate multiple elements, either wrap them in a single container or use multiple `` elements. **Properties:** - `css`: One or more CSSResultGroup to include in the component's shadow root. Host styles are automatically prepended. (Type: `CSSResultGroup | undefined`, Default: `styles`) - `name`: The name of the built-in animation to use. For custom animations, use the `keyframes` prop. (Type: `string`, Default: `'none'`) - `play`: Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when the animation finishes or gets canceled. (Type: `boolean`, Default: `false`) - `delay`: The number of milliseconds to delay the start of the animation. (Type: `number`, Default: `0`) - `direction`: Determines the direction of playback as well as the behavior when reaching the end of an iteration. [Learn more](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction) (Type: `PlaybackDirection`, Default: `'normal'`) - `duration`: The number of milliseconds each iteration of the animation takes to complete. (Type: `number`, Default: `1000`) - `easing`: The easing function to use for the animation. This can be a Web Awesome easing function or a custom easing function such as `cubic-bezier(0, 1, .76, 1.14)`. (Type: `string`, Default: `'linear'`) - `endDelay` (attribute: `end-delay`): The number of milliseconds to delay after the active period of an animation sequence. (Type: `number`, Default: `0`) - `fill`: Sets how the animation applies styles to its target before and after its execution. (Type: `FillMode`, Default: `'auto'`) - `iterations`: The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops. (Type: `number`, Default: `Infinity`) - `iterationStart` (attribute: `iteration-start`): The offset at which to start the animation, usually between 0 (start) and 1 (end). (Type: `number`, Default: `0`) - `keyframes`: The keyframes to use for the animation. If this is set, `name` will be ignored. (Type: `Keyframe[] | undefined`) - `playbackRate` (attribute: `playback-rate`): Sets the animation's playback rate. The default is `1`, which plays the animation at a normal speed. Setting this to `2`, for example, will double the animation's speed. A negative value can be used to reverse the animation. This value can be changed without causing the animation to restart. (Type: `number`, Default: `1`) - `currentTime`: Gets and sets the current animation time. (Type: `CSSNumberish`) **Methods:** - `cancel()`: Clears all keyframe effects caused by this animation and aborts its playback. - `finish()`: Sets the playback time to the end of the animation corresponding to the current playback direction. **Events:** - `wa-cancel`: Emitted when the animation is canceled. - `wa-finish`: Emitted when the animation finishes. - `wa-start`: Emitted when the animation starts or restarts. #### `` **Description:** Avatars are used to represent a person or object. **Documentation:** https://webawesome.com/docs/components/avatar **Slots:** - `icon`: The default icon to use when no image or initials are present. Works best with ``. **Properties:** - `css`: One or more CSSResultGroup to include in the component's shadow root. Host styles are automatically prepended. (Type: `CSSResultGroup | undefined`, Default: `styles`) - `image`: The image source to use for the avatar. (Type: `string`, Default: `''`) - `label`: A label to use to describe the avatar to assistive devices. (Type: `string`, Default: `''`) - `initials`: Initials to use as a fallback when no image is available (1-2 characters max recommended). (Type: `string`, Default: `''`) - `loading`: Indicates how the browser should load the image. (Type: `'eager' | 'lazy'`, Default: `'eager'`) - `shape`: The shape of the avatar. (Type: `'circle' | 'square' | 'rounded'`, Default: `'circle'`) **Events:** - `wa-error`: The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause. **CSS Custom Properties:** - `--size`: The size of the avatar. **CSS Parts:** - `icon`: The container that wraps the avatar's icon. - `initials`: The container that wraps the avatar's initials. - `image`: The avatar image. Only shown when the `image` attribute is set. #### `` **Description:** Badges are used to draw attention and display statuses or counts. **Documentation:** https://webawesome.com/docs/components/badge **Slots:** - `(default)`: The badge's content. - `start`: An element, such as ``, placed before the label. - `end`: An element, such as ``, placed after the label. **Properties:** - `css`: One or more CSSResultGroup to include in the component's shadow root. Host styles are automatically prepended. (Type: `CSSResultGroup | undefined`, Default: `[variantStyles, styles]`) - `variant`: The badge's theme variant. Defaults to `brand` if not within another element with a variant. (Type: `'brand' | 'neutral' | 'success' | 'warning' | 'danger'`, Default: `'brand'`) - `appearance`: The badge's visual appearance. (Type: `'accent' | 'filled' | 'outlined' | 'filled-outlined'`, Default: `'accent'`) - `pill`: Draws a pill-style badge with rounded edges. (Type: `boolean`, Default: `false`) - `attention`: Adds an animation to draw attention to the badge. (Type: `'none' | 'pulse' | 'bounce'`, Default: `'none'`) **CSS Custom Properties:** - `--pulse-color`: The color of the badge's pulse effect when using `attention="pulse"`. **CSS Parts:** - `base`: The component's base wrapper. - `start`: The container that wraps the `start` slot. - `end`: The container that wraps the `end` slot. #### `` **Description:** They work well for comparing quantities across categories, showing rankings, and highlighting differences between groups. **Documentation:** https://webawesome.com/docs/components/bar-chart **Slots:** - `(default)`: An optional `