[{"data":1,"prerenderedAt":639},["ShallowReactive",2],{"doc:\u002Fhistory\u002Fhistory.20260518":3},{"id":4,"title":5,"body":6,"description":619,"extension":632,"meta":633,"navigation":634,"path":635,"seo":636,"stem":637,"__hash__":638},"docs\u002Fhistory\u002Fhistory.20260518.md","2026-05-18 — 디자인 시스템 전면 피벗 (Relay-inspired)",{"type":7,"value":8,"toc":618},"minimark",[9,13,18,44,47,51,89,93,174,178,227,231,321,325,394,398,443,445,449,568,572],[10,11,5],"h1",{"id":12},"_2026-05-18-디자인-시스템-전면-피벗-relay-inspired",[14,15,17],"h2",{"id":16},"한-줄-요약","한 줄 요약",[19,20,21,22,26,27,31,32,35,36,39,40,43],"p",{},"malgn-notifications 시안 기반 디자인(indigo\u002Fsky\u002FNoto Sans KR, 1200px)을 폐기하고, ",[23,24,25],"code",{},"design_handoff_malgn_noti"," 핸드오프의 ",[28,29,30],"strong",{},"Relay-inspired Design System v1.0","(ink 무채색 + 단일 그린 액센트 ",[23,33,34],{},"#00DC82",", Inter\u002FJetBrains Mono\u002FPretendard, 1px hairline, 저밀도)로 ",[28,37,38],{},"전면 교체",". 토큰→셸→발송 전 채널까지 적용하고 ",[23,41,42],{},"design-system-pivot"," 브랜치로 푸시.",[45,46],"hr",{},[14,48,50],{"id":49},"_1-결정-디자인-정본-전환","1. 결정 — 디자인 정본 전환",[52,53,54,61,67,78],"ul",{},[55,56,57,58,60],"li",{},"사용자가 ",[23,59,25],{}," 핸드오프(README\u002FDESIGN_GUIDE\u002Fmain.css\u002Fcomponents\u002Fpages, 13화면 hifi) 제공.",[55,62,63,66],{},[28,64,65],{},"핵심 충돌",": 핸드오프가 CLAUDE.md의 \"시안 = 단일 정본(SoT)\" 규정과 정면 충돌. 비가역·대규모 변경이라 방향 확인.",[55,68,69,70,73,74,77],{},"사용자 결정: ",[28,71,72],{},"전면 피벗 — 신규를 정본으로"," + ",[28,75,76],{},"토큰 먼저 → 체크포인트"," 단계 진행.",[55,79,80,81,84,85,88],{},"시안은 이제 ",[28,82,83],{},"IA(페이지 목록\u002F라우트)만"," 참조, 디자인 언어 정본은 ",[23,86,87],{},"doc\u002FDESIGN.md",".",[14,90,92],{"id":91},"_2-phase-1-토큰-폰트-문서","2. Phase 1 — 토큰 · 폰트 · 문서",[52,94,95,121,146,152,157,163],{},[55,96,97,100,101,104,105,108,109,112,113,116,117,120],{},[23,98,99],{},"app\u002Fassets\u002Fcss\u002Fmain.css",": ink 11단 + accent + semantic 토큰, ",[23,102,103],{},"@theme","(폰트·accent), 핸드오프 컴포넌트 CSS 이식, 구 토큰 backward-compat 별칭(",[23,106,107],{},"--gray-*","→ink로 미적용 화면 색 자동 이행), ",[23,110,111],{},"prefers-reduced-motion",". ",[28,114,115],{},"Tailwind v4 \u002F Nuxt UI v3 통합 유지","(",[23,118,119],{},"@nuxtjs\u002Ftailwindcss"," 미설치 원칙 준수).",[55,122,123,126,127,130,131,134,135,138,139,130,142,145],{},[23,124,125],{},"app\u002Fapp.config.ts",": Nuxt UI ",[23,128,129],{},"primary","\u002F",[23,132,133],{},"neutral"," = ",[23,136,137],{},"zinc",". 그린은 절제 사용 원칙상 ",[23,140,141],{},".btn-accent",[23,143,144],{},"bg-accent","로 명시 적용.",[55,147,148,151],{},[23,149,150],{},"nuxt.config.ts",": Noto Sans KR → Inter + JetBrains Mono + Instrument Serif + Pretendard.",[55,153,154,156],{},[23,155,87],{},": 909줄 시안 가이드 → Relay v1.0 정본으로 전면 재작성.",[55,158,159,162],{},[23,160,161],{},"CLAUDE.md",": 시안=SoT 서술 수정(IA 한정), §2 폰트·디자인시스템 갱신.",[55,164,165,166,169,170,173],{},"사고: CSS 주석 내 ",[23,167,168],{},"*\u002F"," 시퀀스(",[23,171,172],{},"--gray-*\u002F--primary-*",")가 주석 조기 종료 → PostCSS 파싱 깨짐, 즉시 수정.",[14,175,177],{"id":176},"_3-phase-2a-셸-홈","3. Phase 2a — 셸 + 홈",[52,179,180,198,204,214,220],{},[55,181,182,185,186,189,190,193,194,197],{},[23,183,184],{},"AppGnb.vue",": 2단 GNB → ",[28,187,188],{},"56px 단일 토pbar","(zap 로고 박스, 호버 드롭다운, ",[23,191,192],{},".pill-*"," 우측 액션, 모바일 ",[23,195,196],{},".drawer-*"," USlideover). 프로젝트 실 라우트 메뉴 유지.",[55,199,200,203],{},[23,201,202],{},"AppFooter.vue",": 검정 풀블리드 → 화이트 1px hairline.",[55,205,206,209,210,213],{},[23,207,208],{},"layouts\u002Fdefault.vue","·",[23,211,212],{},"auth.vue"," 신규 구조.",[55,215,216,219],{},[23,217,218],{},"pages\u002Fhome.vue",": KPI 4-stat, AI 일일 요약 카드(ink-900+그린 Sparkles), 6채널 row, 다크 크레딧 카드, 최근 발송 테이블. 아이콘 lucide 매핑.",[55,221,222,223,226],{},"제품명은 핸드오프 \"맑은 노티\" 대신 ",[28,224,225],{},"프로젝트 정본 \"맑은 메시징\""," 유지(시각만 채택).",[14,228,230],{"id":229},"_4-phase-2b-1-발송-공용-컴포넌트-sms-레퍼런스","4. Phase 2b-1 — 발송 공용 컴포넌트 + SMS 레퍼런스",[52,232,233,258,298,307],{},[55,234,235,236,130,239,130,242,130,245,130,248,130,251,254,255,88],{},"공용 프리미티브 신규: ",[23,237,238],{},"AppModal",[23,240,241],{},"AppBadge",[23,243,244],{},"AppFormRow",[23,246,247],{},"AppRadioGroup",[23,249,250],{},"AppByteCounter",[23,252,253],{},"AppEmptyState",", ",[23,256,257],{},"app\u002Futils\u002FbyteLen.ts",[55,259,260,261,130,264,130,267,130,270,130,273,130,276,130,279,282,283,130,286,130,289,282,292,130,295,88],{},"발송 도메인 재작업: ",[23,262,263],{},"AppSendFormCard",[23,265,266],{},"AppSendActionsBar",[23,268,269],{},"AppSendOptionsCard",[23,271,272],{},"AppConfirmDialog",[23,274,275],{},"AppSendConfirmDialog",[23,277,278],{},"AppPhonePreview",[23,280,281],{},"AppRecipientCard","(신규)\u002F",[23,284,285],{},"AppAddressBookDialog",[23,287,288],{},"AppRecipientFormDialog",[23,290,291],{},"AppSmsTemplateDialog",[23,293,294],{},"AppAdNoticeSms080Dialog",[23,296,297],{},"AppAIRewriteDialog",[55,299,300,303,304,88],{},[23,301,302],{},"pages\u002Fsend\u002Fsms.vue",": 5-카드 골격(발신→수신자→메시지+iMessage 프리뷰→발송옵션) + 7종 다이얼로그 + 템플릿 잠금\u002F광고 080\u002FAI\u002F예약\u002F비용계산. 토스트는 Nuxt UI ",[23,305,306],{},"useToast()",[55,308,309,312,313,316,317,320],{},[23,310,311],{},"app\u002Ftypes\u002Frecipient.ts"," 분리 — SFC ",[23,314,315],{},"\u003Cscript setup>","은 ",[23,318,319],{},"export"," 불가 → 타입 별도 모듈.",[14,322,324],{"id":323},"_5-phase-2b-2-알림톡rcs이메일pushflow","5. Phase 2b-2 — 알림톡\u002FRCS\u002F이메일\u002FPUSH\u002FFlow",[52,326,327,353,365,388],{},[55,328,329,330,333,334,130,337,130,340,254,343,254,346,254,349,352],{},"채널 프리뷰 신규: ",[23,331,332],{},"AppKakaoPreview","(변수 pill)\u002F",[23,335,336],{},"AppRcsPreview",[23,338,339],{},"AppEmailPreview",[23,341,342],{},"AppPushPreview",[23,344,345],{},"AppSegmented",[23,347,348],{},"AppKakaoTemplateDialog",[23,350,351],{},"AppTemplateVariableTextarea","(변수 영역만 편집).",[55,354,355,357,358,130,361,364],{},[23,356,281],{},"에 ",[23,359,360],{},"locked",[23,362,363],{},"lockedHint"," prop 추가(알림톡 점진적 disclosure).",[55,366,367,368,371,372,375,376,379,380,383,384,387],{},"페이지 재작업: ",[23,369,370],{},"kakao","(disclosure)\u002F",[23,373,374],{},"rcs","(3-단 select+버튼빌더)\u002F",[23,377,378],{},"email","(HTML+첨부)\u002F",[23,381,382],{},"push","(segmented+토큰)\u002F",[23,385,386],{},"flow","(노드 시퀀스).",[55,389,390,393],{},[23,391,392],{},"app\u002Ftypes\u002Ftemplate.ts"," 분리(KakaoTpl).",[14,395,397],{"id":396},"_6-git-푸시","6. Git 푸시",[52,399,400,409,416,434],{},[55,401,402,405,406,408],{},[23,403,404],{},"main","이 기본 브랜치 → ",[23,407,42],{}," 브랜치 분기 후 푸시.",[55,410,411,412,415],{},"커밋 ",[23,413,414],{},"a1b4993"," — 44개 파일, +5547 \u002F -4393.",[55,417,418,419,209,422,209,424,209,426,112,428],{},"범위: ",[23,420,421],{},"app\u002F",[23,423,161],{},[23,425,87],{},[23,427,150],{},[28,429,430,433],{},[23,431,432],{},"doc\u002Fhistory\u002F","는 무관·기존 untracked이라 제외.",[55,435,436,437],{},"PR 링크: ",[438,439,440],"a",{"href":440,"rel":441},"https:\u002F\u002Fgithub.com\u002Fmalgnsoft\u002Fmalgn-noti\u002Fpull\u002Fnew\u002Fdesign-system-pivot",[442],"nofollow",[45,444],{},[14,446,448],{"id":447},"산출물-당일","산출물 (당일)",[52,450,451,460,469,500,531,543,551,561],{},[55,452,453,454,254,456,254,458],{},"토큰\u002F설정: ",[23,455,99],{},[23,457,125],{},[23,459,150],{},[55,461,462,463,465,466,468],{},"문서: ",[23,464,87],{},"(재작성), ",[23,467,161],{},"(SoT 수정), 이 history 파일",[55,470,471,472,130,474,130,476,130,478,130,480,130,482,130,484,130,486,130,488,130,490,130,492,130,494,130,496,130,498],{},"신규 컴포넌트 14: ",[23,473,238],{},[23,475,241],{},[23,477,244],{},[23,479,247],{},[23,481,250],{},[23,483,253],{},[23,485,281],{},[23,487,291],{},[23,489,332],{},[23,491,336],{},[23,493,339],{},[23,495,342],{},[23,497,345],{},[23,499,348],{},[55,501,502,503,130,506,130,509,130,511,130,513,130,515,130,517,130,519,130,521,130,523,130,525,130,527,130,529],{},"재작업: ",[23,504,505],{},"AppGnb",[23,507,508],{},"AppFooter",[23,510,263],{},[23,512,266],{},[23,514,269],{},[23,516,272],{},[23,518,275],{},[23,520,278],{},[23,522,285],{},[23,524,288],{},[23,526,294],{},[23,528,297],{},[23,530,351],{},[55,532,533,534,254,537,254,540],{},"페이지: ",[23,535,536],{},"home",[23,538,539],{},"send\u002F{sms,kakao,rcs,email,push,flow}",[23,541,542],{},"layouts\u002F{default,auth}",[55,544,545,546,254,549],{},"타입\u002F유틸: ",[23,547,548],{},"app\u002Ftypes\u002F{recipient,template}.ts",[23,550,257],{},[55,552,553,554,556,557,560],{},"브랜치 ",[23,555,42],{}," (",[23,558,559],{},"origin"," 푸시 완료)",[55,562,563,564,567],{},"검증: 전 단계 ",[23,565,566],{},"pnpm dev"," 체크포인트 통과 — 컴파일\u002F하이드레이션\u002FVue 경고 0",[14,569,571],{"id":570},"다음-단계-알려진-한계","다음 단계 \u002F 알려진 한계",[52,573,574,596,603,611],{},[55,575,576,579,580],{},[28,577,578],{},"Phase 2b-3 남음",": 이력·통계·주소록·발신정보·메시지관리·캠페인·충전·인증 페이지.\n",[52,581,582,589],{},[55,583,584,585,588],{},"핸드오프 ",[23,586,587],{},"other-pages.jsx","에 발송조회\u002F통계\u002F주소록\u002F충전\u002F로그인\u002F회원가입 시안 존재.",[55,590,591,592,595],{},"발신정보·메시지관리·캠페인 등은 ",[28,593,594],{},"핸드오프에 시안 없음"," → 별도 협의 필요.",[55,597,598,599,602],{},"미적용 화면은 backward-compat 별칭으로 ",[28,600,601],{},"색만"," 이행된 상태(간격·폰트·형태는 구 시안).",[55,604,605,607,608,610],{},[23,606,42],{}," → ",[23,609,404],{}," 머지\u002FPR 미생성 (사용자 결정 대기).",[55,612,613,614,617],{},"형제 레포(",[23,615,616],{},"malgn-noti-admin",")는 별도 디자인 가이드 필요(공용 코어\u002F사용자단 분리 논의 보류 — 핸드오프가 사용자단 한정).",{"title":619,"searchDepth":620,"depth":620,"links":621},"",3,[622,624,625,626,627,628,629,630,631],{"id":16,"depth":623,"text":17},2,{"id":49,"depth":623,"text":50},{"id":91,"depth":623,"text":92},{"id":176,"depth":623,"text":177},{"id":229,"depth":623,"text":230},{"id":323,"depth":623,"text":324},{"id":396,"depth":623,"text":397},{"id":447,"depth":623,"text":448},{"id":570,"depth":623,"text":571},"md",{},true,"\u002Fhistory\u002Fhistory.20260518",{"title":5,"description":619},"history\u002Fhistory.20260518","mMc9AjM3FD__p9c9NYC8IbPnxlVLkMMUtWsOtoDc3eE",1780643216574]