Spaces:
Sleeping
Sleeping
Create layouts/MainLayout/MainLayout.js
Browse files
layouts/MainLayout/MainLayout.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// layouts/MainLayout.js
|
| 2 |
+
import { useState } from 'react';
|
| 3 |
+
import Link from 'next/link';
|
| 4 |
+
// We need these components for the layout to work
|
| 5 |
+
import GlassDrawer from '../components/GlassDrawer';
|
| 6 |
+
import GlassDock from '../components/GlassDock';
|
| 7 |
+
|
| 8 |
+
export default function MainLayout({ children }) {
|
| 9 |
+
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
| 10 |
+
const [activeTab, setActiveTab] = useState('home');
|
| 11 |
+
|
| 12 |
+
return (
|
| 13 |
+
<div className="min-h-screen bg-[#F8FAFC]">
|
| 14 |
+
{/* 1. Top Navigation Bar */}
|
| 15 |
+
<div className="fixed top-0 left-0 right-0 z-40 flex justify-between items-center p-6 pt-safe-top pointer-events-none">
|
| 16 |
+
{/* Menu Button (Top Left) */}
|
| 17 |
+
<button
|
| 18 |
+
onClick={() => setIsMenuOpen(true)}
|
| 19 |
+
className="pointer-events-auto active:scale-90 transition-transform"
|
| 20 |
+
>
|
| 21 |
+
{/* Ensure this file exists in public/assets/ */}
|
| 22 |
+
<img
|
| 23 |
+
src="/assets/menu_button.png"
|
| 24 |
+
alt="Menu"
|
| 25 |
+
className="w-12 h-auto drop-shadow-md"
|
| 26 |
+
/>
|
| 27 |
+
</button>
|
| 28 |
+
</div>
|
| 29 |
+
|
| 30 |
+
{/* 2. The Slide-out Menu */}
|
| 31 |
+
<GlassDrawer isOpen={isMenuOpen} setIsOpen={setIsMenuOpen} />
|
| 32 |
+
|
| 33 |
+
{/* 3. The Main Content (The Feed) */}
|
| 34 |
+
<main>{children}</main>
|
| 35 |
+
|
| 36 |
+
{/* 4. The Bottom Dock (Home/Plus/Profile) */}
|
| 37 |
+
<GlassDock activeTab={activeTab} setActiveTab={setActiveTab} />
|
| 38 |
+
</div>
|
| 39 |
+
);
|
| 40 |
+
}
|