chore: better Prettier config for easier reviews
This commit is contained in:
@ -1,9 +1,9 @@
|
||||
import type { GetStaticProps, NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { GetStaticProps, NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { ErrorPage } from '../components/ErrorPage'
|
||||
import { Head } from '../components/Head'
|
||||
import type { FooterProps } from '../components/Footer'
|
||||
import { ErrorPage } from "../components/ErrorPage"
|
||||
import { Head } from "../components/Head"
|
||||
import type { FooterProps } from "../components/Footer"
|
||||
|
||||
const Error404: NextPage<FooterProps> = (props) => {
|
||||
const { t } = useTranslation()
|
||||
@ -11,10 +11,10 @@ const Error404: NextPage<FooterProps> = (props) => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head title='Thream | 404' />
|
||||
<Head title="Thream | 404" />
|
||||
<ErrorPage
|
||||
statusCode={404}
|
||||
message={t('errors:page-not-found')}
|
||||
message={t("errors:page-not-found")}
|
||||
version={version}
|
||||
/>
|
||||
</>
|
||||
@ -22,7 +22,7 @@ const Error404: NextPage<FooterProps> = (props) => {
|
||||
}
|
||||
|
||||
export const getStaticProps: GetStaticProps<FooterProps> = async () => {
|
||||
const { readPackage } = await import('read-pkg')
|
||||
const { readPackage } = await import("read-pkg")
|
||||
const { version } = await readPackage()
|
||||
return { props: { version } }
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
import type { GetStaticProps, NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { GetStaticProps, NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { ErrorPage } from '../components/ErrorPage'
|
||||
import { Head } from '../components/Head'
|
||||
import { Header } from '../components/Header'
|
||||
import type { FooterProps } from '../components/Footer'
|
||||
import { ErrorPage } from "../components/ErrorPage"
|
||||
import { Head } from "../components/Head"
|
||||
import { Header } from "../components/Header"
|
||||
import type { FooterProps } from "../components/Footer"
|
||||
|
||||
const Error500: NextPage<FooterProps> = (props) => {
|
||||
const { t } = useTranslation()
|
||||
@ -12,12 +12,12 @@ const Error500: NextPage<FooterProps> = (props) => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head title='Thream | 500' />
|
||||
<Head title="Thream | 500" />
|
||||
|
||||
<Header />
|
||||
<ErrorPage
|
||||
statusCode={500}
|
||||
message={t('errors:server-error')}
|
||||
message={t("errors:server-error")}
|
||||
version={version}
|
||||
/>
|
||||
</>
|
||||
@ -25,7 +25,7 @@ const Error500: NextPage<FooterProps> = (props) => {
|
||||
}
|
||||
|
||||
export const getStaticProps: GetStaticProps<FooterProps> = async () => {
|
||||
const { readPackage } = await import('read-pkg')
|
||||
const { readPackage } = await import("read-pkg")
|
||||
const { version } = await readPackage()
|
||||
return { props: { version } }
|
||||
}
|
||||
|
@ -1,40 +1,40 @@
|
||||
import { useEffect } from 'react'
|
||||
import type { AppType } from 'next/app'
|
||||
import { ThemeProvider } from 'next-themes'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import { useEffect } from "react"
|
||||
import type { AppType } from "next/app"
|
||||
import { ThemeProvider } from "next-themes"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import '../styles/global.css'
|
||||
import "../styles/global.css"
|
||||
|
||||
import '@fontsource/montserrat/400.css'
|
||||
import '@fontsource/montserrat/500.css'
|
||||
import '@fontsource/montserrat/600.css'
|
||||
import '@fontsource/montserrat/700.css'
|
||||
import "@fontsource/montserrat/400.css"
|
||||
import "@fontsource/montserrat/500.css"
|
||||
import "@fontsource/montserrat/600.css"
|
||||
import "@fontsource/montserrat/700.css"
|
||||
|
||||
import '@fontsource/roboto/400.css'
|
||||
import '@fontsource/roboto/700.css'
|
||||
import "@fontsource/roboto/400.css"
|
||||
import "@fontsource/roboto/700.css"
|
||||
|
||||
import { cookies } from '../tools/cookies'
|
||||
import { cookies } from "../tools/cookies"
|
||||
|
||||
const Application: AppType = ({ Component, pageProps }) => {
|
||||
const { lang } = useTranslation()
|
||||
|
||||
useEffect(() => {
|
||||
cookies.set('NEXT_LOCALE', lang)
|
||||
cookies.set("NEXT_LOCALE", lang)
|
||||
const appHeight = (): void => {
|
||||
document.documentElement.style.setProperty(
|
||||
'--app-height',
|
||||
`${window.innerHeight}px`
|
||||
"--app-height",
|
||||
`${window.innerHeight}px`,
|
||||
)
|
||||
}
|
||||
window.addEventListener('resize', appHeight)
|
||||
window.addEventListener("resize", appHeight)
|
||||
appHeight()
|
||||
return () => {
|
||||
window.removeEventListener('resize', appHeight)
|
||||
window.removeEventListener("resize", appHeight)
|
||||
}
|
||||
}, [lang])
|
||||
|
||||
return (
|
||||
<ThemeProvider attribute='class' defaultTheme='dark'>
|
||||
<ThemeProvider attribute="class" defaultTheme="dark">
|
||||
<Component {...pageProps} />
|
||||
</ThemeProvider>
|
||||
)
|
||||
|
@ -1,22 +1,22 @@
|
||||
import type { NextPage } from 'next'
|
||||
import type { NextPage } from "next"
|
||||
|
||||
import { Head } from '../../../../components/Head'
|
||||
import { Application } from '../../../../components/Application'
|
||||
import { Messages } from '../../../../components/Application/Messages'
|
||||
import { SendMessage } from '../../../../components/Application/SendMessage'
|
||||
import type { PagePropsWithAuthentication } from '../../../../tools/authentication'
|
||||
import { Head } from "../../../../components/Head"
|
||||
import { Application } from "../../../../components/Application"
|
||||
import { Messages } from "../../../../components/Application/Messages"
|
||||
import { SendMessage } from "../../../../components/Application/SendMessage"
|
||||
import type { PagePropsWithAuthentication } from "../../../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../../../tools/authentication'
|
||||
import type { GuildMember } from '../../../../contexts/GuildMember'
|
||||
import { GuildMemberProvider } from '../../../../contexts/GuildMember'
|
||||
import { GuildLeftSidebar } from '../../../../components/Application/GuildLeftSidebar'
|
||||
import { ChannelsProvider } from '../../../../contexts/Channels'
|
||||
import { GuildsProvider } from '../../../../contexts/Guilds'
|
||||
import type { Channel } from '../../../../models/Channel'
|
||||
import { MessagesProvider } from '../../../../contexts/Messages'
|
||||
import { MembersProviders } from '../../../../contexts/Members'
|
||||
AuthenticationProvider,
|
||||
} from "../../../../tools/authentication"
|
||||
import type { GuildMember } from "../../../../contexts/GuildMember"
|
||||
import { GuildMemberProvider } from "../../../../contexts/GuildMember"
|
||||
import { GuildLeftSidebar } from "../../../../components/Application/GuildLeftSidebar"
|
||||
import { ChannelsProvider } from "../../../../contexts/Channels"
|
||||
import { GuildsProvider } from "../../../../contexts/Guilds"
|
||||
import type { Channel } from "../../../../models/Channel"
|
||||
import { MessagesProvider } from "../../../../contexts/Messages"
|
||||
import { MembersProviders } from "../../../../contexts/Members"
|
||||
|
||||
export interface ChannelPageProps extends PagePropsWithAuthentication {
|
||||
channelId: number
|
||||
@ -31,7 +31,7 @@ const ChannelPage: NextPage<ChannelPageProps> = (props) => {
|
||||
|
||||
const path = {
|
||||
channelId,
|
||||
guildId
|
||||
guildId,
|
||||
}
|
||||
|
||||
return (
|
||||
@ -62,24 +62,24 @@ const ChannelPage: NextPage<ChannelPageProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true,
|
||||
fetchData: async (context, api) => {
|
||||
const channelId = Number(context?.params?.['channelId'])
|
||||
const guildId = Number(context?.params?.['guildId'])
|
||||
const channelId = Number(context?.params?.["channelId"])
|
||||
const guildId = Number(context?.params?.["guildId"])
|
||||
if (Number.isNaN(channelId) || Number.isNaN(guildId)) {
|
||||
return {
|
||||
notFound: true
|
||||
notFound: true,
|
||||
}
|
||||
}
|
||||
const { data: guildMember } = await api.get(`/guilds/${guildId}`)
|
||||
const { data: selectedChannelData } = await api.get(
|
||||
`/channels/${channelId}`
|
||||
`/channels/${channelId}`,
|
||||
)
|
||||
return {
|
||||
channelId,
|
||||
guildId,
|
||||
guildMember,
|
||||
selectedChannel: selectedChannelData.channel
|
||||
selectedChannel: selectedChannelData.channel,
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default ChannelPage
|
||||
|
@ -1,20 +1,20 @@
|
||||
import type { NextPage } from 'next'
|
||||
import type { NextPage } from "next"
|
||||
|
||||
import { Head } from '../../../../components/Head'
|
||||
import { Application } from '../../../../components/Application'
|
||||
import type { PagePropsWithAuthentication } from '../../../../tools/authentication'
|
||||
import { Head } from "../../../../components/Head"
|
||||
import { Application } from "../../../../components/Application"
|
||||
import type { PagePropsWithAuthentication } from "../../../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../../../tools/authentication'
|
||||
import type { GuildMember } from '../../../../contexts/GuildMember'
|
||||
import { GuildMemberProvider } from '../../../../contexts/GuildMember'
|
||||
import { GuildLeftSidebar } from '../../../../components/Application/GuildLeftSidebar'
|
||||
import { ChannelSettings } from '../../../../components/Application/ChannelSettings'
|
||||
import { ChannelsProvider } from '../../../../contexts/Channels'
|
||||
import { GuildsProvider } from '../../../../contexts/Guilds'
|
||||
import type { Channel } from '../../../../models/Channel'
|
||||
import { MembersProviders } from '../../../../contexts/Members'
|
||||
AuthenticationProvider,
|
||||
} from "../../../../tools/authentication"
|
||||
import type { GuildMember } from "../../../../contexts/GuildMember"
|
||||
import { GuildMemberProvider } from "../../../../contexts/GuildMember"
|
||||
import { GuildLeftSidebar } from "../../../../components/Application/GuildLeftSidebar"
|
||||
import { ChannelSettings } from "../../../../components/Application/ChannelSettings"
|
||||
import { ChannelsProvider } from "../../../../contexts/Channels"
|
||||
import { GuildsProvider } from "../../../../contexts/Guilds"
|
||||
import type { Channel } from "../../../../models/Channel"
|
||||
import { MembersProviders } from "../../../../contexts/Members"
|
||||
|
||||
export interface ChannelSettingsPageProps extends PagePropsWithAuthentication {
|
||||
channelId: number
|
||||
@ -29,7 +29,7 @@ const ChannelSettingsPage: NextPage<ChannelSettingsPageProps> = (props) => {
|
||||
|
||||
const path = {
|
||||
channelId,
|
||||
guildId
|
||||
guildId,
|
||||
}
|
||||
|
||||
return (
|
||||
@ -57,31 +57,31 @@ const ChannelSettingsPage: NextPage<ChannelSettingsPageProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true,
|
||||
fetchData: async (context, api) => {
|
||||
const channelId = Number(context?.params?.['channelId'])
|
||||
const guildId = Number(context?.params?.['guildId'])
|
||||
const channelId = Number(context?.params?.["channelId"])
|
||||
const guildId = Number(context?.params?.["guildId"])
|
||||
if (Number.isNaN(channelId) || Number.isNaN(guildId)) {
|
||||
return {
|
||||
notFound: true
|
||||
notFound: true,
|
||||
}
|
||||
}
|
||||
const { data: guildMember } = await api.get<GuildMember>(
|
||||
`/guilds/${guildId}`
|
||||
`/guilds/${guildId}`,
|
||||
)
|
||||
if (!guildMember.member.isOwner) {
|
||||
return {
|
||||
notFound: true
|
||||
notFound: true,
|
||||
}
|
||||
}
|
||||
const { data: selectedChannelData } = await api.get(
|
||||
`/channels/${channelId}`
|
||||
`/channels/${channelId}`,
|
||||
)
|
||||
return {
|
||||
channelId,
|
||||
guildId,
|
||||
guildMember,
|
||||
selectedChannel: selectedChannelData.channel
|
||||
selectedChannel: selectedChannelData.channel,
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default ChannelSettingsPage
|
||||
|
@ -1,17 +1,17 @@
|
||||
import type { NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { Head } from '../../../../components/Head'
|
||||
import { Application } from '../../../../components/Application'
|
||||
import type { PagePropsWithAuthentication } from '../../../../tools/authentication'
|
||||
import { Head } from "../../../../components/Head"
|
||||
import { Application } from "../../../../components/Application"
|
||||
import type { PagePropsWithAuthentication } from "../../../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../../../tools/authentication'
|
||||
import { CreateChannel } from '../../../../components/Application/CreateChannel'
|
||||
import { GuildsProvider } from '../../../../contexts/Guilds'
|
||||
import type { GuildMember } from '../../../../contexts/GuildMember'
|
||||
import { GuildMemberProvider } from '../../../../contexts/GuildMember'
|
||||
AuthenticationProvider,
|
||||
} from "../../../../tools/authentication"
|
||||
import { CreateChannel } from "../../../../components/Application/CreateChannel"
|
||||
import { GuildsProvider } from "../../../../contexts/Guilds"
|
||||
import type { GuildMember } from "../../../../contexts/GuildMember"
|
||||
import { GuildMemberProvider } from "../../../../contexts/GuildMember"
|
||||
|
||||
export interface CreateChannelPageProps extends PagePropsWithAuthentication {
|
||||
guildId: number
|
||||
@ -29,10 +29,10 @@ const CreateChannelPage: NextPage<CreateChannelPageProps> = (props) => {
|
||||
<GuildsProvider>
|
||||
<GuildMemberProvider guildMember={guildMember} path={path}>
|
||||
<Head
|
||||
title={`Thream | ${t('application:create-a-channel')}`}
|
||||
description={t('application:create-a-channel')}
|
||||
title={`Thream | ${t("application:create-a-channel")}`}
|
||||
description={t("application:create-a-channel")}
|
||||
/>
|
||||
<Application path={path} title={t('application:create-a-channel')}>
|
||||
<Application path={path} title={t("application:create-a-channel")}>
|
||||
<CreateChannel />
|
||||
</Application>
|
||||
</GuildMemberProvider>
|
||||
@ -44,18 +44,18 @@ const CreateChannelPage: NextPage<CreateChannelPageProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true,
|
||||
fetchData: async (context, api) => {
|
||||
const guildId = Number(context?.params?.['guildId'])
|
||||
const guildId = Number(context?.params?.["guildId"])
|
||||
if (Number.isNaN(guildId)) {
|
||||
return {
|
||||
notFound: true
|
||||
notFound: true,
|
||||
}
|
||||
}
|
||||
const { data: guildMember } = await api.get(`/guilds/${guildId}`)
|
||||
return {
|
||||
guildId,
|
||||
guildMember
|
||||
guildMember,
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default CreateChannelPage
|
||||
|
@ -1,17 +1,17 @@
|
||||
import type { NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { Head } from '../../../components/Head'
|
||||
import { Application } from '../../../components/Application'
|
||||
import type { PagePropsWithAuthentication } from '../../../tools/authentication'
|
||||
import { Head } from "../../../components/Head"
|
||||
import { Application } from "../../../components/Application"
|
||||
import type { PagePropsWithAuthentication } from "../../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../../tools/authentication'
|
||||
import type { GuildMember } from '../../../contexts/GuildMember'
|
||||
import { GuildMemberProvider } from '../../../contexts/GuildMember'
|
||||
import { GuildsProvider } from '../../../contexts/Guilds'
|
||||
import { GuildSettings } from '../../../components/Application/GuildSettings'
|
||||
AuthenticationProvider,
|
||||
} from "../../../tools/authentication"
|
||||
import type { GuildMember } from "../../../contexts/GuildMember"
|
||||
import { GuildMemberProvider } from "../../../contexts/GuildMember"
|
||||
import { GuildsProvider } from "../../../contexts/Guilds"
|
||||
import { GuildSettings } from "../../../components/Application/GuildSettings"
|
||||
|
||||
export interface GuildSettingsPageProps extends PagePropsWithAuthentication {
|
||||
guildId: number
|
||||
@ -28,8 +28,8 @@ const GuildSettingsPage: NextPage<GuildSettingsPageProps> = (props) => {
|
||||
<AuthenticationProvider authentication={authentication}>
|
||||
<GuildsProvider>
|
||||
<GuildMemberProvider guildMember={guildMember} path={path}>
|
||||
<Head title={`Thream | ${t('application:guild-settings')}`} />
|
||||
<Application path={path} title={t('application:guild-settings')}>
|
||||
<Head title={`Thream | ${t("application:guild-settings")}`} />
|
||||
<Application path={path} title={t("application:guild-settings")}>
|
||||
<GuildSettings />
|
||||
</Application>
|
||||
</GuildMemberProvider>
|
||||
@ -41,20 +41,20 @@ const GuildSettingsPage: NextPage<GuildSettingsPageProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true,
|
||||
fetchData: async (context, api) => {
|
||||
const guildId = Number(context?.params?.['guildId'])
|
||||
const guildId = Number(context?.params?.["guildId"])
|
||||
if (Number.isNaN(guildId)) {
|
||||
return {
|
||||
notFound: true
|
||||
notFound: true,
|
||||
}
|
||||
}
|
||||
const { data: guildMember } = await api.get<GuildMember>(
|
||||
`/guilds/${guildId}`
|
||||
`/guilds/${guildId}`,
|
||||
)
|
||||
return {
|
||||
guildId,
|
||||
guildMember
|
||||
guildMember,
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default GuildSettingsPage
|
||||
|
@ -1,15 +1,15 @@
|
||||
import type { NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { Head } from '../../../components/Head'
|
||||
import { Application } from '../../../components/Application'
|
||||
import type { PagePropsWithAuthentication } from '../../../tools/authentication'
|
||||
import { Head } from "../../../components/Head"
|
||||
import { Application } from "../../../components/Application"
|
||||
import type { PagePropsWithAuthentication } from "../../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../../tools/authentication'
|
||||
import { CreateGuild } from '../../../components/Application/CreateGuild'
|
||||
import { GuildsProvider } from '../../../contexts/Guilds'
|
||||
AuthenticationProvider,
|
||||
} from "../../../tools/authentication"
|
||||
import { CreateGuild } from "../../../components/Application/CreateGuild"
|
||||
import { GuildsProvider } from "../../../contexts/Guilds"
|
||||
|
||||
const CreateGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
const { t } = useTranslation()
|
||||
@ -18,12 +18,12 @@ const CreateGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
<AuthenticationProvider authentication={props.authentication}>
|
||||
<GuildsProvider>
|
||||
<Head
|
||||
title={`Thream | ${t('application:create-a-guild')}`}
|
||||
description={t('application:create-a-guild-description')}
|
||||
title={`Thream | ${t("application:create-a-guild")}`}
|
||||
description={t("application:create-a-guild-description")}
|
||||
/>
|
||||
<Application
|
||||
path='/application/guilds/create'
|
||||
title={t('application:create-a-guild')}
|
||||
path="/application/guilds/create"
|
||||
title={t("application:create-a-guild")}
|
||||
>
|
||||
<CreateGuild />
|
||||
</Application>
|
||||
@ -33,7 +33,7 @@ const CreateGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
}
|
||||
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true
|
||||
shouldBeAuthenticated: true,
|
||||
})
|
||||
|
||||
export default CreateGuildPage
|
||||
|
@ -1,15 +1,15 @@
|
||||
import type { NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { Head } from '../../../components/Head'
|
||||
import { Application } from '../../../components/Application'
|
||||
import type { PagePropsWithAuthentication } from '../../../tools/authentication'
|
||||
import { Head } from "../../../components/Head"
|
||||
import { Application } from "../../../components/Application"
|
||||
import type { PagePropsWithAuthentication } from "../../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../../tools/authentication'
|
||||
import { JoinGuildsPublic } from '../../../components/Application/JoinGuildsPublic'
|
||||
import { GuildsProvider } from '../../../contexts/Guilds'
|
||||
AuthenticationProvider,
|
||||
} from "../../../tools/authentication"
|
||||
import { JoinGuildsPublic } from "../../../components/Application/JoinGuildsPublic"
|
||||
import { GuildsProvider } from "../../../contexts/Guilds"
|
||||
|
||||
const JoinGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
const { t } = useTranslation()
|
||||
@ -18,12 +18,12 @@ const JoinGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
<AuthenticationProvider authentication={props.authentication}>
|
||||
<GuildsProvider>
|
||||
<Head
|
||||
title={`Thream | ${t('application:join-a-guild')}`}
|
||||
description={t('application:join-a-guild-description')}
|
||||
title={`Thream | ${t("application:join-a-guild")}`}
|
||||
description={t("application:join-a-guild-description")}
|
||||
/>
|
||||
<Application
|
||||
path='/application/guilds/join'
|
||||
title={t('application:join-a-guild')}
|
||||
path="/application/guilds/join"
|
||||
title={t("application:join-a-guild")}
|
||||
>
|
||||
<JoinGuildsPublic />
|
||||
</Application>
|
||||
@ -33,7 +33,7 @@ const JoinGuildPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
}
|
||||
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true
|
||||
shouldBeAuthenticated: true,
|
||||
})
|
||||
|
||||
export default JoinGuildPage
|
||||
|
@ -1,21 +1,21 @@
|
||||
import type { NextPage } from 'next'
|
||||
import type { NextPage } from "next"
|
||||
|
||||
import { Head } from '../../components/Head'
|
||||
import { Application } from '../../components/Application'
|
||||
import { PopupGuild } from '../../components/Application/PopupGuild'
|
||||
import type { PagePropsWithAuthentication } from '../../tools/authentication'
|
||||
import { Head } from "../../components/Head"
|
||||
import { Application } from "../../components/Application"
|
||||
import { PopupGuild } from "../../components/Application/PopupGuild"
|
||||
import type { PagePropsWithAuthentication } from "../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../tools/authentication'
|
||||
import { GuildsProvider } from '../../contexts/Guilds'
|
||||
AuthenticationProvider,
|
||||
} from "../../tools/authentication"
|
||||
import { GuildsProvider } from "../../contexts/Guilds"
|
||||
|
||||
const ApplicationPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
return (
|
||||
<AuthenticationProvider authentication={props.authentication}>
|
||||
<GuildsProvider>
|
||||
<Head title='Thream | Application' />
|
||||
<Application path='/application' title='Application'>
|
||||
<Head title="Thream | Application" />
|
||||
<Application path="/application" title="Application">
|
||||
<PopupGuild />
|
||||
</Application>
|
||||
</GuildsProvider>
|
||||
@ -24,7 +24,7 @@ const ApplicationPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
}
|
||||
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true
|
||||
shouldBeAuthenticated: true,
|
||||
})
|
||||
|
||||
export default ApplicationPage
|
||||
|
@ -1,16 +1,16 @@
|
||||
import type { NextPage } from 'next'
|
||||
import type { NextPage } from "next"
|
||||
|
||||
import { Head } from '../../../../components/Head'
|
||||
import { Application } from '../../../../components/Application'
|
||||
import type { PagePropsWithAuthentication } from '../../../../tools/authentication'
|
||||
import { Head } from "../../../../components/Head"
|
||||
import { Application } from "../../../../components/Application"
|
||||
import type { PagePropsWithAuthentication } from "../../../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../../../tools/authentication'
|
||||
import { UserProfile } from '../../../../components/Application/UserProfile'
|
||||
import { GuildsProvider } from '../../../../contexts/Guilds'
|
||||
import type { UserPublic } from '../../../../models/User'
|
||||
import type { Guild } from '../../../../models/Guild'
|
||||
AuthenticationProvider,
|
||||
} from "../../../../tools/authentication"
|
||||
import { UserProfile } from "../../../../components/Application/UserProfile"
|
||||
import { GuildsProvider } from "../../../../contexts/Guilds"
|
||||
import type { UserPublic } from "../../../../models/User"
|
||||
import type { Guild } from "../../../../models/Guild"
|
||||
|
||||
export interface UserProfilePageProps extends PagePropsWithAuthentication {
|
||||
user: UserPublic
|
||||
@ -35,18 +35,18 @@ const UserProfilePage: NextPage<UserProfilePageProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true,
|
||||
fetchData: async (context, api) => {
|
||||
const userId = Number(context?.params?.['userId'])
|
||||
const userId = Number(context?.params?.["userId"])
|
||||
if (Number.isNaN(userId)) {
|
||||
return {
|
||||
notFound: true
|
||||
notFound: true,
|
||||
}
|
||||
}
|
||||
const { data } = await api.get(`/users/${userId}`)
|
||||
return {
|
||||
user: data.user,
|
||||
guilds: data.guilds
|
||||
guilds: data.guilds,
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default UserProfilePage
|
||||
|
@ -1,15 +1,15 @@
|
||||
import type { NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { Head } from '../../../components/Head'
|
||||
import { Application } from '../../../components/Application'
|
||||
import type { PagePropsWithAuthentication } from '../../../tools/authentication'
|
||||
import { Head } from "../../../components/Head"
|
||||
import { Application } from "../../../components/Application"
|
||||
import type { PagePropsWithAuthentication } from "../../../tools/authentication"
|
||||
import {
|
||||
authenticationFromServerSide,
|
||||
AuthenticationProvider
|
||||
} from '../../../tools/authentication'
|
||||
import { UserSettings } from '../../../components/Application/UserSettings'
|
||||
import { GuildsProvider } from '../../../contexts/Guilds'
|
||||
AuthenticationProvider,
|
||||
} from "../../../tools/authentication"
|
||||
import { UserSettings } from "../../../components/Application/UserSettings"
|
||||
import { GuildsProvider } from "../../../contexts/Guilds"
|
||||
|
||||
const UserSettingsPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
const { t } = useTranslation()
|
||||
@ -17,10 +17,10 @@ const UserSettingsPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
return (
|
||||
<AuthenticationProvider authentication={props.authentication}>
|
||||
<GuildsProvider>
|
||||
<Head title={`Thream | ${t('application:user-settings')}`} />
|
||||
<Head title={`Thream | ${t("application:user-settings")}`} />
|
||||
<Application
|
||||
path='/application/users/settings'
|
||||
title={t('application:user-settings')}
|
||||
path="/application/users/settings"
|
||||
title={t("application:user-settings")}
|
||||
>
|
||||
<UserSettings />
|
||||
</Application>
|
||||
@ -30,7 +30,7 @@ const UserSettingsPage: NextPage<PagePropsWithAuthentication> = (props) => {
|
||||
}
|
||||
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: true
|
||||
shouldBeAuthenticated: true,
|
||||
})
|
||||
|
||||
export default UserSettingsPage
|
||||
|
@ -1,26 +1,26 @@
|
||||
import type { NextPage } from 'next'
|
||||
import Link from 'next/link'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import axios from 'axios'
|
||||
import { useForm } from 'react-component-form'
|
||||
import type { HandleUseFormCallback } from 'react-component-form'
|
||||
import type { NextPage } from "next"
|
||||
import Link from "next/link"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
import axios from "axios"
|
||||
import { useForm } from "react-component-form"
|
||||
import type { HandleUseFormCallback } from "react-component-form"
|
||||
|
||||
import { AuthenticationForm } from '../../components/Authentication'
|
||||
import { Head } from '../../components/Head'
|
||||
import { Header } from '../../components/Header'
|
||||
import { Main } from '../../components/design/Main'
|
||||
import type { FooterProps } from '../../components/Footer'
|
||||
import { Footer } from '../../components/Footer'
|
||||
import { Input } from '../../components/design/Input'
|
||||
import { Button } from '../../components/design/Button'
|
||||
import { FormState } from '../../components/design/FormState'
|
||||
import { authenticationFromServerSide } from '../../tools/authentication'
|
||||
import { userSchema } from '../../models/User'
|
||||
import { api } from '../../tools/api'
|
||||
import { useFormTranslation } from '../../hooks/useFormTranslation'
|
||||
import { AuthenticationForm } from "../../components/Authentication"
|
||||
import { Head } from "../../components/Head"
|
||||
import { Header } from "../../components/Header"
|
||||
import { Main } from "../../components/design/Main"
|
||||
import type { FooterProps } from "../../components/Footer"
|
||||
import { Footer } from "../../components/Footer"
|
||||
import { Input } from "../../components/design/Input"
|
||||
import { Button } from "../../components/design/Button"
|
||||
import { FormState } from "../../components/design/FormState"
|
||||
import { authenticationFromServerSide } from "../../tools/authentication"
|
||||
import { userSchema } from "../../models/User"
|
||||
import { api } from "../../tools/api"
|
||||
import { useFormTranslation } from "../../hooks/useFormTranslation"
|
||||
|
||||
const schema = {
|
||||
email: userSchema.email
|
||||
email: userSchema.email,
|
||||
}
|
||||
|
||||
const ForgotPassword: NextPage<FooterProps> = (props) => {
|
||||
@ -32,50 +32,50 @@ const ForgotPassword: NextPage<FooterProps> = (props) => {
|
||||
|
||||
const onSubmit: HandleUseFormCallback<typeof schema> = async (
|
||||
formData,
|
||||
formElement
|
||||
formElement,
|
||||
) => {
|
||||
try {
|
||||
await api.post(
|
||||
`/users/reset-password?redirectURI=${window.location.origin}/authentication/reset-password`,
|
||||
formData
|
||||
formData,
|
||||
)
|
||||
formElement.reset()
|
||||
return {
|
||||
type: 'success',
|
||||
message: 'authentication:success-forgot-password'
|
||||
type: "success",
|
||||
message: "authentication:success-forgot-password",
|
||||
}
|
||||
} catch (error) {
|
||||
if (axios.isAxiosError(error) && error.response?.status === 400) {
|
||||
return {
|
||||
type: 'error',
|
||||
message: 'errors:invalid-email'
|
||||
type: "error",
|
||||
message: "errors:invalid-email",
|
||||
}
|
||||
}
|
||||
return {
|
||||
type: 'error',
|
||||
message: 'errors:server-error'
|
||||
type: "error",
|
||||
message: "errors:server-error",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head title={`Thream | ${t('authentication:forgot-password')}`} />
|
||||
<Head title={`Thream | ${t("authentication:forgot-password")}`} />
|
||||
<Header />
|
||||
<Main>
|
||||
<AuthenticationForm onSubmit={handleUseForm(onSubmit)}>
|
||||
<Input type='email' placeholder='Email' name='email' label='Email' />
|
||||
<Button data-cy='submit' className='mt-6 w-full' type='submit'>
|
||||
{t('authentication:submit')}
|
||||
<Input type="email" placeholder="Email" name="email" label="Email" />
|
||||
<Button data-cy="submit" className="mt-6 w-full" type="submit">
|
||||
{t("authentication:submit")}
|
||||
</Button>
|
||||
<p className='mt-3 font-headline text-sm text-green-800 hover:underline dark:text-green-400'>
|
||||
<Link href='/authentication/signin'>
|
||||
{t('authentication:already-know-password')}
|
||||
<p className="mt-3 font-headline text-sm text-green-800 hover:underline dark:text-green-400">
|
||||
<Link href="/authentication/signin">
|
||||
{t("authentication:already-know-password")}
|
||||
</Link>
|
||||
</p>
|
||||
</AuthenticationForm>
|
||||
<FormState
|
||||
id='message'
|
||||
id="message"
|
||||
state={fetchState}
|
||||
message={
|
||||
message != null
|
||||
@ -92,10 +92,10 @@ const ForgotPassword: NextPage<FooterProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: false,
|
||||
fetchData: async () => {
|
||||
const { readPackage } = await import('read-pkg')
|
||||
const { readPackage } = await import("read-pkg")
|
||||
const { version } = await readPackage()
|
||||
return { version }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default ForgotPassword
|
||||
|
@ -1,26 +1,26 @@
|
||||
import type { NextPage } from 'next'
|
||||
import { useRouter } from 'next/router'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import axios from 'axios'
|
||||
import { useForm } from 'react-component-form'
|
||||
import type { HandleUseFormCallback } from 'react-component-form'
|
||||
import type { NextPage } from "next"
|
||||
import { useRouter } from "next/router"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
import axios from "axios"
|
||||
import { useForm } from "react-component-form"
|
||||
import type { HandleUseFormCallback } from "react-component-form"
|
||||
|
||||
import { Head } from '../../components/Head'
|
||||
import { Header } from '../../components/Header'
|
||||
import { FormState } from '../../components/design/FormState'
|
||||
import { Main } from '../../components/design/Main'
|
||||
import type { FooterProps } from '../../components/Footer'
|
||||
import { Footer } from '../../components/Footer'
|
||||
import { Input } from '../../components/design/Input'
|
||||
import { Button } from '../../components/design/Button'
|
||||
import { authenticationFromServerSide } from '../../tools/authentication'
|
||||
import { AuthenticationForm } from '../../components/Authentication'
|
||||
import { api } from '../../tools/api'
|
||||
import { userSchema } from '../../models/User'
|
||||
import { useFormTranslation } from '../../hooks/useFormTranslation'
|
||||
import { Head } from "../../components/Head"
|
||||
import { Header } from "../../components/Header"
|
||||
import { FormState } from "../../components/design/FormState"
|
||||
import { Main } from "../../components/design/Main"
|
||||
import type { FooterProps } from "../../components/Footer"
|
||||
import { Footer } from "../../components/Footer"
|
||||
import { Input } from "../../components/design/Input"
|
||||
import { Button } from "../../components/design/Button"
|
||||
import { authenticationFromServerSide } from "../../tools/authentication"
|
||||
import { AuthenticationForm } from "../../components/Authentication"
|
||||
import { api } from "../../tools/api"
|
||||
import { userSchema } from "../../models/User"
|
||||
import { useFormTranslation } from "../../hooks/useFormTranslation"
|
||||
|
||||
const schema = {
|
||||
password: userSchema.password
|
||||
password: userSchema.password,
|
||||
}
|
||||
|
||||
const ResetPassword: NextPage<FooterProps> = (props) => {
|
||||
@ -35,42 +35,42 @@ const ResetPassword: NextPage<FooterProps> = (props) => {
|
||||
try {
|
||||
await api.put(`/users/reset-password`, {
|
||||
...formData,
|
||||
temporaryToken: router.query['temporaryToken']
|
||||
temporaryToken: router.query["temporaryToken"],
|
||||
})
|
||||
await router.push('/authentication/signin')
|
||||
await router.push("/authentication/signin")
|
||||
return null
|
||||
} catch (error) {
|
||||
if (axios.isAxiosError(error) && error.response?.status === 400) {
|
||||
return {
|
||||
type: 'error',
|
||||
message: 'errors:invalid'
|
||||
type: "error",
|
||||
message: "errors:invalid",
|
||||
}
|
||||
}
|
||||
return {
|
||||
type: 'error',
|
||||
message: 'errors:server-error'
|
||||
type: "error",
|
||||
message: "errors:server-error",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head title={`Thream | ${t('authentication:reset-password')}`} />
|
||||
<Head title={`Thream | ${t("authentication:reset-password")}`} />
|
||||
<Header />
|
||||
<Main>
|
||||
<AuthenticationForm onSubmit={handleUseForm(onSubmit)}>
|
||||
<Input
|
||||
type='password'
|
||||
placeholder='Password'
|
||||
name='password'
|
||||
label='Password'
|
||||
type="password"
|
||||
placeholder="Password"
|
||||
name="password"
|
||||
label="Password"
|
||||
/>
|
||||
<Button data-cy='submit' className='mt-6 w-full' type='submit'>
|
||||
{t('authentication:submit')}
|
||||
<Button data-cy="submit" className="mt-6 w-full" type="submit">
|
||||
{t("authentication:submit")}
|
||||
</Button>
|
||||
</AuthenticationForm>
|
||||
<FormState
|
||||
id='message'
|
||||
id="message"
|
||||
state={fetchState}
|
||||
message={
|
||||
message != null
|
||||
@ -87,10 +87,10 @@ const ResetPassword: NextPage<FooterProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: false,
|
||||
fetchData: async () => {
|
||||
const { readPackage } = await import('read-pkg')
|
||||
const { readPackage } = await import("read-pkg")
|
||||
const { version } = await readPackage()
|
||||
return { version }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default ResetPassword
|
||||
|
@ -1,12 +1,12 @@
|
||||
import type { NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { Head } from '../../components/Head'
|
||||
import { Authentication } from '../../components/Authentication'
|
||||
import { Header } from '../../components/Header'
|
||||
import type { FooterProps } from '../../components/Footer'
|
||||
import { Footer } from '../../components/Footer'
|
||||
import { authenticationFromServerSide } from '../../tools/authentication'
|
||||
import { Head } from "../../components/Head"
|
||||
import { Authentication } from "../../components/Authentication"
|
||||
import { Header } from "../../components/Header"
|
||||
import type { FooterProps } from "../../components/Footer"
|
||||
import { Footer } from "../../components/Footer"
|
||||
import { authenticationFromServerSide } from "../../tools/authentication"
|
||||
|
||||
const Signin: NextPage<FooterProps> = (props) => {
|
||||
const { version } = props
|
||||
@ -14,9 +14,9 @@ const Signin: NextPage<FooterProps> = (props) => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head title={`Thream | ${t('authentication:signin')}`} />
|
||||
<Head title={`Thream | ${t("authentication:signin")}`} />
|
||||
<Header />
|
||||
<Authentication mode='signin' />
|
||||
<Authentication mode="signin" />
|
||||
<Footer version={version} />
|
||||
</>
|
||||
)
|
||||
@ -25,10 +25,10 @@ const Signin: NextPage<FooterProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: false,
|
||||
fetchData: async () => {
|
||||
const { readPackage } = await import('read-pkg')
|
||||
const { readPackage } = await import("read-pkg")
|
||||
const { version } = await readPackage()
|
||||
return { version }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default Signin
|
||||
|
@ -1,12 +1,12 @@
|
||||
import type { NextPage } from 'next'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { NextPage } from "next"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { Head } from '../../components/Head'
|
||||
import { Authentication } from '../../components/Authentication'
|
||||
import { Header } from '../../components/Header'
|
||||
import type { FooterProps } from '../../components/Footer'
|
||||
import { Footer } from '../../components/Footer'
|
||||
import { authenticationFromServerSide } from '../../tools/authentication'
|
||||
import { Head } from "../../components/Head"
|
||||
import { Authentication } from "../../components/Authentication"
|
||||
import { Header } from "../../components/Header"
|
||||
import type { FooterProps } from "../../components/Footer"
|
||||
import { Footer } from "../../components/Footer"
|
||||
import { authenticationFromServerSide } from "../../tools/authentication"
|
||||
|
||||
const Signup: NextPage<FooterProps> = (props) => {
|
||||
const { version } = props
|
||||
@ -14,9 +14,9 @@ const Signup: NextPage<FooterProps> = (props) => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head title={`Thream | ${t('authentication:signup')}`} />
|
||||
<Head title={`Thream | ${t("authentication:signup")}`} />
|
||||
<Header />
|
||||
<Authentication mode='signup' />
|
||||
<Authentication mode="signup" />
|
||||
<Footer version={version} />
|
||||
</>
|
||||
)
|
||||
@ -25,10 +25,10 @@ const Signup: NextPage<FooterProps> = (props) => {
|
||||
export const getServerSideProps = authenticationFromServerSide({
|
||||
shouldBeAuthenticated: false,
|
||||
fetchData: async () => {
|
||||
const { readPackage } = await import('read-pkg')
|
||||
const { readPackage } = await import("read-pkg")
|
||||
const { version } = await readPackage()
|
||||
return { version }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
export default Signup
|
||||
|
@ -1,16 +1,16 @@
|
||||
import type { GetStaticProps, NextPage } from 'next'
|
||||
import Link from 'next/link'
|
||||
import Image from 'next/image'
|
||||
import Translation from 'next-translate/Trans'
|
||||
import useTranslation from 'next-translate/useTranslation'
|
||||
import type { GetStaticProps, NextPage } from "next"
|
||||
import Link from "next/link"
|
||||
import Image from "next/image"
|
||||
import Translation from "next-translate/Trans"
|
||||
import useTranslation from "next-translate/useTranslation"
|
||||
|
||||
import { Head } from '../components/Head'
|
||||
import { Header } from '../components/Header'
|
||||
import { Main } from '../components/design/Main'
|
||||
import type { FooterProps } from '../components/Footer'
|
||||
import { Footer } from '../components/Footer'
|
||||
import { SocialMediaLink } from '../components/design/SocialMediaButton'
|
||||
import { ButtonLink } from '../components/design/Button'
|
||||
import { Head } from "../components/Head"
|
||||
import { Header } from "../components/Header"
|
||||
import { Main } from "../components/design/Main"
|
||||
import type { FooterProps } from "../components/Footer"
|
||||
import { Footer } from "../components/Footer"
|
||||
import { SocialMediaLink } from "../components/design/SocialMediaButton"
|
||||
import { ButtonLink } from "../components/design/Button"
|
||||
|
||||
const Home: NextPage<FooterProps> = (props) => {
|
||||
const { t } = useTranslation()
|
||||
@ -21,49 +21,49 @@ const Home: NextPage<FooterProps> = (props) => {
|
||||
<Head />
|
||||
<Header />
|
||||
<Main>
|
||||
<div className='flex w-4/5 flex-col items-center'>
|
||||
<div className='max-w-xs'>
|
||||
<Link href='/authentication/signup'>
|
||||
<div className="flex w-4/5 flex-col items-center">
|
||||
<div className="max-w-xs">
|
||||
<Link href="/authentication/signup">
|
||||
<Image
|
||||
quality={100}
|
||||
width={351}
|
||||
height={341}
|
||||
src='/images/svg/design/home.svg'
|
||||
src="/images/svg/design/home.svg"
|
||||
alt={"Thream's chat app"}
|
||||
priority
|
||||
/>
|
||||
</Link>
|
||||
</div>
|
||||
<div className='text-center'>
|
||||
<h1 className='my-4 font-headline text-3xl font-medium text-green-800 dark:text-green-400'>
|
||||
<div className="text-center">
|
||||
<h1 className="my-4 font-headline text-3xl font-medium text-green-800 dark:text-green-400">
|
||||
Thream
|
||||
</h1>
|
||||
<div
|
||||
className='max-w-lg font-paragraph text-lg'
|
||||
data-cy='main-description'
|
||||
className="max-w-lg font-paragraph text-lg"
|
||||
data-cy="main-description"
|
||||
>
|
||||
<Translation
|
||||
i18nKey='home:description'
|
||||
i18nKey="home:description"
|
||||
components={[
|
||||
<strong
|
||||
className='font-bold text-green-800 dark:text-green-400'
|
||||
key='bold'
|
||||
/>
|
||||
className="font-bold text-green-800 dark:text-green-400"
|
||||
key="bold"
|
||||
/>,
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div className='mt-8 flex items-center justify-center space-x-4 text-center'>
|
||||
<Link href='/authentication/signup' passHref legacyBehavior>
|
||||
<ButtonLink data-cy='get-started'>
|
||||
{t('home:get-started')}
|
||||
<div className="mt-8 flex items-center justify-center space-x-4 text-center">
|
||||
<Link href="/authentication/signup" passHref legacyBehavior>
|
||||
<ButtonLink data-cy="get-started">
|
||||
{t("home:get-started")}
|
||||
</ButtonLink>
|
||||
</Link>
|
||||
|
||||
<SocialMediaLink
|
||||
socialMedia='GitHub'
|
||||
href='https://github.com/Thream'
|
||||
target='_blank'
|
||||
rel='noopener noreferrer'
|
||||
socialMedia="GitHub"
|
||||
href="https://github.com/Thream"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -75,7 +75,7 @@ const Home: NextPage<FooterProps> = (props) => {
|
||||
}
|
||||
|
||||
export const getStaticProps: GetStaticProps<FooterProps> = async () => {
|
||||
const { readPackage } = await import('read-pkg')
|
||||
const { readPackage } = await import("read-pkg")
|
||||
const { version } = await readPackage()
|
||||
return { props: { version } }
|
||||
}
|
||||
|
Reference in New Issue
Block a user