sellmate-design-system-react 9.0.0-beta.7 → 9.0.0-beta.70

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 (387) 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 +20559 -10373
  336. package/dist/index.cjs.map +1 -1
  337. package/dist/index.d.ts +22 -0
  338. package/dist/index.js +20482 -10372
  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 +5901 -550
  363. package/dist/llms.txt +1915 -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 +3328 -273
  380. package/dist/theme.css +571 -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/table-column-width.mjs +110 -0
  386. package/eslint/scale.gen.mjs +6 -3
  387. package/package.json +17 -3
@@ -0,0 +1,56 @@
1
+ /**
2
+ * 보낸 파일 칸이 쓰는 값. `component.chatFile` 토큰 한 세트가 여백·면·선·칩을 모두 쥔다.
3
+ *
4
+ * 높이는 고정하지 않고 세로 패딩(`paddingY`)과 내용이 정한다 — 예전에 스케일에 안 떨어져
5
+ * 값으로 두던 높이(56)·타일(28)은 `paddingY` + `icon.wrapper.padding` + 아이콘 크기로 따라온다.
6
+ */
7
+ export declare const CHAT_FILE_CONFIG: {
8
+ /** 바깥 상자 — 좌우 비대칭 여백·상하 여백·면·선·라운드 */
9
+ readonly box: "pl-(--cmp-chatFile-paddingLeft) pr-(--cmp-chatFile-paddingRight) py-(--cmp-chatFile-paddingY) rounded-(--cmp-chatFile-radius) border-(length:--cmp-chatFile-border-width) border-(--cmp-chatFile-border-color) bg-(--cmp-chatFile-bg-default)";
10
+ /** 아이콘 칩 ↔ 파일명 간격 */
11
+ readonly contentGap: "gap-(--cmp-chatFile-gap)";
12
+ /**
13
+ * 클립 아이콘이 앉는 칩 — 내부 패딩·면·라운드 (높이는 아이콘+패딩이 정한다).
14
+ *
15
+ * hover 면은 상자가 아니라 여기에도 걸린다 — 카드가 어두워질 때 칩은 반대로 밝아져
16
+ * 칩이 배경에 묻히지 않는다. 상자의 hover 를 따라가야 하므로 group-hover 로 받는다.
17
+ *
18
+ * **`--sys-color-bg-frame` 은 임시다.** 시안의 hover 칩 색(`#FFFFFF`)에 대응하는
19
+ * 컴포넌트 토큰이 없다 — `component.chatMessage.chatFile.icon.wrapper.bg` 는 값이 하나뿐이라
20
+ * hover 를 담지 못한다. 상자의 `bg.default` 가 참조하는 것과 같은 시스템 토큰으로 대신 걸어 둔다.
21
+ * 디자인팀에 `icon.wrapper.bg.hover` 를 요청해 나오는 대로 갈아끼운다.
22
+ */
23
+ readonly tile: "p-(--cmp-chatFile-icon-wrapper-padding) rounded-(--cmp-chatFile-icon-wrapper-radius) bg-(--cmp-chatFile-icon-wrapper-bg) group-hover/chat-file:bg-(--sys-color-bg-frame)";
24
+ /** 칩 안 클립 아이콘 크기(px). SVG width/height 는 속성값이라 CSS 변수를 못 받아 값으로 둔다 (토큰 값과 동일) */
25
+ readonly iconSize: 20;
26
+ /** 파일명 타이포 프리셋 */
27
+ readonly nameTypo: "typo-body-md-bold";
28
+ /** 파일명·부가정보 텍스트색 */
29
+ readonly textColor: "text-(--cmp-chatFile-text-color)";
30
+ /**
31
+ * 눌리는 모양 — 커서·hover 면·포커스 링. 보낸 파일은 언제나 열 수 있으므로 늘 붙는다
32
+ * (`onFileClick` 이 필수다).
33
+ *
34
+ * 상자의 여백·면·선과 따로 두는 이유: 이건 상호작용을 드러내는 값이라 성격이 다르다.
35
+ * 링은 `SExpansionItem`·`SStepper` 와 같은 accent outline.
36
+ */
37
+ readonly interactive: "cursor-pointer hover:bg-(--cmp-chatFile-bg-hover) focus-visible:outline focus-visible:outline-2 focus-visible:outline-(--sys-color-border-accent)";
38
+ };
39
+ /**
40
+ * 바이트 수 → `9.4KB` 표기.
41
+ *
42
+ * **표기를 앱이 아니라 여기서 정하는 이유**: 문자열로 받으면 제품마다 `9.4KB`·`9.4 KB`·
43
+ * `9,626B` 로 갈린다. 같은 파일이 화면마다 다른 크기로 읽히는 것을 막으려면 한 곳에서 만든다.
44
+ *
45
+ * 1024 배수로 올리고, 바이트는 소수점이 뜻이 없어 정수로, 그 위는 한 자리까지 쓴다(시안 표기).
46
+ * 금액·수량의 세 자리 콤마 규칙(AGENTS.md §1-4)과는 별개다 — 용량은 단위가 자리를 대신한다.
47
+ */
48
+ export declare function formatFileSize(bytes: number): string;
49
+ /** 앱이 준 확장자를 표기 형태로 맞춘다 — 앞의 점을 떼고 소문자로. `'.CSV'` → `'csv'` */
50
+ export declare function normalizeExtension(extension: string): string;
51
+ /**
52
+ * 파일명 → 소문자 확장자. 확장자가 없으면 빈 문자열.
53
+ *
54
+ * 맨 앞의 점은 확장자가 아니다(`.gitignore` 는 이름 전체가 이름이다).
55
+ */
56
+ export declare function fileExtension(name: string): string;
@@ -0,0 +1,2 @@
1
+ export { SChatFile, type SChatFileProps } from './SChatFile';
2
+ export { CHAT_FILE_CONFIG, formatFileSize, fileExtension, normalizeExtension, } from './chatFile.config';
@@ -0,0 +1,44 @@
1
+ # SChatInput
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SChatInput
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `value?` | `string` | `''` | 입력값 (제어) |
12
+ | `placeholder?` | `string` | `DEFAULT_PLACEHOLDER` | 안내 문구. 세 제품이 같은 말로 서도록 기본값을 쥐고 있다 |
13
+ | `disabled?` | `boolean` | `false` | 비활성 |
14
+ | `busy?` | `boolean` | `false` | 응답을 기다리는 중인지. 켜면 전송 버튼 자리에 정지 버튼이 서고 Enter 전송이 잠긴다 — 답이 오는 동안 또 보내지 못하게 막는 자리다. |
15
+ | `footerAction?` | `ReactNode` | — | 입력창 아래 보조 액션 슬롯. 없으면 그 줄이 통째로 빠진다. 상담 종료처럼 **대화 자체를 끝내는, 전송과 층이 다른 동작**이 오는 자리다. 무엇을 놓을지는 앱이 정하고, 입력창은 가운데에 세우는 것까지만 한다 — `STextLink` 를 넣는 것이 보통이다. |
16
+ | `maxRows?` | `number` | `DEFAULT_MAX_ROWS` | 입력창이 자랄 수 있는 최대 줄 수. 여기 닿으면 더 자라지 않고 그 안에서 스크롤한다. |
17
+ | `className?` | `string` | — | 바깥 컨테이너 className (안쪽 textarea 가 아니다) |
18
+ | `style?` | `CSSProperties` | — | 바깥 컨테이너 style |
19
+ | `textareaClassName?` | `string` | — | 안쪽 textarea className |
20
+
21
+ #### Events
22
+
23
+ | Event | Type | Description |
24
+ |-------|------|-------------|
25
+ | `onValueChange` | `(value: string) => void` | 값 변경 |
26
+ | `onSend` | `(value: string) => void` | 전송. 전송 버튼을 누르거나 Enter 를 쳤을 때 현재 값을 넘긴다. **값이 비면 전송 버튼이 잠긴다** — 빈 메시지는 보낼 수 없다. |
27
+ | `onAttach` | `() => void` | 파일 첨부. **주면 입력창 왼쪽에 첨부 버튼이 선다** |
28
+ | `onStop` | `() => void` | 정지. `busy` 일 때 정지 버튼을 누르면 불린다 |
29
+
30
+ ## Dependencies
31
+
32
+ ### Depends on
33
+
34
+ - [SGhostButton](../SGhostButton)
35
+ - [STextarea](../STextarea)
36
+
37
+ ### Graph
38
+
39
+ ```mermaid
40
+ graph TD;
41
+ SChatInput --> SGhostButton
42
+ SChatInput --> STextarea
43
+ style SChatInput fill:#f9f,stroke:#333,stroke-width:4px
44
+ ```
@@ -0,0 +1,60 @@
1
+ import { type CSSProperties, type ReactNode, type TextareaHTMLAttributes } from 'react';
2
+ /**
3
+ * 안쪽 textarea 로 그대로 흘러가는 네이티브 속성 — `SInput`·`STextarea` 와 같은 방식이다.
4
+ * 컴포넌트가 직접 다루는 것만 뺀다.
5
+ */
6
+ export interface SChatInputProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange' | 'placeholder' | 'disabled' | 'rows' | 'className' | 'style'> {
7
+ /** 입력값 (제어) */
8
+ value?: string;
9
+ /** 값 변경 */
10
+ onValueChange?: (value: string) => void;
11
+ /** 안내 문구. 세 제품이 같은 말로 서도록 기본값을 쥐고 있다 */
12
+ placeholder?: string;
13
+ /** 비활성 */
14
+ disabled?: boolean;
15
+ /**
16
+ * 전송. 전송 버튼을 누르거나 Enter 를 쳤을 때 현재 값을 넘긴다.
17
+ *
18
+ * **값이 비면 전송 버튼이 잠긴다** — 빈 메시지는 보낼 수 없다.
19
+ */
20
+ onSend?: (value: string) => void;
21
+ /** 파일 첨부. **주면 입력창 왼쪽에 첨부 버튼이 선다** */
22
+ onAttach?: () => void;
23
+ /**
24
+ * 응답을 기다리는 중인지. 켜면 전송 버튼 자리에 정지 버튼이 서고 Enter 전송이 잠긴다 —
25
+ * 답이 오는 동안 또 보내지 못하게 막는 자리다.
26
+ */
27
+ busy?: boolean;
28
+ /** 정지. `busy` 일 때 정지 버튼을 누르면 불린다 */
29
+ onStop?: () => void;
30
+ /**
31
+ * 입력창 아래 보조 액션 슬롯. 없으면 그 줄이 통째로 빠진다.
32
+ *
33
+ * 상담 종료처럼 **대화 자체를 끝내는, 전송과 층이 다른 동작**이 오는 자리다. 무엇을 놓을지는
34
+ * 앱이 정하고, 입력창은 가운데에 세우는 것까지만 한다 — `STextLink` 를 넣는 것이 보통이다.
35
+ */
36
+ footerAction?: ReactNode;
37
+ /**
38
+ * 입력창이 자랄 수 있는 최대 줄 수. 여기 닿으면 더 자라지 않고 그 안에서 스크롤한다.
39
+ */
40
+ maxRows?: number;
41
+ /** 바깥 컨테이너 className (안쪽 textarea 가 아니다) */
42
+ className?: string;
43
+ /** 바깥 컨테이너 style */
44
+ style?: CSSProperties;
45
+ /** 안쪽 textarea className */
46
+ textareaClassName?: string;
47
+ }
48
+ /**
49
+ * SChatInput — 대화 화면 맨 아래에 서는 입력창.
50
+ *
51
+ * 첨부·입력·전송을 한 줄로 세우고, 필요하면 그 아래 보조 액션(상담 종료 등)을 붙인다.
52
+ * Enter 로 보내고 Shift+Enter 로 줄을 바꾼다 — 한글 조합 중의 Enter 는 보내지 않는다.
53
+ *
54
+ * **글이 길어지면 입력창이 자란다** — `maxRows` 줄까지 늘어나고, 거기 닿으면 그 안에서
55
+ * 스크롤한다. 상한이 없으면 대화가 화면 밖으로 밀려난다.
56
+ *
57
+ * **응답을 기다리는 동안에는 `busy` 를 켠다** — 전송 버튼이 정지 버튼으로 바뀌고 Enter 전송이
58
+ * 잠겨, 답이 오는 중에 또 보내는 일이 막힌다.
59
+ */
60
+ export declare const SChatInput: import("react").ForwardRefExoticComponent<SChatInputProps & import("react").RefAttributes<HTMLTextAreaElement>>;
@@ -0,0 +1 @@
1
+ export { SChatInput, type SChatInputProps } from './SChatInput';
@@ -0,0 +1,86 @@
1
+ # SChatMessage
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SChatMessage
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `direction` | `SChatMessageDirection` | `'incoming'` | 받은 메시지(왼쪽)인지 보낸 메시지(오른쪽)인지. **아바타와 이름 유무도 여기서 갈린다** — 받은 메시지에만 아바타와 `sender` 가 선다. 보낸 메시지는 내가 보냈다는 것이 자리로 이미 드러나 얼굴도 이름도 필요 없다. |
12
+ | `sender?` | `ReactNode` | — | 말풍선 위에 붙는 보낸 사람 이름. 없으면 자리째 빠진다. **받은 메시지에만 쓰인다** — 보낸 메시지에는 넘겨도 그리지 않는다(`direction` 참고). 앱이 데이터를 한 번만 매핑해 방향과 무관하게 넘길 수 있도록 막지 않고 무시한다. |
13
+ | `time?` | `ReactNode` | — | 말풍선 아래에 붙는 시각. 표기는 앱이 정해 문자열로 넘긴다 — 대화 화면의 시각은 `오후 5:52` 처럼 읽는 표기를 쓰므로 카드가 서식을 강제하지 않는다 (AGENTS.md §1-4 예외). |
14
+ | `readStatus?` | `SChatMessageReadStatus` | — | 상대가 읽었는지. 시각 왼쪽에 `읽음`·`안 읽음` 으로 붙고, 주지 않으면 표시하지 않는다. **내가 보낸 메시지에만 붙인다** — 받은 메시지에 읽음 표시를 다는 것은 뜻이 없다. |
15
+ | `avatarSrc?` | `string` | — | 아바타 이미지 경로. 없으면 사람 아이콘 자리표시가 선다. **받은 메시지에만 쓰인다** — 보낸 메시지에는 아바타가 서지 않는다(`direction` 참고). |
16
+ | `avatarAlt?` | `string` | — | 아바타 대체 텍스트 |
17
+ | `continued?` | `boolean` | `false` | 같은 사람이 이어서 말한 묶음인지. 켜면 **아바타와 `sender` 를 그리지 않는다** — 말풍선이 위 묶음과 같은 선에서 시작해 한 사람의 말로 이어 읽힌다. 받은 메시지에서는 아바타 자리를 비워 둔 채 남긴다 — 안 남기면 말풍선이 44px 왼쪽으로 밀려 위 묶음과 어긋난다. 보낸 메시지는 아바타가 없으므로 이름만 숨긴다. `time`·`readStatus` 는 그대로 나온다. 시간이 벌어져 묶음을 나눴어도 얼굴은 한 번만 보이면 되고 시각은 묶음마다 필요하기 때문이다. **얼마나 벌어져야 묶음을 나눌지는 앱이 정한다** — 30분이든 하루든 대화의 성격에 달렸으므로 컴포넌트는 기준을 갖지 않고 스위치만 연다. |
18
+ | `variant?` | `SChatMessageVariant` | `'default'` | 말풍선 종류. `template` 은 미리 등록된 서식으로, `admin` 은 관리자·시스템이 보낸 메시지임을 각각 다른 면으로 드러낸다. 면 색은 토큰이 정하므로 여기서 색을 정하지 않는다. **보낸 메시지(`direction="outgoing"`)에만 쓰인다** — 받은 메시지에는 넘겨도 그리지 않는다. 셋 다 사업자 쪽이 보내는 것이라 받은 쪽에는 뜻이 없다. 앱이 메시지를 한 번만 매핑해 방향과 무관하게 넘길 수 있도록 막지 않고 무시한다. |
19
+ | `actions?` | `ReactNode` | — | 시각 아래에 붙는 동작 슬롯. 없으면 그 줄이 통째로 빠진다. 「상담원 연결」처럼 **이 메시지에 이어서 할 수 있는 동작**이 오는 자리다. 무엇을 놓을지는 앱이 정하고, 메시지는 줄로 세우고 방향에 맞춰 정렬하는 것까지만 한다. 시각과 같은 선에서 시작한다 — 말풍선 끝에서 한 칸 안이다. |
20
+ | `messages?` | `ReactNode[]` | — | 말풍선 목록. **한 항목이 말풍선 하나**가 되어 위에서 아래로 쌓인다. 한 사람이 연달아 말하면 아바타·이름·시각은 한 번만 서고 말풍선만 늘어난다 — 그 묶음이 이 컴포넌트 한 개다. 말풍선 안에는 글뿐 아니라 버튼 같은 요소도 올 수 있다. |
21
+ | `attachments?` | `ReactNode[]` | — | 말풍선 아래에 붙는 파일 목록. **한 항목이 칸 하나**가 되어 위에서 아래로 쌓인다. `SChatFile` 을 넣는 자리다 — 말풍선과 달리 면으로 감싸지 않고 넘긴 것을 그대로 세운다. 파일 칸은 제 면·선·라운드를 이미 갖고 있어 한 번 더 감싸면 칸이 두 겹으로 보인다. **`messages` 대신 여기로 넘긴다.** `messages` 로 넘기면 말풍선 면에 감싸여 그렇게 된다. 아바타·이름·시각·읽음 표시는 글 메시지와 똑같이 이 컴포넌트가 그린다 — 파일을 보낸 것도 대화의 한 줄이므로 행 규칙을 따로 갖지 않는다. |
22
+
23
+ ## Types
24
+
25
+ ### SChatMessageDirection
26
+
27
+ ```ts
28
+ export type SChatMessageDirection = (typeof CHAT_MESSAGE_DIRECTIONS)[number];
29
+ ```
30
+
31
+ ### SChatMessageReadStatus
32
+
33
+ ```ts
34
+ export type SChatMessageReadStatus = (typeof CHAT_MESSAGE_READ_STATUSES)[number];
35
+ ```
36
+
37
+ ### SChatMessageVariant
38
+
39
+ ```ts
40
+ export type SChatMessageVariant = (typeof CHAT_MESSAGE_VARIANTS)[number];
41
+ ```
42
+
43
+ ### CHAT_MESSAGE_DIRECTIONS
44
+
45
+ ```ts
46
+ /** 메시지가 오는 쪽 — 받은 메시지(incoming)는 왼쪽, 보낸 메시지(outgoing)는 오른쪽에 선다. */
47
+ export const CHAT_MESSAGE_DIRECTIONS = ['incoming', 'outgoing'] as const;
48
+ ```
49
+
50
+ ### CHAT_MESSAGE_READ_STATUSES
51
+
52
+ ```ts
53
+ /** 상대가 내 메시지를 읽었는지. 시각 왼쪽에 붙는다. */
54
+ export const CHAT_MESSAGE_READ_STATUSES = ['read', 'unread'] as const;
55
+ ```
56
+
57
+ ### CHAT_MESSAGE_VARIANTS
58
+
59
+ ```ts
60
+ /**
61
+ * 말풍선의 종류.
62
+ * - `default` 사람이 직접 쓴 메시지
63
+ * - `template` 미리 등록된 서식으로 보내진 메시지
64
+ * - `admin` 관리자·시스템이 보낸 메시지
65
+ *
66
+ * **보낸 메시지에서만 면이 갈린다.** 셋 다 사업자 쪽이 보내는 것이라 받은 메시지에는
67
+ * 뜻이 없고, 받은 메시지는 무엇으로 보냈든 같은 면으로 선다.
68
+ */
69
+ export const CHAT_MESSAGE_VARIANTS = ['default', 'template', 'admin'] as const;
70
+ ```
71
+
72
+ ## Dependencies
73
+
74
+ ### Depends on
75
+
76
+ - [SIcon](../SIcon)
77
+ - [SImage](../SImage)
78
+
79
+ ### Graph
80
+
81
+ ```mermaid
82
+ graph TD;
83
+ SChatMessage --> SIcon
84
+ SChatMessage --> SImage
85
+ style SChatMessage fill:#f9f,stroke:#333,stroke-width:4px
86
+ ```
@@ -0,0 +1,123 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ /** 메시지가 오는 쪽 — 받은 메시지(incoming)는 왼쪽, 보낸 메시지(outgoing)는 오른쪽에 선다. */
3
+ export declare const CHAT_MESSAGE_DIRECTIONS: readonly ["incoming", "outgoing"];
4
+ export type SChatMessageDirection = (typeof CHAT_MESSAGE_DIRECTIONS)[number];
5
+ /**
6
+ * 말풍선의 종류.
7
+ * - `default` 사람이 직접 쓴 메시지
8
+ * - `template` 미리 등록된 서식으로 보내진 메시지
9
+ * - `admin` 관리자·시스템이 보낸 메시지
10
+ *
11
+ * **보낸 메시지에서만 면이 갈린다.** 셋 다 사업자 쪽이 보내는 것이라 받은 메시지에는
12
+ * 뜻이 없고, 받은 메시지는 무엇으로 보냈든 같은 면으로 선다.
13
+ */
14
+ export declare const CHAT_MESSAGE_VARIANTS: readonly ["default", "template", "admin"];
15
+ export type SChatMessageVariant = (typeof CHAT_MESSAGE_VARIANTS)[number];
16
+ /** 상대가 내 메시지를 읽었는지. 시각 왼쪽에 붙는다. */
17
+ export declare const CHAT_MESSAGE_READ_STATUSES: readonly ["read", "unread"];
18
+ export type SChatMessageReadStatus = (typeof CHAT_MESSAGE_READ_STATUSES)[number];
19
+ export interface SChatMessageProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
20
+ /**
21
+ * 받은 메시지(왼쪽)인지 보낸 메시지(오른쪽)인지.
22
+ *
23
+ * **아바타와 이름 유무도 여기서 갈린다** — 받은 메시지에만 아바타와 `sender` 가 선다.
24
+ * 보낸 메시지는 내가 보냈다는 것이 자리로 이미 드러나 얼굴도 이름도 필요 없다.
25
+ */
26
+ direction: SChatMessageDirection;
27
+ /**
28
+ * 말풍선 위에 붙는 보낸 사람 이름. 없으면 자리째 빠진다.
29
+ *
30
+ * **받은 메시지에만 쓰인다** — 보낸 메시지에는 넘겨도 그리지 않는다(`direction` 참고).
31
+ * 앱이 데이터를 한 번만 매핑해 방향과 무관하게 넘길 수 있도록 막지 않고 무시한다.
32
+ */
33
+ sender?: ReactNode;
34
+ /**
35
+ * 말풍선 아래에 붙는 시각. 표기는 앱이 정해 문자열로 넘긴다 — 대화 화면의 시각은
36
+ * `오후 5:52` 처럼 읽는 표기를 쓰므로 카드가 서식을 강제하지 않는다 (AGENTS.md §1-4 예외).
37
+ */
38
+ time?: ReactNode;
39
+ /**
40
+ * 상대가 읽었는지. 시각 왼쪽에 `읽음`·`안 읽음` 으로 붙고, 주지 않으면 표시하지 않는다.
41
+ *
42
+ * **내가 보낸 메시지에만 붙인다** — 받은 메시지에 읽음 표시를 다는 것은 뜻이 없다.
43
+ */
44
+ readStatus?: SChatMessageReadStatus;
45
+ /**
46
+ * 아바타 이미지 경로. 없으면 사람 아이콘 자리표시가 선다.
47
+ *
48
+ * **받은 메시지에만 쓰인다** — 보낸 메시지에는 아바타가 서지 않는다(`direction` 참고).
49
+ */
50
+ avatarSrc?: string;
51
+ /** 아바타 대체 텍스트 */
52
+ avatarAlt?: string;
53
+ /**
54
+ * 같은 사람이 이어서 말한 묶음인지. 켜면 **아바타와 `sender` 를 그리지 않는다** —
55
+ * 말풍선이 위 묶음과 같은 선에서 시작해 한 사람의 말로 이어 읽힌다.
56
+ *
57
+ * 받은 메시지에서는 아바타 자리를 비워 둔 채 남긴다 — 안 남기면 말풍선이 44px 왼쪽으로 밀려
58
+ * 위 묶음과 어긋난다. 보낸 메시지는 아바타가 없으므로 이름만 숨긴다.
59
+ *
60
+ * `time`·`readStatus` 는 그대로 나온다. 시간이 벌어져 묶음을 나눴어도 얼굴은 한 번만 보이면
61
+ * 되고 시각은 묶음마다 필요하기 때문이다.
62
+ *
63
+ * **얼마나 벌어져야 묶음을 나눌지는 앱이 정한다** — 30분이든 하루든 대화의 성격에 달렸으므로
64
+ * 컴포넌트는 기준을 갖지 않고 스위치만 연다.
65
+ */
66
+ continued?: boolean;
67
+ /**
68
+ * 말풍선 종류. `template` 은 미리 등록된 서식으로, `admin` 은 관리자·시스템이 보낸
69
+ * 메시지임을 각각 다른 면으로 드러낸다. 면 색은 토큰이 정하므로 여기서 색을 정하지 않는다.
70
+ *
71
+ * **보낸 메시지(`direction="outgoing"`)에만 쓰인다** — 받은 메시지에는 넘겨도 그리지 않는다.
72
+ * 셋 다 사업자 쪽이 보내는 것이라 받은 쪽에는 뜻이 없다. 앱이 메시지를 한 번만 매핑해
73
+ * 방향과 무관하게 넘길 수 있도록 막지 않고 무시한다.
74
+ */
75
+ variant?: SChatMessageVariant;
76
+ /**
77
+ * 시각 아래에 붙는 동작 슬롯. 없으면 그 줄이 통째로 빠진다.
78
+ *
79
+ * 「상담원 연결」처럼 **이 메시지에 이어서 할 수 있는 동작**이 오는 자리다. 무엇을 놓을지는
80
+ * 앱이 정하고, 메시지는 줄로 세우고 방향에 맞춰 정렬하는 것까지만 한다.
81
+ *
82
+ * 시각과 같은 선에서 시작한다 — 말풍선 끝에서 한 칸 안이다.
83
+ */
84
+ actions?: ReactNode;
85
+ /**
86
+ * 말풍선 목록. **한 항목이 말풍선 하나**가 되어 위에서 아래로 쌓인다.
87
+ *
88
+ * 한 사람이 연달아 말하면 아바타·이름·시각은 한 번만 서고 말풍선만 늘어난다 —
89
+ * 그 묶음이 이 컴포넌트 한 개다. 말풍선 안에는 글뿐 아니라 버튼 같은 요소도 올 수 있다.
90
+ */
91
+ messages?: ReactNode[];
92
+ /**
93
+ * 말풍선 아래에 붙는 파일 목록. **한 항목이 칸 하나**가 되어 위에서 아래로 쌓인다.
94
+ *
95
+ * `SChatFile` 을 넣는 자리다 — 말풍선과 달리 면으로 감싸지 않고 넘긴 것을 그대로 세운다.
96
+ * 파일 칸은 제 면·선·라운드를 이미 갖고 있어 한 번 더 감싸면 칸이 두 겹으로 보인다.
97
+ *
98
+ * **`messages` 대신 여기로 넘긴다.** `messages` 로 넘기면 말풍선 면에 감싸여 그렇게 된다.
99
+ *
100
+ * 아바타·이름·시각·읽음 표시는 글 메시지와 똑같이 이 컴포넌트가 그린다 — 파일을 보낸 것도
101
+ * 대화의 한 줄이므로 행 규칙을 따로 갖지 않는다.
102
+ */
103
+ attachments?: ReactNode[];
104
+ }
105
+ /**
106
+ * SChatMessage — 대화 화면에서 한 사람이 한 번에 말한 묶음.
107
+ *
108
+ * 아바타·보낸 사람(받은 메시지만)·말풍선·시각을 한 줄로 세운다. **말풍선은 `messages` 항목 수만큼 쌓이고**
109
+ * 아바타·이름·시각은 그 묶음에 한 번만 붙는다 — 연달아 말한 여러 줄이 한 덩어리로 읽힌다.
110
+ *
111
+ * 시각 아래에 동작을 붙여야 하면 `actions` 슬롯에 넣는다 — 시각과 같은 선에서 시작해 방향에
112
+ * 맞춰 정렬된다.
113
+ *
114
+ * 시간이 벌어져 묶음을 나눠야 하는데 말한 사람은 같을 때는 `continued` 를 켠다 — 아바타 자리는
115
+ * 유지한 채 얼굴과 이름만 빠져, 두 묶음이 한 사람의 말로 이어 읽힌다.
116
+ `direction` 하나로 받은 메시지(왼쪽)와
117
+ * 보낸 메시지(오른쪽)가 갈리고, 그에 따라 정렬과 말풍선 색이 함께 뒤집힌다.
118
+ *
119
+ * **말풍선 폭은 내용이 정한다** — 짧은 메시지는 글자만큼만 차지하고, 길면 접힌다. 다만 반대편
120
+ * 끝까지 가지는 않는다: 받은 메시지는 오른쪽, 보낸 메시지는 왼쪽에 여백이 남아 어느 쪽이 말한
121
+ * 것인지가 폭으로도 읽힌다. 대화 폭을 더 좁히려면 이 컴포넌트가 아니라 담는 쪽을 좁힌다.
122
+ */
123
+ export declare const SChatMessage: import("react").ForwardRefExoticComponent<SChatMessageProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export { SChatMessage, CHAT_MESSAGE_DIRECTIONS, CHAT_MESSAGE_READ_STATUSES, CHAT_MESSAGE_VARIANTS, type SChatMessageDirection, type SChatMessageReadStatus, type SChatMessageVariant, type SChatMessageProps, } from './SChatMessage';
@@ -0,0 +1,12 @@
1
+ # SChatSystemMessage
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SChatSystemMessage
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `message?` | `string[]` | — | 안내 문구. **항목 수만큼 알약이 쌓인다** — 서로 다른 시점에 일어난 사실은 한 알약에 몰아넣지 않고 항목을 나눈다 (`SChatMessage` 의 `messages` 와 같은 규칙). 각 항목은 **인라인 HTML 문자열을 받는다.** `<b>` `<strong>` `<i>` `<em>` `<br>` `<span>` `<a>` 만 살아남고 나머지 태그·속성과 `javascript:` 같은 위험한 스킴은 `sanitizeInlineHtml` 이 제거한다. 그래도 **서버·사용자가 만든 문자열을 그대로 넘기지 않는다** — 살균은 마지막 방어선이지 입력 검증의 대체가 아니다. ```tsx <SChatSystemMessage message={['<b>김상담</b> 상담사가 배정되었습니다.']} /> ``` |
12
+
@@ -0,0 +1,18 @@
1
+ import { type HTMLAttributes } from 'react';
2
+ export interface SChatSystemMessageProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
3
+ /**
4
+ * 안내 문구. **항목 수만큼 알약이 쌓인다** — 서로 다른 시점에 일어난 사실은
5
+ * 한 알약에 몰아넣지 않고 항목을 나눈다 (`SChatMessage` 의 `messages` 와 같은 규칙).
6
+ *
7
+ * 각 항목은 **인라인 HTML 문자열을 받는다.** `<b>` `<strong>` `<i>` `<em>` `<br>`
8
+ * `<span>` `<a>` 만 살아남고 나머지 태그·속성과 `javascript:` 같은 위험한 스킴은
9
+ * `sanitizeInlineHtml` 이 제거한다. 그래도 **서버·사용자가 만든 문자열을 그대로 넘기지 않는다** —
10
+ * 살균은 마지막 방어선이지 입력 검증의 대체가 아니다.
11
+ *
12
+ * ```tsx
13
+ * <SChatSystemMessage message={['<b>김상담</b> 상담사가 배정되었습니다.']} />
14
+ * ```
15
+ */
16
+ message?: string[];
17
+ }
18
+ export declare const SChatSystemMessage: import("react").ForwardRefExoticComponent<SChatSystemMessageProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export { SChatSystemMessage, type SChatSystemMessageProps } from './SChatSystemMessage';
@@ -22,6 +22,14 @@
22
22
  |-------|------|-------------|
23
23
  | `onValueChange` | `(value: boolean \| unknown[]) => void` | 값 변경 (sdUpdate) |
24
24
 
25
+ ## Types
26
+
27
+ ### SCheckboxValue
28
+
29
+ ```ts
30
+ export type SCheckboxValue = boolean | unknown[] | null;
31
+ ```
32
+
25
33
  ## Dependencies
26
34
 
27
35
  ### Used by
@@ -8,6 +8,7 @@
8
8
 
9
9
  | Prop | Type | Default | Description |
10
10
  |------|------|---------|-------------|
11
+ | `color?` | `SChipColor` | — | 색상. 주지 않으면 기본 회색 칩이다. 색은 기본 상태에만 입힌다 — error·편집 중·disabled 는 상태 토큰이 우선한다. 색상은 컴포넌트 토큰 `--cmp-chip-chip-<color>-{bg,content,border}` 를 참조한다. |
11
12
  | `name?` | `string` | — | 폼 연동용 name |
12
13
  | `value?` | `string` | `''` | 칩 텍스트 값 |
13
14
  | `error?` | `boolean` | — | 에러 상태 |
@@ -35,6 +36,30 @@
35
36
  | `focus` | `() => void` | 편집 input에 포커스합니다. |
36
37
  | `getNativeElement` | `() => HTMLElement \| null` | 네이티브 편집 엘리먼트를 반환합니다. |
37
38
 
39
+ ## Types
40
+
41
+ ### SChipColor
42
+
43
+ ```ts
44
+ export type SChipColor = (typeof CHIP_COLORS)[number];
45
+ ```
46
+
47
+ ### CHIP_COLORS
48
+
49
+ ```ts
50
+ export const CHIP_COLORS = [
51
+ 'red',
52
+ 'orange',
53
+ 'yellow',
54
+ 'green',
55
+ 'blue',
56
+ 'darkblue',
57
+ 'indigo',
58
+ 'purple',
59
+ 'grey',
60
+ ] as const;
61
+ ```
62
+
38
63
  ## Dependencies
39
64
 
40
65
  ### Used by
@@ -1,6 +1,14 @@
1
1
  import { type CSSProperties } from 'react';
2
2
  import { type Rule } from '../../lib/form';
3
+ export declare const CHIP_COLORS: readonly ["red", "orange", "yellow", "green", "blue", "darkblue", "indigo", "purple", "grey"];
4
+ export type SChipColor = (typeof CHIP_COLORS)[number];
3
5
  export interface SChipProps {
6
+ /**
7
+ * 색상. 주지 않으면 기본 회색 칩이다.
8
+ * 색은 기본 상태에만 입힌다 — error·편집 중·disabled 는 상태 토큰이 우선한다.
9
+ * 색상은 컴포넌트 토큰 `--cmp-chip-chip-<color>-{bg,content,border}` 를 참조한다.
10
+ */
11
+ color?: SChipColor;
4
12
  /** 폼 연동용 name */
5
13
  name?: string;
6
14
  /** 칩 텍스트 값 */
@@ -1 +1 @@
1
- export { SChip, type SChipHandle, type SChipProps } from './SChip';
1
+ export { SChip, CHIP_COLORS, type SChipColor, type SChipHandle, type SChipProps } from './SChip';