"use client"
import type React from "react"
import { cn } from "@/app/_lib/utils"
import { Dialog, DialogContent, DialogTrigger } from "@/app/_components/ui/dialog"
import { ScrollArea } from "@/app/_components/ui/scroll-area"
import { Separator } from "@/app/_components/ui/separator"
import { Avatar, AvatarFallback, AvatarImage } from "@/app/_components/ui/avatar"
import { IconAdjustmentsHorizontal, IconBell, IconFileExport, IconFileImport, IconUser } from "@tabler/icons-react"
import { ProfileSettings } from "./profile-settings"
import { DialogTitle } from "@radix-ui/react-dialog"
import { useState } from "react"
import NotificationsSetting from "./notification-settings"
import PreferencesSettings from "./preference-settings"
import ImportData from "./import-data"
import { useGetCurrentUserQuery } from "../../dashboard/user-management/_queries/queries"
interface SettingsDialogProps {
trigger: React.ReactNode
defaultTab?: string
open?: boolean
onOpenChange?: (open: boolean) => void
}
interface SettingsTab {
id: string
icon: typeof IconUser
title: string
content: React.ReactNode
}
interface SettingsSection {
title: string
tabs: SettingsTab[]
}
export function SettingsDialog({ trigger, defaultTab = "account", open, onOpenChange }: SettingsDialogProps) {
const { data: user, isPending } = useGetCurrentUserQuery()
const [selectedTab, setSelectedTab] = useState(defaultTab)
// Get user display name
const preferredName = user?.profile?.username || ""
const userEmail = user?.email || ""
const displayName = preferredName || userEmail?.split("@")[0] || "User"
const userAvatar = user?.profile?.avatar || ""
const sections: SettingsSection[] = [
{
title: "Account",
tabs: [
{
id: "account",
icon: IconUser,
title: "My Account",
content: