Barazo default frontend
barazo.forum
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}