"use client"; import {Tabs, TabsContent, TabsList, TabsTrigger} from "@/components/ui/tabs"; import {useEffect, useState} from "react"; import {useRouter, useSearchParams} from "next/navigation"; import {Setting} from "@/db/schema/01_setting"; import {SettingsEmailSection} from "@/features/settings/email-section"; import {SettingsStorageSection} from "@/features/settings/storage-section"; import {StorageChannelWith} from "@/db/schema/12_storage-channel"; import {AlarmClock, MailboxIcon, Save, UserCircle} from "lucide-react"; import { SettingsNotificationSection } from "@/features/settings/notification-section"; import {NotificationChannelWith} from "@/db/schema/09_notification-channel"; import {SettingsAvatarSection} from "@/features/settings/avatar-section"; export type SettingsTabsProps = { settings: Setting storageChannels: StorageChannelWith[], notificationChannels: NotificationChannelWith[]; }; export const SettingsTabs = ({settings, storageChannels, notificationChannels}: SettingsTabsProps) => { const router = useRouter(); const searchParams = useSearchParams(); const [tab, setTab] = useState(() => searchParams.get("tab") ?? "email"); useEffect(() => { const newTab = searchParams.get("tab") ?? "email"; setTab(newTab); }, [searchParams]); const handleChangeTab = (value: string) => { router.push(`?tab=${value}`); }; const tabs = [ { name: 'System Email', value: 'email', icon: MailboxIcon, content: ( ) }, { name: 'Storage', value: 'storage', icon: Save, content: ( ) }, { name: 'Notification', value: 'notification', icon: AlarmClock, content: ( ) }, { name: 'Avatar', value: 'avatar', icon: UserCircle, content: ( ) } ] return (
{tabs.map(({icon: Icon, name, value}) => ( {name} ))} {tabs.map(tab => ( {tab.content} ))}
); };