- {/* 에러 메시지 */}
{hasError && (
암호가 일치하지 않아요
diff --git a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/ExitModal.tsx b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/ExitModal.tsx
index 74bd569..0ca1649 100644
--- a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/ExitModal.tsx
+++ b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/ExitModal.tsx
@@ -15,7 +15,6 @@ const ExitModal: React.FC = function ExitModal({
return (
- {/* Top Section */}
{
const urlPattern = /^(https?:\/\/[^\s]+)/g;
return urlPattern.test(link.trim());
};
- // 데이터 로드 및 초기화
+
useEffect(() => {
if (!id || !nonMemberId) {
console.error("누락된 라우트 매개변수:", { id, nonMemberId });
@@ -123,15 +122,13 @@ export default function LinkEditPage() {
return (
- {/* 상단 네비게이션 */}
- {/* 스크롤 가능 영역 */}
{userName && (
@@ -167,7 +164,6 @@ export default function LinkEditPage() {
- {/* 하단 저장 버튼 */}
-
- {/* Exit Modal */}
{showExitModal && (
)}
diff --git a/fe/src/app/event-maps/[id]/[nonMemberId]/stores/useUserDataStore.ts b/fe/src/app/event-maps/[id]/[nonMemberId]/stores/useUserDataStore.ts
index e9576ab..f076672 100644
--- a/fe/src/app/event-maps/[id]/[nonMemberId]/stores/useUserDataStore.ts
+++ b/fe/src/app/event-maps/[id]/[nonMemberId]/stores/useUserDataStore.ts
@@ -1,6 +1,5 @@
import { create } from "zustand";
-// 유저 데이터 인터페이스 정의
interface UserData {
nonMemberId: number | null;
name: string;
@@ -13,10 +12,8 @@ interface UserDataStore {
setUserData: (data: UserData) => void;
}
-// LocalStorage 키
const LOCAL_STORAGE_KEY = "userData";
-// LocalStorage에서 데이터를 가져오는 함수
const getUserDataFromLocalStorage = (): UserData => {
if (typeof window === "undefined")
return { nonMemberId: null, name: "", bookmarkUrls: [], storeUrls: [] };
@@ -27,13 +24,11 @@ const getUserDataFromLocalStorage = (): UserData => {
: { nonMemberId: null, name: "", bookmarkUrls: [], storeUrls: [] };
};
-// Zustand 스토어 생성
export const useUserDataStore = create((set, get) => ({
userData: getUserDataFromLocalStorage(),
setUserData: (data) => {
const currentData = get().userData;
- // 변경이 없는 경우 상태 업데이트 중단
if (
currentData.nonMemberId === data.nonMemberId &&
currentData.name === data.name &&
@@ -44,7 +39,6 @@ export const useUserDataStore = create((set, get) => ({
return;
}
- // 변경이 있을 경우 상태 업데이트 및 LocalStorage 저장
set({ userData: data });
localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(data));
},
diff --git a/fe/src/app/event-maps/[id]/components/BottomDrawer.tsx b/fe/src/app/event-maps/[id]/components/BottomDrawer.tsx
index b9eaf12..0a76cf1 100644
--- a/fe/src/app/event-maps/[id]/components/BottomDrawer.tsx
+++ b/fe/src/app/event-maps/[id]/components/BottomDrawer.tsx
@@ -87,12 +87,12 @@ export function BottomDrawer({
setIsRecommended(true);
recommendProfile = data.recommendPings.map(
(ping: CustomRecommendPing) => ({
- iconLevel: 10, // Fixed icon level
+ iconLevel: 10,
nonMembers: [
{
nonMemberId: -1,
- name: "추천 모핑", // Fixed name
- profileSvg: "/profile/recommendProfile.svg", // Fixed profileSvg
+ name: "추천 모핑",
+ profileSvg: "/profile/recommendProfile.svg",
},
],
url: ping.url,
@@ -109,12 +109,12 @@ export function BottomDrawer({
...(data.nonMembers || []),
]);
setAllPings([
- ...(data.pings || []), // 기존 pings
- ...(recommendProfile || []), // recommendProfile 추가
+ ...(data.pings || []),
+ ...(recommendProfile || []),
]);
setCustomMarkers([
- ...(data.pings || []), // 기존 pings
- ...(recommendProfile || []), // recommendProfile 추가
+ ...(data.pings || []),
+ ...(recommendProfile || []),
]);
setNeighborhood(data.neighborhood);
console.log(data);
@@ -139,12 +139,12 @@ export function BottomDrawer({
};
const handleAddToMorphing = async () => {
- const uuid = id; // id를 uuid로 설정
- const sids = recommendPings.map((item) => item.sid); // sid 값만 추출
+ const uuid = id;
+ const sids = recommendPings.map((item) => item.sid);
const requestBody = {
- uuid, // 문자열로 uuid 설정
- sids, // 추출한 sid 배열
+ uuid,
+ sids,
};
try {
@@ -160,10 +160,10 @@ export function BottomDrawer({
throw new Error(`HTTP error! Status: ${response.status}`);
}
- const result = await response.json(); // 응답 데이터 처리
+ const result = await response.json();
console.log("Recommended Data Response:", result);
setTrigger((prev) => !prev);
- setIsRecommend(false); // 추천 모드 비활성화
+ setIsRecommend(false);
} catch (error) {
console.error("Error fetching recommended data:", error);
}
@@ -235,12 +235,12 @@ export function BottomDrawer({
recommendProfile = data.recommendPings.map(
(ping: CustomRecommendPing) => ({
- iconLevel: 10, // Fixed icon level
+ iconLevel: 10,
nonMembers: [
{
nonMemberId: -1,
- name: "추천 모핑", // Fixed name
- profileSvg: "/profile/recommendProfile.svg", // Fixed profileSvg
+ name: "추천 모핑",
+ profileSvg: "/profile/recommendProfile.svg",
},
],
url: ping.url,
@@ -257,12 +257,12 @@ export function BottomDrawer({
...(data.nonMembers || []),
]);
setAllPings([
- ...(data.pings || []), // 기존 pings
- ...(recommendProfile || []), // recommendProfile 추가
+ ...(data.pings || []),
+ ...(recommendProfile || []),
]);
setCustomMarkers([
- ...(data.pings || []), // 기존 pings
- ...(recommendProfile || []), // recommendProfile 추가
+ ...(data.pings || []),
+ ...(recommendProfile || []),
]);
setNeighborhood(data.neighborhood);
setUpdateTime(data.pingLastUpdateTime);
diff --git a/fe/src/app/event-maps/[id]/components/EventMapExitModal.tsx b/fe/src/app/event-maps/[id]/components/EventMapExitModal.tsx
index 6ca4183..89d3dd4 100644
--- a/fe/src/app/event-maps/[id]/components/EventMapExitModal.tsx
+++ b/fe/src/app/event-maps/[id]/components/EventMapExitModal.tsx
@@ -11,7 +11,7 @@ function ExitModal({ onCancel, onExit }: ExitModalProps) {
{" "}
- {/* pt 값을 줄여서 위로 올림 */}
+
이벤트를 저장하지 않고 나갈까요?
diff --git a/fe/src/app/event-maps/[id]/components/MapComponent.tsx b/fe/src/app/event-maps/[id]/components/MapComponent.tsx
index 51ee072..9a61567 100644
--- a/fe/src/app/event-maps/[id]/components/MapComponent.tsx
+++ b/fe/src/app/event-maps/[id]/components/MapComponent.tsx
@@ -292,9 +292,9 @@ export default function MapComponent({
`,
- borderWidth: 0, // 보더 제거
- backgroundColor: "transparent", // 백그라운드 설정
- disableAnchor: true, // 앵커 비활성화
+ borderWidth: 0,
+ backgroundColor: "transparent",
+ disableAnchor: true,
});
if (mapInstanceRef.current) {
diff --git a/fe/src/app/event-maps/[id]/components/RecommendActive.tsx b/fe/src/app/event-maps/[id]/components/RecommendActive.tsx
index 77d1648..e3930ac 100644
--- a/fe/src/app/event-maps/[id]/components/RecommendActive.tsx
+++ b/fe/src/app/event-maps/[id]/components/RecommendActive.tsx
@@ -20,10 +20,8 @@ export function RecommendActive({
}: RecommendActiveProps): JSX.Element {
return (
- {/* nonRecommend이 true일 때 다른 UI를 렌더링 */}
{nonRecommend ? (
<>
- {/* 추천 데이터가 없을 때 UI */}
근처에 추천할만한 공간이 없어요
@@ -56,7 +54,6 @@ export function RecommendActive({
>
) : (
<>
- {/* 추천 데이터가 있을 때 기본 UI */}
우리끼리만 보는
diff --git a/fe/src/app/event-maps/[id]/hooks/useDrawer.ts b/fe/src/app/event-maps/[id]/hooks/useDrawer.ts
index 7b296c4..4a64e63 100644
--- a/fe/src/app/event-maps/[id]/hooks/useDrawer.ts
+++ b/fe/src/app/event-maps/[id]/hooks/useDrawer.ts
@@ -4,17 +4,13 @@ import { useSpring } from "@react-spring/web";
const useDrawer = () => {
const [stopPoints, setStopPoints] = useState
([]);
- // 뷰포트 크기에 따른 스톱 포인트 계산
const updateStopPoints = () => {
let stopPointsPercent;
if (window.matchMedia("(max-height: 668px)").matches) {
- // 작은 기종
stopPointsPercent = [54, 30, 0, -20];
} else if (window.matchMedia("(max-height: 850px)").matches) {
- // 중간 기종
stopPointsPercent = [59, 24, 0, -15.5];
} else {
- // 큰 기종
stopPointsPercent = [57, 22.5, 0, -14];
}
const vh = window.innerHeight;
@@ -22,8 +18,8 @@ const useDrawer = () => {
};
useEffect(() => {
- updateStopPoints(); // 초기 설정
- window.addEventListener("resize", updateStopPoints); // 창 크기 변경에 따라 업데이트
+ updateStopPoints();
+ window.addEventListener("resize", updateStopPoints);
return () => window.removeEventListener("resize", updateStopPoints);
}, []);
@@ -41,7 +37,7 @@ const useDrawer = () => {
};
const setPosition = (newY: number) => {
- const limitedY = Math.max(Math.min(newY, stopPoints[3]), stopPoints[0]); // y 값 제한
+ const limitedY = Math.max(Math.min(newY, stopPoints[3]), stopPoints[0]);
api.start({ y: limitedY });
};
@@ -50,7 +46,7 @@ const useDrawer = () => {
isOpen,
openDrawer,
closeDrawer,
- setPosition, // 함수를 반환 객체에 추가
+ setPosition,
stopPoints,
};
};
diff --git "a/fe/src/app/event-maps/[id]/load-mappin/forms/links/\bcomponents/BottomSheet.tsx" "b/fe/src/app/event-maps/[id]/load-mappin/forms/links/\bcomponents/BottomSheet.tsx"
index 18dca90..eefb284 100644
--- "a/fe/src/app/event-maps/[id]/load-mappin/forms/links/\bcomponents/BottomSheet.tsx"
+++ "b/fe/src/app/event-maps/[id]/load-mappin/forms/links/\bcomponents/BottomSheet.tsx"
@@ -18,19 +18,16 @@ export default function BottomSheet() {
return (
- {/* 상단 바 */}
- {/* 바텀 시트 내용 */}
- {/* Title and Close Button */}
네이버 지도에서 원하는 곳을
@@ -51,20 +48,17 @@ export default function BottomSheet() {
- {/* Description */}
북마크 모음을 붙여넣으면 여러 곳을
한 번에 공유 가능!
- {/* Note */}
*
맘에 쏙 든 가게 하나만 공유도 가능해요
- {/* Inner Rectangle with GIF */}
- {/* 16px Spacing at the Bottom */}
diff --git "a/fe/src/app/event-maps/[id]/load-mappin/forms/links/\bcomponents/CheckBox.tsx" "b/fe/src/app/event-maps/[id]/load-mappin/forms/links/\bcomponents/CheckBox.tsx"
index 719abcb..0137077 100644
--- "a/fe/src/app/event-maps/[id]/load-mappin/forms/links/\bcomponents/CheckBox.tsx"
+++ "b/fe/src/app/event-maps/[id]/load-mappin/forms/links/\bcomponents/CheckBox.tsx"
@@ -16,8 +16,8 @@ function CheckBox({ isChecked, onChange }: CheckBoxProps) {
isChecked ? "border-[#B8B8B8]" : "border-[#e4e4e4]"
} flex items-center justify-center`}
onClick={onChange}
- role="checkbox" // 명시적으로 checkbox 역할 부여
- aria-checked={isChecked} // aria-checked 속성 유지
+ role="checkbox"
+ aria-checked={isChecked}
aria-label="체크박스"
>
{isChecked && (
diff --git a/fe/src/app/event-maps/[id]/load-mappin/forms/links/page.tsx b/fe/src/app/event-maps/[id]/load-mappin/forms/links/page.tsx
index c4459b1..1edd679 100644
--- a/fe/src/app/event-maps/[id]/load-mappin/forms/links/page.tsx
+++ b/fe/src/app/event-maps/[id]/load-mappin/forms/links/page.tsx
@@ -1,7 +1,7 @@
"use client";
import React, { useState, useEffect } from "react";
-import { useRouter, useParams } from "next/navigation"; // Correct order
+import { useRouter, useParams } from "next/navigation";
import Navigation from "@/app/components/common/Navigation";
import Button from "@/app/components/common/Button";
import LinkField from "./components/LinkField";
@@ -82,10 +82,15 @@ export default function LinksPage() {
return (
-
- {/* Scrollable Content */}
-
-
+ {/* 내비게이션 바 */}
+
+
+
+
+ {/* 메인 컨텐츠 */}
+
+ {/* 타이틀 영역 */}
+
마음에 쏙 든 공간을 불러와요
@@ -93,14 +98,12 @@ export default function LinksPage() {
- {(isFocused || value) && ( // 입력 활성화 시만 메시지 표시
+ {(isFocused || value) && (
([]);
const [inputKeys, setInputKeys] = useState
([]);
- // 초기화 시 고유한 key 생성
useEffect(() => {
setInputKeys((prevKeys) =>
value.length === prevKeys.length ? prevKeys : value.map(() => nanoid())
@@ -87,7 +86,7 @@ export default function PinField({ value, onChange }: PinFieldProps) {
{value.map((digit, index) => (
(null);
- // 로컬 스토리지를 초기화하고 이름 입력 필드에 포커스 설정
useEffect(() => {
localStorage.removeItem("userName");
localStorage.removeItem("userPin");
setName("");
setPin(["", "", "", ""]);
- // 이름 입력 필드에 포커스 설정
nameInputRef.current?.focus();
}, []);
- // PIN 입력 완료 여부 확인
const isPinComplete = pin.every((digit) => digit !== "");
- // 이름 입력 필드의 포커스가 해제될 때 입력 완료 여부 설정
const handleNameBlur = () => {
if (name.trim() !== "") {
setIsNameInputComplete(true);
}
};
- // 이름과 PIN이 모두 완성되었는지 확인하고 페이지 이동
useEffect(() => {
if (isNameInputComplete && isPinComplete) {
localStorage.setItem("userName", name);
@@ -65,7 +60,7 @@ export default function NamePinPage() {
value={name}
onChange={setName}
inputRef={nameInputRef}
- onBlur={handleNameBlur} // 포커스 해제 시 호출
+ onBlur={handleNameBlur}
/>
diff --git a/fe/src/app/event-maps/[id]/load-mappin/forms/tooltip/page.tsx b/fe/src/app/event-maps/[id]/load-mappin/forms/tooltip/page.tsx
index cb9804d..6b48e40 100644
--- a/fe/src/app/event-maps/[id]/load-mappin/forms/tooltip/page.tsx
+++ b/fe/src/app/event-maps/[id]/load-mappin/forms/tooltip/page.tsx
@@ -67,8 +67,6 @@ export default function ToolTipPage() {
{...handlers}
>
-
- {/* Title Section */}
이렇게 공유 버튼이 안 보이나요?
@@ -76,8 +74,6 @@ export default function ToolTipPage() {
이렇게 하면 해결 완
-
- {/* Slide Content */}
{slides[currentSlide].step && (
@@ -107,8 +103,6 @@ export default function ToolTipPage() {
/>
-
- {/* Slide Indicators */}
{slides.map((slide) => (
))}
-
- {/* Button Section */}