diff --git a/frontend/src/app/[id]/EventAvailabilities.tsx b/frontend/src/app/[id]/EventAvailabilities.tsx new file mode 100644 index 0000000..56f1021 --- /dev/null +++ b/frontend/src/app/[id]/EventAvailabilities.tsx @@ -0,0 +1,118 @@ +'use client' + +import { useMemo, useState } from 'react' +import { Trans } from 'react-i18next/TransWithoutContext' + +import AvailabilityViewer from '/src/components/AvailabilityViewer/AvailabilityViewer' +import Content from '/src/components/Content/Content' +import Login from '/src/components/Login/Login' +import Section from '/src/components/Section/Section' +import SelectField from '/src/components/SelectField/SelectField' +import { EventResponse, PersonResponse } from '/src/config/api' +import { useTranslation } from '/src/i18n/client' +import timezones from '/src/res/timezones.json' +import { expandTimes, makeClass } from '/src/utils' + +import styles from './page.module.scss' + +const EventAvailabilities = ({ event, people }: { event: EventResponse, people: PersonResponse[] }) => { + const { t, i18n } = useTranslation('event') + + const expandedTimes = useMemo(() => expandTimes(event.times), [event.times]) + + const [user, setUser] = useState() + const [password, setPassword] = useState() + + const [tab, setTab] = useState<'group' | 'you'>('group') + const [timezone, setTimezone] = useState(Intl.DateTimeFormat().resolvedOptions().timeZone) + + return <> +
+ + { + setUser(u) + setPassword(p) + }} /> + + setTimezone(event.currentTarget.value)} + options={timezones} + /> + + {event?.timezone && event.timezone !== timezone &&

+ + {/* eslint-disable-next-line */} + {/* @ts-ignore */} + _{{timezone: event.timezone}} + _ { + e.preventDefault() + setTimezone(event.timezone) + }}>__ + +

} + + {(( + Intl.DateTimeFormat().resolvedOptions().timeZone !== timezone + && (event?.timezone && event.timezone !== Intl.DateTimeFormat().resolvedOptions().timeZone) + ) || ( + event?.timezone === undefined + && Intl.DateTimeFormat().resolvedOptions().timeZone !== timezone + )) && ( +

+ + {/* eslint-disable-next-line */} + {/* @ts-ignore */} + _{{timezone: Intl.DateTimeFormat().resolvedOptions().timeZone}} + _ { + e.preventDefault() + setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone) + }}>__ + +

+ )} +
+
+ + +
+ + +
+
+ + {tab === 'group' && } + +} + +export default EventAvailabilities diff --git a/frontend/src/app/[id]/layout.tsx b/frontend/src/app/[id]/layout.tsx new file mode 100644 index 0000000..2717856 --- /dev/null +++ b/frontend/src/app/[id]/layout.tsx @@ -0,0 +1,17 @@ +import Content from '/src/components/Content/Content' +import Footer from '/src/components/Footer/Footer' +import Header from '/src/components/Header/Header' + +const Layout = async ({ children }: { children: React.ReactNode }) => <> + + {/* @ts-expect-error Async Server Component */} +
+ + + {children} + + {/* @ts-expect-error Async Server Component */} +