refactor: change branding delimiter to css

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2023-04-30 21:35:45 +02:00
parent d75b8d2d3b
commit 6a772d851b
4 changed files with 35 additions and 31 deletions

View file

@ -4,13 +4,11 @@
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
import { useFrontendConfig } from '../frontend-config-context/use-frontend-config' import { useFrontendConfig } from '../frontend-config-context/use-frontend-config'
import { ShowIf } from '../show-if/show-if'
import styles from './branding.module.scss' import styles from './branding.module.scss'
import React, { useMemo } from 'react' import React from 'react'
export interface BrandingProps { export interface BrandingProps {
inline?: boolean inline?: boolean
delimiter?: boolean
} }
/** /**
@ -20,32 +18,22 @@ export interface BrandingProps {
* @param inline If the logo should be using the inline-size or the regular-size css class. * @param inline If the logo should be using the inline-size or the regular-size css class.
* @param delimiter If the delimiter between the HedgeDoc logo and the branding should be shown. * @param delimiter If the delimiter between the HedgeDoc logo and the branding should be shown.
*/ */
export const CustomBranding: React.FC<BrandingProps> = ({ inline = false, delimiter = true }) => { export const CustomBranding: React.FC<BrandingProps> = ({ inline = false }) => {
const branding = useFrontendConfig().branding const branding = useFrontendConfig().branding
const showBranding = !!branding.name || !!branding.logo
const brandingDom = useMemo(() => { if (!branding.name && !branding.logo) {
if (branding.logo) { return null
return ( } else if (branding.logo) {
// eslint-disable-next-line @next/next/no-img-element return (
<img /* eslint-disable-next-line @next/next/no-img-element */
src={branding.logo} <img
alt={branding.name} src={branding.logo}
title={branding.name} alt={branding.name}
className={inline ? styles['inline-size'] : styles['regular-size']} title={branding.name}
/> className={inline ? styles['inline-size'] : styles['regular-size']}
) />
} else { )
return branding.name } else {
} return <span className={inline ? styles['inline-size'] : styles['regular-size']}>{branding.name}</span>
}, [branding.logo, branding.name, inline]) }
return (
<ShowIf condition={showBranding}>
<ShowIf condition={delimiter}>
<strong className={`mx-1 ${inline ? styles['inline-size'] : styles['regular-size']}`}>@</strong>
</ShowIf>
{brandingDom}
</ShowIf>
)
} }

View file

@ -0,0 +1,13 @@
/*!
* SPDX-FileCopyrightText: 2023 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
.branding-separator:has(*) {
&::before {
content: '\2014';
margin-left: 0.25em;
margin-right: 0.25em;
}
}

View file

@ -10,6 +10,7 @@ import {
HedgeDocLogoType, HedgeDocLogoType,
HedgeDocLogoWithText HedgeDocLogoWithText
} from '../../common/hedge-doc-logo/hedge-doc-logo-with-text' } from '../../common/hedge-doc-logo/hedge-doc-logo-with-text'
import styles from './branding.module.scss'
import Link from 'next/link' import Link from 'next/link'
import React from 'react' import React from 'react'
import { Navbar } from 'react-bootstrap' import { Navbar } from 'react-bootstrap'
@ -27,7 +28,9 @@ export const NavbarBranding: React.FC = () => {
logoType={darkModeActivated ? HedgeDocLogoType.WB_HORIZONTAL : HedgeDocLogoType.BW_HORIZONTAL} logoType={darkModeActivated ? HedgeDocLogoType.WB_HORIZONTAL : HedgeDocLogoType.BW_HORIZONTAL}
size={HedgeDocLogoSize.SMALL} size={HedgeDocLogoSize.SMALL}
/> />
<CustomBranding inline={true} /> <span className={styles['branding-separator']}>
<CustomBranding inline={true} />
</span>
</Link> </Link>
</Navbar.Brand> </Navbar.Brand>
) )

View file

@ -32,7 +32,7 @@ const IntroPage: NextPage = () => {
<Trans i18nKey='app.slogan' /> <Trans i18nKey='app.slogan' />
</p> </p>
<div className={'mb-5'}> <div className={'mb-5'}>
<CustomBranding delimiter={false} /> <CustomBranding />
</div> </div>
<CoverButtons /> <CoverButtons />
<IntroCustomContent /> <IntroCustomContent />