diff --git a/js/web/src/routes/settings.tsx b/js/web/src/routes/settings.tsx index 7b0182cb..b7a1d67a 100644 --- a/js/web/src/routes/settings.tsx +++ b/js/web/src/routes/settings.tsx @@ -1,13 +1,58 @@ -import { createFileRoute, Outlet } from "@tanstack/react-router"; +import { cn } from "@/lib/utils"; +import { createFileRoute, Link, Outlet } from "@tanstack/react-router"; +import { Globe, Info, Lock, Shield, User2, Video } from "lucide-react"; +import { useTranslation } from "react-i18next"; + +const NAV_ITEMS = [ + { to: "/settings/account", icon: User2, labelKey: "account" }, + { to: "/settings/streaming", icon: Video, labelKey: "streaming" }, + { to: "/settings/privacy", icon: Shield, labelKey: "privacy-security" }, + { to: "/settings/languages", icon: Globe, labelKey: "languages" }, + { to: "/settings/advanced", icon: Lock, labelKey: "advanced" }, + { to: "/settings/about", icon: Info, labelKey: "about" }, +] as const; export const Route = createFileRoute("/settings")({ component: SettingsLayout, }); function SettingsLayout() { + const { t } = useTranslation("settings"); + return ( -
{t("issue-badges-manage-description")}
diff --git a/js/web/src/routes/settings/badges.tsx b/js/web/src/routes/settings/badges.tsx index 08d2f9b4..fad6892f 100644 --- a/js/web/src/routes/settings/badges.tsx +++ b/js/web/src/routes/settings/badges.tsx @@ -1,4 +1,3 @@ -import { BackLink } from "@/components/settings/back-link"; import { createFileRoute } from "@tanstack/react-router"; import { Check } from "lucide-react"; import { useCallback, useEffect, useRef, useState } from "react"; @@ -162,8 +161,6 @@ function BadgeSelectionManager() { return (
diff --git a/js/web/src/routes/settings/index.tsx b/js/web/src/routes/settings/index.tsx
index 23a2fddd..5ee24e02 100644
--- a/js/web/src/routes/settings/index.tsx
+++ b/js/web/src/routes/settings/index.tsx
@@ -1,132 +1,5 @@
-import { CardMenuSection } from "@/components/ui/card";
-import { createFileRoute, Link } from "@tanstack/react-router";
-import { Globe, Info, Lock, Shield, User2, Video } from "lucide-react";
-import { useTranslation } from "react-i18next";
-import { EMPTY_LOGIN_SEARCH } from "../../lib/login-search";
-import { useSession } from "../../lib/session";
+import { createFileRoute, Navigate } from "@tanstack/react-router";
export const Route = createFileRoute("/settings/")({
- component: SettingsIndex,
+ component: () =>
diff --git a/js/web/src/routes/settings/multistream.tsx b/js/web/src/routes/settings/multistream.tsx index 37ac5a0d..df955e73 100644 --- a/js/web/src/routes/settings/multistream.tsx +++ b/js/web/src/routes/settings/multistream.tsx @@ -1,4 +1,3 @@ -import { BackLink } from "@/components/settings/back-link"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -206,8 +205,6 @@ function MultistreamManager() { return (
diff --git a/js/web/src/routes/settings/privacy.tsx b/js/web/src/routes/settings/privacy.tsx index 8cacfc9b..0c0d783e 100644 --- a/js/web/src/routes/settings/privacy.tsx +++ b/js/web/src/routes/settings/privacy.tsx @@ -1,4 +1,3 @@ -import { BackLink } from "@/components/settings/back-link"; import { Card, CardRow } from "@/components/ui/card"; import { Switch } from "@/components/ui/switch"; import { createFileRoute } from "@tanstack/react-router"; @@ -34,7 +33,6 @@ function PrivacySettings() { return (