@loword/loword-design-system 0.0.18 → 0.1.1
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/README.md +37 -21
- package/dist/components/LDAccordion/AccordionBase.d.ts.map +1 -1
- package/dist/components/LDAccordion/AccordionBase.js +3 -4
- package/dist/components/LDAccordion/LDAccordion.d.ts +33 -2
- package/dist/components/LDAccordion/LDAccordion.d.ts.map +1 -1
- package/dist/components/LDAccordion/LDAccordion.js +70 -7
- package/dist/components/LDAutoComplete/AutoCompleteBase.d.ts +35 -21
- package/dist/components/LDAutoComplete/AutoCompleteBase.d.ts.map +1 -1
- package/dist/components/LDAutoComplete/AutoCompleteBase.js +25 -46
- package/dist/components/LDAutoComplete/LDAutoComplete.d.ts +54 -4
- package/dist/components/LDAutoComplete/LDAutoComplete.d.ts.map +1 -1
- package/dist/components/LDAutoComplete/LDAutoComplete.js +141 -4
- package/dist/components/LDAvatar/AvatarBase.d.ts.map +1 -1
- package/dist/components/LDAvatar/AvatarBase.js +3 -3
- package/dist/components/LDAvatar/LDAvatar.d.ts +3 -1
- package/dist/components/LDAvatar/LDAvatar.d.ts.map +1 -1
- package/dist/components/LDAvatar/LDAvatar.js +33 -20
- package/dist/components/LDBadge/BadgeBase.d.ts.map +1 -1
- package/dist/components/LDBadge/LDBadge.d.ts +7 -4
- package/dist/components/LDBadge/LDBadge.d.ts.map +1 -1
- package/dist/components/LDBadge/LDBadge.js +34 -32
- package/dist/components/LDBreadCrumb/BreadCrumbBase.d.ts +3 -2
- package/dist/components/LDBreadCrumb/BreadCrumbBase.d.ts.map +1 -1
- package/dist/components/LDBreadCrumb/BreadCrumbBase.js +6 -3
- package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts +26 -2
- package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts.map +1 -1
- package/dist/components/LDBreadCrumb/LDBreadCrumb.js +24 -15
- package/dist/components/LDButton/ButtonBase.d.ts.map +1 -1
- package/dist/components/LDButton/LDButton.d.ts +5 -3
- package/dist/components/LDButton/LDButton.d.ts.map +1 -1
- package/dist/components/LDButton/LDButton.js +14 -27
- package/dist/components/LDCalendar/CalendarBase.d.ts +1 -1
- package/dist/components/LDCalendar/CalendarBase.d.ts.map +1 -1
- package/dist/components/LDCalendar/CalendarBase.js +12 -11
- package/dist/components/LDCalendar/CalendarTimePicker.d.ts +11 -0
- package/dist/components/LDCalendar/CalendarTimePicker.d.ts.map +1 -0
- package/dist/components/LDCalendar/CalendarTimePicker.js +82 -0
- package/dist/components/LDCalendar/LDCalendar.d.ts +13 -8
- package/dist/components/LDCalendar/LDCalendar.d.ts.map +1 -1
- package/dist/components/LDCalendar/LDCalendar.js +48 -81
- package/dist/components/LDCallout/CalloutBase.d.ts.map +1 -1
- package/dist/components/LDCallout/CalloutBase.js +3 -3
- package/dist/components/LDCallout/LDCallout.d.ts.map +1 -1
- package/dist/components/LDCallout/LDCallout.js +1 -1
- package/dist/components/LDCarousel/CarouselBase.d.ts +6 -1
- package/dist/components/LDCarousel/CarouselBase.d.ts.map +1 -1
- package/dist/components/LDCarousel/CarouselBase.js +12 -9
- package/dist/components/LDCarousel/LDCarousel.d.ts +13 -11
- package/dist/components/LDCarousel/LDCarousel.d.ts.map +1 -1
- package/dist/components/LDCarousel/LDCarousel.js +3 -3
- package/dist/components/LDChart/LDChart.d.ts +4 -2
- package/dist/components/LDChart/LDChart.d.ts.map +1 -1
- package/dist/components/LDChart/LDChart.js +5 -5
- package/dist/components/LDCheckbox/CheckboxBase.d.ts.map +1 -1
- package/dist/components/LDCheckbox/CheckboxBase.js +3 -3
- package/dist/components/LDCheckbox/LDCheckbox.d.ts +3 -1
- package/dist/components/LDCheckbox/LDCheckbox.d.ts.map +1 -1
- package/dist/components/LDCheckbox/LDCheckbox.js +6 -6
- package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts +1 -1
- package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts.map +1 -1
- package/dist/components/LDCheckbox/LDCheckboxGroup.js +1 -1
- package/dist/components/LDCheckbox/LDFormCheckbox.d.ts +1 -1
- package/dist/components/LDCheckbox/LDFormCheckbox.d.ts.map +1 -1
- package/dist/components/LDCheckbox/LDFormCheckbox.js +2 -2
- package/dist/components/LDCheckbox/LDFormCheckboxGroup.d.ts +1 -1
- package/dist/components/LDCheckbox/LDFormCheckboxGroup.d.ts.map +1 -1
- package/dist/components/LDCheckbox/LDFormCheckboxGroup.js +2 -2
- package/dist/components/LDDataCalendar/LDDataCalendar.d.ts +23 -5
- package/dist/components/LDDataCalendar/LDDataCalendar.d.ts.map +1 -1
- package/dist/components/LDDataCalendar/LDDataCalendar.js +28 -5
- package/dist/components/LDDataCalendar/LDDataCalendarBase.d.ts +6 -10
- package/dist/components/LDDataCalendar/LDDataCalendarBase.d.ts.map +1 -1
- package/dist/components/LDDataCalendar/LDDataCalendarBase.js +7 -7
- package/dist/components/LDDatePicker/LDDatePicker.d.ts +11 -4
- package/dist/components/LDDatePicker/LDDatePicker.d.ts.map +1 -1
- package/dist/components/LDDatePicker/LDDatePicker.js +55 -60
- package/dist/components/LDDatePicker/LDFormDatePicker.d.ts +1 -1
- package/dist/components/LDDatePicker/LDFormDatePicker.d.ts.map +1 -1
- package/dist/components/LDDatePicker/LDFormDatePicker.js +4 -4
- package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts +15 -9
- package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts.map +1 -1
- package/dist/components/LDDateRangePicker/LDDateRangePicker.js +92 -91
- package/dist/components/LDDateRangePicker/LDFormDateRangePicker.d.ts +1 -1
- package/dist/components/LDDateRangePicker/LDFormDateRangePicker.d.ts.map +1 -1
- package/dist/components/LDDateRangePicker/LDFormDateRangePicker.js +3 -3
- package/dist/components/LDDaumPostButton/LDDaumPostButton.d.ts +1 -1
- package/dist/components/LDDaumPostButton/LDDaumPostButton.d.ts.map +1 -1
- package/dist/components/LDDaumPostButton/LDDaumPostButton.js +2 -2
- package/dist/components/LDDivider/DividerBase.d.ts.map +1 -1
- package/dist/components/LDDivider/LDDivider.js +1 -1
- package/dist/components/LDDrawer/DrawerBase.d.ts +26 -47
- package/dist/components/LDDrawer/DrawerBase.d.ts.map +1 -1
- package/dist/components/LDDrawer/DrawerBase.js +19 -25
- package/dist/components/LDDrawer/LDDrawer.d.ts +35 -5
- package/dist/components/LDDrawer/LDDrawer.d.ts.map +1 -1
- package/dist/components/LDDrawer/LDDrawer.js +47 -6
- package/dist/components/LDEditor/EditorBase.d.ts +3 -2
- package/dist/components/LDEditor/EditorBase.d.ts.map +1 -1
- package/dist/components/LDEditor/EditorBase.js +7 -5
- package/dist/components/LDEditor/LDEditor.d.ts.map +1 -1
- package/dist/components/LDEditor/LDEditor.js +37 -27
- package/dist/components/LDEditor/LDViewer.js +3 -3
- package/dist/components/LDEditor/extensions.d.ts.map +1 -1
- package/dist/components/LDEditor/extensions.js +10 -12
- package/dist/components/LDEmpty/LDEmpty.d.ts +3 -1
- package/dist/components/LDEmpty/LDEmpty.d.ts.map +1 -1
- package/dist/components/LDEmpty/LDEmpty.js +1 -1
- package/dist/components/LDFileUpload/FileUploadBase.d.ts +20 -35
- package/dist/components/LDFileUpload/FileUploadBase.d.ts.map +1 -1
- package/dist/components/LDFileUpload/FileUploadBase.js +81 -162
- package/dist/components/LDFileUpload/LDFileUpload.d.ts +31 -17
- package/dist/components/LDFileUpload/LDFileUpload.d.ts.map +1 -1
- package/dist/components/LDFileUpload/LDFileUpload.js +73 -5
- package/dist/components/LDFileUpload/LDFileUploadList.d.ts +4 -18
- package/dist/components/LDFileUpload/LDFileUploadList.d.ts.map +1 -1
- package/dist/components/LDFileUpload/LDFileUploadList.js +3 -4
- package/dist/components/LDFileUpload/LDImageUpload.d.ts +5 -19
- package/dist/components/LDFileUpload/LDImageUpload.d.ts.map +1 -1
- package/dist/components/LDFileUpload/LDImageUpload.js +4 -8
- package/dist/components/LDFileUpload/LDImageUploadList.d.ts +4 -18
- package/dist/components/LDFileUpload/LDImageUploadList.d.ts.map +1 -1
- package/dist/components/LDFileUpload/LDImageUploadList.js +4 -4
- package/dist/components/LDForm/LDForm.d.ts +1 -1
- package/dist/components/LDForm/LDForm.d.ts.map +1 -1
- package/dist/components/LDForm/LDFormErrorMessage.d.ts.map +1 -1
- package/dist/components/LDForm/LDFormErrorMessage.js +1 -1
- package/dist/components/LDInput/InputBase.d.ts.map +1 -1
- package/dist/components/LDInput/InputBase.js +1 -1
- package/dist/components/LDInput/LDFormInput.d.ts +1 -1
- package/dist/components/LDInput/LDFormInput.d.ts.map +1 -1
- package/dist/components/LDInput/LDFormInput.js +4 -4
- package/dist/components/LDInput/LDInput.d.ts +5 -3
- package/dist/components/LDInput/LDInput.d.ts.map +1 -1
- package/dist/components/LDInput/LDInput.js +18 -16
- package/dist/components/LDLNB/LDLNB.d.ts +1 -1
- package/dist/components/LDLNB/LDLNB.d.ts.map +1 -1
- package/dist/components/LDLNB/LDLNB.js +7 -7
- package/dist/components/LDLNB/{LDLNBBase.d.ts → LNBBase.d.ts} +3 -3
- package/dist/components/LDLNB/LNBBase.d.ts.map +1 -0
- package/dist/components/LDLNB/{LDLNBBase.js → LNBBase.js} +56 -39
- package/dist/components/LDLoadingDots/LDLoadingDots.d.ts +3 -1
- package/dist/components/LDLoadingDots/LDLoadingDots.d.ts.map +1 -1
- package/dist/components/LDLoadingDots/LDLoadingDots.js +3 -3
- package/dist/components/LDMenuBar/LDMenuBar.d.ts.map +1 -1
- package/dist/components/LDMenuBar/LDMenuBar.js +6 -6
- package/dist/components/LDMenuBar/MenuBarBase.d.ts.map +1 -1
- package/dist/components/LDModal/LDModal.d.ts +4 -2
- package/dist/components/LDModal/LDModal.d.ts.map +1 -1
- package/dist/components/LDModal/LDModal.js +1 -1
- package/dist/components/LDModal/LDModalView.d.ts +4 -2
- package/dist/components/LDModal/LDModalView.d.ts.map +1 -1
- package/dist/components/LDModal/LDModalView.js +7 -7
- package/dist/components/LDModal/ModalBase.d.ts.map +1 -1
- package/dist/components/LDModal/ModalBase.js +2 -2
- package/dist/components/LDNotification/LDNotification.d.ts +4 -2
- package/dist/components/LDNotification/LDNotification.d.ts.map +1 -1
- package/dist/components/LDNotification/LDNotification.js +2 -2
- package/dist/components/LDNotification/NotificationBase.d.ts.map +1 -1
- package/dist/components/LDOTPInput/LDFormOTPInput.d.ts +1 -1
- package/dist/components/LDOTPInput/LDFormOTPInput.d.ts.map +1 -1
- package/dist/components/LDOTPInput/LDFormOTPInput.js +2 -2
- package/dist/components/LDOTPInput/LDOTPInput.d.ts +29 -16
- package/dist/components/LDOTPInput/LDOTPInput.d.ts.map +1 -1
- package/dist/components/LDOTPInput/LDOTPInput.js +26 -20
- package/dist/components/LDOTPInput/OTPInputBase.d.ts +12 -12
- package/dist/components/LDOTPInput/OTPInputBase.d.ts.map +1 -1
- package/dist/components/LDOTPInput/OTPInputBase.js +11 -9
- package/dist/components/LDPagination/LDPagination.d.ts.map +1 -1
- package/dist/components/LDPagination/LDPagination.js +1 -1
- package/dist/components/LDPagination/PaginationBase.d.ts +1 -1
- package/dist/components/LDPagination/PaginationBase.d.ts.map +1 -1
- package/dist/components/LDPagination/PaginationBase.js +5 -5
- package/dist/components/LDPopover/LDPopover.d.ts +3 -1
- package/dist/components/LDPopover/LDPopover.d.ts.map +1 -1
- package/dist/components/LDPopover/LDPopover.js +5 -5
- package/dist/components/LDPopover/PopoverBase.d.ts +2 -1
- package/dist/components/LDPopover/PopoverBase.d.ts.map +1 -1
- package/dist/components/LDPopover/PopoverBase.js +2 -2
- package/dist/components/LDProgressBar/LDProgressBar.d.ts.map +1 -1
- package/dist/components/LDProgressBar/LDProgressBar.js +2 -2
- package/dist/components/LDProgressBar/ProgressBarBase.d.ts.map +1 -1
- package/dist/components/LDProgressBar/ProgressBarBase.js +1 -1
- package/dist/components/LDRadio/LDFormRadioGroup.d.ts +1 -1
- package/dist/components/LDRadio/LDFormRadioGroup.d.ts.map +1 -1
- package/dist/components/LDRadio/LDFormRadioGroup.js +2 -2
- package/dist/components/LDRadio/LDRadio.d.ts +3 -1
- package/dist/components/LDRadio/LDRadio.d.ts.map +1 -1
- package/dist/components/LDRadio/LDRadio.js +7 -7
- package/dist/components/LDRadio/LDRadioGroup.d.ts +1 -1
- package/dist/components/LDRadio/LDRadioGroup.d.ts.map +1 -1
- package/dist/components/LDRadio/LDRadioGroup.js +1 -1
- package/dist/components/LDRadio/RadioBase.d.ts.map +1 -1
- package/dist/components/LDRadio/RadioBase.js +1 -1
- package/dist/components/LDRate/LDFormRate.d.ts +1 -1
- package/dist/components/LDRate/LDFormRate.d.ts.map +1 -1
- package/dist/components/LDRate/LDRate.d.ts +1 -1
- package/dist/components/LDRate/LDRate.d.ts.map +1 -1
- package/dist/components/LDRate/LDRate.js +6 -6
- package/dist/components/LDScrollArea/LDScrollArea.d.ts.map +1 -1
- package/dist/components/LDScrollArea/LDScrollArea.js +2 -2
- package/dist/components/LDSectionNav/LDSectionNav.js +1 -1
- package/dist/components/LDSectionNav/SectionNavBase.d.ts.map +1 -1
- package/dist/components/LDSectionNav/SectionNavBase.js +1 -1
- package/dist/components/LDSegmented/LDSegmented.d.ts +5 -3
- package/dist/components/LDSegmented/LDSegmented.d.ts.map +1 -1
- package/dist/components/LDSegmented/LDSegmented.js +13 -10
- package/dist/components/LDSegmented/SegmentedBase.d.ts.map +1 -1
- package/dist/components/LDSegmented/SegmentedBase.js +1 -1
- package/dist/components/LDSelect/LDFormMultiSelect.d.ts +1 -1
- package/dist/components/LDSelect/LDFormMultiSelect.d.ts.map +1 -1
- package/dist/components/LDSelect/LDFormMultiSelect.js +3 -3
- package/dist/components/LDSelect/LDFormSelect.d.ts +1 -1
- package/dist/components/LDSelect/LDFormSelect.d.ts.map +1 -1
- package/dist/components/LDSelect/LDFormSelect.js +3 -3
- package/dist/components/LDSelect/LDMultiSelect.d.ts +6 -4
- package/dist/components/LDSelect/LDMultiSelect.d.ts.map +1 -1
- package/dist/components/LDSelect/LDMultiSelect.js +13 -13
- package/dist/components/LDSelect/LDSelect.d.ts +39 -7
- package/dist/components/LDSelect/LDSelect.d.ts.map +1 -1
- package/dist/components/LDSelect/LDSelect.js +56 -19
- package/dist/components/LDSelect/SelectBase.d.ts +25 -28
- package/dist/components/LDSelect/SelectBase.d.ts.map +1 -1
- package/dist/components/LDSelect/SelectBase.js +65 -24
- package/dist/components/LDSkeleton/LDSkeleton.d.ts.map +1 -1
- package/dist/components/LDSkeleton/LDSkeleton.js +1 -1
- package/dist/components/LDSlider/LDSlider.d.ts +31 -2
- package/dist/components/LDSlider/LDSlider.d.ts.map +1 -1
- package/dist/components/LDSlider/LDSlider.js +62 -184
- package/dist/components/LDSlider/SliderBase.d.ts +44 -0
- package/dist/components/LDSlider/SliderBase.d.ts.map +1 -0
- package/dist/components/LDSlider/SliderBase.js +145 -0
- package/dist/components/LDSpinner/LDSpinner.d.ts +1 -6
- package/dist/components/LDSpinner/LDSpinner.d.ts.map +1 -1
- package/dist/components/LDSpinner/LDSpinner.js +4 -12
- package/dist/components/LDTable/{TableField.d.ts → HeadlessTable.d.ts} +18 -23
- package/dist/components/LDTable/HeadlessTable.d.ts.map +1 -0
- package/dist/components/LDTable/{TableField.js → HeadlessTable.js} +61 -12
- package/dist/components/LDTable/LDCollapsibleTanstackTable.d.ts +4 -5
- package/dist/components/LDTable/LDCollapsibleTanstackTable.d.ts.map +1 -1
- package/dist/components/LDTable/LDCollapsibleTanstackTable.js +17 -27
- package/dist/components/LDTable/LDTable.d.ts +4 -5
- package/dist/components/LDTable/LDTable.d.ts.map +1 -1
- package/dist/components/LDTable/LDTable.js +7 -7
- package/dist/components/LDTable/LDTanstackTable.d.ts +4 -5
- package/dist/components/LDTable/LDTanstackTable.d.ts.map +1 -1
- package/dist/components/LDTable/LDTanstackTable.js +11 -18
- package/dist/components/LDTable/TableBase.d.ts +1 -1
- package/dist/components/LDTable/TableBase.d.ts.map +1 -1
- package/dist/components/LDTabs/LDTabs.d.ts +1 -1
- package/dist/components/LDTabs/LDTabs.d.ts.map +1 -1
- package/dist/components/LDTabs/LDTabs.js +15 -15
- package/dist/components/LDTabs/TabsBase.d.ts +1 -1
- package/dist/components/LDTabs/TabsBase.d.ts.map +1 -1
- package/dist/components/LDTeamHistory/LDTeamHistory.js +3 -3
- package/dist/components/LDTeamHistory/TeamHistoryBase.d.ts.map +1 -1
- package/dist/components/LDTeamHistory/TeamHistoryBase.js +19 -10
- package/dist/components/LDTextarea/LDFormTextarea.d.ts +1 -1
- package/dist/components/LDTextarea/LDFormTextarea.d.ts.map +1 -1
- package/dist/components/LDTextarea/LDFormTextarea.js +3 -3
- package/dist/components/LDTextarea/LDTextarea.d.ts +5 -3
- package/dist/components/LDTextarea/LDTextarea.d.ts.map +1 -1
- package/dist/components/LDTextarea/LDTextarea.js +7 -5
- package/dist/components/LDTimePicker/LDFormTimePicker.d.ts +1 -1
- package/dist/components/LDTimePicker/LDFormTimePicker.d.ts.map +1 -1
- package/dist/components/LDTimePicker/LDFormTimePicker.js +3 -3
- package/dist/components/LDTimePicker/LDTimePicker.d.ts.map +1 -1
- package/dist/components/LDTimePicker/LDTimePicker.js +19 -20
- package/dist/components/LDToast/LDToast.js +2 -2
- package/dist/components/LDToggleButton/LDFormToggleButton.d.ts +1 -1
- package/dist/components/LDToggleButton/LDFormToggleButton.d.ts.map +1 -1
- package/dist/components/LDToggleButton/LDFormToggleButton.js +2 -2
- package/dist/components/LDToggleButton/LDToggleButton.d.ts +3 -1
- package/dist/components/LDToggleButton/LDToggleButton.d.ts.map +1 -1
- package/dist/components/LDToggleButton/LDToggleButton.js +1 -1
- package/dist/components/LDToggleButton/ToggleButtonBase.d.ts +1 -3
- package/dist/components/LDToggleButton/ToggleButtonBase.d.ts.map +1 -1
- package/dist/components/LDToggleButton/ToggleButtonBase.js +5 -14
- package/dist/components/LDTooltip/LDTooltip.d.ts.map +1 -1
- package/dist/components/LDTooltip/LDTooltip.js +2 -2
- package/dist/components/LDTooltip/TooltipBase.d.ts.map +1 -1
- package/dist/components/LDTooltip/TooltipBase.js +1 -1
- package/dist/components/RenderIcon/RenderIcon.d.ts +16 -0
- package/dist/components/RenderIcon/RenderIcon.d.ts.map +1 -0
- package/dist/components/RenderIcon/RenderIcon.js +27 -0
- package/dist/components/RenderIcon/RenderIcon.test.d.ts +2 -0
- package/dist/components/RenderIcon/RenderIcon.test.d.ts.map +1 -0
- package/dist/components/RenderIcon/RenderIcon.test.js +38 -0
- package/dist/components/Show/Show.d.ts +57 -0
- package/dist/components/Show/Show.d.ts.map +1 -0
- package/dist/components/Show/Show.js +15 -0
- package/dist/constants/file.d.ts +2 -0
- package/dist/constants/file.d.ts.map +1 -1
- package/dist/constants/file.js +2 -0
- package/dist/index.css +533 -388
- package/dist/index.d.ts +17 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -13
- package/dist/types/common.d.ts +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/cn.js +10 -0
- package/dist/utils/date.d.ts +4 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +7 -0
- package/dist/utils/file.d.ts +1 -1
- package/dist/utils/file.d.ts.map +1 -1
- package/dist/utils/file.js +6 -4
- package/dist/utils/tv.d.ts +9 -4
- package/dist/utils/tv.d.ts.map +1 -1
- package/dist/utils/tv.js +8 -3
- package/dist/utils/useIsomorphicLayoutEffect.d.ts.map +1 -0
- package/dist/utils/useIsomorphicLayoutEffect.js +7 -0
- package/package.json +37 -30
- package/src/styles/carousel.css +11 -0
- package/src/styles/color.css +5 -5
- package/src/styles/components/bread-crumb.css +0 -30
- package/src/styles/components/icon.css +23 -25
- package/src/styles/components/input.css +0 -25
- package/src/styles/motion.css +0 -27
- package/src/styles/slider.css +14 -8
- package/dist/components/LDButton/ButtonSpinner.d.ts +0 -8
- package/dist/components/LDButton/ButtonSpinner.d.ts.map +0 -1
- package/dist/components/LDButton/ButtonSpinner.js +0 -15
- package/dist/components/LDLNB/LDLNBBase.d.ts.map +0 -1
- package/dist/components/LDSegmented/useIsomorphicLayoutEffect.d.ts.map +0 -1
- package/dist/components/LDSegmented/useIsomorphicLayoutEffect.js +0 -5
- package/dist/components/LDTable/TableField.d.ts.map +0 -1
- package/dist/utils/renderIcon.d.ts +0 -3
- package/dist/utils/renderIcon.d.ts.map +0 -1
- package/dist/utils/renderIcon.js +0 -12
- /package/dist/{components/LDSegmented → utils}/useIsomorphicLayoutEffect.d.ts +0 -0
package/README.md
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@loword/loword-design-system)
|
|
4
4
|
[](./LICENSE)
|
|
5
5
|
|
|
6
|
-
로워드 디자인 시스템 — React 19 컴포넌트
|
|
6
|
+
로워드 디자인 시스템 — React 19 컴포넌트 패키지입니다. Tailwind CSS v4를 쓰고 NPM(ESM)으로 배포합니다.
|
|
7
7
|
|
|
8
|
-
>
|
|
8
|
+
> 공개 컴포넌트는 `LD` 접두사를 붙입니다 (예: `LDButton`, `LDModal`, `LDInput`).
|
|
9
9
|
|
|
10
10
|
## 요구사항
|
|
11
11
|
|
|
12
12
|
- **React 19** / **React DOM 19** (peer dependency)
|
|
13
|
-
- **Tailwind CSS v4** —
|
|
14
|
-
- **Next.js 15** —
|
|
13
|
+
- **Tailwind CSS v4** — `theme.css` 경로로 쓸 때만 필요합니다. 완성된 `styles.css`만 쓴다면 없어도 됩니다.
|
|
14
|
+
- **Next.js 15** (optional) — `LDTanstackTable`·`LDCollapsibleTanstackTable`·`TableField`는 `next/navigation`을 무조건 호출하므로 Next 환경에서만 돕니다.
|
|
15
15
|
|
|
16
16
|
## 설치
|
|
17
17
|
|
|
@@ -21,16 +21,23 @@ npm install @loword/loword-design-system
|
|
|
21
21
|
pnpm add @loword/loword-design-system
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Editor·Carousel·Drawer·Table·Select·DatePicker 같은 일부 컴포넌트는 뒤에 깔린 라이브러리를 **optional peer dependency**로 둡니다. 해당 컴포넌트를 쓸 때만 같이 설치하면 됩니다 — `@tiptap/*`(Editor), `embla-carousel-react`(Carousel), `vaul`(Drawer), `@radix-ui/*`(Accordion/Modal/Popover/Tabs/Tooltip), `@tanstack/react-table`(Table), `react-day-picker`·`dayjs`(DatePicker), `react-hot-toast`(Toast).
|
|
25
25
|
|
|
26
26
|
## 설정
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
스타일시트는 앱 진입점에서 **한 번**만 import 합니다.
|
|
29
29
|
|
|
30
30
|
```ts
|
|
31
31
|
import '@loword/loword-design-system/styles.css';
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
`styles.css`는 컴파일이 끝난 CSS라 이것만으로 컴포넌트가 제대로 보입니다. 반면 자기 코드에서 `display40`, `bg-mono600` 같은 디자인 시스템 클래스를 직접 쓰려면 raw `@theme`/`@utility` 진입점인 `theme.css`를 앱의 Tailwind 엔트리에 따로 `@import` 해야 합니다.
|
|
35
|
+
|
|
36
|
+
```css
|
|
37
|
+
@import 'tailwindcss';
|
|
38
|
+
@import '@loword/loword-design-system/theme.css';
|
|
39
|
+
```
|
|
40
|
+
|
|
34
41
|
## 사용
|
|
35
42
|
|
|
36
43
|
```tsx
|
|
@@ -48,12 +55,14 @@ export default function Example() {
|
|
|
48
55
|
명령형 API 예시:
|
|
49
56
|
|
|
50
57
|
```tsx
|
|
51
|
-
import {
|
|
58
|
+
import { LDModal, LDToast } from '@loword/loword-design-system';
|
|
52
59
|
|
|
53
|
-
const result = await
|
|
54
|
-
|
|
60
|
+
const result = await LDModal({ title: '삭제할까요?' /* ... */ });
|
|
61
|
+
LDToast.success('저장되었습니다');
|
|
55
62
|
```
|
|
56
63
|
|
|
64
|
+
> `openModal`은 `LDModal`의 하위호환 별칭(`@deprecated`)입니다. 새로 쓰는 코드에서는 `LDModal`을 씁니다.
|
|
65
|
+
|
|
57
66
|
### import 방식
|
|
58
67
|
|
|
59
68
|
```ts
|
|
@@ -66,19 +75,21 @@ import LDButton from '@loword/loword-design-system/components/LDButton/LDButton'
|
|
|
66
75
|
|
|
67
76
|
## 컴포넌트
|
|
68
77
|
|
|
69
|
-
**기본/입력**: `LDButton` · `LDInput` · `LDCheckbox` · `LDCheckboxGroup` · `LDRadio` · `LDRadioGroup` · `LDSelect` · `LDMultiSelect` · `LDToggleButton` · `LDSlider` · `LDOTPInput` · `
|
|
78
|
+
**기본/입력**: `LDButton` · `LDInput` · `LDTextarea` · `LDCheckbox` · `LDCheckboxGroup` · `LDRadio` · `LDRadioGroup` · `LDSelect` · `LDMultiSelect` · `LDAutoComplete` · `LDToggleButton` · `LDSegmented` · `LDSlider` · `LDRate` · `LDOTPInput` · `LDFileUpload` · `LDFileUploadList` · `LDImageUpload` · `LDImageUploadList` · `LDDaumPostButton`
|
|
70
79
|
|
|
71
80
|
**날짜/시간**: `LDCalendar` · `LDDataCalendar` · `LDDatePicker` · `LDDateRangePicker` · `LDTimePicker`
|
|
72
81
|
|
|
73
|
-
**레이아웃/표시**: `LDBadge` · `LDAvatar` · `LDDivider` · `LDCallout` · `LDSkeleton` · `LDSpinner` · `LDLoadingDots` · `
|
|
82
|
+
**레이아웃/표시**: `LDBadge` · `LDAvatar` · `LDDivider` · `LDCallout` · `LDEmpty` · `LDSkeleton` · `LDSpinner` · `LDLoadingDots` · `LDProgressBar` · `LDScrollArea` · `LDAccordion` · `LDTeamHistory`
|
|
83
|
+
|
|
84
|
+
**내비게이션**: `LDBreadCrumb` · `LDMenuBar` · `LDTabs` · `LDSectionNav` · `LDPagination` · `LDLNB` · `LDLNBBase`
|
|
74
85
|
|
|
75
|
-
|
|
86
|
+
**오버레이/피드백**: `LDModal` · `LDModalView` · `LDDrawer` · `LDPopover` · `LDTooltip` · `LDToast` · `LDToaster` · `LDNotification`
|
|
76
87
|
|
|
77
|
-
|
|
88
|
+
**콘텐츠/데이터**: `LDEditor` · `LDViewer` · `LDCarousel` · `LDChart` · `LDTable` · `LDTanstackTable` · `LDCollapsibleTanstackTable` · `TableField`
|
|
78
89
|
|
|
79
|
-
**폼
|
|
90
|
+
**폼 연동**: `LDForm` · `LDNativeForm` · `LDFormField` · `LDFormErrorMessage` · `LDFormInput` · `LDFormTextarea` · `LDFormSelect` · `LDFormMultiSelect` · `LDFormCheckbox` · `LDFormCheckboxGroup` · `LDFormRadioGroup` · `LDFormDatePicker` · `LDFormDateRangePicker` · `LDFormTimePicker` · `LDFormToggleButton` · `LDFormOTPInput` · `LDFormRate`
|
|
80
91
|
|
|
81
|
-
>
|
|
92
|
+
> barrel의 값 export는 `TableField`(TanStack Table 연동 래퍼) · `openModal`(`LDModal`의 하위호환 별칭) · `TextareaContent` 셋 말고는 전부 `LD` 접두사입니다. 타입 export에는 예외가 조금 더 있습니다.
|
|
82
93
|
|
|
83
94
|
## 빠른 시작 (개발)
|
|
84
95
|
|
|
@@ -87,17 +98,22 @@ pnpm install # 의존성 설치
|
|
|
87
98
|
pnpm storybook # Storybook 개발 서버 (port 6006)
|
|
88
99
|
pnpm build # 프로덕션 빌드
|
|
89
100
|
pnpm check-types # 타입 체크
|
|
90
|
-
pnpm lint #
|
|
101
|
+
pnpm lint # ESLint (--fix 포함, src + .storybook)
|
|
102
|
+
pnpm prettier # Prettier
|
|
103
|
+
pnpm test # vitest (utils 유닛 + 스토리 브라우저 실행 + a11y)
|
|
91
104
|
```
|
|
92
105
|
|
|
93
106
|
## 문서
|
|
94
107
|
|
|
95
|
-
-
|
|
108
|
+
- **아키텍처와 상세 가이드**: [docs/architecture.md](./docs/architecture.md)
|
|
96
109
|
- 3-Layer 구조 (Base → Custom → Function)
|
|
97
|
-
- 컴포넌트
|
|
98
|
-
- 스타일 체계 (디자인 토큰, `cn()`)
|
|
99
|
-
-
|
|
100
|
-
-
|
|
110
|
+
- 컴포넌트 목록과 특수 구조
|
|
111
|
+
- 스타일 체계 (디자인 토큰, `cn()`, `tv()`)
|
|
112
|
+
- 타입 · 테스트 · 린트/포매팅 체계
|
|
113
|
+
- Storybook 스타일 제어와 stories 생성 방법
|
|
114
|
+
- **프리셋 스타일 작성 규칙**: [docs/style-conventions.md](./docs/style-conventions.md)
|
|
115
|
+
- **CSS 캐스케이드 레이어**: [docs/css-layers.md](./docs/css-layers.md) — 컴포넌트 스타일이 왜 이기고 지는지, className override가 안 먹을 때의 진단 순서
|
|
116
|
+
- **타입 컨벤션**: [docs/type-conventions.md](./docs/type-conventions.md)
|
|
101
117
|
- **변경 이력**: [docs/CHANGELOG.md](./docs/CHANGELOG.md)
|
|
102
118
|
|
|
103
119
|
## 라이선스
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDAccordion/AccordionBase.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AccordionBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDAccordion/AccordionBase.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,KAAK,SAAS,GACV;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAeN,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAeD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAaD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAUD,eAAO,MAAM,aAAa;8CA9DuB,SAAS;qDAoBF,SAAS;uCAkBvB,YAAY;uCAgBZ,YAAY;CAarD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as RadixAccordion from '@radix-ui/react-accordion';
|
|
3
|
-
import cn from '../../utils/cn.js';
|
|
4
3
|
const Root = ({ className, children, ...props }) => {
|
|
5
4
|
return (
|
|
6
5
|
// Radix의 single/multiple 판별 유니온을 그대로 위임한다.
|
|
7
|
-
_jsx(RadixAccordion.Root, { ...props, className:
|
|
6
|
+
_jsx(RadixAccordion.Root, { ...props, className: className, children: children }));
|
|
8
7
|
};
|
|
9
8
|
const Item = ({ value, disabled, className, children }) => {
|
|
10
9
|
return (_jsx(RadixAccordion.Item, { value: value, disabled: disabled, className: className, children: children }));
|
|
11
10
|
};
|
|
12
11
|
const Trigger = ({ className, children }) => {
|
|
13
|
-
return (_jsx(RadixAccordion.Header, {
|
|
12
|
+
return (_jsx(RadixAccordion.Header, { children: _jsx(RadixAccordion.Trigger, { className: className, children: children }) }));
|
|
14
13
|
};
|
|
15
14
|
const Content = ({ className, children }) => {
|
|
16
|
-
return (_jsx(RadixAccordion.Content, { className:
|
|
15
|
+
return (_jsx(RadixAccordion.Content, { className: className, children: children }));
|
|
17
16
|
};
|
|
18
17
|
export const AccordionBase = {
|
|
19
18
|
Root,
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
1
|
+
import { type ComponentProps, type ReactNode } from 'react';
|
|
2
|
+
import AccordionBase from '../../components/LDAccordion/AccordionBase.js';
|
|
3
|
+
import type { Size } from '../../types/common.js';
|
|
4
|
+
export type AccordionFontSize = Size;
|
|
2
5
|
/** 아코디언 개별 항목 */
|
|
3
6
|
export interface LDAccordionItem {
|
|
4
7
|
/** 항목을 구분하는 고유 값 */
|
|
@@ -23,9 +26,37 @@ export interface LDAccordionProps {
|
|
|
23
26
|
onValueChange?: (value: string | string[]) => void;
|
|
24
27
|
/** single일 때 열린 항목을 다시 닫아 전체 닫힘 허용. 기본 true */
|
|
25
28
|
collapsible?: boolean;
|
|
29
|
+
/** 제목/본문 글자 크기 프리셋. 기본 large(18/16) */
|
|
30
|
+
fontSize?: AccordionFontSize;
|
|
31
|
+
/** 닫힌 항목에 어두운 배경을 적용. 기본 false */
|
|
32
|
+
isDark?: boolean;
|
|
26
33
|
/** 루트 컨테이너 className */
|
|
27
34
|
className?: string;
|
|
28
35
|
}
|
|
29
|
-
|
|
36
|
+
export type LDAccordionRootProps = ComponentProps<typeof AccordionBase.Root>;
|
|
37
|
+
export interface LDAccordionItemProps extends ComponentProps<typeof AccordionBase.Item> {
|
|
38
|
+
/** 어두운 배경을 적용. Trigger에도 같은 값을 넘겨야 글자색이 맞습니다 */
|
|
39
|
+
isDark?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface LDAccordionTriggerProps extends ComponentProps<typeof AccordionBase.Trigger> {
|
|
42
|
+
/** 제목 글자 크기 프리셋. 기본 large */
|
|
43
|
+
fontSize?: AccordionFontSize;
|
|
44
|
+
/** 어두운 배경 위에 놓일 때의 글자색을 적용 */
|
|
45
|
+
isDark?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface LDAccordionContentProps extends ComponentProps<typeof AccordionBase.Content> {
|
|
48
|
+
/** 본문 글자 크기 프리셋. 기본 large */
|
|
49
|
+
fontSize?: AccordionFontSize;
|
|
50
|
+
}
|
|
51
|
+
export type LDAccordionIndicatorProps = Omit<ComponentProps<'span'>, 'aria-hidden' | 'children'>;
|
|
52
|
+
/** items로 일반적인 아코디언 구성을 제공하는 Styled Single 컴포넌트입니다. */
|
|
53
|
+
declare const LDAccordion: {
|
|
54
|
+
({ items, type, defaultValue, value, onValueChange, collapsible, fontSize, isDark, className, }: LDAccordionProps): import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
Root: ({ className, ...props }: LDAccordionRootProps) => import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
Item: ({ isDark, className, ...props }: LDAccordionItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
Trigger: ({ fontSize, isDark, className, ...props }: LDAccordionTriggerProps) => import("react/jsx-runtime").JSX.Element;
|
|
58
|
+
Indicator: ({ className, ...props }: LDAccordionIndicatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
59
|
+
Content: ({ fontSize, className, children, ...props }: LDAccordionContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
};
|
|
30
61
|
export default LDAccordion;
|
|
31
62
|
//# sourceMappingURL=LDAccordion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDAccordion.d.ts","sourceRoot":"","sources":["../../../src/components/LDAccordion/LDAccordion.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LDAccordion.d.ts","sourceRoot":"","sources":["../../../src/components/LDAccordion/LDAccordion.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,aAAa,MAAM,wCAAwC,CAAC;AAEnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAI3C,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAErC,iBAAiB;AACjB,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,mBAAmB;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,iBAAiB;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7E,MAAM,WAAW,oBAAqB,SAAQ,cAAc,CAC1D,OAAO,aAAa,CAAC,IAAI,CAC1B;IACC,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,uBAAwB,SAAQ,cAAc,CAC7D,OAAO,aAAa,CAAC,OAAO,CAC7B;IACC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,uBAAwB,SAAQ,cAAc,CAC7D,OAAO,aAAa,CAAC,OAAO,CAC7B;IACC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AACD,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,cAAc,CAAC,MAAM,CAAC,EACtB,aAAa,GAAG,UAAU,CAC3B,CAAC;AA0HF,uDAAuD;AACvD,QAAA,MAAM,WAAW;qGAUd,gBAAgB;oCAzEoB,oBAAoB;4CAYxD,oBAAoB;yDAapB,uBAAuB;yCAQkB,yBAAyB;2DAoBlE,uBAAuB;CAqDzB,CAAC;AAQF,eAAe,WAAW,CAAC"}
|
|
@@ -1,8 +1,66 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { ChevronDown
|
|
3
|
-
import AccordionBase from '
|
|
2
|
+
import { ChevronDown } from 'lucide-react';
|
|
3
|
+
import AccordionBase from '../../components/LDAccordion/AccordionBase.js';
|
|
4
|
+
import RenderIcon from '../../components/RenderIcon/RenderIcon.js';
|
|
4
5
|
import cn from '../../utils/cn.js';
|
|
5
|
-
|
|
6
|
+
import tv from '../../utils/tv.js';
|
|
7
|
+
// ── 스타일 프리셋 ──
|
|
8
|
+
const itemVariants = tv({
|
|
9
|
+
base: 'rounded-[5px] border border-solid transition-colors duration-300 data-disabled:opacity-40 data-[state=open]:border-transparent data-[state=open]:bg-neutral50',
|
|
10
|
+
variants: {
|
|
11
|
+
isDark: {
|
|
12
|
+
true: 'border-neutral900 bg-neutral900 hover:bg-neutral800',
|
|
13
|
+
false: 'border-neutral50 bg-transparent hover:bg-neutral50',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
// flex 배치와 cursor는 Base에서 Styled로 옮겨온 것이라 여기서 유지한다.
|
|
18
|
+
// select-none은 제목을 드래그로 긁을 때 mouseup이 클릭으로 이어져 토글되는 것을 막는다.
|
|
19
|
+
const triggerVariants = tv({
|
|
20
|
+
base: 'group flex w-full cursor-pointer items-center justify-between p-4 text-left bold select-none disabled:cursor-not-allowed',
|
|
21
|
+
variants: {
|
|
22
|
+
fontSize: {
|
|
23
|
+
'2xsmall': 'display10',
|
|
24
|
+
xsmall: 'display12',
|
|
25
|
+
small: 'display14',
|
|
26
|
+
medium: 'display16',
|
|
27
|
+
large: 'display18',
|
|
28
|
+
xlarge: 'display20',
|
|
29
|
+
'2xlarge': 'display24',
|
|
30
|
+
},
|
|
31
|
+
isDark: {
|
|
32
|
+
true: 'text-neutral500 data-[state=open]:text-neutral900',
|
|
33
|
+
false: 'text-neutral900',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
// overflow-hidden과 여닫기 애니메이션도 Base에서 옮겨온 것이라 여기서 유지한다.
|
|
38
|
+
const contentVariants = tv({
|
|
39
|
+
base: 'overflow-hidden text-neutral900 data-[state=closed]:accordion-up data-[state=open]:accordion-down',
|
|
40
|
+
variants: {
|
|
41
|
+
fontSize: {
|
|
42
|
+
'2xsmall': 'display10',
|
|
43
|
+
xsmall: 'display10',
|
|
44
|
+
small: 'display12',
|
|
45
|
+
medium: 'display14',
|
|
46
|
+
large: 'display16',
|
|
47
|
+
xlarge: 'display18',
|
|
48
|
+
'2xlarge': 'display20',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
/** 열림 상태와 단일 또는 다중 선택 방식을 관리하는 루트입니다. */
|
|
53
|
+
const Root = ({ className, ...props }) => (_jsx(AccordionBase.Root, { className: cn('flex w-full flex-col gap-2.5', className), ...props }));
|
|
54
|
+
/** 하나의 접이식 항목을 구성합니다. */
|
|
55
|
+
const Item = ({ isDark = false, className, ...props }) => (_jsx(AccordionBase.Item, { className: itemVariants({ isDark, className }), ...props }));
|
|
56
|
+
/** 항목의 열림 상태를 변경하는 헤더 버튼입니다. */
|
|
57
|
+
const Trigger = ({ fontSize = 'large', isDark = false, className, ...props }) => (_jsx(AccordionBase.Trigger, { className: triggerVariants({ fontSize, isDark, className }), ...props }));
|
|
58
|
+
/** 항목의 열림 상태를 나타내는 기본 화살표입니다. */
|
|
59
|
+
const Indicator = ({ className, ...props }) => (_jsx("span", { className: cn('relative shrink-0', className), ...props, "aria-hidden": "true", children: _jsx(RenderIcon, { className: cn('text-neutral500', 'group-data-[state=open]:rotate-180'), children: _jsx(ChevronDown, {}) }) }));
|
|
60
|
+
/** 항목이 열렸을 때 표시되는 콘텐츠 영역입니다. */
|
|
61
|
+
const Content = ({ fontSize = 'large', className, children, ...props }) => (_jsx(AccordionBase.Content, { className: contentVariants({ fontSize, className }), ...props, children: children && _jsx("div", { className: "px-4 pb-4", children: children }) }));
|
|
62
|
+
/** items로 일반적인 아코디언 구성을 제공하는 Styled Single 컴포넌트입니다. */
|
|
63
|
+
const LDAccordion = ({ items, type = 'single', defaultValue, value, onValueChange, collapsible = true, fontSize = 'large', isDark = false, className, }) => {
|
|
6
64
|
// single/multiple 유니온을 Base로 넘기기 위해 공통 props를 한 번에 캐스팅한다.
|
|
7
65
|
const rootProps = {
|
|
8
66
|
type,
|
|
@@ -11,11 +69,16 @@ const LDAccordion = ({ items, type = 'single', defaultValue, value, onValueChang
|
|
|
11
69
|
onValueChange,
|
|
12
70
|
...(type === 'single' ? { collapsible } : {}),
|
|
13
71
|
};
|
|
14
|
-
return (_jsx(
|
|
15
|
-
// content가 없으면(nullish/false) 펼칠 게 없으므로 chevron
|
|
16
|
-
// (
|
|
72
|
+
return (_jsx(Root, { ...rootProps, className: className, children: items.map((item) => {
|
|
73
|
+
// content가 없으면(nullish/false) 펼칠 게 없으므로 chevron을 렌더하지 않는다.
|
|
74
|
+
// (Content 엘리먼트 자체는 aria-controls 대상이라 항상 렌더한다)
|
|
17
75
|
const hasContent = item.content != null && item.content !== false;
|
|
18
|
-
return (_jsxs(
|
|
76
|
+
return (_jsxs(Item, { value: item.value, disabled: item.disabled, isDark: isDark, children: [_jsxs(Trigger, { fontSize: fontSize, isDark: isDark, children: [item.title, hasContent && _jsx(Indicator, {})] }), _jsx(Content, { fontSize: fontSize, children: item.content })] }, item.value));
|
|
19
77
|
}) }));
|
|
20
78
|
};
|
|
79
|
+
LDAccordion.Root = Root;
|
|
80
|
+
LDAccordion.Item = Item;
|
|
81
|
+
LDAccordion.Trigger = Trigger;
|
|
82
|
+
LDAccordion.Indicator = Indicator;
|
|
83
|
+
LDAccordion.Content = Content;
|
|
21
84
|
export default LDAccordion;
|
|
@@ -1,36 +1,50 @@
|
|
|
1
|
-
import { type ReactNode, type Ref } from 'react';
|
|
1
|
+
import { type ComponentProps, type Dispatch, type KeyboardEvent, type ReactNode, type Ref, type RefObject, type SetStateAction } from 'react';
|
|
2
|
+
import InputBase from '../../components/LDInput/InputBase.js';
|
|
2
3
|
export interface IAutoCompleteItem {
|
|
3
4
|
id: string | number;
|
|
4
5
|
}
|
|
5
|
-
|
|
6
|
+
export declare const getItemValue: (item: IAutoCompleteItem, field: string) => unknown;
|
|
7
|
+
interface IAutoCompleteContextValue {
|
|
8
|
+
query: string;
|
|
9
|
+
isOpen: boolean;
|
|
10
|
+
isLoading: boolean;
|
|
11
|
+
options: IAutoCompleteItem[];
|
|
12
|
+
focusedIdx: number;
|
|
13
|
+
displayField: string;
|
|
14
|
+
subFields?: string[];
|
|
15
|
+
listId: string;
|
|
16
|
+
getOptionId: (index: number) => string;
|
|
17
|
+
handleChange: (text: string) => void;
|
|
18
|
+
handleKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;
|
|
19
|
+
handleSelect: (item: IAutoCompleteItem) => void;
|
|
20
|
+
setIsOpen: (open: boolean) => void;
|
|
21
|
+
setFocusedIdx: Dispatch<SetStateAction<number>>;
|
|
22
|
+
setIsComposing: (composing: boolean) => void;
|
|
23
|
+
itemRefs: RefObject<(HTMLLIElement | null)[]>;
|
|
24
|
+
}
|
|
25
|
+
/** Root가 제공하는 검색 상태와 핸들러를 하위 컴포넌트에서 읽습니다. */
|
|
26
|
+
export declare const useAutoCompleteContext: () => IAutoCompleteContextValue;
|
|
27
|
+
export interface AutoCompleteBaseRootProps<T extends IAutoCompleteItem> extends Omit<ComponentProps<'div'>, 'onChange'> {
|
|
6
28
|
displayField: Extract<keyof T, string>;
|
|
7
29
|
subFields?: Extract<keyof T, string>[];
|
|
8
30
|
onSelectedItem?: (item: T | null) => void;
|
|
9
31
|
onChange: (query: string) => Promise<T[] | undefined>;
|
|
10
|
-
className?: string;
|
|
11
|
-
children?: ReactNode;
|
|
12
32
|
ref?: Ref<HTMLDivElement>;
|
|
13
33
|
}
|
|
14
|
-
type
|
|
15
|
-
interface
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
className?: string;
|
|
19
|
-
}
|
|
20
|
-
interface ListProps {
|
|
21
|
-
size?: InputSize;
|
|
22
|
-
className?: string;
|
|
23
|
-
emptyMessage?: ReactNode;
|
|
34
|
+
export type AutoCompleteBaseInputProps = ComponentProps<typeof InputBase.Field>;
|
|
35
|
+
export interface AutoCompleteBaseListProps extends Omit<ComponentProps<'ul'>, 'children'> {
|
|
36
|
+
/** 옵션 하나를 그리는 방법입니다. Styled 레이어가 기본 Item을 넣어줍니다. */
|
|
37
|
+
renderItem: (item: IAutoCompleteItem, index: number) => ReactNode;
|
|
24
38
|
}
|
|
25
|
-
interface
|
|
39
|
+
export interface AutoCompleteBaseItemProps extends ComponentProps<'li'> {
|
|
26
40
|
item: IAutoCompleteItem;
|
|
27
41
|
index: number;
|
|
28
42
|
}
|
|
29
|
-
export declare const
|
|
30
|
-
Root: <T extends IAutoCompleteItem>({ displayField, subFields, onSelectedItem, onChange,
|
|
31
|
-
Input: ({ placeholder,
|
|
32
|
-
List: ({
|
|
33
|
-
Item: ({ item, index }:
|
|
43
|
+
export declare const AutoCompleteBase: {
|
|
44
|
+
Root: <T extends IAutoCompleteItem>({ displayField, subFields, onSelectedItem, onChange, children, ref, ...props }: AutoCompleteBaseRootProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
Input: ({ placeholder, ...props }: AutoCompleteBaseInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
List: ({ renderItem, ...props }: AutoCompleteBaseListProps) => import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
Item: ({ item, index, children, ...props }: AutoCompleteBaseItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
34
48
|
};
|
|
35
|
-
export default
|
|
49
|
+
export default AutoCompleteBase;
|
|
36
50
|
//# sourceMappingURL=AutoCompleteBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoCompleteBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDAutoComplete/AutoCompleteBase.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"AutoCompleteBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDAutoComplete/AutoCompleteBase.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,GAAG,EACR,KAAK,SAAS,EACd,KAAK,cAAc,EAOpB,MAAM,OAAO,CAAC;AAEf,OAAO,SAAS,MAAM,gCAAgC,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,GAAI,MAAM,iBAAiB,EAAE,OAAO,MAAM,YACL,CAAC;AAE/D,UAAU,yBAAyB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,aAAa,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC5D,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,SAAS,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;CAC/C;AAMD,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,iCAOlC,CAAC;AAEF,MAAM,WAAW,yBAAyB,CACxC,CAAC,SAAS,iBAAiB,CAC3B,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC/C,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IACtD,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AA4JD,MAAM,MAAM,0BAA0B,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AA0ChF,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CACrD,cAAc,CAAC,IAAI,CAAC,EACpB,UAAU,CACX;IACC,oDAAoD;IACpD,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CACnE;AAYD,MAAM,WAAW,yBAA0B,SAAQ,cAAc,CAAC,IAAI,CAAC;IACrE,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AA4BD,eAAO,MAAM,gBAAgB;WArPf,CAAC,SAAS,iBAAiB,kFAQtC,yBAAyB,CAAC,CAAC,CAAC;uCAuJ5B,0BAA0B;qCA6CW,yBAAyB;gDAoB9D,yBAAyB;CA0B3B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx
|
|
3
|
-
import { createContext, useCallback, useContext, useEffect, useRef, useState, } from 'react';
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
const getItemValue = (item, field) => item[field];
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useCallback, useContext, useEffect, useId, useRef, useState, } from 'react';
|
|
4
|
+
import InputBase from '../../components/LDInput/InputBase.js';
|
|
5
|
+
export const getItemValue = (item, field) => item[field];
|
|
7
6
|
const AutoCompleteContext = createContext(null);
|
|
8
|
-
|
|
7
|
+
/** Root가 제공하는 검색 상태와 핸들러를 하위 컴포넌트에서 읽습니다. */
|
|
8
|
+
export const useAutoCompleteContext = () => {
|
|
9
9
|
const autoCompleteContext = useContext(AutoCompleteContext);
|
|
10
10
|
if (!autoCompleteContext)
|
|
11
|
-
throw new Error('
|
|
11
|
+
throw new Error('AutoCompleteBase 하위 컴포넌트는 Root 내부에서 사용해야 합니다.');
|
|
12
12
|
return autoCompleteContext;
|
|
13
13
|
};
|
|
14
|
-
const
|
|
15
|
-
'2xsmall': 'autocomplete-2xs',
|
|
16
|
-
xsmall: 'autocomplete-xs',
|
|
17
|
-
small: 'autocomplete-sm',
|
|
18
|
-
medium: 'autocomplete-md',
|
|
19
|
-
large: 'autocomplete-lg',
|
|
20
|
-
xlarge: 'autocomplete-xl',
|
|
21
|
-
};
|
|
22
|
-
const Root = ({ displayField, subFields, onSelectedItem, onChange, className, children, ref, }) => {
|
|
14
|
+
const Root = ({ displayField, subFields, onSelectedItem, onChange, children, ref, ...props }) => {
|
|
23
15
|
const [query, setQuery] = useState('');
|
|
24
16
|
const [isOpen, setIsOpen] = useState(false);
|
|
25
17
|
const [options, setOptions] = useState([]);
|
|
@@ -29,6 +21,7 @@ const Root = ({ displayField, subFields, onSelectedItem, onChange, className, ch
|
|
|
29
21
|
const [isLoading, setIsLoading] = useState(false);
|
|
30
22
|
const wrapperRef = useRef(null);
|
|
31
23
|
const itemRefs = useRef([]);
|
|
24
|
+
const listId = useId();
|
|
32
25
|
const combinedRef = useCallback((node) => {
|
|
33
26
|
wrapperRef.current = node;
|
|
34
27
|
if (typeof ref === 'function')
|
|
@@ -133,6 +126,8 @@ const Root = ({ displayField, subFields, onSelectedItem, onChange, className, ch
|
|
|
133
126
|
focusedIdx,
|
|
134
127
|
displayField,
|
|
135
128
|
subFields,
|
|
129
|
+
listId,
|
|
130
|
+
getOptionId: (index) => `${listId}-option-${index}`,
|
|
136
131
|
handleChange,
|
|
137
132
|
handleKeyDown,
|
|
138
133
|
handleSelect: handleContextSelect,
|
|
@@ -140,45 +135,29 @@ const Root = ({ displayField, subFields, onSelectedItem, onChange, className, ch
|
|
|
140
135
|
setFocusedIdx,
|
|
141
136
|
setIsComposing,
|
|
142
137
|
itemRefs,
|
|
143
|
-
}, children: _jsx("div", { ref: combinedRef,
|
|
144
|
-
};
|
|
145
|
-
// ── 스타일 매핑 ──
|
|
146
|
-
const inputSizeClasses = {
|
|
147
|
-
'2xsmall': 'input-2xs',
|
|
148
|
-
xsmall: 'input-xs',
|
|
149
|
-
small: 'input-sm',
|
|
150
|
-
medium: 'input-md',
|
|
151
|
-
large: 'input-lg',
|
|
152
|
-
xlarge: 'input-xl',
|
|
138
|
+
}, children: _jsx("div", { ref: combinedRef, ...props, children: children }) }));
|
|
153
139
|
};
|
|
154
|
-
const Input = ({ placeholder = '검색어를 입력하세요',
|
|
155
|
-
const { query, isOpen, handleChange, handleKeyDown, setIsComposing, setIsOpen, } = useAutoCompleteContext();
|
|
156
|
-
return (_jsx(
|
|
140
|
+
const Input = ({ placeholder = '검색어를 입력하세요', ...props }) => {
|
|
141
|
+
const { query, isOpen, focusedIdx, listId, getOptionId, handleChange, handleKeyDown, setIsComposing, setIsOpen, } = useAutoCompleteContext();
|
|
142
|
+
return (_jsx(InputBase.Field, { type: "text", role: "combobox", "aria-expanded": isOpen, "aria-controls": listId, "aria-autocomplete": "list", "aria-activedescendant": focusedIdx >= 0 ? getOptionId(focusedIdx) : undefined, placeholder: placeholder, value: query, onChange: (e) => handleChange(e.target.value), onKeyDown: handleKeyDown, onCompositionStart: () => setIsComposing(true), onCompositionEnd: () => setIsComposing(false), onFocus: () => {
|
|
157
143
|
if (query)
|
|
158
144
|
setIsOpen(true);
|
|
159
|
-
},
|
|
145
|
+
}, ...props }));
|
|
160
146
|
};
|
|
161
|
-
const List = ({
|
|
162
|
-
const {
|
|
163
|
-
return (
|
|
164
|
-
? 'visible opacity-100 pointer-events-auto'
|
|
165
|
-
: 'invisible opacity-0 pointer-events-none', className), children: [_jsx("ul", { className: cn('ld-transition', options.length > 0 ? 'opacity-100 visible' : 'opacity-0 invisible'), children: options.map((item, index) => (_jsx(Item, { item: item, index: index }, item.id))) }), _jsx("div", { className: cn('flex items-center justify-center text-neutral500 transition-opacity duration-300 ease-in-out', options.length === 0
|
|
166
|
-
? 'opacity-100 visible h-full'
|
|
167
|
-
: 'opacity-0 invisible h-0'), children: isLoading ? (_jsx(LDSpinner, { size: size, className: "text-lb500!" })) : (emptyMessage) })] }));
|
|
147
|
+
const List = ({ renderItem, ...props }) => {
|
|
148
|
+
const { options, listId } = useAutoCompleteContext();
|
|
149
|
+
return (_jsx("ul", { id: listId, role: "listbox", ...props, children: options.map((item, index) => renderItem(item, index)) }));
|
|
168
150
|
};
|
|
169
|
-
const Item = ({ item, index }) => {
|
|
170
|
-
const {
|
|
171
|
-
return (
|
|
151
|
+
const Item = ({ item, index, children, ...props }) => {
|
|
152
|
+
const { focusedIdx, setFocusedIdx, handleSelect, getOptionId, itemRefs } = useAutoCompleteContext();
|
|
153
|
+
return (_jsx("li", { ref: (el) => {
|
|
172
154
|
itemRefs.current[index] = el;
|
|
173
|
-
},
|
|
174
|
-
.map((field) => String(getItemValue(item, field) ?? ''))
|
|
175
|
-
.filter(Boolean)
|
|
176
|
-
.join(' / ') }))] }));
|
|
155
|
+
}, id: getOptionId(index), role: "option", "aria-selected": focusedIdx === index, onClick: () => handleSelect(item), onMouseEnter: () => setFocusedIdx(index), ...props, children: children }));
|
|
177
156
|
};
|
|
178
|
-
export const
|
|
157
|
+
export const AutoCompleteBase = {
|
|
179
158
|
Root,
|
|
180
159
|
Input,
|
|
181
160
|
List,
|
|
182
161
|
Item,
|
|
183
162
|
};
|
|
184
|
-
export default
|
|
163
|
+
export default AutoCompleteBase;
|
|
@@ -1,19 +1,69 @@
|
|
|
1
|
-
import type { ReactNode, Ref } from 'react';
|
|
2
|
-
import { type IAutoCompleteItem } from '
|
|
3
|
-
import type { InputSize } from '
|
|
1
|
+
import type { ComponentProps, ReactNode, Ref } from 'react';
|
|
2
|
+
import { type AutoCompleteBaseInputProps, type AutoCompleteBaseItemProps, type AutoCompleteBaseListProps, type AutoCompleteBaseRootProps, type IAutoCompleteItem } from '../../components/LDAutoComplete/AutoCompleteBase.js';
|
|
3
|
+
import type { InputSize, InputVariant } from '../../components/LDInput/LDInput.js';
|
|
4
4
|
export interface LDAutoCompleteProps<T extends IAutoCompleteItem> {
|
|
5
|
+
/** 목록에 표시하고 선택 시 입력창을 채울 필드명 */
|
|
5
6
|
displayField: Extract<keyof T, string>;
|
|
7
|
+
/** 항목 아래 줄에 함께 보여줄 보조 필드명 목록 */
|
|
6
8
|
subFields?: Extract<keyof T, string>[];
|
|
9
|
+
/** 입력어를 받아 옵션 배열을 반환하는 비동기 조회 함수 */
|
|
7
10
|
onChange: (query: string) => Promise<T[] | undefined>;
|
|
11
|
+
/** 항목 선택 시 호출. 입력창이 비면 null이 전달됩니다 */
|
|
8
12
|
onSelectedItem?: (item: T | null) => void;
|
|
13
|
+
/** 입력창 placeholder */
|
|
9
14
|
placeholder?: string;
|
|
15
|
+
/** 입력창 왼쪽에 겹쳐 표시할 아이콘. 포커스하거나 값이 차면 사라지고 캐럿이 그 자리로 이동합니다 */
|
|
16
|
+
prefixIcon?: ReactNode;
|
|
17
|
+
/** 입력창과 목록의 크기 프리셋 */
|
|
10
18
|
size?: InputSize;
|
|
19
|
+
/** 입력창 스타일 유형. 기본값 filled */
|
|
20
|
+
variant?: InputVariant;
|
|
21
|
+
/** 입력창에 그림자를 표시할지 여부. 기본값 false */
|
|
22
|
+
showShadow?: boolean;
|
|
23
|
+
/** 조회 결과가 없을 때 표시할 내용 */
|
|
11
24
|
emptyMessage?: ReactNode;
|
|
25
|
+
/** 루트 컨테이너 className */
|
|
12
26
|
className?: string;
|
|
27
|
+
/** 입력창 className */
|
|
13
28
|
inputClassName?: string;
|
|
29
|
+
/** 드롭다운 className */
|
|
14
30
|
listClassName?: string;
|
|
15
31
|
ref?: Ref<HTMLDivElement>;
|
|
16
32
|
}
|
|
17
|
-
|
|
33
|
+
export type LDAutoCompleteRootProps<T extends IAutoCompleteItem> = AutoCompleteBaseRootProps<T>;
|
|
34
|
+
export interface LDAutoCompleteInputProps extends Omit<AutoCompleteBaseInputProps, 'size'> {
|
|
35
|
+
/** 입력창 크기 프리셋. 기본값 medium. native size 속성을 대체합니다 */
|
|
36
|
+
size?: InputSize;
|
|
37
|
+
/** 입력창 스타일 유형. 기본값 filled */
|
|
38
|
+
variant?: InputVariant;
|
|
39
|
+
/** 입력창에 그림자를 표시할지 여부. 기본값 false */
|
|
40
|
+
showShadow?: boolean;
|
|
41
|
+
/** 입력창 왼쪽에 겹쳐 표시할 아이콘. 포커스하거나 값이 차면 사라집니다 */
|
|
42
|
+
prefixIcon?: ReactNode;
|
|
43
|
+
}
|
|
44
|
+
export interface LDAutoCompleteDropdownProps extends ComponentProps<'div'> {
|
|
45
|
+
/** 목록 크기 프리셋. 기본값 medium */
|
|
46
|
+
size?: InputSize;
|
|
47
|
+
}
|
|
48
|
+
export type LDAutoCompleteListProps = AutoCompleteBaseListProps;
|
|
49
|
+
export type LDAutoCompleteItemProps = AutoCompleteBaseItemProps;
|
|
50
|
+
export type LDAutoCompleteItemPrimaryProps = ComponentProps<'div'>;
|
|
51
|
+
export type LDAutoCompleteItemSecondaryProps = ComponentProps<'span'>;
|
|
52
|
+
export interface LDAutoCompleteEmptyProps extends ComponentProps<'div'> {
|
|
53
|
+
/** 로딩 스피너 크기 프리셋. 기본값 medium */
|
|
54
|
+
size?: InputSize;
|
|
55
|
+
}
|
|
56
|
+
/** 입력창과 목록을 props로 구성하는 Styled Single 컴포넌트입니다. */
|
|
57
|
+
declare const LDAutoComplete: {
|
|
58
|
+
<T extends IAutoCompleteItem>({ displayField, subFields, onChange, onSelectedItem, placeholder, prefixIcon, size, variant, showShadow, emptyMessage, className, inputClassName, listClassName, ref, }: LDAutoCompleteProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
59
|
+
Root: <T extends IAutoCompleteItem>({ className, ...props }: LDAutoCompleteRootProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
Input: ({ size, variant, showShadow, prefixIcon, className, ...props }: LDAutoCompleteInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
61
|
+
Dropdown: ({ size, className, ...props }: LDAutoCompleteDropdownProps) => import("react/jsx-runtime").JSX.Element;
|
|
62
|
+
List: ({ className, ...props }: LDAutoCompleteListProps) => import("react/jsx-runtime").JSX.Element;
|
|
63
|
+
Item: ({ item, index, className, children, ...props }: LDAutoCompleteItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
ItemPrimary: ({ className, ...props }: LDAutoCompleteItemPrimaryProps) => import("react/jsx-runtime").JSX.Element;
|
|
65
|
+
ItemSecondary: ({ className, ...props }: LDAutoCompleteItemSecondaryProps) => import("react/jsx-runtime").JSX.Element;
|
|
66
|
+
Empty: ({ size, className, children, ...props }: LDAutoCompleteEmptyProps) => import("react/jsx-runtime").JSX.Element;
|
|
67
|
+
};
|
|
18
68
|
export default LDAutoComplete;
|
|
19
69
|
//# sourceMappingURL=LDAutoComplete.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDAutoComplete.d.ts","sourceRoot":"","sources":["../../../src/components/LDAutoComplete/LDAutoComplete.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LDAutoComplete.d.ts","sourceRoot":"","sources":["../../../src/components/LDAutoComplete/LDAutoComplete.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAyB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAE9B,KAAK,iBAAiB,EAEvB,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAM5E,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,iBAAiB;IAC9D,gCAAgC;IAChC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACvC,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACvC,oCAAoC;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IACtD,sCAAsC;IACtC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,sBAAsB;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yBAAyB;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,iBAAiB,IAC7D,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,0BAA0B,EAC1B,MAAM,CACP;IACC,oDAAoD;IACpD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AACD,MAAM,WAAW,2BAA4B,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxE,4BAA4B;IAC5B,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AACD,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAChE,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAChE,MAAM,MAAM,8BAA8B,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACnE,MAAM,MAAM,gCAAgC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACtE,MAAM,WAAW,wBAAyB,SAAQ,cAAc,CAAC,KAAK,CAAC;IACrE,gCAAgC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAmRD,kDAAkD;AAClD,QAAA,MAAM,cAAc;KAAI,CAAC,SAAS,iBAAiB,2KAehD,mBAAmB,CAAC,CAAC,CAAC;WApMX,CAAC,SAAS,iBAAiB,2BAGtC,uBAAuB,CAAC,CAAC,CAAC;4EAmB1B,wBAAwB;8CA8BxB,2BAA2B;oCAYS,uBAAuB;2DAsB3D,uBAAuB;2CAkCvB,8BAA8B;6CAQ9B,gCAAgC;qDA6BhC,wBAAwB;CAiE1B,CAAC;AAWF,eAAe,cAAc,CAAC"}
|