@loword/loword-design-system 0.0.2 → 0.0.4
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 +77 -3
- package/dist/components/BreadCrumb/BreadCrumb.d.ts +17 -0
- package/dist/components/BreadCrumb/BreadCrumb.d.ts.map +1 -0
- package/dist/components/BreadCrumb/BreadCrumb.js +37 -0
- package/dist/components/BreadCrumb/BreadCrumbBase.d.ts +9 -0
- package/dist/components/BreadCrumb/BreadCrumbBase.d.ts.map +1 -0
- package/dist/components/BreadCrumb/BreadCrumbBase.js +17 -0
- package/dist/components/Button/ButtonSpinner.d.ts +1 -2
- package/dist/components/Button/ButtonSpinner.d.ts.map +1 -1
- package/dist/components/Button/ButtonSpinner.js +3 -2
- package/dist/components/Callout/Callout.d.ts +10 -0
- package/dist/components/Callout/Callout.d.ts.map +1 -0
- package/dist/components/Callout/Callout.js +6 -0
- package/dist/components/Callout/CalloutBase.d.ts +18 -0
- package/dist/components/Callout/CalloutBase.d.ts.map +1 -0
- package/dist/components/Callout/CalloutBase.js +21 -0
- package/dist/components/Divider/Divider.d.ts +9 -0
- package/dist/components/Divider/Divider.d.ts.map +1 -0
- package/dist/components/Divider/Divider.js +11 -0
- package/dist/components/Divider/DividerBase.d.ts +9 -0
- package/dist/components/Divider/DividerBase.d.ts.map +1 -0
- package/dist/components/Divider/DividerBase.js +9 -0
- package/dist/components/FileUpload/FileUploadBase.d.ts +5 -5
- package/dist/components/FileUpload/FileUploadBase.d.ts.map +1 -1
- package/dist/components/FileUpload/FileUploadBase.js +4 -4
- package/dist/components/Form/FormField.d.ts +2 -2
- package/dist/components/LDAvatar/AvatarBase.d.ts +32 -0
- package/dist/components/LDAvatar/AvatarBase.d.ts.map +1 -0
- package/dist/components/LDAvatar/AvatarBase.js +49 -0
- package/dist/components/LDAvatar/LDAvatar.d.ts +11 -0
- package/dist/components/LDAvatar/LDAvatar.d.ts.map +1 -0
- package/dist/components/LDAvatar/LDAvatar.js +24 -0
- package/dist/components/LDBadge/BadgeBase.d.ts +10 -0
- package/dist/components/LDBadge/BadgeBase.d.ts.map +1 -0
- package/dist/components/LDBadge/BadgeBase.js +9 -0
- package/dist/components/LDBadge/LDBadge.d.ts +25 -0
- package/dist/components/LDBadge/LDBadge.d.ts.map +1 -0
- package/dist/components/LDBadge/LDBadge.js +36 -0
- package/dist/components/LDBreadCrumb/BreadCrumbBase.d.ts +9 -0
- package/dist/components/LDBreadCrumb/BreadCrumbBase.d.ts.map +1 -0
- package/dist/components/LDBreadCrumb/BreadCrumbBase.js +17 -0
- package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts +17 -0
- package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts.map +1 -0
- package/dist/components/LDBreadCrumb/LDBreadCrumb.js +37 -0
- package/dist/components/LDButton/ButtonBase.d.ts +5 -0
- package/dist/components/LDButton/ButtonBase.d.ts.map +1 -0
- package/dist/components/LDButton/ButtonBase.js +10 -0
- package/dist/components/LDButton/ButtonSpinner.d.ts +8 -0
- package/dist/components/LDButton/ButtonSpinner.d.ts.map +1 -0
- package/dist/components/LDButton/ButtonSpinner.js +15 -0
- package/dist/components/LDButton/LDButton.d.ts +26 -0
- package/dist/components/LDButton/LDButton.d.ts.map +1 -0
- package/dist/components/LDButton/LDButton.js +102 -0
- package/dist/components/LDCalendar/LDCalendar.d.ts +16 -0
- package/dist/components/LDCalendar/LDCalendar.d.ts.map +1 -0
- package/dist/components/LDCalendar/LDCalendar.js +75 -0
- package/dist/components/LDCallout/CalloutBase.d.ts +18 -0
- package/dist/components/LDCallout/CalloutBase.d.ts.map +1 -0
- package/dist/components/LDCallout/CalloutBase.js +21 -0
- package/dist/components/LDCallout/LDCallout.d.ts +10 -0
- package/dist/components/LDCallout/LDCallout.d.ts.map +1 -0
- package/dist/components/LDCallout/LDCallout.js +6 -0
- package/dist/components/LDCarousel/CarouselBase.d.ts +98 -0
- package/dist/components/LDCarousel/CarouselBase.d.ts.map +1 -0
- package/dist/components/LDCarousel/CarouselBase.js +144 -0
- package/dist/components/LDCarousel/LDCarousel.d.ts +50 -0
- package/dist/components/LDCarousel/LDCarousel.d.ts.map +1 -0
- package/dist/components/LDCarousel/LDCarousel.js +22 -0
- package/dist/components/LDCheckbox/CheckboxBase.d.ts +40 -0
- package/dist/components/LDCheckbox/CheckboxBase.d.ts.map +1 -0
- package/dist/components/LDCheckbox/CheckboxBase.js +57 -0
- package/dist/components/LDCheckbox/FormCheckbox.d.ts +14 -0
- package/dist/components/LDCheckbox/FormCheckbox.d.ts.map +1 -0
- package/dist/components/LDCheckbox/FormCheckbox.js +9 -0
- package/dist/components/LDCheckbox/FormCheckboxGroup.d.ts +13 -0
- package/dist/components/LDCheckbox/FormCheckboxGroup.d.ts.map +1 -0
- package/dist/components/LDCheckbox/FormCheckboxGroup.js +9 -0
- package/dist/components/LDCheckbox/LDCheckbox.d.ts +27 -0
- package/dist/components/LDCheckbox/LDCheckbox.d.ts.map +1 -0
- package/dist/components/LDCheckbox/LDCheckbox.js +30 -0
- package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts +22 -0
- package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts.map +1 -0
- package/dist/components/LDCheckbox/LDCheckboxGroup.js +13 -0
- package/dist/components/LDDataCalendar/DataCalendarBase.d.ts +45 -0
- package/dist/components/LDDataCalendar/DataCalendarBase.d.ts.map +1 -0
- package/dist/components/LDDataCalendar/DataCalendarBase.js +57 -0
- package/dist/components/LDDataCalendar/LDDataCalendar.d.ts +12 -0
- package/dist/components/LDDataCalendar/LDDataCalendar.d.ts.map +1 -0
- package/dist/components/LDDataCalendar/LDDataCalendar.js +13 -0
- package/dist/components/LDDatePicker/FormDatePicker.d.ts +12 -0
- package/dist/components/LDDatePicker/FormDatePicker.d.ts.map +1 -0
- package/dist/components/LDDatePicker/FormDatePicker.js +12 -0
- package/dist/components/LDDatePicker/LDDatePicker.d.ts +34 -0
- package/dist/components/LDDatePicker/LDDatePicker.d.ts.map +1 -0
- package/dist/components/LDDatePicker/LDDatePicker.js +44 -0
- package/dist/components/LDDateRangePicker/FormDateRangePicker.d.ts +12 -0
- package/dist/components/LDDateRangePicker/FormDateRangePicker.d.ts.map +1 -0
- package/dist/components/LDDateRangePicker/FormDateRangePicker.js +10 -0
- package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts +49 -0
- package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts.map +1 -0
- package/dist/components/LDDateRangePicker/LDDateRangePicker.js +197 -0
- package/dist/components/LDDivider/DividerBase.d.ts +9 -0
- package/dist/components/LDDivider/DividerBase.d.ts.map +1 -0
- package/dist/components/LDDivider/DividerBase.js +9 -0
- package/dist/components/LDDivider/LDDivider.d.ts +9 -0
- package/dist/components/LDDivider/LDDivider.d.ts.map +1 -0
- package/dist/components/LDDivider/LDDivider.js +11 -0
- package/dist/components/LDDrawer/DrawerBase.d.ts +52 -0
- package/dist/components/LDDrawer/DrawerBase.d.ts.map +1 -0
- package/dist/components/LDDrawer/DrawerBase.js +38 -0
- package/dist/components/LDDrawer/LDDrawer.d.ts +51 -0
- package/dist/components/LDDrawer/LDDrawer.d.ts.map +1 -0
- package/dist/components/LDDrawer/LDDrawer.js +30 -0
- package/dist/components/LDEditor/EditorBase.d.ts +52 -0
- package/dist/components/LDEditor/EditorBase.d.ts.map +1 -0
- package/dist/components/LDEditor/EditorBase.js +89 -0
- package/dist/components/LDEditor/LDEditor.d.ts +12 -0
- package/dist/components/LDEditor/LDEditor.d.ts.map +1 -0
- package/dist/components/LDEditor/LDEditor.js +162 -0
- package/dist/components/LDEditor/LDViewer.d.ts +7 -0
- package/dist/components/LDEditor/LDViewer.d.ts.map +1 -0
- package/dist/components/LDEditor/LDViewer.js +9 -0
- package/dist/components/LDEditor/extensions.d.ts +6 -0
- package/dist/components/LDEditor/extensions.d.ts.map +1 -0
- package/dist/components/LDEditor/extensions.js +38 -0
- package/dist/components/LDFileUpload/LDFileUploadBase.d.ts +50 -0
- package/dist/components/LDFileUpload/LDFileUploadBase.d.ts.map +1 -0
- package/dist/components/LDFileUpload/LDFileUploadBase.js +102 -0
- package/dist/components/LDInput/FormInput.d.ts +15 -0
- package/dist/components/LDInput/FormInput.d.ts.map +1 -0
- package/dist/components/LDInput/FormInput.js +19 -0
- package/dist/components/LDInput/InputBase.d.ts +22 -0
- package/dist/components/LDInput/InputBase.d.ts.map +1 -0
- package/dist/components/LDInput/InputBase.js +17 -0
- package/dist/components/LDInput/LDInput.d.ts +24 -0
- package/dist/components/LDInput/LDInput.d.ts.map +1 -0
- package/dist/components/LDInput/LDInput.js +71 -0
- package/dist/components/LDLNB/LDLNBBase.d.ts +82 -0
- package/dist/components/LDLNB/LDLNBBase.d.ts.map +1 -0
- package/dist/components/LDLNB/LDLNBBase.js +108 -0
- package/dist/components/LDLoadingDots/LDLoadingDots.d.ts +8 -0
- package/dist/components/LDLoadingDots/LDLoadingDots.d.ts.map +1 -0
- package/dist/components/LDLoadingDots/LDLoadingDots.js +29 -0
- package/dist/components/LDMenuBar/LDMenuBar.d.ts +21 -0
- package/dist/components/LDMenuBar/LDMenuBar.d.ts.map +1 -0
- package/dist/components/LDMenuBar/LDMenuBar.js +33 -0
- package/dist/components/LDMenuBar/MenuBarBase.d.ts +43 -0
- package/dist/components/LDMenuBar/MenuBarBase.d.ts.map +1 -0
- package/dist/components/LDMenuBar/MenuBarBase.js +69 -0
- package/dist/components/LDModal/LDModal.d.ts +51 -0
- package/dist/components/LDModal/LDModal.d.ts.map +1 -0
- package/dist/components/LDModal/LDModal.js +72 -0
- package/dist/components/LDModal/ModalBase.d.ts +42 -0
- package/dist/components/LDModal/ModalBase.d.ts.map +1 -0
- package/dist/components/LDModal/ModalBase.js +30 -0
- package/dist/components/LDModal/openModal.d.ts +24 -0
- package/dist/components/LDModal/openModal.d.ts.map +1 -0
- package/dist/components/LDModal/openModal.js +52 -0
- package/dist/components/LDOTPInput/LDOTPInput.d.ts +46 -0
- package/dist/components/LDOTPInput/LDOTPInput.d.ts.map +1 -0
- package/dist/components/LDOTPInput/LDOTPInput.js +87 -0
- package/dist/components/LDPagination/LDPagination.d.ts +12 -0
- package/dist/components/LDPagination/LDPagination.d.ts.map +1 -0
- package/dist/components/LDPagination/LDPagination.js +5 -0
- package/dist/components/LDPagination/PaginationBase.d.ts +36 -0
- package/dist/components/LDPagination/PaginationBase.d.ts.map +1 -0
- package/dist/components/LDPagination/PaginationBase.js +44 -0
- package/dist/components/LDPagination/paginationUtils.d.ts +2 -0
- package/dist/components/LDPagination/paginationUtils.d.ts.map +1 -0
- package/dist/components/LDPagination/paginationUtils.js +18 -0
- package/dist/components/LDPopover/LDPopover.d.ts +42 -0
- package/dist/components/LDPopover/LDPopover.d.ts.map +1 -0
- package/dist/components/LDPopover/LDPopover.js +31 -0
- package/dist/components/LDPopover/PopoverBase.d.ts +31 -0
- package/dist/components/LDPopover/PopoverBase.d.ts.map +1 -0
- package/dist/components/LDPopover/PopoverBase.js +18 -0
- package/dist/components/LDRadio/FormRadioGroup.d.ts +13 -0
- package/dist/components/LDRadio/FormRadioGroup.d.ts.map +1 -0
- package/dist/components/LDRadio/FormRadioGroup.js +9 -0
- package/dist/components/LDRadio/LDRadio.d.ts +24 -0
- package/dist/components/LDRadio/LDRadio.d.ts.map +1 -0
- package/dist/components/LDRadio/LDRadio.js +39 -0
- package/dist/components/LDRadio/LDRadioGroup.d.ts +22 -0
- package/dist/components/LDRadio/LDRadioGroup.d.ts.map +1 -0
- package/dist/components/LDRadio/LDRadioGroup.js +7 -0
- package/dist/components/LDRadio/RadioBase.d.ts +38 -0
- package/dist/components/LDRadio/RadioBase.d.ts.map +1 -0
- package/dist/components/LDRadio/RadioBase.js +46 -0
- package/dist/components/LDScrollArea/LDScrollArea.d.ts +15 -0
- package/dist/components/LDScrollArea/LDScrollArea.d.ts.map +1 -0
- package/dist/components/LDScrollArea/LDScrollArea.js +10 -0
- package/dist/components/LDSelect/FormMultiSelect.d.ts +13 -0
- package/dist/components/LDSelect/FormMultiSelect.d.ts.map +1 -0
- package/dist/components/LDSelect/FormMultiSelect.js +14 -0
- package/dist/components/LDSelect/FormSelect.d.ts +13 -0
- package/dist/components/LDSelect/FormSelect.d.ts.map +1 -0
- package/dist/components/LDSelect/FormSelect.js +10 -0
- package/dist/components/LDSelect/LDMultiSelect.d.ts +31 -0
- package/dist/components/LDSelect/LDMultiSelect.d.ts.map +1 -0
- package/dist/components/LDSelect/LDMultiSelect.js +59 -0
- package/dist/components/LDSelect/LDSelect.d.ts +41 -0
- package/dist/components/LDSelect/LDSelect.d.ts.map +1 -0
- package/dist/components/LDSelect/LDSelect.js +55 -0
- package/dist/components/LDSelect/SelectBase.d.ts +59 -0
- package/dist/components/LDSelect/SelectBase.d.ts.map +1 -0
- package/dist/components/LDSelect/SelectBase.js +211 -0
- package/dist/components/LDSkeleton/LDSkeleton.d.ts +10 -0
- package/dist/components/LDSkeleton/LDSkeleton.d.ts.map +1 -0
- package/dist/components/LDSkeleton/LDSkeleton.js +8 -0
- package/dist/components/LDSlider/LDSlider.d.ts +23 -0
- package/dist/components/LDSlider/LDSlider.d.ts.map +1 -0
- package/dist/components/LDSlider/LDSlider.js +195 -0
- package/dist/components/LDSpinner/LDSpinner.d.ts +25 -0
- package/dist/components/LDSpinner/LDSpinner.d.ts.map +1 -0
- package/dist/components/LDSpinner/LDSpinner.js +20 -0
- package/dist/components/LDTable/LDTable.d.ts +34 -0
- package/dist/components/LDTable/LDTable.d.ts.map +1 -0
- package/dist/components/LDTable/LDTable.js +29 -0
- package/dist/components/LDTable/LDTanstackTable.d.ts +23 -0
- package/dist/components/LDTable/LDTanstackTable.d.ts.map +1 -0
- package/dist/components/LDTable/LDTanstackTable.js +35 -0
- package/dist/components/LDTable/TableBase.d.ts +37 -0
- package/dist/components/LDTable/TableBase.d.ts.map +1 -0
- package/dist/components/LDTable/TableBase.js +39 -0
- package/dist/components/LDTable/TableField.d.ts +64 -0
- package/dist/components/LDTable/TableField.d.ts.map +1 -0
- package/dist/components/LDTable/TableField.js +87 -0
- package/dist/components/LDTimePicker/FormTimePicker.d.ts +12 -0
- package/dist/components/LDTimePicker/FormTimePicker.d.ts.map +1 -0
- package/dist/components/LDTimePicker/FormTimePicker.js +12 -0
- package/dist/components/LDTimePicker/LDTimePicker.d.ts +27 -0
- package/dist/components/LDTimePicker/LDTimePicker.d.ts.map +1 -0
- package/dist/components/LDTimePicker/LDTimePicker.js +120 -0
- package/dist/components/LDToast/LDToast.d.ts +18 -0
- package/dist/components/LDToast/LDToast.d.ts.map +1 -0
- package/dist/components/LDToast/LDToast.js +42 -0
- package/dist/components/LDToast/LDToaster.d.ts +7 -0
- package/dist/components/LDToast/LDToaster.d.ts.map +1 -0
- package/dist/components/LDToast/LDToaster.js +7 -0
- package/dist/components/LDToggleButton/FormToggleButton.d.ts +12 -0
- package/dist/components/LDToggleButton/FormToggleButton.d.ts.map +1 -0
- package/dist/components/LDToggleButton/FormToggleButton.js +9 -0
- package/dist/components/LDToggleButton/LDToggleButton.d.ts +31 -0
- package/dist/components/LDToggleButton/LDToggleButton.d.ts.map +1 -0
- package/dist/components/LDToggleButton/LDToggleButton.js +42 -0
- package/dist/components/LDToggleButton/ToggleButtonBase.d.ts +41 -0
- package/dist/components/LDToggleButton/ToggleButtonBase.d.ts.map +1 -0
- package/dist/components/LDToggleButton/ToggleButtonBase.js +59 -0
- package/dist/components/LDTooltip/LDTooltip.d.ts +18 -0
- package/dist/components/LDTooltip/LDTooltip.d.ts.map +1 -0
- package/dist/components/LDTooltip/LDTooltip.js +13 -0
- package/dist/components/LDTooltip/TooltipBase.d.ts +39 -0
- package/dist/components/LDTooltip/TooltipBase.d.ts.map +1 -0
- package/dist/components/LDTooltip/TooltipBase.js +46 -0
- package/dist/components/LNB/LNBBase.js +2 -2
- package/dist/components/Spinner/Spinner.d.ts +1 -1
- package/dist/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.js +1 -1
- package/dist/index.css +115 -13
- package/dist/index.d.ts +52 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +88 -82
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type HTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes, type ReactNode, type Ref } from 'react';
|
|
2
|
+
interface RootProps extends HTMLAttributes<HTMLTableElement> {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
ref?: Ref<HTMLTableElement>;
|
|
5
|
+
}
|
|
6
|
+
interface HeaderProps extends HTMLAttributes<HTMLTableSectionElement> {
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
interface BodyProps extends HTMLAttributes<HTMLTableSectionElement> {
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
interface HeaderRowProps extends HTMLAttributes<HTMLTableRowElement> {
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
interface RowProps extends HTMLAttributes<HTMLTableRowElement> {
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
selected?: boolean;
|
|
18
|
+
}
|
|
19
|
+
interface HeaderCellProps extends ThHTMLAttributes<HTMLTableCellElement> {
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
sortable?: boolean;
|
|
22
|
+
sortDirection?: 'asc' | 'desc' | false;
|
|
23
|
+
}
|
|
24
|
+
interface CellProps extends TdHTMLAttributes<HTMLTableCellElement> {
|
|
25
|
+
children?: ReactNode;
|
|
26
|
+
}
|
|
27
|
+
export declare const TableBase: {
|
|
28
|
+
Root: ({ className, children, ref, ...props }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
Header: ({ className, children, ...props }: HeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
Body: ({ className, children, ...props }: BodyProps) => import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
HeaderRow: ({ className, children, ...props }: HeaderRowProps) => import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
Row: ({ className, children, selected, ...props }: RowProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
HeaderCell: ({ className, children, sortable, sortDirection, ...props }: HeaderCellProps) => import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
Cell: ({ className, children, ...props }: CellProps) => import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
};
|
|
36
|
+
export default TableBase;
|
|
37
|
+
//# sourceMappingURL=TableBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDTable/TableBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAIf,UAAU,SAAU,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IAC1D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AAgBD,UAAU,WAAY,SAAQ,cAAc,CAAC,uBAAuB,CAAC;IACnE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAWD,UAAU,SAAU,SAAQ,cAAc,CAAC,uBAAuB,CAAC;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAWD,UAAU,cAAe,SAAQ,cAAc,CAAC,mBAAmB,CAAC;IAClE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAWD,UAAU,QAAS,SAAQ,cAAc,CAAC,mBAAmB,CAAC;IAC5D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiBD,UAAU,eAAgB,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;CACxC;AA8BD,UAAU,SAAU,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IAChE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAUD,eAAO,MAAM,SAAS;mDAvHgC,SAAS;gDAkBZ,WAAW;8CAab,SAAS;mDAaJ,cAAc;uDAcV,QAAQ;6EA2B/D,eAAe;8CA0B+B,SAAS;CAgBzD,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import cn from '../../utils/cn.js';
|
|
3
|
+
const Root = ({ className, children, ref, ...props }) => {
|
|
4
|
+
return (_jsx("table", { ref: ref, role: "table", className: cn('w-full', className), ...props, children: children }));
|
|
5
|
+
};
|
|
6
|
+
const Header = ({ className, children, ...props }) => {
|
|
7
|
+
return (_jsx("thead", { role: "rowgroup", className: className, ...props, children: children }));
|
|
8
|
+
};
|
|
9
|
+
const Body = ({ className, children, ...props }) => {
|
|
10
|
+
return (_jsx("tbody", { role: "rowgroup", className: className, ...props, children: children }));
|
|
11
|
+
};
|
|
12
|
+
const HeaderRow = ({ className, children, ...props }) => {
|
|
13
|
+
return (_jsx("tr", { role: "row", className: className, ...props, children: children }));
|
|
14
|
+
};
|
|
15
|
+
const Row = ({ className, children, selected, ...props }) => {
|
|
16
|
+
return (_jsx("tr", { role: "row", "aria-selected": selected, "data-state": selected ? 'selected' : undefined, className: className, ...props, children: children }));
|
|
17
|
+
};
|
|
18
|
+
const HeaderCell = ({ className, children, sortable, sortDirection, ...props }) => {
|
|
19
|
+
return (_jsx("th", { role: "columnheader", "aria-sort": sortDirection === 'asc'
|
|
20
|
+
? 'ascending'
|
|
21
|
+
: sortDirection === 'desc'
|
|
22
|
+
? 'descending'
|
|
23
|
+
: sortable
|
|
24
|
+
? 'none'
|
|
25
|
+
: undefined, className: className, ...props, children: children }));
|
|
26
|
+
};
|
|
27
|
+
const Cell = ({ className, children, ...props }) => {
|
|
28
|
+
return (_jsx("td", { role: "cell", className: className, ...props, children: children }));
|
|
29
|
+
};
|
|
30
|
+
export const TableBase = {
|
|
31
|
+
Root,
|
|
32
|
+
Header,
|
|
33
|
+
Body,
|
|
34
|
+
HeaderRow,
|
|
35
|
+
Row,
|
|
36
|
+
HeaderCell,
|
|
37
|
+
Cell,
|
|
38
|
+
};
|
|
39
|
+
export default TableBase;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { type ReactNode, type Dispatch, type SetStateAction } from 'react';
|
|
2
|
+
import { flexRender, type ColumnDef, type RowSelectionState, type PaginationState, type SortingState, type Row, type HeaderGroup, type Header, type Cell } from '@tanstack/react-table';
|
|
3
|
+
export interface Pageable<T> {
|
|
4
|
+
data: T[];
|
|
5
|
+
page?: number;
|
|
6
|
+
limit?: number;
|
|
7
|
+
totalCount: number;
|
|
8
|
+
totalPages?: number;
|
|
9
|
+
hasNext?: boolean;
|
|
10
|
+
hasPrev?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface TableFieldProps<TData, TColumn> {
|
|
13
|
+
/** 컬럼 정의 */
|
|
14
|
+
columns: ColumnDef<TData, TColumn>[];
|
|
15
|
+
/** 테이블 데이터 */
|
|
16
|
+
data: TData[];
|
|
17
|
+
/** 페이지네이션 */
|
|
18
|
+
pageable?: Pageable<TData>;
|
|
19
|
+
paginationState?: [
|
|
20
|
+
PaginationState,
|
|
21
|
+
Dispatch<SetStateAction<PaginationState>>
|
|
22
|
+
];
|
|
23
|
+
onPageChange?: (page: number) => void;
|
|
24
|
+
/** 정렬 */
|
|
25
|
+
sortingState?: [SortingState, Dispatch<SetStateAction<SortingState>>];
|
|
26
|
+
/** 행 선택 */
|
|
27
|
+
enableRowSelection?: boolean | ((row: Row<TData>) => boolean);
|
|
28
|
+
enableMultiRowSelection?: boolean;
|
|
29
|
+
rowSelectionState?: [
|
|
30
|
+
RowSelectionState,
|
|
31
|
+
Dispatch<SetStateAction<RowSelectionState>>
|
|
32
|
+
];
|
|
33
|
+
enableToggleAllRowsSelection?: boolean;
|
|
34
|
+
getRowId?: (row: TData, index: number) => string;
|
|
35
|
+
/** render props */
|
|
36
|
+
children: (props: TableFieldRenderProps<TData>) => ReactNode;
|
|
37
|
+
}
|
|
38
|
+
export interface TableFieldRenderProps<TData> {
|
|
39
|
+
headerGroups: HeaderGroup<TData>[];
|
|
40
|
+
rows: Row<TData>[];
|
|
41
|
+
isEmpty: boolean;
|
|
42
|
+
currentPage: number;
|
|
43
|
+
totalPages: number;
|
|
44
|
+
toggleAllRowsSelected: () => void;
|
|
45
|
+
setPageIndex: (index: number) => void;
|
|
46
|
+
onPageChange: (page: number) => void;
|
|
47
|
+
flexRender: typeof flexRender;
|
|
48
|
+
getHeader: (header: Header<TData, unknown>) => {
|
|
49
|
+
id: string;
|
|
50
|
+
canSort: boolean;
|
|
51
|
+
isSorted: false | 'asc' | 'desc';
|
|
52
|
+
size: number;
|
|
53
|
+
toggleSortingHandler: ((event: unknown) => void) | undefined;
|
|
54
|
+
renderHeader: () => ReactNode;
|
|
55
|
+
meta: Record<string, unknown> | undefined;
|
|
56
|
+
};
|
|
57
|
+
getCell: (cell: Cell<TData, unknown>) => {
|
|
58
|
+
id: string;
|
|
59
|
+
renderCell: () => ReactNode;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
declare const TableField: <TData, TColumn>({ columns, data, pageable, paginationState, onPageChange, sortingState, enableRowSelection, enableMultiRowSelection, rowSelectionState, enableToggleAllRowsSelection, getRowId, children, }: TableFieldProps<TData, TColumn>) => ReactNode;
|
|
63
|
+
export default TableField;
|
|
64
|
+
//# sourceMappingURL=TableField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableField.d.ts","sourceRoot":"","sources":["../../../src/components/LDTable/TableField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useReactTable, getCoreRowModel, getSortedRowModel, flexRender, } from '@tanstack/react-table';
|
|
3
|
+
import { useRouter, useSearchParams, usePathname } from 'next/navigation';
|
|
4
|
+
const TableField = ({ columns, data, pageable, paginationState, onPageChange, sortingState, enableRowSelection = false, enableMultiRowSelection = false, rowSelectionState, enableToggleAllRowsSelection = false, getRowId, children, }) => {
|
|
5
|
+
const router = useRouter();
|
|
6
|
+
const searchParams = useSearchParams();
|
|
7
|
+
const pathname = usePathname();
|
|
8
|
+
const [pagination, setPagination] = paginationState ?? [
|
|
9
|
+
{ pageIndex: 0, pageSize: 10 },
|
|
10
|
+
() => { },
|
|
11
|
+
];
|
|
12
|
+
const [rowSelection, setRowSelection] = rowSelectionState ?? [
|
|
13
|
+
undefined,
|
|
14
|
+
undefined,
|
|
15
|
+
];
|
|
16
|
+
const [sorting, setSorting] = sortingState ?? [[], () => { }];
|
|
17
|
+
const processedColumns = columns.map((col) => ({
|
|
18
|
+
...col,
|
|
19
|
+
enableSorting: col.enableSorting ?? false,
|
|
20
|
+
sortDescFirst: col.sortDescFirst ?? false,
|
|
21
|
+
}));
|
|
22
|
+
const table = useReactTable({
|
|
23
|
+
columns: processedColumns,
|
|
24
|
+
data,
|
|
25
|
+
getCoreRowModel: getCoreRowModel(),
|
|
26
|
+
state: {
|
|
27
|
+
pagination,
|
|
28
|
+
rowSelection: rowSelection ?? {},
|
|
29
|
+
sorting,
|
|
30
|
+
},
|
|
31
|
+
enableMultiRowSelection,
|
|
32
|
+
enableRowSelection,
|
|
33
|
+
onRowSelectionChange: setRowSelection,
|
|
34
|
+
getRowId,
|
|
35
|
+
onPaginationChange: setPagination,
|
|
36
|
+
manualPagination: true,
|
|
37
|
+
rowCount: pageable?.totalCount,
|
|
38
|
+
onSortingChange: setSorting,
|
|
39
|
+
getSortedRowModel: getSortedRowModel(),
|
|
40
|
+
});
|
|
41
|
+
const headerGroups = table.getHeaderGroups();
|
|
42
|
+
const rows = table.getRowModel().rows;
|
|
43
|
+
const isEmpty = rows.length === 0;
|
|
44
|
+
const currentPage = (pagination?.pageIndex ?? 0) + 1;
|
|
45
|
+
const totalPages = table.getPageCount();
|
|
46
|
+
const handlePageChange = (page) => {
|
|
47
|
+
table.setPageIndex(page - 1);
|
|
48
|
+
if (onPageChange) {
|
|
49
|
+
onPageChange(page);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const params = new URLSearchParams(searchParams.toString());
|
|
53
|
+
params.set('page', page.toString());
|
|
54
|
+
router.push(`${pathname}?${params.toString()}`, { scroll: false });
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const getHeader = (header) => ({
|
|
58
|
+
id: header.id,
|
|
59
|
+
canSort: header.column.getCanSort(),
|
|
60
|
+
isSorted: header.column.getIsSorted(),
|
|
61
|
+
size: header.getSize(),
|
|
62
|
+
toggleSortingHandler: header.column.getToggleSortingHandler(),
|
|
63
|
+
renderHeader: () => flexRender(header.column.columnDef.header, header.getContext()),
|
|
64
|
+
meta: header.column.columnDef.meta,
|
|
65
|
+
});
|
|
66
|
+
const getCell = (cell) => ({
|
|
67
|
+
id: cell.id,
|
|
68
|
+
renderCell: () => flexRender(cell.column.columnDef.cell, cell.getContext()),
|
|
69
|
+
});
|
|
70
|
+
return children({
|
|
71
|
+
headerGroups,
|
|
72
|
+
rows,
|
|
73
|
+
isEmpty,
|
|
74
|
+
currentPage,
|
|
75
|
+
totalPages,
|
|
76
|
+
toggleAllRowsSelected: () => {
|
|
77
|
+
if (enableToggleAllRowsSelection)
|
|
78
|
+
table.toggleAllRowsSelected();
|
|
79
|
+
},
|
|
80
|
+
setPageIndex: (index) => table.setPageIndex(index),
|
|
81
|
+
onPageChange: handlePageChange,
|
|
82
|
+
flexRender,
|
|
83
|
+
getHeader,
|
|
84
|
+
getCell,
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
export default TableField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type RegisterOptions } from 'react-hook-form';
|
|
2
|
+
import { type LDTimePickerProps } from './LDTimePicker.js';
|
|
3
|
+
interface FormTimePickerProps extends Omit<LDTimePickerProps, 'value' | 'onChange'> {
|
|
4
|
+
name: string;
|
|
5
|
+
options?: RegisterOptions;
|
|
6
|
+
customErrorMessage?: string;
|
|
7
|
+
isHiddenErrorMessage?: boolean;
|
|
8
|
+
errorClassName?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const FormTimePicker: ({ name, options, customErrorMessage, isHiddenErrorMessage, errorClassName, disabled, block, ...props }: FormTimePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default FormTimePicker;
|
|
12
|
+
//# sourceMappingURL=FormTimePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormTimePicker.d.ts","sourceRoot":"","sources":["../../../src/components/LDTimePicker/FormTimePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKtE,UAAU,mBAAoB,SAAQ,IAAI,CACxC,iBAAiB,EACjB,OAAO,GAAG,UAAU,CACrB;IACC,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,cAAc,GAAI,wGASrB,mBAAmB,4CAoCrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import LDTimePicker from './LDTimePicker.js';
|
|
4
|
+
import FormField from '../Form/FormField.js';
|
|
5
|
+
import FormErrorMessage from '../Form/FormErrorMessage.js';
|
|
6
|
+
import cn from '../../utils/cn.js';
|
|
7
|
+
const FormTimePicker = ({ name, options, customErrorMessage = '', isHiddenErrorMessage = false, errorClassName, disabled = false, block = false, ...props }) => {
|
|
8
|
+
return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, children: ({ field, fieldState }) => (_jsxs("div", { className: cn('relative border-2 border-transparent', block ? 'w-full' : 'w-auto'), children: [_jsx(LDTimePicker, { ...props, block: block, value: field.value ?? '', onChange: (time) => {
|
|
9
|
+
field.onChange(time);
|
|
10
|
+
}, disabled: disabled, color: fieldState.hasError ? 'danger' : 'neutral' }), !isHiddenErrorMessage && (_jsx(FormErrorMessage, { error: fieldState.error, disabled: disabled, className: errorClassName }))] })) }));
|
|
11
|
+
};
|
|
12
|
+
export default FormTimePicker;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface LDTimePickerProps {
|
|
2
|
+
/** 선택된 시간 (HH:MM 형식) */
|
|
3
|
+
value?: string;
|
|
4
|
+
/** 초기 선택 시간 (uncontrolled) */
|
|
5
|
+
defaultValue?: string;
|
|
6
|
+
/** 시간 변경 시 호출되는 콜백 */
|
|
7
|
+
onChange?: (value: string) => void;
|
|
8
|
+
/** 미선택 시 표시할 텍스트 */
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
/** 비활성화 여부 */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** true 시 너비 100% */
|
|
13
|
+
block?: boolean;
|
|
14
|
+
/** 색상 테마 (danger 시 에러 스타일) */
|
|
15
|
+
color?: 'neutral' | 'danger';
|
|
16
|
+
/** 최소 선택 가능 시간 (HH:MM 형식, 이전 시간 비활성화) */
|
|
17
|
+
minTime?: string;
|
|
18
|
+
/** 추가 CSS 클래스 */
|
|
19
|
+
className?: string;
|
|
20
|
+
/** 인라인 스타일 (트리거 버튼에 적용) */
|
|
21
|
+
style?: React.CSSProperties;
|
|
22
|
+
/** 트리거 버튼 className */
|
|
23
|
+
triggerClassName?: string;
|
|
24
|
+
}
|
|
25
|
+
declare const LDTimePicker: ({ value, defaultValue, onChange, placeholder, disabled, block, color, minTime, className, style, triggerClassName, }: LDTimePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export default LDTimePicker;
|
|
27
|
+
//# sourceMappingURL=LDTimePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDTimePicker.d.ts","sourceRoot":"","sources":["../../../src/components/LDTimePicker/LDTimePicker.tsx"],"names":[],"mappings":"AAsCA,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,uBAAuB;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,QAAA,MAAM,YAAY,GAAI,sHAYnB,iBAAiB,4CA4KnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo, useState, useRef } from 'react';
|
|
4
|
+
import PopoverBase from '../LDPopover/PopoverBase.js';
|
|
5
|
+
import LucideIcon from '../Icon/LucideIcon.js';
|
|
6
|
+
import cn from '../../utils/cn.js';
|
|
7
|
+
/** 시간 입력 자동 포맷팅 (1212 -> 12:12) */
|
|
8
|
+
const formatTimeInput = (value) => {
|
|
9
|
+
const numbers = value.replace(/\D/g, '');
|
|
10
|
+
if (!numbers)
|
|
11
|
+
return '';
|
|
12
|
+
const limitedNumbers = numbers.slice(0, 4);
|
|
13
|
+
if (limitedNumbers.length <= 2)
|
|
14
|
+
return limitedNumbers;
|
|
15
|
+
const hours = limitedNumbers.slice(0, 2);
|
|
16
|
+
const minutes = limitedNumbers.slice(2);
|
|
17
|
+
const hoursNum = parseInt(hours, 10);
|
|
18
|
+
if (hoursNum > 23)
|
|
19
|
+
return hours.slice(0, 1);
|
|
20
|
+
if (minutes) {
|
|
21
|
+
const minutesNum = parseInt(minutes, 10);
|
|
22
|
+
if (minutesNum > 59)
|
|
23
|
+
return `${hours}:${minutes.slice(0, 1)}`;
|
|
24
|
+
}
|
|
25
|
+
return `${hours}:${minutes}`;
|
|
26
|
+
};
|
|
27
|
+
// ── 시간 옵션 생성 (00:00 ~ 23:30, 30분 간격) ──
|
|
28
|
+
const generateTimeOptions = (minTime) => {
|
|
29
|
+
const options = [];
|
|
30
|
+
for (let hour = 0; hour < 24; hour++) {
|
|
31
|
+
for (let minute = 0; minute < 60; minute += 30) {
|
|
32
|
+
const timeString = `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`;
|
|
33
|
+
if (minTime && timeString < minTime)
|
|
34
|
+
continue;
|
|
35
|
+
options.push(timeString);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return options;
|
|
39
|
+
};
|
|
40
|
+
const LDTimePicker = ({ value, defaultValue, onChange, placeholder = 'HH:MM', disabled = false, block = false, color = 'neutral', minTime, className, style, triggerClassName, }) => {
|
|
41
|
+
const [open, setOpen] = useState(false);
|
|
42
|
+
const [internal, setInternal] = useState(defaultValue);
|
|
43
|
+
const [isEditable, setIsEditable] = useState(false);
|
|
44
|
+
const inputRef = useRef(null);
|
|
45
|
+
const isControlled = value !== undefined;
|
|
46
|
+
const resolved = isControlled ? value : internal;
|
|
47
|
+
const timeOptions = useMemo(() => generateTimeOptions(minTime), [minTime]);
|
|
48
|
+
const handleTimeSelect = (time) => {
|
|
49
|
+
if (!isControlled)
|
|
50
|
+
setInternal(time);
|
|
51
|
+
onChange?.(time);
|
|
52
|
+
setOpen(false);
|
|
53
|
+
};
|
|
54
|
+
const handleInputChange = (e) => {
|
|
55
|
+
const formatted = formatTimeInput(e.target.value);
|
|
56
|
+
if (!isControlled)
|
|
57
|
+
setInternal(formatted);
|
|
58
|
+
onChange?.(formatted);
|
|
59
|
+
};
|
|
60
|
+
const handlePencilClick = (e) => {
|
|
61
|
+
e.stopPropagation();
|
|
62
|
+
e.preventDefault();
|
|
63
|
+
if (isEditable) {
|
|
64
|
+
setIsEditable(false);
|
|
65
|
+
inputRef.current?.blur();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
setIsEditable(true);
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
inputRef.current?.focus();
|
|
71
|
+
}, 0);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const handleInputBlur = (e) => {
|
|
75
|
+
const relatedTarget = e.relatedTarget;
|
|
76
|
+
if (relatedTarget?.closest('[data-pencil-button]'))
|
|
77
|
+
return;
|
|
78
|
+
setIsEditable(false);
|
|
79
|
+
};
|
|
80
|
+
return (_jsx("div", { className: cn(block ? 'w-full' : 'w-auto', className), children: _jsxs(PopoverBase.Root, { open: open, onOpenChange: setOpen, children: [_jsxs(PopoverBase.Trigger, { disabled: disabled, style: style, onClick: (e) => {
|
|
81
|
+
if (isEditable)
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
}, className: cn('border border-neutral10 h-[38px] w-full display14 px-4 rounded-[5px]', 'flex flex-row items-center justify-between gap-4', 'outline-2 outline-transparent ld-transition', disabled && 'cursor-not-allowed opacity-50', color === 'danger'
|
|
84
|
+
? 'bg-tintRed outline-red500'
|
|
85
|
+
: 'focus:bg-tintBlue focus:outline-lb500', triggerClassName), children: [_jsx("input", { ref: inputRef, type: "text", value: resolved ?? '', onChange: handleInputChange, onBlur: handleInputBlur, onKeyDown: (e) => {
|
|
86
|
+
if (e.key === 'ArrowDown') {
|
|
87
|
+
e.preventDefault();
|
|
88
|
+
setOpen(true);
|
|
89
|
+
}
|
|
90
|
+
}, placeholder: placeholder, "aria-label": "\uC2DC\uAC04 \uC785\uB825", disabled: disabled, readOnly: !isEditable, className: cn('flex-1 bg-transparent outline-none min-w-0', !resolved && 'text-neutral40', !isEditable && 'cursor-pointer') }), _jsxs("div", { className: "flex items-center gap-2 shrink-0", children: [_jsx("span", { "data-pencil-button": true, role: "button", tabIndex: 0, "aria-label": "\uC9C1\uC811 \uC785\uB825 \uBAA8\uB4DC \uC804\uD658", onClick: handlePencilClick, onKeyDown: (e) => {
|
|
91
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
92
|
+
e.preventDefault();
|
|
93
|
+
handlePencilClick(e);
|
|
94
|
+
}
|
|
95
|
+
}, className: cn('p-0 transition-colors cursor-pointer', isEditable ? 'text-lb500' : 'text-neutral40'), children: _jsx(LucideIcon, { name: "pencil", size: 15 }) }), _jsx(LucideIcon, { name: "clock", size: 15, className: "text-neutral40" })] })] }), _jsx(PopoverBase.Content, { className: "rounded-md border border-neutral-200 bg-white shadow-md p-0", style: { width: 'var(--radix-popover-trigger-width)' }, onOpenAutoFocus: (e) => {
|
|
96
|
+
e.preventDefault();
|
|
97
|
+
const targetTime = timeOptions.find((t) => t >= (resolved || '00:00')) ||
|
|
98
|
+
timeOptions[0];
|
|
99
|
+
setTimeout(() => {
|
|
100
|
+
const targetButton = document.querySelector(`[data-time-picker-list] button[data-time="${targetTime}"]`);
|
|
101
|
+
if (targetButton) {
|
|
102
|
+
targetButton.focus();
|
|
103
|
+
targetButton.scrollIntoView({ block: 'nearest' });
|
|
104
|
+
}
|
|
105
|
+
}, 0);
|
|
106
|
+
}, children: _jsx("div", { "data-time-picker-list": true, role: "listbox", "aria-label": "\uC2DC\uAC04 \uC120\uD0DD \uBAA9\uB85D", className: "max-h-[240px] overflow-y-auto scrollbar-hide p-2", children: timeOptions.map((time) => (_jsx("button", { "data-time": time, type: "button", role: "option", "aria-selected": resolved === time, "aria-label": `${time.split(':')[0]}시 ${time.split(':')[1]}분`, onClick: () => handleTimeSelect(time), onKeyDown: (e) => {
|
|
107
|
+
const target = e.currentTarget;
|
|
108
|
+
if (e.key === 'ArrowDown') {
|
|
109
|
+
e.preventDefault();
|
|
110
|
+
target.nextElementSibling?.focus();
|
|
111
|
+
}
|
|
112
|
+
else if (e.key === 'ArrowUp') {
|
|
113
|
+
e.preventDefault();
|
|
114
|
+
target.previousElementSibling?.focus();
|
|
115
|
+
}
|
|
116
|
+
}, className: cn('w-full text-left px-3 py-2 rounded-[5px] display14 transition-all cursor-pointer outline-none', 'hover:bg-lb50 hover:text-lb500', 'focus:bg-lb50 focus:text-lb500 focus:ring-1 focus:ring-inset focus:ring-lb500', resolved === time
|
|
117
|
+
? 'bg-neutral10 font-bold'
|
|
118
|
+
: 'text-neutral800'), children: time }, time))) }) })] }) }));
|
|
119
|
+
};
|
|
120
|
+
export default LDTimePicker;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const LDToast: {
|
|
2
|
+
/** 성공 메시지를 표시합니다 */
|
|
3
|
+
success: (content: string) => string;
|
|
4
|
+
/** 에러 메시지를 표시합니다 */
|
|
5
|
+
error: (content: string) => string;
|
|
6
|
+
/** 일반 알림 메시지를 표시합니다 */
|
|
7
|
+
info: (content: string) => string;
|
|
8
|
+
/** 경고 메시지를 표시합니다 */
|
|
9
|
+
warning: (content: string) => string;
|
|
10
|
+
/** 로딩 상태 메시지를 표시합니다 */
|
|
11
|
+
loading: (content: string) => string;
|
|
12
|
+
/** 현재 표시 중인 토스트를 모두 닫습니다 */
|
|
13
|
+
dismiss: () => void;
|
|
14
|
+
/** 인사 메시지를 표시합니다 */
|
|
15
|
+
hello: (content: string) => string;
|
|
16
|
+
};
|
|
17
|
+
export default LDToast;
|
|
18
|
+
//# sourceMappingURL=LDToast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDToast.d.ts","sourceRoot":"","sources":["../../../src/components/LDToast/LDToast.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO;IAClB,oBAAoB;uBACD,MAAM;IAIzB,oBAAoB;qBACH,MAAM;IAIvB,uBAAuB;oBACP,MAAM;IAItB,oBAAoB;uBACD,MAAM;IAUzB,uBAAuB;uBACJ,MAAM;IAIzB,4BAA4B;;IAE5B,oBAAoB;qBACH,MAAM;CAMxB,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import toast from 'react-hot-toast';
|
|
4
|
+
export const LDToast = {
|
|
5
|
+
/** 성공 메시지를 표시합니다 */
|
|
6
|
+
success: (content) => {
|
|
7
|
+
toast.dismiss();
|
|
8
|
+
return toast.success(content);
|
|
9
|
+
},
|
|
10
|
+
/** 에러 메시지를 표시합니다 */
|
|
11
|
+
error: (content) => {
|
|
12
|
+
toast.dismiss();
|
|
13
|
+
return toast.error(content);
|
|
14
|
+
},
|
|
15
|
+
/** 일반 알림 메시지를 표시합니다 */
|
|
16
|
+
info: (content) => {
|
|
17
|
+
toast.dismiss();
|
|
18
|
+
return toast(content);
|
|
19
|
+
},
|
|
20
|
+
/** 경고 메시지를 표시합니다 */
|
|
21
|
+
warning: (content) => {
|
|
22
|
+
toast.dismiss();
|
|
23
|
+
return toast(content, {
|
|
24
|
+
icon: (_jsx("div", { className: "flex justify-center items-center w-5 h-5 bg-yellow-400 rounded-full text-mono5", children: "!" })),
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
/** 로딩 상태 메시지를 표시합니다 */
|
|
28
|
+
loading: (content) => {
|
|
29
|
+
toast.dismiss();
|
|
30
|
+
return toast.loading(content);
|
|
31
|
+
},
|
|
32
|
+
/** 현재 표시 중인 토스트를 모두 닫습니다 */
|
|
33
|
+
dismiss: () => toast.dismiss(),
|
|
34
|
+
/** 인사 메시지를 표시합니다 */
|
|
35
|
+
hello: (content) => {
|
|
36
|
+
toast.dismiss();
|
|
37
|
+
return toast(content, {
|
|
38
|
+
icon: _jsx("div", { className: "flex justify-center items-center w-5 h-5", children: "\uD83D\uDC4B" }),
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
export default LDToast;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface LDToasterProps {
|
|
2
|
+
position?: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
3
|
+
duration?: number;
|
|
4
|
+
}
|
|
5
|
+
declare const LDToaster: ({ position, duration, }: LDToasterProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export default LDToaster;
|
|
7
|
+
//# sourceMappingURL=LDToaster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDToaster.d.ts","sourceRoot":"","sources":["../../../src/components/LDToast/LDToaster.tsx"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,QAAQ,CAAC,EACL,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,QAAA,MAAM,SAAS,GAAI,yBAGhB,cAAc,4CAEhB,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Toaster as HotToaster } from 'react-hot-toast';
|
|
4
|
+
const LDToaster = ({ position = 'top-center', duration = 2500, }) => {
|
|
5
|
+
return _jsx(HotToaster, { position: position, toastOptions: { duration } });
|
|
6
|
+
};
|
|
7
|
+
export default LDToaster;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type RegisterOptions } from 'react-hook-form';
|
|
2
|
+
import { type LDToggleButtonProps } from './LDToggleButton.js';
|
|
3
|
+
interface FormToggleButtonProps extends Omit<LDToggleButtonProps, 'checked' | 'name' | 'onCheckedChange'> {
|
|
4
|
+
name: string;
|
|
5
|
+
options?: RegisterOptions;
|
|
6
|
+
customErrorMessage?: string;
|
|
7
|
+
isHiddenErrorMessage?: boolean;
|
|
8
|
+
errorClassName?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const FormToggleButton: ({ name, options, customErrorMessage, isHiddenErrorMessage, errorClassName, disabled, ...props }: FormToggleButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default FormToggleButton;
|
|
12
|
+
//# sourceMappingURL=FormToggleButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormToggleButton.d.ts","sourceRoot":"","sources":["../../../src/components/LDToggleButton/FormToggleButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAuB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAI5E,UAAU,qBAAsB,SAAQ,IAAI,CAC1C,mBAAmB,EACnB,SAAS,GAAG,MAAM,GAAG,iBAAiB,CACvC;IACC,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,gBAAgB,GAAI,iGAQvB,qBAAqB,4CAgCvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import LDToggleButton from './LDToggleButton.js';
|
|
4
|
+
import FormField from '../Form/FormField.js';
|
|
5
|
+
import FormErrorMessage from '../Form/FormErrorMessage.js';
|
|
6
|
+
const FormToggleButton = ({ name, options, customErrorMessage = '', isHiddenErrorMessage = false, errorClassName, disabled = false, ...props }) => {
|
|
7
|
+
return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, children: ({ field, fieldState }) => (_jsxs("div", { className: "relative", children: [_jsx(LDToggleButton, { ...props, checked: !!field.value, onCheckedChange: field.onChange, onBlur: field.onBlur, disabled: disabled, ref: field.ref, "aria-invalid": field['aria-invalid'], "aria-describedby": field['aria-describedby'] }), !isHiddenErrorMessage && (_jsx(FormErrorMessage, { id: fieldState.errorId, error: fieldState.error, disabled: disabled, className: errorClassName }))] })) }));
|
|
8
|
+
};
|
|
9
|
+
export default FormToggleButton;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Ref } from 'react';
|
|
2
|
+
type ButtonSize = 'small' | 'medium' | 'large' | 'xlarge';
|
|
3
|
+
export interface LDToggleButtonProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
4
|
+
/** controlled 체크 상태 */
|
|
5
|
+
checked?: boolean;
|
|
6
|
+
/** 초기 체크 상태 (uncontrolled) */
|
|
7
|
+
defaultChecked?: boolean;
|
|
8
|
+
/** 체크 상태 변경 콜백 */
|
|
9
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
10
|
+
/** 비활성화 여부 */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** 크기 */
|
|
13
|
+
size?: ButtonSize;
|
|
14
|
+
/** input name */
|
|
15
|
+
name?: string;
|
|
16
|
+
/** input value */
|
|
17
|
+
value?: string;
|
|
18
|
+
/** input id */
|
|
19
|
+
id?: string;
|
|
20
|
+
/** 토글 옆에 표시할 라벨 텍스트 */
|
|
21
|
+
label?: string;
|
|
22
|
+
/** 추가 CSS 클래스 */
|
|
23
|
+
className?: string;
|
|
24
|
+
/** 인라인 스타일 */
|
|
25
|
+
style?: React.CSSProperties;
|
|
26
|
+
/** input 요소 ref */
|
|
27
|
+
ref?: Ref<HTMLInputElement>;
|
|
28
|
+
}
|
|
29
|
+
declare const LDToggleButton: ({ checked, defaultChecked, onCheckedChange, disabled, size, label, className, style, ref, name, id, value, ...props }: LDToggleButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export default LDToggleButton;
|
|
31
|
+
//# sourceMappingURL=LDToggleButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDToggleButton.d.ts","sourceRoot":"","sources":["../../../src/components/LDToggleButton/LDToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,KAAK,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAsC1D,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAC3C,MAAM,CACP;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,SAAS;IACT,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,mBAAmB;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AAmDD,QAAA,MAAM,cAAc,GAAI,uHAcrB,mBAAmB,4CAqBrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import ToggleButtonBase, { useToggleButtonContext } from './ToggleButtonBase.js';
|
|
3
|
+
import cn from '../../utils/cn.js';
|
|
4
|
+
const trackClass = {
|
|
5
|
+
small: 'toggle-track-sm',
|
|
6
|
+
medium: 'toggle-track-md',
|
|
7
|
+
large: 'toggle-track-lg',
|
|
8
|
+
xlarge: 'toggle-track-xl',
|
|
9
|
+
};
|
|
10
|
+
const thumbClass = {
|
|
11
|
+
small: 'toggle-thumb-sm',
|
|
12
|
+
medium: 'toggle-thumb-md',
|
|
13
|
+
large: 'toggle-thumb-lg',
|
|
14
|
+
xlarge: 'toggle-thumb-xl',
|
|
15
|
+
};
|
|
16
|
+
const thumbOffClass = {
|
|
17
|
+
small: 'toggle-thumb-off-sm',
|
|
18
|
+
medium: 'toggle-thumb-off-md',
|
|
19
|
+
large: 'toggle-thumb-off-lg',
|
|
20
|
+
xlarge: 'toggle-thumb-off-xl',
|
|
21
|
+
};
|
|
22
|
+
const thumbOnClass = {
|
|
23
|
+
small: 'toggle-thumb-on-sm',
|
|
24
|
+
medium: 'toggle-thumb-on-md',
|
|
25
|
+
large: 'toggle-thumb-on-lg',
|
|
26
|
+
xlarge: 'toggle-thumb-on-xl',
|
|
27
|
+
};
|
|
28
|
+
const rootClass = {
|
|
29
|
+
small: 'toggle-sm',
|
|
30
|
+
medium: 'toggle-md',
|
|
31
|
+
large: 'toggle-lg',
|
|
32
|
+
xlarge: 'toggle-xl',
|
|
33
|
+
};
|
|
34
|
+
// ── Inner: Context에서 checked/disabled 읽어 스타일 적용 ──
|
|
35
|
+
const ToggleInner = ({ label, ref, name, id, value, size, ...props }) => {
|
|
36
|
+
const { checked, disabled } = useToggleButtonContext();
|
|
37
|
+
return (_jsxs(_Fragment, { children: [_jsx(ToggleButtonBase.HiddenInput, { ref: ref, name: name, id: id, value: value, ...props }), _jsx(ToggleButtonBase.Track, { className: cn(trackClass[size], checked ? 'bg-lb500' : 'bg-mono300', disabled ? 'opacity-50' : 'cursor-pointer', 'peer-focus-visible:ring-2 peer-focus-visible:ring-lb500 peer-focus-visible:ring-offset-2'), children: _jsx(ToggleButtonBase.Thumb, { className: cn(thumbClass[size], 'bg-white ld-transition', checked ? thumbOnClass[size] : thumbOffClass[size]) }) }), label && (_jsx(ToggleButtonBase.Label, { className: "select-none", children: label }))] }));
|
|
38
|
+
};
|
|
39
|
+
const LDToggleButton = ({ checked, defaultChecked, onCheckedChange, disabled = false, size = 'medium', label, className, style, ref, name, id, value, ...props }) => {
|
|
40
|
+
return (_jsx(ToggleButtonBase.Root, { checked: checked, defaultChecked: defaultChecked, onCheckedChange: onCheckedChange, disabled: disabled, style: style, className: cn(rootClass[size], className), children: _jsx(ToggleInner, { label: label, ref: ref, name: name, value: value, id: id, size: size, ...props }) }));
|
|
41
|
+
};
|
|
42
|
+
export default LDToggleButton;
|