opencode/packages/web/src/components/LanguageSelect.astro

29 lines
941 B
Text

---
import config from "virtual:starlight/user-config"
import StarlightLanguageSelect from "@astrojs/starlight/components/LanguageSelect.astro"
const locales = Object.keys(config.locales ?? {})
---
<opencode-language-select data-locales={JSON.stringify(locales)}>
<StarlightLanguageSelect />
</opencode-language-select>
<script>
document.addEventListener("change", (event) => {
if (!(event.target instanceof HTMLSelectElement)) return
const wrapper = event.target.closest("opencode-language-select")
if (!(wrapper instanceof HTMLElement)) return
const locales = JSON.parse(wrapper.dataset.locales ?? "[]") as string[]
const locale = locales[event.target.selectedIndex]
if (!locale) return
document.cookie = `oc_locale=${encodeURIComponent(locale === "root" ? "en" : locale)}; Path=/; Max-Age=31536000; SameSite=Lax`
})
</script>
<style>
opencode-language-select {
display: contents;
}
</style>