UNPKG

@equinor/eds-core-react

Version:

The React implementation of the Equinor Design System

42 lines (39 loc) 1.04 kB
import { forwardRef, Children, cloneElement } from 'react'; import { ThemeProvider } from 'styled-components'; import { accordion } from './Accordion.tokens.js'; import { useId, useToken } from '@equinor/eds-utils'; import { jsx } from 'react/jsx-runtime'; import { useEds } from '../EdsProvider/eds.context.js'; const Accordion = /*#__PURE__*/forwardRef(function Accordion({ headerLevel = 'h2', chevronPosition = 'left', children, id, ...props }, ref) { const accordionId = useId(id, 'accordion'); const { density } = useEds(); const token = useToken({ density }, accordion); const AccordionItems = Children.map(children, (child, index) => { if (!child) return null; return /*#__PURE__*/cloneElement(child, { accordionId, index, headerLevel, chevronPosition }); }); return /*#__PURE__*/jsx(ThemeProvider, { theme: token, children: /*#__PURE__*/jsx("div", { ...props, ref: ref, children: AccordionItems }) }); }); export { Accordion };