mirror of
https://github.com/khoaliber/dockhand.git
synced 2026-03-09 21:29:04 +00:00
Initial commit
This commit is contained in:
129
routes/settings/+page.svelte
Normal file
129
routes/settings/+page.svelte
Normal file
@@ -0,0 +1,129 @@
|
||||
<script lang="ts">
|
||||
import { page } from '$app/stores';
|
||||
import { goto } from '$app/navigation';
|
||||
import * as Tabs from '$lib/components/ui/tabs';
|
||||
import {
|
||||
Settings,
|
||||
Globe,
|
||||
Download,
|
||||
Layers,
|
||||
Bell,
|
||||
Crown,
|
||||
Users,
|
||||
Info,
|
||||
GitBranch
|
||||
} from 'lucide-svelte';
|
||||
import PageHeader from '$lib/components/PageHeader.svelte';
|
||||
|
||||
// Import tab components
|
||||
import GeneralTab from './general/GeneralTab.svelte';
|
||||
import EnvironmentsTab from './environments/EnvironmentsTab.svelte';
|
||||
import RegistriesTab from './registries/RegistriesTab.svelte';
|
||||
import GitTab from './git/GitTab.svelte';
|
||||
import ConfigSetsTab from './config-sets/ConfigSetsTab.svelte';
|
||||
import NotificationsTab from './notifications/NotificationsTab.svelte';
|
||||
import AuthTab from './auth/AuthTab.svelte';
|
||||
import LicenseTab from './license/LicenseTab.svelte';
|
||||
import AboutTab from './about/AboutTab.svelte';
|
||||
|
||||
// Tab state from URL
|
||||
let activeTab = $derived($page.url.searchParams.get('tab') || 'general');
|
||||
let editEnvId = $derived($page.url.searchParams.get('edit'));
|
||||
let newEnv = $derived($page.url.searchParams.get('new') === 'true');
|
||||
|
||||
function handleTabChange(tab: string) {
|
||||
goto(`/settings?tab=${tab}`, { replaceState: true, noScroll: true });
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="flex-1 min-h-0 flex flex-col gap-3 overflow-hidden">
|
||||
<div class="flex flex-wrap justify-between items-center gap-3">
|
||||
<PageHeader icon={Settings} title="Settings" showConnection={false} />
|
||||
</div>
|
||||
|
||||
<Tabs.Root value={activeTab} onValueChange={handleTabChange} class="w-full flex-1 min-h-0 flex flex-col">
|
||||
<Tabs.List class="w-full flex flex-wrap h-auto gap-1 p-1">
|
||||
<Tabs.Trigger value="general" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<Settings class="w-4 h-4" />
|
||||
General
|
||||
</Tabs.Trigger>
|
||||
<Tabs.Trigger value="environments" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<Globe class="w-4 h-4" />
|
||||
Environments
|
||||
</Tabs.Trigger>
|
||||
<Tabs.Trigger value="registries" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<Download class="w-4 h-4" />
|
||||
Registries
|
||||
</Tabs.Trigger>
|
||||
<Tabs.Trigger value="git" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<GitBranch class="w-4 h-4" />
|
||||
Git
|
||||
</Tabs.Trigger>
|
||||
<Tabs.Trigger value="config-sets" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<Layers class="w-4 h-4" />
|
||||
Config sets
|
||||
</Tabs.Trigger>
|
||||
<Tabs.Trigger value="notifications" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<Bell class="w-4 h-4" />
|
||||
Notifications
|
||||
</Tabs.Trigger>
|
||||
<Tabs.Trigger value="auth" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<Users class="w-4 h-4" />
|
||||
Authentication
|
||||
</Tabs.Trigger>
|
||||
<Tabs.Trigger value="license" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<Crown class="w-4 h-4" />
|
||||
License
|
||||
</Tabs.Trigger>
|
||||
<Tabs.Trigger value="about" class="flex-1 flex items-center justify-center gap-1.5">
|
||||
<Info class="w-4 h-4" />
|
||||
About
|
||||
</Tabs.Trigger>
|
||||
</Tabs.List>
|
||||
|
||||
<!-- General Tab -->
|
||||
<Tabs.Content value="general" class="flex-1 min-h-0 overflow-y-auto">
|
||||
<GeneralTab />
|
||||
</Tabs.Content>
|
||||
|
||||
<!-- Environments Tab -->
|
||||
<Tabs.Content value="environments" class="flex-1 min-h-0 overflow-y-auto">
|
||||
<EnvironmentsTab {editEnvId} {newEnv} />
|
||||
</Tabs.Content>
|
||||
|
||||
<!-- Registries Tab -->
|
||||
<Tabs.Content value="registries" class="flex-1 min-h-0 overflow-y-auto">
|
||||
<RegistriesTab />
|
||||
</Tabs.Content>
|
||||
|
||||
<!-- Git Tab -->
|
||||
<Tabs.Content value="git" class="flex-1 min-h-0 overflow-y-auto">
|
||||
<GitTab />
|
||||
</Tabs.Content>
|
||||
|
||||
<!-- Config Sets Tab -->
|
||||
<Tabs.Content value="config-sets" class="flex-1 min-h-0 overflow-y-auto">
|
||||
<ConfigSetsTab />
|
||||
</Tabs.Content>
|
||||
|
||||
<!-- Notifications Tab -->
|
||||
<Tabs.Content value="notifications" class="flex-1 min-h-0 overflow-y-auto">
|
||||
<NotificationsTab />
|
||||
</Tabs.Content>
|
||||
|
||||
<!-- Auth Tab -->
|
||||
<Tabs.Content value="auth" class="flex-1 min-h-0 flex flex-col">
|
||||
<AuthTab onTabChange={handleTabChange} />
|
||||
</Tabs.Content>
|
||||
|
||||
<!-- License Tab -->
|
||||
<Tabs.Content value="license" class="flex-1 min-h-0 overflow-y-auto">
|
||||
<LicenseTab />
|
||||
</Tabs.Content>
|
||||
|
||||
<!-- About Tab -->
|
||||
<Tabs.Content value="about" class="flex-1 min-h-0 overflow-y-auto">
|
||||
<AboutTab />
|
||||
</Tabs.Content>
|
||||
</Tabs.Root>
|
||||
</div>
|
||||
Reference in New Issue
Block a user