UNPKG

@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) 1.1 kB
'use client'; import {jsx}from'react/jsx-runtime';import {useOn}from'@accelint/bus/react';import'client-only';import {useState}from'react';import {Provider,HeadingContext,DEFAULT_SLOT}from'react-aria-components';import {SidenavContext}from'./context.js';import {SidenavEventTypes}from'./events.js';import {SidenavStyles}from'./styles.js';const{sidenav:y,heading:N,transient:s,menuHeading:O,panelHeading:T}=SidenavStyles();function D({id:a,className:r,isHiddenWhenClosed:p,children:v,...d}){const[e,o]=useState(false);return useOn(SidenavEventTypes.toggle,n=>{n.payload.id===a&&o(m=>!m);}),useOn(SidenavEventTypes.open,n=>{!e&&n.payload.id===a&&o(true);}),useOn(SidenavEventTypes.close,n=>{e&&n.payload.id===a&&o(false);}),p&&!e?null:jsx(Provider,{values:[[HeadingContext,{slots:{[DEFAULT_SLOT]:{className:N({className:s()})},menu:{className:O({className:s()})},panel:{className:T()}}}],[SidenavContext,{id:a,isOpen:e}]],children:jsx("nav",{...d,className:y({className:r}),"data-open":e||null,children:v})})}export{D as Sidenav};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map