sellmate-design-system-react 9.0.0-beta.10 → 9.0.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/AGENTS.md +3 -3
  2. package/dist/components/SBadge/README.md +24 -0
  3. package/dist/components/SBadge/SBadge.d.ts +1 -1
  4. package/dist/components/SBarcodeInput/README.md +8 -0
  5. package/dist/components/SButton/README.md +34 -0
  6. package/dist/components/SCalendar/README.md +13 -0
  7. package/dist/components/SCallout/README.md +15 -0
  8. package/dist/components/SCheckbox/README.md +8 -0
  9. package/dist/components/SChipFilter/README.md +276 -3
  10. package/dist/components/SChipFilter/SChipFilter.d.ts +78 -37
  11. package/dist/components/SChipFilter/index.d.ts +1 -1
  12. package/dist/components/SChipInput/README.md +14 -0
  13. package/dist/components/SCircleProgress/README.md +8 -0
  14. package/dist/components/SConfirmModal/README.md +16 -0
  15. package/dist/components/SDatePicker/README.md +14 -0
  16. package/dist/components/SDateRangePicker/README.md +14 -0
  17. package/dist/components/SDraggableItem/README.md +36 -0
  18. package/dist/components/SDraggableList/README.md +24 -0
  19. package/dist/components/SDrawer/README.md +8 -0
  20. package/dist/components/SDropdownButton/README.md +19 -0
  21. package/dist/components/SExpansionItem/README.md +36 -0
  22. package/dist/components/SField/README.md +20 -0
  23. package/dist/components/SFilePicker/README.md +14 -0
  24. package/dist/components/SFooter/README.md +21 -0
  25. package/dist/components/SForm/README.md +11 -0
  26. package/dist/components/SGhostButton/README.md +14 -2
  27. package/dist/components/SGnb/README.md +45 -0
  28. package/dist/components/SGuide/README.md +15 -0
  29. package/dist/components/SImage/README.md +14 -0
  30. package/dist/components/SKeyValueTable/README.md +83 -0
  31. package/dist/components/SLayout/README.md +16 -0
  32. package/dist/components/SLinearProgress/README.md +8 -0
  33. package/dist/components/SListItem/README.md +41 -0
  34. package/dist/components/SLoadingModal/README.md +8 -0
  35. package/dist/components/SNumberInput/README.md +8 -0
  36. package/dist/components/SPage/README.md +38 -0
  37. package/dist/components/SPopover/README.md +15 -0
  38. package/dist/components/SPopup/README.md +19 -0
  39. package/dist/components/SPortal/README.md +14 -0
  40. package/dist/components/SRadio/README.md +20 -0
  41. package/dist/components/SRadioButton/README.md +18 -0
  42. package/dist/components/SScrollArea/README.md +14 -0
  43. package/dist/components/SSearchInput/README.md +13 -0
  44. package/dist/components/SSectionHeaderCard/README.md +32 -0
  45. package/dist/components/SSelect/README.md +21 -2
  46. package/dist/components/SSplitter/README.md +15 -0
  47. package/dist/components/SStepper/README.md +26 -0
  48. package/dist/components/STable/README.md +103 -0
  49. package/dist/components/STabs/README.md +12 -0
  50. package/dist/components/STag/README.md +47 -0
  51. package/dist/components/STextLink/README.md +14 -0
  52. package/dist/components/STimePicker/README.md +14 -0
  53. package/dist/components/STimeRangePicker/README.md +26 -0
  54. package/dist/components/SToast/README.md +24 -0
  55. package/dist/components/SToggle/README.md +8 -0
  56. package/dist/components/STooltip/README.md +20 -0
  57. package/dist/components/STree/README.md +38 -0
  58. package/dist/index.cjs +170 -186
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.js +170 -186
  61. package/dist/index.js.map +1 -1
  62. package/dist/lib/story-docs.d.ts +19 -3
  63. package/dist/llms-full.txt +1444 -15
  64. package/dist/llms.txt +3 -3
  65. package/dist/styles.css +5 -16
  66. package/package.json +1 -1
@@ -52,6 +52,14 @@
52
52
  | `onFocus` | `(e: React.FocusEvent<HTMLInputElement>) => void` | 포커스 이벤트 (sdFocus) |
53
53
  | `onBlur` | `(e: React.FocusEvent<HTMLInputElement>) => void` | 블러 이벤트 (sdBlur) |
54
54
 
55
+ ## Types
56
+
57
+ ### SNumberInputSize
58
+
59
+ ```ts
60
+ export type SNumberInputSize = SFieldSize;
61
+ ```
62
+
55
63
  ## Dependencies
56
64
 
57
65
  ### Used by
@@ -32,6 +32,44 @@
32
32
  | `contentHeight?` | `SPageContentHeight` | `'auto'` | 본문 높이 모드. 기본은 `auto` — 콘텐츠가 흐르고 넘치면 페이지가 스크롤한다. `fill` 은 본문이 남은 높이를 정확히 채우고 페이지는 스크롤하지 않는다. 표가 자기 안에서 스크롤하고 페이지네이션이 하단에 고정되는 목록 화면용이다. 본문 루트에 `h-full` 이 먹으므로 `<div className="flex h-full min-h-0 flex-col">` + `<STable className="min-h-0 flex-1" />` 구성이 성립한다. `fill` 에서는 페이지가 스크롤하지 않으므로 `scrollEndSpacing` 이 무시된다. |
33
33
  | `header?` | `SPageHeaderProps` | — | 페이지 타이틀 영역(pageHeader 포팅). 주면 스크롤·페이지 패딩 밖으로 빼내 상단에 고정 배치한다. `children` 은 항상 본문이다 — header 유무와 무관하게 같은 자리에 같은 뜻으로 들어간다. |
34
34
 
35
+ ## Types
36
+
37
+ ### SPageBackground
38
+
39
+ ```ts
40
+ export type SPageBackground = (typeof PAGE_BACKGROUNDS)[number];
41
+ ```
42
+
43
+ ### SPageContentHeight
44
+
45
+ ```ts
46
+ export type SPageContentHeight = (typeof PAGE_CONTENT_HEIGHTS)[number];
47
+ ```
48
+
49
+ ### PAGE_BACKGROUNDS
50
+
51
+ ```ts
52
+ /**
53
+ * 페이지 배경 — 표면의 역할로 이름을 붙인다(리터럴 색이 아니다).
54
+ * - frame: 콘텐츠를 얹는 흰 표면 (sys.color.bg.frame)
55
+ * - neutral: 한 단계 눌러앉은 회색 표면 (sys.color.bg.neutralLight)
56
+ * - screen: 카드·패널이 떠 있는 앱 바탕 (sys.color.bg.screen)
57
+ */
58
+ export const PAGE_BACKGROUNDS = ['frame', 'neutral', 'screen'] as const;
59
+ ```
60
+
61
+ ### PAGE_CONTENT_HEIGHTS
62
+
63
+ ```ts
64
+ /**
65
+ * 본문 높이 모드 — 페이지가 스크롤할지, 본문이 남은 높이를 채울지.
66
+ * - auto: 콘텐츠가 흐르고, 넘치면 페이지가 스크롤한다
67
+ * - fill: 본문이 남은 높이를 정확히 채우고 페이지는 스크롤하지 않는다.
68
+ * 표가 자기 안에서 스크롤하고 페이지네이션이 하단에 고정되는 목록 화면용.
69
+ */
70
+ export const PAGE_CONTENT_HEIGHTS = ['auto', 'fill'] as const;
71
+ ```
72
+
35
73
  ## Dependencies
36
74
 
37
75
  ### Depends on
@@ -33,6 +33,21 @@
33
33
  | `onLeftLinkClick` | `() => void` | 하단 좌측 링크 클릭 |
34
34
  | `onButtonClick` | `() => void` | 하단 우측 버튼 클릭 |
35
35
 
36
+ ## Types
37
+
38
+ ### SPopoverPlacement
39
+
40
+ ```ts
41
+ export type SPopoverPlacement = 'top' | 'bottom' | 'left' | 'right';
42
+ ```
43
+
44
+ ### SPopoverType
45
+
46
+ ```ts
47
+ /** 색상 타입 — default: 다크 배경 / danger·warning·accent: 라이트 배경 (component.popover 토큰) */
48
+ export type SPopoverType = 'default' | 'danger' | 'warning' | 'accent';
49
+ ```
50
+
36
51
  ## Dependencies
37
52
 
38
53
  ### Depends on
@@ -24,6 +24,25 @@
24
24
  |-------|------|-------------|
25
25
  | `onSubmit` | `() => void` | 확인 버튼 클릭 (sdSubmit) |
26
26
 
27
+ ## Types
28
+
29
+ ### SPopupType
30
+
31
+ ```ts
32
+ export type SPopupType = 'default' | 'light';
33
+ ```
34
+
35
+ ### SPopupSubmitButton
36
+
37
+ ```ts
38
+ export interface SPopupSubmitButton {
39
+ label?: string;
40
+ color?: SButtonColor;
41
+ outline?: boolean;
42
+ size?: SButtonSize;
43
+ }
44
+ ```
45
+
27
46
  ## Dependencies
28
47
 
29
48
  ### Depends on
@@ -34,6 +34,20 @@
34
34
  | `onCloseAutoFocus` | `(event: Event) => void` | 닫힐 때 포커스 복귀 처리 (기본은 Radix가 앵커로 포커스를 되돌림). e.preventDefault()로 막을 수 있다. |
35
35
  | `onPointerDownOutside` | `(event: Event) => void` | 바깥 영역 pointerdown 으로 닫힘이 시작될 때 (앵커 위 클릭·persistent 는 제외). |
36
36
 
37
+ ## Types
38
+
39
+ ### SPortalPlacement
40
+
41
+ ```ts
42
+ export type SPortalPlacement = 'top' | 'bottom' | 'left' | 'right';
43
+ ```
44
+
45
+ ### SPortalAlign
46
+
47
+ ```ts
48
+ export type SPortalAlign = 'start' | 'center' | 'end';
49
+ ```
50
+
37
51
  ## Dependencies
38
52
 
39
53
  ### Used by
@@ -42,6 +42,26 @@
42
42
  |-------|------|-------------|
43
43
  | `onValueChange` | `(val: SRadioValue) => void` | 선택 변경 (sdUpdate) — 선택된 val 전달 |
44
44
 
45
+ ## Types
46
+
47
+ ### SRadioOption
48
+
49
+ ```ts
50
+ export interface SRadioOption {
51
+ /** 옵션 값 (sd-radio-group SRadioOption.value) */
52
+ value: SRadioValue;
53
+ label: string;
54
+ disabled?: boolean;
55
+ }
56
+ ```
57
+
58
+ ### SRadioValue
59
+
60
+ ```ts
61
+ /** 라디오 값 타입 (sd-radio SRadioValue) */
62
+ export type SRadioValue = string | number | boolean;
63
+ ```
64
+
45
65
  ## Dependencies
46
66
 
47
67
  ### Used by
@@ -22,6 +22,24 @@
22
22
  |-------|------|-------------|
23
23
  | `onValueChange` | `(value: string \| number) => void` | 변경 (sdUpdate) |
24
24
 
25
+ ## Types
26
+
27
+ ### SRadioButtonOption
28
+
29
+ ```ts
30
+ export interface SRadioButtonOption {
31
+ value: string | number;
32
+ label: string;
33
+ disabled?: boolean;
34
+ }
35
+ ```
36
+
37
+ ### SRadioButtonSize
38
+
39
+ ```ts
40
+ export type SRadioButtonSize = 'xs' | 'sm';
41
+ ```
42
+
25
43
  ## Dependencies
26
44
 
27
45
  ### Used by
@@ -14,3 +14,17 @@
14
14
  | `maxHeight?` | `string` | — | viewport 최대 높이 (예: '400px'). 비우면 부모 크기를 따른다. |
15
15
  | `maxWidth?` | `string` | — | viewport 최대 너비 (예: '480px'). 비우면 부모 크기를 따른다. |
16
16
 
17
+ ## Types
18
+
19
+ ### SScrollAreaAxis
20
+
21
+ ```ts
22
+ export type SScrollAreaAxis = (typeof SCROLL_AREA_AXES)[number];
23
+ ```
24
+
25
+ ### SCROLL_AREA_AXES
26
+
27
+ ```ts
28
+ export const SCROLL_AREA_AXES = ['vertical', 'horizontal', 'both'] as const;
29
+ ```
30
+
@@ -29,8 +29,20 @@
29
29
  | `onChange` | `InputHTMLAttributes<HTMLInputElement>['onChange']` | 네이티브 onChange (form-agnostic 연동용, RHF 등) |
30
30
  | `onSearch` | `(value: string) => void` | 검색 실행 — Enter 키에서 현재 값과 함께 호출된다. 한글 조합 중의 Enter(IME 확정)는 검색으로 치지 않는다. |
31
31
 
32
+ ## Types
33
+
34
+ ### SSearchInputSize
35
+
36
+ ```ts
37
+ export type SSearchInputSize = SFieldSize;
38
+ ```
39
+
32
40
  ## Dependencies
33
41
 
42
+ ### Used by
43
+
44
+ - [SSelect](../SSelect)
45
+
34
46
  ### Depends on
35
47
 
36
48
  - [SField](../SField)
@@ -44,5 +56,6 @@ graph TD;
44
56
  SSearchInput --> SField
45
57
  SSearchInput --> SGhostButton
46
58
  SSearchInput --> SIcon
59
+ SSelect --> SSearchInput
47
60
  style SSearchInput fill:#f9f,stroke:#333,stroke-width:4px
48
61
  ```
@@ -21,6 +21,38 @@
21
21
  | `background?` | `SSectionHeaderCardBodyBackground` | — | 본문 배경. 기본은 `frame` — 카드가 깐 흰 면을 그대로 쓴다. `neutral` 은 바탕을 한 단계 눌러앉혀, 흰 면 덩어리(표·리스트)가 여럿일 때 그것들이 **"면 위에 놓인 객체"로 읽히게** 한다. 위계를 한 단계 더 주고 싶을 때 고르는 선택지이며, **기본값이 틀린 것은 아니다** — 표·리스트는 테두리·라운드·헤더 줄과 간격을 이미 갖고 있어 흰 바탕에서도 경계가 읽힌다. 깔아도 **효과가 없는** 자리가 있다 — 덩어리가 가장자리까지 차는 경우(`padding="none"` 으로 표를 채우면 바탕이 완전히 가려진다), 덩어리에 회색 면이 섞인 경우(그 덩어리가 바탕에 묻힌다), 맨 텍스트나 폼 컨트롤만 있는 본문(떠오를 흰 면이 없다). |
22
22
  | `children?` | `SSectionHeaderCardChildren` | — | 바디 콘텐츠. 특정 컴포넌트 타입으로 제한하지 않습니다. |
23
23
 
24
+ ## Types
25
+
26
+ ### SSectionHeaderCardTitleSize
27
+
28
+ ```ts
29
+ export type SSectionHeaderCardTitleSize = 'xs' | 'sm';
30
+ ```
31
+
32
+ ### SSectionHeaderCardThickness
33
+
34
+ ```ts
35
+ export type SSectionHeaderCardThickness = false | 'default' | 'accent';
36
+ ```
37
+
38
+ ### SSectionHeaderCardBodyPadding
39
+
40
+ ```ts
41
+ export type SSectionHeaderCardBodyPadding = 'default' | 'wide' | 'none';
42
+ ```
43
+
44
+ ### SSectionHeaderCardBodyBackground
45
+
46
+ ```ts
47
+ export type SSectionHeaderCardBodyBackground = 'frame' | 'neutral';
48
+ ```
49
+
50
+ ### SSectionHeaderCardChildren
51
+
52
+ ```ts
53
+ export type SSectionHeaderCardChildren = ReactNode;
54
+ ```
55
+
24
56
  ## Dependencies
25
57
 
26
58
  ### Depends on
@@ -51,6 +51,25 @@
51
51
  | `focus` | `() => void` | 트리거 버튼에 포커스 (sdFocus) |
52
52
  | `open` | `() => void` | 드롭다운 열기 (sdOpen) |
53
53
 
54
+ ## Types
55
+
56
+ ### SSelectOption
57
+
58
+ ```ts
59
+ export interface SSelectOption {
60
+ value: string | number;
61
+ label: string;
62
+ disabled?: boolean;
63
+ children?: SSelectOption[];
64
+ }
65
+ ```
66
+
67
+ ### SSelectType
68
+
69
+ ```ts
70
+ export type SSelectType = 'default' | 'multi' | 'default_depth' | 'multi_depth';
71
+ ```
72
+
54
73
  ## Dependencies
55
74
 
56
75
  ### Used by
@@ -62,18 +81,18 @@
62
81
  ### Depends on
63
82
 
64
83
  - [SField](../SField)
65
- - [SGhostButton](../SGhostButton)
66
84
  - [SIcon](../SIcon)
67
85
  - [SPortal](../SPortal)
86
+ - [SSearchInput](../SSearchInput)
68
87
 
69
88
  ### Graph
70
89
 
71
90
  ```mermaid
72
91
  graph TD;
73
92
  SSelect --> SField
74
- SSelect --> SGhostButton
75
93
  SSelect --> SIcon
76
94
  SSelect --> SPortal
95
+ SSelect --> SSearchInput
77
96
  SChipFilter --> SSelect
78
97
  SKeyValueTable --> SSelect
79
98
  STable --> SSelect
@@ -25,3 +25,18 @@
25
25
  |-------|------|-------------|
26
26
  | `onValueChange` | `(value: number) => void` | 크기가 확정될 때. emitImmediately 가 아니면 드래그를 놓는 순간 한 번만 온다 |
27
27
 
28
+ ## Types
29
+
30
+ ### SSplitterUnit
31
+
32
+ ```ts
33
+ /** 모델·limits 를 읽는 단위. Quasar QSplitter 의 `unit` 과 같다. */
34
+ export type SSplitterUnit = (typeof SSPLITTER_UNITS)[number];
35
+ ```
36
+
37
+ ### SSPLITTER_UNITS
38
+
39
+ ```ts
40
+ export const SSPLITTER_UNITS = ['%', 'px'] as const;
41
+ ```
42
+
@@ -30,6 +30,32 @@
30
30
  | `showItemTooltip` | `() => void` | error 아이템 중 첫 번째에 툴팁을 연다. error 아이템이 없으면 아무 일도 일어나지 않는다. |
31
31
  | `hideItemTooltip` | `() => void` | 열려있는 커스텀 툴팁을 닫는다. 활성 단계(value prop)가 바뀌면 별도 호출 없이도 자동으로 닫힌다. |
32
32
 
33
+ ## Types
34
+
35
+ ### SStepperItem
36
+
37
+ ```ts
38
+ export type SStepperItem = {
39
+ label: string;
40
+ value?: string;
41
+ group?: string;
42
+ completed?: boolean;
43
+ error?: boolean;
44
+ };
45
+ ```
46
+
47
+ ### SStepperSize
48
+
49
+ ```ts
50
+ export type SStepperSize = (typeof STEPPER_SIZES)[number];
51
+ ```
52
+
53
+ ### STEPPER_SIZES
54
+
55
+ ```ts
56
+ export const STEPPER_SIZES = ['sm', 'lg'] as const;
57
+ ```
58
+
33
59
  ## Dependencies
34
60
 
35
61
  ### Depends on
@@ -60,6 +60,109 @@
60
60
  | `updateRowSelect` | `(row: SRow) => void` | 단일 행 선택 토글 (sd-table updateRowSelect) — onSelectedChange 발생 |
61
61
  | `toggleSelectAll` | `(checked: boolean, rows: SRow[]) => void` | 주어진 행들 전체 선택/해제 (sd-table toggleSelectAll) — onSelectedChange 발생 |
62
62
 
63
+ ## Types
64
+
65
+ ### STableColumn
66
+
67
+ ```ts
68
+ export interface STableColumn {
69
+ name: string;
70
+ label: string;
71
+ /** 값 접근: 필드명 또는 접근 함수 */
72
+ field: string | ((row: SRow) => any);
73
+ align?: 'left' | 'center' | 'right';
74
+ width?: string;
75
+ /** 고정폭 없이 자동 너비 (sticky/resize 계산에서 제외) */
76
+ autoWidth?: boolean;
77
+ /** 리사이즈 최소/최대 너비 (px) */
78
+ minWidth?: number;
79
+ maxWidth?: number;
80
+ /** 표시 포맷 */
81
+ format?: (value: any, row: SRow) => string;
82
+ visible?: boolean;
83
+ icon?: SIconName;
84
+ /** 헤더 아이콘 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 */
85
+ iconColor?: SColor;
86
+ /**
87
+ * 셀에 무엇이 들어가는지. 좌우 여백이 여기서 갈린다 — 기본은 `text`(넓게).
88
+ *
89
+ * 자기 폭을 가진 컨트롤(`SInput`·`SNumberInput`·`SSelect` 등)이 들어가는 열은 `control` 로 준다.
90
+ * 텍스트와 같은 넓은 여백을 두면 컨트롤이 쓸 폭이 그만큼 줄어 같은 열 폭에서도 좁아 보인다.
91
+ *
92
+ * `SKeyValueTable` 은 `field.type` 으로 이 판정을 스스로 하지만, `STable` 의 셀은 소비 앱이 넘긴
93
+ * 임의의 `render` 결과라 컴포넌트가 알 수 없다. 그래서 열 단위로 받는다.
94
+ */
95
+ contentType?: 'text' | 'control';
96
+ /** 셀 커스텀 렌더 (React 확장) — `<td>` 안쪽 내용만 교체한다 */
97
+ render?: (row: SRow, value: any) => ReactNode;
98
+ /**
99
+ * 셀(`<td>`) 자체를 커스텀 렌더 (React 확장). 반환한 엘리먼트가 그대로 `<td>`가 되므로
100
+ * `colSpan` / `rowSpan`을 직접 지정할 수 있다. `render`보다 우선한다.
101
+ *
102
+ * - `ctx.className` / `ctx.style`을 그대로 펼쳐야 구분선·정렬·sticky 등 기본 스타일이 유지된다.
103
+ * - `null`(또는 `false`)을 반환하면 그 자리에는 `<td>`를 만들지 않는다.
104
+ * 다른 셀의 `colSpan` / `rowSpan`에 덮이는 자리를 이렇게 비운다.
105
+ * - 병합은 sticky 컬럼(인덱스 기준 offset 계산)과 함께 쓰지 않는 것을 전제로 한다.
106
+ * `rowSpan`은 행을 잘라 쓰는 가상 스크롤 / 내부 페이지네이션과 경계에서 어긋날 수 있다.
107
+ */
108
+ renderCell?: (ctx: STableCellContext) => ReactNode;
109
+ /** 헤더 셀 커스텀 렌더 (React 확장) */
110
+ renderHeader?: (column: STableColumn, index: number) => ReactNode;
111
+ /** 본문 셀 커스텀 클래스. 함수를 주면 행마다 다른 클래스를 반환할 수 있다 */
112
+ tdClass?: string | ((row: SRow) => string | undefined);
113
+ /** 헤더 셀 커스텀 클래스/스타일 (sd-table thClass/thStyle) */
114
+ thClass?: string;
115
+ thStyle?: CSSProperties;
116
+ }
117
+ ```
118
+
119
+ ### SRow
120
+
121
+ ```ts
122
+ export type SRow = Record<string, any>;
123
+ ```
124
+
125
+ ### STableStickyColumn
126
+
127
+ ```ts
128
+ export interface STableStickyColumn {
129
+ left?: number;
130
+ right?: number;
131
+ }
132
+ ```
133
+
134
+ ### STablePagination
135
+
136
+ ```ts
137
+ export interface STablePagination {
138
+ page: number;
139
+ rowsPerPage: number;
140
+ lastPage?: number;
141
+ }
142
+ ```
143
+
144
+ ### STableCellContext
145
+
146
+ ```ts
147
+ /** `STableColumn.renderCell`에 전달되는 컨텍스트 */
148
+ export interface STableCellContext {
149
+ row: SRow;
150
+ /** `field` + `format`이 적용된 표시 값 */
151
+ value: any;
152
+ column: STableColumn;
153
+ /** 보이는 컬럼 기준 인덱스 */
154
+ colIndex: number;
155
+ /** 현재 렌더 중인 행 목록 기준 인덱스 (페이지/가상 스크롤 윈도우 기준) */
156
+ rowIndex: number;
157
+ /** 행 선택 여부 */
158
+ isSelected: boolean;
159
+ /** STable이 이 셀에 적용하려던 클래스 (구분선·말줄임·sticky 그림자 포함) */
160
+ className: string;
161
+ /** STable이 이 셀에 적용하려던 스타일 (패딩·정렬·폭·sticky offset 포함) */
162
+ style: CSSProperties;
163
+ }
164
+ ```
165
+
63
166
  ## Dependencies
64
167
 
65
168
  ### Depends on
@@ -21,6 +21,18 @@
21
21
  |-------|------|-------------|
22
22
  | `onValueChange` | `(value: string) => void` | 탭 변경 (sdUpdate) |
23
23
 
24
+ ## Types
25
+
26
+ ### STabOption
27
+
28
+ ```ts
29
+ export interface STabOption {
30
+ label: string;
31
+ value: string;
32
+ badge?: string | number;
33
+ }
34
+ ```
35
+
24
36
  ## Dependencies
25
37
 
26
38
  ### Depends on
@@ -16,6 +16,53 @@
16
16
  | `iconLeft?` | `boolean` | `true` | 아이콘을 레이블 왼쪽에 배치 |
17
17
  | `width?` | `string \| number` | — | 태그 너비 (숫자면 px, 문자열이면 그대로 적용). 미지정 시 콘텐츠 크기 |
18
18
 
19
+ ## Types
20
+
21
+ ### STagShape
22
+
23
+ ```ts
24
+ export type STagShape = (typeof TAG_SHAPES)[number];
25
+ ```
26
+
27
+ ### STagSize
28
+
29
+ ```ts
30
+ export type STagSize = (typeof TAG_SIZES)[number];
31
+ ```
32
+
33
+ ### STagColor
34
+
35
+ ```ts
36
+ export type STagColor = (typeof TAG_COLORS)[number];
37
+ ```
38
+
39
+ ### TAG_SHAPES
40
+
41
+ ```ts
42
+ export const TAG_SHAPES = ['square', 'pill'] as const;
43
+ ```
44
+
45
+ ### TAG_SIZES
46
+
47
+ ```ts
48
+ export const TAG_SIZES = ['xs', 'sm', 'md'] as const;
49
+ ```
50
+
51
+ ### TAG_COLORS
52
+
53
+ ```ts
54
+ export const TAG_COLORS = [
55
+ 'grey',
56
+ 'red',
57
+ 'orange',
58
+ 'yellow',
59
+ 'green',
60
+ 'blue',
61
+ 'darkblue',
62
+ 'indigo',
63
+ ] as const;
64
+ ```
65
+
19
66
  ## Dependencies
20
67
 
21
68
  ### Used by
@@ -24,6 +24,20 @@
24
24
  |-------|------|-------------|
25
25
  | `onClick` | `() => void` | |
26
26
 
27
+ ## Types
28
+
29
+ ### STextLinkArrow
30
+
31
+ ```ts
32
+ export type STextLinkArrow = 'none' | 'chevron' | 'caret';
33
+ ```
34
+
35
+ ### STextLinkSize
36
+
37
+ ```ts
38
+ export type STextLinkSize = 'sm' | 'md' | 'lg';
39
+ ```
40
+
27
41
  ## Dependencies
28
42
 
29
43
  ### Used by
@@ -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
@@ -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
@@ -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
+