[Designer] #342 UX round 2 — chat 빈 상태 + 한국식 날짜 + 표현 방식

남은 P1/P2 3건.

- ChatScreen 빈 상태: 아이콘 + 한 줄 설명 + 예시 prompt 4개
  (tap → _textCtrl 자동 채움, 자동 send X).
- CheckIn 날짜: '2026-06-15' raw → '6월 15일 (월)' 한국식.
  DB 저장은 _ymd 유지.
- HabitCreate '프레임 레벨' → '표현 방식' + helperText.
  아이템: '조건부 행동 (예: 아침에 햇빛 받기)' / '정체성 (예: 나는 일찍 자는 사람)'.
- 설계서 #342 README — D 섹션 + AC-D1/D2/D3 추가.
- CHANGELOG v0.4.2 UX round 2 블록.

167 tests passed, analyze clean.

Refs #342
This commit is contained in:
2026-06-15 15:28:03 +09:00
parent e81f3e44a4
commit c18dca1def
5 changed files with 116 additions and 24 deletions

View File

@@ -104,11 +104,16 @@ class _HabitCreateScreenState extends ConsumerState<HabitCreateScreen> {
DropdownButtonFormField<FrameLevel>(
initialValue: _level,
items: const [
DropdownMenuItem(value: FrameLevel.l2, child: Text('L2 · 조건부 긍정')),
DropdownMenuItem(value: FrameLevel.l3, child: Text('L3 · 정체성')),
DropdownMenuItem(
value: FrameLevel.l2, child: Text('조건부 행동 (예: 아침에 햇빛 받기)')),
DropdownMenuItem(
value: FrameLevel.l3, child: Text('정체성 (예: 나는 일찍 자는 사람)')),
],
onChanged: (v) => setState(() => _level = v ?? FrameLevel.l2),
decoration: const InputDecoration(labelText: '프레임 레벨'),
decoration: const InputDecoration(
labelText: '표현 방식',
helperText: '문구를 어떻게 적을지 — 행동 위주 vs 정체성 위주',
),
),
const SizedBox(height: 16),
TextFormField(