sellmate-design-system-react 3.0.0 → 3.1.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 (75) hide show
  1. package/AGENTS.md +661 -0
  2. package/README.md +85 -0
  3. package/dist/components/SActionModal/README.md +41 -0
  4. package/dist/components/SBadge/README.md +25 -0
  5. package/dist/components/SBarcodeInput/README.md +64 -0
  6. package/dist/components/SButton/README.md +49 -0
  7. package/dist/components/SCalendar/README.md +42 -0
  8. package/dist/components/SCallout/README.md +29 -0
  9. package/dist/components/SCard/README.md +12 -0
  10. package/dist/components/SCheckbox/README.md +44 -0
  11. package/dist/components/SChip/README.md +57 -0
  12. package/dist/components/SChipInput/README.md +77 -0
  13. package/dist/components/SCircleProgress/README.md +35 -0
  14. package/dist/components/SConfirmModal/README.md +61 -0
  15. package/dist/components/SDatePicker/README.md +62 -0
  16. package/dist/components/SDateRangePicker/README.md +64 -0
  17. package/dist/components/SDivider/README.md +25 -0
  18. package/dist/components/SDraggableItem/README.md +40 -0
  19. package/dist/components/SDropdownButton/README.md +50 -0
  20. package/dist/components/SExpansionItem/README.md +40 -0
  21. package/dist/components/SField/README.md +91 -0
  22. package/dist/components/SFilePicker/README.md +72 -0
  23. package/dist/components/SForm/README.md +31 -0
  24. package/dist/components/SGhostButton/README.md +76 -0
  25. package/dist/components/SGnb/README.md +56 -0
  26. package/dist/components/SGuide/README.md +34 -0
  27. package/dist/components/SIcon/README.md +91 -0
  28. package/dist/components/SInput/README.md +66 -0
  29. package/dist/components/SKeyValueTable/README.md +59 -0
  30. package/dist/components/SLayout/README.md +42 -0
  31. package/dist/components/SLinearProgress/README.md +17 -0
  32. package/dist/components/SList/README.md +14 -0
  33. package/dist/components/SListItem/README.md +19 -0
  34. package/dist/components/SLoadingContainer/README.md +29 -0
  35. package/dist/components/SLoadingModal/README.md +52 -0
  36. package/dist/components/SModal/README.md +192 -0
  37. package/dist/components/SModalContainer/README.md +49 -0
  38. package/dist/components/SNumberInput/README.md +74 -0
  39. package/dist/components/SPage/README.md +25 -0
  40. package/dist/components/SPagination/README.md +40 -0
  41. package/dist/components/SPopover/README.md +54 -0
  42. package/dist/components/SPopup/README.md +38 -0
  43. package/dist/components/SPortal/README.md +51 -0
  44. package/dist/components/SRadio/README.md +57 -0
  45. package/dist/components/SRadioButton/README.md +24 -0
  46. package/dist/components/SScrollArea/README.md +16 -0
  47. package/dist/components/SSectionHeaderCard/README.md +51 -0
  48. package/dist/components/SSelect/README.md +79 -0
  49. package/dist/components/SStepper/README.md +30 -0
  50. package/dist/components/SSwitch/README.md +24 -0
  51. package/dist/components/STable/README.md +82 -0
  52. package/dist/components/STableBar/README.md +28 -0
  53. package/dist/components/STabs/README.md +37 -0
  54. package/dist/components/STag/README.md +44 -0
  55. package/dist/components/STextLink/README.md +48 -0
  56. package/dist/components/STextarea/README.md +60 -0
  57. package/dist/components/STimePicker/README.md +65 -0
  58. package/dist/components/STimeRangePicker/README.md +63 -0
  59. package/dist/components/SToast/README.md +70 -0
  60. package/dist/components/SToggle/README.md +22 -0
  61. package/dist/components/STooltip/README.md +57 -0
  62. package/dist/llms.txt +3496 -0
  63. package/dist/styles.css +209 -0
  64. package/dist/theme.css +8 -0
  65. package/eslint/index.mjs +66 -0
  66. package/eslint/lib/class-names.mjs +119 -0
  67. package/eslint/lib/table-column.mjs +53 -0
  68. package/eslint/rules/no-arbitrary-class.mjs +91 -0
  69. package/eslint/rules/no-off-scale-spacing.mjs +67 -0
  70. package/eslint/rules/no-raw-html-control.mjs +117 -0
  71. package/eslint/rules/prefer-typo-preset.mjs +73 -0
  72. package/eslint/rules/require-locale-number.mjs +78 -0
  73. package/eslint/rules/table-numeric-align.mjs +93 -0
  74. package/eslint/scale.gen.mjs +16 -0
  75. package/package.json +9 -4
@@ -0,0 +1,74 @@
1
+ # SNumberInput
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SNumberInput
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `value?` | `string \| number \| null` | — | 입력 값 |
12
+ | `size?` | `SNumberInputSize` | `'sm'` | 크기 |
13
+ | `min?` | `number` | `Number.NEGATIVE_INFINITY` | 최솟값 |
14
+ | `max?` | `number` | `Number.POSITIVE_INFINITY` | 최댓값 |
15
+ | `step?` | `number` | `1` | 스텝 단위 |
16
+ | `useButton?` | `boolean` | `false` | 증감 버튼 표시 |
17
+ | `useDecimal?` | `boolean` | `false` | 소수점 입력 허용 |
18
+ | `maxDecimalLength?` | `number` | — | 소수점 이하 최대 자리수 |
19
+ | `inputPrefix?` | `string` | `''` | 입력 앞 접두 텍스트 |
20
+ | `inputSuffix?` | `string` | `''` | 입력 뒤 접미 텍스트 |
21
+ | `inputClass?` | `string` | — | 네이티브 input className |
22
+ | `inputStyle?` | `CSSProperties` | — | 네이티브 input style |
23
+ | `autoFocus?` | `boolean` | — | 마운트 시 자동 포커스 |
24
+ | `name?` | `string` | — | 폼 연동 name |
25
+ | `placeholder?` | `string` | `'입력해 주세요.'` | |
26
+ | `disabled?` | `boolean` | `false` | |
27
+ | `readOnly?` | `boolean` | `false` | |
28
+ | `rules?` | `Rule[]` | — | 유효성 규칙 — blur 시 검증 |
29
+ | `status?` | `SFieldStatus` | — | |
30
+ | `focused?` | `boolean` | — | |
31
+ | `hovered?` | `boolean` | — | |
32
+ | `label?` | `string` | — | |
33
+ | `labelWidth?` | `number \| string` | — | |
34
+ | `icon?` | `SIconName` | — | |
35
+ | `iconColor?` | `SColor` | — | |
36
+ | `labelTooltip?` | `string` | — | |
37
+ | `labelTooltipProps?` | `Partial<STooltipProps>` | — | |
38
+ | `addonLabel?` | `string` | — | |
39
+ | `addonAlign?` | `SFieldAddonAlign` | — | |
40
+ | `hint?` | `string` | — | |
41
+ | `error?` | `boolean` | — | |
42
+ | `errorMessage?` | `string` | — | |
43
+ | `width?` | `number \| string` | — | |
44
+ | `className?` | `string` | — | |
45
+ | `style?` | `CSSProperties` | — | |
46
+
47
+ #### Events
48
+
49
+ | Event | Type | Description |
50
+ |-------|------|-------------|
51
+ | `onValueChange` | `(value: number \| null) => void` | 값 변경 (sdUpdate) — number|null 전달 |
52
+ | `onFocus` | `(e: React.FocusEvent<HTMLInputElement>) => void` | 포커스 이벤트 (sdFocus) |
53
+ | `onBlur` | `(e: React.FocusEvent<HTMLInputElement>) => void` | 블러 이벤트 (sdBlur) |
54
+
55
+ ## Dependencies
56
+
57
+ ### Used by
58
+
59
+ - [SKeyValueTable](../SKeyValueTable)
60
+
61
+ ### Depends on
62
+
63
+ - [SField](../SField)
64
+ - [SIcon](../SIcon)
65
+
66
+ ### Graph
67
+
68
+ ```mermaid
69
+ graph TD;
70
+ SNumberInput --> SField
71
+ SNumberInput --> SIcon
72
+ SKeyValueTable --> SNumberInput
73
+ style SNumberInput fill:#f9f,stroke:#333,stroke-width:4px
74
+ ```
@@ -0,0 +1,25 @@
1
+ # SPage
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SPage
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `background?` | `SPageBackground` | `'frame'` | 페이지 배경 표면. frame=흰 콘텐츠 면, neutral=옅은 회색 면, screen=앱 바탕. 스크롤바 처리도 여기 묶여 있다 — 셋 다 구분선+트랙 배경이고, 트랙 색만 neutral 에서 흰색이 된다. |
12
+
13
+ ## Dependencies
14
+
15
+ ### Depends on
16
+
17
+ - [SLayout](../SLayout)
18
+
19
+ ### Graph
20
+
21
+ ```mermaid
22
+ graph TD;
23
+ SPage --> SLayout
24
+ style SPage fill:#f9f,stroke:#333,stroke-width:4px
25
+ ```
@@ -0,0 +1,40 @@
1
+ # SPagination
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SPagination
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `currentPage?` | `number` | `1` | 현재 페이지 |
12
+ | `lastPage?` | `number` | `1` | 마지막 페이지 |
13
+ | `simple?` | `boolean` | `false` | 단순 모드 (현재/마지막만 표시) |
14
+ | `className?` | `string` | — | |
15
+ | `style?` | `CSSProperties` | — | |
16
+
17
+ #### Events
18
+
19
+ | Event | Type | Description |
20
+ |-------|------|-------------|
21
+ | `onPageChange` | `(page: number) => void` | 페이지 변경 (sdPageChange) |
22
+
23
+ ## Dependencies
24
+
25
+ ### Used by
26
+
27
+ - [STable](../STable)
28
+
29
+ ### Depends on
30
+
31
+ - [SIcon](../SIcon)
32
+
33
+ ### Graph
34
+
35
+ ```mermaid
36
+ graph TD;
37
+ SPagination --> SIcon
38
+ STable --> SPagination
39
+ style SPagination fill:#f9f,stroke:#333,stroke-width:4px
40
+ ```
@@ -0,0 +1,54 @@
1
+ # SPopover
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SPopover
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `open?` | `boolean` | — | 표시 여부 (제어). onOpenChange 와 함께 사용 |
12
+ | `defaultOpen?` | `boolean` | — | 기본 표시 여부 (비제어) |
13
+ | `placement?` | `SPopoverPlacement` | `'bottom'` | 표시 방향 |
14
+ | `type?` | `SPopoverType` | `'default'` | 색상 타입 (default: 다크 / danger·warning·accent: 라이트 배경) |
15
+ | `menuTitle` | `string` | — | 메뉴 제목 (필수) |
16
+ | `titleIcon?` | `SIconName` | — | 제목 좌측 아이콘 (선택) |
17
+ | `children?` | `ReactNode` | — | 본문 내용 |
18
+ | `trigger?` | `ReactNode` | — | 커스텀 트리거. 없으면 아이콘 트리거 렌더 |
19
+ | `icon?` | `SIconName` | `'helpOutline'` | 기본(아이콘) 트리거 설정 |
20
+ | `iconSize?` | `number` | `12` | |
21
+ | `color?` | `SColor` | `'#01BB4B'` | 트리거 아이콘 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 |
22
+ | `leftLinkLabel?` | `string` | — | 하단 좌측 링크 레이블 (선택). 스타일은 chevron 링크로 고정 |
23
+ | `buttonLabel` | `string` | — | 하단 우측 버튼 레이블 (필수). 색상/스타일은 type 별로 고정 |
24
+ | `ariaLabel?` | `string` | — | |
25
+ | `menuClassName?` | `string` | — | |
26
+ | `style?` | `CSSProperties` | — | |
27
+
28
+ #### Events
29
+
30
+ | Event | Type | Description |
31
+ |-------|------|-------------|
32
+ | `onOpenChange` | `(open: boolean) => void` | 표시 상태 변경 (sdShowChange) |
33
+ | `onLeftLinkClick` | `() => void` | 하단 좌측 링크 클릭 |
34
+ | `onButtonClick` | `() => void` | 하단 우측 버튼 클릭 |
35
+
36
+ ## Dependencies
37
+
38
+ ### Depends on
39
+
40
+ - [SButton](../SButton)
41
+ - [SGhostButton](../SGhostButton)
42
+ - [SIcon](../SIcon)
43
+ - [STextLink](../STextLink)
44
+
45
+ ### Graph
46
+
47
+ ```mermaid
48
+ graph TD;
49
+ SPopover --> SButton
50
+ SPopover --> SGhostButton
51
+ SPopover --> SIcon
52
+ SPopover --> STextLink
53
+ style SPopover fill:#f9f,stroke:#333,stroke-width:4px
54
+ ```
@@ -0,0 +1,38 @@
1
+ # SPopup
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SPopup
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `popupTitle?` | `string` | `''` | 헤더 제목 |
12
+ | `type?` | `SPopupType` | `'default'` | 타입 (헤더 색상) |
13
+ | `useFooter?` | `boolean` | `true` | 하단 footer 표시 여부 |
14
+ | `submitButton?` | `SPopupSubmitButton` | — | 확인 버튼 설정 |
15
+ | `footerLeft?` | `ReactNode` | — | footer 좌측 영역 |
16
+ | `children?` | `ReactNode` | — | 본문 |
17
+ | `className?` | `string` | — | |
18
+ | `style?` | `CSSProperties` | — | |
19
+
20
+ #### Events
21
+
22
+ | Event | Type | Description |
23
+ |-------|------|-------------|
24
+ | `onSubmit` | `() => void` | 확인 버튼 클릭 (sdSubmit) |
25
+
26
+ ## Dependencies
27
+
28
+ ### Depends on
29
+
30
+ - [SButton](../SButton)
31
+
32
+ ### Graph
33
+
34
+ ```mermaid
35
+ graph TD;
36
+ SPopup --> SButton
37
+ style SPopup fill:#f9f,stroke:#333,stroke-width:4px
38
+ ```
@@ -0,0 +1,51 @@
1
+ # SPortal
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SPortal
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `open` | `boolean` | — | 표시 여부 (제어). onClose 와 함께 사용한다. |
12
+ | `anchorRef` | `RefObject<HTMLElement \| null>` | — | 위치 기준이 되는 앵커 엘리먼트 ref (sd-portal `parentRef` 대응). 트리거 버튼 등에 그대로 걸면 그 엘리먼트에 붙어서 뜬다. |
13
+ | `placement?` | `SPortalPlacement` | `'bottom'` | 표시 방향 (공간이 부족하면 자동으로 반대 방향으로 전환). |
14
+ | `align?` | `SPortalAlign` | `'start'` | 교차축 정렬 (start·center·end). |
15
+ | `offset?` | `number` | `4` | 앵커로부터의 간격 px (sd-portal offset[1]). |
16
+ | `alignOffset?` | `number` | `0` | 정렬축 오프셋 px (sd-portal offset[0]). |
17
+ | `fit?` | `boolean` | `false` | 앵커 너비에 맞춰 최소 너비를 잡는다. |
18
+ | `maxHeight?` | `number` | — | 콘텐츠 최대 높이 px. 넘치면 세로 스크롤. |
19
+ | `autoClose?` | `boolean` | `false` | 콘텐츠 내부를 클릭하면 자동으로 닫는다. |
20
+ | `persistent?` | `boolean` | `false` | 외부 클릭 · ESC 로 닫히지 않게 한다. |
21
+ | `viewportPadding?` | `number` | `0` | 뷰포트 경계 여백 px (충돌 회피 패딩). |
22
+ | `children?` | `ReactNode` | — | 본문 내용 (콘텐츠 자유). |
23
+ | `className?` | `string` | — | |
24
+ | `style?` | `CSSProperties` | — | |
25
+ | `ariaLabel?` | `string` | — | |
26
+
27
+ #### Events
28
+
29
+ | Event | Type | Description |
30
+ |-------|------|-------------|
31
+ | `onClose` | `() => void` | 외부 클릭 · ESC 등으로 닫힘이 요청될 때 (sd-portal `sdClose` 대응). |
32
+ | `onOpenChange` | `(open: boolean) => void` | 열림/닫힘 변경 전체 콜백 (선택). |
33
+ | `onOpenAutoFocus` | `(event: Event) => void` | 열릴 때 포커스 이동 처리 (기본은 Radix가 콘텐츠로 포커스를 옮김). e.preventDefault()로 막을 수 있다. |
34
+ | `onCloseAutoFocus` | `(event: Event) => void` | 닫힐 때 포커스 복귀 처리 (기본은 Radix가 앵커로 포커스를 되돌림). e.preventDefault()로 막을 수 있다. |
35
+ | `onPointerDownOutside` | `(event: Event) => void` | 바깥 영역 pointerdown 으로 닫힘이 시작될 때 (앵커 위 클릭·persistent 는 제외). |
36
+
37
+ ## Dependencies
38
+
39
+ ### Used by
40
+
41
+ - [SChipInput](../SChipInput)
42
+ - [SSelect](../SSelect)
43
+
44
+ ### Graph
45
+
46
+ ```mermaid
47
+ graph TD;
48
+ SChipInput --> SPortal
49
+ SSelect --> SPortal
50
+ style SPortal fill:#f9f,stroke:#333,stroke-width:4px
51
+ ```
@@ -0,0 +1,57 @@
1
+ # SRadio
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SRadioGroup
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `options?` | `SRadioOption[]` | `[]` | 옵션 목록 |
12
+ | `value?` | `SRadioValue \| null` | — | 현재 선택 값 |
13
+ | `direction?` | `'vertical' \| 'horizontal'` | `'vertical'` | 배치 방향 |
14
+ | `disabled?` | `boolean` | `false` | 전체 비활성 |
15
+ | `groupName?` | `string` | — | 라디오 name 속성 (form-agnostic 그룹핑) |
16
+ | `className?` | `string` | — | |
17
+ | `style?` | `CSSProperties` | — | |
18
+
19
+ #### Events
20
+
21
+ | Event | Type | Description |
22
+ |-------|------|-------------|
23
+ | `onValueChange` | `(val: SRadioValue) => void` | 선택 변경 (sdUpdate) |
24
+
25
+ ### SRadio
26
+
27
+ #### Props
28
+
29
+ | Prop | Type | Default | Description |
30
+ |------|------|---------|-------------|
31
+ | `val` | `SRadioValue` | — | 이 라디오의 값 |
32
+ | `value?` | `SRadioValue \| null` | — | 그룹의 현재 선택 값 |
33
+ | `label?` | `string` | — | 라벨 |
34
+ | `disabled?` | `boolean` | `false` | 비활성 |
35
+ | `name?` | `string` | — | native radio name (form-agnostic 그룹핑) |
36
+ | `className?` | `string` | — | |
37
+ | `style?` | `CSSProperties` | — | |
38
+
39
+ #### Events
40
+
41
+ | Event | Type | Description |
42
+ |-------|------|-------------|
43
+ | `onValueChange` | `(val: SRadioValue) => void` | 선택 변경 (sdUpdate) — 선택된 val 전달 |
44
+
45
+ ## Dependencies
46
+
47
+ ### Used by
48
+
49
+ - [SKeyValueTable](../SKeyValueTable)
50
+
51
+ ### Graph
52
+
53
+ ```mermaid
54
+ graph TD;
55
+ SKeyValueTable --> SRadio
56
+ style SRadio fill:#f9f,stroke:#333,stroke-width:4px
57
+ ```
@@ -0,0 +1,24 @@
1
+ # SRadioButton
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SRadioButton
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `options?` | `SRadioButtonOption[]` | `[]` | 옵션 목록 |
12
+ | `value?` | `string \| number \| null` | — | 현재 선택 값 |
13
+ | `size?` | `SRadioButtonSize` | `'sm'` | 크기 |
14
+ | `disabled?` | `boolean` | `false` | 전체 비활성 |
15
+ | `name?` | `string` | — | input name 속성 |
16
+ | `className?` | `string` | — | |
17
+ | `style?` | `CSSProperties` | — | |
18
+
19
+ #### Events
20
+
21
+ | Event | Type | Description |
22
+ |-------|------|-------------|
23
+ | `onValueChange` | `(value: string \| number) => void` | 변경 (sdUpdate) |
24
+
@@ -0,0 +1,16 @@
1
+ # SScrollArea
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SScrollArea
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `axis?` | `SScrollAreaAxis` | `'both'` | 스크롤 방향. vertical=세로만, horizontal=가로만, both=양방향 |
12
+ | `background?` | `boolean` | `false` | true면 스크롤바 트랙 배경을 채운다. 콘텐츠 영역 배경은 바뀌지 않는다. |
13
+ | `bordered?` | `boolean` | `false` | true면 스크롤바와 콘텐츠 사이에 1px 구분선을 그린다. 컨테이너 테두리가 아니다. |
14
+ | `maxHeight?` | `string` | — | viewport 최대 높이 (예: '400px'). 비우면 부모 크기를 따른다. |
15
+ | `maxWidth?` | `string` | — | viewport 최대 너비 (예: '480px'). 비우면 부모 크기를 따른다. |
16
+
@@ -0,0 +1,51 @@
1
+ # SSectionHeaderCard
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SSectionHeaderCardBody
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `children?` | `SSectionHeaderCardBodyChildren` | — | 바디 슬롯. 특정 컴포넌트 타입으로 제한하지 않습니다. |
12
+
13
+ ### SSectionHeaderCardHeader
14
+
15
+ #### Props
16
+
17
+ | Prop | Type | Default | Description |
18
+ |------|------|---------|-------------|
19
+ | `title` | `ReactNode` | — | 헤더 제목 |
20
+ | `marker?` | `boolean` | `false` | 제목 앞 점 표시 여부 |
21
+ | `required?` | `boolean` | `false` | 제목 뒤 필수 별 표시 여부 |
22
+ | `helpText?` | `string[]` | — | 도움말 툴팁 메시지 |
23
+ | `subtitle?` | `ReactNode` | — | 부제 |
24
+ | `slot?` | `ReactNode` | — | 헤더 우측 슬롯 |
25
+ | `thickness?` | `SSectionHeaderCardThickness` | `false` | 상단 border 색상 타입. false면 표시하지 않습니다. |
26
+
27
+ ### SSectionHeaderCard
28
+
29
+ #### Props
30
+
31
+ | Prop | Type | Default | Description |
32
+ |------|------|---------|-------------|
33
+ | `children?` | `SSectionHeaderCardChildren` | — | SSectionHeaderCard 슬롯. 특정 컴포넌트 타입으로 제한하지 않습니다. |
34
+
35
+ ## Dependencies
36
+
37
+ ### Depends on
38
+
39
+ - [SBadge](../SBadge)
40
+ - [SIcon](../SIcon)
41
+ - [STooltip](../STooltip)
42
+
43
+ ### Graph
44
+
45
+ ```mermaid
46
+ graph TD;
47
+ SSectionHeaderCard --> SBadge
48
+ SSectionHeaderCard --> SIcon
49
+ SSectionHeaderCard --> STooltip
50
+ style SSectionHeaderCard fill:#f9f,stroke:#333,stroke-width:4px
51
+ ```
@@ -0,0 +1,79 @@
1
+ # SSelect
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SSelect
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `value?` | `(string \| number \| SSelectOption) \| (string \| number \| SSelectOption)[] \| null` | — | 선택 값. multi 타입이면 배열. emitValue=false(기본) 라운드트립을 위해 SSelectOption 객체도 허용 |
12
+ | `emitValue?` | `boolean` | `false` | true면 SSelectOption 대신 원시값(string|number) 방출 |
13
+ | `name?` | `string` | — | 폼 연동용 name 속성 |
14
+ | `options?` | `SSelectOption[]` | `[]` | 옵션 목록 (children으로 계층 표현) |
15
+ | `type?` | `SSelectType` | `'default'` | 타입: default | multi | default_depth | multi_depth |
16
+ | `useSearch?` | `boolean` | `false` | 검색 입력 사용 |
17
+ | `useSelectAll?` | `boolean` | `false` | 전체선택 옵션 사용 (multi 전용) |
18
+ | `allSelectedLabel?` | `string` | `'전체'` | 전체선택 레이블 |
19
+ | `placeholder?` | `string` | `'선택'` | placeholder |
20
+ | `disabled?` | `boolean` | `false` | 비활성 |
21
+ | `error?` | `boolean` | `false` | 에러 상태 |
22
+ | `rules?` | `Rule[]` | — | 유효성 규칙 — 닫힐 때 자동 검증 |
23
+ | `labelTooltipProps?` | `Partial<STooltipProps>` | — | 레이블 툴팁 상세 옵션 |
24
+ | `dropdownHeight?` | `string` | `'260px'` | 드롭다운 최대 높이 |
25
+ | `dropdownWidth?` | `string` | — | 드롭다운 너비 (없으면 트리거 너비) |
26
+ | `maxDropdownWidth?` | `string` | `'640px'` | 드롭다운 최대 너비 |
27
+ | `label?` | `string` | — | |
28
+ | `labelWidth?` | `number \| string` | — | |
29
+ | `icon?` | `SIconName` | — | 레이블 영역 아이콘 |
30
+ | `iconColor?` | `SColor` | — | |
31
+ | `labelTooltip?` | `string` | — | 레이블 툴팁 텍스트 |
32
+ | `addonLabel?` | `string` | — | 우측 어드온 레이블 |
33
+ | `addonAlign?` | `SFieldAddonAlign` | — | 어드온 정렬 |
34
+ | `hint?` | `string` | — | |
35
+ | `errorMessage?` | `string` | — | |
36
+ | `width?` | `number \| string` | — | |
37
+ | `className?` | `string` | — | |
38
+ | `style?` | `CSSProperties` | — | |
39
+
40
+ #### Events
41
+
42
+ | Event | Type | Description |
43
+ |-------|------|-------------|
44
+ | `onValueChange` | `(value: any) => void` | 값 변경 (sdUpdate). emitValue=false(기본)면 SSelectOption(들), true면 원시값 |
45
+ | `onOpenChange` | `(open: boolean) => void` | 열림/닫힘 변경 (sdDropDownShow) |
46
+
47
+ #### Methods (ref)
48
+
49
+ | Method | Type | Description |
50
+ |--------|------|-------------|
51
+ | `focus` | `() => void` | 트리거 버튼에 포커스 (sdFocus) |
52
+ | `open` | `() => void` | 드롭다운 열기 (sdOpen) |
53
+
54
+ ## Dependencies
55
+
56
+ ### Used by
57
+
58
+ - [SKeyValueTable](../SKeyValueTable)
59
+ - [STable](../STable)
60
+
61
+ ### Depends on
62
+
63
+ - [SField](../SField)
64
+ - [SGhostButton](../SGhostButton)
65
+ - [SIcon](../SIcon)
66
+ - [SPortal](../SPortal)
67
+
68
+ ### Graph
69
+
70
+ ```mermaid
71
+ graph TD;
72
+ SSelect --> SField
73
+ SSelect --> SGhostButton
74
+ SSelect --> SIcon
75
+ SSelect --> SPortal
76
+ SKeyValueTable --> SSelect
77
+ STable --> SSelect
78
+ style SSelect fill:#f9f,stroke:#333,stroke-width:4px
79
+ ```
@@ -0,0 +1,30 @@
1
+ # SStepper
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SStepper
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `items` | `SStepperItem[]` | — | 단계 목록 |
12
+ | `value?` | `string` | — | 현재 활성 단계 value |
13
+ | `size?` | `SStepperSize` | `'sm'` | 크기 |
14
+ | `ariaLabel?` | `string` | `'진행 단계'` | 접근성 레이블 |
15
+ | `className?` | `string` | — | |
16
+ | `style?` | `CSSProperties` | — | |
17
+
18
+ ## Dependencies
19
+
20
+ ### Depends on
21
+
22
+ - [SIcon](../SIcon)
23
+
24
+ ### Graph
25
+
26
+ ```mermaid
27
+ graph TD;
28
+ SStepper --> SIcon
29
+ style SStepper fill:#f9f,stroke:#333,stroke-width:4px
30
+ ```
@@ -0,0 +1,24 @@
1
+ # SSwitch
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SSwitch
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `value?` | `boolean` | `false` | on/off 상태 |
12
+ | `leftLabel?` | `string` | — | 스위치 좌측 라벨 |
13
+ | `rightLabel?` | `string` | — | 스위치 우측 라벨 |
14
+ | `label?` | `string` | — | |
15
+ | `disabled?` | `boolean` | `false` | 비활성 |
16
+ | `className?` | `string` | — | |
17
+ | `style?` | `CSSProperties` | — | |
18
+
19
+ #### Events
20
+
21
+ | Event | Type | Description |
22
+ |-------|------|-------------|
23
+ | `onValueChange` | `(value: boolean) => void` | 변경 (sdUpdate) |
24
+
@@ -0,0 +1,82 @@
1
+ # STable
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### STable
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `columns?` | `STableColumn[]` | `[]` | |
12
+ | `rows?` | `SRow[]` | `[]` | |
13
+ | `rowKey?` | `string` | `'id'` | 행 식별 필드 |
14
+ | `selectable?` | `boolean` | `false` | 행 선택 체크박스 |
15
+ | `selected?` | `SRow[]` | `[]` | |
16
+ | `resizable?` | `boolean` | `false` | 컬럼 너비 조절 |
17
+ | `width?` | `string` | — | |
18
+ | `height?` | `string` | — | |
19
+ | `stickyHeader?` | `boolean` | — | |
20
+ | `stickyColumn?` | `STableStickyColumn` | — | 고정할 좌/우 컬럼 수 |
21
+ | `radius?` | `'default' \| 'useTop' \| 'full'` | `'default'` | border-radius 제어 |
22
+ | `noDataLabel?` | `string` | `'데이터가 없습니다.'` | |
23
+ | `noDataSlot?` | `ReactNode` | — | 데이터가 없을 때 body 영역 전체를 대체하는 슬롯. 지정하면 `noDataLabel` 대신 이 콘텐츠가 헤더 아래 영역을 채우며, 버튼 등 인터랙션도 동작한다. |
24
+ | `isLoading?` | `boolean` | `false` | |
25
+ | `dense?` | `boolean` | `false` | |
26
+ | `noHover?` | `boolean` | `false` | true면 행에 마우스를 올려도 hover 배경(grey_05)을 표시하지 않는다 |
27
+ | `pagination?` | `STablePagination` | — | 페이지네이션 (있으면 하단 표시) |
28
+ | `useInternalPagination?` | `boolean` | `false` | 테이블 내부에서 페이지네이션을 직접 관리 (rows를 내부 슬라이싱) |
29
+ | `useRowsPerPageSelect?` | `boolean` | `false` | 페이지당 행 수 셀렉트 표시 |
30
+ | `rowsPerPageOption?` | `SSelectOption[]` | `DEFAULT_ROWS_PER_PAGE_OPTION` | |
31
+ | `useVirtualScroll?` | `boolean` | `false` | 가상 스크롤 |
32
+ | `rowHeight?` | `number` | — | |
33
+ | `virtualBuffer?` | `number` | `5` | |
34
+ | `virtualEndThreshold?` | `number` | `10` | |
35
+ | `tableId?` | `string` | — | 테이블 식별자 (없으면 자동 생성) |
36
+ | `className?` | `string` | — | |
37
+ | `style?` | `CSSProperties` | — | |
38
+
39
+ #### Events
40
+
41
+ | Event | Type | Description |
42
+ |-------|------|-------------|
43
+ | `onSelectedChange` | `(rows: SRow[]) => void` | |
44
+ | `onPageChange` | `(page: number) => void` | |
45
+ | `onRowsPerPageChange` | `(perPage: number) => void` | |
46
+ | `onVirtualUpdate` | `(range: { from: number; to: number }) => void` | |
47
+ | `onVirtualReachEnd` | `(info: { from: number; to: number; rowCount: number; threshold: number; }) =>…` | |
48
+ | `onRowClick` | `(row: SRow) => void` | 행 클릭 |
49
+
50
+ #### Methods (ref)
51
+
52
+ | Method | Type | Description |
53
+ |--------|------|-------------|
54
+ | `isRowSelected` | `(row: SRow) => boolean` | 행 선택 여부 |
55
+ | `getIsAllChecked` | `(rows: SRow[]) => boolean \| null` | 주어진 행들의 전체 선택 상태 (true/false/null=indeterminate) |
56
+ | `getPaginationInfo` | `<union 2종>` | 내부 페이지네이션 정보 (useInternalPagination 아니면 null) |
57
+ | `getStickyStyle` | `(colIdx: number) => CSSProperties` | 컬럼 sticky 스타일 (CSS 변수 + 고정폭) |
58
+ | `setRowCount` | `(count: number) => void` | 가상 스크롤 총 행 수 설정 |
59
+ | `updateRowSelect` | `(row: SRow) => void` | 단일 행 선택 토글 (sd-table updateRowSelect) — onSelectedChange 발생 |
60
+ | `toggleSelectAll` | `(checked: boolean, rows: SRow[]) => void` | 주어진 행들 전체 선택/해제 (sd-table toggleSelectAll) — onSelectedChange 발생 |
61
+
62
+ ## Dependencies
63
+
64
+ ### Depends on
65
+
66
+ - [SCheckbox](../SCheckbox)
67
+ - [SCircleProgress](../SCircleProgress)
68
+ - [SIcon](../SIcon)
69
+ - [SPagination](../SPagination)
70
+ - [SSelect](../SSelect)
71
+
72
+ ### Graph
73
+
74
+ ```mermaid
75
+ graph TD;
76
+ STable --> SCheckbox
77
+ STable --> SCircleProgress
78
+ STable --> SIcon
79
+ STable --> SPagination
80
+ STable --> SSelect
81
+ style STable fill:#f9f,stroke:#333,stroke-width:4px
82
+ ```