Accordion Component
_

Accordion

The Accordion component provides a Windows 98-style collapsible content panel that can be expanded and collapsed.

Import

import { Accordion } from 'rohit-ui';

Examples

Basic Accordion
Section 1
Content for section 1
Section 2
// Basic accordion
<Accordion items={[
  { 
    title: "Section 1",
    content: <p>Content for section 1</p>
  },
  { 
    title: "Section 2",
    content: <p>Content for section 2</p>
  }
]} />
Accordion with Icons
📁 Files
File content
⚙️ Settings
// Controlled accordion with state
const [expandedSections, setExpandedSections] = useState([0]);

<Accordion
  items={[
    { 
      title: "Files",
      icon: "📁"
    },
    { 
      title: "Settings",
      icon: "⚙️"
    }
  ]}
  expandedSections={expandedSections}
  onChange={setExpandedSections}
/>
Rohit Mode Accordion
UNNECESSARILY COMPLICATED
This accordion is unnecessarily complicated.
// Rohit Mode accordion
<Accordion
  items={[
    { 
      title: "Dramatic Section 1",
      content: <p>Drama content 1</p>
    },
    { 
      title: "Dramatic Section 2",
      content: <p>Drama content 2</p>
    }
  ]}
  rohitMode
/>

Note: In Rohit Mode, the accordion will wiggle, change color, and sometimes randomly expand/collapse sections.

Props

Name Type Default Description
defaultExpanded number[] [] Indices of initially expanded sections
onChange function - Function called when sections are expanded/collapsed
children ReactNode - Accordion sections
className string - CSS class to apply to the accordion container
rohitMode boolean false Enables Rohit Mode with silly animations and behaviors

Accordion.Item Props

Name Type Default Description
title string - Title text for the section
icon string - Icon to display before the section title
disabled boolean false Whether the section is disabled

CSS Customization

You can customize the Accordion component using styled-components:

import styled from 'styled-components';
import { Accordion } from 'rohit-ui';

const CustomAccordion = styled(Accordion)`
  border: 2px solid var(--win98-navy);
  border-radius: 4px;
  overflow: hidden;
  
  .accordion-header {
    background: linear-gradient(to right, var(--win98-navy), var(--win98-silver));
    color: white;
    padding: 12px 16px;
    font-family: 'Comic Sans MS', sans-serif;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    
    &:hover {
      background: linear-gradient(to right, var(--win98-silver), var(--win98-navy));
    }
  }
  
  .accordion-content {
    background: white;
    padding: 16px;
    border-top: 1px solid var(--win98-navy);
  }
`;

function MyComponent() {
  return (
    <CustomAccordion
      sections={[
        { 
          title: "Custom Section 1",
          content: <p>Content 1</p>
        },
        {
          title: "Custom Section 2",
          content: <p>Content 2</p>
        }
      ]}
    />
  );
}

Rohit Mode Behavior

When Rohit Mode is enabled, the Accordion component will:

  • Wiggle or bounce randomly
  • Change color periodically
  • Sometimes randomly expand/collapse sections
  • Draw unnecessary attention to itself