"use client" import * as React from "react" import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@/examples/base/ui/select" import { cn } from "@/lib/utils" export type Language = "en" | "ar" | "he" export type Direction = "ltr" | "rtl" export type Translations< T extends Record = Record, > = Record< Language, { dir: Direction locale?: string values: T } > export const languageOptions = [ { value: "en", label: "English" }, { value: "ar", label: "Arabic (العربية)" }, { value: "he", label: "Hebrew (עברית)" }, ] as const type LanguageContextType = { language: Language setLanguage: (language: Language) => void } const LanguageContext = React.createContext( undefined ) export function LanguageProvider({ children, defaultLanguage = "ar", }: { children: React.ReactNode defaultLanguage?: Language }) { const [language, setLanguage] = React.useState(defaultLanguage) return ( {children} ) } export function useLanguageContext() { const context = React.useContext(LanguageContext) return context } export function useTranslation>( translations: Translations, defaultLanguage: Language = "ar" ) { const context = useLanguageContext() const [localLanguage, setLocalLanguage] = React.useState(defaultLanguage) const language = context?.language ?? localLanguage const setLanguage = context?.setLanguage ?? setLocalLanguage const { dir, locale, values: t } = translations[language] return { language, setLanguage, dir, locale, t } } export interface LanguageSelectorProps { value: Language onValueChange: (value: Language) => void } export function LanguageSelector({ value, onValueChange, className, languages = ["en", "ar", "he"], }: LanguageSelectorProps & { className?: string languages?: Language[] }) { return ( ) }