@snowball-tech/fractal
Version:
Fractal's (Snowball's design system) React component library based on RadixUI and PandaCSS
3 lines • 4.32 kB
JavaScript
'use client';
import{a as h}from"./chunk-V46VJOI6.js";import{a as E}from"./chunk-IU2UNORC.js";import{a as o}from"./chunk-Q4ACHLJ4.js";import{a as g}from"./chunk-HTOKQYVM.js";import{b as e}from"./chunk-CMFNILWJ.js";import{a,b as x,c as P}from"./chunk-XYM7TA65.js";import*as l from"@radix-ui/react-dropdown-menu";import*as s from"@radix-ui/react-scroll-area";import{UilAngleRight as oe}from"@tooni/iconscout-unicons-react";import{forwardRef as re,useContext as T,useEffect as ne,useImperativeHandle as te,useRef as I,useState as ae}from"react";import m from"lodash/fp/isFunction";import k from"lodash/fp/omit";import{jsx as r,jsxs as R}from"react/jsx-runtime";var F=re(({children:$,condensed:O=!1,condensedItems:G=!1,content:p,defaultOpen:H=!1,disabled:u=!1,icon:_,label:L,onClick:q,onClose:v,onInteractOutside:D,onOpen:S,onSubMenuOpenChange:y,open:b,rainbow:B=!0,withIndicator:U=!0,withScroll:V=!0,...i},z)=>{let C=I(null),f=I(null);te(z,()=>({get content(){return f?.current??null},get trigger(){return C?.current??null}}));let N=!!$,[A,X]=ae(b===!0),w=n=>{if(u)return;let t=A;X(n),m(y)&&t!==n&&y(n),!t&&n&&m(S)&&S(),t&&!n&&m(v)&&v()};ne(()=>{w(b===!0)},[N,b]);let{condensed:Y,disabled:j,rainbow:J}=T(E),{condensed:K,disabled:Q,rainbow:W}=T(h),d=u||Q||j,Z=O||K||Y,c=B&&W&&J,ee=n=>{let{target:t}=n;t===window||t===null||t===void 0||((C?.current?.contains(t)||f?.current?.contains(t))&&n.preventDefault(),m(D)&&D(n))},M=r(g,{className:a(`${e}-${o}__sub-menu__items`,u?`${e}-${o}__sub-menu__items--disabled`:c?P:""),element:"div",children:r(h.Provider,{value:{condensed:G,disabled:u,rainbow:c},children:$})});return R(l.Sub,{...H?{defaultOpen:!0}:{},...u?{open:!1}:{open:A},onOpenChange:w,children:[r(l.SubTrigger,{asChild:!0,className:x(`${e}-${o}__sub-menu`,"flex w-full flex-row items-center gap-1","rounded-sm outline-none transition-background-color duration-300 ease-out",Z?"max-h-6 px-2 py-1":"p-2",_?`${e}-${o}__sub-menu__with-icon`:"",d?`${e}-${o}__sub-menu--disabled cursor-not-allowed !bg-transparent text-disabled`:"cursor-pointer text-dark",i.className),onClick:q,...k(["className"],i),children:R("div",{className:a(`${e}-${o}__sub-menu__label`,c?"alternatee":"","flex w-full flex-row items-center gap-1",d?`${e}-${o}__sub-menu__label--disabled cursor-not-allowed text-disabled`:"cursor-pointer",!d&&!c?"hover:bg-decorative-pink-90":""),children:[_&&r("div",{className:a(`${e}-${o}__sub-menu__icon`,"max-h-3 max-w-3"),children:_}),r(g,{className:a("flex-1",d?"cursor-not-allowed":"cursor-pointer"),element:"label",children:L}),U&&r("div",{className:a(`${e}-${o}__sub-menu__indicator`,"max-h-3 max-w-3"),children:r(oe,{})})]})}),r(l.Portal,{children:r(l.SubContent,{ref:f,className:x(`${e}-${o}__sub-menu__content`,'pointer-events-auto relative z-50 -mt-1 overflow-hidden rounded-sm border-1 border-normal bg-white p-1 data-[side="bottom"]:mt-1 data-[side="left"]:mr-2 data-[side="right"]:ml-2 data-[side="top"]:mb-1',N?"":`${e}-${o}__sub-menu__content--empty invisible`,p?.className),loop:!0,style:{display:void 0,...p?.style},onInteractOutside:ee,...k(["asChild","className","style","onInteractOutside"],p),children:V?R(s.Root,{className:`${e}-${o}__sub-menu__content__scrollarea`,...i.dir===void 0?{}:{dir:i.dir},type:"hover",children:[r(s.Viewport,{className:a(`${e}-${o}__sub-menu__content__scrollarea__viewport`,`relative h-full max-h-[calc(var(--radix-popper-available-height)-theme(spacing.4))] w-full overflow-auto [&:has(+_.${e}-${o}__sub-menu__content__scrollarea__scrollbar--y)]:w-[calc(100%-theme(spacing.1)+theme(spacing.quarter))]`),style:{overflowY:void 0},children:M}),r(s.Scrollbar,{className:a(`${e}-${o}__sub-menu__content__scrollarea__scrollbar--y`,'flex touch-none select-none rounded-r-sm bg-grey-90 p-quarter transition-background-color duration-300 ease-out hover:bg-grey-70 data-[orientation="vertical"]:w-1'),orientation:"vertical",children:r(s.Thumb,{className:a(`${e}-${o}__sub-menu__content__scrollarea__scrollbar--y__thumb`,"before:l-1/2 relative !w-half flex-1 rounded-sm bg-grey-30 before:absolute before:top-1/2 before:h-full before:min-h-[44px] before:w-full before:min-w-[44px] before:-translate-x-1/2 before:-translate-y-1/2 before:content-empty")})})]}):M})})]})});F.displayName="SubDropdown";var we=F;export{F as a,we as b};
//# sourceMappingURL=chunk-UH4INTCU.js.map