Accordion
An accordion component that allows users to show and hide sections of content. It uses collapse functionality internally to create collapsible panels.
#Import
use gpui_kit::component::accordion::Accordion;SlintNo Slint version of this example yet.
#Usage
#Single
Accordion::new("my-accordion")
.item(|item| {
item.title("Section 1")
.child("Content for section 1")
})
.item(|item| {
item.title("Section 2")
.child("Content for section 2")
})
.item(|item| {
item.title("Section 3")
.child("Content for section 3")
})SlintNo Slint version of this example yet.
#Multiple
By default, only one accordion item can be open at a time. Use multiple() to allow multiple items to be open:
Accordion::new("my-accordion")
.multiple(true)
.item(|item| item.title("Section 1").child("Content 1"))
.item(|item| item.title("Section 2").child("Content 2"))SlintNo Slint version of this example yet.
#Icons and custom content
Accordion::new("my-accordion")
.item(|item| {
item.title(
h_flex()
.gap_2()
.child(Icon::new(IconName::Settings))
.child("Settings")
)
.child("Settings content here")
})SlintNo Slint version of this example yet.
#Sizes
use gpui_kit::component::{Sizable as _, Size};
Accordion::new("my-accordion")
.small()
.item(|item| item.title("Small Section").child("Content"))
Accordion::new("my-accordion")
.large()
.item(|item| item.title("Large Section").child("Content"))SlintNo Slint version of this example yet.
#Borderless and disabled
Accordion::new("my-accordion")
.disabled(true)
.item(|item| item.title("Disabled Section").child("Content"))SlintNo Slint version of this example yet.
#With Borders
Accordion::new("my-accordion")
.bordered(true)
.item(|item| item.title("Section 1").child("Content 1"))SlintNo Slint version of this example yet.
#Handle Toggle Events
Accordion::new("my-accordion")
.on_toggle_click(|open_indices, window, cx| {
println!("Open items: {:?}", open_indices);
})
.item(|item| item.title("Section 1").child("Content 1"))SlintNo Slint version of this example yet.
#Nested Accordions
Accordion::new("outer")
.item(|item| {
item.title("Parent Section")
.child(
Accordion::new("inner")
.item(|item| item.title("Child 1").child("Content"))
.item(|item| item.title("Child 2").child("Content"))
)
})SlintNo Slint version of this example yet.
#API Reference
#Sizing
Implements Sizable trait:
small()- Small sizemedium()- Medium size (default)large()- Large sizexsmall()- Extra small size