diff --git a/src/components/ui/NavbarV2/NavbarV2.module.scss b/src/components/common/Navbar/Navbar.module.scss similarity index 95% rename from src/components/ui/NavbarV2/NavbarV2.module.scss rename to src/components/common/Navbar/Navbar.module.scss index 2997a96..5038e0a 100644 --- a/src/components/ui/NavbarV2/NavbarV2.module.scss +++ b/src/components/common/Navbar/Navbar.module.scss @@ -1,4 +1,4 @@ -.NavbarV2 { +.Navbar { display: flex; align-items: center; justify-content: space-between; diff --git a/src/components/common/Navbar/Navbar.stories.tsx b/src/components/common/Navbar/Navbar.stories.tsx new file mode 100644 index 0000000..237be71 --- /dev/null +++ b/src/components/common/Navbar/Navbar.stories.tsx @@ -0,0 +1,62 @@ +import { MemoryRouter } from "react-router-dom"; + +import Navbar from "@/components/common/Navbar/Navbar"; +import Icon from "@/components/ui/Icon/Icon"; +import Text from "@/components/ui/Text/Text"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Components/Navbar", + decorators: [ + (Story) => ( + +
+ +
+
+ ), + ], +}; + +export default meta; + +type Story = StoryObj; + +export const HomeNavbar: Story = { + name: "HomeNavbar", + render: () => ( + + + + + + + 앱 공유하기 + + + + ), +}; + +export const ArrowNavbar: Story = { + name: "ArrowNavbar", + render: () => ( + + + + + + ), +}; + +export const CloseNavbar: Story = { + name: "CloseNavbar", + render: () => ( + + + + + + ), +}; diff --git a/src/components/ui/NavbarV2/NavbarV2.tsx b/src/components/common/Navbar/Navbar.tsx similarity index 58% rename from src/components/ui/NavbarV2/NavbarV2.tsx rename to src/components/common/Navbar/Navbar.tsx index 3867212..10d8ee9 100644 --- a/src/components/ui/NavbarV2/NavbarV2.tsx +++ b/src/components/common/Navbar/Navbar.tsx @@ -2,15 +2,14 @@ import type { ButtonHTMLAttributes, PropsWithChildren } from "react"; import classNames from "classnames"; -import styles from "@/components/ui/NavbarV2/NavbarV2.module.scss"; +import styles from "@/components/common/Navbar/Navbar.module.scss"; -const NavbarV2 = ({ children }: PropsWithChildren) => { - return
{children}
; +const Navbar = ({ children }: PropsWithChildren) => { + return
{children}
; }; -NavbarV2.LeftButton = ({ +Navbar.LeftButton = ({ children, - // 확장성 고려해서 className 추가 현재 디자인상에서는 사실 필요 없기는 함 className, ...props }: ButtonHTMLAttributes) => { @@ -21,7 +20,7 @@ NavbarV2.LeftButton = ({ ); }; -NavbarV2.RightButton = ({ +Navbar.RightButton = ({ children, className, ...props @@ -33,4 +32,4 @@ NavbarV2.RightButton = ({ ); }; -export default NavbarV2; +export default Navbar; diff --git a/src/components/ui/ArrowNavbar/ArrowNavbar.tsx b/src/components/ui/ArrowNavbar/ArrowNavbar.tsx deleted file mode 100644 index ea8179d..0000000 --- a/src/components/ui/ArrowNavbar/ArrowNavbar.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { useNavigate } from "react-router-dom"; - -import Navbar from "@/components/ui/Navbar/Navbar"; - -export default function ArrowNavbar() { - const navigate = useNavigate(); - - const onBackBtn = () => { - navigate(-1); - }; - - return ( - - ); -} diff --git a/src/components/ui/CloseNavbar/CloseNavbar.tsx b/src/components/ui/CloseNavbar/CloseNavbar.tsx deleted file mode 100644 index 780c345..0000000 --- a/src/components/ui/CloseNavbar/CloseNavbar.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { useNavigate } from "react-router-dom"; - -import Navbar from "@/components/ui/Navbar/Navbar"; - -export default function CloseNavbar() { - const navigate = useNavigate(); - - const onClose = () => { - navigate("/"); - }; - - return ( - - ); -} diff --git a/src/components/ui/HomeNavbar/HomeNavbar.tsx b/src/components/ui/HomeNavbar/HomeNavbar.tsx deleted file mode 100644 index afa9e24..0000000 --- a/src/components/ui/HomeNavbar/HomeNavbar.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import Text from "../Text/Text"; - -import Navbar from "@/components/ui/Navbar/Navbar"; - -export default function SecondaryNavbar() { - return ( - {}, - }} - rightButton={{ - content: ( - - 앱 공유하기 - - ), - onClick: () => {}, - }} - > - ); -} diff --git a/src/components/ui/Navbar/BaseNavartypes.ts b/src/components/ui/Navbar/BaseNavartypes.ts deleted file mode 100644 index e4c4ab4..0000000 --- a/src/components/ui/Navbar/BaseNavartypes.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { HTMLAttributes } from "react"; - -export interface NavbarButtonProps { - className?: string; - icon?: string; - alt?: string; - onClick?: () => void; - content?: React.ReactNode; -} - -export interface BaseNavbarProps extends HTMLAttributes { - leftButton?: NavbarButtonProps; - rightButton?: NavbarButtonProps; -} diff --git a/src/components/ui/Navbar/NavButton.tsx b/src/components/ui/Navbar/NavButton.tsx deleted file mode 100644 index c77d9fd..0000000 --- a/src/components/ui/Navbar/NavButton.tsx +++ /dev/null @@ -1,36 +0,0 @@ -// NavbarButton.tsx (같은 파일 or 분리) -import React from "react"; - -import classNames from "classnames"; - -import type { NavbarButtonProps } from "@/components/ui/Navbar/BaseNavartypes"; -import styles from "@/components/ui/Navbar/Navbar.module.scss"; - -interface BaseNavbarProps { - buttonProps?: NavbarButtonProps; - defaultAlt?: string; -} - -const NavbarButton: React.FC = ({ buttonProps, defaultAlt }) => { - if (!buttonProps) return null; - const { className, content, icon, alt, onClick } = buttonProps; - - const computedClassName = className === "logo" ? classNames(styles.Logo) : classNames(className); - - return ( - - ) : ( - {alt - )} - - ); -}; - -export default NavbarButton; diff --git a/src/components/ui/Navbar/Navbar.module.css b/src/components/ui/Navbar/Navbar.module.css deleted file mode 100644 index c959f78..0000000 --- a/src/components/ui/Navbar/Navbar.module.css +++ /dev/null @@ -1,44 +0,0 @@ -@charset "UTF-8"; -.NavbarStory { - display: flex; - flex-direction: column; - gap: 1rem; -} -.NavbarStory .Wrapper { - display: flex; - gap: 1rem; - justify-content: center; - align-items: center; -} - -.Navbar { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - height: 2.75rem; - padding: 0.75rem 1.25rem; - background-color: #fff; /* 배경색 (흰색) */ -} - -.Left, -.Right { - display: flex; - align-items: center; - flex: 0 0 auto; -} - -button { - background: none; - border: none; - cursor: pointer; -} -button .Logo { - height: 1.75rem; - vertical-align: bottom; - cursor: auto; -} -button img { - -o-object-fit: contain; - object-fit: contain; -} \ No newline at end of file diff --git a/src/components/ui/Navbar/Navbar.module.scss b/src/components/ui/Navbar/Navbar.module.scss deleted file mode 100644 index 5c006e2..0000000 --- a/src/components/ui/Navbar/Navbar.module.scss +++ /dev/null @@ -1,47 +0,0 @@ -.NavbarStory { - display: flex; - flex-direction: column; - gap: 1rem; - - .Wrapper { - display: flex; - gap: 1rem; - justify-content: center; - align-items: center; - } -} - -.Navbar { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - height: 2.75rem; - padding: 0.75rem 1.25rem; - background-color: #fff; /* 배경색 (흰색) */ -} - -.Left, -.Right { - display: flex; - align-items: center; - flex: 0 0 auto; -} - -button { - padding: 0; - margin: 0; - background: none; - border: none; - cursor: pointer; - height: 100%; - .Logo { - height: 1.75rem; - vertical-align: bottom; - cursor: auto; - } - - img { - object-fit: contain; - } -} diff --git a/src/components/ui/Navbar/Navbar.stories.tsx b/src/components/ui/Navbar/Navbar.stories.tsx deleted file mode 100644 index 51d9c6e..0000000 --- a/src/components/ui/Navbar/Navbar.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { MemoryRouter } from "react-router-dom"; - -import ArrowNavbar from "@/components/ui/ArrowNavbar/ArrowNavbar"; -import CloseNavbar from "@/components/ui/CloseNavbar/CloseNavbar"; -import HomeNavbar from "@/components/ui/HomeNavbar/HomeNavbar"; - -import type { Meta, StoryObj } from "@storybook/react"; - -const meta: Meta = { - title: "Components/Navbars", - decorators: [ - (Story) => ( - -
- -
-
- ), - ], -}; - -export default meta; - -type Story = StoryObj; - -export const CloseNavbarStory: Story = { - name: "CloseNavbar", - render: () => , -}; - -export const ArrowNavbarStory: Story = { - name: "ArrowNavbar", - render: () => , -}; - -export const HomeNavbarStory: Story = { - name: "HomeNavbar", - render: () => , -}; diff --git a/src/components/ui/Navbar/Navbar.tsx b/src/components/ui/Navbar/Navbar.tsx deleted file mode 100644 index 08cc29a..0000000 --- a/src/components/ui/Navbar/Navbar.tsx +++ /dev/null @@ -1,25 +0,0 @@ -// BaseNavbar.tsx -import React from "react"; - -import classNames from "classnames"; - -import NavbarButton from "../Navbar/NavButton"; - -import type { BaseNavbarProps } from "@/components/ui/Navbar/BaseNavartypes"; -import styles from "@/components/ui/Navbar/Navbar.module.scss"; - -const Navbar: React.FC = ({ leftButton, rightButton, ...props }) => { - return ( - - ); -}; - -export default Navbar; diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 16f3755..79c264f 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -1,8 +1,8 @@ import { useNavigate } from "react-router-dom"; +import Navbar from "@/components/common/Navbar/Navbar"; import Home from "@/components/Home/Home"; import Icon from "@/components/ui/Icon/Icon"; -import NavbarV2 from "@/components/ui/NavbarV2/NavbarV2"; import Text from "@/components/ui/Text/Text"; const HomePage = () => { @@ -11,18 +11,19 @@ const HomePage = () => { const handleLogoClick = () => { navigate("/"); }; + return ( <> - - + + - - + + 앱 공유하기 - - + +
diff --git a/src/pages/ReceiptEditPage.tsx b/src/pages/ReceiptEditPage.tsx index 55631e5..f954d41 100644 --- a/src/pages/ReceiptEditPage.tsx +++ b/src/pages/ReceiptEditPage.tsx @@ -1,15 +1,15 @@ +import Navbar from "@/components/common/Navbar/Navbar"; import ReceiptEdit from "@/components/ReceiptEdit/ReceiptEdit"; import Icon from "@/components/ui/Icon/Icon"; -import NavbarV2 from "@/components/ui/NavbarV2/NavbarV2"; const ReceiptEditPage = () => { return ( <> - - + + - - + +
diff --git a/src/pages/RecognitionFailPage.tsx b/src/pages/RecognitionFailPage.tsx index 9a509cb..96b4262 100644 --- a/src/pages/RecognitionFailPage.tsx +++ b/src/pages/RecognitionFailPage.tsx @@ -1,15 +1,15 @@ +import Navbar from "@/components/common/Navbar/Navbar"; import RecognitionFail from "@/components/RecognitionFail/RecognitionFail"; import Icon from "@/components/ui/Icon/Icon"; -import NavbarV2 from "@/components/ui/NavbarV2/NavbarV2"; const RecognitionFailPage = () => { return ( <> - - + + - - + + diff --git a/src/pages/SelectStylePage.tsx b/src/pages/SelectStylePage.tsx index f8ca38a..5799baa 100644 --- a/src/pages/SelectStylePage.tsx +++ b/src/pages/SelectStylePage.tsx @@ -1,15 +1,15 @@ +import Navbar from "@/components/common/Navbar/Navbar"; import SelectStyle from "@/components/SelectStyle/SelectStyle"; import Icon from "@/components/ui/Icon/Icon"; -import NavbarV2 from "@/components/ui/NavbarV2/NavbarV2"; const SelectStylePage = () => { return ( <> - - + + - - + + ); diff --git a/src/pages/SelectTagPage.tsx b/src/pages/SelectTagPage.tsx index 0b80707..d0ee869 100644 --- a/src/pages/SelectTagPage.tsx +++ b/src/pages/SelectTagPage.tsx @@ -1,15 +1,15 @@ +import Navbar from "@/components/common/Navbar/Navbar"; import SelectTag from "@/components/SelectTag/SelectTag"; import Icon from "@/components/ui/Icon/Icon"; -import NavbarV2 from "@/components/ui/NavbarV2/NavbarV2"; const SelectTagPage = () => { return ( <> - - + + - - + + );