@jamsrui/menu 0.0.12 → 0.0.14
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.
- package/dist/index.d.mts +57 -15
- package/dist/index.mjs +1 -1
- package/dist/{menu-BQP9o4yc.d.mts → menu-BpwPA3vD.d.mts} +14 -17
- package/dist/menu-arrow.d.mts +10 -0
- package/dist/menu-arrow.mjs +1 -0
- package/dist/menu-checkbox-item.d.mts +5 -5
- package/dist/menu-checkbox-item.mjs +1 -1
- package/dist/menu-config.d.mts +5 -4
- package/dist/menu-config.mjs +1 -1
- package/dist/menu-container.d.mts +13 -0
- package/dist/menu-container.mjs +1 -0
- package/dist/menu-content.d.mts +2 -2
- package/dist/menu-content.mjs +1 -1
- package/dist/menu-context.d.mts +5 -4
- package/dist/menu-context.mjs +1 -1
- package/dist/menu-floating-context.mjs +1 -1
- package/dist/menu-group-label.mjs +1 -1
- package/dist/menu-group.mjs +1 -1
- package/dist/menu-item-indicator-context.d.mts +11 -0
- package/dist/menu-item-indicator-context.mjs +1 -0
- package/dist/menu-item-indicator.d.mts +10 -0
- package/dist/menu-item-indicator.mjs +1 -0
- package/dist/menu-item.d.mts +5 -4
- package/dist/menu-item.mjs +1 -1
- package/dist/menu-radio-group-context.mjs +1 -1
- package/dist/menu-radio-group.mjs +1 -1
- package/dist/menu-radio-item.d.mts +5 -5
- package/dist/menu-radio-item.mjs +1 -1
- package/dist/menu-separator.d.mts +6 -1
- package/dist/menu-separator.mjs +1 -1
- package/dist/menu-submenu-indicator.d.mts +10 -0
- package/dist/menu-submenu-indicator.mjs +1 -0
- package/dist/menu-trigger.mjs +1 -1
- package/dist/menu.d.mts +5 -4
- package/dist/menu.mjs +1 -1
- package/dist/styles.d.mts +9 -6
- package/dist/styles.mjs +1 -1
- package/dist/use-menu.d.mts +5 -4
- package/dist/use-menu.mjs +1 -1
- package/package.json +6 -6
- package/dist/chunk-3TXNSYIT.mjs +0 -1
- package/dist/chunk-4DRJMVOY.mjs +0 -1
- package/dist/chunk-4QOOXBEL.mjs +0 -1
- package/dist/chunk-5DZZ6VC5.mjs +0 -1
- package/dist/chunk-6RHOGA5S.mjs +0 -1
- package/dist/chunk-A4ENIW42.mjs +0 -1
- package/dist/chunk-BDCGHIJW.mjs +0 -1
- package/dist/chunk-DHAF5YKZ.mjs +0 -1
- package/dist/chunk-EDFHOYYY.mjs +0 -1
- package/dist/chunk-GBR7YVTW.mjs +0 -1
- package/dist/chunk-IP6JQ5TM.mjs +0 -1
- package/dist/chunk-LSC54BQQ.mjs +0 -1
- package/dist/chunk-MCQCEY2U.mjs +0 -1
- package/dist/chunk-MFCNUSNC.mjs +0 -1
- package/dist/chunk-SNAXAYWZ.mjs +0 -1
- package/dist/chunk-VDALF5ID.mjs +0 -1
- package/dist/chunk-W6Z5NYJV.mjs +0 -1
- package/dist/chunk-WYIM2S4D.mjs +0 -1
- package/dist/chunk-Z3M52LAZ.mjs +0 -1
- package/dist/menu-content2.d.mts +0 -10
- package/dist/menu-content2.mjs +0 -1
- package/dist/menu-item-inner.d.mts +0 -10
- package/dist/menu-item-inner.mjs +0 -1
- package/dist/menu-root.d.mts +0 -10
- package/dist/menu-root.mjs +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,21 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import { M as Menu$1, a as MenuItem } from './menu-BpwPA3vD.mjs';
|
|
4
|
+
import { MenuArrow } from './menu-arrow.mjs';
|
|
5
|
+
import { MenuCheckboxItem } from './menu-checkbox-item.mjs';
|
|
6
|
+
import { MenuContainer } from './menu-container.mjs';
|
|
7
|
+
import { MenuContent } from './menu-content.mjs';
|
|
8
|
+
import { MenuGroup } from './menu-group.mjs';
|
|
9
|
+
import { MenuGroupLabel } from './menu-group-label.mjs';
|
|
10
|
+
import { MenuItemIndicator } from './menu-item-indicator.mjs';
|
|
11
|
+
import { MenuRadioGroup } from './menu-radio-group.mjs';
|
|
12
|
+
import { MenuRadioItem } from './menu-radio-item.mjs';
|
|
13
|
+
import { MenuSeparator } from './menu-separator.mjs';
|
|
14
|
+
import { SubmenuIndicator } from './menu-submenu-indicator.mjs';
|
|
15
|
+
import { MenuTrigger } from './menu-trigger.mjs';
|
|
3
16
|
export { MenuConfig, useMenuConfig } from './menu-config.mjs';
|
|
4
|
-
export { MenuContent } from './menu-content.mjs';
|
|
5
|
-
export { MenuGroup } from './menu-group.mjs';
|
|
6
|
-
export { MenuGroupLabel } from './menu-group-label.mjs';
|
|
7
|
-
export { MenuRadioGroup } from './menu-radio-group.mjs';
|
|
8
|
-
export { MenuRadioItem } from './menu-radio-item.mjs';
|
|
9
|
-
export { MenuSeparator } from './menu-separator.mjs';
|
|
10
|
-
export { MenuTrigger } from './menu-trigger.mjs';
|
|
11
|
-
import 'react/jsx-runtime';
|
|
12
17
|
import '@floating-ui/react';
|
|
13
18
|
import '@jamsrui/utils';
|
|
14
|
-
import 'react';
|
|
15
|
-
import './menu-content2.mjs';
|
|
16
|
-
import 'motion/react';
|
|
17
19
|
import './menu-floating-context.mjs';
|
|
18
|
-
import './menu-item-inner.mjs';
|
|
19
|
-
import './menu-root.mjs';
|
|
20
20
|
import './styles.mjs';
|
|
21
|
+
import 'motion/react';
|
|
22
|
+
import '@jamsrui/divider';
|
|
21
23
|
import '@jamsrui/core';
|
|
24
|
+
|
|
25
|
+
declare const Menu: ((props: Menu$1.Props) => react_jsx_runtime.JSX.Element) & {
|
|
26
|
+
Root: (props: Menu$1.Props) => react_jsx_runtime.JSX.Element;
|
|
27
|
+
Group: (props: MenuGroup.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
28
|
+
Item: (props: MenuItem.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
29
|
+
CheckboxItem: (props: MenuCheckboxItem.Props) => react_jsx_runtime.JSX.Element;
|
|
30
|
+
RadioItem: (props: MenuRadioItem.Props) => react_jsx_runtime.JSX.Element;
|
|
31
|
+
RadioGroup: (props: MenuRadioGroup.Props) => react_jsx_runtime.JSX.Element;
|
|
32
|
+
Separator: (props: MenuSeparator.Props) => react_jsx_runtime.JSX.Element;
|
|
33
|
+
Trigger: (props: MenuTrigger.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | null;
|
|
34
|
+
GroupLabel: (props: MenuGroupLabel.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
35
|
+
Content: (props: MenuContent.Props) => react_jsx_runtime.JSX.Element;
|
|
36
|
+
ContentRoot: (props: MenuContent.Props) => react_jsx_runtime.JSX.Element;
|
|
37
|
+
SubmenuIndicator: (props: SubmenuIndicator.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
38
|
+
ItemIndicator: (props: MenuItemIndicator.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
39
|
+
Arrow: (props: MenuArrow.Props) => react_jsx_runtime.JSX.Element;
|
|
40
|
+
Container: (props: MenuContainer.Props) => react_jsx_runtime.JSX.Element;
|
|
41
|
+
};
|
|
42
|
+
declare namespace Menu {
|
|
43
|
+
interface Props extends Menu$1.Props {
|
|
44
|
+
}
|
|
45
|
+
interface CheckboxItem extends MenuCheckboxItem.Props {
|
|
46
|
+
}
|
|
47
|
+
interface RadioItem extends MenuRadioItem.Props {
|
|
48
|
+
}
|
|
49
|
+
interface RadioGroup extends MenuRadioGroup.Props {
|
|
50
|
+
}
|
|
51
|
+
interface Item extends MenuItem.Props {
|
|
52
|
+
}
|
|
53
|
+
interface Group extends MenuGroup.Props {
|
|
54
|
+
}
|
|
55
|
+
interface GroupLabel extends MenuGroupLabel.Props {
|
|
56
|
+
}
|
|
57
|
+
interface Separator extends MenuSeparator.Props {
|
|
58
|
+
}
|
|
59
|
+
interface Trigger extends MenuTrigger.Props {
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { Menu, MenuCheckboxItem, MenuContainer, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuTrigger };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{Menu as e}from"./menu.mjs";import{MenuArrow as f}from"./menu-arrow.mjs";import{MenuCheckboxItem as o}from"./menu-checkbox-item.mjs";import{MenuContainer as r,MenuContainerWithContent as x}from"./menu-container.mjs";import{MenuContent as t}from"./menu-content.mjs";import{MenuGroup as n}from"./menu-group.mjs";import{MenuGroupLabel as p}from"./menu-group-label.mjs";import{MenuItem as i}from"./menu-item.mjs";import{MenuItemIndicator as s}from"./menu-item-indicator.mjs";import{MenuRadioGroup as m}from"./menu-radio-group.mjs";import{MenuRadioItem as u}from"./menu-radio-item.mjs";import{MenuSeparator as a}from"./menu-separator.mjs";import{SubmenuIndicator as d}from"./menu-submenu-indicator.mjs";import{MenuTrigger as M}from"./menu-trigger.mjs";import{MenuConfig as O,useMenuConfig as W}from"./menu-config.mjs";const w=Object.assign(e,{Root:e,Group:n,Item:i,CheckboxItem:o,RadioItem:u,RadioGroup:m,Separator:a,Trigger:M,GroupLabel:p,Content:x,ContentRoot:t,SubmenuIndicator:d,ItemIndicator:s,Arrow:f,Container:r});export{w as Menu,o as MenuCheckboxItem,O as MenuConfig,r as MenuContainer,t as MenuContent,n as MenuGroup,p as MenuGroupLabel,i as MenuItem,m as MenuRadioGroup,u as MenuRadioItem,a as MenuSeparator,M as MenuTrigger,W as useMenuConfig};
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { FloatingOverlayProps, FloatingFocusManagerProps, FloatingArrowProps, FloatingNodeProps, FloatingList, Placement } from '@floating-ui/react';
|
|
3
|
-
import { UIProps, PropGetter
|
|
3
|
+
import { UIProps, PropGetter } from '@jamsrui/utils';
|
|
4
4
|
import * as react from 'react';
|
|
5
5
|
import { ComponentProps } from 'react';
|
|
6
|
-
import {
|
|
6
|
+
import { MenuContainer } from './menu-container.mjs';
|
|
7
|
+
import { MenuContent } from './menu-content.mjs';
|
|
7
8
|
import { MenuFloatingContext } from './menu-floating-context.mjs';
|
|
8
9
|
import { MenuGroup } from './menu-group.mjs';
|
|
9
10
|
import { MenuGroupLabel } from './menu-group-label.mjs';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { MenuVariantProps
|
|
11
|
+
import { MenuItemIndicator } from './menu-item-indicator.mjs';
|
|
12
|
+
import { SubmenuIndicator } from './menu-submenu-indicator.mjs';
|
|
13
|
+
import { MenuVariantProps } from './styles.mjs';
|
|
13
14
|
|
|
14
15
|
declare const MenuItem: (props: MenuItem.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
15
16
|
declare namespace MenuItem {
|
|
16
17
|
interface Props extends UIProps<"button"> {
|
|
17
|
-
textValue
|
|
18
|
-
|
|
18
|
+
textValue: string;
|
|
19
|
+
disabled?: boolean;
|
|
19
20
|
color?: Menu.Props["color"];
|
|
20
|
-
startContent?: React.ReactNode;
|
|
21
|
-
endContent?: React.ReactNode;
|
|
22
21
|
preventCloseOnClick?: boolean;
|
|
23
22
|
}
|
|
24
23
|
}
|
|
@@ -26,25 +25,24 @@ declare namespace MenuItem {
|
|
|
26
25
|
declare const useMenu: (props: useMenu.Props) => {
|
|
27
26
|
getOverlayProps: () => FloatingOverlayProps & UIProps<"div">;
|
|
28
27
|
getFocusManagerProps: () => Omit<FloatingFocusManagerProps, "children">;
|
|
29
|
-
getContentProps: PropGetter<
|
|
30
|
-
getArrowProps: () => FloatingArrowProps;
|
|
28
|
+
getContentProps: PropGetter<MenuContent.Props>;
|
|
29
|
+
getArrowProps: (props: Partial<FloatingArrowProps>) => FloatingArrowProps;
|
|
31
30
|
getNodeProps: () => FloatingNodeProps;
|
|
32
31
|
isOpen: boolean;
|
|
33
32
|
getTriggerProps: () => UIProps<"div">;
|
|
34
33
|
getFloatingListProps: () => Omit<ComponentProps<typeof FloatingList>, "children">;
|
|
35
|
-
hideArrow: boolean;
|
|
36
34
|
floatingCtx: MenuFloatingContext.Props;
|
|
37
|
-
|
|
38
|
-
getMenuItemProps: PropGetter<MenuItem.Props
|
|
35
|
+
getContainerProps: PropGetter<MenuContainer.Props>;
|
|
36
|
+
getMenuItemProps: PropGetter<Partial<MenuItem.Props>>;
|
|
39
37
|
isNested: boolean;
|
|
40
|
-
|
|
38
|
+
getSubmenuIndicatorProps: PropGetter<SubmenuIndicator.Props>;
|
|
41
39
|
getMenuGroupProps: PropGetter<MenuGroup.Props>;
|
|
42
40
|
getMenuGroupLabelProps: PropGetter<MenuGroupLabel.Props>;
|
|
43
41
|
placement: Placement;
|
|
42
|
+
getMenuItemIndicatorProps: PropGetter<MenuItemIndicator.Props>;
|
|
44
43
|
};
|
|
45
44
|
declare namespace useMenu {
|
|
46
45
|
interface Props extends MenuVariantProps {
|
|
47
|
-
classNames?: SlotsToClassNames<MenuSlots>;
|
|
48
46
|
triggerOn?: "hover" | "click";
|
|
49
47
|
isOpen?: boolean;
|
|
50
48
|
defaultOpen?: boolean;
|
|
@@ -56,7 +54,6 @@ declare namespace useMenu {
|
|
|
56
54
|
lockScroll?: boolean;
|
|
57
55
|
placement?: Placement;
|
|
58
56
|
offset?: number;
|
|
59
|
-
hideArrow?: boolean;
|
|
60
57
|
}
|
|
61
58
|
}
|
|
62
59
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { FloatingArrowProps } from '@floating-ui/react';
|
|
3
|
+
|
|
4
|
+
declare const MenuArrow: (props: MenuArrow.Props) => react_jsx_runtime.JSX.Element;
|
|
5
|
+
declare namespace MenuArrow {
|
|
6
|
+
interface Props extends Omit<FloatingArrowProps, "context"> {
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { MenuArrow };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as n}from"react/jsx-runtime";import{FloatingArrow as t}from"@floating-ui/react";import{useMenuContext as e}from"./menu-context.mjs";const s=r=>{const{getArrowProps:o}=e();return n(t,{...o(r)})};export{s as MenuArrow};
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { a as MenuItem } from './menu-
|
|
2
|
+
import { a as MenuItem } from './menu-BpwPA3vD.mjs';
|
|
3
3
|
import '@floating-ui/react';
|
|
4
4
|
import '@jamsrui/utils';
|
|
5
5
|
import 'react';
|
|
6
|
-
import './menu-
|
|
6
|
+
import './menu-container.mjs';
|
|
7
|
+
import './menu-content.mjs';
|
|
7
8
|
import 'motion/react';
|
|
8
9
|
import './menu-floating-context.mjs';
|
|
9
10
|
import './menu-group.mjs';
|
|
10
11
|
import './menu-group-label.mjs';
|
|
11
|
-
import './menu-item-
|
|
12
|
-
import './menu-
|
|
12
|
+
import './menu-item-indicator.mjs';
|
|
13
|
+
import './menu-submenu-indicator.mjs';
|
|
13
14
|
import './styles.mjs';
|
|
14
15
|
|
|
15
16
|
declare const MenuCheckboxItem: (props: MenuCheckboxItem.Props) => react_jsx_runtime.JSX.Element;
|
|
@@ -18,7 +19,6 @@ declare namespace MenuCheckboxItem {
|
|
|
18
19
|
isChecked?: boolean;
|
|
19
20
|
onCheckedChange?: (checked: boolean) => void;
|
|
20
21
|
defaultChecked?: boolean;
|
|
21
|
-
tickPlacement?: "start" | "end";
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{jsx as o}from"react/jsx-runtime";import{useCallback as l}from"react";import{useControlledState as h}from"@jamsrui/hooks";import{MenuItem as k}from"./menu-item.mjs";import{MenuItemIndicatorContext as p}from"./menu-item-indicator-context.mjs";const f=t=>{const{isChecked:n,onCheckedChange:c,defaultChecked:r,...C}=t,[s=!1,e]=h({defaultProp:r,onChange:c,prop:n}),a=l(()=>{e(d=>!d)},[e]);return o(p,{value:{isChecked:s},children:o(k,{preventCloseOnClick:!0,onClick:a,...C})})};export{f as MenuCheckboxItem};
|
package/dist/menu-config.d.mts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { GlobalConfigProps } from '@jamsrui/core';
|
|
3
|
-
import { M as Menu } from './menu-
|
|
3
|
+
import { M as Menu } from './menu-BpwPA3vD.mjs';
|
|
4
4
|
import '@floating-ui/react';
|
|
5
5
|
import '@jamsrui/utils';
|
|
6
6
|
import 'react';
|
|
7
|
-
import './menu-
|
|
7
|
+
import './menu-container.mjs';
|
|
8
|
+
import './menu-content.mjs';
|
|
8
9
|
import 'motion/react';
|
|
9
10
|
import './menu-floating-context.mjs';
|
|
10
11
|
import './menu-group.mjs';
|
|
11
12
|
import './menu-group-label.mjs';
|
|
12
|
-
import './menu-item-
|
|
13
|
-
import './menu-
|
|
13
|
+
import './menu-item-indicator.mjs';
|
|
14
|
+
import './menu-submenu-indicator.mjs';
|
|
14
15
|
import './styles.mjs';
|
|
15
16
|
|
|
16
17
|
declare const useMenuConfig: () => MenuConfig.Props;
|
package/dist/menu-config.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{createConfigContext as e}from"@jamsrui/utils";const[n,r]=e({displayName:"MenuConfigContext"});export{n as MenuConfig,r as useMenuConfig};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { UIProps } from '@jamsrui/utils';
|
|
3
|
+
import { MenuContent } from './menu-content.mjs';
|
|
4
|
+
import 'motion/react';
|
|
5
|
+
|
|
6
|
+
declare const MenuContainer: (props: MenuContainer.Props) => react_jsx_runtime.JSX.Element;
|
|
7
|
+
declare namespace MenuContainer {
|
|
8
|
+
interface Props extends UIProps<"div"> {
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
declare const MenuContainerWithContent: (props: MenuContent.Props) => react_jsx_runtime.JSX.Element;
|
|
12
|
+
|
|
13
|
+
export { MenuContainer, MenuContainerWithContent };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as d}from"react/jsx-runtime";import{FloatingFocusManager as u,FloatingList as m,FloatingOverlay as g,FloatingPortal as C}from"@floating-ui/react";import{useRenderElement as F}from"@jamsrui/hooks";import{AnimatePresence as M}from"motion/react";import{MenuContent as P}from".";import{useMenuContext as c}from"./menu-context.mjs";import{MenuFloatingContext as f}from"./menu-floating-context.mjs";const x=n=>{const{getFloatingListProps:t,isOpen:o,getFocusManagerProps:r,getOverlayProps:i,floatingCtx:a,isNested:s,getContainerProps:p}=c(),l=F("div",{props:[p(n)]});return e(f,{value:a,children:e(m,{...t(),children:e(M,{children:o?d(C,{children:[s?null:e(g,{...i()}),e(u,{...r(),children:l})]}):null})})})},I=n=>e(x,{children:e(P,{...n})});export{x as MenuContainer,I as MenuContainerWithContent};
|
package/dist/menu-content.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { HTMLMotionProps } from 'motion/react';
|
|
3
3
|
|
|
4
4
|
declare const MenuContent: (props: MenuContent.Props) => react_jsx_runtime.JSX.Element;
|
|
5
5
|
declare namespace MenuContent {
|
|
6
|
-
interface Props extends
|
|
6
|
+
interface Props extends HTMLMotionProps<"div"> {
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
|
package/dist/menu-content.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{jsx as p}from"react/jsx-runtime";import{motion as s}from"motion/react";import{useMenuContext as r}from"./menu-context.mjs";const m=t=>{const{children:o,...n}=t,{getContentProps:e,isNested:i}=r();return p(s.div,{...i?{}:{initial:{opacity:0,scale:.8},transition:{type:"spring",stiffness:300,damping:25},animate:{opacity:1,scale:1,x:0,y:0},exit:{opacity:0,scale:.8,transition:{duration:.2}}},...e(n),children:o})};export{m as MenuContent};
|
package/dist/menu-context.d.mts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { u as useMenu } from './menu-
|
|
2
|
+
import { u as useMenu } from './menu-BpwPA3vD.mjs';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
4
|
import '@floating-ui/react';
|
|
5
5
|
import '@jamsrui/utils';
|
|
6
|
-
import './menu-
|
|
6
|
+
import './menu-container.mjs';
|
|
7
|
+
import './menu-content.mjs';
|
|
7
8
|
import 'motion/react';
|
|
8
9
|
import './menu-floating-context.mjs';
|
|
9
10
|
import './menu-group.mjs';
|
|
10
11
|
import './menu-group-label.mjs';
|
|
11
|
-
import './menu-item-
|
|
12
|
-
import './menu-
|
|
12
|
+
import './menu-item-indicator.mjs';
|
|
13
|
+
import './menu-submenu-indicator.mjs';
|
|
13
14
|
import './styles.mjs';
|
|
14
15
|
|
|
15
16
|
declare const useMenuContext: () => MenuContext.Props;
|
package/dist/menu-context.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";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 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{createContext as e,use as t}from"react";const n=e({setHasFocusInside:()=>{},activeIndex:null,getItemProps:()=>({})}),s=()=>t(n);export{n as MenuFloatingContext,s as useMenuFloatingContext};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{useRenderElement as o}from"@jamsrui/hooks";import{useMenuContext as t}from"./menu-context.mjs";const u=e=>{const{getMenuGroupLabelProps:r}=t();return o("div",{props:[r(e)]})};export{u as MenuGroupLabel};
|
package/dist/menu-group.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{useRenderElement as o}from"@jamsrui/hooks";import{useMenuContext as t}from"./menu-context.mjs";const u=e=>{const{getMenuGroupProps:r}=t();return o("div",{props:[r(e)]})};export{u as MenuGroup};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
|
|
3
|
+
declare const useMenuItemIndicatorContext: () => MenuItemIndicatorContext.Props;
|
|
4
|
+
declare const MenuItemIndicatorContext: react.Context<MenuItemIndicatorContext.Props>;
|
|
5
|
+
declare namespace MenuItemIndicatorContext {
|
|
6
|
+
interface Props {
|
|
7
|
+
isChecked: boolean;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { MenuItemIndicatorContext, useMenuItemIndicatorContext };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{createContext as e,use as t}from"react";const o=e({isChecked:!1}),r=()=>t(o);export{o as MenuItemIndicatorContext,r as useMenuItemIndicatorContext};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { UIProps } from '@jamsrui/utils';
|
|
3
|
+
|
|
4
|
+
declare const MenuItemIndicator: (props: MenuItemIndicator.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
5
|
+
declare namespace MenuItemIndicator {
|
|
6
|
+
interface Props extends UIProps<"span"> {
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { MenuItemIndicator };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as i}from"react/jsx-runtime";import{useRenderElement as s}from"@jamsrui/hooks";import{CheckIcon as m}from"@jamsrui/icons";import{useMenuContext as p}from"./menu-context.mjs";import{useMenuItemIndicatorContext as c}from"./menu-item-indicator-context.mjs";const f=e=>{const{children:t=i(m,{className:"size-full"}),...r}=e,{getMenuItemIndicatorProps:n}=p(),{isChecked:o}=c();return s("span",{props:[n(r),{children:o?t:null}]})};export{f as MenuItemIndicator};
|
package/dist/menu-item.d.mts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import 'react';
|
|
2
2
|
import '@jamsrui/utils';
|
|
3
|
-
export { a as MenuItem } from './menu-
|
|
3
|
+
export { a as MenuItem } from './menu-BpwPA3vD.mjs';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import '@floating-ui/react';
|
|
6
|
-
import './menu-
|
|
6
|
+
import './menu-container.mjs';
|
|
7
|
+
import './menu-content.mjs';
|
|
7
8
|
import 'motion/react';
|
|
8
9
|
import './menu-floating-context.mjs';
|
|
9
10
|
import './menu-group.mjs';
|
|
10
11
|
import './menu-group-label.mjs';
|
|
11
|
-
import './menu-item-
|
|
12
|
-
import './menu-
|
|
12
|
+
import './menu-item-indicator.mjs';
|
|
13
|
+
import './menu-submenu-indicator.mjs';
|
|
13
14
|
import './styles.mjs';
|
package/dist/menu-item.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{useFloatingTree as p,useListItem as f}from"@floating-ui/react";import{useMergeRefs as b,useRenderElement as x}from"@jamsrui/hooks";import{useMenuContext as I}from"./menu-context.mjs";import{useMenuFloatingContext as M}from"./menu-floating-context.mjs";import{dataAttr as t}from"@jamsrui/utils";const F=s=>{const{getMenuItemProps:i}=I(),a=p(),{textValue:l,children:c,disabled:e=!1,preventCloseOnClick:m,...u}=s,n=M(),o=f({label:l}),r=o.index===n.activeIndex,d=b([o.ref]);return x("button",{props:[i(u),{children:c,disabled:e,"data-disabled":t(e),"data-active":t(r),"aria-disabled":t(e),ref:d,tabIndex:r?0:-1,onClick(){m||a?.events.emit("click")},onMouseEnter(){n.setHasFocusInside(!0)}}]})};export{F as MenuItem};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";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 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{jsx as c}from"react/jsx-runtime";import{useMemo as p}from"react";import{useControlledState as s}from"@jamsrui/hooks";import{MenuRadioGroupContext as d}from"./menu-radio-group-context.mjs";const v=t=>{const{children:u,defaultValue:n,isDisabled:e,onValueChange:r,value:l}=t,[o="",a]=s({defaultProp:n,onChange:r,prop:l}),i=p(()=>({isDisabled:e,value:o,setValue:a}),[e,a,o]);return c(d,{value:i,children:u})};export{v as MenuRadioGroup};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { a as MenuItem } from './menu-
|
|
2
|
+
import { a as MenuItem } from './menu-BpwPA3vD.mjs';
|
|
3
3
|
import '@floating-ui/react';
|
|
4
4
|
import '@jamsrui/utils';
|
|
5
5
|
import 'react';
|
|
6
|
-
import './menu-
|
|
6
|
+
import './menu-container.mjs';
|
|
7
|
+
import './menu-content.mjs';
|
|
7
8
|
import 'motion/react';
|
|
8
9
|
import './menu-floating-context.mjs';
|
|
9
10
|
import './menu-group.mjs';
|
|
10
11
|
import './menu-group-label.mjs';
|
|
11
|
-
import './menu-item-
|
|
12
|
-
import './menu-
|
|
12
|
+
import './menu-item-indicator.mjs';
|
|
13
|
+
import './menu-submenu-indicator.mjs';
|
|
13
14
|
import './styles.mjs';
|
|
14
15
|
|
|
15
16
|
declare const MenuRadioItem: (props: MenuRadioItem.Props) => react_jsx_runtime.JSX.Element;
|
|
16
17
|
declare namespace MenuRadioItem {
|
|
17
18
|
interface Props extends MenuItem.Props {
|
|
18
19
|
value: string;
|
|
19
|
-
tickPlacement?: "start" | "end";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
package/dist/menu-radio-item.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{jsx as n}from"react/jsx-runtime";import{useCallback as u}from"react";import{MenuItem as m}from"./menu-item.mjs";import{MenuItemIndicatorContext as l}from"./menu-item-indicator-context.mjs";import{useMenuRadioGroupContext as p}from"./menu-radio-group-context.mjs";const M=r=>{const{value:e,...i}=r,{value:s,isDisabled:t,setValue:o}=p(),a=u(()=>{t||o(e)},[t,e,o]);return n(l,{value:{isChecked:s===e},children:n(m,{preventCloseOnClick:!0,onClick:a,...i})})};export{M as MenuRadioItem};
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Divider } from '@jamsrui/divider';
|
|
2
3
|
|
|
3
|
-
declare const MenuSeparator: () => react_jsx_runtime.JSX.Element;
|
|
4
|
+
declare const MenuSeparator: (props: MenuSeparator.Props) => react_jsx_runtime.JSX.Element;
|
|
5
|
+
declare namespace MenuSeparator {
|
|
6
|
+
interface Props extends Divider.Props {
|
|
7
|
+
}
|
|
8
|
+
}
|
|
4
9
|
|
|
5
10
|
export { MenuSeparator };
|
package/dist/menu-separator.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{jsx as o}from"react/jsx-runtime";import{Divider as r}from"@jamsrui/divider";const a=e=>o(r,{...e,className:"my-1.5"});export{a as MenuSeparator};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { UIProps } from '@jamsrui/utils';
|
|
3
|
+
|
|
4
|
+
declare const SubmenuIndicator: (props: SubmenuIndicator.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
5
|
+
declare namespace SubmenuIndicator {
|
|
6
|
+
interface Props extends UIProps<"span"> {
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { SubmenuIndicator };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as m}from"react/jsx-runtime";import{useRenderElement as t}from"@jamsrui/hooks";import{ChevronRightIcon as s}from"@jamsrui/icons";import{useMenuContext as p}from"./menu-context.mjs";const d=e=>{const{children:r=m(s,{className:"size-full"}),...n}=e,{getSubmenuIndicatorProps:o}=p();return t("span",{props:[o(n),{children:r}]})};export{d as SubmenuIndicator};
|
package/dist/menu-trigger.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{cloneElement as t,isValidElement as o}from"react";import{useMenuContext as i}from"./menu-context.mjs";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};
|
package/dist/menu.d.mts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import 'react/jsx-runtime';
|
|
2
|
-
export { M as Menu } from './menu-
|
|
2
|
+
export { M as Menu } from './menu-BpwPA3vD.mjs';
|
|
3
3
|
import '@floating-ui/react';
|
|
4
4
|
import '@jamsrui/utils';
|
|
5
5
|
import 'react';
|
|
6
|
-
import './menu-
|
|
6
|
+
import './menu-container.mjs';
|
|
7
|
+
import './menu-content.mjs';
|
|
7
8
|
import 'motion/react';
|
|
8
9
|
import './menu-floating-context.mjs';
|
|
9
10
|
import './menu-group.mjs';
|
|
10
11
|
import './menu-group-label.mjs';
|
|
11
|
-
import './menu-item-
|
|
12
|
-
import './menu-
|
|
12
|
+
import './menu-item-indicator.mjs';
|
|
13
|
+
import './menu-submenu-indicator.mjs';
|
|
13
14
|
import './styles.mjs';
|
package/dist/menu.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{jsx as n}from"react/jsx-runtime";import{FloatingNode as c,FloatingTree as s,useFloatingParentNodeId as i}from"@floating-ui/react";import{MenuContext as a}from"./menu-context.mjs";import{useMenu as l}from"./use-menu.mjs";const r=e=>{const t=l(e),{children:o}=e,{getNodeProps:u}=t;return n(a,{value:t,children:n(c,{...u(),children:o})})},g=e=>{const t=i(),{children:o}=e;return t===null?n(s,{children:n(r,{...e,children:o})}):n(r,{...e,children:o})};export{g as Menu};
|
package/dist/styles.d.mts
CHANGED
|
@@ -46,12 +46,13 @@ declare const menuVariants: _jamsrui_utils.TVReturnType<{
|
|
|
46
46
|
}, {
|
|
47
47
|
arrow: string;
|
|
48
48
|
backdrop: string;
|
|
49
|
-
|
|
49
|
+
container: string;
|
|
50
50
|
content: string[];
|
|
51
51
|
menuItem: string[];
|
|
52
52
|
menuGroup: string[];
|
|
53
53
|
menuGroupLabel: string;
|
|
54
|
-
|
|
54
|
+
submenuIndicator: string;
|
|
55
|
+
menuItemIndicator: string;
|
|
55
56
|
}, undefined, {
|
|
56
57
|
radius: {
|
|
57
58
|
sm: {};
|
|
@@ -97,12 +98,13 @@ declare const menuVariants: _jamsrui_utils.TVReturnType<{
|
|
|
97
98
|
}, {
|
|
98
99
|
arrow: string;
|
|
99
100
|
backdrop: string;
|
|
100
|
-
|
|
101
|
+
container: string;
|
|
101
102
|
content: string[];
|
|
102
103
|
menuItem: string[];
|
|
103
104
|
menuGroup: string[];
|
|
104
105
|
menuGroupLabel: string;
|
|
105
|
-
|
|
106
|
+
submenuIndicator: string;
|
|
107
|
+
menuItemIndicator: string;
|
|
106
108
|
}, _jamsrui_utils.TVReturnType<{
|
|
107
109
|
radius: {
|
|
108
110
|
sm: {};
|
|
@@ -148,12 +150,13 @@ declare const menuVariants: _jamsrui_utils.TVReturnType<{
|
|
|
148
150
|
}, {
|
|
149
151
|
arrow: string;
|
|
150
152
|
backdrop: string;
|
|
151
|
-
|
|
153
|
+
container: string;
|
|
152
154
|
content: string[];
|
|
153
155
|
menuItem: string[];
|
|
154
156
|
menuGroup: string[];
|
|
155
157
|
menuGroupLabel: string;
|
|
156
|
-
|
|
158
|
+
submenuIndicator: string;
|
|
159
|
+
menuItemIndicator: string;
|
|
157
160
|
}, undefined, unknown, unknown, undefined>>;
|
|
158
161
|
type MenuVariantProps = VariantProps<typeof menuVariants>;
|
|
159
162
|
type MenuSlots = keyof ReturnType<typeof menuVariants>;
|
package/dist/styles.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{radiusVariant as e,tv as r}from"@jamsrui/utils";const t=r({slots:{arrow:"fill-background-secondary",backdrop:"z-backdrop",container:"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 border-[0.5px] border-divider-dark 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 data-disabled:cursor-not-allowed data-disabled:opacity-60","data-active:bg-surface-secondary"],menuGroup:[""],menuGroupLabel:"pl-2 text-foreground-secondary py-1",submenuIndicator:"ml-auto size-4",menuItemIndicator:"size-4"},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{t as menuVariants};
|
package/dist/use-menu.d.mts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import '@floating-ui/react';
|
|
2
2
|
import '@jamsrui/utils';
|
|
3
3
|
import 'react';
|
|
4
|
-
import './menu-
|
|
4
|
+
import './menu-container.mjs';
|
|
5
|
+
import './menu-content.mjs';
|
|
5
6
|
import './menu-floating-context.mjs';
|
|
6
7
|
import './menu-group.mjs';
|
|
7
8
|
import './menu-group-label.mjs';
|
|
8
|
-
export { u as useMenu } from './menu-
|
|
9
|
-
import './menu-item-
|
|
10
|
-
import './menu-
|
|
9
|
+
export { u as useMenu } from './menu-BpwPA3vD.mjs';
|
|
10
|
+
import './menu-item-indicator.mjs';
|
|
11
|
+
import './menu-submenu-indicator.mjs';
|
|
11
12
|
import './styles.mjs';
|
|
12
13
|
import 'react/jsx-runtime';
|
|
13
14
|
import 'motion/react';
|
package/dist/use-menu.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
"use client";import{useCallback as n,useEffect as B,useMemo as J,useRef as Q,useState as I}from"react";import{arrow as Pe,autoUpdate as ye,flip as be,offset as Ie,safePolygon as Me,shift as ve,size as Fe,useClick as Ne,useDismiss as he,useFloating as Oe,useFloatingNodeId as Ce,useFloatingParentNodeId as xe,useFloatingTree as Ge,useHover as we,useInteractions as Ee,useListItem as ke,useListNavigation as Le,useRole as Re,useTypeahead as Se}from"@floating-ui/react";import{useControlledState as Ae,useMergeRefs as De}from"@jamsrui/hooks";import{dataAttrDev as l,mapPropsVariants as He}from"@jamsrui/utils";import{useMenuFloatingContext as Te}from"./menu-floating-context.mjs";import{menuVariants as W}from"./styles.mjs";const Be=X=>{const c=xe(),o=c!==null,[Y,Z]=He(X,W.variantKeys),{closeDelay:_=0,closeOnEscapeKey:ee=!0,closeOnOutsidePress:te=!0,isOpen:oe,lockScroll:M=!0,offset:ne=4,openDelay:se=75,placement:f=o?"right-start":"bottom",defaultOpen:re=!1,onOpenChange:ae,triggerOn:le="click"}=Y,a=Ge(),i=Ce(),P=ke(),[s=!1,p]=Ae({defaultProp:re,onChange:ae,prop:oe}),[ie,y]=I(!1),[m,v]=I(null),[F,N]=I(null),h=Q([]),O=Q([]),ue=F?7:0,{floatingStyles:C,refs:b,context:r}=Oe({nodeId:i,open:s,onOpenChange:p,placement:f,middleware:[Ie({mainAxis:ne+ue,alignmentAxis:o?-4:0}),be(),ve({padding:5}),Pe({element:F}),Fe({apply({availableHeight:e,elements:u,availableWidth:g}){u.floating.style.setProperty("--available-width",`${g}px`),u.floating.style.setProperty("--available-height",`${e}px`),u.floating.style.setProperty("--transform-origin","top left")}})],whileElementsMounted:ye}),ce=we(r,{enabled:le==="hover"||o,delay:{open:se,close:_},handleClose:Me({blockPointerEvents:!0})}),pe=Ne(r,{event:"mousedown",toggle:!o,ignoreMouse:o}),me=Re(r,{role:"menu"}),de=he(r,{bubbles:!0,escapeKey:ee,outsidePress:te}),ge=Le(r,{listRef:h,activeIndex:m,nested:o,onNavigate:v}),fe=Se(r,{enabled:s,listRef:O,onMatch:v,activeIndex:m}),{getReferenceProps:x,getFloatingProps:G,getItemProps:w}=Ee([ce,pe,me,de,ge,fe]);B(()=>{if(!a)return;function e(){p(!1)}function u(g){g.nodeId!==i&&g.parentId===c&&p(!1)}return a.events.on("click",e),a.events.on("menuopen",u),()=>{a.events.off("click",e),a.events.off("menuopen",u)}},[a,i,c,p,s]),B(()=>{s&&a&&a.events.emit("menuopen",{parentId:c,nodeId:i})},[a,s,i,c]);const t=W(Z),E=s&&ie&&o,k=De([b.setReference,P.ref]),d=Te(),L=n(()=>({ref:k,tabIndex:o?d.activeIndex===P.index?0:-1:void 0,"data-slot":l("trigger"),role:o?"menuitem":void 0,"data-active":E,"data-nested":o,"data-open":s,...x({...d.getItemProps({onMouseEnter(){y(!1),d.setHasFocusInside(!0)}})})}),[x,E,o,s,P.index,k,d]),R=n(()=>({lockScroll:M,"data-slot":l("overlay"),className:t.backdrop()}),[M,t]),S=n(()=>({context:r,modal:!0,initialFocus:1,returnFocus:!o,disabled:!1}),[r,o]),A=n(e=>({...e,"data-component":l("menu"),"data-slot":l("container"),className:t.container(),ref:b.setFloating,style:C,...G()}),[C,G,b.setFloating,t]),D=n(()=>({className:t.content()}),[t]),H=n(e=>({tipRadius:6,...e,context:r,ref:N,className:t.arrow({className:e.className})}),[r,N,t]),T=n(()=>({id:i}),[i]),V=n(()=>({elementsRef:h,labelsRef:O}),[]),K=J(()=>({activeIndex:m,getItemProps:w,setHasFocusInside:y}),[m,w,y]),U=n(e=>({...e,"data-slot":l("menu-item"),className:t.menuItem({className:e.className,color:e.color}),role:"menuitem"}),[t]),$=n(e=>({...e,"data-slot":l("submenu-indicator"),className:t.submenuIndicator({className:e.className})}),[t]),j=n(e=>({...e,"data-slot":l("menu-item-indicator"),className:t.menuItemIndicator({className:e.className})}),[t]),z=n(e=>({...e,"data-slot":l("menu-group"),className:t.menuGroup({className:e.className})}),[t]),q=n(e=>({...e,"data-slot":l("menu-group-label"),className:t.menuGroupLabel({className:e.className})}),[t]);return J(()=>({getOverlayProps:R,getFocusManagerProps:S,getContentProps:D,getArrowProps:H,getNodeProps:T,isOpen:s,getTriggerProps:L,getFloatingListProps:V,floatingCtx:K,getContainerProps:A,getMenuItemProps:U,isNested:o,getSubmenuIndicatorProps:$,getMenuGroupProps:z,getMenuGroupLabelProps:q,placement:f,getMenuItemIndicatorProps:j}),[j,R,S,D,H,T,s,L,V,K,A,U,o,$,z,q,f])};export{Be as useMenu};
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jamsrui/menu",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
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.
|
|
11
|
-
"@jamsrui/
|
|
12
|
-
"@jamsrui/utils": "^0.0.
|
|
13
|
-
"@jamsrui/
|
|
14
|
-
"@jamsrui/
|
|
10
|
+
"@jamsrui/core": "^0.0.12",
|
|
11
|
+
"@jamsrui/icons": "^0.0.12",
|
|
12
|
+
"@jamsrui/utils": "^0.0.14",
|
|
13
|
+
"@jamsrui/divider": "^0.0.14",
|
|
14
|
+
"@jamsrui/hooks": "^0.0.14"
|
|
15
15
|
},
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
package/dist/chunk-3TXNSYIT.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-4DRJMVOY.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-4QOOXBEL.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-5DZZ6VC5.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{createConfigContext as o}from"@jamsrui/utils";var[n,r]=o({displayName:"MenuConfigContext"});export{n as a,r as b};
|
package/dist/chunk-6RHOGA5S.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-A4ENIW42.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-BDCGHIJW.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-DHAF5YKZ.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-EDFHOYYY.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-GBR7YVTW.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-IP6JQ5TM.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-LSC54BQQ.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-MCQCEY2U.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-MFCNUSNC.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-SNAXAYWZ.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-VDALF5ID.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-W6Z5NYJV.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-WYIM2S4D.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-Z3M52LAZ.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
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/menu-content2.d.mts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { HTMLMotionProps } from 'motion/react';
|
|
3
|
-
|
|
4
|
-
declare const MenuContent2: (props: MenuContent2.Props) => react_jsx_runtime.JSX.Element;
|
|
5
|
-
declare namespace MenuContent2 {
|
|
6
|
-
interface Props extends HTMLMotionProps<"div"> {
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export { MenuContent2 };
|
package/dist/menu-content2.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-LSC54BQQ.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuContent2};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as react from 'react';
|
|
2
|
-
import { UIProps } from '@jamsrui/utils';
|
|
3
|
-
|
|
4
|
-
declare const MenuItemInner: (props: MenuItemInner.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
5
|
-
declare namespace MenuItemInner {
|
|
6
|
-
interface Props extends UIProps<"span"> {
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export { MenuItemInner };
|
package/dist/menu-item-inner.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-W6Z5NYJV.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuItemInner};
|
package/dist/menu-root.d.mts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as react from 'react';
|
|
2
|
-
import { UIProps } from '@jamsrui/utils';
|
|
3
|
-
|
|
4
|
-
declare const MenuRoot: (props: MenuRoot.Props) => react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
5
|
-
declare namespace MenuRoot {
|
|
6
|
-
interface Props extends UIProps<"div"> {
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export { MenuRoot };
|
package/dist/menu-root.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-MFCNUSNC.mjs";import"./chunk-IP6JQ5TM.mjs";export{a as MenuRoot};
|