From 06141dbad0cc392606104155a58f2a699dae3418 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Tue, 31 Mar 2026 01:37:05 +0700 Subject: [PATCH] Refactor Mihomo page to implement tab navigation for overview and proxies - Replaced button-based navigation with a tab component for improved user experience and UI consistency. - Updated state management for the active tab, enhancing the overall functionality of the Mihomo interface. --- web/src/lib/components/ui/tabs/index.ts | 18 +++++++++ .../components/ui/tabs/tabs-content.svelte | 17 ++++++++ .../lib/components/ui/tabs/tabs-list.svelte | 40 +++++++++++++++++++ .../components/ui/tabs/tabs-trigger.svelte | 23 +++++++++++ web/src/lib/components/ui/tabs/tabs.svelte | 19 +++++++++ .../servers/[alias]/mihomo/+page.svelte | 25 ++++-------- 6 files changed, 125 insertions(+), 17 deletions(-) create mode 100644 web/src/lib/components/ui/tabs/index.ts create mode 100644 web/src/lib/components/ui/tabs/tabs-content.svelte create mode 100644 web/src/lib/components/ui/tabs/tabs-list.svelte create mode 100644 web/src/lib/components/ui/tabs/tabs-trigger.svelte create mode 100644 web/src/lib/components/ui/tabs/tabs.svelte diff --git a/web/src/lib/components/ui/tabs/index.ts b/web/src/lib/components/ui/tabs/index.ts new file mode 100644 index 0000000..31267e5 --- /dev/null +++ b/web/src/lib/components/ui/tabs/index.ts @@ -0,0 +1,18 @@ +import Root from "./tabs.svelte"; +import Content from "./tabs-content.svelte"; +import List, { tabsListVariants, type TabsListVariant } from "./tabs-list.svelte"; +import Trigger from "./tabs-trigger.svelte"; + +export { + Root, + Content, + List, + Trigger, + tabsListVariants, + type TabsListVariant, + // + Root as Tabs, + Content as TabsContent, + List as TabsList, + Trigger as TabsTrigger, +}; diff --git a/web/src/lib/components/ui/tabs/tabs-content.svelte b/web/src/lib/components/ui/tabs/tabs-content.svelte new file mode 100644 index 0000000..394ab3e --- /dev/null +++ b/web/src/lib/components/ui/tabs/tabs-content.svelte @@ -0,0 +1,17 @@ + + + diff --git a/web/src/lib/components/ui/tabs/tabs-list.svelte b/web/src/lib/components/ui/tabs/tabs-list.svelte new file mode 100644 index 0000000..18dce00 --- /dev/null +++ b/web/src/lib/components/ui/tabs/tabs-list.svelte @@ -0,0 +1,40 @@ + + + + + diff --git a/web/src/lib/components/ui/tabs/tabs-trigger.svelte b/web/src/lib/components/ui/tabs/tabs-trigger.svelte new file mode 100644 index 0000000..882101c --- /dev/null +++ b/web/src/lib/components/ui/tabs/tabs-trigger.svelte @@ -0,0 +1,23 @@ + + + diff --git a/web/src/lib/components/ui/tabs/tabs.svelte b/web/src/lib/components/ui/tabs/tabs.svelte new file mode 100644 index 0000000..bfb900d --- /dev/null +++ b/web/src/lib/components/ui/tabs/tabs.svelte @@ -0,0 +1,19 @@ + + + diff --git a/web/src/routes/servers/[alias]/mihomo/+page.svelte b/web/src/routes/servers/[alias]/mihomo/+page.svelte index 69b6baa..13b7295 100644 --- a/web/src/routes/servers/[alias]/mihomo/+page.svelte +++ b/web/src/routes/servers/[alias]/mihomo/+page.svelte @@ -19,13 +19,14 @@ import * as Card from '$lib/components/ui/card/index.js'; import { Button } from '$lib/components/ui/button/index.js'; import { Badge } from '$lib/components/ui/badge/index.js'; + import * as Tabs from '$lib/components/ui/tabs/index.js'; import DataQueryState from '$lib/components/fleet/data-query-state.svelte'; import MihomoOverviewCharts from '$lib/components/mihomo/mihomo-overview-charts.svelte'; import { Skeleton } from '$lib/components/ui/skeleton/index.js'; const alias = $derived(page.params.alias ?? ''); - let tab = $state<'overview' | 'proxies'>('overview'); + let tab = $state('overview'); let loadingMeta = $state(true); let metaErr = $state(null); let meta = $state(null); @@ -411,22 +412,12 @@

Mihomo

Обзор и прокси (external-controller)

-
- - -
+ + + Обзор + Прокси + +