<!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->

# `lr-tab-panel`

- **Import** `import '@aceshooting/lyra-ui/components/lr-tab-panel.js';` (stable tag alias; registers the tag)
- **Class** `LyraTabPanel`, also available unregistered from `@aceshooting/lyra-ui/components/layout/tab-group/tab-panel.class.js`
- **Family** `components/layout/` — see `llms/index.md` for its siblings
- **Status** `stable` since `8.0.0` — see the maturity and deprecation policy in `llms/shared.md`
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
- **Deprecations** none
- **Optional peers** none
- **Themeable via** 1 part, 1 custom property — see this component's own `@csspart`/`@cssprop` list below
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`

---

## `lr-tab-panel`

The content revealed by the `<lr-tab>` whose `panel` matches this element's `name`. Mirrors
`wa-tab-panel` / `sl-tab-panel`.

Deliberately carries **no `role="tabpanel"` of its own**: the group renders the `role="tabpanel"`
wrapper this element is projected into, and a second nested tabpanel role would leave the panel
announced twice. Show/hide is the group's job too — this element is always present in the DOM.

**Properties:** `name: string = ''` (reflected) — matches the `panel` of the `<lr-tab>` that reveals
it; `active: boolean = false` (reflected) — SSR visibility hint, synchronized by the owning group
after hydration. **Events:** none. **Slots:** default (the panel's content). **CSS parts:** `base`
(the content wrapper); the owning group also exposes its outer `panel` wrapper. **Themeable custom
properties:** `--padding` (default `0`) — inner padding on the panel's own `base` wrapper.

---

---
