feat: set font to pretendard (#562)

* feat: apply font to pretendard

* feat: set word break to keep all

* chore: change font weight

* chore: add truncate to owner

* chore: change pretendard to pretendard variable

* feat: change markdown font to pretendard
This commit is contained in:
SKINMAKER 2023-05-27 22:43:50 +09:00 committed by GitHub
parent 3c4812554f
commit 2b3fe7da80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 35 additions and 34 deletions

View File

@ -10,6 +10,8 @@ html {
} }
body { body {
font-family: Pretendard Variable;
word-break: keep-all;
min-height: 100vh; min-height: 100vh;
width: 100%; width: 100%;
} }

View File

@ -61,7 +61,7 @@ const BotCard: React.FC<BotCardProps> = ({ manage = false, bot }) => {
</h2> </h2>
<h1 className='mb-3 text-left text-xl sm:text-2xl font-bold truncate'>{bot.name}</h1> <h1 className='mb-3 text-left text-xl sm:text-2xl font-bold truncate'>{bot.name}</h1>
</div> </div>
<p className='mb-10 px-4 h-6 text-left text-gray-400 text-sm font-medium'> <p className='mb-10 px-4 h-6 text-left text-gray-400 text-sm'>
{bot.intro} {bot.intro}
</p> </p>
<div> <div>

View File

@ -9,7 +9,7 @@ const Owner: React.FC<OwnerProps> = ({ id, username, tag, crown=false }) => {
<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'>{ crown && <i className='fas fa-crown text-yellow-300 text-xs' /> }{username}</h4> <h4 className='whitespace-nowrap truncate'>{ crown && <i className='fas fa-crown text-yellow-300 text-xs' /> }{username}</h4>
<span className='text-gray-600 text-sm'>#{tag}</span> <span className='text-gray-600 text-sm'>#{tag}</span>
</div> </div>

View File

@ -63,7 +63,7 @@ const ServerCard: React.FC<BotCardProps> = ({ type, server }) => {
</div> </div>
</div> </div>
<p className='mb-10 px-4 h-6 text-left text-gray-400 text-sm font-medium'> <p className='mb-10 px-4 h-6 text-left text-gray-400 text-sm font'>
{type === 'add' ? {type === 'add' ?
server.data ? '지금 바로 서버를 등록할 수 있습니다.' : '봇을 초대해야 서버를 등록할 수 있습니다.' server.data ? '지금 바로 서버를 등록할 수 있습니다.' : '봇을 초대해야 서버를 등록할 수 있습니다.'
: server.intro : server.intro

View File

@ -75,8 +75,6 @@
-webkit-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;
line-height: 1.5; line-height: 1.5;
color: #24292e; color: #24292e;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif,
Apple Color Emoji, Segoe UI Emoji;
font-size: 16px; font-size: 16px;
line-height: 1.5; line-height: 1.5;
word-wrap: break-word; word-wrap: break-word;

View File

@ -21,7 +21,8 @@ class MyDocument extends Document {
<link rel='icon' type='image/png' sizes='32x32' href='/favicon-32x32.png' /> <link rel='icon' type='image/png' sizes='32x32' href='/favicon-32x32.png' />
<link rel='icon' type='image/png' sizes='96x96' href='/favicon-96x96.png' /> <link rel='icon' type='image/png' sizes='96x96' href='/favicon-96x96.png' />
<link rel='icon' type='image/png' sizes='16x16' href='/favicon-16x16.png' /> <link rel='icon' type='image/png' sizes='16x16' href='/favicon-16x16.png' />
<link rel='stylesheet' as='style' crossOrigin='anonymous' href='https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.6/dist/web/variable/pretendardvariable-dynamic-subset.css' />
{/* iOS */} {/* iOS */}
<link rel='apple-touch-icon' sizes='57x57' href='/static/apple-icon-57x57.png' /> <link rel='apple-touch-icon' sizes='57x57' href='/static/apple-icon-57x57.png' />
<link rel='apple-touch-icon' sizes='60x60' href='/static/apple-icon-60x60.png' /> <link rel='apple-touch-icon' sizes='60x60' href='/static/apple-icon-60x60.png' />

View File

@ -86,10 +86,10 @@ const AddBot:NextPage<AddBotProps> = ({ logged, user, csrfToken, theme }) => {
</div> </div>
{ {
data ? data.code == 200 && data.data ? <Message type='success'> data ? data.code == 200 && data.data ? <Message type='success'>
<h2 className='text-lg font-black'> !</h2> <h2 className='text-lg font-extrabold'> !</h2>
<p> ! . {redirectTo(router, `/pendingBots/${data.data.id}/${data.data.date}`)}</p> <p> ! . {redirectTo(router, `/pendingBots/${data.data.id}/${data.data.date}`)}</p>
</Message> : <Message type='error'> </Message> : <Message type='error'>
<h2 className='text-lg font-black'>{data.message || '오류가 발생했습니다.'}</h2> <h2 className='text-lg font-extrabold'>{data.message || '오류가 발생했습니다.'}</h2>
<ul className='list-disc list-inside'> <ul className='list-disc list-inside'>
{data.errors?.map((el, n) => <li key={n}>{el}</li>)} {data.errors?.map((el, n) => <li key={n}>{el}</li>)}
</ul> </ul>
@ -103,7 +103,7 @@ const AddBot:NextPage<AddBotProps> = ({ logged, user, csrfToken, theme }) => {
<Form> <Form>
<div className='py-3'> <div className='py-3'>
<Message type='warning'> <Message type='warning'>
<h2 className='text-lg font-black'> !</h2> <h2 className='text-lg font-extrabold'> !</h2>
<ul className='list-disc list-inside'> <ul className='list-disc list-inside'>
<li><Link href='/discord'><a rel='noreferrer' target='_blank' className='text-blue-500 hover:text-blue-600'> </a></Link> ?</li> <li><Link href='/discord'><a rel='noreferrer' target='_blank' className='text-blue-500 hover:text-blue-600'> </a></Link> ?</li>
<li> <Link href='/guidelines'><a rel='noreferrer' target='_blank' className='text-blue-500 hover:text-blue-600'></a></Link> ?</li> <li> <Link href='/guidelines'><a rel='noreferrer' target='_blank' className='text-blue-500 hover:text-blue-600'></a></Link> ?</li>

View File

@ -86,10 +86,10 @@ const AddServer:NextPage<AddServerProps> = ({ logged, user, csrfToken, server, s
</div> </div>
{ {
data ? data.code == 200 && data.data ? <Message type='success'> data ? data.code == 200 && data.data ? <Message type='success'>
<h2 className='text-lg font-black'> !</h2> <h2 className='text-lg font-extrabold'> !</h2>
<p> ! ! {redirectTo(router, `/servers/${router.query.id}`)}</p> <p> ! ! {redirectTo(router, `/servers/${router.query.id}`)}</p>
</Message> : <Message type='error'> </Message> : <Message type='error'>
<h2 className='text-lg font-black'>{data.message || '오류가 발생했습니다.'}</h2> <h2 className='text-lg font-extrabold'>{data.message || '오류가 발생했습니다.'}</h2>
<ul className='list-disc list-inside'> <ul className='list-disc list-inside'>
{data.errors?.map((el, n) => <li key={n}>{el}</li>)} {data.errors?.map((el, n) => <li key={n}>{el}</li>)}
</ul> </ul>
@ -98,10 +98,10 @@ const AddServer:NextPage<AddServerProps> = ({ logged, user, csrfToken, server, s
} }
{ {
server ? <Message type='warning'> server ? <Message type='warning'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
</Message> : </Message> :
!serverData ? <Message type='info'> !serverData ? <Message type='info'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
<p> .</p> <p> .</p>
<p> 1 .</p> <p> 1 .</p>
</Message> </Message>
@ -112,7 +112,7 @@ const AddServer:NextPage<AddServerProps> = ({ logged, user, csrfToken, server, s
<Form> <Form>
<div className='py-3'> <div className='py-3'>
<Message type='warning'> <Message type='warning'>
<h2 className='text-lg font-black'> !</h2> <h2 className='text-lg font-extrabold'> !</h2>
<ul className='list-disc list-inside'> <ul className='list-disc list-inside'>
<li><Link href='/discord'><a rel='noreferrer' target='_blank' className='text-blue-500 hover:text-blue-600'> </a></Link> .</li> <li><Link href='/discord'><a rel='noreferrer' target='_blank' className='text-blue-500 hover:text-blue-600'> </a></Link> .</li>
<li> <Link href='/guidelines'><a rel='noreferrer' target='_blank' className='text-blue-500 hover:text-blue-600'></a></Link> ?</li> <li> <Link href='/guidelines'><a rel='noreferrer' target='_blank' className='text-blue-500 hover:text-blue-600'></a></Link> ?</li>

View File

@ -92,14 +92,14 @@ const ManageBotPage:NextPage<ManageBotProps> = ({ bot, user, csrfToken, theme })
data ? data.code === 200 ? <div className='mt-4'> data ? data.code === 200 ? <div className='mt-4'>
<Redirect to={makeBotURL(bot)}> <Redirect to={makeBotURL(bot)}>
<Message type='success'> <Message type='success'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
<p> !</p> <p> !</p>
</Message> </Message>
</Redirect> </Redirect>
</div> : <div className='mt-4'> </div> : <div className='mt-4'>
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'>{data.message || '오류가 발생했습니다.'}</h2> <h2 className='text-lg font-extrabold'>{data.message || '오류가 발생했습니다.'}</h2>
<ul className='list-disc list-inside'> <ul className='list-disc list-inside'>
{data.errors?.map((el, n) => <li key={n}>{el}</li>)} {data.errors?.map((el, n) => <li key={n}>{el}</li>)}
</ul> </ul>

View File

@ -68,7 +68,7 @@ const Bots: NextPage<BotsProps> = ({ data, desc, date, user, theme, csrfToken })
{ {
data.state === 'blocked' ? <div className='pb-40'> data.state === 'blocked' ? <div className='pb-40'>
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
</Message> </Message>
</div> </div>
: data.category.includes('NSFW') && !nsfw ? <NSFW onClick={() => setNSFW(true)} onDisableClick={() => localStorage.nsfw = true} /> : data.category.includes('NSFW') && !nsfw ? <NSFW onClick={() => setNSFW(true)} onDisableClick={() => localStorage.nsfw = true} />
@ -76,12 +76,12 @@ const Bots: NextPage<BotsProps> = ({ data, desc, date, user, theme, csrfToken })
<div className='w-full pb-2'> <div className='w-full pb-2'>
{ {
data.state === 'private' ? <Message type='info'> data.state === 'private' ? <Message type='info'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
<p> . .</p> <p> . .</p>
</Message> : </Message> :
data.state === 'reported' ? data.state === 'reported' ?
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'> , .</h2> <h2 className='text-lg font-extrabold'> , .</h2>
<p> .</p> <p> .</p>
<p> <Link href='/guidelines'><a className='text-blue-500 hover:text-blue-400'></a></Link> <Link href='/discord'><a className='text-blue-500 hover:text-blue-400'> </a></Link> .</p> <p> <Link href='/guidelines'><a className='text-blue-500 hover:text-blue-400'></a></Link> <Link href='/discord'><a className='text-blue-500 hover:text-blue-400'> </a></Link> .</p>
</Message> : '' </Message> : ''

View File

@ -62,7 +62,7 @@ const VoteBot: NextPage<VoteBotProps> = ({ data, user, theme, csrfToken }) => {
{ {
data.state === 'blocked' ? <div className='pb-40'> data.state === 'blocked' ? <div className='pb-40'>
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
</Message> </Message>
</div> : <> </div> : <>
<Advertisement /> <Advertisement />

View File

@ -75,10 +75,10 @@ const BotApplication: NextPage<BotApplicationProps> = ({ user, spec, bot, theme,
{ {
!data ? '' : data.code === 200 ? !data ? '' : data.code === 200 ?
<Message type='success'> <Message type='success'>
<h2 className='text-lg font-black'> !</h2> <h2 className='text-lg font-extrabold'> !</h2>
<p> .</p> <p> .</p>
</Message> : <Message type='error'> </Message> : <Message type='error'>
<h2 className='text-lg font-black'>{data.message}</h2> <h2 className='text-lg font-extrabold'>{data.message}</h2>
<ul className='list-disc list-inside'> <ul className='list-disc list-inside'>
{ {
data.errors?.map((el, i)=> <li key={i}>{el}</li>) data.errors?.map((el, i)=> <li key={i}>{el}</li>)

View File

@ -76,10 +76,10 @@ const ServerApplication: NextPage<ServerApplicationProps> = ({ user, spec, serve
{ {
!data ? '' : data.code === 200 ? !data ? '' : data.code === 200 ?
<Message type='success'> <Message type='success'>
<h2 className='text-lg font-black'> !</h2> <h2 className='text-lg font-extrabold'> !</h2>
<p> .</p> <p> .</p>
</Message> : <Message type='error'> </Message> : <Message type='error'>
<h2 className='text-lg font-black'>{data.message}</h2> <h2 className='text-lg font-extrabold'>{data.message}</h2>
<ul className='list-disc list-inside'> <ul className='list-disc list-inside'>
{ {
data.errors?.map((el, i)=> <li key={i}>{el}</li>) data.errors?.map((el, i)=> <li key={i}>{el}</li>)
@ -140,7 +140,7 @@ const ServerApplication: NextPage<ServerApplicationProps> = ({ user, spec, serve
</div> </div>
</> : <div className='mt-5'> </> : <div className='mt-5'>
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
<p> , .</p> <p> , .</p>
</Message> </Message>
</div> </div>

View File

@ -35,16 +35,16 @@ const PendingBot: NextPage<PendingBotProps> = ({ data }) => {
<div className='w-full lg:w-3/4 lg:pr-5 py-8 text-center lg:text-left'> <div className='w-full lg:w-3/4 lg:pr-5 py-8 text-center lg:text-left'>
{ {
data.state === 0 ? <Message type='info'> data.state === 0 ? <Message type='info'>
<h2 className='text-lg font-black'> </h2> <h2 className='text-lg font-extrabold'> </h2>
<p> .</p> <p> .</p>
</Message> </Message>
: data.state === 1 ? <Message type='success'> : data.state === 1 ? <Message type='success'>
<h2 className='text-lg font-black'></h2> <h2 className='text-lg font-extrabold'></h2>
<p> !</p> <p> !</p>
<p><Link href={`/bots/${data.id}`}><a className='text-blue-500 hover:text-blue-400'> </a></Link></p> <p><Link href={`/bots/${data.id}`}><a className='text-blue-500 hover:text-blue-400'> </a></Link></p>
</Message> : <Message type='error'> </Message> : <Message type='error'>
<h2 className='text-lg font-black'></h2> <h2 className='text-lg font-extrabold'></h2>
<p> .</p> <p> .</p>
{ {
data.reason && <> data.reason && <>

View File

@ -74,13 +74,13 @@ const ManageServerPage:NextPage<ManageServerProps> = ({ server, user, owners, cs
data ? data.code === 200 ? <div className='mt-4'> data ? data.code === 200 ? <div className='mt-4'>
<Redirect to={makeServerURL(server)}> <Redirect to={makeServerURL(server)}>
<Message type='success'> <Message type='success'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
<p> !</p> <p> !</p>
</Message> </Message>
</Redirect> </Redirect>
</div> : <div className='mt-4'> </div> : <div className='mt-4'>
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'>{data.message || '오류가 발생했습니다.'}</h2> <h2 className='text-lg font-extrabold'>{data.message || '오류가 발생했습니다.'}</h2>
<ul className='list-disc list-inside'> <ul className='list-disc list-inside'>
{data.errors?.map((el, n) => <li key={n}>{el}</li>)} {data.errors?.map((el, n) => <li key={n}>{el}</li>)}
</ul> </ul>

View File

@ -66,14 +66,14 @@ const Servers: NextPage<ServersProps> = ({ data, desc, date, user, theme }) => {
{ {
data.state === 'blocked' ? <div className='pb-40'> data.state === 'blocked' ? <div className='pb-40'>
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
</Message> </Message>
</div> </div>
: <> : <>
<div className='w-full pb-2'> <div className='w-full pb-2'>
{ {
data.state === 'unreachable' ? <Message type='error'> data.state === 'unreachable' ? <Message type='error'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
<p> , .</p> <p> , .</p>
{ {
owners?.find(el => el.id === user?.id) && <> owners?.find(el => el.id === user?.id) && <>
@ -84,7 +84,7 @@ const Servers: NextPage<ServersProps> = ({ data, desc, date, user, theme }) => {
</Message> : </Message> :
data.state === 'reported' ? data.state === 'reported' ?
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'> , .</h2> <h2 className='text-lg font-extrabold'> , .</h2>
<p> .</p> <p> .</p>
<p> <Link href='/guidelines'><a className='text-blue-500 hover:text-blue-400'></a></Link> <Link href='/discord'><a className='text-blue-500 hover:text-blue-400'> </a></Link> .</p> <p> <Link href='/guidelines'><a className='text-blue-500 hover:text-blue-400'></a></Link> <Link href='/discord'><a className='text-blue-500 hover:text-blue-400'> </a></Link> .</p>
</Message> : '' </Message> : ''

View File

@ -62,7 +62,7 @@ const VoteServer: NextPage<VoteServerProps> = ({ data, user, theme, csrfToken })
{ {
data.state === 'blocked' ? <div className='pb-40'> data.state === 'blocked' ? <div className='pb-40'>
<Message type='error'> <Message type='error'>
<h2 className='text-lg font-black'> .</h2> <h2 className='text-lg font-extrabold'> .</h2>
</Message> </Message>
</div> : <> </div> : <>
<Advertisement /> <Advertisement />