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.
- package/AGENTS.md +661 -0
- package/README.md +85 -0
- package/dist/components/SActionModal/README.md +41 -0
- package/dist/components/SBadge/README.md +25 -0
- package/dist/components/SBarcodeInput/README.md +64 -0
- package/dist/components/SButton/README.md +49 -0
- package/dist/components/SCalendar/README.md +42 -0
- package/dist/components/SCallout/README.md +29 -0
- package/dist/components/SCard/README.md +12 -0
- package/dist/components/SCheckbox/README.md +44 -0
- package/dist/components/SChip/README.md +57 -0
- package/dist/components/SChipInput/README.md +77 -0
- package/dist/components/SCircleProgress/README.md +35 -0
- package/dist/components/SConfirmModal/README.md +61 -0
- package/dist/components/SDatePicker/README.md +62 -0
- package/dist/components/SDateRangePicker/README.md +64 -0
- package/dist/components/SDivider/README.md +25 -0
- package/dist/components/SDraggableItem/README.md +40 -0
- package/dist/components/SDropdownButton/README.md +50 -0
- package/dist/components/SExpansionItem/README.md +40 -0
- package/dist/components/SField/README.md +91 -0
- package/dist/components/SFilePicker/README.md +72 -0
- package/dist/components/SForm/README.md +31 -0
- package/dist/components/SGhostButton/README.md +76 -0
- package/dist/components/SGnb/README.md +56 -0
- package/dist/components/SGuide/README.md +34 -0
- package/dist/components/SIcon/README.md +91 -0
- package/dist/components/SInput/README.md +66 -0
- package/dist/components/SKeyValueTable/README.md +59 -0
- package/dist/components/SLayout/README.md +42 -0
- package/dist/components/SLinearProgress/README.md +17 -0
- package/dist/components/SList/README.md +14 -0
- package/dist/components/SListItem/README.md +19 -0
- package/dist/components/SLoadingContainer/README.md +29 -0
- package/dist/components/SLoadingModal/README.md +52 -0
- package/dist/components/SModal/README.md +192 -0
- package/dist/components/SModalContainer/README.md +49 -0
- package/dist/components/SNumberInput/README.md +74 -0
- package/dist/components/SPage/README.md +25 -0
- package/dist/components/SPagination/README.md +40 -0
- package/dist/components/SPopover/README.md +54 -0
- package/dist/components/SPopup/README.md +38 -0
- package/dist/components/SPortal/README.md +51 -0
- package/dist/components/SRadio/README.md +57 -0
- package/dist/components/SRadioButton/README.md +24 -0
- package/dist/components/SScrollArea/README.md +16 -0
- package/dist/components/SSectionHeaderCard/README.md +51 -0
- package/dist/components/SSelect/README.md +79 -0
- package/dist/components/SStepper/README.md +30 -0
- package/dist/components/SSwitch/README.md +24 -0
- package/dist/components/STable/README.md +82 -0
- package/dist/components/STableBar/README.md +28 -0
- package/dist/components/STabs/README.md +37 -0
- package/dist/components/STag/README.md +44 -0
- package/dist/components/STextLink/README.md +48 -0
- package/dist/components/STextarea/README.md +60 -0
- package/dist/components/STimePicker/README.md +65 -0
- package/dist/components/STimeRangePicker/README.md +63 -0
- package/dist/components/SToast/README.md +70 -0
- package/dist/components/SToggle/README.md +22 -0
- package/dist/components/STooltip/README.md +57 -0
- package/dist/llms.txt +3496 -0
- package/dist/styles.css +209 -0
- package/dist/theme.css +8 -0
- package/eslint/index.mjs +66 -0
- package/eslint/lib/class-names.mjs +119 -0
- package/eslint/lib/table-column.mjs +53 -0
- package/eslint/rules/no-arbitrary-class.mjs +91 -0
- package/eslint/rules/no-off-scale-spacing.mjs +67 -0
- package/eslint/rules/no-raw-html-control.mjs +117 -0
- package/eslint/rules/prefer-typo-preset.mjs +73 -0
- package/eslint/rules/require-locale-number.mjs +78 -0
- package/eslint/rules/table-numeric-align.mjs +93 -0
- package/eslint/scale.gen.mjs +16 -0
- 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
|
+
```
|