@loword/loword-design-system 0.0.10 → 0.0.13
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/dist/components/LDAccordion/AccordionBase.d.ts +41 -0
- package/dist/components/LDAccordion/AccordionBase.d.ts.map +1 -0
- package/dist/components/LDAccordion/AccordionBase.js +24 -0
- package/dist/components/LDAccordion/LDAccordion.d.ts +31 -0
- package/dist/components/LDAccordion/LDAccordion.d.ts.map +1 -0
- package/dist/components/LDAccordion/LDAccordion.js +21 -0
- package/dist/components/LDAutoComplete/AutoCompleteBase.js +6 -6
- package/dist/components/LDAvatar/LDAvatar.d.ts +1 -1
- package/dist/components/LDAvatar/LDAvatar.d.ts.map +1 -1
- package/dist/components/LDAvatar/LDAvatar.js +19 -10
- package/dist/components/LDBadge/LDBadge.d.ts +5 -6
- package/dist/components/LDBadge/LDBadge.d.ts.map +1 -1
- package/dist/components/LDBadge/LDBadge.js +2 -2
- package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts +1 -2
- package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts.map +1 -1
- package/dist/components/LDButton/LDButton.d.ts +3 -3
- package/dist/components/LDButton/LDButton.d.ts.map +1 -1
- package/dist/components/LDButton/LDButton.js +5 -5
- package/dist/components/LDCalendar/CalendarBase.d.ts +17 -0
- package/dist/components/LDCalendar/CalendarBase.d.ts.map +1 -0
- package/dist/components/LDCalendar/CalendarBase.js +49 -0
- package/dist/components/LDCalendar/LDCalendar.d.ts +8 -14
- package/dist/components/LDCalendar/LDCalendar.d.ts.map +1 -1
- package/dist/components/LDCalendar/LDCalendar.js +51 -39
- package/dist/components/LDCarousel/CarouselBase.d.ts +3 -3
- package/dist/components/LDCarousel/CarouselBase.d.ts.map +1 -1
- package/dist/components/LDCarousel/CarouselBase.js +12 -6
- package/dist/components/LDCarousel/LDCarousel.d.ts +7 -8
- package/dist/components/LDCarousel/LDCarousel.d.ts.map +1 -1
- package/dist/components/LDCarousel/LDCarousel.js +2 -2
- package/dist/components/LDCheckbox/CheckboxBase.d.ts +1 -3
- package/dist/components/LDCheckbox/CheckboxBase.d.ts.map +1 -1
- package/dist/components/LDCheckbox/CheckboxBase.js +4 -4
- package/dist/components/LDCheckbox/LDCheckbox.d.ts +2 -5
- package/dist/components/LDCheckbox/LDCheckbox.d.ts.map +1 -1
- package/dist/components/LDCheckbox/LDCheckbox.js +66 -8
- package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts +3 -3
- package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts.map +1 -1
- package/dist/components/LDCheckbox/LDCheckboxGroup.js +11 -2
- package/dist/components/LDCheckbox/LDFormCheckbox.d.ts +12 -0
- package/dist/components/LDCheckbox/LDFormCheckbox.d.ts.map +1 -0
- package/dist/components/LDCheckbox/LDFormCheckbox.js +8 -0
- package/dist/components/LDCheckbox/LDFormCheckboxGroup.d.ts +11 -0
- package/dist/components/LDCheckbox/LDFormCheckboxGroup.d.ts.map +1 -0
- package/dist/components/LDCheckbox/LDFormCheckboxGroup.js +8 -0
- package/dist/components/LDDataCalendar/DataCalendarBase.d.ts +17 -1
- package/dist/components/LDDataCalendar/DataCalendarBase.d.ts.map +1 -1
- package/dist/components/LDDataCalendar/DataCalendarBase.js +34 -4
- package/dist/components/LDDataCalendar/LDDataCalendar.d.ts +27 -10
- package/dist/components/LDDataCalendar/LDDataCalendar.d.ts.map +1 -1
- package/dist/components/LDDataCalendar/LDDataCalendar.js +8 -8
- package/dist/components/LDDatePicker/LDDatePicker.d.ts +10 -4
- package/dist/components/LDDatePicker/LDDatePicker.d.ts.map +1 -1
- package/dist/components/LDDatePicker/LDDatePicker.js +95 -25
- package/dist/components/LDDatePicker/LDFormDatePicker.d.ts +13 -0
- package/dist/components/LDDatePicker/LDFormDatePicker.d.ts.map +1 -0
- package/dist/components/LDDatePicker/LDFormDatePicker.js +15 -0
- package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts +13 -6
- package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts.map +1 -1
- package/dist/components/LDDateRangePicker/LDDateRangePicker.js +143 -93
- package/dist/components/LDDateRangePicker/LDFormDateRangePicker.d.ts +13 -0
- package/dist/components/LDDateRangePicker/LDFormDateRangePicker.d.ts.map +1 -0
- package/dist/components/LDDateRangePicker/LDFormDateRangePicker.js +20 -0
- package/dist/components/LDDrawer/LDDrawer.d.ts +2 -0
- package/dist/components/LDDrawer/LDDrawer.d.ts.map +1 -1
- package/dist/components/LDDrawer/LDDrawer.js +2 -2
- package/dist/components/LDEditor/LDEditor.d.ts.map +1 -1
- package/dist/components/LDEditor/LDEditor.js +94 -54
- package/dist/components/LDEmpty/EmptyBase.d.ts +19 -0
- package/dist/components/LDEmpty/EmptyBase.d.ts.map +1 -0
- package/dist/components/LDEmpty/EmptyBase.js +18 -0
- package/dist/components/LDEmpty/LDEmpty.d.ts +35 -0
- package/dist/components/LDEmpty/LDEmpty.d.ts.map +1 -0
- package/dist/components/LDEmpty/LDEmpty.js +30 -0
- package/dist/components/LDFileUpload/FileUploadBase.d.ts +11 -3
- package/dist/components/LDFileUpload/FileUploadBase.d.ts.map +1 -1
- package/dist/components/LDFileUpload/FileUploadBase.js +21 -21
- package/dist/components/LDFileUpload/LDFileUpload.d.ts +3 -0
- package/dist/components/LDFileUpload/LDFileUpload.d.ts.map +1 -1
- package/dist/components/LDFileUpload/LDFileUpload.js +3 -3
- package/dist/components/LDFileUpload/LDFileUploadList.d.ts +3 -0
- package/dist/components/LDFileUpload/LDFileUploadList.d.ts.map +1 -1
- package/dist/components/LDFileUpload/LDFileUploadList.js +1 -3
- package/dist/components/LDFileUpload/LDImageUpload.d.ts +5 -0
- package/dist/components/LDFileUpload/LDImageUpload.d.ts.map +1 -1
- package/dist/components/LDFileUpload/LDImageUpload.js +5 -3
- package/dist/components/LDFileUpload/LDImageUploadList.d.ts +3 -0
- package/dist/components/LDFileUpload/LDImageUploadList.d.ts.map +1 -1
- package/dist/components/LDFileUpload/LDImageUploadList.js +1 -3
- package/dist/components/LDForm/LDFormErrorMessage.d.ts +3 -1
- package/dist/components/LDForm/LDFormErrorMessage.d.ts.map +1 -1
- package/dist/components/LDForm/LDFormErrorMessage.js +2 -2
- package/dist/components/LDInput/InputBase.d.ts +5 -3
- package/dist/components/LDInput/InputBase.d.ts.map +1 -1
- package/dist/components/LDInput/InputBase.js +4 -4
- 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 +17 -14
- package/dist/components/LDInput/LDInput.d.ts +10 -3
- package/dist/components/LDInput/LDInput.d.ts.map +1 -1
- package/dist/components/LDInput/LDInput.js +114 -50
- package/dist/components/LDLNB/LDLNB.d.ts +42 -0
- package/dist/components/LDLNB/LDLNB.d.ts.map +1 -0
- package/dist/components/LDLNB/LDLNB.js +34 -0
- package/dist/components/LDLNB/LDLNBBase.d.ts +5 -13
- package/dist/components/LDLNB/LDLNBBase.d.ts.map +1 -1
- package/dist/components/LDLNB/LDLNBBase.js +52 -18
- package/dist/components/LDMenuBar/LDMenuBar.d.ts +33 -19
- package/dist/components/LDMenuBar/LDMenuBar.d.ts.map +1 -1
- package/dist/components/LDMenuBar/LDMenuBar.js +13 -27
- package/dist/components/LDMenuBar/MenuBarBase.d.ts +4 -5
- package/dist/components/LDMenuBar/MenuBarBase.d.ts.map +1 -1
- package/dist/components/LDMenuBar/MenuBarBase.js +12 -14
- package/dist/components/LDModal/LDModal.d.ts +20 -40
- package/dist/components/LDModal/LDModal.d.ts.map +1 -1
- package/dist/components/LDModal/LDModal.js +56 -70
- package/dist/components/LDModal/LDModalView.d.ts +59 -0
- package/dist/components/LDModal/LDModalView.d.ts.map +1 -0
- package/dist/components/LDModal/LDModalView.js +72 -0
- package/dist/components/LDNotification/LDNotification.d.ts +40 -0
- package/dist/components/LDNotification/LDNotification.d.ts.map +1 -0
- package/dist/components/LDNotification/LDNotification.js +76 -0
- package/dist/components/LDNotification/NotificationBase.d.ts +29 -0
- package/dist/components/LDNotification/NotificationBase.d.ts.map +1 -0
- package/dist/components/LDNotification/NotificationBase.js +27 -0
- package/dist/components/LDOTPInput/LDFormOTPInput.d.ts +15 -0
- package/dist/components/LDOTPInput/LDFormOTPInput.d.ts.map +1 -0
- package/dist/components/LDOTPInput/LDFormOTPInput.js +8 -0
- package/dist/components/LDOTPInput/LDOTPInput.d.ts +10 -22
- package/dist/components/LDOTPInput/LDOTPInput.d.ts.map +1 -1
- package/dist/components/LDOTPInput/LDOTPInput.js +44 -72
- package/dist/components/LDOTPInput/OTPInputBase.d.ts +46 -0
- package/dist/components/LDOTPInput/OTPInputBase.d.ts.map +1 -0
- package/dist/components/LDOTPInput/OTPInputBase.js +48 -0
- package/dist/components/LDPagination/LDPagination.d.ts +5 -1
- package/dist/components/LDPagination/LDPagination.d.ts.map +1 -1
- package/dist/components/LDPagination/LDPagination.js +3 -1
- package/dist/components/LDPagination/PaginationBase.d.ts +13 -4
- package/dist/components/LDPagination/PaginationBase.d.ts.map +1 -1
- package/dist/components/LDPagination/PaginationBase.js +8 -7
- package/dist/components/LDPopover/LDPopover.d.ts +1 -1
- package/dist/components/LDPopover/LDPopover.d.ts.map +1 -1
- package/dist/components/LDPopover/LDPopover.js +8 -7
- package/dist/components/LDProgressBar/LDProgressBar.d.ts +16 -0
- package/dist/components/LDProgressBar/LDProgressBar.d.ts.map +1 -0
- package/dist/components/LDProgressBar/LDProgressBar.js +9 -0
- package/dist/components/LDProgressBar/ProgressBarBase.d.ts +11 -0
- package/dist/components/LDProgressBar/ProgressBarBase.d.ts.map +1 -0
- package/dist/components/LDProgressBar/ProgressBarBase.js +10 -0
- package/dist/components/LDRadio/LDFormRadioGroup.d.ts +11 -0
- package/dist/components/LDRadio/LDFormRadioGroup.d.ts.map +1 -0
- package/dist/components/LDRadio/LDFormRadioGroup.js +8 -0
- package/dist/components/LDRadio/LDRadio.d.ts +2 -2
- package/dist/components/LDRadio/LDRadio.d.ts.map +1 -1
- package/dist/components/LDRadio/LDRadio.js +70 -15
- package/dist/components/LDRadio/LDRadioGroup.d.ts +5 -3
- package/dist/components/LDRadio/LDRadioGroup.d.ts.map +1 -1
- package/dist/components/LDRadio/LDRadioGroup.js +11 -2
- package/dist/components/LDRadio/RadioBase.d.ts +2 -3
- package/dist/components/LDRadio/RadioBase.d.ts.map +1 -1
- package/dist/components/LDRadio/RadioBase.js +7 -4
- package/dist/components/LDSectionNav/LDSectionNav.d.ts +11 -0
- package/dist/components/LDSectionNav/LDSectionNav.d.ts.map +1 -0
- package/dist/components/LDSectionNav/LDSectionNav.js +11 -0
- package/dist/components/LDSectionNav/SectionNavBase.d.ts +20 -0
- package/dist/components/LDSectionNav/SectionNavBase.d.ts.map +1 -0
- package/dist/components/LDSectionNav/SectionNavBase.js +53 -0
- package/dist/components/LDSelect/LDFormMultiSelect.d.ts +13 -0
- package/dist/components/LDSelect/LDFormMultiSelect.d.ts.map +1 -0
- package/dist/components/LDSelect/{FormMultiSelect.js → LDFormMultiSelect.js} +2 -2
- package/dist/components/LDSelect/LDFormSelect.d.ts +13 -0
- package/dist/components/LDSelect/LDFormSelect.d.ts.map +1 -0
- package/dist/components/LDSelect/LDFormSelect.js +10 -0
- package/dist/components/LDSelect/LDMultiSelect.d.ts +6 -3
- package/dist/components/LDSelect/LDMultiSelect.d.ts.map +1 -1
- package/dist/components/LDSelect/LDMultiSelect.js +35 -31
- package/dist/components/LDSelect/LDSelect.d.ts +6 -3
- package/dist/components/LDSelect/LDSelect.d.ts.map +1 -1
- package/dist/components/LDSelect/LDSelect.js +37 -30
- package/dist/components/LDSelect/SelectBase.d.ts.map +1 -1
- package/dist/components/LDSelect/SelectBase.js +21 -7
- package/dist/components/LDSpinner/LDSpinner.d.ts +1 -1
- package/dist/components/LDSpinner/LDSpinner.d.ts.map +1 -1
- package/dist/components/LDSpinner/LDSpinner.js +6 -6
- package/dist/components/LDTable/LDCollapsibleTanstackTable.d.ts.map +1 -1
- package/dist/components/LDTable/LDCollapsibleTanstackTable.js +12 -9
- package/dist/components/LDTable/LDTable.d.ts.map +1 -1
- package/dist/components/LDTable/LDTable.js +1 -1
- package/dist/components/LDTable/LDTanstackTable.d.ts.map +1 -1
- package/dist/components/LDTable/LDTanstackTable.js +6 -7
- package/dist/components/LDTable/TableField.d.ts +1 -1
- package/dist/components/LDTable/TableField.d.ts.map +1 -1
- package/dist/components/LDTextarea/LDFormTextarea.d.ts +14 -0
- package/dist/components/LDTextarea/LDFormTextarea.d.ts.map +1 -0
- package/dist/components/LDTextarea/{FormTextarea.js → LDFormTextarea.js} +2 -2
- package/dist/components/LDTextarea/LDTextarea.d.ts +1 -1
- package/dist/components/LDTextarea/LDTextarea.d.ts.map +1 -1
- package/dist/components/LDTextarea/LDTextarea.js +30 -30
- package/dist/components/LDTimePicker/LDFormTimePicker.d.ts +12 -0
- package/dist/components/LDTimePicker/LDFormTimePicker.d.ts.map +1 -0
- package/dist/components/LDTimePicker/{FormTimePicker.js → LDFormTimePicker.js} +3 -3
- package/dist/components/LDTimePicker/LDTimePicker.js +3 -3
- package/dist/components/LDToast/LDToast.js +1 -1
- package/dist/components/LDToast/LDToaster.d.ts +2 -1
- package/dist/components/LDToast/LDToaster.d.ts.map +1 -1
- package/dist/components/LDToast/LDToaster.js +2 -2
- package/dist/components/LDToggleButton/LDFormToggleButton.d.ts +10 -0
- package/dist/components/LDToggleButton/LDFormToggleButton.d.ts.map +1 -0
- package/dist/components/LDToggleButton/LDFormToggleButton.js +8 -0
- package/dist/components/LDTooltip/LDTooltip.js +1 -1
- package/dist/components/LDTooltip/TooltipBase.d.ts +6 -2
- package/dist/components/LDTooltip/TooltipBase.d.ts.map +1 -1
- package/dist/components/LDTooltip/TooltipBase.js +4 -4
- package/dist/index.css +913 -307
- package/dist/index.d.ts +28 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -20
- package/dist/utils/file.d.ts +2 -2
- package/dist/utils/file.d.ts.map +1 -1
- package/dist/utils/file.js +26 -23
- package/dist/utils/renderIcon.d.ts +1 -2
- package/dist/utils/renderIcon.d.ts.map +1 -1
- package/dist/utils/renderIcon.js +5 -4
- package/package.json +14 -2
- package/src/styles/carousel.css +15 -14
- package/src/styles/components/button.css +2 -2
- package/src/styles/components/editor.css +6 -0
- package/src/styles/components/index.css +1 -0
- package/src/styles/components/input.css +16 -2
- package/src/styles/components/select.css +61 -0
- package/src/styles/components/shared.css +6 -6
- package/src/styles/motion.css +115 -0
- package/src/theme.css +3 -0
- package/dist/components/Icon/LucideIcon.d.ts +0 -12
- package/dist/components/Icon/LucideIcon.d.ts.map +0 -1
- package/dist/components/Icon/LucideIcon.js +0 -49
- package/dist/components/LDCheckbox/FormCheckbox.d.ts +0 -14
- package/dist/components/LDCheckbox/FormCheckbox.d.ts.map +0 -1
- package/dist/components/LDCheckbox/FormCheckbox.js +0 -9
- package/dist/components/LDCheckbox/FormCheckboxGroup.d.ts +0 -13
- package/dist/components/LDCheckbox/FormCheckboxGroup.d.ts.map +0 -1
- package/dist/components/LDCheckbox/FormCheckboxGroup.js +0 -9
- package/dist/components/LDDatePicker/FormDatePicker.d.ts +0 -12
- package/dist/components/LDDatePicker/FormDatePicker.d.ts.map +0 -1
- package/dist/components/LDDatePicker/FormDatePicker.js +0 -12
- package/dist/components/LDDateRangePicker/FormDateRangePicker.d.ts +0 -12
- package/dist/components/LDDateRangePicker/FormDateRangePicker.d.ts.map +0 -1
- package/dist/components/LDDateRangePicker/FormDateRangePicker.js +0 -10
- package/dist/components/LDModal/openModal.d.ts +0 -24
- package/dist/components/LDModal/openModal.d.ts.map +0 -1
- package/dist/components/LDModal/openModal.js +0 -52
- package/dist/components/LDRadio/FormRadioGroup.d.ts +0 -13
- package/dist/components/LDRadio/FormRadioGroup.d.ts.map +0 -1
- package/dist/components/LDRadio/FormRadioGroup.js +0 -9
- package/dist/components/LDSelect/FormMultiSelect.d.ts +0 -13
- package/dist/components/LDSelect/FormMultiSelect.d.ts.map +0 -1
- package/dist/components/LDSelect/FormSelect.d.ts +0 -13
- package/dist/components/LDSelect/FormSelect.d.ts.map +0 -1
- package/dist/components/LDSelect/FormSelect.js +0 -10
- package/dist/components/LDTextarea/FormTextarea.d.ts +0 -14
- package/dist/components/LDTextarea/FormTextarea.d.ts.map +0 -1
- package/dist/components/LDTimePicker/FormTimePicker.d.ts +0 -12
- package/dist/components/LDTimePicker/FormTimePicker.d.ts.map +0 -1
- package/dist/components/LDToggleButton/FormToggleButton.d.ts +0 -12
- package/dist/components/LDToggleButton/FormToggleButton.d.ts.map +0 -1
- package/dist/components/LDToggleButton/FormToggleButton.js +0 -9
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { isValidElement } from 'react';
|
|
3
3
|
import PopoverBase from './PopoverBase.js';
|
|
4
|
-
import LucideIcon from '../Icon/LucideIcon.js';
|
|
5
4
|
import cn from '../../utils/cn.js';
|
|
5
|
+
import { Ellipsis, EllipsisVertical } from 'lucide-react';
|
|
6
6
|
// ── 스타일 매핑 ──
|
|
7
7
|
const itemColorClasses = {
|
|
8
8
|
blue: 'hover:bg-tintBlue text-lb500',
|
|
@@ -10,17 +10,18 @@ const itemColorClasses = {
|
|
|
10
10
|
gray: 'hover:bg-mono100 text-neutral500',
|
|
11
11
|
};
|
|
12
12
|
const iconSizes = {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
small: 12,
|
|
14
|
+
medium: 20,
|
|
15
|
+
large: 24,
|
|
16
|
+
xlarge: 32,
|
|
16
17
|
};
|
|
17
|
-
const LDPopover = ({ items, content, children, open, onOpenChange, iconSize = '
|
|
18
|
+
const LDPopover = ({ items, content, children, open, onOpenChange, iconSize = 'small', isHorizontal = false, align = 'end', offset, contentWidth, triggerClassName, popoverClassName, style, }) => {
|
|
18
19
|
const isAsChild = isValidElement(children);
|
|
19
|
-
return (_jsxs(PopoverBase.Root, { open: open, onOpenChange: onOpenChange, children: [_jsx(PopoverBase.Trigger, { asChild: isAsChild, style: style, className: cn('flex items-center justify-center cursor-pointer ld-transition rounded-[5px] outline-none', !isAsChild && '
|
|
20
|
+
return (_jsxs(PopoverBase.Root, { open: open, onOpenChange: onOpenChange, children: [_jsx(PopoverBase.Trigger, { asChild: isAsChild, style: style, className: cn('flex items-center justify-center cursor-pointer ld-transition rounded-[5px] outline-none', !isAsChild && 'p-1 min-h-6 hover:bg-mono100', triggerClassName), children: isAsChild ? (children) : isHorizontal ? (_jsx(Ellipsis, { size: iconSizes[iconSize], className: "text-neutral500" })) : (_jsx(EllipsisVertical, { size: iconSizes[iconSize], className: "text-neutral500" })) }), _jsx(PopoverBase.Content, { align: align, sideOffset: offset, style: {
|
|
20
21
|
width: contentWidth === 'trigger'
|
|
21
22
|
? 'var(--radix-popover-trigger-width)'
|
|
22
23
|
: contentWidth,
|
|
23
|
-
}, className: cn('min-w-
|
|
24
|
+
}, className: cn('min-w-40 rounded-[5px] bg-white border border-mono100 p-xs flex flex-col gap-xs z-50 shadow-lg', popoverClassName), children: content
|
|
24
25
|
? content
|
|
25
26
|
: items?.map((item, index) => (_jsx("button", { type: "button", className: cn('w-full flex items-center cursor-pointer justify-start px-2 py-1.5 rounded-[5px] ld-transition display12 text-left', itemColorClasses[item.color ?? 'gray']), onClick: (e) => {
|
|
26
27
|
e.stopPropagation();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
export interface LDProgressBarProps {
|
|
3
|
+
/** 진행률 (0~100). 범위를 벗어나면 0~100으로 clamp됩니다. */
|
|
4
|
+
percent: number;
|
|
5
|
+
/** 트랙(바탕)에 적용할 추가 CSS 클래스 */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** 채움 영역 색상 Tailwind 클래스 (`bg-*`, 기본 색상: `bg-lb500`) */
|
|
8
|
+
fillClassName?: string;
|
|
9
|
+
/** percent에 따라 채움 색상(`bg-*` 클래스)을 동적으로 계산하는 함수. 지정 시 `fillColor`보다 우선하며 percent 변경마다 재계산됩니다. */
|
|
10
|
+
getFillClassNameByPercent?: (percent: number) => string;
|
|
11
|
+
/** 트랙(바탕)에 적용할 인라인 스타일 */
|
|
12
|
+
style?: CSSProperties;
|
|
13
|
+
}
|
|
14
|
+
declare const LDProgressBar: ({ percent, className, fillClassName, getFillClassNameByPercent, style, }: LDProgressBarProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export default LDProgressBar;
|
|
16
|
+
//# sourceMappingURL=LDProgressBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDProgressBar.d.ts","sourceRoot":"","sources":["../../../src/components/LDProgressBar/LDProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,0BAA0B;IAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,QAAA,MAAM,aAAa,GAAI,0EAMpB,kBAAkB,4CAuBpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import cn from '../../utils/cn.js';
|
|
3
|
+
import ProgressBase from './ProgressBarBase.js';
|
|
4
|
+
const LDProgressBar = ({ percent, className, fillClassName, getFillClassNameByPercent, style, }) => {
|
|
5
|
+
const clampedPercent = Math.min(Math.max(percent, 0), 100);
|
|
6
|
+
const dynamicFillClassName = getFillClassNameByPercent?.(clampedPercent);
|
|
7
|
+
return (_jsx(ProgressBase.Root, { percent: clampedPercent, className: cn('relative w-full h-2 rounded-full bg-mono100 overflow-hidden', className), style: style, children: _jsx(ProgressBase.Fill, { className: cn('h-full rounded-full ld-transition bg-lb500', fillClassName, dynamicFillClassName), style: { width: `${clampedPercent}%` } }) }));
|
|
8
|
+
};
|
|
9
|
+
export default LDProgressBar;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
interface RootProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
percent: number;
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const ProgressBase: {
|
|
7
|
+
Root: ({ percent, children, ...props }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
Fill: (props: HTMLAttributes<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
};
|
|
10
|
+
export default ProgressBase;
|
|
11
|
+
//# sourceMappingURL=ProgressBarBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBarBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDProgressBar/ProgressBarBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,UAAU,SAAU,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAkBD,eAAO,MAAM,YAAY;4CAhBsB,SAAS;kBAcnC,cAAc,CAAC,cAAc,CAAC;CAKlD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
const Root = ({ percent, children, ...props }) => {
|
|
3
|
+
return (_jsx("div", { role: "progressbar", "aria-valuenow": percent, "aria-valuemin": 0, "aria-valuemax": 100, ...props, children: children }));
|
|
4
|
+
};
|
|
5
|
+
const Fill = (props) => _jsx("div", { ...props });
|
|
6
|
+
export const ProgressBase = {
|
|
7
|
+
Root,
|
|
8
|
+
Fill,
|
|
9
|
+
};
|
|
10
|
+
export default ProgressBase;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type RegisterOptions } from 'react-hook-form';
|
|
2
|
+
import { type LDRadioGroupProps } from './LDRadioGroup.js';
|
|
3
|
+
interface LDFormRadioGroupProps extends Omit<LDRadioGroupProps, 'value' | 'onChange'> {
|
|
4
|
+
name: string;
|
|
5
|
+
options?: RegisterOptions;
|
|
6
|
+
customErrorMessage?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare const LDFormRadioGroup: ({ name, options, customErrorMessage, disabled, ...props }: LDFormRadioGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default LDFormRadioGroup;
|
|
11
|
+
//# sourceMappingURL=LDFormRadioGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDFormRadioGroup.d.ts","sourceRoot":"","sources":["../../../src/components/LDRadio/LDFormRadioGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGtE,UAAU,qBAAsB,SAAQ,IAAI,CAC1C,iBAAiB,EACjB,OAAO,GAAG,UAAU,CACrB;IACC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,gBAAgB,GAAI,2DAMvB,qBAAqB,4CAoBvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import LDRadioGroup from './LDRadioGroup.js';
|
|
4
|
+
import FormField from '../LDForm/LDFormField.js';
|
|
5
|
+
const LDFormRadioGroup = ({ name, options, customErrorMessage = '', disabled = false, ...props }) => {
|
|
6
|
+
return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, children: ({ field }) => (_jsx(LDRadioGroup, { ...props, name: name, value: field.value ?? '', onChange: field.onChange, disabled: disabled, "aria-invalid": field['aria-invalid'] })) }));
|
|
7
|
+
};
|
|
8
|
+
export default LDFormRadioGroup;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type InputHTMLAttributes, type Ref } from 'react';
|
|
2
|
-
type RadioSize = '
|
|
3
|
-
type RadioType = 'default' | 'pill';
|
|
2
|
+
export type RadioSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
|
|
3
|
+
type RadioType = 'default' | 'circle' | 'pill';
|
|
4
4
|
export interface LDRadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'checked' | 'disabled'> {
|
|
5
5
|
/** controlled 체크 상태 */
|
|
6
6
|
checked?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDRadio.d.ts","sourceRoot":"","sources":["../../../src/components/LDRadio/LDRadio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAK3D,
|
|
1
|
+
{"version":3,"file":"LDRadio.d.ts","sourceRoot":"","sources":["../../../src/components/LDRadio/LDRadio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAK3D,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AACb,KAAK,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAmE/C,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CACzC;IACC,uBAAuB;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yCAAyC;IACzC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,aAAa;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AAiGD,QAAA,MAAM,OAAO,GAAI,4GAYd,YAAY,4CAkDd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -2,36 +2,91 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import RadioBase, { useRadioContext } from './RadioBase.js';
|
|
3
3
|
import cn from '../../utils/cn.js';
|
|
4
4
|
const radioSizeClasses = {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
'2xsmall': 'size-2.5',
|
|
6
|
+
xsmall: 'size-3',
|
|
7
|
+
small: 'size-4',
|
|
8
|
+
medium: 'size-5',
|
|
9
|
+
large: 'size-6',
|
|
10
|
+
xlarge: 'size-7',
|
|
7
11
|
};
|
|
8
12
|
const checkIconSizes = {
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
'2xsmall': 6,
|
|
14
|
+
xsmall: 8,
|
|
15
|
+
small: 10,
|
|
16
|
+
medium: 12,
|
|
17
|
+
large: 14,
|
|
18
|
+
xlarge: 16,
|
|
11
19
|
};
|
|
12
20
|
const labelSizeClasses = {
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
'2xsmall': 'display10 bold',
|
|
22
|
+
xsmall: 'display10 bold',
|
|
23
|
+
small: 'display12 bold',
|
|
24
|
+
medium: 'display14 bold',
|
|
25
|
+
large: 'display16 bold',
|
|
26
|
+
xlarge: 'display18 bold',
|
|
27
|
+
};
|
|
28
|
+
// default/circle 타입 라벨↔인디케이터 간격 (LDCheckbox의 gapClasses와 동일 스케일)
|
|
29
|
+
const gapClasses = {
|
|
30
|
+
'2xsmall': 'gap-2xs',
|
|
31
|
+
xsmall: 'gap-2xs',
|
|
32
|
+
small: 'gap-xs',
|
|
33
|
+
medium: 'gap-sm',
|
|
34
|
+
large: 'gap-sm',
|
|
35
|
+
xlarge: 'gap-sm',
|
|
36
|
+
};
|
|
37
|
+
const pillClasses = {
|
|
38
|
+
'2xsmall': 'h-[24px] px-1.5 display10 bold',
|
|
39
|
+
xsmall: 'h-[28px] px-2 display10 bold',
|
|
40
|
+
small: 'h-[34px] px-3 display12 bold',
|
|
41
|
+
medium: 'h-[40px] px-4 display14 bold',
|
|
42
|
+
large: 'h-[46px] px-5 display18 bold',
|
|
43
|
+
xlarge: 'h-[52px] px-6 display20 bold',
|
|
44
|
+
};
|
|
45
|
+
const pillIconSizes = {
|
|
46
|
+
'2xsmall': 12,
|
|
47
|
+
xsmall: 16,
|
|
48
|
+
small: 16,
|
|
49
|
+
medium: 20,
|
|
50
|
+
large: 24,
|
|
51
|
+
xlarge: 24,
|
|
52
|
+
};
|
|
53
|
+
const pillCheckedPad = {
|
|
54
|
+
'2xsmall': 'pl-[14px]',
|
|
55
|
+
xsmall: 'pl-[18px]',
|
|
56
|
+
small: 'pl-[20px]',
|
|
57
|
+
medium: 'pl-[24px]',
|
|
58
|
+
large: 'pl-[28px]',
|
|
59
|
+
xlarge: 'pl-[28px]',
|
|
15
60
|
};
|
|
16
61
|
// ── Inner: pill 타입 ──
|
|
17
|
-
const PillInner = ({ label, ref, ...props }) => {
|
|
62
|
+
const PillInner = ({ size, label, ref, ...props }) => {
|
|
18
63
|
const { checked } = useRadioContext();
|
|
19
|
-
return (_jsxs(_Fragment, { children: [_jsx(RadioBase.HiddenInput, { ref: ref, ...props }), _jsxs("div", { className: "relative flex items-center", children: [_jsx(RadioBase.Indicator, {
|
|
64
|
+
return (_jsxs(_Fragment, { children: [_jsx(RadioBase.HiddenInput, { ref: ref, ...props }), _jsxs("div", { className: "relative flex items-center", children: [_jsx(RadioBase.Indicator, { iconSize: pillIconSizes[size], className: "absolute left-0", iconClassName: cn('shrink-0 ld-transition', checked ? 'opacity-100' : 'opacity-0') }), label && (_jsx(RadioBase.Label, { className: cn('ld-transition text-nowrap', checked ? pillCheckedPad[size] : 'pl-sm pr-sm'), children: label }))] })] }));
|
|
20
65
|
};
|
|
21
|
-
// ── Inner: default 타입 ──
|
|
22
|
-
const DefaultInner = ({ size, label, ref, ...props }) => {
|
|
66
|
+
// ── Inner: default, circle 타입 ──
|
|
67
|
+
const DefaultInner = ({ type, size, label, ref, ...props }) => {
|
|
23
68
|
const { checked, disabled } = useRadioContext();
|
|
24
|
-
return (_jsxs(_Fragment, { children: [_jsx(RadioBase.HiddenInput, { ref: ref, ...props }), _jsx(RadioBase.Indicator, {
|
|
25
|
-
|
|
69
|
+
return (_jsxs(_Fragment, { children: [_jsx(RadioBase.HiddenInput, { ref: ref, ...props }), _jsx(RadioBase.Indicator, { type: type, iconSize: checkIconSizes[size], className: cn('flex items-center justify-center rounded-full ld-transition outline-transparent [outline-style:solid] -outline-offset-1 shrink-0', type === 'circle' ? 'outline-1' : 'outline-2', {
|
|
70
|
+
'outline-lb500 bg-lb500': !disabled && checked && type === 'default',
|
|
71
|
+
'bg-white outline-neutral100': !disabled && !checked && type === 'default',
|
|
72
|
+
'bg-white outline-lb500': !disabled && checked && type === 'circle',
|
|
73
|
+
'bg-white outline-neutral500': !disabled && !checked && type === 'circle',
|
|
74
|
+
}, disabled && 'outline-neutral200 bg-mono100', radioSizeClasses[size]), iconClassName: cn('shrink-0 ld-transition', {
|
|
75
|
+
'text-neutral300': checked && disabled && type === 'default',
|
|
76
|
+
'text-white': checked && !disabled && type === 'default',
|
|
77
|
+
'bg-neutral300': checked && disabled && type === 'circle',
|
|
78
|
+
'text-lb500 bg-lb500': checked && !disabled && type === 'circle',
|
|
79
|
+
'opacity-0': !checked,
|
|
80
|
+
}) }), label && (_jsx(RadioBase.Label, { className: "text-neutral500", children: label }))] }));
|
|
26
81
|
};
|
|
27
|
-
const LDRadio = ({ checked, defaultChecked, onCheckedChange, size = '
|
|
82
|
+
const LDRadio = ({ checked, defaultChecked, onCheckedChange, size = 'small', type = 'default', label, disabled = false, className, style, ref, ...props }) => {
|
|
28
83
|
if (type === 'pill') {
|
|
29
84
|
return (_jsx(RadioBase.Root, { checked: checked, defaultChecked: defaultChecked, onCheckedChange: onCheckedChange, disabled: disabled, style: style,
|
|
30
85
|
// pill은 checked 여부에 따라 Root(<label>) 배경/텍스트가 바뀌어야 함.
|
|
31
86
|
// Inner에서는 Root 밖 스타일을 줄 수 없으므로,
|
|
32
87
|
// className을 함수로 받아 Root 내부의 resolved 값을 주입함.
|
|
33
|
-
className: (c) => cn('items-center gap-2 rounded-full
|
|
88
|
+
className: (c) => cn('items-center gap-2 rounded-full ld-transition', pillClasses[size], c ? 'bg-tintBlue text-lb500' : 'bg-mono100 text-mono500', disabled && 'opacity-50 cursor-not-allowed', className), children: _jsx(PillInner, { size: size, label: label, ref: ref, ...props }) }));
|
|
34
89
|
}
|
|
35
|
-
return (_jsx(RadioBase.Root, { checked: checked, defaultChecked: defaultChecked, onCheckedChange: onCheckedChange, disabled: disabled, style: style, className: cn('items-center
|
|
90
|
+
return (_jsx(RadioBase.Root, { checked: checked, defaultChecked: defaultChecked, onCheckedChange: onCheckedChange, disabled: disabled, style: style, className: cn('items-center', gapClasses[size], labelSizeClasses[size], className), children: _jsx(DefaultInner, { type: type, size: size, label: label, ref: ref, ...props }) }));
|
|
36
91
|
};
|
|
37
92
|
export default LDRadio;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import { type RadioSize } from './LDRadio.js';
|
|
2
3
|
export interface RadioGroupOption {
|
|
3
4
|
label: string;
|
|
4
5
|
value: string;
|
|
@@ -9,14 +10,15 @@ export interface LDRadioGroupProps {
|
|
|
9
10
|
value?: string;
|
|
10
11
|
onChange?: (value: string) => void;
|
|
11
12
|
disabled?: boolean;
|
|
12
|
-
type?: 'default' | 'pill';
|
|
13
|
-
size?:
|
|
13
|
+
type?: 'default' | 'pill' | 'circle';
|
|
14
|
+
size?: RadioSize;
|
|
14
15
|
name?: string;
|
|
15
16
|
'aria-invalid'?: boolean | 'true' | 'false';
|
|
16
17
|
'aria-describedby'?: string;
|
|
18
|
+
orientation?: 'horizontal' | 'vertical';
|
|
17
19
|
className?: string;
|
|
18
20
|
style?: React.CSSProperties;
|
|
19
21
|
}
|
|
20
|
-
declare const LDRadioGroup: ({ items, value, onChange, disabled, type, size, name, "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedby, className, style, }: LDRadioGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
declare const LDRadioGroup: ({ items, value, onChange, disabled, type, size, name, "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedby, orientation, className, style, }: LDRadioGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
23
|
export default LDRadioGroup;
|
|
22
24
|
//# sourceMappingURL=LDRadioGroup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDRadioGroup.d.ts","sourceRoot":"","sources":["../../../src/components/LDRadio/LDRadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LDRadioGroup.d.ts","sourceRoot":"","sources":["../../../src/components/LDRadio/LDRadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAIpD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAaD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,YAAY,GAAI,0JAanB,iBAAiB,4CA4BnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import LDRadio from './LDRadio.js';
|
|
3
3
|
import cn from '../../utils/cn.js';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
// 아이템 간 간격을 사이즈별로 확장 (수평/수직 공통)
|
|
5
|
+
const groupGapClasses = {
|
|
6
|
+
'2xsmall': 'gap-xs',
|
|
7
|
+
xsmall: 'gap-xs',
|
|
8
|
+
small: 'gap-sm',
|
|
9
|
+
medium: 'gap-md',
|
|
10
|
+
large: 'gap-md',
|
|
11
|
+
xlarge: 'gap-lg',
|
|
12
|
+
};
|
|
13
|
+
const LDRadioGroup = ({ items, value, onChange, disabled = false, type = 'pill', size = 'small', name, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedby, orientation = 'horizontal', className, style, }) => {
|
|
14
|
+
return (_jsx("div", { role: "radiogroup", "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedby, className: cn('flex', groupGapClasses[size], orientation === 'vertical' ? 'flex-col' : 'flex-row'), style: style, children: items.map((option) => (_jsx(LDRadio, { name: name, type: type, size: size, checked: value === option.value, className: className, onCheckedChange: () => onChange?.(option.value), label: option.label, disabled: disabled || option.disabled }, option.value))) }));
|
|
6
15
|
};
|
|
7
16
|
export default LDRadioGroup;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type InputHTMLAttributes, type ReactNode, type Ref } from 'react';
|
|
2
|
-
import { type IconName } from '../Icon/LucideIcon.js';
|
|
3
2
|
interface RadioContextType {
|
|
4
3
|
checked: boolean;
|
|
5
4
|
onCheckedChange: (checked: boolean) => void;
|
|
@@ -19,7 +18,7 @@ interface HiddenInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, '
|
|
|
19
18
|
ref?: Ref<HTMLInputElement>;
|
|
20
19
|
}
|
|
21
20
|
interface IndicatorProps {
|
|
22
|
-
|
|
21
|
+
type?: 'default' | 'circle';
|
|
23
22
|
iconSize?: number;
|
|
24
23
|
className?: string;
|
|
25
24
|
iconClassName?: string;
|
|
@@ -31,7 +30,7 @@ interface LabelProps {
|
|
|
31
30
|
export declare const RadioBase: {
|
|
32
31
|
Root: ({ checked, defaultChecked, onCheckedChange, disabled, className, style, children, }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
32
|
HiddenInput: ({ ref, onChange, ...props }: HiddenInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
34
|
-
Indicator: ({
|
|
33
|
+
Indicator: ({ type, iconSize, className, iconClassName, }: IndicatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
35
34
|
Label: ({ className, children }: LabelProps) => import("react/jsx-runtime").JSX.Element;
|
|
36
35
|
};
|
|
37
36
|
export default RadioBase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDRadio/RadioBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,GAAG,EAIT,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RadioBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDRadio/RadioBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,GAAG,EAIT,MAAM,OAAO,CAAC;AAKf,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID,eAAO,MAAM,eAAe,wBAK3B,CAAC;AAGF,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;IACpD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA0CD,UAAU,gBAAiB,SAAQ,IAAI,CACrC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,SAAS,GAAG,UAAU,CAChC;IACC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AAsBD,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA2BD,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD,eAAO,MAAM,SAAS;gGApGnB,SAAS;+CAuCsC,gBAAgB;+DAgC/D,cAAc;qCAyBuB,UAAU;CASjD,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useContext, useState, } from 'react';
|
|
3
|
-
import LucideIcon from '../Icon/LucideIcon.js';
|
|
4
3
|
import cn from '../../utils/cn.js';
|
|
4
|
+
import { Check } from 'lucide-react';
|
|
5
5
|
const RadioContext = createContext(null);
|
|
6
6
|
export const useRadioContext = () => {
|
|
7
7
|
const ctx = useContext(RadioContext);
|
|
@@ -29,8 +29,11 @@ const HiddenInput = ({ ref, onChange, ...props }) => {
|
|
|
29
29
|
onChange?.(e);
|
|
30
30
|
}, ...props }));
|
|
31
31
|
};
|
|
32
|
-
const Indicator = ({
|
|
33
|
-
return (
|
|
32
|
+
const Indicator = ({ type = 'default', iconSize = 24, className, iconClassName, }) => {
|
|
33
|
+
return (_jsxs("div", { className: className, children: [type === 'default' && (_jsx(Check, { size: iconSize, className: iconClassName })), type === 'circle' && (_jsx("div", { className: cn('rounded-full', iconClassName), style: {
|
|
34
|
+
width: iconSize - 2,
|
|
35
|
+
height: iconSize - 2,
|
|
36
|
+
} }))] }));
|
|
34
37
|
};
|
|
35
38
|
const Label = ({ className, children }) => {
|
|
36
39
|
return _jsx("span", { className: className, children: children });
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type SectionNavItem } from './SectionNavBase.js';
|
|
2
|
+
export type LDSectionNavItem = SectionNavItem;
|
|
3
|
+
export interface LDSectionNavProps {
|
|
4
|
+
/** 목차 항목 목록. 각 항목의 id는 대상 섹션의 DOM id와 일치해야 한다 */
|
|
5
|
+
items?: LDSectionNavItem[];
|
|
6
|
+
/** 루트 nav className */
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const LDSectionNav: ({ items, className }: LDSectionNavProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default LDSectionNav;
|
|
11
|
+
//# sourceMappingURL=LDSectionNav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDSectionNav.d.ts","sourceRoot":"","sources":["../../../src/components/LDSectionNav/LDSectionNav.tsx"],"names":[],"mappings":"AAGA,OAAuB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,YAAY,GAAI,sBAAsB,iBAAiB,4CAc5D,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import cn from '../../utils/cn.js';
|
|
4
|
+
import SectionNavBase from './SectionNavBase.js';
|
|
5
|
+
const LDSectionNav = ({ items, className }) => {
|
|
6
|
+
return (_jsx(SectionNavBase.Root, { items: items, classNames: {
|
|
7
|
+
root: cn('flex flex-col gap-2.5', className),
|
|
8
|
+
item: cn('w-full text-left p-2 rounded-md display14 text-neutral500 cursor-pointer ld-transition', 'hover:text-lb500', 'data-[active=true]:text-lb500'),
|
|
9
|
+
} }));
|
|
10
|
+
};
|
|
11
|
+
export default LDSectionNav;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface SectionNavItem {
|
|
3
|
+
/** 대상 섹션의 DOM id (포커스가 이 섹션 안이면 활성) */
|
|
4
|
+
id: string;
|
|
5
|
+
/** 링크에 표시할 라벨 */
|
|
6
|
+
label: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export interface SectionNavClassNames {
|
|
9
|
+
root?: string;
|
|
10
|
+
item?: string;
|
|
11
|
+
}
|
|
12
|
+
interface RootProps {
|
|
13
|
+
items?: SectionNavItem[];
|
|
14
|
+
classNames?: SectionNavClassNames;
|
|
15
|
+
}
|
|
16
|
+
export declare const SectionNavBase: {
|
|
17
|
+
Root: ({ items, classNames }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
};
|
|
19
|
+
export default SectionNavBase;
|
|
20
|
+
//# sourceMappingURL=SectionNavBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionNavBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDSectionNav/SectionNavBase.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAG5D,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAmED,eAAO,MAAM,cAAc;kCA9DU,SAAS;CAgE7C,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import cn from '../../utils/cn.js';
|
|
5
|
+
const FOCUSABLE = 'input, select, textarea, button, [href], [tabindex]:not([tabindex="-1"])';
|
|
6
|
+
// 포커스(편집)가 어느 섹션 안에 있는지로 활성을 판별한다. 포커스는 페이지에 하나뿐이라
|
|
7
|
+
// 여러 nav가 있어도 항상 한 곳만 강조된다(별도 조율 불필요). 링크 클릭 시엔 해당 섹션의
|
|
8
|
+
// 첫 입력 요소로 포커스를 옮겨 → 활성이 따라오고 브라우저가 자동으로 스크롤한다.
|
|
9
|
+
const Root = ({ items, classNames }) => {
|
|
10
|
+
const [activeId, setActiveId] = useState('');
|
|
11
|
+
const ids = items?.map((item) => item.id) ?? [];
|
|
12
|
+
const idsKey = ids.join('|');
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const idSet = new Set(ids);
|
|
15
|
+
const onFocusIn = (e) => {
|
|
16
|
+
let el = e.target;
|
|
17
|
+
while (el) {
|
|
18
|
+
if (el.id && idSet.has(el.id)) {
|
|
19
|
+
setActiveId(el.id);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
el = el.parentElement;
|
|
23
|
+
}
|
|
24
|
+
// 포커스가 내 섹션 밖이면 활성 해제 → 지금 편집 중인 섹션의 nav 하나만 강조된다.
|
|
25
|
+
setActiveId('');
|
|
26
|
+
};
|
|
27
|
+
document.addEventListener('focusin', onFocusIn);
|
|
28
|
+
//cleanup함수로 정리
|
|
29
|
+
return () => document.removeEventListener('focusin', onFocusIn);
|
|
30
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31
|
+
}, [idsKey]);
|
|
32
|
+
const moveToSection = (id) => {
|
|
33
|
+
const section = document.getElementById(id);
|
|
34
|
+
if (!section)
|
|
35
|
+
return;
|
|
36
|
+
const focusable = section.querySelector(FOCUSABLE);
|
|
37
|
+
if (focusable) {
|
|
38
|
+
focusable.focus();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
section.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
42
|
+
setActiveId(id);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return (_jsx("nav", { className: classNames?.root, children: items?.map((item) => {
|
|
46
|
+
const isActive = item.id === activeId;
|
|
47
|
+
return (_jsx("button", { type: "button", "aria-current": isActive ? 'true' : undefined, "data-active": isActive, onClick: () => moveToSection(item.id), className: cn(classNames?.item), children: item.label }, item.id));
|
|
48
|
+
}) }));
|
|
49
|
+
};
|
|
50
|
+
export const SectionNavBase = {
|
|
51
|
+
Root,
|
|
52
|
+
};
|
|
53
|
+
export default SectionNavBase;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type RegisterOptions } from 'react-hook-form';
|
|
2
|
+
import { type LDMultiSelectProps } from './LDMultiSelect.js';
|
|
3
|
+
interface LDFormMultiSelectProps extends Omit<LDMultiSelectProps, 'value' | 'onChange' | 'color' | 'name'> {
|
|
4
|
+
block?: boolean;
|
|
5
|
+
name: string;
|
|
6
|
+
options?: RegisterOptions;
|
|
7
|
+
customErrorMessage?: string;
|
|
8
|
+
isHiddenErrorMessage?: boolean;
|
|
9
|
+
errorClassName?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const LDFormMultiSelect: ({ name, options, variant, size, block, disabled, customErrorMessage, isHiddenErrorMessage, errorClassName, ...props }: LDFormMultiSelectProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export default LDFormMultiSelect;
|
|
13
|
+
//# sourceMappingURL=LDFormMultiSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDFormMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/LDSelect/LDFormMultiSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAKzE,UAAU,sBAAuB,SAAQ,IAAI,CAC3C,kBAAkB,EAClB,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CACxC;IACC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,iBAAiB,GAAI,uHAWxB,sBAAsB,4CAuCxB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -4,11 +4,11 @@ import LDMultiSelect from './LDMultiSelect.js';
|
|
|
4
4
|
import FormField from '../LDForm/LDFormField.js';
|
|
5
5
|
import FormErrorMessage from '../LDForm/LDFormErrorMessage.js';
|
|
6
6
|
import cn from '../../utils/cn.js';
|
|
7
|
-
const
|
|
7
|
+
const LDFormMultiSelect = ({ name, options, variant = 'filled', size = 'small', block = false, disabled = false, customErrorMessage = '', isHiddenErrorMessage = false, errorClassName, ...props }) => {
|
|
8
8
|
return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, children: ({ field, fieldState }) => (_jsxs("div", { className: cn('relative', block && 'flex flex-1'), children: [_jsx(LDMultiSelect, { ...props, name: name, value: Array.isArray(field.value)
|
|
9
9
|
? field.value
|
|
10
10
|
: field.value
|
|
11
11
|
? [field.value]
|
|
12
12
|
: [], onChange: field.onChange, "aria-invalid": field['aria-invalid'], "aria-describedby": field['aria-describedby'], variant: variant, color: fieldState.hasError ? 'danger' : 'neutral', size: size, disabled: disabled }), !isHiddenErrorMessage && (_jsx(FormErrorMessage, { error: fieldState.error, disabled: disabled, className: errorClassName }))] })) }));
|
|
13
13
|
};
|
|
14
|
-
export default
|
|
14
|
+
export default LDFormMultiSelect;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type RegisterOptions } from 'react-hook-form';
|
|
2
|
+
import { type LDSelectProps } from './LDSelect.js';
|
|
3
|
+
interface LDFormSelectProps extends Omit<LDSelectProps, 'value' | 'onChange' | 'color' | 'name'> {
|
|
4
|
+
block?: boolean;
|
|
5
|
+
name: string;
|
|
6
|
+
options?: RegisterOptions;
|
|
7
|
+
customErrorMessage?: string;
|
|
8
|
+
isHiddenErrorMessage?: boolean;
|
|
9
|
+
errorClassName?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const LDFormSelect: ({ name, options, variant, size, disabled, customErrorMessage, isHiddenErrorMessage, errorClassName, ...props }: LDFormSelectProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export default LDFormSelect;
|
|
13
|
+
//# sourceMappingURL=LDFormSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDFormSelect.d.ts","sourceRoot":"","sources":["../../../src/components/LDSelect/LDFormSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAK1D,UAAU,iBAAkB,SAAQ,IAAI,CACtC,aAAa,EACb,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CACxC;IACC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,YAAY,GAAI,gHAUnB,iBAAiB,4CAiCnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import LDSelect from './LDSelect.js';
|
|
4
|
+
import FormField from '../LDForm/LDFormField.js';
|
|
5
|
+
import FormErrorMessage from '../LDForm/LDFormErrorMessage.js';
|
|
6
|
+
import cn from '../../utils/cn.js';
|
|
7
|
+
const LDFormSelect = ({ name, options, variant = 'filled', size = 'small', disabled = false, customErrorMessage = '', isHiddenErrorMessage = false, errorClassName, ...props }) => {
|
|
8
|
+
return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, children: ({ field, fieldState }) => (_jsxs("div", { className: cn('relative flex flex-1'), children: [_jsx(LDSelect, { ...props, name: name, value: field.value ?? '', onChange: field.onChange, "aria-invalid": field['aria-invalid'], "aria-describedby": field['aria-describedby'], variant: variant, color: fieldState.hasError ? 'danger' : 'neutral', size: size, disabled: disabled }), !isHiddenErrorMessage && (_jsx(FormErrorMessage, { error: fieldState.error, disabled: disabled, className: errorClassName }))] })) }));
|
|
9
|
+
};
|
|
10
|
+
export default LDFormSelect;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { type SelectOption } from './SelectBase.js';
|
|
3
|
-
type MultiSelectVariant = 'filled' | 'outline'
|
|
3
|
+
type MultiSelectVariant = 'filled' | 'outline';
|
|
4
4
|
type MultiSelectColor = 'neutral' | 'point' | 'danger';
|
|
5
|
-
type MultiSelectSize = '
|
|
5
|
+
type MultiSelectSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
|
|
6
|
+
type MultiSelectAlign = 'left' | 'center' | 'right';
|
|
6
7
|
export interface LDMultiSelectProps {
|
|
7
8
|
items: SelectOption[];
|
|
8
9
|
placeholder?: string;
|
|
@@ -13,6 +14,8 @@ export interface LDMultiSelectProps {
|
|
|
13
14
|
variant?: MultiSelectVariant;
|
|
14
15
|
color?: MultiSelectColor;
|
|
15
16
|
size?: MultiSelectSize;
|
|
17
|
+
/** 트리거 값/placeholder 정렬 (기본 left) */
|
|
18
|
+
align?: MultiSelectAlign;
|
|
16
19
|
maxDisplay?: number;
|
|
17
20
|
/**
|
|
18
21
|
* true(기본): "A, B 외 N개" 요약 텍스트로 표시 (X 삭제 없음).
|
|
@@ -26,6 +29,6 @@ export interface LDMultiSelectProps {
|
|
|
26
29
|
'aria-describedby'?: string;
|
|
27
30
|
}
|
|
28
31
|
export type { SelectOption as MultiSelectOption };
|
|
29
|
-
declare const LDMultiSelect: ({ items, placeholder, value, onChange, disabled, name, variant, color, size, maxDisplay, truncate, className, style, contentClassName, "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedby, }: LDMultiSelectProps) => import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
declare const LDMultiSelect: ({ items, placeholder, value, onChange, disabled, name, variant, color, size, align, maxDisplay, truncate, className, style, contentClassName, "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedby, }: LDMultiSelectProps) => import("react/jsx-runtime").JSX.Element;
|
|
30
33
|
export default LDMultiSelect;
|
|
31
34
|
//# sourceMappingURL=LDMultiSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/LDSelect/LDMultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAK7D,KAAK,kBAAkB,GAAG,QAAQ,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"LDMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/LDSelect/LDMultiSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAK7D,KAAK,kBAAkB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/C,KAAK,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AACvD,KAAK,eAAe,GAChB,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AACb,KAAK,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAwDpD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,qCAAqC;IACrC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,YAAY,EAAE,YAAY,IAAI,iBAAiB,EAAE,CAAC;AAElD,QAAA,MAAM,aAAa,GAAI,mNAkBpB,kBAAkB,4CA+HpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|