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
@@ -8,23 +8,31 @@
8
8
 
9
9
  | Prop | Type | Default | Description |
10
10
  |------|------|---------|-------------|
11
- | `value?` | `(string \| number \| SSelectOption) \| (string \| number \| SSelectOption)[] \| null` | — | 선택 값. multi 타입이면 배열. emitValue=false(기본) 라운드트립을 위해 SSelectOption 객체도 허용 |
12
- | `emitValue?` | `boolean` | `false` | true면 SSelectOption 대신 원시값(string|number) 방출 |
11
+ | `value?` | `(string \| number \| SSelectOption) \| (string \| number \| SSelectOption)[] \| null` | — | 선택 값. multi 타입이면 배열. 기본(valueAsPrimitive=false) 라운드트립을 위해 SSelectOption 객체도 허용 |
12
+ | `valueAsPrimitive?` | `boolean` | `false` | `value`·`onValueChange` 가 옵션 객체 대신 원시값(string|number)을 주고받는다. **기본값 `false`(옵션 객체)는 유지한다** — 원본(sd-select) 호환 때문이고, 뒤집으면 이 값을 주지 않던 화면이 조용히 다른 모양의 값을 받게 되어 타입으로도 잡히지 않는다. 새로 쓰는 화면은 켜는 쪽이 다루기 쉽다 — 서버로 보내는 것도, 폼 상태에 담는 것도 결국 값 하나이기 때문이다. |
13
13
  | `name?` | `string` | — | 폼 연동용 name 속성 |
14
14
  | `options?` | `SSelectOption[]` | `[]` | 옵션 목록 (children으로 계층 표현) |
15
15
  | `type?` | `SSelectType` | `'default'` | 타입: default | multi | default_depth | multi_depth |
16
- | `useSearch?` | `boolean` | `false` | 검색 입력 사용 |
17
- | `useSelectAll?` | `boolean` | `false` | 전체선택 옵션 사용 (multi 전용) |
16
+ | `showSearch?` | `boolean` | `false` | 검색 입력 사용 |
17
+ | `showSelectAll?` | `boolean` | `false` | 전체선택 옵션 사용 (multi 전용) |
18
18
  | `allSelectedLabel?` | `string` | `'전체'` | 전체선택 레이블 |
19
19
  | `placeholder?` | `string` | `'선택'` | placeholder |
20
20
  | `disabled?` | `boolean` | `false` | 비활성 |
21
+ | `clearable?` | `boolean` | `false` | 선택값 지우기(×) 버튼 노출. 선택값이 있고 비활성이 아닐 때만 나타나며, 누르면 드롭다운을 열지 않고 값만 비운다. |
21
22
  | `error?` | `boolean` | `false` | 에러 상태 |
22
23
  | `rules?` | `Rule[]` | — | 유효성 규칙 — 닫힐 때 자동 검증 |
23
24
  | `labelTooltipProps?` | `Partial<STooltipProps>` | — | 레이블 툴팁 상세 옵션 |
24
- | `dropdownHeight?` | `string` | `'260px'` | 드롭다운 최대 높이 |
25
+ | `dropdownHeight?` | `string` | `'640px'` | 드롭다운 최대 높이. 기본 640px — 창이 이보다 작으면 창 안에 남는 만큼까지만 채워진다 |
25
26
  | `dropdownWidth?` | `string` | — | 드롭다운 너비 (없으면 트리거 너비). 창보다 넓게 줘도 창 폭까지만 벌어진다. |
26
27
  | `maxDropdownWidth?` | `string` | `'640px'` | 드롭다운 최대 너비. 창이 이보다 좁으면 창 폭이 상한이 된다. |
28
+ | `virtualBuffer?` | `number` | `DEFAULT_VIRTUAL_BUFFER` | 화면 위·아래로 더 그려둘 여유 행 수 — 빠르게 스크롤할 때 빈 칸이 보이지 않게 한다. 목록은 **언제나 보이는 범위만 렌더한다**(끄는 prop 은 없다). 그래서 여는 비용이 옵션 수와 무관하고, 이 값만이 DOM 에 남는 행 수를 정한다 — 한 화면 분량 + 앞뒤로 이만큼. |
29
+ | `reachEndThreshold?` | `number` | `DEFAULT_REACH_END_THRESHOLD` | 목록 끝에서 이만큼 행이 남았을 때 `onReachEnd` 를 부른다 — 스크롤이 바닥에 닿기 전에 미리 받아 둔다. **한 페이지 크기보다 충분히 작게 잡는다.** 한 페이지가 드롭다운을 채우고도 이 문턱만큼 남기지 못하면, 페이지가 도착하는 족족 다음 페이지를 다시 청하게 된다 — 사용자가 스크롤을 하지 않아도 목록 전체를 받아 오므로 페이징을 한 의미가 사라진다. (한 페이지 50개 · 드롭다운에 20행이 보인다면 남는 것은 30행이므로, 문턱은 그보다 작아야 한다) |
30
+ | `hasMore?` | `boolean` | `false` | 더 받아올 페이지가 남았는가. `false` 면 `onReachEnd` 를 더 부르지 않는다 |
31
+ | `loading?` | `boolean` | `false` | 다음 페이지를 받는 중 — 목록 하단에 로딩 표시를 내고, 그동안 `onReachEnd` 를 다시 부르지 않는다 |
32
+ | `serverSearch?` | `boolean` | `false` | 검색을 서버로 넘긴다 — 내부 필터링을 하지 않고 `options` 를 받은 그대로 보여준다. `onSearchChange` 로 온 검색어에 맞는 목록을 소비 앱이 다시 내려줘야 한다. 켜면 검색바가 옵션 수와 무관하게 항상 나온다 — 검색 결과가 줄었다고 검색바가 사라지면 검색어를 지울 수단이 없어지기 때문이다. |
33
+ | `searchDebounce?` | `number` | `DEFAULT_SEARCH_DEBOUNCE` | `serverSearch` 에서 검색어를 서버로 넘기기 전 기다리는 시간(ms) |
27
34
  | `label?` | `string` | — | |
35
+ | `labelPosition?` | `SFieldLabelPosition` | — | 레이블 위치 — `top` 이면 라벨이 컨트롤 위에 선다 (SField 로 그대로 넘어간다). |
28
36
  | `labelWidth?` | `number \| string` | — | |
29
37
  | `icon?` | `SIconName` | — | 레이블 영역 아이콘 |
30
38
  | `iconColor?` | `SColor` | — | |
@@ -33,7 +41,7 @@
33
41
  | `addonAlign?` | `SFieldAddonAlign` | — | 어드온 정렬 |
34
42
  | `hint?` | `string` | — | |
35
43
  | `errorMessage?` | `string` | — | |
36
- | `width?` | `number \| string` | — | |
44
+ | `width?` | `SFieldWidth` | — | 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이. 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다. 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다. 셀렉트는 `maxLength` 개념이 없어 목록 최장값을 담는 등급으로 고른다. |
37
45
  | `className?` | `string` | — | |
38
46
  | `style?` | `CSSProperties` | — | |
39
47
 
@@ -41,8 +49,10 @@
41
49
 
42
50
  | Event | Type | Description |
43
51
  |-------|------|-------------|
44
- | `onValueChange` | `(value: any) => void` | 값 변경 (sdUpdate). emitValue=false(기본)면 SSelectOption(들), true면 원시값 |
52
+ | `onValueChange` | `(value: any) => void` | 값 변경. 기본은 SSelectOption(들)이 오고, `valueAsPrimitive` 면 원시값이 온다 |
45
53
  | `onOpenChange` | `(open: boolean) => void` | 열림/닫힘 변경 (sdDropDownShow) |
54
+ | `onReachEnd` | `() => void` | 목록 끝이 가까워지면 부른다 — 다음 페이지를 받아 `options` 뒤에 이어붙이라는 신호다. `hasMore` 가 `false` 이거나 `loading` 중이면 부르지 않고, 같은 목록 길이로 두 번 부르지 않는다. **`options` 는 갈아끼우지 말고 이어붙인다.** depth 타입이면 이미 있는 그룹의 `children` 에 이어야 한다 — 같은 그룹을 새 항목으로 또 밀어 넣으면 목록에 같은 헤더가 두 번 뜬다. 아직 받지 않은 옵션은 라벨을 알 수 없다. 그래서 이 prop 을 쓰는 화면은 `valueAsPrimitive` 를 켜지 않는 편이 안전하다 — 기본값(옵션 객체)이면 선택값이 라벨을 함께 들고 다녀서, 그 옵션이 목록에서 사라져도 트리거에 이름이 그대로 남는다. |
55
+ | `onSearchChange` | `(query: string) => void` | 검색어 변경. `serverSearch` 면 `searchDebounce` 만큼 묶어서 온다 |
46
56
 
47
57
  #### Methods (ref)
48
58
 
@@ -51,30 +61,47 @@
51
61
  | `focus` | `() => void` | 트리거 버튼에 포커스 (sdFocus) |
52
62
  | `open` | `() => void` | 드롭다운 열기 (sdOpen) |
53
63
 
64
+ ## Types
65
+
66
+ ### SSelectOption
67
+
68
+ ```ts
69
+ export interface SSelectOption {
70
+ value: string | number;
71
+ label: string;
72
+ disabled?: boolean;
73
+ children?: SSelectOption[];
74
+ }
75
+ ```
76
+
77
+ ### SSelectType
78
+
79
+ ```ts
80
+ export type SSelectType = 'default' | 'multi' | 'default_depth' | 'multi_depth';
81
+ ```
82
+
54
83
  ## Dependencies
55
84
 
56
85
  ### Used by
57
86
 
58
- - [SChipFilter](../SChipFilter)
59
87
  - [SKeyValueTable](../SKeyValueTable)
60
88
  - [STable](../STable)
61
89
 
62
90
  ### Depends on
63
91
 
64
92
  - [SField](../SField)
65
- - [SGhostButton](../SGhostButton)
66
93
  - [SIcon](../SIcon)
67
94
  - [SPortal](../SPortal)
95
+ - [SSearchInput](../SSearchInput)
68
96
 
69
97
  ### Graph
70
98
 
71
99
  ```mermaid
72
100
  graph TD;
73
101
  SSelect --> SField
74
- SSelect --> SGhostButton
75
102
  SSelect --> SIcon
76
103
  SSelect --> SPortal
77
- SChipFilter --> SSelect
104
+ SSelect --> SSearchInput
78
105
  SKeyValueTable --> SSelect
79
106
  STable --> SSelect
80
107
  style SSelect fill:#f9f,stroke:#333,stroke-width:4px
@@ -1,10 +1,11 @@
1
1
  import { type CSSProperties } from 'react';
2
2
  import { type Rule } from '../../lib/form';
3
- import { type SFieldAddonAlign } from '../SField';
3
+ import { type SFieldAddonAlign, type SFieldLabelPosition } from '../SField';
4
4
  import { type SIconName } from '../SIcon';
5
5
  import { type SColor } from '../../lib/color';
6
6
  import { type STooltipProps } from '../STooltip';
7
7
  import { type SSelectOption, type SSelectType } from './select.config';
8
+ import { type SFieldWidth } from '../../lib/field-width';
8
9
  export type { SSelectOption, SSelectType } from './select.config';
9
10
  export interface SSelectHandle {
10
11
  /** 트리거 버튼에 포커스 (sdFocus) */
@@ -13,14 +14,22 @@ export interface SSelectHandle {
13
14
  open: () => void;
14
15
  }
15
16
  export interface SSelectProps {
16
- /** 선택 값. multi 타입이면 배열. emitValue=false(기본) 라운드트립을 위해 SSelectOption 객체도 허용 */
17
+ /** 선택 값. multi 타입이면 배열. 기본(valueAsPrimitive=false) 라운드트립을 위해 SSelectOption 객체도 허용 */
17
18
  value?: (string | number | SSelectOption) | (string | number | SSelectOption)[] | null;
18
- /** 값 변경 (sdUpdate). emitValue=false(기본)면 SSelectOption(들), true면 원시값 */
19
+ /** 값 변경. 기본은 SSelectOption(들)이 오고, `valueAsPrimitive` 면 원시값이 온다 */
19
20
  onValueChange?: (value: any) => void;
20
21
  /** 열림/닫힘 변경 (sdDropDownShow) */
21
22
  onOpenChange?: (open: boolean) => void;
22
- /** true면 SSelectOption 대신 원시값(string|number) 방출 */
23
- emitValue?: boolean;
23
+ /**
24
+ * `value`·`onValueChange` 가 옵션 객체 대신 원시값(string|number)을 주고받는다.
25
+ *
26
+ * **기본값 `false`(옵션 객체)는 유지한다** — 원본(sd-select) 호환 때문이고, 뒤집으면 이 값을
27
+ * 주지 않던 화면이 조용히 다른 모양의 값을 받게 되어 타입으로도 잡히지 않는다.
28
+ *
29
+ * 새로 쓰는 화면은 켜는 쪽이 다루기 쉽다 — 서버로 보내는 것도, 폼 상태에 담는 것도
30
+ * 결국 값 하나이기 때문이다.
31
+ */
32
+ valueAsPrimitive?: boolean;
24
33
  /** 폼 연동용 name 속성 */
25
34
  name?: string;
26
35
  /** 옵션 목록 (children으로 계층 표현) */
@@ -28,28 +37,84 @@ export interface SSelectProps {
28
37
  /** 타입: default | multi | default_depth | multi_depth */
29
38
  type?: SSelectType;
30
39
  /** 검색 입력 사용 */
31
- useSearch?: boolean;
40
+ showSearch?: boolean;
32
41
  /** 전체선택 옵션 사용 (multi 전용) */
33
- useSelectAll?: boolean;
42
+ showSelectAll?: boolean;
34
43
  /** 전체선택 레이블 */
35
44
  allSelectedLabel?: string;
36
45
  /** placeholder */
37
46
  placeholder?: string;
38
47
  /** 비활성 */
39
48
  disabled?: boolean;
49
+ /**
50
+ * 선택값 지우기(×) 버튼 노출. 선택값이 있고 비활성이 아닐 때만 나타나며,
51
+ * 누르면 드롭다운을 열지 않고 값만 비운다.
52
+ */
53
+ clearable?: boolean;
40
54
  /** 에러 상태 */
41
55
  error?: boolean;
42
56
  /** 유효성 규칙 — 닫힐 때 자동 검증 */
43
57
  rules?: Rule[];
44
58
  /** 레이블 툴팁 상세 옵션 */
45
59
  labelTooltipProps?: Partial<STooltipProps>;
46
- /** 드롭다운 최대 높이 */
60
+ /** 드롭다운 최대 높이. 기본 640px — 창이 이보다 작으면 창 안에 남는 만큼까지만 채워진다 */
47
61
  dropdownHeight?: string;
48
62
  /** 드롭다운 너비 (없으면 트리거 너비). 창보다 넓게 줘도 창 폭까지만 벌어진다. */
49
63
  dropdownWidth?: string;
50
64
  /** 드롭다운 최대 너비. 창이 이보다 좁으면 창 폭이 상한이 된다. */
51
65
  maxDropdownWidth?: string;
66
+ /**
67
+ * 화면 위·아래로 더 그려둘 여유 행 수 — 빠르게 스크롤할 때 빈 칸이 보이지 않게 한다.
68
+ *
69
+ * 목록은 **언제나 보이는 범위만 렌더한다**(끄는 prop 은 없다). 그래서 여는 비용이 옵션
70
+ * 수와 무관하고, 이 값만이 DOM 에 남는 행 수를 정한다 — 한 화면 분량 + 앞뒤로 이만큼.
71
+ */
72
+ virtualBuffer?: number;
73
+ /**
74
+ * 목록 끝이 가까워지면 부른다 — 다음 페이지를 받아 `options` 뒤에 이어붙이라는 신호다.
75
+ * `hasMore` 가 `false` 이거나 `loading` 중이면 부르지 않고, 같은 목록 길이로 두 번 부르지 않는다.
76
+ *
77
+ * **`options` 는 갈아끼우지 말고 이어붙인다.** depth 타입이면 이미 있는 그룹의 `children`
78
+ * 에 이어야 한다 — 같은 그룹을 새 항목으로 또 밀어 넣으면 목록에 같은 헤더가 두 번 뜬다.
79
+ *
80
+ * 아직 받지 않은 옵션은 라벨을 알 수 없다. 그래서 이 prop 을 쓰는 화면은
81
+ * `valueAsPrimitive` 를 켜지 않는 편이 안전하다 — 기본값(옵션 객체)이면 선택값이 라벨을
82
+ * 함께 들고 다녀서, 그 옵션이 목록에서 사라져도 트리거에 이름이 그대로 남는다.
83
+ */
84
+ onReachEnd?: () => void;
85
+ /**
86
+ * 목록 끝에서 이만큼 행이 남았을 때 `onReachEnd` 를 부른다 — 스크롤이 바닥에 닿기 전에 미리 받아 둔다.
87
+ *
88
+ * **한 페이지 크기보다 충분히 작게 잡는다.** 한 페이지가 드롭다운을 채우고도 이 문턱만큼
89
+ * 남기지 못하면, 페이지가 도착하는 족족 다음 페이지를 다시 청하게 된다 — 사용자가 스크롤을
90
+ * 하지 않아도 목록 전체를 받아 오므로 페이징을 한 의미가 사라진다.
91
+ * (한 페이지 50개 · 드롭다운에 20행이 보인다면 남는 것은 30행이므로, 문턱은 그보다 작아야 한다)
92
+ */
93
+ reachEndThreshold?: number;
94
+ /** 더 받아올 페이지가 남았는가. `false` 면 `onReachEnd` 를 더 부르지 않는다 */
95
+ hasMore?: boolean;
96
+ /** 다음 페이지를 받는 중 — 목록 하단에 로딩 표시를 내고, 그동안 `onReachEnd` 를 다시 부르지 않는다 */
97
+ loading?: boolean;
98
+ /**
99
+ * 검색을 서버로 넘긴다 — 내부 필터링을 하지 않고 `options` 를 받은 그대로 보여준다.
100
+ * `onSearchChange` 로 온 검색어에 맞는 목록을 소비 앱이 다시 내려줘야 한다.
101
+ *
102
+ * 켜면 검색바가 옵션 수와 무관하게 항상 나온다 — 검색 결과가 줄었다고 검색바가 사라지면
103
+ * 검색어를 지울 수단이 없어지기 때문이다.
104
+ */
105
+ serverSearch?: boolean;
106
+ /** 검색어 변경. `serverSearch` 면 `searchDebounce` 만큼 묶어서 온다 */
107
+ onSearchChange?: (query: string) => void;
108
+ /** `serverSearch` 에서 검색어를 서버로 넘기기 전 기다리는 시간(ms) */
109
+ searchDebounce?: number;
52
110
  label?: string;
111
+ /**
112
+ * 레이블 위치 — `top` 이면 라벨이 컨트롤 위에 선다 (SField 로 그대로 넘어간다).
113
+ *
114
+ * @nodemo SField 에서 내려오는 공통 필드 옵션이다 — 같은 데모를 컨트롤마다 복제하지 않고
115
+ * 대표 컨트롤 `SInput` 과 `SField` 에 한 번 둔다 (scripts/check-docs-coverage.mjs 머리말).
116
+ */
117
+ labelPosition?: SFieldLabelPosition;
53
118
  labelWidth?: number | string;
54
119
  /** 레이블 영역 아이콘 */
55
120
  icon?: SIconName;
@@ -62,7 +127,13 @@ export interface SSelectProps {
62
127
  addonAlign?: SFieldAddonAlign;
63
128
  hint?: string;
64
129
  errorMessage?: string;
65
- width?: number | string;
130
+ /**
131
+ * 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이.
132
+ * 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다.
133
+ * 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다.
134
+ * 셀렉트는 `maxLength` 개념이 없어 목록 최장값을 담는 등급으로 고른다.
135
+ */
136
+ width?: SFieldWidth;
66
137
  className?: string;
67
138
  style?: CSSProperties;
68
139
  }
@@ -29,3 +29,18 @@ export declare function collectGroupLeafValues(flat: FlatOption[], groupIndex: n
29
29
  export declare const isHtmlLabel: (label: string) => boolean;
30
30
  /** HTML 라벨에서 태그를 제거한 텍스트 (검색 매칭용, 원본 extractText) */
31
31
  export declare const extractText: (html: string) => string;
32
+ /**
33
+ * 아직 한 번도 그려지지 않은 행의 **추정** 높이(px). 리프 옵션은 세로 패딩 4px + 행간 20px
34
+ * 이라 보통 이 값이지만, 그룹 헤더나 큰 글씨가 섞인 라벨은 다르다 — 화면에 나온 행은
35
+ * 실측으로 덮이므로(`lib/row-metrics.ts`) 이 값은 처음 스크롤바 길이를 잡는 출발점일 뿐이다.
36
+ */
37
+ export declare const OPTION_ROW_HEIGHT = 28;
38
+ /**
39
+ * 화면 위·아래로 더 그려둘 기본 여유 행 수.
40
+ * 640px 드롭다운이 20행 남짓 보이므로, 앞뒤 10행이면 한 화면을 굴리는 동안 빈 칸이 보이지 않는다.
41
+ */
42
+ export declare const DEFAULT_VIRTUAL_BUFFER = 10;
43
+ /** 목록 끝에서 이만큼 행이 남았을 때 다음 페이지를 청하는 기본값 */
44
+ export declare const DEFAULT_REACH_END_THRESHOLD = 10;
45
+ /** `serverSearch` 에서 검색어를 서버로 넘기기 전 기다리는 기본 시간(ms) */
46
+ export declare const DEFAULT_SEARCH_DEBOUNCE = 300;
@@ -12,7 +12,7 @@
12
12
  | `defaultValue?` | `number` | — | 첫 패널 초기 크기. uncontrolled. 기본은 '%' 면 50, 'px' 면 240 |
13
13
  | `unit?` | `SSplitterUnit` | `'%'` | 모델·limits 를 읽는 단위 |
14
14
  | `limits?` | `readonly [number, number]` | — | [최소, 최대]. 생략하면 '%' 는 [10, 90], 'px' 는 [50, Infinity] |
15
- | `emitImmediately?` | `boolean` | `false` | 드래그하는 동안에도 onValueChange 를 계속 보낸다 |
15
+ | `updateWhileDragging?` | `boolean` | `false` | 드래그하는 동안에도 `onValueChange` 를 계속 보낸다. 기본은 놓는 순간 한 번만 — 미리보기는 컴포넌트가 내부에서 그리므로, 값을 저장하는 쪽이 프레임마다 불릴 이유가 없다. 패널 크기에 맞춰 밖의 무언가를 실시간으로 다시 그려야 할 때만 켠다. |
16
16
  | `vertical?` | `boolean` | `false` | true면 패널을 위아래로 쌓는다 (Quasar q-splitter 의 horizontal 에 해당) |
17
17
  | `disabled?` | `boolean` | `false` | true면 크기를 바꿀 수 없다. 커서도 구분선도 나오지 않는다 |
18
18
  | `dividerClassName?` | `string` | — | 구분선에 얹을 클래스 |
@@ -23,5 +23,20 @@
23
23
 
24
24
  | Event | Type | Description |
25
25
  |-------|------|-------------|
26
- | `onValueChange` | `(value: number) => void` | 크기가 확정될 때. emitImmediately 가 아니면 드래그를 놓는 순간 한 번만 온다 |
26
+ | `onValueChange` | `(value: number) => void` | 크기가 확정될 때. `updateWhileDragging` 이 아니면 드래그를 놓는 순간 한 번만 온다 |
27
+
28
+ ## Types
29
+
30
+ ### SSplitterUnit
31
+
32
+ ```ts
33
+ /** 모델·limits 를 읽는 단위. Quasar QSplitter 의 `unit` 과 같다. */
34
+ export type SSplitterUnit = (typeof SSPLITTER_UNITS)[number];
35
+ ```
36
+
37
+ ### SSPLITTER_UNITS
38
+
39
+ ```ts
40
+ export const SSPLITTER_UNITS = ['%', 'px'] as const;
41
+ ```
27
42
 
@@ -7,14 +7,18 @@ export interface SSplitterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'de
7
7
  value?: number;
8
8
  /** 첫 패널 초기 크기. uncontrolled. 기본은 '%' 면 50, 'px' 면 240 */
9
9
  defaultValue?: number;
10
- /** 크기가 확정될 때. emitImmediately 가 아니면 드래그를 놓는 순간 한 번만 온다 */
10
+ /** 크기가 확정될 때. `updateWhileDragging` 이 아니면 드래그를 놓는 순간 한 번만 온다 */
11
11
  onValueChange?: (value: number) => void;
12
12
  /** 모델·limits 를 읽는 단위 */
13
13
  unit?: SSplitterUnit;
14
14
  /** [최소, 최대]. 생략하면 '%' 는 [10, 90], 'px' 는 [50, Infinity] */
15
15
  limits?: readonly [number, number];
16
- /** 드래그하는 동안에도 onValueChange 를 계속 보낸다 */
17
- emitImmediately?: boolean;
16
+ /**
17
+ * 드래그하는 동안에도 `onValueChange` 를 계속 보낸다. 기본은 놓는 순간 한 번만 —
18
+ * 미리보기는 컴포넌트가 내부에서 그리므로, 값을 저장하는 쪽이 프레임마다 불릴 이유가 없다.
19
+ * 패널 크기에 맞춰 밖의 무언가를 실시간으로 다시 그려야 할 때만 켠다.
20
+ */
21
+ updateWhileDragging?: boolean;
18
22
  /** true면 패널을 위아래로 쌓는다 (Quasar q-splitter 의 horizontal 에 해당) */
19
23
  vertical?: boolean;
20
24
  /** true면 크기를 바꿀 수 없다. 커서도 구분선도 나오지 않는다 */
@@ -30,6 +30,32 @@
30
30
  | `showItemTooltip` | `() => void` | error 아이템 중 첫 번째에 툴팁을 연다. error 아이템이 없으면 아무 일도 일어나지 않는다. |
31
31
  | `hideItemTooltip` | `() => void` | 열려있는 커스텀 툴팁을 닫는다. 활성 단계(value prop)가 바뀌면 별도 호출 없이도 자동으로 닫힌다. |
32
32
 
33
+ ## Types
34
+
35
+ ### SStepperItem
36
+
37
+ ```ts
38
+ export type SStepperItem = {
39
+ label: string;
40
+ value?: string;
41
+ group?: string;
42
+ completed?: boolean;
43
+ error?: boolean;
44
+ };
45
+ ```
46
+
47
+ ### SStepperSize
48
+
49
+ ```ts
50
+ export type SStepperSize = (typeof STEPPER_SIZES)[number];
51
+ ```
52
+
53
+ ### STEPPER_SIZES
54
+
55
+ ```ts
56
+ export const STEPPER_SIZES = ['sm', 'lg'] as const;
57
+ ```
58
+
33
59
  ## Dependencies
34
60
 
35
61
  ### Depends on
@@ -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,246 @@
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
+ ### SSystemActionButton
25
+
26
+ #### Props
27
+
28
+ | Prop | Type | Default | Description |
29
+ |------|------|---------|-------------|
30
+ | `type` | `'account' \| 'select' \| 'switch' \| 'subSelect' \| 'status'` | — | 계정 행 |
31
+ | `label?` | `string` | — | 라벨 텍스트 |
32
+ | `option?` | `<union 5종>` | — | 누르면 뜨는 계정 리스트박스. **필수다** — 계정 행은 늘 이 패널의 트리거이고, 눌러도 아무것도 뜨지 않는 계정 행은 없다. 아이콘은 `user` 로 고정이라 여기서 받지 않는다. |
33
+
34
+ ### SSystemActionButtonSelect
35
+
36
+ #### Props
37
+
38
+ | Prop | Type | Default | Description |
39
+ |------|------|---------|-------------|
40
+ | `type` | `'select'` | — | 화살표만 붙는 행 |
41
+ | `label?` | `string` | — | 라벨 텍스트 |
42
+ | `option?` | `SSystemActionButtonIconOption` | — | 선행 아이콘. 아이콘 없이 라벨만 두는 행이면 통째로 생략한다 |
43
+
44
+ ### SSystemActionButtonStatus
45
+
46
+ #### Props
47
+
48
+ | Prop | Type | Default | Description |
49
+ |------|------|---------|-------------|
50
+ | `type` | `'status'` | — | 라벨 자리에 상태 태그가 들어가는 행 |
51
+ | `label?` | `never` | — | 태그가 라벨 자리를 차지하므로 받지 않는다 |
52
+ | `option` | `SSystemActionButtonStatusOption` | — | 상태 태그 + 고를 목록. **필수다** — 상태 행은 늘 그 상태를 바꾸는 메뉴의 트리거다. |
53
+
54
+ ### SSystemActionButtonSubSelect
55
+
56
+ #### Props
57
+
58
+ | Prop | Type | Default | Description |
59
+ |------|------|---------|-------------|
60
+ | `type` | `'subSelect'` | — | 우측에 지금 선택된 값이 붙는 행 |
61
+ | `label?` | `string` | — | 라벨 텍스트 |
62
+ | `option` | `SSystemActionButtonSubSelectOption` | — | 선행 아이콘 + 우측 값 + 고를 목록 |
63
+
64
+ ### SSystemActionButtonSwitch
65
+
66
+ #### Props
67
+
68
+ | Prop | Type | Default | Description |
69
+ |------|------|---------|-------------|
70
+ | `type` | `'switch'` | — | 우측에 보조 조작 문구가 붙는 행 |
71
+ | `label?` | `string` | — | 라벨 텍스트 |
72
+ | `option?` | `SSystemActionButtonTextOption` | — | 선행 아이콘 + 우측 액션 텍스트. 둘 다 두지 않으면 통째로 생략한다 |
73
+
74
+ ### SSystemActionButtonText
75
+
76
+ #### Props
77
+
78
+ | Prop | Type | Default | Description |
79
+ |------|------|---------|-------------|
80
+ | `type` | `'switch' \| 'subSelect'` | — | 우측에 보조 조작 문구가 붙는 행 |
81
+ | `label?` | `string` | — | 라벨 텍스트 |
82
+ | `option?` | `SSystemActionButtonTextOption \| SSystemActionButtonSubSelectOption` | — | 선행 아이콘 + 우측 액션 텍스트. 둘 다 두지 않으면 통째로 생략한다 |
83
+
84
+ ## Types
85
+
86
+ ### SSystemActionButtonAccountOption
87
+
88
+ ```ts
89
+ /**
90
+ * `account` 타입의 option — 행을 눌렀을 때 뜨는 계정 리스트박스.
91
+ * 내용(이메일·이름·권한·행들)은 `SAccountListBox` 와 같다.
92
+ *
93
+ * **뜨는 자리는 받지 않는다.** 계정 행이 놓인 자리가 정한다 — 판이면 행 위로 · 왼쪽 끝에 맞춰,
94
+ * 전폭 상단바면 행 아래로 · 오른쪽 끝에 맞춰 펼친다(시안). 화면마다 고를 값이 아니라,
95
+ * prop 으로 열면 같은 계정 행이 앱마다 다른 방향으로 뜬다.
96
+ */
97
+ export interface SSystemActionButtonAccountOption extends SAccountListBoxContent {
98
+ /**
99
+ * 리스트박스 열림 상태를 밖에서 쥔다(controlled). 주지 않으면 버튼이 스스로 여닫는다.
100
+ * 행을 담은 쪽이 닫아야 하는 자리가 있어 열어 둔 통로다 — 리스트박스는 SPortal 로 떠 있어
101
+ * 트리거가 화면에서 빠져도(GNB 를 접으면 메뉴 컬럼이 미끄러져 나간다) 따라 사라지지 않는다.
102
+ */
103
+ open?: boolean;
104
+ /** 리스트박스 열림/닫힘 변경 */
105
+ onOpenChange?: (open: boolean) => void;
106
+ }
107
+ ```
108
+
109
+ ### SSystemActionButtonColor
110
+
111
+ ```ts
112
+ export type SSystemActionButtonColor = (typeof SYSTEM_ACTION_BUTTON_COLORS)[number];
113
+ ```
114
+
115
+ ### SSystemActionButtonIconOption
116
+
117
+ ```ts
118
+ /** 선행 아이콘만 받는 타입(`select`)의 option */
119
+ export interface SSystemActionButtonIconOption {
120
+ /** 선행 아이콘명. 주지 않으면 아이콘 프레임 없이 라벨부터 시작한다 */
121
+ icon?: SIconName;
122
+ }
123
+ ```
124
+
125
+ ### SSystemActionButtonStatusOption
126
+
127
+ ```ts
128
+ /**
129
+ * `status` 타입의 option — 라벨 자리에 들어가는 상태 태그 + 고를 목록.
130
+ *
131
+ * `options` 는 **필수다** — 상태 행은 늘 그 상태를 바꾸는 메뉴의 트리거이고, 지금 상태(`value`)에
132
+ * 해당하는 칸의 색·이름이 곧 태그가 된다. 보여주기만 하는 상태 줄이 필요하면 이 버튼이 아니라
133
+ * `STag` 를 쓴다.
134
+ */
135
+ export interface SSystemActionButtonStatusOption {
136
+ /** 지금 상태. `options` 에서 같은 `value` 를 찾아 그 색·이름으로 태그를 그린다 */
137
+ value?: string;
138
+ /** 고를 수 있는 상태. **필수다** — 이 목록이 행 오른쪽으로 펼쳐진다 */
139
+ options: SSystemActionButtonStatusMenuOption[];
140
+ /** 메뉴에서 상태를 고름. 고르면 메뉴가 닫힌다 */
141
+ onChange?: (value: string) => void;
142
+ }
143
+ ```
144
+
145
+ ### SSystemActionButtonSubSelectOption
146
+
147
+ ```ts
148
+ /**
149
+ * `subSelect` 타입의 option — 지금 값 + 고를 목록.
150
+ *
151
+ * `options` 는 **필수다** — `subSelect` 는 "지금 값이 적혀 있고 눌러서 바꾸는 행"이라, 눌러도
152
+ * 아무것도 뜨지 않으면 그것은 `select`(눌러 들어가는 행)이지 `subSelect` 가 아니다.
153
+ */
154
+ export interface SSystemActionButtonSubSelectOption extends SSystemActionButtonIconOption {
155
+ /**
156
+ * 선행 아이콘. `select` · `switch` 와 달리 **필수다** — 우측이 지금 값에 쓰이는 행이라
157
+ * 라벨 왼쪽까지 비면 무엇에 대한 값인지 가리키는 것이 라벨 글자 하나뿐이 된다.
158
+ */
159
+ icon: SIconName;
160
+ /**
161
+ * 지금 값. `options` 에서 같은 `value` 를 찾아 우측에 그 `label` 로 적는다
162
+ * (못 찾으면 `value` 가 그대로 남는다).
163
+ */
164
+ value?: string;
165
+ /** 고를 수 있는 값. **필수다** — 이 목록이 행 오른쪽으로 펼쳐진다 */
166
+ options: SSystemActionButtonMenuOption[];
167
+ /** 메뉴에서 값을 고름. 고르면 메뉴가 닫힌다 */
168
+ onChange?: (value: string) => void;
169
+ }
170
+ ```
171
+
172
+ ### SSystemActionButtonTextOption
173
+
174
+ ```ts
175
+ /** 우측 액션 텍스트까지 받는 타입(`switch`)의 option */
176
+ export interface SSystemActionButtonTextOption extends SSystemActionButtonIconOption {
177
+ /** 우측 액션 텍스트 */
178
+ text?: string;
179
+ }
180
+ ```
181
+
182
+ ### SYSTEM_ACTION_BUTTON_COLORS
183
+
184
+ ```ts
185
+ /**
186
+ * SSystemActionButton 설정.
187
+ *
188
+ * 토큰은 GNB system 패널 한 벌(`--cmp-gnb-system-*`)을 그대로 쓴다.
189
+ * 행 공통(높이·라운드·아이콘 프레임·라벨) → --cmp-gnb-system-item-*
190
+ * 색(color 축) light / dark / darker → --cmp-gnb-system-item-<color>-*
191
+ * 우측 액션(패딩·간격·아이콘·텍스트색) → --cmp-gnb-system-actionButton-*
192
+ *
193
+ * 타이포그래피는 CSS 변수가 아니라 `.typo-*` 프리셋으로 나온다.
194
+ * item.label → typo-body-sm-semibold (12/600/20)
195
+ * actionButton.switch → typo-field-sm-default (12/400/20)
196
+ * actionButton.selectData → typo-control-xs-medium (12/500/20)
197
+ */
198
+
199
+ /** 색상(표면). light = 흰 면, dark = 오션블루 면, darker = 네이비 면 */
200
+ export const SYSTEM_ACTION_BUTTON_COLORS = ['light', 'dark', 'darker'] as const;
201
+ ```
202
+
203
+ ### SSystemActionButtonStatusMenuOption
204
+
205
+ ```ts
206
+ /** 상태 메뉴의 한 칸 — 점과 글자가 그 상태의 색으로 함께 물든다 */
207
+ export interface SSystemActionButtonStatusMenuOption extends SSystemActionButtonMenuOption {
208
+ /** 상태 색. 기본 `'blue'` */
209
+ color?: STagColor;
210
+ }
211
+ ```
212
+
213
+ ### SSystemActionButtonMenuOption
214
+
215
+ ```ts
216
+ /** 값 고르기 메뉴의 한 칸 */
217
+ export interface SSystemActionButtonMenuOption {
218
+ /** 값. `option.value` 와 맞춰 지금 값을 가린다 */
219
+ value: string;
220
+ /** 화면에 적히는 이름 */
221
+ label: string;
222
+ }
223
+ ```
224
+
225
+ ## Dependencies
226
+
227
+ ### Used by
228
+
229
+ - [SGnbSystem](../SGnbSystem)
230
+
231
+ ### Depends on
232
+
233
+ - [SAccountListBox](../SAccountListBox)
234
+ - [SIcon](../SIcon)
235
+ - [STag](../STag)
236
+
237
+ ### Graph
238
+
239
+ ```mermaid
240
+ graph TD;
241
+ SSystemActionButton --> SAccountListBox
242
+ SSystemActionButton --> SIcon
243
+ SSystemActionButton --> STag
244
+ SGnbSystem --> SSystemActionButton
245
+ style SSystemActionButton fill:#f9f,stroke:#333,stroke-width:4px
246
+ ```