@hjmds/design-contracts 1.30.0 → 1.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/behaviors.d.ts +3 -0
  2. package/dist/behaviors.d.ts.map +1 -1
  3. package/dist/bottom-navigation.d.ts +43 -0
  4. package/dist/bottom-navigation.d.ts.map +1 -1
  5. package/dist/bottom-navigation.js +55 -0
  6. package/dist/bottom-navigation.js.map +1 -1
  7. package/dist/carousel.d.ts +30 -0
  8. package/dist/carousel.d.ts.map +1 -1
  9. package/dist/carousel.js +32 -0
  10. package/dist/carousel.js.map +1 -1
  11. package/dist/catalog.d.ts +178 -1
  12. package/dist/catalog.d.ts.map +1 -1
  13. package/dist/catalog.js +16 -6
  14. package/dist/catalog.js.map +1 -1
  15. package/dist/component-recipes.d.ts +126 -0
  16. package/dist/component-recipes.d.ts.map +1 -1
  17. package/dist/component-recipes.js +71 -2
  18. package/dist/component-recipes.js.map +1 -1
  19. package/dist/icon.d.ts +58 -1
  20. package/dist/icon.d.ts.map +1 -1
  21. package/dist/icon.js +69 -0
  22. package/dist/icon.js.map +1 -1
  23. package/dist/image-choice.d.ts +47 -0
  24. package/dist/image-choice.d.ts.map +1 -1
  25. package/dist/image-choice.js +56 -0
  26. package/dist/image-choice.js.map +1 -1
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/pagination.d.ts +53 -0
  32. package/dist/pagination.d.ts.map +1 -1
  33. package/dist/pagination.js +48 -0
  34. package/dist/pagination.js.map +1 -1
  35. package/dist/recipes.d.ts +1 -1
  36. package/dist/recipes.d.ts.map +1 -1
  37. package/dist/recipes.js.map +1 -1
  38. package/dist/screen-patterns.d.ts +152 -2
  39. package/dist/screen-patterns.d.ts.map +1 -1
  40. package/dist/screen-patterns.js +132 -4
  41. package/dist/screen-patterns.js.map +1 -1
  42. package/dist/showcase.d.ts.map +1 -1
  43. package/dist/showcase.js +3 -0
  44. package/dist/showcase.js.map +1 -1
  45. package/dist/steps.d.ts +16 -7
  46. package/dist/steps.d.ts.map +1 -1
  47. package/dist/steps.js +6 -1
  48. package/dist/steps.js.map +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/dist/version.js.map +1 -1
  52. package/docs/authoring-tools.md +1 -0
  53. package/docs/bottom-navigation.md +28 -0
  54. package/docs/carousel.md +8 -0
  55. package/docs/data-workflows.md +1 -0
  56. package/docs/dialog.md +23 -0
  57. package/docs/generated/component-maturity.md +7 -4
  58. package/docs/generated/renderer-evidence.json +317 -19
  59. package/docs/generated/renderer-evidence.md +9 -3
  60. package/docs/generated/showcase-manifest.json +164 -6
  61. package/docs/icon.md +9 -0
  62. package/docs/pagination.md +17 -0
  63. package/docs/screen-patterns.md +55 -1
  64. package/docs/steps.md +4 -3
  65. package/docs/toast.md +10 -0
  66. package/docs/usage/README.md +5 -2
  67. package/docs/usage/SELECTION.md +1 -1
  68. package/docs/usage/components/auth-screen-layout.md +15 -5
  69. package/docs/usage/components/bottom-cta.md +11 -0
  70. package/docs/usage/components/bottom-navigation.md +99 -2
  71. package/docs/usage/components/card.md +36 -5
  72. package/docs/usage/components/carousel.md +1 -0
  73. package/docs/usage/components/chat-date-separator.md +86 -0
  74. package/docs/usage/components/chat-message.md +13 -1
  75. package/docs/usage/components/chat-screen.md +3 -2
  76. package/docs/usage/components/comment-thread-row.md +11 -3
  77. package/docs/usage/components/comment-thread-screen.md +1 -1
  78. package/docs/usage/components/dialog.md +69 -0
  79. package/docs/usage/components/editor-screen.md +6 -2
  80. package/docs/usage/components/field.md +13 -0
  81. package/docs/usage/components/icon-tile.md +19 -3
  82. package/docs/usage/components/icon.md +45 -6
  83. package/docs/usage/components/image-choice-group.md +35 -4
  84. package/docs/usage/components/media-selection-screen.md +20 -1
  85. package/docs/usage/components/message-composer.md +4 -1
  86. package/docs/usage/components/moderation-screen.md +107 -2
  87. package/docs/usage/components/page-indicator.md +102 -0
  88. package/docs/usage/components/pagination.md +28 -4
  89. package/docs/usage/components/profile-screen.md +9 -3
  90. package/docs/usage/components/profile-summary.md +3 -3
  91. package/docs/usage/components/screen-layout.md +15 -3
  92. package/docs/usage/components/search-screen.md +5 -3
  93. package/docs/usage/components/steps.md +14 -7
  94. package/docs/usage/components/tabs.md +21 -1
  95. package/docs/usage/components/text.md +30 -1
  96. package/docs/usage/components/toast.md +5 -0
  97. package/docs/usage/components/typing-indicator.md +89 -0
  98. package/docs/usage/screens/common-login.md +3 -1
  99. package/docs/usage/screens/common-profile.md +3 -3
  100. package/docs/usage/screens/flow-editor.md +13 -2
  101. package/docs/usage/screens/flow-moderation.md +31 -3
  102. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
  - 상태: 배포
5
5
  - 지원: Web · Native
6
6
  - 적용: 구성 API 지침 참조
7
- - 검토일: 2026-10-17
7
+ - 검토일: 2026-10-18
8
8
  - 근거: [반복 화면 조합](../../screen-patterns.md), Web·Native `src/screen-flows.tsx`(`ProfileScreen`·`EditorScreen`), 예제 `showcase/*/screen-flow-previews.tsx`(`AccountFlowPreview`)·`saved-profile-previews.tsx`(`ProfileEditFields`), 기본 얼굴 `showcase/web/src/patterns/ProfileStudio.previews.tsx`·`showcase/native/src/profile-face-preview.tsx`·`showcase/shared/profile-studio.ts`. 2026-10-06 사용자 승인으로 실험 `공통 화면/프로필`을 배포하면서 같은 프로필 수정을 직접 조립으로 보이던 배포 `화면/프로필 편집`과 합쳤다(API 기반 우선, Web id `patterns-profile-studio` 보존, [승인 기록](../../../../../docs/STORYBOOK_NAVIGATION.md#21-2026-10-06-전체-승격과-규격-확정))
9
9
  - 스토리북: `배포/화면/계정/프로필`
10
10
 
@@ -53,7 +53,7 @@
53
53
  | 바깥 틀 | ProfileScreen · EditorScreen(둘 다 ScreenLayout) | route 본문, host가 남은 높이·safe area·키보드를 준다 | 폭 최대 720, 바깥 padding `spacing.md` 16([ScreenLayout 배치](../components/screen-layout.md#배치)), 본문 스크롤 |
54
54
  | 머리 | `title` + `actions`(IconButton ghost 계정 메뉴) | 맨 위, 고정 | 제목 열 최소 120 × 글자 배율 |
55
55
  | 요약 | `summary`(제품) | 본문 맨 위 | 요약 안 배치는 제품 소유 |
56
- | 수정 진입 | `edit` → Button ghost | 요약 아래 | 요약과 `spacing.md` 16 |
56
+ | 수정 진입 | `edit` → Button ghost | 요약 아래 | 요약과 `spacing.md` 16. 프로필 카드 안에 두는 제품은 `editPlacement="summary"`(ProfileSummary 행동 줄 맨 앞, `secondary` `small`, 1.31.0) |
57
57
  | 게시물 | `children` > Stack `gap="md"` > 탭 Button 줄 + Grid `columns={{ compact: 3 }}` | 수정 아래 | 요약 묶음과 `spacing.xl` 24, 격자 간격 `spacing.xxs` |
58
58
  | 계정 메뉴 | Sheet > ListRow, `footer` > Button ghost 로그아웃 → AlertDialog | 오버레이 | footer 고정 |
59
59
  | 수정 화면 | EditorScreen `submitPlacement="footer"` > 사진·이름·소개 필드 | 같은 route에서 보기 대신 | footer: 초안 상태 → 저장 primary, 사이 `spacing.sm` 12 |
@@ -77,7 +77,7 @@
77
77
 
78
78
  | 행동 | 컴포넌트·tone | 위치 | 개수·순서 |
79
79
  | --- | --- | --- | --- |
80
- | 프로필 수정 | `edit` → Button ghost | 요약 아래 | 1 |
80
+ | 프로필 수정 | `edit` → Button ghost(`editPlacement="summary"`면 ProfileSummary 안 `secondary` `small`) | 요약 아래(또는 요약 카드 안 행동 줄 맨 앞) | 1 |
81
81
  | 계정 메뉴 | IconButton ghost(접근성 이름 "계정 메뉴") | 머리 끝(`actions`) | 1. 로그아웃·연결 계정은 메뉴 안 |
82
82
  | 게시물·저장됨 전환 | [SegmentedControl](../components/segmented-control.md)(label "프로필 보기") | 게시물 영역 맨 위 | 2개 항목, 단일 선택. 선택 상태를 ghost Button으로 흉내 내지 않는다 |
83
83
  | 게시물 열기 | 사진 칸 전체 | 격자 | 칸마다 1. 상세는 ScreenLayout + `exit` 뒤로 아이콘 |
@@ -4,7 +4,7 @@
4
4
  - 상태: 배포
5
5
  - 지원: Web · Native
6
6
  - 적용: 구성 API 지침 참조
7
- - 검토일: 2026-10-17
7
+ - 검토일: 2026-10-18
8
8
  - 근거: [반복 화면 조합](../../screen-patterns.md); 공통 API와 실제 Web·Native 예제의 슬롯·상태를 대조해 중복 조립 방지. 2026-10-06 사용자 승인으로 스토리북 배포(이전 `실험/화면/기본 흐름/작성과 수정`, [승인 기록](../../../../../docs/STORYBOOK_NAVIGATION.md#21-2026-10-06-전체-승격과-규격-확정))
9
9
  - 스토리북: `배포/화면/콘텐츠/작성과 수정`
10
10
 
@@ -31,7 +31,7 @@ host: 남은 높이·safe area·키보드
31
31
 
32
32
  | 행동 | 컴포넌트·tone | 위치 | 개수·순서 |
33
33
  | --- | --- | --- | --- |
34
- | 작업 | EditorScreen 공개 행동 슬롯 | 취소는 헤더; 저장은 footer; 수정한 채 이탈하면 확인 | 같은 표면에 경쟁하는 primary 하나만 |
34
+ | 작업 | EditorScreen 공개 행동 슬롯 | 취소는 헤더(단계형은 두 번째 단계부터 `stepBack` 뒤로); 저장은 footer; 수정한 채 이탈하면 확인 | 같은 표면에 경쟁하는 primary 하나만 |
35
35
  | 복구 | Button·secondary | 오류 근처 | 재시도할 대상과 범위를 표시 |
36
36
 
37
37
  ## 상태
@@ -54,6 +54,17 @@ host: 남은 높이·safe area·키보드
54
54
  | 저장 성공 | 제출 snapshot을 saved로 갱신 | 요청 후 새로 쓴 내용까지 saved로 처리하지 않는다. draftStatus는 실제 임시 저장 성공 때만 표시한다 |
55
55
  | 브라우저·OS 뒤로 | 제품 router의 이탈 가드 | EditorScreen cancel의 discard와 같은 제품 결정을 공유한다 |
56
56
 
57
+ ### 단계형 작성(1.31.0)
58
+
59
+ 색 → 이모지 → 글처럼 단계가 나뉜 작성은 같은 EditorScreen 안에서 단계를 바꾼다. 앞 단계로 돌아가는 길은 둘이다.
60
+
61
+ | 행동 | 연결 | 규칙 |
62
+ | --- | --- | --- |
63
+ | 헤더 뒤로 | EditorScreen `stepBack`(두 번째 단계부터) | 헤더 시작 끝이 × 대신 뒤로 화살표가 된다. 단계를 되돌릴 뿐 이탈이 아니라 `discard` 확인을 띄우지 않는다. 첫 단계에서는 `stepBack`을 빼 × 닫기(`cancel`·`discard`)로 돌아간다. 저장 중에는 잠긴다 |
64
+ | 지난 단계 누르기 | 본문 맨 위 [Steps](../components/steps.md) `onStepPress` | 커서 앞 단계만 버튼이다. 현재·다음 단계는 누를 수 없다(검증을 건너뛰지 않는다). 제출 중처럼 흐름이 잠긴 동안은 `onStepPress`를 빼면 모두 표시 전용이 된다 |
65
+
66
+ 2026-10-18 spint 작성 화면이 이 두 행동 때문에 EditorScreen 머리를 제품 TopBar로 바꾸고 단계 표시를 직접 그렸다.
67
+
57
68
  본문이 ready가 아닌 최초 조회·오류·제한 상태에서는 헤더/하단 어느 위치의 저장도 비활성이다. 실패한 저장은
58
69
  본문을 오류 화면으로 교체하지 않고 위 표처럼 ready + notice로 유지한다.
59
70
 
@@ -4,7 +4,7 @@
4
4
  - 상태: 배포
5
5
  - 지원: Web · Native
6
6
  - 적용: 구성 API 지침 참조
7
- - 검토일: 2026-10-17
7
+ - 검토일: 2026-10-18
8
8
  - 근거: [반복 화면 조합](../../screen-patterns.md); 공통 API와 실제 Web·Native 예제의 슬롯·상태를 대조해 중복 조립 방지. 2026-10-06 사용자 승인으로 스토리북 배포(이전 `실험/화면/기본 흐름/신고와 차단`, [승인 기록](../../../../../docs/STORYBOOK_NAVIGATION.md#21-2026-10-06-전체-승격과-규격-확정))
9
9
  - 스토리북: `배포/화면/소통/신고와 차단`
10
10
 
@@ -32,7 +32,7 @@ host: 남은 높이·safe area·키보드
32
32
  | 행동 | 컴포넌트·tone | 위치 | 개수·순서 |
33
33
  | --- | --- | --- | --- |
34
34
  | 닫기 | ScreenLayout `exit` `kind="close"` | 헤더 시작 끝 아이콘 버튼 | 1. 신고하지 않고 화면을 닫는다 |
35
- | 작업 | ModerationScreen 공개 행동 슬롯 | 신고는 footer; 차단은 별도 확인 후 실행 | 같은 표면에 경쟁하는 primary 하나만 |
35
+ | 작업 | ModerationScreen 공개 행동 슬롯 | 신고는 footer; 차단은 별도 확인 후 실행. 운영자 검토(`variant="review"`)는 결정 버튼을 footer에 세로로 쌓는다 | 같은 표면에 경쟁하는 primary 하나만 |
36
36
  | 복구 | Button·secondary | 오류 근처 | 재시도할 대상과 범위를 표시 |
37
37
 
38
38
  ## 상태
@@ -55,11 +55,39 @@ host: 남은 높이·safe area·키보드
55
55
  | 차단 실패 | AlertDialog 유지 | Promise 실패를 전달한다. 확인창을 먼저 닫고 성공 처리하지 않는다 |
56
56
  | 대상 변경 | 대상 id와 초안·요청 묶음 갱신 | 이전 대상의 늦은 응답이 새 대상 상태를 덮지 않게 한다 |
57
57
 
58
+ ### 편지·카드·Sheet 안에서 신고(1.31.0)
59
+
60
+ 신고가 별도 route가 아니라 편지 아래에 펼쳐지거나 Sheet 안에 열리면 [ModerationForm](../components/moderation-screen.md#moderationform-화면-틀-없는-신고-폼)을 쓴다.
61
+ ModerationScreen과 같은 사유 선택·추가 설명·신고/차단 버튼과 규칙을 화면 머리·바깥 여백 없이 그린다.
62
+
63
+ ```text
64
+ 편지(제품 Surface)
65
+ └─ [신고] 제목(선택) → 사유 선택 → 추가 설명 → [신고하기] → [차단] → [취소]
66
+ ```
67
+
68
+ | 행동 | 연결 | 규칙 |
69
+ | --- | --- | --- |
70
+ | 펼친 신고 접기 | `cancel` → 마지막 ghost 버튼 | Sheet 안에서는 Sheet 닫기가 있으므로 생략 가능 |
71
+ | 제목 | `title`(구성 제목 `level3`) | 제목 줄이 있는 Sheet·Dialog 안에서는 생략한다 |
72
+ | 화면 틀 | ModerationScreen에 `contentInset="none"`·`scroll="content"`를 주어 끄지 않는다 | 머리 띠와 footer 표면이 남는다 |
73
+
74
+ ### 운영자 검토(1.31.0)
75
+
76
+ 신고·이의 신청 처리 화면은 ModerationScreen `variant="review"`다. 신고된 내용(`children`) → 처리 사유 자유 입력 → 결정 버튼(기각·숨기기·유지·번복 등, 문구는 제품) 순이다.
77
+
78
+ | 상황 | 연결 | 유지·복구 |
79
+ | --- | --- | --- |
80
+ | 사유 미입력 | 모든 결정 비활성(`decisionReason.required` 기본 `true`) | 공백만 있는 사유는 입력하지 않은 것으로 본다 |
81
+ | 되돌리기 어려운 결정 | 결정의 `confirmation`(AlertDialog `confirm`, 보통 `tone: "danger"`) | 버튼은 확인창만 열고 `onConfirm`이 실행한다. 실패는 Promise로 넘겨 확인창을 유지한다 |
82
+ | 결정 진행 중 | 그 결정 `pending` | 다른 결정과 사유 입력을 HJM이 잠근다 |
83
+ | 이미 처리됨 | `resolution`(예: Notice `success` + 처리 사유) | 사유 입력과 결정 버튼 자리를 대체한다 |
84
+ | 처리 결과·충돌 | `notice` 또는 `children` 안 Notice | 서버 확정 후에만 성공을 표시한다 |
85
+
58
86
  ## 사용하는 지침
59
87
 
60
88
  | 지침 | 쓰는 곳 |
61
89
  | --- | --- |
62
- | [ModerationScreen](../components/moderation-screen.md) | 필수 props·슬롯·플랫폼 차이 |
90
+ | [ModerationScreen](../components/moderation-screen.md) | 필수 props·슬롯·플랫폼 차이, 운영자 검토 `variant="review"`, 화면 틀 없는 `ModerationForm` |
63
91
  | [Button](../components/button.md) | 동작·로딩·보조 행동 |
64
92
  | [ScreenLayout](../components/screen-layout.md) | 화면 높이·본문 교체·스크롤 소유 |
65
93
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hjmds/design-contracts",
3
- "version": "1.30.0",
3
+ "version": "1.32.0",
4
4
  "description": "Renderer-neutral design contracts, tokens, recipes, and behaviors shared by HJM products.",
5
5
  "license": "MIT",
6
6
  "repository": {