Files
jaengseung-made/app/gyeol/components/Q1Step.tsx
gahusb 27b3f7948e feat(gyeol): Q1Step (드롭다운) + Q2Step (라디오 5)
- Q1: 나이대 + 상황 두 드롭다운, 둘 다 선택 시 활성
- Q2: 자각 빈도 5 라디오, 보라 활성 스타일
- 라디오 패턴이 이후 Q4/Q5에서 재사용됨

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 05:24:58 +09:00

63 lines
2.0 KiB
TypeScript

'use client';
import { useState } from 'react';
import { AGE_RANGES, STATUSES } from '@/lib/survey/questions';
import type { SurveyResponse } from '@/lib/survey/types';
import QuestionLayout from './QuestionLayout';
interface Props {
initial: Partial<SurveyResponse>;
onPrev: () => void;
onNext: (partial: Partial<SurveyResponse>) => void;
}
export default function Q1Step({ initial, onPrev, onNext }: Props) {
const [age, setAge] = useState(initial.age_range ?? '');
const [status, setStatus] = useState(initial.status ?? '');
const valid = age && status;
return (
<QuestionLayout
step="q1"
onPrev={onPrev}
onNext={() => onNext({ age_range: age, status })}
nextDisabled={!valid}
>
<div className="space-y-4">
<div>
<label className="block text-xs text-white/60 mb-2 font-mono tracking-widest uppercase">
</label>
<select
value={age}
onChange={(e) => setAge(e.target.value)}
className="w-full px-4 py-3 rounded-xl bg-white/[0.04] border border-white/15 text-white focus:border-white/40 focus:outline-none"
>
<option value="" disabled></option>
{AGE_RANGES.map((a) => (
<option key={a} value={a} className="bg-black">{a}</option>
))}
</select>
</div>
<div>
<label className="block text-xs text-white/60 mb-2 font-mono tracking-widest uppercase">
</label>
<select
value={status}
onChange={(e) => setStatus(e.target.value)}
className="w-full px-4 py-3 rounded-xl bg-white/[0.04] border border-white/15 text-white focus:border-white/40 focus:outline-none"
>
<option value="" disabled></option>
{STATUSES.map((s) => (
<option key={s} value={s} className="bg-black">{s}</option>
))}
</select>
</div>
</div>
</QuestionLayout>
);
}