@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.
Files changed (103) hide show
  1. package/dist/components/AutoResizeTextArea/index.d.cts +1 -0
  2. package/dist/components/AutoResizeTextArea/index.d.ts +1 -0
  3. package/dist/components/Badge/index.cjs +5 -1
  4. package/dist/components/Badge/index.css +1 -0
  5. package/dist/components/Badge/index.d.cts +1 -0
  6. package/dist/components/Badge/index.d.ts +1 -0
  7. package/dist/components/Badge/index.js +5 -1
  8. package/dist/components/Box/index.d.cts +3 -0
  9. package/dist/components/Box/index.d.ts +3 -0
  10. package/dist/components/Chart/index.cjs +7 -6
  11. package/dist/components/Chart/index.d.cts +12 -1
  12. package/dist/components/Chart/index.d.ts +12 -1
  13. package/dist/components/Chart/index.js +7 -6
  14. package/dist/components/ChatInput/index.d.cts +6 -0
  15. package/dist/components/ChatInput/index.d.ts +6 -0
  16. package/dist/components/CheckBox/index.cjs +6 -2
  17. package/dist/components/CheckBox/index.css +2 -0
  18. package/dist/components/CheckBox/index.d.cts +10 -2
  19. package/dist/components/CheckBox/index.d.ts +10 -2
  20. package/dist/components/CheckBox/index.js +6 -2
  21. package/dist/components/Chip/index.d.cts +2 -0
  22. package/dist/components/Chip/index.d.ts +2 -0
  23. package/dist/components/DatePicker/index.cjs +4 -3
  24. package/dist/components/DatePicker/index.js +4 -3
  25. package/dist/components/Drawer/index.d.cts +1 -0
  26. package/dist/components/Drawer/index.d.ts +1 -0
  27. package/dist/components/FileUpload/index.d.cts +6 -0
  28. package/dist/components/FileUpload/index.d.ts +6 -0
  29. package/dist/components/ImageSelector/index.d.cts +3 -0
  30. package/dist/components/ImageSelector/index.d.ts +3 -0
  31. package/dist/components/Input/index.d.cts +4 -0
  32. package/dist/components/Input/index.d.ts +4 -0
  33. package/dist/components/NotificationBadge/index.cjs +5 -1
  34. package/dist/components/NotificationBadge/index.css +1 -0
  35. package/dist/components/NotificationBadge/index.d.cts +6 -2
  36. package/dist/components/NotificationBadge/index.d.ts +6 -2
  37. package/dist/components/NotificationBadge/index.js +5 -1
  38. package/dist/components/Pagination/index.cjs +6 -2
  39. package/dist/components/Pagination/index.css +1 -0
  40. package/dist/components/Pagination/index.d.cts +13 -2
  41. package/dist/components/Pagination/index.d.ts +13 -2
  42. package/dist/components/Pagination/index.js +6 -2
  43. package/dist/components/Progress/index.cjs +6 -2
  44. package/dist/components/Progress/index.css +1 -0
  45. package/dist/components/Progress/index.d.cts +11 -2
  46. package/dist/components/Progress/index.d.ts +11 -2
  47. package/dist/components/Progress/index.js +6 -2
  48. package/dist/components/Radio/index.cjs +6 -2
  49. package/dist/components/Radio/index.css +2 -0
  50. package/dist/components/Radio/index.d.cts +11 -2
  51. package/dist/components/Radio/index.d.ts +11 -2
  52. package/dist/components/Radio/index.js +6 -2
  53. package/dist/components/Select/index.d.cts +5 -1
  54. package/dist/components/Select/index.d.ts +5 -1
  55. package/dist/components/Skeleton/index.d.cts +3 -0
  56. package/dist/components/Skeleton/index.d.ts +3 -0
  57. package/dist/components/Spinner/index.cjs +6 -2
  58. package/dist/components/Spinner/index.css +1 -0
  59. package/dist/components/Spinner/index.d.cts +8 -2
  60. package/dist/components/Spinner/index.d.ts +8 -2
  61. package/dist/components/Spinner/index.js +6 -2
  62. package/dist/components/Steps/index.cjs +6 -2
  63. package/dist/components/Steps/index.css +11 -0
  64. package/dist/components/Steps/index.d.cts +9 -2
  65. package/dist/components/Steps/index.d.ts +9 -2
  66. package/dist/components/Steps/index.js +6 -2
  67. package/dist/components/Switch/index.cjs +6 -2
  68. package/dist/components/Switch/index.css +2 -0
  69. package/dist/components/Switch/index.d.cts +10 -2
  70. package/dist/components/Switch/index.d.ts +10 -2
  71. package/dist/components/Switch/index.js +6 -2
  72. package/dist/components/Tab/index.cjs +4 -3
  73. package/dist/components/Tab/index.d.cts +12 -1
  74. package/dist/components/Tab/index.d.ts +12 -1
  75. package/dist/components/Tab/index.js +4 -3
  76. package/dist/components/Tag/index.cjs +5 -3
  77. package/dist/components/Tag/index.d.cts +12 -2
  78. package/dist/components/Tag/index.d.ts +12 -2
  79. package/dist/components/Tag/index.js +5 -3
  80. package/dist/components/TextArea/index.d.cts +3 -0
  81. package/dist/components/TextArea/index.d.ts +3 -0
  82. package/dist/components/Tooltip/index.cjs +4 -2
  83. package/dist/components/Tooltip/index.d.cts +11 -1
  84. package/dist/components/Tooltip/index.d.ts +11 -1
  85. package/dist/components/Tooltip/index.js +4 -2
  86. package/dist/components/index.cjs +46 -29
  87. package/dist/components/index.css +21 -0
  88. package/dist/components/index.d.cts +1 -0
  89. package/dist/components/index.d.ts +1 -0
  90. package/dist/components/index.js +46 -29
  91. package/dist/index.cjs +46 -29
  92. package/dist/index.css +21 -0
  93. package/dist/index.d.cts +1 -0
  94. package/dist/index.d.ts +1 -0
  95. package/dist/index.js +46 -29
  96. package/dist/status-g_KP3qT6.d.cts +8 -0
  97. package/dist/status-g_KP3qT6.d.ts +8 -0
  98. package/guidelines/AGENT_PROMPT.md +15 -0
  99. package/guidelines/components/card.md +3 -3
  100. package/guidelines/components/feedback.md +1 -1
  101. package/guidelines/components/navigation.md +16 -15
  102. package/guidelines/components/overlay.md +43 -4
  103. 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 | `"error" \| "success" \| "warning" \| "info" \| "brand"` | `"error"` | 뱃지 색. 뱃지가 렌더될 때만 의미가 있다 |
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
- | type * | `"default" \| "toggle"` | - | |
35
- | size | `"sm" \| "md" \| "lg"` | `"md"` | |
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 | `"brand" \| "success" \| "error" \| "warning" \| "info"` | `"brand"` | |
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 | `"brand" \| "success" \| "error" \| "warning" \| "info"` | `"brand"` | |
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
- | type | `"dark" \| "light"` | `"dark"` | |
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 -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@x-plat/design-system",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "XPLAT UI Design System",
5
5
  "author": "XPLAT WOONG",
6
6
  "main": "dist/index.cjs",