diff --git a/package-lock.json b/package-lock.json index 3ac8b7a8..dc5abab8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14739,7 +14739,6 @@ "version": "1.1.27", "resolved": "https://registry.npmjs.org/react-kakao-maps-sdk/-/react-kakao-maps-sdk-1.1.27.tgz", "integrity": "sha512-1EwYkYsjTDRFqysKStDasFMrFTXcLx2AyRlqMoWD7ONWhRqpjx9M874hkhEEHrnypP2eSIhhDLe0EiSKp3bd2Q==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.22.15", "kakao.maps.d.ts": "^0.1.39" diff --git a/public/loding.json b/public/loding.json new file mode 100644 index 00000000..1bcf9c6d --- /dev/null +++ b/public/loding.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 1.0.0","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":180,"w":800,"h":600,"nm":"Loading","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector 61","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[606.034,164.112,0],"ix":2},"a":{"a":0,"k":[188,-134,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[187.024,-138.985],[-187.024,27.984],[-164.637,138.985],[-136.653,59.698]],"o":[[187.024,-138.985],[-187.024,27.984],[-164.637,138.985],[-136.653,59.698]],"v":[[187.024,-138.985],[-187.024,27.984],[-164.637,138.985],[-136.653,59.698]],"c":true},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.2205,0.7595,0.2385,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector 61","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":180,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"Vector 60","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[380.256,299.511,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[246.256,-152.511],[-246.256,-40.576],[35.446,152.511]],"o":[[246.256,-152.511],[-246.256,-40.576],[35.446,152.511]],"v":[[246.256,-152.511],[-246.256,-40.576],[35.446,152.511]],"c":true},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.7843,0.902,0.7882,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector 60","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":180,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"Vector 62","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[286.977,397.453,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[33.58,-10.727],[-33.58,39.643],[-8.395,-39.643]],"o":[[33.58,-10.727],[-33.58,39.643],[-8.395,-39.643]],"v":[[33.58,-10.727],[-33.58,39.643],[-8.395,-39.643]],"c":true},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.2144,0.4256,0.2214,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector 62","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":180,"st":0,"bm":0,"completed":true}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Union","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.708],"y":[1]},"o":{"x":[0.302],"y":[0]},"t":45,"s":[100]},{"i":{"x":[0.78],"y":[1]},"o":{"x":[0.426],"y":[0]},"t":149,"s":[100]},{"t":155,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36,"s":[134.969,417.489,0],"to":null,"ti":null},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":155,"s":[664.499,417.489,0],"to":null,"ti":null},{"t":188,"s":[933.969,417.489,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[79.082,79.082,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[147.38,147.38],"ix":2},"p":{"a":0,"k":[0,-2.798],"ix":3},"nm":"Контур эллипса 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"d":1,"ty":"el","s":{"a":0,"k":[87.682,87.682],"ix":2},"p":{"a":0,"k":[-89.548,27.051],"ix":3},"nm":"Контур эллипса 2","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"d":1,"ty":"el","s":{"a":0,"k":[87.682,87.682],"ix":2},"p":{"a":0,"k":[87.682,27.051],"ix":3},"nm":"Контур эллипса 3","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"d":1,"ty":"el","s":{"a":0,"k":[57.833,57.833],"ix":2},"p":{"a":0,"k":[138.052,47.572],"ix":3},"nm":"Контур эллипса 4","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"d":1,"ty":"el","s":{"a":0,"k":[46.639,46.639],"ix":2},"p":{"a":0,"k":[-143.649,53.169],"ix":3},"nm":"Контур эллипса 5","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"rc","d":1,"s":{"a":0,"k":[281.702,29.849],"ix":2},"p":{"a":0,"k":[-3.731,61.564],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Контур прямоугольника 1","mn":"ADBE Vector Shape - Rect","hd":false,"_render":true},{"ty":"mm","mm":1,"nm":"Объединить контуры 1","mn":"ADBE Vector Filter - Merge","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.833,0.9514,0.967,1],"ix":4},"o":{"a":0,"k":80,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Union","np":8,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":36,"op":216,"st":36,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":0,"nm":"plain","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.585],"y":[0.813]},"o":{"x":[0.167],"y":[-0.101]},"t":0,"s":[2.766]},{"i":{"x":[0.821],"y":[1]},"o":{"x":[0.239],"y":[0.372]},"t":40,"s":[25.678]},{"i":{"x":[0.657],"y":[0.477]},"o":{"x":[0.265],"y":[0]},"t":78,"s":[32]},{"i":{"x":[0.622],"y":[0.568]},"o":{"x":[0.222],"y":[0.283]},"t":120,"s":[21.309]},{"t":181,"s":[2.766]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.357},"t":0,"s":[432,290.765,0],"to":null,"ti":null},{"i":{"x":0.64,"y":0.863},"o":{"x":0.333,"y":0},"t":36,"s":[432,252,0],"to":null,"ti":null},{"i":{"x":0.711,"y":1},"o":{"x":0.275,"y":0.174},"t":81,"s":[432,341.695,0],"to":null,"ti":null},{"i":{"x":0.606,"y":0.479},"o":{"x":0.171,"y":0},"t":123,"s":[432,392,0],"to":null,"ti":null},{"t":181,"s":[432,290.765,0]}],"ix":2},"a":{"a":0,"k":[432,272,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":800,"h":600,"ip":0,"op":180,"st":0,"bm":0,"completed":true,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector 61","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[606.034,164.112,0],"ix":2},"a":{"a":0,"k":[188,-134,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[187.024,-138.985],[-187.024,27.984],[-164.637,138.985],[-136.653,59.698]],"o":[[187.024,-138.985],[-187.024,27.984],[-164.637,138.985],[-136.653,59.698]],"v":[[187.024,-138.985],[-187.024,27.984],[-164.637,138.985],[-136.653,59.698]],"c":true},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.2205,0.7595,0.2385,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector 61","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":180,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"Vector 60","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[380.256,299.511,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[246.256,-152.511],[-246.256,-40.576],[35.446,152.511]],"o":[[246.256,-152.511],[-246.256,-40.576],[35.446,152.511]],"v":[[246.256,-152.511],[-246.256,-40.576],[35.446,152.511]],"c":true},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.7843,0.902,0.7882,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector 60","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":180,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"Vector 62","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[286.977,397.453,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[33.58,-10.727],[-33.58,39.643],[-8.395,-39.643]],"o":[[33.58,-10.727],[-33.58,39.643],[-8.395,-39.643]],"v":[[33.58,-10.727],[-33.58,39.643],[-8.395,-39.643]],"c":true},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.2144,0.4256,0.2214,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector 62","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":180,"st":0,"bm":0,"completed":true}]},{"ddd":0,"ind":4,"ty":4,"nm":"Union","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":171,"s":[100]},{"t":179,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[628.969,159.489,0],"to":null,"ti":null},{"t":179,"s":[170.969,159.489,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[147.38,147.38],"ix":2},"p":{"a":0,"k":[0,-2.798],"ix":3},"nm":"Контур эллипса 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"d":1,"ty":"el","s":{"a":0,"k":[87.682,87.682],"ix":2},"p":{"a":0,"k":[-89.548,27.051],"ix":3},"nm":"Контур эллипса 2","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"d":1,"ty":"el","s":{"a":0,"k":[87.682,87.682],"ix":2},"p":{"a":0,"k":[87.682,27.051],"ix":3},"nm":"Контур эллипса 3","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"d":1,"ty":"el","s":{"a":0,"k":[57.833,57.833],"ix":2},"p":{"a":0,"k":[138.052,47.572],"ix":3},"nm":"Контур эллипса 4","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"d":1,"ty":"el","s":{"a":0,"k":[46.639,46.639],"ix":2},"p":{"a":0,"k":[-143.649,53.169],"ix":3},"nm":"Контур эллипса 5","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"rc","d":1,"s":{"a":0,"k":[281.702,29.849],"ix":2},"p":{"a":0,"k":[-3.731,61.564],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Контур прямоугольника 1","mn":"ADBE Vector Shape - Rect","hd":false,"_render":true},{"ty":"mm","mm":1,"nm":"Объединить контуры 1","mn":"ADBE Vector Filter - Merge","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.698,0.9216,0.949,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Union","np":8,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":180,"st":0,"bm":0,"completed":true}],"markers":[],"__complete":true} \ No newline at end of file diff --git a/src/app/(auth)/login/page.tsx b/src/app/(auth)/login/page.tsx index c215565b..b1c4d90d 100644 --- a/src/app/(auth)/login/page.tsx +++ b/src/app/(auth)/login/page.tsx @@ -1,4 +1,5 @@ "use client"; +import DotLoadingSpinner from "@/app/components/loading-spinner/DotLodingSpinner"; import { useLogin } from "@/hooks/queries/auth/useLogin"; import { type LoginSchema, loginSchema } from "@/schemas/authSchema"; import { zodResolver } from "@hookform/resolvers/zod"; @@ -60,7 +61,7 @@ export default function LoginPage() { disabled={isPending} className="group relative flex w-full justify-center rounded-lg bg-lime-600 px-4 py-2 text-sm font-medium text-white hover:bg-lime-700 focus:outline-none focus:ring-2 focus:ring-lime-500 focus:ring-offset-2 disabled:bg-lime-300" > - {isPending ? "로그인 중..." : "로그인"} + {isPending ? : "로그인"}
diff --git a/src/app/(auth)/signup/applicant/page.tsx b/src/app/(auth)/signup/applicant/page.tsx index 85ea941e..24882820 100644 --- a/src/app/(auth)/signup/applicant/page.tsx +++ b/src/app/(auth)/signup/applicant/page.tsx @@ -7,6 +7,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import Link from "next/link"; import { useForm } from "react-hook-form"; import Image from "next/image"; +import DotLoadingSpinner from "@/app/components/loading-spinner/DotLodingSpinner"; export default function ApplicantSignupPage() { const { signup, isPending } = useSignup(); @@ -103,7 +104,7 @@ export default function ApplicantSignupPage() { disabled={isPending} className="group relative flex w-full justify-center rounded-lg bg-lime-600 px-4 py-2 text-sm font-medium text-white hover:bg-lime-700 focus:outline-none focus:ring-2 focus:ring-lime-500 focus:ring-offset-2 disabled:bg-lime-300" > - {isPending ? "회원가입 중..." : "회원가입"} + {isPending ? : "회원가입"}
diff --git a/src/app/(auth)/signup/owner/page.tsx b/src/app/(auth)/signup/owner/page.tsx index f79318fd..b4582ac1 100644 --- a/src/app/(auth)/signup/owner/page.tsx +++ b/src/app/(auth)/signup/owner/page.tsx @@ -7,6 +7,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import Link from "next/link"; import { useForm } from "react-hook-form"; import Image from "next/image"; +import DotLoadingSpinner from "@/app/components/loading-spinner/DotLodingSpinner"; export default function OwnerSignupPage() { const { signup, isPending } = useSignup(); @@ -125,7 +126,7 @@ export default function OwnerSignupPage() { disabled={isPending} className="group relative flex w-full justify-center rounded-lg bg-lime-600 px-4 py-2 text-sm font-medium text-white hover:bg-lime-700 focus:outline-none focus:ring-2 focus:ring-lime-500 focus:ring-offset-2 disabled:bg-lime-300" > - {isPending ? "회원가입 중..." : "회원가입"} + {isPending ? : "회원가입"}
diff --git a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/ApplicationStatus.tsx b/src/app/(pages)/(albaform)/alba/[formId]/components/ApplicationStatus.tsx similarity index 87% rename from src/app/(pages)/(albaform)/alba/[formId]/edit/components/ApplicationStatus.tsx rename to src/app/(pages)/(albaform)/alba/[formId]/components/ApplicationStatus.tsx index 90544cca..19684ff5 100644 --- a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/ApplicationStatus.tsx +++ b/src/app/(pages)/(albaform)/alba/[formId]/components/ApplicationStatus.tsx @@ -29,14 +29,18 @@ export default function ApplicationStatus({ formId }: ApplicationStatusProps) { // console.log("지원 현황 불러오기 에러: ", errorMessage); // } + if (!applicationStatusData || applicationStatusData.data.length === 0) { + return null; + } + return ( -
+ <> {applicationStatusData && ( - <> +

지원 현황

- +
)} -
+ ); } diff --git a/src/app/(pages)/(albaform)/alba/[formId]/components/FormActions.tsx b/src/app/(pages)/(albaform)/alba/[formId]/components/FormActions.tsx new file mode 100644 index 00000000..e598eab8 --- /dev/null +++ b/src/app/(pages)/(albaform)/alba/[formId]/components/FormActions.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import Button from "@/app/components/button/default/Button"; +import { FcEmptyTrash, FcEditImage, FcFile, FcSearch } from "react-icons/fc"; +import Link from "next/link"; +import { useUser } from "@/hooks/queries/user/me/useUser"; +import { FormDetailResponse } from "@/types/response/form"; + +interface FormActionsProps { + formId: string | number; + albaFormDetailData: FormDetailResponse; +} + +export default function FormActions({ formId, albaFormDetailData }: FormActionsProps) { + const { user } = useUser(); + const isMyAlbaForm = user?.id === albaFormDetailData.ownerId; + const isOwnerRole = user?.role === "OWNER"; + + const buttonStyle = "h-10 lg:h-16"; + if (!user) return null; + // 사장님이 아니면 지원하기/내 지원내역 보기 버튼 + if (!isOwnerRole) { + return ( +
+ + +
+ ); + } + + // 사장님이면 수정하기/삭제하기 버튼 + if (isOwnerRole) { + if (!isMyAlbaForm) return null; + return ( +
+ + + + +
+ ); + } +} diff --git a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/FormDetail.tsx b/src/app/(pages)/(albaform)/alba/[formId]/components/FormDetail.tsx similarity index 83% rename from src/app/(pages)/(albaform)/alba/[formId]/edit/components/FormDetail.tsx rename to src/app/(pages)/(albaform)/alba/[formId]/components/FormDetail.tsx index 5e63f664..07a68fa8 100644 --- a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/FormDetail.tsx +++ b/src/app/(pages)/(albaform)/alba/[formId]/components/FormDetail.tsx @@ -15,10 +15,8 @@ export default function FormDetails({ albaFormDetailData }: FormDetailsProps) { return ( <>
- - {albaFormDetailData.storeName || "가게명"} - - + {albaFormDetailData.storeName || "가게명"} + {albaFormDetailData.location || "위치"} ・ {"경력 정보 없음"}
diff --git a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/FormHeader.tsx b/src/app/(pages)/(albaform)/alba/[formId]/components/FormHeader.tsx similarity index 100% rename from src/app/(pages)/(albaform)/alba/[formId]/edit/components/FormHeader.tsx rename to src/app/(pages)/(albaform)/alba/[formId]/components/FormHeader.tsx diff --git a/src/app/(pages)/(albaform)/alba/[formId]/components/FormImage.tsx b/src/app/(pages)/(albaform)/alba/[formId]/components/FormImage.tsx new file mode 100644 index 00000000..94900de1 --- /dev/null +++ b/src/app/(pages)/(albaform)/alba/[formId]/components/FormImage.tsx @@ -0,0 +1,38 @@ +import Image from "next/image"; +import Indicator from "@/app/components/pagination/Indicator"; + +interface FormImageProps { + imageUrls: string[]; + currentPage: number; + onPageChange: (page: number) => void; +} + +export default function FormImage({ imageUrls, currentPage, onPageChange }: FormImageProps) { + return ( +
+ {/* 이미지 표시 */} + {imageUrls?.map((imageUrl, index) => ( +
+ {`알바 +
+ ))} + + {/* 인디케이터 */} +
+ +
+
+ ); +} diff --git a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/RecruitInfomation.tsx b/src/app/(pages)/(albaform)/alba/[formId]/components/RecruitInformation.tsx similarity index 79% rename from src/app/(pages)/(albaform)/alba/[formId]/edit/components/RecruitInfomation.tsx rename to src/app/(pages)/(albaform)/alba/[formId]/components/RecruitInformation.tsx index 458bff81..e8dbf311 100644 --- a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/RecruitInfomation.tsx +++ b/src/app/(pages)/(albaform)/alba/[formId]/components/RecruitInformation.tsx @@ -4,16 +4,13 @@ import RecruitIcon from "@/app/components/card/cardList/RecruitIcon"; import RecruitCondition from "@/app/components/card/cardList/RecruitCondition"; import { FormDetailResponse } from "@/types/response/form"; import FormActions from "./FormActions"; -import { useUser } from "@/hooks/queries/user/me/useUser"; -interface FormDetailsProps { +interface RecruitInformationProps { albaFormDetailData: FormDetailResponse; + formId: number; } -export default function RecruitInformation({ albaFormDetailData }: FormDetailsProps) { - const { user } = useUser(); - const isOwner = user?.role === "OWNER"; - +export default function RecruitInformation({ albaFormDetailData, formId }: RecruitInformationProps) { const recruitmentDetails = { hourlyWage: albaFormDetailData.hourlyWage, recruitmentStartDate: new Date(albaFormDetailData.recruitmentStartDate), @@ -28,8 +25,7 @@ export default function RecruitInformation({ albaFormDetailData }: FormDetailsPr <> - - +

모집 조건

diff --git a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/FormActions.tsx b/src/app/(pages)/(albaform)/alba/[formId]/edit/components/FormActions.tsx deleted file mode 100644 index e66ffe1a..00000000 --- a/src/app/(pages)/(albaform)/alba/[formId]/edit/components/FormActions.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from "react"; -import Button from "@/app/components/button/default/Button"; -import { FcEmptyTrash } from "react-icons/fc"; -import { FcEditImage } from "react-icons/fc"; -import { FcFile } from "react-icons/fc"; -import { FcSearch } from "react-icons/fc"; - -interface FormActionsProps { - isOwner: boolean; -} - -export default function FormActions({ isOwner }: FormActionsProps) { - return ( -
- - -
- ); -} diff --git a/src/app/(pages)/(albaform)/alba/[formId]/edit/page.tsx b/src/app/(pages)/(albaform)/alba/[formId]/edit/page.tsx index 4930677d..353a8ad3 100644 --- a/src/app/(pages)/(albaform)/alba/[formId]/edit/page.tsx +++ b/src/app/(pages)/(albaform)/alba/[formId]/edit/page.tsx @@ -16,6 +16,7 @@ import WorkConditionSection from "../../../addform/section/WorkConditionSection" import { SubmitFormDataType } from "@/types/addform"; import useEditing from "@/hooks/useEditing"; import useFormDetail from "@/hooks/queries/form/detail/useFormDetail"; +import LoadingSpinner from "@/app/components/loading-spinner/LoadingSpinner"; import formatMoney from "@/utils/formatMoney"; export default function EditFormPage() { @@ -201,9 +202,12 @@ export default function EditFormPage() { } }; - if (isLoading) { - return
Loading...
; - } + if (isLoading) + return ( +
+ +
+ ); if (error) { return
Error: 데이터를 불러오는데 문제가 발생했습니다.
; diff --git a/src/app/(pages)/(albaform)/alba/[formId]/page.tsx b/src/app/(pages)/(albaform)/alba/[formId]/page.tsx index 7d91483e..b2c9a3d6 100644 --- a/src/app/(pages)/(albaform)/alba/[formId]/page.tsx +++ b/src/app/(pages)/(albaform)/alba/[formId]/page.tsx @@ -6,10 +6,12 @@ import { useUser } from "@/hooks/queries/user/me/useUser"; import { useFormDetail } from "@/hooks/queries/form/detail/useFormDetail"; import { Map, MapMarker, useKakaoLoader } from "react-kakao-maps-sdk"; import Script from "next/script"; -import FormHeader from "./edit/components/FormHeader"; -import FormDetails from "./edit/components/FormDetail"; -import RecruitInformation from "./edit/components/RecruitInfomation"; -import ApplicationStatus from "./edit/components/ApplicationStatus"; +import FormHeader from "./components/FormHeader"; +import FormDetails from "./components/FormDetail"; +import RecruitInformation from "./components/RecruitInformation"; +import ApplicationStatus from "./components/ApplicationStatus"; +import LoadingSpinner from "@/app/components/loading-spinner/LoadingSpinner"; +import FormImage from "./components/FormImage"; interface Coords { lat: number; @@ -19,6 +21,7 @@ interface Coords { export default function AlbaFormDetailPage() { const { formId } = useParams(); const [formIdState, setFormIdState] = useState(0); + const [currentPage, setCurrentPage] = useState(0); const { user } = useUser(); const isOwner = user?.role === "OWNER"; @@ -35,7 +38,7 @@ export default function AlbaFormDetailPage() { } }, [formId]); - const { albaFormDetailData, isLoading, error: formError } = useFormDetail({ formId: formIdState }); + const { albaFormDetailData, isLoading } = useFormDetail({ formId: formIdState }); // 주소로 좌표 검색 useEffect(() => { @@ -52,31 +55,44 @@ export default function AlbaFormDetailPage() { }); }, [albaFormDetailData?.location]); - if (isLoading) return
Loading...
; - if (formError) return
Error: 데이터를 불러오는데 문제가 발생했습니다.
; - if (!albaFormDetailData) return
데이터가 없습니다.
; + if (isLoading) + return ( +
+ +
+ ); return ( -
+
{/* 사진영역 */} -
사진영역
-
+ {albaFormDetailData && ( + setCurrentPage(page)} + /> + )} +
{/* 왼쪽 영역 */} -
- - - +
+ {albaFormDetailData && ( + <> + + + + )} {/* 카카오맵 스크립트 */}