sellmate-design-system-react 8.1.0 → 9.0.0-beta.10
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 +279 -124
- package/README.md +101 -8
- package/dist/components/SChipFilter/README.md +70 -0
- package/dist/components/SChipFilter/SChipFilter.d.ts +167 -0
- package/dist/components/SChipFilter/index.d.ts +1 -0
- package/dist/components/SCircleProgress/README.md +3 -0
- package/dist/components/SCircleProgress/SCircleProgress.d.ts +7 -1
- package/dist/components/SDatePicker/README.md +43 -3
- package/dist/components/SDatePicker/SDatePicker.d.ts +36 -3
- package/dist/components/SDatePicker/index.d.ts +1 -1
- package/dist/components/SDateRangePicker/README.md +21 -0
- package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +16 -0
- package/dist/components/SDateRangePicker/index.d.ts +1 -1
- package/dist/components/SField/README.md +3 -0
- package/dist/components/SField/SField.d.ts +12 -0
- package/dist/components/SGhostButton/README.md +6 -0
- package/dist/components/SGnb/gnb.config.d.ts +2 -0
- package/dist/components/SGuide/README.md +1 -1
- package/dist/components/SGuide/SGuide.d.ts +1 -1
- package/dist/components/SIcon/README.md +6 -0
- package/dist/components/SIcon/icons.gen.d.ts +1 -0
- package/dist/components/SImage/README.md +44 -0
- package/dist/components/SImage/SImage.d.ts +41 -0
- package/dist/components/SImage/index.d.ts +1 -0
- package/dist/components/SKeyValueTable/README.md +1 -0
- package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +8 -1
- package/dist/components/SListItem/README.md +2 -2
- package/dist/components/SListItem/SListItem.d.ts +2 -2
- package/dist/components/SPage/README.md +23 -0
- package/dist/components/SPage/SPage.d.ts +27 -1
- package/dist/components/SPage/SPageHeader.d.ts +32 -0
- package/dist/components/SPage/index.d.ts +2 -1
- package/dist/components/SPage/page.config.d.ts +8 -0
- package/dist/components/SPortal/README.md +1 -1
- package/dist/components/SPortal/SPortal.d.ts +7 -1
- package/dist/components/SRadio/README.md +2 -0
- package/dist/components/SRadioButton/README.md +13 -0
- package/dist/components/SSearchInput/README.md +48 -0
- package/dist/components/SSearchInput/SSearchInput.d.ts +46 -0
- package/dist/components/SSearchInput/index.d.ts +1 -0
- package/dist/components/SSectionHeaderCard/README.md +10 -23
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +21 -14
- package/dist/components/SSectionHeaderCard/index.d.ts +1 -1
- package/dist/components/SSelect/README.md +4 -2
- package/dist/components/SSelect/SSelect.d.ts +2 -2
- package/dist/components/STable/README.md +1 -0
- package/dist/components/STable/STable.d.ts +20 -0
- package/dist/components/STabs/README.md +0 -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 +2 -0
- package/dist/components/STextLink/README.md +2 -0
- package/dist/components/STimePicker/timepicker.config.d.ts +5 -0
- package/dist/components/SToggle/README.md +1 -0
- package/dist/components/SToggle/SToggle.d.ts +4 -1
- package/dist/components/STooltip/README.md +2 -0
- package/dist/components/STree/README.md +3 -0
- package/dist/components/STree/STree.d.ts +8 -0
- package/dist/components/STree/index.d.ts +1 -1
- package/dist/index.cjs +2988 -393
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2981 -394
- package/dist/index.js.map +1 -1
- package/dist/lib/floating-width.d.ts +22 -0
- package/dist/lib/truncated-value-tooltip.d.ts +18 -0
- package/dist/llms-full.txt +545 -152
- package/dist/llms.txt +283 -127
- package/dist/styles.css +397 -36
- package/dist/theme.css +34 -11
- package/eslint/index.mjs +5 -0
- package/eslint/rules/field-width-grade.d.mts +41 -0
- package/eslint/rules/field-width-grade.mjs +294 -0
- package/eslint/scale.gen.mjs +1 -1
- package/package.json +7 -4
|
@@ -2,37 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
4
|
|
|
5
|
-
###
|
|
6
|
-
|
|
7
|
-
#### Props
|
|
8
|
-
|
|
9
|
-
| Prop | Type | Default | Description |
|
|
10
|
-
|------|------|---------|-------------|
|
|
11
|
-
| `children?` | `SSectionHeaderCardBodyChildren` | — | 바디 슬롯. 특정 컴포넌트 타입으로 제한하지 않습니다. |
|
|
12
|
-
| `padding?` | `SSectionHeaderCardBodyPadding` | `'default'` | 안쪽 여백. 기본은 `default`. 성격이 다른 요소가 세 종류 이상 섞인 영역에만 `wide`, 표를 가장자리까지 채울 때만 `none`. |
|
|
13
|
-
|
|
14
|
-
### SSectionHeaderCardHeader
|
|
5
|
+
### SSectionHeaderCard
|
|
15
6
|
|
|
16
7
|
#### Props
|
|
17
8
|
|
|
18
9
|
| Prop | Type | Default | Description |
|
|
19
10
|
|------|------|---------|-------------|
|
|
20
|
-
| `title
|
|
21
|
-
| `titleSize?` | `SSectionHeaderCardTitleSize` |
|
|
22
|
-
| `marker?` | `boolean` |
|
|
23
|
-
| `required?` | `boolean` |
|
|
11
|
+
| `title?` | `ReactNode` | — | 헤더 제목 |
|
|
12
|
+
| `titleSize?` | `SSectionHeaderCardTitleSize` | — | 제목 크기 |
|
|
13
|
+
| `marker?` | `boolean` | — | 제목 앞 점 표시 여부 |
|
|
14
|
+
| `required?` | `boolean` | — | 제목 뒤 필수 별 표시 여부 |
|
|
24
15
|
| `helpText?` | `string[]` | — | 도움말 툴팁 메시지 |
|
|
25
16
|
| `subtitle?` | `ReactNode` | — | 부제 |
|
|
26
17
|
| `slot?` | `ReactNode` | — | 헤더 우측 슬롯 |
|
|
27
|
-
| `thickness?` | `SSectionHeaderCardThickness` |
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
| Prop | Type | Default | Description |
|
|
34
|
-
|------|------|---------|-------------|
|
|
35
|
-
| `children?` | `SSectionHeaderCardChildren` | — | SSectionHeaderCard 슬롯. 특정 컴포넌트 타입으로 제한하지 않습니다. |
|
|
18
|
+
| `thickness?` | `SSectionHeaderCardThickness` | — | 상단 border 색상 타입. false면 표시하지 않습니다. |
|
|
19
|
+
| `headerClassName?` | `string` | — | 헤더 영역 클래스 |
|
|
20
|
+
| `padding?` | `SSectionHeaderCardBodyPadding` | — | 바디 안쪽 여백. 기본은 `default`. 성격이 다른 요소가 세 종류 이상 섞인 영역에만 `wide`, 표를 가장자리까지 채울 때만 `none`. |
|
|
21
|
+
| `background?` | `SSectionHeaderCardBodyBackground` | — | 본문 배경. 기본은 `frame` — 카드가 깐 흰 면을 그대로 쓴다. `neutral` 은 바탕을 한 단계 눌러앉혀, 흰 면 덩어리(표·리스트)가 여럿일 때 그것들이 **"면 위에 놓인 객체"로 읽히게** 한다. 위계를 한 단계 더 주고 싶을 때 고르는 선택지이며, **기본값이 틀린 것은 아니다** — 표·리스트는 테두리·라운드·헤더 줄과 간격을 이미 갖고 있어 흰 바탕에서도 경계가 읽힌다. 깔아도 **효과가 없는** 자리가 있다 — 덩어리가 가장자리까지 차는 경우(`padding="none"` 으로 표를 채우면 바탕이 완전히 가려진다), 덩어리에 회색 면이 섞인 경우(그 덩어리가 바탕에 묻힌다), 맨 텍스트나 폼 컨트롤만 있는 본문(떠오를 흰 면이 없다). |
|
|
22
|
+
| `children?` | `SSectionHeaderCardChildren` | — | 바디 콘텐츠. 특정 컴포넌트 타입으로 제한하지 않습니다. |
|
|
36
23
|
|
|
37
24
|
## Dependencies
|
|
38
25
|
|
|
@@ -4,9 +4,10 @@ export type SSectionHeaderCardChildren = ReactNode;
|
|
|
4
4
|
export type SSectionHeaderCardThickness = false | 'default' | 'accent';
|
|
5
5
|
export type SSectionHeaderCardTitleSize = 'xs' | 'sm';
|
|
6
6
|
export type SSectionHeaderCardBodyPadding = 'default' | 'wide' | 'none';
|
|
7
|
-
export
|
|
7
|
+
export type SSectionHeaderCardBodyBackground = 'frame' | 'neutral';
|
|
8
|
+
export interface SSectionHeaderCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'slot' | 'title'> {
|
|
8
9
|
/** 헤더 제목 */
|
|
9
|
-
title
|
|
10
|
+
title?: ReactNode;
|
|
10
11
|
/** 제목 크기 */
|
|
11
12
|
titleSize?: SSectionHeaderCardTitleSize;
|
|
12
13
|
/** 제목 앞 점 표시 여부 */
|
|
@@ -21,21 +22,27 @@ export interface SSectionHeaderCardHeaderProps extends Omit<HTMLAttributes<HTMLD
|
|
|
21
22
|
slot?: ReactNode;
|
|
22
23
|
/** 상단 border 색상 타입. false면 표시하지 않습니다. */
|
|
23
24
|
thickness?: SSectionHeaderCardThickness;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
/** 바디 슬롯. 특정 컴포넌트 타입으로 제한하지 않습니다. */
|
|
27
|
-
children?: SSectionHeaderCardBodyChildren;
|
|
25
|
+
/** 헤더 영역 클래스 */
|
|
26
|
+
headerClassName?: string;
|
|
28
27
|
/**
|
|
29
|
-
* 안쪽 여백. 기본은 `default`.
|
|
28
|
+
* 바디 안쪽 여백. 기본은 `default`.
|
|
30
29
|
* 성격이 다른 요소가 세 종류 이상 섞인 영역에만 `wide`, 표를 가장자리까지 채울 때만 `none`.
|
|
31
30
|
*/
|
|
32
31
|
padding?: SSectionHeaderCardBodyPadding;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
/**
|
|
33
|
+
* 본문 배경. 기본은 `frame` — 카드가 깐 흰 면을 그대로 쓴다.
|
|
34
|
+
*
|
|
35
|
+
* `neutral` 은 바탕을 한 단계 눌러앉혀, 흰 면 덩어리(표·리스트)가 여럿일 때 그것들이
|
|
36
|
+
* **"면 위에 놓인 객체"로 읽히게** 한다. 위계를 한 단계 더 주고 싶을 때 고르는 선택지이며,
|
|
37
|
+
* **기본값이 틀린 것은 아니다** — 표·리스트는 테두리·라운드·헤더 줄과 간격을 이미 갖고 있어
|
|
38
|
+
* 흰 바탕에서도 경계가 읽힌다.
|
|
39
|
+
*
|
|
40
|
+
* 깔아도 **효과가 없는** 자리가 있다 — 덩어리가 가장자리까지 차는 경우(`padding="none"` 으로
|
|
41
|
+
* 표를 채우면 바탕이 완전히 가려진다), 덩어리에 회색 면이 섞인 경우(그 덩어리가 바탕에 묻힌다),
|
|
42
|
+
* 맨 텍스트나 폼 컨트롤만 있는 본문(떠오를 흰 면이 없다).
|
|
43
|
+
*/
|
|
44
|
+
background?: SSectionHeaderCardBodyBackground;
|
|
45
|
+
/** 바디 콘텐츠. 특정 컴포넌트 타입으로 제한하지 않습니다. */
|
|
36
46
|
children?: SSectionHeaderCardChildren;
|
|
37
47
|
}
|
|
38
|
-
export declare const SSectionHeaderCard: import("react").ForwardRefExoticComponent<SSectionHeaderCardProps & import("react").RefAttributes<HTMLDivElement
|
|
39
|
-
Header: import("react").ForwardRefExoticComponent<SSectionHeaderCardHeaderProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
40
|
-
Body: import("react").ForwardRefExoticComponent<SSectionHeaderCardBodyProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
41
|
-
};
|
|
48
|
+
export declare const SSectionHeaderCard: import("react").ForwardRefExoticComponent<SSectionHeaderCardProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SSectionHeaderCard, type
|
|
1
|
+
export { SSectionHeaderCard, type SSectionHeaderCardBodyBackground, type SSectionHeaderCardBodyChildren, type SSectionHeaderCardBodyPadding, type SSectionHeaderCardChildren, type SSectionHeaderCardProps, type SSectionHeaderCardThickness, type SSectionHeaderCardTitleSize, } from './SSectionHeaderCard';
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
| `rules?` | `Rule[]` | — | 유효성 규칙 — 닫힐 때 자동 검증 |
|
|
23
23
|
| `labelTooltipProps?` | `Partial<STooltipProps>` | — | 레이블 툴팁 상세 옵션 |
|
|
24
24
|
| `dropdownHeight?` | `string` | `'260px'` | 드롭다운 최대 높이 |
|
|
25
|
-
| `dropdownWidth?` | `string` | — | 드롭다운 너비 (없으면 트리거 너비) |
|
|
26
|
-
| `maxDropdownWidth?` | `string` | `'640px'` | 드롭다운 최대
|
|
25
|
+
| `dropdownWidth?` | `string` | — | 드롭다운 너비 (없으면 트리거 너비). 창보다 넓게 줘도 창 폭까지만 벌어진다. |
|
|
26
|
+
| `maxDropdownWidth?` | `string` | `'640px'` | 드롭다운 최대 너비. 창이 이보다 좁으면 창 폭이 상한이 된다. |
|
|
27
27
|
| `label?` | `string` | — | |
|
|
28
28
|
| `labelWidth?` | `number \| string` | — | |
|
|
29
29
|
| `icon?` | `SIconName` | — | 레이블 영역 아이콘 |
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
|
|
56
56
|
### Used by
|
|
57
57
|
|
|
58
|
+
- [SChipFilter](../SChipFilter)
|
|
58
59
|
- [SKeyValueTable](../SKeyValueTable)
|
|
59
60
|
- [STable](../STable)
|
|
60
61
|
|
|
@@ -73,6 +74,7 @@ graph TD;
|
|
|
73
74
|
SSelect --> SGhostButton
|
|
74
75
|
SSelect --> SIcon
|
|
75
76
|
SSelect --> SPortal
|
|
77
|
+
SChipFilter --> SSelect
|
|
76
78
|
SKeyValueTable --> SSelect
|
|
77
79
|
STable --> SSelect
|
|
78
80
|
style SSelect fill:#f9f,stroke:#333,stroke-width:4px
|
|
@@ -45,9 +45,9 @@ export interface SSelectProps {
|
|
|
45
45
|
labelTooltipProps?: Partial<STooltipProps>;
|
|
46
46
|
/** 드롭다운 최대 높이 */
|
|
47
47
|
dropdownHeight?: string;
|
|
48
|
-
/** 드롭다운 너비 (없으면 트리거 너비) */
|
|
48
|
+
/** 드롭다운 너비 (없으면 트리거 너비). 창보다 넓게 줘도 창 폭까지만 벌어진다. */
|
|
49
49
|
dropdownWidth?: string;
|
|
50
|
-
/** 드롭다운 최대
|
|
50
|
+
/** 드롭다운 최대 너비. 창이 이보다 좁으면 창 폭이 상한이 된다. */
|
|
51
51
|
maxDropdownWidth?: string;
|
|
52
52
|
label?: string;
|
|
53
53
|
labelWidth?: number | string;
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
| `stickyHeader?` | `boolean` | — | |
|
|
20
20
|
| `stickyColumn?` | `STableStickyColumn` | — | 고정할 좌/우 컬럼 수 |
|
|
21
21
|
| `radius?` | `'default' \| 'useTop' \| 'full'` | `'default'` | border-radius 제어 |
|
|
22
|
+
| `bordered?` | `boolean` | `true` | 바깥 테두리. 기본은 `true`. `SSectionHeaderCard` 의 `padding="none"` 안에 넣어 카드 가장자리까지 채울 때 `false` 로 끈다 — 카드가 이미 바깥 테두리를 그리므로, 켜 두면 1px 두 개가 나란히 놓여 그 변만 2px 로 보인다. 페이지네이션 바의 테두리와 1px 겹침(`-mt-px`)도 함께 꺼진다. 본문 테두리가 없으면 겹칠 대상이 없어, 그대로 두면 페이지네이션만 테두리를 갖고 1px 어긋난다. |
|
|
22
23
|
| `noDataLabel?` | `string` | `'데이터가 없습니다.'` | |
|
|
23
24
|
| `noDataSlot?` | `ReactNode` | — | 데이터가 없을 때 body 영역 전체를 대체하는 슬롯. 지정하면 `noDataLabel` 대신 이 콘텐츠가 헤더 아래 영역을 채우며, 버튼 등 인터랙션도 동작한다. |
|
|
24
25
|
| `isLoading?` | `boolean` | `false` | |
|
|
@@ -38,6 +38,16 @@ export interface STableColumn {
|
|
|
38
38
|
icon?: SIconName;
|
|
39
39
|
/** 헤더 아이콘 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 */
|
|
40
40
|
iconColor?: SColor;
|
|
41
|
+
/**
|
|
42
|
+
* 셀에 무엇이 들어가는지. 좌우 여백이 여기서 갈린다 — 기본은 `text`(넓게).
|
|
43
|
+
*
|
|
44
|
+
* 자기 폭을 가진 컨트롤(`SInput`·`SNumberInput`·`SSelect` 등)이 들어가는 열은 `control` 로 준다.
|
|
45
|
+
* 텍스트와 같은 넓은 여백을 두면 컨트롤이 쓸 폭이 그만큼 줄어 같은 열 폭에서도 좁아 보인다.
|
|
46
|
+
*
|
|
47
|
+
* `SKeyValueTable` 은 `field.type` 으로 이 판정을 스스로 하지만, `STable` 의 셀은 소비 앱이 넘긴
|
|
48
|
+
* 임의의 `render` 결과라 컴포넌트가 알 수 없다. 그래서 열 단위로 받는다.
|
|
49
|
+
*/
|
|
50
|
+
contentType?: 'text' | 'control';
|
|
41
51
|
/** 셀 커스텀 렌더 (React 확장) — `<td>` 안쪽 내용만 교체한다 */
|
|
42
52
|
render?: (row: SRow, value: any) => ReactNode;
|
|
43
53
|
/**
|
|
@@ -109,6 +119,16 @@ export interface STableProps {
|
|
|
109
119
|
stickyColumn?: STableStickyColumn;
|
|
110
120
|
/** border-radius 제어 */
|
|
111
121
|
radius?: 'default' | 'useTop' | 'full';
|
|
122
|
+
/**
|
|
123
|
+
* 바깥 테두리. 기본은 `true`.
|
|
124
|
+
*
|
|
125
|
+
* `SSectionHeaderCard` 의 `padding="none"` 안에 넣어 카드 가장자리까지 채울 때 `false` 로 끈다 —
|
|
126
|
+
* 카드가 이미 바깥 테두리를 그리므로, 켜 두면 1px 두 개가 나란히 놓여 그 변만 2px 로 보인다.
|
|
127
|
+
*
|
|
128
|
+
* 페이지네이션 바의 테두리와 1px 겹침(`-mt-px`)도 함께 꺼진다. 본문 테두리가 없으면 겹칠 대상이
|
|
129
|
+
* 없어, 그대로 두면 페이지네이션만 테두리를 갖고 1px 어긋난다.
|
|
130
|
+
*/
|
|
131
|
+
bordered?: boolean;
|
|
112
132
|
noDataLabel?: string;
|
|
113
133
|
/**
|
|
114
134
|
* 데이터가 없을 때 body 영역 전체를 대체하는 슬롯.
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
|------|------|---------|-------------|
|
|
11
11
|
| `value` | `string` | — | 현재 선택된 탭 value |
|
|
12
12
|
| `tabs` | `STabOption[]` | — | 탭 옵션 목록 |
|
|
13
|
-
| `size?` | `STabSize` | `'md'` | 탭 크기 (main 전용) |
|
|
14
13
|
| `isSub?` | `boolean` | `false` | 서브 탭(밑줄형) 스타일 |
|
|
15
14
|
| `vertical?` | `boolean` | `false` | 세로 배치 (sub 전용 — main 폴더형은 항상 가로) |
|
|
16
15
|
| `className?` | `string` | — | |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type CSSProperties } from 'react';
|
|
2
|
-
import { type
|
|
2
|
+
import { type STabOption } from './tabs.config';
|
|
3
3
|
export interface STabsProps {
|
|
4
4
|
/** 현재 선택된 탭 value */
|
|
5
5
|
value: string;
|
|
@@ -7,8 +7,6 @@ export interface STabsProps {
|
|
|
7
7
|
tabs: STabOption[];
|
|
8
8
|
/** 탭 변경 (sdUpdate) */
|
|
9
9
|
onValueChange?: (value: string) => void;
|
|
10
|
-
/** 탭 크기 (main 전용) */
|
|
11
|
-
size?: STabSize;
|
|
12
10
|
/** 서브 탭(밑줄형) 스타일 */
|
|
13
11
|
isSub?: boolean;
|
|
14
12
|
/** 세로 배치 (sub 전용 — main 폴더형은 항상 가로) */
|
|
@@ -21,4 +19,4 @@ export interface STabsProps {
|
|
|
21
19
|
* main = 폴더형(탭 줄에 파란 baseline, 탭은 위쪽만 둥글고 하단 테두리 없음),
|
|
22
20
|
* sub = 밑줄형(선택 시 하단 라인). 뱃지(STag), 세로 배치, value 제어 + onValueChange(sdUpdate).
|
|
23
21
|
*/
|
|
24
|
-
export declare function STabs({ value, tabs, onValueChange,
|
|
22
|
+
export declare function STabs({ value, tabs, onValueChange, isSub, vertical, className, style, }: STabsProps): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { STabs, type STabsProps } from './STabs';
|
|
2
|
-
export { type STabOption
|
|
2
|
+
export { type STabOption } from './tabs.config';
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
export type STabSize = 'md' | 'lg';
|
|
2
1
|
export interface STabOption {
|
|
3
2
|
label: string;
|
|
4
3
|
value: string;
|
|
5
4
|
badge?: string | number;
|
|
6
5
|
}
|
|
7
|
-
/** main(분절형)
|
|
8
|
-
export declare const TAB_MAIN_SIZE:
|
|
6
|
+
/** main(분절형) 레이아웃 */
|
|
7
|
+
export declare const TAB_MAIN_SIZE: {
|
|
9
8
|
height: number;
|
|
10
9
|
paddingX: number;
|
|
11
|
-
}
|
|
10
|
+
};
|
|
12
11
|
/** 탭 타이포 (main/sub 공통, token: typography.navigation.sm) */
|
|
13
12
|
export declare const TAB_TYPOGRAPHY: {
|
|
14
13
|
fontSize: number;
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
### Used by
|
|
22
22
|
|
|
23
|
+
- [SChipFilter](../SChipFilter)
|
|
23
24
|
- [SConfirmModal](../SConfirmModal)
|
|
24
25
|
- [SGhostButton](../SGhostButton)
|
|
25
26
|
- [SGnb](../SGnb)
|
|
@@ -35,6 +36,7 @@
|
|
|
35
36
|
```mermaid
|
|
36
37
|
graph TD;
|
|
37
38
|
STag --> SIcon
|
|
39
|
+
SChipFilter --> STag
|
|
38
40
|
SConfirmModal --> STag
|
|
39
41
|
SGhostButton --> STag
|
|
40
42
|
SGnb --> STag
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
### Used by
|
|
30
30
|
|
|
31
|
+
- [SChipFilter](../SChipFilter)
|
|
31
32
|
- [SChipInput](../SChipInput)
|
|
32
33
|
- [SPopover](../SPopover)
|
|
33
34
|
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
graph TD;
|
|
43
44
|
STextLink --> SIcon
|
|
44
45
|
STextLink --> STag
|
|
46
|
+
SChipFilter --> STextLink
|
|
45
47
|
SChipInput --> STextLink
|
|
46
48
|
SPopover --> STextLink
|
|
47
49
|
style STextLink fill:#f9f,stroke:#333,stroke-width:4px
|
|
@@ -12,6 +12,11 @@ export declare const TIMEPICKER_SIZE_CONFIG: Record<STimePickerSize, {
|
|
|
12
12
|
lineHeight: number;
|
|
13
13
|
minWidth: number;
|
|
14
14
|
fieldMinWidth: number;
|
|
15
|
+
/**
|
|
16
|
+
* 필드 상한. 값 길이가 HH:mm 으로 정해져 있어, width="100%" 를 받아도 행 전체로
|
|
17
|
+
* 늘어나지 않게 막는다 (SKeyValueTable 이 모든 컨트롤에 100% 를 넘긴다).
|
|
18
|
+
*/
|
|
19
|
+
fieldMaxWidth: number;
|
|
15
20
|
}>;
|
|
16
21
|
export declare function clampTimePart(value: number, min: number, max: number): number;
|
|
17
22
|
export declare function padTimePart(value: number): string;
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
| `value?` | `boolean` | `false` | 선택(on/off) 상태 |
|
|
12
12
|
| `label?` | `string` | `''` | 라벨 |
|
|
13
13
|
| `disabled?` | `boolean` | `false` | 비활성 |
|
|
14
|
+
| `size?` | `SToggleSize` | `'sm'` | 크기 |
|
|
14
15
|
| `className?` | `string` | — | |
|
|
15
16
|
| `style?` | `CSSProperties` | — | |
|
|
16
17
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CSSProperties } from 'react';
|
|
2
|
+
export type SToggleSize = 'xs' | 'sm';
|
|
2
3
|
export interface SToggleProps {
|
|
3
4
|
/** 선택(on/off) 상태 */
|
|
4
5
|
value?: boolean;
|
|
@@ -6,6 +7,8 @@ export interface SToggleProps {
|
|
|
6
7
|
label?: string;
|
|
7
8
|
/** 비활성 */
|
|
8
9
|
disabled?: boolean;
|
|
10
|
+
/** 크기 */
|
|
11
|
+
size?: SToggleSize;
|
|
9
12
|
/** 변경 (sdUpdate) */
|
|
10
13
|
onValueChange?: (value: boolean) => void;
|
|
11
14
|
className?: string;
|
|
@@ -15,4 +18,4 @@ export interface SToggleProps {
|
|
|
15
18
|
* SToggle — sd-toggle 포팅. 알약형 토글 버튼.
|
|
16
19
|
* default(흰 배경/회색), hover(파란 채움), select(흰 배경/파란 테두리·글자), disabled.
|
|
17
20
|
*/
|
|
18
|
-
export declare function SToggle({ value, label, disabled, onValueChange, className, style, }: SToggleProps): import("react").JSX.Element;
|
|
21
|
+
export declare function SToggle({ value, label, disabled, size, onValueChange, className, style, }: SToggleProps): import("react").JSX.Element;
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
|
|
45
45
|
### Used by
|
|
46
46
|
|
|
47
|
+
- [SChipFilter](../SChipFilter)
|
|
47
48
|
- [SField](../SField)
|
|
48
49
|
- [SKeyValueTable](../SKeyValueTable)
|
|
49
50
|
- [SSectionHeaderCard](../SSectionHeaderCard)
|
|
@@ -60,6 +61,7 @@
|
|
|
60
61
|
graph TD;
|
|
61
62
|
STooltip --> SGhostButton
|
|
62
63
|
STooltip --> SIcon
|
|
64
|
+
SChipFilter --> STooltip
|
|
63
65
|
SField --> STooltip
|
|
64
66
|
SKeyValueTable --> STooltip
|
|
65
67
|
SSectionHeaderCard --> STooltip
|
|
@@ -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` | 부모 선택 시 하위 노드까지 함께 토글 |
|
|
@@ -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';
|