Ply accordion is a stacked set of headers that show or hide a body. Copy accordion in, set multi if several panels may be open, and bind isOpen when you need controlled items. It is for in-page disclosure, not top-level app navigation.
Install with npx ply-ui-cli add accordion.
Default Accordion examples below.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Suspendisse potenti nullam ac tortor vitae purus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Suspendisse potenti nullam ac tortor vitae purus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Suspendisse potenti nullam ac tortor vitae purus.
<ply-accordion>
<ply-accordion-item>
<ply-accordion-item-header>Accordion Item 1</ply-accordion-item-header>
<ply-accordion-item-body>
<p class="p-4">Content goes here...</p>
</ply-accordion-item-body>
</ply-accordion-item>
<ply-accordion-item>
<ply-accordion-item-header>Accordion Item 2</ply-accordion-item-header>
<ply-accordion-item-body>
<p class="p-4">Content goes here...</p>
</ply-accordion-item-body>
</ply-accordion-item>
</ply-accordion>
TypeScript
import { Component } from '@angular/core';
// Install: npx ply-ui-cli add accordion
// Paths are relative to aliases.components (default: src/app/components)
import { AccordionItemBodyComponent } from './accordion/accordion-item/accordion-item-body/accordion-item-body.component';
import { AccordionItemHeaderComponent } from './accordion/accordion-item/accordion-item-header/accordion-item-header.component';
import { AccordionItemComponent } from './accordion/accordion-item/accordion-item.component';
import { AccordionComponent } from './accordion/accordion.component';
@Component({
selector: 'app-accordion-example',
imports: [
AccordionComponent,
AccordionItemBodyComponent,
AccordionItemComponent,
AccordionItemHeaderComponent
],
template: `...`
})
export class AccordionExampleComponent {}Install
npx ply-ui-cli add accordion
To make a section disabled need to add to the <ply-accordion-item-body> tag a property [disabled]="true"
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Suspendisse potenti nullam ac tortor vitae purus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Suspendisse potenti nullam ac tortor vitae purus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Suspendisse potenti nullam ac tortor vitae purus.
<ply-accordion>
<ply-accordion-item>
<ply-accordion-item-header>Enabled Item</ply-accordion-item-header>
<ply-accordion-item-body>
<p class="p-4">Content goes here...</p>
</ply-accordion-item-body>
</ply-accordion-item>
<ply-accordion-item [disabled]="true">
<ply-accordion-item-header>Disabled Item</ply-accordion-item-header>
<ply-accordion-item-body>
<p class="p-4">Content goes here...</p>
</ply-accordion-item-body>
</ply-accordion-item>
</ply-accordion>
TypeScript
import { Component } from '@angular/core';
// Install: npx ply-ui-cli add accordion
// Paths are relative to aliases.components (default: src/app/components)
import { AccordionItemBodyComponent } from './accordion/accordion-item/accordion-item-body/accordion-item-body.component';
import { AccordionItemHeaderComponent } from './accordion/accordion-item/accordion-item-header/accordion-item-header.component';
import { AccordionItemComponent } from './accordion/accordion-item/accordion-item.component';
import { AccordionComponent } from './accordion/accordion.component';
@Component({
selector: 'app-accordion-example',
imports: [
AccordionComponent,
AccordionItemBodyComponent,
AccordionItemComponent,
AccordionItemHeaderComponent
],
template: `...`
})
export class AccordionExampleComponent {}Install
npx ply-ui-cli add accordion
Run the following command to add this component to your project:
npx ply-ui-cli add accordion
For AI agents
Copy a prompt with the registry name, CLI install, and import — or add the Ply MCP server.
npx -y ply-ui-mcp
Ply provides standalone components. Import the exact elements you want to use into your component.
// Install: npx ply-ui-cli add accordion
// Paths are relative to aliases.components (default: src/app/components)
import { AccordionItemBodyComponent } from './accordion/accordion-item/accordion-item-body/accordion-item-body.component';
import { AccordionItemHeaderComponent } from './accordion/accordion-item/accordion-item-header/accordion-item-header.component';
import { AccordionItemComponent } from './accordion/accordion-item/accordion-item.component';
import { AccordionComponent } from './accordion/accordion.component';
@Component({
selector: 'app-your-component',
imports: [
AccordionComponent,
AccordionItemBodyComponent,
AccordionItemComponent,
AccordionItemHeaderComponent
],
template: `...`
})
export class YourComponent {} API for accordion — generated from JSDoc in the library source.
| API | Member | Type | Default | Description |
|---|---|---|---|---|
ply-accordion | class | string | '' | Additional host CSS classes (merged via cn()). |
ply-accordion | multi | boolean | false | — |
ply-accordion-item | class | string | '' | Additional host CSS classes (merged via cn()). |
ply-accordion-item | isOpen | boolean | false | Two-way bindable open state — parent accordion can close it via item.isOpen.set(false). |
ply-accordion-item | disabled | boolean | false | — |
ply-accordion-item | (toggled) | boolean | — | Emitted when the item is toggled. Carries the new open state. |
ply-accordion-item-body | — | — | — | The body content of an accordion item. |
ply-accordion-item-body | class | string | '' | Additional host CSS classes (merged via cn()). |
ply-accordion-item-header | — | — | — | The clickable header of an accordion item that toggles the body visibility. |
Page Content