web/app/collab/collab-nav-actions.tsxblame
View source
0b4b5821"use client";
0b4b5822
0b4b5823import { createContext, useContext, useState, useCallback, type ReactNode } from "react";
0b4b5824
0b4b5825const CollabNavActionsContext = createContext<{
0b4b5826 actions: ReactNode;
0b4b5827 setActions: (node: ReactNode) => void;
0b4b5828}>({ actions: null, setActions: () => {} });
0b4b5829
0b4b58210export function CollabNavActionsProvider({ children }: { children: ReactNode }) {
0b4b58211 const [actions, setActions] = useState<ReactNode>(null);
0b4b58212 return (
0b4b58213 <CollabNavActionsContext.Provider value={{ actions, setActions }}>
0b4b58214 {children}
0b4b58215 </CollabNavActionsContext.Provider>
0b4b58216 );
0b4b58217}
0b4b58218
0b4b58219export function useCollabNavActions() {
0b4b58220 return useContext(CollabNavActionsContext);
0b4b58221}
0b4b58222
0b4b58223/** Slot that renders whatever was set via setActions */
0b4b58224export function CollabNavActionsSlot() {
0b4b58225 const { actions } = useContext(CollabNavActionsContext);
0b4b58226 return <>{actions}</>;
0b4b58227}