feat: transparent background for banner

This commit is contained in:
원더 2021-02-10 20:54:21 +09:00
parent edc21f569f
commit a17473570f
3 changed files with 172 additions and 157 deletions

View File

@ -2,10 +2,10 @@ import Link from 'next/link'
import Container from './Container' import Container from './Container'
import Wave from './Wave' import Wave from './Wave'
const Footer = (): JSX.Element => { const Footer = ({ color }:FooterProps): JSX.Element => {
return ( return (
<div className='releative'> <div className='releative'>
<Wave color='currentColor' className='dark:text-discord-dark text-white bg-discord-black hidden md:block' /> <Wave color='currentColor' className={`${color ?? 'dark:text-discord-dark text-white bg-discord-black'} hidden md:block`} />
<div className='bottom-0 text-white bg-discord-black'> <div className='bottom-0 text-white bg-discord-black'>
<Container className='pb-20 pt-10 w-11/12 lg:flex lg:pt-0 lg:w-4/5' ignoreColor> <Container className='pb-20 pt-10 w-11/12 lg:flex lg:pt-0 lg:w-4/5' ignoreColor>
<div className='w-full md:w-2/5'> <div className='w-full md:w-2/5'>
@ -78,4 +78,9 @@ const Footer = (): JSX.Element => {
</div> </div>
) )
} }
interface FooterProps {
color?: string
}
export default Footer export default Footer

View File

@ -22,6 +22,7 @@ init()
export default function App({ Component, pageProps, err }: KoreanbotsProps): JSX.Element { export default function App({ Component, pageProps, err }: KoreanbotsProps): JSX.Element {
const [ betaKey, setBetaKey ] = useState('') const [ betaKey, setBetaKey ] = useState('')
const [ footer, footerControl ] = useState(true)
const [ theme, setDefaultTheme ] = useState<string|undefined>(undefined) const [ theme, setDefaultTheme ] = useState<string|undefined>(undefined)
let systemColor:string let systemColor:string
@ -66,13 +67,15 @@ export default function App({ Component, pageProps, err }: KoreanbotsProps): JSX
<Navbar /> <Navbar />
<div className='iu-is-the-best h-full text-black dark:text-gray-100 dark:bg-discord-dark bg-white'> <div className='iu-is-the-best h-full text-black dark:text-gray-100 dark:bg-discord-dark bg-white'>
{ {
process.env.NEXT_PUBLIC_TESTER_KEY === Crypto.createHmac('sha256', betaKey ?? '').digest('hex') ? <Component {...pageProps} err={err} /> : <div className='text-center py-40 px-10'> process.env.NEXT_PUBLIC_TESTER_KEY === Crypto.createHmac('sha256', betaKey ?? '').digest('hex') ? <Component {...pageProps} err={err} footerControl={footerControl} /> : <div className='text-center py-40 px-10'>
<h1 className='text-3xl font-bold'> .</h1><br/> <h1 className='text-3xl font-bold'> .</h1><br/>
<input value={betaKey} name='field_name' className='text-black border outline-none px-4 py-2 rounded-2xl' type='text' placeholder='테스터 키' onChange={(e)=> { localStorage.setItem('betaKey', e.target.value); setBetaKey(e.target.value) }} /> <input value={betaKey} name='field_name' className='text-black border outline-none px-4 py-2 rounded-2xl' type='text' placeholder='테스터 키' onChange={(e)=> { localStorage.setItem('betaKey', e.target.value); setBetaKey(e.target.value) }} />
</div> </div>
} }
</div> </div>
<Footer /> {
footer && <Footer />
}
</ThemeProvider> </ThemeProvider>
) )
} }

View File

@ -13,6 +13,7 @@ import Day from '@utils/Day'
import { checkBotFlag, checkUserFlag, formatNumber, parseCookie } from '@utils/Tools' import { checkBotFlag, checkUserFlag, formatNumber, parseCookie } from '@utils/Tools'
import NotFound from '../404' import NotFound from '../404'
import Footer from '@components/Footer'
const Container = dynamic(() => import('@components/Container')) const Container = dynamic(() => import('@components/Container'))
const DiscordAvatar = dynamic(() => import('@components/DiscordAvatar')) const DiscordAvatar = dynamic(() => import('@components/DiscordAvatar'))
@ -26,11 +27,13 @@ const Advertisement = dynamic(() => import('@components/Advertisement'))
const Tooltip = dynamic(() => import('@components/Tooltip')) const Tooltip = dynamic(() => import('@components/Tooltip'))
const Markdown = dynamic(() => import ('@components/Markdown')) const Markdown = dynamic(() => import ('@components/Markdown'))
const Bots: NextPage<BotsProps> = ({ data, date, user }) => { const Bots: NextPage<BotsProps> = ({ data, date, user, footerControl }) => {
const router = useRouter() const router = useRouter()
if (!data || !data.id) return <NotFound /> if (!data || !data.id) return <NotFound />
if(data.vanity && data.vanity !== router.query.id) router.push(`/bots/${data.vanity}`) if(data.vanity && data.vanity !== router.query.id) router.push(`/bots/${data.vanity}`)
return <Container paddingTop className='py-10'> else footerControl(false)
return <div style={checkBotFlag(data.flags, 'trusted') && data.banner ? { background: `linear-gradient(to right, rgba(34, 36, 38, 0.68), rgba(34, 36, 38, 0.68)), url("${data.bg}") center top / cover no-repeat fixed` } : {}}>
<Container paddingTop className='py-10'>
<SEO <SEO
title={data.name} title={data.name}
description={data.intro} description={data.intro}
@ -196,6 +199,9 @@ const Bots: NextPage<BotsProps> = ({ data, date, user }) => {
</div> </div>
</div> </div>
</Container> </Container>
<Footer color='bg-transparent dark:text-discord-black text-white hidden md:block transform rotate-180'/>
</div>
} }
export const getServerSideProps = async (ctx: Context) => { export const getServerSideProps = async (ctx: Context) => {
@ -217,6 +223,7 @@ interface BotsProps {
data: Bot data: Bot
date: Date date: Date
user: User user: User
footerControl(val: boolean): void
} }
interface Context extends NextPageContext { interface Context extends NextPageContext {
query: URLQuery query: URLQuery