import { IconLanguage, IconMoon, IconSun } from "@tabler/icons-react" import { createFileRoute } from "@tanstack/react-router" import * as React from "react" import { useTranslation } from "react-i18next" import { postLauncherDashboardSetup } from "@/api/launcher-auth" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { useTheme } from "@/hooks/use-theme" function LauncherSetupPage() { const { t, i18n } = useTranslation() const { theme, toggleTheme } = useTheme() const [password, setPassword] = React.useState("") const [confirm, setConfirm] = React.useState("") const [submitting, setSubmitting] = React.useState(false) const [error, setError] = React.useState("") const onSubmit = async (e: React.FormEvent) => { e.preventDefault() setError("") if (password !== confirm) { setError(t("launcherSetup.errorMismatch")) return } setSubmitting(true) try { const result = await postLauncherDashboardSetup(password, confirm) if (result.ok) { globalThis.location.assign("/launcher-login") return } setError(result.error) } catch { setError(t("launcherSetup.errorNetwork")) } finally { setSubmitting(false) } } return (
i18n.changeLanguage("en")}> English i18n.changeLanguage("zh")}> 简体中文
{t("launcherSetup.title")} {t("launcherSetup.description")}
setPassword(e.target.value)} placeholder={t("launcherSetup.passwordPlaceholder")} />
setConfirm(e.target.value)} placeholder={t("launcherSetup.confirmPlaceholder")} />
{error ? (

{error}

) : null}
) } export const Route = createFileRoute("/launcher-setup")({ component: LauncherSetupPage, })