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.
Files changed (76) hide show
  1. package/AGENTS.md +279 -124
  2. package/README.md +101 -8
  3. package/dist/components/SChipFilter/README.md +70 -0
  4. package/dist/components/SChipFilter/SChipFilter.d.ts +167 -0
  5. package/dist/components/SChipFilter/index.d.ts +1 -0
  6. package/dist/components/SCircleProgress/README.md +3 -0
  7. package/dist/components/SCircleProgress/SCircleProgress.d.ts +7 -1
  8. package/dist/components/SDatePicker/README.md +43 -3
  9. package/dist/components/SDatePicker/SDatePicker.d.ts +36 -3
  10. package/dist/components/SDatePicker/index.d.ts +1 -1
  11. package/dist/components/SDateRangePicker/README.md +21 -0
  12. package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +16 -0
  13. package/dist/components/SDateRangePicker/index.d.ts +1 -1
  14. package/dist/components/SField/README.md +3 -0
  15. package/dist/components/SField/SField.d.ts +12 -0
  16. package/dist/components/SGhostButton/README.md +6 -0
  17. package/dist/components/SGnb/gnb.config.d.ts +2 -0
  18. package/dist/components/SGuide/README.md +1 -1
  19. package/dist/components/SGuide/SGuide.d.ts +1 -1
  20. package/dist/components/SIcon/README.md +6 -0
  21. package/dist/components/SIcon/icons.gen.d.ts +1 -0
  22. package/dist/components/SImage/README.md +44 -0
  23. package/dist/components/SImage/SImage.d.ts +41 -0
  24. package/dist/components/SImage/index.d.ts +1 -0
  25. package/dist/components/SKeyValueTable/README.md +1 -0
  26. package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +8 -1
  27. package/dist/components/SListItem/README.md +2 -2
  28. package/dist/components/SListItem/SListItem.d.ts +2 -2
  29. package/dist/components/SPage/README.md +23 -0
  30. package/dist/components/SPage/SPage.d.ts +27 -1
  31. package/dist/components/SPage/SPageHeader.d.ts +32 -0
  32. package/dist/components/SPage/index.d.ts +2 -1
  33. package/dist/components/SPage/page.config.d.ts +8 -0
  34. package/dist/components/SPortal/README.md +1 -1
  35. package/dist/components/SPortal/SPortal.d.ts +7 -1
  36. package/dist/components/SRadio/README.md +2 -0
  37. package/dist/components/SRadioButton/README.md +13 -0
  38. package/dist/components/SSearchInput/README.md +48 -0
  39. package/dist/components/SSearchInput/SSearchInput.d.ts +46 -0
  40. package/dist/components/SSearchInput/index.d.ts +1 -0
  41. package/dist/components/SSectionHeaderCard/README.md +10 -23
  42. package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +21 -14
  43. package/dist/components/SSectionHeaderCard/index.d.ts +1 -1
  44. package/dist/components/SSelect/README.md +4 -2
  45. package/dist/components/SSelect/SSelect.d.ts +2 -2
  46. package/dist/components/STable/README.md +1 -0
  47. package/dist/components/STable/STable.d.ts +20 -0
  48. package/dist/components/STabs/README.md +0 -1
  49. package/dist/components/STabs/STabs.d.ts +2 -4
  50. package/dist/components/STabs/index.d.ts +1 -1
  51. package/dist/components/STabs/tabs.config.d.ts +3 -4
  52. package/dist/components/STag/README.md +2 -0
  53. package/dist/components/STextLink/README.md +2 -0
  54. package/dist/components/STimePicker/timepicker.config.d.ts +5 -0
  55. package/dist/components/SToggle/README.md +1 -0
  56. package/dist/components/SToggle/SToggle.d.ts +4 -1
  57. package/dist/components/STooltip/README.md +2 -0
  58. package/dist/components/STree/README.md +3 -0
  59. package/dist/components/STree/STree.d.ts +8 -0
  60. package/dist/components/STree/index.d.ts +1 -1
  61. package/dist/index.cjs +2988 -393
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.ts +3 -0
  64. package/dist/index.js +2981 -394
  65. package/dist/index.js.map +1 -1
  66. package/dist/lib/floating-width.d.ts +22 -0
  67. package/dist/lib/truncated-value-tooltip.d.ts +18 -0
  68. package/dist/llms-full.txt +545 -152
  69. package/dist/llms.txt +283 -127
  70. package/dist/styles.css +397 -36
  71. package/dist/theme.css +34 -11
  72. package/eslint/index.mjs +5 -0
  73. package/eslint/rules/field-width-grade.d.mts +41 -0
  74. package/eslint/rules/field-width-grade.mjs +294 -0
  75. package/eslint/scale.gen.mjs +1 -1
  76. package/package.json +7 -4
@@ -2,37 +2,24 @@
2
2
 
3
3
  > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
4
 
5
- ### SSectionHeaderCardBody
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` | `ReactNode` | — | 헤더 제목 |
21
- | `titleSize?` | `SSectionHeaderCardTitleSize` | `'xs'` | 제목 크기 |
22
- | `marker?` | `boolean` | `false` | 제목 앞 점 표시 여부 |
23
- | `required?` | `boolean` | `false` | 제목 뒤 필수 별 표시 여부 |
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` | `false` | 상단 border 색상 타입. false면 표시하지 않습니다. |
28
-
29
- ### SSectionHeaderCard
30
-
31
- #### Props
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 interface SSectionHeaderCardHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'slot' | 'title'> {
7
+ export type SSectionHeaderCardBodyBackground = 'frame' | 'neutral';
8
+ export interface SSectionHeaderCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'slot' | 'title'> {
8
9
  /** 헤더 제목 */
9
- title: ReactNode;
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
- export interface SSectionHeaderCardBodyProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
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
- export interface SSectionHeaderCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
35
- /** SSectionHeaderCard 슬롯. 특정 컴포넌트 타입으로 제한하지 않습니다. */
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 SSectionHeaderCardBodyChildren, type SSectionHeaderCardBodyPadding, type SSectionHeaderCardBodyProps, type SSectionHeaderCardChildren, type SSectionHeaderCardHeaderProps, type SSectionHeaderCardProps, type SSectionHeaderCardThickness, type SSectionHeaderCardTitleSize, } from './SSectionHeaderCard';
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 STabSize, type STabOption } from './tabs.config';
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, size, isSub, vertical, className, style, }: STabsProps): import("react").JSX.Element;
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, type STabSize } from './tabs.config';
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(분절형) 사이즈별 레이아웃 — size는 높이·패딩만 바꾸고 폰트는 고정 */
8
- export declare const TAB_MAIN_SIZE: Record<STabSize, {
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';