sellmate-design-system-react 9.0.0-beta.7 โ†’ 9.0.0-beta.71

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 (388) hide show
  1. package/AGENTS.md +1873 -250
  2. package/README.md +76 -24
  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/SActionModal/README.md +1 -0
  10. package/dist/components/SActionModal/SActionModal.d.ts +9 -1
  11. package/dist/components/SBadge/README.md +27 -0
  12. package/dist/components/SBadge/SBadge.d.ts +1 -1
  13. package/dist/components/SBarChart/README.md +122 -0
  14. package/dist/components/SBarChart/SBarChart.d.ts +99 -0
  15. package/dist/components/SBarChart/barChart.config.d.ts +85 -0
  16. package/dist/components/SBarChart/index.d.ts +2 -0
  17. package/dist/components/SBarcodeInput/README.md +13 -4
  18. package/dist/components/SBarcodeInput/SBarcodeInput.d.ts +18 -3
  19. package/dist/components/SButton/README.md +40 -0
  20. package/dist/components/SCalendar/README.md +13 -0
  21. package/dist/components/SCalendarBoard/CalendarDayCard.d.ts +53 -0
  22. package/dist/components/SCalendarBoard/CalendarDayEventListBox.d.ts +26 -0
  23. package/dist/components/SCalendarBoard/CalendarEventButton.d.ts +20 -0
  24. package/dist/components/SCalendarBoard/CalendarMoreButton.d.ts +18 -0
  25. package/dist/components/SCalendarBoard/README.md +148 -0
  26. package/dist/components/SCalendarBoard/SCalendarBoard.d.ts +83 -0
  27. package/dist/components/SCalendarBoard/calendar-board-layout.d.ts +59 -0
  28. package/dist/components/SCalendarBoard/calendarBoard.config.d.ts +38 -0
  29. package/dist/components/SCalendarBoard/index.d.ts +3 -0
  30. package/dist/components/SCalendarBoard/types.d.ts +40 -0
  31. package/dist/components/SCallout/README.md +17 -1
  32. package/dist/components/SCallout/SCallout.d.ts +14 -4
  33. package/dist/components/SCard/README.md +17 -0
  34. package/dist/components/SCard/SCard.d.ts +26 -2
  35. package/dist/components/SChatAttachedFile/README.md +33 -0
  36. package/dist/components/SChatAttachedFile/SChatAttachedFile.d.ts +13 -0
  37. package/dist/components/SChatAttachedFile/chatAttachedFile.config.d.ts +23 -0
  38. package/dist/components/SChatAttachedFile/index.d.ts +2 -0
  39. package/dist/components/SChatFile/README.md +33 -0
  40. package/dist/components/SChatFile/SChatFile.d.ts +37 -0
  41. package/dist/components/SChatFile/chatFile.config.d.ts +56 -0
  42. package/dist/components/SChatFile/index.d.ts +2 -0
  43. package/dist/components/SChatInput/README.md +44 -0
  44. package/dist/components/SChatInput/SChatInput.d.ts +60 -0
  45. package/dist/components/SChatInput/index.d.ts +1 -0
  46. package/dist/components/SChatMessage/README.md +86 -0
  47. package/dist/components/SChatMessage/SChatMessage.d.ts +123 -0
  48. package/dist/components/SChatMessage/index.d.ts +1 -0
  49. package/dist/components/SChatSystemMessage/README.md +12 -0
  50. package/dist/components/SChatSystemMessage/SChatSystemMessage.d.ts +18 -0
  51. package/dist/components/SChatSystemMessage/index.d.ts +1 -0
  52. package/dist/components/SCheckbox/README.md +8 -0
  53. package/dist/components/SChip/README.md +25 -0
  54. package/dist/components/SChip/SChip.d.ts +8 -0
  55. package/dist/components/SChip/index.d.ts +1 -1
  56. package/dist/components/SChipFilter/README.md +369 -14
  57. package/dist/components/SChipFilter/SChipFilter.d.ts +169 -60
  58. package/dist/components/SChipFilter/index.d.ts +1 -1
  59. package/dist/components/SChipInput/README.md +17 -2
  60. package/dist/components/SChipInput/SChipInput.d.ts +16 -3
  61. package/dist/components/SChipInput/index.d.ts +1 -1
  62. package/dist/components/SCircleProgress/README.md +8 -0
  63. package/dist/components/SConfirmModal/README.md +13 -4
  64. package/dist/components/SConfirmModal/SConfirmModal.d.ts +46 -9
  65. package/dist/components/SContextAlert/README.md +52 -0
  66. package/dist/components/SContextAlert/SContextAlert.d.ts +51 -0
  67. package/dist/components/SContextAlert/contextAlert.config.d.ts +22 -0
  68. package/dist/components/SContextAlert/index.d.ts +2 -0
  69. package/dist/components/SDatePicker/README.md +21 -2
  70. package/dist/components/SDatePicker/SDatePicker.d.ts +35 -5
  71. package/dist/components/SDateRangePicker/README.md +21 -4
  72. package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +37 -7
  73. package/dist/components/SDivider/README.md +7 -0
  74. package/dist/components/SDivider/SDivider.d.ts +11 -0
  75. package/dist/components/SDonutChart/README.md +105 -0
  76. package/dist/components/SDonutChart/SDonutChart.d.ts +82 -0
  77. package/dist/components/SDonutChart/index.d.ts +1 -0
  78. package/dist/components/SDraggableItem/README.md +37 -0
  79. package/dist/components/SDraggableItem/SDraggableItem.d.ts +2 -0
  80. package/dist/components/SDraggableItem/index.d.ts +1 -1
  81. package/dist/components/SDraggableList/README.md +33 -3
  82. package/dist/components/SDraggableList/SDraggableList.d.ts +18 -3
  83. package/dist/components/SDraggableList/index.d.ts +1 -1
  84. package/dist/components/SDrawer/README.md +8 -0
  85. package/dist/components/SDropdownButton/README.md +19 -0
  86. package/dist/components/SEditor/EditorBody.d.ts +36 -0
  87. package/dist/components/SEditor/EditorToolbar.d.ts +93 -0
  88. package/dist/components/SEditor/README.md +204 -0
  89. package/dist/components/SEditor/SEditor.d.ts +121 -0
  90. package/dist/components/SEditor/editor-icons.d.ts +63 -0
  91. package/dist/components/SEditor/editor.config.d.ts +119 -0
  92. package/dist/components/SEditor/index.d.ts +8 -0
  93. package/dist/components/SEditor/tiptap-api.d.ts +29 -0
  94. package/dist/components/SEditor/use-is-mobile.d.ts +14 -0
  95. package/dist/components/SExpansionItem/README.md +36 -0
  96. package/dist/components/SExpansionItem/index.d.ts +1 -1
  97. package/dist/components/SField/README.md +36 -5
  98. package/dist/components/SField/SField.d.ts +33 -8
  99. package/dist/components/SField/index.d.ts +1 -1
  100. package/dist/components/SFilePicker/README.md +19 -4
  101. package/dist/components/SFilePicker/SFilePicker.d.ts +19 -6
  102. package/dist/components/SFooter/README.md +44 -0
  103. package/dist/components/SFooter/SFooter.d.ts +29 -13
  104. package/dist/components/SFooter/index.d.ts +1 -1
  105. package/dist/components/SForm/README.md +12 -1
  106. package/dist/components/SForm/SForm.d.ts +2 -2
  107. package/dist/components/SGhostButton/README.md +28 -4
  108. package/dist/components/SGhostButton/SGhostButton.d.ts +4 -1
  109. package/dist/components/SGnb/README.md +97 -7
  110. package/dist/components/SGnb/SGnb.d.ts +94 -10
  111. package/dist/components/SGnb/gnb.config.d.ts +18 -5
  112. package/dist/components/SGnb/index.d.ts +1 -1
  113. package/dist/components/SGnbSystem/README.md +186 -0
  114. package/dist/components/SGnbSystem/SGnbSystem.d.ts +179 -0
  115. package/dist/components/SGnbSystem/gnbSystem.config.d.ts +122 -0
  116. package/dist/components/SGnbSystem/index.d.ts +2 -0
  117. package/dist/components/SGuide/README.md +16 -1
  118. package/dist/components/SGuide/SGuide.d.ts +5 -2
  119. package/dist/components/SIcon/README.md +20 -0
  120. package/dist/components/SIcon/SIcon.d.ts +1 -1
  121. package/dist/components/SIcon/icons.gen.d.ts +20 -1
  122. package/dist/components/SImage/README.md +23 -1
  123. package/dist/components/SImage/SImage.d.ts +11 -8
  124. package/dist/components/SInput/README.md +7 -4
  125. package/dist/components/SInput/SInput.d.ts +13 -5
  126. package/dist/components/SKeyValueTable/README.md +88 -0
  127. package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +30 -3
  128. package/dist/components/SKeyValueTable/index.d.ts +1 -1
  129. package/dist/components/SLauncherListBox/README.md +81 -0
  130. package/dist/components/SLauncherListBox/SLauncherListBox.d.ts +67 -0
  131. package/dist/components/SLauncherListBox/index.d.ts +2 -0
  132. package/dist/components/SLauncherListBox/launcherListBox.config.d.ts +118 -0
  133. package/dist/components/SLayout/README.md +22 -1
  134. package/dist/components/SLayout/SLayout.d.ts +6 -2
  135. package/dist/components/SLayout/index.d.ts +1 -1
  136. package/dist/components/SLineChart/README.md +131 -0
  137. package/dist/components/SLineChart/SLineChart.d.ts +110 -0
  138. package/dist/components/SLineChart/index.d.ts +1 -0
  139. package/dist/components/SLineChart/lineChart.config.d.ts +95 -0
  140. package/dist/components/SLinearProgress/README.md +15 -0
  141. package/dist/components/SLinearProgress/SLinearProgress.d.ts +3 -0
  142. package/dist/components/SLinearProgress/index.d.ts +1 -1
  143. package/dist/components/SList/README.md +15 -2
  144. package/dist/components/SList/SList.d.ts +7 -3
  145. package/dist/components/SList/index.d.ts +1 -1
  146. package/dist/components/SListItem/README.md +41 -0
  147. package/dist/components/SListItem/index.d.ts +1 -1
  148. package/dist/components/SLoadingContainer/index.d.ts +1 -1
  149. package/dist/components/SLoadingContainer/loading.d.ts +41 -6
  150. package/dist/components/SLoadingModal/README.md +10 -2
  151. package/dist/components/SLoadingModal/SLoadingModal.d.ts +4 -4
  152. package/dist/components/SLoadingModal/index.d.ts +1 -1
  153. package/dist/components/SLoginCard/README.md +37 -0
  154. package/dist/components/SLoginCard/SLoginCard.d.ts +39 -0
  155. package/dist/components/SLoginCard/index.d.ts +1 -0
  156. package/dist/components/SLogo/README.md +54 -0
  157. package/dist/components/SLogo/SLogo.d.ts +47 -0
  158. package/dist/components/SLogo/index.d.ts +2 -0
  159. package/dist/components/SLogo/logo.config.d.ts +14 -0
  160. package/dist/components/SLogo/sellmate-wordmark.d.ts +20 -0
  161. package/dist/components/SMeatballButton/README.md +67 -0
  162. package/dist/components/SMeatballButton/SMeatballButton.d.ts +36 -0
  163. package/dist/components/SMeatballButton/index.d.ts +1 -0
  164. package/dist/components/SModal/README.md +15 -5
  165. package/dist/components/SModal/SModal.d.ts +1 -1
  166. package/dist/components/SNumberInput/README.md +18 -8
  167. package/dist/components/SNumberInput/SNumberInput.d.ts +42 -7
  168. package/dist/components/SPage/README.md +105 -5
  169. package/dist/components/SPage/SPage.d.ts +34 -10
  170. package/dist/components/SPage/SPageHeader.d.ts +31 -13
  171. package/dist/components/SPage/index.d.ts +2 -2
  172. package/dist/components/SPage/page-column.d.ts +34 -0
  173. package/dist/components/SPage/page-width.d.ts +23 -0
  174. package/dist/components/SPage/page.config.d.ts +26 -0
  175. package/dist/components/SPieChart/README.md +93 -0
  176. package/dist/components/SPieChart/SPieChart.d.ts +73 -0
  177. package/dist/components/SPieChart/index.d.ts +1 -0
  178. package/dist/components/SPopover/README.md +15 -0
  179. package/dist/components/SPopup/README.md +26 -2
  180. package/dist/components/SPopup/SPopup.d.ts +13 -10
  181. package/dist/components/SPopup/index.d.ts +1 -1
  182. package/dist/components/SPortal/README.md +20 -0
  183. package/dist/components/SRadio/README.md +20 -0
  184. package/dist/components/SRadioButton/README.md +18 -0
  185. package/dist/components/SRadioButton/SRadioButton.d.ts +1 -1
  186. package/dist/components/SRadioCard/README.md +78 -0
  187. package/dist/components/SRadioCard/SRadioCard.d.ts +29 -0
  188. package/dist/components/SRadioCard/SRadioCardGroup.d.ts +36 -0
  189. package/dist/components/SRadioCard/index.d.ts +2 -0
  190. package/dist/components/SScrollArea/README.md +28 -0
  191. package/dist/components/SScrollArea/SScrollArea.d.ts +17 -0
  192. package/dist/components/SSearchInput/README.md +63 -0
  193. package/dist/components/SSearchInput/SSearchInput.d.ts +52 -0
  194. package/dist/components/SSearchInput/index.d.ts +1 -0
  195. package/dist/components/SSectionHeaderCard/README.md +38 -0
  196. package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +19 -0
  197. package/dist/components/SSelect/README.md +38 -11
  198. package/dist/components/SSelect/SSelect.d.ts +80 -9
  199. package/dist/components/SSelect/select.config.d.ts +15 -0
  200. package/dist/components/SSplitter/README.md +17 -2
  201. package/dist/components/SSplitter/SSplitter.d.ts +7 -3
  202. package/dist/components/SStepper/README.md +26 -0
  203. package/dist/components/SSwitch/README.md +13 -1
  204. package/dist/components/SSwitch/SSwitch.d.ts +1 -3
  205. package/dist/components/SSystemActionButton/README.md +246 -0
  206. package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +167 -0
  207. package/dist/components/SSystemActionButton/index.d.ts +2 -0
  208. package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +93 -0
  209. package/dist/components/STable/README.md +116 -11
  210. package/dist/components/STable/STable.d.ts +243 -23
  211. package/dist/components/STable/index.d.ts +1 -1
  212. package/dist/components/STableBar/README.md +1 -0
  213. package/dist/components/STableBar/STableBar.d.ts +8 -1
  214. package/dist/components/STabs/README.md +13 -2
  215. package/dist/components/STabs/STabs.d.ts +3 -5
  216. package/dist/components/STabs/index.d.ts +1 -1
  217. package/dist/components/STabs/tabs.config.d.ts +3 -4
  218. package/dist/components/STag/README.md +55 -0
  219. package/dist/components/STag/STag.d.ts +3 -1
  220. package/dist/components/STag/tag.config.d.ts +1 -1
  221. package/dist/components/STextLink/README.md +19 -1
  222. package/dist/components/STextLink/STextLink.d.ts +5 -1
  223. package/dist/components/STextarea/README.md +11 -5
  224. package/dist/components/STextarea/STextarea.d.ts +42 -6
  225. package/dist/components/STimePicker/README.md +18 -2
  226. package/dist/components/STimePicker/STimePicker.d.ts +29 -6
  227. package/dist/components/STimePicker/timepicker.config.d.ts +4 -2
  228. package/dist/components/STimeRangePicker/README.md +30 -2
  229. package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +28 -6
  230. package/dist/components/SToast/README.md +25 -1
  231. package/dist/components/SToast/SToast.d.ts +2 -2
  232. package/dist/components/SToggle/README.md +8 -0
  233. package/dist/components/SToggle/index.d.ts +1 -1
  234. package/dist/components/STooltip/README.md +25 -1
  235. package/dist/components/STooltip/STooltip.d.ts +1 -1
  236. package/dist/components/STree/README.md +42 -4
  237. package/dist/components/STree/STree.d.ts +18 -6
  238. package/dist/components/STree/STree.examples.d.ts +2 -0
  239. package/dist/docs/Gallery.d.ts +9 -0
  240. package/dist/docs/RecipeGallery.d.ts +13 -0
  241. package/dist/docs/gallery-previews.d.ts +24 -0
  242. package/dist/fonts/LICENSE.txt +94 -0
  243. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.0.woff2 +0 -0
  244. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.1.woff2 +0 -0
  245. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.10.woff2 +0 -0
  246. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.11.woff2 +0 -0
  247. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.12.woff2 +0 -0
  248. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.13.woff2 +0 -0
  249. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.14.woff2 +0 -0
  250. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.15.woff2 +0 -0
  251. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.16.woff2 +0 -0
  252. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.17.woff2 +0 -0
  253. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.18.woff2 +0 -0
  254. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.19.woff2 +0 -0
  255. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.2.woff2 +0 -0
  256. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.20.woff2 +0 -0
  257. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.21.woff2 +0 -0
  258. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.22.woff2 +0 -0
  259. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.23.woff2 +0 -0
  260. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.24.woff2 +0 -0
  261. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.25.woff2 +0 -0
  262. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.26.woff2 +0 -0
  263. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.27.woff2 +0 -0
  264. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.28.woff2 +0 -0
  265. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.29.woff2 +0 -0
  266. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.3.woff2 +0 -0
  267. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.30.woff2 +0 -0
  268. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.31.woff2 +0 -0
  269. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.32.woff2 +0 -0
  270. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.33.woff2 +0 -0
  271. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.34.woff2 +0 -0
  272. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.35.woff2 +0 -0
  273. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.36.woff2 +0 -0
  274. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.37.woff2 +0 -0
  275. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.38.woff2 +0 -0
  276. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.39.woff2 +0 -0
  277. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.4.woff2 +0 -0
  278. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.40.woff2 +0 -0
  279. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.41.woff2 +0 -0
  280. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.42.woff2 +0 -0
  281. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.43.woff2 +0 -0
  282. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.44.woff2 +0 -0
  283. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.45.woff2 +0 -0
  284. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.46.woff2 +0 -0
  285. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.47.woff2 +0 -0
  286. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.48.woff2 +0 -0
  287. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.49.woff2 +0 -0
  288. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.5.woff2 +0 -0
  289. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.50.woff2 +0 -0
  290. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.51.woff2 +0 -0
  291. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.52.woff2 +0 -0
  292. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.53.woff2 +0 -0
  293. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.54.woff2 +0 -0
  294. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.55.woff2 +0 -0
  295. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.56.woff2 +0 -0
  296. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.57.woff2 +0 -0
  297. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.58.woff2 +0 -0
  298. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.59.woff2 +0 -0
  299. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.6.woff2 +0 -0
  300. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.60.woff2 +0 -0
  301. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.61.woff2 +0 -0
  302. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.62.woff2 +0 -0
  303. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.63.woff2 +0 -0
  304. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.64.woff2 +0 -0
  305. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.65.woff2 +0 -0
  306. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.66.woff2 +0 -0
  307. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.67.woff2 +0 -0
  308. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.68.woff2 +0 -0
  309. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.69.woff2 +0 -0
  310. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.7.woff2 +0 -0
  311. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.70.woff2 +0 -0
  312. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.71.woff2 +0 -0
  313. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.72.woff2 +0 -0
  314. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.73.woff2 +0 -0
  315. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.74.woff2 +0 -0
  316. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.75.woff2 +0 -0
  317. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.76.woff2 +0 -0
  318. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.77.woff2 +0 -0
  319. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.78.woff2 +0 -0
  320. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.79.woff2 +0 -0
  321. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.8.woff2 +0 -0
  322. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.80.woff2 +0 -0
  323. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.81.woff2 +0 -0
  324. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.82.woff2 +0 -0
  325. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.83.woff2 +0 -0
  326. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.84.woff2 +0 -0
  327. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.85.woff2 +0 -0
  328. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.86.woff2 +0 -0
  329. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.87.woff2 +0 -0
  330. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.88.woff2 +0 -0
  331. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.89.woff2 +0 -0
  332. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.9.woff2 +0 -0
  333. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.90.woff2 +0 -0
  334. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.91.woff2 +0 -0
  335. package/dist/index.cjs +20593 -10374
  336. package/dist/index.cjs.map +1 -1
  337. package/dist/index.d.ts +22 -0
  338. package/dist/index.js +20517 -10374
  339. package/dist/index.js.map +1 -1
  340. package/dist/lib/chart/cartesian.d.ts +56 -0
  341. package/dist/lib/chart/frame.d.ts +21 -0
  342. package/dist/lib/chart/hover-dim.d.ts +19 -0
  343. package/dist/lib/chart/legend.d.ts +21 -0
  344. package/dist/lib/chart/palette.d.ts +28 -0
  345. package/dist/lib/chart/radial.d.ts +99 -0
  346. package/dist/lib/chart/scale.d.ts +26 -0
  347. package/dist/lib/chart/tooltip.d.ts +60 -0
  348. package/dist/lib/chart/types.d.ts +29 -0
  349. package/dist/lib/chart/use-element-size.d.ts +39 -0
  350. package/dist/lib/date.d.ts +2 -1
  351. package/dist/lib/depth-filter.d.ts +27 -0
  352. package/dist/lib/doc-sections.d.ts +35 -0
  353. package/dist/lib/dropdown-menu.d.ts +19 -0
  354. package/dist/lib/field-width.d.ts +31 -0
  355. package/dist/lib/floating-height.d.ts +15 -0
  356. package/dist/lib/global-overlay.d.ts +5 -0
  357. package/dist/lib/hover-preview.d.ts +32 -0
  358. package/dist/lib/inert.d.ts +11 -0
  359. package/dist/lib/overlay-scrollbar.d.ts +32 -0
  360. package/dist/lib/row-metrics.d.ts +61 -0
  361. package/dist/lib/story-docs.d.ts +19 -3
  362. package/dist/llms-full.txt +5904 -550
  363. package/dist/llms.txt +1918 -267
  364. package/dist/playground/categories.d.ts +19 -0
  365. package/dist/pretendard.css +937 -0
  366. package/dist/recipes/AppShell.d.ts +21 -0
  367. package/dist/recipes/ExcelFilePopupPage.d.ts +5 -0
  368. package/dist/recipes/LoginPage.d.ts +6 -0
  369. package/dist/recipes/ProductCreatePage.d.ts +1 -0
  370. package/dist/recipes/ProductCreateSectionsPage.d.ts +5 -0
  371. package/dist/recipes/ProductDetailInlineEditPage.d.ts +9 -0
  372. package/dist/recipes/ProductDetailPage.d.ts +1 -0
  373. package/dist/recipes/ProductListChipFilterPage.d.ts +1 -0
  374. package/dist/recipes/ProductListPage.d.ts +1 -0
  375. package/dist/recipes/TransferOrderPopupPage.d.ts +2 -0
  376. package/dist/recipes/api.d.ts +91 -0
  377. package/dist/recipes/recipe-story.d.ts +33 -0
  378. package/dist/recipes/router.d.ts +9 -0
  379. package/dist/styles.css +3331 -258
  380. package/dist/theme.css +589 -33
  381. package/eslint/index.mjs +9 -0
  382. package/eslint/lib/table-column.mjs +26 -0
  383. package/eslint/rules/divider-vertical-height.mjs +137 -0
  384. package/eslint/rules/field-width-grade.mjs +27 -10
  385. package/eslint/rules/prefer-typo-preset.mjs +1 -1
  386. package/eslint/rules/table-column-width.mjs +110 -0
  387. package/eslint/scale.gen.mjs +6 -3
  388. package/package.json +17 -3
@@ -3,9 +3,15 @@ export type IconRenderProps = {
3
3
  size?: number | string;
4
4
  } & SVGProps<SVGSVGElement>;
5
5
  export declare const ICONS: {
6
+ readonly account: (p: IconRenderProps) => import("react").JSX.Element;
6
7
  readonly add: (p: IconRenderProps) => import("react").JSX.Element;
7
8
  readonly alert: (p: IconRenderProps) => import("react").JSX.Element;
9
+ readonly alignCenter: (p: IconRenderProps) => import("react").JSX.Element;
8
10
  readonly alignKorean: (p: IconRenderProps) => import("react").JSX.Element;
11
+ readonly alignLeft: (p: IconRenderProps) => import("react").JSX.Element;
12
+ readonly alignMiddle: (p: IconRenderProps) => import("react").JSX.Element;
13
+ readonly alignRight: (p: IconRenderProps) => import("react").JSX.Element;
14
+ readonly alignTop: (p: IconRenderProps) => import("react").JSX.Element;
9
15
  readonly archive: (p: IconRenderProps) => import("react").JSX.Element;
10
16
  readonly arrowDown: (p: IconRenderProps) => import("react").JSX.Element;
11
17
  readonly arrowLeft: (p: IconRenderProps) => import("react").JSX.Element;
@@ -13,8 +19,10 @@ export declare const ICONS: {
13
19
  readonly arrowUp: (p: IconRenderProps) => import("react").JSX.Element;
14
20
  readonly asterisk: (p: IconRenderProps) => import("react").JSX.Element;
15
21
  readonly attachFile: (p: IconRenderProps) => import("react").JSX.Element;
22
+ readonly back: (p: IconRenderProps) => import("react").JSX.Element;
16
23
  readonly barcode: (p: IconRenderProps) => import("react").JSX.Element;
17
24
  readonly bell: (p: IconRenderProps) => import("react").JSX.Element;
25
+ readonly bellRinging: (p: IconRenderProps) => import("react").JSX.Element;
18
26
  readonly bill: (p: IconRenderProps) => import("react").JSX.Element;
19
27
  readonly board: (p: IconRenderProps) => import("react").JSX.Element;
20
28
  readonly box: (p: IconRenderProps) => import("react").JSX.Element;
@@ -25,6 +33,7 @@ export declare const ICONS: {
25
33
  readonly caretLeft: (p: IconRenderProps) => import("react").JSX.Element;
26
34
  readonly caretRight: (p: IconRenderProps) => import("react").JSX.Element;
27
35
  readonly caretUp: (p: IconRenderProps) => import("react").JSX.Element;
36
+ readonly chat: (p: IconRenderProps) => import("react").JSX.Element;
28
37
  readonly check: (p: IconRenderProps) => import("react").JSX.Element;
29
38
  readonly checkFill: (p: IconRenderProps) => import("react").JSX.Element;
30
39
  readonly checkOutline: (p: IconRenderProps) => import("react").JSX.Element;
@@ -39,28 +48,36 @@ export declare const ICONS: {
39
48
  readonly clockFill: (p: IconRenderProps) => import("react").JSX.Element;
40
49
  readonly clockOutline: (p: IconRenderProps) => import("react").JSX.Element;
41
50
  readonly close: (p: IconRenderProps) => import("react").JSX.Element;
51
+ readonly company: (p: IconRenderProps) => import("react").JSX.Element;
52
+ readonly connect: (p: IconRenderProps) => import("react").JSX.Element;
42
53
  readonly copy: (p: IconRenderProps) => import("react").JSX.Element;
54
+ readonly counsel: (p: IconRenderProps) => import("react").JSX.Element;
43
55
  readonly coupon: (p: IconRenderProps) => import("react").JSX.Element;
44
56
  readonly dashboard: (p: IconRenderProps) => import("react").JSX.Element;
45
57
  readonly date: (p: IconRenderProps) => import("react").JSX.Element;
46
- readonly delete: (p: IconRenderProps) => import("react").JSX.Element;
47
58
  readonly dot: (p: IconRenderProps) => import("react").JSX.Element;
48
59
  readonly download: (p: IconRenderProps) => import("react").JSX.Element;
49
60
  readonly drag: (p: IconRenderProps) => import("react").JSX.Element;
50
61
  readonly edit: (p: IconRenderProps) => import("react").JSX.Element;
51
62
  readonly etc: (p: IconRenderProps) => import("react").JSX.Element;
52
63
  readonly event: (p: IconRenderProps) => import("react").JSX.Element;
64
+ readonly focus: (p: IconRenderProps) => import("react").JSX.Element;
53
65
  readonly global: (p: IconRenderProps) => import("react").JSX.Element;
54
66
  readonly helpFill: (p: IconRenderProps) => import("react").JSX.Element;
55
67
  readonly helpOutline: (p: IconRenderProps) => import("react").JSX.Element;
56
68
  readonly history: (p: IconRenderProps) => import("react").JSX.Element;
69
+ readonly home: (p: IconRenderProps) => import("react").JSX.Element;
57
70
  readonly image: (p: IconRenderProps) => import("react").JSX.Element;
58
71
  readonly inline: (p: IconRenderProps) => import("react").JSX.Element;
59
72
  readonly launcher: (p: IconRenderProps) => import("react").JSX.Element;
60
73
  readonly leftRight: (p: IconRenderProps) => import("react").JSX.Element;
61
74
  readonly line: (p: IconRenderProps) => import("react").JSX.Element;
75
+ readonly link: (p: IconRenderProps) => import("react").JSX.Element;
62
76
  readonly location: (p: IconRenderProps) => import("react").JSX.Element;
63
77
  readonly logout: (p: IconRenderProps) => import("react").JSX.Element;
78
+ readonly megaphone: (p: IconRenderProps) => import("react").JSX.Element;
79
+ readonly messageClose: (p: IconRenderProps) => import("react").JSX.Element;
80
+ readonly messageOpen: (p: IconRenderProps) => import("react").JSX.Element;
64
81
  readonly minus: (p: IconRenderProps) => import("react").JSX.Element;
65
82
  readonly monitor: (p: IconRenderProps) => import("react").JSX.Element;
66
83
  readonly new: (p: IconRenderProps) => import("react").JSX.Element;
@@ -76,6 +93,7 @@ export declare const ICONS: {
76
93
  readonly reset: (p: IconRenderProps) => import("react").JSX.Element;
77
94
  readonly robot: (p: IconRenderProps) => import("react").JSX.Element;
78
95
  readonly row: (p: IconRenderProps) => import("react").JSX.Element;
96
+ readonly rowDense: (p: IconRenderProps) => import("react").JSX.Element;
79
97
  readonly save: (p: IconRenderProps) => import("react").JSX.Element;
80
98
  readonly search: (p: IconRenderProps) => import("react").JSX.Element;
81
99
  readonly send: (p: IconRenderProps) => import("react").JSX.Element;
@@ -84,6 +102,7 @@ export declare const ICONS: {
84
102
  readonly shield: (p: IconRenderProps) => import("react").JSX.Element;
85
103
  readonly sidebar: (p: IconRenderProps) => import("react").JSX.Element;
86
104
  readonly star: (p: IconRenderProps) => import("react").JSX.Element;
105
+ readonly stop: (p: IconRenderProps) => import("react").JSX.Element;
87
106
  readonly store: (p: IconRenderProps) => import("react").JSX.Element;
88
107
  readonly synchronize: (p: IconRenderProps) => import("react").JSX.Element;
89
108
  readonly thumbsDown: (p: IconRenderProps) => import("react").JSX.Element;
@@ -15,10 +15,13 @@
15
15
  | `position?` | `string` | `'50% 50%'` | ์ด๋ฏธ์ง€ ์ •๋ ฌ ์œ„์น˜ (object-position) |
16
16
  | `loading?` | `'lazy' \| 'eager'` | `'lazy'` | ๋ธŒ๋ผ์šฐ์ € ๋กœ๋”ฉ ๋ฐฉ์‹ |
17
17
  | `loadingShowDelay?` | `number` | `0` | ์Šคํ”ผ๋„ˆ๋ฅผ ๋„์šฐ๊ธฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„(ms). ์ด ์‹œ๊ฐ„ ์•ˆ์— ๋กœ๋“œ๋˜๋ฉด ์Šคํ”ผ๋„ˆ๋ฅผ ์•„์˜ˆ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค โ€” ์บ์‹œ๋œ ์ด๋ฏธ์ง€์—์„œ ์Šคํ”ผ๋„ˆ๊ฐ€ ํ•œ ํ”„๋ ˆ์ž„ ๋ฒˆ์ฉ์ด๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค. |
18
- | `noSpinner?` | `boolean` | `false` | ๋กœ๋”ฉ ์ค‘์—๋„ ์Šคํ”ผ๋„ˆ๋ฅผ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค |
18
+ | `showSpinner?` | `boolean` | `true` | ๋กœ๋”ฉ ์ค‘ ์Šคํ”ผ๋„ˆ๋ฅผ ๊ทธ๋ฆด์ง€. ๋„๋ฉด `loadingSlot` ๋„ ์—†์„ ๋•Œ ๋กœ๋”ฉ ํ‘œ์‹œ๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ๋‚จ์ง€ ์•Š๋Š”๋‹ค. |
19
19
  | `loadingSlot?` | `ReactNode` | โ€” | ๋กœ๋”ฉ ์ค‘ ํ‘œ์‹œ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•œ๋‹ค (๊ธฐ๋ณธ: ์Šคํ”ผ๋„ˆ) |
20
20
  | `errorSlot?` | `ReactNode` | โ€” | ์‹คํŒจยท๋นˆ ์ƒํƒœ ํ‘œ์‹œ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•œ๋‹ค (๊ธฐ๋ณธ: ๋นˆ ์ด๋ฏธ์ง€ ์•„์ด์ฝ˜) |
21
21
  | `imgProps?` | `ImgHTMLAttributes<HTMLImageElement>` | โ€” | ์•ˆ์ชฝ `<img>` ๋กœ ๋„˜๊ธธ ๋„ค์ดํ‹ฐ๋ธŒ ์†์„ฑ (srcSet ยท sizes ยท crossOrigin ยท draggable ๋“ฑ) |
22
+ | `previewOnHover?` | `boolean` | `false` | ํ˜ธ๋ฒ„ํ•˜๋ฉด ํฐ ์ด๋ฏธ์ง€๋ฅผ ํฌํ„ธ๋กœ ๋„์šด๋‹ค. ์ธ๋„ค์ผ์ด ์ž‘์•„ ๋‚ด์šฉ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋Š” ์ž๋ฆฌ์— ์“ด๋‹ค |
23
+ | `previewSrc?` | `string` | โ€” | ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ๋„์šธ ๊ฒฝ๋กœ. ์›๋ณธ URL ์ด ์ธ๋„ค์ผ๊ณผ ๋‹ค๋ฅผ ๋•Œ ์ค€๋‹ค (๊ธฐ๋ณธ: `src` ์™€ ๊ฐ™์€ ๊ฒฝ๋กœ) |
24
+ | `previewSize?` | `number` | `PREVIEW_MAX_SIZE` | ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ƒ์ž์˜ ํ•œ ๋ณ€(px). ์ƒ์ž๋Š” ์ •์‚ฌ๊ฐํ˜•์ด๊ณ  ์ด๋ฏธ์ง€๋Š” `contain` ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค. **200px ์ด ์ƒํ•œ์ด๋ผ ๋” ํฐ ๊ฐ’์„ ์ค˜๋„ 200 ์œผ๋กœ ์ž˜๋ฆฐ๋‹ค** โ€” ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ํ™”๋ฉด์„ ๋ฎ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ทœ๊ฒฉ์ด๋‹ค. |
22
25
 
23
26
  #### Events
24
27
 
@@ -27,8 +30,26 @@
27
30
  | `onLoad` | `(src: string) => void` | ๋กœ๋“œ ์™„๋ฃŒ. ๋กœ๋“œ๋œ src ๋ฅผ ๋„˜๊ธด๋‹ค |
28
31
  | `onError` | `(event: SyntheticEvent<HTMLImageElement>) => void` | ๋กœ๋“œ ์‹คํŒจ |
29
32
 
33
+ ## Types
34
+
35
+ ### SImageFit
36
+
37
+ ```ts
38
+ export type SImageFit = (typeof IMAGE_FITS)[number];
39
+ ```
40
+
41
+ ### IMAGE_FITS
42
+
43
+ ```ts
44
+ export const IMAGE_FITS = ['cover', 'contain', 'fill', 'none', 'scale-down'] as const;
45
+ ```
46
+
30
47
  ## Dependencies
31
48
 
49
+ ### Used by
50
+
51
+ - [SChatMessage](../SChatMessage)
52
+
32
53
  ### Depends on
33
54
 
34
55
  - [SCircleProgress](../SCircleProgress)
@@ -40,5 +61,6 @@
40
61
  graph TD;
41
62
  SImage --> SCircleProgress
42
63
  SImage --> SIcon
64
+ SChatMessage --> SImage
43
65
  style SImage fill:#f9f,stroke:#333,stroke-width:4px
44
66
  ```
@@ -19,23 +19,26 @@ export interface SImageProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onLoa
19
19
  * ์บ์‹œ๋œ ์ด๋ฏธ์ง€์—์„œ ์Šคํ”ผ๋„ˆ๊ฐ€ ํ•œ ํ”„๋ ˆ์ž„ ๋ฒˆ์ฉ์ด๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค.
20
20
  */
21
21
  loadingShowDelay?: number;
22
- /** ๋กœ๋”ฉ ์ค‘์—๋„ ์Šคํ”ผ๋„ˆ๋ฅผ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค */
23
- noSpinner?: boolean;
22
+ /** ๋กœ๋”ฉ ์ค‘ ์Šคํ”ผ๋„ˆ๋ฅผ ๊ทธ๋ฆด์ง€. ๋„๋ฉด `loadingSlot` ๋„ ์—†์„ ๋•Œ ๋กœ๋”ฉ ํ‘œ์‹œ๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ๋‚จ์ง€ ์•Š๋Š”๋‹ค. */
23
+ showSpinner?: boolean;
24
24
  /** ๋กœ๋”ฉ ์ค‘ ํ‘œ์‹œ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•œ๋‹ค (๊ธฐ๋ณธ: ์Šคํ”ผ๋„ˆ) */
25
25
  loadingSlot?: ReactNode;
26
26
  /** ์‹คํŒจยท๋นˆ ์ƒํƒœ ํ‘œ์‹œ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•œ๋‹ค (๊ธฐ๋ณธ: ๋นˆ ์ด๋ฏธ์ง€ ์•„์ด์ฝ˜) */
27
27
  errorSlot?: ReactNode;
28
28
  /** ์•ˆ์ชฝ `<img>` ๋กœ ๋„˜๊ธธ ๋„ค์ดํ‹ฐ๋ธŒ ์†์„ฑ (srcSet ยท sizes ยท crossOrigin ยท draggable ๋“ฑ) */
29
29
  imgProps?: ImgHTMLAttributes<HTMLImageElement>;
30
+ /** ํ˜ธ๋ฒ„ํ•˜๋ฉด ํฐ ์ด๋ฏธ์ง€๋ฅผ ํฌํ„ธ๋กœ ๋„์šด๋‹ค. ์ธ๋„ค์ผ์ด ์ž‘์•„ ๋‚ด์šฉ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋Š” ์ž๋ฆฌ์— ์“ด๋‹ค */
31
+ previewOnHover?: boolean;
32
+ /** ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ๋„์šธ ๊ฒฝ๋กœ. ์›๋ณธ URL ์ด ์ธ๋„ค์ผ๊ณผ ๋‹ค๋ฅผ ๋•Œ ์ค€๋‹ค (๊ธฐ๋ณธ: `src` ์™€ ๊ฐ™์€ ๊ฒฝ๋กœ) */
33
+ previewSrc?: string;
34
+ /**
35
+ * ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ƒ์ž์˜ ํ•œ ๋ณ€(px). ์ƒ์ž๋Š” ์ •์‚ฌ๊ฐํ˜•์ด๊ณ  ์ด๋ฏธ์ง€๋Š” `contain` ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.
36
+ * **200px ์ด ์ƒํ•œ์ด๋ผ ๋” ํฐ ๊ฐ’์„ ์ค˜๋„ 200 ์œผ๋กœ ์ž˜๋ฆฐ๋‹ค** โ€” ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ํ™”๋ฉด์„ ๋ฎ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ทœ๊ฒฉ์ด๋‹ค.
37
+ */
38
+ previewSize?: number;
30
39
  /** ๋กœ๋“œ ์™„๋ฃŒ. ๋กœ๋“œ๋œ src ๋ฅผ ๋„˜๊ธด๋‹ค */
31
40
  onLoad?: (src: string) => void;
32
41
  /** ๋กœ๋“œ ์‹คํŒจ */
33
42
  onError?: (event: SyntheticEvent<HTMLImageElement>) => void;
34
43
  }
35
- /**
36
- * SImage โ€” ์ด๋ฏธ์ง€ ๋กœ๋”ฉยท์‹คํŒจ ์ƒํƒœ๋ฅผ ์Šค์Šค๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ด๋ฏธ์ง€ ์ƒ์ž.
37
- *
38
- * ๋กœ๋”ฉ ์ค‘์—๋Š” ์Šคํ”ผ๋„ˆ, `src` ๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋กœ๋“œ์— ์‹คํŒจํ•˜๋ฉด ๋นˆ ์ด๋ฏธ์ง€ ์•„์ด์ฝ˜์„ ์ปจํ…Œ์ด๋„ˆ ๋†’์ด์—
39
- * ๋น„๋ก€ํ•œ ํฌ๊ธฐ๋กœ ๊ฐ€์šด๋ฐ์— ๊ทธ๋ฆฐ๋‹ค.
40
- */
41
44
  export declare const SImage: import("react").ForwardRefExoticComponent<SImageProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -18,11 +18,12 @@
18
18
  | `clearable?` | `boolean` | `false` | ์ง€์šฐ๊ธฐ ๋ฒ„ํŠผ |
19
19
  | `rules?` | `Rule[]` | โ€” | ์œ ํšจ์„ฑ ๊ทœ์น™ โ€” blur ์‹œ ์ž๋™ ๊ฒ€์ฆ |
20
20
  | `status?` | `SFieldStatus` | โ€” | ํ•„๋“œ ์ƒํƒœ ('default' | 'pass' | 'error') |
21
- | `focused?` | `boolean` | โ€” | ํฌ์ปค์Šค ์ƒํƒœ (์ œ์–ด/๋ฐ˜์˜) |
22
- | `hovered?` | `boolean` | โ€” | ํ˜ธ๋ฒ„ ์ƒํƒœ (์ œ์–ด/๋ฐ˜์˜) |
23
- | `inputClass?` | `string` | โ€” | ๋‚ด๋ถ€ input ์š”์†Œ className |
21
+ | `focused?` | `boolean` | โ€” | ํฌ์ปค์Šค ์ƒํƒœ๋ฅผ ๋ฐ–์—์„œ ์ง€์ •ํ•œ๋‹ค โ€” ๊ฐ•์กฐ ํ…Œ๋‘๋ฆฌยท๋ง์ด ์ฆ‰์‹œ ๊ฑธ๋ฆฐ๋‹ค (SField ๋กœ ๊ทธ๋Œ€๋กœ ๋„˜์–ด๊ฐ„๋‹ค) |
22
+ | `hovered?` | `boolean` | โ€” | ํ˜ธ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ฐ–์—์„œ ์ง€์ •ํ•œ๋‹ค โ€” ๊ฐ•์กฐ๋Š” `focused` ์™€ ๊ฐ™๋‹ค (SField ๋กœ ๊ทธ๋Œ€๋กœ ๋„˜์–ด๊ฐ„๋‹ค) |
23
+ | `inputClassName?` | `string` | โ€” | ๋‚ด๋ถ€ input ์š”์†Œ className |
24
24
  | `inputStyle?` | `CSSProperties` | โ€” | ๋‚ด๋ถ€ input ์š”์†Œ style |
25
25
  | `label?` | `string` | โ€” | |
26
+ | `labelPosition?` | `SFieldLabelPosition` | โ€” | ๋ ˆ์ด๋ธ” ์œ„์น˜ โ€” `top` ์ด๋ฉด ๋ผ๋ฒจ์ด ์ปจํŠธ๋กค ์œ„์— ์„ ๋‹ค (SField ๋กœ ๊ทธ๋Œ€๋กœ ๋„˜์–ด๊ฐ„๋‹ค) |
26
27
  | `labelWidth?` | `number \| string` | โ€” | |
27
28
  | `labelTooltip?` | `string` | โ€” | ๋ ˆ์ด๋ธ” ํˆดํŒ ํ…์ŠคํŠธ |
28
29
  | `labelTooltipProps?` | `Partial<STooltipProps>` | โ€” | ๋ ˆ์ด๋ธ” ํˆดํŒ ์ƒ์„ธ ์˜ต์…˜ |
@@ -31,7 +32,7 @@
31
32
  | `errorMessage?` | `string` | โ€” | |
32
33
  | `addonLabel?` | `string` | โ€” | |
33
34
  | `addonAlign?` | `SFieldAddonAlign` | โ€” | ์–ด๋“œ์˜จ ์ •๋ ฌ |
34
- | `width?` | `number \| string` | โ€” | |
35
+ | `width?` | `SFieldWidth` | โ€” | ์ปจํŠธ๋กค ๋„ˆ๋น„ โ€” ํญ ๋“ฑ๊ธ‰(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) ยท ์ˆซ์ž=px ยท CSS ๊ธธ์ด. ๋“ฑ๊ธ‰์€ `--cmp-field-width-*` ํ† ํฐ์œผ๋กœ ํ’€๋ฆฌ๋ฉฐ `maxLength`(= ์Šคํ‚ค๋งˆ ์ƒํ•œ)๋กœ ๊ณ ๋ฅธ๋‹ค. ์ƒํ•œ์ด `xl` ์„ ๋„˜๊ฑฐ๋‚˜ ์ƒํ•œ์ด ์—†์œผ๋ฉด `"100%"`. (`sellmate/field-width-grade` ๊ฐ€ ๊ฒ€์‚ฌํ•œ๋‹ค) |
35
36
  | `disabled?` | `boolean` | `false` | |
36
37
  | `readOnly?` | `boolean` | `false` | |
37
38
  | `className?` | `string` | โ€” | |
@@ -48,6 +49,7 @@
48
49
 
49
50
  ### Used by
50
51
 
52
+ - [SEditor](../SEditor)
51
53
  - [SKeyValueTable](../SKeyValueTable)
52
54
 
53
55
  ### Depends on
@@ -61,6 +63,7 @@
61
63
  graph TD;
62
64
  SInput --> SField
63
65
  SInput --> SGhostButton
66
+ SEditor --> SInput
64
67
  SKeyValueTable --> SInput
65
68
  style SInput fill:#f9f,stroke:#333,stroke-width:4px
66
69
  ```
@@ -1,9 +1,10 @@
1
1
  import { type InputHTMLAttributes, type CSSProperties, type ReactNode } from 'react';
2
- import { type SFieldSize, type SFieldAddonAlign, type SFieldStatus } from '../SField';
2
+ import { type SFieldSize, type SFieldAddonAlign, type SFieldStatus, type SFieldLabelPosition } from '../SField';
3
3
  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 SInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'onChange' | 'type' | 'prefix' | 'suffix'> {
8
9
  /** ๊ฐ’ (์ œ์–ด) */
9
10
  value?: string | number;
@@ -29,15 +30,17 @@ export interface SInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
29
30
  rules?: Rule[];
30
31
  /** ํ•„๋“œ ์ƒํƒœ ('default' | 'pass' | 'error') */
31
32
  status?: SFieldStatus;
32
- /** ํฌ์ปค์Šค ์ƒํƒœ (์ œ์–ด/๋ฐ˜์˜) */
33
+ /** ํฌ์ปค์Šค ์ƒํƒœ๋ฅผ ๋ฐ–์—์„œ ์ง€์ •ํ•œ๋‹ค โ€” ๊ฐ•์กฐ ํ…Œ๋‘๋ฆฌยท๋ง์ด ์ฆ‰์‹œ ๊ฑธ๋ฆฐ๋‹ค (SField ๋กœ ๊ทธ๋Œ€๋กœ ๋„˜์–ด๊ฐ„๋‹ค) */
33
34
  focused?: boolean;
34
- /** ํ˜ธ๋ฒ„ ์ƒํƒœ (์ œ์–ด/๋ฐ˜์˜) */
35
+ /** ํ˜ธ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ฐ–์—์„œ ์ง€์ •ํ•œ๋‹ค โ€” ๊ฐ•์กฐ๋Š” `focused` ์™€ ๊ฐ™๋‹ค (SField ๋กœ ๊ทธ๋Œ€๋กœ ๋„˜์–ด๊ฐ„๋‹ค) */
35
36
  hovered?: boolean;
36
37
  /** ๋‚ด๋ถ€ input ์š”์†Œ className */
37
- inputClass?: string;
38
+ inputClassName?: string;
38
39
  /** ๋‚ด๋ถ€ input ์š”์†Œ style */
39
40
  inputStyle?: CSSProperties;
40
41
  label?: string;
42
+ /** ๋ ˆ์ด๋ธ” ์œ„์น˜ โ€” `top` ์ด๋ฉด ๋ผ๋ฒจ์ด ์ปจํŠธ๋กค ์œ„์— ์„ ๋‹ค (SField ๋กœ ๊ทธ๋Œ€๋กœ ๋„˜์–ด๊ฐ„๋‹ค) */
43
+ labelPosition?: SFieldLabelPosition;
41
44
  labelWidth?: number | string;
42
45
  /** ๋ ˆ์ด๋ธ” ํˆดํŒ ํ…์ŠคํŠธ */
43
46
  labelTooltip?: string;
@@ -49,7 +52,12 @@ export interface SInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
49
52
  addonLabel?: string;
50
53
  /** ์–ด๋“œ์˜จ ์ •๋ ฌ */
51
54
  addonAlign?: SFieldAddonAlign;
52
- width?: number | string;
55
+ /**
56
+ * ์ปจํŠธ๋กค ๋„ˆ๋น„ โ€” ํญ ๋“ฑ๊ธ‰(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) ยท ์ˆซ์ž=px ยท CSS ๊ธธ์ด.
57
+ * ๋“ฑ๊ธ‰์€ `--cmp-field-width-*` ํ† ํฐ์œผ๋กœ ํ’€๋ฆฌ๋ฉฐ `maxLength`(= ์Šคํ‚ค๋งˆ ์ƒํ•œ)๋กœ ๊ณ ๋ฅธ๋‹ค.
58
+ * ์ƒํ•œ์ด `xl` ์„ ๋„˜๊ฑฐ๋‚˜ ์ƒํ•œ์ด ์—†์œผ๋ฉด `"100%"`. (`sellmate/field-width-grade` ๊ฐ€ ๊ฒ€์‚ฌํ•œ๋‹ค)
59
+ */
60
+ width?: SFieldWidth;
53
61
  disabled?: boolean;
54
62
  readOnly?: boolean;
55
63
  className?: string;
@@ -10,9 +10,11 @@
10
10
  |------|------|---------|-------------|
11
11
  | `fields?` | `SKeyValueField[][]` | `[]` | 2์ฐจ์› ๋ฐฐ์—ด. row โ†’ [th|td] ํ•„๋“œ๋“ค |
12
12
  | `values?` | `Record<string, unknown>` | `{}` | field name์„ key๋กœ ํ•˜๋Š” ๊ฐ’ ๊ฐ์ฒด (`{ [name]: value }`). ์ง€์ • ์‹œ ํ•ด๋‹น field์˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, field๋ณ„ `options.value`๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. `onChange`์˜ `detail.values`์™€ ํ•จ๊ป˜ controlled ํŒจํ„ด์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. |
13
+ | `dense?` | `boolean` | `false` | ํ–‰์„ ์ข๊ฒŒ ๊ทธ๋ฆฐ๋‹ค โ€” ์…€์˜ ์ƒํ•˜ ํŒจ๋”ฉ(8px โ†’ 6px)๊ณผ ์ง์ด ๋˜๋Š” ์ตœ์†Œ ๋†’์ด(44px โ†’ 32px)๋ฅผ ํ•จ๊ป˜ ๋‚ด๋ฆฐ๋‹ค. ํ•œ ํ™”๋ฉด์— ํ–‰์ด ๋งŽ์•„ ํ›‘์–ด๋ณด๊ธฐ๊ฐ€ ๋ชฉ์ ์ธ ์ƒ์„ธ ์กฐํšŒ ํ‘œ์— ์“ด๋‹ค. ์ขŒ์šฐ ํŒจ๋”ฉ๊ณผ ๊ธ€์ž ํฌ๊ธฐ๋Š” ๊ทธ๋Œ€๋กœ๋‹ค. **`STable` ๊ณผ ๋‹ฌ๋ฆฌ ๋ฐ€๋„ ํ† ๊ธ€์ด ๋ถ™์ง€ ์•Š๋Š” ๊ณ ์ •๊ฐ’์ด๋‹ค** โ€” ์ค€ ๊ฐ’ ๊ทธ๋Œ€๋กœ ๊ทธ๋ฆฐ๋‹ค. ์ฝ๊ธฐ ์ „์šฉ(`text`) ํ–‰์—์„œ๋งŒ ์‹ค์ œ๋กœ ์ข์•„์ง„๋‹ค: ํผ ํ•„๋“œ ํ–‰์€ ํ•„๋“œ ๋†’์ด๊ฐ€ ํ–‰ ๋†’์ด๋ฅผ ์ •ํ•œ๋‹ค |
13
14
  | `search?` | `boolean` | `false` | ์šฐ์ธก ๊ฒ€์ƒ‰ ํŒจ๋„ |
14
15
  | `radius?` | `'default' \| 'useTop' \| 'full'` | `'default'` | border-radius ์ œ์–ด |
15
16
  | `bordered?` | `boolean` | `true` | ๋ฐ”๊นฅ ํ…Œ๋‘๋ฆฌ. ๊ธฐ๋ณธ์€ `true`. `SSectionHeaderCard` ์˜ `padding="none"` ์•ˆ์— ๋„ฃ์–ด ์นด๋“œ ๊ฐ€์žฅ์ž๋ฆฌ๊นŒ์ง€ ์ฑ„์šธ ๋•Œ `false` ๋กœ ๋ˆ๋‹ค โ€” ์นด๋“œ๊ฐ€ ์ด๋ฏธ ๋ฐ”๊นฅ ํ…Œ๋‘๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ๋ฏ€๋กœ, ์ผœ ๋‘๋ฉด 1px ๋‘ ๊ฐœ๊ฐ€ ๋‚˜๋ž€ํžˆ ๋†“์—ฌ ๊ทธ ๋ณ€๋งŒ 2px ๋กœ ๋ณด์ธ๋‹ค. |
17
+ | `fieldWidth?` | `'auto' \| 'fill'` | `'auto'` | ํ•„๋“œ ํญ ์ •์ฑ… โ€” **ํ‘œ ํ•˜๋‚˜๊ฐ€ ํ•œ ๋ฒˆ์— ์ •ํ•œ๋‹ค**. ํ•„๋“œ๋งˆ๋‹ค ๋”ฐ๋กœ ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ‘œ๋Š” ๋ชจ๋“  ์ปจํŠธ๋กค์— `width="100%"` ๋ฅผ ๋„˜๊ธฐ์ง€๋งŒ, ๊ฐ’ ๊ธธ์ด๋ฅผ ์•„๋Š” ์ปจํŠธ๋กค(๋‚ ์งœยท๊ธฐ๊ฐ„ ํ”ผ์ปค)์€ ์ž๊ธฐ ์ƒํ•œ์—์„œ ๋ฉˆ์ถ˜๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ํ–‰์— ๊ทธ๋Ÿฐ ํ•„๋“œ๊ฐ€ ์„ž์ด๋ฉด **์™ผ์ชฝ ๋๋งŒ ๋งž๊ณ  ์˜ค๋ฅธ์ชฝ ๋์ด ์–ด๊ธ‹๋‚˜** ๋ณด์ธ๋‹ค. - `'auto'`(๊ธฐ๋ณธ) โ€” ์ปจํŠธ๋กค์ด ์ž๊ธฐ ํญ์„ ์ •ํ•œ๋‹ค. ์ƒํ•œ์ด ๊ทธ๋Œ€๋กœ ์‚ด์•„ ์žˆ์–ด ํญ์ด "์ด ์นธ์— ์–ผ๋งˆ๋‚˜ ๊ธด ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š”๊ฐ€" ๋ฅผ ์•Œ๋ ค์ค€๋‹ค. ๋“ฑ๋กยท์ˆ˜์ • ํผ์ฒ˜๋Ÿผ ์ž…๋ ฅ ๊ธธ์ด๋ฅผ ์ง์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ํŽธ์ด ๋‚˜์€ ํ‘œ์— ์“ด๋‹ค. - `'fill'` โ€” ๋ชจ๋“  ์ปจํŠธ๋กค์ด ์…€ ๋๊นŒ์ง€ ์ฐฌ๋‹ค. ์…€ ํญ์€ ์—ด ์ˆ˜์™€ `tdColSpan` ์ด ์ •ํ•˜๋ฏ€๋กœ ์˜ค๋ฅธ์ชฝ ๋์ด ์ €์ ˆ๋กœ ๋งž๋Š”๋‹ค. ์กฐํšŒ ํ•„ํ„ฐ์ฒ˜๋Ÿผ ๊ฐ€์ง€๋Ÿฐํ•จ์ด ์šฐ์„ ์ธ ํ‘œ์— ์“ด๋‹ค. ๋Œ€์‹  ํญ์ด ๊ฐ’ ๊ธธ์ด๋ฅผ ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š”๋‹ค โ€” ๋‚ ์งœ ์นธ์ด ๋ฉ”๋ชจ ์นธ๋งŒํผ ๋„“์–ด์ง„๋‹ค. ๊ฐœ๋ณ„ ํ•„๋“œ๋งŒ ์˜ˆ์™ธ๋กœ ๋‘๋ ค๋ฉด ๊ทธ ํ•„๋“œ์˜ `options.maxWidth` ๋ฅผ ์ค€๋‹ค โ€” ์ด ์ •์ฑ…๋ณด๋‹ค ์šฐ์„ ํ•œ๋‹ค. |
16
18
  | `className?` | `string` | โ€” | |
17
19
  | `style?` | `CSSProperties` | โ€” | |
18
20
 
@@ -23,6 +25,90 @@
23
25
  | `onChange` | `(detail: SKeyValueChangeDetail) => void` | ๊ฐ’ ๋ณ€๊ฒฝ (sdChange) |
24
26
  | `onSearch` | `() => void` | ๊ฒ€์ƒ‰ ํด๋ฆญ (sdSearch) |
25
27
 
28
+ ## Types
29
+
30
+ ### SKeyValueField
31
+
32
+ ```ts
33
+ export type SKeyValueField = SKeyValueFieldBase & SKeyValueFieldByType;
34
+ ```
35
+
36
+ ### SKeyValueChangeDetail
37
+
38
+ ```ts
39
+ /**
40
+ * `onChange` ์ฝœ๋ฐฑ detail.
41
+ * ์ œ๋„ค๋ฆญ `V`์— ํผ ๊ฐ’ ํ˜•ํƒœ(`{ [name]: value }`)๋ฅผ ๋„˜๊ธฐ๋ฉด `name`/`value`/`values`๊ฐ€ ์ •๋ฐ€ํ•˜๊ฒŒ ํƒ€์ดํ•‘๋ฉ๋‹ˆ๋‹ค.
42
+ * ๋ฏธ์ง€์ • ์‹œ `value`๋Š” {@link SKeyValueFieldValue} ์œ ๋‹ˆ์˜จ์œผ๋กœ ์žกํž™๋‹ˆ๋‹ค.
43
+ */
44
+ export interface SKeyValueChangeDetail<
45
+ V extends Record<string, SKeyValueFieldValue> = Record<string, SKeyValueFieldValue>,
46
+ > {
47
+ /** ๋ณ€๊ฒฝ๋œ field์˜ name */
48
+ name: Extract<keyof V, string>;
49
+ /** ๋ณ€๊ฒฝ๋œ field์˜ ์ƒˆ ๊ฐ’ */
50
+ value: V[Extract<keyof V, string>];
51
+ /** ๋ณ€๊ฒฝ์ด ๋ฐ˜์˜๋œ ์ „์ฒด ๊ฐ’ ๊ฐ์ฒด (`{ [name]: value }`). controlled ํŒจํ„ด์—์„œ ๊ทธ๋Œ€๋กœ ์ƒํƒœ์— ๋ฐ˜์˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. */
52
+ values: V;
53
+ }
54
+ ```
55
+
56
+ ### SKeyValueFieldBase
57
+
58
+ ```ts
59
+ /** field type๊ณผ ๋ฌด๊ด€ํ•œ ๊ณตํ†ต ์†์„ฑ (๋ ˆ์ด์•„์›ƒยท๋ ˆ์ด๋ธ”ยท์ŠคํŒฌ ๋“ฑ) */
60
+ export interface SKeyValueFieldBase {
61
+ name: string;
62
+ label?: string;
63
+ required?: boolean;
64
+ helpText?: string[];
65
+ hideTh?: boolean;
66
+ thRowSpan?: number;
67
+ thColSpan?: number;
68
+ tdRowSpan?: number;
69
+ tdColSpan?: number;
70
+ thWidth?: number | string;
71
+ thClass?: string;
72
+ tdClass?: string;
73
+ /** ์…€ ์ปค์Šคํ…€ ๋ Œ๋” (React ํ™•์žฅ). ์ง€์ • ์‹œ type/options๋Š” ๋ฌด์‹œ๋˜๊ณ  ์ด ๋…ธ๋“œ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ Œ๋”๋ฉ๋‹ˆ๋‹ค. */
74
+ render?: ReactNode;
75
+ }
76
+ ```
77
+
78
+ ### SKeyValueFieldByType
79
+
80
+ ```ts
81
+ /**
82
+ * `type`์— ๋”ฐ๋ผ `options`๊ฐ€ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ props๋กœ ์ขํ˜€์ง€๋Š” discriminated union.
83
+ * `type` ์ƒ๋žต ์‹œ `text`๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
84
+ */
85
+ export type SKeyValueFieldByType =
86
+ | { type?: 'text'; options?: { value?: ReactNode } }
87
+ | { type: 'input'; options?: FieldOptions<SInputProps> }
88
+ | { type: 'textarea'; options?: FieldOptions<STextareaProps> }
89
+ | { type: 'number-input'; options?: FieldOptions<SNumberInputProps> }
90
+ | { type: 'select'; options?: FieldOptions<SSelectProps> }
91
+ | { type: 'radio'; options?: FieldOptions<SRadioGroupProps> }
92
+ | { type: 'checkbox'; options?: FieldOptions<SCheckboxProps> }
93
+ | { type: 'switch'; options?: FieldOptions<SSwitchProps> }
94
+ | { type: 'date-picker'; options?: FieldOptions<SDatePickerProps> }
95
+ | { type: 'date-range-picker'; options?: FieldOptions<SDateRangePickerProps> }
96
+ | { type: 'file-picker'; options?: FieldOptions<SFilePickerProps> };
97
+ ```
98
+
99
+ ### SKeyValueFieldValue
100
+
101
+ ```ts
102
+ /**
103
+ * field type๋ณ„ `onChange`๋กœ ์˜ฌ๋ผ์˜ค๋Š” ๊ฐ’ ํƒ€์ž….
104
+ * - `string`: input ยท textarea ยท select ยท radio ยท date-picker
105
+ * - `number`: number-input
106
+ * - `boolean`: checkbox ยท switch
107
+ * - `string[]`: date-range-picker
108
+ */
109
+ export type SKeyValueFieldValue = string | number | boolean | string[];
110
+ ```
111
+
26
112
  ## Dependencies
27
113
 
28
114
  ### Depends on
@@ -37,6 +123,7 @@
37
123
  - [SNumberInput](../SNumberInput)
38
124
  - [SRadio](../SRadio)
39
125
  - [SSelect](../SSelect)
126
+ - [SSwitch](../SSwitch)
40
127
  - [STextarea](../STextarea)
41
128
  - [STooltip](../STooltip)
42
129
 
@@ -54,6 +141,7 @@ graph TD;
54
141
  SKeyValueTable --> SNumberInput
55
142
  SKeyValueTable --> SRadio
56
143
  SKeyValueTable --> SSelect
144
+ SKeyValueTable --> SSwitch
57
145
  SKeyValueTable --> STextarea
58
146
  SKeyValueTable --> STooltip
59
147
  style SKeyValueTable fill:#f9f,stroke:#333,stroke-width:4px
@@ -5,10 +5,11 @@ import { type SNumberInputProps } from '../SNumberInput';
5
5
  import { type SSelectProps } from '../SSelect';
6
6
  import { type SRadioGroupProps } from '../SRadio';
7
7
  import { type SCheckboxProps } from '../SCheckbox';
8
+ import { type SSwitchProps } from '../SSwitch';
8
9
  import { type SDatePickerProps } from '../SDatePicker';
9
10
  import { type SDateRangePickerProps } from '../SDateRangePicker';
10
11
  import { type SFilePickerProps } from '../SFilePicker';
11
- export type SKeyValueFieldType = 'text' | 'input' | 'textarea' | 'number-input' | 'select' | 'radio' | 'checkbox' | 'date-picker' | 'date-range-picker' | 'file-picker';
12
+ export type SKeyValueFieldType = 'text' | 'input' | 'textarea' | 'number-input' | 'select' | 'radio' | 'checkbox' | 'switch' | 'date-picker' | 'date-range-picker' | 'file-picker';
12
13
  /** field type๊ณผ ๋ฌด๊ด€ํ•œ ๊ณตํ†ต ์†์„ฑ (๋ ˆ์ด์•„์›ƒยท๋ ˆ์ด๋ธ”ยท์ŠคํŒฌ ๋“ฑ) */
13
14
  export interface SKeyValueFieldBase {
14
15
  name: string;
@@ -59,6 +60,9 @@ export type SKeyValueFieldByType = {
59
60
  } | {
60
61
  type: 'checkbox';
61
62
  options?: FieldOptions<SCheckboxProps>;
63
+ } | {
64
+ type: 'switch';
65
+ options?: FieldOptions<SSwitchProps>;
62
66
  } | {
63
67
  type: 'date-picker';
64
68
  options?: FieldOptions<SDatePickerProps>;
@@ -74,7 +78,7 @@ export type SKeyValueField = SKeyValueFieldBase & SKeyValueFieldByType;
74
78
  * field type๋ณ„ `onChange`๋กœ ์˜ฌ๋ผ์˜ค๋Š” ๊ฐ’ ํƒ€์ž….
75
79
  * - `string`: input ยท textarea ยท select ยท radio ยท date-picker
76
80
  * - `number`: number-input
77
- * - `boolean`: checkbox
81
+ * - `boolean`: checkbox ยท switch
78
82
  * - `string[]`: date-range-picker
79
83
  */
80
84
  export type SKeyValueFieldValue = string | number | boolean | string[];
@@ -100,6 +104,13 @@ export interface SKeyValueTableProps {
100
104
  * `onChange`์˜ `detail.values`์™€ ํ•จ๊ป˜ controlled ํŒจํ„ด์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
101
105
  */
102
106
  values?: Record<string, unknown>;
107
+ /**
108
+ * ํ–‰์„ ์ข๊ฒŒ ๊ทธ๋ฆฐ๋‹ค โ€” ์…€์˜ ์ƒํ•˜ ํŒจ๋”ฉ(8px โ†’ 6px)๊ณผ ์ง์ด ๋˜๋Š” ์ตœ์†Œ ๋†’์ด(44px โ†’ 32px)๋ฅผ ํ•จ๊ป˜
109
+ * ๋‚ด๋ฆฐ๋‹ค. ํ•œ ํ™”๋ฉด์— ํ–‰์ด ๋งŽ์•„ ํ›‘์–ด๋ณด๊ธฐ๊ฐ€ ๋ชฉ์ ์ธ ์ƒ์„ธ ์กฐํšŒ ํ‘œ์— ์“ด๋‹ค. ์ขŒ์šฐ ํŒจ๋”ฉ๊ณผ ๊ธ€์ž ํฌ๊ธฐ๋Š”
110
+ * ๊ทธ๋Œ€๋กœ๋‹ค. **`STable` ๊ณผ ๋‹ฌ๋ฆฌ ๋ฐ€๋„ ํ† ๊ธ€์ด ๋ถ™์ง€ ์•Š๋Š” ๊ณ ์ •๊ฐ’์ด๋‹ค** โ€” ์ค€ ๊ฐ’ ๊ทธ๋Œ€๋กœ ๊ทธ๋ฆฐ๋‹ค.
111
+ * ์ฝ๊ธฐ ์ „์šฉ(`text`) ํ–‰์—์„œ๋งŒ ์‹ค์ œ๋กœ ์ข์•„์ง„๋‹ค: ํผ ํ•„๋“œ ํ–‰์€ ํ•„๋“œ ๋†’์ด๊ฐ€ ํ–‰ ๋†’์ด๋ฅผ ์ •ํ•œ๋‹ค
112
+ */
113
+ dense?: boolean;
103
114
  /** ์šฐ์ธก ๊ฒ€์ƒ‰ ํŒจ๋„ */
104
115
  search?: boolean;
105
116
  /** border-radius ์ œ์–ด */
@@ -111,6 +122,22 @@ export interface SKeyValueTableProps {
111
122
  * ์นด๋“œ๊ฐ€ ์ด๋ฏธ ๋ฐ”๊นฅ ํ…Œ๋‘๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ๋ฏ€๋กœ, ์ผœ ๋‘๋ฉด 1px ๋‘ ๊ฐœ๊ฐ€ ๋‚˜๋ž€ํžˆ ๋†“์—ฌ ๊ทธ ๋ณ€๋งŒ 2px ๋กœ ๋ณด์ธ๋‹ค.
112
123
  */
113
124
  bordered?: boolean;
125
+ /**
126
+ * ํ•„๋“œ ํญ ์ •์ฑ… โ€” **ํ‘œ ํ•˜๋‚˜๊ฐ€ ํ•œ ๋ฒˆ์— ์ •ํ•œ๋‹ค**. ํ•„๋“œ๋งˆ๋‹ค ๋”ฐ๋กœ ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.
127
+ *
128
+ * ํ‘œ๋Š” ๋ชจ๋“  ์ปจํŠธ๋กค์— `width="100%"` ๋ฅผ ๋„˜๊ธฐ์ง€๋งŒ, ๊ฐ’ ๊ธธ์ด๋ฅผ ์•„๋Š” ์ปจํŠธ๋กค(๋‚ ์งœยท๊ธฐ๊ฐ„ ํ”ผ์ปค)์€
129
+ * ์ž๊ธฐ ์ƒํ•œ์—์„œ ๋ฉˆ์ถ˜๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ํ–‰์— ๊ทธ๋Ÿฐ ํ•„๋“œ๊ฐ€ ์„ž์ด๋ฉด **์™ผ์ชฝ ๋๋งŒ ๋งž๊ณ  ์˜ค๋ฅธ์ชฝ ๋์ด
130
+ * ์–ด๊ธ‹๋‚˜** ๋ณด์ธ๋‹ค.
131
+ *
132
+ * - `'auto'`(๊ธฐ๋ณธ) โ€” ์ปจํŠธ๋กค์ด ์ž๊ธฐ ํญ์„ ์ •ํ•œ๋‹ค. ์ƒํ•œ์ด ๊ทธ๋Œ€๋กœ ์‚ด์•„ ์žˆ์–ด ํญ์ด "์ด ์นธ์— ์–ผ๋งˆ๋‚˜ ๊ธด ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š”๊ฐ€" ๋ฅผ
133
+ * ์•Œ๋ ค์ค€๋‹ค. ๋“ฑ๋กยท์ˆ˜์ • ํผ์ฒ˜๋Ÿผ ์ž…๋ ฅ ๊ธธ์ด๋ฅผ ์ง์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” ํŽธ์ด ๋‚˜์€ ํ‘œ์— ์“ด๋‹ค.
134
+ * - `'fill'` โ€” ๋ชจ๋“  ์ปจํŠธ๋กค์ด ์…€ ๋๊นŒ์ง€ ์ฐฌ๋‹ค. ์…€ ํญ์€ ์—ด ์ˆ˜์™€ `tdColSpan` ์ด ์ •ํ•˜๋ฏ€๋กœ ์˜ค๋ฅธ์ชฝ
135
+ * ๋์ด ์ €์ ˆ๋กœ ๋งž๋Š”๋‹ค. ์กฐํšŒ ํ•„ํ„ฐ์ฒ˜๋Ÿผ ๊ฐ€์ง€๋Ÿฐํ•จ์ด ์šฐ์„ ์ธ ํ‘œ์— ์“ด๋‹ค. ๋Œ€์‹  ํญ์ด ๊ฐ’ ๊ธธ์ด๋ฅผ
136
+ * ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š”๋‹ค โ€” ๋‚ ์งœ ์นธ์ด ๋ฉ”๋ชจ ์นธ๋งŒํผ ๋„“์–ด์ง„๋‹ค.
137
+ *
138
+ * ๊ฐœ๋ณ„ ํ•„๋“œ๋งŒ ์˜ˆ์™ธ๋กœ ๋‘๋ ค๋ฉด ๊ทธ ํ•„๋“œ์˜ `options.maxWidth` ๋ฅผ ์ค€๋‹ค โ€” ์ด ์ •์ฑ…๋ณด๋‹ค ์šฐ์„ ํ•œ๋‹ค.
139
+ */
140
+ fieldWidth?: 'auto' | 'fill';
114
141
  /** ๊ฐ’ ๋ณ€๊ฒฝ (sdChange) */
115
142
  onChange?: (detail: SKeyValueChangeDetail) => void;
116
143
  /** ๊ฒ€์ƒ‰ ํด๋ฆญ (sdSearch) */
@@ -119,5 +146,5 @@ export interface SKeyValueTableProps {
119
146
  style?: CSSProperties;
120
147
  }
121
148
  /** SKeyValueTable โ€” sd-key-value-table ํฌํŒ…. th/td ํผ ๋ ˆ์ด์•„์›ƒ + ํ•„๋“œ ๋ Œ๋”๋Ÿฌ. */
122
- export declare function SKeyValueTable({ fields, values, search, radius, bordered, onChange, onSearch, className, style, }: SKeyValueTableProps): import("react").JSX.Element | null;
149
+ export declare function SKeyValueTable({ fields, values, dense, search, radius, bordered, fieldWidth, onChange, onSearch, className, style, }: SKeyValueTableProps): import("react").JSX.Element | null;
123
150
  export {};
@@ -1 +1 @@
1
- export { SKeyValueTable, type SKeyValueTableProps, type SKeyValueField, type SKeyValueFieldType, type SKeyValueChangeDetail, } from './SKeyValueTable';
1
+ export { SKeyValueTable, type SKeyValueTableProps, type SKeyValueField, type SKeyValueFieldBase, type SKeyValueFieldByType, type SKeyValueFieldType, type SKeyValueFieldValue, type SKeyValueChangeDetail, } from './SKeyValueTable';
@@ -0,0 +1,81 @@
1
+ # SLauncherListBox
2
+
3
+ > ์ž๋™ ์ƒ์„ฑ ๋ฌธ์„œ โ€” `npm run docs:gen`. ์†Œ์Šค: ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ Props/Handle ์ธํ„ฐํŽ˜์ด์Šค + import ์˜์กด์„ฑ.
4
+
5
+ ### SLauncherListBox
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `items?` | `SLauncherListBoxItem[]` | โ€” | ๋ชฉ๋ก์— ์„ธ์šธ ์„œ๋น„์Šค. ๋น„์–ด ์žˆ์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ Œ๋”ํ•˜์ง€ ์•Š๋Š”๋‹ค. **์ˆœ์„œ๋Š” ๋„˜๊ธด ๋Œ€๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ ์นดํƒˆ๋กœ๊ทธ ์ˆœ์„œ๋‹ค**(`LAUNCHER_SERVICES`) โ€” ๊ฐ™์€ ๋Ÿฐ์ฒ˜๊ฐ€ ์•ฑ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ˆœ์„œ๋กœ ๋œจ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋งค๋ฒˆ ๋‹ค์‹œ ์ฐพ๋Š”๋‹ค. ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ๋‘ ๋ฒˆ ๋„˜๊ธฐ๋ฉด ์ฒ˜์Œ ๊ฒƒ๋งŒ ์„ ๋‹ค. |
12
+ | `ariaLabel?` | `string` | โ€” | ๋ชฉ๋ก(ul)์˜ ์ ‘๊ทผ์„ฑ ๋ ˆ์ด๋ธ” |
13
+
14
+ #### Events
15
+
16
+ | Event | Type | Description |
17
+ |-------|------|-------------|
18
+ | `onSelect` | `(service: SLauncherService) => void` | ์„œ๋น„์Šค๋ฅผ ๊ณ ๋ฆ„. **๊ฐ€๋Š” ๊ฒƒ์€ ์ด ์ฝœ๋ฐฑ์ด ํ•˜์ง€ ์•Š๋Š”๋‹ค** โ€” ์ค„์ด ๋งํฌ๋ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ `href` ๋ฅผ ์ƒˆ ํƒญ์œผ๋กœ ์—ฐ๋‹ค. ๊ณ ๋ฅธ ๊ฒƒ์„ ์•ฑ์ด ์•Œ์•„์•ผ ํ•  ๋•Œ๋งŒ(๊ธฐ๋กยท๋ชฉ๋ก ๋‹ซ๊ธฐ) ์ค€๋‹ค. ๊ฐˆ ์ˆ˜ ์—†๋Š” ์ค„(์ฃผ์†Œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์นดํƒˆ๋กœ๊ทธ๊ฐ€ ์•„์ง ์ถœ์‹œ ์ „์œผ๋กœ ๋“  ์„œ๋น„์Šค)์€ ๋ˆŒ๋ฆฌ์ง€ ์•Š์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ๋กœ ์˜ค์ง€ ์•Š๋Š”๋‹ค. |
19
+
20
+ ## Types
21
+
22
+ ### SLauncherListBoxItem
23
+
24
+ ```ts
25
+ /** ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค์˜ ํ•œ ์ค„ โ€” ์˜ฎ๊ฒจ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ํ•˜๋‚˜ */
26
+ export interface SLauncherListBoxItem {
27
+ /**
28
+ * ์–ด๋А ์„œ๋น„์Šค์ธ๊ฐ€. **๋กœ๊ณ ยทํ‘œ๊ธฐยท์ด๋ฆ„ยท์ƒํƒœ ํƒœ๊ทธ๋Š” ์ด ํ‚ค ํ•˜๋‚˜๋กœ ์ •ํ•ด์ง„๋‹ค** โ€” ์นดํƒˆ๋กœ๊ทธ
29
+ * (`LAUNCHER_SERVICE_CATALOG`)๊ฐ€ ๋“ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์•ฑ์ด ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค.
30
+ */
31
+ service: SLauncherService;
32
+ /**
33
+ * ์ƒˆ ํƒญ์—์„œ ์—ด ์ฃผ์†Œ. **๋””์ž์ธ ์‹œ์Šคํ…œ์€ ์ฃผ์†Œ๋ฅผ ๋“ค์ง€ ์•Š๋Š”๋‹ค** โ€” ์•ฑ๋งˆ๋‹ค QAยท์‹ค์„œ๋ฒ„๊ฐ€ ๋‹ฌ๋ผ
34
+ * ์—ฌ๊ธฐ์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.
35
+ *
36
+ * **์ฃผ์†Œ๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด ๊ณง "๊ฐˆ ์ˆ˜ ์žˆ๋‹ค"๋Š” ๋œป์ด๋‹ค.** ๋น„์šฐ๋ฉด ์ค„์€ ๋ชฉ๋ก์— ๋‚จ๋˜ ๋ˆŒ๋ฆฌ์ง€ ์•Š๊ณ 
37
+ * ๋ฌผ๋Ÿฌ๋‚œ๋‹ค โ€” ์ง€๊ธˆ ๋ณด๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค๋“ , ์ด ์•ฑ์ด ๊ณ„์•ฝํ•˜์ง€ ์•Š์€ ์„œ๋น„์Šค๋“  ๊ฐˆ ๊ณณ์ด ์—†๊ธฐ๋Š” ๊ฐ™๋‹ค.
38
+ * ๋ชป ๊ฐ€๋Š” ์ค„์„ ๋ง‰๋Š” ๋ณ„๋„์˜ prop ์€ ์—†๋‹ค.
39
+ */
40
+ href?: string;
41
+ }
42
+ ```
43
+
44
+ ### SLauncherService
45
+
46
+ ```ts
47
+ export type SLauncherService = (typeof LAUNCHER_SERVICES)[number];
48
+ ```
49
+
50
+ ### LAUNCHER_SERVICES
51
+
52
+ ```ts
53
+ /**
54
+ * ๋Ÿฐ์ฒ˜์— ์„ค ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค โ€” **๋ชฉ๋ก์˜ ์ˆœ์„œ์ด๊ธฐ๋„ ํ•˜๋‹ค.**
55
+ * ์•ฑ์ด ๋„˜๊ธด ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด ์ˆœ์„œ๋กœ ์„ ๋‹ค: ๊ฐ™์€ ๋Ÿฐ์ฒ˜๊ฐ€ ์•ฑ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ˆœ์„œ๋กœ ๋œจ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋งค๋ฒˆ ๋‹ค์‹œ ์ฐพ๋Š”๋‹ค.
56
+ */
57
+ export const LAUNCHER_SERVICES = ['sellmate', 'wms', 'account', 'crm'] as const;
58
+ ```
59
+
60
+ ## Dependencies
61
+
62
+ ### Used by
63
+
64
+ - [SGnb](../SGnb)
65
+
66
+ ### Depends on
67
+
68
+ - [SIcon](../SIcon)
69
+ - [SLogo](../SLogo)
70
+ - [STag](../STag)
71
+
72
+ ### Graph
73
+
74
+ ```mermaid
75
+ graph TD;
76
+ SLauncherListBox --> SIcon
77
+ SLauncherListBox --> SLogo
78
+ SLauncherListBox --> STag
79
+ SGnb --> SLauncherListBox
80
+ style SLauncherListBox fill:#f9f,stroke:#333,stroke-width:4px
81
+ ```
@@ -0,0 +1,67 @@
1
+ import { type HTMLAttributes } from 'react';
2
+ import { type SLauncherService } from './launcherListBox.config';
3
+ /** ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค์˜ ํ•œ ์ค„ โ€” ์˜ฎ๊ฒจ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ํ•˜๋‚˜ */
4
+ export interface SLauncherListBoxItem {
5
+ /**
6
+ * ์–ด๋А ์„œ๋น„์Šค์ธ๊ฐ€. **๋กœ๊ณ ยทํ‘œ๊ธฐยท์ด๋ฆ„ยท์ƒํƒœ ํƒœ๊ทธ๋Š” ์ด ํ‚ค ํ•˜๋‚˜๋กœ ์ •ํ•ด์ง„๋‹ค** โ€” ์นดํƒˆ๋กœ๊ทธ
7
+ * (`LAUNCHER_SERVICE_CATALOG`)๊ฐ€ ๋“ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์•ฑ์ด ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค.
8
+ */
9
+ service: SLauncherService;
10
+ /**
11
+ * ์ƒˆ ํƒญ์—์„œ ์—ด ์ฃผ์†Œ. **๋””์ž์ธ ์‹œ์Šคํ…œ์€ ์ฃผ์†Œ๋ฅผ ๋“ค์ง€ ์•Š๋Š”๋‹ค** โ€” ์•ฑ๋งˆ๋‹ค QAยท์‹ค์„œ๋ฒ„๊ฐ€ ๋‹ฌ๋ผ
12
+ * ์—ฌ๊ธฐ์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.
13
+ *
14
+ * **์ฃผ์†Œ๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด ๊ณง "๊ฐˆ ์ˆ˜ ์žˆ๋‹ค"๋Š” ๋œป์ด๋‹ค.** ๋น„์šฐ๋ฉด ์ค„์€ ๋ชฉ๋ก์— ๋‚จ๋˜ ๋ˆŒ๋ฆฌ์ง€ ์•Š๊ณ 
15
+ * ๋ฌผ๋Ÿฌ๋‚œ๋‹ค โ€” ์ง€๊ธˆ ๋ณด๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค๋“ , ์ด ์•ฑ์ด ๊ณ„์•ฝํ•˜์ง€ ์•Š์€ ์„œ๋น„์Šค๋“  ๊ฐˆ ๊ณณ์ด ์—†๊ธฐ๋Š” ๊ฐ™๋‹ค.
16
+ * ๋ชป ๊ฐ€๋Š” ์ค„์„ ๋ง‰๋Š” ๋ณ„๋„์˜ prop ์€ ์—†๋‹ค.
17
+ */
18
+ href?: string;
19
+ }
20
+ export interface SLauncherListBoxProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {
21
+ /**
22
+ * ๋ชฉ๋ก์— ์„ธ์šธ ์„œ๋น„์Šค. ๋น„์–ด ์žˆ์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ Œ๋”ํ•˜์ง€ ์•Š๋Š”๋‹ค.
23
+ *
24
+ * **์ˆœ์„œ๋Š” ๋„˜๊ธด ๋Œ€๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ ์นดํƒˆ๋กœ๊ทธ ์ˆœ์„œ๋‹ค**(`LAUNCHER_SERVICES`) โ€” ๊ฐ™์€ ๋Ÿฐ์ฒ˜๊ฐ€ ์•ฑ๋งˆ๋‹ค
25
+ * ๋‹ค๋ฅธ ์ˆœ์„œ๋กœ ๋œจ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋งค๋ฒˆ ๋‹ค์‹œ ์ฐพ๋Š”๋‹ค. ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ๋‘ ๋ฒˆ ๋„˜๊ธฐ๋ฉด ์ฒ˜์Œ ๊ฒƒ๋งŒ ์„ ๋‹ค.
26
+ */
27
+ items?: SLauncherListBoxItem[];
28
+ /**
29
+ * ์„œ๋น„์Šค๋ฅผ ๊ณ ๋ฆ„. **๊ฐ€๋Š” ๊ฒƒ์€ ์ด ์ฝœ๋ฐฑ์ด ํ•˜์ง€ ์•Š๋Š”๋‹ค** โ€” ์ค„์ด ๋งํฌ๋ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ `href` ๋ฅผ
30
+ * ์ƒˆ ํƒญ์œผ๋กœ ์—ฐ๋‹ค. ๊ณ ๋ฅธ ๊ฒƒ์„ ์•ฑ์ด ์•Œ์•„์•ผ ํ•  ๋•Œ๋งŒ(๊ธฐ๋กยท๋ชฉ๋ก ๋‹ซ๊ธฐ) ์ค€๋‹ค.
31
+ *
32
+ * ๊ฐˆ ์ˆ˜ ์—†๋Š” ์ค„(์ฃผ์†Œ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์นดํƒˆ๋กœ๊ทธ๊ฐ€ ์•„์ง ์ถœ์‹œ ์ „์œผ๋กœ ๋“  ์„œ๋น„์Šค)์€ ๋ˆŒ๋ฆฌ์ง€ ์•Š์œผ๋ฏ€๋กœ
33
+ * ์—ฌ๊ธฐ๋กœ ์˜ค์ง€ ์•Š๋Š”๋‹ค.
34
+ */
35
+ onSelect?: (service: SLauncherService) => void;
36
+ /** ๋ชฉ๋ก(ul)์˜ ์ ‘๊ทผ์„ฑ ๋ ˆ์ด๋ธ” */
37
+ ariaLabel?: string;
38
+ }
39
+ /**
40
+ * SLauncherListBox โ€” GNB ์˜ ์•ฑ๋Ÿฐ์ฒ˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋œจ๋Š” ์„œ๋น„์Šค ๋ชฉ๋ก.
41
+ *
42
+ * ํ•œ ์ค„์ด ์„œ๋น„์Šค ํ•˜๋‚˜๋‹ค: ์œ„์— ๋ธŒ๋žœ๋“œ ๋กœ๊ณ (+ ์ƒํƒœ ํƒœ๊ทธ), ์•„๋ž˜์— ํ•œ๊ธ€ ์ด๋ฆ„.
43
+ *
44
+ * **์•ฑ์ด ๋„˜๊ธฐ๋Š” ๊ฒƒ์€ ์„œ๋น„์Šค ํ‚ค์™€ ์ฃผ์†Œ ๋‘˜๋ฟ์ด๋‹ค.** ๋กœ๊ณ ยท์„œ๋น„์Šค ํ‘œ๊ธฐยท์ด๋ฆ„ยท์ƒํƒœ ํƒœ๊ทธ๋Š” ์นดํƒˆ๋กœ๊ทธ
45
+ * (`LAUNCHER_SERVICE_CATALOG`)๊ฐ€ ์„œ๋น„์Šค๋งˆ๋‹ค ํ•œ ๋ชจ์Šต์œผ๋กœ ์ •ํ•ด ๋‘๋ฏ€๋กœ ์•ฑ์ด ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค โ€”
46
+ * ๋„˜๊ธฐ๊ฒŒ ํ•˜๋ฉด ๊ฐ™์€ ์„œ๋น„์Šค๊ฐ€ ์•ฑ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ด๋ฆ„ยท์ƒ‰ยท๋ฌธ๊ตฌ๋กœ ์„ ๋‹ค.
47
+ *
48
+ * **์ฃผ์†Œ๋Š” ์นดํƒˆ๋กœ๊ทธ์— ๋‘์ง€ ์•Š๋Š”๋‹ค.** ์•ฑ๋งˆ๋‹ค QAยท์‹ค์„œ๋ฒ„ ์ฃผ์†Œ๊ฐ€ ๋‹ฌ๋ผ ๋””์ž์ธ ์‹œ์Šคํ…œ์ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.
49
+ * ์•ฑ์ด `href` ๋กœ ๋„˜๊ธฐ๋ฉด ์ค„์ด ๋งํฌ๊ฐ€ ๋˜์–ด **์ƒˆ ํƒญ์—์„œ ์—ด๋ฆฐ๋‹ค** โ€” ๊ฐ€์šด๋ฐ ํด๋ฆญยทโŒ˜ํด๋ฆญ๋„ ๊ทธ๋Œ€๋กœ ๋“ฃ๋Š”๋‹ค.
50
+ * **์ฃผ์†Œ๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด ๊ณง "๊ฐˆ ์ˆ˜ ์žˆ๋‹ค"๋Š” ๋œป์ด๋‹ค**: ์ฃผ์ง€ ์•Š์€ ์ค„์€ ๋ˆŒ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค(์ง€๊ธˆ ๋ณด๊ณ  ์žˆ๋Š”
51
+ * ์„œ๋น„์Šค์ด๊ฑฐ๋‚˜ ์ด ์•ฑ์ด ๊ณ„์•ฝํ•˜์ง€ ์•Š์€ ์„œ๋น„์Šค). ์ค„์„ ๋ง‰๋Š” ๋ณ„๋„์˜ prop ์€ ์—†๋‹ค.
52
+ *
53
+ * **์ค„์— ์–น์œผ๋ฉด "์—ฌ๊ธฐ์„œ ๋‚˜๊ฐ„๋‹ค"๋Š” ๊ฒƒ์ด ๋“œ๋Ÿฌ๋‚œ๋‹ค** โ€” ๋ฐฐ๊ฒฝ์ด ์˜…์€ ํŒŒ๋ž‘์œผ๋กœ ๋ฌผ๋“ค๊ณ  ์ด๋ฆ„์ด ํ•œ ๋‹จ๊ณ„
54
+ * ์ง„ํ•ด์ง€๋ฉฐ, ์˜ค๋ฅธ์ชฝ ๋์— ํŽ˜์ด์ง€ ์ด๋™ ์•„์ด์ฝ˜์ด ๋– ์˜ค๋ฅธ๋‹ค. ์•„์ด์ฝ˜ ์ž๋ฆฌ๋Š” ๋Š˜ ๋น„์›Œ ๋‘๋ฏ€๋กœ ์–น์—ˆ๋‹ค ๋—„ ๋•Œ
55
+ * ๊ธ€์ž๊ฐ€ ๋ฐ€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.
56
+ *
57
+ * ๊ฐˆ ์ˆ˜ ์—†๋Š” ์ค„์€ ๋ˆŒ๋ฆฌ์ง€ ์•Š๊ณ  ๋กœ๊ณ ๋Š” ์ƒ‰์ด ๋น ์ง€๋ฉฐ ์ด๋ฆ„์€ ๋น„ํ™œ์„ฑ ๊ธ€์ž์ƒ‰์ด ๋œ๋‹ค. **๋ชฉ๋ก์—์„œ ๋นผ์ง€
58
+ * ์•Š๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ด๋‹ค**: ๊ทธ ์„œ๋น„์Šค๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ์ง€๊ธˆ์€ ๋ชป ๊ฐ„๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ•จ๊ป˜ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด ๋Ÿฐ์ฒ˜์˜
59
+ * ์ผ์ด๋‹ค. ์ถœ์‹œ ์ „์ธ ์„œ๋น„์Šค๋Š” ์นดํƒˆ๋กœ๊ทธ๊ฐ€ `์ถœ์‹œ์˜ˆ์ •` ํƒœ๊ทธ์™€ ํ•จ๊ป˜ ๋ง‰์•„ ๋‘๋ฏ€๋กœ ์•ฑ์ด ํ•  ์ผ์ด ์—†๋‹ค.
60
+ *
61
+ * **์ด ์ปดํฌ๋„ŒํŠธ๋Š” ํŒจ๋„๋งŒ ๊ทธ๋ฆฐ๋‹ค.** ๋Ÿฐ์ฒ˜ ๋ฒ„ํŠผ์— ๋ถ™์—ฌ ๋„์šฐ๋Š” ๊ฒƒ์€ `SGnb` ์˜ `launcher` ๊ฐ€ ๋งก์œผ๋ฏ€๋กœ
62
+ * (`launcher.items` ์— ์ด ๋ชฉ๋ก์„ ๋„˜๊ธด๋‹ค), ์•ฑ์ด ์ง์ ‘ ํŒ์˜ค๋ฒ„๋ฅผ ์กฐ๋ฆฝํ•  ์ผ์€ ์—†๋‹ค.
63
+ *
64
+ * ํ† ํฐ์€ `--cmp-gnb-launcher-listBox-*`(ํŒจ๋„) ยท `--cmp-gnb-launcher-button-*`(์ค„).
65
+ * **์ค„ ๋†’์ด๋Š” ์ƒ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋ฐฑ์—์„œ ๋‚˜์˜จ๋‹ค** โ€” ํ† ํฐ์ด ๋ฐ”๋€Œ๋ฉด ๋”ฐ๋ผ ๋ฐ”๋€๋‹ค.
66
+ */
67
+ export declare const SLauncherListBox: import("react").ForwardRefExoticComponent<SLauncherListBoxProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ export { SLauncherListBox, type SLauncherListBoxProps, type SLauncherListBoxItem, } from './SLauncherListBox';
2
+ export { LAUNCHER_LIST_BOX_LAYOUT, LAUNCHER_LIST_BOX_LOGO_HEIGHT, LAUNCHER_LIST_BOX_LOGO_SERVICE_GAP, LAUNCHER_LIST_BOX_TRAILING_ICON, LAUNCHER_LIST_BOX_WIDTH, LAUNCHER_SERVICES, LAUNCHER_SERVICE_CATALOG, type SLauncherService, type SLauncherServiceEntry, } from './launcherListBox.config';