@jamsrui/menu 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/chunk-3TXNSYIT.mjs +1 -0
  2. package/dist/chunk-4DRJMVOY.mjs +1 -0
  3. package/dist/chunk-4QOOXBEL.mjs +1 -0
  4. package/dist/chunk-5DZZ6VC5.mjs +1 -0
  5. package/dist/chunk-6RHOGA5S.mjs +1 -0
  6. package/dist/chunk-A4ENIW42.mjs +1 -0
  7. package/dist/chunk-BDCGHIJW.mjs +1 -0
  8. package/dist/chunk-DHAF5YKZ.mjs +1 -0
  9. package/dist/chunk-EDFHOYYY.mjs +1 -0
  10. package/dist/chunk-GBR7YVTW.mjs +1 -0
  11. package/dist/chunk-IP6JQ5TM.mjs +1 -0
  12. package/dist/chunk-LSC54BQQ.mjs +1 -0
  13. package/dist/chunk-MCQCEY2U.mjs +1 -0
  14. package/dist/chunk-MFCNUSNC.mjs +1 -0
  15. package/dist/chunk-SNAXAYWZ.mjs +1 -0
  16. package/dist/chunk-VDALF5ID.mjs +1 -0
  17. package/dist/chunk-W6Z5NYJV.mjs +1 -0
  18. package/dist/chunk-WYIM2S4D.mjs +1 -0
  19. package/dist/chunk-Z3M52LAZ.mjs +1 -0
  20. package/dist/index.mjs +1 -1
  21. package/dist/menu-checkbox-item.mjs +1 -1
  22. package/dist/menu-config.mjs +1 -1
  23. package/dist/menu-content.mjs +1 -1
  24. package/dist/menu-content2.mjs +1 -1
  25. package/dist/menu-context.mjs +1 -1
  26. package/dist/menu-floating-context.mjs +1 -1
  27. package/dist/menu-group-label.mjs +1 -1
  28. package/dist/menu-group.mjs +1 -1
  29. package/dist/menu-item-inner.mjs +1 -1
  30. package/dist/menu-item.mjs +1 -1
  31. package/dist/menu-radio-group-context.mjs +1 -1
  32. package/dist/menu-radio-group.mjs +1 -1
  33. package/dist/menu-radio-item.mjs +1 -1
  34. package/dist/menu-root.mjs +1 -1
  35. package/dist/menu-separator.mjs +1 -1
  36. package/dist/menu-trigger.mjs +1 -1
  37. package/dist/menu.mjs +1 -1
  38. package/dist/styles.mjs +1 -1
  39. package/dist/use-menu.mjs +1 -1
  40. package/package.json +7 -8
@@ -0,0 +1 @@
1
+ import{b as e}from"./chunk-IP6JQ5TM.mjs";import{useRenderElement as t}from"@jamsrui/hooks";var u=r=>{let{getMenuGroupProps:o}=e();return t("div",{props:[o(r)]})};export{u as a};
@@ -0,0 +1 @@
1
+ import{a as u}from"./chunk-6RHOGA5S.mjs";import{a as r}from"./chunk-IP6JQ5TM.mjs";import{FloatingNode as a,FloatingTree as i,useFloatingParentNodeId as d}from"@floating-ui/react";import{jsx as n}from"react/jsx-runtime";var c=e=>{let t=u(e),{children:o}=e,{getNodeProps:s}=t;return n(r,{value:t,children:n(a,{...s(),children:o})})},g=e=>{let t=d(),{children:o}=e;return t===null?n(i,{children:n(c,{...e,children:o})}):n(c,{...e,children:o})};export{g as a};
@@ -0,0 +1 @@
1
+ import{createContext as e,use as t}from"react";var o=e({setHasFocusInside:()=>{},activeIndex:null,getItemProps:()=>({})}),s=()=>t(o);export{o as a,s as b};
@@ -0,0 +1 @@
1
+ import{createConfigContext as o}from"@jamsrui/utils";var[n,r]=o({displayName:"MenuConfigContext"});export{n as a,r as b};
@@ -0,0 +1 @@
1
+ import{a as v}from"./chunk-VDALF5ID.mjs";import{b as Q}from"./chunk-4QOOXBEL.mjs";import{useCallback as s,useEffect as W,useMemo as X,useRef as N,useState as Y}from"react";import{arrow as ye,autoUpdate as Me,flip as be,offset as ve,safePolygon as Ne,shift as Fe,size as he,useClick as Oe,useDismiss as xe,useFloating as Ce,useFloatingNodeId as Ge,useFloatingParentNodeId as we,useFloatingTree as Re,useHover as ke,useInteractions as Le,useListItem as Se,useListNavigation as Ee,useRole as Ae,useTypeahead as De}from"@floating-ui/react";import{useControlledState as Te,useMergeRefs as He}from"@jamsrui/hooks";import{cn as c,dataAttrDev as i,mapPropsVariants as Ve}from"@jamsrui/utils";var Je=Z=>{let p=we(),t=p!==null,[_,ee]=Ve(Z,v.variantKeys),{closeDelay:te=0,closeOnEscapeKey:oe=!0,closeOnOutsidePress:ne=!0,isOpen:se,lockScroll:F=!0,offset:re=4,openDelay:ae=75,placement:I=t?"right-start":"bottom",defaultOpen:le=!1,onOpenChange:ie,triggerOn:ue="click",classNames:o,hideArrow:y=!!t}=_,l=Re(),u=Ge(),M=Se(),me=y?0:7,[r=!1,d]=Te({defaultProp:le,onChange:ie,prop:se}),[pe,h]=Y(!1),[g,O]=Y(null),x=N(null),C=N([]),G=N([]),{floatingStyles:w,refs:b,context:a}=Ce({nodeId:u,open:r,onOpenChange:d,placement:I,middleware:[ve({mainAxis:re+me,alignmentAxis:t?-4:0}),be(),Fe({padding:5}),ye({element:x}),he({apply({availableHeight:e,elements:m,availableWidth:P}){m.floating.style.setProperty("--available-width",`${P}px`),m.floating.style.setProperty("--available-height",`${e}px`),m.floating.style.setProperty("--transform-origin","top center")}})],whileElementsMounted:Me}),ce=ke(a,{enabled:ue==="hover"||t,delay:{open:ae,close:te},handleClose:Ne({blockPointerEvents:!0})}),de=Oe(a,{event:"mousedown",toggle:!t,ignoreMouse:t}),ge=Ae(a,{role:"menu"}),fe=xe(a,{bubbles:!0,escapeKey:oe,outsidePress:ne}),Pe=Ee(a,{listRef:C,activeIndex:g,nested:t,onNavigate:O}),Ie=De(a,{enabled:r,listRef:G,onMatch:O,activeIndex:g}),{getReferenceProps:R,getFloatingProps:k,getItemProps:L}=Le([ce,de,ge,fe,Pe,Ie]);W(()=>{if(!l)return;function e(){d(!1)}function m(P){P.nodeId!==u&&P.parentId===p&&d(!1)}return l.events.on("click",e),l.events.on("menuopen",m),()=>{l.events.off("click",e),l.events.off("menuopen",m)}},[l,u,p,d,r]),W(()=>{r&&l&&l.events.emit("menuopen",{parentId:p,nodeId:u})},[l,r,u,p]);let n=v(ee),S=r&&pe&&t,E=He([b.setReference,M.ref]),f=Q(),A=s(()=>({ref:E,tabIndex:t?f.activeIndex===M.index?0:-1:void 0,"data-slot":i("trigger"),role:t?"menuitem":void 0,"data-active":S,"data-nested":t,"data-open":r,...R({...f.getItemProps({onMouseEnter(){h(!1),f.setHasFocusInside(!0)}})})}),[R,S,t,r,M.index,E,f]),D=s(()=>({lockScroll:F,"data-slot":i("overlay"),className:n.backdrop({className:o?.backdrop})}),[o?.backdrop,F,n]),T=s(()=>({context:a,modal:!0,initialFocus:1,returnFocus:!t,disabled:!1}),[a,t]),H=s(e=>({...e,"data-component":i("menu"),"data-slot":i("root"),className:n.root({className:o?.root}),ref:b.setFloating,style:w,...k()}),[o?.root,w,k,b.setFloating,n]),V=s(()=>({className:n.content({className:c(o?.content)})}),[o?.content,n]),K=s(()=>({context:a,ref:x,className:n.arrow({className:o?.arrow})}),[o?.arrow,a,n]),U=s(()=>({id:u}),[u]),$=s(()=>({elementsRef:C,labelsRef:G}),[]),j=X(()=>({activeIndex:g,getItemProps:L,setHasFocusInside:h}),[g,L]),z=s(e=>({...e,"data-slot":i("menu-item"),className:n.menuItem({className:c(o?.menuItem,e.className),color:e.color}),role:"menuitem"}),[o?.menuItem,n]),q=s(e=>({...e,"data-slot":i("menu-item-inner"),className:n.menuItemInner({className:c(o?.menuItemInner,e.className)})}),[o?.menuItemInner,n]),B=s(e=>({...e,"data-slot":i("menu-group"),className:n.menuItemInner({className:c(o?.menuGroup,e.className)})}),[o?.menuGroup,n]),J=s(e=>({...e,"data-slot":i("menu-group-label"),className:n.menuGroupLabel({className:c(o?.menuGroupLabel,e.className)})}),[o?.menuGroupLabel,n]);return X(()=>({getOverlayProps:D,getFocusManagerProps:T,getContentProps:V,getArrowProps:K,getNodeProps:U,isOpen:r,getTriggerProps:A,getFloatingListProps:$,hideArrow:y,floatingCtx:j,getRootProps:H,getMenuItemProps:z,isNested:t,getMenuItemInnerProps:q,getMenuGroupProps:B,getMenuGroupLabelProps:J,placement:I}),[D,T,V,K,U,r,A,$,y,j,H,z,t,q,B,J,I])};export{Je as a};
@@ -0,0 +1 @@
1
+ import{b as r}from"./chunk-IP6JQ5TM.mjs";import{cloneElement as o,isValidElement as i}from"react";var s=n=>{let{children:e}=n,{getTriggerProps:t}=r();return i(e)?o(e,t()):(console.warn("Invalid children passed to MenuTrigger"),null)};export{s as a};
@@ -0,0 +1 @@
1
+ import{a as r}from"./chunk-MFCNUSNC.mjs";import{a as e}from"./chunk-LSC54BQQ.mjs";import{a as n}from"./chunk-4QOOXBEL.mjs";import{b as t}from"./chunk-IP6JQ5TM.mjs";import{FloatingArrow as c,FloatingFocusManager as f,FloatingList as C,FloatingOverlay as x,FloatingPortal as d}from"@floating-ui/react";import{AnimatePresence as A}from"motion/react";import{jsx as o,jsxs as i}from"react/jsx-runtime";var I=a=>{let{getFloatingListProps:s,isOpen:l,getFocusManagerProps:p,getOverlayProps:u,hideArrow:g,getArrowProps:m,floatingCtx:F,isNested:M}=t(),{children:P}=a;return o(n,{value:F,children:o(C,{...s(),children:o(A,{children:l?i(d,{children:[M?null:o(x,{...u()}),o(f,{...p(),children:o(r,{children:i(e,{children:[g?null:o(c,{...m()}),P]})})})]}):null})})})};export{I as a};
@@ -0,0 +1 @@
1
+ import{b as e}from"./chunk-IP6JQ5TM.mjs";import{useRenderElement as t}from"@jamsrui/hooks";var u=r=>{let{getMenuGroupLabelProps:o}=e();return t("div",{props:[o(r)]})};export{u as a};
@@ -0,0 +1 @@
1
+ import{b as c}from"./chunk-MCQCEY2U.mjs";import{a as r}from"./chunk-Z3M52LAZ.mjs";import{useCallback as m}from"react";import{CheckIcon as p}from"@jamsrui/icons";import{jsx as n}from"react/jsx-runtime";var d=t=>{let{isChecked:e}=t;return n("span",{className:"size-4",children:e?n(p,{}):null})},M=t=>{let{value:e,tickPlacement:o,...l}=t,{value:s,isDisabled:a,setValue:i}=c(),u=m(()=>{a||i(e)},[a,e,i]);return n(r,{preventCloseOnClick:!0,onClick:u,endContent:o==="end"?n(d,{isChecked:s===e}):void 0,startContent:o==="start"?n(d,{isChecked:s===e}):void 0,...l})};export{M as a};
@@ -0,0 +1 @@
1
+ import{a as d}from"./chunk-Z3M52LAZ.mjs";import{useCallback as l}from"react";import{useControlledState as p}from"@jamsrui/hooks";import{CheckIcon as m}from"@jamsrui/icons";import{jsx as e}from"react/jsx-runtime";var C=n=>{let{isChecked:o}=n;return e("span",{className:"size-4",children:o?e(m,{}):null})},P=n=>{let{isChecked:o,onCheckedChange:r,defaultChecked:a,tickPlacement:t,...k}=n,[c=!1,s]=p({defaultProp:a,onChange:r,prop:o}),h=l(()=>{s(i=>!i)},[s]);return e(d,{preventCloseOnClick:!0,onClick:h,endContent:t==="end"?e(C,{isChecked:c}):void 0,startContent:t==="start"?e(C,{isChecked:c}):void 0,...k})};export{P as a};
@@ -0,0 +1 @@
1
+ import{createContext as t,use as n}from"react";var o=t(null),r=()=>{let e=n(o);if(!e)throw new Error("useMenuContext must be used within MenuContext");return e};export{o as a,r as b};
@@ -0,0 +1 @@
1
+ import{b as t}from"./chunk-IP6JQ5TM.mjs";import{motion as r}from"motion/react";import{jsx as p}from"react/jsx-runtime";var m=o=>{let{children:e,...n}=o,{getContentProps:i,isNested:s}=t();return p(r.div,{...s?{}:{exit:{opacity:0,scale:.8},initial:{opacity:0,scale:.8},transition:{type:"spring",stiffness:300,damping:25},animate:{opacity:1,scale:1,x:0,y:0}},...i(n),children:e})};export{m as a};
@@ -0,0 +1 @@
1
+ import{createContext as t,use as o}from"react";var n=t(null),u=()=>{let e=o(n);if(!e)throw new Error("useMenuRadioGroupContext must be used within a MenuRadioGroup");return e};export{n as a,u as b};
@@ -0,0 +1 @@
1
+ import{b as e}from"./chunk-IP6JQ5TM.mjs";import{useRenderElement as t}from"@jamsrui/hooks";var m=o=>{let{getRootProps:r}=e();return t("div",{props:[r(o)]})};export{m as a};
@@ -0,0 +1 @@
1
+ import{a as t}from"./chunk-MCQCEY2U.mjs";import{useMemo as s}from"react";import{useControlledState as d}from"@jamsrui/hooks";import{jsx as c}from"react/jsx-runtime";var v=u=>{let{children:n,defaultValue:r,isDisabled:e,onValueChange:l,value:p}=u,[o="",a]=d({defaultProp:r,onChange:l,prop:p}),i=s(()=>({isDisabled:e,value:o,setValue:a}),[e,a,o]);return c(t,{value:i,children:n})};export{v as a};
@@ -0,0 +1 @@
1
+ import{radiusVariant as e,tv as r}from"@jamsrui/utils";var n=r({slots:{arrow:"fill-background-secondary",backdrop:"z-backdrop",root:"min-w-[150px] z-popover outline-none outline-0",content:["relative z-popover box-border inline-flex w-full flex-col justify-center bg-surface p-1 text-sm shadow-md outline-none","shadow-lg origin-(--transform-origin)"],menuItem:["relative box-border flex size-full select-none items-center gap-2 px-2 py-1.5 text-left outline-none ui-disabled:cursor-not-allowed ui-disabled:opacity-60","ui-active:bg-surface-secondary"],menuGroup:[""],menuGroupLabel:"pl-2 text-foreground-secondary py-1",menuItemInner:"grow"},variants:{radius:e(["content","menuItem"]),backdrop:{transparent:{backdrop:""},opaque:{backdrop:"bg-black/50"},blur:{backdrop:"bg-black/30 backdrop-blur-md backdrop-saturate-150"}},color:{default:{menuItem:"ui-hover:bg-surface-secondary ui-hover:text-foreground"},primary:{menuItem:"ui-hover:bg-primary ui-hover:text-primary-foreground"},secondary:{menuItem:"ui-hover:bg-secondary ui-hover:text-secondary-foreground"},success:{menuItem:"ui-hover:bg-success ui-hover:text-success-foreground"},warning:{menuItem:"ui-hover:bg-warning ui-hover:text-warning-foreground"},danger:{menuItem:"ui-hover:bg-danger ui-hover:text-danger-foreground"}}},defaultVariants:{backdrop:"transparent",radius:"md",color:"default"}});export{n as a};
@@ -0,0 +1 @@
1
+ import{b as e}from"./chunk-IP6JQ5TM.mjs";import{useRenderElement as t}from"@jamsrui/hooks";var m=n=>{let{getMenuItemInnerProps:r}=e();return t("span",{props:[r(n)]})};export{m as a};
@@ -0,0 +1 @@
1
+ import{Divider as r}from"@jamsrui/divider";import{jsx as o}from"react/jsx-runtime";var a=()=>o(r,{className:"my-1.5"});export{a};
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-W6Z5NYJV.mjs";import{b as i}from"./chunk-4QOOXBEL.mjs";import{b as s}from"./chunk-IP6JQ5TM.mjs";import{useFloatingTree as b,useListItem as x}from"@floating-ui/react";import{useMergeRefs as P,useRenderElement as g}from"@jamsrui/hooks";import{Fragment as R,jsx as v,jsxs as k}from"react/jsx-runtime";var O=m=>{let{getMenuItemProps:c}=s(),l=b(),{textValue:d,children:e,isDisabled:t,startContent:u,endContent:p,preventCloseOnClick:f,...I}=m,n=i(),o=x({label:d??(typeof e=="string"?e:void 0)}),r=o.index===n.activeIndex,C=P([o.ref]),M=k(R,{children:[u,v(a,{children:e}),p]});return g("button",{props:[c(I),{children:M,disabled:t,"data-disabled":t,"data-active":r,"aria-disabled":t,ref:C,tabIndex:r?0:-1,onClick(){f||l?.events.emit("click")},onMouseEnter(){n.setHasFocusInside(!0)}}]})};export{O as a};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- "use client";import{Menu as r}from"./menu";import{MenuCheckboxItem as n}from"./menu-checkbox-item";import{MenuConfig as p,useMenuConfig as m}from"./menu-config";import{MenuContent as x}from"./menu-content";import{MenuGroup as i}from"./menu-group";import{MenuGroupLabel as g}from"./menu-group-label";import{MenuItem as G}from"./menu-item";import{MenuRadioGroup as b}from"./menu-radio-group";import{MenuRadioItem as d}from"./menu-radio-item";import{MenuSeparator as s}from"./menu-separator";import{MenuTrigger as h}from"./menu-trigger";export{r as Menu,n as MenuCheckboxItem,p as MenuConfig,x as MenuContent,i as MenuGroup,g as MenuGroupLabel,G as MenuItem,b as MenuRadioGroup,d as MenuRadioItem,s as MenuSeparator,h as MenuTrigger,m as useMenuConfig};
1
+ "use client";import{a as i}from"./chunk-A4ENIW42.mjs";import{a as e}from"./chunk-4DRJMVOY.mjs";import"./chunk-6RHOGA5S.mjs";import"./chunk-VDALF5ID.mjs";import{a as p}from"./chunk-3TXNSYIT.mjs";import{a as f}from"./chunk-SNAXAYWZ.mjs";import{a as x}from"./chunk-EDFHOYYY.mjs";import"./chunk-MCQCEY2U.mjs";import{a as M}from"./chunk-WYIM2S4D.mjs";import{a as r}from"./chunk-GBR7YVTW.mjs";import{a as o}from"./chunk-Z3M52LAZ.mjs";import"./chunk-W6Z5NYJV.mjs";import{a as t,b as n}from"./chunk-5DZZ6VC5.mjs";import{a as u}from"./chunk-BDCGHIJW.mjs";import"./chunk-MFCNUSNC.mjs";import"./chunk-LSC54BQQ.mjs";import"./chunk-4QOOXBEL.mjs";import{a as m}from"./chunk-DHAF5YKZ.mjs";import"./chunk-IP6JQ5TM.mjs";export{e as Menu,r as MenuCheckboxItem,t as MenuConfig,u as MenuContent,p as MenuGroup,m as MenuGroupLabel,o as MenuItem,f as MenuRadioGroup,x as MenuRadioItem,M as MenuSeparator,i as MenuTrigger,n as useMenuConfig};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{useCallback as i}from"react";import{useControlledState as l}from"@jamsrui/hooks";import{CheckIcon as p}from"@jamsrui/icons";import{MenuItem as m}from"./menu-item";const d=n=>{const{isChecked:o}=n;return e("span",{className:"size-4",children:o?e(p,{}):null})},P=n=>{const{isChecked:o,onCheckedChange:C,defaultChecked:r,tickPlacement:t,...a}=n,[c=!1,s]=l({defaultProp:r,onChange:C,prop:o}),k=i(()=>{s(h=>!h)},[s]);return e(m,{preventCloseOnClick:!0,onClick:k,endContent:t==="end"?e(d,{isChecked:c}):void 0,startContent:t==="start"?e(d,{isChecked:c}):void 0,...a})};export{P as MenuCheckboxItem};
1
+ import{a}from"./chunk-GBR7YVTW.mjs";import"./chunk-Z3M52LAZ.mjs";import"./chunk-W6Z5NYJV.mjs";import"./chunk-4QOOXBEL.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuCheckboxItem};
@@ -1 +1 @@
1
- import{createConfigContext as o}from"@jamsrui/utils";const[n,r]=o({displayName:"MenuConfigContext"});export{n as MenuConfig,r as useMenuConfig};
1
+ import{a,b}from"./chunk-5DZZ6VC5.mjs";export{a as MenuConfig,b as useMenuConfig};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t}from"react/jsx-runtime";import{FloatingArrow as m,FloatingFocusManager as F,FloatingList as M,FloatingOverlay as P,FloatingPortal as c}from"@floating-ui/react";import{AnimatePresence as f}from"motion/react";import{MenuContent2 as C}from"./menu-content2";import{useMenuContext as x}from"./menu-context";import{MenuFloatingContext as d}from"./menu-floating-context";import{MenuRoot as A}from"./menu-root";const I=n=>{const{getFloatingListProps:e,isOpen:r,getFocusManagerProps:i,getOverlayProps:a,hideArrow:s,getArrowProps:l,floatingCtx:p,isNested:u}=x(),{children:g}=n;return o(d,{value:p,children:o(M,{...e(),children:o(f,{children:r?t(c,{children:[u?null:o(P,{...a()}),o(F,{...i(),children:o(A,{children:t(C,{children:[s?null:o(m,{...l()}),g]})})})]}):null})})})};export{I as MenuContent};
1
+ import{a}from"./chunk-BDCGHIJW.mjs";import"./chunk-MFCNUSNC.mjs";import"./chunk-LSC54BQQ.mjs";import"./chunk-4QOOXBEL.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuContent};
@@ -1 +1 @@
1
- import{jsx as p}from"react/jsx-runtime";import{motion as s}from"motion/react";import{useMenuContext as r}from"./menu-context";const m=t=>{const{children:o,...e}=t,{getContentProps:n,isNested:i}=r();return p(s.div,{...i?{}:{exit:{opacity:0,scale:.8},initial:{opacity:0,scale:.8},transition:{type:"spring",stiffness:300,damping:25},animate:{opacity:1,scale:1,x:0,y:0}},...n(e),children:o})};export{m as MenuContent2};
1
+ import{a}from"./chunk-LSC54BQQ.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuContent2};
@@ -1 +1 @@
1
- import{createContext as t,use as n}from"react";const o=t(null),r=()=>{const e=n(o);if(!e)throw new Error("useMenuContext must be used within MenuContext");return e};export{o as MenuContext,r as useMenuContext};
1
+ import{a,b}from"./chunk-IP6JQ5TM.mjs";export{a as MenuContext,b as useMenuContext};
@@ -1 +1 @@
1
- import{createContext as e,use as t}from"react";const o=e({setHasFocusInside:()=>{},activeIndex:null,getItemProps:()=>({})}),s=()=>t(o);export{o as MenuFloatingContext,s as useMenuFloatingContext};
1
+ import{a,b}from"./chunk-4QOOXBEL.mjs";export{a as MenuFloatingContext,b as useMenuFloatingContext};
@@ -1 +1 @@
1
- import{useRenderElement as o}from"@jamsrui/hooks";import{useMenuContext as t}from"./menu-context";const u=e=>{const{getMenuGroupLabelProps:r}=t();return o("div",{props:[r(e)]})};export{u as MenuGroupLabel};
1
+ import{a}from"./chunk-DHAF5YKZ.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuGroupLabel};
@@ -1 +1 @@
1
- import{useRenderElement as o}from"@jamsrui/hooks";import{useMenuContext as t}from"./menu-context";const u=e=>{const{getMenuGroupProps:r}=t();return o("div",{props:[r(e)]})};export{u as MenuGroup};
1
+ import{a}from"./chunk-3TXNSYIT.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuGroup};
@@ -1 +1 @@
1
- import{useRenderElement as r}from"@jamsrui/hooks";import{useMenuContext as t}from"./menu-context";const m=e=>{const{getMenuItemInnerProps:n}=t();return r("span",{props:[n(e)]})};export{m as MenuItemInner};
1
+ import{a}from"./chunk-W6Z5NYJV.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuItemInner};
@@ -1 +1 @@
1
- import{Fragment as R,jsx as v,jsxs as k}from"react/jsx-runtime";import{useFloatingTree as I,useListItem as C}from"@floating-ui/react";import{useMergeRefs as M,useRenderElement as b}from"@jamsrui/hooks";import{useMenuContext as x}from"./menu-context";import{useMenuFloatingContext as P}from"./menu-floating-context";import{MenuItemInner as g}from"./menu-item-inner";const O=s=>{const{getMenuItemProps:i}=x(),a=I(),{textValue:m,children:e,isDisabled:t,startContent:c,endContent:l,preventCloseOnClick:d,...u}=s,n=P(),o=C({label:m??(typeof e=="string"?e:void 0)}),r=o.index===n.activeIndex,p=M([o.ref]),f=k(R,{children:[c,v(g,{children:e}),l]});return b("button",{props:[i(u),{children:f,disabled:t,"data-disabled":t,"data-active":r,"aria-disabled":t,ref:p,tabIndex:r?0:-1,onClick(){d||a?.events.emit("click")},onMouseEnter(){n.setHasFocusInside(!0)}}]})};export{O as MenuItem};
1
+ import{a}from"./chunk-Z3M52LAZ.mjs";import"./chunk-W6Z5NYJV.mjs";import"./chunk-4QOOXBEL.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuItem};
@@ -1 +1 @@
1
- import{createContext as t,use as o}from"react";const n=t(null),u=()=>{const e=o(n);if(!e)throw new Error("useMenuRadioGroupContext must be used within a MenuRadioGroup");return e};export{n as MenuRadioGroupContext,u as useMenuRadioGroupContext};
1
+ import{a,b}from"./chunk-MCQCEY2U.mjs";export{a as MenuRadioGroupContext,b as useMenuRadioGroupContext};
@@ -1 +1 @@
1
- import{jsx as c}from"react/jsx-runtime";import{useMemo as i}from"react";import{useControlledState as s}from"@jamsrui/hooks";import{MenuRadioGroupContext as d}from"./menu-radio-group-context";const v=t=>{const{children:u,defaultValue:n,isDisabled:e,onValueChange:r,value:l}=t,[o="",a]=s({defaultProp:n,onChange:r,prop:l}),p=i(()=>({isDisabled:e,value:o,setValue:a}),[e,a,o]);return c(d,{value:p,children:u})};export{v as MenuRadioGroup};
1
+ import{a}from"./chunk-SNAXAYWZ.mjs";import"./chunk-MCQCEY2U.mjs";export{a as MenuRadioGroup};
@@ -1 +1 @@
1
- import{jsx as n}from"react/jsx-runtime";import{useCallback as l}from"react";import{CheckIcon as u}from"@jamsrui/icons";import{MenuItem as m}from"./menu-item";import{useMenuRadioGroupContext as p}from"./menu-radio-group-context";const r=t=>{const{isChecked:e}=t;return n("span",{className:"size-4",children:e?n(u,{}):null})},M=t=>{const{value:e,tickPlacement:o,...c}=t,{value:s,isDisabled:a,setValue:i}=p(),d=l(()=>{a||i(e)},[a,e,i]);return n(m,{preventCloseOnClick:!0,onClick:d,endContent:o==="end"?n(r,{isChecked:s===e}):void 0,startContent:o==="start"?n(r,{isChecked:s===e}):void 0,...c})};export{M as MenuRadioItem};
1
+ import{a}from"./chunk-EDFHOYYY.mjs";import"./chunk-MCQCEY2U.mjs";import"./chunk-Z3M52LAZ.mjs";import"./chunk-W6Z5NYJV.mjs";import"./chunk-4QOOXBEL.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuRadioItem};
@@ -1 +1 @@
1
- import{useRenderElement as r}from"@jamsrui/hooks";import{useMenuContext as t}from"./menu-context";const m=e=>{const{getRootProps:o}=t();return r("div",{props:[o(e)]})};export{m as MenuRoot};
1
+ import{a}from"./chunk-MFCNUSNC.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuRoot};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{Divider as r}from"@jamsrui/divider";const a=()=>o(r,{className:"my-1.5"});export{a as MenuSeparator};
1
+ import{a}from"./chunk-WYIM2S4D.mjs";export{a as MenuSeparator};
@@ -1 +1 @@
1
- import{cloneElement as t,isValidElement as o}from"react";import{useMenuContext as i}from"./menu-context";const s=r=>{const{children:e}=r,{getTriggerProps:n}=i();return o(e)?t(e,n()):(console.warn("Invalid children passed to MenuTrigger"),null)};export{s as MenuTrigger};
1
+ import{a}from"./chunk-A4ENIW42.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuTrigger};
package/dist/menu.mjs CHANGED
@@ -1 +1 @@
1
- import{jsx as n}from"react/jsx-runtime";import{FloatingNode as c,FloatingTree as s,useFloatingParentNodeId as a}from"@floating-ui/react";import{MenuContext as i}from"./menu-context";import{useMenu as d}from"./use-menu";const r=e=>{const t=d(e),{children:o}=e,{getNodeProps:u}=t;return n(i,{value:t,children:n(c,{...u(),children:o})})},g=e=>{const t=a(),{children:o}=e;return t===null?n(s,{children:n(r,{...e,children:o})}):n(r,{...e,children:o})};export{g as Menu};
1
+ import{a}from"./chunk-4DRJMVOY.mjs";import"./chunk-6RHOGA5S.mjs";import"./chunk-VDALF5ID.mjs";import"./chunk-4QOOXBEL.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as Menu};
package/dist/styles.mjs CHANGED
@@ -1 +1 @@
1
- import{radiusVariant as e,tv as r}from"@jamsrui/utils";const n=r({slots:{arrow:"fill-background-secondary",backdrop:"z-backdrop",root:"min-w-[150px] z-popover outline-none outline-0",content:["relative z-popover box-border inline-flex w-full flex-col justify-center bg-surface p-1 text-sm shadow-md outline-none","shadow-lg origin-(--transform-origin)"],menuItem:["relative box-border flex size-full select-none items-center gap-2 px-2 py-1.5 text-left outline-none ui-disabled:cursor-not-allowed ui-disabled:opacity-60","ui-active:bg-surface-secondary"],menuGroup:[""],menuGroupLabel:"pl-2 text-foreground-secondary py-1",menuItemInner:"grow"},variants:{radius:e(["content","menuItem"]),backdrop:{transparent:{backdrop:""},opaque:{backdrop:"bg-black/50"},blur:{backdrop:"bg-black/30 backdrop-blur-md backdrop-saturate-150"}},color:{default:{menuItem:"ui-hover:bg-surface-secondary ui-hover:text-foreground"},primary:{menuItem:"ui-hover:bg-primary ui-hover:text-primary-foreground"},secondary:{menuItem:"ui-hover:bg-secondary ui-hover:text-secondary-foreground"},success:{menuItem:"ui-hover:bg-success ui-hover:text-success-foreground"},warning:{menuItem:"ui-hover:bg-warning ui-hover:text-warning-foreground"},danger:{menuItem:"ui-hover:bg-danger ui-hover:text-danger-foreground"}}},defaultVariants:{backdrop:"transparent",radius:"md",color:"default"}});export{n as menuVariants};
1
+ import{a}from"./chunk-VDALF5ID.mjs";export{a as menuVariants};
package/dist/use-menu.mjs CHANGED
@@ -1 +1 @@
1
- import{useCallback as s,useEffect as J,useMemo as Q,useRef as v,useState as W}from"react";import{arrow as Ie,autoUpdate as ye,flip as Me,offset as be,safePolygon as ve,shift as Ne,size as Fe,useClick as he,useDismiss as Oe,useFloating as xe,useFloatingNodeId as Ce,useFloatingParentNodeId as Ge,useFloatingTree as we,useHover as Re,useInteractions as ke,useListItem as Le,useListNavigation as Se,useRole as Ee,useTypeahead as Ae}from"@floating-ui/react";import{useControlledState as De,useMergeRefs as Te}from"@jamsrui/hooks";import{cn as c,dataAttrDev as i,mapPropsVariants as He}from"@jamsrui/utils";import{useMenuFloatingContext as Ve}from"./menu-floating-context";import{menuVariants as X}from"./styles";const Je=Y=>{const p=Ge(),t=p!==null,[Z,_]=He(Y,X.variantKeys),{closeDelay:ee=0,closeOnEscapeKey:te=!0,closeOnOutsidePress:oe=!0,isOpen:ne,lockScroll:N=!0,offset:se=4,openDelay:re=75,placement:I=t?"right-start":"bottom",defaultOpen:ae=!1,onOpenChange:le,triggerOn:ie="click",classNames:o,hideArrow:y=!!t}=Z,l=we(),u=Ce(),M=Le(),ue=y?0:7,[r=!1,d]=De({defaultProp:ae,onChange:le,prop:ne}),[me,F]=W(!1),[g,h]=W(null),O=v(null),x=v([]),C=v([]),{floatingStyles:G,refs:b,context:a}=xe({nodeId:u,open:r,onOpenChange:d,placement:I,middleware:[be({mainAxis:se+ue,alignmentAxis:t?-4:0}),Me(),Ne({padding:5}),Ie({element:O}),Fe({apply({availableHeight:e,elements:m,availableWidth:P}){m.floating.style.setProperty("--available-width",`${P}px`),m.floating.style.setProperty("--available-height",`${e}px`),m.floating.style.setProperty("--transform-origin","top center")}})],whileElementsMounted:ye}),pe=Re(a,{enabled:ie==="hover"||t,delay:{open:re,close:ee},handleClose:ve({blockPointerEvents:!0})}),ce=he(a,{event:"mousedown",toggle:!t,ignoreMouse:t}),de=Ee(a,{role:"menu"}),ge=Oe(a,{bubbles:!0,escapeKey:te,outsidePress:oe}),fe=Se(a,{listRef:x,activeIndex:g,nested:t,onNavigate:h}),Pe=Ae(a,{enabled:r,listRef:C,onMatch:h,activeIndex:g}),{getReferenceProps:w,getFloatingProps:R,getItemProps:k}=ke([pe,ce,de,ge,fe,Pe]);J(()=>{if(!l)return;function e(){d(!1)}function m(P){P.nodeId!==u&&P.parentId===p&&d(!1)}return l.events.on("click",e),l.events.on("menuopen",m),()=>{l.events.off("click",e),l.events.off("menuopen",m)}},[l,u,p,d,r]),J(()=>{r&&l&&l.events.emit("menuopen",{parentId:p,nodeId:u})},[l,r,u,p]);const n=X(_),L=r&&me&&t,S=Te([b.setReference,M.ref]),f=Ve(),E=s(()=>({ref:S,tabIndex:t?f.activeIndex===M.index?0:-1:void 0,"data-slot":i("trigger"),role:t?"menuitem":void 0,"data-active":L,"data-nested":t,"data-open":r,...w({...f.getItemProps({onMouseEnter(){F(!1),f.setHasFocusInside(!0)}})})}),[w,L,t,r,M.index,S,f]),A=s(()=>({lockScroll:N,"data-slot":i("overlay"),className:n.backdrop({className:o?.backdrop})}),[o?.backdrop,N,n]),D=s(()=>({context:a,modal:!0,initialFocus:1,returnFocus:!t,disabled:!1}),[a,t]),T=s(e=>({...e,"data-component":i("menu"),"data-slot":i("root"),className:n.root({className:o?.root}),ref:b.setFloating,style:G,...R()}),[o?.root,G,R,b.setFloating,n]),H=s(()=>({className:n.content({className:c(o?.content)})}),[o?.content,n]),V=s(()=>({context:a,ref:O,className:n.arrow({className:o?.arrow})}),[o?.arrow,a,n]),K=s(()=>({id:u}),[u]),U=s(()=>({elementsRef:x,labelsRef:C}),[]),$=Q(()=>({activeIndex:g,getItemProps:k,setHasFocusInside:F}),[g,k]),j=s(e=>({...e,"data-slot":i("menu-item"),className:n.menuItem({className:c(o?.menuItem,e.className),color:e.color}),role:"menuitem"}),[o?.menuItem,n]),z=s(e=>({...e,"data-slot":i("menu-item-inner"),className:n.menuItemInner({className:c(o?.menuItemInner,e.className)})}),[o?.menuItemInner,n]),q=s(e=>({...e,"data-slot":i("menu-group"),className:n.menuItemInner({className:c(o?.menuGroup,e.className)})}),[o?.menuGroup,n]),B=s(e=>({...e,"data-slot":i("menu-group-label"),className:n.menuGroupLabel({className:c(o?.menuGroupLabel,e.className)})}),[o?.menuGroupLabel,n]);return Q(()=>({getOverlayProps:A,getFocusManagerProps:D,getContentProps:H,getArrowProps:V,getNodeProps:K,isOpen:r,getTriggerProps:E,getFloatingListProps:U,hideArrow:y,floatingCtx:$,getRootProps:T,getMenuItemProps:j,isNested:t,getMenuItemInnerProps:z,getMenuGroupProps:q,getMenuGroupLabelProps:B,placement:I}),[A,D,H,V,K,r,E,U,y,$,T,j,t,z,q,B,I])};export{Je as useMenu};
1
+ import{a}from"./chunk-6RHOGA5S.mjs";import"./chunk-VDALF5ID.mjs";import"./chunk-4QOOXBEL.mjs";export{a as useMenu};
package/package.json CHANGED
@@ -1,23 +1,22 @@
1
1
  {
2
2
  "name": "@jamsrui/menu",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "peerDependencies": {
5
5
  "motion": ">=12",
6
6
  "react": ">=19"
7
7
  },
8
8
  "dependencies": {
9
9
  "@floating-ui/react": ">=0.27",
10
- "@jamsrui/core": "^0.0.8",
11
- "@jamsrui/hooks": "^0.0.9",
12
- "@jamsrui/icons": "^0.0.8",
13
- "@jamsrui/divider": "^0.0.9",
14
- "@jamsrui/utils": "^0.0.9"
10
+ "@jamsrui/core": "^0.0.9",
11
+ "@jamsrui/hooks": "^0.0.10",
12
+ "@jamsrui/divider": "^0.0.10",
13
+ "@jamsrui/icons": "^0.0.9",
14
+ "@jamsrui/utils": "^0.0.10"
15
15
  },
16
16
  "exports": {
17
17
  ".": {
18
18
  "types": "./dist/index.d.ts",
19
- "import": "./dist/index.mjs",
20
- "require": "./dist/index.js"
19
+ "import": "./dist/index.mjs"
21
20
  }
22
21
  },
23
22
  "description": "A modern and beautiful Next.js UI components library.",