chore: deps (#566)

* chore: remove zlib-sync

* chore: pin version of @types/react

* chore: remove next-session

* chore: update tailwind

* chore: update tailwind

* chore: update lint

* chore: remove abort-controller

* chore: regen lock file

* fix: remove transparent

* chore: set plugin to not mutate existing style
This commit is contained in:
SKINMAKER 2023-06-20 12:59:42 +09:00 committed by GitHub
parent 0d92e6ebfd
commit bec6aa3554
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 4136 additions and 4365 deletions

View File

@ -84,7 +84,7 @@ const BotCard: React.FC<BotCardProps> = ({ manage = false, bot }) => {
</Link> </Link>
{manage ? ( {manage ? (
<Link href={`/bots/${bot.id}/edit`}> <Link href={`/bots/${bot.id}/edit`}>
<a className='py-3 w-full text-center text-green-500 hover:text-white text-sm font-bold hover:bg-green-500 rounded-br-2xl hover:shadow-lg transition duration-100 ease-in'> <a className='py-3 w-full text-center text-emerald-500 hover:text-white text-sm font-bold hover:bg-emerald-500 rounded-br-2xl hover:shadow-lg transition duration-100 ease-in'>
</a> </a>
</Link> </Link>

View File

@ -28,7 +28,7 @@ const Footer: React.FC<FooterProps> = ({ theme, setTheme }) => {
</a> </a>
</div> </div>
</div> </div>
<div className='grid flex-grow gap-2 grid-cols-2 md:grid-cols-7'> <div className='grid grow gap-2 grid-cols-2 md:grid-cols-7'>
<div className='col-span-2 mb-2'> <div className='col-span-2 mb-2'>
<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'>

View File

@ -43,7 +43,7 @@ const Navbar: React.FC<NavbarProps> = ({ token }) => {
}, [ token ]) }, [ token ])
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 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 flex justify-between w-full lg:justify-start lg:w-auto'> <div className='relative flex justify-between w-full lg:justify-start lg:w-auto'>
<Link href={dev ? '/developers' : '/'}> <Link href={dev ? '/developers' : '/'}>
@ -121,7 +121,7 @@ const Navbar: React.FC<NavbarProps> = ({ token }) => {
</li> </li>
</ul> </ul>
</div> </div>
<div className='hidden flex-grow items-center bg-white lg:flex lg:bg-transparent lg:shadow-none'> <div className='hidden 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 outline-none' onFocus={() => setDropdownOpen(true)} onMouseOver={() => setDropdownOpen(true)} onMouseOut={() => setDropdownOpen(false)} onBlur={() => setDropdownOpen(false)}> <li className='flex items-center outline-none' onFocus={() => setDropdownOpen(true)} onMouseOver={() => setDropdownOpen(true)} onMouseOut={() => setDropdownOpen(false)} onBlur={() => setDropdownOpen(false)}>
{ {

View File

@ -5,11 +5,11 @@ const Owner: React.FC<OwnerProps> = ({ id, globalName, username, tag, crown=fals
return ( return (
<Link href={`/users/${id}`}> <Link href={`/users/${id}`}>
<a className='dark:hover:bg-discord-dark-hover flex mb-1 px-4 py-4 text-black dark:text-gray-400 text-base dark:bg-discord-black bg-little-white hover:bg-little-white-hover rounded cursor-pointer'> <a className='dark:hover:bg-discord-dark-hover flex mb-1 px-4 py-4 text-black dark:text-gray-400 text-base dark:bg-discord-black bg-little-white hover:bg-little-white-hover rounded cursor-pointer'>
<div className='relative flex-shrink-0 mr-3 mt-1 w-8 h-8 rounded-full shadow-inner overflow-hidden'> <div className='relative shrink-0 mr-3 mt-1 w-8 h-8 rounded-full shadow-inner overflow-hidden'>
<DiscordAvatar userID={id} className='z-negative absolute inset-0 w-full h-full' /> <DiscordAvatar userID={id} className='z-negative absolute inset-0 w-full h-full' />
</div> </div>
<div className='flex-1 w-0 leading-snug'> <div className='flex-1 w-0 leading-snug'>
<h4 className='whitespace-nowrap truncate'>{ crown && <i className='fas fa-crown text-yellow-300 text-xs' /> }{globalName}</h4> <h4 className='whitespace-nowrap truncate'>{ crown && <i className='fas fa-crown text-amber-300 text-xs' /> }{globalName}</h4>
<span className='text-gray-600 text-sm'>{tag !== '0' ? '#' + tag : '@' + username}</span> <span className='text-gray-600 text-sm'>{tag !== '0' ? '#' + tag : '@' + username}</span>
</div> </div>
</a> </a>

View File

@ -6,7 +6,7 @@ const Button = dynamic(() => import('@components/Button'))
const TextArea = dynamic(() => import('@components/Form/TextArea')) const TextArea = dynamic(() => import('@components/Form/TextArea'))
export const Check: FC<{ checked: boolean, text: string }> = ({ checked, text }) => <> export const Check: FC<{ checked: boolean, text: string }> = ({ checked, text }) => <>
{checked && <i className='text-green-400 fas fa-check-circle mr-1' />} {checked && <i className='text-emerald-400 fas fa-check-circle mr-1' />}
{text} {text}
</> </>

View File

@ -2,8 +2,6 @@ import { useEffect, useRef, useState } from 'react'
import { useRouter } from 'next/router' import { useRouter } from 'next/router'
import Link from 'next/link' import Link from 'next/link'
import dynamic from 'next/dynamic' import dynamic from 'next/dynamic'
import AbortController from 'abort-controller'
import { makeBotURL, makeServerURL, redirectTo } from '@utils/Tools' import { makeBotURL, makeServerURL, redirectTo } from '@utils/Tools'
import Fetch from '@utils/Fetch' import Fetch from '@utils/Fetch'
import { Bot, Server, ResponseProps } from '@types' import { Bot, Server, ResponseProps } from '@types'
@ -87,7 +85,7 @@ const Search: React.FC = () => {
<input <input
type='search' type='search'
maxLength={50} maxLength={50}
className='flex-grow pr-20 px-7 py-3 h-16 text-xl bg-transparent border-0 border-none outline-none shadow' className='grow pr-20 px-7 py-3 h-16 text-xl bg-transparent border-0 border-none outline-none shadow'
placeholder='검색...' placeholder='검색...'
value={query} value={query}
onChange={e => { onChange={e => {

View File

@ -85,7 +85,7 @@ const ServerCard: React.FC<BotCardProps> = ({ type, server }) => {
{ {
type === 'add' ? type === 'add' ?
server.data ? <Link href={newServerLink}> server.data ? <Link href={newServerLink}>
<a className='py-3 w-full text-center text-green-500 hover:text-white text-sm font-bold hover:bg-green-500 rounded-b-2xl hover:shadow-lg transition duration-100 ease-in'> <a className='py-3 w-full text-center text-emerald-500 hover:text-white text-sm font-bold hover:bg-emerald-500 rounded-b-2xl hover:shadow-lg transition duration-100 ease-in'>
</a> </a>
</Link> : <Link href={newServerLink}> </Link> : <Link href={newServerLink}>
@ -106,7 +106,7 @@ const ServerCard: React.FC<BotCardProps> = ({ type, server }) => {
</Link> </Link>
{type === 'manage' ? ( {type === 'manage' ? (
<Link href={`/servers/${server.id}/edit`}> <Link href={`/servers/${server.id}/edit`}>
<a className='py-3 w-full text-center text-green-500 hover:text-white text-sm font-bold hover:bg-green-500 rounded-br-2xl hover:shadow-lg transition duration-100 ease-in'> <a className='py-3 w-full text-center text-emerald-500 hover:text-white text-sm font-bold hover:bg-emerald-500 rounded-br-2xl hover:shadow-lg transition duration-100 ease-in'>
</a> </a>
</Link> </Link>

View File

@ -11,7 +11,7 @@ const SubmittedBotCard: React.FC<SubmittedBotProps> = ({ href, submit }) => {
<a className='relative mx-auto px-4 py-5 w-full h-full text-black dark:text-white dark:bg-discord-black bg-little-white rounded-2xl shadow-xl transform hover:-translate-y-1 transition duration-100 ease-in'> <a className='relative mx-auto px-4 py-5 w-full h-full text-black dark:text-white dark:bg-discord-black bg-little-white rounded-2xl shadow-xl transform hover:-translate-y-1 transition duration-100 ease-in'>
<div className='h-18'> <div className='h-18'>
<div className='flex'> <div className='flex'>
<div className='flex-grow w-full'> <div className='grow w-full'>
<h2 className='text-lg'>{submit.id}</h2> <h2 className='text-lg'>{submit.id}</h2>
</div> </div>
<div className='absolute right-0 grid grid-cols-1 px-4 w-2/5 h-0'> <div className='absolute right-0 grid grid-cols-1 px-4 w-2/5 h-0'>

View File

@ -17,8 +17,8 @@
"@fortawesome/fontawesome-free": "5.15.3", "@fortawesome/fontawesome-free": "5.15.3",
"@hcaptcha/react-hcaptcha": "0.3.6", "@hcaptcha/react-hcaptcha": "0.3.6",
"@sentry/nextjs": "^7.31.1", "@sentry/nextjs": "^7.31.1",
"abort-controller": "3.0.0", "@tailwindcss/forms": "^0.5.3",
"autoprefixer": "^10.3.1", "autoprefixer": "^10.4.14",
"badgen": "3.2.2", "badgen": "3.2.2",
"cookie": "0.4.1", "cookie": "0.4.1",
"csrf": "3.1.0", "csrf": "3.1.0",
@ -41,10 +41,9 @@
"next-connect": "0.10.1", "next-connect": "0.10.1",
"next-pwa": "^5.6.0", "next-pwa": "^5.6.0",
"next-seo": "^4.26.0", "next-seo": "^4.26.0",
"next-session": "3.4.0",
"node-emoji": "1.10.0", "node-emoji": "1.10.0",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"postcss": "8.3.6", "postcss": "^8.4.24",
"postcss-preset-env": "6.7.0", "postcss-preset-env": "6.7.0",
"rc-tooltip": "5.1.1", "rc-tooltip": "5.1.1",
"react": "17.0.2", "react": "17.0.2",
@ -58,16 +57,14 @@
"react-sortable-hoc": "2.0.0", "react-sortable-hoc": "2.0.0",
"react-use-clipboard": "1.0.7", "react-use-clipboard": "1.0.7",
"sanitize-html": "^2.8.1", "sanitize-html": "^2.8.1",
"tailwindcss": "2.2.7", "tailwindcss": "^3.3.2",
"tlru": "1.0.2", "tlru": "1.0.2",
"twemoji": "13.1.0", "twemoji": "13.1.0",
"url-regex-safe": "2.0.2", "url-regex-safe": "2.0.2",
"yup": "0.32.9", "yup": "0.32.9",
"yup-locales-ko": "1.2.0", "yup-locales-ko": "1.2.0"
"zlib-sync": "0.1.7"
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/custom-forms": "0.2.1",
"@types/cookie": "^0.4.1", "@types/cookie": "^0.4.1",
"@types/emoji-mart": "^3.0.5", "@types/emoji-mart": "^3.0.5",
"@types/express-rate-limit": "^5.1.3", "@types/express-rate-limit": "^5.1.3",
@ -84,20 +81,23 @@
"@types/sanitize-html": "^2.8.0", "@types/sanitize-html": "^2.8.0",
"@types/twemoji": "^12.1.2", "@types/twemoji": "^12.1.2",
"@types/url-regex-safe": "1.0.0", "@types/url-regex-safe": "1.0.0",
"@typescript-eslint/eslint-plugin": "4.28.5", "@typescript-eslint/eslint-plugin": "^5.59.11",
"@typescript-eslint/parser": "^4.28.5", "@typescript-eslint/parser": "^5.59.11",
"eslint": "^7.31.0", "eslint": "^8.43.0",
"eslint-config-next": "^11.0.1", "eslint-config-next": "^13.4.6",
"eslint-config-prettier": "8.3.0", "eslint-config-prettier": "^8.8.0",
"eslint-plugin-jsx-a11y": "6.4.1", "eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-prettier": "3.4.0", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "7.24.0", "eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "4.2.0", "eslint-plugin-react-hooks": "^4.6.0",
"jest": "^29.4.1", "jest": "^29.4.1",
"prettier": "^2.3.2", "prettier": "^2.3.2",
"prettier-plugin-tailwind": "^2.2.12", "prettier-plugin-tailwind": "^2.2.12",
"ts-jest": "^29.0.5", "ts-jest": "^29.0.5",
"typescript": "4.6.4" "typescript": "^5.1.3"
},
"resolutions": {
"@types/react": "^17.0.15"
}, },
"license": "AGPL-3.0" "license": "AGPL-3.0"
} }

View File

@ -175,7 +175,7 @@ const ManageBotPage:NextPage<ManageBotProps> = ({ bot, user, csrfToken, theme })
<h2 className='text-2xl font-semibold pb-2'></h2> <h2 className='text-2xl font-semibold pb-2'></h2>
<Segment> <Segment>
<div className='lg:flex items-center'> <div className='lg:flex items-center'>
<div className='flex-grow py-1'> <div className='grow py-1'>
<h3 className='text-lg font-semibold'> </h3> <h3 className='text-lg font-semibold'> </h3>
<p className='text-gray-400'> .</p> <p className='text-gray-400'> .</p>
</div> </div>
@ -221,7 +221,7 @@ const ManageBotPage:NextPage<ManageBotProps> = ({ bot, user, csrfToken, theme })
} }
</div> </div>
<div className='flex'> <div className='flex'>
<div className='flex-grow pr-2'> <div className='grow pr-2'>
<Input name='id' placeholder='추가할 유저 ID' /> <Input name='id' placeholder='추가할 유저 ID' />
</div> </div>
<Button className='w-16 bg-discord-blurple' onClick={async () => { <Button className='w-16 bg-discord-blurple' onClick={async () => {
@ -248,7 +248,7 @@ const ManageBotPage:NextPage<ManageBotProps> = ({ bot, user, csrfToken, theme })
</div> </div>
<Divider /> <Divider />
<div className='lg:flex items-center'> <div className='lg:flex items-center'>
<div className='flex-grow py-1'> <div className='grow py-1'>
<h3 className='text-lg font-semibold'> </h3> <h3 className='text-lg font-semibold'> </h3>
<p className='text-gray-400'> . .</p> <p className='text-gray-400'> . .</p>
</div> </div>
@ -290,7 +290,7 @@ const ManageBotPage:NextPage<ManageBotProps> = ({ bot, user, csrfToken, theme })
</div> </div>
<Divider /> <Divider />
<div className='lg:flex items-center'> <div className='lg:flex items-center'>
<div className='flex-grow py-1'> <div className='grow py-1'>
<h3 className='text-lg font-semibold'> </h3> <h3 className='text-lg font-semibold'> </h3>
<p className='text-gray-400'> .</p> <p className='text-gray-400'> .</p>
</div> </div>

View File

@ -95,7 +95,7 @@ const Bots: NextPage<BotsProps> = ({ data, desc, date, user, theme, csrfToken })
className='w-full rounded-full' className='w-full rounded-full'
/> />
</div> </div>
<div className='flex-grow px-5 py-12 w-full text-center lg:w-5/12 lg:text-left'> <div className='grow px-5 py-12 w-full text-center lg:w-5/12 lg:text-left'>
<Tag <Tag
circular circular
text={ text={
@ -318,7 +318,7 @@ const Bots: NextPage<BotsProps> = ({ data, desc, date, user, theme, csrfToken })
{ {
checkBotFlag(data.flags, 'hackerthon') ? <Segment className='mt-10'> checkBotFlag(data.flags, 'hackerthon') ? <Segment className='mt-10'>
<h1 className='text-3xl font-semibold'> <h1 className='text-3xl font-semibold'>
<i className='fas fa-trophy mr-4 my-2 text-yellow-300' /> ! <i className='fas fa-trophy mr-4 my-2 text-amber-300' /> !
</h1> </h1>
<p> "한국 디스코드 리스트 제1회 해커톤" .</p> <p> "한국 디스코드 리스트 제1회 해커톤" .</p>
<p> <a className='text-blue-500 hover:text-blue-400' href='https://blog.koreanbots.dev/first-hackathon-results/'> </a> .</p> <p> <a className='text-blue-500 hover:text-blue-400' href='https://blog.koreanbots.dev/first-hackathon-results/'> </a> .</p>

View File

@ -30,7 +30,7 @@ const Index: NextPage<IndexProps> = ({ votes, newBots, trusted }) => {
<Paginator totalPage={votes.totalPage} currentPage={votes.currentPage} pathname='/bots/list/votes' /> <Paginator totalPage={votes.totalPage} currentPage={votes.currentPage} pathname='/bots/list/votes' />
<Advertisement /> <Advertisement />
<h1 className='text-3xl font-bold mb-2'> <h1 className='text-3xl font-bold mb-2'>
<i className='fa fa-check mr-3 mt-10 text-green-500' /> <i className='fa fa-check mr-3 mt-10 text-emerald-500' />
</h1> </h1>
<p className='text-base'> !!</p> <p className='text-base'> !!</p>
<ResponsiveGrid> <ResponsiveGrid>
@ -39,7 +39,7 @@ const Index: NextPage<IndexProps> = ({ votes, newBots, trusted }) => {
} }
</ResponsiveGrid> </ResponsiveGrid>
<h1 className='text-3xl font-bold mt-20 mb-2'> <h1 className='text-3xl font-bold mt-20 mb-2'>
<i className='far fa-star mr-3 text-yellow-500' /> <i className='far fa-star mr-3 text-amber-500' />
</h1> </h1>
<p className='text-base'> .</p> <p className='text-base'> .</p>
<ResponsiveGrid> <ResponsiveGrid>

View File

@ -18,7 +18,7 @@ const Calculator:NextPage<CalculatorProps> = ({ query }) => {
<input className='form-checkbox text-discord-blurple bg-gray-300 h-5 w-5 rounded' type='checkbox' checked={value[perm]} onChange={() => { <input className='form-checkbox text-discord-blurple bg-gray-300 h-5 w-5 rounded' type='checkbox' checked={value[perm]} onChange={() => {
setValue({ ...value, [perm]: !value[perm] }) setValue({ ...value, [perm]: !value[perm] })
}} /> }} />
<span className={`ml-2.5 text-lg ${yellow ? 'text-yellow-500' : ''}`}>{name}</span> <span className={`ml-2.5 text-lg ${yellow ? 'text-amber-500' : ''}`}>{name}</span>
</label> </label>
</li> </li>
@ -76,7 +76,7 @@ const Calculator:NextPage<CalculatorProps> = ({ query }) => {
</div> </div>
</div> </div>
<div className='py-10'> <div className='py-10'>
<span className='text-yellow-500'> = 2 , <a href='https://support.discord.com/hc/ko/articles/219576828-2단계-인증-설정하기'>2 </a> .</span> <span className='text-amber-500'> = 2 , <a href='https://support.discord.com/hc/ko/articles/219576828-2단계-인증-설정하기'>2 </a> .</span>
</div> </div>
<Formik onSubmit={()=> console.log('Pong?')} initialValues={{ <Formik onSubmit={()=> console.log('Pong?')} initialValues={{
id: query.id?.toString() || '', id: query.id?.toString() || '',

View File

@ -93,7 +93,7 @@ const BotApplication: NextPage<BotApplicationProps> = ({ user, spec, bot, theme,
<pre className='text-sm overflow-x-scroll w-full'>{showToken ? spec.token : '******************'}</pre> <pre className='text-sm overflow-x-scroll w-full'>{showToken ? spec.token : '******************'}</pre>
<div className='pt-3 pb-6'> <div className='pt-3 pb-6'>
<Button onClick={() => setShowToken(!showToken)}>{showToken ? '숨기기' : '보기'}</Button> <Button onClick={() => setShowToken(!showToken)}>{showToken ? '숨기기' : '보기'}</Button>
<Button onClick={setTokenCopied} className={tokenCopied ? 'bg-green-400 text-white' : null}>{tokenCopied ? '복사됨' : '복사'}</Button> <Button onClick={setTokenCopied} className={tokenCopied ? 'bg-emerald-400 text-white' : null}>{tokenCopied ? '복사됨' : '복사'}</Button>
<Button onClick={()=> setModalOpen(true)}></Button> <Button onClick={()=> setModalOpen(true)}></Button>
<Modal isOpen={modalOpened} onClose={() => setModalOpen(false)} dark={theme === 'dark'} header='정말로 토큰을 재발급하시겠습니까?'> <Modal isOpen={modalOpened} onClose={() => setModalOpen(false)} dark={theme === 'dark'} header='정말로 토큰을 재발급하시겠습니까?'>
<p> </p> <p> </p>

View File

@ -94,7 +94,7 @@ const ServerApplication: NextPage<ServerApplicationProps> = ({ user, spec, serve
<pre className='text-sm overflow-x-scroll w-full'>{showToken ? spec.token : '******************'}</pre> <pre className='text-sm overflow-x-scroll w-full'>{showToken ? spec.token : '******************'}</pre>
<div className='pt-3 pb-6'> <div className='pt-3 pb-6'>
<Button onClick={() => setShowToken(!showToken)}>{showToken ? '숨기기' : '보기'}</Button> <Button onClick={() => setShowToken(!showToken)}>{showToken ? '숨기기' : '보기'}</Button>
<Button onClick={setTokenCopied} className={tokenCopied ? 'bg-green-400 text-white' : null}>{tokenCopied ? '복사됨' : '복사'}</Button> <Button onClick={setTokenCopied} className={tokenCopied ? 'bg-emerald-400 text-white' : null}>{tokenCopied ? '복사됨' : '복사'}</Button>
<Button onClick={()=> setModalOpen(true)}></Button> <Button onClick={()=> setModalOpen(true)}></Button>
<Modal isOpen={modalOpened} onClose={() => setModalOpen(false)} dark={theme === 'dark'} header='정말로 토큰을 재발급하시겠습니까?'> <Modal isOpen={modalOpened} onClose={() => setModalOpen(false)} dark={theme === 'dark'} header='정말로 토큰을 재발급하시겠습니까?'>
<p> </p> <p> </p>

View File

@ -76,10 +76,10 @@ export async function getStaticProps () {
function code({ children }:{ children: string }):JSX.Element { function code({ children }:{ children: string }):JSX.Element {
const methods = { const methods = {
get: 'text-green-400', get: 'text-emerald-400',
post: 'text-yellow-400', post: 'text-amber-400',
put: 'text-blue-500', put: 'text-blue-500',
patch: 'text-yellow-400', patch: 'text-amber-400',
delete: 'text-red-500' delete: 'text-red-500'
} }
return <code className={`${methods[String(children).toLowerCase()]}`}> return <code className={`${methods[String(children).toLowerCase()]}`}>

View File

@ -82,7 +82,7 @@ const PendingBot: NextPage<PendingBotProps> = ({ data }) => {
</LongButton> </LongButton>
<LongButton onClick={setCopied}> <LongButton onClick={setCopied}>
<h4> <h4>
{ isCopied ? <><i className='fas fa-check text-green-400' /> </> : <><i className='far fa-copy'/> </>} { isCopied ? <><i className='fas fa-check text-emerald-400' /> </> : <><i className='far fa-copy'/> </>}
</h4> </h4>
</LongButton> </LongButton>
</div> </div>

View File

@ -129,7 +129,7 @@ const ManageServerPage:NextPage<ManageServerProps> = ({ server, user, owners, cs
<p className='text-gray-400 mb-3'> . "관리자" .</p> <p className='text-gray-400 mb-3'> . "관리자" .</p>
<Segment> <Segment>
<div className='lg:flex items-center'> <div className='lg:flex items-center'>
<div className='flex-grow py-1'> <div className='grow py-1'>
<h3 className='text-lg font-semibold'> </h3> <h3 className='text-lg font-semibold'> </h3>
<p className='text-gray-400'> .</p> <p className='text-gray-400'> .</p>
</div> </div>

View File

@ -98,7 +98,7 @@ const Servers: NextPage<ServersProps> = ({ data, desc, date, user, theme }) => {
className='w-full rounded-full' className='w-full rounded-full'
/> />
</div> </div>
<div className='flex-grow px-5 py-12 w-full text-center lg:w-5/12 lg:text-left'> <div className='grow px-5 py-12 w-full text-center lg:w-5/12 lg:text-left'>
<h1 className='mb-2 mt-3 text-4xl font-bold' style={bg ? { color: 'white' } : {}}> <h1 className='mb-2 mt-3 text-4xl font-bold' style={bg ? { color: 'white' } : {}}>
{data.name}{' '} {data.name}{' '}
{checkServerFlag(data.flags, 'trusted') ? ( {checkServerFlag(data.flags, 'trusted') ? (

View File

@ -28,7 +28,7 @@ const ServerIndex: NextPage<ServerIndexProps> = ({ votes, trusted }) => {
<Paginator totalPage={votes.totalPage} currentPage={votes.currentPage} pathname='/servers/list/votes' /> <Paginator totalPage={votes.totalPage} currentPage={votes.currentPage} pathname='/servers/list/votes' />
<Advertisement /> <Advertisement />
<h1 className='text-3xl font-bold mb-2'> <h1 className='text-3xl font-bold mb-2'>
<i className='fa fa-check mr-3 mt-10 text-green-500' /> <i className='fa fa-check mr-3 mt-10 text-emerald-500' />
</h1> </h1>
<p className='text-base'> !!</p> <p className='text-base'> !!</p>
<ResponsiveGrid> <ResponsiveGrid>

View File

@ -56,7 +56,7 @@ const Users: NextPage<UserProps> = ({ user, data }) => {
className='w-full rounded-full' className='w-full rounded-full'
/> />
</div> </div>
<div className='flex-grow px-5 py-10 w-full text-center lg:w-5/12 lg:text-left'> <div className='grow px-5 py-10 w-full text-center lg:w-5/12 lg:text-left'>
<div> <div>
{ {
(data.tag !== '0') ? <div className='lg:flex mt-3 mb-1 '> (data.tag !== '0') ? <div className='lg:flex mt-3 mb-1 '>
@ -77,7 +77,7 @@ const Users: NextPage<UserProps> = ({ user, data }) => {
)} )}
{checkUserFlag(data.flags, 'bughunter') && ( {checkUserFlag(data.flags, 'bughunter') && (
<Tooltip text='버그를 많이 제보해주신 분입니다.' direction='left'> <Tooltip text='버그를 많이 제보해주신 분입니다.' direction='left'>
<div className='pr-5 text-green-500 text-2xl'> <div className='pr-5 text-emerald-500 text-2xl'>
<i className='fas fa-bug' /> <i className='fas fa-bug' />
</div> </div>
</Tooltip> </Tooltip>

View File

@ -3,14 +3,10 @@ module.exports = {
removeDeprecatedGapUtilities: true, removeDeprecatedGapUtilities: true,
purgeLayersByDefault: true, purgeLayersByDefault: true,
}, },
purge: { content: [
content: [ './**/*.{ts,tsx}',
'./**/*.{ts,tsx}', ],
], safelist: ['text-emerald-400', 'text-amber-300', 'text-red-500', 'text-gray-500', 'text-violet-500', 'bg-koreanbots-blue', 'bg-very-black'],
options: {
safelist: ['text-green-400', 'text-yellow-300', 'text-red-500', 'text-gray-500', 'text-purple-500', 'bg-koreanbots-blue', 'bg-very-black'],
}
},
darkMode: 'class', // or 'media' or 'class' darkMode: 'class', // or 'media' or 'class'
theme: { theme: {
extend: { extend: {
@ -42,10 +38,7 @@ module.exports = {
'3': '30rem' '3': '30rem'
} }
}, },
variants: { plugins: [require('@tailwindcss/forms')({
extend: { strategy: 'class',
inset: ['checked'] })],
},
},
plugins: [require('@tailwindcss/custom-forms')],
} }

View File

@ -14,11 +14,11 @@ export const BUG_REPORT_GROUPS = ['경북소프트웨어고등학교 해킹방
export const Status = { export const Status = {
online: { online: {
text: '온라인', text: '온라인',
color: 'green-400', color: 'emerald-400',
}, },
idle: { idle: {
text: '자리 비움', text: '자리 비움',
color: 'yellow-300', color: 'amber-300',
}, },
dnd: { dnd: {
text: '다른 용무중', text: '다른 용무중',
@ -30,7 +30,7 @@ export const Status = {
}, },
streaming: { streaming: {
text: '방송중', text: '방송중',
color: 'purple-500' color: 'violet-500'
}, },
null: { null: {
text: '알 수 없음', text: '알 수 없음',
@ -178,9 +178,9 @@ export const imageSafeHost = [
] ]
export const MessageColor = { export const MessageColor = {
success: 'bg-green-200 text-green-800', success: 'bg-emerald-200 text-emerald-800',
error: 'bg-red-200 text-red-800', error: 'bg-red-200 text-red-800',
warning: 'bg-yellow-50 text-yellow-700', warning: 'bg-amber-50 text-amber-700',
info: 'bg-blue-200 text-blue-800' info: 'bg-blue-200 text-blue-800'
} }

8368
yarn.lock

File diff suppressed because it is too large Load Diff