@x-plat/design-system 0.9.0 → 0.10.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/components/AutoResizeTextArea/index.d.cts +1 -0
- package/dist/components/AutoResizeTextArea/index.d.ts +1 -0
- package/dist/components/Badge/index.cjs +5 -1
- package/dist/components/Badge/index.css +1 -0
- package/dist/components/Badge/index.d.cts +1 -0
- package/dist/components/Badge/index.d.ts +1 -0
- package/dist/components/Badge/index.js +5 -1
- package/dist/components/Box/index.d.cts +3 -0
- package/dist/components/Box/index.d.ts +3 -0
- package/dist/components/Chart/index.cjs +7 -6
- package/dist/components/Chart/index.d.cts +12 -1
- package/dist/components/Chart/index.d.ts +12 -1
- package/dist/components/Chart/index.js +7 -6
- package/dist/components/ChatInput/index.d.cts +6 -0
- package/dist/components/ChatInput/index.d.ts +6 -0
- package/dist/components/CheckBox/index.cjs +6 -2
- package/dist/components/CheckBox/index.css +2 -0
- package/dist/components/CheckBox/index.d.cts +10 -2
- package/dist/components/CheckBox/index.d.ts +10 -2
- package/dist/components/CheckBox/index.js +6 -2
- package/dist/components/Chip/index.d.cts +2 -0
- package/dist/components/Chip/index.d.ts +2 -0
- package/dist/components/DatePicker/index.cjs +4 -3
- package/dist/components/DatePicker/index.js +4 -3
- package/dist/components/Drawer/index.d.cts +1 -0
- package/dist/components/Drawer/index.d.ts +1 -0
- package/dist/components/FileUpload/index.d.cts +6 -0
- package/dist/components/FileUpload/index.d.ts +6 -0
- package/dist/components/ImageSelector/index.d.cts +3 -0
- package/dist/components/ImageSelector/index.d.ts +3 -0
- package/dist/components/Input/index.d.cts +4 -0
- package/dist/components/Input/index.d.ts +4 -0
- package/dist/components/NotificationBadge/index.cjs +5 -1
- package/dist/components/NotificationBadge/index.css +1 -0
- package/dist/components/NotificationBadge/index.d.cts +6 -2
- package/dist/components/NotificationBadge/index.d.ts +6 -2
- package/dist/components/NotificationBadge/index.js +5 -1
- package/dist/components/Pagination/index.cjs +6 -2
- package/dist/components/Pagination/index.css +1 -0
- package/dist/components/Pagination/index.d.cts +13 -2
- package/dist/components/Pagination/index.d.ts +13 -2
- package/dist/components/Pagination/index.js +6 -2
- package/dist/components/Progress/index.cjs +6 -2
- package/dist/components/Progress/index.css +1 -0
- package/dist/components/Progress/index.d.cts +11 -2
- package/dist/components/Progress/index.d.ts +11 -2
- package/dist/components/Progress/index.js +6 -2
- package/dist/components/Radio/index.cjs +6 -2
- package/dist/components/Radio/index.css +2 -0
- package/dist/components/Radio/index.d.cts +11 -2
- package/dist/components/Radio/index.d.ts +11 -2
- package/dist/components/Radio/index.js +6 -2
- package/dist/components/Select/index.d.cts +5 -1
- package/dist/components/Select/index.d.ts +5 -1
- package/dist/components/Skeleton/index.d.cts +3 -0
- package/dist/components/Skeleton/index.d.ts +3 -0
- package/dist/components/Spinner/index.cjs +6 -2
- package/dist/components/Spinner/index.css +1 -0
- package/dist/components/Spinner/index.d.cts +8 -2
- package/dist/components/Spinner/index.d.ts +8 -2
- package/dist/components/Spinner/index.js +6 -2
- package/dist/components/Steps/index.cjs +6 -2
- package/dist/components/Steps/index.css +11 -0
- package/dist/components/Steps/index.d.cts +9 -2
- package/dist/components/Steps/index.d.ts +9 -2
- package/dist/components/Steps/index.js +6 -2
- package/dist/components/Switch/index.cjs +6 -2
- package/dist/components/Switch/index.css +2 -0
- package/dist/components/Switch/index.d.cts +10 -2
- package/dist/components/Switch/index.d.ts +10 -2
- package/dist/components/Switch/index.js +6 -2
- package/dist/components/Tab/index.cjs +4 -3
- package/dist/components/Tab/index.d.cts +12 -1
- package/dist/components/Tab/index.d.ts +12 -1
- package/dist/components/Tab/index.js +4 -3
- package/dist/components/Tag/index.cjs +5 -3
- package/dist/components/Tag/index.d.cts +12 -2
- package/dist/components/Tag/index.d.ts +12 -2
- package/dist/components/Tag/index.js +5 -3
- package/dist/components/TextArea/index.d.cts +3 -0
- package/dist/components/TextArea/index.d.ts +3 -0
- package/dist/components/Tooltip/index.cjs +4 -2
- package/dist/components/Tooltip/index.d.cts +11 -1
- package/dist/components/Tooltip/index.d.ts +11 -1
- package/dist/components/Tooltip/index.js +4 -2
- package/dist/components/index.cjs +46 -29
- package/dist/components/index.css +21 -0
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +46 -29
- package/dist/index.cjs +46 -29
- package/dist/index.css +21 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +46 -29
- package/dist/status-g_KP3qT6.d.cts +8 -0
- package/dist/status-g_KP3qT6.d.ts +8 -0
- package/guidelines/AGENT_PROMPT.md +15 -0
- package/guidelines/components/card.md +3 -3
- package/guidelines/components/feedback.md +1 -1
- package/guidelines/components/navigation.md +16 -15
- package/guidelines/components/overlay.md +43 -4
- package/package.json +1 -1
|
@@ -14,9 +14,9 @@ import { Box } from "@x-plat/design-system";
|
|
|
14
14
|
| Prop | 타입 | 기본값 | 설명 |
|
|
15
15
|
|------|------|--------|------|
|
|
16
16
|
| children * | `ReactNode` | - | |
|
|
17
|
-
| title | `ReactNode` | - |
|
|
18
|
-
| variant | `"outlined" \| "elevated" \| "flat"` | - |
|
|
19
|
-
| padding | `"none" \| "sm" \| "md" \| "lg"` | - |
|
|
17
|
+
| title | `ReactNode` | - | 상자 위쪽 제목 |
|
|
18
|
+
| variant | `"outlined" \| "elevated" \| "flat"` | - | 테두리·그림자 방식 |
|
|
19
|
+
| padding | `"none" \| "sm" \| "md" \| "lg"` | - | 안쪽 여백 |
|
|
20
20
|
|
|
21
21
|
`*` = 필수
|
|
22
22
|
<!-- /props:Box -->
|
|
@@ -56,7 +56,7 @@ toast("error", "오류 발생", 5000);
|
|
|
56
56
|
| children * | `ReactNode` | - | 뱃지가 올라탈 **대상**. 뱃지에 표시할 내용이 아니다. 보통 아이콘이나 버튼을 넣는다. |
|
|
57
57
|
| count | `number` | - | 표시할 개수. `count` 나 `dot` 중 하나가 없으면 **뱃지가 렌더되지 않는다** (`type` 을 줘도 아무 일도 일어나지 않는다). `count={0}` 도 표시하지 않는다 — 읽지 않은 항목이 없으면 숨기는 동작이다. |
|
|
58
58
|
| dot | `boolean` | `false` | 개수 대신 점만 표시한다. `count` 없이 "새 항목 있음" 만 알릴 때 쓴다 |
|
|
59
|
-
| type | `
|
|
59
|
+
| type | `NotificationBadgeType \| LegacyStatusType` | `"error"` | 뱃지 색. 뱃지가 렌더될 때만 의미가 있다 |
|
|
60
60
|
| maxCount | `number` | `99` | `count` 가 이 값을 넘으면 `99+` 처럼 표시한다 |
|
|
61
61
|
| size | `"sm" \| "md" \| "lg"` | `"md"` | 뱃지 크기. 대상의 크기가 아니다 |
|
|
62
62
|
|
|
@@ -28,11 +28,12 @@ const [activeIndex, setActiveIndex] = useState(0);
|
|
|
28
28
|
<!-- props:Tab -->
|
|
29
29
|
| Prop | 타입 | 기본값 | 설명 |
|
|
30
30
|
|------|------|--------|------|
|
|
31
|
-
| activeIndex * | `number` | - |
|
|
32
|
-
| tabs * | `{ value: string \| number; title: string }[]` | - |
|
|
33
|
-
| onChange * | `(value: { value: string \| number; title: string }, index: number) => void` | - |
|
|
34
|
-
|
|
|
35
|
-
|
|
|
31
|
+
| activeIndex * | `number` | - | 활성 탭 인덱스. controlled 전용이라 onChange 와 함께 쓴다 |
|
|
32
|
+
| tabs * | `{ value: string \| number; title: string }[]` | - | 탭 목록. children 을 받지 않는다 |
|
|
33
|
+
| onChange * | `(value: { value: string \| number; title: string }, index: number) => void` | - | 첫 인자가 탭 객체, **두 번째가 인덱스**다. setActiveIndex 를 그대로 넘기면 안 된다 |
|
|
34
|
+
| variant | `"default" \| "toggle"` | - | 탭 모양. `default` 는 채워진 평면 탭, `toggle` 은 밑줄 인디케이터가 슬라이드 |
|
|
35
|
+
| type | `"default" \| "toggle"` | - | **@deprecated** 모양 변형은 `variant` 로 받는다. `type` 은 상태 색 전용이다. 기존 사용처가 깨지지 않도록 계속 받는다 — 둘 다 주면 `variant` 가 이긴다. |
|
|
36
|
+
| size | `"sm" \| "md" \| "lg"` | `"md"` | 탭 높이와 글자 크기 |
|
|
36
37
|
|
|
37
38
|
`*` = 필수
|
|
38
39
|
<!-- /props:Tab -->
|
|
@@ -130,13 +131,13 @@ const [activeIndex, setActiveIndex] = useState(0);
|
|
|
130
131
|
<!-- props:Pagination -->
|
|
131
132
|
| Prop | 타입 | 기본값 | 설명 |
|
|
132
133
|
|------|------|--------|------|
|
|
133
|
-
| current * | `number` | - |
|
|
134
|
-
| total * | `number` | - |
|
|
135
|
-
| pageSize | `number` | `10` |
|
|
136
|
-
| siblingCount | `number` | `1` |
|
|
137
|
-
| onChange | `(page: number) => void` | - |
|
|
138
|
-
| size | `"sm" \| "md" \| "lg"` | `"md"` |
|
|
139
|
-
| type | `
|
|
134
|
+
| current * | `number` | - | 현재 페이지 (1부터 시작) |
|
|
135
|
+
| total * | `number` | - | **전체 아이템 수**. 페이지 수가 아니다 |
|
|
136
|
+
| pageSize | `number` | `10` | 한 페이지에 담기는 아이템 수. total 과 함께 페이지 수를 계산한다 |
|
|
137
|
+
| siblingCount | `number` | `1` | 현재 페이지 좌우로 보여줄 번호 개수 |
|
|
138
|
+
| onChange | `(page: number) => void` | - | 페이지를 누르면 새 페이지 번호를 준다 |
|
|
139
|
+
| size | `"sm" \| "md" \| "lg"` | `"md"` | 버튼 크기 |
|
|
140
|
+
| type | `PaginationType \| LegacyStatusType` | `"primary"` | 활성 페이지 색 |
|
|
140
141
|
|
|
141
142
|
`*` = 필수
|
|
142
143
|
<!-- /props:Pagination -->
|
|
@@ -169,9 +170,9 @@ const [activeIndex, setActiveIndex] = useState(0);
|
|
|
169
170
|
<!-- props:Steps -->
|
|
170
171
|
| Prop | 타입 | 기본값 | 설명 |
|
|
171
172
|
|------|------|--------|------|
|
|
172
|
-
| items * | `{ title: string; description?: string }[]` | - |
|
|
173
|
-
| current * | `number` | - |
|
|
174
|
-
| type | `
|
|
173
|
+
| items * | `{ title: string; description?: string }[]` | - | 단계 목록. 순서대로 그려진다 |
|
|
174
|
+
| current * | `number` | - | 진행 중인 단계 인덱스 (0부터). 앞은 완료, 뒤는 대기로 표시된다 |
|
|
175
|
+
| type | `StepsType \| LegacyStatusType` | `"primary"` | 완료·진행 단계의 색 |
|
|
175
176
|
|
|
176
177
|
`*` = 필수
|
|
177
178
|
<!-- /props:Steps -->
|
|
@@ -15,6 +15,44 @@
|
|
|
15
15
|
</Modal>
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
<!-- props:Modal -->
|
|
19
|
+
| Prop | 타입 | 기본값 | 설명 |
|
|
20
|
+
|------|------|--------|------|
|
|
21
|
+
| isOpen * | `boolean` | - | |
|
|
22
|
+
| onClose * | `() => void` | - | |
|
|
23
|
+
| children | `ReactNode` | - | |
|
|
24
|
+
|
|
25
|
+
`*` = 필수
|
|
26
|
+
<!-- /props:Modal -->
|
|
27
|
+
|
|
28
|
+
### 조건부 렌더하지 말 것
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
{open && <MyModal />} // ❌ 닫는 애니메이션이 안 돈다
|
|
32
|
+
<MyModal isOpen={open} /> // ✅
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`Modal` 은 `isOpen` 이 `false` 가 되면 **애니메이션이 끝난 뒤에** 스스로 사라진다.
|
|
36
|
+
호출부가 통째로 걷어내면 `isOpen={false}` 를 받아 볼 틈이 없어 그냥 없어진다.
|
|
37
|
+
|
|
38
|
+
`isOpen` 이 `false` 인 동안 `Modal` 은 `null` 을 돌려주므로 **계속 마운트해 둬도
|
|
39
|
+
DOM 에 아무것도 남지 않는다.** 조건부 렌더가 필요 없다.
|
|
40
|
+
|
|
41
|
+
**깨지지 않고 애니메이션만 조용히 빠지는** 종류라 버그로 안 보인다. 새 화면을 만들 때
|
|
42
|
+
특히 조심할 것.
|
|
43
|
+
|
|
44
|
+
### 열 때마다 대상이 다른 모달
|
|
45
|
+
|
|
46
|
+
계속 마운트해 두면 안쪽 폼이 첫 렌더에서 잡은 상태가 남는다. **열릴 때만 바뀌는 `key`**
|
|
47
|
+
를 줘서 그때 새로 만든다. 닫을 때는 `key` 가 안 바뀌므로 애니메이션이 끝까지 돈다.
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
<EditForm key={editingId ?? "none"} isOpen={!!editingId} target={editingId} />
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
이때 제목 같은 표시값은 **폼이 자기 상태에서** 가져가야 한다. 닫히는 동안 prop 은 이미
|
|
54
|
+
비어 있어서, 그대로 쓰면 `수정 — undefined` 가 사라지는 상자에 스친다.
|
|
55
|
+
|
|
18
56
|
---
|
|
19
57
|
|
|
20
58
|
## Drawer
|
|
@@ -65,11 +103,12 @@
|
|
|
65
103
|
| Prop | 타입 | 기본값 | 설명 |
|
|
66
104
|
|------|------|--------|------|
|
|
67
105
|
| children * | `ReactNode` | - | |
|
|
68
|
-
| title | `ReactNode` | - |
|
|
69
|
-
| description | `ReactNode` | - |
|
|
70
|
-
|
|
|
106
|
+
| title | `ReactNode` | - | 말풍선 첫 줄. 굵게 표시된다 |
|
|
107
|
+
| description | `ReactNode` | - | 말풍선 본문. title 과 둘 중 하나는 있어야 뜬다 |
|
|
108
|
+
| variant | `"dark" \| "light"` | - | 말풍선 배색 |
|
|
109
|
+
| type | `"dark" \| "light"` | - | **@deprecated** 모양 변형은 `variant` 로 받는다. `type` 은 상태 색 전용이다. 기존 사용처가 깨지지 않도록 계속 받는다 — 둘 다 주면 `variant` 가 이긴다. |
|
|
71
110
|
| follow | `boolean` | `false` | 커서를 따라다닌다. 기본값은 `false` — 트리거 요소 기준으로 고정된다 (PopOver/Dropdown/Select 와 같은 방식). 넓은 영역 안에서 **가리키는 지점**이 의미를 가질 때만 켠다. 버튼이나 아이콘처럼 대상이 작은 경우는 고정이 읽기 편하다. |
|
|
72
|
-
| disabled | `boolean` | `false` |
|
|
111
|
+
| disabled | `boolean` | `false` | 말풍선을 띄우지 않는다 |
|
|
73
112
|
|
|
74
113
|
`*` = 필수
|
|
75
114
|
<!-- /props:Tooltip -->
|