Barazo default frontend barazo.forum
at main 29 lines 827 B view raw
1'use client' 2 3import { createContext, useContext, useState, useCallback, useMemo } from 'react' 4 5interface ThreadHoverContextValue { 6 hoveredUri: string | null 7 setHovered: (uri: string | null) => void 8} 9 10const ThreadHoverContext = createContext<ThreadHoverContextValue>({ 11 hoveredUri: null, 12 setHovered: () => {}, 13}) 14 15export function ThreadHoverProvider({ children }: { children: React.ReactNode }) { 16 const [hoveredUri, setHoveredUri] = useState<string | null>(null) 17 18 const setHovered = useCallback((uri: string | null) => { 19 setHoveredUri(uri) 20 }, []) 21 22 const value = useMemo(() => ({ hoveredUri, setHovered }), [hoveredUri, setHovered]) 23 24 return <ThreadHoverContext.Provider value={value}>{children}</ThreadHoverContext.Provider> 25} 26 27export function useThreadHover() { 28 return useContext(ThreadHoverContext) 29}