Pages are now available as full-screen example templates that showcase real-world use cases and best practices for composing interfaces with the aFP Design System.
<afp-details>Since 1.0.0
stable
This component uses the light DOM, so its markup and styles are part of the regular document flow.
A collapsible section that can expand or collapse to show or hide content.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
<afp-detailssummary="Lorem ipsum dolor">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
</afp-details>
<afp-details[summary]="'Lorem ipsum dolor'">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
</afp-details>
<AfpDetailssummary="Lorem ipsum dolor">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
</AfpDetails>
<AfpDetails:summary="'Lorem ipsum dolor'">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
</AfpDetails>
Use the open attribute to have the details component expanded by default.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias blanditiis consectetur deserunt dignissimos eaque error eum hic incidunt ipsa, ipsum molestias, nihil nulla, numquam perferendis possimus quasi repellendus sapiente vero.
<afp-detailssummary="Open details"open>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias blanditiis consectetur deserunt dignissimos eaque error eum hic incidunt ipsa, ipsum molestias, nihil nulla, numquam perferendis possimus quasi repellendus sapiente vero.
</afp-details>
<afp-details[summary]="'Open details'"open>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias blanditiis consectetur deserunt dignissimos eaque error eum hic incidunt ipsa, ipsum molestias, nihil nulla, numquam perferendis possimus quasi repellendus sapiente vero.
</afp-details>
<AfpDetailssummary="Open details"open>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias blanditiis consectetur deserunt dignissimos eaque error eum hic incidunt ipsa, ipsum molestias, nihil nulla, numquam perferendis possimus quasi repellendus sapiente vero.
</AfpDetails>
<AfpDetails:summary="'Open details'"open>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias blanditiis consectetur deserunt dignissimos eaque error eum hic incidunt ipsa, ipsum molestias, nihil nulla, numquam perferendis possimus quasi repellendus sapiente vero.
</AfpDetails>
Use the placement attribute to change the position of the chevron icon.
This details component has the chevron icon on the right.
This details component has the chevron icon on the left.
<divclass="afp-stack"><afp-detailssummary="Icon on the right"placement="right">
This details component has the chevron icon on the right.
</afp-details><afp-detailssummary="Icon on the left"placement="left">
This details component has the chevron icon on the left.
</afp-details></div>
<divclass="afp-stack"><afp-details[summary]="'Icon on the right'"[placement]="'right'">
This details component has the chevron icon on the right.
</afp-details><afp-details[summary]="'Icon on the left'"[placement]="'left'">
This details component has the chevron icon on the left.
</afp-details></div>
<divclass="afp-stack"><AfpDetailssummary="Icon on the right"placement="right">
This details component has the chevron icon on the right.
</AfpDetails><AfpDetailssummary="Icon on the left"placement="left">
This details component has the chevron icon on the left.
</AfpDetails></div>
<divclass="afp-stack"><AfpDetails:summary="'Icon on the right'":placement="'right'">
This details component has the chevron icon on the right.
</AfpDetails><AfpDetails:summary="'Icon on the left'":placement="'left'">
This details component has the chevron icon on the left.
</AfpDetails></div>
Use the locked attribute to lock the details component in its current state, preventing it from being toggled.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
<afp-detailssummary="Lorem ipsum dolor"openlocked>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
</afp-details>
<afp-details[summary]="'Lorem ipsum dolor'"openlocked>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
</afp-details>
<AfpDetailssummary="Lorem ipsum dolor"openlocked>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
</AfpDetails>
<AfpDetails:summary="'Lorem ipsum dolor'"openlocked>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deleniti, dicta dolor doloribus dolorum fugit illum laudantium magni, maiores officiis provident quam quia quisquam quod recusandae rem soluta sunt tempore tenetur?
</AfpDetails>
Use the summary slot to provide custom HTML content for the summary of the details component.
John Doe
This details component uses a custom summary slot.
<afp-details><divclass="afp-cluster afp-gap-2xs afp-align-center"slot="summary"><afp-avatarsize="small"image="https://picsum.photos/100"></afp-avatar>
John Doe
</div>
This details component uses a custom summary slot.
</afp-details>
<afp-details><divclass="afp-cluster afp-gap-2xs afp-align-center"slot="summary"><afp-avatar[size]="'small'"[image]="'https://picsum.photos/100'"></afp-avatar>
John Doe
</div>
This details component uses a custom summary slot.
</afp-details>
<AfpDetails><divclass="afp-cluster afp-gap-2xs afp-align-center"slot="summary"><AfpAvatarsize="small"image="https://picsum.photos/100"></AfpAvatar>
John Doe
</div>
This details component uses a custom summary slot.
</AfpDetails>
<AfpDetails><divclass="afp-cluster afp-gap-2xs afp-align-center"slot="summary"><AfpAvatar:size="'small'":image="'https://picsum.photos/100'"></AfpAvatar>
John Doe
</div>
This details component uses a custom summary slot.
</AfpDetails>
Use the actions slot to add action buttons to the summary of the details component.
Checkbox
This details component has actions in the summary.
<afp-detailssummary="Details with actions"><divclass="afp-cluster afp-gap-xs afp-align-center"slot="actions"ignore-toggle><afp-checkbox>Checkbox</afp-checkbox></div>
This details component has actions in the summary.
</afp-details>
<afp-details[summary]="'Details with actions'"><divclass="afp-cluster afp-gap-xs afp-align-center"slot="actions"ignore-toggle><afp-checkbox>Checkbox</afp-checkbox></div>
This details component has actions in the summary.
</afp-details>
<AfpDetailssummary="Details with actions"><divclass="afp-cluster afp-gap-xs afp-align-center"slot="actions"ignore-toggle><AfpCheckbox>Checkbox</AfpCheckbox></div>
This details component has actions in the summary.
</AfpDetails>
<AfpDetails:summary="'Details with actions'"><divclass="afp-cluster afp-gap-xs afp-align-center"slot="actions"ignore-toggle><AfpCheckbox>Checkbox</AfpCheckbox></div>
This details component has actions in the summary.
</AfpDetails>
Use the group attribute to group multiple details components together, allowing only one to be open at a time.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dicta, doloribus ex illo labore magnam nesciunt nulla obcaecati odit porro sequi! Asperiores autem beatae debitis delectus ipsa maiores obcaecati sint suscipit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid aut corporis culpa cupiditate dicta eaque, et illum, inventore nam odit officiis omnis perspiciatis provident recusandae reiciendis repellendus reprehenderit tempore, vitae.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid beatae consequatur cumque fugiat obcaecati, perferendis provident quis sed voluptates. A aperiam aspernatur cupiditate illo libero maxime officiis omnis quidem voluptate!
<divclass="afp-stack"><afp-detailsgroup="account"summary="Profile"open>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dicta, doloribus ex illo labore magnam nesciunt nulla obcaecati odit porro sequi! Asperiores autem beatae debitis delectus ipsa maiores obcaecati sint suscipit.
</afp-details><afp-detailsgroup="account"summary="Security">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid aut corporis culpa cupiditate dicta eaque, et illum, inventore nam odit officiis omnis perspiciatis provident recusandae reiciendis repellendus reprehenderit tempore, vitae.
</afp-details><afp-detailsgroup="account"summary="Notifications">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid beatae consequatur cumque fugiat obcaecati, perferendis provident quis sed voluptates. A aperiam aspernatur cupiditate illo libero maxime officiis omnis quidem voluptate!
</afp-details></div>
<divclass="afp-stack"><afp-details[group]="'account'"[summary]="'Profile'"open>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dicta, doloribus ex illo labore magnam nesciunt nulla obcaecati odit porro sequi! Asperiores autem beatae debitis delectus ipsa maiores obcaecati sint suscipit.
</afp-details><afp-details[group]="'account'"[summary]="'Security'">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid aut corporis culpa cupiditate dicta eaque, et illum, inventore nam odit officiis omnis perspiciatis provident recusandae reiciendis repellendus reprehenderit tempore, vitae.
</afp-details><afp-details[group]="'account'"[summary]="'Notifications'">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid beatae consequatur cumque fugiat obcaecati, perferendis provident quis sed voluptates. A aperiam aspernatur cupiditate illo libero maxime officiis omnis quidem voluptate!
</afp-details></div>
<divclass="afp-stack"><AfpDetailsgroup="account"summary="Profile"open>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dicta, doloribus ex illo labore magnam nesciunt nulla obcaecati odit porro sequi! Asperiores autem beatae debitis delectus ipsa maiores obcaecati sint suscipit.
</AfpDetails><AfpDetailsgroup="account"summary="Security">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid aut corporis culpa cupiditate dicta eaque, et illum, inventore nam odit officiis omnis perspiciatis provident recusandae reiciendis repellendus reprehenderit tempore, vitae.
</AfpDetails><AfpDetailsgroup="account"summary="Notifications">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid beatae consequatur cumque fugiat obcaecati, perferendis provident quis sed voluptates. A aperiam aspernatur cupiditate illo libero maxime officiis omnis quidem voluptate!
</AfpDetails></div>
<divclass="afp-stack"><AfpDetails:group="'account'":summary="'Profile'"open>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dicta, doloribus ex illo labore magnam nesciunt nulla obcaecati odit porro sequi! Asperiores autem beatae debitis delectus ipsa maiores obcaecati sint suscipit.
</AfpDetails><AfpDetails:group="'account'":summary="'Security'">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid aut corporis culpa cupiditate dicta eaque, et illum, inventore nam odit officiis omnis perspiciatis provident recusandae reiciendis repellendus reprehenderit tempore, vitae.
</AfpDetails><AfpDetails:group="'account'":summary="'Notifications'">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid beatae consequatur cumque fugiat obcaecati, perferendis provident quis sed voluptates. A aperiam aspernatur cupiditate illo libero maxime officiis omnis quidem voluptate!
</AfpDetails></div>
Use the chevron-icon slot to provide a custom icon for the details component.
This details component uses a custom icon.
<afp-detailssummary="Custom Icon"><afp-iconslot="chevron-icon"name="arrow-right"></afp-icon>
This details component uses a custom icon.
</afp-details>
<afp-details[summary]="'Custom Icon'"><afp-icon[slot]="'chevron-icon'"[name]="'arrow-right'"></afp-icon>
This details component uses a custom icon.
</afp-details>
<AfpDetailssummary="Custom Icon"><AfpIconslot="chevron-icon"name="arrow-right"></AfpIcon>
This details component uses a custom icon.
</AfpDetails>
<AfpDetails:summary="'Custom Icon'"><AfpIcon:slot="'chevron-icon'":name="'arrow-right'"></AfpIcon>
This details component uses a custom icon.
</AfpDetails>
Use the show(), hide(), and toggle() methods to control the details component programmatically.
This details component can be controlled manually using the buttons below.
Toggle
<divclass="afp-stack"><afp-detailsid="manual"summary="Manual control details">
This details component can be controlled manually using the buttons below.
</afp-details><divclass="afp-cluster afp-gap-2xs"><afp-buttononclick="manual.show()"appearance="filled"shape="pill"><afp-iconname="arrow-down-short"></afp-icon></afp-button><afp-buttononclick="manual.hide()"appearance="filled"shape="pill"><afp-iconname="arrow-up-short"></afp-icon></afp-button><afp-buttononclick="manual.toggle()"appearance="filled"shape="pill"><afp-iconname="toggles"></afp-icon> Toggle</afp-button></div></div>
<divclass="afp-stack"><afp-details[id]="'manual'"[summary]="'Manual control details'">
This details component can be controlled manually using the buttons below.
</afp-details><divclass="afp-cluster afp-gap-2xs"><afp-button[onclick]="'manual.show()'"[appearance]="'filled'"[shape]="'pill'"><afp-icon[name]="'arrow-down-short'"></afp-icon></afp-button><afp-button[onclick]="'manual.hide()'"[appearance]="'filled'"[shape]="'pill'"><afp-icon[name]="'arrow-up-short'"></afp-icon></afp-button><afp-button[onclick]="'manual.toggle()'"[appearance]="'filled'"[shape]="'pill'"><afp-icon[name]="'toggles'"></afp-icon> Toggle</afp-button></div></div>
<divclass="afp-stack"><AfpDetailsid="manual"summary="Manual control details">
This details component can be controlled manually using the buttons below.
</AfpDetails><divclass="afp-cluster afp-gap-2xs"><AfpButtononclick="manual.show()"appearance="filled"shape="pill"><AfpIconname="arrow-down-short"></AfpIcon></AfpButton><AfpButtononclick="manual.hide()"appearance="filled"shape="pill"><AfpIconname="arrow-up-short"></AfpIcon></AfpButton><AfpButtononclick="manual.toggle()"appearance="filled"shape="pill"><AfpIconname="toggles"></AfpIcon> Toggle</AfpButton></div></div>
<divclass="afp-stack"><AfpDetails:id="'manual'":summary="'Manual control details'">
This details component can be controlled manually using the buttons below.
</AfpDetails><divclass="afp-cluster afp-gap-2xs"><AfpButton:onclick="'manual.show()'":appearance="'filled'":shape="'pill'"><AfpIcon:name="'arrow-down-short'"></AfpIcon></AfpButton><AfpButton:onclick="'manual.hide()'":appearance="'filled'":shape="'pill'"><AfpIcon:name="'arrow-up-short'"></AfpIcon></AfpButton><AfpButton:onclick="'manual.toggle()'":appearance="'filled'":shape="'pill'"><AfpIcon:name="'toggles'"></AfpIcon> Toggle</AfpButton></div></div>
Determines whether the details element is open or closed.
Typeboolean
Defaultfalse
locked
Locks the details element in its current state.
When true, the component cannot be toggled open or closed.
Typeboolean
Defaultfalse
summary
Optional summary text to display in the header.
If no value is provided, the slot content will be used.
Typestring
duration
The duration of the expand/collapse animation in milliseconds.
Typenumber
Default150
disabled
Disables interaction with the details component.
When true, clicking on the summary will have no effect.
Typeboolean
Defaultfalse
placement
Placement of the chevron icon.
Determines whether the icon appears on the left or right side of the summary.
Type'left' | 'right'
Default'right'
group
An optional group identifier.
When multiple `afp-details` elements share the same group name,
opening one will automatically close the others — creating an accordion-like behavior.