fix: Move content into to frontend directory

Doing this BEFORE the merge prevents a lot of merge conflicts.

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2022-11-11 11:16:18 +01:00
parent 4e18ce38f3
commit 762a0a850e
No known key found for this signature in database
GPG key ID: B97799103358209B
1051 changed files with 0 additions and 35 deletions

View file

@ -0,0 +1,9 @@
/*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
.cover-button {
min-width: 200px;
}

View file

@ -0,0 +1,41 @@
/*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import React from 'react'
import { Button } from 'react-bootstrap'
import { Trans, useTranslation } from 'react-i18next'
import { useApplicationState } from '../../../hooks/common/use-application-state'
import { ShowIf } from '../../common/show-if/show-if'
import { SignInButton } from '../../landing-layout/navigation/sign-in-button'
import './cover-buttons.module.scss'
import { cypressId } from '../../../utils/cypress-attribute'
import Link from 'next/link'
export const CoverButtons: React.FC = () => {
useTranslation()
const userExists = useApplicationState((state) => !!state.user)
const anyAuthProviderActivated = useApplicationState((state) => state.config.authProviders.length > 0)
if (userExists) {
return null
}
return (
<div className='mb-5'>
<SignInButton className='cover-button' variant='success' size='lg' />
<ShowIf condition={anyAuthProviderActivated}>
<span className='m-2'>
<Trans i18nKey='common.or' />
</span>
</ShowIf>
<Link href='/n/features' passHref={true}>
<Button {...cypressId('features-button')} className='cover-button' variant='primary' size='lg'>
<Trans i18nKey='landing.intro.exploreFeatures' />
</Button>
</Link>
</div>
)
}

View file

@ -0,0 +1,40 @@
/*
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import React, { useEffect } from 'react'
import { RenderIframe } from '../editor-page/renderer-pane/render-iframe'
import { RendererType } from '../render-page/window-post-message-communicator/rendering-message'
import { fetchFrontPageContent } from './requests'
import { Logger } from '../../utils/logger'
import { useAsync } from 'react-use'
import { AsyncLoadingBoundary } from '../common/async-loading-boundary'
const logger = new Logger('Intro Content')
/**
* Fetches the content for the customizable part of the intro page and renders it.
*/
export const IntroCustomContent: React.FC = () => {
const { value, error, loading } = useAsync(async () => (await fetchFrontPageContent()).split('\n'), [])
useEffect(() => {
if (error) {
logger.error('Error while loading custom intro content', error)
}
}, [error])
return (
<AsyncLoadingBoundary loading={loading} error={error} componentName={'custom intro content'}>
<RenderIframe
frameClasses={'w-100 overflow-y-hidden'}
markdownContentLines={value as string[]}
rendererType={RendererType.INTRO}
forcedDarkMode={true}
adaptFrameHeightToContent={true}
/>
</AsyncLoadingBoundary>
)
}

View file

@ -0,0 +1,25 @@
/*
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { defaultConfig } from '../../api/common/default-config'
/**
* Get the intro.md contents from the public directory.
*
* @return The content of intro.md
* @throws {Error} if the content can't be fetched
*/
export const fetchFrontPageContent = async (): Promise<string> => {
const response = await fetch('public/intro.md', {
...defaultConfig,
method: 'GET'
})
if (response.status !== 200) {
throw new Error('Error fetching intro content')
}
return await response.text()
}