1
0
mirror of synced 2025-12-22 11:26:57 -05:00
Files
docs/components/context/LanguagesContext.tsx
Mike Surowiec a9a19ef6da Move languages out of MainContext (#20503)
* move languages off of MainContext

* load languages from request to workaround sharing the languages file
2021-07-29 13:36:11 +00:00

34 lines
810 B
TypeScript

import { createContext, useContext } from 'react'
import languages from 'lib/languages.js'
type LanguageItem = {
name: string
nativeName?: string
code: string
hreflang: string
wip?: boolean
}
export type LanguagesContextT = {
languages: Record<string, LanguageItem>
}
export const LanguagesContext = createContext<LanguagesContextT | null>(null)
type Props = {
children?: React.ReactNode
}
export const LanguagesProvider = ({ children }: Props) => {
return <LanguagesContext.Provider value={{ languages }}>{children}</LanguagesContext.Provider>
}
export const useLanguages = (): LanguagesContextT => {
const context = useContext(LanguagesContext)
if (!context) {
throw new Error('"useLanguagesContext" may only be used inside "LanguagesContext.Provider"')
}
return context
}