diff --git a/src/assets/svg/ic-logo.svg b/src/assets/svg/ic-logo.svg
new file mode 100644
index 0000000..263293a
--- /dev/null
+++ b/src/assets/svg/ic-logo.svg
@@ -0,0 +1,41 @@
+
diff --git a/src/components/ReceiptEdit/ReceiptEdit.module.css b/src/components/ReceiptEdit/ReceiptEdit.module.css
new file mode 100644
index 0000000..9f7afef
--- /dev/null
+++ b/src/components/ReceiptEdit/ReceiptEdit.module.css
@@ -0,0 +1,53 @@
+.ReceiptEdit {
+ padding-left: 1.25rem;
+ padding-right: 1.25rem;
+ padding-bottom: 2.5rem;
+ height: calc(100vh - 2.75rem);
+ overflow: hidden;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ background: var(--color-bg-gradient);
+}
+.ReceiptEdit::before {
+ content: "";
+ background: url("/src/assets/svg/img-graphic-main.svg") center no-repeat;
+ background-size: 100% 16.375rem;
+ filter: blur(4.625rem);
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 0;
+}
+
+.Top {
+ z-index: 1;
+}
+.Top .TitleBox {
+ display: flex;
+ justify-content: center;
+ margin-top: 2.5rem;
+}
+
+.InfoList {
+ display: flex;
+ flex-direction: column;
+ gap: 0.875rem;
+ margin-top: 1.5rem;
+}
+
+.InfoItem {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+.Bottom {
+ display: flex;
+ align-items: center;
+ gap: 0.875rem;
+ z-index: 1;
+}
\ No newline at end of file
diff --git a/src/components/common/Navbar.module.scss b/src/components/common/Navbar.module.scss
deleted file mode 100644
index 1f73a80..0000000
--- a/src/components/common/Navbar.module.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-.Navbar {
- width: 100%;
- height: 2.75rem;
- background-color: red;
-}
diff --git a/src/components/common/Navbar.tsx b/src/components/common/Navbar.tsx
deleted file mode 100644
index d70d5ff..0000000
--- a/src/components/common/Navbar.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import styles from "@/components/common/Navbar.module.scss";
-
-const Navbar = () => {
- return
Navbar
;
-};
-
-export default Navbar;
diff --git a/src/components/common/Navbar/Navbar.module.scss b/src/components/common/Navbar/Navbar.module.scss
new file mode 100644
index 0000000..5038e0a
--- /dev/null
+++ b/src/components/common/Navbar/Navbar.module.scss
@@ -0,0 +1,17 @@
+.Navbar {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 100%;
+ height: 2.75rem;
+ padding: 0.75rem 1.25rem;
+ background-color: var(--color-white);
+
+ button {
+ display: flex;
+ }
+}
+
+.RightButton {
+ margin-left: auto;
+}
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/common/Navbar/Navbar.tsx b/src/components/common/Navbar/Navbar.tsx
new file mode 100644
index 0000000..10d8ee9
--- /dev/null
+++ b/src/components/common/Navbar/Navbar.tsx
@@ -0,0 +1,35 @@
+import type { ButtonHTMLAttributes, PropsWithChildren } from "react";
+
+import classNames from "classnames";
+
+import styles from "@/components/common/Navbar/Navbar.module.scss";
+
+const Navbar = ({ children }: PropsWithChildren) => {
+ return {children}
;
+};
+
+Navbar.LeftButton = ({
+ children,
+ className,
+ ...props
+}: ButtonHTMLAttributes) => {
+ return (
+
+ );
+};
+
+Navbar.RightButton = ({
+ children,
+ className,
+ ...props
+}: ButtonHTMLAttributes) => {
+ return (
+
+ );
+};
+
+export default Navbar;
diff --git a/src/components/ui/Icon/Icon.tsx b/src/components/ui/Icon/Icon.tsx
index 6cbdeb0..fc51337 100644
--- a/src/components/ui/Icon/Icon.tsx
+++ b/src/components/ui/Icon/Icon.tsx
@@ -4,6 +4,7 @@ import CloseIcon from "@/assets/svg/ic-close.svg?react";
import EmptyCircleIcon from "@/assets/svg/ic-empty-circle.svg?react";
import GalleryIcon from "@/assets/svg/ic-gallery.svg?react";
import LeftArrowIcon from "@/assets/svg/ic-left-arrow.svg?react";
+import LogoIcon from "@/assets/svg/ic-logo.svg?react";
import PasteIcon from "@/assets/svg/ic-paste.svg?react";
import PlusIcon from "@/assets/svg/ic-plus.svg?react";
@@ -15,7 +16,8 @@ export type IconNameType =
| "paste"
| "plus"
| "checkCircle"
- | "emptyCircle";
+ | "emptyCircle"
+ | "logo";
export interface IconProps {
name: IconNameType;
@@ -30,6 +32,7 @@ export const ICONS = {
plus: PlusIcon,
checkCircle: CheckCircleIcon,
emptyCircle: EmptyCircleIcon,
+ logo: LogoIcon,
};
// 추후 사이즈, 컬러등 추가 가능
diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx
index 788c024..79c264f 100644
--- a/src/pages/HomePage.tsx
+++ b/src/pages/HomePage.tsx
@@ -1,10 +1,30 @@
-import Navbar from "@/components/common/Navbar";
+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 Text from "@/components/ui/Text/Text";
const HomePage = () => {
+ const navigate = useNavigate();
+
+ const handleLogoClick = () => {
+ navigate("/");
+ };
+
return (
<>
-
+
+
+
+
+
+
+ 앱 공유하기
+
+
+
+
>
);
diff --git a/src/pages/ReceiptEditPage.tsx b/src/pages/ReceiptEditPage.tsx
index fbbd80b..f954d41 100644
--- a/src/pages/ReceiptEditPage.tsx
+++ b/src/pages/ReceiptEditPage.tsx
@@ -1,10 +1,16 @@
-import Navbar from "@/components/common/Navbar";
+import Navbar from "@/components/common/Navbar/Navbar";
import ReceiptEdit from "@/components/ReceiptEdit/ReceiptEdit";
+import Icon from "@/components/ui/Icon/Icon";
const ReceiptEditPage = () => {
return (
<>
-
+
+
+
+
+
+
>
);
diff --git a/src/pages/RecognitionFailPage.tsx b/src/pages/RecognitionFailPage.tsx
index fdb90c9..96b4262 100644
--- a/src/pages/RecognitionFailPage.tsx
+++ b/src/pages/RecognitionFailPage.tsx
@@ -1,10 +1,16 @@
-import Navbar from "@/components/common/Navbar";
+import Navbar from "@/components/common/Navbar/Navbar";
import RecognitionFail from "@/components/RecognitionFail/RecognitionFail";
+import Icon from "@/components/ui/Icon/Icon";
const RecognitionFailPage = () => {
return (
<>
-
+
+
+
+
+
+
>
);
diff --git a/src/pages/SelectStylePage.tsx b/src/pages/SelectStylePage.tsx
index 346aecb..5799baa 100644
--- a/src/pages/SelectStylePage.tsx
+++ b/src/pages/SelectStylePage.tsx
@@ -1,10 +1,15 @@
-import Navbar from "@/components/common/Navbar";
+import Navbar from "@/components/common/Navbar/Navbar";
import SelectStyle from "@/components/SelectStyle/SelectStyle";
+import Icon from "@/components/ui/Icon/Icon";
const SelectStylePage = () => {
return (
<>
-
+
+
+
+
+
>
);
diff --git a/src/pages/SelectTagPage.tsx b/src/pages/SelectTagPage.tsx
index eb9c3e2..d0ee869 100644
--- a/src/pages/SelectTagPage.tsx
+++ b/src/pages/SelectTagPage.tsx
@@ -1,10 +1,15 @@
-import Navbar from "@/components/common/Navbar";
+import Navbar from "@/components/common/Navbar/Navbar";
import SelectTag from "@/components/SelectTag/SelectTag";
+import Icon from "@/components/ui/Icon/Icon";
const SelectTagPage = () => {
return (
<>
-
+
+
+
+
+
>
);