# Slab > Slab is a headless Web Component library, published as `slab-elements`. Each element handles the hard parts — keyboard and focus, ARIA, form participation, events — on top of the native element it maps to. What it looks like is up to you: style it from the outside with `::part()` and `:state()`, or subclass it and make it your own. Install it with `pnpm add slab-elements lit`, then import the elements you need, like `slab-elements/dialog.js`, which registers ``. Every element is built on a native element (or an ARIA role when the platform doesn't have one) and follows the keyboard patterns in the ARIA Authoring Practices Guide. Each component's page also shows a styled version, ``. That's not in the package — it's an example to copy into a project and make your own, and the page includes its source. ## Docs - [Introduction](https://slab-elements.dev/index.md): what Slab is, and how to install, use, and style it - [Get started](https://slab-elements.dev/get-started.md): installing, importing, frameworks, forms, styling, subclassing, translating, TypeScript, and browsers - [Components](https://slab-elements.dev/components.md): every element, grouped ## Overlays - [Alert](https://slab-elements.dev/components/alert.md): An inline message that gets announced when it shows up. Put it on the page empty, then fill it in when there's something to say. - [Dialog](https://slab-elements.dev/components/dialog.md): A modal dialog built on the native ``. Focus stays inside, Escape closes it, and the rest of the page goes inert — the platform does the heavy lifting. - [Drawer](https://slab-elements.dev/components/drawer.md): A non-modal dialog for a side panel. The page behind it stays usable. - [Popover](https://slab-elements.dev/components/popover.md): Content that pops up beside the element that opened it, in the top layer, and gets dismissed the way a native popover does. - [Toast](https://slab-elements.dev/components/toast.md): A polite heads-up that something just happened. It lives on the page up front, so screen readers actually hear it. - [Tooltip](https://slab-elements.dev/components/tooltip.md): A short description that shows up beside an element on hover and focus. ## Disclosure - [Accordion](https://slab-elements.dev/components/accordion.md): A group of Disclosures where opening one can close the others. Great for FAQs. - [Disclosure](https://slab-elements.dev/components/disclosure.md): Show and hide content behind a summary. It's a native `
` with a few extras. ## Navigation - [Breadcrumb](https://slab-elements.dev/components/breadcrumb.md): The trail of links to the current page, as an ordered list in a navigation landmark. Separators are yours to add. - [Menu](https://slab-elements.dev/components/menu.md): A button that opens a list of actions. It's the APG's menu button, keyboard and all. - [Pagination](https://slab-elements.dev/components/pagination.md): Buttons for moving between pages, with an ellipsis for the ones it doesn't show. - [Tabs](https://slab-elements.dev/components/tabs.md): Tabs and their Panels, with one Panel showing at a time. - [Toolbar](https://slab-elements.dev/components/toolbar.md): A group of controls that Tab reaches once, with the arrow keys to move between them. - [Tree](https://slab-elements.dev/components/tree.md): A nested list of items that expand and collapse, to pick one or more from. ## Selection - [Combobox](https://slab-elements.dev/components/combobox.md): A text input that filters a list of Options as you type. - [Listbox](https://slab-elements.dev/components/listbox.md): A list of Options to pick one or more from, right on the page instead of in a popup. - [Select](https://slab-elements.dev/components/select.md): A button that opens a list of Options to pick one or more from. It submits just like a `