style: lint

This commit is contained in:
원더 2021-01-10 13:19:06 +09:00
parent ddf7f09df6
commit 4156ae6149
20 changed files with 259 additions and 258 deletions

View File

@ -27,6 +27,7 @@ module.exports = {
'@typescript-eslint' '@typescript-eslint'
], ],
rules: { rules: {
'jsx-quotes': ['error', 'prefer-single'],
'react/no-unescaped-entities': 'off', 'react/no-unescaped-entities': 'off',
'react/prop-types': 'off', 'react/prop-types': 'off',
'react/react-in-jsx-scope': 'off', 'react/react-in-jsx-scope': 'off',

View File

@ -2,17 +2,17 @@ const Advertisement = (): JSX.Element => {
if (process.env.NODE_ENV === 'production') if (process.env.NODE_ENV === 'production')
return ( return (
<ins <ins
className="adsbygoogle mb-5 w-full" className='adsbygoogle mb-5 w-full'
style={{ display: 'block' }} style={{ display: 'block' }}
data-ad-client="ca-pub-4856582423981759" data-ad-client='ca-pub-4856582423981759'
data-ad-slot="3250141451" data-ad-slot='3250141451'
data-ad-format="auto" data-ad-format='auto'
data-adtest="on" data-adtest='on'
data-full-width-responsive="true" data-full-width-responsive='true'
></ins> ></ins>
) )
else else
return <div className="my-5 py-12 w-full text-center text-white bg-gray-700">Advertisement</div> return <div className='my-5 py-12 w-full text-center text-white bg-gray-700'>Advertisement</div>
} }
export default Advertisement export default Advertisement

View File

@ -7,47 +7,47 @@ import Link from 'next/link'
const BotCard = ({ bot }: BotProps): JSX.Element => { const BotCard = ({ bot }: BotProps): JSX.Element => {
return ( return (
<div className="container mb-20"> <div className='container mb-20'>
<div className="relative"> <div className='relative'>
<div className="container mx-auto"> <div className='container mx-auto'>
<div className="h-full"> <div className='h-full'>
<div className="relative mx-auto h-full text-black dark:text-white dark:bg-discord-black bg-little-white rounded-2xl shadow-xl"> <div className='relative mx-auto h-full text-black dark:text-white dark:bg-discord-black bg-little-white rounded-2xl shadow-xl'>
<div className="flex mb-16 h-48"> <div className='flex mb-16 h-48'>
<div className="w-2/3"> <div className='w-2/3'>
<div className="flex justify-start"> <div className='flex justify-start'>
<img <img
alt="Avatar" alt='Avatar'
src={ src={
bot.avatar bot.avatar
? `https://cdn.discordapp.com/avatars/${bot.id}/${bot.avatar}.png?size=1024` ? `https://cdn.discordapp.com/avatars/${bot.id}/${bot.avatar}.png?size=1024`
: `https://cdn.discordapp.com/embed/avatars/${Number(bot.tag) % : `https://cdn.discordapp.com/embed/avatars/${Number(bot.tag) %
5}.png?size=1024` 5}.png?size=1024`
} }
className="rounded-full absolute -left-2 -top-8 mx-auto w-32 h-32 bg-white" className='rounded-full absolute -left-2 -top-8 mx-auto w-32 h-32 bg-white'
/> />
</div> </div>
<div className="mt-28 px-4"> <div className='mt-28 px-4'>
<h2 className="px-1 text-sm"> <h2 className='px-1 text-sm'>
<i className={`fas fa-circle text-${Status[bot.status]?.color}`} /> <i className={`fas fa-circle text-${Status[bot.status]?.color}`} />
{Status[bot.status]?.text} {Status[bot.status]?.text}
</h2> </h2>
<h1 className="mb-3 text-left text-2xl font-bold truncate"> <h1 className='mb-3 text-left text-2xl font-bold truncate'>
{bot.name}{' '} {bot.name}{' '}
{bot.trusted ? ( {bot.trusted ? (
<span className="text-koreanbots-blue text-3xl"> <span className='text-koreanbots-blue text-3xl'>
<i className="fas fa-award" /> <i className='fas fa-award' />
</span> </span>
) : ''} ) : ''}
</h1> </h1>
<p className="text-left text-gray-400 text-sm font-medium">{bot.intro}</p> <p className='text-left text-gray-400 text-sm font-medium'>{bot.intro}</p>
</div> </div>
</div> </div>
<div className="grid grid-cols-1 pr-5 py-5 w-1/3 h-0"> <div className='grid grid-cols-1 pr-5 py-5 w-1/3 h-0'>
<Tag <Tag
text={ text={
<> <>
<i className="fas fa-heart text-red-600" /> {formatNumber(bot.votes)} <i className='fas fa-heart text-red-600' /> {formatNumber(bot.votes)}
</> </>
} }
dark dark
@ -55,30 +55,30 @@ const BotCard = ({ bot }: BotProps): JSX.Element => {
<Tag blurple text={<>{formatNumber(bot.servers)} </>} dark /> <Tag blurple text={<>{formatNumber(bot.servers)} </>} dark />
</div> </div>
</div> </div>
<div className="category px-2 flex flex-wrap"> <div className='category px-2 flex flex-wrap'>
{bot.category.slice(0, 5).map(el => ( {bot.category.slice(0, 5).map(el => (
<Tag key={el} text={el} href={`/categories/${el}`} dark/> <Tag key={el} text={el} href={`/categories/${el}`} dark/>
))} ))}
</div> </div>
<Divider /> <Divider />
<div className="flex justify-evenly"> <div className='flex justify-evenly'>
<Link <Link
href={`/bots/${ href={`/bots/${
(bot.partnered || bot.trusted) && bot.vanity ? bot.vanity : bot.id (bot.partnered || bot.trusted) && bot.vanity ? bot.vanity : bot.id
}`} }`}
> >
<a className="rounded-bl-2xl py-3 w-full text-center text-koreanbots-blue hover:text-white text-sm font-bold hover:bg-koreanbots-blue hover:shadow-lg"> <a className='rounded-bl-2xl py-3 w-full text-center text-koreanbots-blue hover:text-white text-sm font-bold hover:bg-koreanbots-blue hover:shadow-lg'>
</a> </a>
</Link> </Link>
<a <a
rel="noopener noreferrer" rel='noopener noreferrer'
target="_blank" target='_blank'
href={ href={
bot.url ?? bot.url ??
`https://discordapp.com/oauth2/authorize?client_id=${bot.id}&scope=bot&permissions=0` `https://discordapp.com/oauth2/authorize?client_id=${bot.id}&scope=bot&permissions=0`
} }
className="rounded-br-2xl py-3 w-full text-center text-discord-blurple hover:text-white text-sm font-bold hover:bg-discord-blurple hover:shadow-lg" className='rounded-br-2xl py-3 w-full text-center text-discord-blurple hover:text-white text-sm font-bold hover:bg-discord-blurple hover:shadow-lg'
> >
</a> </a>

View File

@ -17,7 +17,7 @@ const DiscordImage = (props: {
} }
width={props.size || 256} width={props.size || 256}
height={props.size || 256} height={props.size || 256}
data-fallback-image="/img/default.png" data-fallback-image='/img/default.png'
/> />
) )
} }

View File

@ -4,22 +4,22 @@ import Wave from './Wave'
const Docs = ({ header, description, subheader, children }: DocsProps): JSX.Element => { const Docs = ({ header, description, subheader, children }: DocsProps): JSX.Element => {
return ( return (
<> <>
<div className="dark:bg-discord-black bg-discord-blurple"> <div className='dark:bg-discord-black bg-discord-blurple'>
<Container className="pb-28 pt-20" ignoreColor> <Container className='pb-28 pt-20' ignoreColor>
<h1 className="mt-10 text-center text-gray-100 text-4xl font-bold sm:text-left"> <h1 className='mt-10 text-center text-gray-100 text-4xl font-bold sm:text-left'>
{header} {header}
</h1> </h1>
<h2 className="mt-5 text-center text-gray-200 text-2xl font-medium sm:text-left"> <h2 className='mt-5 text-center text-gray-200 text-2xl font-medium sm:text-left'>
{description} {description}
</h2> </h2>
<h2 className="mt-5 text-center text-gray-200 text-2xl font-medium sm:text-left"> <h2 className='mt-5 text-center text-gray-200 text-2xl font-medium sm:text-left'>
{subheader} {subheader}
</h2> </h2>
</Container> </Container>
</div> </div>
<Wave <Wave
color="currentColor" color='currentColor'
className="dark:text-discord-black text-discord-blurple dark:bg-discord-dark bg-white" className='dark:text-discord-black text-discord-blurple dark:bg-discord-dark bg-white'
/> />
<Container> <Container>
<div>{children}</div> <div>{children}</div>

View File

@ -4,65 +4,65 @@ import Wave from './Wave'
const Footer = (): JSX.Element => { const Footer = (): JSX.Element => {
return ( return (
<div className="releative"> <div className='releative'>
<Wave color="currentColor" className="dark:text-discord-dark text-white bg-discord-black" /> <Wave color='currentColor' className='dark:text-discord-dark text-white bg-discord-black' />
<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-3/5" ignoreColor> <Container className='pb-20 pt-10 w-11/12 lg:flex lg:pt-0 lg:w-3/5' ignoreColor>
<div className="w-full lg:flex-grow"> <div className='w-full lg:flex-grow'>
<h1 className="text-koreanbots-blue text-3xl font-extrabold"> .</h1> <h1 className='text-koreanbots-blue text-3xl font-extrabold'> .</h1>
<span className="text-base">2020 Koreanbots, All rights reserved.</span> <span className='text-base'>2020 Koreanbots, All rights reserved.</span>
<div className="text-2xl"> <div className='text-2xl'>
<Link href="/discord"> <Link href='/discord'>
<a className="mr-2"> <a className='mr-2'>
<i className="fab fa-discord" /> <i className='fab fa-discord' />
</a> </a>
</Link> </Link>
<a href="https://github.com/koreanbots" className="mr-2"> <a href='https://github.com/koreanbots' className='mr-2'>
<i className="fab fa-github" /> <i className='fab fa-github' />
</a> </a>
</div> </div>
</div> </div>
<div className="flex-col mb-2 w-full lg:w-1/3"> <div className='flex-col mb-2 w-full lg:w-1/3'>
<h2 className="text-koreanbots-blue text-base font-bold"> </h2> <h2 className='text-koreanbots-blue text-base font-bold'> </h2>
<ul className="text-sm"> <ul className='text-sm'>
<li> <li>
<Link href="/about"> <Link href='/about'>
<a className="hover:text-gray-300"></a> <a className='hover:text-gray-300'></a>
</Link> </Link>
</li> </li>
<li> <li>
<Link href="/api"> <Link href='/api'>
<a className="hover:text-gray-300">API</a> <a className='hover:text-gray-300'>API</a>
</Link> </Link>
</li> </li>
</ul> </ul>
</div> </div>
<div className="flex-col mb-2 w-full lg:w-1/5"> <div className='flex-col mb-2 w-full lg:w-1/5'>
<h2 className="text-koreanbots-blue text-base font-bold"></h2> <h2 className='text-koreanbots-blue text-base font-bold'></h2>
<ul className="text-sm"> <ul className='text-sm'>
<li> <li>
<Link href="/partners"> <Link href='/partners'>
<a className="hover:text-gray-300"></a> <a className='hover:text-gray-300'></a>
</Link> </Link>
</li> </li>
<li> <li>
<Link href="/verification"> <Link href='/verification'>
<a className="hover:text-gray-300"></a> <a className='hover:text-gray-300'></a>
</Link> </Link>
</li> </li>
</ul> </ul>
</div> </div>
<div className="flex-col mb-2 w-full lg:w-1/5"> <div className='flex-col mb-2 w-full lg:w-1/5'>
<h2 className="text-koreanbots-blue text-base font-bold"></h2> <h2 className='text-koreanbots-blue text-base font-bold'></h2>
<ul className="text-sm"> <ul className='text-sm'>
<li> <li>
<Link href="/privacy"> <Link href='/privacy'>
<a className="hover:text-gray-300"></a> <a className='hover:text-gray-300'></a>
</Link> </Link>
</li> </li>
<li> <li>
<Link href="/guidelines"> <Link href='/guidelines'>
<a className="hover:text-gray-300"></a> <a className='hover:text-gray-300'></a>
</Link> </Link>
</li> </li>
</ul> </ul>

View File

@ -3,8 +3,8 @@ import Link from 'next/link'
const LongButton = ({ children, newTab=false, href, onClick, center=false }:LongButtonProps):JSX.Element => { const LongButton = ({ children, newTab=false, href, onClick, center=false }:LongButtonProps):JSX.Element => {
if(href) { if(href) {
if(newTab) return <a href={href} rel="noopener noreferrer" if(newTab) return <a href={href} rel='noopener noreferrer'
target="_blank"> target='_blank'>
<div className={`${center ? 'justify-center ': '' }text-base bg-little-white dark:bg-discord-black text-black dark:text-gray-400 rounded flex hover:bg-little-white-hover dark:hover:bg-discord-dark-hover cursor-pointer px-4 py-4 mb-1`}> <div className={`${center ? 'justify-center ': '' }text-base bg-little-white dark:bg-discord-black text-black dark:text-gray-400 rounded flex hover:bg-little-white-hover dark:hover:bg-discord-dark-hover cursor-pointer px-4 py-4 mb-1`}>
{children} {children}
</div> </div>

View File

@ -5,57 +5,57 @@ const Navbar = (): JSX.Element => {
const [navbarOpen, setNavbarOpen] = useState<boolean>(false) const [navbarOpen, setNavbarOpen] = useState<boolean>(false)
return ( return (
<> <>
<nav className="fixed z-40 top-0 flex flex-wrap items-center justify-between px-2 py-3 w-full text-gray-100 dark:bg-discord-black bg-discord-blurple bg-transparent lg:absolute"> <nav className='fixed z-40 top-0 flex flex-wrap items-center justify-between px-2 py-3 w-full text-gray-100 dark:bg-discord-black bg-discord-blurple bg-transparent lg:absolute'>
<div className="container flex flex-wrap items-center justify-between mx-auto px-4"> <div className='container flex flex-wrap items-center justify-between mx-auto px-4'>
<div className="relative static block flex justify-between w-full lg:justify-start lg:w-auto"> <div className='relative static block flex justify-between w-full lg:justify-start lg:w-auto'>
<a <a
className="logofont text-large whitespace-no-wrap inline-block mr-4 py-2 hover:text-gray-300 font-semibold leading-relaxed uppercase sm:text-2xl" className='logofont text-large whitespace-no-wrap inline-block mr-4 py-2 hover:text-gray-300 font-semibold leading-relaxed uppercase sm:text-2xl'
href="/" href='/'
> >
KOREANBOTS KOREANBOTS
</a> </a>
<button <button
className="block px-3 py-1 dark:text-gray-200 text-xl leading-none bg-transparent border border-solid border-transparent rounded outline-none focus:outline-none cursor-pointer lg:hidden" className='block px-3 py-1 dark:text-gray-200 text-xl leading-none bg-transparent border border-solid border-transparent rounded outline-none focus:outline-none cursor-pointer lg:hidden'
type="button" type='button'
onClick={() => setNavbarOpen(!navbarOpen)} onClick={() => setNavbarOpen(!navbarOpen)}
> >
<i className={`fas ${!navbarOpen ? 'fa-bars' : 'fa-times'}`}></i> <i className={`fas ${!navbarOpen ? 'fa-bars' : 'fa-times'}`}></i>
</button> </button>
</div> </div>
<div className="hidden flex-grow items-center bg-white lg:flex lg:bg-transparent lg:shadow-none"> <div className='hidden flex-grow items-center bg-white lg:flex lg:bg-transparent lg:shadow-none'>
<ul className="flex flex-col list-none lg:flex-row lg:ml-auto"> <ul className='flex flex-col list-none lg:flex-row lg:ml-auto'>
<li className="flex items-center"> <li className='flex items-center'>
<a <a
href="/discord" href='/discord'
className="lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100" className='lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100'
> >
</a> </a>
</li> </li>
<li className="flex items-center"> <li className='flex items-center'>
<Link href="/about"> <Link href='/about'>
<a className="lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100"> <a className='lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100'>
</a> </a>
</Link> </Link>
</li> </li>
<li className="flex items-center"> <li className='flex items-center'>
<Link href="/api"> <Link href='/api'>
<a className="lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100"> <a className='lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100'>
API API
</a> </a>
</Link> </Link>
</li> </li>
<li className="flex items-center"> <li className='flex items-center'>
<Link href="/addbot"> <Link href='/addbot'>
<a className="lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100"> <a className='lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100'>
</a> </a>
</Link> </Link>
</li> </li>
<li className="flex items-center"> <li className='flex items-center'>
<Link href="/api/auth/discord"> <Link href='/api/auth/discord'>
<a className="lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100"> <a className='lg:hover:text-gray-300 flex items-center px-3 py-4 w-full hover:text-gray-500 text-gray-700 text-sm font-semibold sm:w-auto lg:py-2 lg:text-gray-100'>
</a> </a>
</Link> </Link>
@ -69,55 +69,55 @@ const Navbar = (): JSX.Element => {
navbarOpen ? 'block' : 'hidden' navbarOpen ? 'block' : 'hidden'
}`} }`}
> >
<nav className="mt-20"> <nav className='mt-20'>
<Link href="/about"> <Link href='/about'>
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300"> <a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<svg <svg
className="w-5 h-5" className='w-5 h-5'
viewBox="0 0 24 24" viewBox='0 0 24 24'
fill="none" fill='none'
xmlns="http://www.w3.org/2000/svg" xmlns='http://www.w3.org/2000/svg'
> >
<path <path
d="M19 11H5M19 11C20.1046 11 21 11.8954 21 13V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V13C3 11.8954 3.89543 11 5 11M19 11V9C19 7.89543 18.1046 7 17 7M5 11V9C5 7.89543 5.89543 7 7 7M7 7V5C7 3.89543 7.89543 3 9 3H15C16.1046 3 17 3.89543 17 5V7M7 7H17" d='M19 11H5M19 11C20.1046 11 21 11.8954 21 13V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V13C3 11.8954 3.89543 11 5 11M19 11V9C19 7.89543 18.1046 7 17 7M5 11V9C5 7.89543 5.89543 7 7 7M7 7V5C7 3.89543 7.89543 3 9 3H15C16.1046 3 17 3.89543 17 5V7M7 7H17'
stroke="currentColor" stroke='currentColor'
strokeWidth="2" strokeWidth='2'
strokeLinecap="round" strokeLinecap='round'
strokeLinejoin="round" strokeLinejoin='round'
/> />
</svg> </svg>
<span className="px-2 font-medium"></span> <span className='px-2 font-medium'></span>
</a> </a>
</Link> </Link>
<Link href="/about"> <Link href='/about'>
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300"> <a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<i className="fas fa-tools" /> <i className='fas fa-tools' />
<span className="px-2 font-medium">API</span> <span className='px-2 font-medium'>API</span>
</a> </a>
</Link> </Link>
<Link href="/addbot"> <Link href='/addbot'>
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300"> <a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<i className="fas fa-plus"></i> <i className='fas fa-plus'></i>
<span className="px-2 font-medium"> </span> <span className='px-2 font-medium'> </span>
</a> </a>
</Link> </Link>
<Link href="/api/auth/login"> <Link href='/api/auth/login'>
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300"> <a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<i className="far fa-user" /> <i className='far fa-user' />
<span className="px-2 font-medium"></span> <span className='px-2 font-medium'></span>
</a> </a>
</Link> </Link>
</nav> </nav>
<div className="absolute bottom-0 my-10"> <div className='absolute bottom-0 my-10'>
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300"> <a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<i className="fab fa-discord" /> <i className='fab fa-discord' />
<Link href="/discord"> <Link href='/discord'>
<a className="px-2 font-medium"> </a> <a className='px-2 font-medium'> </a>
</Link> </Link>
</a> </a>
</div> </div>

View File

@ -3,13 +3,13 @@ import DiscordImage from './DiscordImage'
const Owner = ({ id, username, tag, avatarHash }:OwnerProps):JSX.Element => { const Owner = ({ id, username, tag, avatarHash }:OwnerProps):JSX.Element => {
return <Link href={`/users/${id}`}> return <Link href={`/users/${id}`}>
<div className="text-base bg-little-white dark:bg-discord-black text-black dark:text-gray-400 rounded flex hover:bg-little-white-hover dark:hover:bg-discord-dark-hover cursor-pointer px-4 py-4 mb-1"> <div className='text-base bg-little-white dark:bg-discord-black text-black dark:text-gray-400 rounded flex hover:bg-little-white-hover dark:hover:bg-discord-dark-hover cursor-pointer px-4 py-4 mb-1'>
<div className="rounded-full h-8 w-8 flex-shrink-0 mr-3 mt-1 overflow-hidden shadow-inner relative"> <div className='rounded-full h-8 w-8 flex-shrink-0 mr-3 mt-1 overflow-hidden shadow-inner relative'>
<DiscordImage userID={id} tag={tag} avatarHash={avatarHash} className="absolute inset-0 z-negative w-full h-full" size={50} /> <DiscordImage userID={id} tag={tag} avatarHash={avatarHash} className='absolute inset-0 z-negative w-full h-full' size={50} />
</div> </div>
<div className="flex-1 leading-snug w-0"> <div className='flex-1 leading-snug w-0'>
<h4 className="whitespace-nowrap">{username} <h4 className='whitespace-nowrap'>{username}
</h4><span className="text-sm text-gray-600">#{tag}</span> </h4><span className='text-sm text-gray-600'>#{tag}</span>
</div> </div>
</div> </div>
{/* <div className='text-base bg-little-white dark:bg-discord-black text-black dark:text-gray-400 px-2 rounded mr-1 mb-3 hover:bg-little-white-hover dark:hover:bg-discord-dark-hover w-full py-5'> {/* <div className='text-base bg-little-white dark:bg-discord-black text-black dark:text-gray-400 px-2 rounded mr-1 mb-3 hover:bg-little-white-hover dark:hover:bg-discord-dark-hover w-full py-5'>

View File

@ -4,11 +4,11 @@ const SEO = ({ title, description, image }: SEOProps): JSX.Element => {
return ( return (
<Head> <Head>
<title>{title} - </title> <title>{title} - </title>
{description && <meta name="description" content={description} />} {description && <meta name='description' content={description} />}
<meta name="og:site_name" content="한국 디스코드봇 리스트" /> <meta name='og:site_name' content='한국 디스코드봇 리스트' />
<meta name="og:title" content={title} /> <meta name='og:title' content={title} />
{description && <meta name="og:description" content={description} />} {description && <meta name='og:description' content={description} />}
{image && <meta name="og:image" content={image} />} {image && <meta name='og:image' content={image} />}
</Head> </Head>
) )
} }

View File

@ -1,6 +1,6 @@
const Segment = ({ children }): JSX.Element => { const Segment = ({ children }): JSX.Element => {
return ( return (
<div className="p-5 text-black dark:text-white dark:bg-discord-black bg-little-white rounded-sm"> <div className='p-5 text-black dark:text-white dark:bg-discord-black bg-little-white rounded-sm'>
{children} {children}
</div> </div>
) )

View File

@ -14,8 +14,8 @@ const Tag = ({
return href ? newTab ? ( return href ? newTab ? (
<a <a
href={href} href={href}
rel="noopener noreferrer" rel='noopener noreferrer'
target="_blank" target='_blank'
className={`${className ?? ''} text-center text-base ${ className={`${className ?? ''} text-center text-base ${
dark dark
? blurple ? blurple

View File

@ -1,9 +1,9 @@
const Wave = ({ color, className }: WaveProps): JSX.Element => { const Wave = ({ color, className }: WaveProps): JSX.Element => {
return ( return (
<svg viewBox="0 0 1440 320" className={className}> <svg viewBox='0 0 1440 320' className={className}>
<path <path
fill={color} fill={color}
d="M0 192l34.3 5.3C68.6 203 137 213 206 186.7c68.3-26.7 137-90.7 205-96 69-5.7 138 48.3 206 90.6C685.7 224 754 256 823 272c68.4 16 137 16 206 0 68.1-16 137-48 205-69.3 68.9-21.7 137-31.7 172-37.4l34-5.3V0H0z" d='M0 192l34.3 5.3C68.6 203 137 213 206 186.7c68.3-26.7 137-90.7 205-96 69-5.7 138 48.3 206 90.6C685.7 224 754 256 823 272c68.4 16 137 16 206 0 68.1-16 137-48 205-69.3 68.9-21.7 137-31.7 172-37.4l34-5.3V0H0z'
/> />
</svg> </svg>
) )

View File

@ -34,21 +34,21 @@ export default function App({ Component, pageProps }: AppProps): JSX.Element {
localStorage.setItem('theme', systemColor) localStorage.setItem('theme', systemColor)
}, []) }, [])
return ( return (
<ThemeProvider defaultTheme={systemColor} attribute="class" storageKey="theme"> <ThemeProvider defaultTheme={systemColor} attribute='class' storageKey='theme'>
<Head> <Head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name='viewport' content='width=device-width, initial-scale=1.0' />
<title> </title> <title> </title>
<meta name="description" content="국내 디스코드봇들을 확인하고, 초대해보세요!" /> <meta name='description' content='국내 디스코드봇들을 확인하고, 초대해보세요!' />
<meta name="og:title" content="한국 디스코드봇 리스트" /> <meta name='og:title' content='한국 디스코드봇 리스트' />
<meta name="og:url" content="https://koreanbots.dev" /> <meta name='og:url' content='https://koreanbots.dev' />
<meta name="og:description" content="국내 디스코드봇들을 확인하고, 초대해보세요!" /> <meta name='og:description' content='국내 디스코드봇들을 확인하고, 초대해보세요!' />
<meta name="og:image" content="/logo.png" /> <meta name='og:image' content='/logo.png' />
<meta charSet="utf-8" /> <meta charSet='utf-8' />
<link rel="shortcut icon" href="/logo.png" /> <link rel='shortcut icon' href='/logo.png' />
<meta name="theme-color" content="#3366FF" /> <meta name='theme-color' content='#3366FF' />
</Head> </Head>
<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'>
<Component {...pageProps} /> <Component {...pageProps} />
</div> </div>
<Footer /> <Footer />

View File

@ -11,11 +11,11 @@ class MyDocument extends Document {
<Html> <Html>
<Head> <Head>
<script <script
data-ad-client="ca-pub-4856582423981759" data-ad-client='ca-pub-4856582423981759'
async async
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" src='https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'
></script> ></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-165454387-1"></script> <script async src='https://www.googletagmanager.com/gtag/js?id=UA-165454387-1'></script>
<script <script
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: ` __html: `
@ -28,7 +28,7 @@ class MyDocument extends Document {
}} }}
/> />
</Head> </Head>
<body className="h-full text-black dark:text-gray-100 dark:bg-discord-dark bg-white"> <body className='h-full text-black dark:text-gray-100 dark:bg-discord-dark bg-white'>
<Main /> <Main />
<NextScript /> <NextScript />
</body> </body>

View File

@ -22,7 +22,7 @@ import Link from 'next/link'
const Bots: NextPage<BotsProps> = ({ data, date }) => { const Bots: NextPage<BotsProps> = ({ data, date }) => {
if (!data.id) return <NotFound /> if (!data.id) return <NotFound />
return ( return (
<Container paddingTop className="py-10"> <Container paddingTop className='py-10'>
<SEO <SEO
title={data.name} title={data.name}
description={data.intro} description={data.intro}
@ -32,16 +32,16 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
: `https://cdn.discordapp.com/embed/avatars/${Number(data.tag) % 5}.png?size=1024` : `https://cdn.discordapp.com/embed/avatars/${Number(data.tag) % 5}.png?size=1024`
} }
/> />
<div className="lg:flex"> <div className='lg:flex'>
<div className="w-full text-center lg:w-1/4"> <div className='w-full text-center lg:w-1/4'>
<DiscordImage <DiscordImage
userID={data.id} userID={data.id}
avatarHash={data.avatar} avatarHash={data.avatar}
tag={data.tag} tag={data.tag}
className="w-full" className='w-full'
/> />
</div> </div>
<div className="flex-grow px-5 py-12 w-full text-center lg:w-5/12 lg:text-left"> <div className='flex-grow px-5 py-12 w-full text-center lg:w-5/12 lg:text-left'>
<div> <div>
<Tag <Tag
circular circular
@ -52,18 +52,18 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
</> </>
} }
/> />
<h1 className="mb-2 mt-3 text-4xl font-bold"> <h1 className='mb-2 mt-3 text-4xl font-bold'>
{data.name}{' '} {data.name}{' '}
{data.trusted ? ( {data.trusted ? (
<span className="text-koreanbots-blue text-3xl"> <span className='text-koreanbots-blue text-3xl'>
<i className="fas fa-award" /> <i className='fas fa-award' />
</span> </span>
) : ''} ) : ''}
</h1> </h1>
</div> </div>
<p className="dark:text-gray-300 text-gray-800 text-base">{data.intro}</p> <p className='dark:text-gray-300 text-gray-800 text-base'>{data.intro}</p>
</div> </div>
<div className="w-full lg:w-1/4"> <div className='w-full lg:w-1/4'>
<LongButton <LongButton
newTab newTab
href={ href={
@ -71,50 +71,50 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
`https://discordapp.com/oauth2/authorize?client_id=${data.id}&scope=bot&permissions=0` `https://discordapp.com/oauth2/authorize?client_id=${data.id}&scope=bot&permissions=0`
} }
> >
<h4 className="whitespace-nowrap"> <h4 className='whitespace-nowrap'>
<i className="fas fa-user-plus text-discord-blurple" /> <i className='fas fa-user-plus text-discord-blurple' />
</h4> </h4>
</LongButton> </LongButton>
<LongButton> <LongButton>
<h4> <h4>
<i className="fas fa-heart text-red-600" /> <i className='fas fa-heart text-red-600' />
</h4> </h4>
<span className="ml-1 px-2 py-1 text-center text-black dark:text-gray-400 text-sm bg-little-white-hover dark:bg-very-black rounded-lg"> <span className='ml-1 px-2 py-1 text-center text-black dark:text-gray-400 text-sm bg-little-white-hover dark:bg-very-black rounded-lg'>
{formatNumber(data.votes)} {formatNumber(data.votes)}
</span> </span>
</LongButton> </LongButton>
</div> </div>
</div> </div>
<Divider className="px-5" /> <Divider className='px-5' />
<div className="lg:flex lg:flex-row-reverse"> <div className='lg:flex lg:flex-row-reverse'>
<div className="mb-1 w-full lg:w-1/4"> <div className='mb-1 w-full lg:w-1/4'>
<h2 className="3xl mb-2 font-bold"></h2> <h2 className='3xl mb-2 font-bold'></h2>
<div className="grid gap-4 grid-cols-2 px-4 py-4 text-black dark:text-gray-400 dark:bg-discord-black bg-little-white"> <div className='grid gap-4 grid-cols-2 px-4 py-4 text-black dark:text-gray-400 dark:bg-discord-black bg-little-white'>
<div> <div>
<i className="far fa-flag" /> <i className='far fa-flag' />
</div> </div>
<div className="markdown-body text-black dark:text-gray-400"> <div className='markdown-body text-black dark:text-gray-400'>
<code>{data.prefix}</code> <code>{data.prefix}</code>
</div> </div>
<div> <div>
<i className="fas fa-users" /> <i className='fas fa-users' />
</div> </div>
<div>{data.servers}</div> <div>{data.servers}</div>
<div> <div>
<i className="fas fa-calendar-day" /> <i className='fas fa-calendar-day' />
</div> </div>
<div>{Day(date).fromNow(false)}</div> <div>{Day(date).fromNow(false)}</div>
<div> <div>
<i className="fas fa-check text-discord-blurple" /> <i className='fas fa-check text-discord-blurple' />
</div> </div>
</div> </div>
<h2 className="3xl mb-2 mt-2 font-bold"></h2> <h2 className='3xl mb-2 mt-2 font-bold'></h2>
<div className="flex flex-wrap"> <div className='flex flex-wrap'>
{data.category.map(el => ( {data.category.map(el => (
<Tag key={el} text={el} href={`/categories/${el}`} /> <Tag key={el} text={el} href={`/categories/${el}`} />
))} ))}
</div> </div>
<h2 className="3xl mb-2 mt-2 font-bold"></h2> <h2 className='3xl mb-2 mt-2 font-bold'></h2>
{(data.owners as User[]).map(el => ( {(data.owners as User[]).map(el => (
<Owner <Owner
key={el.id} key={el.id}
@ -124,40 +124,40 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
username={el.username} username={el.username}
/> />
))} ))}
<div className="list grid"> <div className='list grid'>
<Link href={`/bots/${data.id}/report`}> <Link href={`/bots/${data.id}/report`}>
<a className="text-red-600 hover:underline"> <a className='text-red-600 hover:underline'>
<i className="far fa-flag" /> <i className='far fa-flag' />
</a> </a>
</Link> </Link>
{data.discord && ( {data.discord && (
<a <a
rel="noopener noreferrer" rel='noopener noreferrer'
target="_blank" target='_blank'
className="text-discord-blurple hover:underline" className='text-discord-blurple hover:underline'
href={`https://discord.gg/${data.discord}`} href={`https://discord.gg/${data.discord}`}
> >
<i className="fab fa-discord" /> <i className='fab fa-discord' />
</a> </a>
)} )}
{data.web && ( {data.web && (
<a <a
rel="noopener noreferrer" rel='noopener noreferrer'
target="_blank" target='_blank'
className="text-blue-500 hover:underline" className='text-blue-500 hover:underline'
href={data.web} href={data.web}
> >
<i className="fas fa-globe" /> <i className='fas fa-globe' />
</a> </a>
)} )}
{data.git && ( {data.git && (
<a <a
rel="noopener noreferrer" rel='noopener noreferrer'
target="_blank" target='_blank'
className="hover:underline" className='hover:underline'
href={data.git} href={data.git}
> >
<i className={`fab fa-${git?.[new URL(data.git).hostname].icon ?? 'git-alt'}`} /> <i className={`fab fa-${git?.[new URL(data.git).hostname].icon ?? 'git-alt'}`} />
@ -167,7 +167,7 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
</div> </div>
<Advertisement /> <Advertisement />
</div> </div>
<div className="markdown-body pt-10 w-full lg:pr-5 lg:w-3/4"> <div className='markdown-body pt-10 w-full lg:pr-5 lg:w-3/4'>
<Advertisement /> <Advertisement />
<Segment> <Segment>
<h1> .</h1> <h1> .</h1>
@ -186,12 +186,12 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
<td>apple</td> <td>apple</td>
</tbody> </tbody>
</table> </table>
<ul className="list-disc"> <ul className='list-disc'>
<li>first</li> <li>first</li>
<li>second</li> <li>second</li>
</ul> </ul>
<ul className="list-decimal"> <ul className='list-decimal'>
<li>first</li> <li>first</li>
<li>second</li> <li>second</li>
</ul> </ul>

View File

@ -4,18 +4,18 @@ import Docs from '../components/Docs'
const Privacy: NextPage = () => { const Privacy: NextPage = () => {
return ( return (
<Docs <Docs
header="가이드라인" header='가이드라인'
description="리스트에 등재되는 모든 봇들이 지켜야하는 가이드라인입니다!" description='리스트에 등재되는 모든 봇들이 지켜야하는 가이드라인입니다!'
subheader="최초 작성: 2020-04-30 수정: 2020-05-15" subheader='최초 작성: 2020-04-30 수정: 2020-05-15'
> >
<h1 className="mb-3 text-4xl font-bold">KOREANBOTS에 .</h1> <h1 className='mb-3 text-4xl font-bold'>KOREANBOTS에 .</h1>
<p> .</p> <p> .</p>
<p> , .</p> <p> , .</p>
<h2 className="mt-10 text-3xl font-semibold" id="봇"> <h2 className='mt-10 text-3xl font-semibold' id='봇'>
</h2> </h2>
<p> .</p> <p> .</p>
<ul className="list-inside list-disc"> <ul className='list-inside list-disc'>
<li> .</li> <li> .</li>
<li> (NSFW의 NSFW를 .)</li> <li> (NSFW의 NSFW를 .)</li>
<li> <li>
@ -31,7 +31,7 @@ const Privacy: NextPage = () => {
<li> <li>
, <strong></strong> . , <strong></strong> .
, . , .
<ul className="pl-3 list-inside list-disc"> <ul className='pl-3 list-inside list-disc'>
<li> <li>
<strong> </strong>(MIT ) <strong> </strong>(MIT )
, . , .
@ -45,11 +45,11 @@ const Privacy: NextPage = () => {
</ul> </ul>
</li> </li>
</ul> </ul>
<h3 className="mt-x text-lg font-semibold" id="금지사항"> <h3 className='mt-x text-lg font-semibold' id='금지사항'>
</h3> </h3>
<p> .</p> <p> .</p>
<ul className="list-inside list-disc"> <ul className='list-inside list-disc'>
<li> .</li> <li> .</li>
<li> <li>
<strong>TOS</strong> <strong></strong>, <strong> </strong> <strong>TOS</strong> <strong></strong>, <strong> </strong>
@ -61,21 +61,21 @@ const Privacy: NextPage = () => {
</li> </li>
<li> , API </li> <li> , API </li>
</ul> </ul>
<h2 className="mt-10 text-3xl font-semibold" id="유저"> <h2 className='mt-10 text-3xl font-semibold' id='유저'>
</h2> </h2>
<p> <p>
( ) ( )
. .
</p> </p>
<ul className="list-inside list-disc"> <ul className='list-inside list-disc'>
<li> <li>
<strong>TOS</strong> <strong></strong>, <strong> </strong>{' '} <strong>TOS</strong> <strong></strong>, <strong> </strong>{' '}
<strong> </strong>, <strong> </strong>,{' '} <strong> </strong>, <strong> </strong>,{' '}
<strong> </strong> <strong> </strong>
</li> </li>
</ul> </ul>
<p className="mt-10"> <p className='mt-10'>
. , . ,
. .
</p> </p>

View File

@ -10,24 +10,24 @@ import { Fetch } from '../utils'
const Index: NextPage<IndexProps> = ({ votes, newBots, trusted }) => { const Index: NextPage<IndexProps> = ({ votes, newBots, trusted }) => {
return ( return (
<> <>
<div className="dark:bg-discord-black bg-discord-blurple"> <div className='dark:bg-discord-black bg-discord-blurple'>
<Container className="pb-28 pt-20" ignoreColor> <Container className='pb-28 pt-20' ignoreColor>
<h1 className="text-center text-gray-100 text-3xl font-bold sm:text-left"> <h1 className='text-center text-gray-100 text-3xl font-bold sm:text-left'>
</h1> </h1>
</Container> </Container>
</div> </div>
<Wave <Wave
color="currentColor" color='currentColor'
className="dark:text-discord-black text-discord-blurple dark:bg-discord-dark bg-white" className='dark:text-discord-black text-discord-blurple dark:bg-discord-dark bg-white'
/> />
<Container> <Container>
<Advertisement /> <Advertisement />
<h1 className="text-3xl font-bold"> <h1 className='text-3xl font-bold'>
<i className="far fa-heart mr-3 text-pink-600" /> <i className='far fa-heart mr-3 text-pink-600' />
</h1> </h1>
<p className="text-base"> !</p> <p className='text-base'> !</p>
<div className='grid gap-4 2xl:grid-cols-4 md:grid-cols-2 mt-10'> <div className='grid gap-4 2xl:grid-cols-4 md:grid-cols-2 mt-10'>
{ {
votes.data.slice(0, 8).map(bot=> <BotCard key={bot.id} bot={bot} />) votes.data.slice(0, 8).map(bot=> <BotCard key={bot.id} bot={bot} />)
@ -36,19 +36,19 @@ const Index: NextPage<IndexProps> = ({ votes, newBots, trusted }) => {
<LongButton href='/list/votes' center> <LongButton href='/list/votes' center>
<h1 className='text-2xl'></h1> <h1 className='text-2xl'></h1>
</LongButton> </LongButton>
<h1 className="text-3xl font-bold mt-5"> <h1 className='text-3xl font-bold mt-5'>
<i className="far fa-star mr-3 text-yellow-500" /> <i className='far fa-star mr-3 text-yellow-500' />
</h1> </h1>
<p className="text-base"> .</p> <p className='text-base'> .</p>
<div className='grid gap-4 2xl:grid-cols-4 md:grid-cols-2 mt-10'> <div className='grid gap-4 2xl:grid-cols-4 md:grid-cols-2 mt-10'>
{ {
newBots.data.slice(0, 4).map(bot=> <BotCard key={bot.id} bot={bot} />) newBots.data.slice(0, 4).map(bot=> <BotCard key={bot.id} bot={bot} />)
} }
</div> </div>
<h1 className="text-3xl font-bold"> <h1 className='text-3xl font-bold'>
<i className="fa fa-check mr-3 mt-10 text-green-500" /> <i className='fa fa-check mr-3 mt-10 text-green-500' />
</h1> </h1>
<p className="text-base">KOREANBOTS에서 !!</p> <p className='text-base'>KOREANBOTS에서 !!</p>
<div className='grid gap-4 2xl:grid-cols-4 md:grid-cols-2 mt-10'> <div className='grid gap-4 2xl:grid-cols-4 md:grid-cols-2 mt-10'>
{ {
trusted.data.slice(0, 4).map(bot=> <BotCard key={bot.id} bot={bot} />) trusted.data.slice(0, 4).map(bot=> <BotCard key={bot.id} bot={bot} />)

View File

@ -3,19 +3,19 @@ import Docs from '../components/Docs'
const Privacy: NextPage = () => { const Privacy: NextPage = () => {
return ( return (
<Docs header="개인정보취급방침" description="저희가 개인정보를 취급하는 방침입니다."> <Docs header='개인정보취급방침' description='저희가 개인정보를 취급하는 방침입니다.'>
<h2 className="mt-10 text-3xl font-medium"> </h2> <h2 className='mt-10 text-3xl font-medium'> </h2>
<p> <p>
"한국 디스코드봇 리스트"('https://koreanbots.dev') "한국 디스코드봇 리스트"('https://koreanbots.dev')
, . , .
</p> </p>
<ul className="list-inside list-disc"> <ul className='list-inside list-disc'>
<li> </li> <li> </li>
<li> </li> <li> </li>
<li> </li> <li> </li>
</ul> </ul>
<h2 className="mt-10 text-3xl font-medium"> </h2> <h2 className='mt-10 text-3xl font-medium'> </h2>
<ul className="list-inside list-disc"> <ul className='list-inside list-disc'>
<li> <li>
유저: 디스코드 Oauth를 (, ID, , , 유저: 디스코드 Oauth를 (, ID, , ,
), (IP주소, ), | 선택항목: Github ), (IP주소, ), | 선택항목: Github
@ -27,12 +27,12 @@ const Privacy: NextPage = () => {
</li> </li>
</ul> </ul>
<h2 className="mt-10 text-3xl font-medium"> </h2> <h2 className='mt-10 text-3xl font-medium'> </h2>
<p> <p>
<strong> </strong> , <strong> </strong> ,
. .
</p> </p>
<h2 className="mt-10 text-3xl font-medium"> </h2> <h2 className='mt-10 text-3xl font-medium'> </h2>
<p> <p>
. .
@ -41,28 +41,28 @@ const Privacy: NextPage = () => {
, ,
. .
</p> </p>
<h2 className="mt-10 text-3xl font-medium"> </h2> <h2 className='mt-10 text-3xl font-medium'> </h2>
<p> <p>
, ,
. .
</p> </p>
<h2 className="mt-10 text-3xl font-medium"> </h2> <h2 className='mt-10 text-3xl font-medium'> </h2>
<p> <p>
. .
</p> </p>
<h3> </h3> <h3> </h3>
<ul className="list-inside list-disc"> <ul className='list-inside list-disc'>
<li>성명: 박준서</li> <li>성명: 박준서</li>
<li>직책: 대표</li> <li>직책: 대표</li>
<li> <li>
: <a href="mailto:wonderlandpark@callisto.team"></a> : <a href='mailto:wonderlandpark@callisto.team'></a>
@wonderlandpark#9999 @wonderlandpark#9999
</li> </li>
</ul> </ul>
<h2 className="mt-10 text-3xl font-medium"> </h2> <h2 className='mt-10 text-3xl font-medium'> </h2>
<p> 7 .</p> <p> 7 .</p>
<h2 className="mt-10 text-3xl font-medium"> </h2> <h2 className='mt-10 text-3xl font-medium'> </h2>
<p> , .</p> <p> , .</p>
<p> <p>
, , , ,

View File

@ -18,7 +18,7 @@ const Users: NextPage<UserProps> = ({ data }) => {
if (!data.id) return <NotFound /> if (!data.id) return <NotFound />
console.log(data.bots[0]) console.log(data.bots[0])
return ( return (
<Container paddingTop className="py-10"> <Container paddingTop className='py-10'>
<SEO <SEO
title={data.username} title={data.username}
description={josa( description={josa(
@ -33,29 +33,29 @@ const Users: NextPage<UserProps> = ({ data }) => {
: `https://cdn.discordapp.com/embed/avatars/${Number(data.tag) % 5}.png?size=1024` : `https://cdn.discordapp.com/embed/avatars/${Number(data.tag) % 5}.png?size=1024`
} }
/> />
<div className="lg:flex"> <div className='lg:flex'>
<div className="w-full text-center lg:w-1/4"> <div className='w-full text-center lg:w-1/4'>
<DiscordImage <DiscordImage
userID={data.id} userID={data.id}
avatarHash={data.avatar} avatarHash={data.avatar}
tag={data.tag} tag={data.tag}
className="w-full" className='w-full'
/> />
</div> </div>
<div className="flex-grow px-5 py-12 w-full text-center lg:w-5/12 lg:text-left"> <div className='flex-grow px-5 py-12 w-full text-center lg:w-5/12 lg:text-left'>
<div> <div>
<h1 className="mb-2 mt-3 text-4xl font-bold">{data.username}</h1> <h1 className='mb-2 mt-3 text-4xl font-bold'>{data.username}</h1>
<span className="ml-0.5 text-gray-400 text-4xl font-semibold">#{data.tag}</span> <span className='ml-0.5 text-gray-400 text-4xl font-semibold'>#{data.tag}</span>
<br /> <br />
<div className="badges flex"> <div className='badges flex'>
{checkPerm(data.perm, 'staff') && ( {checkPerm(data.perm, 'staff') && (
<div className="pr-5 text-koreanbots-blue text-2xl"> <div className='pr-5 text-koreanbots-blue text-2xl'>
<i className="fas fa-hammer" /> <i className='fas fa-hammer' />
</div> </div>
)} )}
{checkPerm(data.perm, 'bughunter') && ( {checkPerm(data.perm, 'bughunter') && (
<div className="pr-5 text-green-500 text-2xl"> <div className='pr-5 text-green-500 text-2xl'>
<i className="fas fa-bug" /> <i className='fas fa-bug' />
</div> </div>
)} )}
</div> </div>
@ -65,7 +65,7 @@ const Users: NextPage<UserProps> = ({ data }) => {
newTab newTab
text={ text={
<> <>
<i className="fab fa-github" /> {data.github} <i className='fab fa-github' /> {data.github}
</> </>
} }
github github
@ -76,8 +76,8 @@ const Users: NextPage<UserProps> = ({ data }) => {
</div> </div>
</div> </div>
<Divider /> <Divider />
<h2 className="mt-8 text-3xl font-bold"> </h2> <h2 className='mt-8 text-3xl font-bold'> </h2>
<div className="grid gap-4 mt-20 2xl:grid-cols-4 md:grid-cols-2"> <div className='grid gap-4 mt-20 2xl:grid-cols-4 md:grid-cols-2'>
{(data.bots as Bot[]).map((bot: Bot) => ( {(data.bots as Bot[]).map((bot: Bot) => (
<BotCard key={bot.id} bot={bot} /> <BotCard key={bot.id} bot={bot} />
))} ))}