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) 2.71 kB
'use client'; import {jsx,jsxs}from'react/jsx-runtime';import'client-only';import T from'@accelint/icons/chevron-right';import {createContext,useContext}from'react';import {useContextProps,Popover,composeRenderProps,Menu,MenuTrigger,SubmenuTrigger,MenuSection,Header,Collection,Separator,Text,MenuItem,Provider,KeyboardContext,DEFAULT_SLOT}from'react-aria-components';import {isSlottedContextValue}from'./../../lib/utils.js';import {IconContext,Icon}from'../icon/index.js';import {MenuStyles,MenuStylesDefaults}from'./styles.js';const {menu:U,icon:_,item:q,label:z,description:B,more:G,section:J,header:Q,separator:W,hotkey:X,popover:Y}=MenuStyles(),d=createContext(null);function P({children:t,classNames:e,items:n,title:a,...s}){return jsxs(MenuSection,{...s,className:J({className:e?.section}),children:[a&&jsx(Header,{className:Q({className:e?.header}),children:a}),jsx(Collection,{items:n,children:t})]})}P.displayName="Menu.Section";function S({className:t,...e}){return jsx(Separator,{...e,className:W({className:t})})}S.displayName="Menu.Separator";function N({children:t,className:e,...n}){return jsx(Text,{...n,slot:"label",className:z({className:e}),children:t})}N.displayName="Menu.Item.Label";function v({children:t,className:e,...n}){return jsx(Text,{...n,slot:"description",className:B({className:e}),children:t})}v.displayName="Menu.Item.Description";function m({children:t,classNames:e,color:n="info",...a}){const s=useContext(d),l=(isSlottedContextValue(s)?void 0:s?.variant)??MenuStylesDefaults.variant;return jsx(MenuItem,{...a,className:composeRenderProps(e?.item,r=>q({className:r,variant:l})),"data-color":n,children:composeRenderProps(t,(r,{hasSubmenu:p})=>jsxs(Provider,{values:[[KeyboardContext,{className:X({className:e?.hotkey})}],[IconContext,{slots:{[DEFAULT_SLOT]:{className:_({className:e?.icon})},submenu:{className:G({className:e?.more})}}}]],children:[typeof r=="string"?jsx(Text,{slot:"label",className:e?.text,children:r}):r,p&&jsx(Icon,{slot:"submenu",children:jsx(T,{})})]}))})}m.displayName="Menu.Item",m.Label=N,m.Description=v;function i({ref:t,...e}){[e,t]=useContextProps(e,t??null,d);const{children:n,classNames:a,popoverProps:s,selectionMode:l="single",variant:r=MenuStylesDefaults.variant,...p}=e;return jsx(Popover,{...s,className:composeRenderProps(a?.popover,c=>Y({className:c})),children:jsx(d.Provider,{value:{variant:r},children:jsx(Menu,{...p,ref:t,className:composeRenderProps(a?.menu,c=>U({className:c,variant:r})),selectionMode:l,children:n})})})}i.displayName="Menu",i.Trigger=MenuTrigger,i.Submenu=SubmenuTrigger,i.Item=m,i.Separator=S,i.Section=P;export{i as Menu,d as MenuContext};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map