Build with Over 70 Components
Browse the library of customizable, framework-friendly web components included in Web Awesome.
Sort by name or release date
Animated Image
<wa-animated-image>
Animated images display GIFs and WEBPs with controls to play and pause them on demand. Use them when you want motion but need to give users control over when it plays.
Animation
<wa-animation>
Animate elements declaratively with nearly 100 baked-in presets, or roll your own with custom keyframes. Powered by the Web Animations API.
Avatar
<wa-avatar>
Avatars represent a person or object with an image, initials, or icon. Use them in lists, comments, and profiles to give users visual context at a glance.
Badge
<wa-badge>
Badges draw attention to adjacent content by displaying a status, count, or label. Use them to highlight notifications, categorize items, or flag new activity.
Bar Chart
<wa-bar-chart>
Bar charts compare quantities across categories using rectangular bars. They work well for showing rankings, highlighting differences between groups, and tracking changes across time periods.
Breadcrumb
<wa-breadcrumb>
Breadcrumbs display a trail of links that show users where they are in a site's hierarchy. They help users understand the current location and navigate back to parent pages.
Breadcrumb Item
<wa-breadcrumb-item>
Breadcrumb items represent individual links inside a breadcrumb, typically one per level of the site hierarchy.
Bubble Chart
<wa-bubble-chart>
Bubble charts add a third dimension to scatter plots by varying the size of each data point. They are useful for visualizing relationships where a third variable adds meaning beyond a simple x/y correlation.
Button
<wa-button>
Buttons represent actions the user can take, such as submitting a form, opening a dialog, or navigating to another page.
Button Group
<wa-button-group>
Button groups combine related buttons into a single visual unit. Use them for toolbars, segmented controls, or any set of actions that belong together.
Callout
<wa-callout>
Callouts display important messages inline with surrounding content. Use them to highlight tips, warnings, errors, or other information users should not miss.
Card
<wa-card>
Cards group related content and actions inside a bordered container. Use them to present products, articles, user profiles, or any self-contained unit of information.
Carousel
<wa-carousel>
Carousels display a series of content slides along a horizontal or vertical axis, one or more at a time. Users can navigate between slides with controls, pagination, or autoplay.
Carousel Item
<wa-carousel-item>
Carousel items represent individual slides within a carousel.
Chart
<wa-chart>
Charts provide a flexible wrapper around Chart.js for building themed data visualizations. Use this component for advanced configuration such as mixed chart types, custom plugins, and direct Chart.js instance access.
Checkbox
<wa-checkbox>
Checkboxes let users toggle an option on or off, or select multiple items from a list. They also support an indeterminate state for partial selections in groups.
Color Picker
<wa-color-picker>
Color pickers let users choose a color from a visual palette or by entering a value. They support HEX, RGB, HSL, and HSV formats with optional alpha channel and swatch presets.
Combobox
<wa-combobox>
Comboboxes combine a text input with a listbox, allowing users to filter and select from predefined options or enter custom values.
Comparison
<wa-comparison>
Comparisons show the visual differences between two pieces of similar content using a draggable divider. Use them for before/after images, design revisions, or side-by-side previews.
Copy Button
<wa-copy-button>
Copy buttons copy text to the clipboard when the user activates them. They provide built-in success and error feedback so users know the copy worked.
Details
<wa-details>
Details display a brief summary and expand to reveal additional content. Use them to progressively disclose information, group related FAQs, or hide advanced options.
Dialog
<wa-dialog>
Dialogs appear above the page and require the user's immediate attention. Use them for confirmations, forms, or focused tasks that interrupt the main flow.
Divider
<wa-divider>
Dividers visually separate or group adjacent elements with a horizontal or vertical line. Use them to establish rhythm and hierarchy within menus, toolbars, and layouts.
Doughnut Chart
<wa-doughnut-chart>
Doughnut charts show proportional data as slices of a ring with a hollow center. They offer a cleaner look than pie charts and work well in dashboards where the center space can provide additional context.
Drawer
<wa-drawer>
Drawers slide in from the edge of a container to expose additional options and information without navigating away. Useful for navigation menus, filters, and secondary content.
Dropdown
<wa-dropdown>
Dropdowns display a list of options triggered by a button or other element. They support keyboard navigation, submenus, and checkable items for building menus and context actions.
Dropdown Item
<wa-dropdown-item>
Dropdown items represent selectable entries within a dropdown menu, including standard actions, checkable items, and submenu triggers.
File Input
<wa-file-input>
File inputs allow users to select files from their device.
Format Bytes
<wa-format-bytes>
Formats a number of bytes as a human-readable string with the appropriate unit, such as kB, MB, or GB. Supports both byte and bit units with configurable locale.
Format Date
<wa-format-date>
Formats a date or time for display using the specified locale and options. Powered by the Intl.DateTimeFormat API for consistent, localized output.
Format Number
<wa-format-number>
Formats a number for display using the specified locale and options, including currency, percent, and unit styles. Powered by the Intl.NumberFormat API.
Icon
<wa-icon>
Icons are scalable vector symbols that represent actions, content, or status throughout your application. They support Font Awesome and custom icon libraries with animation presets.
Include
<wa-include>
Fetches an external HTML file and embeds its contents inline on the page. Useful for reusing shared markup like headers, footers, and partials across multiple pages.
Input
<wa-input>
Inputs collect single-line data from the user, such as text, numbers, email addresses, and passwords. They support labels, hints, validation, and prefix or suffix slots.
Intersection Observer
<wa-intersection-observer>
Tracks immediate child elements and fires events as they move in and out of view. Useful for lazy loading, scroll-triggered animations, and viewport-aware interactions.
Line Chart
<wa-line-chart>
Line charts show trends over time by connecting data points with line segments. Use them when the x-axis represents a sequential dimension and you want to emphasize the shape and direction of the data.
Markdown
<wa-markdown>
Markdown elements render markdown content as HTML directly in the browser, making it easy to display user-generated content or documentation without a server-side build step.
Mutation Observer
<wa-mutation-observer>
Mutation observers watch for changes to an element's DOM tree and emit an event when they occur. Provides a thin, declarative interface to the browser's MutationObserver API.
Number Input
<wa-number-input>
Number inputs let users enter and edit numeric values, with optional stepper buttons for incrementing and decrementing. Use them for quantities, measurements, and other numeric form fields.
Option
<wa-option>
Options represent the individual choices inside a select or similar form control. Each option holds a value and the label shown to the user.
Page
<wa-page>
Pages scaffold an entire application layout with header, navigation, sidebar, main content, aside, and footer regions. Use them to structure full pages with minimal markup and responsive behavior built in.
Pie Chart
<wa-pie-chart>
Pie charts show the proportional composition of a whole as slices of a circle. They work best with a small number of categories where the relative proportions matter more than exact values.
Polar Area Chart
<wa-polar-area-chart>
Polar area charts compare values using segments that radiate from a center point with varying radius. Unlike pie charts, each segment has an equal angle while the radius varies, making them useful for comparing magnitudes without visual bias.
Popover
<wa-popover>
Popovers display contextual content and interactive elements in a floating panel anchored to a trigger. Use them for rich tooltips, menus, or any content that appears on demand without navigating away.
Popup
<wa-popup>
Popups declaratively anchor one element to another and keep them positioned together as the page scrolls or resizes. Primarily a low-level building block for popovers, dropdowns, and tooltips.
Progress Bar
<wa-progress-bar>
Progress bars show how far along an ongoing operation is as a horizontal fill. Use them for file uploads, multi-step flows, or any task with measurable progress.
Progress Ring
<wa-progress-ring>
Progress rings show how far along a determinate operation is using a circular indicator. Use them as a compact alternative to progress bars when horizontal space is limited.
QR Code
<wa-qr-code>
QR codes encode a URL or other short text into a scannable image, rendered client-side using the Canvas API. Use them to share links, contact info, or Wi-Fi credentials that visitors can scan with a phone.
Radar Chart
<wa-radar-chart>
Radar charts compare multiple variables at once by plotting data on a radial grid. They are well-suited for comparing profiles across several dimensions, such as skill assessments, product attributes, or performance metrics.
Radio
<wa-radio>
Radios represent a single option within a mutually exclusive set. Use them inside a radio group when users must pick exactly one choice from a small list.
Radio Group
<wa-radio-group>
Radio groups wrap a set of radios so they function as a single form control with one shared value. They handle keyboard navigation, labeling, and validation for the group as a whole.
Rating
<wa-rating>
Ratings display a numeric score as a row of selectable symbols, typically stars. Use them to capture quick feedback or show an average rating for a product or piece of content.
Relative Time
<wa-relative-time>
Relative times display a date as a localized phrase relative to now, such as "3 hours ago" or "in 2 days". The phrase updates automatically as time passes and respects the user's locale.
Resize Observer
<wa-resize-observer>
Resize observers watch their slotted elements for size changes and emit an event when they occur. Provides a thin, declarative interface to the browser's ResizeObserver API.
Scatter Chart
<wa-scatter-chart>
Scatter charts reveal relationships between two variables by plotting data points on a grid. They are ideal for identifying correlations, clusters, and outliers in datasets.
Scroller
<wa-scroller>
Scrollers wrap overflowing content in an accessible container with visual cues that help users recognize and navigate scrollable regions.
Select
<wa-select>
Selects let users choose one or more values from a dropdown list of predefined options. Use them in forms when a fixed set of choices needs to fit in limited space.
Skeleton
<wa-skeleton>
Skeletons show placeholder shapes where content will appear once it finishes loading, reducing perceived wait time and preventing layout shift.
Slider
<wa-slider>
Sliders let users choose a numeric value within a defined range by dragging a thumb along a track.
Sparkline
<wa-sparkline>
Sparklines display inline data trends as compact, visual charts.
Spinner
<wa-spinner>
Spinners indicate that an operation is in progress when the duration is unknown. Use them for loading states where a determinate progress bar isn't practical.
Split Panel
<wa-split-panel>
Split panels display two adjacent panels separated by a draggable divider, letting users resize each side to suit their workflow.
Switch
<wa-switch>
Switches toggle a single setting on or off and apply the change immediately, without requiring a form submission.
Tab
<wa-tab>
Tabs label and activate an individual panel inside a tab group.
Tab Group
<wa-tab-group>
Tab groups organize related content into a single container that displays one panel at a time, with tabs for switching between them.
Tab Panel
<wa-tab-panel>
Tab panels hold the content shown for a single tab inside a tab group.
Tag
<wa-tag>
Tags label, categorize, or represent selections with a compact visual marker. Use them for status indicators, filters, or removable chips.
Textarea
<wa-textarea>
Textareas collect multi-line text input from the user, with optional resizing and character counting.
Toast
<wa-toast>
Toasts display brief, non-blocking notifications that appear temporarily above the page content.
Toast Item
<wa-toast-item>
Toast items are individual notifications displayed within a toast container.
Tooltip
<wa-tooltip>
Tooltips display brief contextual information when the user hovers, focuses, or taps a target element.
Tree
<wa-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
<wa-tree-item>
Tree items represent a single hierarchical node inside a tree, and can contain nested items that expand and collapse.
Video
<wa-video>
Videos are used to embed and play video content with custom controls and captions.
Video Playlist
<wa-video-playlist>
Video playlists wrap multiple <wa-video> elements into a playlist with navigation controls.
Zoomable Frame
<wa-zoomable-frame>
Zoomable frames embed iframe content with built-in controls for zooming, panning, and managing interaction.
Can't Find a Component?
Perhaps we don't have it yet. Let us and the community know what you'd like to see — it may just get created.
No Components Found
Try a different search term or clear some of your filters. If you're looking for a specific component, you can suggest it to the team and the community.