diff --git a/src/app/(auth-required)/main/components/Summary/BarContent.tsx b/src/app/(auth-required)/main/components/Summary/BarContent.tsx
index 3c4a752..ba32190 100644
--- a/src/app/(auth-required)/main/components/Summary/BarContent.tsx
+++ b/src/app/(auth-required)/main/components/Summary/BarContent.tsx
@@ -11,13 +11,7 @@ interface IProp {
const afterContent =
'before:text-PRIMARY-SUB before:content-[attr(data-increasement)_"↑"] before:mr-2 before:text-T5';
-export const BarContent = ({
- title,
- content,
- increasement,
- prefix = '개',
- id,
-}: IProp) => {
+export const BarContent = ({ title, content, increasement, prefix = '개', id }: IProp) => {
return (
{title}
diff --git a/src/app/(auth-required)/main/components/Summary/SidebarContent.tsx b/src/app/(auth-required)/main/components/Summary/SidebarContent.tsx
index e4266a5..8f6dcbe 100644
--- a/src/app/(auth-required)/main/components/Summary/SidebarContent.tsx
+++ b/src/app/(auth-required)/main/components/Summary/SidebarContent.tsx
@@ -11,18 +11,10 @@ interface IProp {
const afterContent =
'after:text-PRIMARY-SUB after:content-[attr(data-increasement)_"↑"] after:ml-2 after:text-ST3 max-TBL:after:text-ST4 transition-all';
-export const SidebarContent = ({
- title,
- content,
- increasement,
- prefix = '개',
- id,
-}: IProp) => {
+export const SidebarContent = ({ title, content, increasement, prefix = '개', id }: IProp) => {
return (
-
- {title}
-
+ {title}
{
increasement={stats?.totalLikes - stats?.yesterdayLikes}
id="totalLikes"
/>
-
+
{
increasement={stats?.totalLikes - stats?.yesterdayLikes}
id="totalLikes"
/>
-
+
)}
diff --git a/src/app/global-error.tsx b/src/app/global-error.tsx
index 4b6ac69..c767795 100644
--- a/src/app/global-error.tsx
+++ b/src/app/global-error.tsx
@@ -4,11 +4,7 @@ import { captureException } from '@sentry/nextjs';
import NextError from 'next/error';
import { useEffect } from 'react';
-export default function GlobalError({
- error,
-}: {
- error: Error & { digest?: string };
-}) {
+export default function GlobalError({ error }: { error: Error & { digest?: string } }) {
useEffect(() => {
captureException(error);
}, [error]);
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 517b854..c6833b9 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -6,11 +6,7 @@ import { ErrorBoundary } from '@sentry/nextjs';
import { ReactNode, Suspense } from 'react';
import type { Metadata } from 'next';
import './globals.css';
-import {
- ChannelTalkProvider,
- QueryProvider,
- ModalProvider,
-} from '@/components';
+import { ChannelTalkProvider, QueryProvider, ModalProvider } from '@/components';
import { env } from '@/constants';
import { TopBarProvider } from '@/components/Providers/TopBarProvider';
@@ -24,8 +20,7 @@ export const metadata: Metadata = {
alternates: { canonical: BASE },
openGraph: {
siteName: 'Velog Dashboard',
- description:
- '어디서든 편리하게 확인하는 Velog 통계 서비스, Velog Dashboard',
+ description: '어디서든 편리하게 확인하는 Velog 통계 서비스, Velog Dashboard',
url: BASE,
images: [{ url: '/opengraph-image.png', alt: 'Velog Dashboard' }],
type: 'website',
@@ -34,9 +29,7 @@ export const metadata: Metadata = {
const NotoSansKr = Noto_Sans_KR({ subsets: ['latin'] });
-export default function RootLayout({
- children,
-}: Readonly<{ children: ReactNode }>) {
+export default function RootLayout({ children }: Readonly<{ children: ReactNode }>) {
return (
diff --git a/src/components/ArriveSoon.tsx b/src/components/ArriveSoon.tsx
index b0bc5e2..bf8cd1c 100644
--- a/src/components/ArriveSoon.tsx
+++ b/src/components/ArriveSoon.tsx
@@ -1,12 +1,8 @@
export const ArriveSoon = () => {
return (
-
- 곧 만나뵙겠습니다!
-
-
- (열심히 개발하고 있습니다)
-
+ 곧 만나뵙겠습니다!
+ (열심히 개발하고 있습니다)
);
};
diff --git a/src/components/Check.tsx b/src/components/Check.tsx
index 8a54254..d99ae35 100644
--- a/src/components/Check.tsx
+++ b/src/components/Check.tsx
@@ -5,31 +5,17 @@ interface IProp extends React.HTMLAttributes
{
direction?: 'left' | 'right';
}
-export const Check = ({
- checked,
- label,
- onChange,
- direction = 'left',
- ...rest
-}: IProp) => {
+export const Check = ({ checked, label, onChange, direction = 'left', ...rest }: IProp) => {
return (
);
};
diff --git a/src/components/Icon/SvgrMock.tsx b/src/components/Icon/SvgrMock.tsx
index 3a5ac8f..44a54f3 100644
--- a/src/components/Icon/SvgrMock.tsx
+++ b/src/components/Icon/SvgrMock.tsx
@@ -1,8 +1,8 @@
import React, { SVGProps, forwardRef } from 'react';
-const SvgrMock = forwardRef>(
- (props, ref) => ,
-);
+const SvgrMock = forwardRef>((props, ref) => (
+
+));
SvgrMock.displayName = 'SvgrMock';
diff --git a/src/components/Icon/index.tsx b/src/components/Icon/index.tsx
index 6257b87..af2fb91 100644
--- a/src/components/Icon/index.tsx
+++ b/src/components/Icon/index.tsx
@@ -2,10 +2,7 @@ import * as Icons from './icons';
export { default as SvgrMock } from './SvgrMock';
export type NameType = keyof typeof Icons;
-type iconType = Record<
- NameType,
- React.JSXElementConstructor>
->;
+type iconType = Record>>;
interface IProp extends React.SVGProps {
name: NameType;
@@ -21,13 +18,7 @@ const rotates = {
left: 'rotate-[-90deg]',
};
-export const Icon = ({
- name,
- size = 30,
- color = '#ACACAC',
- rotate = 'up',
- ...rest
-}: IProp) => {
+export const Icon = ({ name, size = 30, color = '#ACACAC', rotate = 'up', ...rest }: IProp) => {
const Comp = (Icons as iconType)[name];
if ((Comp as unknown as { src: string })?.src) {
diff --git a/src/components/Input.tsx b/src/components/Input.tsx
index ab9f648..490db48 100644
--- a/src/components/Input.tsx
+++ b/src/components/Input.tsx
@@ -1,8 +1,7 @@
import { ForwardedRef, forwardRef } from 'react';
import { SIZES, SizeType } from '@/constants';
-interface IProp
- extends Omit, 'size'> {
+interface IProp extends Omit, 'size'> {
form?: keyof typeof FORMS;
size: SizeType;
}
@@ -13,10 +12,7 @@ const FORMS = {
};
export const Input = forwardRef(
- (
- { form = 'LARGE', size, ...rest }: IProp,
- ref?: ForwardedRef,
- ) => (
+ ({ form = 'LARGE', size, ...rest }: IProp, ref?: ForwardedRef) => (
{
+ title: string;
+ children: React.ReactNode;
+}
+
+export const Modal = ({ title, children, ...rest }: IProp) => {
+ const { close } = useModal();
+
+ useEffect(() => {
+ const handleClose = (e: KeyboardEvent) => e.key === 'Escape' && close();
+
+ window.addEventListener('keydown', handleClose);
+ return () => window.removeEventListener('keydown', handleClose);
+ }, [close]);
+
+ return (
+
+
+
{title}
+
+
+ {children}
+
+ );
+};
diff --git a/src/components/Providers/ChannelTalkProvider.tsx b/src/components/Providers/ChannelTalkProvider.tsx
index 2d5fcf8..7cc2d5f 100644
--- a/src/components/Providers/ChannelTalkProvider.tsx
+++ b/src/components/Providers/ChannelTalkProvider.tsx
@@ -9,11 +9,7 @@ const ChannelTalkServiceLoader = () => {
ChannelService.boot({ pluginKey: env.CHANNELTALK_PLUGIN_KEY });
};
-export const ChannelTalkProvider = ({
- children,
-}: {
- children: React.ReactNode;
-}) => {
+export const ChannelTalkProvider = ({ children }: { children: React.ReactNode }) => {
useEffect(() => ChannelTalkServiceLoader(), []);
return <>{children}>;
};
diff --git a/src/components/index.ts b/src/components/index.ts
index f55dd12..f219efd 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -4,4 +4,5 @@ export * from './Dropdown';
export * from './Button';
export * from './Input';
export * from './Check';
+export * from './Modal';
export * from './Icon';
diff --git a/src/constants/fonts.constant.ts b/src/constants/fonts.constant.ts
index 61ef774..0b205a3 100644
--- a/src/constants/fonts.constant.ts
+++ b/src/constants/fonts.constant.ts
@@ -1,7 +1,4 @@
-export const FONTS: Record<
- string,
- [string, { lineHeight: string; fontWeight: number }]
-> = {
+export const FONTS: Record = {
T1: ['32px', { lineHeight: '46.3px', fontWeight: 700 }],
T2: ['28px', { lineHeight: '40.5px', fontWeight: 700 }],
T3: ['24px', { lineHeight: '34.8px', fontWeight: 700 }],
diff --git a/src/errors/fetch.error.ts b/src/errors/fetch.error.ts
index a891c03..cf66209 100644
--- a/src/errors/fetch.error.ts
+++ b/src/errors/fetch.error.ts
@@ -20,10 +20,6 @@ export class NotFoundError extends CustomError {
export class EnvNotFoundError extends CustomError {
constructor(message: string) {
- super(
- `${message}이(가) ENV에서 설정되지 않았습니다`,
- 'EnvNotFoundError',
- 0,
- );
+ super(`${message}이(가) ENV에서 설정되지 않았습니다`, 'EnvNotFoundError', 0);
}
}
diff --git a/src/hooks/useSearchParam.ts b/src/hooks/useSearchParam.ts
index 6eb7c73..737654b 100644
--- a/src/hooks/useSearchParam.ts
+++ b/src/hooks/useSearchParam.ts
@@ -14,10 +14,7 @@ export const useSearchParam = >() => {
return searchParams.toString();
};
- const setSearchParams = (
- newParams: Partial,
- isReplace: boolean = false,
- ) => {
+ const setSearchParams = (newParams: Partial, isReplace: boolean = false) => {
if (isReplace) router.replace(`${pathname}?${setNewParams(newParams)}`);
return router.push(`${pathname}?${setNewParams(newParams)}`);
diff --git a/src/utils/cookieUtil.tsx b/src/utils/cookieUtil.tsx
index b6f44d3..fc2c5a9 100644
--- a/src/utils/cookieUtil.tsx
+++ b/src/utils/cookieUtil.tsx
@@ -1,9 +1,6 @@
import { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies';
-export const getCookieForAuth = (
- cookies: () => ReadonlyRequestCookies,
- keys: string[],
-) => {
+export const getCookieForAuth = (cookies: () => ReadonlyRequestCookies, keys: string[]) => {
const cookie = { headers: {} as Record };
keys.forEach((i) => (cookie.headers[i] = cookies().get(i)?.value || ''));
return cookie;
diff --git a/tsconfig.json b/tsconfig.json
index 41c3c7e..b39db00 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -35,7 +35,8 @@
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts",
- "src/__test__/main.test.tsx.ignore"
+ ".eslintrc.js",
+ "next.config.mjs"
],
"exclude": ["node_modules"]
}