feat: implement news layout components and context for improved structure and functionality

This commit is contained in:
Ardeman
2025-02-22 17:34:25 +08:00
parent d9c36c5ff0
commit 77c9843267
11 changed files with 110 additions and 49 deletions
+36
View File
@@ -0,0 +1,36 @@
import React, {
createContext,
useState,
useContext,
type PropsWithChildren,
} from 'react'
type NewsContextProperties = {
isLoginOpen: boolean
setIsLoginOpen: React.Dispatch<React.SetStateAction<boolean>>
isRegisterOpen: boolean
setIsRegisterOpen: React.Dispatch<React.SetStateAction<boolean>>
}
const NewsContext = createContext<NewsContextProperties | undefined>(undefined)
export const NewsProvider = ({ children }: PropsWithChildren) => {
const [isLoginOpen, setIsLoginOpen] = useState(false)
const [isRegisterOpen, setIsRegisterOpen] = useState(false)
return (
<NewsContext.Provider
value={{ isLoginOpen, setIsLoginOpen, isRegisterOpen, setIsRegisterOpen }}
>
{children}
</NewsContext.Provider>
)
}
export const useNewsContext = (): NewsContextProperties => {
const context = useContext(NewsContext)
if (!context) {
throw new Error('useNewsContext must be used within a NewsProvider')
}
return context
}