🚧 Under Construction
This component documentation is currently being developed. Some features may be incomplete.
Accordion Group
View in Pattern LabHTML Markup
<section class="hoo-accordion-group" role="accordion">
<details class="hoo-accordion">
<summary class="hoo-accordion-header">
<div class="hoo-accordion-summary"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-arrow-right" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-arrow-right">
</use>
</svg></span>
<h3>Lorem ipsum dolor sit.</h3>
</div>
</summary>
<div class="hoo-accordion-content">Lorem ipsum dolor sit amet consectetur adipisicing elit. Laboriosam similique delectus facilis, quae aspernatur ipsam eveniet commodi assumenda ipsa iure dolorem quidem enim illum perferendis amet nam suscipit unde dicta reiciendis eligendi ratione dignissimos? Aperiam hic vel quis ex consequuntur, possimus magnam rerum in officiis fugit non inventore voluptas earum minima iure! Et, eaque repellendus cumque optio nam odit. Voluptatibus nulla facere atque iusto veniam, explicabo voluptatum maxime praesentium quasi corrupti quia? Unde tempore officia esse deserunt praesentium ipsum accusantium hic expedita aliquid harum nobis doloribus necessitatibus cum facilis, temporibus laudantium rem quo tempora eius maiores ab veritatis. Unde, ex!</div>
</details>
<details class="hoo-accordion">
<summary class="hoo-accordion-header">
<div class="hoo-accordion-summary"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-arrow-right" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-arrow-right">
</use>
</svg></span>
<h3>Lorem ipsum dolor sit amet consectetur.</h3>
</div>
</summary>
<div class="hoo-accordion-content">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Incidunt quod ex perferendis recusandae, dolorem iure maxime delectus repellat fugit omnis unde necessitatibus quibusdam cupiditate, est deserunt reiciendis eius qui? Dolorem fugiat repellendus ipsum.</div>
</details>
<details class="hoo-accordion">
<summary class="hoo-accordion-header">
<div class="hoo-accordion-summary"><span class="hoo-icon">
<svg class="hoo-icon-svg icon-arrow-right" aria-hidden="true">
<use xlink:href="/htwoo-core/images/icons.svg#icon-arrow-right">
</use>
</svg></span>
<h3>Lorem, ipsum dolor.</h3>
</div>
</summary>
<div class="hoo-accordion-content">Lorem ipsum dolor sit amet consectetur adipisicing elit. Pariatur nesciunt illum animi impedit voluptas corrupti explicabo dolores soluta dolor tempora deleniti qui nihil quo laborum, ducimus quia officia dicta? Perspiciatis placeat sit et eaque eius, ab molestiae eveniet nostrum! Animi, tempora. Magnam et architecto ex, nostrum vitae facere ad impedit repudiandae aliquam ratione quibusdam, aspernatur neque officiis fuga quo accusantium, eveniet eius. Aut, eos quaerat dolorem ad soluta commodi saepe similique eaque. Quisquam, incidunt voluptatum!</div>
</details>
</section>
Accordion Group
The Accordion Group component serves as a semantic container for multiple related accordion items, creating a cohesive set of collapsible content sections. It provides proper structure, accessibility features, and consistent behavior for grouped accordion interfaces.
Overview
The Accordion Group organizes multiple accordion items into a logical collection, typically used for FAQ sections, content categorization, or any interface requiring multiple collapsible sections. It maintains semantic relationships between accordion items while allowing independent operation of each section.
Features
Semantic Structure
- Section Element: Uses
<section>withrole="accordion"for proper semantics - Grouped Content: Provides logical grouping for related accordion items
- Accessibility: Built-in ARIA support through semantic HTML
- Navigation: Enables keyboard navigation between related sections
Independent Operation
- Multi-Open: Multiple accordions can be open simultaneously by default
- Individual Control: Each accordion operates independently
- State Management: No automatic closing when others open
- Flexible Behavior: Can be extended for exclusive operation if needed
Responsive Design
- Container Adaptation: Adapts to parent container width
- Content Flow: Maintains proper content flow on all screen sizes
- Touch Friendly: Optimized for touch interactions on mobile devices
Structure
The component consists of:
- Container:
<section class="hoo-accordion-group" role="accordion">- Main group container - Items: Multiple
{{> molecules-accordion-item}}- Individual accordion sections - Loop:
{{#each accordion-group}}- Data iteration for multiple items
Data Structure
{
"accordion-group": [
{
"accordion": {
"header": {
"text": "Frequently Asked Questions",
"iconname": "icon-arrow-right"
},
"content": "Here are the most common questions and answers about our product..."
}
},
{
"accordion": {
"header": {
"text": "Technical Specifications",
"iconname": "icon-arrow-right"
},
"content": "Detailed technical information about features and capabilities..."
}
},
{
"accordion": {
"header": {
"text": "Installation Guide",
"iconname": "icon-arrow-right"
},
"content": "Step-by-step instructions for installing and configuring..."
}
}
]
}
CSS Classes
.hoo-accordion-group: Main container styling.hoo-accordion: Individual accordion item (inherited from molecules).hoo-accordion-summary: Header styling (inherited from molecules).hoo-accordion-content: Content area styling (inherited from molecules).hoo-icon: Icon styling and animations (inherited from molecules)
Styling
Container Layout
- Display: Block-level container element
- Margins: Inherits default section margins
- Role: Semantic
role="accordion"for accessibility
Item Spacing
- Item Margins: 0.25rem vertical spacing between accordion items
- Content Indentation: 2rem left margin for content areas
- Header Alignment: Flex layout for icon and text alignment
Visual Hierarchy
- Typography: 20px headings for consistent hierarchy
- Icon Size: 1.5rem icons with proper alignment
- Content Flow: Proper spacing for readability
Use Cases
Content Organization
- FAQ Sections: Multiple questions with expandable answers
- Product Information: Features, specifications, and details
- Documentation: Technical guides with collapsible sections
- Help Systems: Support content with progressive disclosure
Interface Design
- Settings Panels: Grouped configuration options
- Dashboard Widgets: Collapsible information sections
- Form Organization: Large forms divided into logical sections
- Navigation Menus: Hierarchical menus with subcategories
Educational Content
- Course Materials: Lessons with expandable modules
- Training Guides: Step-by-step instructions
- Reference Materials: Categorized information
- Tutorials: Progressive learning content
Accessibility
Semantic Structure
- Role Attribution:
role="accordion"identifies component type - Section Element: Provides semantic grouping for screen readers
- Heading Hierarchy: Maintains proper heading structure (
<h3>) - Landmark Navigation: Allows users to navigate to accordion sections
Keyboard Navigation
- Tab Order: Logical tab order through accordion headers
- Enter/Space: Toggle accordion open/closed state
- Arrow Keys: Navigate between accordion items (with additional JS)
- Focus Management: Clear focus indicators on all interactive elements
Screen Reader Support
- State Announcements: Open/closed states announced automatically
- Content Structure: Logical reading order through grouped content
- Label Association: Headers properly associated with content
- Context Information: Group context provided to users
Behavior Patterns
Default Behavior
- Independent Operation: Each accordion operates independently
- Multi-Open: Multiple sections can be open simultaneously
- State Persistence: States maintained during user interaction
- No Auto-Close: Opening one doesn’t close others
Enhanced Behaviors (with JavaScript)
- Exclusive Mode: Only one accordion open at a time
- Keyboard Navigation: Arrow key navigation between items
- Animation Control: Enhanced opening/closing animations
- State Management: Programmatic control of accordion states
Best Practices
Content Strategy
- Logical Grouping: Group only related content together
- Clear Headings: Use descriptive, scannable titles
- Consistent Voice: Maintain consistent tone across sections
- Progressive Disclosure: Show most important information first
User Experience
- Reasonable Defaults: Consider which sections should be open initially
- Content Balance: Avoid overly long or short content sections
- Visual Consistency: Maintain consistent styling across all items
- Loading States: Handle dynamic content gracefully
Development
- Semantic HTML: Always use proper HTML5 elements
- Progressive Enhancement: Ensure functionality without JavaScript
- Performance: Optimize for large numbers of accordion items
- Testing: Test with keyboard users and screen readers
Browser Support
- Modern Browsers: Full support in Chrome, Firefox, Safari, Edge
- HTML5 Details: Requires
<details>/<summary>element support - CSS Features: Basic CSS support for styling and animations
- Accessibility: Works with modern screen readers and assistive technologies
SCSS Files
Accordion Styles:
lib/sass/02-molecules/accordion/