@drivy/cobalt
Version:
Opinionated design system for Drivy's projects.
37 lines (34 loc) • 2.17 kB
JavaScript
import React, { useId } from 'react';
import { Accordion as Accordion$1, useAccordionItemContext } from '@ark-ui/react';
export { useAccordionItemContext } from '@ark-ui/react';
import cx from 'classnames';
import ToggleIcon from './ToggleIcon.js';
const AccordionItemHeader = ({ children, className, headingLevel = 4, leftToggleIcon, useChevron = false, ...props }) => {
const Heading = `h${headingLevel}`;
const { expanded } = useAccordionItemContext();
return (React.createElement(Heading, null,
React.createElement(Accordion$1.ItemTrigger, { className: cx("cobalt-accordion__header", {
"cobalt-accordion__header--left-toggle-icon": leftToggleIcon,
}), ...props },
React.createElement("span", { className: cx("cobalt-accordion__header-content", className) }, children),
React.createElement(ToggleIcon, { useChevron: useChevron, isOpen: expanded }))));
};
AccordionItemHeader.displayName = "Accordion.Item.Header";
const AccordionItemPanel = ({ children, className, ...props }) => {
return (React.createElement(Accordion$1.ItemContent, { className: cx("cobalt-accordion__panel", className), ...props }, children));
};
AccordionItemPanel.displayName = "Accordion.Item.Panel";
const AccordionItem = ({ children, className, value, ...props }) => {
const accordionItemId = value || useId();
return (React.createElement(Accordion$1.Item, { className: cx("cobalt-accordions-list__item", className), value: accordionItemId, ...props }, children));
};
AccordionItem.displayName = "Accordion.Item";
AccordionItem.Header = AccordionItemHeader;
AccordionItem.Panel = AccordionItemPanel;
const Accordion = ({ className, children, collapsible = true, onValueChange, ...props }) => {
return (React.createElement(Accordion$1.Root, { className: cx("cobalt-accordions-list", className), collapsible: collapsible, onValueChange: (details) => onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(details.value), ...props }, children));
};
Accordion.displayName = "Accordion";
Accordion.Item = AccordionItem;
export { Accordion as default };
//# sourceMappingURL=index.js.map