sellmate-design-system-react 2.2.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/SCallout/SCallout.cjs +76 -1
- package/dist/components/SCallout/SCallout.cjs.map +1 -1
- package/dist/components/SCallout/SCallout.d.ts +6 -2
- package/dist/components/SCallout/SCallout.js +76 -1
- package/dist/components/SCallout/SCallout.js.map +1 -1
- 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/SDraggableItem/SDraggableItem.cjs +3079 -0
- package/dist/components/SDraggableItem/SDraggableItem.cjs.map +1 -0
- package/dist/components/SDraggableItem/SDraggableItem.d.ts +33 -0
- package/dist/components/SDraggableItem/SDraggableItem.js +3077 -0
- package/dist/components/SDraggableItem/SDraggableItem.js.map +1 -0
- package/dist/components/SDraggableItem/index.d.ts +1 -0
- package/dist/components/SDropdownButton/README.md +50 -0
- package/dist/components/SExpansionItem/README.md +40 -0
- package/dist/components/SExpansionItem/SExpansionItem.cjs +6 -15
- package/dist/components/SExpansionItem/SExpansionItem.cjs.map +1 -1
- package/dist/components/SExpansionItem/SExpansionItem.js +6 -15
- package/dist/components/SExpansionItem/SExpansionItem.js.map +1 -1
- 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/SList/SList.cjs +38 -0
- package/dist/components/SList/SList.cjs.map +1 -0
- package/dist/components/SList/SList.d.ts +10 -0
- package/dist/components/SList/SList.js +36 -0
- package/dist/components/SList/SList.js.map +1 -0
- package/dist/components/SList/index.d.ts +1 -0
- package/dist/components/SListItem/README.md +19 -0
- package/dist/components/SListItem/SListItem.cjs +83 -0
- package/dist/components/SListItem/SListItem.cjs.map +1 -0
- package/dist/components/SListItem/SListItem.d.ts +26 -0
- package/dist/components/SListItem/SListItem.js +81 -0
- package/dist/components/SListItem/SListItem.js.map +1 -0
- package/dist/components/SListItem/index.d.ts +1 -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/SSectionHeaderCard/SSectionHeaderCard.cjs +3414 -0
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.cjs.map +1 -0
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +32 -0
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.js +3392 -0
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.js.map +1 -0
- package/dist/components/SSectionHeaderCard/index.d.ts +1 -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/index.cjs +815 -419
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +815 -423
- package/dist/index.js.map +1 -1
- package/dist/llms.txt +3496 -0
- package/dist/styles.css +545 -19
- package/dist/theme.css +22 -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,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
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# STableBar
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### STableBar
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `total?` | `number` | — | 전체 건수. 지정하면 "총 N 건" 을 표시한다 (천단위 구분 자동) |
|
|
12
|
+
| `selected?` | `number` | — | 선택 건수. 지정하면 "N건 선택" 을 표시한다 |
|
|
13
|
+
| `actions?` | `ReactNode` | — | 구분선 오른쪽 좌측 액션 영역 |
|
|
14
|
+
| `rightActions?` | `ReactNode` | — | 우측 정렬 액션 영역 |
|
|
15
|
+
|
|
16
|
+
## Dependencies
|
|
17
|
+
|
|
18
|
+
### Depends on
|
|
19
|
+
|
|
20
|
+
- [SDivider](../SDivider)
|
|
21
|
+
|
|
22
|
+
### Graph
|
|
23
|
+
|
|
24
|
+
```mermaid
|
|
25
|
+
graph TD;
|
|
26
|
+
STableBar --> SDivider
|
|
27
|
+
style STableBar fill:#f9f,stroke:#333,stroke-width:4px
|
|
28
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# STabs
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### STabs
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `value` | `string` | — | 현재 선택된 탭 value |
|
|
12
|
+
| `tabs` | `STabOption[]` | — | 탭 옵션 목록 |
|
|
13
|
+
| `size?` | `STabSize` | `'md'` | 탭 크기 (main 전용) |
|
|
14
|
+
| `isSub?` | `boolean` | `false` | 서브 탭(밑줄형) 스타일 |
|
|
15
|
+
| `vertical?` | `boolean` | `false` | 세로 배치 (sub 전용 — main 폴더형은 항상 가로) |
|
|
16
|
+
| `className?` | `string` | — | |
|
|
17
|
+
| `style?` | `CSSProperties` | — | |
|
|
18
|
+
|
|
19
|
+
#### Events
|
|
20
|
+
|
|
21
|
+
| Event | Type | Description |
|
|
22
|
+
|-------|------|-------------|
|
|
23
|
+
| `onValueChange` | `(value: string) => void` | 탭 변경 (sdUpdate) |
|
|
24
|
+
|
|
25
|
+
## Dependencies
|
|
26
|
+
|
|
27
|
+
### Depends on
|
|
28
|
+
|
|
29
|
+
- [STag](../STag)
|
|
30
|
+
|
|
31
|
+
### Graph
|
|
32
|
+
|
|
33
|
+
```mermaid
|
|
34
|
+
graph TD;
|
|
35
|
+
STabs --> STag
|
|
36
|
+
style STabs fill:#f9f,stroke:#333,stroke-width:4px
|
|
37
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# STag
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### STag
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `shape?` | `STagShape` | `'square'` | 모양 |
|
|
12
|
+
| `size?` | `STagSize` | `'sm'` | 크기 |
|
|
13
|
+
| `color?` | `STagColor` | `'grey'` | 색상 |
|
|
14
|
+
| `label?` | `string` | `''` | 레이블 텍스트 |
|
|
15
|
+
| `icon?` | `SIconName` | — | 아이콘명 |
|
|
16
|
+
| `iconLeft?` | `boolean` | `true` | 아이콘을 레이블 왼쪽에 배치 |
|
|
17
|
+
| `width?` | `string \| number` | — | 태그 너비 (숫자면 px, 문자열이면 그대로 적용). 미지정 시 콘텐츠 크기 |
|
|
18
|
+
|
|
19
|
+
## Dependencies
|
|
20
|
+
|
|
21
|
+
### Used by
|
|
22
|
+
|
|
23
|
+
- [SConfirmModal](../SConfirmModal)
|
|
24
|
+
- [SGhostButton](../SGhostButton)
|
|
25
|
+
- [SGnb](../SGnb)
|
|
26
|
+
- [STabs](../STabs)
|
|
27
|
+
- [STextLink](../STextLink)
|
|
28
|
+
|
|
29
|
+
### Depends on
|
|
30
|
+
|
|
31
|
+
- [SIcon](../SIcon)
|
|
32
|
+
|
|
33
|
+
### Graph
|
|
34
|
+
|
|
35
|
+
```mermaid
|
|
36
|
+
graph TD;
|
|
37
|
+
STag --> SIcon
|
|
38
|
+
SConfirmModal --> STag
|
|
39
|
+
SGhostButton --> STag
|
|
40
|
+
SGnb --> STag
|
|
41
|
+
STabs --> STag
|
|
42
|
+
STextLink --> STag
|
|
43
|
+
style STag fill:#f9f,stroke:#333,stroke-width:4px
|
|
44
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# STextLink
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### STextLink
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `label?` | `string` | `''` | 레이블 |
|
|
12
|
+
| `icon?` | `SIconName` | — | 좌측 아이콘 |
|
|
13
|
+
| `iconColor?` | `SColor` | — | 좌측 아이콘 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 |
|
|
14
|
+
| `labelClass?` | `string` | — | 레이블 span에 추가할 클래스 |
|
|
15
|
+
| `rightArrow?` | `STextLinkArrow` | `'none'` | 우측 화살표 |
|
|
16
|
+
| `underline?` | `boolean` | `false` | 밑줄 여부 |
|
|
17
|
+
| `disabled?` | `boolean` | `false` | 비활성 |
|
|
18
|
+
| `size?` | `STextLinkSize` | `'sm'` | 크기 |
|
|
19
|
+
| `tooltipText?` | `string` | — | 호버 시 표시할 툴팁 텍스트 (회색 STag 스타일) |
|
|
20
|
+
|
|
21
|
+
#### Events
|
|
22
|
+
|
|
23
|
+
| Event | Type | Description |
|
|
24
|
+
|-------|------|-------------|
|
|
25
|
+
| `onClick` | `() => void` | |
|
|
26
|
+
|
|
27
|
+
## Dependencies
|
|
28
|
+
|
|
29
|
+
### Used by
|
|
30
|
+
|
|
31
|
+
- [SChipInput](../SChipInput)
|
|
32
|
+
- [SPopover](../SPopover)
|
|
33
|
+
|
|
34
|
+
### Depends on
|
|
35
|
+
|
|
36
|
+
- [SIcon](../SIcon)
|
|
37
|
+
- [STag](../STag)
|
|
38
|
+
|
|
39
|
+
### Graph
|
|
40
|
+
|
|
41
|
+
```mermaid
|
|
42
|
+
graph TD;
|
|
43
|
+
STextLink --> SIcon
|
|
44
|
+
STextLink --> STag
|
|
45
|
+
SChipInput --> STextLink
|
|
46
|
+
SPopover --> STextLink
|
|
47
|
+
style STextLink fill:#f9f,stroke:#333,stroke-width:4px
|
|
48
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# STextarea
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### STextarea
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `value?` | `string` | — | 값 (제어) |
|
|
12
|
+
| `rows?` | `number` | `3` | 행 수 |
|
|
13
|
+
| `rules?` | `Rule[]` | — | 유효성 규칙 — blur 시 자동 검증 |
|
|
14
|
+
| `status?` | `SFieldStatus` | — | 필드 상태 ('default' | 'pass' | 'error') |
|
|
15
|
+
| `focused?` | `boolean` | — | 포커스 상태 (제어/반영) |
|
|
16
|
+
| `hovered?` | `boolean` | — | 호버 상태 (제어/반영) |
|
|
17
|
+
| `textareaClass?` | `string` | — | 내부 textarea 요소 className |
|
|
18
|
+
| `textareaStyle?` | `CSSProperties` | — | 내부 textarea 요소 style |
|
|
19
|
+
| `label?` | `string` | — | |
|
|
20
|
+
| `labelWidth?` | `number \| string` | — | |
|
|
21
|
+
| `icon?` | `SIconName` | — | 레이블 영역 아이콘 |
|
|
22
|
+
| `iconColor?` | `SColor` | — | |
|
|
23
|
+
| `labelTooltip?` | `string` | — | 레이블 툴팁 텍스트 |
|
|
24
|
+
| `labelTooltipProps?` | `Partial<STooltipProps>` | — | 레이블 툴팁 상세 옵션 |
|
|
25
|
+
| `addonLabel?` | `string` | — | 우측 어드온 레이블 |
|
|
26
|
+
| `addonAlign?` | `SFieldAddonAlign` | — | 어드온 정렬 |
|
|
27
|
+
| `hint?` | `string` | — | |
|
|
28
|
+
| `error?` | `boolean` | — | |
|
|
29
|
+
| `errorMessage?` | `string` | — | |
|
|
30
|
+
| `width?` | `number \| string` | — | |
|
|
31
|
+
| `disabled?` | `boolean` | `false` | |
|
|
32
|
+
| `readOnly?` | `boolean` | `false` | |
|
|
33
|
+
| `className?` | `string` | — | |
|
|
34
|
+
| `style?` | `CSSProperties` | — | |
|
|
35
|
+
|
|
36
|
+
#### Events
|
|
37
|
+
|
|
38
|
+
| Event | Type | Description |
|
|
39
|
+
|-------|------|-------------|
|
|
40
|
+
| `onValueChange` | `(value: string) => void` | 값 변경 (sdUpdate) |
|
|
41
|
+
| `onChange` | `TextareaHTMLAttributes<HTMLTextAreaElement>['onChange']` | 네이티브 onChange (form-agnostic) |
|
|
42
|
+
|
|
43
|
+
## Dependencies
|
|
44
|
+
|
|
45
|
+
### Used by
|
|
46
|
+
|
|
47
|
+
- [SKeyValueTable](../SKeyValueTable)
|
|
48
|
+
|
|
49
|
+
### Depends on
|
|
50
|
+
|
|
51
|
+
- [SField](../SField)
|
|
52
|
+
|
|
53
|
+
### Graph
|
|
54
|
+
|
|
55
|
+
```mermaid
|
|
56
|
+
graph TD;
|
|
57
|
+
STextarea --> SField
|
|
58
|
+
SKeyValueTable --> STextarea
|
|
59
|
+
style STextarea fill:#f9f,stroke:#333,stroke-width:4px
|
|
60
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# STimePicker
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### STimePicker
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `value?` | `string \| null` | — | 선택 시간 (HH:mm) |
|
|
12
|
+
| `type?` | `STimePickerType` | `'default'` | 표시 타입: default(24시간) / midday(오전·오후) |
|
|
13
|
+
| `size?` | `STimePickerSize` | `'sm'` | |
|
|
14
|
+
| `placeholder?` | `string` | `'00:00'` | |
|
|
15
|
+
| `disabled?` | `boolean` | `false` | |
|
|
16
|
+
| `clearable?` | `boolean` | `false` | |
|
|
17
|
+
| `useMeridiem?` | `boolean` | — | 오전/오후 선택 표시 여부. 지정하지 않으면 type="midday"일 때만 켜집니다. |
|
|
18
|
+
| `minuteStep?` | `number` | `1` | |
|
|
19
|
+
| `width?` | `number \| string` | — | |
|
|
20
|
+
| `name?` | `string` | — | |
|
|
21
|
+
| `rules?` | `Rule[]` | — | |
|
|
22
|
+
| `status?` | `SFieldStatus` | — | |
|
|
23
|
+
| `label?` | `string` | — | |
|
|
24
|
+
| `labelWidth?` | `number \| string` | — | |
|
|
25
|
+
| `icon?` | `SIconName` | — | |
|
|
26
|
+
| `iconColor?` | `SColor` | — | |
|
|
27
|
+
| `labelTooltip?` | `string` | — | |
|
|
28
|
+
| `labelTooltipProps?` | `Partial<STooltipProps>` | — | |
|
|
29
|
+
| `addonLabel?` | `string` | — | |
|
|
30
|
+
| `addonAlign?` | `SFieldAddonAlign` | — | |
|
|
31
|
+
| `hint?` | `string` | — | |
|
|
32
|
+
| `error?` | `boolean` | — | |
|
|
33
|
+
| `errorMessage?` | `string` | — | |
|
|
34
|
+
| `className?` | `string` | — | |
|
|
35
|
+
| `style?` | `CSSProperties` | — | |
|
|
36
|
+
|
|
37
|
+
#### Events
|
|
38
|
+
|
|
39
|
+
| Event | Type | Description |
|
|
40
|
+
|-------|------|-------------|
|
|
41
|
+
| `onValueChange` | `(time: string \| null) => void` | 선택 변경 (sdUpdate) |
|
|
42
|
+
| `onOpenChange` | `(open: boolean) => void` | 열림/닫힘 변경 (sdDropDownShow) |
|
|
43
|
+
|
|
44
|
+
## Dependencies
|
|
45
|
+
|
|
46
|
+
### Used by
|
|
47
|
+
|
|
48
|
+
- [STimeRangePicker](../STimeRangePicker)
|
|
49
|
+
|
|
50
|
+
### Depends on
|
|
51
|
+
|
|
52
|
+
- [SField](../SField)
|
|
53
|
+
- [SGhostButton](../SGhostButton)
|
|
54
|
+
- [SIcon](../SIcon)
|
|
55
|
+
|
|
56
|
+
### Graph
|
|
57
|
+
|
|
58
|
+
```mermaid
|
|
59
|
+
graph TD;
|
|
60
|
+
STimePicker --> SField
|
|
61
|
+
STimePicker --> SGhostButton
|
|
62
|
+
STimePicker --> SIcon
|
|
63
|
+
STimeRangePicker --> STimePicker
|
|
64
|
+
style STimePicker fill:#f9f,stroke:#333,stroke-width:4px
|
|
65
|
+
```
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# STimeRangePicker
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### STimeRangePicker
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `value?` | `STimeRangeValue` | — | 선택 시간 범위 [시작, 종료] (HH:mm) |
|
|
12
|
+
| `type?` | `STimeRangePickerType` | `'default'` | 표시 타입: default(24시간) / midday(오전·오후) |
|
|
13
|
+
| `size?` | `STimeRangePickerSize` | `'sm'` | |
|
|
14
|
+
| `placeholder?` | `string` | `'00:00 ~ 23:59'` | |
|
|
15
|
+
| `disabled?` | `boolean` | `false` | |
|
|
16
|
+
| `clearable?` | `boolean` | `false` | |
|
|
17
|
+
| `useMeridiem?` | `boolean` | — | 오전/오후 선택 표시 여부. 지정하지 않으면 type="midday"일 때만 켜집니다. |
|
|
18
|
+
| `minuteStep?` | `number` | `1` | |
|
|
19
|
+
| `rangeOrder?` | `STimeRangePickerRangeOrder` | `'strict'` | 범위 순서 정책. strict는 시작 시간이 종료 시간보다 늦어지지 않도록 보정합니다. |
|
|
20
|
+
| `width?` | `number \| string` | — | |
|
|
21
|
+
| `name?` | `string` | — | |
|
|
22
|
+
| `rules?` | `Rule[]` | — | |
|
|
23
|
+
| `status?` | `SFieldStatus` | — | |
|
|
24
|
+
| `label?` | `string` | — | |
|
|
25
|
+
| `labelWidth?` | `number \| string` | — | |
|
|
26
|
+
| `icon?` | `SIconName` | — | |
|
|
27
|
+
| `iconColor?` | `SColor` | — | |
|
|
28
|
+
| `labelTooltip?` | `string` | — | |
|
|
29
|
+
| `labelTooltipProps?` | `Partial<STooltipProps>` | — | |
|
|
30
|
+
| `addonLabel?` | `string` | — | |
|
|
31
|
+
| `addonAlign?` | `SFieldAddonAlign` | — | |
|
|
32
|
+
| `hint?` | `string` | — | |
|
|
33
|
+
| `error?` | `boolean` | — | |
|
|
34
|
+
| `errorMessage?` | `string` | — | |
|
|
35
|
+
| `className?` | `string` | — | |
|
|
36
|
+
| `style?` | `CSSProperties` | — | |
|
|
37
|
+
|
|
38
|
+
#### Events
|
|
39
|
+
|
|
40
|
+
| Event | Type | Description |
|
|
41
|
+
|-------|------|-------------|
|
|
42
|
+
| `onValueChange` | `(range: STimeRangeValue) => void` | 선택 변경 (sdUpdate) |
|
|
43
|
+
| `onOpenChange` | `(open: boolean) => void` | 열림/닫힘 변경 (sdDropDownShow) |
|
|
44
|
+
|
|
45
|
+
## Dependencies
|
|
46
|
+
|
|
47
|
+
### Depends on
|
|
48
|
+
|
|
49
|
+
- [SField](../SField)
|
|
50
|
+
- [SGhostButton](../SGhostButton)
|
|
51
|
+
- [SIcon](../SIcon)
|
|
52
|
+
- [STimePicker](../STimePicker)
|
|
53
|
+
|
|
54
|
+
### Graph
|
|
55
|
+
|
|
56
|
+
```mermaid
|
|
57
|
+
graph TD;
|
|
58
|
+
STimeRangePicker --> SField
|
|
59
|
+
STimeRangePicker --> SGhostButton
|
|
60
|
+
STimeRangePicker --> SIcon
|
|
61
|
+
STimeRangePicker --> STimePicker
|
|
62
|
+
style STimeRangePicker fill:#f9f,stroke:#333,stroke-width:4px
|
|
63
|
+
```
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# SToast
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### SToastContainer
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `position?` | `SToastPosition` | `'bottom-center'` | |
|
|
12
|
+
| `maxVisible?` | `number` | `3` | |
|
|
13
|
+
| `defaultDuration?` | `number` | `4000` | 자동 닫힘 기본 지연(ms) |
|
|
14
|
+
| `zIndex?` | `number` | `1100` | 스택 z-index. 기본값(1100)은 모달(1000/1001) 위 — 토스트는 전역 알림이라 항상 최상단 |
|
|
15
|
+
|
|
16
|
+
#### Events
|
|
17
|
+
|
|
18
|
+
| Event | Type | Description |
|
|
19
|
+
|-------|------|-------------|
|
|
20
|
+
| `onShow` | `(payload: { id: string }) => void` | 토스트가 표시될 때 (sdToastShow) |
|
|
21
|
+
| `onDismiss` | `(payload: { id: string }) => void` | 토스트가 제거될 때 (sdToastDismiss) |
|
|
22
|
+
|
|
23
|
+
#### Methods (ref)
|
|
24
|
+
|
|
25
|
+
| Method | Type | Description |
|
|
26
|
+
|--------|------|-------------|
|
|
27
|
+
| `create` | `(options: SToastNotifyOptions) => string` | |
|
|
28
|
+
| `dismiss` | `(id: string) => void` | |
|
|
29
|
+
| `dismissAll` | `() => void` | |
|
|
30
|
+
|
|
31
|
+
### SToast
|
|
32
|
+
|
|
33
|
+
#### Props
|
|
34
|
+
|
|
35
|
+
| Prop | Type | Default | Description |
|
|
36
|
+
|------|------|---------|-------------|
|
|
37
|
+
| `icon?` | `SIconName` | — | 좌측 아이콘 |
|
|
38
|
+
| `message` | `string` | — | 메시지 |
|
|
39
|
+
| `link?` | `string` | — | 우측 링크 URL |
|
|
40
|
+
| `linkLabel?` | `string` | — | 링크 레이블 (없으면 URL) |
|
|
41
|
+
| `buttonLabel?` | `string` | — | 우측 버튼 레이블 |
|
|
42
|
+
| `useClose?` | `boolean` | `false` | 닫기 버튼 표시 |
|
|
43
|
+
| `type?` | `SToastType` | `'default'` | 타입(색상/프리셋) |
|
|
44
|
+
| `className?` | `string` | — | |
|
|
45
|
+
| `style?` | `CSSProperties` | — | |
|
|
46
|
+
|
|
47
|
+
#### Events
|
|
48
|
+
|
|
49
|
+
| Event | Type | Description |
|
|
50
|
+
|-------|------|-------------|
|
|
51
|
+
| `onClose` | `() => void` | 닫기 (sdClose) |
|
|
52
|
+
| `onButtonClick` | `(e: MouseEvent) => void` | 버튼 클릭 (sdButtonClick) |
|
|
53
|
+
|
|
54
|
+
## Dependencies
|
|
55
|
+
|
|
56
|
+
### Depends on
|
|
57
|
+
|
|
58
|
+
- [SButton](../SButton)
|
|
59
|
+
- [SGhostButton](../SGhostButton)
|
|
60
|
+
- [SIcon](../SIcon)
|
|
61
|
+
|
|
62
|
+
### Graph
|
|
63
|
+
|
|
64
|
+
```mermaid
|
|
65
|
+
graph TD;
|
|
66
|
+
SToast --> SButton
|
|
67
|
+
SToast --> SGhostButton
|
|
68
|
+
SToast --> SIcon
|
|
69
|
+
style SToast fill:#f9f,stroke:#333,stroke-width:4px
|
|
70
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# SToggle
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### SToggle
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `value?` | `boolean` | `false` | 선택(on/off) 상태 |
|
|
12
|
+
| `label?` | `string` | `''` | 라벨 |
|
|
13
|
+
| `disabled?` | `boolean` | `false` | 비활성 |
|
|
14
|
+
| `className?` | `string` | — | |
|
|
15
|
+
| `style?` | `CSSProperties` | — | |
|
|
16
|
+
|
|
17
|
+
#### Events
|
|
18
|
+
|
|
19
|
+
| Event | Type | Description |
|
|
20
|
+
|-------|------|-------------|
|
|
21
|
+
| `onValueChange` | `(value: boolean) => void` | 변경 (sdUpdate) |
|
|
22
|
+
|