Buckets:
| import { For, createSignal } from "solid-js" | |
| import { useLocation, useNavigate } from "@solidjs/router" | |
| import { Dropdown, DropdownItem } from "~/component/dropdown" | |
| import { useLanguage } from "~/context/language" | |
| import { route, strip } from "~/lib/language" | |
| import "./language-picker.css" | |
| export function LanguagePicker(props: { align?: "left" | "right" } = {}) { | |
| const language = useLanguage() | |
| const navigate = useNavigate() | |
| const location = useLocation() | |
| const [open, setOpen] = createSignal(false) | |
| return ( | |
| <div data-component="language-picker"> | |
| <Dropdown | |
| trigger={language.label(language.locale())} | |
| align={props.align ?? "left"} | |
| open={open()} | |
| onOpenChange={setOpen} | |
| > | |
| <For each={language.locales}> | |
| {(locale) => ( | |
| <DropdownItem | |
| selected={locale === language.locale()} | |
| onClick={() => { | |
| language.setLocale(locale) | |
| const href = `${route(locale, strip(location.pathname))}${location.search}${location.hash}` | |
| if (href !== `${location.pathname}${location.search}${location.hash}`) navigate(href) | |
| setOpen(false) | |
| }} | |
| > | |
| {language.label(locale)} | |
| </DropdownItem> | |
| )} | |
| </For> | |
| </Dropdown> | |
| </div> | |
| ) | |
| } | |
Xet Storage Details
- Size:
- 1.35 kB
- Xet hash:
- 3d9e9d742f18d1279912b186b7c69463c92e3685acfb7aace81df8d4ed1280d2
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.