From 751b34c39f7e9151e640dcf6da501e3b3a2d041e Mon Sep 17 00:00:00 2001 From: corpi Date: Fri, 13 Feb 2026 11:37:18 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=84=B8=EC=85=98=20=EC=A7=84=EC=9E=85?= =?UTF-8?q?=20=EC=A0=84=20=EB=AA=A9=ED=91=9C=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/boarding/page.tsx | 89 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/app/boarding/page.tsx diff --git a/src/app/boarding/page.tsx b/src/app/boarding/page.tsx new file mode 100644 index 0000000..323b764 --- /dev/null +++ b/src/app/boarding/page.tsx @@ -0,0 +1,89 @@ +'use client'; + +import { useState, Suspense } from 'react'; +import { useRouter, useSearchParams } from 'next/navigation'; +import { ROUTES } from '@/lib/constants'; +import { saveCurrentVoyage } from '@/lib/store'; +import { Voyage } from '@/types'; + +function BoardingContent() { + const router = useRouter(); + const searchParams = useSearchParams(); + const routeId = searchParams.get('routeId'); + const route = ROUTES.find(r => r.id === routeId) || ROUTES[0]; + + const [mission, setMission] = useState(''); + const [notes, setNotes] = useState(''); + + const handleDocking = () => { + if (!mission.trim()) return; + + const newVoyage: Voyage = { + id: crypto.randomUUID(), + routeId: route.id, + routeName: route.name, + durationMinutes: route.durationMinutes, + startedAt: Date.now(), + status: 'in_progress', + missionText: mission, + notes: notes, + }; + + saveCurrentVoyage(newVoyage); + router.push('/flight'); + }; + + return ( +
+
+

Boarding Check

+

{route.name} 항로 탑승

+
+ +
+
+ + setMission(e.target.value)} + placeholder="예: 서론 3문단 완성하기" + className="w-full bg-slate-900/50 border-b-2 border-slate-700 focus:border-indigo-500 px-0 py-3 text-lg outline-none transition-colors placeholder:text-slate-600" + autoFocus + /> +
+ +
+ + setNotes(e.target.value)} + placeholder="오늘의 컨디션이나 제약사항" + className="w-full bg-transparent border-b border-slate-800 focus:border-slate-500 px-0 py-2 text-base outline-none transition-colors placeholder:text-slate-700 text-slate-300" + /> +
+
+ + +
+ ); +} + +export default function BoardingPage() { + return ( + Loading...}> + + + ); +}