# 흔한 실수 (Common Mistakes) AI 에이전트와 개발자가 PDS 사용 시 자주 하는 실수 패턴입니다. 코드 생성 전 이 문서를 확인하세요. ## 먼저 — 새 이름을 쓰세요 네이밍 전환 중이라 `@croquiscom/pds` 가 옛 이름과 새 이름을 둘 다 받습니다. **이 문서는 새 이름 기준**입니다. 옛 이름은 deprecated 이고 개발 모드에서 `[PDS deprecated]` 경고가 납니다. 아래 일부 항목의 「옛 이름」 줄은 헷갈리기 쉬운 것만 적은 예시이고, 전체 목록이 아닙니다. 기존 코드를 고칠 때는 지금 고치는 prop 만 새 이름으로 바꿔도 됩니다. --- ## 1. Deprecated 컴포넌트 사용 ### VStack, HStack 사용 금지 VStack과 HStack은 deprecated입니다. Stack 컴포넌트의 `direction` prop을 사용하세요. - **문제**: ``, `` 사용 - **해결**: ``, `` 사용 - **참조**: Component/Stack/Stack 문서 ### CheckboxGroup, RadioGroup의 gap prop CheckboxGroup과 RadioGroup은 `gap` 대신 `spacing` prop을 사용합니다. - **문제**: ``, `` - **해결**: ``, `` - **참조**: Component/Control/CheckboxGroup, Component/Control/RadioGroup 문서 ### Divider의 gap prop Divider는 `gap` 대신 `spacing` prop을 사용합니다. - **문제**: `` - **해결**: `` - **참조**: Component/Divider 문서 --- ## 2. Props 네이밍 혼동 ### Modal 열림 상태 다른 라이브러리의 패턴을 사용하지 마세요. - **잘못된 props**: `visible`, `isOpen` - **올바른 prop**: `open` - **옛 이름(deprecated)**: `opened` - **참조**: Component/Modal/BasicModal 문서 ### Modal 닫기 이벤트 Modal은 `onCancel`을 사용합니다. `onClose`가 아닙니다. - **잘못된 props**: `onClose` - **올바른 prop**: `onCancel` (reason 파라미터 받음) - **주의**: Banner, Drawer는 `onClose` 사용 - 컴포넌트마다 다름! - **참조**: Component/Modal/BasicModal, Component/Banner 문서 ### Button 스타일 Button은 `variant`와 `color` 두 축을 사용합니다. 옛 `kind` 한 축이 둘로 갈라졌습니다. - **잘못된 패턴**: `type="primary"` (Ant Design 식) — `type` 은 `'button' | 'submit' | 'reset'` 만 받는 HTML 속성입니다 - **올바른 prop**: `variant` ('filled', 'outlined') + `color` ('primary', 'secondary', 'emphasis', 'destructive') - **옛 이름(deprecated)**: `kind` 한 축입니다. 값이 둘로 갈라지므로 이름만 바꾸면 안 됩니다. | 옛 `kind` | 새 `variant` | 새 `color` | | -------------------- | ------------ | ----------- | | `primary` | `filled` | `primary` | | `secondary` | `filled` | `secondary` | | `black` | `filled` | `emphasis` | | `negative` | `filled` | `destructive` | | `outlined_primary` | `outlined` | `primary` | | `outlined_secondary` | `outlined` | `secondary` | | `outlined_black` | `outlined` | `emphasis` | | `outlined_negative` | `outlined` | `destructive` | - **참조**: Component/Button/Button 문서 ### DataTable 데이터 DataTable은 `rows`를 사용합니다. - **잘못된 props**: `data`, `dataSource` - **올바른 prop**: `rows` - **참조**: Component/Table/DataTable 문서 ### Stack 간격 Stack은 `gap`을 사용합니다. - **잘못된 props**: `spacing`, `gutter` - **올바른 prop**: `gap` - **참조**: Component/Stack/Stack 문서 ### Pagination props Pagination은 표준 prop 이름을 사용합니다. - **잘못된 props**: `current`, `total`, `count` - **올바른 props**: `page`, `totalPages`, `onChange` - **옛 이름(deprecated)**: `currentPage`, `onChangePage` - **참조**: Component/Pagination/Pagination 문서 ### LineTabs 활성 탭 LineTabs는 `activeTabId`를 사용합니다. - **잘못된 props**: `value`, `activeKey`, `index` - **올바른 prop**: `activeTabId` - **참조**: Component/LineTabs 문서 --- ## 3. Foundation 토큰 미사용 ### 색상 하드코딩 색상값을 직접 사용하지 마세요. `semantic_colors` 토큰을 사용하세요. - **잘못된 패턴**: `color="#333333"`, `color="rgb(51, 51, 51)"`, `backgroundColor="#f5f5f5"` - **올바른 패턴**: `color={semantic_colors.content.primary}`, `backgroundColor={semantic_colors.background.secondary}` - **참조**: Foundation/SemanticColors 문서 ### 간격 하드코딩 간격값을 직접 사용하지 마세요. `spacing` 토큰 또는 숫자를 사용하세요. - **잘못된 패턴**: `padding="24px"`, `margin="16px"`, `gap="8px"` - **올바른 패턴**: `p={24}`, `m={16}`, `gap={8}` 또는 `padding={spacing.spacing_6}` - **참조**: Foundation/Spacing 문서 ### gap에 단위 없는 문자열 사용 `gap`에 단위 없는 문자열을 사용하면 CSS 오류가 발생합니다. - **잘못된 패턴**: `gap="16"` (단위 없는 문자열) - **올바른 패턴**: `gap={16}` (숫자) 또는 `gap="1rem"` (단위 포함 문자열) --- ## 4. 타 라이브러리 패턴 추측 ### Material-UI 패턴 MUI 패턴을 PDS에 적용하지 마세요. | Material-UI | PDS | |-------------|-----| | `` | `` (같습니다) | | `