Appointment Details
-
-
+
+
-
- Appointment Information
-
-
+
+ Appointment Information
+
+ {appointment.status}
+
+
-
-
- {format(new Date(appointment.appointmentDate!), "PPPP")}
-
-
-
- {format(new Date(appointment.appointmentDate!), "p")}
-
-
- {appointment.appointmentType === "video-consulting" ? (
-
- ) : (
-
- )}
-
{appointment.appointmentType}
+
+
+
+ {format(new Date(appointment.appointmentDate!), "PPPP")}
+
+
+
+ {appointment.slot?.startTime} - {appointment.slot?.endTime}
+
+
+ {appointment.appointmentType === "video-consulting" ? (
+
+ ) : (
+
+ )}
+ {appointment.appointmentType}
+
+
-
-
- Reason
+
+
+ Reason for Visit
-
{appointment.reason}
+
{appointment.reason}
+
-
-
- Notes
-
+
+ Edit
+
{isEditingNote ? (
-
-
setNewNote(e.target.value)} className="flex-grow" />
-
-
+
) : (
-
{appointment.notes}
+
{appointment.notes || "No notes added yet."}
)}
+
+ {(appointment.status === AppointmentStatus.CONFIRMED ||
+ appointment.status === AppointmentStatus.PENDING) &&
+ isCancellable() && (
+ setCancelModelOpen(true)}>
+ Cancel Appointment
+
+ )}
+
@@ -188,57 +209,33 @@ const Page = () => {
{appointment.doctor?.name}
-
{appointment.doctor?.qualifications?.join(", ")}
+
{appointment.doctor?.qualifications?.join(", ")}
+
- {appointment.doctor?.email}
+ {appointment.doctor?.email}
-
-
{appointment.doctor?.phone}
-
-
-
-
-
-
-
- Slot Information
-
-
-
-
-
-
Start Time
-
{appointment.slot?.startTime}
-
-
-
-
-
-
End Time
-
{appointment.slot?.endTime}
+
+
{appointment.doctor?.phone}
-
- {(appointment.status === AppointmentStatus.CONFIRMED ||
- appointment.status === AppointmentStatus.PENDING) &&
- isCancellable() && (
-
- )}
-
{
handleCancelAppointment={handleCancelAppointment}
/>
- );
-};
-
-export default Page;
+ )
+}
\ No newline at end of file
diff --git a/client/app/(patient)/appointments/page.tsx b/client/app/(patient)/appointments/page.tsx
index 512fb28b..07224c16 100644
--- a/client/app/(patient)/appointments/page.tsx
+++ b/client/app/(patient)/appointments/page.tsx
@@ -1,95 +1,98 @@
-"use client";
+'use client'
-import Pagination from "@/components/navigation/Pagination";
-import { useGetAppointmentsPatient } from "@/lib/hooks/appointment/useAppointmentPatient";
-import GetStatusBadge from "@/components/page-components/doctor/appointment/GetStatusBadge";
-import { Card, CardContent, CardHeader, CardTitle, CardFooter } from "@/components/ui/card";
-import { ButtonV2 } from "@/components/common/ButtonV2";
-import { useRouter } from "next/navigation";
-import { format } from "date-fns";
-import { Calendar, FileText, Video, User } from "lucide-react";
-import { useState } from "react";
+import { useState } from "react"
+import { useRouter } from "next/navigation"
+import { format } from "date-fns"
+import { FileText, Video, User } from "lucide-react"
+import { useGetAppointmentsPatient } from "@/lib/hooks/appointment/useAppointmentPatient"
+import Pagination from "@/components/navigation/Pagination"
+import GetStatusBadge from "@/components/page-components/doctor/appointment/GetStatusBadge"
+import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
+import { Skeleton } from "@/components/ui/skeleton"
+import { ButtonV2 } from "@/components/button/ButtonV2"
-const AppointmentsPageSection = ({ searchParams }: { searchParams: { page: number } }) => {
- const page = searchParams.page || 1;
- const [currentPage, setCurrentPage] = useState(page);
- const { data, isLoading } = useGetAppointmentsPatient(page-1, 4);
- const router = useRouter();
+export default function AppointmentsPageSection({ searchParams }: { searchParams: { page: number } }) {
+ const page = searchParams.page || 1
+ const [currentPage, setCurrentPage] = useState(page)
+ const { data, isLoading } = useGetAppointmentsPatient(page - 1, 4)
+ const router = useRouter()
- const handlePageChange = (pageIndex: number) => {
- if (pageIndex > data?.totalPages! || pageIndex < 1) return null;
- router.replace(`/appointments?page=${pageIndex}`);
- setCurrentPage(pageIndex);
- };
+ const handlePageChange = (pageIndex: number) => {
+ if (pageIndex > data?.totalPages! || pageIndex < 1) return null
+ router.replace(`/appointments?page=${pageIndex}`)
+ setCurrentPage(pageIndex)
+ }
- const handleViewDetails = (appointmentId: string) => {
- router.push(`/appointments/${appointmentId}`);
- };
+ const handleViewDetails = (appointmentId: string) => {
+ router.push(`/appointments/${appointmentId}`)
+ }
- return (
-
-
-
My Appointments
-
- {data?.items.map((appointment) => (
-
-
-
-
-
-
- {format(new Date(appointment.appointmentDate!), "dd/MM/yy")}
-
-
-
-
-
-
-
-
- {appointment.appointmentType === "video-consulting" ? (
-
- ) : (
-
- )}
-
{appointment.appointmentType}
-
-
-
-
{appointment.reason}
-
-
-
-
- handleViewDetails(appointment._id!)}
- className="text-green-400 border-green-500"
- >
- View Details
-
-
-
- ))}
-
-
- {!isLoading && (
-
- )}
-
-
-
- );
-};
-
-export default AppointmentsPageSection;
+ return (
+
+
My Appointments
+ {isLoading ? (
+
+ {[...Array(4)].map((_, index) => (
+
+
+
+
+
+
+
+
+
+
+
+
+ ))}
+
+ ) : (
+
+ {data?.items.map((appointment) => (
+
+
+
+ Appointment on {format(new Date(appointment.appointmentDate!), "MMMM d, yyyy")}
+
+
+
+
+
+
+ {appointment.appointmentType === "video-consulting" ? (
+
+ ) : (
+
+ )}
+ {appointment.appointmentType}
+
+
+
+ {appointment.reason}
+
+
+
+
+ handleViewDetails(appointment._id!)} variant="ringHover" className="w-full">
+ View Details
+
+
+
+ ))}
+
+ )}
+ {!isLoading && (
+
+ )}
+
+ )
+}
\ No newline at end of file
diff --git a/client/app/(patient)/chats/@chatList/page.tsx b/client/app/(patient)/chats/@chatList/page.tsx
index f162de75..98e1734d 100644
--- a/client/app/(patient)/chats/@chatList/page.tsx
+++ b/client/app/(patient)/chats/@chatList/page.tsx
@@ -1,5 +1,5 @@
'use client'
-import { ButtonV2 } from "@/components/common/ButtonV2";
+import { ButtonV2 } from "@/components/button/ButtonV2";
import NewChatModal, { ChatModelUser } from "@/components/models/chat/AddChatModel";
import ChatList from "@/components/page-components/chat/ChatList"
import { toast } from "@/components/ui/use-toast";
diff --git a/client/app/(patient)/new-appointment/cancel/[id]/page.tsx b/client/app/(patient)/new-appointment/cancel/[id]/page.tsx
index f9d4b5b6..e5b4166d 100644
--- a/client/app/(patient)/new-appointment/cancel/[id]/page.tsx
+++ b/client/app/(patient)/new-appointment/cancel/[id]/page.tsx
@@ -4,7 +4,7 @@ import Image from "next/image";
import Link from "next/link";
import { useParams } from "next/navigation";
import { XCircle } from "lucide-react";
-import { ButtonV2 } from "@/components/common/ButtonV2";
+import { ButtonV2 } from "@/components/button/ButtonV2";
import { useEffect, useState } from "react";
import { BreadcrumbCollapsed } from "@/components/navigation/BreadCrumbs";
diff --git a/client/app/(patient)/profile/page.tsx b/client/app/(patient)/profile/page.tsx
index 64a5c59b..eb483bc5 100644
--- a/client/app/(patient)/profile/page.tsx
+++ b/client/app/(patient)/profile/page.tsx
@@ -4,7 +4,7 @@ import { Skeleton } from "@/components/ui/skeleton";
import Image from "next/image";
import { useState } from "react";
import { useGetPatientProfile } from "@/lib/hooks/patient/usePatient";
-import { ButtonV2 } from "@/components/common/ButtonV2";
+import { ButtonV2 } from "@/components/button/ButtonV2";
import dynamic from "next/dynamic";
import Loading from "@/components/skeletons/Loader";
diff --git a/client/app/(patient)/signin/reset-password/page.tsx b/client/app/(patient)/signin/reset-password/page.tsx
index 07fcfa77..5b87e76b 100644
--- a/client/app/(patient)/signin/reset-password/page.tsx
+++ b/client/app/(patient)/signin/reset-password/page.tsx
@@ -6,7 +6,7 @@ import { z } from "zod";
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "@/components/ui/card";
import CustomFormField from "@/components/common/CustomFormField";
import { FormFieldType } from "@/types/fromTypes";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { useUpdatePassword } from "@/lib/hooks/patient/usePatientAuth";
import { Form } from "@/components/ui/form";
import { useAuth } from "@/lib/hooks/useAuth";
diff --git a/client/app/doctor/@auth/reset-password/page.tsx b/client/app/doctor/@auth/reset-password/page.tsx
index 5e0c5f46..b7b72c3d 100644
--- a/client/app/doctor/@auth/reset-password/page.tsx
+++ b/client/app/doctor/@auth/reset-password/page.tsx
@@ -6,7 +6,7 @@ import { z } from "zod";
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "@/components/ui/card";
import CustomFormField from "@/components/common/CustomFormField";
import { FormFieldType } from "@/types/fromTypes";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { useUpdatePassword } from "@/lib/hooks/patient/usePatientAuth";
import { Form } from "@/components/ui/form";
import { useAuth } from "@/lib/hooks/useAuth";
diff --git a/client/app/doctor/appointments/[id]/page.tsx b/client/app/doctor/appointments/[id]/page.tsx
index 4e95c43d..bd825362 100644
--- a/client/app/doctor/appointments/[id]/page.tsx
+++ b/client/app/doctor/appointments/[id]/page.tsx
@@ -12,7 +12,7 @@ import AppointmentCancellationModal from '@/components/models/appointment/Confir
import { Calendar, Clock, FileText, Video, User, Phone, AlertCircle } from 'lucide-react'
import { format } from 'date-fns'
import { useState } from 'react'
-import { ButtonV2 } from '@/components/common/ButtonV2'
+import { ButtonV2 } from '@/components/button/ButtonV2'
export default function AppointmentDetailsPage() {
const params = useParams()
diff --git a/client/components/common/ButtonV2.tsx b/client/components/button/ButtonV2.tsx
similarity index 100%
rename from client/components/common/ButtonV2.tsx
rename to client/components/button/ButtonV2.tsx
diff --git a/client/components/button/NotificationButtonDoctor.tsx b/client/components/button/NotificationButtonDoctor.tsx
index 59086443..c2247a9b 100644
--- a/client/components/button/NotificationButtonDoctor.tsx
+++ b/client/components/button/NotificationButtonDoctor.tsx
@@ -1,7 +1,7 @@
import React, { forwardRef, useState } from "react";
import { Bell } from "lucide-react";
import { Badge } from "@/components/ui/badge";
-import { ButtonV2 } from "@/components/common/ButtonV2";
+import { ButtonV2 } from "@/components/button/ButtonV2";
import NotificationModal from "@/components/models/NotificationModel";
import {
useGetAllDoctorNotifications,
diff --git a/client/components/button/NotificationButtonPatient.tsx b/client/components/button/NotificationButtonPatient.tsx
index 854ccc91..1cfbd816 100644
--- a/client/components/button/NotificationButtonPatient.tsx
+++ b/client/components/button/NotificationButtonPatient.tsx
@@ -2,7 +2,7 @@
import { Bell } from "lucide-react";
import { Badge } from "@/components/ui/badge";
-import { ButtonV2 } from "@/components/common/ButtonV2";
+import { ButtonV2 } from "@/components/button/ButtonV2";
import { useState } from "react";
import { useGetAllPatientNotifications, useClearPatientNotification, useClearMultiplePatientNotifications } from "@/lib/hooks/notification/useNotificationPatient";
import { INotification } from "@/types";
diff --git a/client/components/common/SubmitButton.tsx b/client/components/button/SubmitButton.tsx
similarity index 100%
rename from client/components/common/SubmitButton.tsx
rename to client/components/button/SubmitButton.tsx
diff --git a/client/components/forms/admin/SigninForm.tsx b/client/components/forms/admin/SigninForm.tsx
index 3f5a0cf4..e5e33368 100644
--- a/client/components/forms/admin/SigninForm.tsx
+++ b/client/components/forms/admin/SigninForm.tsx
@@ -6,7 +6,7 @@ import { useForm } from "react-hook-form";
import { z } from "zod";
import { Form } from "@/components/ui/form";
import CustomFormField from "@/components/common/CustomFormField";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { signinFormValidation } from "@/components/forms/actions/adminValidation";
import { FormFieldType } from "@/types/fromTypes";
import { useSigninAdmin } from "@/lib/hooks/admin/useAdminAuth";
diff --git a/client/components/forms/doctor/ForgetPasswordForm.tsx b/client/components/forms/doctor/ForgetPasswordForm.tsx
index a00b5aa4..ae4506b6 100644
--- a/client/components/forms/doctor/ForgetPasswordForm.tsx
+++ b/client/components/forms/doctor/ForgetPasswordForm.tsx
@@ -14,7 +14,7 @@ import {
} from "@/components/ui/alert-dialog";
import { Button } from "@/components/ui/button";
import { Form } from "@/components/ui/form";
-import SubmitButton from "../../common/SubmitButton";
+import SubmitButton from "../../button/SubmitButton";
import CustomFormField from "../../common/CustomFormField";
import { FormFieldType } from "@/types/fromTypes";
import { toast } from "../../ui/use-toast";
diff --git a/client/components/forms/doctor/SigninForm.tsx b/client/components/forms/doctor/SigninForm.tsx
index e75eacdd..bb7a6eb7 100644
--- a/client/components/forms/doctor/SigninForm.tsx
+++ b/client/components/forms/doctor/SigninForm.tsx
@@ -5,7 +5,7 @@ import { useForm } from "react-hook-form";
import { z } from "zod";
import { Form, FormMessage } from "@/components/ui/form";
import CustomFormField from "@/components/common/CustomFormField";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { signinFormValidation } from "@/components/forms/actions/adminValidation";
import { FormFieldType } from "@/types/fromTypes";
import Link from "next/link";
diff --git a/client/components/forms/doctor/SignupForm.tsx b/client/components/forms/doctor/SignupForm.tsx
index 8c3884ca..c59e462b 100644
--- a/client/components/forms/doctor/SignupForm.tsx
+++ b/client/components/forms/doctor/SignupForm.tsx
@@ -2,16 +2,15 @@
import { useState } from "react";
import { zodResolver } from "@hookform/resolvers/zod";
-import { Controller, useFieldArray, useForm } from "react-hook-form";
+import { useForm } from "react-hook-form";
import { z } from "zod";
import { Form, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import CustomFormField from "@/components/common/CustomFormField";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { FormFieldType } from "@/types/fromTypes";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { useToast } from "@/components/ui/use-toast";
-import { Button } from "@/components/ui/button";
import { useSignUpDoctor, useUpdateProfileImageDoctor } from "@/lib/hooks/doctor/useDoctorAuth";
import useCrop from "@/lib/hooks/useCrop";
import CropImage from "@/components/common/CropImage";
@@ -19,7 +18,8 @@ import getCroppedImg from "@/lib/utils/cropImage";
import { Input } from "@/components/ui/input";
import { getPresignedUrlDoctor } from "@/lib/api/doctor/authenticationRoutes";
import axios from "axios";
-import { PlusCircle, X } from "lucide-react";
+import { DoctorDegrees } from "@/constants";
+import { MultiSelect } from "@/components/ui/multi-select"
const ALLOWED_FILE_TYPES = ["image/jpeg", "image/png"];
const MAX_FILE_SIZE = 5 * 1024 * 1024;
@@ -101,15 +101,10 @@ const SignUpForm = () => {
name: "",
email: "",
confirmPassword: "",
- qualifications: [""],
+ qualifications: [],
},
});
- const { fields, append, remove } = useFieldArray({
- control: form.control,
- name: "qualifications" as never,
- });
-
const onSubmit = async (formData: FormValues) => {
setError("");
setLoading(true);
@@ -290,46 +285,16 @@ const SignUpForm = () => {
(
+ render={({ field }) => (
Qualifications *
-
- {fields.map((field, index) => (
-
- (
-
- )}
- />
-
-
- ))}
-
-
+ ({ label: degree, value: degree }))}
+ placeholder="Select qualifications"
+ className="w-full"
+ {...field}
+ onValueChange={(value) => field.onChange(value)}
+ />
)}
diff --git a/client/components/forms/patient/AppointmentForm.tsx b/client/components/forms/patient/AppointmentForm.tsx
index 798505d0..4d0fff2b 100644
--- a/client/components/forms/patient/AppointmentForm.tsx
+++ b/client/components/forms/patient/AppointmentForm.tsx
@@ -5,7 +5,7 @@ import { useForm } from "react-hook-form";
import { z } from "zod";
import { Form } from "@/components/ui/form";
import CustomFormField from "@/components/common/CustomFormField";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { appointmentFormValidation } from "@/components/forms/actions/userValidation";
import { SelectItem } from "@/components/ui/select";
import Image from "next/image";
diff --git a/client/components/forms/patient/OtpForms.tsx b/client/components/forms/patient/OtpForms.tsx
index 1ab3cf25..f864cbd1 100644
--- a/client/components/forms/patient/OtpForms.tsx
+++ b/client/components/forms/patient/OtpForms.tsx
@@ -4,7 +4,7 @@ import { FormEvent } from "react";
import { InputOTP, InputOTPGroup, InputOTPSlot } from "@/components/ui/input-otp";
import { Otptimer } from "otp-timer-ts";
import { OtpFromProps } from "@/types/fromTypes";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
export default function OtpVerificationSection({
handleVerify,
diff --git a/client/components/forms/patient/RegistrationForm.tsx b/client/components/forms/patient/RegistrationForm.tsx
index 65520da4..15699185 100644
--- a/client/components/forms/patient/RegistrationForm.tsx
+++ b/client/components/forms/patient/RegistrationForm.tsx
@@ -6,7 +6,7 @@ import { useForm } from "react-hook-form";
import { z } from "zod";
import { Form, FormControl } from "@/components/ui/form";
import CustomFormField from "@/components/common/CustomFormField";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { registerFormValidation } from "@/components/forms/actions/userValidation";
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
import { Label } from "@radix-ui/react-label";
diff --git a/client/components/forms/patient/SigninForm.tsx b/client/components/forms/patient/SigninForm.tsx
index 249357b8..69921b0b 100644
--- a/client/components/forms/patient/SigninForm.tsx
+++ b/client/components/forms/patient/SigninForm.tsx
@@ -6,7 +6,7 @@ import { useForm } from "react-hook-form";
import { z } from "zod";
import { Form } from "@/components/ui/form";
import CustomFormField from "@/components/common/CustomFormField";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { signinFormValidation } from "@/components/forms/actions/userValidation";
import Link from "next/link";
import { FormFieldType } from "@/types/fromTypes";
diff --git a/client/components/forms/patient/SignupForm.tsx b/client/components/forms/patient/SignupForm.tsx
index ed761716..da60fbe9 100644
--- a/client/components/forms/patient/SignupForm.tsx
+++ b/client/components/forms/patient/SignupForm.tsx
@@ -6,7 +6,7 @@ import { useForm } from "react-hook-form";
import { z } from "zod";
import { Form } from "@/components/ui/form";
import CustomFormField from "@/components/common/CustomFormField";
-import SubmitButton from "@/components/common/SubmitButton";
+import SubmitButton from "@/components/button/SubmitButton";
import { signupFormValidation } from "@/components/forms/actions/userValidation";
import { FormFieldType } from "@/types/fromTypes";
import Link from "next/link";
diff --git a/client/components/layout/NavBar.tsx b/client/components/layout/NavBar.tsx
index cd99afda..a60de849 100644
--- a/client/components/layout/NavBar.tsx
+++ b/client/components/layout/NavBar.tsx
@@ -20,7 +20,7 @@ import { useLogoutMutation } from "@/lib/hooks/patient/usePatientAuth";
import { toast } from "../ui/use-toast";
import { useState } from "react";
import LogoutModel from "../models/LogoutModel";
-import { ButtonV2 } from "../common/ButtonV2";
+import { ButtonV2 } from "../button/ButtonV2";
import NotificationButtonPatient from "../button/NotificationButtonPatient";
export const NavBar = () => {
diff --git a/client/components/models/NotificationModel.tsx b/client/components/models/NotificationModel.tsx
index 1a5c32a7..b4168188 100644
--- a/client/components/models/NotificationModel.tsx
+++ b/client/components/models/NotificationModel.tsx
@@ -14,7 +14,7 @@ import { Card, CardContent } from "@/components/ui/card";
import { INotification } from "@/types";
import getNotificationDetails from "@/lib/utils/getNotificationDetails";
import { XIcon, Trash2Icon } from "lucide-react";
-import { ButtonV2 } from "../common/ButtonV2";
+import { ButtonV2 } from "../button/ButtonV2";
import Link from "next/link";
type Props = {
diff --git a/client/components/models/patient/ForgetPasswordModel.tsx b/client/components/models/patient/ForgetPasswordModel.tsx
index a6e476f9..3ca2ca26 100644
--- a/client/components/models/patient/ForgetPasswordModel.tsx
+++ b/client/components/models/patient/ForgetPasswordModel.tsx
@@ -14,7 +14,7 @@ import {
} from "@/components/ui/alert-dialog";
import { Button } from "@/components/ui/button";
import { Form } from "@/components/ui/form";
-import SubmitButton from "../../common/SubmitButton";
+import SubmitButton from "../../button/SubmitButton";
import CustomFormField from "../../common/CustomFormField";
import { FormFieldType } from "@/types/fromTypes";
import { useForgetPassword } from "@/lib/hooks/patient/usePatientAuth";
diff --git a/client/components/models/patient/UpdateProfilePatient.tsx b/client/components/models/patient/UpdateProfilePatient.tsx
index 216713bf..f720eb22 100644
--- a/client/components/models/patient/UpdateProfilePatient.tsx
+++ b/client/components/models/patient/UpdateProfilePatient.tsx
@@ -7,7 +7,7 @@ import { useForm } from "react-hook-form";
import { z } from "zod";
import { updateProfileFormValidation } from "@/components/forms/actions/userValidation";
import { zodResolver } from "@hookform/resolvers/zod";
-import SubmitButton from "../../common/SubmitButton";
+import SubmitButton from "../../button/SubmitButton";
import { IPatient } from "@/types";
import CustomFormField from "../../common/CustomFormField";
import { FormFieldType } from "@/types/fromTypes";
diff --git a/client/components/models/patient/UploadProfileModel.tsx b/client/components/models/patient/UploadProfileModel.tsx
index a3a8535e..450ea6ef 100644
--- a/client/components/models/patient/UploadProfileModel.tsx
+++ b/client/components/models/patient/UploadProfileModel.tsx
@@ -7,7 +7,7 @@ import { Form, FormLabel } from "../../ui/form";
import { useForm, SubmitHandler } from "react-hook-form";
import { z } from "zod";
import { zodResolver } from "@hookform/resolvers/zod";
-import SubmitButton from "../../common/SubmitButton";
+import SubmitButton from "../../button/SubmitButton";
import {IPatient} from "@/types";
import { Input } from "../../ui/input";
import { toast } from "../../ui/use-toast";
diff --git a/client/components/page-components/chat/ChatList.tsx b/client/components/page-components/chat/ChatList.tsx
index b96278d2..0a466e4d 100644
--- a/client/components/page-components/chat/ChatList.tsx
+++ b/client/components/page-components/chat/ChatList.tsx
@@ -6,7 +6,7 @@ import { PlusCircle } from "lucide-react"
import { IChat } from "@/types"
import { getSenderData } from './getUserData'
import ChatListSkeleton from "@/components/skeletons/ChatList"
-import { ButtonV2 } from "@/components/common/ButtonV2"
+import { ButtonV2 } from "@/components/button/ButtonV2"
interface ChatListProps {
chats: IChat[];
diff --git a/client/components/page-components/chat/ChatSection.tsx b/client/components/page-components/chat/ChatSection.tsx
index 410a8652..f9c1ddd8 100644
--- a/client/components/page-components/chat/ChatSection.tsx
+++ b/client/components/page-components/chat/ChatSection.tsx
@@ -10,7 +10,7 @@ import { Spinner } from "@/components/skeletons/spinner"
import { getReceiverData, getSenderData } from "./getUserData"
import dynamic from 'next/dynamic'
import { EmojiClickData, Theme } from 'emoji-picker-react'
-import { ButtonV2 } from "@/components/common/ButtonV2"
+import { ButtonV2 } from "@/components/button/ButtonV2"
import Messages from "./Messages"
import { useQueryClient } from "@tanstack/react-query"
diff --git a/client/components/page-components/chat/NotAuthenticated.tsx b/client/components/page-components/chat/NotAuthenticated.tsx
index 59942ff5..a1199c8e 100644
--- a/client/components/page-components/chat/NotAuthenticated.tsx
+++ b/client/components/page-components/chat/NotAuthenticated.tsx
@@ -1,4 +1,4 @@
-import { ButtonV2 } from "@/components/common/ButtonV2"
+import { ButtonV2 } from "@/components/button/ButtonV2"
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
import { LogIn } from "lucide-react"
import Link from "next/link"
diff --git a/client/components/page-components/landing/home/ImageSlider.tsx b/client/components/page-components/landing/home/ImageSlider.tsx
index 9184f513..5a8b84db 100644
--- a/client/components/page-components/landing/home/ImageSlider.tsx
+++ b/client/components/page-components/landing/home/ImageSlider.tsx
@@ -4,7 +4,7 @@ import React from "react";
import { ImagesSlider } from "@/components/ui/images-slider";
import { SliderImages } from "@/constants";
import { useAuth } from "@/lib/hooks/useAuth";
-import { ButtonV2 } from "@/components/common/ButtonV2";
+import { ButtonV2 } from "@/components/button/ButtonV2";
const ImageSlider = () => {
const { patientToken } = useAuth();
diff --git a/client/components/page-components/patient/profile/NavSection.tsx b/client/components/page-components/patient/profile/NavSection.tsx
index 9fd01b1c..9fbcf931 100644
--- a/client/components/page-components/patient/profile/NavSection.tsx
+++ b/client/components/page-components/patient/profile/NavSection.tsx
@@ -6,7 +6,7 @@ import { Card, CardContent } from "@/components/ui/card";
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
import { IPatient } from "@/types";
import UploadProfileModel from "@/components/models/patient/UploadProfileModel";
-import { ButtonV2 } from "@/components/common/ButtonV2";
+import { ButtonV2 } from "@/components/button/ButtonV2";
interface Props {
setSection: (state: "profile") => void;
diff --git a/client/components/view/table/DoctorAppointmentTable.tsx b/client/components/view/table/DoctorAppointmentTable.tsx
index 3c997dbe..8740e7ee 100644
--- a/client/components/view/table/DoctorAppointmentTable.tsx
+++ b/client/components/view/table/DoctorAppointmentTable.tsx
@@ -10,7 +10,7 @@ import TableSkeleton from "@/components/skeletons/TableSkelton";
import Pagination from "@/components/navigation/Pagination";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
import GetStatusBadge from "@/components/page-components/doctor/appointment/GetStatusBadge";
-import { ButtonV2 } from "@/components/common/ButtonV2";
+import { ButtonV2 } from "@/components/button/ButtonV2";
import { format } from 'date-fns'
diff --git a/client/constants/index.ts b/client/constants/index.ts
index c681b324..3e4c1790 100644
--- a/client/constants/index.ts
+++ b/client/constants/index.ts
@@ -109,6 +109,39 @@ export const SliderImages: string[] = [
// "https://images.unsplash.com/photo-1482189349482-3defd547e0e9?q=80&w=2848&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
];
+export const DoctorDegrees = [
+ "MBBS (Medicine and Surgery)",
+ "MD (Medicine)",
+ "DO (Osteopathic Medicine)",
+ "DDS (Dental Surgery)",
+ "DMD (Dental Medicine)",
+ "BDS (Bachelor of Dental Surgery)",
+ "BAMS (Ayurveda Medicine and Surgery)",
+ "BUMS (Unani Medicine and Surgery)",
+ "BHMS (Homeopathic Medicine and Surgery)",
+ "DPM (Podiatric Medicine)",
+ "DC (Chiropractic)",
+ "OD (Optometry)",
+ "PharmD (Pharmacy)",
+ "DVM (Veterinary Medicine)",
+ "DrPH (Public Health)",
+ "PsyD (Psychology)",
+ "DPT (Physical Therapy)",
+ "OTD (Occupational Therapy)",
+ "AuD (Audiology)",
+ "ND (Naturopathic Medicine)",
+ "DSc (Doctor of Science)",
+ "DNP (Nursing Practice)",
+ "DHSc (Health Science)",
+ "MS (Master of Surgery)",
+ "MCh (Master of Chirurgiae)",
+ "MSc (Master of Science in Medicine)",
+ "PhD (Doctor of Philosophy in Medicine)",
+ "DM (Doctor of Medicine)",
+ "MD-PhD (Dual Degree in Medicine and Research)"
+ ];
+
+
export const DummyDoctors = [
{
_id: "66e18ca5f2448c308b75a861",
diff --git a/client/public/assets/icons/utils/file.svg b/client/public/assets/icons/utils/file.svg
new file mode 100644
index 00000000..fbffddcc
--- /dev/null
+++ b/client/public/assets/icons/utils/file.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/public/assets/icons/utils/video.svg b/client/public/assets/icons/utils/video.svg
new file mode 100644
index 00000000..7f3aa4a8
--- /dev/null
+++ b/client/public/assets/icons/utils/video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file