sellmate-design-system-react 9.0.0-beta.8 → 9.0.0-beta.80

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 (409) hide show
  1. package/AGENTS.md +3974 -267
  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 +44 -0
  45. package/dist/components/SChatInput/SChatInput.d.ts +60 -0
  46. package/dist/components/SChatInput/index.d.ts +1 -0
  47. package/dist/components/SChatMessage/README.md +86 -0
  48. package/dist/components/SChatMessage/SChatMessage.d.ts +123 -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 +8 -0
  54. package/dist/components/SChip/README.md +25 -0
  55. package/dist/components/SChip/SChip.d.ts +8 -0
  56. package/dist/components/SChip/index.d.ts +1 -1
  57. package/dist/components/SChipFilter/README.md +369 -14
  58. package/dist/components/SChipFilter/SChipFilter.d.ts +169 -60
  59. package/dist/components/SChipFilter/index.d.ts +1 -1
  60. package/dist/components/SChipInput/README.md +18 -2
  61. package/dist/components/SChipInput/SChipInput.d.ts +23 -3
  62. package/dist/components/SChipInput/index.d.ts +1 -1
  63. package/dist/components/SCircleProgress/README.md +13 -2
  64. package/dist/components/SCircleProgress/SCircleProgress.d.ts +11 -3
  65. package/dist/components/SConfirmModal/README.md +13 -4
  66. package/dist/components/SConfirmModal/SConfirmModal.d.ts +46 -9
  67. package/dist/components/SContextAlert/README.md +52 -0
  68. package/dist/components/SContextAlert/SContextAlert.d.ts +51 -0
  69. package/dist/components/SContextAlert/contextAlert.config.d.ts +22 -0
  70. package/dist/components/SContextAlert/index.d.ts +2 -0
  71. package/dist/components/SDatePicker/README.md +22 -2
  72. package/dist/components/SDatePicker/SDatePicker.d.ts +42 -5
  73. package/dist/components/SDateRangePicker/README.md +22 -4
  74. package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +44 -7
  75. package/dist/components/SDivider/README.md +7 -0
  76. package/dist/components/SDivider/SDivider.d.ts +11 -0
  77. package/dist/components/SDonutChart/README.md +105 -0
  78. package/dist/components/SDonutChart/SDonutChart.d.ts +82 -0
  79. package/dist/components/SDonutChart/index.d.ts +1 -0
  80. package/dist/components/SDraggableItem/README.md +37 -0
  81. package/dist/components/SDraggableItem/SDraggableItem.d.ts +2 -0
  82. package/dist/components/SDraggableItem/index.d.ts +1 -1
  83. package/dist/components/SDraggableList/README.md +33 -3
  84. package/dist/components/SDraggableList/SDraggableList.d.ts +18 -3
  85. package/dist/components/SDraggableList/index.d.ts +1 -1
  86. package/dist/components/SDrawer/README.md +8 -0
  87. package/dist/components/SDropdownButton/README.md +19 -0
  88. package/dist/components/SEditor/EditorBody.d.ts +36 -0
  89. package/dist/components/SEditor/EditorToolbar.d.ts +93 -0
  90. package/dist/components/SEditor/README.md +205 -0
  91. package/dist/components/SEditor/SEditor.d.ts +128 -0
  92. package/dist/components/SEditor/editor-icons.d.ts +63 -0
  93. package/dist/components/SEditor/editor.config.d.ts +119 -0
  94. package/dist/components/SEditor/index.d.ts +8 -0
  95. package/dist/components/SEditor/tiptap-api.d.ts +29 -0
  96. package/dist/components/SEditor/use-is-mobile.d.ts +14 -0
  97. package/dist/components/SExpansionItem/README.md +38 -2
  98. package/dist/components/SExpansionItem/SExpansionItem.d.ts +8 -2
  99. package/dist/components/SExpansionItem/index.d.ts +1 -1
  100. package/dist/components/SField/README.md +37 -5
  101. package/dist/components/SField/SField.d.ts +40 -8
  102. package/dist/components/SField/index.d.ts +1 -1
  103. package/dist/components/SFilePicker/README.md +20 -4
  104. package/dist/components/SFilePicker/SFilePicker.d.ts +26 -6
  105. package/dist/components/SFooter/README.md +44 -0
  106. package/dist/components/SFooter/SFooter.d.ts +29 -13
  107. package/dist/components/SFooter/index.d.ts +1 -1
  108. package/dist/components/SForm/README.md +12 -1
  109. package/dist/components/SForm/SForm.d.ts +2 -2
  110. package/dist/components/SGhostButton/README.md +28 -4
  111. package/dist/components/SGhostButton/SGhostButton.d.ts +4 -1
  112. package/dist/components/SGnb/README.md +109 -8
  113. package/dist/components/SGnb/SGnb.d.ts +112 -11
  114. package/dist/components/SGnb/gnb.config.d.ts +18 -5
  115. package/dist/components/SGnb/index.d.ts +1 -1
  116. package/dist/components/SGnbSystem/README.md +186 -0
  117. package/dist/components/SGnbSystem/SGnbSystem.d.ts +179 -0
  118. package/dist/components/SGnbSystem/gnbSystem.config.d.ts +122 -0
  119. package/dist/components/SGnbSystem/index.d.ts +2 -0
  120. package/dist/components/SGuide/README.md +16 -1
  121. package/dist/components/SGuide/SGuide.d.ts +5 -2
  122. package/dist/components/SIcon/README.md +20 -0
  123. package/dist/components/SIcon/SIcon.d.ts +1 -1
  124. package/dist/components/SIcon/icons.gen.d.ts +20 -1
  125. package/dist/components/SImage/README.md +23 -1
  126. package/dist/components/SImage/SImage.d.ts +11 -8
  127. package/dist/components/SInput/README.md +8 -4
  128. package/dist/components/SInput/SInput.d.ts +17 -5
  129. package/dist/components/SKeyValueTable/README.md +88 -0
  130. package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +30 -3
  131. package/dist/components/SKeyValueTable/index.d.ts +1 -1
  132. package/dist/components/SLauncherListBox/README.md +82 -0
  133. package/dist/components/SLauncherListBox/SLauncherListBox.d.ts +80 -0
  134. package/dist/components/SLauncherListBox/index.d.ts +2 -0
  135. package/dist/components/SLauncherListBox/launcherListBox.config.d.ts +154 -0
  136. package/dist/components/SLayout/README.md +22 -1
  137. package/dist/components/SLayout/SLayout.d.ts +6 -2
  138. package/dist/components/SLayout/index.d.ts +1 -1
  139. package/dist/components/SLineChart/README.md +131 -0
  140. package/dist/components/SLineChart/SLineChart.d.ts +110 -0
  141. package/dist/components/SLineChart/index.d.ts +1 -0
  142. package/dist/components/SLineChart/lineChart.config.d.ts +95 -0
  143. package/dist/components/SLinearProgress/README.md +16 -1
  144. package/dist/components/SLinearProgress/SLinearProgress.d.ts +11 -2
  145. package/dist/components/SLinearProgress/index.d.ts +1 -1
  146. package/dist/components/SList/README.md +15 -2
  147. package/dist/components/SList/SList.d.ts +7 -3
  148. package/dist/components/SList/index.d.ts +1 -1
  149. package/dist/components/SListItem/README.md +43 -2
  150. package/dist/components/SListItem/SListItem.d.ts +8 -2
  151. package/dist/components/SListItem/index.d.ts +1 -1
  152. package/dist/components/SLoadingContainer/index.d.ts +1 -1
  153. package/dist/components/SLoadingContainer/loading.d.ts +41 -6
  154. package/dist/components/SLoadingModal/README.md +10 -2
  155. package/dist/components/SLoadingModal/SLoadingModal.d.ts +4 -4
  156. package/dist/components/SLoadingModal/index.d.ts +1 -1
  157. package/dist/components/SLoginCard/README.md +37 -0
  158. package/dist/components/SLoginCard/SLoginCard.d.ts +43 -0
  159. package/dist/components/SLoginCard/index.d.ts +1 -0
  160. package/dist/components/SLogo/README.md +103 -0
  161. package/dist/components/SLogo/SLogo.d.ts +72 -0
  162. package/dist/components/SLogo/index.d.ts +2 -0
  163. package/dist/components/SLogo/logo.config.d.ts +29 -0
  164. package/dist/components/SLogo/logos.d.ts +16 -0
  165. package/dist/components/SMeatballButton/README.md +67 -0
  166. package/dist/components/SMeatballButton/SMeatballButton.d.ts +36 -0
  167. package/dist/components/SMeatballButton/index.d.ts +1 -0
  168. package/dist/components/SModal/README.md +15 -5
  169. package/dist/components/SModal/SModal.d.ts +1 -1
  170. package/dist/components/SNumberInput/README.md +19 -8
  171. package/dist/components/SNumberInput/SNumberInput.d.ts +49 -7
  172. package/dist/components/SPage/README.md +105 -5
  173. package/dist/components/SPage/SPage.d.ts +34 -10
  174. package/dist/components/SPage/SPageHeader.d.ts +31 -13
  175. package/dist/components/SPage/index.d.ts +2 -2
  176. package/dist/components/SPage/page-column.d.ts +34 -0
  177. package/dist/components/SPage/page-width.d.ts +23 -0
  178. package/dist/components/SPage/page.config.d.ts +26 -0
  179. package/dist/components/SPieChart/README.md +93 -0
  180. package/dist/components/SPieChart/SPieChart.d.ts +73 -0
  181. package/dist/components/SPieChart/index.d.ts +1 -0
  182. package/dist/components/SPopover/README.md +15 -0
  183. package/dist/components/SPopup/README.md +26 -2
  184. package/dist/components/SPopup/SPopup.d.ts +13 -10
  185. package/dist/components/SPopup/index.d.ts +1 -1
  186. package/dist/components/SPortal/README.md +20 -0
  187. package/dist/components/SRadio/README.md +20 -0
  188. package/dist/components/SRadioButton/README.md +26 -0
  189. package/dist/components/SRadioButton/SRadioButton.d.ts +9 -2
  190. package/dist/components/SRadioCard/README.md +78 -0
  191. package/dist/components/SRadioCard/SRadioCard.d.ts +29 -0
  192. package/dist/components/SRadioCard/SRadioCardGroup.d.ts +36 -0
  193. package/dist/components/SRadioCard/index.d.ts +2 -0
  194. package/dist/components/SScrollArea/README.md +28 -0
  195. package/dist/components/SScrollArea/SScrollArea.d.ts +17 -0
  196. package/dist/components/SSearchInput/README.md +63 -0
  197. package/dist/components/SSearchInput/SSearchInput.d.ts +52 -0
  198. package/dist/components/SSearchInput/index.d.ts +1 -0
  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 +55 -0
  206. package/dist/components/SSkeleton/SSkeleton.d.ts +39 -0
  207. package/dist/components/SSkeleton/index.d.ts +2 -0
  208. package/dist/components/SSkeleton/skeleton.config.d.ts +22 -0
  209. package/dist/components/SSplitter/README.md +17 -2
  210. package/dist/components/SSplitter/SSplitter.d.ts +7 -3
  211. package/dist/components/SStepper/README.md +26 -0
  212. package/dist/components/SSwitch/README.md +13 -1
  213. package/dist/components/SSwitch/SSwitch.d.ts +1 -3
  214. package/dist/components/SSystemActionButton/README.md +246 -0
  215. package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +167 -0
  216. package/dist/components/SSystemActionButton/index.d.ts +2 -0
  217. package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +93 -0
  218. package/dist/components/STable/README.md +135 -20
  219. package/dist/components/STable/STable.d.ts +292 -46
  220. package/dist/components/STable/index.d.ts +1 -1
  221. package/dist/components/STableBar/README.md +1 -0
  222. package/dist/components/STableBar/STableBar.d.ts +8 -1
  223. package/dist/components/STabs/README.md +13 -1
  224. package/dist/components/STabs/STabs.d.ts +2 -2
  225. package/dist/components/STag/README.md +55 -0
  226. package/dist/components/STag/STag.d.ts +3 -1
  227. package/dist/components/STag/tag.config.d.ts +1 -1
  228. package/dist/components/STextLink/README.md +21 -1
  229. package/dist/components/STextLink/STextLink.d.ts +5 -1
  230. package/dist/components/STextarea/README.md +12 -5
  231. package/dist/components/STextarea/STextarea.d.ts +49 -6
  232. package/dist/components/STimePicker/README.md +19 -2
  233. package/dist/components/STimePicker/STimePicker.d.ts +36 -6
  234. package/dist/components/STimePicker/timepicker.config.d.ts +4 -2
  235. package/dist/components/STimeRangePicker/README.md +31 -2
  236. package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +35 -6
  237. package/dist/components/SToast/README.md +25 -1
  238. package/dist/components/SToast/SToast.d.ts +2 -2
  239. package/dist/components/SToggle/README.md +8 -0
  240. package/dist/components/SToggle/index.d.ts +1 -1
  241. package/dist/components/STooltip/README.md +27 -1
  242. package/dist/components/STooltip/STooltip.d.ts +1 -1
  243. package/dist/components/STree/README.md +42 -4
  244. package/dist/components/STree/STree.d.ts +18 -6
  245. package/dist/components/STree/STree.examples.d.ts +2 -0
  246. package/dist/docs/Gallery.d.ts +9 -0
  247. package/dist/docs/RecipeGallery.d.ts +13 -0
  248. package/dist/docs/gallery-previews.d.ts +24 -0
  249. package/dist/fonts/LICENSE.txt +94 -0
  250. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.0.woff2 +0 -0
  251. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.1.woff2 +0 -0
  252. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.10.woff2 +0 -0
  253. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.11.woff2 +0 -0
  254. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.12.woff2 +0 -0
  255. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.13.woff2 +0 -0
  256. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.14.woff2 +0 -0
  257. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.15.woff2 +0 -0
  258. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.16.woff2 +0 -0
  259. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.17.woff2 +0 -0
  260. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.18.woff2 +0 -0
  261. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.19.woff2 +0 -0
  262. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.2.woff2 +0 -0
  263. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.20.woff2 +0 -0
  264. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.21.woff2 +0 -0
  265. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.22.woff2 +0 -0
  266. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.23.woff2 +0 -0
  267. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.24.woff2 +0 -0
  268. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.25.woff2 +0 -0
  269. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.26.woff2 +0 -0
  270. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.27.woff2 +0 -0
  271. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.28.woff2 +0 -0
  272. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.29.woff2 +0 -0
  273. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.3.woff2 +0 -0
  274. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.30.woff2 +0 -0
  275. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.31.woff2 +0 -0
  276. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.32.woff2 +0 -0
  277. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.33.woff2 +0 -0
  278. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.34.woff2 +0 -0
  279. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.35.woff2 +0 -0
  280. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.36.woff2 +0 -0
  281. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.37.woff2 +0 -0
  282. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.38.woff2 +0 -0
  283. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.39.woff2 +0 -0
  284. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.4.woff2 +0 -0
  285. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.40.woff2 +0 -0
  286. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.41.woff2 +0 -0
  287. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.42.woff2 +0 -0
  288. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.43.woff2 +0 -0
  289. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.44.woff2 +0 -0
  290. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.45.woff2 +0 -0
  291. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.46.woff2 +0 -0
  292. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.47.woff2 +0 -0
  293. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.48.woff2 +0 -0
  294. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.49.woff2 +0 -0
  295. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.5.woff2 +0 -0
  296. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.50.woff2 +0 -0
  297. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.51.woff2 +0 -0
  298. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.52.woff2 +0 -0
  299. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.53.woff2 +0 -0
  300. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.54.woff2 +0 -0
  301. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.55.woff2 +0 -0
  302. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.56.woff2 +0 -0
  303. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.57.woff2 +0 -0
  304. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.58.woff2 +0 -0
  305. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.59.woff2 +0 -0
  306. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.6.woff2 +0 -0
  307. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.60.woff2 +0 -0
  308. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.61.woff2 +0 -0
  309. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.62.woff2 +0 -0
  310. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.63.woff2 +0 -0
  311. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.64.woff2 +0 -0
  312. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.65.woff2 +0 -0
  313. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.66.woff2 +0 -0
  314. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.67.woff2 +0 -0
  315. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.68.woff2 +0 -0
  316. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.69.woff2 +0 -0
  317. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.7.woff2 +0 -0
  318. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.70.woff2 +0 -0
  319. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.71.woff2 +0 -0
  320. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.72.woff2 +0 -0
  321. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.73.woff2 +0 -0
  322. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.74.woff2 +0 -0
  323. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.75.woff2 +0 -0
  324. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.76.woff2 +0 -0
  325. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.77.woff2 +0 -0
  326. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.78.woff2 +0 -0
  327. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.79.woff2 +0 -0
  328. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.8.woff2 +0 -0
  329. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.80.woff2 +0 -0
  330. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.81.woff2 +0 -0
  331. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.82.woff2 +0 -0
  332. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.83.woff2 +0 -0
  333. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.84.woff2 +0 -0
  334. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.85.woff2 +0 -0
  335. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.86.woff2 +0 -0
  336. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.87.woff2 +0 -0
  337. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.88.woff2 +0 -0
  338. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.89.woff2 +0 -0
  339. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.9.woff2 +0 -0
  340. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.90.woff2 +0 -0
  341. package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.91.woff2 +0 -0
  342. package/dist/index.cjs +21789 -10666
  343. package/dist/index.cjs.map +1 -1
  344. package/dist/index.d.ts +23 -0
  345. package/dist/index.js +21704 -10665
  346. package/dist/index.js.map +1 -1
  347. package/dist/lib/chart/cartesian.d.ts +56 -0
  348. package/dist/lib/chart/frame.d.ts +21 -0
  349. package/dist/lib/chart/hover-dim.d.ts +19 -0
  350. package/dist/lib/chart/legend.d.ts +21 -0
  351. package/dist/lib/chart/palette.d.ts +28 -0
  352. package/dist/lib/chart/radial.d.ts +99 -0
  353. package/dist/lib/chart/scale.d.ts +26 -0
  354. package/dist/lib/chart/tooltip.d.ts +60 -0
  355. package/dist/lib/chart/types.d.ts +29 -0
  356. package/dist/lib/chart/use-element-size.d.ts +39 -0
  357. package/dist/lib/date.d.ts +2 -1
  358. package/dist/lib/depth-filter.d.ts +27 -0
  359. package/dist/lib/doc-sections.d.ts +35 -0
  360. package/dist/lib/dropdown-menu.d.ts +19 -0
  361. package/dist/lib/field-width.d.ts +31 -0
  362. package/dist/lib/floating-height.d.ts +15 -0
  363. package/dist/lib/global-overlay.d.ts +5 -0
  364. package/dist/lib/hover-preview.d.ts +32 -0
  365. package/dist/lib/inert.d.ts +11 -0
  366. package/dist/lib/overlay-scrollbar.d.ts +32 -0
  367. package/dist/lib/row-metrics.d.ts +61 -0
  368. package/dist/lib/story-docs.d.ts +19 -3
  369. package/dist/llms-full.txt +9674 -2059
  370. package/dist/llms.txt +4062 -326
  371. package/dist/playground/categories.d.ts +19 -0
  372. package/dist/pretendard.css +937 -0
  373. package/dist/recipes/AppShell.d.ts +21 -0
  374. package/dist/recipes/CategoryManagePage.d.ts +1 -0
  375. package/dist/recipes/ConsultConsolePage.d.ts +1 -0
  376. package/dist/recipes/ExcelFilePopupPage.d.ts +5 -0
  377. package/dist/recipes/LoginPage.d.ts +6 -0
  378. package/dist/recipes/ProductBulkUploadPage.d.ts +1 -0
  379. package/dist/recipes/ProductCreatePage.d.ts +1 -0
  380. package/dist/recipes/ProductCreateSectionsPage.d.ts +5 -0
  381. package/dist/recipes/ProductDetailInlineEditPage.d.ts +9 -0
  382. package/dist/recipes/ProductDetailPage.d.ts +1 -0
  383. package/dist/recipes/ProductListChipFilterPage.d.ts +1 -0
  384. package/dist/recipes/ProductListPage.d.ts +1 -0
  385. package/dist/recipes/ProductOverlayPage.d.ts +1 -0
  386. package/dist/recipes/SalesDashboardPage.d.ts +1 -0
  387. package/dist/recipes/SettingsPage.d.ts +1 -0
  388. package/dist/recipes/StoreSetupPage.d.ts +1 -0
  389. package/dist/recipes/TransferOrderPopupPage.d.ts +2 -0
  390. package/dist/recipes/api.d.ts +220 -0
  391. package/dist/recipes/recipe-story.d.ts +33 -0
  392. package/dist/recipes/router.d.ts +9 -0
  393. package/dist/styles.css +3541 -262
  394. package/dist/theme.css +598 -28
  395. package/eslint/index.mjs +44 -35
  396. package/eslint/lib/class-names.mjs +23 -25
  397. package/eslint/lib/table-column.mjs +34 -8
  398. package/eslint/rules/component-group-gap.mjs +32 -30
  399. package/eslint/rules/divider-vertical-height.mjs +137 -0
  400. package/eslint/rules/field-width-grade.mjs +69 -52
  401. package/eslint/rules/no-arbitrary-class.mjs +63 -20
  402. package/eslint/rules/no-off-scale-spacing.mjs +61 -41
  403. package/eslint/rules/no-raw-html-control.mjs +38 -36
  404. package/eslint/rules/prefer-typo-preset.mjs +23 -17
  405. package/eslint/rules/require-locale-number.mjs +14 -19
  406. package/eslint/rules/table-column-width.mjs +114 -0
  407. package/eslint/rules/table-numeric-align.mjs +14 -14
  408. package/eslint/scale.gen.mjs +6 -3
  409. package/package.json +19 -5
@@ -1,9 +1,10 @@
1
1
  import { type CSSProperties, type ReactNode } from 'react';
2
- import { type SFieldSize, type SFieldAddonAlign, type SFieldStatus } from '../SField';
2
+ import { type SFieldSize, type SFieldAddonAlign, type SFieldStatus, type SFieldLabelPosition } from '../SField';
3
3
  import { type SIconName } from '../SIcon';
4
4
  import { type SColor } from '../../lib/color';
5
5
  import { type Rule } from '../../lib/form';
6
6
  import { type STooltipProps } from '../STooltip';
7
+ import { type SFieldWidth } from '../../lib/field-width';
7
8
  export type SBarcodeInputSize = SFieldSize;
8
9
  export interface SBarcodeInputProps {
9
10
  value?: string | number | null;
@@ -20,15 +21,31 @@ export interface SBarcodeInputProps {
20
21
  readOnly?: boolean;
21
22
  rules?: Rule[];
22
23
  status?: SFieldStatus;
24
+ /** 포커스 상태를 밖에서 지정한다 — 강조 테두리·링이 즉시 걸린다 (SField 로 그대로 넘어간다) */
23
25
  focused?: boolean;
26
+ /** 호버 상태를 밖에서 지정한다 — 강조는 `focused` 와 같다 (SField 로 그대로 넘어간다) */
24
27
  hovered?: boolean;
25
28
  /** 입력 앞 슬롯 */
26
29
  prefix?: ReactNode;
27
30
  /** 입력 뒤 슬롯 */
28
31
  suffix?: ReactNode;
29
- inputClass?: string;
32
+ inputClassName?: string;
30
33
  inputStyle?: CSSProperties;
31
34
  label?: string;
35
+ /**
36
+ * 레이블 위치 — `top` 이면 라벨이 컨트롤 위에 선다 (SField 로 그대로 넘어간다).
37
+ *
38
+ * @nodemo SField 에서 내려오는 공통 필드 옵션이다 — 같은 데모를 컨트롤마다 복제하지 않고
39
+ * 대표 컨트롤 `SInput` 과 `SField` 에 한 번 둔다 (scripts/check-docs-coverage.mjs 머리말).
40
+ */
41
+ labelPosition?: SFieldLabelPosition;
42
+ /**
43
+ * 보조 레이블 — 레이블 오른쪽 같은 줄에 붙는다 (SField 로 그대로 넘어간다).
44
+ *
45
+ * @nodemo SField 에서 내려오는 공통 필드 옵션이다 — 같은 데모를 컨트롤마다 복제하지 않고
46
+ * 대표 컨트롤 `SInput` 과 `SField` 에 한 번 둔다 (scripts/check-docs-coverage.mjs 머리말).
47
+ */
48
+ subLabel?: string;
32
49
  labelWidth?: number | string;
33
50
  icon?: SIconName;
34
51
  iconColor?: SColor;
@@ -39,7 +56,12 @@ export interface SBarcodeInputProps {
39
56
  hint?: string;
40
57
  error?: boolean;
41
58
  errorMessage?: string;
42
- width?: number | string;
59
+ /**
60
+ * 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이.
61
+ * 등급은 `--cmp-field-width-*` 토큰으로 풀리며 `maxLength`(= 스키마 상한)로 고른다.
62
+ * 상한이 `xl` 을 넘거나 상한이 없으면 `"100%"`. (`sellmate/field-width-grade` 가 검사한다)
63
+ */
64
+ width?: SFieldWidth;
43
65
  className?: string;
44
66
  style?: CSSProperties;
45
67
  }
@@ -15,15 +15,52 @@
15
15
  | `rightIcon?` | `SIconName` | — | 레이블 오른쪽 아이콘 |
16
16
  | `label?` | `string` | — | 버튼 텍스트 (문자열만 — 아이콘은 icon/rightIcon 사용) |
17
17
 
18
+ ## Types
19
+
20
+ ### SButtonColor
21
+
22
+ ```ts
23
+ export type SButtonColor = (typeof BUTTON_COLORS)[number];
24
+ ```
25
+
26
+ ### SButtonSize
27
+
28
+ ```ts
29
+ export type SButtonSize = (typeof BUTTON_SIZES)[number];
30
+ ```
31
+
32
+ ### BUTTON_COLORS
33
+
34
+ ```ts
35
+ /**
36
+ * SButton 색상/사이즈 설정 — sd-button(component.button 토큰) 충실 포팅.
37
+ * Stencil `name`(예: primary_sm)의 preset을 color + outline(boolean) + size 로 분리.
38
+ * - primary / danger : solid·outline 모두 지원
39
+ * - secondary : solid 전용 (outline 스타일 없음 → outline 무시)
40
+ * - neutral : 흰 배경 고정, outline 은 회색 테두리만 추가(solid = 테두리 없는 흰 버튼)
41
+ * 색상은 theme.css의 `--cmp-button-*` CSS 변수를 참조한다.
42
+ */
43
+ export const BUTTON_COLORS = ['primary', 'secondary', 'neutral', 'danger'] as const;
44
+ ```
45
+
46
+ ### BUTTON_SIZES
47
+
48
+ ```ts
49
+ export const BUTTON_SIZES = ['xs', 'sm', 'md', 'lg'] as const;
50
+ ```
51
+
18
52
  ## Dependencies
19
53
 
20
54
  ### Used by
21
55
 
56
+ - [SCalendarBoard](../SCalendarBoard)
22
57
  - [SConfirmModal](../SConfirmModal)
23
58
  - [SDropdownButton](../SDropdownButton)
59
+ - [SEditor](../SEditor)
24
60
  - [SFooter](../SFooter)
25
61
  - [SKeyValueTable](../SKeyValueTable)
26
62
  - [SLoadingModal](../SLoadingModal)
63
+ - [SLoginCard](../SLoginCard)
27
64
  - [SPopover](../SPopover)
28
65
  - [SToast](../SToast)
29
66
 
@@ -36,11 +73,14 @@
36
73
  ```mermaid
37
74
  graph TD;
38
75
  SButton --> SIcon
76
+ SCalendarBoard --> SButton
39
77
  SConfirmModal --> SButton
40
78
  SDropdownButton --> SButton
79
+ SEditor --> SButton
41
80
  SFooter --> SButton
42
81
  SKeyValueTable --> SButton
43
82
  SLoadingModal --> SButton
83
+ SLoginCard --> SButton
44
84
  SPopover --> SButton
45
85
  SToast --> SButton
46
86
  style SButton fill:#f9f,stroke:#333,stroke-width:4px
@@ -22,6 +22,19 @@
22
22
  | `onValueChange` | `(date: string) => void` | 선택 변경 (sdUpdate) |
23
23
  | `onViewChange` | `(v: { year: number; month: number }) => void` | 보이는 연·월 변경 (sdViewChange) |
24
24
 
25
+ ## Types
26
+
27
+ ### SCalendarEventGroup
28
+
29
+ ```ts
30
+ export interface SCalendarEventGroup {
31
+ /** 도트 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 */
32
+ color: SColor;
33
+ label: string;
34
+ dates: string[];
35
+ }
36
+ ```
37
+
25
38
  ## Dependencies
26
39
 
27
40
  ### Used by
@@ -0,0 +1,53 @@
1
+ import { type HTMLAttributes, type MouseEvent, type ReactNode } from 'react';
2
+ import type { CalendarBoardSegment } from './calendar-board-layout';
3
+ import { type SCalendarBoardDayColor } from './calendarBoard.config';
4
+ import type { SCalendarBoardEvent } from './types';
5
+ /**
6
+ * 달력의 날짜 한 칸 (SCalendarBoard 내부 조립 요소).
7
+ * 위에 날짜 숫자가 서고, 그 아래로 일정 막대가 줄 단위로 얹힌다.
8
+ * `body` 를 받은 칸은 아래를 통째로 그것에 내준다 — 일정은 그리지 않는다.
9
+ */
10
+ export declare const CalendarDayCard: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
11
+ /** YYYY-MM-DD */
12
+ date: string;
13
+ /** 1-31 */
14
+ day: number;
15
+ /** 보고 있는 달에 속한 날짜인지 */
16
+ inCurrentMonth: boolean;
17
+ isToday: boolean;
18
+ isSelected: boolean;
19
+ /** 칸을 눌러 고를 수 있는지 */
20
+ selectable: boolean;
21
+ /** 칸 배경 */
22
+ color: SCalendarBoardDayColor;
23
+ /**
24
+ * **이 칸에서 시작하는** 일정 막대. 여러 날에 걸친 일정은 시작 칸이 그리고 오른쪽 칸 위로 뻗는다 —
25
+ * 지나가는 칸은 자기 줄을 비워 두므로(배치 계산이 이미 잡아 둔다) 겹치지 않는다.
26
+ */
27
+ segments: CalendarBoardSegment[];
28
+ /** 이 날짜에 걸친 일정 수 — 하나라도 있으면 칸을 눌러 목록 판을 열 수 있다 */
29
+ dayEventCount: number;
30
+ /**
31
+ * 일정 자리를 대신 차지할 칸 본문 (SCalendarBoard 의 `dayContent`).
32
+ * 주면 일정·"더보기" 를 그리지 않는다. `content` 는 HTMLAttributes 가 이미 쓰는 이름이라 피했다.
33
+ */
34
+ body?: ReactNode;
35
+ /** 접혀 있는 일정 수. 0 이면 "더보기" 를 그리지 않는다 */
36
+ hiddenCount: number;
37
+ /** "더보기" 가 앉는 줄. 접힌 것이 없는 주는 -1 */
38
+ moreLane: number;
39
+ /** "더보기" 자리를 집중된 일정에 내줬는지 — 내준 칸은 "더보기" 를 그리지 않는다 */
40
+ moreReplaced: boolean;
41
+ /**
42
+ * 집중할 일정의 `id` (SCalendarBoard 의 `focusedEventId`).
43
+ * 주면 그 일정만 또렷하게 남고 이 칸의 나머지 일정과 "더보기" 는 흐려진다.
44
+ */
45
+ focusedEventId?: string | null;
46
+ /** 이 칸의 일정 목록 판이 열려 있는지 */
47
+ isOpen: boolean;
48
+ moreLabel?: string;
49
+ onDaySelect?: (date: string) => void;
50
+ onEventClick?: (event: SCalendarBoardEvent, e: MouseEvent<HTMLButtonElement>) => void;
51
+ /** 일정 목록 판 열기 — 칸 자체를 눌렀을 때와 "더보기" 를 눌렀을 때 모두 여기로 온다 */
52
+ onOpenEvents?: () => void;
53
+ } & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,26 @@
1
+ import { type MouseEvent } from 'react';
2
+ import type { SCalendarBoardEvent } from './types';
3
+ /**
4
+ * 한 날짜의 일정을 전부 펼쳐 보여주는 목록 판 (SCalendarBoard 내부 조립 요소).
5
+ * 칸을 누르거나 "N개 더보기" 를 누르면 **그 날짜 칸을 덮은 채** 좌·상으로 아웃덴트만큼 빠져나와 뜬다 —
6
+ * 칸에서 자라난 것처럼 보이게 하기 위함이다. 위치와 최소 높이는 SCalendarBoard 가 정하고,
7
+ * 그보다 내용이 길면 자라다 상한에서 멈춘다.
8
+ */
9
+ export declare function CalendarDayEventListBox({ date, events, onEventClick, minWidth, minHeight, onClose, closeLabel, }: {
10
+ /** YYYY-MM-DD */
11
+ date: string;
12
+ /**
13
+ * 판이 적어도 이만큼은 넓어야 한다(px) — 덮는 칸 너비 + 좌·우 아웃덴트가 온다.
14
+ * 내용이 넓으면 글자가 잘리지 않게 여기서부터 자란다. 칸을 못 쟀으면 내용 너비를 따른다.
15
+ */
16
+ minWidth?: number;
17
+ /**
18
+ * 판이 적어도 이만큼은 높아야 한다(px) — 덮는 칸 높이 + 상·하 아웃덴트가 온다.
19
+ * 내용이 이보다 짧아도 칸을 딱 감싸는 모양이 유지된다. 칸을 못 쟀으면 내용 높이를 따른다.
20
+ */
21
+ minHeight?: number;
22
+ events: SCalendarBoardEvent[];
23
+ onEventClick?: (event: SCalendarBoardEvent, e: MouseEvent<HTMLButtonElement>) => void;
24
+ onClose?: () => void;
25
+ closeLabel?: string;
26
+ }): import("react").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import { type CSSProperties, type MouseEvent } from 'react';
2
+ import type { SCalendarBoardEvent } from './types';
3
+ /**
4
+ * 달력 칸/패널 안의 일정 한 줄 (SCalendarBoard 내부 조립 요소).
5
+ *
6
+ * 점 → 레이블(강조) → 설명 → `/` → 값 순서로 한 줄에 눕는다.
7
+ * 가운데 레이블 묶음만 줄어들고 값은 끝에 고정되므로, 좁은 칸에서도 금액이 잘리지 않는다.
8
+ */
9
+ export declare function CalendarEventButton({ event, onSelect, flatStart, flatEnd, dimmed, className, style, }: {
10
+ event: SCalendarBoardEvent;
11
+ onSelect?: (event: SCalendarBoardEvent, e: MouseEvent<HTMLButtonElement>) => void;
12
+ /** 왼쪽 끝이 잘린 조각 — 앞 주에서 이어지므로 모서리를 평평하게 한다 */
13
+ flatStart?: boolean;
14
+ /** 오른쪽 끝이 잘린 조각 — 다음 주로 이어진다 */
15
+ flatEnd?: boolean;
16
+ /** 다른 일정에 집중하는 동안 물러나 있다 — 흐려질 뿐 계속 눌린다 */
17
+ dimmed?: boolean;
18
+ className?: string;
19
+ style?: CSSProperties;
20
+ }): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { type CSSProperties, type MouseEvent } from 'react';
2
+ /**
3
+ * 칸에 다 담기지 않은 일정 수를 알리는 "N개 더보기" 줄 (SCalendarBoard 내부 조립 요소).
4
+ * 개수는 강조색, 뒷말은 본문색으로 갈라 개수가 먼저 읽히게 한다.
5
+ */
6
+ export declare const CalendarMoreButton: import("react").ForwardRefExoticComponent<{
7
+ count: number;
8
+ /** 개수 뒤에 붙는 말 */
9
+ label?: string;
10
+ /**
11
+ * 어느 일정에 집중하는 동안 물러나 있다. 여기 남아 있다는 것은 접힌 것 중에
12
+ * 집중 대상이 없다는 뜻이라(있었다면 이 자리를 내줬다) 함께 흐려진다.
13
+ */
14
+ dimmed?: boolean;
15
+ onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
16
+ className?: string;
17
+ style?: CSSProperties;
18
+ } & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,148 @@
1
+ # SCalendarBoard
2
+
3
+ > 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
4
+
5
+ ### SCalendarBoard
6
+
7
+ #### Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `year?` | `number` | — | 보이는 연도 (제어). `month` 와 함께 준다 |
12
+ | `month?` | `number` | — | 보이는 월 1-12 (제어). `year` 와 함께 준다 |
13
+ | `defaultYear?` | `number` | — | 처음 보여줄 연도 (비제어). 없으면 오늘 |
14
+ | `defaultMonth?` | `number` | — | 처음 보여줄 월 1-12 (비제어). 없으면 오늘 |
15
+ | `selectable?` | `boolean` | `false` | 날짜 칸을 눌러 고를 수 있게 한다. 기본은 읽기 전용 판이다 — 켜야 칸에 커서·포커스·키보드(Enter·Space)가 붙고 `onValueChange` 가 온다. 일정 버튼과 "N개 더보기" 는 이 값과 무관하게 항상 눌린다. |
16
+ | `value?` | `string \| null` | — | 선택 날짜 (YYYY-MM-DD). `selectable` 과 별개로 강조만 주고 싶을 때도 쓴다 |
17
+ | `events?` | `SCalendarBoardEvent[]` | — | 일정 목록. `date`(시작)로 칸에 배분되고, `endDate` 를 주면 그날까지 **하나의 막대로 이어져** 칸 경계를 넘어 그려진다. |
18
+ | `dayColors?` | `Record<string, SCalendarBoardDayColor>` | — | 날짜별 칸 배경. 키는 `YYYY-MM-DD`, 없는 날짜는 `'default'` 다. 그날의 성격(마감·완료·휴무 등)을 칸 전체로 알릴 때 쓴다 — 일정 하나의 색은 `events[].color` 다. |
19
+ | `dayContent?` | `Record<string, ReactNode>` | — | 날짜별 칸 본문. 키는 `YYYY-MM-DD`, 준 날짜는 **일정 자리를 통째로 이 내용이 차지한다** — 그날의 `events` 는 그리지 않고 목록 판도 열리지 않는다. 일정으로 표현되지 않는 것(재고 현황· 매출 요약 같은 그날치 요약)을 칸에 그대로 얹을 때 쓴다. |
20
+ | `focusedEventId?` | `string \| null` | — | 집중할 일정의 `id`. 그 일정만 또렷하게 남고 **나머지 일정과 "N개 더보기" 는 흐려진다** — 판 밖의 무언가(목록의 행 등)에 손이 닿았을 때 판에서 그에 대응하는 일정을 짚어 주는 데 쓴다. 그 일정이 칸에 담기는 줄 수를 넘겨 **"N개 더보기" 에 접혀 있으면, 그 "더보기" 자리에 대신 그려져** 집중하는 동안만 드러난다. 이미 보이고 있으면 자리는 그대로다 — 어느 쪽이든 다른 일정의 줄 배정은 달라지지 않으므로, 집중이 오가도 판이 출렁이지 않는다. 자리를 내준 칸은 그 동안 "더보기" 를 그리지 않는다(한 줄에 둘을 넣을 수 없다). 거기 남은 일정은 칸을 눌러 목록 판으로 본다. `id` 가 없는 일정은 지목할 수 없다. |
21
+ | `todayLabel?` | `string` | `'오늘'` | 헤더 오른쪽 "오늘" 버튼 레이블. 빈 문자열이면 버튼을 그리지 않는다 |
22
+ | `moreLabel?` | `string` | — | "N개" 뒤에 붙는 말 |
23
+ | `headerRight?` | `ReactNode` | — | 헤더 오른쪽 끝에 붙일 추가 컨트롤 |
24
+ | `className?` | `string` | — | |
25
+ | `style?` | `CSSProperties` | — | |
26
+
27
+ #### Events
28
+
29
+ | Event | Type | Description |
30
+ |-------|------|-------------|
31
+ | `onViewChange` | `(view: SCalendarBoardView) => void` | 보이는 연·월 변경 |
32
+ | `onValueChange` | `(date: string, events: SCalendarBoardEvent[]) => void` | 날짜 칸 선택 — 고른 날짜와 그 날짜의 일정이 함께 온다 (`selectable` 일 때만) |
33
+ | `onEventClick` | `(event: SCalendarBoardEvent, e: MouseEvent<HTMLButtonElement>) => void` | 일정 클릭 |
34
+ | `onMoreClick` | `(view: { date: string; events: SCalendarBoardEvent[] }) => void` | 그 날짜의 일정을 전부 열어 볼 때 — "N개 더보기" 를 눌렀을 때와 **일정이 있는 칸 자체를 눌렀을 때** 모두 온다. **주면 내장 일정 목록 판을 띄우지 않고 이 핸들러만 호출한다** — 그 날짜를 전용 화면·모달로 열고 싶을 때 쓴다. |
35
+
36
+ ## Types
37
+
38
+ ### SCalendarBoardView
39
+
40
+ ```ts
41
+ /** 보이는 연·월 */
42
+ export interface SCalendarBoardView {
43
+ year: number;
44
+ /** 1-12 */
45
+ month: number;
46
+ }
47
+ ```
48
+
49
+ ### SCalendarBoardEvent
50
+
51
+ ```ts
52
+ /** 달력 한 칸에 얹히는 일정 하나 */
53
+ export interface SCalendarBoardEvent {
54
+ /** 고유 식별자. 없으면 목록 순서로 key 를 만든다 */
55
+ id?: string;
56
+ /** 시작 날짜 (YYYY-MM-DD). 하루짜리 일정은 이것만 준다 */
57
+ date: string;
58
+ /**
59
+ * 마지막 날 (YYYY-MM-DD, **그날 포함**). 주지 않거나 `date` 보다 앞서면 하루짜리로 본다.
60
+ *
61
+ * 여러 날에 걸친 일정은 칸 경계를 넘어 **하나의 막대로 이어져** 그려진다. 주 경계에서는 줄이
62
+ * 바뀌므로 조각이 나뉘고, 그렇게 잘린 쪽 모서리는 평평해져 "앞/뒤로 이어진다" 가 읽힌다.
63
+ *
64
+ * 막대가 걸친 날은 **모두** 그 일정을 가진 날로 친다 — 목록 판과 `onValueChange` 에 함께 온다.
65
+ */
66
+ endDate?: string;
67
+ /**
68
+ * 강조 레이블 (필수) — 예: `"[입고 예정]"`.
69
+ * 일정이 무엇인지 한눈에 알리는 부분이라 비워 두지 않는다.
70
+ * 인라인 HTML(`<b>` `<strong>` `<i>` `<em>` `<span class>` `<a href>` `<br>`)을 받으며 살균 후 렌더한다.
71
+ */
72
+ label: string;
73
+ /** 색상 프리셋 — 배경과 점 색이 함께 정해진다 */
74
+ color?: SCalendarBoardEventColor;
75
+ /** 왼쪽 점 색만 따로 지정 (프리셋 기본값을 덮어쓴다). 점은 `SBadge` 라 그 색(`SBadgeColor`)을 쓴다 */
76
+ dotColor?: SBadgeColor;
77
+ /** 본문 텍스트 — 예: `"RV20260728-000006"`. 평문만 받는다 */
78
+ description?: string;
79
+ /** 구분선(`/`) 뒤에 붙는 값 — 예: `"1,000"`. 평문만 받는다 */
80
+ value?: string;
81
+ /** 이 일정만 비활성 (클릭 불가) */
82
+ disabled?: boolean;
83
+ }
84
+ ```
85
+
86
+ ### SCalendarBoardDayColor
87
+
88
+ ```ts
89
+ export type SCalendarBoardDayColor = (typeof CALENDAR_BOARD_DAY_COLORS)[number];
90
+ ```
91
+
92
+ ### SCalendarBoardEventColor
93
+
94
+ ```ts
95
+ export type SCalendarBoardEventColor = (typeof CALENDAR_BOARD_EVENT_COLORS)[number];
96
+ ```
97
+
98
+ ### CALENDAR_BOARD_DAY_COLORS
99
+
100
+ ```ts
101
+ /** 날짜 칸 배경 — 그날의 성격을 칸 전체로 알린다 */
102
+ export const CALENDAR_BOARD_DAY_COLORS = [
103
+ 'default',
104
+ 'danger',
105
+ 'accent',
106
+ 'complete',
107
+ 'dim',
108
+ ] as const;
109
+ ```
110
+
111
+ ### CALENDAR_BOARD_EVENT_COLORS
112
+
113
+ ```ts
114
+ export const CALENDAR_BOARD_EVENT_COLORS = [
115
+ 'default',
116
+ 'blue',
117
+ 'oceanBlue',
118
+ 'lightBlue',
119
+ 'green',
120
+ 'yellow',
121
+ 'orange',
122
+ 'red',
123
+ 'purple',
124
+ 'white',
125
+ ] as const;
126
+ ```
127
+
128
+ ## Dependencies
129
+
130
+ ### Depends on
131
+
132
+ - [SBadge](../SBadge)
133
+ - [SButton](../SButton)
134
+ - [SDivider](../SDivider)
135
+ - [SGhostButton](../SGhostButton)
136
+ - [SScrollArea](../SScrollArea)
137
+
138
+ ### Graph
139
+
140
+ ```mermaid
141
+ graph TD;
142
+ SCalendarBoard --> SBadge
143
+ SCalendarBoard --> SButton
144
+ SCalendarBoard --> SDivider
145
+ SCalendarBoard --> SGhostButton
146
+ SCalendarBoard --> SScrollArea
147
+ style SCalendarBoard fill:#f9f,stroke:#333,stroke-width:4px
148
+ ```
@@ -0,0 +1,83 @@
1
+ import { type CSSProperties, type MouseEvent, type ReactNode } from 'react';
2
+ import { type SCalendarBoardDayColor } from './calendarBoard.config';
3
+ import type { SCalendarBoardEvent, SCalendarBoardView } from './types';
4
+ export interface SCalendarBoardProps {
5
+ /** 보이는 연도 (제어). `month` 와 함께 준다 */
6
+ year?: number;
7
+ /** 보이는 월 1-12 (제어). `year` 와 함께 준다 */
8
+ month?: number;
9
+ /** 처음 보여줄 연도 (비제어). 없으면 오늘 */
10
+ defaultYear?: number;
11
+ /** 처음 보여줄 월 1-12 (비제어). 없으면 오늘 */
12
+ defaultMonth?: number;
13
+ /** 보이는 연·월 변경 */
14
+ onViewChange?: (view: SCalendarBoardView) => void;
15
+ /**
16
+ * 날짜 칸을 눌러 고를 수 있게 한다. 기본은 읽기 전용 판이다 —
17
+ * 켜야 칸에 커서·포커스·키보드(Enter·Space)가 붙고 `onValueChange` 가 온다.
18
+ * 일정 버튼과 "N개 더보기" 는 이 값과 무관하게 항상 눌린다.
19
+ */
20
+ selectable?: boolean;
21
+ /** 선택 날짜 (YYYY-MM-DD). `selectable` 과 별개로 강조만 주고 싶을 때도 쓴다 */
22
+ value?: string | null;
23
+ /** 날짜 칸 선택 — 고른 날짜와 그 날짜의 일정이 함께 온다 (`selectable` 일 때만) */
24
+ onValueChange?: (date: string, events: SCalendarBoardEvent[]) => void;
25
+ /**
26
+ * 일정 목록. `date`(시작)로 칸에 배분되고, `endDate` 를 주면 그날까지 **하나의 막대로 이어져**
27
+ * 칸 경계를 넘어 그려진다.
28
+ */
29
+ events?: SCalendarBoardEvent[];
30
+ /**
31
+ * 날짜별 칸 배경. 키는 `YYYY-MM-DD`, 없는 날짜는 `'default'` 다.
32
+ * 그날의 성격(마감·완료·휴무 등)을 칸 전체로 알릴 때 쓴다 — 일정 하나의 색은 `events[].color` 다.
33
+ */
34
+ dayColors?: Record<string, SCalendarBoardDayColor>;
35
+ /**
36
+ * 날짜별 칸 본문. 키는 `YYYY-MM-DD`, 준 날짜는 **일정 자리를 통째로 이 내용이 차지한다** —
37
+ * 그날의 `events` 는 그리지 않고 목록 판도 열리지 않는다. 일정으로 표현되지 않는 것(재고 현황·
38
+ * 매출 요약 같은 그날치 요약)을 칸에 그대로 얹을 때 쓴다.
39
+ */
40
+ dayContent?: Record<string, ReactNode>;
41
+ /**
42
+ * 집중할 일정의 `id`. 그 일정만 또렷하게 남고 **나머지 일정과 "N개 더보기" 는 흐려진다** —
43
+ * 판 밖의 무언가(목록의 행 등)에 손이 닿았을 때 판에서 그에 대응하는 일정을 짚어 주는 데 쓴다.
44
+ *
45
+ * 그 일정이 칸에 담기는 줄 수를 넘겨 **"N개 더보기" 에 접혀 있으면, 그 "더보기" 자리에 대신
46
+ * 그려져** 집중하는 동안만 드러난다. 이미 보이고 있으면 자리는 그대로다 — 어느 쪽이든 다른
47
+ * 일정의 줄 배정은 달라지지 않으므로, 집중이 오가도 판이 출렁이지 않는다.
48
+ *
49
+ * 자리를 내준 칸은 그 동안 "더보기" 를 그리지 않는다(한 줄에 둘을 넣을 수 없다). 거기 남은
50
+ * 일정은 칸을 눌러 목록 판으로 본다. `id` 가 없는 일정은 지목할 수 없다.
51
+ */
52
+ focusedEventId?: string | null;
53
+ /** 일정 클릭 */
54
+ onEventClick?: (event: SCalendarBoardEvent, e: MouseEvent<HTMLButtonElement>) => void;
55
+ /**
56
+ * 그 날짜의 일정을 전부 열어 볼 때 — "N개 더보기" 를 눌렀을 때와 **일정이 있는 칸 자체를 눌렀을 때**
57
+ * 모두 온다. **주면 내장 일정 목록 판을 띄우지 않고 이 핸들러만 호출한다** —
58
+ * 그 날짜를 전용 화면·모달로 열고 싶을 때 쓴다.
59
+ */
60
+ onMoreClick?: (view: {
61
+ date: string;
62
+ events: SCalendarBoardEvent[];
63
+ }) => void;
64
+ /** 헤더 오른쪽 "오늘" 버튼 레이블. 빈 문자열이면 버튼을 그리지 않는다 */
65
+ todayLabel?: string;
66
+ /** "N개" 뒤에 붙는 말 */
67
+ moreLabel?: string;
68
+ /** 헤더 오른쪽 끝에 붙일 추가 컨트롤 */
69
+ headerRight?: ReactNode;
70
+ className?: string;
71
+ style?: CSSProperties;
72
+ }
73
+ /**
74
+ * SCalendarBoard — 한 달치 일정을 격자로 펼쳐 보여주는 달력 판.
75
+ *
76
+ * 날짜를 **고르는** 달력(`SCalendar` · `SDatePicker`)이 아니라 일정을 **읽는** 달력이다.
77
+ * 칸마다 일정이 줄로 쌓이고, 넘치면 "N개 더보기" 로 접혀 그 칸을 덮는 판으로 펼쳐진다.
78
+ *
79
+ * **판 높이는 부모가 정한다.** 행이 그 높이를 균등하게 나눠 갖고, 칸 높이가 다시 "한 칸에 몇 줄이
80
+ * 보일지" 를 정한다 — 그래서 놓는 자리에 높이를 주어야 한다 (`<div className="h-[640px]">` ·
81
+ * `SPage` 본문의 남은 높이 등). 높이를 주지 않으면 칸이 `dayCard.minHeight` 로 주저앉는다.
82
+ */
83
+ export declare function SCalendarBoard({ year, month, defaultYear, defaultMonth, onViewChange, selectable, value, onValueChange, events, dayColors, dayContent, focusedEventId, onEventClick, onMoreClick, todayLabel, moreLabel, headerRight, className, style, }: SCalendarBoardProps): import("react").JSX.Element;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * 달력 판의 **일정 배치**를 계산한다 (순수 함수 — DOM 을 보지 않는다).
3
+ *
4
+ * 왜 필요한가: 일정이 하루짜리뿐이면 칸마다 자기 목록을 세로로 쌓으면 그만이다. 그런데 여러 날에
5
+ * 걸친 일정은 **칸 경계를 넘어 하나의 막대로 이어져야** 하므로, 칸 혼자서는 자기 줄을 정할 수 없다 —
6
+ * 같은 주의 다른 칸에 걸친 막대가 이미 그 줄을 쓰고 있을 수 있기 때문이다. 그래서 줄(lane) 배정은
7
+ * **주 단위**로 한 번에 푼다.
8
+ *
9
+ * 하루짜리 일정만 있는 판은 이 계산을 거쳐도 예전과 같은 화면이 된다 — 서로 다른 날의 일정은
10
+ * 겹치지 않아 전부 0번 줄부터 차곡차곡 앉기 때문이다.
11
+ */
12
+ import type { DayCell } from '../../lib/date';
13
+ import type { SCalendarBoardEvent } from './types';
14
+ /** 한 주 안에서 이어지는 막대 하나 — 일정 하나가 주 경계에서 잘리면 조각이 여럿 된다 */
15
+ export interface CalendarBoardSegment {
16
+ event: SCalendarBoardEvent;
17
+ /** React key */
18
+ key: string;
19
+ /** 격자 칸 배열에서의 시작 인덱스 */
20
+ startIndex: number;
21
+ /** 이어지는 칸 수 (1 이상) */
22
+ span: number;
23
+ /** 그 주 안에서 몇 번째 줄인지 (0부터) */
24
+ lane: number;
25
+ /** 왼쪽 끝이 일정의 **실제 시작**인지. 아니면 앞에서 이어진 것이라 그 모서리를 평평하게 한다 */
26
+ startsHere: boolean;
27
+ /** 오른쪽 끝이 일정의 **실제 끝**인지 */
28
+ endsHere: boolean;
29
+ }
30
+ export interface CalendarBoardLayout {
31
+ /** 칸별로, **그 칸에서 시작하는** 막대. 막대는 시작 칸이 그린다 */
32
+ segmentsByCell: CalendarBoardSegment[][];
33
+ /** 칸별로, 그 날짜에 걸친 일정 전부 — 목록 판과 콜백에 넘기는 값 */
34
+ eventsByCell: SCalendarBoardEvent[][];
35
+ /** 칸별로 줄 수를 넘겨 접힌 일정 수 */
36
+ hiddenCountByCell: number[];
37
+ /** 주별로 "N개 더보기" 가 앉는 줄. 접힌 것이 없는 주는 -1 */
38
+ moreLaneByWeek: number[];
39
+ /**
40
+ * 칸별로, "더보기" 자리를 집중된 일정(`focusedEventId`)에 내줬는지.
41
+ * 내준 칸은 그 줄에 막대가 앉았으므로 "더보기" 를 그리지 않는다 — 한 줄에 둘을 넣을 수 없다.
42
+ */
43
+ moreReplacedByCell: boolean[];
44
+ }
45
+ /** 일정의 마지막 날. `endDate` 가 없거나 시작보다 앞서면 하루짜리로 본다 */
46
+ export declare function eventEndDate(event: SCalendarBoardEvent): string;
47
+ export declare function layoutCalendarBoard({ cells, events, rowCapacity, blockedDates, focusedEventId, }: {
48
+ cells: readonly DayCell[];
49
+ events: readonly SCalendarBoardEvent[];
50
+ /** 칸 하나에 담기는 줄 수 */
51
+ rowCapacity: number;
52
+ /** 일정을 그리지 않는 날짜 (`dayContent` 를 받은 칸) */
53
+ blockedDates: ReadonlySet<string>;
54
+ /**
55
+ * 집중할 일정의 `id`. 그 일정이 접혀 있으면 "더보기" 가 예약한 줄을 대신 차지해 노출된다 —
56
+ * 이미 보이고 있으면 아무것도 달라지지 않는다. 줄 배정 자체는 이 값과 무관하다.
57
+ */
58
+ focusedEventId?: string | null;
59
+ }): CalendarBoardLayout;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * SCalendarBoard 색상 프리셋 — component.calendarBoard 토큰 기반.
3
+ *
4
+ * 배경은 `--cmp-calendarBoard-eventButton-bg-*` 로 전부 토큰화돼 있다.
5
+ * 점(dot)은 `SBadge` 가 그리므로 색도 `--cmp-badge-*` 를 그대로 따른다 —
6
+ * badge 색이 디자인 mock 의 점 hex 와 1:1 로 맞아떨어져 따로 매핑을 두지 않는다.
7
+ */
8
+ import type { SBadgeColor } from '../SBadge';
9
+ export declare const CALENDAR_BOARD_EVENT_COLORS: readonly ["default", "blue", "oceanBlue", "lightBlue", "green", "yellow", "orange", "red", "purple", "white"];
10
+ export type SCalendarBoardEventColor = (typeof CALENDAR_BOARD_EVENT_COLORS)[number];
11
+ export interface CalendarBoardEventPreset {
12
+ /** 이벤트 버튼 배경 */
13
+ bg: string;
14
+ /** 왼쪽 점(SBadge) 색 */
15
+ dot: SBadgeColor;
16
+ }
17
+ export declare const CALENDAR_BOARD_EVENT_PRESETS: Record<SCalendarBoardEventColor, CalendarBoardEventPreset>;
18
+ /**
19
+ * 칸에 몇 줄이 들어가는지 아직 **재지 못했을 때** 쓰는 기본값 (SSR·첫 렌더·ResizeObserver 부재).
20
+ *
21
+ * 실제로는 칸 높이가 줄 수를 정한다 — 판 높이를 부모가 정하고, 행이 그 높이를 균등 분할하고,
22
+ * 칸 높이에서 `header + n·item + (n−1)·gap + paddingBottom` 이 담기는 최대 n 이 그 값이다.
23
+ * 그래서 이 값을 조절하는 prop 은 없다.
24
+ */
25
+ export declare const CALENDAR_BOARD_MAX_VISIBLE_EVENTS = 4;
26
+ /**
27
+ * 집중하지 않은 것(다른 일정과 "N개 더보기")이 물러나는 투명도.
28
+ * 대응 토큰이 없어 디자인 값을 그대로 쓴다 — 토큰이 생기면 여기만 갈아끼운다.
29
+ */
30
+ export declare const CALENDAR_BOARD_DIM_OPACITY = 0.4;
31
+ /** 날짜 칸 배경 — 그날의 성격을 칸 전체로 알린다 */
32
+ export declare const CALENDAR_BOARD_DAY_COLORS: readonly ["default", "danger", "accent", "complete", "dim"];
33
+ export type SCalendarBoardDayColor = (typeof CALENDAR_BOARD_DAY_COLORS)[number];
34
+ /**
35
+ * 칸 배경색. `default` 만 컴포넌트 토큰이고 나머지는 대응 토큰이 없어 팔레트 프리미티브를 가리킨다.
36
+ * (토큰이 생기면 여기만 `--cmp-calendarBoard-dayCard-bg-*` 로 갈아끼운다)
37
+ */
38
+ export declare const CALENDAR_BOARD_DAY_BG: Record<SCalendarBoardDayColor, string>;
@@ -0,0 +1,3 @@
1
+ export { SCalendarBoard, type SCalendarBoardProps } from './SCalendarBoard';
2
+ export type { SCalendarBoardEvent, SCalendarBoardView } from './types';
3
+ export { CALENDAR_BOARD_EVENT_COLORS, CALENDAR_BOARD_EVENT_PRESETS, CALENDAR_BOARD_MAX_VISIBLE_EVENTS, CALENDAR_BOARD_DAY_COLORS, CALENDAR_BOARD_DAY_BG, type SCalendarBoardEventColor, type SCalendarBoardDayColor, } from './calendarBoard.config';
@@ -0,0 +1,40 @@
1
+ import type { SBadgeColor } from '../SBadge';
2
+ import type { SCalendarBoardEventColor } from './calendarBoard.config';
3
+ /** 달력 한 칸에 얹히는 일정 하나 */
4
+ export interface SCalendarBoardEvent {
5
+ /** 고유 식별자. 없으면 목록 순서로 key 를 만든다 */
6
+ id?: string;
7
+ /** 시작 날짜 (YYYY-MM-DD). 하루짜리 일정은 이것만 준다 */
8
+ date: string;
9
+ /**
10
+ * 마지막 날 (YYYY-MM-DD, **그날 포함**). 주지 않거나 `date` 보다 앞서면 하루짜리로 본다.
11
+ *
12
+ * 여러 날에 걸친 일정은 칸 경계를 넘어 **하나의 막대로 이어져** 그려진다. 주 경계에서는 줄이
13
+ * 바뀌므로 조각이 나뉘고, 그렇게 잘린 쪽 모서리는 평평해져 "앞/뒤로 이어진다" 가 읽힌다.
14
+ *
15
+ * 막대가 걸친 날은 **모두** 그 일정을 가진 날로 친다 — 목록 판과 `onValueChange` 에 함께 온다.
16
+ */
17
+ endDate?: string;
18
+ /**
19
+ * 강조 레이블 (필수) — 예: `"[입고 예정]"`.
20
+ * 일정이 무엇인지 한눈에 알리는 부분이라 비워 두지 않는다.
21
+ * 인라인 HTML(`<b>` `<strong>` `<i>` `<em>` `<span class>` `<a href>` `<br>`)을 받으며 살균 후 렌더한다.
22
+ */
23
+ label: string;
24
+ /** 색상 프리셋 — 배경과 점 색이 함께 정해진다 */
25
+ color?: SCalendarBoardEventColor;
26
+ /** 왼쪽 점 색만 따로 지정 (프리셋 기본값을 덮어쓴다). 점은 `SBadge` 라 그 색(`SBadgeColor`)을 쓴다 */
27
+ dotColor?: SBadgeColor;
28
+ /** 본문 텍스트 — 예: `"RV20260728-000006"`. 평문만 받는다 */
29
+ description?: string;
30
+ /** 구분선(`/`) 뒤에 붙는 값 — 예: `"1,000"`. 평문만 받는다 */
31
+ value?: string;
32
+ /** 이 일정만 비활성 (클릭 불가) */
33
+ disabled?: boolean;
34
+ }
35
+ /** 보이는 연·월 */
36
+ export interface SCalendarBoardView {
37
+ year: number;
38
+ /** 1-12 */
39
+ month: number;
40
+ }