Files
full-stack-fastapi-template/frontend/src/routes/_layout/settings.tsx

54 lines
1.6 KiB
TypeScript
Raw Normal View History

import { Container, Heading, Tabs } from "@chakra-ui/react"
2024-04-08 15:49:22 -05:00
import { createFileRoute } from "@tanstack/react-router"
import Appearance from "@/components/UserSettings/Appearance"
import ChangePassword from "@/components/UserSettings/ChangePassword"
import DeleteAccount from "@/components/UserSettings/DeleteAccount"
import UserInformation from "@/components/UserSettings/UserInformation"
import useAuth from "@/hooks/useAuth"
const tabsConfig = [
{ value: "my-profile", title: "My profile", component: UserInformation },
{ value: "password", title: "Password", component: ChangePassword },
{ value: "appearance", title: "Appearance", component: Appearance },
{ value: "danger-zone", title: "Danger zone", component: DeleteAccount },
2024-03-08 14:58:36 +01:00
]
2024-03-17 17:28:45 +01:00
export const Route = createFileRoute("/_layout/settings")({
2024-03-08 14:58:36 +01:00
component: UserSettings,
})
function UserSettings() {
const { user: currentUser } = useAuth()
2024-03-08 14:58:36 +01:00
const finalTabs = currentUser?.is_superuser
? tabsConfig.slice(0, 3)
: tabsConfig
if (!currentUser) {
return null
}
2024-03-08 14:58:36 +01:00
return (
<Container maxW="full">
2024-03-17 17:28:45 +01:00
<Heading size="lg" textAlign={{ base: "center", md: "left" }} py={12}>
2024-03-08 14:58:36 +01:00
User Settings
</Heading>
<Tabs.Root defaultValue="my-profile" variant="subtle">
<Tabs.List>
{finalTabs.map((tab) => (
<Tabs.Trigger key={tab.value} value={tab.value}>
{tab.title}
</Tabs.Trigger>
2024-03-08 14:58:36 +01:00
))}
</Tabs.List>
{finalTabs.map((tab) => (
<Tabs.Content key={tab.value} value={tab.value}>
<tab.component />
</Tabs.Content>
))}
</Tabs.Root>
2024-03-08 14:58:36 +01:00
</Container>
)
}