@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 R}from"./chunk-V46VJOI6.js";import{a as E}from"./chunk-IU2UNORC.js";import{a as o}from"./chunk-WB7Y43TN.js";import{a as h}from"./chunk-AOLTZ2WJ.js";import{b as e}from"./chunk-CMFNILWJ.js";import{a,b as g,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 $}from"react/jsx-runtime";var F=re(({children:v,condensed:O=!1,condensedItems:G=!1,content:p,defaultOpen:H=!1,disabled:i=!1,icon:_,label:L,onClick:q,onClose:D,onInteractOutside:S,onOpen:y,onSubMenuOpenChange:C,open:b,rainbow:B=!0,withIndicator:U=!0,withScroll:V=!0,...u},z)=>{let f=I(null),w=I(null);te(z,()=>({get content(){return w?.current??null},get trigger(){return f?.current??null}}));let N=!!v,[A,X]=ae(b===!0),x=n=>{if(i)return;let t=A;X(n),m(C)&&t!==n&&C(n),!t&&n&&m(y)&&y(),t&&!n&&m(D)&&D()};ne(()=>{x(b===!0)},[N,b]);let{condensed:Y,disabled:j,rainbow:J}=T(E),{condensed:K,disabled:Q,rainbow:W}=T(R),d=i||Q||j,Z=O||K||Y,c=B&&W&&J,ee=n=>{let{target:t}=n;t===window||t===null||t===void 0||((f?.current?.contains(t)||w?.current?.contains(t))&&n.preventDefault(),m(S)&&S(n))},M=r(h,{className:a(`${e}-${o}__sub-menu__items`,i?`${e}-${o}__sub-menu__items--disabled`:c?P:""),element:"div",children:r(R.Provider,{value:{condensed:G,disabled:i,rainbow:c},children:v})});return $(l.Sub,{...H?{defaultOpen:!0}:{},...i?{open:!1}:{open:A},onOpenChange:x,children:[r(l.SubTrigger,{ref:f,asChild:!0,className:g(`${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",u.className),onClick:q,...k(["className"],u),children:$("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(h,{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:w,className:g(`${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?$(s.Root,{className:`${e}-${o}__sub-menu__content__scrollarea`,...u.dir===void 0?{}:{dir:u.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-EAYG7QLY.js.map