2
2
mirror of https://github.com/Thream/website.git synced 2024-07-06 18:40:12 +02:00

build(deps): bump Next.js to v13

This commit is contained in:
Divlo 2022-12-13 11:38:07 +01:00
parent ccaf5234ed
commit 734357b396
No known key found for this signature in database
GPG Key ID: 8F9478F220CE65E9
29 changed files with 3430 additions and 4427 deletions

View File

@ -1,2 +1,2 @@
ARG VARIANT="16" ARG VARIANT="18"
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT} FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT}

View File

@ -1,3 +1,3 @@
COMPOSE_PROJECT_NAME=thream-website COMPOSE_PROJECT_NAME=thream-website
NEXT_PUBLIC_API_URL=http://localhost:8080 NEXT_PUBLIC_API_URL=http://127.0.0.1:8080
PORT=3000 PORT=3000

View File

@ -16,12 +16,12 @@ jobs:
language: ['javascript'] language: ['javascript']
steps: steps:
- uses: 'actions/checkout@v3.0.0' - uses: 'actions/checkout@v3.1.0'
- name: 'Initialize CodeQL' - name: 'Initialize CodeQL'
uses: 'github/codeql-action/init@v1' uses: 'github/codeql-action/init@v2'
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
- name: 'Perform CodeQL Analysis' - name: 'Perform CodeQL Analysis'
uses: 'github/codeql-action/analyze@v1' uses: 'github/codeql-action/analyze@v2'

View File

@ -10,12 +10,12 @@ jobs:
build: build:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.0.0' - uses: 'actions/checkout@v3.1.0'
- name: 'Use Node.js' - name: 'Use Node.js'
uses: 'actions/setup-node@v3.0.0' uses: 'actions/setup-node@v3.5.1'
with: with:
node-version: '16.x' node-version: '18.x'
cache: 'npm' cache: 'npm'
- name: 'Install' - name: 'Install'

View File

@ -10,12 +10,12 @@ jobs:
lint: lint:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.0.0' - uses: 'actions/checkout@v3.1.0'
- name: 'Use Node.js' - name: 'Use Node.js'
uses: 'actions/setup-node@v3.0.0' uses: 'actions/setup-node@v3.5.1'
with: with:
node-version: '16.x' node-version: '18.x'
cache: 'npm' cache: 'npm'
- name: 'Install' - name: 'Install'
@ -42,6 +42,6 @@ jobs:
github_token: ${{ secrets.github_token }} github_token: ${{ secrets.github_token }}
- name: 'lint:docker' - name: 'lint:docker'
uses: 'hadolint/hadolint-action@v1.6.0' uses: 'hadolint/hadolint-action@v3.0.0'
with: with:
dockerfile: './Dockerfile' dockerfile: './Dockerfile'

View File

@ -8,7 +8,7 @@ jobs:
release: release:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.0.0' - uses: 'actions/checkout@v3.1.0'
with: with:
fetch-depth: 0 fetch-depth: 0
persist-credentials: false persist-credentials: false
@ -21,9 +21,9 @@ jobs:
git_commit_gpgsign: true git_commit_gpgsign: true
- name: 'Use Node.js' - name: 'Use Node.js'
uses: 'actions/setup-node@v2.4.0' uses: 'actions/setup-node@v3.5.1'
with: with:
node-version: '16.x' node-version: '18.x'
cache: 'npm' cache: 'npm'
- name: 'Install' - name: 'Install'

View File

@ -10,12 +10,12 @@ jobs:
test-unit: test-unit:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.0.0' - uses: 'actions/checkout@v3.1.0'
- name: 'Use Node.js' - name: 'Use Node.js'
uses: 'actions/setup-node@v3.0.0' uses: 'actions/setup-node@v3.5.1'
with: with:
node-version: '16.x' node-version: '18.x'
cache: 'npm' cache: 'npm'
- name: 'Install' - name: 'Install'
@ -27,12 +27,12 @@ jobs:
test-lighthouse: test-lighthouse:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.0.0' - uses: 'actions/checkout@v3.1.0'
- name: 'Use Node.js' - name: 'Use Node.js'
uses: 'actions/setup-node@v3.0.0' uses: 'actions/setup-node@v3.5.1'
with: with:
node-version: '16.x' node-version: '18.x'
cache: 'npm' cache: 'npm'
- name: 'Install' - name: 'Install'
@ -52,12 +52,12 @@ jobs:
test-e2e: test-e2e:
runs-on: 'ubuntu-latest' runs-on: 'ubuntu-latest'
steps: steps:
- uses: 'actions/checkout@v3.0.0' - uses: 'actions/checkout@v3.1.0'
- name: 'Use Node.js' - name: 'Use Node.js'
uses: 'actions/setup-node@v3.0.0' uses: 'actions/setup-node@v3.5.1'
with: with:
node-version: '16.x' node-version: '18.x'
cache: 'npm' cache: 'npm'
- name: 'Install' - name: 'Install'

View File

@ -1,9 +1,9 @@
{ {
"urls": [ "urls": [
"http://localhost:3000/", "http://127.0.0.1:3000/",
"http://localhost:3000/authentication/forgot-password", "http://127.0.0.1:3000/authentication/forgot-password",
"http://localhost:3000/authentication/reset-password", "http://127.0.0.1:3000/authentication/reset-password",
"http://localhost:3000/authentication/signin", "http://127.0.0.1:3000/authentication/signin",
"http://localhost:3000/authentication/signup" "http://127.0.0.1:3000/authentication/signup"
] ]
} }

View File

@ -5,11 +5,11 @@
"startServerReadyPattern": "ready on", "startServerReadyPattern": "ready on",
"startServerReadyTimeout": 20000, "startServerReadyTimeout": 20000,
"url": [ "url": [
"http://localhost:3000/", "http://127.0.0.1:3000/",
"http://localhost:3000/authentication/forgot-password", "http://127.0.0.1:3000/authentication/forgot-password",
"http://localhost:3000/authentication/reset-password", "http://127.0.0.1:3000/authentication/reset-password",
"http://localhost:3000/authentication/signin", "http://127.0.0.1:3000/authentication/signin",
"http://localhost:3000/authentication/signup" "http://127.0.0.1:3000/authentication/signup"
], ],
"numberOfRuns": 1 "numberOfRuns": 1
}, },

View File

@ -61,7 +61,7 @@ docker compose up --build
#### Services started #### Services started
- website : `http://localhost:3000` - website : `http://127.0.0.1:3000`
## 💡 Contributing ## 💡 Contributing

View File

@ -22,35 +22,31 @@ const ChannelMemo: React.FC<ChannelProps> = (props) => {
const { member } = useGuildMember() const { member } = useGuildMember()
return ( return (
<Link href={`/application/${path.guildId}/${channel.id}`}> <Link
<a href={`/application/${path.guildId}/${channel.id}`}
className={classNames( className={classNames(
'group relative my-3 mx-3 flex items-center justify-between overflow-hidden rounded-lg py-2 text-sm transition-all duration-200 hover:bg-gray-100 dark:hover:bg-gray-600', 'group relative my-3 mx-3 flex items-center justify-between overflow-hidden rounded-lg py-2 text-sm transition-all duration-200 hover:bg-gray-100 dark:hover:bg-gray-600',
{ {
'font-semibold text-green-800 dark:text-green-400': selected 'font-semibold text-green-800 dark:text-green-400': selected
} }
)} )}
> >
<span <span className='max-[315px] ml-2 mr-4 break-all' data-cy='channel-name'>
className='max-[315px] ml-2 mr-4 break-all' # {channel.name}
data-cy='channel-name' </span>
{member.isOwner && (
<IconButton
onClick={async () => {
await router.push(
`/application/${channel.guildId}/${channel.id}/settings`
)
}}
className='bg-unherit absolute -right-10 h-full w-8 transition-all group-hover:right-0 group-hover:shadow-lg dark:group-hover:bg-gray-600'
title='Settings'
> >
# {channel.name} <CogIcon height={20} width={20} />
</span> </IconButton>
{member.isOwner && ( )}
<IconButton
onClick={async () => {
await router.push(
`/application/${channel.guildId}/${channel.id}/settings`
)
}}
className='bg-unherit absolute -right-10 h-full w-8 transition-all group-hover:right-0 group-hover:shadow-lg dark:group-hover:bg-gray-600'
title='Settings'
>
<CogIcon height={20} width={20} />
</IconButton>
)}
</a>
</Link> </Link>
) )
} }

View File

@ -28,20 +28,24 @@ export const GuildLeftSidebar: React.FC<GuildLeftSidebarProps> = (props) => {
<Divider /> <Divider />
<div className='mb-1 flex items-center justify-center space-x-6 p-2'> <div className='mb-1 flex items-center justify-center space-x-6 p-2'>
{member.isOwner && ( {member.isOwner && (
<Link href={`/application/${path.guildId}/channels/create`} passHref> <Link
<a data-cy='link-add-channel'> href={`/application/${path.guildId}/channels/create`}
<IconButton className='h-10 w-10' title='Add a Channel'> passHref
<PlusIcon /> data-cy='link-add-channel'
</IconButton> >
</a> <IconButton className='h-10 w-10' title='Add a Channel'>
<PlusIcon />
</IconButton>
</Link> </Link>
)} )}
<Link href={`/application/${path.guildId}/settings`} passHref> <Link
<a data-cy='link-settings-guild'> href={`/application/${path.guildId}/settings`}
<IconButton className='h-7 w-7' title='Settings'> passHref
<CogIcon /> data-cy='link-settings-guild'
</IconButton> >
</a> <IconButton className='h-7 w-7' title='Settings'>
<CogIcon />
</IconButton>
</Link> </Link>
</div> </div>
</div> </div>

View File

@ -14,35 +14,33 @@ const MemberMemo: React.FC<MemberProps> = (props) => {
return ( return (
<Link href={`/application/users/${member.user.id}`}> <Link href={`/application/users/${member.user.id}`}>
<a> <div className='flex cursor-pointer items-center overflow-hidden py-2 px-6 pr-10 hover:bg-gray-300 dark:hover:bg-gray-900'>
<div className='flex cursor-pointer items-center overflow-hidden py-2 px-6 pr-10 hover:bg-gray-300 dark:hover:bg-gray-900'> <div className='flex min-w-[50px] rounded-full'>
<div className='flex min-w-[50px] rounded-full'> <Image
<Image src={
src={ member.user.logo == null
member.user.logo == null ? '/images/data/user-default.png'
? '/images/data/user-default.png' : member.user.logo
: member.user.logo }
} alt={"Users's profil picture"}
alt={"Users's profil picture"} height={50}
height={50} width={50}
width={50} draggable={false}
draggable={false} className='rounded-full'
className='rounded-full' />
/>
</div>
<div className='ml-5'>
<p data-cy='member-user-name' className='flex truncate font-bold'>
{member.user.name}
{member.isOwner && (
<span className='ml-4'>
<Emoji value=':crown:' size={18} />
</span>
)}
</p>
{member.user.status != null && member.user.status}
</div>
</div> </div>
</a> <div className='ml-5'>
<p data-cy='member-user-name' className='flex truncate font-bold'>
{member.user.name}
{member.isOwner && (
<span className='ml-4'>
<Emoji value=':crown:' size={18} />
</span>
)}
</p>
{member.user.status != null && member.user.status}
</div>
</div>
</Link> </Link>
) )
} }

View File

@ -73,37 +73,33 @@ export const Message: React.FC<MessageProps> = (props) => {
}} }}
> >
<Link href={`/application/users/${message.member.user.id}`}> <Link href={`/application/users/${message.member.user.id}`}>
<a> <div className='mr-4 flex h-12 w-12 flex-shrink-0 items-center justify-center'>
<div className='mr-4 flex h-12 w-12 flex-shrink-0 items-center justify-center'> <div className='h-10 w-10 drop-shadow-md'>
<div className='h-10 w-10 drop-shadow-md'> <Image
<Image quality={100}
quality={100} className='rounded-full'
className='rounded-full' src={
src={ message.member.user.logo == null
message.member.user.logo == null ? '/images/data/user-default.png'
? '/images/data/user-default.png' : message.member.user.logo
: message.member.user.logo }
} alt={"Users's profil picture"}
alt={"Users's profil picture"} width={50}
width={50} height={50}
height={50} draggable={false}
draggable={false} />
/>
</div>
</div> </div>
</a> </div>
</Link> </Link>
<div className='relative w-full whitespace-pre-wrap break-words break-all'> <div className='relative w-full whitespace-pre-wrap break-words break-all'>
<div className='flex w-max items-center'> <div className='flex w-max items-center'>
<Link href={`/application/users/${message.member.user.id}`}> <Link href={`/application/users/${message.member.user.id}`}>
<a> <span
<span data-cy='message-member-user-name'
data-cy='message-member-user-name' className='font-bold text-gray-900 dark:text-gray-200'
className='font-bold text-gray-900 dark:text-gray-200' >
> {message.member.user.name}
{message.member.user.name} </span>
</span>
</a>
</Link> </Link>
<span <span
data-cy='message-date' data-cy='message-date'

View File

@ -23,11 +23,12 @@ export const PopupGuildCard: React.FC<PopupGuildCardProps> = (props) => {
<p className='mt-6 px-8 text-center text-sm text-gray-200'> <p className='mt-6 px-8 text-center text-sm text-gray-200'>
{description} {description}
</p> </p>
<Link href={link.href}> <Link
<a className='mb-6 flex h-10 w-4/5 items-center justify-center self-center rounded-2xl bg-green-400 font-bold tracking-wide text-white transition duration-200 ease-in-out hover:bg-green-600'> href={link.href}
{link.icon} className='mb-6 flex h-10 w-4/5 items-center justify-center self-center rounded-2xl bg-green-400 font-bold tracking-wide text-white transition duration-200 ease-in-out hover:bg-green-600'
{link.text} >
</a> {link.icon}
{link.text}
</Link> </Link>
</div> </div>
</div> </div>

View File

@ -312,16 +312,15 @@ export const UserSettings: React.FC = () => {
<Language className='!top-12' /> <Language className='!top-12' />
<div className='ml-auto flex'> <div className='ml-auto flex'>
<SwitchTheme /> <SwitchTheme />
<Link href={`/application/users/${user.id}`}> <Link
<a href={`/application/users/${user.id}`}
className='group ml-3 flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg bg-slate-200 transition-colors hover:bg-slate-300 dark:bg-slate-700 hover:dark:bg-slate-800' className='group ml-3 flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg bg-slate-200 transition-colors hover:bg-slate-300 dark:bg-slate-700 hover:dark:bg-slate-800'
title='Preview Public Profile' title='Preview Public Profile'
> >
<EyeIcon <EyeIcon
height={20} height={20}
className='opacity-50 transition-opacity group-hover:opacity-100' className='opacity-50 transition-opacity group-hover:opacity-100'
/> />
</a>
</Link> </Link>
</div> </div>
</div> </div>

View File

@ -139,11 +139,9 @@ export const Authentication: React.FC<AuthenticationProps> = (props) => {
: '/authentication/signup' : '/authentication/signup'
} }
> >
<a> {mode === 'signup'
{mode === 'signup' ? t('authentication:already-have-an-account')
? t('authentication:already-have-an-account') : t('authentication:dont-have-an-account')}
: t('authentication:dont-have-an-account')}
</a>
</Link> </Link>
</p> </p>
</AuthenticationForm> </AuthenticationForm>

View File

@ -23,10 +23,11 @@ export const ErrorPage: React.FC<ErrorPageProps> = (props) => {
</h1> </h1>
<p className='text-center text-lg'> <p className='text-center text-lg'>
{message}{' '} {message}{' '}
<Link href='/'> <Link
<a className='text-green-800 hover:underline dark:text-green-400'> href='/'
{t('errors:return-to-home-page')} className='text-green-800 hover:underline dark:text-green-400'
</a> >
{t('errors:return-to-home-page')}
</Link> </Link>
</p> </p>

View File

@ -15,10 +15,11 @@ export const Footer: React.FC<FooterProps> = (props) => {
return ( return (
<footer className='flex flex-col items-center justify-center border-t-2 border-gray-600 bg-white py-6 text-lg dark:border-gray-400 dark:bg-black'> <footer className='flex flex-col items-center justify-center border-t-2 border-gray-600 bg-white py-6 text-lg dark:border-gray-400 dark:bg-black'>
<p> <p>
<Link href='/'> <Link
<a className='text-green-800 hover:underline dark:text-green-400'> href='/'
Thream className='text-green-800 hover:underline dark:text-green-400'
</a> >
Thream
</Link>{' '} </Link>{' '}
| {t('common:all-rights-reserved')} | {t('common:all-rights-reserved')}
</p> </p>

View File

@ -9,20 +9,18 @@ export const Header: React.FC = () => {
<header className='sticky top-0 z-50 flex w-full justify-center border-b-2 border-gray-600 bg-white px-6 py-2 dark:border-gray-400 dark:bg-black'> <header className='sticky top-0 z-50 flex w-full justify-center border-b-2 border-gray-600 bg-white px-6 py-2 dark:border-gray-400 dark:bg-black'>
<div className='container flex justify-between'> <div className='container flex justify-between'>
<Link href='/'> <Link href='/'>
<a> <div className='flex items-center justify-center'>
<div className='flex items-center justify-center'> <Image
<Image quality={100}
quality={100} width={60}
width={60} height={60}
height={60} src='/images/icons/Thream.png'
src='/images/icons/Thream.png' alt='Thream'
alt='Thream' />
/> <span className='ml-1 hidden font-headline font-medium text-green-800 dark:text-green-400 xs:block'>
<span className='ml-1 hidden font-headline font-medium text-green-800 dark:text-green-400 xs:block'> Thream
Thream </span>
</span> </div>
</div>
</a>
</Link> </Link>
<div className='flex justify-between'> <div className='flex justify-between'>
<Language /> <Language />

View File

@ -14,24 +14,26 @@ export const IconLink: React.FC<React.PropsWithChildren<IconLinkProps>> = (
const { children, selected, href, title, className } = props const { children, selected, href, title, className } = props
return ( return (
<Link href={href}> <Link
<a className='group relative flex w-full justify-center' title={title}> href={href}
<div className='group relative flex w-full justify-center'
className={classNames('group flex w-full justify-center', className)} title={title}
> >
{children} <div
<div className='absolute left-0 flex h-12 w-3 items-center'> className={classNames('group flex w-full justify-center', className)}
<span >
className={classNames( {children}
'absolute w-4/12 rounded-r-lg bg-green-700 group-hover:h-5', <div className='absolute left-0 flex h-12 w-3 items-center'>
{ <span
'h-full': selected className={classNames(
} 'absolute w-4/12 rounded-r-lg bg-green-700 group-hover:h-5',
)} {
></span> 'h-full': selected
</div> }
)}
></span>
</div> </div>
</a> </div>
</Link> </Link>
) )
} }

View File

@ -44,13 +44,12 @@ export const Input: React.FC<InputProps> = (props) => {
{label} {label}
</label> </label>
{type === 'password' && showForgotPassword ? ( {type === 'password' && showForgotPassword ? (
<Link href='/authentication/forgot-password'> <Link
<a href='/authentication/forgot-password'
className='text-center font-headline text-xs text-green-800 hover:underline dark:text-green-400 sm:text-sm' className='text-center font-headline text-xs text-green-800 hover:underline dark:text-green-400 sm:text-sm'
data-cy='forgot-password-link' data-cy='forgot-password-link'
> >
{t('authentication:forgot-password')} {t('authentication:forgot-password')}
</a>
</Link> </Link>
) : null} ) : null}
</div> </div>

View File

@ -23,7 +23,7 @@ export default defineConfig({
screenshotOnRunFailure: false, screenshotOnRunFailure: false,
e2e: { e2e: {
baseUrl: 'http://localhost:3000', baseUrl: 'http://127.0.0.1:3000',
supportFile: false, supportFile: false,
setupNodeEvents(on, config) { setupNodeEvents(on, config) {
on('task', { on('task', {

7371
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -23,26 +23,26 @@
"lint:prettier": "prettier \".\" --check --ignore-path \".gitignore\"", "lint:prettier": "prettier \".\" --check --ignore-path \".gitignore\"",
"lint:staged": "lint-staged", "lint:staged": "lint-staged",
"test:unit": "cypress run --component", "test:unit": "cypress run --component",
"test:html-w3c-validator": "start-server-and-test \"start\" \"http://localhost:3000\" \"html-w3c-validator\"", "test:html-w3c-validator": "start-server-and-test \"start\" \"http://127.0.0.1:3000\" \"html-w3c-validator\"",
"test:lighthouse": "lhci autorun", "test:lighthouse": "lhci autorun",
"test:e2e": "start-server-and-test \"start\" \"http://localhost:3000\" \"cypress run\"", "test:e2e": "start-server-and-test \"start\" \"http://127.0.0.1:3000\" \"cypress run\"",
"test:dev": "start-server-and-test \"dev\" \"http://localhost:3000\" \"cypress open\"", "test:dev": "start-server-and-test \"dev\" \"http://127.0.0.1:3000\" \"cypress open\"",
"release": "semantic-release", "release": "semantic-release",
"deploy": "vercel", "deploy": "vercel",
"postinstall": "husky install" "postinstall": "husky install"
}, },
"dependencies": { "dependencies": {
"@fontsource/montserrat": "4.5.12", "@fontsource/montserrat": "4.5.13",
"@fontsource/roboto": "4.5.8", "@fontsource/roboto": "4.5.8",
"@heroicons/react": "1.0.6", "@heroicons/react": "1.0.6",
"@sinclair/typebox": "0.24.42", "@sinclair/typebox": "0.25.13",
"axios": "0.26.1", "axios": "1.2.1",
"clsx": "1.2.1", "clsx": "1.2.1",
"date-and-time": "2.4.1", "date-and-time": "2.4.1",
"emoji-mart": "3.0.1", "emoji-mart": "3.0.1",
"framer-motion": "7.3.6", "framer-motion": "7.7.2",
"katex": "0.16.2", "katex": "0.16.4",
"next": "12.3.1", "next": "13.0.6",
"next-pwa": "5.6.0", "next-pwa": "5.6.0",
"next-themes": "0.2.1", "next-themes": "0.2.1",
"next-translate": "1.6.0", "next-translate": "1.6.0",
@ -51,63 +51,62 @@
"react-component-form": "3.1.1", "react-component-form": "3.1.1",
"react-dom": "18.2.0", "react-dom": "18.2.0",
"react-infinite-scroll-component": "6.1.0", "react-infinite-scroll-component": "6.1.0",
"react-markdown": "8.0.3", "react-markdown": "8.0.4",
"react-responsive": "8.2.0", "react-responsive": "9.0.2",
"react-swipeable": "7.0.0", "react-swipeable": "7.0.0",
"react-syntax-highlighter": "15.5.0", "react-syntax-highlighter": "15.5.0",
"react-textarea-autosize": "8.3.4", "react-textarea-autosize": "8.4.0",
"read-pkg": "7.1.0", "read-pkg": "7.1.0",
"rehype-katex": "6.0.2", "rehype-katex": "6.0.2",
"remark-breaks": "3.0.2", "remark-breaks": "3.0.2",
"remark-gfm": "3.0.1", "remark-gfm": "3.0.1",
"remark-math": "5.1.1", "remark-math": "5.1.1",
"sharp": "0.31.0", "sharp": "0.31.2",
"socket.io-client": "4.5.2", "socket.io-client": "4.5.4",
"unified": "10.1.2", "unified": "10.1.2",
"unist-util-visit": "4.1.1", "unist-util-visit": "4.1.1",
"universal-cookie": "4.0.4" "universal-cookie": "4.0.4"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "17.1.2", "@commitlint/cli": "17.3.0",
"@commitlint/config-conventional": "17.1.0", "@commitlint/config-conventional": "17.3.0",
"@lhci/cli": "0.9.0", "@lhci/cli": "0.10.0",
"@saithodev/semantic-release-backmerge": "2.1.2", "@saithodev/semantic-release-backmerge": "2.1.2",
"@semantic-release/git": "10.0.1", "@semantic-release/git": "10.0.1",
"@types/emoji-mart": "3.0.9", "@types/emoji-mart": "3.0.9",
"@types/hast": "2.3.4", "@types/hast": "2.3.4",
"@types/katex": "0.14.0", "@types/katex": "0.14.0",
"@types/node": "18.7.18", "@types/node": "18.11.14",
"@types/react": "18.0.20", "@types/react": "18.0.26",
"@types/react-responsive": "8.0.5", "@types/react-responsive": "8.0.5",
"@types/react-syntax-highlighter": "15.5.5", "@types/react-syntax-highlighter": "15.5.5",
"@types/unist": "2.0.6", "@types/unist": "2.0.6",
"@typescript-eslint/eslint-plugin": "5.38.0", "@typescript-eslint/eslint-plugin": "5.46.1",
"@typescript-eslint/parser": "5.38.0", "@typescript-eslint/parser": "5.46.1",
"autoprefixer": "10.4.12", "autoprefixer": "10.4.13",
"cypress": "10.8.0", "cypress": "12.1.0",
"editorconfig-checker": "4.0.2", "editorconfig-checker": "4.0.2",
"eslint": "8.23.1", "eslint": "8.29.0",
"eslint-config-conventions": "4.0.1", "eslint-config-conventions": "6.0.0",
"eslint-config-next": "12.3.1", "eslint-config-next": "13.0.6",
"eslint-config-prettier": "8.5.0", "eslint-config-prettier": "8.5.0",
"eslint-plugin-import": "2.26.0", "eslint-plugin-import": "2.26.0",
"eslint-plugin-prettier": "4.2.1", "eslint-plugin-prettier": "4.2.1",
"eslint-plugin-promise": "6.0.1", "eslint-plugin-promise": "6.1.1",
"eslint-plugin-unicorn": "43.0.2", "eslint-plugin-unicorn": "45.0.2",
"html-w3c-validator": "1.2.0", "html-w3c-validator": "1.2.1",
"husky": "8.0.1", "husky": "8.0.2",
"lint-staged": "13.0.3", "lint-staged": "13.1.0",
"markdownlint-cli2": "0.5.1", "markdownlint-cli2": "0.5.1",
"mockttp": "2.7.0", "mockttp": "2.7.0",
"plop": "3.1.1", "plop": "3.1.1",
"postcss": "8.4.16", "postcss": "8.4.20",
"prettier": "2.7.1", "prettier": "2.8.1",
"prettier-plugin-tailwindcss": "0.1.13", "prettier-plugin-tailwindcss": "0.2.1",
"semantic-release": "19.0.5", "semantic-release": "19.0.5",
"serve": "14.0.1", "start-server-and-test": "1.15.2",
"start-server-and-test": "1.14.0", "tailwindcss": "3.2.4",
"tailwindcss": "3.1.8", "typescript": "4.9.4",
"typescript": "4.8.3", "vercel": "28.8.0"
"vercel": "28.3.0"
} }
} }

View File

@ -71,7 +71,7 @@ const ForgotPassword: NextPage<FooterProps> = (props) => {
</Button> </Button>
<p className='mt-3 font-headline text-sm text-green-800 hover:underline dark:text-green-400'> <p className='mt-3 font-headline text-sm text-green-800 hover:underline dark:text-green-400'>
<Link href='/authentication/signin'> <Link href='/authentication/signin'>
<a>{t('authentication:already-know-password')}</a> {t('authentication:already-know-password')}
</Link> </Link>
</p> </p>
</AuthenticationForm> </AuthenticationForm>

View File

@ -25,15 +25,14 @@ const Home: NextPage<FooterProps> = (props) => {
<div className='flex w-4/5 flex-col items-center'> <div className='flex w-4/5 flex-col items-center'>
<div className='max-w-xs'> <div className='max-w-xs'>
<Link href='/authentication/signup'> <Link href='/authentication/signup'>
<a> <Image
<Image quality={100}
quality={100} width={351}
width={351} height={341}
height={341} src='/images/svg/design/home.svg'
src='/images/svg/design/home.svg' alt={"Thream's chat app"}
alt={"Thream's chat app"} priority
/> />
</a>
</Link> </Link>
</div> </div>
<div className='text-center'> <div className='text-center'>
@ -55,7 +54,7 @@ const Home: NextPage<FooterProps> = (props) => {
/> />
</div> </div>
<div className='mt-8 flex items-center justify-center space-x-4 text-center'> <div className='mt-8 flex items-center justify-center space-x-4 text-center'>
<Link href='/authentication/signup' passHref> <Link href='/authentication/signup' passHref legacyBehavior>
<ButtonLink data-cy='get-started'> <ButtonLink data-cy='get-started'>
{t('home:get-started')} {t('home:get-started')}
</ButtonLink> </ButtonLink>

View File

@ -7,7 +7,7 @@ export const API_DEFAULT_PORT = 8080
export const API_URL = export const API_URL =
process.env.NEXT_PUBLIC_API_URL != null process.env.NEXT_PUBLIC_API_URL != null
? process.env.NEXT_PUBLIC_API_URL ? process.env.NEXT_PUBLIC_API_URL
: `http://localhost:${API_DEFAULT_PORT}` : `http://127.0.0.1:${API_DEFAULT_PORT}`
export const api = axios.create({ export const api = axios.create({
baseURL: API_URL, baseURL: API_URL,

View File

@ -1,4 +1,5 @@
{ {
"$schema": "https://openapi.vercel.sh/vercel.json",
"github": { "github": {
"enabled": false "enabled": false
} }