Accordion

A vertically stacked set of interactive headings that reveal content sections.

Single Mode (JS)

Only one item can be open at a time.

CSS-Only: Multiple Mode

Zero JavaScript. Multiple items can be open.

Works even if JS is disabled.
Uses checkboxes - open as many as you want.

CSS-Only: Single Mode

Zero JavaScript. Only one item can be open.

Click another item to close this one.
Pure CSS magic!
Open Markdown
FreeAccordion

Disclosure UI for FAQs and settings groups.

Install with the Proa CLI
proa ui add accordion

Installs the reviewed component source, dependencies, shared support files, and required legal notices.

CLI and registry setup
recipe.rs
// SPDX-FileCopyrightText: 2026 Proa Labs, Inc.
// SPDX-License-Identifier: MIT OR Apache-2.0

//! Accordion recipe — named slots for interactive and CSS-only accordions.
//!
//! Accordion behavior owns semantic state attributes. This recipe owns only
//! the static appearance of each rendered part, including the additional
//! slots used by the zero-JavaScript implementation.

use crate::tw_join;
use proa_core::shared::attr_value::AttrValue;
use proa_core::{DataLoader, WebContext, WriteBuf, WriteError};

/// Accordion type - controls how many items can be open at once.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum AccordionType {
    /// Only one item can be open at a time.
    #[default]
    Single,
    /// Multiple items can be open simultaneously.
    Multiple,
}

Search

Type at least 2 characters

Customize

Make it yours

Palette

Radius

Overview
Components
Settings

Build your own

Themed Proa UI surface

Preview
Components52
RecipesTyped
customer-portal