From 27e77add6539d3c767e7258bbd14e2f7e8f20e83 Mon Sep 17 00:00:00 2001 From: Haewon Kam Date: Thu, 10 Sep 2026 16:10:29 +0900 Subject: [PATCH] =?UTF-8?q?design(supporters):=20=ED=9A=8C=EB=B3=B5=20?= =?UTF-8?q?=EC=9D=BC=EC=A0=95=20=ED=94=8C=EB=9E=98=EB=84=88=EB=A5=BC=20?= =?UTF-8?q?=ED=99=88=C2=B7=EC=98=81=EC=83=81=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EC=99=80=20=EA=B0=99=EC=9D=80=20=EC=84=B9=EC=85=98=20=EB=A6=AC?= =?UTF-8?q?=EB=93=AC=EC=9C=BC=EB=A1=9C=20=EC=9E=AC=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 다크 히어로(세리프 그라디언트 제목, 언어 알약, 글래스 통계 4장) → 틴트(Step 1~3 카드 그리드) → 다크(핵심 날짜 6개 글래스 통계) → 라이트(체류 확인·회복 규칙·외출 단계 카드) → 틴트(타임라인 흰 카드) → 다크(숙소·항공·상담·저장 카드) - 데이터 타일의 웜 그라디언트 제거(가드레일: CTA 카드 한 장에만). 전역 .kpi 규칙과 충돌하던 클래스명 교체 - 영문 세리프 제목 + 한글 부제로 위계, 날짜·박 수는 Playfair 숫자 - 빈 상태(시술·날짜 미선택) 다크 섹션 추가 Co-Authored-By: Claude Fable 5.1 --- supporters/src/components/Planner.astro | 204 ++++++++++++++---------- supporters/src/data/planStrings.json | 36 ++++- supporters/src/styles/plan.css | 141 +++++++++------- 3 files changed, 236 insertions(+), 145 deletions(-) diff --git a/supporters/src/components/Planner.astro b/supporters/src/components/Planner.astro index ae89916..04a99c1 100644 --- a/supporters/src/components/Planner.astro +++ b/supporters/src/components/Planner.astro @@ -1,24 +1,41 @@ --- // 회복기 스케줄러 본문 (설계 v0.2 §13). /plan(한국어)과 /en/plan(영어)이 같은 컴포넌트를 lang 만 바꿔 쓴다. +// 구성은 홈·영상 페이지와 같은 섹션 리듬이다: 다크 히어로(글래스 통계) → 틴트(입력 카드) → 다크(핵심 날짜) → 라이트(확인·규칙) → 틴트(타임라인) → 다크(예약). // 건강정보(시술·수술일)는 서버로 보내지 않는다. 상태는 URL 해시로만 공유하고, 언어 전환은 해시를 들고 다른 언어 페이지로 이동한다. import '../styles/plan.css'; import strings from '../data/planStrings.json'; +import P from '../data/procedures.json'; +import PL from '../data/places.json'; interface Props { lang: 'ko' | 'en' } const { lang } = Astro.props; const t = strings[lang]; +const nProcs = P.procedures.length; +const nPlaces = PL.places.filter((x) => x.category !== 'hotel').length; +const nHotels = PL.places.filter((x) => x.category === 'hotel').length; --- -
-
- -
{t.eyebrow}
-

{t.h_hero}

-

{t.title} {t.lede}

-
-
- +
+
+
+
{t.eyebrow}
+

{t.h_hero}

+

{t.title} {t.lede}

+
-
-
+
+
{nProcs}{t.stat_procs}{t.stat_procs_d}
+
{nPlaces}{t.stat_places}{t.stat_places_d}
+
{nHotels}{t.stat_hotels}{t.stat_hotels_d}
+
0{t.stat_privacy}{t.stat_privacy_d}
+
+ + +
+
+
+