sellmate-design-system-react 9.0.0-beta.4 โ†’ 9.0.0-beta.41

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 (196) hide show
  1. package/AGENTS.md +670 -95
  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 +12 -4
  12. package/dist/components/SBarcodeInput/SBarcodeInput.d.ts +10 -2
  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 +16 -2
  33. package/dist/components/SChipInput/SChipInput.d.ts +8 -2
  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 +11 -3
  37. package/dist/components/SConfirmModal/SConfirmModal.d.ts +16 -8
  38. package/dist/components/SDatePicker/README.md +20 -2
  39. package/dist/components/SDatePicker/SDatePicker.d.ts +27 -4
  40. package/dist/components/SDateRangePicker/README.md +19 -4
  41. package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +19 -6
  42. package/dist/components/SDivider/README.md +7 -0
  43. package/dist/components/SDivider/SDivider.d.ts +11 -0
  44. package/dist/components/SDraggableItem/README.md +37 -0
  45. package/dist/components/SDraggableItem/SDraggableItem.d.ts +2 -0
  46. package/dist/components/SDraggableItem/index.d.ts +1 -1
  47. package/dist/components/SDraggableList/README.md +30 -0
  48. package/dist/components/SDraggableList/SDraggableList.d.ts +11 -0
  49. package/dist/components/SDraggableList/index.d.ts +1 -1
  50. package/dist/components/SDrawer/README.md +8 -0
  51. package/dist/components/SDropdownButton/README.md +19 -0
  52. package/dist/components/SEditor/EditorBody.d.ts +36 -0
  53. package/dist/components/SEditor/EditorToolbar.d.ts +93 -0
  54. package/dist/components/SEditor/README.md +203 -0
  55. package/dist/components/SEditor/SEditor.d.ts +114 -0
  56. package/dist/components/SEditor/editor-icons.d.ts +63 -0
  57. package/dist/components/SEditor/editor.config.d.ts +119 -0
  58. package/dist/components/SEditor/index.d.ts +8 -0
  59. package/dist/components/SEditor/tiptap-api.d.ts +29 -0
  60. package/dist/components/SEditor/use-is-mobile.d.ts +14 -0
  61. package/dist/components/SExpansionItem/README.md +36 -0
  62. package/dist/components/SExpansionItem/index.d.ts +1 -1
  63. package/dist/components/SField/README.md +29 -5
  64. package/dist/components/SField/SField.d.ts +20 -8
  65. package/dist/components/SFilePicker/README.md +18 -4
  66. package/dist/components/SFilePicker/SFilePicker.d.ts +11 -5
  67. package/dist/components/SFooter/README.md +25 -0
  68. package/dist/components/SFooter/SFooter.d.ts +4 -3
  69. package/dist/components/SForm/README.md +12 -1
  70. package/dist/components/SForm/SForm.d.ts +2 -2
  71. package/dist/components/SGhostButton/README.md +22 -4
  72. package/dist/components/SGnb/README.md +57 -6
  73. package/dist/components/SGnb/SGnb.d.ts +58 -8
  74. package/dist/components/SGnb/gnb.config.d.ts +12 -5
  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 +15 -1
  85. package/dist/components/SImage/SImage.d.ts +2 -2
  86. package/dist/components/SInput/README.md +6 -4
  87. package/dist/components/SInput/SInput.d.ts +10 -4
  88. package/dist/components/SKeyValueTable/README.md +86 -0
  89. package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +6 -2
  90. package/dist/components/SKeyValueTable/index.d.ts +1 -1
  91. package/dist/components/SLayout/README.md +22 -1
  92. package/dist/components/SLayout/SLayout.d.ts +6 -2
  93. package/dist/components/SLayout/index.d.ts +1 -1
  94. package/dist/components/SLinearProgress/README.md +15 -0
  95. package/dist/components/SLinearProgress/SLinearProgress.d.ts +3 -0
  96. package/dist/components/SLinearProgress/index.d.ts +1 -1
  97. package/dist/components/SList/README.md +15 -3
  98. package/dist/components/SList/SList.d.ts +7 -5
  99. package/dist/components/SList/index.d.ts +1 -1
  100. package/dist/components/SListItem/README.md +41 -0
  101. package/dist/components/SListItem/index.d.ts +1 -1
  102. package/dist/components/SLoadingContainer/loading.d.ts +18 -2
  103. package/dist/components/SLoadingModal/README.md +10 -2
  104. package/dist/components/SLoadingModal/SLoadingModal.d.ts +4 -4
  105. package/dist/components/SLoadingModal/index.d.ts +1 -1
  106. package/dist/components/SModal/README.md +1 -1
  107. package/dist/components/SNumberInput/README.md +14 -6
  108. package/dist/components/SNumberInput/SNumberInput.d.ts +12 -4
  109. package/dist/components/SPage/README.md +87 -5
  110. package/dist/components/SPage/SPage.d.ts +29 -9
  111. package/dist/components/SPage/SPageHeader.d.ts +31 -13
  112. package/dist/components/SPage/index.d.ts +2 -2
  113. package/dist/components/SPage/page-column.d.ts +34 -0
  114. package/dist/components/SPage/page-width.d.ts +23 -0
  115. package/dist/components/SPage/page.config.d.ts +18 -0
  116. package/dist/components/SPopover/README.md +15 -0
  117. package/dist/components/SPopup/README.md +27 -2
  118. package/dist/components/SPopup/SPopup.d.ts +7 -3
  119. package/dist/components/SPopup/index.d.ts +1 -1
  120. package/dist/components/SPortal/README.md +18 -0
  121. package/dist/components/SRadio/README.md +20 -0
  122. package/dist/components/SRadioButton/README.md +18 -0
  123. package/dist/components/SRadioButton/SRadioButton.d.ts +1 -1
  124. package/dist/components/SRadioCard/README.md +78 -0
  125. package/dist/components/SRadioCard/SRadioCard.d.ts +29 -0
  126. package/dist/components/SRadioCard/SRadioCardGroup.d.ts +36 -0
  127. package/dist/components/SRadioCard/index.d.ts +2 -0
  128. package/dist/components/SScrollArea/README.md +27 -0
  129. package/dist/components/SSearchInput/README.md +63 -0
  130. package/dist/components/SSearchInput/SSearchInput.d.ts +52 -0
  131. package/dist/components/SSearchInput/index.d.ts +1 -0
  132. package/dist/components/SSectionHeaderCard/README.md +37 -0
  133. package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +10 -0
  134. package/dist/components/SSelect/README.md +29 -11
  135. package/dist/components/SSelect/SSelect.d.ts +28 -8
  136. package/dist/components/SSplitter/README.md +17 -2
  137. package/dist/components/SSplitter/SSplitter.d.ts +7 -3
  138. package/dist/components/SStepper/README.md +26 -0
  139. package/dist/components/SSwitch/README.md +13 -1
  140. package/dist/components/SSwitch/SSwitch.d.ts +1 -3
  141. package/dist/components/SSystemActionButton/README.md +221 -0
  142. package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +161 -0
  143. package/dist/components/SSystemActionButton/index.d.ts +2 -0
  144. package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +93 -0
  145. package/dist/components/STable/README.md +94 -10
  146. package/dist/components/STable/STable.d.ts +130 -22
  147. package/dist/components/STable/index.d.ts +1 -1
  148. package/dist/components/STabs/README.md +13 -2
  149. package/dist/components/STabs/STabs.d.ts +3 -5
  150. package/dist/components/STabs/index.d.ts +1 -1
  151. package/dist/components/STabs/tabs.config.d.ts +3 -4
  152. package/dist/components/STag/README.md +52 -0
  153. package/dist/components/STag/STag.d.ts +3 -1
  154. package/dist/components/STextLink/README.md +19 -1
  155. package/dist/components/STextLink/STextLink.d.ts +5 -1
  156. package/dist/components/STextarea/README.md +4 -4
  157. package/dist/components/STextarea/STextarea.d.ts +10 -4
  158. package/dist/components/STimePicker/README.md +16 -2
  159. package/dist/components/STimePicker/STimePicker.d.ts +11 -5
  160. package/dist/components/STimePicker/timepicker.config.d.ts +4 -2
  161. package/dist/components/STimeRangePicker/README.md +28 -2
  162. package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +11 -5
  163. package/dist/components/SToast/README.md +25 -1
  164. package/dist/components/SToast/SToast.d.ts +2 -2
  165. package/dist/components/SToggle/README.md +8 -0
  166. package/dist/components/SToggle/index.d.ts +1 -1
  167. package/dist/components/STooltip/README.md +25 -1
  168. package/dist/components/STooltip/STooltip.d.ts +1 -1
  169. package/dist/components/STree/README.md +44 -3
  170. package/dist/components/STree/STree.d.ts +24 -4
  171. package/dist/components/STree/index.d.ts +1 -1
  172. package/dist/docs/Gallery.d.ts +9 -0
  173. package/dist/docs/gallery-previews.d.ts +24 -0
  174. package/dist/index.cjs +10890 -5322
  175. package/dist/index.cjs.map +1 -1
  176. package/dist/index.d.ts +8 -0
  177. package/dist/index.js +10852 -5322
  178. package/dist/index.js.map +1 -1
  179. package/dist/lib/doc-sections.d.ts +35 -0
  180. package/dist/lib/field-width.d.ts +31 -0
  181. package/dist/lib/floating-height.d.ts +15 -0
  182. package/dist/lib/story-docs.d.ts +19 -3
  183. package/dist/lib/truncated-value-tooltip.d.ts +18 -0
  184. package/dist/llms-full.txt +3396 -297
  185. package/dist/llms.txt +675 -97
  186. package/dist/playground/categories.d.ts +19 -0
  187. package/dist/styles.css +1731 -166
  188. package/dist/theme.css +216 -24
  189. package/eslint/index.mjs +14 -0
  190. package/eslint/lib/table-column.mjs +26 -0
  191. package/eslint/rules/divider-vertical-height.mjs +137 -0
  192. package/eslint/rules/field-width-grade.d.mts +41 -0
  193. package/eslint/rules/field-width-grade.mjs +311 -0
  194. package/eslint/rules/table-column-width.mjs +110 -0
  195. package/eslint/scale.gen.mjs +5 -2
  196. package/package.json +13 -1
@@ -11,7 +11,6 @@
11
11
  | `value?` | `boolean` | `false` | on/off ์ƒํƒœ |
12
12
  | `leftLabel?` | `string` | โ€” | ์Šค์œ„์น˜ ์ขŒ์ธก ๋ผ๋ฒจ |
13
13
  | `rightLabel?` | `string` | โ€” | ์Šค์œ„์น˜ ์šฐ์ธก ๋ผ๋ฒจ |
14
- | `label?` | `string` | โ€” | |
15
14
  | `disabled?` | `boolean` | `false` | ๋น„ํ™œ์„ฑ |
16
15
  | `className?` | `string` | โ€” | |
17
16
  | `style?` | `CSSProperties` | โ€” | |
@@ -22,3 +21,16 @@
22
21
  |-------|------|-------------|
23
22
  | `onValueChange` | `(value: boolean) => void` | ๋ณ€๊ฒฝ (sdUpdate) |
24
23
 
24
+ ## Dependencies
25
+
26
+ ### Used by
27
+
28
+ - [SKeyValueTable](../SKeyValueTable)
29
+
30
+ ### Graph
31
+
32
+ ```mermaid
33
+ graph TD;
34
+ SKeyValueTable --> SSwitch
35
+ style SSwitch fill:#f9f,stroke:#333,stroke-width:4px
36
+ ```
@@ -6,8 +6,6 @@ export interface SSwitchProps {
6
6
  leftLabel?: string;
7
7
  /** ์Šค์œ„์น˜ ์šฐ์ธก ๋ผ๋ฒจ */
8
8
  rightLabel?: string;
9
- /** @deprecated `rightLabel` ์‚ฌ์šฉ. ์šฐ์ธก ๋ผ๋ฒจ(ํ•˜์œ„ํ˜ธํ™˜) */
10
- label?: string;
11
9
  /** ๋น„ํ™œ์„ฑ */
12
10
  disabled?: boolean;
13
11
  /** ๋ณ€๊ฒฝ (sdUpdate) */
@@ -16,4 +14,4 @@ export interface SSwitchProps {
16
14
  style?: CSSProperties;
17
15
  }
18
16
  /** SSwitch โ€” sd-switch ํฌํŒ… (Radix SSwitch). 32ร—20 ํŠธ๋ž™, 16 ๋…ธ๋ธŒ. ์ขŒ/์šฐ ๋ผ๋ฒจ ์ง€์›. */
19
- export declare function SSwitch({ value, leftLabel, rightLabel, label, disabled, onValueChange, className, style, }: SSwitchProps): import("react").JSX.Element;
17
+ export declare function SSwitch({ value, leftLabel, rightLabel, disabled, onValueChange, className, style, }: SSwitchProps): import("react").JSX.Element;
@@ -0,0 +1,221 @@
1
+ # SSystemActionButton
2
+
3
+ > ์ž๋™ ์ƒ์„ฑ ๋ฌธ์„œ โ€” `npm run docs:gen`. ์†Œ์Šค: ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ Props/Handle ์ธํ„ฐํŽ˜์ด์Šค + import ์˜์กด์„ฑ.
4
+
5
+ ### SSystemActionButtonAccount
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `type` | `'account'` | โ€” | ๊ณ„์ • ํ–‰ |
12
+ | `label?` | `string` | โ€” | ๋ผ๋ฒจ ํ…์ŠคํŠธ |
13
+ | `option` | `SSystemActionButtonAccountOption` | โ€” | ๋ˆ„๋ฅด๋ฉด ๋œจ๋Š” ๊ณ„์ • ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค. **ํ•„์ˆ˜๋‹ค** โ€” ๊ณ„์ • ํ–‰์€ ๋Š˜ ์ด ํŒจ๋„์˜ ํŠธ๋ฆฌ๊ฑฐ์ด๊ณ , ๋ˆŒ๋Ÿฌ๋„ ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š๋Š” ๊ณ„์ • ํ–‰์€ ์—†๋‹ค. ์•„์ด์ฝ˜์€ `user` ๋กœ ๊ณ ์ •์ด๋ผ ์—ฌ๊ธฐ์„œ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. |
14
+
15
+ ### SSystemActionButtonBase
16
+
17
+ #### Props
18
+
19
+ | Prop | Type | Default | Description |
20
+ |------|------|---------|-------------|
21
+ | `color?` | `SSystemActionButtonColor` | โ€” | ์ƒ‰์ƒ(๋†“์ด๋Š” ํ‘œ๋ฉด). light = ํฐ ๋ฉด, dark = ์˜ค์…˜๋ธ”๋ฃจ ๋ฉด, darker = ๋„ค์ด๋น„ ๋ฉด. ๊ธฐ๋ณธ `'light'` |
22
+ | `disabled?` | `boolean` | โ€” | ๋น„ํ™œ์„ฑ ์—ฌ๋ถ€. ๊ธฐ๋ณธ `false` |
23
+
24
+ ### SSystemActionButtonSelect
25
+
26
+ #### Props
27
+
28
+ | Prop | Type | Default | Description |
29
+ |------|------|---------|-------------|
30
+ | `type` | `'select'` | โ€” | ํ™”์‚ดํ‘œ๋งŒ ๋ถ™๋Š” ํ–‰ |
31
+ | `label?` | `string` | โ€” | ๋ผ๋ฒจ ํ…์ŠคํŠธ |
32
+ | `option` | `SSystemActionButtonIconOption` | โ€” | ์„ ํ–‰ ์•„์ด์ฝ˜ |
33
+
34
+ ### SSystemActionButtonStatus
35
+
36
+ #### Props
37
+
38
+ | Prop | Type | Default | Description |
39
+ |------|------|---------|-------------|
40
+ | `type` | `'status'` | โ€” | ๋ผ๋ฒจ ์ž๋ฆฌ์— ์ƒํƒœ ํƒœ๊ทธ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ํ–‰ |
41
+ | `label?` | `never` | โ€” | ํƒœ๊ทธ๊ฐ€ ๋ผ๋ฒจ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค |
42
+ | `option` | `SSystemActionButtonStatusOption` | โ€” | ์ƒํƒœ ํƒœ๊ทธ + ๊ณ ๋ฅผ ๋ชฉ๋ก. **ํ•„์ˆ˜๋‹ค** โ€” ์ƒํƒœ ํ–‰์€ ๋Š˜ ๊ทธ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฉ”๋‰ด์˜ ํŠธ๋ฆฌ๊ฑฐ๋‹ค. |
43
+
44
+ ### SSystemActionButtonSubSelect
45
+
46
+ #### Props
47
+
48
+ | Prop | Type | Default | Description |
49
+ |------|------|---------|-------------|
50
+ | `type` | `'subSelect'` | โ€” | ์šฐ์ธก์— ์ง€๊ธˆ ์„ ํƒ๋œ ๊ฐ’์ด ๋ถ™๋Š” ํ–‰ |
51
+ | `label?` | `string` | โ€” | ๋ผ๋ฒจ ํ…์ŠคํŠธ |
52
+ | `option` | `SSystemActionButtonSubSelectOption` | โ€” | ์„ ํ–‰ ์•„์ด์ฝ˜ + ์šฐ์ธก ๊ฐ’ + ๊ณ ๋ฅผ ๋ชฉ๋ก |
53
+
54
+ ### SSystemActionButtonSwitch
55
+
56
+ #### Props
57
+
58
+ | Prop | Type | Default | Description |
59
+ |------|------|---------|-------------|
60
+ | `type` | `'switch'` | โ€” | ์šฐ์ธก์— ๋ณด์กฐ ์กฐ์ž‘ ๋ฌธ๊ตฌ๊ฐ€ ๋ถ™๋Š” ํ–‰ |
61
+ | `label?` | `string` | โ€” | ๋ผ๋ฒจ ํ…์ŠคํŠธ |
62
+ | `option` | `SSystemActionButtonTextOption` | โ€” | ์„ ํ–‰ ์•„์ด์ฝ˜ + ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ |
63
+
64
+ ## Types
65
+
66
+ ### SSystemActionButtonAccountOption
67
+
68
+ ```ts
69
+ /**
70
+ * `account` ํƒ€์ž…์˜ option โ€” ํ–‰์„ ๋ˆŒ๋ €์„ ๋•Œ ๋œจ๋Š” ๊ณ„์ • ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค.
71
+ * ๋‚ด์šฉ(์ด๋ฉ”์ผยท์ด๋ฆ„ยท๊ถŒํ•œยทํ–‰๋“ค)์€ `SAccountListBox` ์™€ ๊ฐ™๋‹ค.
72
+ *
73
+ * **๋œจ๋Š” ์ž๋ฆฌ๋Š” ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.** ๊ณ„์ • ํ–‰์ด ๋†“์ธ ์ž๋ฆฌ๊ฐ€ ์ •ํ•œ๋‹ค โ€” ํŒ์ด๋ฉด ํ–‰ ์œ„๋กœ ยท ์™ผ์ชฝ ๋์— ๋งž์ถฐ,
74
+ * ์ „ํญ ์ƒ๋‹จ๋ฐ”๋ฉด ํ–‰ ์•„๋ž˜๋กœ ยท ์˜ค๋ฅธ์ชฝ ๋์— ๋งž์ถฐ ํŽผ์นœ๋‹ค(์‹œ์•ˆ). ํ™”๋ฉด๋งˆ๋‹ค ๊ณ ๋ฅผ ๊ฐ’์ด ์•„๋‹ˆ๋ผ,
75
+ * prop ์œผ๋กœ ์—ด๋ฉด ๊ฐ™์€ ๊ณ„์ • ํ–‰์ด ์•ฑ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋œฌ๋‹ค.
76
+ */
77
+ export interface SSystemActionButtonAccountOption extends SAccountListBoxContent {
78
+ /**
79
+ * ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค ์—ด๋ฆผ ์ƒํƒœ๋ฅผ ๋ฐ–์—์„œ ์ฅ”๋‹ค(controlled). ์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ฒ„ํŠผ์ด ์Šค์Šค๋กœ ์—ฌ๋‹ซ๋Š”๋‹ค.
80
+ * ํ–‰์„ ๋‹ด์€ ์ชฝ์ด ๋‹ซ์•„์•ผ ํ•˜๋Š” ์ž๋ฆฌ๊ฐ€ ์žˆ์–ด ์—ด์–ด ๋‘” ํ†ต๋กœ๋‹ค โ€” ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค๋Š” SPortal ๋กœ ๋–  ์žˆ์–ด
81
+ * ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ํ™”๋ฉด์—์„œ ๋น ์ ธ๋„(GNB ๋ฅผ ์ ‘์œผ๋ฉด ๋ฉ”๋‰ด ์ปฌ๋Ÿผ์ด ๋ฏธ๋„๋Ÿฌ์ ธ ๋‚˜๊ฐ„๋‹ค) ๋”ฐ๋ผ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.
82
+ */
83
+ open?: boolean;
84
+ /** ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค ์—ด๋ฆผ/๋‹ซํž˜ ๋ณ€๊ฒฝ */
85
+ onOpenChange?: (open: boolean) => void;
86
+ }
87
+ ```
88
+
89
+ ### SSystemActionButtonColor
90
+
91
+ ```ts
92
+ export type SSystemActionButtonColor = (typeof SYSTEM_ACTION_BUTTON_COLORS)[number];
93
+ ```
94
+
95
+ ### SSystemActionButtonIconOption
96
+
97
+ ```ts
98
+ /** ์„ ํ–‰ ์•„์ด์ฝ˜๋งŒ ๋ฐ›๋Š” ํƒ€์ž…(`select`)์˜ option */
99
+ export interface SSystemActionButtonIconOption {
100
+ /** ์„ ํ–‰ ์•„์ด์ฝ˜๋ช… */
101
+ icon: SIconName;
102
+ }
103
+ ```
104
+
105
+ ### SSystemActionButtonStatusOption
106
+
107
+ ```ts
108
+ /**
109
+ * `status` ํƒ€์ž…์˜ option โ€” ๋ผ๋ฒจ ์ž๋ฆฌ์— ๋“ค์–ด๊ฐ€๋Š” ์ƒํƒœ ํƒœ๊ทธ + ๊ณ ๋ฅผ ๋ชฉ๋ก.
110
+ *
111
+ * `options` ๋Š” **ํ•„์ˆ˜๋‹ค** โ€” ์ƒํƒœ ํ–‰์€ ๋Š˜ ๊ทธ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฉ”๋‰ด์˜ ํŠธ๋ฆฌ๊ฑฐ์ด๊ณ , ์ง€๊ธˆ ์ƒํƒœ(`value`)์—
112
+ * ํ•ด๋‹นํ•˜๋Š” ์นธ์˜ ์ƒ‰ยท์ด๋ฆ„์ด ๊ณง ํƒœ๊ทธ๊ฐ€ ๋œ๋‹ค. ๋ณด์—ฌ์ฃผ๊ธฐ๋งŒ ํ•˜๋Š” ์ƒํƒœ ์ค„์ด ํ•„์š”ํ•˜๋ฉด ์ด ๋ฒ„ํŠผ์ด ์•„๋‹ˆ๋ผ
113
+ * `STag` ๋ฅผ ์“ด๋‹ค.
114
+ */
115
+ export interface SSystemActionButtonStatusOption {
116
+ /** ์ง€๊ธˆ ์ƒํƒœ. `options` ์—์„œ ๊ฐ™์€ `value` ๋ฅผ ์ฐพ์•„ ๊ทธ ์ƒ‰ยท์ด๋ฆ„์œผ๋กœ ํƒœ๊ทธ๋ฅผ ๊ทธ๋ฆฐ๋‹ค */
117
+ value?: string;
118
+ /** ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ. **ํ•„์ˆ˜๋‹ค** โ€” ์ด ๋ชฉ๋ก์ด ํ–‰ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํŽผ์ณ์ง„๋‹ค */
119
+ options: SSystemActionButtonStatusMenuOption[];
120
+ /** ๋ฉ”๋‰ด์—์„œ ์ƒํƒœ๋ฅผ ๊ณ ๋ฆ„. ๊ณ ๋ฅด๋ฉด ๋ฉ”๋‰ด๊ฐ€ ๋‹ซํžŒ๋‹ค */
121
+ onChange?: (value: string) => void;
122
+ }
123
+ ```
124
+
125
+ ### SSystemActionButtonSubSelectOption
126
+
127
+ ```ts
128
+ /**
129
+ * `subSelect` ํƒ€์ž…์˜ option โ€” ์ง€๊ธˆ ๊ฐ’ + ๊ณ ๋ฅผ ๋ชฉ๋ก.
130
+ *
131
+ * `options` ๋Š” **ํ•„์ˆ˜๋‹ค** โ€” `subSelect` ๋Š” "์ง€๊ธˆ ๊ฐ’์ด ์ ํ˜€ ์žˆ๊ณ  ๋ˆŒ๋Ÿฌ์„œ ๋ฐ”๊พธ๋Š” ํ–‰"์ด๋ผ, ๋ˆŒ๋Ÿฌ๋„
132
+ * ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š์œผ๋ฉด ๊ทธ๊ฒƒ์€ `select`(๋ˆŒ๋Ÿฌ ๋“ค์–ด๊ฐ€๋Š” ํ–‰)์ด์ง€ `subSelect` ๊ฐ€ ์•„๋‹ˆ๋‹ค.
133
+ */
134
+ export interface SSystemActionButtonSubSelectOption extends SSystemActionButtonIconOption {
135
+ /**
136
+ * ์ง€๊ธˆ ๊ฐ’. `options` ์—์„œ ๊ฐ™์€ `value` ๋ฅผ ์ฐพ์•„ ์šฐ์ธก์— ๊ทธ `label` ๋กœ ์ ๋Š”๋‹ค
137
+ * (๋ชป ์ฐพ์œผ๋ฉด `value` ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ๋Š”๋‹ค).
138
+ */
139
+ value?: string;
140
+ /** ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฐ’. **ํ•„์ˆ˜๋‹ค** โ€” ์ด ๋ชฉ๋ก์ด ํ–‰ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํŽผ์ณ์ง„๋‹ค */
141
+ options: SSystemActionButtonMenuOption[];
142
+ /** ๋ฉ”๋‰ด์—์„œ ๊ฐ’์„ ๊ณ ๋ฆ„. ๊ณ ๋ฅด๋ฉด ๋ฉ”๋‰ด๊ฐ€ ๋‹ซํžŒ๋‹ค */
143
+ onChange?: (value: string) => void;
144
+ }
145
+ ```
146
+
147
+ ### SSystemActionButtonTextOption
148
+
149
+ ```ts
150
+ /** ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ๊นŒ์ง€ ๋ฐ›๋Š” ํƒ€์ž…(`switch` ยท `subSelect`)์˜ option */
151
+ export interface SSystemActionButtonTextOption extends SSystemActionButtonIconOption {
152
+ /** ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ */
153
+ text?: string;
154
+ }
155
+ ```
156
+
157
+ ### SYSTEM_ACTION_BUTTON_COLORS
158
+
159
+ ```ts
160
+ /**
161
+ * SSystemActionButton ์„ค์ •.
162
+ *
163
+ * ํ† ํฐ์€ GNB system ํŒจ๋„ ํ•œ ๋ฒŒ(`--cmp-gnb-system-*`)์„ ๊ทธ๋Œ€๋กœ ์“ด๋‹ค.
164
+ * ํ–‰ ๊ณตํ†ต(๋†’์ดยท๋ผ์šด๋“œยท์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„ยท๋ผ๋ฒจ) โ†’ --cmp-gnb-system-item-*
165
+ * ์ƒ‰(color ์ถ•) light / dark / darker โ†’ --cmp-gnb-system-item-<color>-*
166
+ * ์šฐ์ธก ์•ก์…˜(ํŒจ๋”ฉยท๊ฐ„๊ฒฉยท์•„์ด์ฝ˜ยทํ…์ŠคํŠธ์ƒ‰) โ†’ --cmp-gnb-system-actionButton-*
167
+ *
168
+ * ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ๋Š” CSS ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ `.typo-*` ํ”„๋ฆฌ์…‹์œผ๋กœ ๋‚˜์˜จ๋‹ค.
169
+ * item.label โ†’ typo-body-sm-semibold (12/600/20)
170
+ * actionButton.switch โ†’ typo-field-sm-default (12/400/20)
171
+ * actionButton.selectData โ†’ typo-control-xs-medium (12/500/20)
172
+ */
173
+
174
+ /** ์ƒ‰์ƒ(ํ‘œ๋ฉด). light = ํฐ ๋ฉด, dark = ์˜ค์…˜๋ธ”๋ฃจ ๋ฉด, darker = ๋„ค์ด๋น„ ๋ฉด */
175
+ export const SYSTEM_ACTION_BUTTON_COLORS = ['light', 'dark', 'darker'] as const;
176
+ ```
177
+
178
+ ### SSystemActionButtonStatusMenuOption
179
+
180
+ ```ts
181
+ /** ์ƒํƒœ ๋ฉ”๋‰ด์˜ ํ•œ ์นธ โ€” ์ ๊ณผ ๊ธ€์ž๊ฐ€ ๊ทธ ์ƒํƒœ์˜ ์ƒ‰์œผ๋กœ ํ•จ๊ป˜ ๋ฌผ๋“ ๋‹ค */
182
+ export interface SSystemActionButtonStatusMenuOption extends SSystemActionButtonMenuOption {
183
+ /** ์ƒํƒœ ์ƒ‰. ๊ธฐ๋ณธ `'blue'` */
184
+ color?: STagColor;
185
+ }
186
+ ```
187
+
188
+ ### SSystemActionButtonMenuOption
189
+
190
+ ```ts
191
+ /** ๊ฐ’ ๊ณ ๋ฅด๊ธฐ ๋ฉ”๋‰ด์˜ ํ•œ ์นธ */
192
+ export interface SSystemActionButtonMenuOption {
193
+ /** ๊ฐ’. `option.value` ์™€ ๋งž์ถฐ ์ง€๊ธˆ ๊ฐ’์„ ๊ฐ€๋ฆฐ๋‹ค */
194
+ value: string;
195
+ /** ํ™”๋ฉด์— ์ ํžˆ๋Š” ์ด๋ฆ„ */
196
+ label: string;
197
+ }
198
+ ```
199
+
200
+ ## Dependencies
201
+
202
+ ### Used by
203
+
204
+ - [SGnbSystem](../SGnbSystem)
205
+
206
+ ### Depends on
207
+
208
+ - [SAccountListBox](../SAccountListBox)
209
+ - [SIcon](../SIcon)
210
+ - [STag](../STag)
211
+
212
+ ### Graph
213
+
214
+ ```mermaid
215
+ graph TD;
216
+ SSystemActionButton --> SAccountListBox
217
+ SSystemActionButton --> SIcon
218
+ SSystemActionButton --> STag
219
+ SGnbSystem --> SSystemActionButton
220
+ style SSystemActionButton fill:#f9f,stroke:#333,stroke-width:4px
221
+ ```
@@ -0,0 +1,161 @@
1
+ import { type ButtonHTMLAttributes } from 'react';
2
+ import { type SAccountListBoxContent } from '../SAccountListBox';
3
+ import { type SIconName } from '../SIcon';
4
+ import { type STagColor } from '../STag';
5
+ import { type SSystemActionButtonColor } from './systemActionButton.config';
6
+ /** ์„ ํ–‰ ์•„์ด์ฝ˜๋งŒ ๋ฐ›๋Š” ํƒ€์ž…(`select`)์˜ option */
7
+ export interface SSystemActionButtonIconOption {
8
+ /** ์„ ํ–‰ ์•„์ด์ฝ˜๋ช… */
9
+ icon: SIconName;
10
+ }
11
+ /** ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ๊นŒ์ง€ ๋ฐ›๋Š” ํƒ€์ž…(`switch` ยท `subSelect`)์˜ option */
12
+ export interface SSystemActionButtonTextOption extends SSystemActionButtonIconOption {
13
+ /** ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ */
14
+ text?: string;
15
+ }
16
+ /** ๊ฐ’ ๊ณ ๋ฅด๊ธฐ ๋ฉ”๋‰ด์˜ ํ•œ ์นธ */
17
+ export interface SSystemActionButtonMenuOption {
18
+ /** ๊ฐ’. `option.value` ์™€ ๋งž์ถฐ ์ง€๊ธˆ ๊ฐ’์„ ๊ฐ€๋ฆฐ๋‹ค */
19
+ value: string;
20
+ /** ํ™”๋ฉด์— ์ ํžˆ๋Š” ์ด๋ฆ„ */
21
+ label: string;
22
+ }
23
+ /**
24
+ * `subSelect` ํƒ€์ž…์˜ option โ€” ์ง€๊ธˆ ๊ฐ’ + ๊ณ ๋ฅผ ๋ชฉ๋ก.
25
+ *
26
+ * `options` ๋Š” **ํ•„์ˆ˜๋‹ค** โ€” `subSelect` ๋Š” "์ง€๊ธˆ ๊ฐ’์ด ์ ํ˜€ ์žˆ๊ณ  ๋ˆŒ๋Ÿฌ์„œ ๋ฐ”๊พธ๋Š” ํ–‰"์ด๋ผ, ๋ˆŒ๋Ÿฌ๋„
27
+ * ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š์œผ๋ฉด ๊ทธ๊ฒƒ์€ `select`(๋ˆŒ๋Ÿฌ ๋“ค์–ด๊ฐ€๋Š” ํ–‰)์ด์ง€ `subSelect` ๊ฐ€ ์•„๋‹ˆ๋‹ค.
28
+ */
29
+ export interface SSystemActionButtonSubSelectOption extends SSystemActionButtonIconOption {
30
+ /**
31
+ * ์ง€๊ธˆ ๊ฐ’. `options` ์—์„œ ๊ฐ™์€ `value` ๋ฅผ ์ฐพ์•„ ์šฐ์ธก์— ๊ทธ `label` ๋กœ ์ ๋Š”๋‹ค
32
+ * (๋ชป ์ฐพ์œผ๋ฉด `value` ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ๋Š”๋‹ค).
33
+ */
34
+ value?: string;
35
+ /** ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฐ’. **ํ•„์ˆ˜๋‹ค** โ€” ์ด ๋ชฉ๋ก์ด ํ–‰ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํŽผ์ณ์ง„๋‹ค */
36
+ options: SSystemActionButtonMenuOption[];
37
+ /** ๋ฉ”๋‰ด์—์„œ ๊ฐ’์„ ๊ณ ๋ฆ„. ๊ณ ๋ฅด๋ฉด ๋ฉ”๋‰ด๊ฐ€ ๋‹ซํžŒ๋‹ค */
38
+ onChange?: (value: string) => void;
39
+ }
40
+ /** ์ƒํƒœ ๋ฉ”๋‰ด์˜ ํ•œ ์นธ โ€” ์ ๊ณผ ๊ธ€์ž๊ฐ€ ๊ทธ ์ƒํƒœ์˜ ์ƒ‰์œผ๋กœ ํ•จ๊ป˜ ๋ฌผ๋“ ๋‹ค */
41
+ export interface SSystemActionButtonStatusMenuOption extends SSystemActionButtonMenuOption {
42
+ /** ์ƒํƒœ ์ƒ‰. ๊ธฐ๋ณธ `'blue'` */
43
+ color?: STagColor;
44
+ }
45
+ /**
46
+ * `status` ํƒ€์ž…์˜ option โ€” ๋ผ๋ฒจ ์ž๋ฆฌ์— ๋“ค์–ด๊ฐ€๋Š” ์ƒํƒœ ํƒœ๊ทธ + ๊ณ ๋ฅผ ๋ชฉ๋ก.
47
+ *
48
+ * `options` ๋Š” **ํ•„์ˆ˜๋‹ค** โ€” ์ƒํƒœ ํ–‰์€ ๋Š˜ ๊ทธ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฉ”๋‰ด์˜ ํŠธ๋ฆฌ๊ฑฐ์ด๊ณ , ์ง€๊ธˆ ์ƒํƒœ(`value`)์—
49
+ * ํ•ด๋‹นํ•˜๋Š” ์นธ์˜ ์ƒ‰ยท์ด๋ฆ„์ด ๊ณง ํƒœ๊ทธ๊ฐ€ ๋œ๋‹ค. ๋ณด์—ฌ์ฃผ๊ธฐ๋งŒ ํ•˜๋Š” ์ƒํƒœ ์ค„์ด ํ•„์š”ํ•˜๋ฉด ์ด ๋ฒ„ํŠผ์ด ์•„๋‹ˆ๋ผ
50
+ * `STag` ๋ฅผ ์“ด๋‹ค.
51
+ */
52
+ export interface SSystemActionButtonStatusOption {
53
+ /** ์ง€๊ธˆ ์ƒํƒœ. `options` ์—์„œ ๊ฐ™์€ `value` ๋ฅผ ์ฐพ์•„ ๊ทธ ์ƒ‰ยท์ด๋ฆ„์œผ๋กœ ํƒœ๊ทธ๋ฅผ ๊ทธ๋ฆฐ๋‹ค */
54
+ value?: string;
55
+ /** ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ. **ํ•„์ˆ˜๋‹ค** โ€” ์ด ๋ชฉ๋ก์ด ํ–‰ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํŽผ์ณ์ง„๋‹ค */
56
+ options: SSystemActionButtonStatusMenuOption[];
57
+ /** ๋ฉ”๋‰ด์—์„œ ์ƒํƒœ๋ฅผ ๊ณ ๋ฆ„. ๊ณ ๋ฅด๋ฉด ๋ฉ”๋‰ด๊ฐ€ ๋‹ซํžŒ๋‹ค */
58
+ onChange?: (value: string) => void;
59
+ }
60
+ /** ๋ชจ๋“  ํƒ€์ž…์ด ๊ณตํ†ต์œผ๋กœ ๋ฐ›๋Š” props */
61
+ export interface SSystemActionButtonBaseProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'type' | 'children'> {
62
+ /** ์ƒ‰์ƒ(๋†“์ด๋Š” ํ‘œ๋ฉด). light = ํฐ ๋ฉด, dark = ์˜ค์…˜๋ธ”๋ฃจ ๋ฉด, darker = ๋„ค์ด๋น„ ๋ฉด. ๊ธฐ๋ณธ `'light'` */
63
+ color?: SSystemActionButtonColor;
64
+ /** ๋น„ํ™œ์„ฑ ์—ฌ๋ถ€. ๊ธฐ๋ณธ `false` */
65
+ disabled?: boolean;
66
+ }
67
+ /**
68
+ * `account` ํƒ€์ž…์˜ option โ€” ํ–‰์„ ๋ˆŒ๋ €์„ ๋•Œ ๋œจ๋Š” ๊ณ„์ • ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค.
69
+ * ๋‚ด์šฉ(์ด๋ฉ”์ผยท์ด๋ฆ„ยท๊ถŒํ•œยทํ–‰๋“ค)์€ `SAccountListBox` ์™€ ๊ฐ™๋‹ค.
70
+ *
71
+ * **๋œจ๋Š” ์ž๋ฆฌ๋Š” ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.** ๊ณ„์ • ํ–‰์ด ๋†“์ธ ์ž๋ฆฌ๊ฐ€ ์ •ํ•œ๋‹ค โ€” ํŒ์ด๋ฉด ํ–‰ ์œ„๋กœ ยท ์™ผ์ชฝ ๋์— ๋งž์ถฐ,
72
+ * ์ „ํญ ์ƒ๋‹จ๋ฐ”๋ฉด ํ–‰ ์•„๋ž˜๋กœ ยท ์˜ค๋ฅธ์ชฝ ๋์— ๋งž์ถฐ ํŽผ์นœ๋‹ค(์‹œ์•ˆ). ํ™”๋ฉด๋งˆ๋‹ค ๊ณ ๋ฅผ ๊ฐ’์ด ์•„๋‹ˆ๋ผ,
73
+ * prop ์œผ๋กœ ์—ด๋ฉด ๊ฐ™์€ ๊ณ„์ • ํ–‰์ด ์•ฑ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋œฌ๋‹ค.
74
+ */
75
+ export interface SSystemActionButtonAccountOption extends SAccountListBoxContent {
76
+ /**
77
+ * ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค ์—ด๋ฆผ ์ƒํƒœ๋ฅผ ๋ฐ–์—์„œ ์ฅ”๋‹ค(controlled). ์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ฒ„ํŠผ์ด ์Šค์Šค๋กœ ์—ฌ๋‹ซ๋Š”๋‹ค.
78
+ * ํ–‰์„ ๋‹ด์€ ์ชฝ์ด ๋‹ซ์•„์•ผ ํ•˜๋Š” ์ž๋ฆฌ๊ฐ€ ์žˆ์–ด ์—ด์–ด ๋‘” ํ†ต๋กœ๋‹ค โ€” ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค๋Š” SPortal ๋กœ ๋–  ์žˆ์–ด
79
+ * ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ํ™”๋ฉด์—์„œ ๋น ์ ธ๋„(GNB ๋ฅผ ์ ‘์œผ๋ฉด ๋ฉ”๋‰ด ์ปฌ๋Ÿผ์ด ๋ฏธ๋„๋Ÿฌ์ ธ ๋‚˜๊ฐ„๋‹ค) ๋”ฐ๋ผ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.
80
+ */
81
+ open?: boolean;
82
+ /** ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค ์—ด๋ฆผ/๋‹ซํž˜ ๋ณ€๊ฒฝ */
83
+ onOpenChange?: (open: boolean) => void;
84
+ }
85
+ /** ๊ณ„์ • ํ–‰ โ€” ์•„์ด์ฝ˜์ด `user` ๋กœ ๊ณ ์ •์ด๊ณ  ์šฐ์ธก ์•ก์…˜์ด ์—†๋‹ค */
86
+ export interface SSystemActionButtonAccountProps extends SSystemActionButtonBaseProps {
87
+ /** ๊ณ„์ • ํ–‰ */
88
+ type: 'account';
89
+ /** ๋ผ๋ฒจ ํ…์ŠคํŠธ */
90
+ label?: string;
91
+ /**
92
+ * ๋ˆ„๋ฅด๋ฉด ๋œจ๋Š” ๊ณ„์ • ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค. **ํ•„์ˆ˜๋‹ค** โ€” ๊ณ„์ • ํ–‰์€ ๋Š˜ ์ด ํŒจ๋„์˜ ํŠธ๋ฆฌ๊ฑฐ์ด๊ณ , ๋ˆŒ๋Ÿฌ๋„ ์•„๋ฌด๊ฒƒ๋„
93
+ * ๋œจ์ง€ ์•Š๋Š” ๊ณ„์ • ํ–‰์€ ์—†๋‹ค. ์•„์ด์ฝ˜์€ `user` ๋กœ ๊ณ ์ •์ด๋ผ ์—ฌ๊ธฐ์„œ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
94
+ */
95
+ option: SSystemActionButtonAccountOption;
96
+ }
97
+ /** ํ™”์‚ดํ‘œ๋งŒ ๋ถ™๋Š” ํ–‰ โ€” ๋ˆŒ๋Ÿฌ ๋“ค์–ด๊ฐ„๋‹ค๋Š” ๋œป */
98
+ export interface SSystemActionButtonSelectProps extends SSystemActionButtonBaseProps {
99
+ /** ํ™”์‚ดํ‘œ๋งŒ ๋ถ™๋Š” ํ–‰ */
100
+ type: 'select';
101
+ /** ๋ผ๋ฒจ ํ…์ŠคํŠธ */
102
+ label?: string;
103
+ /** ์„ ํ–‰ ์•„์ด์ฝ˜ */
104
+ option: SSystemActionButtonIconOption;
105
+ }
106
+ /** ์šฐ์ธก์— ๋ณด์กฐ ์กฐ์ž‘ ๋ฌธ๊ตฌ๊ฐ€ ๋ถ™๋Š” ํ–‰ โ€” ์ง€๊ธˆ ๋ถ™์–ด ์žˆ๋Š” ๋Œ€์ƒ์„ ๊ฐˆ์•„ ๋ผ์šด๋‹ค */
107
+ export interface SSystemActionButtonSwitchProps extends SSystemActionButtonBaseProps {
108
+ /** ์šฐ์ธก์— ๋ณด์กฐ ์กฐ์ž‘ ๋ฌธ๊ตฌ๊ฐ€ ๋ถ™๋Š” ํ–‰ */
109
+ type: 'switch';
110
+ /** ๋ผ๋ฒจ ํ…์ŠคํŠธ */
111
+ label?: string;
112
+ /** ์„ ํ–‰ ์•„์ด์ฝ˜ + ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ */
113
+ option: SSystemActionButtonTextOption;
114
+ }
115
+ /** ์šฐ์ธก์— ์ง€๊ธˆ ์„ ํƒ๋œ ๊ฐ’์ด ๋ถ™๋Š” ํ–‰ โ€” `options` ๋ฅผ ์ฃผ๋ฉด ํ–‰ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฉ”๋‰ด๊ฐ€ ํŽผ์ณ์ง„๋‹ค */
116
+ export interface SSystemActionButtonSubSelectProps extends SSystemActionButtonBaseProps {
117
+ /** ์šฐ์ธก์— ์ง€๊ธˆ ์„ ํƒ๋œ ๊ฐ’์ด ๋ถ™๋Š” ํ–‰ */
118
+ type: 'subSelect';
119
+ /** ๋ผ๋ฒจ ํ…์ŠคํŠธ */
120
+ label?: string;
121
+ /** ์„ ํ–‰ ์•„์ด์ฝ˜ + ์šฐ์ธก ๊ฐ’ + ๊ณ ๋ฅผ ๋ชฉ๋ก */
122
+ option: SSystemActionButtonSubSelectOption;
123
+ }
124
+ /** ์šฐ์ธก์— ๋ฌธ๊ตฌ๊ฐ€ ๋ถ™๋Š” ๋‘ ํƒ€์ž…์„ ํ•จ๊ป˜ ๊ฐ€๋ฆฌํ‚จ๋‹ค โ€” `switch` ยท `subSelect` */
125
+ export type SSystemActionButtonTextProps = SSystemActionButtonSwitchProps | SSystemActionButtonSubSelectProps;
126
+ /** ๋ผ๋ฒจ ์ž๋ฆฌ์— ์ƒํƒœ ํƒœ๊ทธ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ํ–‰ โ€” `options` ๋ฅผ ์ฃผ๋ฉด ํ–‰ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฉ”๋‰ด๊ฐ€ ํŽผ์ณ์ง„๋‹ค */
127
+ export interface SSystemActionButtonStatusProps extends SSystemActionButtonBaseProps {
128
+ /** ๋ผ๋ฒจ ์ž๋ฆฌ์— ์ƒํƒœ ํƒœ๊ทธ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ํ–‰ */
129
+ type: 'status';
130
+ /** ํƒœ๊ทธ๊ฐ€ ๋ผ๋ฒจ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค */
131
+ label?: never;
132
+ /**
133
+ * ์ƒํƒœ ํƒœ๊ทธ + ๊ณ ๋ฅผ ๋ชฉ๋ก. **ํ•„์ˆ˜๋‹ค** โ€” ์ƒํƒœ ํ–‰์€ ๋Š˜ ๊ทธ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฉ”๋‰ด์˜ ํŠธ๋ฆฌ๊ฑฐ๋‹ค.
134
+ */
135
+ option: SSystemActionButtonStatusOption;
136
+ }
137
+ /** `type` ์œผ๋กœ ๊ฐˆ๋ฆฌ๋Š” ํŒ๋ณ„ ์œ ๋‹ˆ์˜จ. ํƒ€์ž…์— ๋งž์ง€ ์•Š๋Š” option ์€ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋ง‰ํžŒ๋‹ค. */
138
+ export type SSystemActionButtonProps = SSystemActionButtonAccountProps | SSystemActionButtonSelectProps | SSystemActionButtonSwitchProps | SSystemActionButtonSubSelectProps | SSystemActionButtonStatusProps;
139
+ /**
140
+ * SSystemActionButton โ€” GNB system ํŒจ๋„์˜ ํ•œ ์ค„์งœ๋ฆฌ ์•ก์…˜ ๋ฒ„ํŠผ.
141
+ *
142
+ * ์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„ + ๋ผ๋ฒจ + ์šฐ์ธก ์•ก์…˜์ด ํ•œ ํ–‰์— ๋ถ™๊ณ , ํ–‰ ์ „์ฒด๊ฐ€ ๋ฒ„ํŠผ์ด๋‹ค. ๋ฌด์—‡์ด ๊ทธ๋ ค์ง€๋Š”์ง€๋Š”
143
+ * `type` ์ด ์ •ํ•˜๊ณ (`account` `switch` `select` `subSelect` `status`), ํƒ€์ž…๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’๋งŒ
144
+ * `option` ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. ์„ ํ–‰ ์•„์ด์ฝ˜์€ ํ•ญ์ƒ ์žˆ๋‹ค โ€” `account` ๋Š” `user` ๊ณ ์ •, `status` ๋Š” ํƒœ๊ทธ๊ฐ€
145
+ * ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•ด ์•„์ด์ฝ˜์ด ์—†๊ณ , ๋‚˜๋จธ์ง€๋Š” `option.icon` ์ด ํ•„์ˆ˜๋‹ค.
146
+ *
147
+ * `account` ๋Š” **์–ธ์ œ๋‚˜ ๊ณ„์ • ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค(`SAccountListBox`)์˜ ํŠธ๋ฆฌ๊ฑฐ**๋‹ค โ€” ๋ˆŒ๋Ÿฌ๋„ ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€
148
+ * ์•Š๋Š” ๊ณ„์ • ํ–‰์€ ์—†์œผ๋ฏ€๋กœ `option` ์ด ํ•„์ˆ˜์ด๊ณ , ๋ˆ„๋ฅด๋ฉด ์ด๋ฉ”์ผยท์ด๋ฆ„ยท๊ถŒํ•œ๊ณผ ๊ณ„์ • ์„ค์ •ยท์–ธ์–ด ๋ณ€๊ฒฝยท
149
+ * ๋กœ๊ทธ์•„์›ƒ์„ ๋ณด์—ฌ์ฃผ๊ณ  ํ–‰์„ ๊ณ ๋ฅด๋ฉด ๋‹ซํžŒ๋‹ค. ๋œจ๋Š” ์ž๋ฆฌ๋Š” ๋ฐ›์ง€ ์•Š๊ณ  ๋†“์ธ ์ž๋ฆฌ๊ฐ€ ์ •ํ•œ๋‹ค
150
+ * (ํŒ์ด๋ฉด ํ–‰ ์œ„๋กœ ยท ์™ผ์ชฝ ๋, ์ „ํญ ์ƒ๋‹จ๋ฐ”๋ฉด ํ–‰ ์•„๋ž˜๋กœ ยท ์˜ค๋ฅธ์ชฝ ๋).
151
+ *
152
+ * `subSelect` ยท `status` ๋Š” **์–ธ์ œ๋‚˜ ๊ฐ’ ๊ณ ๋ฅด๊ธฐ ๋ฉ”๋‰ด์˜ ํŠธ๋ฆฌ๊ฑฐ**๋‹ค โ€” ์ง€๊ธˆ ๊ฐ’์ด ์ ํ˜€ ์žˆ๋Š” ํ–‰์ด๋ผ
153
+ * ๋ˆ„๋ฅด๋ฉด ๊ทธ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๋ฉ”๋‰ด๊ฐ€ ๋œฌ๋‹ค. ๊ทธ๋ž˜์„œ `option.options` ๊ฐ€ ํ•„์ˆ˜์ด๊ณ , ๋ฉ”๋‰ด๋Š” ํ–‰ ์˜ค๋ฅธ์ชฝ์œผ๋กœ
154
+ * (ํ–‰ ์œ„์ชฝ ๋์— ๋งž์ถฐ) ํŽผ์ณ์ง€๋ฉฐ ๊ณ ๋ฅด๋ฉด `option.onChange(value)` ๊ฐ€ ๋Œ๊ณ  ๋‹ซํžŒ๋‹ค.
155
+ * ๋ˆŒ๋Ÿฌ์„œ ๊ฐ’ ๊ณ ๋ฅด๋Š” ํ™”๋ฉด์œผ๋กœ ๋ณด๋‚ผ ๊ฒƒ์ด๋ฉด `select`, ๋ณด์—ฌ์ฃผ๊ธฐ๋งŒ ํ•  ๊ฒƒ์ด๋ฉด `STag` ๋‹ค.
156
+ *
157
+ * hover ํ•˜๋ฉด ํ‘œ๋ฉด์ƒ‰์ด ํ•œ ๋‹จ๊ณ„ ๋ฐ”๋€Œ๊ณ , ์–ด๋‘์šด ์ƒ‰์—์„œ๋Š” ์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„์ด ํฐ์ƒ‰์œผ๋กœ ๋– ์˜ค๋ฅธ๋‹ค.
158
+ * ์ƒํƒœ๋Š” defaultยทhover ๋‘˜๋ฟ์ด๋‹ค โ€” ํ† ํฐ์— selected ๊ฐ€ ์—†๋‹ค.
159
+ * ํ† ํฐ์€ `--cmp-gnb-system-item-*` ยท `--cmp-gnb-system-actionButton-*`.
160
+ */
161
+ export declare const SSystemActionButton: import("react").ForwardRefExoticComponent<SSystemActionButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,2 @@
1
+ export { SSystemActionButton, type SSystemActionButtonProps, type SSystemActionButtonBaseProps, type SSystemActionButtonAccountProps, type SSystemActionButtonAccountOption, type SSystemActionButtonSelectProps, type SSystemActionButtonTextProps, type SSystemActionButtonSwitchProps, type SSystemActionButtonSubSelectProps, type SSystemActionButtonStatusProps, type SSystemActionButtonIconOption, type SSystemActionButtonTextOption, type SSystemActionButtonSubSelectOption, type SSystemActionButtonMenuOption, type SSystemActionButtonStatusOption, type SSystemActionButtonStatusMenuOption, } from './SSystemActionButton';
2
+ export { SYSTEM_ACTION_BUTTON_COLORS, SYSTEM_ACTION_BUTTON_TYPES, SYSTEM_ACTION_BUTTON_COLOR_CONFIG, SYSTEM_ACTION_BUTTON_TYPE_CONFIG, SYSTEM_ACTION_BUTTON_LAYOUT, type SSystemActionButtonColor, type SSystemActionButtonType, } from './systemActionButton.config';
@@ -0,0 +1,93 @@
1
+ import type { SIconName } from '../SIcon';
2
+ /**
3
+ * SSystemActionButton ์„ค์ •.
4
+ *
5
+ * ํ† ํฐ์€ GNB system ํŒจ๋„ ํ•œ ๋ฒŒ(`--cmp-gnb-system-*`)์„ ๊ทธ๋Œ€๋กœ ์“ด๋‹ค.
6
+ * ํ–‰ ๊ณตํ†ต(๋†’์ดยท๋ผ์šด๋“œยท์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„ยท๋ผ๋ฒจ) โ†’ --cmp-gnb-system-item-*
7
+ * ์ƒ‰(color ์ถ•) light / dark / darker โ†’ --cmp-gnb-system-item-<color>-*
8
+ * ์šฐ์ธก ์•ก์…˜(ํŒจ๋”ฉยท๊ฐ„๊ฒฉยท์•„์ด์ฝ˜ยทํ…์ŠคํŠธ์ƒ‰) โ†’ --cmp-gnb-system-actionButton-*
9
+ *
10
+ * ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ๋Š” CSS ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ `.typo-*` ํ”„๋ฆฌ์…‹์œผ๋กœ ๋‚˜์˜จ๋‹ค.
11
+ * item.label โ†’ typo-body-sm-semibold (12/600/20)
12
+ * actionButton.switch โ†’ typo-field-sm-default (12/400/20)
13
+ * actionButton.selectData โ†’ typo-control-xs-medium (12/500/20)
14
+ */
15
+ /** ์ƒ‰์ƒ(ํ‘œ๋ฉด). light = ํฐ ๋ฉด, dark = ์˜ค์…˜๋ธ”๋ฃจ ๋ฉด, darker = ๋„ค์ด๋น„ ๋ฉด */
16
+ export declare const SYSTEM_ACTION_BUTTON_COLORS: readonly ["light", "dark", "darker"];
17
+ export type SSystemActionButtonColor = (typeof SYSTEM_ACTION_BUTTON_COLORS)[number];
18
+ /**
19
+ * ํ–‰ ๊ตฌ์„ฑ.
20
+ * - `account` โ€” ๊ณ„์ • ํ–‰. ์•„์ด์ฝ˜์ด `user` ๋กœ ๊ณ ์ •์ด๊ณ  ์šฐ์ธก ์•ก์…˜์ด ์—†๋‹ค
21
+ * - `switch` โ€” ๋ณด์กฐ ์กฐ์ž‘ ๋ฌธ๊ตฌ + ์ƒˆ๋กœ๊ณ ์นจ ์•„์ด์ฝ˜
22
+ * - `select` โ€” ํ™”์‚ดํ‘œ๋งŒ. ๋ˆŒ๋Ÿฌ ๋“ค์–ด๊ฐ„๋‹ค๋Š” ๋œป
23
+ * - `subSelect` โ€” ์ง€๊ธˆ ์„ ํƒ๋ผ ์žˆ๋Š” ๊ฐ’ + ํ™”์‚ดํ‘œ
24
+ * - `status` โ€” ๋ผ๋ฒจ ์ž๋ฆฌ์— ์ƒํƒœ ํƒœ๊ทธ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  ํ™”์‚ดํ‘œ๊ฐ€ ๋ถ™๋Š”๋‹ค
25
+ */
26
+ export declare const SYSTEM_ACTION_BUTTON_TYPES: readonly ["account", "switch", "select", "subSelect", "status"];
27
+ export type SSystemActionButtonType = (typeof SYSTEM_ACTION_BUTTON_TYPES)[number];
28
+ /** ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ์˜ ์ƒ‰ยทํƒ€์ดํฌ๊ฐ€ ์–ด๋А ํ† ํฐ ๊ทธ๋ฃน์„ ์“ฐ๋Š”์ง€ (ํ† ํฐ์˜ ํ•˜์œ„ ๊ทธ๋ฃน๋ช…๊ณผ ๊ฐ™๋‹ค) */
29
+ export type SystemActionButtonActionTextToken = 'switch' | 'selectData';
30
+ export interface SystemActionButtonColorTokens {
31
+ /** ํ–‰ ๋ฐฐ๊ฒฝ (๊ธฐ๋ณธ) */
32
+ bg: string;
33
+ /** ํ–‰ ๋ฐฐ๊ฒฝ (hoverยทselected) */
34
+ bgHover: string;
35
+ /** ์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„ ๋ฐฐ๊ฒฝ (๊ธฐ๋ณธ) */
36
+ iconBg: string;
37
+ /** ์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„ ๋ฐฐ๊ฒฝ (hoverยทselected). ์ง€๊ธˆ์€ ์–ด๋А ์ƒ‰์—์„œ๋„ ๊ธฐ๋ณธ๊ณผ ๊ฐ™๋‹ค โ€” ์•„๋ž˜ ์ฃผ์„ ์ฐธ๊ณ  */
38
+ iconBgHover: string;
39
+ /** ์•„์ด์ฝ˜ ๊ธ€๋ฆฌํ”„์ƒ‰ (๊ธฐ๋ณธ) */
40
+ iconGlyph: string;
41
+ /** ์•„์ด์ฝ˜ ๊ธ€๋ฆฌํ”„์ƒ‰ (hoverยทselected) */
42
+ iconGlyphHover: string;
43
+ /** ๋ผ๋ฒจ ํ…์ŠคํŠธ์ƒ‰ */
44
+ text: string;
45
+ /** ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ์ƒ‰ (ํ† ํฐ ๊ทธ๋ฃน๋ณ„) */
46
+ actionText: Record<SystemActionButtonActionTextToken, string>;
47
+ /** ์šฐ์ธก ์•ก์…˜ ์•„์ด์ฝ˜์ƒ‰ */
48
+ actionIcon: string;
49
+ }
50
+ export declare const SYSTEM_ACTION_BUTTON_COLOR_CONFIG: Record<SSystemActionButtonColor, SystemActionButtonColorTokens>;
51
+ export interface SystemActionButtonTypeSpec {
52
+ /** ์„ ํ–‰ ์•„์ด์ฝ˜ ๊ณ ์ •๊ฐ’. ์žˆ์œผ๋ฉด `option.icon` ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค */
53
+ fixedIcon?: SIconName;
54
+ /** ์šฐ์ธก ์•ก์…˜ ํ…์ŠคํŠธ์˜ ์ƒ‰ยทํƒ€์ดํฌ. ์—†์œผ๋ฉด ํ…์ŠคํŠธ๋ฅผ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค */
55
+ actionText?: {
56
+ token: SystemActionButtonActionTextToken;
57
+ typo: string;
58
+ };
59
+ /** ์šฐ์ธก ์•ก์…˜ ์•„์ด์ฝ˜. ํƒ€์ž…์ด ์ •ํ•˜๋ฏ€๋กœ ๋ฐ–์—์„œ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค */
60
+ actionIcon?: {
61
+ name: SIconName;
62
+ size: string;
63
+ };
64
+ }
65
+ /** ํƒ€์ž…์ด ์ •ํ•˜๋Š” ๊ณ ์ • ๊ตฌ์„ฑ โ€” ๋ฌด์—‡์ด ๊ทธ๋ ค์ง€๋Š”๊ฐ€ */
66
+ export declare const SYSTEM_ACTION_BUTTON_TYPE_CONFIG: Record<SSystemActionButtonType, SystemActionButtonTypeSpec>;
67
+ /** ์น˜์ˆ˜ โ€” ๋Œ€์‘ ํ† ํฐ์ด ์žˆ์œผ๋ฉด ์ „๋ถ€ ํ† ํฐ ์ฐธ์กฐ */
68
+ export declare const SYSTEM_ACTION_BUTTON_LAYOUT: {
69
+ /** ํ–‰ ๋†’์ด */
70
+ readonly height: string;
71
+ /** ํ–‰ ๋ผ์šด๋“œ */
72
+ readonly radius: string;
73
+ /** ์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„ ํ•œ ๋ณ€ */
74
+ readonly iconFrame: string;
75
+ /** ์•„์ด์ฝ˜ ๊ธ€๋ฆฌํ”„ ํฌ๊ธฐ */
76
+ readonly iconGlyph: string;
77
+ /** ์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„ ๋ผ์šด๋“œ */
78
+ readonly iconRadius: string;
79
+ /** ์•„์ด์ฝ˜ ํ”„๋ ˆ์ž„ โ†” ๋ผ๋ฒจ ๊ฐ„๊ฒฉ */
80
+ readonly iconLabelGap: string;
81
+ /** ์ขŒ์ธก ์—ฌ๋ฐฑ */
82
+ readonly paddingLeft: string;
83
+ /** ์šฐ์ธก ์—ฌ๋ฐฑ */
84
+ readonly paddingRight: string;
85
+ /** ์•ก์…˜ ํ…์ŠคํŠธ โ†” ์•ก์…˜ ์•„์ด์ฝ˜ ๊ฐ„๊ฒฉ */
86
+ readonly actionGap: string;
87
+ /**
88
+ * ์•ก์…˜ ์•„์ด์ฝ˜ ๊ธ€๋ฆฌํ”„ ํ•œ ๋ณ€. ํ”„๋ ˆ์ž„ ํ•œ ๋ณ€์€ ํƒ€์ž…๋ณ„ ํ† ํฐ(`actionButton.*-icon`)์ด ์ •ํ•˜๊ณ 
89
+ * ๊ทธ ์•ˆ์— ๊ธ€๋ฆฌํ”„๊ฐ€ ์ด ํฌ๊ธฐ๋กœ ๋†“์ธ๋‹ค โ€” ์„ ํ–‰ ์•„์ด์ฝ˜์˜ ํ”„๋ ˆ์ž„(24)/๊ธ€๋ฆฌํ”„(20) ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋‹ค.
90
+ * ๋Œ€์‘ ํ† ํฐ์ด ์—†์–ด ๋””์ž์ธ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์“ด๋‹ค.
91
+ */
92
+ readonly actionIconGlyph: "12px";
93
+ };