@cerberus-design/react
Version:
The Cerberus Design React component library.
51 lines (50 loc) • 1.14 kB
JavaScript
// src/context/navMenu.tsx
import { css } from "styled-system/css";
import {
createContext,
useCallback,
useContext,
useMemo,
useRef,
useState
} from "react";
import { jsx } from "react/jsx-runtime";
var NavMenuContext = createContext(null);
function NavMenu(props) {
const triggerRef = useRef(null);
const menuRef = useRef(null);
const [expanded, setExpanded] = useState(false);
const handleToggle = useCallback(() => {
setExpanded((prev) => !prev);
}, []);
const value = useMemo(
() => ({
triggerRef,
menuRef,
expanded,
onToggle: handleToggle
}),
[expanded, handleToggle]
);
return /* @__PURE__ */ jsx(NavMenuContext.Provider, { value, children: /* @__PURE__ */ jsx(
"nav",
{
className: css({
position: "relative"
}),
children: props.children
}
) });
}
function useNavMenuContext() {
const context = useContext(NavMenuContext);
if (!context) {
throw new Error("useNavMenuContext must be used within a NavMenu.");
}
return context;
}
export {
NavMenu,
useNavMenuContext
};
//# sourceMappingURL=chunk-FXWN3SPS.js.map