1
0
mirror of synced 2025-12-22 19:34:15 -05:00
Files
docs/components/page-header/LanguagePicker.tsx
Kevin Heis 329a8c664e Create a shared picker component (#22836)
* Unified picker component

* Add picker to storybook

* TS fixes

* Simplify "mobile" header spacing

* Fix a few testid

* Update Picker.tsx

* Update Picker.tsx

* Update Picker.tsx

* Fix unit test

* Fix rendering tests
2021-11-16 19:10:28 +00:00

42 lines
1.1 KiB
TypeScript

import { useRouter } from 'next/router'
import { Link } from 'components/Link'
import { useLanguages } from 'components/context/LanguagesContext'
import { Picker } from 'components/ui/Picker'
type Props = {
variant?: 'inline'
}
export const LanguagePicker = ({ variant }: Props) => {
const router = useRouter()
const { languages } = useLanguages()
const locale = router.locale || 'en'
const langs = Object.values(languages)
const selectedLang = languages[locale]
return (
<Picker
variant={variant}
data-testid="language-picker"
defaultText="Choose language"
options={langs
.filter((lang) => !lang.wip)
.map((lang) => ({
text: lang.nativeName || lang.name,
selected: lang === selectedLang,
item: (
<Link href={router.asPath} locale={lang.code}>
{lang.nativeName ? (
<>
{lang.nativeName} ({lang.name})
</>
) : (
lang.name
)}
</Link>
),
}))}
/>
)
}