import { IconButton, Stack } from "@chakra-ui/react"; import type { FunctionComponent } from "react"; import { PACKAGE_ANALYTICS } from "./constants"; import { LanguageSupportTooltip } from "../../components/LanguageSupportTooltip"; import { Language, TEMP_SUPPORTED_LANGUAGES, LANGUAGE_RENDER_MAP, LANGUAGES, } from "../../constants/languages"; import { clickEvent, useAnalytics } from "../../contexts/Analytics"; export interface LanguageBarProps { targetLanguages: readonly Language[]; selectedLanguage: Language; setSelectedLanguage: (lang: Language) => void; } export const LanguageBar: FunctionComponent = ({ targetLanguages, selectedLanguage, setSelectedLanguage, }) => { const { trackCustomEvent } = useAnalytics(); return ( {[...targetLanguages] .sort( (left, right) => LANGUAGES.indexOf(left) - LANGUAGES.indexOf(right) ) .map((language: Language) => { const isDisabled = !TEMP_SUPPORTED_LANGUAGES.has(language); const isSelected = language === selectedLanguage; const { icon: LangIcon } = LANGUAGE_RENDER_MAP[language]; const onClick = () => { if (isSelected) return; trackCustomEvent( clickEvent({ name: PACKAGE_ANALYTICS.LANGUAGE.eventName(language), }) ); setSelectedLanguage(language); }; return ( } onClick={onClick} p={1} variant="outline" w="max-content" /> ); })} ); };