diff --git a/public/assets/svg/bed.tsx b/public/assets/svg/bed.tsx
new file mode 100644
index 0000000..a0523ea
--- /dev/null
+++ b/public/assets/svg/bed.tsx
@@ -0,0 +1,19 @@
+import React from 'react';
+
+const IconBed = ({ size = 24, color = '#112211', ...props }) => (
+
+);
+
+export default IconBed;
diff --git a/src/app/(with-header)/components/BannerSection.tsx b/src/app/(with-header)/components/BannerSection.tsx
new file mode 100644
index 0000000..605218d
--- /dev/null
+++ b/src/app/(with-header)/components/BannerSection.tsx
@@ -0,0 +1,34 @@
+import Image from 'next/image';
+import SearchBar from './SearchBar';
+
+export default function BannerSection() {
+ return (
+
+ {/* 배경 이미지 */}
+
+
+ {/* 어두운 오버레이 */}
+
+
+ {/* 텍스트 콘텐츠 */}
+
+
+ 함께 배우면 즐거운
+ 스트릿 댄스
+
+
+ 1월의 인기 경험 BEST 🔥
+
+
+
+
+
+
+ );
+}
diff --git a/src/app/(with-header)/components/SearchBar.tsx b/src/app/(with-header)/components/SearchBar.tsx
new file mode 100644
index 0000000..1b0cc72
--- /dev/null
+++ b/src/app/(with-header)/components/SearchBar.tsx
@@ -0,0 +1,48 @@
+'use client';
+
+import { useState, FormEvent } from 'react';
+import Input from '@components/Input';
+import Button from '@components/Button';
+
+export default function SearchBar() {
+ const [searchValue, setSearchValue] = useState('');
+
+ const handleSubmit = (e: FormEvent) => {
+ e.preventDefault();
+ console.log('검색어:', searchValue); // 검색 로직은 추후 API 연동
+ };
+
+ return (
+
+
+
+
+ 무엇을 체험하고 싶으신가요?
+
+
+
+
+
+ );
+}
diff --git a/src/app/(with-header)/layout.tsx b/src/app/(with-header)/layout.tsx
index 7b39a5d..84e8048 100644
--- a/src/app/(with-header)/layout.tsx
+++ b/src/app/(with-header)/layout.tsx
@@ -1,16 +1,15 @@
import Header from '@/components/Header';
import Footer from '@/components/Footer';
-export default function Layout({ children }: { children: React.ReactNode }) {
+export default function WithHeaderLayout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
return (
<>
- {/* 공통 헤더 */}
-
- {/* 메인 콘텐츠 */}
- {children}
-
- {/* 공통 푸터 */}
+ {children}
>
);
diff --git a/src/app/(with-header)/page.tsx b/src/app/(with-header)/page.tsx
new file mode 100644
index 0000000..7293bf3
--- /dev/null
+++ b/src/app/(with-header)/page.tsx
@@ -0,0 +1,9 @@
+import BannerSection from '@/app/(with-header)/components/BannerSection';
+
+export default function HomePage() {
+ return (
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/app/page.tsx b/src/app/icons/page.tsx
similarity index 96%
rename from src/app/page.tsx
rename to src/app/icons/page.tsx
index 8134986..47c6119 100644
--- a/src/app/page.tsx
+++ b/src/app/icons/page.tsx
@@ -1,5 +1,6 @@
'use client';
+import BedIcon from '@assets/svg/bed';
import BellIcon from '@assets/svg/bell';
import CheckIcon from '@assets/svg/check';
import ChevronIcon from '@assets/svg/chevron';
@@ -18,6 +19,7 @@ import IconYoutube from '@assets/svg/youtube';
export default function Home() {
const icons = [
+ { name: 'BedIcon', component: },
{ name: 'BellIcon', component: },
{ name: 'CheckIcon', component: },
{
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 97bf10d..d47018d 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,6 +1,11 @@
import './globals.css';
import QueryProvider from '@/lib/queryProvider';
+export const metadata = {
+ title: 'GlobalNomad',
+ description: '글로벌 노마드 체험 플랫폼',
+};
+
export default function RootLayout({
children,
}: {
@@ -12,7 +17,6 @@ export default function RootLayout({
{children}
-