Something went wrong. Try again.
Bluesky app fork with some witchin' additions 💫 forked from jollywhoppers.com/witchsky.app
Something went wrong. Try again.
1.6 kB · 59 lines
TSX
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960import {msg} from '@lingui/core/macro'import {useLingui} from '@lingui/react'
import {sanitizeAppLanguageSetting} from '#/locale/helpers'import {APP_LANGUAGES} from '#/locale/languages'import * as Select from '#/components/Select'
const DEFAULT_ITEMS = APP_LANGUAGES.map(l => ({ label: l.name, value: l.code2,}))
export function LanguageSelect({ value, onChange, items = DEFAULT_ITEMS, label, disabledBlueskySupportedLanguageSanitization = false,}: { value?: string onChange: (value: string) => void items?: {label: string; value: string}[] label?: string disabledBlueskySupportedLanguageSanitization?: boolean}) { const {_} = useLingui() const selectValue = value && !disabledBlueskySupportedLanguageSanitization ? sanitizeAppLanguageSetting(value) : value
const handleOnChange = (value: string) => { if (!value) return onChange( disabledBlueskySupportedLanguageSanitization ? value : sanitizeAppLanguageSetting(value), ) }
return ( <Select.Root value={selectValue} onValueChange={handleOnChange}> <Select.Trigger label={_(msg`Select language`)}> <Select.ValueText placeholder={_(msg`Select language`)} /> <Select.Icon /> </Select.Trigger> <Select.Content label={label} renderItem={({label, value}) => ( <Select.Item value={value} label={label}> <Select.ItemIndicator /> <Select.ItemText>{label}</Select.ItemText> </Select.Item> )} items={items} /> </Select.Root> )}