mirror of
https://github.com/zoriya/v10.git
synced 2026-08-08 23:27:58 +00:00
44 lines
1.9 KiB
JavaScript
44 lines
1.9 KiB
JavaScript
"use client";
|
|
import { createContext, useContext } from "react";
|
|
//#region src/ui/menu/context.tsx
|
|
const MenuContext = createContext(null);
|
|
const MenuContextProvider = MenuContext.Provider;
|
|
function useMenuContext() {
|
|
const ctx = useContext(MenuContext);
|
|
if (!ctx) throw new Error("Menu compound components must be used within a Menu.Root");
|
|
return ctx;
|
|
}
|
|
function useOptionalMenuContext() {
|
|
return useContext(MenuContext);
|
|
}
|
|
const SubMenuContext = createContext(null);
|
|
const SubMenuContextProvider = SubMenuContext.Provider;
|
|
function useSubMenuContext() {
|
|
return useContext(SubMenuContext);
|
|
}
|
|
const MenuGroupContext = createContext(null);
|
|
const MenuGroupContextProvider = MenuGroupContext.Provider;
|
|
function useMenuGroupContext() {
|
|
return useContext(MenuGroupContext);
|
|
}
|
|
const MenuRadioGroupContext = createContext(null);
|
|
const MenuRadioGroupContextProvider = MenuRadioGroupContext.Provider;
|
|
function useMenuRadioGroupContext() {
|
|
const ctx = useContext(MenuRadioGroupContext);
|
|
if (!ctx) throw new Error("Menu.RadioItem must be used within a Menu.RadioGroup");
|
|
return ctx;
|
|
}
|
|
const MenuTriggerChildContext = createContext(false);
|
|
const MenuTriggerChildContextProvider = MenuTriggerChildContext.Provider;
|
|
function useOptionalMenuTriggerChildContext() {
|
|
return useContext(MenuTriggerChildContext);
|
|
}
|
|
const MenuItemSettingContext = createContext(null);
|
|
const MenuItemSettingContextProvider = MenuItemSettingContext.Provider;
|
|
function useOptionalMenuItemSettingContext() {
|
|
return useContext(MenuItemSettingContext);
|
|
}
|
|
//#endregion
|
|
export { MenuContextProvider, MenuGroupContextProvider, MenuItemSettingContextProvider, MenuRadioGroupContextProvider, MenuTriggerChildContextProvider, SubMenuContextProvider, useMenuContext, useMenuGroupContext, useMenuRadioGroupContext, useOptionalMenuContext, useOptionalMenuItemSettingContext, useOptionalMenuTriggerChildContext, useSubMenuContext };
|
|
|
|
//# sourceMappingURL=context.js.map
|