feat: add feedback page and checkbox with text component

This commit is contained in:
gofnnp 2023-08-14 01:07:05 +04:00
parent 3aa71f4686
commit e7f0a4485d
4 changed files with 157 additions and 0 deletions

View File

@ -0,0 +1,21 @@
import styles from "./styles.module.css"
export type CheckboxWithTextProps = {
text: string
onChange?: (value: React.FormEvent<HTMLInputElement>) => void
}
function CheckboxWithText({ text, onChange }: CheckboxWithTextProps): JSX.Element {
return (
<div className={styles.container}>
<label className={styles["container__input"]}>
<input className={styles["container__checkbox"]} type="checkbox" onChange={onChange}/>
<span className={styles["container__checkmark"]}></span>
</label>
<span className={styles["container__text"]}>{text}</span>
</div>
)
}
export default CheckboxWithText

View File

@ -0,0 +1,77 @@
.container {
display: flex;
flex-direction: row;
align-items: center;
gap: 12px;
width: 100%;
}
.container__input {
display: block;
position: relative;
padding-left: 27px;
margin-bottom: 27px;
cursor: pointer;
font-size: 22px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* hover */
/* .container__input:hover .container__checkbox ~ .container__checkmark {
background-color: #ccc;
} */
.container__input .container__checkbox {
position: absolute;
opacity: 0;
cursor: pointer;
height: 0;
width: 0;
}
.container__input .container__checkbox:checked ~ .container__checkmark {
background-color: #878585;
}
.container__checkmark {
position: absolute;
top: 0;
left: 0;
height: 25px;
width: 25px;
/* background-color: #878585; */
border: solid 2px #878585;
border-radius: 5px;
}
.container__checkmark:after {
content: "";
position: absolute;
display: none;
}
.container__input .container__checkbox:checked ~ .container__checkmark:after {
display: block;
}
.container__checkmark:after {
left: 7px;
top: 3px;
width: 5px;
height: 10px;
border: solid white;
border-width: 0 3px 3px 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.container__text {
text-align: left;
line-height: 1.2;
color: #878585;
font-weight: 500;
}

View File

@ -0,0 +1,26 @@
import { useNavigate } from 'react-router-dom'
import { useTranslation } from 'react-i18next'
import routes from '../../routes'
import styles from './styles.module.css'
import MainButton from '../MainButton'
function FeedbackPage(): JSX.Element {
const { t } = useTranslation()
const navigate = useNavigate()
const handleNext = () => navigate(routes.client.emailEnter())
return (
<section className={`${styles.page} page`}>
<div className={styles.images}>
<img className={styles['profile-picture']} src="/profile-picture-feedback.png" alt="profile picture" />
<img className={styles.stars} src="/5-stars.png" alt="stop" />
</div>
<p className={styles.text}>{t('feedback')}</p>
<MainButton onClick={handleNext}>
{t('next')}
</MainButton>
</section>
)
}
export default FeedbackPage

View File

@ -0,0 +1,33 @@
.page {
flex: auto;
height: calc(100vh - 50px);
max-height: -webkit-fill-available;
justify-content: center;
gap: 16px;
}
.images {
display: flex;
align-items: flex-end;
gap: 18px;
width: 100%;
justify-content: flex-start;
}
.profile-picture {
width: 96px;
}
.stars {
width: 116px;
margin-bottom: 14px;
}
.text {
color: #000;
font-weight: 600;
padding: 18px;
background-color: #e2e0e0;
border-radius: 24px;
margin-bottom: 8px;
}