@accelint/design-toolkit
Version:
An open-source component library to serve as part of the entire ecosystem of UX for Accelint.
4 lines (3 loc) • 2.68 kB
JavaScript
'use client';
import {jsx,jsxs}from'react/jsx-runtime';import'client-only';import {Kebab,ChevronDown}from'@accelint/icons';import {createContext,useContext}from'react';import {useContextProps,Disclosure,composeRenderProps,DisclosureGroup,Provider,Header,Heading,DisclosurePanel}from'react-aria-components';import {isSlottedContextValue}from'./../../lib/utils.js';import {ButtonContext,Button}from'../button/index.js';import {IconContext,Icon}from'../icon/index.js';import {AccordionStyles,AccordionStylesDefaults}from'./styles.js';const {group:w,accordion:E,header:K,heading:L,trigger:M,panel:R}=AccordionStyles(),a=createContext(null);function v({ref:i,children:n,className:c,variant:o=AccordionStylesDefaults.variant,isDisabled:e,...t}){return jsx(a.Provider,{value:{variant:o,isDisabled:e},children:jsx(DisclosureGroup,{...t,ref:i,className:composeRenderProps(c,u=>w({className:u,variant:o})),children:n})})}v.displayName="Accordion.Group";function f({ref:i,children:n,className:c}){const o=useContext(a),e=(isSlottedContextValue(o)?void 0:o?.variant)??AccordionStylesDefaults.variant,t=(isSlottedContextValue(o)?void 0:o?.isDisabled)??false;return jsx(Provider,{values:[[IconContext,{size:e==="compact"?"small":"large"}],[ButtonContext,{children:jsx(Icon,{children:jsx(Kebab,{})}),variant:"icon",isDisabled:t}]],children:jsx(Header,{ref:i,className:K({className:c,variant:e}),children:n})})}f.displayName="Accordion.Header";function g({ref:i,children:n,classNames:c}){const o=useContext(a),e=(isSlottedContextValue(o)?void 0:o?.variant)??AccordionStylesDefaults.variant;return jsx(Heading,{ref:i,className:L({className:c?.heading,variant:e}),children:jsx(Button,{slot:"trigger",className:composeRenderProps(c?.trigger,t=>M({className:t,variant:e})),variant:"flat",children:jsxs(IconContext.Provider,{value:{size:e==="compact"?"small":"medium"},children:[jsx(Icon,{children:jsx(ChevronDown,{className:"transform group-expanded/accordion:rotate-180"})}),n]})})})}g.displayName="Accordion.Trigger";function x({ref:i,children:n,className:c,...o}){return jsx(DisclosurePanel,{...o,ref:i,className:composeRenderProps(c,e=>R({className:e})),children:n})}x.displayName="Accordion.Panel";function s({ref:i,...n}){[n,i]=useContextProps(n,i??null,a);const{children:c,className:o,variant:e=AccordionStylesDefaults.variant,isDisabled:t,...u}=n;return jsx(a.Provider,{value:{variant:e,isDisabled:t},children:jsx(Disclosure,{...u,className:composeRenderProps(o,C=>E({className:C})),isDisabled:t,children:c})})}s.displayName="Accordion",s.Group=v,s.Header=f,s.Trigger=g,s.Panel=x;export{s as Accordion,a as AccordionContext};//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map