sellmate-design-system-react 9.0.0-beta.10 → 9.0.0-beta.12
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 +3 -3
- package/dist/components/SBadge/README.md +24 -0
- package/dist/components/SBadge/SBadge.d.ts +1 -1
- package/dist/components/SBarcodeInput/README.md +8 -0
- package/dist/components/SButton/README.md +34 -0
- package/dist/components/SCalendar/README.md +13 -0
- package/dist/components/SCallout/README.md +15 -0
- package/dist/components/SCheckbox/README.md +8 -0
- package/dist/components/SChipFilter/README.md +276 -3
- package/dist/components/SChipFilter/SChipFilter.d.ts +78 -37
- package/dist/components/SChipFilter/index.d.ts +1 -1
- package/dist/components/SChipInput/README.md +14 -0
- package/dist/components/SCircleProgress/README.md +8 -0
- package/dist/components/SConfirmModal/README.md +16 -0
- package/dist/components/SDatePicker/README.md +14 -0
- package/dist/components/SDateRangePicker/README.md +14 -0
- package/dist/components/SDraggableItem/README.md +36 -0
- package/dist/components/SDraggableList/README.md +24 -0
- package/dist/components/SDrawer/README.md +8 -0
- package/dist/components/SDropdownButton/README.md +19 -0
- package/dist/components/SExpansionItem/README.md +36 -0
- package/dist/components/SField/README.md +20 -0
- package/dist/components/SFilePicker/README.md +14 -0
- package/dist/components/SFooter/README.md +21 -0
- package/dist/components/SForm/README.md +11 -0
- package/dist/components/SGhostButton/README.md +14 -2
- package/dist/components/SGnb/README.md +45 -0
- package/dist/components/SGuide/README.md +15 -0
- package/dist/components/SImage/README.md +14 -0
- package/dist/components/SKeyValueTable/README.md +83 -0
- package/dist/components/SLayout/README.md +16 -0
- package/dist/components/SLinearProgress/README.md +8 -0
- package/dist/components/SListItem/README.md +41 -0
- package/dist/components/SLoadingModal/README.md +8 -0
- package/dist/components/SNumberInput/README.md +8 -0
- package/dist/components/SPage/README.md +38 -0
- package/dist/components/SPopover/README.md +15 -0
- package/dist/components/SPopup/README.md +19 -0
- package/dist/components/SPortal/README.md +14 -0
- package/dist/components/SRadio/README.md +20 -0
- package/dist/components/SRadioButton/README.md +18 -0
- package/dist/components/SScrollArea/README.md +14 -0
- package/dist/components/SSearchInput/README.md +13 -0
- package/dist/components/SSectionHeaderCard/README.md +32 -0
- package/dist/components/SSelect/README.md +21 -2
- package/dist/components/SSplitter/README.md +15 -0
- package/dist/components/SStepper/README.md +26 -0
- package/dist/components/STable/README.md +103 -0
- package/dist/components/STabs/README.md +12 -0
- package/dist/components/STag/README.md +47 -0
- package/dist/components/STextLink/README.md +14 -0
- package/dist/components/STimePicker/README.md +14 -0
- package/dist/components/STimeRangePicker/README.md +26 -0
- package/dist/components/SToast/README.md +24 -0
- package/dist/components/SToggle/README.md +8 -0
- package/dist/components/STooltip/README.md +20 -0
- package/dist/components/STree/README.md +38 -0
- package/dist/index.cjs +170 -186
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +170 -186
- package/dist/index.js.map +1 -1
- package/dist/lib/story-docs.d.ts +19 -3
- package/dist/llms-full.txt +1444 -15
- package/dist/llms.txt +3 -3
- package/dist/styles.css +5 -16
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SChipFilter, type SChipFilterChangeDetail, type SChipFilterDatePreset, type SChipFilterField, type SChipFilterGroup, type SChipFilterGroupRule, type SChipFilterHandle, type SChipFilterKeywordValue, type SChipFilterMatchMode, type SChipFilterOption, type SChipFilterOptionValue, type SChipFilterProps, type SChipFilterType, type SChipFilterValue, type SChipFilterValueMap, } from './SChipFilter';
|
|
1
|
+
export { SChipFilter, type SChipFilterChangeDetail, type SChipFilterCustomField, type SChipFilterDateField, type SChipFilterDatePreset, type SChipFilterField, type SChipFilterFieldBase, type SChipFilterGroup, type SChipFilterGroupRule, type SChipFilterHandle, type SChipFilterKeywordField, type SChipFilterKeywordValue, type SChipFilterMatchMode, type SChipFilterMultiField, type SChipFilterOption, type SChipFilterOptionValue, type SChipFilterOptionsField, type SChipFilterPeriodField, type SChipFilterPresetsField, type SChipFilterProps, type SChipFilterSingleField, type SChipFilterType, type SChipFilterValue, type SChipFilterValueMap, } from './SChipFilter';
|
|
@@ -54,6 +54,20 @@
|
|
|
54
54
|
|--------|------|-------------|
|
|
55
55
|
| `focus` | `() => void` | 입력 필드에 포커스를 이동합니다. |
|
|
56
56
|
|
|
57
|
+
## Types
|
|
58
|
+
|
|
59
|
+
### SChipInputSize
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
export type SChipInputSize = SFieldSize;
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### SChipInputMetaPlacement
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
export type SChipInputMetaPlacement = 'end' | 'inline';
|
|
69
|
+
```
|
|
70
|
+
|
|
57
71
|
## Dependencies
|
|
58
72
|
|
|
59
73
|
### Depends on
|
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
| `className?` | `string` | — | |
|
|
18
18
|
| `style?` | `CSSProperties` | — | |
|
|
19
19
|
|
|
20
|
+
## Types
|
|
21
|
+
|
|
22
|
+
### SCircleProgressType
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
export type SCircleProgressType = 'primary' | 'inverse' | 'error' | 'complete' | 'neutral';
|
|
26
|
+
```
|
|
27
|
+
|
|
20
28
|
## Dependencies
|
|
21
29
|
|
|
22
30
|
### Used by
|
|
@@ -36,6 +36,22 @@
|
|
|
36
36
|
| `onCancel` | `() => void` | |
|
|
37
37
|
| `onClose` | `() => void` | 닫기(X) 버튼 클릭 (sdClose) |
|
|
38
38
|
|
|
39
|
+
## Types
|
|
40
|
+
|
|
41
|
+
### SConfirmModalType
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
export type SConfirmModalType = 'positive' | 'negative' | 'default';
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### ConfirmModalMainButton
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
/** 확인 버튼 프리셋 (sd-confirm-modal ConfirmModalMainButton) */
|
|
51
|
+
export type ConfirmModalMainButton =
|
|
52
|
+
'primary_md' | 'primary_outline_md' | 'danger_md' | 'danger_outline_md' | 'neutral_outline_md';
|
|
53
|
+
```
|
|
54
|
+
|
|
39
55
|
## Dependencies
|
|
40
56
|
|
|
41
57
|
### Used by
|
|
@@ -76,6 +76,20 @@
|
|
|
76
76
|
|-------|------|-------------|
|
|
77
77
|
| `onValueChange` | `(year: string) => void` | |
|
|
78
78
|
|
|
79
|
+
## Types
|
|
80
|
+
|
|
81
|
+
### SDatePickerMode
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
export type SDatePickerMode = 'date' | 'month' | 'year';
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### SDatePickerSize
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
export type SDatePickerSize = SFieldSize;
|
|
91
|
+
```
|
|
92
|
+
|
|
79
93
|
## Dependencies
|
|
80
94
|
|
|
81
95
|
### Used by
|
|
@@ -59,6 +59,20 @@
|
|
|
59
59
|
| `onPendingStartChange` | `(start: string \| null) => void` | 시작일만 선택된(종료일 대기) 상태를 상위로 전달 — 트리거에 `start ~` 프리뷰 표시용 |
|
|
60
60
|
| `onViewChange` | `(view: { year: number; month: number }) => void` | |
|
|
61
61
|
|
|
62
|
+
## Types
|
|
63
|
+
|
|
64
|
+
### SDateRangeValue
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
export type SDateRangeValue = [string, string] | null;
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### SDateRangePickerSize
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
export type SDateRangePickerSize = SFieldSize;
|
|
74
|
+
```
|
|
75
|
+
|
|
62
76
|
## Dependencies
|
|
63
77
|
|
|
64
78
|
### Used by
|
|
@@ -29,6 +29,42 @@
|
|
|
29
29
|
|-------|------|-------------|
|
|
30
30
|
| `onDragHandleMouseDown` | `(event: MouseEvent<HTMLDivElement>) => void` | 드래그 핸들 mouse down 이벤트 |
|
|
31
31
|
|
|
32
|
+
## Types
|
|
33
|
+
|
|
34
|
+
### SDraggableItemSlot
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export type SDraggableItemSlot = ReactNode | SDraggableItemRenderProp;
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### SDraggableItemSupportingTextPosition
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
export type SDraggableItemSupportingTextPosition = 'right' | 'bottom';
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### SDraggableItemSize
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
export type SDraggableItemSize = 'sm' | 'md';
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### SDraggableItemRenderProp
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
export type SDraggableItemRenderProp = (state: SDraggableItemRenderState) => ReactNode;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### SDraggableItemRenderState
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
export interface SDraggableItemRenderState {
|
|
62
|
+
hovered: boolean;
|
|
63
|
+
dragging: boolean;
|
|
64
|
+
disabled: boolean;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
32
68
|
## Dependencies
|
|
33
69
|
|
|
34
70
|
### Depends on
|
|
@@ -46,6 +46,30 @@
|
|
|
46
46
|
|------|------|---------|-------------|
|
|
47
47
|
| `children` | `ReactNode` | — | |
|
|
48
48
|
|
|
49
|
+
## Types
|
|
50
|
+
|
|
51
|
+
### SDraggableGroupMoveEvent
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
export interface SDraggableGroupMoveEvent {
|
|
55
|
+
group: string;
|
|
56
|
+
itemKey: string;
|
|
57
|
+
fromListId: string;
|
|
58
|
+
fromIndex: number;
|
|
59
|
+
toListId: string;
|
|
60
|
+
toIndex: number;
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### SDraggableListRenderState
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
export interface SDraggableListRenderState {
|
|
68
|
+
onDragHandleMouseDown: (event: MouseEvent<HTMLDivElement>) => void;
|
|
69
|
+
selected: boolean;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
49
73
|
## Dependencies
|
|
50
74
|
|
|
51
75
|
### Depends on
|
|
@@ -29,6 +29,14 @@
|
|
|
29
29
|
| `onClose` | `() => void` | 닫기(X) 버튼 클릭 |
|
|
30
30
|
| `onWidthChange` | `(width: number) => void` | 너비가 확정될 때(드래그를 놓거나 방향키 조작). 드래그하는 동안에는 오지 않는다 |
|
|
31
31
|
|
|
32
|
+
## Types
|
|
33
|
+
|
|
34
|
+
### SDrawerButton
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export type SDrawerButton = SFooterButton;
|
|
38
|
+
```
|
|
39
|
+
|
|
32
40
|
## Dependencies
|
|
33
41
|
|
|
34
42
|
### Depends on
|
|
@@ -33,6 +33,25 @@
|
|
|
33
33
|
| `open` | `() => void` | 드롭다운 열기 (sdOpen) |
|
|
34
34
|
| `close` | `() => void` | 드롭다운 닫기 (sdClose) |
|
|
35
35
|
|
|
36
|
+
## Types
|
|
37
|
+
|
|
38
|
+
### SDropdownButtonSize
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
export type SDropdownButtonSize = 'xs' | 'sm' | 'md';
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### SDropdownButtonItem
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
export interface SDropdownButtonItem {
|
|
48
|
+
value: string | number;
|
|
49
|
+
label: string;
|
|
50
|
+
icon?: SIconName;
|
|
51
|
+
disabled?: boolean;
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
36
55
|
## Dependencies
|
|
37
56
|
|
|
38
57
|
### Depends on
|
|
@@ -31,6 +31,42 @@
|
|
|
31
31
|
|-------|------|-------------|
|
|
32
32
|
| `onToggle` | `(expanded: boolean, event: MouseEvent<HTMLButtonElement>) => void` | |
|
|
33
33
|
|
|
34
|
+
## Types
|
|
35
|
+
|
|
36
|
+
### SExpansionItemSupportingTextPosition
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
export type SExpansionItemSupportingTextPosition = 'right' | 'bottom';
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### SExpansionItemRenderProp
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
export type SExpansionItemRenderProp = (state: SExpansionItemRenderState) => ReactNode;
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### SExpansionItemInteraction
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
export type SExpansionItemInteraction = 'chevron';
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### SExpansionItemSize
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
export type SExpansionItemSize = 'sm' | 'md';
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### SExpansionItemRenderState
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
export interface SExpansionItemRenderState {
|
|
64
|
+
expanded: boolean;
|
|
65
|
+
selected: boolean;
|
|
66
|
+
disabled: boolean;
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
34
70
|
## Dependencies
|
|
35
71
|
|
|
36
72
|
### Used by
|
|
@@ -50,6 +50,26 @@
|
|
|
50
50
|
|--------|------|-------------|
|
|
51
51
|
| `focus` | `() => void` | 내부 컨트롤에 포커스하고 필드를 화면에 스크롤합니다. |
|
|
52
52
|
|
|
53
|
+
## Types
|
|
54
|
+
|
|
55
|
+
### SFieldSize
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
export type SFieldSize = 'sm' | 'md';
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### SFieldAddonAlign
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
export type SFieldAddonAlign = 'start' | 'center' | 'end';
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### SFieldStatus
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
export type SFieldStatus = 'default' | 'pass' | 'error';
|
|
71
|
+
```
|
|
72
|
+
|
|
53
73
|
## Dependencies
|
|
54
74
|
|
|
55
75
|
### Used by
|
|
@@ -46,6 +46,20 @@
|
|
|
46
46
|
| `onValueChange` | `(value: SFilePickerValue) => void` | 파일 변경 (sdUpdate) |
|
|
47
47
|
| `onReject` | `(detail: { files: File[]; reason: SFilePickerRejectReason }) => void` | 제한 초과 거부 (sdReject) |
|
|
48
48
|
|
|
49
|
+
## Types
|
|
50
|
+
|
|
51
|
+
### SFilePickerValue
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
export type SFilePickerValue = File[] | File | null;
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### SFilePickerRejectReason
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
export type SFilePickerRejectReason = 'max-file-size' | 'max-total-size' | 'max-files';
|
|
61
|
+
```
|
|
62
|
+
|
|
49
63
|
## Dependencies
|
|
50
64
|
|
|
51
65
|
### Used by
|
|
@@ -16,6 +16,27 @@
|
|
|
16
16
|
| `leftClassName?` | `string` | — | |
|
|
17
17
|
| `style?` | `CSSProperties` | — | |
|
|
18
18
|
|
|
19
|
+
## Types
|
|
20
|
+
|
|
21
|
+
### SFooterBg
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
export type SFooterBg = 'white' | 'grey';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### SFooterButton
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
export interface SFooterButton {
|
|
31
|
+
label?: string;
|
|
32
|
+
color?: SButtonColor;
|
|
33
|
+
outline?: boolean;
|
|
34
|
+
size?: SButtonSize;
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
onClick?: () => void;
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
19
40
|
## Dependencies
|
|
20
41
|
|
|
21
42
|
### Used by
|
|
@@ -29,3 +29,14 @@
|
|
|
29
29
|
| `reset` | `() => void` | resetValidation 별칭 — sd-form sdReset 대응. 값 리셋은 소비자(value/onChange) 책임 |
|
|
30
30
|
| `focusFirstInvalid` | `() => void` | 첫 번째 실패 필드로 포커스 이동 |
|
|
31
31
|
|
|
32
|
+
## Types
|
|
33
|
+
|
|
34
|
+
### SFormValidationError
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export interface SFormValidationError {
|
|
38
|
+
/** 검증에 실패한 필드 name 목록 (DOM 순서) */
|
|
39
|
+
names: string[];
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
@@ -27,6 +27,20 @@
|
|
|
27
27
|
|-------|------|-------------|
|
|
28
28
|
| `onClick` | `(e: MouseEvent<HTMLButtonElement>) => void` | 클릭 (sdClick) |
|
|
29
29
|
|
|
30
|
+
## Types
|
|
31
|
+
|
|
32
|
+
### SGhostButtonSize
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
export type SGhostButtonSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg';
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### SGhostButtonIntent
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
export type SGhostButtonIntent = 'default' | 'danger' | 'action' | 'subAction' | 'inverse';
|
|
42
|
+
```
|
|
43
|
+
|
|
30
44
|
## Dependencies
|
|
31
45
|
|
|
32
46
|
### Used by
|
|
@@ -45,7 +59,6 @@
|
|
|
45
59
|
- [SPage](../SPage)
|
|
46
60
|
- [SPopover](../SPopover)
|
|
47
61
|
- [SSearchInput](../SSearchInput)
|
|
48
|
-
- [SSelect](../SSelect)
|
|
49
62
|
- [STimePicker](../STimePicker)
|
|
50
63
|
- [STimeRangePicker](../STimeRangePicker)
|
|
51
64
|
- [SToast](../SToast)
|
|
@@ -77,7 +90,6 @@ graph TD;
|
|
|
77
90
|
SPage --> SGhostButton
|
|
78
91
|
SPopover --> SGhostButton
|
|
79
92
|
SSearchInput --> SGhostButton
|
|
80
|
-
SSelect --> SGhostButton
|
|
81
93
|
STimePicker --> SGhostButton
|
|
82
94
|
STimeRangePicker --> SGhostButton
|
|
83
95
|
SToast --> SGhostButton
|
|
@@ -38,6 +38,51 @@
|
|
|
38
38
|
| `onLauncherClick` | `() => void` | 앱런처(그리드) 버튼 클릭. 미지정 시 런처 버튼을 렌더하지 않는다. 접힘 레일(fix)에는 폴드 버튼만 남으므로 표시되지 않는다. |
|
|
39
39
|
| `onMenuWidthChange` | `(width: number) => void` | 메뉴 폭이 확정될 때(드래그를 놓거나 방향키 조작). 드래그하는 동안에는 오지 않는다 |
|
|
40
40
|
|
|
41
|
+
## Types
|
|
42
|
+
|
|
43
|
+
### SGnbType
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
/** 메뉴 스타일: box = 라운드/좁은 들여쓰기, belt = 풀폭 행/넓은 들여쓰기 */
|
|
47
|
+
export type SGnbType = 'box' | 'belt';
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### SGnbHeader
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
/** 상단바 구조: fix = GNB 폭에 고정, full = 레이아웃 전폭 */
|
|
54
|
+
export type SGnbHeader = 'fix' | 'full';
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### SGnbColor
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
/** 색상(테마): light / dark */
|
|
61
|
+
export type SGnbColor = 'light' | 'dark';
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### SGnbMenuItem
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
/** GNB 메뉴 아이템 (재귀 트리). depth1 → depth2 → depth3. */
|
|
68
|
+
export interface SGnbMenuItem {
|
|
69
|
+
/** 표시 텍스트 */
|
|
70
|
+
label: string;
|
|
71
|
+
/** 고유 식별값 (선택 상태 비교 기준) */
|
|
72
|
+
value: string;
|
|
73
|
+
/** depth1 전용 아이콘명 */
|
|
74
|
+
icon?: SIconName;
|
|
75
|
+
/** 우측 Tag 뱃지 텍스트 */
|
|
76
|
+
tag?: string;
|
|
77
|
+
/** 뱃지 색. 미지정 시 blue. */
|
|
78
|
+
tagColor?: STagColor;
|
|
79
|
+
/** 비활성 여부 */
|
|
80
|
+
disabled?: boolean;
|
|
81
|
+
/** 하위 아이템 (있으면 펼침/접힘 대상) */
|
|
82
|
+
children?: SGnbMenuItem[];
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
41
86
|
## Dependencies
|
|
42
87
|
|
|
43
88
|
### Depends on
|
|
@@ -17,6 +17,21 @@
|
|
|
17
17
|
| `className?` | `string` | — | |
|
|
18
18
|
| `style?` | `CSSProperties` | — | |
|
|
19
19
|
|
|
20
|
+
## Types
|
|
21
|
+
|
|
22
|
+
### SGuideType
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
export type SGuideType = 'tip' | 'notion';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### SGuideMessage
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
/** 중첩 배열로 depth 표현 (원본 renderListItem 대응). 예: ['상위', ['하위1', '하위2']] */
|
|
32
|
+
export type SGuideMessage = string | SGuideMessage[];
|
|
33
|
+
```
|
|
34
|
+
|
|
20
35
|
## Dependencies
|
|
21
36
|
|
|
22
37
|
### Depends on
|
|
@@ -27,6 +27,20 @@
|
|
|
27
27
|
| `onLoad` | `(src: string) => void` | 로드 완료. 로드된 src 를 넘긴다 |
|
|
28
28
|
| `onError` | `(event: SyntheticEvent<HTMLImageElement>) => void` | 로드 실패 |
|
|
29
29
|
|
|
30
|
+
## Types
|
|
31
|
+
|
|
32
|
+
### SImageFit
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
export type SImageFit = (typeof IMAGE_FITS)[number];
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### IMAGE_FITS
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
export const IMAGE_FITS = ['cover', 'contain', 'fill', 'none', 'scale-down'] as const;
|
|
42
|
+
```
|
|
43
|
+
|
|
30
44
|
## Dependencies
|
|
31
45
|
|
|
32
46
|
### Depends on
|
|
@@ -23,6 +23,89 @@
|
|
|
23
23
|
| `onChange` | `(detail: SKeyValueChangeDetail) => void` | 값 변경 (sdChange) |
|
|
24
24
|
| `onSearch` | `() => void` | 검색 클릭 (sdSearch) |
|
|
25
25
|
|
|
26
|
+
## Types
|
|
27
|
+
|
|
28
|
+
### SKeyValueField
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
export type SKeyValueField = SKeyValueFieldBase & SKeyValueFieldByType;
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### SKeyValueChangeDetail
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
/**
|
|
38
|
+
* `onChange` 콜백 detail.
|
|
39
|
+
* 제네릭 `V`에 폼 값 형태(`{ [name]: value }`)를 넘기면 `name`/`value`/`values`가 정밀하게 타이핑됩니다.
|
|
40
|
+
* 미지정 시 `value`는 {@link SKeyValueFieldValue} 유니온으로 잡힙니다.
|
|
41
|
+
*/
|
|
42
|
+
export interface SKeyValueChangeDetail<
|
|
43
|
+
V extends Record<string, SKeyValueFieldValue> = Record<string, SKeyValueFieldValue>,
|
|
44
|
+
> {
|
|
45
|
+
/** 변경된 field의 name */
|
|
46
|
+
name: Extract<keyof V, string>;
|
|
47
|
+
/** 변경된 field의 새 값 */
|
|
48
|
+
value: V[Extract<keyof V, string>];
|
|
49
|
+
/** 변경이 반영된 전체 값 객체 (`{ [name]: value }`). controlled 패턴에서 그대로 상태에 반영하면 됩니다. */
|
|
50
|
+
values: V;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### SKeyValueFieldBase
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
/** field type과 무관한 공통 속성 (레이아웃·레이블·스팬 등) */
|
|
58
|
+
export interface SKeyValueFieldBase {
|
|
59
|
+
name: string;
|
|
60
|
+
label?: string;
|
|
61
|
+
required?: boolean;
|
|
62
|
+
helpText?: string[];
|
|
63
|
+
hideTh?: boolean;
|
|
64
|
+
thRowSpan?: number;
|
|
65
|
+
thColSpan?: number;
|
|
66
|
+
tdRowSpan?: number;
|
|
67
|
+
tdColSpan?: number;
|
|
68
|
+
thWidth?: number | string;
|
|
69
|
+
thClass?: string;
|
|
70
|
+
tdClass?: string;
|
|
71
|
+
/** 셀 커스텀 렌더 (React 확장). 지정 시 type/options는 무시되고 이 노드가 그대로 렌더됩니다. */
|
|
72
|
+
render?: ReactNode;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### SKeyValueFieldByType
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
/**
|
|
80
|
+
* `type`에 따라 `options`가 해당 컴포넌트의 props로 좁혀지는 discriminated union.
|
|
81
|
+
* `type` 생략 시 `text`로 동작합니다.
|
|
82
|
+
*/
|
|
83
|
+
export type SKeyValueFieldByType =
|
|
84
|
+
| { type?: 'text'; options?: { value?: ReactNode } }
|
|
85
|
+
| { type: 'input'; options?: FieldOptions<SInputProps> }
|
|
86
|
+
| { type: 'textarea'; options?: FieldOptions<STextareaProps> }
|
|
87
|
+
| { type: 'number-input'; options?: FieldOptions<SNumberInputProps> }
|
|
88
|
+
| { type: 'select'; options?: FieldOptions<SSelectProps> }
|
|
89
|
+
| { type: 'radio'; options?: FieldOptions<SRadioGroupProps> }
|
|
90
|
+
| { type: 'checkbox'; options?: FieldOptions<SCheckboxProps> }
|
|
91
|
+
| { type: 'date-picker'; options?: FieldOptions<SDatePickerProps> }
|
|
92
|
+
| { type: 'date-range-picker'; options?: FieldOptions<SDateRangePickerProps> }
|
|
93
|
+
| { type: 'file-picker'; options?: FieldOptions<SFilePickerProps> };
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### SKeyValueFieldValue
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
/**
|
|
100
|
+
* field type별 `onChange`로 올라오는 값 타입.
|
|
101
|
+
* - `string`: input · textarea · select · radio · date-picker
|
|
102
|
+
* - `number`: number-input
|
|
103
|
+
* - `boolean`: checkbox
|
|
104
|
+
* - `string[]`: date-range-picker
|
|
105
|
+
*/
|
|
106
|
+
export type SKeyValueFieldValue = string | number | boolean | string[];
|
|
107
|
+
```
|
|
108
|
+
|
|
26
109
|
## Dependencies
|
|
27
110
|
|
|
28
111
|
### Depends on
|
|
@@ -20,6 +20,22 @@
|
|
|
20
20
|
|-------|------|-------------|
|
|
21
21
|
| `onFoldedChange` | `(folded: boolean) => void` | 접힘 상태 변경 |
|
|
22
22
|
|
|
23
|
+
## Types
|
|
24
|
+
|
|
25
|
+
### SLayoutType
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
/** 메뉴 스타일: box(라운드) / belt(풀폭 행) — 자식 SGnb 의 메뉴 모양 */
|
|
29
|
+
export type SLayoutType = SGnbType;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### SLayoutHeader
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
/** 레이아웃 구조: fix(좌측 GNB + 페이지 가로 분할) / full(풀폭 상단바 + 아래에 메뉴|페이지) */
|
|
36
|
+
export type SLayoutHeader = SGnbHeader;
|
|
37
|
+
```
|
|
38
|
+
|
|
23
39
|
## Dependencies
|
|
24
40
|
|
|
25
41
|
### Used by
|
|
@@ -23,6 +23,47 @@
|
|
|
23
23
|
| `size?` | `SListItemSize` | `'sm'` | 타이포그래피 크기 |
|
|
24
24
|
| `disabled?` | `boolean` | `false` | 비활성 상태 여부 |
|
|
25
25
|
|
|
26
|
+
## Types
|
|
27
|
+
|
|
28
|
+
### SListItemSlot
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
export type SListItemSlot = ReactNode | SListItemRenderProp;
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### SListItemSupportingTextPosition
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export type SListItemSupportingTextPosition = 'right' | 'bottom';
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### SListItemInteraction
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
export type SListItemInteraction = 'chevron';
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### SListItemSize
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
export type SListItemSize = 'sm' | 'md';
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### SListItemRenderProp
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
export type SListItemRenderProp = (state: SListItemRenderState) => ReactNode;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### SListItemRenderState
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
export interface SListItemRenderState {
|
|
62
|
+
hovered: boolean;
|
|
63
|
+
disabled: boolean;
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
26
67
|
## Dependencies
|
|
27
68
|
|
|
28
69
|
### Used by
|
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
| `onClose` | `() => void` | 닫기(X) 버튼 클릭 (sdClose) — error 상태에서만 노출 |
|
|
27
27
|
| `onButtonClick` | `() => void` | 버튼 클릭 (sdClick) |
|
|
28
28
|
|
|
29
|
+
## Types
|
|
30
|
+
|
|
31
|
+
### LoadingModalState
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
export type LoadingModalState = 'loading' | 'error';
|
|
35
|
+
```
|
|
36
|
+
|
|
29
37
|
## Dependencies
|
|
30
38
|
|
|
31
39
|
### Used by
|