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'
],
rules: {
'jsx-quotes': ['error', 'prefer-single'],
'react/no-unescaped-entities': 'off',
'react/prop-types': 'off',
'react/react-in-jsx-scope': 'off',

View File

@ -2,17 +2,17 @@ const Advertisement = (): JSX.Element => {
if (process.env.NODE_ENV === 'production')
return (
<ins
className="adsbygoogle mb-5 w-full"
className='adsbygoogle mb-5 w-full'
style={{ display: 'block' }}
data-ad-client="ca-pub-4856582423981759"
data-ad-slot="3250141451"
data-ad-format="auto"
data-adtest="on"
data-full-width-responsive="true"
data-ad-client='ca-pub-4856582423981759'
data-ad-slot='3250141451'
data-ad-format='auto'
data-adtest='on'
data-full-width-responsive='true'
></ins>
)
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

View File

@ -7,47 +7,47 @@ import Link from 'next/link'
const BotCard = ({ bot }: BotProps): JSX.Element => {
return (
<div className="container mb-20">
<div className="relative">
<div className="container mx-auto">
<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="flex mb-16 h-48">
<div className="w-2/3">
<div className="flex justify-start">
<div className='container mb-20'>
<div className='relative'>
<div className='container mx-auto'>
<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='flex mb-16 h-48'>
<div className='w-2/3'>
<div className='flex justify-start'>
<img
alt="Avatar"
alt='Avatar'
src={
bot.avatar
? `https://cdn.discordapp.com/avatars/${bot.id}/${bot.avatar}.png?size=1024`
: `https://cdn.discordapp.com/embed/avatars/${Number(bot.tag) %
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 className="mt-28 px-4">
<h2 className="px-1 text-sm">
<div className='mt-28 px-4'>
<h2 className='px-1 text-sm'>
<i className={`fas fa-circle text-${Status[bot.status]?.color}`} />
{Status[bot.status]?.text}
</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.trusted ? (
<span className="text-koreanbots-blue text-3xl">
<i className="fas fa-award" />
<span className='text-koreanbots-blue text-3xl'>
<i className='fas fa-award' />
</span>
) : ''}
</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 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
text={
<>
<i className="fas fa-heart text-red-600" /> {formatNumber(bot.votes)}
<i className='fas fa-heart text-red-600' /> {formatNumber(bot.votes)}
</>
}
dark
@ -55,30 +55,30 @@ const BotCard = ({ bot }: BotProps): JSX.Element => {
<Tag blurple text={<>{formatNumber(bot.servers)} </>} dark />
</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 => (
<Tag key={el} text={el} href={`/categories/${el}`} dark/>
))}
</div>
<Divider />
<div className="flex justify-evenly">
<div className='flex justify-evenly'>
<Link
href={`/bots/${
(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>
</Link>
<a
rel="noopener noreferrer"
target="_blank"
rel='noopener noreferrer'
target='_blank'
href={
bot.url ??
`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>

View File

@ -17,7 +17,7 @@ const DiscordImage = (props: {
}
width={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 => {
return (
<>
<div className="dark:bg-discord-black bg-discord-blurple">
<Container className="pb-28 pt-20" ignoreColor>
<h1 className="mt-10 text-center text-gray-100 text-4xl font-bold sm:text-left">
<div className='dark:bg-discord-black bg-discord-blurple'>
<Container className='pb-28 pt-20' ignoreColor>
<h1 className='mt-10 text-center text-gray-100 text-4xl font-bold sm:text-left'>
{header}
</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}
</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}
</h2>
</Container>
</div>
<Wave
color="currentColor"
className="dark:text-discord-black text-discord-blurple dark:bg-discord-dark bg-white"
color='currentColor'
className='dark:text-discord-black text-discord-blurple dark:bg-discord-dark bg-white'
/>
<Container>
<div>{children}</div>

View File

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

View File

@ -3,8 +3,8 @@ import Link from 'next/link'
const LongButton = ({ children, newTab=false, href, onClick, center=false }:LongButtonProps):JSX.Element => {
if(href) {
if(newTab) return <a href={href} rel="noopener noreferrer"
target="_blank">
if(newTab) return <a href={href} rel='noopener noreferrer'
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`}>
{children}
</div>

View File

@ -5,57 +5,57 @@ const Navbar = (): JSX.Element => {
const [navbarOpen, setNavbarOpen] = useState<boolean>(false)
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">
<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">
<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='relative static block flex justify-between w-full lg:justify-start lg:w-auto'>
<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"
href="/"
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='/'
>
KOREANBOTS
</a>
<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"
type="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'
type='button'
onClick={() => setNavbarOpen(!navbarOpen)}
>
<i className={`fas ${!navbarOpen ? 'fa-bars' : 'fa-times'}`}></i>
</button>
</div>
<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">
<li className="flex items-center">
<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'>
<li className='flex items-center'>
<a
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"
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'
>
</a>
</li>
<li className="flex items-center">
<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">
<li className='flex items-center'>
<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>
</Link>
</li>
<li className="flex items-center">
<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">
<li className='flex items-center'>
<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'>
API
</a>
</Link>
</li>
<li className="flex items-center">
<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">
<li className='flex items-center'>
<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>
</Link>
</li>
<li className="flex items-center">
<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">
<li className='flex items-center'>
<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>
</Link>
@ -69,55 +69,55 @@ const Navbar = (): JSX.Element => {
navbarOpen ? 'block' : 'hidden'
}`}
>
<nav className="mt-20">
<Link href="/about">
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300">
<nav className='mt-20'>
<Link href='/about'>
<a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<svg
className="w-5 h-5"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className='w-5 h-5'
viewBox='0 0 24 24'
fill='none'
xmlns='http://www.w3.org/2000/svg'
>
<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"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
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'
strokeWidth='2'
strokeLinecap='round'
strokeLinejoin='round'
/>
</svg>
<span className="px-2 font-medium"></span>
<span className='px-2 font-medium'></span>
</a>
</Link>
<Link href="/about">
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300">
<i className="fas fa-tools" />
<Link href='/about'>
<a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<i className='fas fa-tools' />
<span className="px-2 font-medium">API</span>
<span className='px-2 font-medium'>API</span>
</a>
</Link>
<Link href="/addbot">
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300">
<i className="fas fa-plus"></i>
<span className="px-2 font-medium"> </span>
<Link href='/addbot'>
<a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<i className='fas fa-plus'></i>
<span className='px-2 font-medium'> </span>
</a>
</Link>
<Link href="/api/auth/login">
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300">
<i className="far fa-user" />
<span className="px-2 font-medium"></span>
<Link href='/api/auth/login'>
<a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<i className='far fa-user' />
<span className='px-2 font-medium'></span>
</a>
</Link>
</nav>
<div className="absolute bottom-0 my-10">
<a className="flex items-center px-8 py-2 text-gray-100 hover:text-gray-300">
<i className="fab fa-discord" />
<div className='absolute bottom-0 my-10'>
<a className='flex items-center px-8 py-2 text-gray-100 hover:text-gray-300'>
<i className='fab fa-discord' />
<Link href="/discord">
<a className="px-2 font-medium"> </a>
<Link href='/discord'>
<a className='px-2 font-medium'> </a>
</Link>
</a>
</div>

View File

@ -3,13 +3,13 @@ import DiscordImage from './DiscordImage'
const Owner = ({ id, username, tag, avatarHash }:OwnerProps):JSX.Element => {
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="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} />
<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'>
<DiscordImage userID={id} tag={tag} avatarHash={avatarHash} className='absolute inset-0 z-negative w-full h-full' size={50} />
</div>
<div className="flex-1 leading-snug w-0">
<h4 className="whitespace-nowrap">{username}
</h4><span className="text-sm text-gray-600">#{tag}</span>
<div className='flex-1 leading-snug w-0'>
<h4 className='whitespace-nowrap'>{username}
</h4><span className='text-sm text-gray-600'>#{tag}</span>
</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'>

View File

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

View File

@ -1,6 +1,6 @@
const Segment = ({ children }): JSX.Element => {
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}
</div>
)

View File

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

View File

@ -1,9 +1,9 @@
const Wave = ({ color, className }: WaveProps): JSX.Element => {
return (
<svg viewBox="0 0 1440 320" className={className}>
<svg viewBox='0 0 1440 320' className={className}>
<path
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>
)

View File

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

View File

@ -11,11 +11,11 @@ class MyDocument extends Document {
<Html>
<Head>
<script
data-ad-client="ca-pub-4856582423981759"
data-ad-client='ca-pub-4856582423981759'
async
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"
src='https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'
></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
dangerouslySetInnerHTML={{
__html: `
@ -28,7 +28,7 @@ class MyDocument extends Document {
}}
/>
</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 />
<NextScript />
</body>

View File

@ -22,7 +22,7 @@ import Link from 'next/link'
const Bots: NextPage<BotsProps> = ({ data, date }) => {
if (!data.id) return <NotFound />
return (
<Container paddingTop className="py-10">
<Container paddingTop className='py-10'>
<SEO
title={data.name}
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`
}
/>
<div className="lg:flex">
<div className="w-full text-center lg:w-1/4">
<div className='lg:flex'>
<div className='w-full text-center lg:w-1/4'>
<DiscordImage
userID={data.id}
avatarHash={data.avatar}
tag={data.tag}
className="w-full"
className='w-full'
/>
</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>
<Tag
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.trusted ? (
<span className="text-koreanbots-blue text-3xl">
<i className="fas fa-award" />
<span className='text-koreanbots-blue text-3xl'>
<i className='fas fa-award' />
</span>
) : ''}
</h1>
</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 className="w-full lg:w-1/4">
<div className='w-full lg:w-1/4'>
<LongButton
newTab
href={
@ -71,50 +71,50 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
`https://discordapp.com/oauth2/authorize?client_id=${data.id}&scope=bot&permissions=0`
}
>
<h4 className="whitespace-nowrap">
<i className="fas fa-user-plus text-discord-blurple" />
<h4 className='whitespace-nowrap'>
<i className='fas fa-user-plus text-discord-blurple' />
</h4>
</LongButton>
<LongButton>
<h4>
<i className="fas fa-heart text-red-600" />
<i className='fas fa-heart text-red-600' />
</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)}
</span>
</LongButton>
</div>
</div>
<Divider className="px-5" />
<div className="lg:flex lg:flex-row-reverse">
<div className="mb-1 w-full lg:w-1/4">
<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">
<Divider className='px-5' />
<div className='lg:flex lg:flex-row-reverse'>
<div className='mb-1 w-full lg:w-1/4'>
<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>
<i className="far fa-flag" />
<i className='far fa-flag' />
</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>
</div>
<div>
<i className="fas fa-users" />
<i className='fas fa-users' />
</div>
<div>{data.servers}</div>
<div>
<i className="fas fa-calendar-day" />
<i className='fas fa-calendar-day' />
</div>
<div>{Day(date).fromNow(false)}</div>
<div>
<i className="fas fa-check text-discord-blurple" />
<i className='fas fa-check text-discord-blurple' />
</div>
</div>
<h2 className="3xl mb-2 mt-2 font-bold"></h2>
<div className="flex flex-wrap">
<h2 className='3xl mb-2 mt-2 font-bold'></h2>
<div className='flex flex-wrap'>
{data.category.map(el => (
<Tag key={el} text={el} href={`/categories/${el}`} />
))}
</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 => (
<Owner
key={el.id}
@ -124,40 +124,40 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
username={el.username}
/>
))}
<div className="list grid">
<div className='list grid'>
<Link href={`/bots/${data.id}/report`}>
<a className="text-red-600 hover:underline">
<i className="far fa-flag" />
<a className='text-red-600 hover:underline'>
<i className='far fa-flag' />
</a>
</Link>
{data.discord && (
<a
rel="noopener noreferrer"
target="_blank"
className="text-discord-blurple hover:underline"
rel='noopener noreferrer'
target='_blank'
className='text-discord-blurple hover:underline'
href={`https://discord.gg/${data.discord}`}
>
<i className="fab fa-discord" />
<i className='fab fa-discord' />
</a>
)}
{data.web && (
<a
rel="noopener noreferrer"
target="_blank"
className="text-blue-500 hover:underline"
rel='noopener noreferrer'
target='_blank'
className='text-blue-500 hover:underline'
href={data.web}
>
<i className="fas fa-globe" />
<i className='fas fa-globe' />
</a>
)}
{data.git && (
<a
rel="noopener noreferrer"
target="_blank"
className="hover:underline"
rel='noopener noreferrer'
target='_blank'
className='hover:underline'
href={data.git}
>
<i className={`fab fa-${git?.[new URL(data.git).hostname].icon ?? 'git-alt'}`} />
@ -167,7 +167,7 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
</div>
<Advertisement />
</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 />
<Segment>
<h1> .</h1>
@ -186,12 +186,12 @@ const Bots: NextPage<BotsProps> = ({ data, date }) => {
<td>apple</td>
</tbody>
</table>
<ul className="list-disc">
<ul className='list-disc'>
<li>first</li>
<li>second</li>
</ul>
<ul className="list-decimal">
<ul className='list-decimal'>
<li>first</li>
<li>second</li>
</ul>

View File

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

View File

@ -10,24 +10,24 @@ import { Fetch } from '../utils'
const Index: NextPage<IndexProps> = ({ votes, newBots, trusted }) => {
return (
<>
<div className="dark:bg-discord-black bg-discord-blurple">
<Container className="pb-28 pt-20" ignoreColor>
<h1 className="text-center text-gray-100 text-3xl font-bold sm:text-left">
<div className='dark:bg-discord-black bg-discord-blurple'>
<Container className='pb-28 pt-20' ignoreColor>
<h1 className='text-center text-gray-100 text-3xl font-bold sm:text-left'>
</h1>
</Container>
</div>
<Wave
color="currentColor"
className="dark:text-discord-black text-discord-blurple dark:bg-discord-dark bg-white"
color='currentColor'
className='dark:text-discord-black text-discord-blurple dark:bg-discord-dark bg-white'
/>
<Container>
<Advertisement />
<h1 className="text-3xl font-bold">
<i className="far fa-heart mr-3 text-pink-600" />
<h1 className='text-3xl font-bold'>
<i className='far fa-heart mr-3 text-pink-600' />
</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'>
{
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>
<h1 className='text-2xl'></h1>
</LongButton>
<h1 className="text-3xl font-bold mt-5">
<i className="far fa-star mr-3 text-yellow-500" />
<h1 className='text-3xl font-bold mt-5'>
<i className='far fa-star mr-3 text-yellow-500' />
</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'>
{
newBots.data.slice(0, 4).map(bot=> <BotCard key={bot.id} bot={bot} />)
}
</div>
<h1 className="text-3xl font-bold">
<i className="fa fa-check mr-3 mt-10 text-green-500" />
<h1 className='text-3xl font-bold'>
<i className='fa fa-check mr-3 mt-10 text-green-500' />
</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'>
{
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 = () => {
return (
<Docs header="개인정보취급방침" description="저희가 개인정보를 취급하는 방침입니다.">
<h2 className="mt-10 text-3xl font-medium"> </h2>
<Docs header='개인정보취급방침' description='저희가 개인정보를 취급하는 방침입니다.'>
<h2 className='mt-10 text-3xl font-medium'> </h2>
<p>
"한국 디스코드봇 리스트"('https://koreanbots.dev')
, .
</p>
<ul className="list-inside list-disc">
<ul className='list-inside list-disc'>
<li> </li>
<li> </li>
<li> </li>
</ul>
<h2 className="mt-10 text-3xl font-medium"> </h2>
<ul className="list-inside list-disc">
<h2 className='mt-10 text-3xl font-medium'> </h2>
<ul className='list-inside list-disc'>
<li>
유저: 디스코드 Oauth를 (, ID, , ,
), (IP주소, ), | 선택항목: Github
@ -27,12 +27,12 @@ const Privacy: NextPage = () => {
</li>
</ul>
<h2 className="mt-10 text-3xl font-medium"> </h2>
<h2 className='mt-10 text-3xl font-medium'> </h2>
<p>
<strong> </strong> ,
.
</p>
<h2 className="mt-10 text-3xl font-medium"> </h2>
<h2 className='mt-10 text-3xl font-medium'> </h2>
<p>
.
@ -41,28 +41,28 @@ const Privacy: NextPage = () => {
,
.
</p>
<h2 className="mt-10 text-3xl font-medium"> </h2>
<h2 className='mt-10 text-3xl font-medium'> </h2>
<p>
,
.
</p>
<h2 className="mt-10 text-3xl font-medium"> </h2>
<h2 className='mt-10 text-3xl font-medium'> </h2>
<p>
.
</p>
<h3> </h3>
<ul className="list-inside list-disc">
<ul className='list-inside list-disc'>
<li>성명: 박준서</li>
<li>직책: 대표</li>
<li>
: <a href="mailto:wonderlandpark@callisto.team"></a>
: <a href='mailto:wonderlandpark@callisto.team'></a>
@wonderlandpark#9999
</li>
</ul>
<h2 className="mt-10 text-3xl font-medium"> </h2>
<h2 className='mt-10 text-3xl font-medium'> </h2>
<p> 7 .</p>
<h2 className="mt-10 text-3xl font-medium"> </h2>
<h2 className='mt-10 text-3xl font-medium'> </h2>
<p> , .</p>
<p>
, ,

View File

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