diff --git a/src/components/features/noticeList/noticeEmpty.tsx b/src/components/features/noticeList/noticeEmpty.tsx new file mode 100644 index 0000000..f0caac8 --- /dev/null +++ b/src/components/features/noticeList/noticeEmpty.tsx @@ -0,0 +1,36 @@ +import { Button } from '@/components/ui'; +import { useRouter } from 'next/router'; + +interface NoticeEmptyProps { + q?: string; + onReset?: () => void; +} + +const NoticeEmpty = ({ q, onReset }: NoticeEmptyProps) => { + const router = useRouter(); + return ( +
+

+ {q ? `"${q}"에 대한 공고를 찾을 수 없습니다.` : '검색 조건에 맞는 공고가 없습니다.'} +

+ {!q && ( +

+ 새로운 아르바이트 공고가 올라오면 이곳에서 확인할 수 있어요. +

+ )} + +
+ {q ? ( + + ) : ( + + )} +
+
+ ); +}; +export default NoticeEmpty; diff --git a/src/components/layout/header/logo.tsx b/src/components/layout/header/logo.tsx index 3001560..b5d7bdb 100644 --- a/src/components/layout/header/logo.tsx +++ b/src/components/layout/header/logo.tsx @@ -12,7 +12,6 @@ const Logo = () => { alt='더 줄게 로고' className='object-contain' fill - priority sizes='(max-width: 744px) 84px, 112px' /> diff --git a/src/components/ui/index.ts b/src/components/ui/index.ts index a74f51c..0505f5e 100644 --- a/src/components/ui/index.ts +++ b/src/components/ui/index.ts @@ -16,3 +16,4 @@ export { Filter } from './filter'; export { Icon } from './icon'; export { Modal, Notification } from './modal'; export { Pagination } from './pagination'; +export { SkeletonUI } from './skeleton'; diff --git a/src/components/ui/pagination/pagination.tsx b/src/components/ui/pagination/pagination.tsx index 9aba82c..7a56218 100644 --- a/src/components/ui/pagination/pagination.tsx +++ b/src/components/ui/pagination/pagination.tsx @@ -34,7 +34,7 @@ const Pagination = ({ total, offset, limit, onPageChange, className }: Paginatio setPageGroup(newGroup); }, [currentPage, pageGroupSize]); - if (totalPages < 1) return null; + if (totalPages <= 1) return null; const startPage = pageGroup * pageGroupSize + 1; const endPage = Math.min(startPage + pageGroupSize - 1, totalPages); diff --git a/src/components/ui/skeleton/index.ts b/src/components/ui/skeleton/index.ts new file mode 100644 index 0000000..5c3b787 --- /dev/null +++ b/src/components/ui/skeleton/index.ts @@ -0,0 +1 @@ +export { default as SkeletonUI } from './skeletonUI'; diff --git a/src/components/ui/skeleton/skeletonUI.tsx b/src/components/ui/skeleton/skeletonUI.tsx new file mode 100644 index 0000000..fa0e51c --- /dev/null +++ b/src/components/ui/skeleton/skeletonUI.tsx @@ -0,0 +1,21 @@ +import { cn } from '@/lib/utils/cn'; + +const SkeletonUI = ({ count = 0, className = '' }) => { + return ( +
+ {Array.from({ length: count }).map((_, i) => ( +
+ ))} +
+ ); +}; +export default SkeletonUI; diff --git a/src/context/appProvider.tsx b/src/context/appProviderWrapper.tsx similarity index 77% rename from src/context/appProvider.tsx rename to src/context/appProviderWrapper.tsx index e22208c..31e47bf 100644 --- a/src/context/appProvider.tsx +++ b/src/context/appProviderWrapper.tsx @@ -3,7 +3,7 @@ import AuthProvider from './authProvider'; import { ToastProvider } from './toastContext'; import { UserApplicationsProvider } from './userApplicationsProvider'; -const AppProvider = ({ children }: { children: ReactNode }) => { +const AppProviderWrapper = ({ children }: { children: ReactNode }) => { return ( @@ -12,4 +12,4 @@ const AppProvider = ({ children }: { children: ReactNode }) => { ); }; -export default AppProvider; +export default AppProviderWrapper; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 52b1628..f66848d 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,5 +1,5 @@ import { Footer, Header, Wrapper } from '@/components/layout'; -import AppProvider from '@/context/appProvider'; +import AppProviderWrapper from '@/context/appProviderWrapper'; import '@/styles/fonts.css'; import '@/styles/globals.css'; import type { NextPage } from 'next'; @@ -29,7 +29,7 @@ export default function App({ Component, pageProps }: AppPropsWithLayout) { - {getLayout()} + {getLayout()} ); } diff --git a/tailwind.config.ts b/tailwind.config.ts index b73bca8..9c966e0 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -89,6 +89,12 @@ const config: Config = { boxShadow: { 'inset-top': '0 -4px 25px 0 rgba(0,0,0,0.1)', }, + keyframes: { + 'skeleton-shimmer': { + '0%': { backgroundPosition: '-400% 0' }, + '100%': { backgroundPosition: '400% 0' }, + }, + }, }, }, plugins: [],