diff --git a/gallery/src/pages/components/ha-expansion-panel.markdown b/gallery/src/pages/components/ha-expansion-panel.markdown
new file mode 100644
index 0000000000..275627e6a2
--- /dev/null
+++ b/gallery/src/pages/components/ha-expansion-panel.markdown
@@ -0,0 +1,5 @@
+---
+title: Expansion Panel
+---
+
+Expansion panel following all the ARIA guidelines.
diff --git a/gallery/src/pages/components/ha-expansion-panel.ts b/gallery/src/pages/components/ha-expansion-panel.ts
new file mode 100644
index 0000000000..781aa063bb
--- /dev/null
+++ b/gallery/src/pages/components/ha-expansion-panel.ts
@@ -0,0 +1,157 @@
+import { mdiPacMan } from "@mdi/js";
+import { css, html, LitElement, TemplateResult } from "lit";
+import { customElement } from "lit/decorators";
+import "../../../../src/components/ha-card";
+import "../../../../src/components/ha-expansion-panel";
+import "../../../../src/components/ha-markdown";
+import "../../components/demo-black-white-row";
+import { LONG_TEXT } from "../../data/text";
+
+const SHORT_TEXT = LONG_TEXT.substring(0, 113);
+
+const SAMPLES: {
+ template: (slot: string, leftChevron: boolean) => TemplateResult;
+}[] = [
+ {
+ template(slot, leftChevron) {
+ return html`
+
- ${this.hass.localize( - "ui.panel.config.automation.editor.modes.description", - "documentation_link", - html`${this.hass.localize( - "ui.panel.config.automation.editor.modes.documentation" - )}` - )} -
-- ${this.hass.localize( - "ui.panel.config.automation.editor.triggers.introduction" - )} -
- - ${this.hass.localize( +- ${this.hass.localize( - "ui.panel.config.automation.editor.conditions.introduction" - )} -
- - ${this.hass.localize( +- ${this.hass.localize( - "ui.panel.config.automation.editor.actions.introduction" - )} -
- - ${this.hass.localize( +- ${this.hass.localize( - "ui.panel.config.script.editor.sequence_sentence" - )} -
- - ${this.hass.localize( +