@hjmds/design-contracts 1.45.0 → 1.46.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.
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/docs/generated/component-maturity.md +1 -1
- package/docs/generated/renderer-evidence.json +3 -3
- package/docs/generated/renderer-evidence.md +1 -1
- package/docs/generated/showcase-manifest.json +1 -1
- package/docs/usage/README.md +1 -1
- package/docs/usage/SELECTION.md +3 -1
- package/docs/usage/components/chat-message.md +6 -0
- package/docs/usage/components/message-composer.md +1 -0
- package/package.json +1 -1
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAiB,CAAC","sourcesContent":["/** Package release shown by documentation surfaces. Kept in sync by a test. */\nexport const designSystemVersion = \"1.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAiB,CAAC","sourcesContent":["/** Package release shown by documentation surfaces. Kept in sync by a test. */\nexport const designSystemVersion = \"1.46.0\" as const;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Component maturity and evidence manifest
|
|
2
2
|
|
|
3
|
-
> Generated from `@hjmds/design-contracts` 1.
|
|
3
|
+
> Generated from `@hjmds/design-contracts` 1.46.0. Do not edit this file directly; run `pnpm contracts:sync`.
|
|
4
4
|
|
|
5
5
|
This document is the human-readable projection of the same catalog and Showcase manifest consumed by product CI.
|
|
6
6
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"designSystemVersion": "1.
|
|
3
|
+
"designSystemVersion": "1.46.0",
|
|
4
4
|
"source": "packages/design-contracts/docs/generated/showcase-manifest.json",
|
|
5
5
|
"surfaces": {
|
|
6
6
|
"web": {
|
|
7
7
|
"packageName": "@hjmds/react",
|
|
8
|
-
"packageVersion": "1.
|
|
8
|
+
"packageVersion": "1.46.0",
|
|
9
9
|
"activeComponents": 131,
|
|
10
10
|
"claimedComponents": 131,
|
|
11
11
|
"completeScenarioComponents": 130,
|
|
@@ -7063,7 +7063,7 @@
|
|
|
7063
7063
|
},
|
|
7064
7064
|
"native": {
|
|
7065
7065
|
"packageName": "@hjmds/react-native",
|
|
7066
|
-
"packageVersion": "1.
|
|
7066
|
+
"packageVersion": "1.46.0",
|
|
7067
7067
|
"activeComponents": 113,
|
|
7068
7068
|
"claimedComponents": 113,
|
|
7069
7069
|
"completeScenarioComponents": 110,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Renderer evidence coverage
|
|
2
2
|
|
|
3
|
-
> Generated for HJM 1.
|
|
3
|
+
> Generated for HJM 1.46.0. Do not edit directly; run `pnpm evidence:sync`.
|
|
4
4
|
|
|
5
5
|
This projection joins the canonical surface maturity manifest with first-party renderer claims. Missing scenarios are explicit beta promotion debt; stable surfaces are blocked by CI until none remain.
|
|
6
6
|
|
package/docs/usage/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[선택 기준](SELECTION.md)으로 그대로 사용·공개 슬롯 확장·공통 API 보완·제품 고유 기능 연결을 고른다. 설치 버전의 지침을 본다: `node_modules/@hjmds/design-contracts/docs/usage/`.
|
|
8
8
|
이름을 모르면 [쉬운 말로 찾고 비교하기](FINDING.md)에서 일상 표현과 선택 기준·요청 예시로 시작한다.
|
|
9
9
|
제공 기준은 확인한 기본 API 버전이며 최초 출시 버전이 아니다. 구성·화면은 각 API 지침의 제공 버전을 확인한다.
|
|
10
|
-
API 안정성은 1.
|
|
10
|
+
API 안정성은 1.45.0의 생성 manifest에서 읽은 정규(canonical) API 기준이다. 동반·선택형 확장은 개별 계약을 확인한다.
|
|
11
11
|
Storybook 배포/실험은 예제 분류이며 npm 게시·기기 검증·제품 반영을 의미하지 않는다.
|
|
12
12
|
`분류`는 Storybook 제목 `<배포|실험>/<단계>/<분류>/<항목>`의 셋째 마디이고, 토큰·구성·화면은 Storybook 메뉴와 같은 순서다.
|
|
13
13
|
|
package/docs/usage/SELECTION.md
CHANGED
|
@@ -87,7 +87,7 @@ HJM의 기존 API를 확장하거나 하위 구성을 공개한다. 도메인
|
|
|
87
87
|
| 헤더 제목·추가 기능 | 하단 탭·상단 탐색과 중복되는 최상위 화면명은 `titleVisibility="hidden"`. 식별에 필요한 대상·하위 작업명은 유지하며 본문과 중복되면 생략. 보이는 제목은 기본 가운데(`ScreenLayout`·`TopBar`, 왼쪽 정렬은 선택), 도구는 `actions` 아이콘 1~2개(넘치면 Menu) | 모든 제목 일괄 숨김, 위치 이름의 반복, 헤더의 글자 도구 버튼 |
|
|
88
88
|
| 상단 탐색과 도구 한 행 | `ScreenLayout.header`에 HJM `TopBar`, `leading`에 HJM `Tabs`/`SegmentedControl` 탐색, `actions`에 아이콘 도구. 탐색이 화면명을 대신한다. 본문 추가 필터는 `notice`/본문 유지 상단 일반 도구는 `size="small" hitSlop={0}`·간격 `spacing.xxs` 4를 사용한다([TopBar](components/top-bar.md#상단-도구의-공통-크기), 2026-10-21 사용자 승인). | 제목 행 + 같은 화면을 설명하는 탐색 행, 앱에서 직접 만든 헤더 레이아웃 |
|
|
89
89
|
| 상단 검색·장소 입력 | `SearchScreen`의 `queryLabelVisibility="hidden"`(기본). `queryLabel`은 placeholder와 접근성 이름, 뒤로가기·입력·오른쪽 도구는 공통 행에서 세로 중앙 | 입력 위 안내 label로 행 높이를 늘리기, 아이콘을 label 포함 높이에 맞추기, 일반 폼 label까지 숨기기 |
|
|
90
|
-
| 도구성 행동(
|
|
90
|
+
| 도구성 행동(새로고침·재시도·다시보기·재생/일시정지·추가·편집·삭제·공유·검색·필터·더보기) | `IconButton` + 아이콘, 글자는 `label`(보조기술 이름). HJM 화면은 아이콘 슬롯(`ScreenFlowAction.icon` 등) | 헤더·행·도구 막대의 글자 버튼 |
|
|
91
91
|
| 화면 나가기(뒤로·닫기·설정 나가기) | `ScreenLayout`(과 이를 쓰는 화면)·`AuthScreenLayout`의 `exit` — 헤더 시작 쪽 아이콘 버튼, 글자 없음. 단계형 작성의 앞 단계는 `EditorScreen` `stepBack`(1.31.0) | 본문·하단의 "나가기" 글자 버튼, 화면마다 다른 화살표, 로그인·작성 화면 위에 따로 얹은 `TopBar` |
|
|
92
92
|
| 버튼 묶음 간격 | 일반 행동 묶음은 가로·세로 `gap="xs"`(8) — `actionGroupRecipe`. 상단 도구 줄만 `gap="xxs"`(4), `size="small" hitSlop={0}`(2026-10-21 사용자 승인) | 세로 버튼 사이 12 이상 |
|
|
93
93
|
| 나란한 컴포넌트 높이 | 항상 같은 높이로 위·아래 경계를 맞춘다. 버튼·필터·탭·선택 카드·입력/아이콘 도구 모두 포함. 여러 줄이면 같은 행의 가장 높은 콘텐츠에 맞추며 줄바꿈 그리드는 행별 적용. 세로의 동일 행동 묶음도 같은 크기 규격. 공통 renderer/그리드가 소유(2026-10-20 다에리 선택 카드 높이 불일치 사용자 지적) | 문구·아이콘·선택/강조 상태마다 다른 높이, 내용 자르기·글자 축소·넘치는 고정 높이로 맞추기 |
|
|
@@ -148,3 +148,5 @@ HJM의 기존 API를 확장하거나 하위 구성을 공개한다. 도메인
|
|
|
148
148
|
HJM 공통 구성이 선택을 소유하고 제품 adapter는 `presentation`을 전달한다. 반응·원문 미리보기를 포함한
|
|
149
149
|
채팅 hold 구성과 입력/미디어/언어 선택 시트를 일반 Menu로 바꾸지 않는다. 자세한 사례와 경계는
|
|
150
150
|
[Menu 전사 개발 선택](components/menu.md#전사-개발-적용-선택--2026-10-20)을 따른다.
|
|
151
|
+
|
|
152
|
+
2026-10-23 사용자 지시: 익숙한 아이콘 하나로 의미를 전달할 수 있는 보조 행동은 본문·오류 안내에서도 `IconButton`을 사용한다. 접근성 `label`과 Web 설명(title/Tooltip), pending·disabled·포커스 복구를 보존한다. 재전송은 refresh, 이전 상태로 돌아가기는 되돌리기 아이콘으로 구분한다. 메뉴 행의 이름과 삭제 확인·결제·동의 같은 최종 의사 확인 문구는 유지한다.
|
|
@@ -165,3 +165,9 @@ import { Text } from "@hjmds/react-native/primitives";
|
|
|
165
165
|
- `menuActions[].tone`: 2026-10-18 유틸버스 채팅 길게 누르기 메뉴의 삭제 행. 빨간 글자가 `reportAction`에만 있어 삭제가 일반 행으로 보였다.
|
|
166
166
|
|
|
167
167
|
- 아바타 32: 2026-10-17 정렬 실측. recipe·문서는 36이었지만 Web Avatar 단계(32/40/48/64)에 36이 없어 Web은 36 칸에 32 아바타를, Native는 36 아바타를 그렸다. 카카오톡 참고값 약 34에 가장 가까운 Avatar 단계 `small` 32를 recipe가 직접 읽게 해 두 플랫폼이 같은 값을 쓴다. 작성자 첫 줄과의 위쪽 맞춤(카카오톡 방식)은 유지한다.
|
|
168
|
+
|
|
169
|
+
### 보낸 메시지 수정·삭제와 단체 읽음
|
|
170
|
+
|
|
171
|
+
2026-10-23: 말풍선 메뉴의 `reactions.menuActions`에 수정·삭제를 연결한다. 반응 선택 없이 메뉴만 필요하면 `options: []`를 쓴다. 수정은 같은 `MessageComposer`의 `editTarget`으로 전환하고 제품이 기존 새 메시지 초안·첨부를 보존한다. 저장 성공 전 원문을 덮지 않으며 삭제는 확인 대화상자 이후 서버 확인을 기다린다. 삭제 결과는 안내 말풍선으로 남기고 메뉴·첨부·반응을 제거한다.
|
|
172
|
+
|
|
173
|
+
`deliveryLabel`은 제품 서버가 계산한 수정 상태 또는 단체 대화의 안 읽은 인원 수를 표시한다. 인원 수가 0이면 읽음 숫자를 전달하지 않는다. 가입·퇴장, 메시지 열람 여부와 기록 저장은 제품 소유다. 조회 성공을 읽음으로 추정하거나 예시의 숫자를 제품에 복사하지 않는다. 웹·네이티브 대화 메시지 스토리에서 수정·삭제의 실패 복구와 단체 읽음 수 감소를 확인할 수 있다.
|
|
@@ -90,6 +90,7 @@ import { Image } from "react-native";
|
|
|
90
90
|
| `inputRef` | Web `Ref<HTMLTextAreaElement>` · Native `Ref<TextInput>` | 없음 | 답글 선택 뒤 포커스 유지 |
|
|
91
91
|
| `context` | `ReactNode` | 없음 | 답장 대상 위 임의 슬롯 |
|
|
92
92
|
| `replyTo` | `{ author, excerpt, cancelLabel, onCancel() }` | 없음 | 입력창 위 답장 대상과 취소 버튼 |
|
|
93
|
+
| `editTarget` | `{ label, excerpt, cancelLabel, onCancel }` | 없음 | 보낸 메시지 편집 대상. `replyTo`와 동시에 제공하지 않는다. 같은 입력을 유지하며 pending 동안 취소를 잠근다. 제품이 편집 전 초안 보관·취소 복원·서버 성공 후 종료를 소유한다. 저장은 `sendLabel`과 체크 모양 `sendIcon`으로 연결 |
|
|
93
94
|
| `sendIcon` | `ReactNode` | 없음 | 주면 아이콘 모드: 빈 입력에서는 입력창 안에 `attachmentAction`, 내용이 있거나 `pending`이면 전송 아이콘. 없으면 입력창 옆 텍스트 `Button` |
|
|
94
95
|
| `sendPresentation` | `"inline"` · `"circle"` | `"inline"` | `circle`은 primary 원형 `IconButton size="small"`(댓글·DM 레퍼런스). `sendIcon`이 있을 때만 의미가 있다 |
|
|
95
96
|
| `attachmentAction` | `{ label, icon, onPress(), disabled? }` | 없음 | 첨부 버튼(ghost `IconButton`) |
|