상태 매트릭스
핵심 컴포넌트마다 필요한 상태만 골라 지정합니다.
- default · hover · pressed · selected · focus-visible
- disabled · read-only · loading · skeleton
- empty · zero · validation · error · success · offline
- 저장 중 이탈, 실패 후 retry, 낙관적 반영 후 rollback
Vibe Coding Starter · UI Pattern Glossary
초보자는 아래 3분 가이드로 패턴을 고른 뒤, 디자인 요청 명세 → 상태·반응형·접근성 QA → 같은 주제 프롬프트 순서로 사용하면 됩니다.
전체를 읽지 마세요. 내 상황에 맞는 카드 하나만 눌러 명령어로 이동하면 됩니다.
아래 질문 카드 중 “지금 만들려는 것”과 가장 비슷한 것을 고릅니다.
사용자·목표·상태·반응형 등 디자인 요청 명세 10칸을 필요한 만큼 채웁니다.
선택한 패턴의 복사 버튼을 누릅니다. 영어 패턴명은 그대로 두세요.
[기능명] 같은 부분만 실제 이름으로 바꾼 뒤 AI 채팅에 붙여넣습니다.
잠깐 고치고 바로 돌아올래요
→ Modal Bottom Sheet
프로필 편집, 필터, 짧은 설정. 닫으면 원래 화면 그대로.
명령어 1번으로 이동 →삭제/로그아웃처럼 한 번 확인할래요
→ Centered Modal Dialog
짧은 확인창. 화면 중앙에 뜨고 예/아니오만 고르게 함.
명령어 2번으로 이동 →메뉴·필터를 옆에서 열고 싶어요
→ Navigation Drawer / Side Sheet
왼쪽/오른쪽에서 밀려 나오는 패널. 목록형 메뉴에 적합.
명령어 3번으로 이동 →버튼 옆에 작은 메뉴만 뜰래요
→ Popover / Menu
⋯ 더보기, 정렬, 짧은 옵션. 화면 전체를 덮지 않음.
명령어 4번으로 이동 →저장됐어요 / 실패했어요 알림만
→ Toast / Snackbar / Banner
화면을 막지 않는 알림. 잠깐 뜨거나, Undo 버튼이 있을 수 있음.
명령어 5번으로 이동 →디자인+코딩을 한 번에 맡길래요
→ Full request (스펙 8칸)
패턴을 이미 골랐고, 디테일까지 한 번에 요청할 때.
명령어 6번으로 이동 →대괄호 채우기가 어렵다면 → 용어 섹션 안 작업 예시 (이미지 기준 완성본)을 복사하세요.
패턴 이름만 말하지 말고 사용자 목표부터 완료 기준까지 지정하면 결과가 훨씬 안정적입니다. 모르는 항목은 비워 두고 AI에게 대안을 제안하게 하세요.
같아 보이는 UI라도 사용자의 과업 길이와 돌아갈 위치가 다릅니다.
| Pattern | Use when | Avoid when |
|---|---|---|
| Page | 내용이 길고 탐색·공유·직접 진입이 필요함 | 잠깐 고치고 즉시 원래 화면으로 돌아오는 보조 작업 |
| Bottom Sheet | 모바일에서 짧은 선택·편집을 현재 맥락 위에서 처리함 | 긴 폼, 깊은 탐색, 키보드가 화면 대부분을 가리는 작업 |
| Dialog | 삭제·로그아웃처럼 짧고 명확한 결정이 필요함 | 많은 설명, 복수 단계, 탐색이 필요한 콘텐츠 |
| Drawer / Side Sheet | 메뉴·필터·속성을 옆에서 보조적으로 조정함 | 모바일의 핵심 완료 과업을 좁은 패널에 넣는 경우 |
| Popover / Menu | 트리거 주변에서 짧은 옵션이나 컨텍스트 액션을 고름 | 필수 결정, 긴 설명, 모바일 전체 폭이 필요한 입력 |
| Toast / Snackbar / Banner | 결과 알림, Undo, 지속 안내를 흐름을 막지 않고 제공함 | 사용자가 반드시 읽고 응답해야 하는 중대한 결정 |
아래 템플릿을 먼저 채운 뒤, 각 용어 섹션의 패턴별 프롬프트를 이어 붙이세요.
[기능명]의 UI/UX를 설계하고 구현해줘. 1. Context · User: [사용자와 사용 상황] 2. Goal · Success: [완료해야 할 일과 성공 상태] 3. Flow · IA: [진입 → 핵심 행동 → 완료/취소 후 이동] 4. Pattern · Modality: [Page/Sheet/Dialog/Drawer/Popover], [modal/non-modal] 5. Content · Data: [실제 제목, 설명, 필드, 목록, 우선순위] 6. Actions · States: [primary/secondary/destructive], default·loading·empty·error·success·disabled 포함 7. Responsive: [mobile/tablet/desktop의 열 수, 순서, 숨김, sticky 규칙] 8. Visual Tokens: [color, type scale, spacing, radius, elevation, density] 9. A11y · Motion: semantic HTML, keyboard path, visible focus, accessible name, reduced motion 10. Constraints · Acceptance: [기술 제약과 하지 않을 것], 각 상태를 검수 가능한 체크리스트로 제시 먼저 화면 구조와 선택 근거를 요약하고, 그다음 구현해줘. 실제 서비스용 문구와 데이터 예시를 사용하고 lorem ipsum은 쓰지 마.
“예쁘게 만들어줘” 다음에 빠지기 쉬운 조건입니다. 디자인과 구현 완료 전에 최소 한 번씩 확인하세요.
핵심 컴포넌트마다 필요한 상태만 골라 지정합니다.
“responsive” 한 단어 대신 바뀌는 규칙을 적습니다.
ARIA 이름보다 먼저 의미 구조와 키보드 흐름을 확인합니다.
실제 문구와 데이터 길이로 레이아웃을 검증합니다.
이미지로 패턴을 익힌 뒤, 같은 주제의 용어 섹션(1~4 · Sheet vs Page · 14) 안에서 프롬프트를 복사하세요.
어디서 들어오는지로 먼저 고르세요. 중앙=Dialog, 하단=Bottom sheet, 측면=Drawer, 버튼 옆=Popover.
시트 요청 시 부품 이름을 같이 쓰면 구현 누락이 줄어듭니다.
화면을 “가로막는 레이어” 계열의 지도. Toast/Snackbar는 모달이 아닙니다.
화면 중앙 카드. 짧고 중요한 결정·확인에 사용.
아래에서 올라옴. 모바일 편집·필터·상세 보조에 강함.
옆에서 밀려 나옴. 메뉴·필터·설정 패널에 적합.
버튼(트리거) 옆에 작게 붙음. 화면 전체를 덮지 않음.
셋 다 “알림”이지만 지속시간과 액션 유무가 다릅니다. 화면을 막지 않습니다(non-modal).
짧게 말하면: Sheet는 “지금 화면 위에 잠깐 덮는 종이”, Page는 “다음 장으로 넘어가는 화면”입니다.
이미지: Sheet vs Page
짧은 보조 작업인지, 독립된 목적 화면인지 먼저 판단하게 하는 프롬프트입니다.
[기능명]을 Sheet로 만들지 Page로 만들지 먼저 판단해줘. 사용자 목표: [사용자가 끝내야 할 일] 콘텐츠 길이와 단계: [짧은 편집/긴 탐색/다단계] 직접 URL 진입·공유 필요: [있음/없음] 완료·취소 후 돌아갈 위치: [현재 화면/이전 목록/새 목적 화면] 현재 맥락 위에서 잠깐 처리하고 돌아오면 modal Sheet를, 독립적인 탐색·공유·긴 작업이면 새 Page를 선택해줘. 선택 근거와 반대 패턴을 쓰지 않는 이유를 3줄 이내로 설명한 뒤 모바일·데스크톱 구조를 제안해줘.
영문 용어·한글 설명·별칭을 모두 검색합니다. 매칭되지 않는 섹션은 숨깁니다.
일치하는 용어가 없습니다. 더 짧은 단어나 영문 패턴명으로 검색해 보세요.
현재 흐름 위에 얹는 레이어와 “뒤를 막는지”에 대한 속성.
| Term | Aliases | Meaning |
|---|---|---|
| Modal | Modal window, Modal dialog | 현재 작업을 가로막고 보통 뒤 조작을 막는 UI |
| Non-modal | Modeless | 떠 있어도 뒤 화면 조작이 가능한 UI |
| Dialog | Dialogue | 정보·선택·입력을 요구하는 대화형 창 |
| Alert | Alert dialog | 짧은 중요 메시지 + 확인 |
| Confirm | Confirmation dialog | 예/아니오형 결정 |
| Prompt | Prompt dialog | 텍스트 입력까지 요구 |
| Lightbox | Media lightbox | 미디어 확대용 어두운 오버레이 |
| Overlay | Layer overlay | 기존 UI 위 레이어 총칭 |
| Scrim | Dimmer, Mask, Curtain | 뒤를 어둡게/흐리게 하는 막 |
| Backdrop | Modal backdrop | 모달/시트 뒤 배경 레이어 |
| Dismissible | — | 바깥 탭·Esc·닫기로 닫을 수 있음 |
| Focus trap | Focus scope | Tab 포커스를 내부에 가둠 |
| Focus restore | — | 닫힌 뒤 트리거로 포커스 복귀 |
| Inert background | inert | 뒤 콘텐츠 비활성 처리 |
| Scroll lock | — | 뒤 페이지 스크롤 잠금 |
| Nested modal | Stacking | 모달/시트를 여러 겹 쌓음 |
삭제/로그아웃 등 결정형
중요한 결정을 짧게 확인하고, 배경 작업은 잠시 막는 패턴입니다.
[기능명]의 [확인할 행동]을 centered modal dialog로 설계하고 구현해줘. - 목적: 사용자가 [결과]를 이해하고 [계속/취소]를 결정 - Content: 명확한 제목, 되돌릴 수 있는지 설명, 필요한 경우 대상 이름 표시 - Layout: content-fit, max-width 440px, scrim, primary/secondary action - Dismiss: [Escape 허용/명시 버튼만], 중요한 destructive 결정은 outside press로 닫지 않음 - States: default, submitting, server error, success 후 닫힘 - A11y: semantic dialog, aria-modal, accessible title/description, open 시 안전한 초기 focus, focus trap, close 후 trigger로 focus restore - Responsive: 모바일에서는 좌우 16px 여백을 유지하고 버튼 라벨이 잘리지 않게 재배치 - Motion: 짧은 fade+scale, prefers-reduced-motion에서는 transform 제거 완료 조건을 체크리스트로 제시하고 실제 서비스 문구를 사용해줘.
이미지: Modal / Dialog
계정 삭제 확인 UI를 centered modal dialog로 만들어줘. 제목은 “계정을 삭제할까요?”, 설명은 “예약 내역과 저장한 여행 정보가 모두 삭제되며 되돌릴 수 없습니다.”로 작성해줘. 취소를 안전한 초기 focus로 두고, 오른쪽에 빨간색 destructive button “계정 삭제”를 배치해줘. 중복 제출을 막는 submitting 상태와 서버 실패 시 dialog 안 inline error를 포함해줘. scrim과 focus trap을 적용하고 배경은 inert 처리해줘. Escape는 취소로 동작하지만 scrim click으로는 닫지 않게 해줘. 닫힌 뒤 원래 삭제 버튼으로 focus를 복원하고 모바일 360px에서는 버튼을 세로로 쌓아줘.
가장자리에서 들어오는 표면형 컨테이너와 측면 패널.
| Term | Meaning |
|---|---|
| Sheet | 가장자리 진입형 표면 컨테이너 총칭 |
| Bottom sheet | 하단에서 올라오는 시트 |
| Top sheet | 상단에서 내려오는 시트 |
| Side sheet | 좌/우 시트 |
| Modal bottom sheet | 뒤를 막는 하단 시트 |
| Persistent bottom sheet | 항상 일부 높이가 남는 하단 시트 |
| Expanding sheet | 접힘→중간→전체로 확장 |
| Action sheet | 행동 선택지 위주 짧은 시트/목록 |
| Form sheet / Page sheet | 폼·페이지형 시트 프레젠테이션 |
| Detent / Snap point | 시트가 멈추는 높이 단계 |
| Peek / Collapsed / Half-expanded / Expanded | 시트 상태명 |
| Drag handle / Grabber | 시트를 끄는 손잡이 |
| Swipe to dismiss | 스와이프로 닫기 |
| Drawer | 측면(또는 하단)에서 밀려 나오는 패널 |
| Navigation drawer | 앱 탐색용 측면 드로어 |
| Temporary / Permanent / Mini drawer | 임시 / 상시 / 아이콘 레일형 |
| Side panel / Inspector / Details pane | 필터·속성·상세 패널 |
| Flyout | 컨트롤에서 펼쳐지는 일시 패널 |
| Split view / Master–detail | 목록+상세 분할 |
프로필/설정 편집처럼 하단 시트 + 저장 액션
현재 화면 맥락을 유지하면서 모바일에서 짧은 선택·편집을 처리합니다.
[기능명]을 modal bottom sheet로 설계하고 구현해줘. - User goal: [짧은 선택/편집을 완료하고 현재 화면으로 복귀] - Anatomy: scrim, drag handle, title, content area, sticky footer의 [취소/저장] - Size: content-fit을 기본으로 하고 콘텐츠가 길면 max-height와 내부 scroll 적용 - Dismiss: [scrim tap/Escape/swipe/닫기 버튼], 변경 내용이 있으면 unsaved changes 확인 - Keyboard: 입력 시 virtual keyboard가 active field와 CTA를 가리지 않게 처리 - States: pristine, dirty, saving, validation error, server error, success - A11y: semantic dialog, accessible title, initial focus, focus trap/restore, background scroll lock - Responsive: 모바일은 bottom sheet, 넓은 화면에서는 [center dialog/side sheet]로 adaptive 전환 - Motion: bottom enter/exit, reduced motion 대응 실제 문구와 데이터로 화면을 채우고 완료 조건을 체크리스트로 제시해줘.
이미지: Bottom Sheet Anatomy / Modal Bottom Sheet
마이 화면의 “프로필 편집”을 modal bottom sheet로 만들어줘. 상단에 drag handle, “프로필 편집” 제목과 닫기 버튼을 두고 이름·소개·여행 관심사 필드를 배치해줘. 하단에는 Cancel과 primary Save를 sticky footer로 제공해줘. 이름은 필수이며 30자 제한과 inline validation을 표시해줘. 초기에는 content-fit, 키보드가 열리면 active field가 보이도록 내부만 scroll해줘. 변경 전에는 swipe/scrim/Escape로 닫을 수 있지만 dirty 상태에서는 “변경사항을 버릴까요?” 확인을 거치게 해줘. saving 중 중복 제출을 막고 성공 후 sheet를 닫은 뒤 마이 화면의 프로필 내용을 즉시 갱신해줘. 데스크톱에서는 max-width 560px center dialog로 adaptive 전환해줘.
필터·메뉴·설정 측면 패널
탐색 메뉴인지, 현재 콘텐츠를 조정하는 필터·속성 패널인지 역할부터 구분합니다.
[기능명]을 [navigation drawer/side sheet]로 설계하고 구현해줘. - 역할: [전역 탐색/현재 목록 필터/상세 속성 편집] - Placement: [left/right], width [320px/400px], content 영역과의 관계 [overlay/push] - Anatomy: header, scrollable body, 선택 상태, footer action - Dismiss: close button, Escape, [outside press 허용 여부] - States: default, selected, disabled, loading, empty, validation/error - Responsive: mobile에서는 modal drawer 또는 full-screen sheet, desktop에서는 temporary/permanent 패턴 중 근거를 제시 - A11y: nav 또는 dialog 의미에 맞는 semantic, visible focus, 논리적 Tab 순서, 열고 닫을 때 focus restore - Scroll: body와 panel의 scroll 책임을 분리하고 이중 스크롤을 피함 사용할 패턴과 반대 패턴을 쓰지 않는 이유를 먼저 설명해줘.
이미지: Navigation Drawer / Side Sheet
주변 장소 목록의 필터를 오른쪽 temporary side sheet로 만들어줘. 필터는 카테고리, 영업 중, 거리 반경, 평점으로 구성하고 상단에 “필터” 제목과 전체 초기화를 배치해줘. 하단 sticky footer에는 현재 결과 수를 포함한 primary CTA “24개 장소 보기”를 제공해줘. 적용 전 임시 선택값과 적용된 필터값을 분리하고 Cancel 시 이전 값으로 복원해줘. 모바일에서는 화면 하단에서 올라오는 full-height modal sheet로 전환하고, 데스크톱에서는 400px side sheet가 목록 위에 overlay되게 해줘. focus trap, Escape, scroll lock, close 후 필터 버튼으로 focus restore를 포함하고 로딩·0건·네트워크 실패 상태도 설계해줘.
트리거 근처에 붙는 작은 레이어와 메뉴.
| Term | Meaning |
|---|---|
| Popover | 트리거 근처의 작은 떠 있는 레이어 |
| Dropdown | 선택지를 펼치는 드롭다운 |
| Select / Combobox / Autocomplete | 폼 선택·입력+제안 |
| Menu / Context menu / Overflow menu | 명령 목록 / 우클릭·롱프레스 / ⋯ 메뉴 |
| Tooltip / Callout | 짧은 설명 / 말풍선형 안내 |
| Anchored overlay / Anchor | 특정 요소에 붙는 오버레이와 기준점 |
| Caret / Arrow | 앵커를 가리키는 꼬리 |
| Flip / Shift / Collision detection | 화면 밖 보정 |
| Portal | 다른 DOM 위치(보통 body)에 렌더 |
버튼 옆 작은 메뉴
트리거 주변에서 짧은 옵션을 제공하며 화면 전체 흐름은 막지 않습니다.
[기능명]을 [트리거]에 anchored된 popover/menu로 설계하고 구현해줘. - Content: [메뉴 항목 3~7개], 아이콘은 의미가 있을 때만 사용 - Position: trigger 기준 [bottom-end], viewport 충돌 시 flip/shift - Interaction: click 또는 keyboard로 열고, outside press/Escape/항목 선택 시 닫기 - Keyboard: Arrow key 이동, Home/End, Enter/Space 선택, 열 때 첫 항목 또는 선택 항목에 focus - Focus: 닫힌 뒤 trigger로 restore, visible focus 제공 - States: default, hover, focus, selected, disabled, destructive, loading - Responsive: 모바일에서 공간이 부족하면 bottom sheet 또는 action sheet로 adaptive 전환 - Layering: portal/top layer와 z-index 책임을 명확히 하고 scroll/resize 시 위치 갱신 Tooltip과 Dialog로 만들지 않는 이유도 짧게 설명해줘.
이미지: Popover / Menu / Tooltip
장소 카드의 “더보기” 아이콘 버튼 옆에 anchored menu를 만들어줘. 메뉴 항목은 “공유”, “목록에 저장”, “문제 신고”이며 구분선 아래 “기록에서 삭제”를 destructive item으로 배치해줘. desktop에서는 trigger의 bottom-end에 220px popover로 열고 viewport 밖으로 나가면 자동 flip해줘. 모바일 480px 이하에서는 같은 액션을 modal action sheet로 전환해줘. 버튼에는 accessible name “장소 옵션 열기”를 제공하고 aria-expanded 상태를 연결해줘. ArrowUp/Down, Home/End, Enter/Space, Escape를 지원하며 닫힌 후 trigger로 focus를 돌려줘. disabled·hover·focus·destructive 상태와 outside press 동작을 포함해줘.
알림·로딩·빈 상태 등 사용자 피드백 UI.
| Term | Meaning |
|---|---|
| Toast | 짧게 나타났다 사라지는 알림 |
| Snackbar | 하단 알림 + 선택적 액션(Undo 등) |
| Banner | 상단/인라인 고정 안내 |
| Inline / Validation message | 필드·흐름 속 메시지 |
| Empty state / Zero state | 데이터 없음 UI |
| Skeleton / Shimmer | 로딩 뼈대/반짝임 |
| Spinner / Progress | 대기·진행 표시 |
| Determinate / Indeterminate | 진행률 알 수 있음/없음 |
| Pull to refresh | 당겨서 새로고침 |
| Optimistic UI | 서버 전 UI 선반영 |
| Undo / Retry | 취소 / 재시도 |
피드백 알림 3종 구분 요청
정보의 중요도, 지속 시간, 사용자 액션 필요 여부로 세 패턴을 구분합니다.
[이벤트]의 결과 피드백을 Toast, Snackbar, Banner 중 적절한 패턴으로 설계하고 구현해줘. - Toast: 액션이 필요 없는 짧은 성공·정보 메시지 - Snackbar: Undo/Retry처럼 짧은 후속 액션이 있는 결과 메시지 - Banner: 사용자가 해결하기 전까지 유지해야 하는 페이지 수준 안내 메시지는 결과와 다음 행동이 분명한 실제 문구로 작성해줘. success·warning·error를 색상만으로 구분하지 말고 아이콘·텍스트를 함께 사용해줘. 동일 메시지 중복, 여러 메시지 queue, 자동 닫힘 중 hover/focus, 화면 확대와 모바일 safe area를 처리해줘. 동적 메시지는 적절한 live region으로 알리고, 사용자가 읽거나 액션하기 전에 사라지지 않게 해줘. 선택 근거와 duration·placement·dismiss·action 규칙을 표로 제시해줘.
이미지: Banner · Snackbar · Toast
즐겨찾기 저장·해제 결과 피드백을 설계해줘. 저장 성공은 “즐겨찾기에 저장했어요” Toast로 4초간 표시하고 액션은 넣지 마. 해제는 되돌릴 수 있으므로 “즐겨찾기에서 삭제했어요” Snackbar와 “실행 취소” 버튼을 제공해줘. 네트워크 실패는 자동으로 사라지는 Toast 대신 목록 상단 inline Banner “변경사항을 저장하지 못했어요”와 “다시 시도” 액션을 사용해줘. 모바일에서는 bottom navigation과 safe area 위에, 데스크톱에서는 우측 하단에 배치해줘. 중복 메시지는 합치고 focus 또는 hover 중에는 자동 닫힘을 멈춰줘. 스크린 리더가 메시지를 한 번만 알리도록 live region 우선순위를 구분해줘.
제스처와 등장/퇴장 모션 관련 용어.
| Term | Meaning |
|---|---|
| Gesture | 스와이프·핀치·롱프레스 등 |
| Tap / Long press / Swipe / Drag / Pan / Pinch | 기본 제스처들 |
| Velocity / Threshold | 속도·인정 기준 |
| Rubber-banding / Overscroll | 끝 저항·오버스크롤 |
| Enter / Exit animation | 등장·퇴장 |
| Easing / Spring / Duration / Stagger | 곡선·탄성·시간·순차 |
| Shared element / Hero / Cross-fade / Parallax | 전환 스타일 |
| Reduced motion | 모션 감소 접근성 대응 |
| Haptics | 촉각 피드백 |
반응형 배치, safe area, 터치 영역 등.
| Term | Meaning |
|---|---|
| Grid / Flex / Stack | 배치 방식 |
| Breakpoint | 레이아웃 분기 폭 |
| Mobile-first / Desktop-first | 설계 시작점 |
| Responsive / Adaptive / Fluid | 반응·전환·유체 레이아웃 |
| Fixed / Sticky / Affix | 고정 위치 |
| Full-bleed / Inset | 가장자리까지 / 안쪽 여백 |
| Safe area / Home indicator / Status bar | 시스템 UI 회피 영역 |
| Viewport / vh / svh / dvh / lvh | 뷰포트와 높이 단위 |
| Touch target / Hit area / Thumb zone | 터치 영역·엄지 존 |
| Above the fold / Content-fit | 첫 화면 / 내용 높이 맞춤 |
자주 같이 등장하는 UI 컨트롤 이름.
| Term | Meaning |
|---|---|
| Button / Icon button / FAB | 버튼·아이콘 버튼·떠 있는 액션 버튼 |
| Chip / Tag / Pill / Badge | 작은 선택·라벨·배지 |
| Avatar / Card / List / Tile | 프로필·카드·목록·타일 |
| Tab / Segmented control | 탭·세그먼트 |
| Toggle·Switch / Checkbox / Radio | 선택 컨트롤 |
| Slider / Stepper / Text field / Text area | 입력 컨트롤 |
| Form / Field group / Fieldset | 폼과 관련 필드 묶음 |
| Label / Helper / Placeholder / Error text | 필드 이름·도움말·예시·오류 문구 |
| Combobox / Autocomplete / Date picker | 추천·자동완성·날짜 선택 |
| Search / Filter / Sort | 검색·필터·정렬 |
| Pagination / Infinite scroll / Carousel | 페이지·무한스크롤·캐러셀 |
| Data table / Bulk action / Selection | 데이터 표·일괄 작업·행 선택 |
| Accordion / Disclosure / Divider | 접기·펼침·구분선 |
색·간격·그림자·타이포 등 디자인 토큰.
| Term | Meaning |
|---|---|
| Design token | 색·간격·타이포 등 변수 |
| Surface / On-surface | 면과 그 위 콘텐츠 색 |
| Elevation / Shadow | 떠 있는 정도 |
| Radius / Border / Opacity / Blur | 형태·테두리·투명·블러 |
| Typography scale / Leading / Tracking | 활자 체계·줄간·자간 |
| Spacing scale / Sizing scale | 간격·컴포넌트 크기 단계 |
| Grid / Gutter / Container / Breakpoint | 열·간격·최대 폭·반응형 분기 |
| Icon size / Stroke / Optical alignment | 아이콘 크기·선·시각 보정 |
| Motion token / Duration / Easing | 모션 시간·가속 곡선 변수 |
| Layer / z-index scale | 기본·sticky·overlay·toast 층 순서 |
| Hierarchy / Contrast / Affordance | 위계·대비·조작 단서 |
| Density (Compact/Comfortable/Spacious) | 여백 밀도 |
| State / Variant / Theme | 상태·변형·테마 |
| Semantic color | success/warning/error/info |
| Dark mode / High contrast / Forced colors | 어두운 테마·고대비·시스템 강제색 |
CTA와 액션 위계, 게이트 표현.
| Term | Meaning |
|---|---|
| CTA | Call To Action |
| Primary / Secondary / Tertiary action | 행동 위계 |
| Destructive action | 삭제·해제 등 위험 행동 |
| Save / Submit / Apply / Cancel / Close | 공통 액션 라벨 |
| Label / Helper / Placeholder / Validation copy | 필드명·도움말·예시·검증 문구 |
| Empty / Error / Success message | 빈·실패·완료 상태 문구 |
| Plain language / Action-first label | 쉬운 문장·동사 중심 버튼명 |
| Soft gate / Hard gate | 약한/강한 진입 장벽 |
| Progressive disclosure | 필요할 때만 단계적으로 노출 |
| Feedback / Latency compensation | 결과 응답·대기 완화 |
| Localization / Truncation / Wrapping | 다국어·말줄임·줄바꿈 |
접근성·키보드·스크린 리더 관련 용어.
| Term | Meaning |
|---|---|
| Semantic HTML / ARIA / Role | 의미 마크업과 역할 |
| aria-modal / aria-label / labelledby / describedby | 모달·이름·설명 연결 |
| Screen reader / Keyboard navigation | 스크린 리더·키보드 조작 |
| Focus order / Visible / Trap / Restore | 포커스 순서·표시·가두기·복귀 |
| Color contrast / Hit target size | 대비·터치 크기 |
| Live region / Announcement | 동적 변화 읽기 |
| Landmark / Alt text / Accessible name | 랜드마크·대체텍스트·접근 이름 |
| Skip link / Bypass block | 반복 영역을 건너뛰는 링크 |
| Zoom / Reflow / Text spacing | 확대·재배치·텍스트 간격 대응 |
| Reduced motion / Forced colors | 모션 축소·시스템 고대비 대응 |
| Error identification / Suggestion | 오류 식별과 수정 방법 안내 |
웹 구현에서 반복되는 HTML/CSS/JS 키워드.
브라우저 네이티브와 관찰자
| <dialog> / showModal() | 네이티브 모달 |
| ::backdrop | dialog 배경 |
| Popover API | popover 오버레이 |
| Top layer | 브라우저 최상위 층 |
| Portal | 프레임워크 포탈 렌더 |
| View Transitions API | 화면/요소 전환 |
| CSS Anchor Positioning | 앵커 기준 배치 |
| Container / Media queries | 반응형 질의 |
| Intersection / Resize Observer | 가시성·크기 관찰 |
구현에서 반복되는 키워드
| position: fixed/absolute/sticky | 위치 지정 |
| stacking context / z-index | 겹침 순서 |
| backdrop-filter | 스크림 블러 |
| overscroll-behavior | 스크롤 연쇄 차단 |
| touch-action | 터치 제스처 제어 |
| env(safe-area-inset-*) | 안전영역 |
| transform / will-change | 모션·합성 힌트 |
| Open state / Trigger / Outside press | 열림 상태·트리거·바깥 클릭 |
| Headless UI / Primitive | 스타일 없는 행동 컴포넌트 |
같은 개념을 플랫폼마다 다르게 부릅니다.
| Concept | Common | Apple-ish | Material-ish |
|---|---|---|---|
| 하단 시트 | Bottom sheet | Sheet | Bottom sheet |
| 모달 창 | Modal, Dialog | Modal, Alert, Sheet | Dialog |
| 측면 패널 | Drawer, Side sheet | Sidebar / Sheet | Navigation drawer, Side sheet |
| 액션 목록 | Action sheet / Menu | Action sheet, Menu | Menus, Bottom sheets |
| 짧은 알림 | Toast | Banner/Alert (역할 상이) | Snackbar |
| 하단 탭 | Bottom navigation | Tab bar | Bottom navigation |
| 떠 있는 버튼 | FAB | 덜 강조 | FAB |
요청 문장을 수식할 때 자주 쓰는 형용사/부사적 용어.
| Term | Meaning |
|---|---|
| Content-fit / Full-height | 내용 높이 / 전체 높이 |
| Centered / Edge-to-edge / Flush / Inset | 중앙 / 풀블리드 / 붙임 / 안쪽 |
| Chromeless / Elevated / Floating / Anchored | 크롬 최소 / 떠 있음 / 앵커 고정 |
| Transient / Persistent / Ephemeral | 일시 / 지속 / 금방 사라짐 |
| Explicit dismiss only / Scrim dismiss | 명시 닫기만 / 배경 탭 닫기 |
| Large · Medium · Small | 크기 프리셋 |
디자인 요청 명세 10칸을 포함한 풀 프롬프트
패턴을 이미 골랐고 디자인 근거부터 구현·검수까지 한 번에 요청할 때 사용합니다.
[기능명]의 UI/UX를 설계하고 실제 동작까지 구현해줘. Context · User: [사용자/기기/사용 상황] Goal · Success: [사용자 목표/완료 상태] Flow · IA: [진입 → 핵심 행동 → 완료·취소 후 이동] Pattern · Modality: [패턴], [modal/non-modal], [선택 근거] Content · Data: [실제 제목·설명·필드·목록·데이터 우선순위] Actions · States: [primary/secondary/destructive], default·loading·empty·error·success·disabled Responsive: [mobile/tablet/desktop의 container·grid·순서·sticky·숨김 규칙] Visual Tokens: [palette/type scale/spacing/radius/elevation/density/icon style] A11y · Motion: semantic HTML, keyboard, focus, accessible name, contrast, target, reduced motion Constraints · Acceptance: [기술/브랜드 제약], [하지 않을 것], 검수 가능한 완료 조건 진행 순서: 1) 사용자 흐름과 패턴 선택 근거 2) 화면 anatomy와 content hierarchy 3) desktop/mobile 상태별 설계 4) 구현 5) 접근성·반응형·edge case 자체 검수 실제 서비스용 한국어 문구와 현실적인 데이터를 사용하고, 핵심 결정은 주석 또는 짧은 설명으로 남겨줘.
이미지: 4대 패턴 비교 + Anatomy
한국 여행지 탐색 서비스의 “장소 필터” UI/UX를 설계하고 실제 동작까지 구현해줘. 사용자는 모바일에서 현재 위치 주변 장소를 빠르게 좁히려는 여행자다. 목록 상단 필터 버튼으로 진입하고 카테고리·거리·영업 중·평점을 고른 뒤 결과 목록으로 돌아오는 것이 목표다. 모바일에서는 full-height modal bottom sheet, 768px 이상에서는 오른쪽 400px temporary side sheet를 사용해줘. 상단은 제목과 초기화, 본문은 scrollable filter groups, 하단은 “24개 장소 보기” sticky CTA다. 적용 전 임시 값과 적용된 값을 분리하고 Cancel 시 원래 값으로 복구해줘. default·selected·disabled·loading·0건·API error 상태를 포함해줘. 360px에서 가로 스크롤이 없어야 하고 virtual keyboard와 safe area가 CTA를 가리지 않아야 한다. semantic dialog, focus trap/restore, Escape, visible focus, accessible labels, reduced motion을 지원해줘. 밝은 neutral surface, blue primary, 8px spacing base, radius 16px, compact하지 않은 comfortable density를 사용해줘. 필터 적용·초기화·실패·모바일/데스크톱 전환을 검수 가능한 acceptance checklist로 마무리해줘.
이미 UI가 있을 때 품질 점검용
기존 구현을 바꾸기 전에 문제·영향·수정 우선순위를 먼저 보고받는 검수 프롬프트입니다.
현재 [파일/컴포넌트]의 UI/UX 구현을 먼저 진단한 뒤 필요한 부분만 수정해줘. 다음 항목을 검사해줘: - HTML 구조와 component anatomy, 잘못 중첩되거나 중복된 요소 - desktop/mobile에서 overflow, reflow, safe area, keyboard 가림 - default·hover·focus·selected·disabled·loading·empty·error·success 상태 - modal/drawer/popover의 scroll lock, outside press, Escape, focus trap/restore, layering - semantic HTML, label과 accessible name, focus order/visible, live region, reduced motion - 색 대비, hit target, 긴 텍스트, 다국어, 이미지 없음과 느린 네트워크 - 불필요한 JS/CSS, layout shift, 과도한 이미지·animation 비용 먼저 심각도 P0/P1/P2로 문제와 사용자 영향을 표로 정리하고, 수정 범위를 설명한 뒤 구현해줘. 기존 디자인 토큰과 사용자 데이터를 보존하고, 수정 후 각 항목의 검증 결과를 알려줘.
AI에게 “A 말고 B”라고 명시하면 실패율이 줄어듭니다.
실무·AI 프롬프트·디자인 QA에서 반복 빈도가 가장 높은 세트.
1. Modal / Non-modal — 뒤를 막는지 여부 2. Dialog / Alert / Confirm — 대화·경고·확인 창 3. Bottom sheet / Side sheet / Drawer — 하단·측면 시트/드로어 4. Popover / Dropdown / Menu / Tooltip — 앵커 근처 작은 레이어 5. Scrim / Backdrop — 어두운/블러 배경막 6. Detent / Snap point / Drag handle — 시트 높이 단계·손잡이 7. Toast / Snackbar / Banner — 잠깐 알림·액션 알림·고정 안내 8. Empty state / Skeleton / Loading — 빈 상태·뼈대·로딩 9. Primary / Secondary / Destructive action — 주요·보조·위험 액션 10. Focus trap / Scroll lock / Dismissible — 포커스 가둠·스크롤 잠금·닫기 가능 11. Safe area / Touch target — 안전영역·터치 영역 12. Enter·Exit animation / Reduced motion — 등장·퇴장·모션 축소 13. Trigger / Open state / Portal — 여는 요소·열림 상태·포탈 렌더 14. Elevation / Surface / Radius — 떠 있는 정도·면·모서리 15. Progressive disclosure — 필요할 때만 단계적으로 보여주기