@croquiscom/pds 16.56.0 → 16.56.2

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 (21) hide show
  1. package/package.json +1 -1
  2. package/pds-skills/SKILL.md +20 -4
  3. package/pds-skills/resources/components/component-button-iconbutton.props.txt +1 -1
  4. package/pds-skills/resources/components/component-button-popoverbutton.props.txt +1 -1
  5. package/pds-skills/resources/components/component-dropdowncomposite.props.txt +1 -1
  6. package/pds-skills/resources/components/component-dropdownfilter.props.txt +1 -1
  7. package/pds-skills/resources/components/component-dropdowninput.props.txt +3 -3
  8. package/pds-skills/resources/components/component-dropdownmultiselect.props.txt +2 -2
  9. package/pds-skills/resources/components/component-modal-alertmodal.props.txt +1 -1
  10. package/pds-skills/resources/components/component-modal-confirmmodal.props.txt +3 -3
  11. package/pds-skills/resources/components/component-modal-noticemodal.props.txt +1 -1
  12. package/pds-skills/resources/components/component-numericinput.props.txt +1 -1
  13. package/pds-skills/resources/components/component-stack-stack.props.txt +1 -1
  14. package/pds-skills/resources/components/component-timerangepicker.props.txt +1 -1
  15. package/pds-skills/resources/components/component-upload-fileuploadbutton.props.txt +1 -1
  16. package/pds-skills/resources/components/guide-icon-mapping.txt +610 -0
  17. package/pds-skills/resources/components/guide-icon-unicode-lookup.txt +184 -0
  18. package/pds-skills/resources/components/intro.txt +1 -1
  19. package/pds-skills/resources/guides/guide-icon-mapping.md +610 -0
  20. package/pds-skills/resources/guides/guide-icon-unicode-lookup.md +184 -0
  21. package/pds-skills/resources/index.txt +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@croquiscom/pds",
3
- "version": "16.56.0",
3
+ "version": "16.56.2",
4
4
  "description": "Design system for Zigzag's Partner Center",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.es.js",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pds
3
- description: Partner Design System (PDS) React 컴포넌트 라이브러리 사용 가이드. 다음 상황에서 이 스킬을 활성화하라: (1) @croquiscom/pds import가 있는 코드 작성/수정 시, (2) React UI 컴포넌트 구현 시 PDS 사용 여부 확인, (3) Modal, DataTable, Button, Stack 등 PDS 컴포넌트 props 검증 필요 시, (4) semantic_colors, spacing 등 Foundation 토큰 사용 시. PDS는 다른 라이브러리(MUI, Ant Design, Chakra)와 props 네이밍이 다르므로 이 문서의 Naming Differences 테이블을 반드시 따르라.
3
+ description: "Partner Design System (PDS) React 컴포넌트 라이브러리 사용 가이드. 다음 상황에서 이 스킬을 활성화하라 - (1) @croquiscom/pds import가 있는 코드 작성/수정 시, (2) React UI 컴포넌트 구현 시 PDS 사용 여부 확인, (3) Modal, DataTable, Button, Stack 등 PDS 컴포넌트 props 검증 필요 시, (4) semantic_colors, spacing 등 Foundation 토큰 사용 시. PDS는 다른 라이브러리(MUI, Ant Design, Chakra)와 props 네이밍이 다르므로 이 문서의 Naming Differences 테이블을 반드시 따르라."
4
4
  ---
5
5
 
6
6
  # PDS Design System Skills
@@ -167,17 +167,32 @@ import { semantic_colors, spacing, shapes } from '@croquiscom/pds';
167
167
 
168
168
  ---
169
169
 
170
+ ## 아이콘 선택
171
+
172
+ 이모지 대신 정의된 PDS 아이콘 컴포넌트를 사용하라. 다른 오픈소스 라이브러리의 아이콘 이름을 추측하지 마라.
173
+
174
+ - 아이콘 컴포넌트 선택: `resources/guides/guide-icon-mapping.md`
175
+ - **Read 전에 Grep**. 사용 맥락 키워드(예: `"닫기"`, `"더보기"`, `"알림"`, `"햄버거"`)로 검색하라.
176
+ - 표 첫 컬럼이 카테고리(`방향`, `액션`, `UI` 등 20종)이므로 매치 행만으로 분류·코드명·사용 맥락 즉시 파악.
177
+ - 이모지/Unicode 기호 → 코드 매핑: `resources/guides/guide-icon-unicode-lookup.md`
178
+ - **Read 전에 Grep**. Unicode 문자나 이모지(예: `"⚠️"`, `"🔍"`, `"←"`, `"☰"`)로 직접 검색하라.
179
+ - 표 첫 컬럼이 Unicode 기호이므로 매치 행에 대응하는 PDS 아이콘 후보가 즉시 나온다.
180
+
181
+ ---
182
+
170
183
  ## Resources
171
184
 
172
185
  ### 가이드 문서 (`resources/guides/`)
173
186
  - `guide-common-mistakes.md`: 흔한 실수 (Common Mistakes)
174
187
  - `guide-foundation-usage.md`: Foundation 토큰 사용법
175
188
  - `guide-getting-started.md`: 시작하기
189
+ - `guide-icon-mapping.md`: 아이콘 매핑 및 사용 가이드
190
+ - `guide-icon-unicode-lookup.md`: 아이콘 Unicode 역방향 인덱스
176
191
  - `guide-style-utilities.md`: 스타일 유틸리티
177
192
 
178
193
  ### 컴포넌트 레퍼런스 (`resources/components/`)
179
194
 
180
- **인덱스**: `resources/index.txt` - 전체 컴포넌트 목록 (103개)
195
+ **인덱스**: `resources/index.txt` - 전체 컴포넌트 목록 (105개)
181
196
 
182
197
  **파일 패턴** (Quick Reference의 "리소스" 컬럼 참조):
183
198
  - `{리소스}.props.txt` — Tier 1: Props 상세 (타입, 기본값, 설명)
@@ -194,8 +209,9 @@ import { semantic_colors, spacing, shapes } from '@croquiscom/pds';
194
209
  - [ ] Foundation 토큰을 사용했는가? (하드코딩 금지)
195
210
  - [ ] VStack/HStack 대신 Stack을 사용했는가?
196
211
  - [ ] CheckboxGroup, RadioGroup, Divider에 gap 대신 spacing을 사용했는가?
212
+ - [ ] 이모지 대신 정의된 PDS 아이콘을 사용했는가? (mapping guide 참조)
197
213
 
198
214
  ---
199
215
 
200
- **문서 버전**: v16.56.0
201
- **마지막 업데이트**: 2026-04-08
216
+ **문서 버전**: v16.56.2
217
+ **마지막 업데이트**: 2026-05-04
@@ -7,7 +7,7 @@
7
7
  |------|------|----------|---------|-------------|
8
8
  | `kind` | `undefined "outlined_primary" "outlined_secondary" "outlined_negative"` | No | outlined_secondary | shape 속성이 'circle'의 경우 적용되지 않습니다. |
9
9
  | `icon` | `ReactElement<IconProps, string | JSXElementConstructor<any>> | undefined` | No | | 렌더링 될 아이콘 요소 - Icon 컴포넌트 color props가 없다면 currentColor가 지정됩니다. |
10
- | `size` | `undefined "medium" "large" "xsmall" "xlarge" "xxlarge" "xxsmall"` | No | medium | |
10
+ | `size` | `undefined "medium" "large" "xsmall" "xxsmall" "xlarge" "xxlarge"` | No | medium | |
11
11
  | `shape` | `undefined "rectangle" "circle"` | No | rectangle | |
12
12
  | `fill` | `boolean | undefined` | No | | |
13
13
  | `type` | `undefined "submit" "reset" "button"` | No | button | |
@@ -21,7 +21,7 @@
21
21
  | `fill` | `boolean | undefined` | No | | |
22
22
  | `startIcon` | `ReactElement<IconProps, string | JSXElementConstructor<any>> | undefined` | No | | 버튼 좌측 영역에 렌더링 될 아이콘 요소 - Icon 컴포넌트 color props가 있더라도 kind 따라 currentColor가 지정됩니다. - Icon 컴포넌트 size props가 있더라도 Icon 사이즈는 ButtonSize에 따라 고정됩니다. |
23
23
  | `endIcon` | `ReactElement<IconProps, string | JSXElementConstructor<any>> | undefined` | No | | 버튼 우측 영역에 렌더링 될 아이콘 요소 - Icon 컴포넌트 color props가 있더라도 kind 따라 currentColor가 지정됩니다. - Icon 컴포넌트 size props가 있더라도 Icon 사이즈는 ButtonSize에 따라 고정됩니다. |
24
- | `loading` | `boolean | undefined` | No | false | |
25
24
  | `type` | `undefined "submit" "reset" "button"` | No | 'button' | |
25
+ | `loading` | `boolean | undefined` | No | false | |
26
26
  | `asChild` | `boolean | undefined` | No | false | true로 설정 시, 기본 DOM 요소를 렌더링하지 않고 자식 컴포넌트에 props와 동작을 전달합니다. reference: https://www.radix-ui.com/primitives/docs/guides/composition |
27
27
  | `unstableFocusVisible` | `boolean | undefined` | No | | react-aria useFocusRing isFocusVisible 반환값을 제어할 수 있습니다. |
@@ -6,7 +6,7 @@
6
6
  | Name | Type | Required | Default | Description |
7
7
  |------|------|----------|---------|-------------|
8
8
  | `dropdownProps` | `DropdownCompositeDropdownOption<OptionValue>` | Yes | | |
9
- | `inputProps` | `Pick<InputProps, "value" | "onChange" | "placeholder" | "width">` | Yes | | |
9
+ | `inputProps` | `Pick<InputProps, "value" | "onChange" | "width" | "placeholder">` | Yes | | |
10
10
  | `disabled` | `boolean | undefined` | No | | |
11
11
  | `onSubmit` | `(({ dropdownValue }: { dropdownValue?: OptionValue | undefined; }) => void) | undefined` | No | | |
12
12
  | `onReset` | `(({ dropdownValue }: { dropdownValue?: OptionValue | undefined; }) => void) | undefined` | No | | |
@@ -22,10 +22,10 @@
22
22
  | `onChange` | `((value: OptionValue[]) => void) | undefined` | No | | |
23
23
  | `className` | `string | undefined` | No | | |
24
24
  | `disabled` | `boolean | undefined` | No | | |
25
- | `status` | `undefined "error"` | No | | |
26
25
  | `zIndex` | `number | undefined` | No | getZIndex('dropdown') | |
27
26
  | `autoPlacement` | `boolean | undefined` | No | true | floating 요소가 reference 영역을 넘어갈 경우 자동 위치 처리 사용 유무 - 자동 위치 상/하만 적용됩니다. |
28
27
  | `maxHeight` | `number | undefined` | No | DEFAULT_DROPDOWN_MAX_HEIGHT | |
28
+ | `status` | `undefined "error"` | No | | |
29
29
  | `width` | `CSSValueWithLength | undefined` | No | | |
30
30
  | `keyExtractor` | `((item: DropdownOption<OptionValue>, index: number) => string | number) | undefined` | No | | |
31
31
  | `labelHeight` | `CSSValueWithLength | undefined` | No | | |
@@ -15,13 +15,13 @@
15
15
  | `keyExtractor` | `((item: DropdownInputOption<OptionValue>, index: number) => string | number) | undefined` | No | | |
16
16
  | `optionFilter` | `((inputValue: string, item: DropdownInputOption<OptionValue>, index: number) => boolean) | undefined` | No | | |
17
17
  | `size` | `undefined "medium" "large" "xsmall"` | No | 'medium' | |
18
- | `disabled` | `boolean | undefined` | No | | |
19
18
  | `value` | `string | number | undefined` | No | | |
20
- | `status` | `undefined "error"` | No | | |
19
+ | `disabled` | `boolean | undefined` | No | | |
21
20
  | `zIndex` | `number | undefined` | No | getZIndex('dropdown') | |
22
21
  | `autoPlacement` | `boolean | undefined` | No | true | floating 요소가 reference 영역을 넘어갈 경우 자동 위치 처리 사용 유무 - 자동 위치 상/하만 적용됩니다. |
23
- | `placeholder` | `string | undefined` | No | | |
22
+ | `status` | `undefined "error"` | No | | |
24
23
  | `width` | `CSSValueWithLength | undefined` | No | | |
24
+ | `placeholder` | `string | undefined` | No | | |
25
25
  | `optionItemHeight` | `number | undefined` | No | | |
26
26
  | `enableVirtualScroll` | `boolean | undefined` | No | false | |
27
27
  | `unstableFocusVisible` | `boolean | undefined` | No | | react-aria useFocusRing isFocusVisible 반환값을 제어할 수 있습니다. |
@@ -13,12 +13,12 @@
13
13
  | `className` | `string | undefined` | No | | |
14
14
  | `size` | `undefined "medium" "large" "xsmall"` | No | 'medium' | |
15
15
  | `disabled` | `boolean | undefined` | No | | |
16
- | `status` | `undefined "error"` | No | | |
17
16
  | `zIndex` | `number | undefined` | No | getZIndex('dropdown') | |
18
17
  | `autoPlacement` | `boolean | undefined` | No | true | floating 요소가 reference 영역을 넘어갈 경우 자동 위치 처리 사용 유무 - 자동 위치 상/하만 적용됩니다. |
19
18
  | `optionsMatchRefWidth` | `boolean | undefined` | No | true | |
20
- | `placeholder` | `string | undefined` | No | | |
19
+ | `status` | `undefined "error"` | No | | |
21
20
  | `width` | `CSSValueWithLength | undefined` | No | | |
21
+ | `placeholder` | `string | undefined` | No | | |
22
22
  | `keyExtractor` | `((item: DropdownOption<OptionValue>, index: number) => string | number) | undefined` | No | | |
23
23
  | `labelHeight` | `CSSValueWithLength | undefined` | No | | |
24
24
  | `optionItemHeight` | `number | undefined` | No | | |
@@ -18,8 +18,8 @@
18
18
  | `__floatingPortalId` | `string | undefined` | No | | @internal 내부 사용을 위한 floatingPortalId |
19
19
  | `className` | `string | undefined` | No | | |
20
20
  | `fill` | `boolean | undefined` | No | false | |
21
- | `opened` | `boolean | undefined` | No | | |
22
21
  | `zIndex` | `number | undefined` | No | getZIndex('modal') | |
22
+ | `opened` | `boolean | undefined` | No | | |
23
23
  | `width` | `CSSValueWithLength | undefined` | No | 480 | Modal 너비를 지정할 수 있습니다. |
24
24
  | `canClickOutside` | `boolean | undefined` | No | true | outside 영역 클릭시 닫힘 사용 여부 |
25
25
  | `canCloseEscapeKey` | `boolean | undefined` | No | true | escapeKey 키이벤트 닫힘 사용 여부 |
@@ -14,17 +14,17 @@
14
14
  | `fill` | `boolean | undefined` | No | false | |
15
15
  | `title` | `ReactNode` | Yes | | |
16
16
  | `onClose` | `(() => void | Promise<void>) | undefined` | No | | onConfirm/onCancel이 호출된 직후 onClose가 호출됩니다. |
17
- | `opened` | `boolean | undefined` | No | | |
18
- | `text` | `ReactNode` | No | | |
19
17
  | `zIndex` | `number | undefined` | No | getZIndex('modal') | |
18
+ | `text` | `ReactNode` | No | | |
19
+ | `opened` | `boolean | undefined` | No | | |
20
20
  | `width` | `CSSValueWithLength | undefined` | No | 480 | Modal 너비를 지정할 수 있습니다. |
21
21
  | `canClickOutside` | `boolean | undefined` | No | true | outside 영역 클릭시 닫힘 사용 여부 |
22
22
  | `canCloseEscapeKey` | `boolean | undefined` | No | true | escapeKey 키이벤트 닫힘 사용 여부 |
23
23
  | `returnFocus` | `boolean | undefined` | No | true | reference 요소로 포커스 반환 여부 |
24
24
  | `onExited` | `(() => void) | undefined` | No | | Modal destroy시 전달합니다. |
25
- | `subtext` | `ReactNode` | No | | |
26
25
  | `dense` | `boolean | undefined` | No | | |
27
26
  | `confirmText` | `string | undefined` | No | | |
28
27
  | `confirmButtonProps` | `ModalButtonProps | undefined` | No | | |
29
28
  | `onConfirm` | `(() => void | Promise<void>) | undefined` | No | | confirmButton 클릭 이벤트 |
29
+ | `subtext` | `ReactNode` | No | | |
30
30
  | `__floatingPortalId` | `string | undefined` | No | | @internal 내부 사용을 위한 floatingPortalId |
@@ -14,8 +14,8 @@
14
14
  | `onCancel` | `((reason: ModalBaseCancelReason) => void) | undefined` | No | | reason을 포함한 cancel 이벤트를 전달합니다. - 'cancelClick' | 'escapeKeyPress' | 'overlayClick' |
15
15
  | `onChangeCheckReplay` | `((e: ChangeEvent<HTMLInputElement>) => void) | undefined` | No | | 푸터 영역 좌측 체크박스 change 이벤트를 전달합니다. |
16
16
  | `className` | `string | undefined` | No | | |
17
- | `opened` | `boolean | undefined` | No | | |
18
17
  | `zIndex` | `number | undefined` | No | getZIndex('modal') | |
18
+ | `opened` | `boolean | undefined` | No | | |
19
19
  | `canClickOutside` | `boolean | undefined` | No | true | outside 영역 클릭시 닫힘 사용 여부 |
20
20
  | `canCloseEscapeKey` | `boolean | undefined` | No | true | escapeKey 키이벤트 닫힘 사용 여부 |
21
21
  | `returnFocus` | `boolean | undefined` | No | true | reference 요소로 포커스 반환 여부 |
@@ -7,8 +7,8 @@
7
7
  |------|------|----------|---------|-------------|
8
8
  | `size` | `undefined "medium" "large" "xsmall"` | No | 'medium'
9
9
  'medium' | |
10
- | `leftAddon` | `string | undefined` | No | | Input prefix 요소 |
11
10
  | `status` | `undefined "info" "error" "success"` | No | 'info' | |
11
+ | `leftAddon` | `string | undefined` | No | | Input prefix 요소 |
12
12
  | `width` | `CSSValueWithLength | undefined` | No | | |
13
13
  | `startElement` | `ReactNode | ReactElement<IconProps, string | JSXElementConstructor<any>>` | No | | 좌측 영역에 렌더링 될 요소 |
14
14
  | `endElement` | `ReactNode | ReactElement<IconProps, string | JSXElementConstructor<any>>` | No | | 우측 영역에 렌더링 될 요소 |
@@ -15,8 +15,8 @@
15
15
  | `justify` | `JustifyContent | undefined` | No | | |
16
16
  | `gap` | `Gap<string | number> | undefined` | No | | |
17
17
  | `className` | `string | undefined` | No | | |
18
- | `height` | `CSSValueWithLength | undefined` | No | | |
19
18
  | `width` | `CSSValueWithLength | undefined` | No | | |
19
+ | `height` | `CSSValueWithLength | undefined` | No | | |
20
20
  | `p` | `CSSValueWithLength | undefined` | No | | |
21
21
  | `mt` | `CSSValueWithLength | undefined` | No | | |
22
22
  | `m` | `CSSValueWithLength | undefined` | No | | |
@@ -15,8 +15,8 @@
15
15
  | `onClose` | `(() => void) | undefined` | No | | |
16
16
  | `disabled` | `boolean | undefined` | No | | |
17
17
  | `zIndex` | `number | undefined` | No | getZIndex('picker') | |
18
- | `readOnly` | `boolean | undefined` | No | false | |
19
18
  | `width` | `CSSValueWithLength | undefined` | No | 100% | Input 너비를 지정할 수 있습니다. |
19
+ | `readOnly` | `boolean | undefined` | No | false | |
20
20
  | `onOpen` | `(() => void) | undefined` | No | | |
21
21
  | `showRemoveButton` | `boolean | undefined` | No | false | Input 우측에 값 지우기 버튼 표시 여부 true: 값이 있을 때 마우스 호버 시 지우기(X) 버튼 표시 false: 항상 시계 아이콘만 표시 값이 없을 때는 설정과 관계없이 시계 아이콘이 표시됩니다. |
22
22
  | `incrementMinute` | `number | undefined` | No | 1 | 지정된 배수 단위로 분 설정이 가능합니다. |
@@ -8,5 +8,5 @@
8
8
  | `label` | `ReactNode` | Yes | '파일 업로드' | |
9
9
  | `multiple` | `boolean | undefined` | No | false | |
10
10
  | `loading` | `boolean | undefined` | No | | |
11
- | `buttonProps` | `Omit<ButtonProps, "loading" | "disabled" | "onClick"> | undefined` | No | | |
11
+ | `buttonProps` | `Omit<ButtonProps, "disabled" | "onClick" | "loading"> | undefined` | No | | |
12
12
  | `onFileUpload` | `((file: File | File[]) => void) | undefined` | No | | |