sellmate-design-system-react 9.0.0-beta.4 → 9.0.0-beta.40
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 +642 -88
- package/README.md +111 -9
- package/dist/components/SAccountListBox/AccountListBoxPortal.d.ts +31 -0
- package/dist/components/SAccountListBox/README.md +86 -0
- package/dist/components/SAccountListBox/SAccountListBox.d.ts +79 -0
- package/dist/components/SAccountListBox/SystemMenuPortal.d.ts +58 -0
- package/dist/components/SAccountListBox/accountListBox.config.d.ts +64 -0
- package/dist/components/SAccountListBox/index.d.ts +2 -0
- package/dist/components/SBadge/README.md +26 -0
- package/dist/components/SBadge/SBadge.d.ts +1 -1
- package/dist/components/SBarcodeInput/README.md +9 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.d.ts +7 -1
- package/dist/components/SButton/README.md +38 -0
- package/dist/components/SCalendar/README.md +13 -0
- package/dist/components/SCalendarBoard/CalendarDayCard.d.ts +38 -0
- package/dist/components/SCalendarBoard/CalendarDayEventListBox.d.ts +26 -0
- package/dist/components/SCalendarBoard/CalendarEventButton.d.ts +13 -0
- package/dist/components/SCalendarBoard/CalendarMoreButton.d.ts +12 -0
- package/dist/components/SCalendarBoard/README.md +137 -0
- package/dist/components/SCalendarBoard/SCalendarBoard.d.ts +68 -0
- package/dist/components/SCalendarBoard/calendarBoard.config.d.ts +33 -0
- package/dist/components/SCalendarBoard/index.d.ts +3 -0
- package/dist/components/SCalendarBoard/types.d.ts +31 -0
- package/dist/components/SCallout/README.md +16 -1
- package/dist/components/SCallout/SCallout.d.ts +9 -4
- package/dist/components/SCard/README.md +16 -0
- package/dist/components/SCard/SCard.d.ts +17 -2
- package/dist/components/SCheckbox/README.md +8 -0
- package/dist/components/SChipFilter/README.md +339 -14
- package/dist/components/SChipFilter/SChipFilter.d.ts +150 -60
- package/dist/components/SChipFilter/index.d.ts +1 -1
- package/dist/components/SChipInput/README.md +15 -1
- package/dist/components/SChipInput/SChipInput.d.ts +7 -1
- package/dist/components/SChipInput/index.d.ts +1 -1
- package/dist/components/SCircleProgress/README.md +8 -0
- package/dist/components/SConfirmModal/README.md +17 -1
- package/dist/components/SConfirmModal/SConfirmModal.d.ts +2 -2
- package/dist/components/SConfirmModal/index.d.ts +1 -1
- package/dist/components/SDatePicker/README.md +20 -2
- package/dist/components/SDatePicker/SDatePicker.d.ts +27 -4
- package/dist/components/SDateRangePicker/README.md +17 -2
- package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +16 -3
- package/dist/components/SDivider/README.md +7 -0
- package/dist/components/SDivider/SDivider.d.ts +11 -0
- package/dist/components/SDraggableItem/README.md +37 -0
- package/dist/components/SDraggableItem/SDraggableItem.d.ts +2 -0
- package/dist/components/SDraggableItem/index.d.ts +1 -1
- package/dist/components/SDraggableList/README.md +30 -0
- package/dist/components/SDraggableList/SDraggableList.d.ts +11 -0
- package/dist/components/SDraggableList/index.d.ts +1 -1
- package/dist/components/SDrawer/README.md +8 -0
- package/dist/components/SDropdownButton/README.md +19 -0
- package/dist/components/SEditor/EditorBody.d.ts +36 -0
- package/dist/components/SEditor/EditorToolbar.d.ts +93 -0
- package/dist/components/SEditor/README.md +203 -0
- package/dist/components/SEditor/SEditor.d.ts +114 -0
- package/dist/components/SEditor/editor-icons.d.ts +63 -0
- package/dist/components/SEditor/editor.config.d.ts +119 -0
- package/dist/components/SEditor/index.d.ts +8 -0
- package/dist/components/SEditor/tiptap-api.d.ts +29 -0
- package/dist/components/SEditor/use-is-mobile.d.ts +14 -0
- package/dist/components/SExpansionItem/README.md +36 -0
- package/dist/components/SExpansionItem/index.d.ts +1 -1
- package/dist/components/SField/README.md +27 -3
- package/dist/components/SField/SField.d.ts +12 -6
- package/dist/components/SFilePicker/README.md +15 -1
- package/dist/components/SFilePicker/SFilePicker.d.ts +7 -1
- package/dist/components/SFooter/README.md +25 -0
- package/dist/components/SFooter/SFooter.d.ts +4 -3
- package/dist/components/SForm/README.md +11 -0
- package/dist/components/SGhostButton/README.md +22 -4
- package/dist/components/SGnb/README.md +51 -0
- package/dist/components/SGnb/SGnb.d.ts +50 -0
- package/dist/components/SGnb/gnb.config.d.ts +10 -3
- package/dist/components/SGnb/index.d.ts +1 -1
- package/dist/components/SGnbSystem/README.md +186 -0
- package/dist/components/SGnbSystem/SGnbSystem.d.ts +179 -0
- package/dist/components/SGnbSystem/gnbSystem.config.d.ts +122 -0
- package/dist/components/SGnbSystem/index.d.ts +2 -0
- package/dist/components/SGuide/README.md +15 -0
- package/dist/components/SIcon/README.md +10 -0
- package/dist/components/SIcon/SIcon.d.ts +1 -1
- package/dist/components/SIcon/icons.gen.d.ts +4 -0
- package/dist/components/SImage/README.md +14 -0
- package/dist/components/SInput/README.md +3 -1
- package/dist/components/SInput/SInput.d.ts +7 -1
- package/dist/components/SKeyValueTable/README.md +86 -0
- package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +6 -2
- package/dist/components/SKeyValueTable/index.d.ts +1 -1
- package/dist/components/SLayout/README.md +21 -0
- package/dist/components/SLayout/SLayout.d.ts +4 -0
- package/dist/components/SLayout/index.d.ts +1 -1
- package/dist/components/SLinearProgress/README.md +15 -0
- package/dist/components/SLinearProgress/SLinearProgress.d.ts +3 -0
- package/dist/components/SLinearProgress/index.d.ts +1 -1
- package/dist/components/SList/README.md +5 -1
- package/dist/components/SList/SList.d.ts +0 -2
- package/dist/components/SListItem/README.md +41 -0
- package/dist/components/SListItem/index.d.ts +1 -1
- package/dist/components/SLoadingContainer/loading.d.ts +18 -2
- package/dist/components/SLoadingModal/README.md +9 -1
- package/dist/components/SLoadingModal/SLoadingModal.d.ts +2 -2
- package/dist/components/SLoadingModal/index.d.ts +1 -1
- package/dist/components/SNumberInput/README.md +9 -1
- package/dist/components/SNumberInput/SNumberInput.d.ts +7 -1
- package/dist/components/SPage/README.md +47 -4
- package/dist/components/SPage/SPage.d.ts +15 -10
- package/dist/components/SPage/SPageHeader.d.ts +18 -11
- package/dist/components/SPage/index.d.ts +1 -1
- package/dist/components/SPage/page-column.d.ts +25 -0
- package/dist/components/SPopover/README.md +15 -0
- package/dist/components/SPopup/README.md +19 -0
- package/dist/components/SPortal/README.md +18 -0
- package/dist/components/SRadio/README.md +20 -0
- package/dist/components/SRadioButton/README.md +18 -0
- package/dist/components/SRadioButton/SRadioButton.d.ts +1 -1
- package/dist/components/SRadioCard/README.md +78 -0
- package/dist/components/SRadioCard/SRadioCard.d.ts +29 -0
- package/dist/components/SRadioCard/SRadioCardGroup.d.ts +36 -0
- package/dist/components/SRadioCard/index.d.ts +2 -0
- package/dist/components/SScrollArea/README.md +27 -0
- package/dist/components/SSearchInput/README.md +63 -0
- package/dist/components/SSearchInput/SSearchInput.d.ts +52 -0
- package/dist/components/SSearchInput/index.d.ts +1 -0
- package/dist/components/SSectionHeaderCard/README.md +37 -0
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +10 -0
- package/dist/components/SSelect/README.md +24 -6
- package/dist/components/SSelect/SSelect.d.ts +14 -2
- package/dist/components/SSplitter/README.md +15 -0
- package/dist/components/SStepper/README.md +26 -0
- package/dist/components/SSwitch/README.md +13 -0
- package/dist/components/SSystemActionButton/README.md +221 -0
- package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +161 -0
- package/dist/components/SSystemActionButton/index.d.ts +2 -0
- package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +93 -0
- package/dist/components/STable/README.md +86 -1
- package/dist/components/STable/STable.d.ts +121 -11
- package/dist/components/STable/index.d.ts +1 -1
- package/dist/components/STabs/README.md +12 -1
- package/dist/components/STabs/STabs.d.ts +2 -4
- package/dist/components/STabs/index.d.ts +1 -1
- package/dist/components/STabs/tabs.config.d.ts +3 -4
- package/dist/components/STag/README.md +52 -0
- package/dist/components/STag/STag.d.ts +3 -1
- package/dist/components/STextLink/README.md +18 -0
- package/dist/components/STextLink/STextLink.d.ts +4 -0
- package/dist/components/STextarea/README.md +1 -1
- package/dist/components/STextarea/STextarea.d.ts +7 -1
- package/dist/components/STimePicker/README.md +15 -1
- package/dist/components/STimePicker/STimePicker.d.ts +7 -1
- package/dist/components/STimePicker/timepicker.config.d.ts +4 -2
- package/dist/components/STimeRangePicker/README.md +27 -1
- package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +7 -1
- package/dist/components/SToast/README.md +24 -0
- package/dist/components/SToggle/README.md +8 -0
- package/dist/components/SToggle/index.d.ts +1 -1
- package/dist/components/STooltip/README.md +24 -0
- package/dist/components/STree/README.md +41 -0
- package/dist/components/STree/STree.d.ts +8 -0
- package/dist/components/STree/index.d.ts +1 -1
- package/dist/docs/Gallery.d.ts +9 -0
- package/dist/docs/gallery-previews.d.ts +24 -0
- package/dist/index.cjs +10754 -5244
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.js +10718 -5244
- package/dist/index.js.map +1 -1
- package/dist/lib/doc-sections.d.ts +35 -0
- package/dist/lib/field-width.d.ts +31 -0
- package/dist/lib/floating-height.d.ts +15 -0
- package/dist/lib/story-docs.d.ts +19 -3
- package/dist/lib/truncated-value-tooltip.d.ts +18 -0
- package/dist/llms-full.txt +3263 -228
- package/dist/llms.txt +647 -90
- package/dist/playground/categories.d.ts +19 -0
- package/dist/styles.css +1725 -169
- package/dist/theme.css +216 -24
- package/eslint/index.mjs +14 -0
- package/eslint/lib/table-column.mjs +26 -0
- package/eslint/rules/divider-vertical-height.mjs +137 -0
- package/eslint/rules/field-width-grade.d.mts +41 -0
- package/eslint/rules/field-width-grade.mjs +311 -0
- package/eslint/rules/table-column-width.mjs +110 -0
- package/eslint/scale.gen.mjs +5 -2
- package/package.json +13 -1
|
@@ -11,11 +11,59 @@
|
|
|
11
11
|
| `shape?` | `STagShape` | `'square'` | 모양 |
|
|
12
12
|
| `size?` | `STagSize` | `'sm'` | 크기 |
|
|
13
13
|
| `color?` | `STagColor` | `'grey'` | 색상 |
|
|
14
|
+
| `deep?` | `boolean` | `false` | 진한 배경(deep) 버전. 배경에 강조색을 채우고 텍스트·아이콘을 반전색으로 쓴다 |
|
|
14
15
|
| `label?` | `string` | `''` | 레이블 텍스트 |
|
|
15
16
|
| `icon?` | `SIconName` | — | 아이콘명 |
|
|
16
17
|
| `iconLeft?` | `boolean` | `true` | 아이콘을 레이블 왼쪽에 배치 |
|
|
17
18
|
| `width?` | `string \| number` | — | 태그 너비 (숫자면 px, 문자열이면 그대로 적용). 미지정 시 콘텐츠 크기 |
|
|
18
19
|
|
|
20
|
+
## Types
|
|
21
|
+
|
|
22
|
+
### STagShape
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
export type STagShape = (typeof TAG_SHAPES)[number];
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### STagSize
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
export type STagSize = (typeof TAG_SIZES)[number];
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### STagColor
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export type STagColor = (typeof TAG_COLORS)[number];
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### TAG_SHAPES
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
export const TAG_SHAPES = ['square', 'pill'] as const;
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### TAG_SIZES
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
export const TAG_SIZES = ['xs', 'sm', 'md'] as const;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### TAG_COLORS
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
export const TAG_COLORS = [
|
|
56
|
+
'grey',
|
|
57
|
+
'red',
|
|
58
|
+
'orange',
|
|
59
|
+
'yellow',
|
|
60
|
+
'green',
|
|
61
|
+
'blue',
|
|
62
|
+
'darkblue',
|
|
63
|
+
'indigo',
|
|
64
|
+
] as const;
|
|
65
|
+
```
|
|
66
|
+
|
|
19
67
|
## Dependencies
|
|
20
68
|
|
|
21
69
|
### Used by
|
|
@@ -24,6 +72,8 @@
|
|
|
24
72
|
- [SConfirmModal](../SConfirmModal)
|
|
25
73
|
- [SGhostButton](../SGhostButton)
|
|
26
74
|
- [SGnb](../SGnb)
|
|
75
|
+
- [SRadioCard](../SRadioCard)
|
|
76
|
+
- [SSystemActionButton](../SSystemActionButton)
|
|
27
77
|
- [STabs](../STabs)
|
|
28
78
|
- [STextLink](../STextLink)
|
|
29
79
|
|
|
@@ -40,6 +90,8 @@ graph TD;
|
|
|
40
90
|
SConfirmModal --> STag
|
|
41
91
|
SGhostButton --> STag
|
|
42
92
|
SGnb --> STag
|
|
93
|
+
SRadioCard --> STag
|
|
94
|
+
SSystemActionButton --> STag
|
|
43
95
|
STabs --> STag
|
|
44
96
|
STextLink --> STag
|
|
45
97
|
style STag fill:#f9f,stroke:#333,stroke-width:4px
|
|
@@ -8,6 +8,8 @@ export interface STagProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'
|
|
|
8
8
|
size?: STagSize;
|
|
9
9
|
/** 색상 */
|
|
10
10
|
color?: STagColor;
|
|
11
|
+
/** 진한 배경(deep) 버전. 배경에 강조색을 채우고 텍스트·아이콘을 반전색으로 쓴다 */
|
|
12
|
+
deep?: boolean;
|
|
11
13
|
/** 레이블 텍스트 */
|
|
12
14
|
label?: string;
|
|
13
15
|
/** 아이콘명 */
|
|
@@ -20,6 +22,6 @@ export interface STagProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'
|
|
|
20
22
|
/**
|
|
21
23
|
* STag — sd-tag 포팅.
|
|
22
24
|
* Stencil의 `name`(예: square_sm_grey) 프리셋을 shape/size/color 세 prop으로 분리.
|
|
23
|
-
* 색상은 컴포넌트 토큰 `--cmp-tag-<color>-{bg,content}
|
|
25
|
+
* 색상은 컴포넌트 토큰 `--cmp-tag-<color>-{bg,content}`, deep 은 `--cmp-tag-<color>-deep-*` 참조.
|
|
24
26
|
*/
|
|
25
27
|
export declare const STag: import("react").ForwardRefExoticComponent<STagProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
| `label?` | `string` | `''` | 레이블 |
|
|
12
12
|
| `icon?` | `SIconName` | — | 좌측 아이콘 |
|
|
13
13
|
| `iconColor?` | `SColor` | — | 좌측 아이콘 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 |
|
|
14
|
+
| `iconRotate?` | `0 \| 90 \| 180 \| 270` | — | 좌측 아이콘 회전 각도. 같은 아이콘을 방향만 바꿔 쓸 때 (`SIcon` 의 `rotate` 로 그대로 간다) |
|
|
14
15
|
| `labelClass?` | `string` | — | 레이블 span에 추가할 클래스 |
|
|
15
16
|
| `rightArrow?` | `STextLinkArrow` | `'none'` | 우측 화살표 |
|
|
17
|
+
| `rightArrowRotate?` | `0 \| 90 \| 180 \| 270` | — | 우측 화살표 회전 각도. 같은 화살표를 방향만 바꿔 쓸 때 (`SIcon` 의 `rotate` 로 그대로 간다) |
|
|
16
18
|
| `underline?` | `boolean` | `false` | 밑줄 여부 |
|
|
17
19
|
| `disabled?` | `boolean` | `false` | 비활성 |
|
|
18
20
|
| `size?` | `STextLinkSize` | `'sm'` | 크기 |
|
|
@@ -24,6 +26,20 @@
|
|
|
24
26
|
|-------|------|-------------|
|
|
25
27
|
| `onClick` | `() => void` | |
|
|
26
28
|
|
|
29
|
+
## Types
|
|
30
|
+
|
|
31
|
+
### STextLinkArrow
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
export type STextLinkArrow = 'none' | 'chevron' | 'caret';
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### STextLinkSize
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
export type STextLinkSize = 'sm' | 'md' | 'lg';
|
|
41
|
+
```
|
|
42
|
+
|
|
27
43
|
## Dependencies
|
|
28
44
|
|
|
29
45
|
### Used by
|
|
@@ -31,6 +47,7 @@
|
|
|
31
47
|
- [SChipFilter](../SChipFilter)
|
|
32
48
|
- [SChipInput](../SChipInput)
|
|
33
49
|
- [SPopover](../SPopover)
|
|
50
|
+
- [STable](../STable)
|
|
34
51
|
|
|
35
52
|
### Depends on
|
|
36
53
|
|
|
@@ -46,5 +63,6 @@ graph TD;
|
|
|
46
63
|
SChipFilter --> STextLink
|
|
47
64
|
SChipInput --> STextLink
|
|
48
65
|
SPopover --> STextLink
|
|
66
|
+
STable --> STextLink
|
|
49
67
|
style STextLink fill:#f9f,stroke:#333,stroke-width:4px
|
|
50
68
|
```
|
|
@@ -10,10 +10,14 @@ export interface STextLinkProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'o
|
|
|
10
10
|
icon?: SIconName;
|
|
11
11
|
/** 좌측 아이콘 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 */
|
|
12
12
|
iconColor?: SColor;
|
|
13
|
+
/** 좌측 아이콘 회전 각도. 같은 아이콘을 방향만 바꿔 쓸 때 (`SIcon` 의 `rotate` 로 그대로 간다) */
|
|
14
|
+
iconRotate?: 0 | 90 | 180 | 270;
|
|
13
15
|
/** 레이블 span에 추가할 클래스 */
|
|
14
16
|
labelClass?: string;
|
|
15
17
|
/** 우측 화살표 */
|
|
16
18
|
rightArrow?: STextLinkArrow;
|
|
19
|
+
/** 우측 화살표 회전 각도. 같은 화살표를 방향만 바꿔 쓸 때 (`SIcon` 의 `rotate` 로 그대로 간다) */
|
|
20
|
+
rightArrowRotate?: 0 | 90 | 180 | 270;
|
|
17
21
|
/** 밑줄 여부 */
|
|
18
22
|
underline?: boolean;
|
|
19
23
|
/** 비활성 */
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
| `hint?` | `string` | — | |
|
|
28
28
|
| `error?` | `boolean` | — | |
|
|
29
29
|
| `errorMessage?` | `string` | — | |
|
|
30
|
-
| `width?` | `
|
|
30
|
+
| `width?` | `SFieldWidth` | — | 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이. 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다. 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다. |
|
|
31
31
|
| `disabled?` | `boolean` | `false` | |
|
|
32
32
|
| `readOnly?` | `boolean` | `false` | |
|
|
33
33
|
| `className?` | `string` | — | |
|
|
@@ -4,6 +4,7 @@ import { type SIconName } from '../SIcon';
|
|
|
4
4
|
import { type SColor } from '../../lib/color';
|
|
5
5
|
import { type Rule } from '../../lib/form';
|
|
6
6
|
import { type STooltipProps } from '../STooltip';
|
|
7
|
+
import { type SFieldWidth } from '../../lib/field-width';
|
|
7
8
|
export interface STextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'> {
|
|
8
9
|
/** 값 (제어) */
|
|
9
10
|
value?: string;
|
|
@@ -41,7 +42,12 @@ export interface STextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextArea
|
|
|
41
42
|
hint?: string;
|
|
42
43
|
error?: boolean;
|
|
43
44
|
errorMessage?: string;
|
|
44
|
-
|
|
45
|
+
/**
|
|
46
|
+
* 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이.
|
|
47
|
+
* 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다.
|
|
48
|
+
* 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다.
|
|
49
|
+
*/
|
|
50
|
+
width?: SFieldWidth;
|
|
45
51
|
disabled?: boolean;
|
|
46
52
|
readOnly?: boolean;
|
|
47
53
|
className?: string;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
| `clearable?` | `boolean` | `false` | |
|
|
17
17
|
| `useMeridiem?` | `boolean` | — | 오전/오후 선택 표시 여부. 지정하지 않으면 type="midday"일 때만 켜집니다. |
|
|
18
18
|
| `minuteStep?` | `number` | `1` | |
|
|
19
|
-
| `width?` | `
|
|
19
|
+
| `width?` | `SFieldWidth` | — | 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이. 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다. 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다. |
|
|
20
20
|
| `name?` | `string` | — | |
|
|
21
21
|
| `rules?` | `Rule[]` | — | |
|
|
22
22
|
| `status?` | `SFieldStatus` | — | |
|
|
@@ -41,6 +41,20 @@
|
|
|
41
41
|
| `onValueChange` | `(time: string \| null) => void` | 선택 변경 (sdUpdate) |
|
|
42
42
|
| `onOpenChange` | `(open: boolean) => void` | 열림/닫힘 변경 (sdDropDownShow) |
|
|
43
43
|
|
|
44
|
+
## Types
|
|
45
|
+
|
|
46
|
+
### STimePickerType
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
export type STimePickerType = 'default' | 'midday';
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### STimePickerSize
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
export type STimePickerSize = 'sm' | 'md';
|
|
56
|
+
```
|
|
57
|
+
|
|
44
58
|
## Dependencies
|
|
45
59
|
|
|
46
60
|
### Used by
|
|
@@ -5,6 +5,7 @@ import { type SColor } from '../../lib/color';
|
|
|
5
5
|
import { type Rule } from '../../lib/form';
|
|
6
6
|
import { type STooltipProps } from '../STooltip';
|
|
7
7
|
import { type STimePickerSize, type STimePickerType } from './timepicker.config';
|
|
8
|
+
import { type SFieldWidth } from '../../lib/field-width';
|
|
8
9
|
export type { STimePickerSize, STimePickerType } from './timepicker.config';
|
|
9
10
|
export interface STimePickerProps {
|
|
10
11
|
/** 선택 시간 (HH:mm) */
|
|
@@ -22,7 +23,12 @@ export interface STimePickerProps {
|
|
|
22
23
|
/** 오전/오후 선택 표시 여부. 지정하지 않으면 type="midday"일 때만 켜집니다. */
|
|
23
24
|
useMeridiem?: boolean;
|
|
24
25
|
minuteStep?: number;
|
|
25
|
-
|
|
26
|
+
/**
|
|
27
|
+
* 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이.
|
|
28
|
+
* 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다.
|
|
29
|
+
* 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다.
|
|
30
|
+
*/
|
|
31
|
+
width?: SFieldWidth;
|
|
26
32
|
name?: string;
|
|
27
33
|
rules?: Rule[];
|
|
28
34
|
status?: SFieldStatus;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SFieldWidthGrade } from '../../lib/field-width';
|
|
1
2
|
export type STimePickerSize = 'sm' | 'md';
|
|
2
3
|
export type STimePickerType = 'default' | 'midday';
|
|
3
4
|
export type STimePickerMeridiem = 'AM' | 'PM';
|
|
@@ -13,10 +14,11 @@ export declare const TIMEPICKER_SIZE_CONFIG: Record<STimePickerSize, {
|
|
|
13
14
|
minWidth: number;
|
|
14
15
|
fieldMinWidth: number;
|
|
15
16
|
/**
|
|
16
|
-
* 필드
|
|
17
|
+
* 필드 상한(폭 등급). 값 길이가 HH:mm 으로 정해져 있어, width="100%" 를 받아도 행 전체로
|
|
17
18
|
* 늘어나지 않게 막는다 (SKeyValueTable 이 모든 컨트롤에 100% 를 넘긴다).
|
|
19
|
+
* px 가 아니라 등급으로 두어 `--cmp-field-width-*` 가 바뀌면 함께 따라가게 한다.
|
|
18
20
|
*/
|
|
19
|
-
fieldMaxWidth:
|
|
21
|
+
fieldMaxWidth: SFieldWidthGrade;
|
|
20
22
|
}>;
|
|
21
23
|
export declare function clampTimePart(value: number, min: number, max: number): number;
|
|
22
24
|
export declare function padTimePart(value: number): string;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
| `useMeridiem?` | `boolean` | — | 오전/오후 선택 표시 여부. 지정하지 않으면 type="midday"일 때만 켜집니다. |
|
|
18
18
|
| `minuteStep?` | `number` | `1` | |
|
|
19
19
|
| `rangeOrder?` | `STimeRangePickerRangeOrder` | `'strict'` | 범위 순서 정책. strict는 시작 시간이 종료 시간보다 늦어지지 않도록 보정합니다. |
|
|
20
|
-
| `width?` | `
|
|
20
|
+
| `width?` | `SFieldWidth` | — | 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이. 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다. 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다. |
|
|
21
21
|
| `name?` | `string` | — | |
|
|
22
22
|
| `rules?` | `Rule[]` | — | |
|
|
23
23
|
| `status?` | `SFieldStatus` | — | |
|
|
@@ -42,6 +42,32 @@
|
|
|
42
42
|
| `onValueChange` | `(range: STimeRangeValue) => void` | 선택 변경 (sdUpdate) |
|
|
43
43
|
| `onOpenChange` | `(open: boolean) => void` | 열림/닫힘 변경 (sdDropDownShow) |
|
|
44
44
|
|
|
45
|
+
## Types
|
|
46
|
+
|
|
47
|
+
### STimeRangeValue
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
export type STimeRangeValue = [string, string] | null;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### STimeRangePickerType
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
export type STimeRangePickerType = STimePickerType;
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### STimeRangePickerSize
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
export type STimeRangePickerSize = STimePickerSize;
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### STimeRangePickerRangeOrder
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
export type STimeRangePickerRangeOrder = 'strict' | 'allow-cross-day';
|
|
69
|
+
```
|
|
70
|
+
|
|
45
71
|
## Dependencies
|
|
46
72
|
|
|
47
73
|
### Depends on
|
|
@@ -6,6 +6,7 @@ import { type Rule } from '../../lib/form';
|
|
|
6
6
|
import { type STooltipProps } from '../STooltip';
|
|
7
7
|
import { type STimeRangePickerRangeOrder, type STimeRangePickerSize, type STimeRangePickerType, type STimeRangeValue } from './time-range-picker.config';
|
|
8
8
|
export type { STimeRangePickerSize, STimeRangePickerRangeOrder, STimeRangePickerType, STimeRangeValue, } from './time-range-picker.config';
|
|
9
|
+
import { type SFieldWidth } from '../../lib/field-width';
|
|
9
10
|
export interface STimeRangePickerProps {
|
|
10
11
|
/** 선택 시간 범위 [시작, 종료] (HH:mm) */
|
|
11
12
|
value?: STimeRangeValue;
|
|
@@ -24,7 +25,12 @@ export interface STimeRangePickerProps {
|
|
|
24
25
|
minuteStep?: number;
|
|
25
26
|
/** 범위 순서 정책. strict는 시작 시간이 종료 시간보다 늦어지지 않도록 보정합니다. */
|
|
26
27
|
rangeOrder?: STimeRangePickerRangeOrder;
|
|
27
|
-
|
|
28
|
+
/**
|
|
29
|
+
* 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이.
|
|
30
|
+
* 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다.
|
|
31
|
+
* 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다.
|
|
32
|
+
*/
|
|
33
|
+
width?: SFieldWidth;
|
|
28
34
|
name?: string;
|
|
29
35
|
rules?: Rule[];
|
|
30
36
|
status?: SFieldStatus;
|
|
@@ -51,6 +51,30 @@
|
|
|
51
51
|
| `onClose` | `() => void` | 닫기 (sdClose) |
|
|
52
52
|
| `onButtonClick` | `(e: MouseEvent) => void` | 버튼 클릭 (sdButtonClick) |
|
|
53
53
|
|
|
54
|
+
## Types
|
|
55
|
+
|
|
56
|
+
### SToastPosition
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
export type SToastPosition =
|
|
60
|
+
'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### SToastNotifyOptions
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
export interface SToastNotifyOptions extends Omit<SToastProps, 'onClose'> {
|
|
67
|
+
/** 자동 닫힘 지연(ms). 0이면 자동 닫힘 없음 (없으면 defaultDuration) */
|
|
68
|
+
duration?: number;
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### SToastType
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
export type SToastType = 'default' | 'danger' | 'caution' | 'complete' | 'accent' | 'info';
|
|
76
|
+
```
|
|
77
|
+
|
|
54
78
|
## Dependencies
|
|
55
79
|
|
|
56
80
|
### Depends on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SToggle, type SToggleProps } from './SToggle';
|
|
1
|
+
export { SToggle, type SToggleProps, type SToggleSize } from './SToggle';
|
|
@@ -40,15 +40,37 @@
|
|
|
40
40
|
| `show` | `() => void` | 툴팁을 표시합니다. |
|
|
41
41
|
| `hide` | `() => void` | 툴팁을 숨깁니다. |
|
|
42
42
|
|
|
43
|
+
## Types
|
|
44
|
+
|
|
45
|
+
### STooltipTrigger
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
export type STooltipTrigger = 'hover' | 'click' | 'none';
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### STooltipPlacement
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
export type STooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### STooltipType
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
export type STooltipType = 'default' | 'danger' | 'warning' | 'accent';
|
|
61
|
+
```
|
|
62
|
+
|
|
43
63
|
## Dependencies
|
|
44
64
|
|
|
45
65
|
### Used by
|
|
46
66
|
|
|
47
67
|
- [SChipFilter](../SChipFilter)
|
|
48
68
|
- [SField](../SField)
|
|
69
|
+
- [SGnbSystem](../SGnbSystem)
|
|
49
70
|
- [SKeyValueTable](../SKeyValueTable)
|
|
50
71
|
- [SSectionHeaderCard](../SSectionHeaderCard)
|
|
51
72
|
- [SStepper](../SStepper)
|
|
73
|
+
- [STable](../STable)
|
|
52
74
|
|
|
53
75
|
### Depends on
|
|
54
76
|
|
|
@@ -63,8 +85,10 @@ graph TD;
|
|
|
63
85
|
STooltip --> SIcon
|
|
64
86
|
SChipFilter --> STooltip
|
|
65
87
|
SField --> STooltip
|
|
88
|
+
SGnbSystem --> STooltip
|
|
66
89
|
SKeyValueTable --> STooltip
|
|
67
90
|
SSectionHeaderCard --> STooltip
|
|
68
91
|
SStepper --> STooltip
|
|
92
|
+
STable --> STooltip
|
|
69
93
|
style STooltip fill:#f9f,stroke:#333,stroke-width:4px
|
|
70
94
|
```
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
| `border?` | `boolean` | `true` | 아이템 하단 border 표시 여부 |
|
|
19
19
|
| `indeterminate?` | `boolean` | `false` | 일부 선택 상태 |
|
|
20
20
|
| `selectable?` | `boolean` | `true` | 체크박스 표시 여부 |
|
|
21
|
+
| `size?` | `STreeSize` | `'sm'` | 타이포그래피 크기 |
|
|
21
22
|
| `leading?` | `ReactNode \| ((state: STreeItemRenderState) => ReactNode)` | — | 사용자 지정 leading 콘텐츠 |
|
|
22
23
|
| `trailing?` | `ReactNode \| ((state: STreeItemRenderState) => ReactNode)` | — | 사용자 지정 trailing 콘텐츠 |
|
|
23
24
|
|
|
@@ -40,6 +41,8 @@
|
|
|
40
41
|
| `expandedIds?` | `string[]` | — | 펼쳐진 노드 ID 목록 |
|
|
41
42
|
| `defaultExpandedIds?` | `string[]` | — | 비제어 펼침 초기값 |
|
|
42
43
|
| `selectable?` | `boolean` | `true` | 체크박스 표시 여부 |
|
|
44
|
+
| `size?` | `STreeSize` | `'sm'` | 타이포그래피 크기 |
|
|
45
|
+
| `useAll?` | `boolean` | `false` | 체크박스 사용 시 최상단 전체 선택 아이템 표시 여부 |
|
|
43
46
|
| `guideline?` | `boolean` | `true` | depth 연결선 표시 여부 |
|
|
44
47
|
| `border?` | `boolean` | `true` | 아이템 하단 border 표시 여부 |
|
|
45
48
|
| `cascadeSelection?` | `boolean` | `true` | 부모 선택 시 하위 노드까지 함께 토글 |
|
|
@@ -53,6 +56,44 @@
|
|
|
53
56
|
| `onValueChange` | `(value: string[], node: STreeNode) => void` | 선택 변경 |
|
|
54
57
|
| `onExpandedChange` | `(expandedIds: string[], node: STreeNode) => void` | 펼침 변경 |
|
|
55
58
|
|
|
59
|
+
## Types
|
|
60
|
+
|
|
61
|
+
### STreeNode
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
export interface STreeNode {
|
|
65
|
+
/** 노드 고유 ID */
|
|
66
|
+
id: string;
|
|
67
|
+
/** 노드 라벨 */
|
|
68
|
+
label: ReactNode;
|
|
69
|
+
/** 하위 노드 */
|
|
70
|
+
children?: STreeNode[];
|
|
71
|
+
/** 비활성 상태 */
|
|
72
|
+
disabled?: boolean;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### STreeSize
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
export type STreeSize = 'sm' | 'md';
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### STreeItemRenderState
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
export interface STreeItemRenderState {
|
|
86
|
+
node: STreeNode;
|
|
87
|
+
depth: number;
|
|
88
|
+
size: STreeSize;
|
|
89
|
+
expanded: boolean;
|
|
90
|
+
selected: boolean;
|
|
91
|
+
indeterminate: boolean;
|
|
92
|
+
disabled: boolean;
|
|
93
|
+
hasChildren: boolean;
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
56
97
|
## Dependencies
|
|
57
98
|
|
|
58
99
|
### Depends on
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type HTMLAttributes, type MouseEvent, type ReactNode } from 'react';
|
|
2
|
+
export type STreeSize = 'sm' | 'md';
|
|
2
3
|
export interface STreeNode {
|
|
3
4
|
/** 노드 고유 ID */
|
|
4
5
|
id: string;
|
|
@@ -12,6 +13,7 @@ export interface STreeNode {
|
|
|
12
13
|
export interface STreeItemRenderState {
|
|
13
14
|
node: STreeNode;
|
|
14
15
|
depth: number;
|
|
16
|
+
size: STreeSize;
|
|
15
17
|
expanded: boolean;
|
|
16
18
|
selected: boolean;
|
|
17
19
|
indeterminate: boolean;
|
|
@@ -39,6 +41,8 @@ export interface STreeItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'ch
|
|
|
39
41
|
indeterminate?: boolean;
|
|
40
42
|
/** 체크박스 표시 여부 */
|
|
41
43
|
selectable?: boolean;
|
|
44
|
+
/** 타이포그래피 크기 */
|
|
45
|
+
size?: STreeSize;
|
|
42
46
|
/** 사용자 지정 leading 콘텐츠 */
|
|
43
47
|
leading?: ReactNode | ((state: STreeItemRenderState) => ReactNode);
|
|
44
48
|
/** 사용자 지정 trailing 콘텐츠 */
|
|
@@ -61,6 +65,10 @@ export interface STreeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'childr
|
|
|
61
65
|
defaultExpandedIds?: string[];
|
|
62
66
|
/** 체크박스 표시 여부 */
|
|
63
67
|
selectable?: boolean;
|
|
68
|
+
/** 타이포그래피 크기 */
|
|
69
|
+
size?: STreeSize;
|
|
70
|
+
/** 체크박스 사용 시 최상단 전체 선택 아이템 표시 여부 */
|
|
71
|
+
useAll?: boolean;
|
|
64
72
|
/** depth 연결선 표시 여부 */
|
|
65
73
|
guideline?: boolean;
|
|
66
74
|
/** 아이템 하단 border 표시 여부 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { STree, STreeItem, type STreeItemProps, type STreeItemRenderState, type STreeNode, type STreeProps, } from './STree';
|
|
1
|
+
export { STree, STreeItem, type STreeItemProps, type STreeItemRenderState, type STreeNode, type STreeProps, type STreeSize, } from './STree';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "한눈에 보기" 그리드.
|
|
3
|
+
*
|
|
4
|
+
* 이 파일은 **나열 규칙만** 갖는다 — 분류·순서는 `categories.ts`(SSOT)가, 미리보기는
|
|
5
|
+
* `gallery-previews.tsx` 가, 링크 대상은 스토리의 `title` 이 정한다. 새 컴포넌트는
|
|
6
|
+
* 여기를 고치지 않고 그 셋만 채우면 자리를 잡는다.
|
|
7
|
+
*/
|
|
8
|
+
import type { ReactNode } from 'react';
|
|
9
|
+
export default function Gallery(): ReactNode;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "한눈에 보기" 페이지가 쓰는 컴포넌트별 미리보기.
|
|
3
|
+
*
|
|
4
|
+
* 이 저장소에서 **손으로 유지하는 유일한 문서 자산**이다. 그래서 두 가지를 지킨다.
|
|
5
|
+
*
|
|
6
|
+
* 1. **설명을 쓰지 않는다.** 카드에는 미리보기와 이름과 링크만 있다. "언제 쓰나" 는
|
|
7
|
+
* AGENTS.md §3(Guide/컴포넌트 선택)이, Props 는 각 컴포넌트 Docs 탭이 갖는다.
|
|
8
|
+
* 여기에 한 줄 설명을 붙이는 순간 그 둘과 어긋나기 시작한다.
|
|
9
|
+
* 2. **빠지면 CI 가 잡는다.** 스토리가 있는 컴포넌트는 전부 여기 키가 있어야 한다 —
|
|
10
|
+
* `npm run check:categories` 가 강제한다.
|
|
11
|
+
*
|
|
12
|
+
* 미리보기 상자는 `pointer-events-none` 이라 눌리지 않는다(Gallery.tsx). 갤러리는 보는
|
|
13
|
+
* 자리이고 만지는 자리는 각 컴포넌트의 Docs 탭이다 — 덕분에 오버레이가 열리거나 포커스를
|
|
14
|
+
* 뺏는 일 없이 수십 개를 한 화면에 살아 있는 채로 둘 수 있다.
|
|
15
|
+
*
|
|
16
|
+
* 화면 골격(앱 셸·모달·드로어)처럼 카드에 담기지 않는 것은 {@link note} 로 둔다.
|
|
17
|
+
* 억지로 축소해 알아볼 수 없는 그림을 넣느니 무엇인지 한 줄로 적는 편이 낫다.
|
|
18
|
+
*/
|
|
19
|
+
import type { ReactNode } from 'react';
|
|
20
|
+
/**
|
|
21
|
+
* 컴포넌트 이름 → 미리보기.
|
|
22
|
+
* 키는 스토리 파일이 있는 컴포넌트와 정확히 같아야 한다 (check:categories).
|
|
23
|
+
*/
|
|
24
|
+
export declare const GALLERY_PREVIEWS: Record<string, ReactNode>;
|