-
- Notificações
-
-
- {notifications?.length ? (
- notifications
- ?.slice(0, 5)
- .map((notification) => (
-
- ))
- ) : (
-
- Nenhuma notificação
-
- )}
+
+
+
+ Notificações
+
+
+ {notifications?.length ? (
+ notifications
+ ?.slice(0, 5)
+ .map((notification) => (
+
+ ))
+ ) : (
+
+ Nenhuma notificação
+
+ )}
+
-
-
+
+
);
};
diff --git a/src/components/Modal/Modal.types.ts b/src/components/Modal/ModalRoot/Modal.types.ts
similarity index 65%
rename from src/components/Modal/Modal.types.ts
rename to src/components/Modal/ModalRoot/Modal.types.ts
index ede97c18..a8341b3b 100644
--- a/src/components/Modal/Modal.types.ts
+++ b/src/components/Modal/ModalRoot/Modal.types.ts
@@ -1,7 +1,8 @@
-export type ModalProps = {
+export type ModalRootProps = {
openModalComponent?: React.ReactElement;
- children: React.ReactNode;
closeModalComponent?: React.ReactElement;
+ children?: React.ReactNode;
open?: boolean;
onOpenChange?: (open: boolean) => void;
+ text?: String;
};
diff --git a/src/components/Modal/ModalRoot/ModalContent.tsx b/src/components/Modal/ModalRoot/ModalContent.tsx
new file mode 100644
index 00000000..0077fe73
--- /dev/null
+++ b/src/components/Modal/ModalRoot/ModalContent.tsx
@@ -0,0 +1,24 @@
+import * as Dialog from "@radix-ui/react-dialog";
+import { Cross1Icon } from "@radix-ui/react-icons";
+import { ModalRootProps } from "./Modal.types";
+
+const ModalContent = ({ closeModalComponent, children }: ModalRootProps) => {
+ return (
+
+
+
+
+ {closeModalComponent}
+
+
+ {children}
+
+ );
+};
+
+export default ModalContent;
diff --git a/src/components/Modal/ModalRoot/ModalContentAlert.tsx b/src/components/Modal/ModalRoot/ModalContentAlert.tsx
new file mode 100644
index 00000000..45266a71
--- /dev/null
+++ b/src/components/Modal/ModalRoot/ModalContentAlert.tsx
@@ -0,0 +1,26 @@
+import Button from "@components/Button";
+import * as Dialog from "@radix-ui/react-dialog";
+import { ModalRootProps } from "./Modal.types";
+
+const ModalContentAlert = ({ children }: ModalRootProps) => {
+ return (
+
+
+ {children}
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ModalContentAlert;
diff --git a/src/components/Modal/ModalRoot/ModalDescription.tsx b/src/components/Modal/ModalRoot/ModalDescription.tsx
new file mode 100644
index 00000000..7feb4ade
--- /dev/null
+++ b/src/components/Modal/ModalRoot/ModalDescription.tsx
@@ -0,0 +1,8 @@
+import * as Dialog from "@radix-ui/react-dialog";
+import { ModalRootProps } from "./Modal.types";
+
+const ModalDescription = ({ text }: ModalRootProps) => {
+ return
{text};
+};
+
+export default ModalDescription;
diff --git a/src/components/Modal/ModalRoot/ModalRoot.tsx b/src/components/Modal/ModalRoot/ModalRoot.tsx
new file mode 100644
index 00000000..0f535d44
--- /dev/null
+++ b/src/components/Modal/ModalRoot/ModalRoot.tsx
@@ -0,0 +1,23 @@
+import Button from "@components/Button/Button";
+import * as Dialog from "@radix-ui/react-dialog";
+import { Cross1Icon } from "@radix-ui/react-icons";
+import { ModalRootProps } from "./Modal.types";
+
+const ModalRoot = ({
+ openModalComponent,
+ children,
+ open,
+ onOpenChange,
+}: ModalRootProps) => {
+ return (
+
+ {openModalComponent}
+
+
+ {children}
+
+
+ );
+};
+
+export default ModalRoot;
diff --git a/src/components/Modal/ModalRoot/ModalTitle.tsx b/src/components/Modal/ModalRoot/ModalTitle.tsx
new file mode 100644
index 00000000..d0953f16
--- /dev/null
+++ b/src/components/Modal/ModalRoot/ModalTitle.tsx
@@ -0,0 +1,12 @@
+import * as Dialog from "@radix-ui/react-dialog";
+import { ModalRootProps } from "./Modal.types";
+
+const ModalTitle = ({ text }: ModalRootProps) => {
+ return (
+
+ {text}
+
+ );
+};
+
+export default ModalTitle;
diff --git a/src/components/Modal/ModalScheduleMentorship/ScheduleMentorhipModal.tsx b/src/components/Modal/ModalScheduleMentorship/ScheduleMentorhipModal.tsx
index 8f458b2c..9ae4ed79 100644
--- a/src/components/Modal/ModalScheduleMentorship/ScheduleMentorhipModal.tsx
+++ b/src/components/Modal/ModalScheduleMentorship/ScheduleMentorhipModal.tsx
@@ -1,4 +1,3 @@
-import Modal from "@components/Modal";
import Calendar from "@components/Calendar/Calendar";
import Image from "next/image";
import { useCallback, useEffect, useState } from "react";
@@ -18,6 +17,7 @@ import { TStepButtons } from "@components/Modal/ModalScheduleMentorship/Schedule
import StepperSmall from "@components/Stepper/StepperSmall";
import { useModal } from "contexts/ModalContext";
import { ModalActionTypes } from "contexts/types";
+import { Modal } from "../Modal";
const ScheduleMentorshipModal = () => {
const { user } = useUser();
@@ -248,124 +248,131 @@ const ScheduleMentorshipModal = () => {
}, [daySelected, daysAndTimes]);
return (
-
resetStates()}>
-
- {currentStep === 1 && (
- <>
-
-
-
- {mentor ? (
-
- Mentoria com {mentor.firstName} {mentor.lastName}
-
- ) : (
-
- Carregando...
-
- )}
-
- Escolha um dia para visualizar os horários disponíveis para marcar
- sua mentoria
-
- >
- )}
-
- {currentStep === 1 && (
- <>
-
-
-
-
-
- Horários disponíveis
-
-
- {convertedDaysAndTimes?.map((time) => (
- -
- setSelectedStartTime(time)}
- key={time}
- variant={
- selectedStartTime === time ? "secondary" : "chipCards"
- }
- >
- {time}
-
-
- ))}
-
-
- >
- )}
- {currentStep === 2 && (
- <>
-
-
-
- Mentoria de 30 minutos
-
-
-
- Horário:
- {" "}
- {selectedStartTime.replace(":", "h")} até as{" "}
- {selectedEndTime.replace(":", "h")}
-
-
- Data:{" "}
- {getDateNamePhrase(selectedDate || new Date())}
+ resetStates()}
+ >
+
+
+ {currentStep === 1 && (
+ <>
+
+
+
+ {mentor ? (
+
+ Mentoria com {mentor.firstName} {mentor.lastName}
+
+ ) : (
+
+ Carregando...
+
+ )}
+
+ Escolha um dia para visualizar os horários disponíveis para
+ marcar sua mentoria
-
- >
- )}
- {currentStep === 3 && (
- <>
-
-
- Mentoria agendada!
-
- {mentor ? (
-
- Sua mentoria foi agendada no seu calendário e do(a){" "}
- {mentor.firstName} {mentor.lastName}
-
- ) : (
-
- Sua mentoria foi agendada no seu calendário e do(a){" "}
- Carregando...
-
- )}
- >
- )}
-
-
+ >
+ )}
+
+ {currentStep === 1 && (
+ <>
+
+
+
+
+
+ Horários disponíveis
+
+
+ {convertedDaysAndTimes?.map((time) => (
+ -
+ setSelectedStartTime(time)}
+ key={time}
+ variant={
+ selectedStartTime === time ? "secondary" : "chipCards"
+ }
+ >
+ {time}
+
+
+ ))}
+
+
+ >
+ )}
+ {currentStep === 2 && (
+ <>
+
+
+
+ Mentoria de 30 minutos
+
+
+
+ Horário:
+ {" "}
+ {selectedStartTime.replace(":", "h")} até as{" "}
+ {selectedEndTime.replace(":", "h")}
+
+
+ Data:{" "}
+ {getDateNamePhrase(selectedDate || new Date())}
+
+
+ >
+ )}
+ {currentStep === 3 && (
+ <>
+
+
+ Mentoria agendada!
+
+ {mentor ? (
+
+ Sua mentoria foi agendada no seu calendário e do(a){" "}
+ {mentor.firstName} {mentor.lastName}
+
+ ) : (
+
+ Sua mentoria foi agendada no seu calendário e do(a){" "}
+ Carregando...
+
+ )}
+ >
+ )}
+
+
+
-
-
+
+
);
};
diff --git a/src/components/Modal/ModalSettings/ModalSettings.tsx b/src/components/Modal/ModalSettings/ModalSettings.tsx
index 116be1d9..263bbbe5 100644
--- a/src/components/Modal/ModalSettings/ModalSettings.tsx
+++ b/src/components/Modal/ModalSettings/ModalSettings.tsx
@@ -7,7 +7,7 @@ import Select from "react-select";
import { useMutation } from "@apollo/client";
import { useUser } from "@hooks/useUser";
import { useRouter } from "next/router";
-import { FormEvent, useState } from "react";
+import { FormEvent, SetStateAction, useState } from "react";
import { toast } from "react-toastify";
import Swal from "sweetalert2";
import { GET_ME, GET_MENTORS } from "services/apollo/queries";
@@ -22,9 +22,9 @@ import clsx from "clsx";
import { createStringRequirements } from "utils/regex";
import { IUserSession } from "types/user.types";
import { useModal } from "contexts/ModalContext";
-import Modal from "../Modal";
import { ModalActionTypes } from "contexts/types";
-import Dropzone from "@components/Dropzone";
+import { Modal } from "../Modal";
+import Dropzone from "@components/Dropzone/Dropzone";
const ModalSettings = () => {
const [dataSucessChange, setDataSucessChange] = useState(false);
@@ -34,6 +34,7 @@ const ModalSettings = () => {
const { theme } = useTheme();
const { firstName, lastName, email, id } = user;
const { openModal, closeModal, SETTINGS_MODAL } = useModal();
+ const [open, setClose] = useState(false);
const router = useRouter();
const [changePassword, { loading }] = useMutation(CHANGE_PASSWORD);
@@ -200,162 +201,164 @@ const ModalSettings = () => {
}
return (
-
closeModal(ModalActionTypes.SETTINGS_MODAL)}
>
-
-
- Configurações
-
- {dataSucessChange ? (
-
-
-
-
- Seus dados foram alterados com sucesso!!!
-
-
-
-
- {firstName}.
-
-
- Seus dados foram alterados com sucesso
-
-
-
-
- ) : (
-
-
- {currentStep === 1 && (
-
-
-
-
+
+
+
+ Configurações
+
+ {dataSucessChange ? (
+
+
+
+
+ Seus dados foram alterados com sucesso!!!
+
-
-
- )}
- {currentStep === 2 && (
-
-
-
-
-
+
+
+ {firstName}.
+
+
+ Seus dados foram alterados com sucesso
+
-
-
- )}
- {currentStep === 3 && (
-
-
+
+
+ )}
+ {currentStep === 3 && (
+
+
+
+ )}
+
+ )}
+
+
+
);
};
diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx
deleted file mode 100644
index ed4dd80e..00000000
--- a/src/components/Modal/index.tsx
+++ /dev/null
@@ -1,2 +0,0 @@
-export { default } from "./Modal";
-export type { ModalProps } from "./Modal.types";
diff --git a/src/contexts/ModalContext.tsx b/src/contexts/ModalContext.tsx
index 0bfb76e3..dda40226 100644
--- a/src/contexts/ModalContext.tsx
+++ b/src/contexts/ModalContext.tsx
@@ -1,9 +1,13 @@
-import ModalSettings from "@components/Modal/ModalSettings";
-import React, { createContext, useContext, useState, ReactNode } from "react";
import ModalNotifications from "@components/Modal/ModalNotifications";
-import { ModalActionTypes, ModalContextType, ModalState } from "./types";
import ScheduleMentorshipModal from "@components/Modal/ModalScheduleMentorship";
import EditProfileModal from "@components/Modal/EditProfile/EditProfileModal";
+import { ModalActionTypes, ModalContextType, ModalState } from "./types";
+import { ReactNode, createContext, useContext, useState } from "react";
+import ModalSettings from "@components/Modal/ModalSettings";
+import ModalAlert from "@components/Modal/ModalAlert";
+import * as AlertDialog from "@radix-ui/react-alert-dialog";
+import { Cross1Icon } from "@radix-ui/react-icons";
+
const ModalContext = createContext
(undefined);
@@ -16,6 +20,7 @@ export const ModalProvider: React.FC<{ children: ReactNode }> = ({
[ModalActionTypes.SETTINGS_MODAL]: false,
[ModalActionTypes.NOTIFICATIONS_MODAL]: false,
[ModalActionTypes.SCHEDULE_MENTORSHIP_MODAL]: false,
+ [ModalActionTypes.ALERT_MODAL]: false,
});
const openModal = (modalName: string) => {
@@ -45,7 +50,9 @@ export const ModalProvider: React.FC<{ children: ReactNode }> = ({
+
+
);
};
diff --git a/src/contexts/types.ts b/src/contexts/types.ts
index 59e65412..f420a66e 100644
--- a/src/contexts/types.ts
+++ b/src/contexts/types.ts
@@ -3,6 +3,7 @@ export enum ModalActionTypes {
SETTINGS_MODAL = "SETTINGS_MODAL",
NOTIFICATIONS_MODAL = "NOTIFICATIONS_MODAL",
SCHEDULE_MENTORSHIP_MODAL = "SCHEDULE_MENTORSHIP_MODAL",
+ ALERT_MODAL = "ALERT_MODAL",
}
export type ModalState = {
@@ -10,6 +11,7 @@ export type ModalState = {
[ModalActionTypes.SETTINGS_MODAL]: boolean;
[ModalActionTypes.NOTIFICATIONS_MODAL]: boolean;
[ModalActionTypes.SCHEDULE_MENTORSHIP_MODAL]: boolean;
+ [ModalActionTypes.ALERT_MODAL]: boolean;
};
export type ModalActions = {
diff --git a/src/pages/profile.tsx b/src/pages/profile.tsx
index 89377d50..1275c012 100644
--- a/src/pages/profile.tsx
+++ b/src/pages/profile.tsx
@@ -1,23 +1,24 @@
import Button from "@components/Button";
import Chip from "@components/Chip";
import DashboardCardProfile from "@components/DashboardCardProfile";
+import { InfoCard } from "@components/InfoCard";
import { MentorModalAvailability } from "@components/MentorModalAvailability/MentorModalAvailability";
import MentoringWeekCard from "@components/MentoringWeekCard/MentoringWeekCard";
import { renderMentoringWeekCard } from "@components/MentoringWeekCard/renderMentoringWeekCards";
import Spinner from "@components/Spinner";
import { useMentorProfile } from "@hooks/useMentorProfile";
+import { useTypedQuery } from "@hooks/useTypedQuery";
import { useUser } from "@hooks/useUser";
import { NextPage } from "next";
-import { useEffect, useState } from "react";
-import { groupEventsByDay } from "utils/dashboard-helpers";
-import { validateUndefined } from "utils/nullable/validateUndefined";
-import { InfoCard } from "@components/InfoCard";
import { useRouter } from "next/router";
-import { useTypedQuery } from "@hooks/useTypedQuery";
+import { useEffect, useState } from "react";
import { queriesIndex as api } from "services/apollo/queries/queries.index";
import { IGroupEventsByDay } from "types/dashboard.types";
import { useModal } from "contexts/ModalContext";
import { ModalActionTypes } from "contexts/types";
+import { groupEventsByDay } from "utils/dashboard-helpers";
+import { validateUndefined } from "utils/nullable/validateUndefined";
+
const Profile: NextPage = () => {
const [openModalAvailability, setOpenModalAvailability] = useState(false);
@@ -71,7 +72,7 @@ const Profile: NextPage = () => {
if (loadingMentor || loadingClasses)
return (
<>
-
+
>
@@ -83,8 +84,8 @@ const Profile: NextPage = () => {
return (
<>
-
-
+
-
+
-