Skip to content
2 changes: 1 addition & 1 deletion components/StartPage/Download.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ function Download({ t, onClose }) {
<div className="relative flex w-full flex-col text-left">
<p className="mb-9 hidden md:block">{t('common:Download')}</p>
<Close
className="absolute -top-7 right-0 h-6 w-6 cursor-pointer stroke-black md:hidden"
className="absolute -top-16 right-0 h-6 w-6 cursor-pointer stroke-black md:hidden"
onClick={onClose}
/>
<div className="flex flex-col gap-6 overflow-y-auto text-base font-medium">
Expand Down
149 changes: 82 additions & 67 deletions components/StartPage/Feedback.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import { toast, Toaster } from 'react-hot-toast'
import ButtonLoading from 'components/ButtonLoading'
import InputField from 'components/Panel/UI/InputField'

function Feedback({ onClose }) {
import Close from 'public/icons/close.svg'

function Feedback({ isStartPage, onClose }) {
const { t } = useTranslation(['start-page', 'projects', 'users', 'common'])
const [feedback, setFeedback] = useState({ name: '', email: '', message: '' })
const [isError, setIsError] = useState(false)
Expand Down Expand Up @@ -38,6 +40,10 @@ function Feedback({ onClose }) {
toast.success(t('YourMessageHasBeenSent'))
setIsError(false)
setIsSent(true)

if (isStartPage) {
onClose()
}
})
.catch((err) => {
console.log({ err })
Expand All @@ -49,74 +55,83 @@ function Feedback({ onClose }) {
}

return (
<div className="flex w-full flex-col gap-6 md:gap-0">
{isConnectWithUsPage && (
<p className="font-semibold md:font-bold">{t('start-page:WriteToUs')}</p>
<div className="flex flex-grow items-center" onClick={(e) => e.stopPropagation()}>
<Toaster />
{isStartPage && (
<div
className="absolute right-5 top-5 cursor-pointer"
onClick={() => {
onClose()
}}
>
<Close className="h-6 w-6 text-black" />
</div>
)}

<div className="flex flex-grow items-center" onClick={(e) => e.stopPropagation()}>
<Toaster />
{!isSent ? (
<form className="flex w-full flex-col space-y-4" onSubmit={handleSubmit}>
<InputField
name="name"
type="text"
id="floating_name"
label={t('users:YourName')}
value={feedback.name}
isError={isError && !feedback.name}
onChange={handleChange}
/>

<InputField
name="email"
type="email"
id="floating_email"
label={t('users:Email')}
value={feedback.email}
isError={isError && !feedback.email}
onChange={handleChange}
/>

<InputField
rows="3"
name="message"
type="textarea"
id="floating_message"
label={t('users:Message')}
value={feedback.message}
isError={isError && !feedback.message}
onChange={handleChange}
className="mb-3 max-h-40 overflow-auto"
/>

<ButtonLoading
type="submit"
isLoading={isSaving}
className={`relative rounded-lg px-5 py-4 text-center text-sm font-medium text-th-text-secondary-100 md:text-base ${
isConnectWithUsPage ? 'bg-slate-550' : 'bg-th-primary-100'
}`}
>
{t('users:Send')}
</ButtonLoading>
<p className="text-center text-sm font-light">
{t('users:ConditionOfConsent')}
</p>
</form>
) : (
<div className="w-full text-center">
<p>{t('users:YourMessageSentThankYou')}</p>
<button
className={`mt-14 rounded-lg px-10 py-4 text-center text-sm font-medium text-th-text-secondary-100 md:text-base ${
isStartPage ? 'bg-slate-550' : 'bg-th-primary-100'
}`}
onClick={() => onClose()}
>
{t('common:Close')}
</button>
</div>
)}
</div>
{!isSent ? (
<form className="flex w-full flex-col space-y-4" onSubmit={handleSubmit}>
<InputField
name="name"
type="text"
id="floating_name"
label={t('users:YourName')}
value={feedback.name}
isError={isError && !feedback.name}
onChange={handleChange}
/>

<InputField
name="email"
type="email"
id="floating_email"
label={t('users:Email')}
value={feedback.email}
isError={isError && !feedback.email}
onChange={handleChange}
/>

<InputField
rows="3"
name="message"
type="textarea"
id="floating_message"
label={t('users:Message')}
value={feedback.message}
isError={isError && !feedback.message}
onChange={handleChange}
className="mb-3 max-h-40 overflow-auto"
/>

<ButtonLoading
type="submit"
isLoading={isSaving}
className={`relative rounded-lg px-5 py-4 text-center text-sm font-medium text-th-text-secondary-100 md:text-base ${
isConnectWithUsPage ? 'bg-slate-550' : 'bg-th-primary-100'
}`}
>
{t('users:Send')}
</ButtonLoading>
<p className="text-center text-sm font-light">
{t('users:ConditionOfConsent')}
</p>
</form>
) : (
<div className="w-full text-center">
<p>{t('users:YourMessageSentThankYou')}</p>
<button
className={`mt-14 rounded-lg px-10 py-4 text-center text-sm font-medium text-th-text-secondary-100 md:text-base ${
isStartPage ? 'bg-slate-550' : 'bg-th-primary-100'
}`}
onClick={() => {
if (!isStartPage) {
onClose()
}
}}
>
{t('common:Close')}
</button>
</div>
)}
</div>
)
}
Expand Down
24 changes: 22 additions & 2 deletions components/StartPage/Logo.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,34 @@
import { useState } from 'react'

import Link from 'next/link'
import { useRouter } from 'next/router'

import Close from 'public/icons/close.svg'
import GlokasLogo from 'public/icons/glokas-logo.svg'

function Logo({ t }) {
function Logo({ isMobilePage, t }) {
const { locale } = useRouter()
const isRuLocale = locale === 'ru'

const [isOpen, setIsOpen] = useState(true)

const handleClose = () => {
setIsOpen(false)
}

if (!isOpen) return null

return (
<div className="flex w-full flex-col gap-6">
<p className="mr-10 font-semibold md:font-bold">{t('LogoHeader')}</p>
<div className="relative">
<p className="mr-10 font-semibold md:font-bold">{t('LogoHeader')}</p>
{isMobilePage && (
<Close
onClick={handleClose}
className="absolute right-0 top-0 h-6 w-6 cursor-pointer"
/>
)}
</div>
<div
className={`flex w-full flex-col gap-6 overflow-auto pr-5 text-sm md:${
isRuLocale ? 'text-sm' : 'text-base'
Expand Down
86 changes: 86 additions & 0 deletions components/StartPage/OneSection.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import { useRouter } from 'next/router'

import Feedback from './Feedback'
import Logo from './Logo'
import Partners from './Partners'

import Close from 'public/icons/close.svg'

function OneSection({ showSections, toggleSection, label, logo, t }) {
const router = useRouter()
const onClose = () => {
router.replace('/', undefined, { shallow: true, scroll: false })
toggleSection({ partners: false, connect: false })
}

const handleSectionClick = async (section) => {
const sectionKey =
section === 'connect-with-us' ? 'connect' : section === 'about' ? 'logo' : section

if (showSections[sectionKey]) {
toggleSection({ [sectionKey]: false })
await router.replace('/', undefined, { shallow: true, scroll: false })
} else {
await router.replace('/', undefined, { shallow: true, scroll: false })
toggleSection({ [sectionKey]: true })
await router.replace(`/${section}`, undefined, { shallow: true, scroll: false })
}
}

const renderSectionContent = () => {
if (label === t('Partners')) {
return (
<div
onClick={() => handleSectionClick('partners')}
className={`cursor-pointer rounded-xl bg-th-secondary-10 p-5 text-center ${
showSections.partners ? 'col-span-2' : ''
}`}
>
{!showSections.partners && (
<p className={`${showSections.partners ? 'font-semibold' : ''}`}>{label}</p>
)}
{showSections.partners && <Partners t={t} onClose={onClose} />}
</div>
)
}

if (label === t('WriteToUs')) {
return (
<div
onClick={() => handleSectionClick('connect-with-us')}
className={`cursor-pointer rounded-xl bg-th-secondary-10 p-5 text-center ${
showSections.connect ? 'col-span-2' : ''
}`}
>
<p className={`${showSections.connect ? 'pb-10 font-semibold' : ''}`}>
{label}
</p>

{showSections.connect && <Feedback isStartPage={true} onClose={onClose} />}
</div>
)
}

if (label === 'logo') {
return (
<div
onClick={() => handleSectionClick('about')}
className={`flex cursor-pointer justify-center rounded-xl bg-th-secondary-10 p-5`}
>
{!showSections.logo && <p>{logo}</p>}
{showSections.logo && <Logo t={t} isMobilePage={true} onClose={onClose} />}
</div>
)
}

return null
}

return (
<div className="relative rounded-xl bg-th-secondary-10 p-0">
{renderSectionContent()}
</div>
)
}

export default OneSection
11 changes: 9 additions & 2 deletions components/StartPage/Partners.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import Image from 'next/image'
import Link from 'next/link'

import Close from 'public/icons/close.svg'

const partners = [
{
name: 'Unfolding Word',
Expand Down Expand Up @@ -32,9 +34,14 @@ const partners = [
},
]

function Partners({ t }) {
function Partners({ t, onClose }) {
return (
<div className="flex w-full flex-col gap-6 md:gap-14">
<div className="relative flex w-full flex-col gap-6 md:gap-14">
<Close
className="absolute right-0 top-0 h-6 w-6 cursor-pointer stroke-black md:hidden"
onClick={onClose}
/>

<p className="font-semibold md:font-bold">{t('Partners')}</p>
<div className="grid grid-cols-2 gap-3">
{partners.map((partner) => (
Expand Down
47 changes: 0 additions & 47 deletions components/StartPage/SectionBlock.js

This file was deleted.

Loading
Loading