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.
- package/AGENTS.md +1873 -250
- package/README.md +76 -24
- package/dist/components/SAccountListBox/AccountListBoxPortal.d.ts +31 -0
- package/dist/components/SAccountListBox/README.md +86 -0
- package/dist/components/SAccountListBox/SAccountListBox.d.ts +79 -0
- package/dist/components/SAccountListBox/SystemMenuPortal.d.ts +58 -0
- package/dist/components/SAccountListBox/accountListBox.config.d.ts +64 -0
- package/dist/components/SAccountListBox/index.d.ts +2 -0
- package/dist/components/SActionModal/README.md +1 -0
- package/dist/components/SActionModal/SActionModal.d.ts +9 -1
- package/dist/components/SBadge/README.md +27 -0
- package/dist/components/SBadge/SBadge.d.ts +1 -1
- package/dist/components/SBarChart/README.md +122 -0
- package/dist/components/SBarChart/SBarChart.d.ts +99 -0
- package/dist/components/SBarChart/barChart.config.d.ts +85 -0
- package/dist/components/SBarChart/index.d.ts +2 -0
- package/dist/components/SBarcodeInput/README.md +13 -4
- package/dist/components/SBarcodeInput/SBarcodeInput.d.ts +18 -3
- package/dist/components/SButton/README.md +40 -0
- package/dist/components/SCalendar/README.md +13 -0
- package/dist/components/SCalendarBoard/CalendarDayCard.d.ts +53 -0
- package/dist/components/SCalendarBoard/CalendarDayEventListBox.d.ts +26 -0
- package/dist/components/SCalendarBoard/CalendarEventButton.d.ts +20 -0
- package/dist/components/SCalendarBoard/CalendarMoreButton.d.ts +18 -0
- package/dist/components/SCalendarBoard/README.md +148 -0
- package/dist/components/SCalendarBoard/SCalendarBoard.d.ts +83 -0
- package/dist/components/SCalendarBoard/calendar-board-layout.d.ts +59 -0
- package/dist/components/SCalendarBoard/calendarBoard.config.d.ts +38 -0
- package/dist/components/SCalendarBoard/index.d.ts +3 -0
- package/dist/components/SCalendarBoard/types.d.ts +40 -0
- package/dist/components/SCallout/README.md +17 -1
- package/dist/components/SCallout/SCallout.d.ts +14 -4
- package/dist/components/SCard/README.md +17 -0
- package/dist/components/SCard/SCard.d.ts +26 -2
- package/dist/components/SChatAttachedFile/README.md +33 -0
- package/dist/components/SChatAttachedFile/SChatAttachedFile.d.ts +13 -0
- package/dist/components/SChatAttachedFile/chatAttachedFile.config.d.ts +23 -0
- package/dist/components/SChatAttachedFile/index.d.ts +2 -0
- package/dist/components/SChatFile/README.md +33 -0
- package/dist/components/SChatFile/SChatFile.d.ts +37 -0
- package/dist/components/SChatFile/chatFile.config.d.ts +56 -0
- package/dist/components/SChatFile/index.d.ts +2 -0
- package/dist/components/SChatInput/README.md +44 -0
- package/dist/components/SChatInput/SChatInput.d.ts +60 -0
- package/dist/components/SChatInput/index.d.ts +1 -0
- package/dist/components/SChatMessage/README.md +86 -0
- package/dist/components/SChatMessage/SChatMessage.d.ts +123 -0
- package/dist/components/SChatMessage/index.d.ts +1 -0
- package/dist/components/SChatSystemMessage/README.md +12 -0
- package/dist/components/SChatSystemMessage/SChatSystemMessage.d.ts +18 -0
- package/dist/components/SChatSystemMessage/index.d.ts +1 -0
- package/dist/components/SCheckbox/README.md +8 -0
- package/dist/components/SChip/README.md +25 -0
- package/dist/components/SChip/SChip.d.ts +8 -0
- package/dist/components/SChip/index.d.ts +1 -1
- package/dist/components/SChipFilter/README.md +369 -14
- package/dist/components/SChipFilter/SChipFilter.d.ts +169 -60
- package/dist/components/SChipFilter/index.d.ts +1 -1
- package/dist/components/SChipInput/README.md +17 -2
- package/dist/components/SChipInput/SChipInput.d.ts +16 -3
- package/dist/components/SChipInput/index.d.ts +1 -1
- package/dist/components/SCircleProgress/README.md +8 -0
- package/dist/components/SConfirmModal/README.md +13 -4
- package/dist/components/SConfirmModal/SConfirmModal.d.ts +46 -9
- package/dist/components/SContextAlert/README.md +52 -0
- package/dist/components/SContextAlert/SContextAlert.d.ts +51 -0
- package/dist/components/SContextAlert/contextAlert.config.d.ts +22 -0
- package/dist/components/SContextAlert/index.d.ts +2 -0
- package/dist/components/SDatePicker/README.md +21 -2
- package/dist/components/SDatePicker/SDatePicker.d.ts +35 -5
- package/dist/components/SDateRangePicker/README.md +21 -4
- package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +37 -7
- package/dist/components/SDivider/README.md +7 -0
- package/dist/components/SDivider/SDivider.d.ts +11 -0
- package/dist/components/SDonutChart/README.md +105 -0
- package/dist/components/SDonutChart/SDonutChart.d.ts +82 -0
- package/dist/components/SDonutChart/index.d.ts +1 -0
- package/dist/components/SDraggableItem/README.md +37 -0
- package/dist/components/SDraggableItem/SDraggableItem.d.ts +2 -0
- package/dist/components/SDraggableItem/index.d.ts +1 -1
- package/dist/components/SDraggableList/README.md +33 -3
- package/dist/components/SDraggableList/SDraggableList.d.ts +18 -3
- package/dist/components/SDraggableList/index.d.ts +1 -1
- package/dist/components/SDrawer/README.md +8 -0
- package/dist/components/SDropdownButton/README.md +19 -0
- package/dist/components/SEditor/EditorBody.d.ts +36 -0
- package/dist/components/SEditor/EditorToolbar.d.ts +93 -0
- package/dist/components/SEditor/README.md +204 -0
- package/dist/components/SEditor/SEditor.d.ts +121 -0
- package/dist/components/SEditor/editor-icons.d.ts +63 -0
- package/dist/components/SEditor/editor.config.d.ts +119 -0
- package/dist/components/SEditor/index.d.ts +8 -0
- package/dist/components/SEditor/tiptap-api.d.ts +29 -0
- package/dist/components/SEditor/use-is-mobile.d.ts +14 -0
- package/dist/components/SExpansionItem/README.md +36 -0
- package/dist/components/SExpansionItem/index.d.ts +1 -1
- package/dist/components/SField/README.md +36 -5
- package/dist/components/SField/SField.d.ts +33 -8
- package/dist/components/SField/index.d.ts +1 -1
- package/dist/components/SFilePicker/README.md +19 -4
- package/dist/components/SFilePicker/SFilePicker.d.ts +19 -6
- package/dist/components/SFooter/README.md +44 -0
- package/dist/components/SFooter/SFooter.d.ts +29 -13
- package/dist/components/SFooter/index.d.ts +1 -1
- package/dist/components/SForm/README.md +12 -1
- package/dist/components/SForm/SForm.d.ts +2 -2
- package/dist/components/SGhostButton/README.md +28 -4
- package/dist/components/SGhostButton/SGhostButton.d.ts +4 -1
- package/dist/components/SGnb/README.md +97 -7
- package/dist/components/SGnb/SGnb.d.ts +94 -10
- package/dist/components/SGnb/gnb.config.d.ts +18 -5
- package/dist/components/SGnb/index.d.ts +1 -1
- package/dist/components/SGnbSystem/README.md +186 -0
- package/dist/components/SGnbSystem/SGnbSystem.d.ts +179 -0
- package/dist/components/SGnbSystem/gnbSystem.config.d.ts +122 -0
- package/dist/components/SGnbSystem/index.d.ts +2 -0
- package/dist/components/SGuide/README.md +16 -1
- package/dist/components/SGuide/SGuide.d.ts +5 -2
- package/dist/components/SIcon/README.md +20 -0
- package/dist/components/SIcon/SIcon.d.ts +1 -1
- package/dist/components/SIcon/icons.gen.d.ts +20 -1
- package/dist/components/SImage/README.md +23 -1
- package/dist/components/SImage/SImage.d.ts +11 -8
- package/dist/components/SInput/README.md +7 -4
- package/dist/components/SInput/SInput.d.ts +13 -5
- package/dist/components/SKeyValueTable/README.md +88 -0
- package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +30 -3
- package/dist/components/SKeyValueTable/index.d.ts +1 -1
- package/dist/components/SLauncherListBox/README.md +81 -0
- package/dist/components/SLauncherListBox/SLauncherListBox.d.ts +67 -0
- package/dist/components/SLauncherListBox/index.d.ts +2 -0
- package/dist/components/SLauncherListBox/launcherListBox.config.d.ts +118 -0
- package/dist/components/SLayout/README.md +22 -1
- package/dist/components/SLayout/SLayout.d.ts +6 -2
- package/dist/components/SLayout/index.d.ts +1 -1
- package/dist/components/SLineChart/README.md +131 -0
- package/dist/components/SLineChart/SLineChart.d.ts +110 -0
- package/dist/components/SLineChart/index.d.ts +1 -0
- package/dist/components/SLineChart/lineChart.config.d.ts +95 -0
- package/dist/components/SLinearProgress/README.md +15 -0
- package/dist/components/SLinearProgress/SLinearProgress.d.ts +3 -0
- package/dist/components/SLinearProgress/index.d.ts +1 -1
- package/dist/components/SList/README.md +15 -2
- package/dist/components/SList/SList.d.ts +7 -3
- package/dist/components/SList/index.d.ts +1 -1
- package/dist/components/SListItem/README.md +41 -0
- package/dist/components/SListItem/index.d.ts +1 -1
- package/dist/components/SLoadingContainer/index.d.ts +1 -1
- package/dist/components/SLoadingContainer/loading.d.ts +41 -6
- package/dist/components/SLoadingModal/README.md +10 -2
- package/dist/components/SLoadingModal/SLoadingModal.d.ts +4 -4
- package/dist/components/SLoadingModal/index.d.ts +1 -1
- package/dist/components/SLoginCard/README.md +37 -0
- package/dist/components/SLoginCard/SLoginCard.d.ts +39 -0
- package/dist/components/SLoginCard/index.d.ts +1 -0
- package/dist/components/SLogo/README.md +54 -0
- package/dist/components/SLogo/SLogo.d.ts +47 -0
- package/dist/components/SLogo/index.d.ts +2 -0
- package/dist/components/SLogo/logo.config.d.ts +14 -0
- package/dist/components/SLogo/sellmate-wordmark.d.ts +20 -0
- package/dist/components/SMeatballButton/README.md +67 -0
- package/dist/components/SMeatballButton/SMeatballButton.d.ts +36 -0
- package/dist/components/SMeatballButton/index.d.ts +1 -0
- package/dist/components/SModal/README.md +15 -5
- package/dist/components/SModal/SModal.d.ts +1 -1
- package/dist/components/SNumberInput/README.md +18 -8
- package/dist/components/SNumberInput/SNumberInput.d.ts +42 -7
- package/dist/components/SPage/README.md +105 -5
- package/dist/components/SPage/SPage.d.ts +34 -10
- package/dist/components/SPage/SPageHeader.d.ts +31 -13
- package/dist/components/SPage/index.d.ts +2 -2
- package/dist/components/SPage/page-column.d.ts +34 -0
- package/dist/components/SPage/page-width.d.ts +23 -0
- package/dist/components/SPage/page.config.d.ts +26 -0
- package/dist/components/SPieChart/README.md +93 -0
- package/dist/components/SPieChart/SPieChart.d.ts +73 -0
- package/dist/components/SPieChart/index.d.ts +1 -0
- package/dist/components/SPopover/README.md +15 -0
- package/dist/components/SPopup/README.md +26 -2
- package/dist/components/SPopup/SPopup.d.ts +13 -10
- package/dist/components/SPopup/index.d.ts +1 -1
- package/dist/components/SPortal/README.md +20 -0
- package/dist/components/SRadio/README.md +20 -0
- package/dist/components/SRadioButton/README.md +18 -0
- package/dist/components/SRadioButton/SRadioButton.d.ts +1 -1
- package/dist/components/SRadioCard/README.md +78 -0
- package/dist/components/SRadioCard/SRadioCard.d.ts +29 -0
- package/dist/components/SRadioCard/SRadioCardGroup.d.ts +36 -0
- package/dist/components/SRadioCard/index.d.ts +2 -0
- package/dist/components/SScrollArea/README.md +28 -0
- package/dist/components/SScrollArea/SScrollArea.d.ts +17 -0
- package/dist/components/SSearchInput/README.md +63 -0
- package/dist/components/SSearchInput/SSearchInput.d.ts +52 -0
- package/dist/components/SSearchInput/index.d.ts +1 -0
- package/dist/components/SSectionHeaderCard/README.md +38 -0
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +19 -0
- package/dist/components/SSelect/README.md +38 -11
- package/dist/components/SSelect/SSelect.d.ts +80 -9
- package/dist/components/SSelect/select.config.d.ts +15 -0
- package/dist/components/SSplitter/README.md +17 -2
- package/dist/components/SSplitter/SSplitter.d.ts +7 -3
- package/dist/components/SStepper/README.md +26 -0
- package/dist/components/SSwitch/README.md +13 -1
- package/dist/components/SSwitch/SSwitch.d.ts +1 -3
- package/dist/components/SSystemActionButton/README.md +246 -0
- package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +167 -0
- package/dist/components/SSystemActionButton/index.d.ts +2 -0
- package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +93 -0
- package/dist/components/STable/README.md +116 -11
- package/dist/components/STable/STable.d.ts +243 -23
- package/dist/components/STable/index.d.ts +1 -1
- package/dist/components/STableBar/README.md +1 -0
- package/dist/components/STableBar/STableBar.d.ts +8 -1
- package/dist/components/STabs/README.md +13 -2
- package/dist/components/STabs/STabs.d.ts +3 -5
- package/dist/components/STabs/index.d.ts +1 -1
- package/dist/components/STabs/tabs.config.d.ts +3 -4
- package/dist/components/STag/README.md +55 -0
- package/dist/components/STag/STag.d.ts +3 -1
- package/dist/components/STag/tag.config.d.ts +1 -1
- package/dist/components/STextLink/README.md +19 -1
- package/dist/components/STextLink/STextLink.d.ts +5 -1
- package/dist/components/STextarea/README.md +11 -5
- package/dist/components/STextarea/STextarea.d.ts +42 -6
- package/dist/components/STimePicker/README.md +18 -2
- package/dist/components/STimePicker/STimePicker.d.ts +29 -6
- package/dist/components/STimePicker/timepicker.config.d.ts +4 -2
- package/dist/components/STimeRangePicker/README.md +30 -2
- package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +28 -6
- package/dist/components/SToast/README.md +25 -1
- package/dist/components/SToast/SToast.d.ts +2 -2
- package/dist/components/SToggle/README.md +8 -0
- package/dist/components/SToggle/index.d.ts +1 -1
- package/dist/components/STooltip/README.md +25 -1
- package/dist/components/STooltip/STooltip.d.ts +1 -1
- package/dist/components/STree/README.md +42 -4
- package/dist/components/STree/STree.d.ts +18 -6
- package/dist/components/STree/STree.examples.d.ts +2 -0
- package/dist/docs/Gallery.d.ts +9 -0
- package/dist/docs/RecipeGallery.d.ts +13 -0
- package/dist/docs/gallery-previews.d.ts +24 -0
- package/dist/fonts/LICENSE.txt +94 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.0.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.1.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.10.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.11.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.12.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.13.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.14.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.15.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.16.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.17.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.18.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.19.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.2.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.20.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.21.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.22.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.23.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.24.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.25.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.26.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.27.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.28.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.29.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.3.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.30.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.31.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.32.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.33.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.34.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.35.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.36.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.37.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.38.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.39.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.4.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.40.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.41.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.42.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.43.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.44.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.45.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.46.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.47.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.48.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.49.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.5.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.50.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.51.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.52.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.53.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.54.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.55.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.56.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.57.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.58.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.59.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.6.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.60.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.61.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.62.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.63.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.64.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.65.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.66.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.67.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.68.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.69.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.7.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.70.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.71.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.72.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.73.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.74.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.75.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.76.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.77.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.78.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.79.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.8.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.80.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.81.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.82.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.83.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.84.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.85.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.86.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.87.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.88.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.89.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.9.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.90.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.91.woff2 +0 -0
- package/dist/index.cjs +20559 -10373
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +22 -0
- package/dist/index.js +20482 -10372
- package/dist/index.js.map +1 -1
- package/dist/lib/chart/cartesian.d.ts +56 -0
- package/dist/lib/chart/frame.d.ts +21 -0
- package/dist/lib/chart/hover-dim.d.ts +19 -0
- package/dist/lib/chart/legend.d.ts +21 -0
- package/dist/lib/chart/palette.d.ts +28 -0
- package/dist/lib/chart/radial.d.ts +99 -0
- package/dist/lib/chart/scale.d.ts +26 -0
- package/dist/lib/chart/tooltip.d.ts +60 -0
- package/dist/lib/chart/types.d.ts +29 -0
- package/dist/lib/chart/use-element-size.d.ts +39 -0
- package/dist/lib/date.d.ts +2 -1
- package/dist/lib/depth-filter.d.ts +27 -0
- package/dist/lib/doc-sections.d.ts +35 -0
- package/dist/lib/dropdown-menu.d.ts +19 -0
- package/dist/lib/field-width.d.ts +31 -0
- package/dist/lib/floating-height.d.ts +15 -0
- package/dist/lib/global-overlay.d.ts +5 -0
- package/dist/lib/hover-preview.d.ts +32 -0
- package/dist/lib/inert.d.ts +11 -0
- package/dist/lib/overlay-scrollbar.d.ts +32 -0
- package/dist/lib/row-metrics.d.ts +61 -0
- package/dist/lib/story-docs.d.ts +19 -3
- package/dist/llms-full.txt +5901 -550
- package/dist/llms.txt +1915 -267
- package/dist/playground/categories.d.ts +19 -0
- package/dist/pretendard.css +937 -0
- package/dist/recipes/AppShell.d.ts +21 -0
- package/dist/recipes/ExcelFilePopupPage.d.ts +5 -0
- package/dist/recipes/LoginPage.d.ts +6 -0
- package/dist/recipes/ProductCreatePage.d.ts +1 -0
- package/dist/recipes/ProductCreateSectionsPage.d.ts +5 -0
- package/dist/recipes/ProductDetailInlineEditPage.d.ts +9 -0
- package/dist/recipes/ProductDetailPage.d.ts +1 -0
- package/dist/recipes/ProductListChipFilterPage.d.ts +1 -0
- package/dist/recipes/ProductListPage.d.ts +1 -0
- package/dist/recipes/TransferOrderPopupPage.d.ts +2 -0
- package/dist/recipes/api.d.ts +91 -0
- package/dist/recipes/recipe-story.d.ts +33 -0
- package/dist/recipes/router.d.ts +9 -0
- package/dist/styles.css +3328 -273
- package/dist/theme.css +571 -33
- package/eslint/index.mjs +9 -0
- package/eslint/lib/table-column.mjs +26 -0
- package/eslint/rules/divider-vertical-height.mjs +137 -0
- package/eslint/rules/field-width-grade.mjs +27 -10
- package/eslint/rules/table-column-width.mjs +110 -0
- package/eslint/scale.gen.mjs +6 -3
- package/package.json +17 -3
|
@@ -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
|
+
}
|
|
@@ -8,12 +8,28 @@
|
|
|
8
8
|
|
|
9
9
|
| Prop | Type | Default | Description |
|
|
10
10
|
|------|------|---------|-------------|
|
|
11
|
-
| `type?` | `SCalloutType` | `'default'` | 콜아웃 타입 (색상·아이콘·타이틀 결정) |
|
|
11
|
+
| `type?` | `SCalloutType` | `'default'` | 콜아웃 타입 (색상·아이콘·타이틀 결정). - `default` — 옅은 회색 면. 흰 페이지(`background="frame"`) 위의 기본 안내. - `white` — 같은 안내인데 배경만 흰 면. 회색 면(`neutral`·`screen`) 위에서 default 가 묻힐 때. - `danger` — 좌측에 주의사항 타이틀이 붙는 경고. |
|
|
12
|
+
| `showTitle?` | `boolean` | `true` | `danger` 좌측의 주의사항 타이틀(아이콘+라벨) 표시 여부. 기본 `true`. `false` 면 타이틀만 빠지고 danger 의 면·테두리·본문색은 그대로다. 다른 타입에는 영향이 없다. |
|
|
12
13
|
| `message?` | `SCalloutMessage[]` | `[]` | 표시할 메시지 목록 (배열 중첩으로 depth 표현). 각 문자열은 인라인 HTML(`<b>`, `<a>` 등)을 허용하며 sanitizeInlineHtml 로 살균 후 렌더된다. |
|
|
13
14
|
| `children?` | `ReactNode` | — | message 대신 직접 본문을 넣을 때 |
|
|
14
15
|
| `className?` | `string` | — | |
|
|
15
16
|
| `style?` | `CSSProperties` | — | |
|
|
16
17
|
|
|
18
|
+
## Types
|
|
19
|
+
|
|
20
|
+
### SCalloutType
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
export type SCalloutType = 'default' | 'danger' | 'white';
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### SCalloutMessage
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
/** 중첩 메시지: 문자열 또는 (한 단계 더 들어간) 문자열 배열 */
|
|
30
|
+
export type SCalloutMessage = string | SCalloutMessage[];
|
|
31
|
+
```
|
|
32
|
+
|
|
17
33
|
## Dependencies
|
|
18
34
|
|
|
19
35
|
### Depends on
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { type CSSProperties, type ReactNode } from 'react';
|
|
2
|
-
export type SCalloutType = 'default' | 'danger';
|
|
2
|
+
export type SCalloutType = 'default' | 'danger' | 'white';
|
|
3
3
|
/** 중첩 메시지: 문자열 또는 (한 단계 더 들어간) 문자열 배열 */
|
|
4
4
|
export type SCalloutMessage = string | SCalloutMessage[];
|
|
5
5
|
export interface SCalloutProps {
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* 콜아웃 타입 (색상·아이콘·타이틀 결정).
|
|
8
|
+
* - `default` — 옅은 회색 면. 흰 페이지(`background="frame"`) 위의 기본 안내.
|
|
9
|
+
* - `white` — 같은 안내인데 배경만 흰 면. 회색 면(`neutral`·`screen`) 위에서 default 가 묻힐 때.
|
|
10
|
+
* - `danger` — 좌측에 주의사항 타이틀이 붙는 경고.
|
|
11
|
+
*/
|
|
7
12
|
type?: SCalloutType;
|
|
13
|
+
/**
|
|
14
|
+
* `danger` 좌측의 주의사항 타이틀(아이콘+라벨) 표시 여부. 기본 `true`.
|
|
15
|
+
* `false` 면 타이틀만 빠지고 danger 의 면·테두리·본문색은 그대로다. 다른 타입에는 영향이 없다.
|
|
16
|
+
*/
|
|
17
|
+
showTitle?: boolean;
|
|
8
18
|
/**
|
|
9
19
|
* 표시할 메시지 목록 (배열 중첩으로 depth 표현).
|
|
10
20
|
* 각 문자열은 인라인 HTML(`<b>`, `<a>` 등)을 허용하며 sanitizeInlineHtml 로 살균 후 렌더된다.
|
|
@@ -17,8 +27,8 @@ export interface SCalloutProps {
|
|
|
17
27
|
}
|
|
18
28
|
/**
|
|
19
29
|
* SCallout — sd-callout 포팅.
|
|
20
|
-
* default/danger 타입, 중첩 리스트(불릿은 span으로 렌더), danger는 좌측 타이틀
|
|
21
|
-
* 색상은 `--cmp-callout-*` 토큰
|
|
30
|
+
* default/white/danger 타입, 중첩 리스트(불릿은 span으로 렌더), danger는 좌측 타이틀 표시(showTitle 로 끌 수 있다).
|
|
31
|
+
* 색상은 `--cmp-callout-*` 토큰 참조(white 만 예외 — SURFACE 주석 참고).
|
|
22
32
|
* message 각 항목은 sanitizeInlineHtml 로 살균한 뒤 innerHTML 로 렌더한다 (원본 sd-callout 과 동일).
|
|
23
33
|
*/
|
|
24
34
|
export declare const SCallout: import("react").ForwardRefExoticComponent<SCalloutProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -9,4 +9,21 @@
|
|
|
9
9
|
| Prop | Type | Default | Description |
|
|
10
10
|
|------|------|---------|-------------|
|
|
11
11
|
| `bordered?` | `boolean` | `false` | 테두리 표시 여부 |
|
|
12
|
+
| `footerLeft?` | `ReactNode` | — | 하단 액션 영역 좌측 슬롯. 보조 버튼(취소·목록 등)이 오는 자리다. `footerLeft` 또는 `button` 중 하나라도 있으면 하단 액션 영역이 렌더된다. |
|
|
13
|
+
| `button?` | `SFooterButton` | — | 하단 액션 영역 우측 주 액션 버튼 |
|
|
14
|
+
| `footerSize?` | `SFooterSize` | `'md'` | 하단 액션 영역 크기. 기본은 `md`. 한 화면 안에서 **부분만 확정하는 카드**(옆 패널·분할 영역처럼 화면의 일부를 맡는 카드)일 때만 `sm`. 카드가 화면의 주 액션을 쥐고 있으면 모달·페이지와 같은 `md` 다 (AGENTS.md §3-5-2). `footerLeft` 슬롯의 버튼도 같이 맞춘다 — `sm` 이면 슬롯 버튼도 `size="sm"`. |
|
|
15
|
+
| `footerClassName?` | `string` | — | 하단 액션 영역 클래스 |
|
|
12
16
|
|
|
17
|
+
## Dependencies
|
|
18
|
+
|
|
19
|
+
### Depends on
|
|
20
|
+
|
|
21
|
+
- [SFooter](../SFooter)
|
|
22
|
+
|
|
23
|
+
### Graph
|
|
24
|
+
|
|
25
|
+
```mermaid
|
|
26
|
+
graph TD;
|
|
27
|
+
SCard --> SFooter
|
|
28
|
+
style SCard fill:#f9f,stroke:#333,stroke-width:4px
|
|
29
|
+
```
|
|
@@ -1,7 +1,31 @@
|
|
|
1
|
-
import { type HTMLAttributes } from 'react';
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type SFooterButton, type SFooterSize } from '../SFooter';
|
|
2
3
|
export interface SCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
4
|
/** 테두리 표시 여부 */
|
|
4
5
|
bordered?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* 하단 액션 영역 좌측 슬롯. 보조 버튼(취소·목록 등)이 오는 자리다.
|
|
8
|
+
* `footerLeft` 또는 `button` 중 하나라도 있으면 하단 액션 영역이 렌더된다.
|
|
9
|
+
*/
|
|
10
|
+
footerLeft?: ReactNode;
|
|
11
|
+
/** 하단 액션 영역 우측 주 액션 버튼 */
|
|
12
|
+
button?: SFooterButton;
|
|
13
|
+
/**
|
|
14
|
+
* 하단 액션 영역 크기. 기본은 `md`.
|
|
15
|
+
*
|
|
16
|
+
* 한 화면 안에서 **부분만 확정하는 카드**(옆 패널·분할 영역처럼 화면의 일부를 맡는 카드)일 때만
|
|
17
|
+
* `sm`. 카드가 화면의 주 액션을 쥐고 있으면 모달·페이지와 같은 `md` 다 (AGENTS.md §3-5-2).
|
|
18
|
+
*
|
|
19
|
+
* `footerLeft` 슬롯의 버튼도 같이 맞춘다 — `sm` 이면 슬롯 버튼도 `size="sm"`.
|
|
20
|
+
*/
|
|
21
|
+
footerSize?: SFooterSize;
|
|
22
|
+
/** 하단 액션 영역 클래스 */
|
|
23
|
+
footerClassName?: string;
|
|
5
24
|
}
|
|
6
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* SCard — sd-card 포팅. 라운드 8px, 흰 배경, 옵션 테두리. 콘텐츠는 라운드 경계에서 잘린다.
|
|
27
|
+
*
|
|
28
|
+
* 하단 액션은 `children` 에 직접 두지 않고 `footerLeft`·`button` 으로 넘긴다 — 배경·구분선·여백과
|
|
29
|
+
* 양끝 분리가 컴포넌트 규칙대로 잡히는 자리다.
|
|
30
|
+
*/
|
|
7
31
|
export declare const SCard: import("react").ForwardRefExoticComponent<SCardProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# SChatAttachedFile
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### SChatAttachedFile
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `name` | `string` | — | 파일명. 칸을 넘치면 말줄임된다 — 칸의 폭은 부모가 정한다. |
|
|
12
|
+
|
|
13
|
+
#### Events
|
|
14
|
+
|
|
15
|
+
| Event | Type | Description |
|
|
16
|
+
|-------|------|-------------|
|
|
17
|
+
| `onRemove` | `() => void` | 제거 버튼을 눌렀을 때. 주지 않으면 버튼이 서지 않는다. 입력창 위의 첨부는 보내기 전까지 뺄 수 있어야 하므로 대개 준다 — 버튼을 세우지 않는 것은 보내는 중처럼 무를 수 없는 짧은 순간뿐이다. |
|
|
18
|
+
|
|
19
|
+
## Dependencies
|
|
20
|
+
|
|
21
|
+
### Depends on
|
|
22
|
+
|
|
23
|
+
- [SGhostButton](../SGhostButton)
|
|
24
|
+
- [SIcon](../SIcon)
|
|
25
|
+
|
|
26
|
+
### Graph
|
|
27
|
+
|
|
28
|
+
```mermaid
|
|
29
|
+
graph TD;
|
|
30
|
+
SChatAttachedFile --> SGhostButton
|
|
31
|
+
SChatAttachedFile --> SIcon
|
|
32
|
+
style SChatAttachedFile fill:#f9f,stroke:#333,stroke-width:4px
|
|
33
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
export interface SChatAttachedFileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
3
|
+
/** 파일명. 칸을 넘치면 말줄임된다 — 칸의 폭은 부모가 정한다. */
|
|
4
|
+
name: string;
|
|
5
|
+
/**
|
|
6
|
+
* 제거 버튼을 눌렀을 때. 주지 않으면 버튼이 서지 않는다.
|
|
7
|
+
*
|
|
8
|
+
* 입력창 위의 첨부는 보내기 전까지 뺄 수 있어야 하므로 대개 준다 —
|
|
9
|
+
* 버튼을 세우지 않는 것은 보내는 중처럼 무를 수 없는 짧은 순간뿐이다.
|
|
10
|
+
*/
|
|
11
|
+
onRemove?: () => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const SChatAttachedFile: import("react").ForwardRefExoticComponent<SChatAttachedFileProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 보내기 전 첨부 칸이 쓰는 값. `component.chatAttachedFile` 토큰 한 세트가 여백·면·선·칩을
|
|
3
|
+
* 모두 쥔다.
|
|
4
|
+
*
|
|
5
|
+
* 높이는 고정하지 않고 세로 패딩(`paddingY`)과 내용이 정한다 — 예전에 스케일에 안 떨어져
|
|
6
|
+
* 값으로 두던 높이(30)·타일(20)은 `paddingY` + `icon.wrapper.padding` + 아이콘 크기로 따라온다.
|
|
7
|
+
*/
|
|
8
|
+
export declare const CHAT_ATTACHED_FILE_CONFIG: {
|
|
9
|
+
/** 바깥 상자 — 좌우·상하 여백·면·선·라운드 */
|
|
10
|
+
readonly box: "px-(--cmp-chatAttachedFile-paddingX) py-(--cmp-chatAttachedFile-paddingY) rounded-(--cmp-chatAttachedFile-radius) border-(length:--cmp-chatAttachedFile-border-width) border-(--cmp-chatAttachedFile-border-color) bg-(--cmp-chatAttachedFile-bg)";
|
|
11
|
+
/** 콘텐츠 묶음 ↔ 제거 버튼 간격 */
|
|
12
|
+
readonly outerGap: "gap-(--cmp-chatAttachedFile-gap)";
|
|
13
|
+
/** 아이콘 칩 ↔ 파일명 간격 */
|
|
14
|
+
readonly contentGap: "gap-(--cmp-chatAttachedFile-content-gap)";
|
|
15
|
+
/** 클립 아이콘이 앉는 칩 — 내부 패딩·면·라운드 (높이는 아이콘+패딩이 정한다) */
|
|
16
|
+
readonly tile: "p-(--cmp-chatAttachedFile-icon-wrapper-padding) rounded-(--cmp-chatAttachedFile-icon-wrapper-radius) bg-(--cmp-chatAttachedFile-icon-wrapper-bg)";
|
|
17
|
+
/** 칩 안 클립 아이콘 크기(px). SVG width/height 는 속성값이라 CSS 변수를 못 받아 값으로 둔다 (토큰 값과 동일) */
|
|
18
|
+
readonly iconSize: 16;
|
|
19
|
+
/** 파일명 타이포 프리셋 */
|
|
20
|
+
readonly nameTypo: "typo-body-sm-default";
|
|
21
|
+
/** 파일명 텍스트색 */
|
|
22
|
+
readonly textColor: "text-(--cmp-chatAttachedFile-filename-color)";
|
|
23
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# SChatFile
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### SChatFile
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `name` | `string` | — | 파일명. 칸을 넘치면 말줄임된다 — 칸의 폭은 부모가 정한다. |
|
|
12
|
+
| `extension?` | `string` | — | 보조 줄에 쓸 형식. 주지 않으면 **파일명의 마지막 점 뒤**를 쓴다. 파일명에서 뽑는 것이 틀리는 자리에서만 준다 — 확장자가 없거나(`README`), 확장자처럼 안 생겼거나(`backup.2026` → `2026`), 두 마디인 경우(`archive.tar.gz` → `gz`). 그 밖에는 주지 않는 편이 낫다. 파일명과 어긋난 형식이 적히는 일을 막는다. 앞의 점과 대소문자는 알아서 정리한다 — `'.CSV'` 와 `'csv'` 가 같게 나온다. |
|
|
13
|
+
| `size` | `number` | — | 파일 크기(바이트). 형식(`extension`)과 묶어 `csv / 9.4KB` 로 그린다. **바이트 수를 그대로 넘긴다** — `'9.4KB'` 같은 완성된 문자열이 아니다. 표기를 앱이 만들면 같은 파일이 화면마다 다른 크기로 읽히므로 서식은 디자인 시스템이 쥔다. 서버가 준 바이트 수를 그대로 넘기면 된다. **필수다** — 보낸 파일은 확장자와 크기를 반드시 밝힌다. 선택으로 두면 빠뜨려도 타입이 통과하고 화면에서 보조 줄만 조용히 사라진다. |
|
|
14
|
+
|
|
15
|
+
#### Events
|
|
16
|
+
|
|
17
|
+
| Event | Type | Description |
|
|
18
|
+
|-------|------|-------------|
|
|
19
|
+
| `onFileClick` | `() => void` | 칸을 눌렀을 때 — 파일을 여는 자리다. **필수다** — 보낸 파일은 언제나 열 수 있다. 선택으로 두면 빠뜨려도 타입이 통과하고, 커서·hover 면까지 갖춘 칸이 눌러도 아무 일이 없는 화면이 조용히 나간다. 루트가 `div` 라 `role="button"`·`tabIndex`·Enter/Space 를 DS 가 함께 붙인다 — 앱이 `onClick` 만 직접 달면 키보드로 닿지 않는 칸이 되므로 그 대신 이걸 쓴다. |
|
|
20
|
+
|
|
21
|
+
## Dependencies
|
|
22
|
+
|
|
23
|
+
### Depends on
|
|
24
|
+
|
|
25
|
+
- [SIcon](../SIcon)
|
|
26
|
+
|
|
27
|
+
### Graph
|
|
28
|
+
|
|
29
|
+
```mermaid
|
|
30
|
+
graph TD;
|
|
31
|
+
SChatFile --> SIcon
|
|
32
|
+
style SChatFile fill:#f9f,stroke:#333,stroke-width:4px
|
|
33
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
export interface SChatFileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
3
|
+
/** 파일명. 칸을 넘치면 말줄임된다 — 칸의 폭은 부모가 정한다. */
|
|
4
|
+
name: string;
|
|
5
|
+
/**
|
|
6
|
+
* 보조 줄에 쓸 형식. 주지 않으면 **파일명의 마지막 점 뒤**를 쓴다.
|
|
7
|
+
*
|
|
8
|
+
* 파일명에서 뽑는 것이 틀리는 자리에서만 준다 — 확장자가 없거나(`README`),
|
|
9
|
+
* 확장자처럼 안 생겼거나(`backup.2026` → `2026`), 두 마디인 경우(`archive.tar.gz` → `gz`).
|
|
10
|
+
* 그 밖에는 주지 않는 편이 낫다. 파일명과 어긋난 형식이 적히는 일을 막는다.
|
|
11
|
+
*
|
|
12
|
+
* 앞의 점과 대소문자는 알아서 정리한다 — `'.CSV'` 와 `'csv'` 가 같게 나온다.
|
|
13
|
+
*/
|
|
14
|
+
extension?: string;
|
|
15
|
+
/**
|
|
16
|
+
* 파일 크기(바이트). 형식(`extension`)과 묶어 `csv / 9.4KB` 로 그린다.
|
|
17
|
+
*
|
|
18
|
+
* **바이트 수를 그대로 넘긴다** — `'9.4KB'` 같은 완성된 문자열이 아니다. 표기를 앱이 만들면
|
|
19
|
+
* 같은 파일이 화면마다 다른 크기로 읽히므로 서식은 디자인 시스템이 쥔다. 서버가 준 바이트 수를
|
|
20
|
+
* 그대로 넘기면 된다.
|
|
21
|
+
*
|
|
22
|
+
* **필수다** — 보낸 파일은 확장자와 크기를 반드시 밝힌다. 선택으로 두면 빠뜨려도 타입이
|
|
23
|
+
* 통과하고 화면에서 보조 줄만 조용히 사라진다.
|
|
24
|
+
*/
|
|
25
|
+
size: number;
|
|
26
|
+
/**
|
|
27
|
+
* 칸을 눌렀을 때 — 파일을 여는 자리다.
|
|
28
|
+
*
|
|
29
|
+
* **필수다** — 보낸 파일은 언제나 열 수 있다. 선택으로 두면 빠뜨려도 타입이 통과하고,
|
|
30
|
+
* 커서·hover 면까지 갖춘 칸이 눌러도 아무 일이 없는 화면이 조용히 나간다.
|
|
31
|
+
*
|
|
32
|
+
* 루트가 `div` 라 `role="button"`·`tabIndex`·Enter/Space 를 DS 가 함께 붙인다 — 앱이
|
|
33
|
+
* `onClick` 만 직접 달면 키보드로 닿지 않는 칸이 되므로 그 대신 이걸 쓴다.
|
|
34
|
+
*/
|
|
35
|
+
onFileClick: () => void;
|
|
36
|
+
}
|
|
37
|
+
export declare const SChatFile: import("react").ForwardRefExoticComponent<SChatFileProps & import("react").RefAttributes<HTMLDivElement>>;
|