add: profile index page

This commit is contained in:
Mahyar Khanbolooki
2025-07-17 14:37:40 +03:30
parent 3af9fd8f46
commit ac5eb68444
3 changed files with 80 additions and 17 deletions
+4
View File
@@ -88,6 +88,10 @@ input[type="password"] {
background: #555; background: #555;
} }
.box-shadow-normal {
box-shadow: 0px 2px 16px 0px #00000014;
}
@theme inline { @theme inline {
--color-background: var(--background); --color-background: var(--background);
--color-foreground: var(--foreground); --color-foreground: var(--foreground);
+2 -2
View File
@@ -5,9 +5,9 @@ import { ReactQueryProvider } from '@/components/providers/ReactQueryProvider'
export default function ProfileLayout({ children }: { children: React.ReactNode }) { export default function ProfileLayout({ children }: { children: React.ReactNode }) {
return ( return (
<ReactQueryProvider> <ReactQueryProvider>
<div className="h-full"> <main className="h-full p-4">
{children} {children}
</div> </main>
</ReactQueryProvider> </ReactQueryProvider>
) )
} }
+73 -14
View File
@@ -1,28 +1,87 @@
"use client"; "use client";
import { useProfile } from '@/hooks/auth/useProfile'; import Button from '@/components/button/PrimaryButton';
import { useAuthStore } from '@/zustand/authStore'; // import { useProfile } from '@/hooks/auth/useProfile';
import React, { useEffect } from 'react' // import { useAuthStore } from '@/zustand/authStore';
import { ArrowLeft, Calendar2, CallCalling, Profile, Sms, Verify } from 'iconsax-react';
import Image from 'next/image';
import React from 'react'
type Props = object type Props = object
function ProfileIndex({ }: Props) { function ProfileIndex({ }: Props) {
const isAuthenticated = useAuthStore((state) => state.isAuthenticated); // const isAuthenticated = useAuthStore((state) => state.isAuthenticated);
const { mutate, data, isPending } = useProfile(); // const { mutate, data, isPending } = useProfile();
useEffect(() => { // useEffect(() => {
if (isAuthenticated) { // if (isAuthenticated) {
mutate(); // mutate();
} // }
}, [isAuthenticated]) // // eslint-disable-next-line react-hooks/exhaustive-deps
// }, [isAuthenticated])
return ( return (
<div> <>
{isPending && 'Loading...'} <div className='relative text-center'>
<br /> <div className='font-bold text-sm2 leading-6'>پروفایل کاربری</div>
{data && JSON.stringify(data)} <button className='absolute top-0 left-0'>
<ArrowLeft size={24} className='stroke-foreground' />
</button>
</div> </div>
<div className="mt-9 rounded-container w-full box-shadow-normal py-6 px-4 flex flex-col justify-between">
<div className="">
<div className="flex items-center justify-start gap-4 pb-6 border-b-[1.5px] border-border">
<Image
src={'/assets/images/user-avatar.png'}
className='rounded-full'
alt='user avatar'
width={80}
height={80}
/>
<div className='block'>
<div className='font-medium text-base '>علیرضا عابدزاده</div>
<div className='text-xs text-primary mt-3 inline-flex items-center gap-2'>
<Verify size={16} className='stroke-primary mb-0.5' />
<span>
شناسه کاربری:
</span>
<span>2162165</span>
</div>
</div>
</div>
<div className="grid gap-6 mt-6">
<div className='inline-flex items-center gap-2.5'>
<CallCalling size={16} className='stroke-disabled2 mb-0.5' />
<span className='text-sm2 text-disabled2'>شماره همراه:</span>
<span className='text-sm2'>09010901738</span>
</div>
<div className='inline-flex items-center gap-2.5'>
<Sms size={16} className='stroke-disabled2 mb-0.5' />
<span className='text-sm2 text-disabled2'>ایمیل:</span>
<span className='text-sm2'>alirezaabed@gmail.com</span>
</div>
<div className='inline-flex items-center gap-2.5'>
<Calendar2 size={16} className='stroke-disabled2 mb-0.5' />
<span className='text-sm2 text-disabled2'>تاریخ تولد:</span>
<span className='text-sm2'>1375/5/14</span>
</div>
<div className='inline-flex items-center gap-2.5'>
<Profile size={16} className='stroke-disabled2 mb-0.5' />
<span className='text-sm2 text-disabled2'>جنسیت:</span>
<span className='text-sm2'>آقا</span>
</div>
</div>
</div>
<div className='w-full text-center mt-6'>
<Button>ویرایش اطلاعات</Button>
</div>
</div>
</>
) )
} }