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.
Files changed (185) hide show
  1. package/AGENTS.md +642 -88
  2. package/README.md +111 -9
  3. package/dist/components/SAccountListBox/AccountListBoxPortal.d.ts +31 -0
  4. package/dist/components/SAccountListBox/README.md +86 -0
  5. package/dist/components/SAccountListBox/SAccountListBox.d.ts +79 -0
  6. package/dist/components/SAccountListBox/SystemMenuPortal.d.ts +58 -0
  7. package/dist/components/SAccountListBox/accountListBox.config.d.ts +64 -0
  8. package/dist/components/SAccountListBox/index.d.ts +2 -0
  9. package/dist/components/SBadge/README.md +26 -0
  10. package/dist/components/SBadge/SBadge.d.ts +1 -1
  11. package/dist/components/SBarcodeInput/README.md +9 -1
  12. package/dist/components/SBarcodeInput/SBarcodeInput.d.ts +7 -1
  13. package/dist/components/SButton/README.md +38 -0
  14. package/dist/components/SCalendar/README.md +13 -0
  15. package/dist/components/SCalendarBoard/CalendarDayCard.d.ts +38 -0
  16. package/dist/components/SCalendarBoard/CalendarDayEventListBox.d.ts +26 -0
  17. package/dist/components/SCalendarBoard/CalendarEventButton.d.ts +13 -0
  18. package/dist/components/SCalendarBoard/CalendarMoreButton.d.ts +12 -0
  19. package/dist/components/SCalendarBoard/README.md +137 -0
  20. package/dist/components/SCalendarBoard/SCalendarBoard.d.ts +68 -0
  21. package/dist/components/SCalendarBoard/calendarBoard.config.d.ts +33 -0
  22. package/dist/components/SCalendarBoard/index.d.ts +3 -0
  23. package/dist/components/SCalendarBoard/types.d.ts +31 -0
  24. package/dist/components/SCallout/README.md +16 -1
  25. package/dist/components/SCallout/SCallout.d.ts +9 -4
  26. package/dist/components/SCard/README.md +16 -0
  27. package/dist/components/SCard/SCard.d.ts +17 -2
  28. package/dist/components/SCheckbox/README.md +8 -0
  29. package/dist/components/SChipFilter/README.md +339 -14
  30. package/dist/components/SChipFilter/SChipFilter.d.ts +150 -60
  31. package/dist/components/SChipFilter/index.d.ts +1 -1
  32. package/dist/components/SChipInput/README.md +15 -1
  33. package/dist/components/SChipInput/SChipInput.d.ts +7 -1
  34. package/dist/components/SChipInput/index.d.ts +1 -1
  35. package/dist/components/SCircleProgress/README.md +8 -0
  36. package/dist/components/SConfirmModal/README.md +17 -1
  37. package/dist/components/SConfirmModal/SConfirmModal.d.ts +2 -2
  38. package/dist/components/SConfirmModal/index.d.ts +1 -1
  39. package/dist/components/SDatePicker/README.md +20 -2
  40. package/dist/components/SDatePicker/SDatePicker.d.ts +27 -4
  41. package/dist/components/SDateRangePicker/README.md +17 -2
  42. package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +16 -3
  43. package/dist/components/SDivider/README.md +7 -0
  44. package/dist/components/SDivider/SDivider.d.ts +11 -0
  45. package/dist/components/SDraggableItem/README.md +37 -0
  46. package/dist/components/SDraggableItem/SDraggableItem.d.ts +2 -0
  47. package/dist/components/SDraggableItem/index.d.ts +1 -1
  48. package/dist/components/SDraggableList/README.md +30 -0
  49. package/dist/components/SDraggableList/SDraggableList.d.ts +11 -0
  50. package/dist/components/SDraggableList/index.d.ts +1 -1
  51. package/dist/components/SDrawer/README.md +8 -0
  52. package/dist/components/SDropdownButton/README.md +19 -0
  53. package/dist/components/SEditor/EditorBody.d.ts +36 -0
  54. package/dist/components/SEditor/EditorToolbar.d.ts +93 -0
  55. package/dist/components/SEditor/README.md +203 -0
  56. package/dist/components/SEditor/SEditor.d.ts +114 -0
  57. package/dist/components/SEditor/editor-icons.d.ts +63 -0
  58. package/dist/components/SEditor/editor.config.d.ts +119 -0
  59. package/dist/components/SEditor/index.d.ts +8 -0
  60. package/dist/components/SEditor/tiptap-api.d.ts +29 -0
  61. package/dist/components/SEditor/use-is-mobile.d.ts +14 -0
  62. package/dist/components/SExpansionItem/README.md +36 -0
  63. package/dist/components/SExpansionItem/index.d.ts +1 -1
  64. package/dist/components/SField/README.md +27 -3
  65. package/dist/components/SField/SField.d.ts +12 -6
  66. package/dist/components/SFilePicker/README.md +15 -1
  67. package/dist/components/SFilePicker/SFilePicker.d.ts +7 -1
  68. package/dist/components/SFooter/README.md +25 -0
  69. package/dist/components/SFooter/SFooter.d.ts +4 -3
  70. package/dist/components/SForm/README.md +11 -0
  71. package/dist/components/SGhostButton/README.md +22 -4
  72. package/dist/components/SGnb/README.md +51 -0
  73. package/dist/components/SGnb/SGnb.d.ts +50 -0
  74. package/dist/components/SGnb/gnb.config.d.ts +10 -3
  75. package/dist/components/SGnb/index.d.ts +1 -1
  76. package/dist/components/SGnbSystem/README.md +186 -0
  77. package/dist/components/SGnbSystem/SGnbSystem.d.ts +179 -0
  78. package/dist/components/SGnbSystem/gnbSystem.config.d.ts +122 -0
  79. package/dist/components/SGnbSystem/index.d.ts +2 -0
  80. package/dist/components/SGuide/README.md +15 -0
  81. package/dist/components/SIcon/README.md +10 -0
  82. package/dist/components/SIcon/SIcon.d.ts +1 -1
  83. package/dist/components/SIcon/icons.gen.d.ts +4 -0
  84. package/dist/components/SImage/README.md +14 -0
  85. package/dist/components/SInput/README.md +3 -1
  86. package/dist/components/SInput/SInput.d.ts +7 -1
  87. package/dist/components/SKeyValueTable/README.md +86 -0
  88. package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +6 -2
  89. package/dist/components/SKeyValueTable/index.d.ts +1 -1
  90. package/dist/components/SLayout/README.md +21 -0
  91. package/dist/components/SLayout/SLayout.d.ts +4 -0
  92. package/dist/components/SLayout/index.d.ts +1 -1
  93. package/dist/components/SLinearProgress/README.md +15 -0
  94. package/dist/components/SLinearProgress/SLinearProgress.d.ts +3 -0
  95. package/dist/components/SLinearProgress/index.d.ts +1 -1
  96. package/dist/components/SList/README.md +5 -1
  97. package/dist/components/SList/SList.d.ts +0 -2
  98. package/dist/components/SListItem/README.md +41 -0
  99. package/dist/components/SListItem/index.d.ts +1 -1
  100. package/dist/components/SLoadingContainer/loading.d.ts +18 -2
  101. package/dist/components/SLoadingModal/README.md +9 -1
  102. package/dist/components/SLoadingModal/SLoadingModal.d.ts +2 -2
  103. package/dist/components/SLoadingModal/index.d.ts +1 -1
  104. package/dist/components/SNumberInput/README.md +9 -1
  105. package/dist/components/SNumberInput/SNumberInput.d.ts +7 -1
  106. package/dist/components/SPage/README.md +47 -4
  107. package/dist/components/SPage/SPage.d.ts +15 -10
  108. package/dist/components/SPage/SPageHeader.d.ts +18 -11
  109. package/dist/components/SPage/index.d.ts +1 -1
  110. package/dist/components/SPage/page-column.d.ts +25 -0
  111. package/dist/components/SPopover/README.md +15 -0
  112. package/dist/components/SPopup/README.md +19 -0
  113. package/dist/components/SPortal/README.md +18 -0
  114. package/dist/components/SRadio/README.md +20 -0
  115. package/dist/components/SRadioButton/README.md +18 -0
  116. package/dist/components/SRadioButton/SRadioButton.d.ts +1 -1
  117. package/dist/components/SRadioCard/README.md +78 -0
  118. package/dist/components/SRadioCard/SRadioCard.d.ts +29 -0
  119. package/dist/components/SRadioCard/SRadioCardGroup.d.ts +36 -0
  120. package/dist/components/SRadioCard/index.d.ts +2 -0
  121. package/dist/components/SScrollArea/README.md +27 -0
  122. package/dist/components/SSearchInput/README.md +63 -0
  123. package/dist/components/SSearchInput/SSearchInput.d.ts +52 -0
  124. package/dist/components/SSearchInput/index.d.ts +1 -0
  125. package/dist/components/SSectionHeaderCard/README.md +37 -0
  126. package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +10 -0
  127. package/dist/components/SSelect/README.md +24 -6
  128. package/dist/components/SSelect/SSelect.d.ts +14 -2
  129. package/dist/components/SSplitter/README.md +15 -0
  130. package/dist/components/SStepper/README.md +26 -0
  131. package/dist/components/SSwitch/README.md +13 -0
  132. package/dist/components/SSystemActionButton/README.md +221 -0
  133. package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +161 -0
  134. package/dist/components/SSystemActionButton/index.d.ts +2 -0
  135. package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +93 -0
  136. package/dist/components/STable/README.md +86 -1
  137. package/dist/components/STable/STable.d.ts +121 -11
  138. package/dist/components/STable/index.d.ts +1 -1
  139. package/dist/components/STabs/README.md +12 -1
  140. package/dist/components/STabs/STabs.d.ts +2 -4
  141. package/dist/components/STabs/index.d.ts +1 -1
  142. package/dist/components/STabs/tabs.config.d.ts +3 -4
  143. package/dist/components/STag/README.md +52 -0
  144. package/dist/components/STag/STag.d.ts +3 -1
  145. package/dist/components/STextLink/README.md +18 -0
  146. package/dist/components/STextLink/STextLink.d.ts +4 -0
  147. package/dist/components/STextarea/README.md +1 -1
  148. package/dist/components/STextarea/STextarea.d.ts +7 -1
  149. package/dist/components/STimePicker/README.md +15 -1
  150. package/dist/components/STimePicker/STimePicker.d.ts +7 -1
  151. package/dist/components/STimePicker/timepicker.config.d.ts +4 -2
  152. package/dist/components/STimeRangePicker/README.md +27 -1
  153. package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +7 -1
  154. package/dist/components/SToast/README.md +24 -0
  155. package/dist/components/SToggle/README.md +8 -0
  156. package/dist/components/SToggle/index.d.ts +1 -1
  157. package/dist/components/STooltip/README.md +24 -0
  158. package/dist/components/STree/README.md +41 -0
  159. package/dist/components/STree/STree.d.ts +8 -0
  160. package/dist/components/STree/index.d.ts +1 -1
  161. package/dist/docs/Gallery.d.ts +9 -0
  162. package/dist/docs/gallery-previews.d.ts +24 -0
  163. package/dist/index.cjs +10754 -5244
  164. package/dist/index.cjs.map +1 -1
  165. package/dist/index.d.ts +8 -0
  166. package/dist/index.js +10718 -5244
  167. package/dist/index.js.map +1 -1
  168. package/dist/lib/doc-sections.d.ts +35 -0
  169. package/dist/lib/field-width.d.ts +31 -0
  170. package/dist/lib/floating-height.d.ts +15 -0
  171. package/dist/lib/story-docs.d.ts +19 -3
  172. package/dist/lib/truncated-value-tooltip.d.ts +18 -0
  173. package/dist/llms-full.txt +3263 -228
  174. package/dist/llms.txt +647 -90
  175. package/dist/playground/categories.d.ts +19 -0
  176. package/dist/styles.css +1725 -169
  177. package/dist/theme.css +216 -24
  178. package/eslint/index.mjs +14 -0
  179. package/eslint/lib/table-column.mjs +26 -0
  180. package/eslint/rules/divider-vertical-height.mjs +137 -0
  181. package/eslint/rules/field-width-grade.d.mts +41 -0
  182. package/eslint/rules/field-width-grade.mjs +311 -0
  183. package/eslint/rules/table-column-width.mjs +110 -0
  184. package/eslint/scale.gen.mjs +5 -2
  185. 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?` | `number \| string` | — | |
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
- width?: number | string;
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?` | `number \| string` | — | |
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
- width?: number | string;
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
- * 필드 상한. 값 길이가 HH:mm 으로 정해져 있어, width="100%" 를 받아도 행 전체로
17
+ * 필드 상한(폭 등급). 값 길이가 HH:mm 으로 정해져 있어, width="100%" 를 받아도 행 전체로
17
18
  * 늘어나지 않게 막는다 (SKeyValueTable 이 모든 컨트롤에 100% 를 넘긴다).
19
+ * px 가 아니라 등급으로 두어 `--cmp-field-width-*` 가 바뀌면 함께 따라가게 한다.
18
20
  */
19
- fieldMaxWidth: number;
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?` | `number \| string` | — | |
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
- width?: number | string;
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
@@ -21,3 +21,11 @@
21
21
  |-------|------|-------------|
22
22
  | `onValueChange` | `(value: boolean) => void` | 변경 (sdUpdate) |
23
23
 
24
+ ## Types
25
+
26
+ ### SToggleSize
27
+
28
+ ```ts
29
+ export type SToggleSize = 'xs' | 'sm';
30
+ ```
31
+
@@ -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>;