sellmate-design-system-react 9.0.0-beta.9 → 9.0.0-beta.91

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 (419) hide show
  1. package/AGENTS.md +4079 -265
  2. package/README.md +76 -24
  3. package/bin/sellmate-ds.mjs +91 -59
  4. package/dist/components/SAccountListBox/AccountListBoxPortal.d.ts +31 -0
  5. package/dist/components/SAccountListBox/README.md +86 -0
  6. package/dist/components/SAccountListBox/SAccountListBox.d.ts +79 -0
  7. package/dist/components/SAccountListBox/SystemMenuPortal.d.ts +58 -0
  8. package/dist/components/SAccountListBox/accountListBox.config.d.ts +64 -0
  9. package/dist/components/SAccountListBox/index.d.ts +2 -0
  10. package/dist/components/SActionModal/README.md +1 -0
  11. package/dist/components/SActionModal/SActionModal.d.ts +9 -1
  12. package/dist/components/SBadge/README.md +27 -0
  13. package/dist/components/SBadge/SBadge.d.ts +1 -1
  14. package/dist/components/SBarChart/README.md +122 -0
  15. package/dist/components/SBarChart/SBarChart.d.ts +99 -0
  16. package/dist/components/SBarChart/barChart.config.d.ts +85 -0
  17. package/dist/components/SBarChart/index.d.ts +2 -0
  18. package/dist/components/SBarcodeInput/README.md +14 -4
  19. package/dist/components/SBarcodeInput/SBarcodeInput.d.ts +25 -3
  20. package/dist/components/SButton/README.md +40 -0
  21. package/dist/components/SCalendar/README.md +13 -0
  22. package/dist/components/SCalendarBoard/CalendarDayCard.d.ts +53 -0
  23. package/dist/components/SCalendarBoard/CalendarDayEventListBox.d.ts +26 -0
  24. package/dist/components/SCalendarBoard/CalendarEventButton.d.ts +20 -0
  25. package/dist/components/SCalendarBoard/CalendarMoreButton.d.ts +18 -0
  26. package/dist/components/SCalendarBoard/README.md +148 -0
  27. package/dist/components/SCalendarBoard/SCalendarBoard.d.ts +83 -0
  28. package/dist/components/SCalendarBoard/calendar-board-layout.d.ts +59 -0
  29. package/dist/components/SCalendarBoard/calendarBoard.config.d.ts +38 -0
  30. package/dist/components/SCalendarBoard/index.d.ts +3 -0
  31. package/dist/components/SCalendarBoard/types.d.ts +40 -0
  32. package/dist/components/SCallout/README.md +17 -1
  33. package/dist/components/SCallout/SCallout.d.ts +14 -4
  34. package/dist/components/SCard/README.md +17 -0
  35. package/dist/components/SCard/SCard.d.ts +26 -2
  36. package/dist/components/SChatAttachedFile/README.md +33 -0
  37. package/dist/components/SChatAttachedFile/SChatAttachedFile.d.ts +13 -0
  38. package/dist/components/SChatAttachedFile/chatAttachedFile.config.d.ts +23 -0
  39. package/dist/components/SChatAttachedFile/index.d.ts +2 -0
  40. package/dist/components/SChatFile/README.md +33 -0
  41. package/dist/components/SChatFile/SChatFile.d.ts +37 -0
  42. package/dist/components/SChatFile/chatFile.config.d.ts +56 -0
  43. package/dist/components/SChatFile/index.d.ts +2 -0
  44. package/dist/components/SChatInput/README.md +52 -0
  45. package/dist/components/SChatInput/SChatInput.d.ts +127 -0
  46. package/dist/components/SChatInput/index.d.ts +1 -0
  47. package/dist/components/SChatMessage/README.md +87 -0
  48. package/dist/components/SChatMessage/SChatMessage.d.ts +135 -0
  49. package/dist/components/SChatMessage/index.d.ts +1 -0
  50. package/dist/components/SChatSystemMessage/README.md +12 -0
  51. package/dist/components/SChatSystemMessage/SChatSystemMessage.d.ts +18 -0
  52. package/dist/components/SChatSystemMessage/index.d.ts +1 -0
  53. package/dist/components/SCheckbox/README.md +9 -0
  54. package/dist/components/SCheckbox/SCheckbox.d.ts +9 -1
  55. package/dist/components/SChip/README.md +25 -0
  56. package/dist/components/SChip/SChip.d.ts +8 -0
  57. package/dist/components/SChip/index.d.ts +1 -1
  58. package/dist/components/SChipFilter/README.md +369 -14
  59. package/dist/components/SChipFilter/SChipFilter.d.ts +169 -60
  60. package/dist/components/SChipFilter/index.d.ts +1 -1
  61. package/dist/components/SChipInput/README.md +22 -3
  62. package/dist/components/SChipInput/SChipInput.d.ts +53 -3
  63. package/dist/components/SChipInput/index.d.ts +1 -1
  64. package/dist/components/SCircleProgress/README.md +13 -2
  65. package/dist/components/SCircleProgress/SCircleProgress.d.ts +11 -3
  66. package/dist/components/SConfirmModal/README.md +13 -4
  67. package/dist/components/SConfirmModal/SConfirmModal.d.ts +46 -9
  68. package/dist/components/SContextAlert/README.md +52 -0
  69. package/dist/components/SContextAlert/SContextAlert.d.ts +51 -0
  70. package/dist/components/SContextAlert/contextAlert.config.d.ts +22 -0
  71. package/dist/components/SContextAlert/index.d.ts +2 -0
  72. package/dist/components/SDatePicker/README.md +23 -2
  73. package/dist/components/SDatePicker/SDatePicker.d.ts +50 -5
  74. package/dist/components/SDateRangePicker/README.md +23 -4
  75. package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +52 -7
  76. package/dist/components/SDivider/README.md +7 -0
  77. package/dist/components/SDivider/SDivider.d.ts +11 -0
  78. package/dist/components/SDonutChart/README.md +105 -0
  79. package/dist/components/SDonutChart/SDonutChart.d.ts +82 -0
  80. package/dist/components/SDonutChart/index.d.ts +1 -0
  81. package/dist/components/SDraggableItem/README.md +37 -0
  82. package/dist/components/SDraggableItem/SDraggableItem.d.ts +2 -0
  83. package/dist/components/SDraggableItem/index.d.ts +1 -1
  84. package/dist/components/SDraggableList/README.md +33 -3
  85. package/dist/components/SDraggableList/SDraggableList.d.ts +18 -3
  86. package/dist/components/SDraggableList/index.d.ts +1 -1
  87. package/dist/components/SDrawer/README.md +8 -0
  88. package/dist/components/SDropdownButton/README.md +19 -0
  89. package/dist/components/SEditor/EditorBody.d.ts +48 -0
  90. package/dist/components/SEditor/EditorToolbar.d.ts +93 -0
  91. package/dist/components/SEditor/README.md +207 -0
  92. package/dist/components/SEditor/SEditor.d.ts +128 -0
  93. package/dist/components/SEditor/editor-icons.d.ts +63 -0
  94. package/dist/components/SEditor/editor.config.d.ts +119 -0
  95. package/dist/components/SEditor/index.d.ts +8 -0
  96. package/dist/components/SEditor/tiptap-api.d.ts +29 -0
  97. package/dist/components/SEditor/use-is-mobile.d.ts +14 -0
  98. package/dist/components/SExpansionItem/README.md +39 -2
  99. package/dist/components/SExpansionItem/SExpansionItem.d.ts +18 -2
  100. package/dist/components/SExpansionItem/index.d.ts +1 -1
  101. package/dist/components/SField/README.md +38 -5
  102. package/dist/components/SField/SField.d.ts +59 -8
  103. package/dist/components/SField/index.d.ts +1 -1
  104. package/dist/components/SFilePicker/README.md +20 -4
  105. package/dist/components/SFilePicker/SFilePicker.d.ts +26 -6
  106. package/dist/components/SFooter/README.md +44 -0
  107. package/dist/components/SFooter/SFooter.d.ts +29 -13
  108. package/dist/components/SFooter/index.d.ts +1 -1
  109. package/dist/components/SForm/README.md +12 -1
  110. package/dist/components/SForm/SForm.d.ts +2 -2
  111. package/dist/components/SGhostButton/README.md +32 -5
  112. package/dist/components/SGhostButton/SGhostButton.d.ts +22 -4
  113. package/dist/components/SGnb/README.md +109 -8
  114. package/dist/components/SGnb/SGnb.d.ts +112 -11
  115. package/dist/components/SGnb/gnb.config.d.ts +18 -5
  116. package/dist/components/SGnb/index.d.ts +1 -1
  117. package/dist/components/SGnbSystem/README.md +186 -0
  118. package/dist/components/SGnbSystem/SGnbSystem.d.ts +179 -0
  119. package/dist/components/SGnbSystem/gnbSystem.config.d.ts +122 -0
  120. package/dist/components/SGnbSystem/index.d.ts +2 -0
  121. package/dist/components/SGuide/README.md +16 -1
  122. package/dist/components/SGuide/SGuide.d.ts +5 -2
  123. package/dist/components/SIcon/README.md +18 -0
  124. package/dist/components/SIcon/SIcon.d.ts +1 -1
  125. package/dist/components/SIcon/icons.gen.d.ts +20 -1
  126. package/dist/components/SImage/README.md +23 -1
  127. package/dist/components/SImage/SImage.d.ts +11 -8
  128. package/dist/components/SInput/README.md +8 -4
  129. package/dist/components/SInput/SInput.d.ts +17 -5
  130. package/dist/components/SKeyValueTable/README.md +88 -0
  131. package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +30 -3
  132. package/dist/components/SKeyValueTable/index.d.ts +1 -1
  133. package/dist/components/SLauncherListBox/README.md +82 -0
  134. package/dist/components/SLauncherListBox/SLauncherListBox.d.ts +80 -0
  135. package/dist/components/SLauncherListBox/index.d.ts +2 -0
  136. package/dist/components/SLauncherListBox/launcherListBox.config.d.ts +154 -0
  137. package/dist/components/SLayout/README.md +22 -1
  138. package/dist/components/SLayout/SLayout.d.ts +6 -2
  139. package/dist/components/SLayout/index.d.ts +1 -1
  140. package/dist/components/SLineChart/README.md +131 -0
  141. package/dist/components/SLineChart/SLineChart.d.ts +110 -0
  142. package/dist/components/SLineChart/index.d.ts +1 -0
  143. package/dist/components/SLineChart/lineChart.config.d.ts +95 -0
  144. package/dist/components/SLinearProgress/README.md +16 -1
  145. package/dist/components/SLinearProgress/SLinearProgress.d.ts +11 -2
  146. package/dist/components/SLinearProgress/index.d.ts +1 -1
  147. package/dist/components/SList/README.md +15 -2
  148. package/dist/components/SList/SList.d.ts +7 -3
  149. package/dist/components/SList/index.d.ts +1 -1
  150. package/dist/components/SListItem/README.md +43 -2
  151. package/dist/components/SListItem/SListItem.d.ts +12 -2
  152. package/dist/components/SListItem/index.d.ts +1 -1
  153. package/dist/components/SLoadingContainer/index.d.ts +1 -1
  154. package/dist/components/SLoadingContainer/loading.d.ts +41 -6
  155. package/dist/components/SLoadingModal/README.md +10 -2
  156. package/dist/components/SLoadingModal/SLoadingModal.d.ts +4 -4
  157. package/dist/components/SLoadingModal/index.d.ts +1 -1
  158. package/dist/components/SLoginCard/README.md +37 -0
  159. package/dist/components/SLoginCard/SLoginCard.d.ts +43 -0
  160. package/dist/components/SLoginCard/index.d.ts +1 -0
  161. package/dist/components/SLogo/README.md +103 -0
  162. package/dist/components/SLogo/SLogo.d.ts +72 -0
  163. package/dist/components/SLogo/index.d.ts +2 -0
  164. package/dist/components/SLogo/logo.config.d.ts +29 -0
  165. package/dist/components/SLogo/logos.d.ts +16 -0
  166. package/dist/components/SMeatballButton/README.md +67 -0
  167. package/dist/components/SMeatballButton/SMeatballButton.d.ts +36 -0
  168. package/dist/components/SMeatballButton/index.d.ts +1 -0
  169. package/dist/components/SModal/README.md +15 -5
  170. package/dist/components/SModal/SModal.d.ts +1 -1
  171. package/dist/components/SNumberInput/README.md +19 -8
  172. package/dist/components/SNumberInput/SNumberInput.d.ts +49 -7
  173. package/dist/components/SPage/README.md +105 -5
  174. package/dist/components/SPage/SPage.d.ts +34 -10
  175. package/dist/components/SPage/SPageHeader.d.ts +31 -13
  176. package/dist/components/SPage/index.d.ts +2 -2
  177. package/dist/components/SPage/page-column.d.ts +34 -0
  178. package/dist/components/SPage/page-width.d.ts +23 -0
  179. package/dist/components/SPage/page.config.d.ts +26 -0
  180. package/dist/components/SPieChart/README.md +93 -0
  181. package/dist/components/SPieChart/SPieChart.d.ts +73 -0
  182. package/dist/components/SPieChart/index.d.ts +1 -0
  183. package/dist/components/SPopover/README.md +15 -0
  184. package/dist/components/SPopup/README.md +26 -2
  185. package/dist/components/SPopup/SPopup.d.ts +13 -10
  186. package/dist/components/SPopup/index.d.ts +1 -1
  187. package/dist/components/SPortal/README.md +20 -0
  188. package/dist/components/SRadio/README.md +20 -0
  189. package/dist/components/SRadioButton/README.md +27 -0
  190. package/dist/components/SRadioButton/SRadioButton.d.ts +17 -3
  191. package/dist/components/SRadioCard/README.md +78 -0
  192. package/dist/components/SRadioCard/SRadioCard.d.ts +29 -0
  193. package/dist/components/SRadioCard/SRadioCardGroup.d.ts +36 -0
  194. package/dist/components/SRadioCard/index.d.ts +2 -0
  195. package/dist/components/SScrollArea/README.md +28 -0
  196. package/dist/components/SScrollArea/SScrollArea.d.ts +17 -0
  197. package/dist/components/SSearchInput/README.md +19 -4
  198. package/dist/components/SSearchInput/SSearchInput.d.ts +11 -5
  199. package/dist/components/SSectionHeaderCard/README.md +38 -0
  200. package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +19 -0
  201. package/dist/components/SSelect/README.md +64 -11
  202. package/dist/components/SSelect/SSelect.d.ts +135 -15
  203. package/dist/components/SSelect/index.d.ts +1 -1
  204. package/dist/components/SSelect/select.config.d.ts +17 -0
  205. package/dist/components/SSkeleton/README.md +67 -0
  206. package/dist/components/SSkeleton/SSkeleton.d.ts +43 -0
  207. package/dist/components/SSkeleton/index.d.ts +2 -0
  208. package/dist/components/SSkeleton/skeleton.config.d.ts +24 -0
  209. package/dist/components/SSlider/README.md +86 -0
  210. package/dist/components/SSlider/SSlider.d.ts +149 -0
  211. package/dist/components/SSlider/index.d.ts +1 -0
  212. package/dist/components/SSplitter/README.md +17 -2
  213. package/dist/components/SSplitter/SSplitter.d.ts +7 -3
  214. package/dist/components/SStepper/README.md +26 -0
  215. package/dist/components/SSwitch/README.md +13 -1
  216. package/dist/components/SSwitch/SSwitch.d.ts +1 -3
  217. package/dist/components/SSystemActionButton/README.md +246 -0
  218. package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +167 -0
  219. package/dist/components/SSystemActionButton/index.d.ts +2 -0
  220. package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +93 -0
  221. package/dist/components/STable/README.md +142 -20
  222. package/dist/components/STable/STable.d.ts +312 -46
  223. package/dist/components/STable/index.d.ts +1 -1
  224. package/dist/components/STableBar/README.md +1 -0
  225. package/dist/components/STableBar/STableBar.d.ts +8 -1
  226. package/dist/components/STabs/README.md +13 -1
  227. package/dist/components/STabs/STabs.d.ts +2 -2
  228. package/dist/components/STag/README.md +55 -0
  229. package/dist/components/STag/STag.d.ts +3 -1
  230. package/dist/components/STag/tag.config.d.ts +1 -1
  231. package/dist/components/STextLink/README.md +21 -1
  232. package/dist/components/STextLink/STextLink.d.ts +5 -1
  233. package/dist/components/STextarea/README.md +12 -5
  234. package/dist/components/STextarea/STextarea.d.ts +49 -6
  235. package/dist/components/STimePicker/README.md +19 -2
  236. package/dist/components/STimePicker/STimePicker.d.ts +36 -6
  237. package/dist/components/STimePicker/timepicker.config.d.ts +4 -2
  238. package/dist/components/STimeRangePicker/README.md +31 -2
  239. package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +35 -6
  240. package/dist/components/STimeline/README.md +41 -0
  241. package/dist/components/STimeline/STimeline.d.ts +27 -0
  242. package/dist/components/STimeline/index.d.ts +1 -0
  243. package/dist/components/SToast/README.md +25 -1
  244. package/dist/components/SToast/SToast.d.ts +2 -2
  245. package/dist/components/SToggle/README.md +8 -0
  246. package/dist/components/SToggle/index.d.ts +1 -1
  247. package/dist/components/STooltip/README.md +27 -1
  248. package/dist/components/STooltip/STooltip.d.ts +1 -1
  249. package/dist/components/STree/README.md +42 -5
  250. package/dist/components/STree/STree.d.ts +18 -8
  251. package/dist/components/STree/STree.examples.d.ts +2 -0
  252. package/dist/components/STreeTable/README.md +49 -0
  253. package/dist/components/STreeTable/STreeTable.d.ts +70 -0
  254. package/dist/components/STreeTable/STreeTable.examples.d.ts +32 -0
  255. package/dist/components/STreeTable/index.d.ts +1 -0
  256. package/dist/docs/Gallery.d.ts +9 -0
  257. package/dist/docs/RecipeGallery.d.ts +13 -0
  258. package/dist/docs/gallery-previews.d.ts +24 -0
  259. package/dist/fonts/LICENSE.txt +94 -0
  260. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.0.woff2 +0 -0
  261. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.1.woff2 +0 -0
  262. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.10.woff2 +0 -0
  263. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.11.woff2 +0 -0
  264. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.12.woff2 +0 -0
  265. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.13.woff2 +0 -0
  266. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.14.woff2 +0 -0
  267. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.15.woff2 +0 -0
  268. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.16.woff2 +0 -0
  269. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.17.woff2 +0 -0
  270. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.18.woff2 +0 -0
  271. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.19.woff2 +0 -0
  272. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.2.woff2 +0 -0
  273. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.20.woff2 +0 -0
  274. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.21.woff2 +0 -0
  275. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.22.woff2 +0 -0
  276. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.23.woff2 +0 -0
  277. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.24.woff2 +0 -0
  278. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.25.woff2 +0 -0
  279. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.26.woff2 +0 -0
  280. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.27.woff2 +0 -0
  281. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.28.woff2 +0 -0
  282. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.29.woff2 +0 -0
  283. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.3.woff2 +0 -0
  284. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.30.woff2 +0 -0
  285. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.31.woff2 +0 -0
  286. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.32.woff2 +0 -0
  287. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.33.woff2 +0 -0
  288. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.34.woff2 +0 -0
  289. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.35.woff2 +0 -0
  290. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.36.woff2 +0 -0
  291. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.37.woff2 +0 -0
  292. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.38.woff2 +0 -0
  293. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.39.woff2 +0 -0
  294. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.4.woff2 +0 -0
  295. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.40.woff2 +0 -0
  296. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.41.woff2 +0 -0
  297. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.42.woff2 +0 -0
  298. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.43.woff2 +0 -0
  299. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.44.woff2 +0 -0
  300. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.45.woff2 +0 -0
  301. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.46.woff2 +0 -0
  302. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.47.woff2 +0 -0
  303. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.48.woff2 +0 -0
  304. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.49.woff2 +0 -0
  305. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.5.woff2 +0 -0
  306. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.50.woff2 +0 -0
  307. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.51.woff2 +0 -0
  308. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.52.woff2 +0 -0
  309. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.53.woff2 +0 -0
  310. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.54.woff2 +0 -0
  311. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.55.woff2 +0 -0
  312. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.56.woff2 +0 -0
  313. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.57.woff2 +0 -0
  314. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.58.woff2 +0 -0
  315. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.59.woff2 +0 -0
  316. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.6.woff2 +0 -0
  317. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.60.woff2 +0 -0
  318. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.61.woff2 +0 -0
  319. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.62.woff2 +0 -0
  320. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.63.woff2 +0 -0
  321. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.64.woff2 +0 -0
  322. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.65.woff2 +0 -0
  323. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.66.woff2 +0 -0
  324. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.67.woff2 +0 -0
  325. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.68.woff2 +0 -0
  326. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.69.woff2 +0 -0
  327. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.7.woff2 +0 -0
  328. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.70.woff2 +0 -0
  329. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.71.woff2 +0 -0
  330. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.72.woff2 +0 -0
  331. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.73.woff2 +0 -0
  332. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.74.woff2 +0 -0
  333. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.75.woff2 +0 -0
  334. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.76.woff2 +0 -0
  335. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.77.woff2 +0 -0
  336. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.78.woff2 +0 -0
  337. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.79.woff2 +0 -0
  338. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.8.woff2 +0 -0
  339. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.80.woff2 +0 -0
  340. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.81.woff2 +0 -0
  341. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.82.woff2 +0 -0
  342. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.83.woff2 +0 -0
  343. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.84.woff2 +0 -0
  344. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.85.woff2 +0 -0
  345. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.86.woff2 +0 -0
  346. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.87.woff2 +0 -0
  347. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.88.woff2 +0 -0
  348. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.89.woff2 +0 -0
  349. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.9.woff2 +0 -0
  350. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.90.woff2 +0 -0
  351. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.91.woff2 +0 -0
  352. package/dist/index.cjs +22926 -10831
  353. package/dist/index.cjs.map +1 -1
  354. package/dist/index.d.ts +25 -0
  355. package/dist/index.js +22836 -10830
  356. package/dist/index.js.map +1 -1
  357. package/dist/lib/chart/cartesian.d.ts +56 -0
  358. package/dist/lib/chart/frame.d.ts +21 -0
  359. package/dist/lib/chart/hover-dim.d.ts +19 -0
  360. package/dist/lib/chart/legend.d.ts +21 -0
  361. package/dist/lib/chart/palette.d.ts +28 -0
  362. package/dist/lib/chart/radial.d.ts +99 -0
  363. package/dist/lib/chart/scale.d.ts +26 -0
  364. package/dist/lib/chart/tooltip.d.ts +60 -0
  365. package/dist/lib/chart/types.d.ts +29 -0
  366. package/dist/lib/chart/use-element-size.d.ts +39 -0
  367. package/dist/lib/date.d.ts +11 -1
  368. package/dist/lib/depth-filter.d.ts +27 -0
  369. package/dist/lib/doc-sections.d.ts +35 -0
  370. package/dist/lib/dropdown-menu.d.ts +19 -0
  371. package/dist/lib/field-width.d.ts +31 -0
  372. package/dist/lib/floating-height.d.ts +15 -0
  373. package/dist/lib/global-overlay.d.ts +5 -0
  374. package/dist/lib/hover-preview.d.ts +32 -0
  375. package/dist/lib/inert.d.ts +11 -0
  376. package/dist/lib/overlay-scrollbar.d.ts +32 -0
  377. package/dist/lib/row-metrics.d.ts +61 -0
  378. package/dist/lib/story-docs.d.ts +19 -3
  379. package/dist/llms-full.txt +8447 -557
  380. package/dist/llms.txt +4148 -304
  381. package/dist/playground/categories.d.ts +19 -0
  382. package/dist/pretendard.css +937 -0
  383. package/dist/recipes/AppShell.d.ts +21 -0
  384. package/dist/recipes/CategoryManagePage.d.ts +1 -0
  385. package/dist/recipes/ConsultConsolePage.d.ts +1 -0
  386. package/dist/recipes/ExcelFilePopupPage.d.ts +5 -0
  387. package/dist/recipes/LoginPage.d.ts +6 -0
  388. package/dist/recipes/ProductBulkUploadPage.d.ts +1 -0
  389. package/dist/recipes/ProductCreatePage.d.ts +1 -0
  390. package/dist/recipes/ProductCreateSectionsPage.d.ts +5 -0
  391. package/dist/recipes/ProductDetailInlineEditPage.d.ts +9 -0
  392. package/dist/recipes/ProductDetailPage.d.ts +1 -0
  393. package/dist/recipes/ProductListChipFilterPage.d.ts +1 -0
  394. package/dist/recipes/ProductListPage.d.ts +1 -0
  395. package/dist/recipes/ProductOverlayPage.d.ts +1 -0
  396. package/dist/recipes/SalesDashboardPage.d.ts +1 -0
  397. package/dist/recipes/SettingsPage.d.ts +1 -0
  398. package/dist/recipes/StoreSetupPage.d.ts +1 -0
  399. package/dist/recipes/TransferOrderPopupPage.d.ts +2 -0
  400. package/dist/recipes/api.d.ts +220 -0
  401. package/dist/recipes/recipe-story.d.ts +33 -0
  402. package/dist/recipes/router.d.ts +9 -0
  403. package/dist/styles.css +3663 -244
  404. package/dist/theme.css +620 -27
  405. package/eslint/index.mjs +44 -35
  406. package/eslint/lib/class-names.mjs +23 -25
  407. package/eslint/lib/table-column.mjs +34 -8
  408. package/eslint/rules/component-group-gap.mjs +32 -30
  409. package/eslint/rules/divider-vertical-height.mjs +137 -0
  410. package/eslint/rules/field-width-grade.mjs +69 -52
  411. package/eslint/rules/no-arbitrary-class.mjs +63 -20
  412. package/eslint/rules/no-off-scale-spacing.mjs +61 -41
  413. package/eslint/rules/no-raw-html-control.mjs +38 -36
  414. package/eslint/rules/prefer-typo-preset.mjs +23 -17
  415. package/eslint/rules/require-locale-number.mjs +14 -19
  416. package/eslint/rules/table-column-width.mjs +114 -0
  417. package/eslint/rules/table-numeric-align.mjs +14 -14
  418. package/eslint/scale.gen.mjs +6 -3
  419. package/package.json +20 -5
@@ -1 +1 @@
1
- export { SExpansionItem, type SExpansionItemProps, type SExpansionItemRenderProp, type SExpansionItemRenderState, type SExpansionItemSupportingTextPosition, } from './SExpansionItem';
1
+ export { SExpansionItem, type SExpansionItemInteraction, type SExpansionItemProps, type SExpansionItemRenderProp, type SExpansionItemRenderState, type SExpansionItemSize, type SExpansionItemSupportingTextPosition, } from './SExpansionItem';
@@ -10,10 +10,13 @@
10
10
  |------|------|---------|-------------|
11
11
  | `name?` | `string` | — | 폼 연동용 name 속성 |
12
12
  | `label?` | `string` | `''` | 레이블 텍스트 |
13
+ | `controlId?` | `string` | — | 레이블이 가리킬 컨트롤의 `id`. 주면 레이블 글자가 `<label for>` 로 그 컨트롤에 이어져, **스크린리더가 레이블을 컨트롤 이름으로 읽고 레이블을 누르면 컨트롤에 포커스가 간다.** DS 입력 컴포넌트는 알아서 넘긴다 — `SField` 로 직접 컨트롤을 감쌀 때만 준다. 컨트롤이 `input`·`textarea`·`select`·`button` 이 아니면(`role` 로 만든 요소) `<label for>` 가 닿지 않으므로, 컨트롤에 `aria-labelledby={fieldLabelId(controlId)}` 를 직접 건다. |
14
+ | `subLabel?` | `string` | `''` | 보조 레이블. 레이블 오른쪽 같은 줄에 붙는다 (예: `(선택)`, `최대 50자`). 레이블보다 한 단계 약하게 보이도록 기본 타이포(body/sm/medium)·`fg.secondary` 색을 쓴다. 레이블 폭이 모자라면 레이블이 먼저 말줄임되고 보조 레이블은 그대로 남는다. `label` 이 없으면(`addonLabel` 만 있을 때 포함) 그려지지 않는다. |
13
15
  | `icon?` | `SIconName` | — | 레이블 영역 아이콘명 (크기는 size 토큰 16px 고정) |
14
16
  | `iconColor?` | `SColor` | — | 레이블 영역 아이콘 색상. 미지정 시 currentColor 상속 |
15
17
  | `labelTooltip?` | `string` | `''` | 레이블 툴팁 텍스트 |
16
18
  | `labelTooltipProps?` | `Partial<STooltipProps>` | — | 레이블 툴팁 상세 옵션 (SdTooltipProps 대응) |
19
+ | `labelPosition?` | `SFieldLabelPosition` | `'left'` | 레이블을 컨트롤 **왼쪽**에 둘지 **위**에 둘지. 기본은 `left` — 이 서비스의 폼은 라벨 열을 세로로 맞춰 읽는다. 라벨이 길거나 컨트롤이 좁아 한 줄에 같이 세우기 어려울 때(모달 안의 폼, 한 줄짜리 칸) `top` 을 쓴다. **한 폼 안에서는 섞지 않는다** — 라벨 시작점이 행마다 어긋나 세로 정렬이 깨진다. `top` 이면 라벨과 컨트롤 사이 간격은 `--sys-space-field-vertical-gap` 이 정한다 (sm·md 구분 없이 고정). 라벨을 줄 세우는 장치인 `labelWidth`·`labelHeight` 는 위에 선 라벨에는 뜻이 없어 무시된다 — `addonLabel` 의 폭에는 그대로 적용된다. |
17
20
  | `labelWidth?` | `number \| string` | — | 레이블/어드온 레이블 너비 (숫자=px). label·addonLabel 폭에 공통 적용 |
18
21
  | `labelHeight?` | `number \| string` | — | 레이블 박스 높이 (숫자=px). 미지정 시 size별 기본값 사용. 컨트롤 박스가 기본 필드 높이보다 큰 경우(multiline 등) 첫 행에 세로 중앙 정렬을 맞추기 위해 컨트롤 박스 높이를 넘겨받는다. |
19
22
  | `size?` | `SFieldSize` | `'sm'` | 필드 크기 |
@@ -22,15 +25,15 @@
22
25
  | `error?` | `boolean` | `false` | 에러 상태 |
23
26
  | `errorMessage?` | `string` | `''` | 에러 메시지 |
24
27
  | `status?` | `SFieldStatus` | — | 필드 상태 — 'error' | 'pass' | 'default'. 'pass'면 초록 테두리 |
25
- | `focused?` | `boolean` | `false` | 포커스 상태 (제어/반영) |
26
- | `hovered?` | `boolean` | `false` | 호버 상태 (제어/반영) |
28
+ | `focused?` | `boolean` | `false` | 포커스 상태를 밖에서 지정한다. 필드를 감싼 쪽이 포커스를 쥐고 있어(커스텀 트리거·복합 컨트롤) 필드 자신은 `:focus-within` 이 걸리지 않을 때 쓴다. 켜면 강조 테두리·링이 error/pass 보다 우선한다. |
29
+ | `hovered?` | `boolean` | `false` | 호버 상태를 밖에서 지정한다. `focused` 와 같은 이유로 쓰며, 강조도 같다 — 실제 `:hover` 와 구분되지 않는 모양이어야 밖에서 흉내 낸 것이 티가 나지 않는다. |
27
30
  | `rules?` | `Rule[]` | — | 유효성 규칙 (검증은 컨트롤에서 수행, API 패리티) |
28
31
  | `hint?` | `string` | `''` | 하단 힌트 |
29
32
  | `disabled?` | `boolean` | `false` | 비활성 |
30
33
  | `readOnly?` | `boolean` | `false` | 읽기 전용 (회색 배경) |
31
- | `width?` | `number \| string` | — | 컨트롤 너비 (숫자=px). 지정하면 필드가 부모 폭을 다 먹지 않고 (레이블 + width) 만큼만 차지한다. 다른 요소와 나란히 놓으려면 부모를 flex 로 두면 된다. |
32
- | `minWidth?` | `number \| string` | — | 컨트롤 최소 너비 (숫자=px). 하한선만 지정하며 필드는 계속 부모 폭을 채운다 |
33
- | `maxWidth?` | `number \| string` | — | 컨트롤 최대 너비 (숫자=px). 상한선만 지정하며 필드는 그 아래에서 부모 폭을 채운다. `width` 와 달리 hug 로 전환하지 않는다 — 부모가 좁으면 같이 좁아지고, 넓어도 여기서 멈춘다. 값 길이가 정해진 컨트롤(날짜·시간)이 `width="100%"` 를 받아 행 전체로 늘어나는 것을 막는 데 쓴다. **라벨은 상한에 들어가지 않는다** — 라벨은 컨트롤의 형제라 이 상한 밖이다. `addonLabel` 은 테두리 박스 안이라 상한을 나눠 먹으므로, `labelWidth`(= addon 폭)만큼 상한을 자동으로 늘린다. addon 이 있는데 `labelWidth` 가 없으면 폭을 알 수 없어 상한을 걸지 않는다 — 컨트롤이 잘리는 것보다 넓은 편이 낫다. |
34
+ | `width?` | `SFieldWidth` | — | 컨트롤 너비. 지정하면 필드가 부모 폭을 다 먹지 않고 (레이블 + width) 만큼만 차지한다. 다른 요소와 나란히 놓으려면 부모를 flex 로 두면 된다. **폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`)으로 준다** — `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다. 등급은 `maxLength`(= 스키마 상한)로 고르고, 상한이 `xl` 을 넘거나 상한이 없으면 `"100%"` 로 둔다. (`sellmate/field-width-grade` 가 검사한다) 숫자는 px, 그 밖의 문자열은 CSS 길이 그대로다. |
35
+ | `minWidth?` | `SFieldWidth` | — | 컨트롤 최소 너비 (등급 · 숫자=px · CSS 길이). 하한선만 지정하며 필드는 계속 부모 폭을 채운다 |
36
+ | `maxWidth?` | `SFieldWidth` | — | 컨트롤 최대 너비 (등급 · 숫자=px · CSS 길이). 상한선만 지정하며 필드는 그 아래에서 부모 폭을 채운다. `width` 와 달리 hug 로 전환하지 않는다 — 부모가 좁으면 같이 좁아지고, 넓어도 여기서 멈춘다. 값 길이가 정해진 컨트롤(날짜·시간)이 `width="100%"` 를 받아 행 전체로 늘어나는 것을 막는 데 쓴다. **라벨은 상한에 들어가지 않는다** — 라벨은 컨트롤의 형제라 이 상한 밖이다. `addonLabel` 은 테두리 박스 안이라 상한을 나눠 먹으므로, `labelWidth`(= addon 폭)만큼 상한을 자동으로 늘린다. addon 이 있는데 `labelWidth` 가 없으면 폭을 알 수 없어 상한을 걸지 않는다 — 컨트롤이 잘리는 것보다 넓은 편이 낫다. |
34
37
  | `multiline?` | `boolean` | `false` | 멀티라인(textarea) — 컨트롤 높이를 고정하지 않고 min-height만 적용 |
35
38
  | `borderless?` | `boolean` | `false` | 테두리 박스 제거 (inline 컨트롤용) — border/배경/hover·focus 강조만 사라지고 label·hint·errorMessage 등 나머지 필드 구성은 그대로 동작한다. |
36
39
  | `children?` | `ReactNode` | — | 실제 컨트롤 (input/select 등) — 테두리 없이 렌더, 테두리는 SField가 제공 |
@@ -50,6 +53,32 @@
50
53
  |--------|------|-------------|
51
54
  | `focus` | `() => void` | 내부 컨트롤에 포커스하고 필드를 화면에 스크롤합니다. |
52
55
 
56
+ ## Types
57
+
58
+ ### SFieldLabelPosition
59
+
60
+ ```ts
61
+ export type SFieldLabelPosition = 'left' | 'top';
62
+ ```
63
+
64
+ ### SFieldSize
65
+
66
+ ```ts
67
+ export type SFieldSize = 'sm' | 'md';
68
+ ```
69
+
70
+ ### SFieldAddonAlign
71
+
72
+ ```ts
73
+ export type SFieldAddonAlign = 'start' | 'center' | 'end';
74
+ ```
75
+
76
+ ### SFieldStatus
77
+
78
+ ```ts
79
+ export type SFieldStatus = 'default' | 'pass' | 'error';
80
+ ```
81
+
53
82
  ## Dependencies
54
83
 
55
84
  ### Used by
@@ -58,11 +87,13 @@
58
87
  - [SChipInput](../SChipInput)
59
88
  - [SDatePicker](../SDatePicker)
60
89
  - [SDateRangePicker](../SDateRangePicker)
90
+ - [SEditor](../SEditor)
61
91
  - [SFilePicker](../SFilePicker)
62
92
  - [SInput](../SInput)
63
93
  - [SNumberInput](../SNumberInput)
64
94
  - [SSearchInput](../SSearchInput)
65
95
  - [SSelect](../SSelect)
96
+ - [SSlider](../SSlider)
66
97
  - [STextarea](../STextarea)
67
98
  - [STimePicker](../STimePicker)
68
99
  - [STimeRangePicker](../STimeRangePicker)
@@ -82,11 +113,13 @@ graph TD;
82
113
  SChipInput --> SField
83
114
  SDatePicker --> SField
84
115
  SDateRangePicker --> SField
116
+ SEditor --> SField
85
117
  SFilePicker --> SField
86
118
  SInput --> SField
87
119
  SNumberInput --> SField
88
120
  SSearchInput --> SField
89
121
  SSelect --> SField
122
+ SSlider --> SField
90
123
  STextarea --> SField
91
124
  STimePicker --> SField
92
125
  STimeRangePicker --> SField
@@ -3,9 +3,11 @@ import { type SIconName } from '../SIcon';
3
3
  import { type STooltipProps } from '../STooltip';
4
4
  import { type SColor } from '../../lib/color';
5
5
  import { type Rule } from '../../lib/form';
6
+ import { type SFieldWidth } from '../../lib/field-width';
6
7
  export type SFieldSize = 'sm' | 'md';
7
8
  export type SFieldAddonAlign = 'start' | 'center' | 'end';
8
9
  export type SFieldStatus = 'default' | 'pass' | 'error';
10
+ export type SFieldLabelPosition = 'left' | 'top';
9
11
  /** ref로 노출되는 UX 메서드 (sd-field @Method sdFocus 대응) */
10
12
  export interface SFieldHandle {
11
13
  /** 내부 컨트롤에 포커스하고 필드를 화면에 스크롤합니다. */
@@ -16,6 +18,22 @@ export interface SFieldProps {
16
18
  name?: string;
17
19
  /** 레이블 텍스트 */
18
20
  label?: string;
21
+ /**
22
+ * 레이블이 가리킬 컨트롤의 `id`. 주면 레이블 글자가 `<label for>` 로 그 컨트롤에 이어져,
23
+ * **스크린리더가 레이블을 컨트롤 이름으로 읽고 레이블을 누르면 컨트롤에 포커스가 간다.**
24
+ *
25
+ * DS 입력 컴포넌트는 알아서 넘긴다 — `SField` 로 직접 컨트롤을 감쌀 때만 준다. 컨트롤이
26
+ * `input`·`textarea`·`select`·`button` 이 아니면(`role` 로 만든 요소) `<label for>` 가 닿지 않으므로,
27
+ * 컨트롤에 `aria-labelledby={fieldLabelId(controlId)}` 를 직접 건다.
28
+ */
29
+ controlId?: string;
30
+ /**
31
+ * 보조 레이블. 레이블 오른쪽 같은 줄에 붙는다 (예: `(선택)`, `최대 50자`).
32
+ * 레이블보다 한 단계 약하게 보이도록 기본 타이포(body/sm/medium)·`fg.secondary` 색을 쓴다.
33
+ * 레이블 폭이 모자라면 레이블이 먼저 말줄임되고 보조 레이블은 그대로 남는다.
34
+ * `label` 이 없으면(`addonLabel` 만 있을 때 포함) 그려지지 않는다.
35
+ */
36
+ subLabel?: string;
19
37
  /** 레이블 영역 아이콘명 (크기는 size 토큰 16px 고정) */
20
38
  icon?: SIconName;
21
39
  /** 레이블 영역 아이콘 색상. 미지정 시 currentColor 상속 */
@@ -24,6 +42,18 @@ export interface SFieldProps {
24
42
  labelTooltip?: string;
25
43
  /** 레이블 툴팁 상세 옵션 (SdTooltipProps 대응) */
26
44
  labelTooltipProps?: Partial<STooltipProps>;
45
+ /**
46
+ * 레이블을 컨트롤 **왼쪽**에 둘지 **위**에 둘지.
47
+ *
48
+ * 기본은 `left` — 이 서비스의 폼은 라벨 열을 세로로 맞춰 읽는다. 라벨이 길거나 컨트롤이
49
+ * 좁아 한 줄에 같이 세우기 어려울 때(모달 안의 폼, 한 줄짜리 칸) `top` 을 쓴다.
50
+ * **한 폼 안에서는 섞지 않는다** — 라벨 시작점이 행마다 어긋나 세로 정렬이 깨진다.
51
+ *
52
+ * `top` 이면 라벨과 컨트롤 사이 간격은 `--sys-space-field-vertical-gap` 이 정한다
53
+ * (sm·md 구분 없이 고정). 라벨을 줄 세우는 장치인 `labelWidth`·`labelHeight` 는
54
+ * 위에 선 라벨에는 뜻이 없어 무시된다 — `addonLabel` 의 폭에는 그대로 적용된다.
55
+ */
56
+ labelPosition?: SFieldLabelPosition;
27
57
  /** 레이블/어드온 레이블 너비 (숫자=px). label·addonLabel 폭에 공통 적용 */
28
58
  labelWidth?: number | string;
29
59
  /**
@@ -44,9 +74,15 @@ export interface SFieldProps {
44
74
  errorMessage?: string;
45
75
  /** 필드 상태 — 'error' | 'pass' | 'default'. 'pass'면 초록 테두리 */
46
76
  status?: SFieldStatus;
47
- /** 포커스 상태 (제어/반영) */
77
+ /**
78
+ * 포커스 상태를 밖에서 지정한다. 필드를 감싼 쪽이 포커스를 쥐고 있어(커스텀 트리거·복합 컨트롤)
79
+ * 필드 자신은 `:focus-within` 이 걸리지 않을 때 쓴다. 켜면 강조 테두리·링이 error/pass 보다 우선한다.
80
+ */
48
81
  focused?: boolean;
49
- /** 호버 상태 (제어/반영) */
82
+ /**
83
+ * 호버 상태를 밖에서 지정한다. `focused` 와 같은 이유로 쓰며, 강조도 같다 —
84
+ * 실제 `:hover` 와 구분되지 않는 모양이어야 밖에서 흉내 낸 것이 티가 나지 않는다.
85
+ */
50
86
  hovered?: boolean;
51
87
  /** 유효성 규칙 (검증은 컨트롤에서 수행, API 패리티) */
52
88
  rules?: Rule[];
@@ -57,14 +93,19 @@ export interface SFieldProps {
57
93
  /** 읽기 전용 (회색 배경) */
58
94
  readOnly?: boolean;
59
95
  /**
60
- * 컨트롤 너비 (숫자=px). 지정하면 필드가 부모 폭을 다 먹지 않고 (레이블 + width) 만큼만 차지한다.
96
+ * 컨트롤 너비. 지정하면 필드가 부모 폭을 다 먹지 않고 (레이블 + width) 만큼만 차지한다.
61
97
  * 다른 요소와 나란히 놓으려면 부모를 flex 로 두면 된다.
98
+ *
99
+ * **폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`)으로 준다** — `--cmp-field-width-*` 토큰으로 풀리므로
100
+ * 토큰이 바뀌면 화면이 따라간다. 등급은 `maxLength`(= 스키마 상한)로 고르고, 상한이 `xl` 을
101
+ * 넘거나 상한이 없으면 `"100%"` 로 둔다. (`sellmate/field-width-grade` 가 검사한다)
102
+ * 숫자는 px, 그 밖의 문자열은 CSS 길이 그대로다.
62
103
  */
63
- width?: number | string;
64
- /** 컨트롤 최소 너비 (숫자=px). 하한선만 지정하며 필드는 계속 부모 폭을 채운다 */
65
- minWidth?: number | string;
104
+ width?: SFieldWidth;
105
+ /** 컨트롤 최소 너비 (등급 · 숫자=px · CSS 길이). 하한선만 지정하며 필드는 계속 부모 폭을 채운다 */
106
+ minWidth?: SFieldWidth;
66
107
  /**
67
- * 컨트롤 최대 너비 (숫자=px). 상한선만 지정하며 필드는 그 아래에서 부모 폭을 채운다.
108
+ * 컨트롤 최대 너비 (등급 · 숫자=px · CSS 길이). 상한선만 지정하며 필드는 그 아래에서 부모 폭을 채운다.
68
109
  *
69
110
  * `width` 와 달리 hug 로 전환하지 않는다 — 부모가 좁으면 같이 좁아지고, 넓어도 여기서 멈춘다.
70
111
  * 값 길이가 정해진 컨트롤(날짜·시간)이 `width="100%"` 를 받아 행 전체로 늘어나는 것을 막는 데 쓴다.
@@ -74,7 +115,7 @@ export interface SFieldProps {
74
115
  * 상한을 자동으로 늘린다. addon 이 있는데 `labelWidth` 가 없으면 폭을 알 수 없어 상한을
75
116
  * 걸지 않는다 — 컨트롤이 잘리는 것보다 넓은 편이 낫다.
76
117
  */
77
- maxWidth?: number | string;
118
+ maxWidth?: SFieldWidth;
78
119
  /** 멀티라인(textarea) — 컨트롤 높이를 고정하지 않고 min-height만 적용 */
79
120
  multiline?: boolean;
80
121
  /**
@@ -89,6 +130,16 @@ export interface SFieldProps {
89
130
  onMouseEnter?: () => void;
90
131
  onMouseLeave?: () => void;
91
132
  }
133
+ /**
134
+ * `controlId` 를 받은 SField 가 레이블 글자에 붙이는 id. `<label for>` 가 닿지 않는 컨트롤
135
+ * (`role` 로 만든 요소)은 `aria-labelledby` 로 이 id 를 가리킨다.
136
+ */
137
+ export declare const fieldLabelId: (controlId: string) => string;
138
+ /**
139
+ * DS 입력 컴포넌트가 SField 에 넘길 `controlId` 를 정한다. 앱이 컨트롤에 `id` 를 줬으면 그것을
140
+ * 쓴다 — 앱의 `<label for>`·테스트 선택자가 그 id 를 이미 가리키고 있을 수 있다.
141
+ */
142
+ export declare function useFieldControlId(id?: string): string;
92
143
  /**
93
144
  * SField — sd-field 포팅. 폼 컨트롤 래퍼.
94
145
  * ★ SField 가 컨트롤 테두리 박스(border/radius/bg + hover/focus/error/disabled 상태)를 소유하고,
@@ -1 +1 @@
1
- export { SField, type SFieldHandle, type SFieldProps, type SFieldSize, type SFieldAddonAlign, type SFieldStatus, } from './SField';
1
+ export { SField, fieldLabelId, type SFieldHandle, type SFieldProps, type SFieldSize, type SFieldAddonAlign, type SFieldStatus, type SFieldLabelPosition, } from './SField';
@@ -11,11 +11,11 @@
11
11
  | `value?` | `SFilePickerValue` | `null` | |
12
12
  | `placeholder?` | `string` | `'Click to upload'` | |
13
13
  | `disabled?` | `boolean` | `false` | |
14
- | `focused?` | `boolean` | `false` | 포커스 상태 여부 |
15
- | `hovered?` | `boolean` | `false` | 호버 상태 여부 |
14
+ | `focused?` | `boolean` | `false` | 포커스 상태를 밖에서 지정한다 — 강조 테두리·링이 즉시 걸린다 (SField 로 그대로 넘어간다) |
15
+ | `hovered?` | `boolean` | `false` | 호버 상태를 밖에서 지정한다 — 강조는 `focused` 와 같다 (SField 로 그대로 넘어간다) |
16
16
  | `inline?` | `boolean` | `false` | 인라인 표시 — SField 테두리 박스만 사라지고 label/rules/hint 는 그대로 동작 |
17
17
  | `multiple?` | `boolean` | `false` | |
18
- | `useMultipleListBox?` | `boolean` | `false` | multiple 파일 목록을 필드 아래 칩 대신, caret(▼) 클릭 시 열리는 리스트박스 카드로 표시 (바깥 클릭 시 닫힘) |
18
+ | `showMultipleListBox?` | `boolean` | `false` | multiple 파일 목록을 필드 아래 칩 대신, caret(▼) 클릭 시 열리는 리스트박스 카드로 표시 (바깥 클릭 시 닫힘) |
19
19
  | `accept?` | `string` | — | |
20
20
  | `maxFileSize?` | `number \| string` | — | |
21
21
  | `maxTotalSize?` | `number \| string` | — | |
@@ -25,6 +25,8 @@
25
25
  | `status?` | `SFieldStatus` | — | |
26
26
  | `size?` | `SFieldSize` | `'sm'` | |
27
27
  | `label?` | `string` | — | |
28
+ | `labelPosition?` | `SFieldLabelPosition` | — | 레이블 위치 — `top` 이면 라벨이 컨트롤 위에 선다 (SField 로 그대로 넘어간다). |
29
+ | `subLabel?` | `string` | — | 보조 레이블 — 레이블 오른쪽 같은 줄에 붙는다 (SField 로 그대로 넘어간다). |
28
30
  | `labelWidth?` | `number \| string` | — | |
29
31
  | `icon?` | `SIconName` | — | |
30
32
  | `iconColor?` | `SColor` | — | |
@@ -35,7 +37,7 @@
35
37
  | `hint?` | `string` | — | |
36
38
  | `error?` | `boolean` | — | |
37
39
  | `errorMessage?` | `string` | — | |
38
- | `width?` | `number \| string` | — | |
40
+ | `width?` | `SFieldWidth` | — | 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이. 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다. 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다. |
39
41
  | `className?` | `string` | — | |
40
42
  | `style?` | `CSSProperties` | — | |
41
43
 
@@ -46,6 +48,20 @@
46
48
  | `onValueChange` | `(value: SFilePickerValue) => void` | 파일 변경 (sdUpdate) |
47
49
  | `onReject` | `(detail: { files: File[]; reason: SFilePickerRejectReason }) => void` | 제한 초과 거부 (sdReject) |
48
50
 
51
+ ## Types
52
+
53
+ ### SFilePickerValue
54
+
55
+ ```ts
56
+ export type SFilePickerValue = File[] | File | null;
57
+ ```
58
+
59
+ ### SFilePickerRejectReason
60
+
61
+ ```ts
62
+ export type SFilePickerRejectReason = 'max-file-size' | 'max-total-size' | 'max-files';
63
+ ```
64
+
49
65
  ## Dependencies
50
66
 
51
67
  ### Used by
@@ -1,9 +1,10 @@
1
1
  import { type CSSProperties } 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 type SFilePickerValue = File[] | File | null;
8
9
  export type SFilePickerRejectReason = 'max-file-size' | 'max-total-size' | 'max-files';
9
10
  export interface SFilePickerProps {
@@ -17,15 +18,15 @@ export interface SFilePickerProps {
17
18
  }) => void;
18
19
  placeholder?: string;
19
20
  disabled?: boolean;
20
- /** 포커스 상태 여부 */
21
+ /** 포커스 상태를 밖에서 지정한다 — 강조 테두리·링이 즉시 걸린다 (SField 로 그대로 넘어간다) */
21
22
  focused?: boolean;
22
- /** 호버 상태 여부 */
23
+ /** 호버 상태를 밖에서 지정한다 — 강조는 `focused` 와 같다 (SField 로 그대로 넘어간다) */
23
24
  hovered?: boolean;
24
25
  /** 인라인 표시 — SField 테두리 박스만 사라지고 label/rules/hint 는 그대로 동작 */
25
26
  inline?: boolean;
26
27
  multiple?: boolean;
27
28
  /** multiple 파일 목록을 필드 아래 칩 대신, caret(▼) 클릭 시 열리는 리스트박스 카드로 표시 (바깥 클릭 시 닫힘) */
28
- useMultipleListBox?: boolean;
29
+ showMultipleListBox?: boolean;
29
30
  accept?: string;
30
31
  maxFileSize?: number | string;
31
32
  maxTotalSize?: number | string;
@@ -35,6 +36,20 @@ export interface SFilePickerProps {
35
36
  status?: SFieldStatus;
36
37
  size?: SFieldSize;
37
38
  label?: string;
39
+ /**
40
+ * 레이블 위치 — `top` 이면 라벨이 컨트롤 위에 선다 (SField 로 그대로 넘어간다).
41
+ *
42
+ * @nodemo SField 에서 내려오는 공통 필드 옵션이다 — 같은 데모를 컨트롤마다 복제하지 않고
43
+ * 대표 컨트롤 `SInput` 과 `SField` 에 한 번 둔다 (scripts/check-docs-coverage.mjs 머리말).
44
+ */
45
+ labelPosition?: SFieldLabelPosition;
46
+ /**
47
+ * 보조 레이블 — 레이블 오른쪽 같은 줄에 붙는다 (SField 로 그대로 넘어간다).
48
+ *
49
+ * @nodemo SField 에서 내려오는 공통 필드 옵션이다 — 같은 데모를 컨트롤마다 복제하지 않고
50
+ * 대표 컨트롤 `SInput` 과 `SField` 에 한 번 둔다 (scripts/check-docs-coverage.mjs 머리말).
51
+ */
52
+ subLabel?: string;
38
53
  labelWidth?: number | string;
39
54
  icon?: SIconName;
40
55
  iconColor?: SColor;
@@ -45,9 +60,14 @@ export interface SFilePickerProps {
45
60
  hint?: string;
46
61
  error?: boolean;
47
62
  errorMessage?: string;
48
- width?: number | string;
63
+ /**
64
+ * 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이.
65
+ * 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다.
66
+ * 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다.
67
+ */
68
+ width?: SFieldWidth;
49
69
  className?: string;
50
70
  style?: CSSProperties;
51
71
  }
52
72
  /** SFilePicker — sd-file-picker 포팅. 단일/다중 파일 + 크기·개수 검증 + 칩 목록. */
53
- export declare function SFilePicker({ value, onValueChange, onReject, placeholder, disabled, focused, hovered, inline, multiple, useMultipleListBox, accept, maxFileSize, maxTotalSize, maxFiles, name, rules, status, size, label, labelWidth, icon, iconColor, labelTooltip, labelTooltipProps, addonLabel, addonAlign, hint, error, errorMessage, width, className, style, }: SFilePickerProps): import("react").JSX.Element;
73
+ export declare function SFilePicker({ value, onValueChange, onReject, placeholder, disabled, focused, hovered, inline, multiple, showMultipleListBox, accept, maxFileSize, maxTotalSize, maxFiles, name, rules, status, size, label, labelPosition, subLabel, labelWidth, icon, iconColor, labelTooltip, labelTooltipProps, addonLabel, addonAlign, hint, error, errorMessage, width, className, style, }: SFilePickerProps): import("react").JSX.Element;
@@ -9,6 +9,7 @@
9
9
  | Prop | Type | Default | Description |
10
10
  |------|------|---------|-------------|
11
11
  | `bg?` | `SFooterBg` | `'white'` | 배경색 |
12
+ | `size?` | `SFooterSize` | `'md'` | 크기. 기본은 `md` — 오버레이 하단 액션 영역의 크기다 |
12
13
  | `left?` | `ReactNode` | — | footer 좌측 slot |
13
14
  | `children?` | `ReactNode` | — | footer 좌측 slot. left와 함께 쓰면 left 뒤에 렌더된다 |
14
15
  | `button?` | `SFooterButton` | — | 우측 기본 액션 버튼 |
@@ -16,13 +17,54 @@
16
17
  | `leftClassName?` | `string` | — | |
17
18
  | `style?` | `CSSProperties` | — | |
18
19
 
20
+ ## Types
21
+
22
+ ### SFooterBg
23
+
24
+ ```ts
25
+ export type SFooterBg = 'white' | 'grey';
26
+ ```
27
+
28
+ ### SFooterSize
29
+
30
+ ```ts
31
+ /**
32
+ * footer 크기. 버튼 크기가 여기에 딸려 온다 — `md` 는 `SButton size="md"`, `sm` 은 `"sm"`.
33
+ *
34
+ * 버튼 크기를 따로 받지 않고 footer 자체를 분기하는 이유: 크기를 정하는 것은 버튼이 아니라
35
+ * **버튼이 놓인 자리**이기 때문이다 (AGENTS.md §3-5-2). 좌측 슬롯 버튼까지 한 벌로 맞춰야
36
+ * 하는데, 우측 버튼만 크기를 받으면 좌우가 어긋난 footer 를 만들 길이 열린다.
37
+ */
38
+ export type SFooterSize = 'sm' | 'md';
39
+ ```
40
+
41
+ ### SFooterButton
42
+
43
+ ```ts
44
+ /**
45
+ * footer 우측 기본 액션 버튼 설정 — `SButton` 의 prop 을 그대로 받는다.
46
+ *
47
+ * 골라 담은 부분집합으로 두지 않는 이유: `SButton` 에 prop 이 늘 때마다 이 목록만 조용히
48
+ * 뒤처져, 아이콘 하나 붙이려 해도 footer 에서는 길이 없는 상태가 된다.
49
+ *
50
+ * **`size` 만 뺀다.** 버튼 크기는 놓이는 위치가 정하므로 footer 의 `size` 가 정한다
51
+ * (AGENTS.md §3-5-2) — 버튼이 자기 크기를 따로 주장할 자리가 아니다.
52
+ *
53
+ * `label`·`color` 는 주지 않으면 footer 가 주 액션 기본값(`'확인'`·`'primary'`)으로 잡는다.
54
+ * 파괴적 액션이라 `danger` 가 필요한 경우는 열어 둔다 (§3-5-3).
55
+ */
56
+ export type SFooterButton = Omit<SButtonProps, 'size'>;
57
+ ```
58
+
19
59
  ## Dependencies
20
60
 
21
61
  ### Used by
22
62
 
23
63
  - [SActionModal](../SActionModal)
64
+ - [SCard](../SCard)
24
65
  - [SDrawer](../SDrawer)
25
66
  - [SPopup](../SPopup)
67
+ - [SSectionHeaderCard](../SSectionHeaderCard)
26
68
 
27
69
  ### Depends on
28
70
 
@@ -34,7 +76,9 @@
34
76
  graph TD;
35
77
  SFooter --> SButton
36
78
  SActionModal --> SFooter
79
+ SCard --> SFooter
37
80
  SDrawer --> SFooter
38
81
  SPopup --> SFooter
82
+ SSectionHeaderCard --> SFooter
39
83
  style SFooter fill:#f9f,stroke:#333,stroke-width:4px
40
84
  ```
@@ -1,21 +1,36 @@
1
1
  import { type CSSProperties, type ReactNode } from 'react';
2
- import { type SButtonColor, type SButtonSize } from '../SButton';
2
+ import { type SButtonProps } from '../SButton';
3
3
  export type SFooterBg = 'white' | 'grey';
4
- export interface SFooterButton {
5
- label?: string;
6
- color?: SButtonColor;
7
- outline?: boolean;
8
- size?: SButtonSize;
9
- disabled?: boolean;
10
- onClick?: () => void;
11
- }
4
+ /**
5
+ * footer 크기. 버튼 크기가 여기에 딸려 온다 — `md` 는 `SButton size="md"`, `sm` 은 `"sm"`.
6
+ *
7
+ * 버튼 크기를 따로 받지 않고 footer 자체를 분기하는 이유: 크기를 정하는 것은 버튼이 아니라
8
+ * **버튼이 놓인 자리**이기 때문이다 (AGENTS.md §3-5-2). 좌측 슬롯 버튼까지 한 벌로 맞춰야
9
+ * 하는데, 우측 버튼만 크기를 받으면 좌우가 어긋난 footer 를 만들 길이 열린다.
10
+ */
11
+ export type SFooterSize = 'sm' | 'md';
12
+ /**
13
+ * footer 우측 기본 액션 버튼 설정 — `SButton` 의 prop 을 그대로 받는다.
14
+ *
15
+ * 골라 담은 부분집합으로 두지 않는 이유: `SButton` 에 prop 이 늘 때마다 이 목록만 조용히
16
+ * 뒤처져, 아이콘 하나 붙이려 해도 footer 에서는 길이 없는 상태가 된다.
17
+ *
18
+ * **`size` 만 뺀다.** 버튼 크기는 놓이는 위치가 정하므로 footer 의 `size` 가 정한다
19
+ * (AGENTS.md §3-5-2) — 버튼이 자기 크기를 따로 주장할 자리가 아니다.
20
+ *
21
+ * `label`·`color` 는 주지 않으면 footer 가 주 액션 기본값(`'확인'`·`'primary'`)으로 잡는다.
22
+ * 파괴적 액션이라 `danger` 가 필요한 경우는 열어 둔다 (§3-5-3).
23
+ */
24
+ export type SFooterButton = Omit<SButtonProps, 'size'>;
12
25
  /**
13
26
  * @internal
14
- * 모달·드로어·팝업 하단 영역 공통 props.
27
+ * 모달·드로어·팝업·카드 하단 영역 공통 props.
15
28
  */
16
29
  export interface SFooterProps {
17
30
  /** 배경색 */
18
31
  bg?: SFooterBg;
32
+ /** 크기. 기본은 `md` — 오버레이 하단 액션 영역의 크기다 */
33
+ size?: SFooterSize;
19
34
  /** footer 좌측 slot */
20
35
  left?: ReactNode;
21
36
  /** footer 좌측 slot. left와 함께 쓰면 left 뒤에 렌더된다 */
@@ -27,10 +42,11 @@ export interface SFooterProps {
27
42
  style?: CSSProperties;
28
43
  }
29
44
  /**
30
- * SFooter — overlay 계열 내부 전용 footer.
45
+ * SFooter — 오버레이·카드 내부 전용 footer.
31
46
  *
32
47
  * @internal
33
- * SActionModal/SConfirmModal/SDrawer/SPopup 의 하단 액션 영역만 공통화한다.
48
+ * SActionModal/SConfirmModal/SDrawer/SPopup 과 SCard/SSectionHeaderCard 의 하단 액션 영역만
49
+ * 공통화한다. 소비자는 호스트 컴포넌트의 `footerLeft`·`button` prop 으로만 닿는다 —
34
50
  * 패키지 public export 에 추가하지 말 것.
35
51
  */
36
- export declare function SFooter({ bg, left, button, children, className, leftClassName, style, }: SFooterProps): import("react").JSX.Element;
52
+ export declare function SFooter({ bg, size, left, button, children, className, leftClassName, style, }: SFooterProps): import("react").JSX.Element;
@@ -1 +1 @@
1
- export { SFooter, type SFooterBg, type SFooterButton, type SFooterProps } from './SFooter';
1
+ export { SFooter, type SFooterBg, type SFooterButton, type SFooterProps, type SFooterSize, } from './SFooter';
@@ -8,7 +8,7 @@
8
8
 
9
9
  | Prop | Type | Default | Description |
10
10
  |------|------|---------|-------------|
11
- | `formClass?` | `string` | — | form 엘리먼트에 추가할 클래스 (sd-form formClass 대응) |
11
+ | `formClassName?` | `string` | — | form 엘리먼트에 추가할 클래스 (sd-form formClassName 대응) |
12
12
  | `children?` | `ReactNode` | — | |
13
13
  | `className?` | `string` | — | |
14
14
  | `style?` | `CSSProperties` | — | |
@@ -29,3 +29,14 @@
29
29
  | `reset` | `() => void` | resetValidation 별칭 — sd-form sdReset 대응. 값 리셋은 소비자(value/onChange) 책임 |
30
30
  | `focusFirstInvalid` | `() => void` | 첫 번째 실패 필드로 포커스 이동 |
31
31
 
32
+ ## Types
33
+
34
+ ### SFormValidationError
35
+
36
+ ```ts
37
+ export interface SFormValidationError {
38
+ /** 검증에 실패한 필드 name 목록 (DOM 순서) */
39
+ names: string[];
40
+ }
41
+ ```
42
+
@@ -15,8 +15,8 @@ export interface SFormHandle {
15
15
  focusFirstInvalid: () => void;
16
16
  }
17
17
  export interface SFormProps {
18
- /** form 엘리먼트에 추가할 클래스 (sd-form formClass 대응) */
19
- formClass?: string;
18
+ /** form 엘리먼트에 추가할 클래스 (sd-form formClassName 대응) */
19
+ formClassName?: string;
20
20
  /** 모든 필드 검증 통과 후 발생 (sd-form sdSubmit 대응) */
21
21
  onSubmit?: () => void;
22
22
  /** 검증 실패 시 실패한 필드 name 목록 전달 (sd-form sdValidationError 대응) */
@@ -16,6 +16,8 @@
16
16
  | `ariaExpanded?` | `boolean` | — | disclosure 버튼일 때 펼침 상태 (aria-expanded) |
17
17
  | `tooltipText?` | `string` | — | 호버 시 표시할 툴팁 텍스트 |
18
18
  | `disabled?` | `boolean` | `false` | 비활성 |
19
+ | `href?` | `string` | — | 이동할 주소. **주면 `<button>` 대신 `<a>` 로 그린다** — 가운데 클릭·⌘클릭·주소 복사가 링크처럼 듣는다. 눌러서 다른 화면·문서로 가는 버튼이면 `onClick` 에서 `location` 을 바꾸지 말고 이것을 준다. 비활성이면 주소를 떼어 눌러도 가지 않는다. |
20
+ | `target?` | `string` | — | `href` 를 여는 곳. `'_blank'` 면 `rel="noopener noreferrer"` 를 함께 붙인다 |
19
21
  | `anchorClassName?` | `string` | — | tooltip anchor wrapper 클래스. tooltipText가 있을 때 위치 조정용으로 사용합니다. |
20
22
  | `anchorStyle?` | `CSSProperties` | — | tooltip anchor wrapper 스타일. tooltipText가 있을 때 위치 조정용으로 사용합니다. |
21
23
  | `className?` | `string` | — | |
@@ -25,7 +27,22 @@
25
27
 
26
28
  | Event | Type | Description |
27
29
  |-------|------|-------------|
28
- | `onClick` | `(e: MouseEvent<HTMLButtonElement>) => void` | 클릭 (sdClick) |
30
+ | `onClick` | `(e: MouseEvent<HTMLButtonElement \| HTMLAnchorElement>) => void` | 클릭 (sdClick). `href` 와 함께 주면 이동 전에 불린다 |
31
+
32
+ ## Types
33
+
34
+ ### SGhostButtonSize
35
+
36
+ ```ts
37
+ export type SGhostButtonSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg';
38
+ ```
39
+
40
+ ### SGhostButtonIntent
41
+
42
+ ```ts
43
+ export type SGhostButtonIntent =
44
+ 'default' | 'danger' | 'action' | 'subAction' | 'complete' | 'inverse';
45
+ ```
29
46
 
30
47
  ## Dependencies
31
48
 
@@ -33,24 +50,29 @@
33
50
 
34
51
  - [SBarcodeInput](../SBarcodeInput)
35
52
  - [SCalendar](../SCalendar)
53
+ - [SCalendarBoard](../SCalendarBoard)
54
+ - [SChatAttachedFile](../SChatAttachedFile)
55
+ - [SChatInput](../SChatInput)
36
56
  - [SChip](../SChip)
37
- - [SChipFilter](../SChipFilter)
57
+ - [SDatePicker](../SDatePicker)
38
58
  - [SDateRangePicker](../SDateRangePicker)
39
59
  - [SFilePicker](../SFilePicker)
40
60
  - [SGnb](../SGnb)
41
61
  - [SGuide](../SGuide)
42
62
  - [SInput](../SInput)
63
+ - [SMeatballButton](../SMeatballButton)
43
64
  - [SModalContainer](../SModalContainer)
44
65
  - [SOverlayHeader](../SOverlayHeader)
45
66
  - [SPage](../SPage)
46
67
  - [SPopover](../SPopover)
47
68
  - [SSearchInput](../SSearchInput)
48
- - [SSelect](../SSelect)
69
+ - [STable](../STable)
49
70
  - [STimePicker](../STimePicker)
50
71
  - [STimeRangePicker](../STimeRangePicker)
51
72
  - [SToast](../SToast)
52
73
  - [STooltip](../STooltip)
53
74
  - [STree](../STree)
75
+ - [STreeTable](../STreeTable)
54
76
 
55
77
  ### Depends on
56
78
 
@@ -65,23 +87,28 @@ graph TD;
65
87
  SGhostButton --> STag
66
88
  SBarcodeInput --> SGhostButton
67
89
  SCalendar --> SGhostButton
90
+ SCalendarBoard --> SGhostButton
91
+ SChatAttachedFile --> SGhostButton
92
+ SChatInput --> SGhostButton
68
93
  SChip --> SGhostButton
69
- SChipFilter --> SGhostButton
94
+ SDatePicker --> SGhostButton
70
95
  SDateRangePicker --> SGhostButton
71
96
  SFilePicker --> SGhostButton
72
97
  SGnb --> SGhostButton
73
98
  SGuide --> SGhostButton
74
99
  SInput --> SGhostButton
100
+ SMeatballButton --> SGhostButton
75
101
  SModalContainer --> SGhostButton
76
102
  SOverlayHeader --> SGhostButton
77
103
  SPage --> SGhostButton
78
104
  SPopover --> SGhostButton
79
105
  SSearchInput --> SGhostButton
80
- SSelect --> SGhostButton
106
+ STable --> SGhostButton
81
107
  STimePicker --> SGhostButton
82
108
  STimeRangePicker --> SGhostButton
83
109
  SToast --> SGhostButton
84
110
  STooltip --> SGhostButton
85
111
  STree --> SGhostButton
112
+ STreeTable --> SGhostButton
86
113
  style SGhostButton fill:#f9f,stroke:#333,stroke-width:4px
87
114
  ```