diff --git a/package.json b/package.json
index aa784e5f..1c969b1e 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"react": "^18",
"react-dom": "^18",
"react-hook-form": "^7.51.4",
+ "react-toastify": "^10.0.5",
"swiper": "^11.1.1",
"tailwind-merge": "^2.2.1",
"vaul": "^0.9.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b89716e8..c9f6b1d9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,6 +32,9 @@ dependencies:
react-hook-form:
specifier: ^7.51.4
version: 7.51.5(react@18.2.0)
+ react-toastify:
+ specifier: ^10.0.5
+ version: 10.0.5(react-dom@18.2.0)(react@18.2.0)
swiper:
specifier: ^11.1.1
version: 11.1.1
@@ -13654,6 +13657,17 @@ packages:
tslib: 2.6.2
dev: false
+ /react-toastify@10.0.5(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ clsx: 2.1.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
/react@18.2.0:
resolution:
{
diff --git a/src/app/(post)/createPost/_component/ImageUploader.tsx b/src/app/(post)/createPost/_component/ImageUploader.tsx
index 0f35d443..03533470 100644
--- a/src/app/(post)/createPost/_component/ImageUploader.tsx
+++ b/src/app/(post)/createPost/_component/ImageUploader.tsx
@@ -34,7 +34,7 @@ const ImageUploader = ({ imageSrcUrl, onChange }: ImageUploaderProps) => {
return (
<>
-
+
{previewImageUrl ? (
<>
diff --git a/src/app/(post)/createPost/_component/PostForm/index.tsx b/src/app/(post)/createPost/_component/PostForm/index.tsx
index 2f9bf3df..a1ab6d55 100644
--- a/src/app/(post)/createPost/_component/PostForm/index.tsx
+++ b/src/app/(post)/createPost/_component/PostForm/index.tsx
@@ -3,6 +3,7 @@
import { Controller, useForm } from 'react-hook-form';
import { PostValue, createPost } from '@/src/apis/postDetail';
+import Toast from '@/src/app/_components/Toast';
import Button from '@/src/components/Button/Button';
import FormField from '@/src/components/FormField';
import Selector from '@/src/components/Selector';
@@ -26,6 +27,7 @@ const PostForm = () => {
const onSubmitPost = (data: PostValue) => {
createPost(data);
+ Toast.default('등록되었습니다.');
};
return (
@@ -53,7 +55,6 @@ const PostForm = () => {
{...register('title')}
/>
-
{
{...register('content')}
/>
-
{
)}
/>
-
{
return (
-
+ >
);
};
diff --git a/src/app/_components/Toast.tsx b/src/app/_components/Toast.tsx
new file mode 100644
index 00000000..be156204
--- /dev/null
+++ b/src/app/_components/Toast.tsx
@@ -0,0 +1,33 @@
+import { ToastOptions, toast } from 'react-toastify';
+
+import { cn } from '@/src/utils/cn';
+
+const defaultToastOption: ToastOptions = {
+ position: 'bottom-center',
+ autoClose: 4000,
+ hideProgressBar: true,
+ closeOnClick: true,
+ draggable: true,
+ pauseOnHover: false,
+ closeButton: false,
+ icon: false,
+};
+
+const Toast = {
+ default: (
+ message: string,
+ options: ToastOptions = {},
+ className?: string,
+ ) => {
+ toast.info(message, {
+ ...defaultToastOption,
+ ...options,
+ className: cn(
+ 'font-text-1-rg h-[44px] w-[358px] rounded-lg bg-[#2D3033] text-white',
+ className,
+ ),
+ });
+ },
+};
+
+export default Toast;
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 128e4093..07aad487 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,4 +1,6 @@
import type { Metadata, Viewport } from 'next';
+import { ToastContainer } from 'react-toastify';
+import 'react-toastify/dist/ReactToastify.css';
import Introduction from '../components/Introduction';
import { MSWComponent } from '../mocks/MSWComponent';
@@ -43,6 +45,7 @@ const RootLayout = ({
{children}
+