From b68899b91a72dfddab45e351de631363d265d606 Mon Sep 17 00:00:00 2001 From: philipcheung Date: Sun, 2 Nov 2025 17:01:07 +0800 Subject: [PATCH] header updated, added menu button and drawer --- src/components/header.tsx | 93 +++++++++++++++++++++++++++++++++++---- src/components/layout.tsx | 10 +++-- src/pages/main.tsx | 2 + 3 files changed, 94 insertions(+), 11 deletions(-) diff --git a/src/components/header.tsx b/src/components/header.tsx index 5e0271d..f489cfa 100644 --- a/src/components/header.tsx +++ b/src/components/header.tsx @@ -1,13 +1,90 @@ -import { Box, Flex, Image, } from '@chakra-ui/react'; -import {colors} from '../colors'; +import { Box, Flex, Image, VStack, Text, Link } from '@chakra-ui/react'; +import { GiHamburgerMenu } from "react-icons/gi"; +import { colors } from '../colors'; +import { useState } from 'react'; +import { + DrawerBackdrop, + DrawerBody, + DrawerCloseTrigger, + DrawerContent, + DrawerHeader, + DrawerRoot, + DrawerTitle, +} from '@/components/ui/drawer'; + +interface HeaderProps { + showMenu?: boolean; +} + +function Header({ showMenu = false }: HeaderProps) { + const [isDrawerOpen, setIsDrawerOpen] = useState(false); + + const menuItems = [ + { label: '40+常見健康問題', href: '#health-issues' }, + { label: '營萃護心油四大優勢', href: '#advantages' }, + { label: '護心食譜', href: '#recipes' }, + { label: '更多食用油健康真相', href: '#truth' }, + ]; -function Header() { return ( - - - Logo - - + <> + + + Logo + {showMenu && ( + setIsDrawerOpen(true)} + _hover={{ opacity: 0.8 }} + > + + + )} + + + + setIsDrawerOpen(e.open)} placement="end"> + + + + 選單 + + + + + {menuItems.map((item, index) => ( + setIsDrawerOpen(false)} + textDecoration="none" + _hover={{ textDecoration: 'none' }} + > + + + {item.label} + + + + ))} + + + + + ); } diff --git a/src/components/layout.tsx b/src/components/layout.tsx index de88bac..ba8d239 100644 --- a/src/components/layout.tsx +++ b/src/components/layout.tsx @@ -4,13 +4,17 @@ import { Container, } from '@chakra-ui/react' -import Header from './header' + import Footer from './footer' -function Layout() { +interface LayoutProps { + showMenu?: boolean; +} + +function Layout({ showMenu = false }: LayoutProps) { return ( -
+ {/*
*/} diff --git a/src/pages/main.tsx b/src/pages/main.tsx index e13bb90..33e8a61 100644 --- a/src/pages/main.tsx +++ b/src/pages/main.tsx @@ -6,6 +6,7 @@ import Info from '@/components/new_ui/info' import Advantages from '@/components/new_ui/advantages' import OilInfo from '@/components/new_ui/oilInfo' import Truth from '@/components/new_ui/truth' +import Header from '@/components/header' @@ -13,6 +14,7 @@ import Truth from '@/components/new_ui/truth' function MainPage() { return ( <> +