원클릭으로
groww-accordion
Accordion component with collapsible sections. Use for FAQs, nested content, or expandable details sections.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Accordion component with collapsible sections. Use for FAQs, nested content, or expandable details sections.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Button component with variants, sizes, loading states, and icon support. Use when creating clickable actions, forms, or navigation buttons.
Calendar component for date and month selection. Use when building date pickers, scheduling interfaces, or date range selectors.
Carousel component for image/content sliders with navigation controls. Use for image galleries, hero sections, or content that scrolls horizontally.
Checkbox component for boolean or multi-select inputs. Use when building forms with boolean toggles or multiple selection lists.
Dropdown menu component with trigger and content pattern. Use when building selectable menus, action menus, or nested navigation.
Icon-only button component for actions. Use for toolbars, navigation bars, or compact action buttons without text.
| name | groww-accordion |
| description | Accordion component with collapsible sections. Use for FAQs, nested content, or expandable details sections. |
import Accordion from '@groww-tech/ui-toolkit/dist/esm/components/atoms/Accordion';
// or
import { Accordion } from '@groww-tech/ui-toolkit';
interface AccordionProps {
isOpen: boolean; // Open/close state (required)
children: React.ReactNode; // Accordion content (required)
header: React.ReactNode; // Header content
onChange?: (isOpen: boolean) => void; // State change handler
className?: string;
duration?: number; // Animation duration (ms)
}
interface AnimateHeightProps {
height?: number | 'auto'; // Height value
duration?: number; // Animation duration
easing?: string; // Easing function
animateOpacity?: boolean; // Animate opacity
id?: string;
className?: string;
}
<Accordion
isOpen={isOpen}
onChange={(open) => setIsOpen(open)}
header={
<div className="accordion-header">
<span>What is Groww?</span>
<Icon name={isOpen ? 'chevron-up' : 'chevron-down'} />
</div>
}
>
<div className="accordion-content">
Groww is an investment platform...
</div>
</Accordion>
{faqs.map((faq, index) => (
<Accordion
key={index}
isOpen={openIndex === index}
onChange={(isOpen) => setOpenIndex(isOpen ? index : -1)}
header={faq.question}
>
{faq.answer}
</Accordion>
))}