111 lines
No EOL
5.2 KiB
TypeScript
111 lines
No EOL
5.2 KiB
TypeScript
import { CheckIcon, XMarkIcon, QuestionMarkCircleIcon, FingerPrintIcon, LockClosedIcon } from '@heroicons/react/24/outline'
|
|
import Logo from './logo';
|
|
import { SessionState } from '../lib/session';
|
|
|
|
/*
|
|
const features = [
|
|
{
|
|
name: 'Correct Questions',
|
|
description:
|
|
'You got [insert number here] questions right! Good Job!',
|
|
icon: CheckIcon,
|
|
},
|
|
{
|
|
name: 'Incorrect Questions',
|
|
description:
|
|
'You got [insert number here] questions wrong! You can do better!',
|
|
icon: XMarkIcon,
|
|
},
|
|
{
|
|
name: 'Total Questions',
|
|
description:
|
|
'There were [insert number here] questions in total.',
|
|
icon: QuestionMarkCircleIcon,
|
|
}
|
|
]
|
|
*/
|
|
|
|
const Result = ({name, text1, number, text2, Icon}: {name: string, text1: string, number: number, text2: string, Icon: any}) => {
|
|
return (
|
|
<div className="relative pl-16">
|
|
<dt className="text-base font-semibold leading-7 text-gray-100">
|
|
<div className="absolute left-0 top-0 flex h-10 w-10 items-center justify-center rounded-lg bg-indigo-600">
|
|
<Icon className="h-6 w-6 text-white" aria-hidden="true"/>
|
|
</div>
|
|
{name}
|
|
</dt>
|
|
<dd className="mt-2 text-base leading-7 text-gray-300">{`${text1} ${number} ${text2}`}</dd>
|
|
</div>
|
|
// {/* <p className="relative pl-16">{`${text1} ${number} ${text2}`}</p> */}
|
|
)
|
|
}
|
|
|
|
const ResultScreen = ({state}: {state: SessionState}) => {
|
|
return (
|
|
<div className="py-24 sm:py-32">
|
|
<div
|
|
className="absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80"
|
|
aria-hidden="true"
|
|
>
|
|
<div
|
|
className="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]"
|
|
style={{
|
|
clipPath:
|
|
'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',
|
|
}}
|
|
/>
|
|
</div>
|
|
<div style={{paddingBottom: '128px'}}></div>
|
|
<div className="mx-auto max-w-7xl px-6 lg:px-8">
|
|
<div className="mx-auto max-w-2xl lg:text-center">
|
|
<h2 className="text-base font-semibold leading-7 text-indigo-300">You did it!</h2>
|
|
<p className="mt-2 text-3xl font-bold tracking-tight text-gray-100 sm:text-4xl">
|
|
Here are the results:
|
|
</p>
|
|
<p className="mt-6 text-lg leading-8 text-gray-600">
|
|
On this page you can see what you did at the quiz. We'll give your wrong questions again, another time!
|
|
</p>
|
|
</div>
|
|
<div className="mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-4xl">
|
|
<dl className="grid max-w-xl grid-cols-1 gap-x-8 gap-y-10 lg:max-w-none lg:grid-cols-2 lg:gap-y-16">
|
|
{/* {features.map((feature) => (
|
|
<div key={feature.name} className="relative pl-16">
|
|
<dt className="text-base font-semibold leading-7 text-gray-100">
|
|
<div className="absolute left-0 top-0 flex h-10 w-10 items-center justify-center rounded-lg bg-indigo-600">
|
|
<feature.icon className="h-6 w-6 text-white" aria-hidden="true" />
|
|
</div>
|
|
{feature.name}
|
|
</dt>
|
|
<dd className="mt-2 text-base leading-7 text-gray-300">{feature.description}</dd>
|
|
</div>
|
|
))} */}
|
|
<Result name="Correct Answers" key="correct" text1="Congrats for your" number={state.right} text2="correctly answered questions! Great job!" Icon={CheckIcon}/>
|
|
<Result name="Wrong Answers" key="wrong" text1="You had" number={state.wrong} text2="wrong answers... It's never too late to learn!" Icon={XMarkIcon}/>
|
|
<Result name="Total Answers" key="total" text1="The" number={state.answered} text2="questions you answered surely helped you learn more." Icon={QuestionMarkCircleIcon}/>
|
|
</dl>
|
|
<br></br>
|
|
<a
|
|
href="/sessionconfig"
|
|
className="rounded-md bg-indigo-600 px-3.5 py-2.5 text-sm font-semibold text-gray-100 shadow-sm hover:bg-indigo-900 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white"
|
|
style={{ marginTop: '100px' }}
|
|
>
|
|
Go Back
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div
|
|
className="absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]"
|
|
aria-hidden="true"
|
|
>
|
|
<div
|
|
className="relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]"
|
|
style={{
|
|
clipPath:
|
|
'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',
|
|
}}
|
|
/>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
export default ResultScreen; |