diff --git a/apps/admin/package.json b/apps/admin/package.json
index b231237..da47f35 100644
--- a/apps/admin/package.json
+++ b/apps/admin/package.json
@@ -14,7 +14,11 @@
"react": "catalog:",
"react-dom": "catalog:",
"next": "catalog:",
- "@repo/ui": "workspace:*"
+ "@heroui/react": "catalog:",
+ "@heroui/system": "catalog:",
+ "@heroui/theme": "catalog:",
+ "@repo/ui": "workspace:*",
+ "react-naver-maps": "catalog:"
},
"devDependencies": {
"@next/eslint-plugin-next": "catalog:",
@@ -26,6 +30,7 @@
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"@tailwindcss/postcss": "catalog:",
+ "@types/navermaps": "catalog:",
"postcss": "catalog:",
"tailwindcss":"catalog:",
"autoprefixer": "catalog:",
diff --git a/apps/admin/public/fonts/PretendardVariable.woff2 b/apps/admin/public/fonts/PretendardVariable.woff2
new file mode 100644
index 0000000..32b0811
Binary files /dev/null and b/apps/admin/public/fonts/PretendardVariable.woff2 differ
diff --git a/apps/admin/src/app/NaverMapProvider.tsx b/apps/admin/src/app/NaverMapProvider.tsx
new file mode 100644
index 0000000..5dcdcc4
--- /dev/null
+++ b/apps/admin/src/app/NaverMapProvider.tsx
@@ -0,0 +1,10 @@
+'use client'
+
+import { NavermapsProvider } from 'react-naver-maps'
+import { ReactNode } from 'react'
+
+export const NaverMapProvider = ({ children }: { children: ReactNode }) => {
+ const ncpKeyId = process.env.NEXT_PUBLIC_NAVER_MAP_ID || ''
+
+ return {children}
+}
diff --git a/apps/admin/src/app/_api/types.ts b/apps/admin/src/app/_api/types.ts
new file mode 100644
index 0000000..dc9eaea
--- /dev/null
+++ b/apps/admin/src/app/_api/types.ts
@@ -0,0 +1,8 @@
+import type { IconType } from '@repo/ui/components/Icon'
+
+export type Request = {
+ placeId: string
+ placeName: string
+ icon: IconType
+ requestDate: string
+}
diff --git a/apps/admin/src/app/_components/RequestListItem/RequestListItem.tsx b/apps/admin/src/app/_components/RequestListItem/RequestListItem.tsx
new file mode 100644
index 0000000..5d4d528
--- /dev/null
+++ b/apps/admin/src/app/_components/RequestListItem/RequestListItem.tsx
@@ -0,0 +1,31 @@
+import { Column, Flex } from '@repo/ui/components/Layout'
+import { cn } from '@repo/ui/utils/cn'
+import { Text } from '@repo/ui/components/Text'
+import { Icon } from '@repo/ui/components/Icon'
+import { CLIENT_PATH } from '@/consts/path'
+import { Request } from '@/app/_api/types'
+
+export const RequestListItem = ({
+ placeId,
+ placeName,
+ icon,
+ requestDate,
+}: Request) => (
+
+
+
+
+ {placeName}
+
+
+
+
+ 등록 신청 일자: {requestDate}
+
+
+
+)
diff --git a/apps/admin/src/app/_components/RequestListItem/index.tsx b/apps/admin/src/app/_components/RequestListItem/index.tsx
new file mode 100644
index 0000000..78851cb
--- /dev/null
+++ b/apps/admin/src/app/_components/RequestListItem/index.tsx
@@ -0,0 +1 @@
+export { RequestListItem } from './RequestListItem'
diff --git a/apps/admin/src/app/_components/RequestsByCampus/RequestsByCampus.tsx b/apps/admin/src/app/_components/RequestsByCampus/RequestsByCampus.tsx
new file mode 100644
index 0000000..d99cd6d
--- /dev/null
+++ b/apps/admin/src/app/_components/RequestsByCampus/RequestsByCampus.tsx
@@ -0,0 +1,23 @@
+import { Column } from '@repo/ui/components/Layout'
+import { Text } from '@repo/ui/components/Text'
+import { CAMPUS, type CampusType } from '@/consts/campus'
+import { RequestListItem } from '@/app/_components/RequestListItem'
+import { Request } from '@/app/_api/types'
+
+type Props = {
+ campus: CampusType
+ requestList: Request[]
+}
+
+export const RequestsByCampus = ({ campus, requestList }: Props) => (
+
+
+ {CAMPUS[campus]}캠
+
+
+ {requestList.map((request) => (
+
+ ))}
+
+
+)
diff --git a/apps/admin/src/app/_components/RequestsByCampus/index.tsx b/apps/admin/src/app/_components/RequestsByCampus/index.tsx
new file mode 100644
index 0000000..92dc39f
--- /dev/null
+++ b/apps/admin/src/app/_components/RequestsByCampus/index.tsx
@@ -0,0 +1 @@
+export { RequestsByCampus } from './RequestsByCampus'
diff --git a/apps/admin/src/app/globals.css b/apps/admin/src/app/globals.css
index 5e7ce44..bc7cdc1 100644
--- a/apps/admin/src/app/globals.css
+++ b/apps/admin/src/app/globals.css
@@ -1,2 +1,4 @@
@import "tailwindcss";
-@import "@repo/tailwind-config";
\ No newline at end of file
+@import "@repo/tailwind-config";
+@plugin './hero.ts';
+@source '../../node_modules/@heroui/theme/dist/**/*.{js,ts,jsx,tsx}';
\ No newline at end of file
diff --git a/apps/admin/src/app/hero.ts b/apps/admin/src/app/hero.ts
new file mode 100644
index 0000000..331171f
--- /dev/null
+++ b/apps/admin/src/app/hero.ts
@@ -0,0 +1,4 @@
+import { heroui } from '@heroui/theme'
+import type { Config } from 'tailwindcss'
+
+export default heroui() as Config
diff --git a/apps/admin/src/app/layout.tsx b/apps/admin/src/app/layout.tsx
index 767519a..9dce728 100644
--- a/apps/admin/src/app/layout.tsx
+++ b/apps/admin/src/app/layout.tsx
@@ -1,34 +1,39 @@
import './globals.css'
import '@repo/ui/styles.css'
import type { Metadata } from 'next'
-import { Geist, Geist_Mono } from 'next/font/google'
-
-const geistSans = Geist({
- variable: '--font-geist-sans',
- subsets: ['latin'],
-})
-
-const geistMono = Geist_Mono({
- variable: '--font-geist-mono',
- subsets: ['latin'],
-})
+import localFont from 'next/font/local'
+import { HeroUIProvider } from '@heroui/system'
+import { Column } from '@repo/ui/components/Layout'
+import { NaverMapProvider } from '@/app/NaverMapProvider'
export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
}
+const pretendard = localFont({
+ src: '../../public/fonts/PretendardVariable.woff2',
+ display: 'swap',
+ weight: '45 920',
+})
+
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode
}>) {
return (
-
-
- {children}
+
+
+
+
+
+
+ {children}
+
+
+
+
)
diff --git a/apps/admin/src/app/page.tsx b/apps/admin/src/app/page.tsx
index 1923102..1339cef 100644
--- a/apps/admin/src/app/page.tsx
+++ b/apps/admin/src/app/page.tsx
@@ -1,12 +1,38 @@
-import { Column } from '@repo/ui/components/Layout'
-import { Text } from '@repo/ui/components/Text'
-import { Button } from '@repo/ui/components/Button'
+import { VerticalScrollArea } from '@repo/ui/components/Layout'
+import { RequestsByCampus } from './_components/RequestsByCampus'
+import { OnlyLeftHeader } from '@repo/ui/components/Header'
+import type { Request } from './_api/types'
+
+const MOCK_DATA: Request[] = [
+ {
+ placeId: '1',
+ placeName: '짬뽕집',
+ icon: 'chinese',
+ requestDate: '2025-10-29',
+ },
+ {
+ placeId: '2',
+ placeName: '짬뽕집',
+ icon: 'chinese',
+ requestDate: '2025-10-29',
+ },
+ {
+ placeId: '3',
+ placeName: '짬뽕집',
+ icon: 'chinese',
+ requestDate: '2025-10-29',
+ },
+]
export default function Home() {
return (
-
- Hello World!
-
-
+ <>
+
+
+
+
+
+
+ >
)
}
diff --git a/apps/admin/src/app/request/[id]/RequestDetailPage.tsx b/apps/admin/src/app/request/[id]/RequestDetailPage.tsx
new file mode 100644
index 0000000..3edba20
--- /dev/null
+++ b/apps/admin/src/app/request/[id]/RequestDetailPage.tsx
@@ -0,0 +1,82 @@
+'use client'
+
+import { Header } from '@repo/ui/components/Header'
+import { Icon } from '@repo/ui/components/Icon'
+import { Text } from '@repo/ui/components/Text'
+import { Column, VerticalScrollArea } from '@repo/ui/components/Layout'
+import { Banner } from '@repo/ui/components/Banner'
+
+import { Location } from './_components/Location/Location'
+import { Menus } from './_components/Menus/Menus'
+import { Description } from './_components/Description'
+import { ActionButtonGroup } from './_components/ActionButtonGroup'
+import { useDisclosure } from '@heroui/react'
+import { RejectModal } from '@/app/request/[id]/_components/RejectModal'
+import { useRouter } from 'next/navigation'
+
+export const RequestDetailPage = () => {
+ const { isOpen, onOpen, onOpenChange } = useDisclosure()
+ const { back } = useRouter()
+
+ return (
+ <>
+