diff --git a/apps/web/app/orgs/[orgslug]/dash/user-account/settings/[subpage]/page.tsx b/apps/web/app/orgs/[orgslug]/dash/user-account/settings/[subpage]/page.tsx index 5df51e86..8a37c4dd 100644 --- a/apps/web/app/orgs/[orgslug]/dash/user-account/settings/[subpage]/page.tsx +++ b/apps/web/app/orgs/[orgslug]/dash/user-account/settings/[subpage]/page.tsx @@ -5,75 +5,111 @@ import UserEditGeneral from '@components/Dashboard/Pages/UserAccount/UserEditGen import UserEditPassword from '@components/Dashboard/Pages/UserAccount/UserEditPassword/UserEditPassword' import Link from 'next/link' import { getUriWithOrg } from '@services/config/config' -import { Info, Lock } from 'lucide-react' +import { Info, Lock, LucideIcon, User } from 'lucide-react' import BreadCrumbs from '@components/Dashboard/Misc/BreadCrumbs' import { useLHSession } from '@components/Contexts/LHSessionContext' +import UserProfile from '@components/Dashboard/Pages/UserAccount/UserProfile/UserProfile'; + +interface User { + username: string; + // Add other user properties as needed +} + +interface Session { + user?: User; + // Add other session properties as needed +} export type SettingsParams = { subpage: string orgslug: string } -function SettingsPage(props: { params: Promise }) { - const params = use(props.params); - const session = useLHSession() as any +type NavigationItem = { + id: string + label: string + icon: LucideIcon + component: React.ComponentType +} + +const navigationItems: NavigationItem[] = [ + { + id: 'general', + label: 'General', + icon: Info, + component: UserEditGeneral + }, + { + id: 'security', + label: 'Password', + icon: Lock, + component: UserEditPassword + }, + { + id: 'profile', + label: 'Profile', + icon: User, + component: UserProfile + } +] + +const SettingsNavigation = ({ + items, + currentPage, + orgslug +}: { + items: NavigationItem[] + currentPage: string + orgslug: string +}) => ( +
+ {items.map((item) => ( + +
+
+ +
{item.label}
+
+
+ + ))} +
+) + +function SettingsPage({ params }: { params: Promise }) { + const { subpage, orgslug } = use(params); + const session = useLHSession() as Session; useEffect(() => {}, [session]) + const CurrentComponent = navigationItems.find(item => item.id === subpage)?.component; + return (
-
+
+ />
Account Settings
-
- -
-
- -
General
-
-
- - -
-
- -
Password
-
-
- -
+
-
+
}) { transition={{ duration: 0.1, type: 'spring', stiffness: 80 }} className="h-full overflow-y-auto" > - {params.subpage == 'general' ? : ''} - {params.subpage == 'security' ? : ''} + {CurrentComponent && }
) diff --git a/apps/web/components/Dashboard/Pages/UserAccount/UserProfile/UserProfile.tsx b/apps/web/components/Dashboard/Pages/UserAccount/UserProfile/UserProfile.tsx new file mode 100644 index 00000000..6b7590d5 --- /dev/null +++ b/apps/web/components/Dashboard/Pages/UserAccount/UserProfile/UserProfile.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +function UserProfile() { + return ( +
UserProfile
+ ) +} + +export default UserProfile \ No newline at end of file