@@ -26,6 +26,9 @@ import Quiz from './pages/Quiz/Quiz'; | |||||
import PreliminaryRoundResults from './pages/preliminaryRoundResults/PreliminaryRoundResults'; | import PreliminaryRoundResults from './pages/preliminaryRoundResults/PreliminaryRoundResults'; | ||||
import TechnicalInterview from './pages/technicalInterview/TechnicalInterview'; | import TechnicalInterview from './pages/technicalInterview/TechnicalInterview'; | ||||
import TimeSlot from './components/timeSlot/TimeSlot'; | import TimeSlot from './components/timeSlot/TimeSlot'; | ||||
import Assignment from './pages/assignment/Assignment'; | |||||
import AssignmentDetails from './pages/assignment/AssignmentDetails'; | |||||
import SubmitAssignment from './pages/assignment/SubmitAssignment'; | |||||
@@ -53,6 +56,16 @@ const App: React.FC = () => ( | |||||
<Route exact path="/technicalInterview"> | <Route exact path="/technicalInterview"> | ||||
<TechnicalInterview /> | <TechnicalInterview /> | ||||
</Route> | </Route> | ||||
<Route exact path="/assignment"> | |||||
<Assignment /> | |||||
</Route> | |||||
<Route exact path="/assignmentDetails"> | |||||
<AssignmentDetails /> | |||||
</Route> | |||||
<Route exact path="/SubmitAssignment"> | |||||
<SubmitAssignment /> | |||||
</Route> | |||||
<Route exact path="/"> | <Route exact path="/"> | ||||
<Redirect to="/interviewRounds" /> | <Redirect to="/interviewRounds" /> | ||||
</Route> | </Route> | ||||
@@ -17,8 +17,8 @@ $dim-grey: #696969; | |||||
} | } | ||||
ion-icon { | ion-icon { | ||||
width: 1rem; | |||||
height: 1rem; | |||||
width: 1.5rem; | |||||
height: 1.5rem; | |||||
} | } | ||||
ion-input { | ion-input { | ||||
@@ -2,6 +2,7 @@ import styles from './StepHeader.module.scss'; | |||||
import { IonHeader, IonIcon } from '@ionic/react'; | import { IonHeader, IonIcon } from '@ionic/react'; | ||||
import { closeOutline } from 'ionicons/icons' | import { closeOutline } from 'ionicons/icons' | ||||
import { Link } from 'react-router-dom'; | |||||
interface Props { | interface Props { | ||||
stepNumber: number; | stepNumber: number; | ||||
@@ -15,7 +16,9 @@ const StepHeader: React.FC<Props> = (props) => { | |||||
<div className={styles.step}>Step {props.stepNumber}</div> | <div className={styles.step}>Step {props.stepNumber}</div> | ||||
<h3 className={styles.roundName}>{props.roundName}</h3> | <h3 className={styles.roundName}>{props.roundName}</h3> | ||||
</div> | </div> | ||||
{/* <Link to="/interviewRounds"> */} | |||||
<IonIcon icon={closeOutline}></IonIcon> | <IonIcon icon={closeOutline}></IonIcon> | ||||
{/* </Link> */} | |||||
</header> | </header> | ||||
) | ) | ||||
} | } | ||||
@@ -1,6 +1,6 @@ | |||||
import styles from './Quiz.module.scss'; | import styles from './Quiz.module.scss'; | ||||
import { IonButton, IonCheckbox, IonIcon, IonItem, IonLabel, IonPage, IonRadio } from '@ionic/react'; | |||||
import { IonButton, IonIcon } from '@ionic/react'; | |||||
import Options from './Options'; | import Options from './Options'; | ||||
import { closeOutline } from 'ionicons/icons' | import { closeOutline } from 'ionicons/icons' | ||||
import { Link } from 'react-router-dom'; | import { Link } from 'react-router-dom'; | ||||
@@ -0,0 +1,46 @@ | |||||
.assignment { | |||||
.description { | |||||
.icon { | |||||
margin-top: 4rem; | |||||
display: flex; | |||||
justify-content: center; | |||||
ion-icon { | |||||
width: 10rem; | |||||
height: 10rem; | |||||
} | |||||
} | |||||
.stepDescription { | |||||
h4 { | |||||
color: #363636; | |||||
text-align: center; | |||||
font-size: 2.4rem; | |||||
font-weight: 300; | |||||
letter-spacing: 0.024rem; | |||||
margin-top: 3rem; | |||||
} | |||||
p { | |||||
color: #868686; | |||||
font-size: 1.4rem; | |||||
text-align: center; | |||||
width: 90%; | |||||
margin: 0 auto; | |||||
margin-top: 2rem; | |||||
line-height: 1.8; | |||||
} | |||||
} | |||||
} | |||||
.assignmentButton { | |||||
text-decoration: none; | |||||
ion-button { | |||||
width: 95%; | |||||
margin: 0 auto; | |||||
margin-top: 35vh; | |||||
margin-bottom: 0; | |||||
--background: var(--primary-button-color); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,36 @@ | |||||
import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react"; | |||||
import StepHeader from "../../components/stepsHeader/StepHeader"; | |||||
import assignmentImage from "../../assets/icons/Assignment.svg"; | |||||
import styles from "./Assignment.module.scss"; | |||||
import { Link } from "react-router-dom"; | |||||
const Assignment: React.FC = () => { | |||||
return ( | |||||
<IonPage> | |||||
<StepHeader stepNumber={4} roundName="Assignment" /> | |||||
<IonContent className={styles.assignment}> | |||||
<div className={styles.description}> | |||||
<div className={styles.icon}> | |||||
<IonIcon src={assignmentImage} /> | |||||
</div> | |||||
<div className={styles.stepDescription}> | |||||
<h4>You are one step ahead to the final round</h4> | |||||
<p> | |||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | |||||
</p> | |||||
</div> | |||||
</div> | |||||
<Link to="/assignmentDetails" | |||||
className={styles.assignmentButton}> | |||||
<IonButton shape="round" expand='block'>Show Details</IonButton> | |||||
</Link> | |||||
</IonContent> | |||||
</IonPage> | |||||
); | |||||
} | |||||
export default Assignment; |
@@ -0,0 +1,90 @@ | |||||
.assignmentDetails { | |||||
.assignmentTask { | |||||
display: flex; | |||||
flex-direction: column; | |||||
align-items: center; | |||||
text-align: center; | |||||
justify-content: space-around; | |||||
height: 44vh; | |||||
width: 90%; | |||||
margin: 0 auto; | |||||
.heading { | |||||
color: #363636; | |||||
font-weight: 300; | |||||
font-size: 2.4rem; | |||||
} | |||||
.description { | |||||
color: #868686; | |||||
font-size: 1.4rem; | |||||
line-height: 2.8rem; | |||||
} | |||||
} | |||||
.taskDescription { | |||||
height: 44vh; | |||||
display: flex; | |||||
flex-direction: column; | |||||
justify-content: space-around; | |||||
background-color: #151515; | |||||
background-image: url("../../assets/icons/desktop-particles-2.svg"); | |||||
background-repeat: no-repeat; | |||||
background-position: 25% 30%; | |||||
border-top-right-radius: 75%; | |||||
&::before { | |||||
position: absolute; | |||||
content:" "; | |||||
top: 50%; | |||||
right: 0; | |||||
left: 0; | |||||
bottom: 0; | |||||
background-color: #151515; | |||||
height: 30vh; | |||||
transform: skewY(5deg); | |||||
z-index: -1; | |||||
} | |||||
.heading { | |||||
color: #BCBCBC; | |||||
font-weight: 300; | |||||
letter-spacing: 0.024rem; | |||||
font-size: 2.4rem; | |||||
margin-left: 2rem; | |||||
} | |||||
.description { | |||||
margin-left: 2rem; | |||||
.textHolder { | |||||
display: flex; | |||||
margin-bottom: 2rem; | |||||
.text { | |||||
color: #E5E5E5; | |||||
font-size: 1.4rem; | |||||
font-weight: 600; | |||||
margin-left: 2rem; | |||||
} | |||||
} | |||||
} | |||||
a { | |||||
text-decoration: none; | |||||
} | |||||
ion-button { | |||||
--background: var(--primary-button-color); | |||||
font-weight: 500; | |||||
font-family: 'Poppins', sans-serif; | |||||
width: 90%; | |||||
margin: 0 auto; | |||||
} | |||||
.wish { | |||||
color: #E5E5E5; | |||||
font-size: 1.8rem; | |||||
text-align: center; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,49 @@ | |||||
import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react"; | |||||
import StepHeader from "../../components/stepsHeader/StepHeader"; | |||||
import questionIcon from '../../assets/icons/question-circle-fill.svg'; | |||||
import checkIcon from '../../assets/icons/check-circle-fill.svg'; | |||||
import timeIcon from '../../assets/icons/time.svg'; | |||||
import styles from "./AssignmentDetails.module.scss"; | |||||
import { Link } from "react-router-dom"; | |||||
const AssignmentDetails: React.FC = () => { | |||||
return ( | |||||
<IonPage> | |||||
<StepHeader roundName="Assignment" stepNumber={4} /> | |||||
<IonContent className={styles.assignmentDetails}> | |||||
<div className={styles.assignmentTask}> | |||||
<h4 className={styles.heading}>Make a text analyser from a text file</h4> | |||||
<p className={styles.description}> | |||||
Make an api with Node which accepts a text file and I was supposed to return the most repeated words in it. A huge text file (around 7 mb) was given to me as an example. Here is the code if anywants to know how I built it https://github.com/fayazara/text-analyser | |||||
</p> | |||||
</div> | |||||
<div className={styles.taskDescription}> | |||||
<h4 className={styles.heading}>Details</h4> | |||||
<div className={styles.description}> | |||||
<div className={styles.textHolder}> | |||||
<IonIcon src={questionIcon}></IonIcon> | |||||
<div className={styles.text}>Weekend Project</div> | |||||
</div> | |||||
<div className={styles.textHolder}> | |||||
<IonIcon src={timeIcon}></IonIcon> | |||||
<div className={styles.text}>Before Monday, 01 May 2021</div> | |||||
</div> | |||||
<div className={styles.textHolder}> | |||||
<IonIcon src={checkIcon}></IonIcon> | |||||
<div className={styles.text}>Note: 85% of results minimum</div> | |||||
</div> | |||||
</div> | |||||
<Link to="./SubmitAssignment"> | |||||
<IonButton shape="round" expand='block'>Accept</IonButton> | |||||
</Link> | |||||
<div className={styles.wish}>All the best!</div> | |||||
</div> | |||||
</IonContent> | |||||
</IonPage> | |||||
); | |||||
}; | |||||
export default AssignmentDetails; |
@@ -0,0 +1,9 @@ | |||||
const ReviewAssignment: React.FC = () => { | |||||
return ( | |||||
<div> | |||||
</div> | |||||
); | |||||
} | |||||
export default ReviewAssignment; |
@@ -0,0 +1,45 @@ | |||||
.submitAssignment { | |||||
.description { | |||||
.icon { | |||||
margin-top: 4rem; | |||||
display: flex; | |||||
justify-content: center; | |||||
ion-icon { | |||||
width: 10rem; | |||||
height: 10rem; | |||||
} | |||||
} | |||||
.stepDescription { | |||||
h4 { | |||||
color: #363636; | |||||
text-align: center; | |||||
font-size: 2.4rem; | |||||
font-weight: 300; | |||||
letter-spacing: 0.024rem; | |||||
margin-top: 3rem; | |||||
} | |||||
p { | |||||
color: #868686; | |||||
font-size: 1.4rem; | |||||
text-align: center; | |||||
width: 90%; | |||||
margin: 0 auto; | |||||
margin-top: 2rem; | |||||
line-height: 1.8; | |||||
} | |||||
} | |||||
} | |||||
.inputHolder { | |||||
margin-top: 5rem; | |||||
} | |||||
.submitAssigment { | |||||
text-decoration: none; | |||||
ion-button { | |||||
width: 90%; | |||||
margin: 0 auto; | |||||
margin-top: 12rem; | |||||
--background: var(--primary-button-color); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,45 @@ | |||||
import styles from "./SubmitAssignment.module.scss"; | |||||
import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react" | |||||
import assignmentImage from "../../assets/icons/Assignment.svg"; | |||||
import StepHeader from "../../components/stepsHeader/StepHeader"; | |||||
import Input from "../../components/formInput/Input"; | |||||
import linkIcon from "../../assets/icons/link.svg"; | |||||
import time from "../../assets/icons/time.svg"; | |||||
import { linkOutline } from 'ionicons/icons' | |||||
import { Link } from "react-router-dom"; | |||||
const SubmitAssignment: React.FC = () => { | |||||
return ( | |||||
<IonPage> | |||||
<StepHeader roundName="Assignment" stepNumber={4} /> | |||||
<IonContent className={styles.submitAssignment}> | |||||
<div className={styles.description}> | |||||
<div className={styles.icon}> | |||||
<IonIcon src={assignmentImage} /> | |||||
</div> | |||||
<div className={styles.stepDescription}> | |||||
<h4>Submit your Assignment</h4> | |||||
<p> | |||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | |||||
</p> | |||||
</div> | |||||
</div> | |||||
<div className={styles.inputHolder}> | |||||
<Input placeholder="Insert the project Link" icon={linkOutline} /> | |||||
</div> | |||||
<Link to="/assignmentDetails" | |||||
className={styles.submitAssigment}> | |||||
<IonButton shape="round" expand='block'>Submit</IonButton> | |||||
</Link> | |||||
</IonContent> | |||||
</IonPage> | |||||
); | |||||
} | |||||
export default SubmitAssignment; |
@@ -19,6 +19,7 @@ interface stepDetail { | |||||
descriptionImage: string; | descriptionImage: string; | ||||
buttonText: string; | buttonText: string; | ||||
isUnlocked: boolean; | isUnlocked: boolean; | ||||
link: string; | |||||
} | } | ||||
const InterviewRounds: React.FC = () => { | const InterviewRounds: React.FC = () => { | ||||
@@ -29,56 +30,64 @@ const InterviewRounds: React.FC = () => { | |||||
stepName: "Skill Information", | stepName: "Skill Information", | ||||
descriptionImage: skillInfo, | descriptionImage: skillInfo, | ||||
buttonText: "Let's start now", | buttonText: "Let's start now", | ||||
isUnlocked: true | |||||
isUnlocked: true, | |||||
link: "/skillInformationStep" | |||||
}, | }, | ||||
{ | { | ||||
stepNumber: 2, | stepNumber: 2, | ||||
stepName: "Preliminary Round", | stepName: "Preliminary Round", | ||||
descriptionImage: preliminaryRound, | descriptionImage: preliminaryRound, | ||||
buttonText: "Let's do this", | buttonText: "Let's do this", | ||||
isUnlocked: false | |||||
isUnlocked: false, | |||||
link: "/preliminaryRound" | |||||
}, | }, | ||||
{ | { | ||||
stepNumber: 3, | stepNumber: 3, | ||||
stepName: "Technical Interview", | stepName: "Technical Interview", | ||||
descriptionImage: technicalInterview, | descriptionImage: technicalInterview, | ||||
buttonText: "Schedule meeting", | buttonText: "Schedule meeting", | ||||
isUnlocked: false | |||||
isUnlocked: false, | |||||
link: "/technicalInterview" | |||||
}, | }, | ||||
{ | { | ||||
stepNumber: 4, | stepNumber: 4, | ||||
stepName: "Assignment", | stepName: "Assignment", | ||||
descriptionImage: assignment, | descriptionImage: assignment, | ||||
buttonText: "Show details", | buttonText: "Show details", | ||||
isUnlocked: false | |||||
isUnlocked: false, | |||||
link: "/assignment" | |||||
}, | }, | ||||
{ | { | ||||
stepNumber: 5, | stepNumber: 5, | ||||
stepName: "Final Interview", | stepName: "Final Interview", | ||||
descriptionImage: finalInterview, | descriptionImage: finalInterview, | ||||
buttonText: "Schedule meeting", | buttonText: "Schedule meeting", | ||||
isUnlocked: false | |||||
isUnlocked: false, | |||||
link: "/assignment" | |||||
}, | }, | ||||
{ | { | ||||
stepNumber: 6, | stepNumber: 6, | ||||
stepName: "Closing Docs", | stepName: "Closing Docs", | ||||
descriptionImage: closingDocs, | descriptionImage: closingDocs, | ||||
buttonText: "Upload docs", | buttonText: "Upload docs", | ||||
isUnlocked: false | |||||
isUnlocked: false, | |||||
link: "/assignment" | |||||
}, | }, | ||||
{ | { | ||||
stepNumber: 7, | stepNumber: 7, | ||||
stepName: "Joining Letter", | stepName: "Joining Letter", | ||||
descriptionImage: joiningLetter, | descriptionImage: joiningLetter, | ||||
buttonText: "Show details", | buttonText: "Show details", | ||||
isUnlocked: false | |||||
isUnlocked: false, | |||||
link: "/assignment" | |||||
}, | }, | ||||
{ | { | ||||
stepNumber: 8, | stepNumber: 8, | ||||
stepName: "Celebrations", | stepName: "Celebrations", | ||||
descriptionImage: Celebrations, | descriptionImage: Celebrations, | ||||
buttonText: "Join Workex", | buttonText: "Join Workex", | ||||
isUnlocked: false | |||||
isUnlocked: false, | |||||
link: "/assignment" | |||||
}, | }, | ||||
]; | ]; | ||||
@@ -98,7 +107,8 @@ const InterviewRounds: React.FC = () => { | |||||
descriptionImage={step.descriptionImage} | descriptionImage={step.descriptionImage} | ||||
buttonText={step.buttonText} | buttonText={step.buttonText} | ||||
setDescription={setDescription} | setDescription={setDescription} | ||||
showDescription={(stepNo === step.stepNumber) ? true : false} /> | |||||
showDescription={(stepNo === step.stepNumber) ? true : false} | |||||
link={step.link} /> | |||||
); | ); | ||||
}); | }); | ||||
@@ -56,6 +56,7 @@ | |||||
animation-fill-mode: forwards; | animation-fill-mode: forwards; | ||||
} | } | ||||
.button { | .button { | ||||
text-decoration: none; | |||||
animation: fadeInAnimation ease 0.2s; | animation: fadeInAnimation ease 0.2s; | ||||
animation-iteration-count: 1; | animation-iteration-count: 1; | ||||
animation-fill-mode: forwards; | animation-fill-mode: forwards; | ||||
@@ -1,8 +1,9 @@ | |||||
import styles from './StepDescreption.module.scss'; | import styles from './StepDescreption.module.scss'; | ||||
import { IonButton, IonIcon } from '@ionic/react'; | import { IonButton, IonIcon } from '@ionic/react'; | ||||
import { lockOpen, lockClosed } from 'ionicons/icons' | |||||
import { lockOpen, lockClosed } from 'ionicons/icons'; | |||||
import { useEffect, useRef } from 'react'; | import { useEffect, useRef } from 'react'; | ||||
import { Link } from 'react-router-dom'; | |||||
interface Props { | interface Props { | ||||
stepNumber: number; | stepNumber: number; | ||||
@@ -10,6 +11,7 @@ interface Props { | |||||
isUnlocked: boolean; | isUnlocked: boolean; | ||||
buttonText: string; | buttonText: string; | ||||
descriptionImage: string; | descriptionImage: string; | ||||
link: string; | |||||
} | } | ||||
const StepsDescription: React.FC<Props> = (props) => { | const StepsDescription: React.FC<Props> = (props) => { | ||||
@@ -42,9 +44,9 @@ const StepsDescription: React.FC<Props> = (props) => { | |||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. | ||||
</p> | </p> | ||||
<div className={styles.button}> | |||||
<Link to={props.link} className={styles.button}> | |||||
<IonButton shape="round" expand='block'>{props.buttonText}</IonButton> | <IonButton shape="round" expand='block'>{props.buttonText}</IonButton> | ||||
</div> | |||||
</Link> | |||||
</div> | </div> | ||||
); | ); | ||||
@@ -10,6 +10,7 @@ interface Props { | |||||
showDescription?: boolean; | showDescription?: boolean; | ||||
buttonText: string; | buttonText: string; | ||||
descriptionImage: string; | descriptionImage: string; | ||||
link: string; | |||||
setDescription: (stepNumber: number) => void; | setDescription: (stepNumber: number) => void; | ||||
// rename to select step | // rename to select step | ||||
} | } | ||||
@@ -24,7 +25,8 @@ const Steps: React.FC<Props> = (props) => { | |||||
roundName={props.roundName} | roundName={props.roundName} | ||||
isUnlocked={props.isUnlocked} | isUnlocked={props.isUnlocked} | ||||
buttonText={props.buttonText} | buttonText={props.buttonText} | ||||
descriptionImage={props.descriptionImage} /> : | |||||
descriptionImage={props.descriptionImage} | |||||
link={props.link} /> : | |||||
<div className={styles.stepHolder}> | <div className={styles.stepHolder}> | ||||
<IonIcon icon={props.isUnlocked ? lockOpen : lockClosed} color={props.isUnlocked ? '' : "dark"} ></IonIcon> | <IonIcon icon={props.isUnlocked ? lockOpen : lockClosed} color={props.isUnlocked ? '' : "dark"} ></IonIcon> | ||||
@@ -3,8 +3,6 @@ import styles from "./PreliminaryRoundResults.module.scss" | |||||
import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react"; | import { IonButton, IonContent, IonIcon, IonPage } from "@ionic/react"; | ||||
import StepHeader from "../../components/stepsHeader/StepHeader"; | import StepHeader from "../../components/stepsHeader/StepHeader"; | ||||
import checkIcon from "../../assets/icons/check-circle-fill.svg"; | |||||
import closeIcon from "../../assets/icons/close-filled.svg"; | |||||
import goodJobIcon from "../../assets/icons/good_job.svg"; | import goodJobIcon from "../../assets/icons/good_job.svg"; | ||||
import { closeCircle, checkmarkCircle } from "ionicons/icons"; | import { closeCircle, checkmarkCircle } from "ionicons/icons"; | ||||
@@ -86,10 +86,10 @@ const TechnicalInterview: React.FC = () => { | |||||
</div> | </div> | ||||
: | : | ||||
<div className={styles.buttonHolder}> | <div className={styles.buttonHolder}> | ||||
<Link to="/" className={styles.dashboardButton}> | |||||
<Link to="/interviewRounds" className={styles.dashboardButton}> | |||||
<IonButton shape="round">Goto Dashboard</IonButton> | <IonButton shape="round">Goto Dashboard</IonButton> | ||||
</Link> | </Link> | ||||
<Link to="/" className={styles.nextStepButton}> | |||||
<Link to="/assignment" className={styles.nextStepButton}> | |||||
<IonButton shape="round">Goto Next Step</IonButton> | <IonButton shape="round">Goto Next Step</IonButton> | ||||
</Link> | </Link> | ||||
</div> | </div> | ||||