@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.
Files changed (266) hide show
  1. package/dist/components/LDAccordion/AccordionBase.d.ts +41 -0
  2. package/dist/components/LDAccordion/AccordionBase.d.ts.map +1 -0
  3. package/dist/components/LDAccordion/AccordionBase.js +24 -0
  4. package/dist/components/LDAccordion/LDAccordion.d.ts +31 -0
  5. package/dist/components/LDAccordion/LDAccordion.d.ts.map +1 -0
  6. package/dist/components/LDAccordion/LDAccordion.js +21 -0
  7. package/dist/components/LDAutoComplete/AutoCompleteBase.js +6 -6
  8. package/dist/components/LDAvatar/LDAvatar.d.ts +1 -1
  9. package/dist/components/LDAvatar/LDAvatar.d.ts.map +1 -1
  10. package/dist/components/LDAvatar/LDAvatar.js +19 -10
  11. package/dist/components/LDBadge/LDBadge.d.ts +5 -6
  12. package/dist/components/LDBadge/LDBadge.d.ts.map +1 -1
  13. package/dist/components/LDBadge/LDBadge.js +2 -2
  14. package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts +1 -2
  15. package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts.map +1 -1
  16. package/dist/components/LDButton/LDButton.d.ts +3 -3
  17. package/dist/components/LDButton/LDButton.d.ts.map +1 -1
  18. package/dist/components/LDButton/LDButton.js +5 -5
  19. package/dist/components/LDCalendar/CalendarBase.d.ts +17 -0
  20. package/dist/components/LDCalendar/CalendarBase.d.ts.map +1 -0
  21. package/dist/components/LDCalendar/CalendarBase.js +49 -0
  22. package/dist/components/LDCalendar/LDCalendar.d.ts +8 -14
  23. package/dist/components/LDCalendar/LDCalendar.d.ts.map +1 -1
  24. package/dist/components/LDCalendar/LDCalendar.js +51 -39
  25. package/dist/components/LDCarousel/CarouselBase.d.ts +3 -3
  26. package/dist/components/LDCarousel/CarouselBase.d.ts.map +1 -1
  27. package/dist/components/LDCarousel/CarouselBase.js +12 -6
  28. package/dist/components/LDCarousel/LDCarousel.d.ts +7 -8
  29. package/dist/components/LDCarousel/LDCarousel.d.ts.map +1 -1
  30. package/dist/components/LDCarousel/LDCarousel.js +2 -2
  31. package/dist/components/LDCheckbox/CheckboxBase.d.ts +1 -3
  32. package/dist/components/LDCheckbox/CheckboxBase.d.ts.map +1 -1
  33. package/dist/components/LDCheckbox/CheckboxBase.js +4 -4
  34. package/dist/components/LDCheckbox/LDCheckbox.d.ts +2 -5
  35. package/dist/components/LDCheckbox/LDCheckbox.d.ts.map +1 -1
  36. package/dist/components/LDCheckbox/LDCheckbox.js +66 -8
  37. package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts +3 -3
  38. package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts.map +1 -1
  39. package/dist/components/LDCheckbox/LDCheckboxGroup.js +11 -2
  40. package/dist/components/LDCheckbox/LDFormCheckbox.d.ts +12 -0
  41. package/dist/components/LDCheckbox/LDFormCheckbox.d.ts.map +1 -0
  42. package/dist/components/LDCheckbox/LDFormCheckbox.js +8 -0
  43. package/dist/components/LDCheckbox/LDFormCheckboxGroup.d.ts +11 -0
  44. package/dist/components/LDCheckbox/LDFormCheckboxGroup.d.ts.map +1 -0
  45. package/dist/components/LDCheckbox/LDFormCheckboxGroup.js +8 -0
  46. package/dist/components/LDDataCalendar/DataCalendarBase.d.ts +17 -1
  47. package/dist/components/LDDataCalendar/DataCalendarBase.d.ts.map +1 -1
  48. package/dist/components/LDDataCalendar/DataCalendarBase.js +34 -4
  49. package/dist/components/LDDataCalendar/LDDataCalendar.d.ts +27 -10
  50. package/dist/components/LDDataCalendar/LDDataCalendar.d.ts.map +1 -1
  51. package/dist/components/LDDataCalendar/LDDataCalendar.js +8 -8
  52. package/dist/components/LDDatePicker/LDDatePicker.d.ts +10 -4
  53. package/dist/components/LDDatePicker/LDDatePicker.d.ts.map +1 -1
  54. package/dist/components/LDDatePicker/LDDatePicker.js +95 -25
  55. package/dist/components/LDDatePicker/LDFormDatePicker.d.ts +13 -0
  56. package/dist/components/LDDatePicker/LDFormDatePicker.d.ts.map +1 -0
  57. package/dist/components/LDDatePicker/LDFormDatePicker.js +15 -0
  58. package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts +13 -6
  59. package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts.map +1 -1
  60. package/dist/components/LDDateRangePicker/LDDateRangePicker.js +143 -93
  61. package/dist/components/LDDateRangePicker/LDFormDateRangePicker.d.ts +13 -0
  62. package/dist/components/LDDateRangePicker/LDFormDateRangePicker.d.ts.map +1 -0
  63. package/dist/components/LDDateRangePicker/LDFormDateRangePicker.js +20 -0
  64. package/dist/components/LDDrawer/LDDrawer.d.ts +2 -0
  65. package/dist/components/LDDrawer/LDDrawer.d.ts.map +1 -1
  66. package/dist/components/LDDrawer/LDDrawer.js +2 -2
  67. package/dist/components/LDEditor/LDEditor.d.ts.map +1 -1
  68. package/dist/components/LDEditor/LDEditor.js +94 -54
  69. package/dist/components/LDEmpty/EmptyBase.d.ts +19 -0
  70. package/dist/components/LDEmpty/EmptyBase.d.ts.map +1 -0
  71. package/dist/components/LDEmpty/EmptyBase.js +18 -0
  72. package/dist/components/LDEmpty/LDEmpty.d.ts +35 -0
  73. package/dist/components/LDEmpty/LDEmpty.d.ts.map +1 -0
  74. package/dist/components/LDEmpty/LDEmpty.js +30 -0
  75. package/dist/components/LDFileUpload/FileUploadBase.d.ts +11 -3
  76. package/dist/components/LDFileUpload/FileUploadBase.d.ts.map +1 -1
  77. package/dist/components/LDFileUpload/FileUploadBase.js +21 -21
  78. package/dist/components/LDFileUpload/LDFileUpload.d.ts +3 -0
  79. package/dist/components/LDFileUpload/LDFileUpload.d.ts.map +1 -1
  80. package/dist/components/LDFileUpload/LDFileUpload.js +3 -3
  81. package/dist/components/LDFileUpload/LDFileUploadList.d.ts +3 -0
  82. package/dist/components/LDFileUpload/LDFileUploadList.d.ts.map +1 -1
  83. package/dist/components/LDFileUpload/LDFileUploadList.js +1 -3
  84. package/dist/components/LDFileUpload/LDImageUpload.d.ts +5 -0
  85. package/dist/components/LDFileUpload/LDImageUpload.d.ts.map +1 -1
  86. package/dist/components/LDFileUpload/LDImageUpload.js +5 -3
  87. package/dist/components/LDFileUpload/LDImageUploadList.d.ts +3 -0
  88. package/dist/components/LDFileUpload/LDImageUploadList.d.ts.map +1 -1
  89. package/dist/components/LDFileUpload/LDImageUploadList.js +1 -3
  90. package/dist/components/LDForm/LDFormErrorMessage.d.ts +3 -1
  91. package/dist/components/LDForm/LDFormErrorMessage.d.ts.map +1 -1
  92. package/dist/components/LDForm/LDFormErrorMessage.js +2 -2
  93. package/dist/components/LDInput/InputBase.d.ts +5 -3
  94. package/dist/components/LDInput/InputBase.d.ts.map +1 -1
  95. package/dist/components/LDInput/InputBase.js +4 -4
  96. package/dist/components/LDInput/LDFormInput.d.ts +1 -1
  97. package/dist/components/LDInput/LDFormInput.d.ts.map +1 -1
  98. package/dist/components/LDInput/LDFormInput.js +17 -14
  99. package/dist/components/LDInput/LDInput.d.ts +10 -3
  100. package/dist/components/LDInput/LDInput.d.ts.map +1 -1
  101. package/dist/components/LDInput/LDInput.js +114 -50
  102. package/dist/components/LDLNB/LDLNB.d.ts +42 -0
  103. package/dist/components/LDLNB/LDLNB.d.ts.map +1 -0
  104. package/dist/components/LDLNB/LDLNB.js +34 -0
  105. package/dist/components/LDLNB/LDLNBBase.d.ts +5 -13
  106. package/dist/components/LDLNB/LDLNBBase.d.ts.map +1 -1
  107. package/dist/components/LDLNB/LDLNBBase.js +52 -18
  108. package/dist/components/LDMenuBar/LDMenuBar.d.ts +33 -19
  109. package/dist/components/LDMenuBar/LDMenuBar.d.ts.map +1 -1
  110. package/dist/components/LDMenuBar/LDMenuBar.js +13 -27
  111. package/dist/components/LDMenuBar/MenuBarBase.d.ts +4 -5
  112. package/dist/components/LDMenuBar/MenuBarBase.d.ts.map +1 -1
  113. package/dist/components/LDMenuBar/MenuBarBase.js +12 -14
  114. package/dist/components/LDModal/LDModal.d.ts +20 -40
  115. package/dist/components/LDModal/LDModal.d.ts.map +1 -1
  116. package/dist/components/LDModal/LDModal.js +56 -70
  117. package/dist/components/LDModal/LDModalView.d.ts +59 -0
  118. package/dist/components/LDModal/LDModalView.d.ts.map +1 -0
  119. package/dist/components/LDModal/LDModalView.js +72 -0
  120. package/dist/components/LDNotification/LDNotification.d.ts +40 -0
  121. package/dist/components/LDNotification/LDNotification.d.ts.map +1 -0
  122. package/dist/components/LDNotification/LDNotification.js +76 -0
  123. package/dist/components/LDNotification/NotificationBase.d.ts +29 -0
  124. package/dist/components/LDNotification/NotificationBase.d.ts.map +1 -0
  125. package/dist/components/LDNotification/NotificationBase.js +27 -0
  126. package/dist/components/LDOTPInput/LDFormOTPInput.d.ts +15 -0
  127. package/dist/components/LDOTPInput/LDFormOTPInput.d.ts.map +1 -0
  128. package/dist/components/LDOTPInput/LDFormOTPInput.js +8 -0
  129. package/dist/components/LDOTPInput/LDOTPInput.d.ts +10 -22
  130. package/dist/components/LDOTPInput/LDOTPInput.d.ts.map +1 -1
  131. package/dist/components/LDOTPInput/LDOTPInput.js +44 -72
  132. package/dist/components/LDOTPInput/OTPInputBase.d.ts +46 -0
  133. package/dist/components/LDOTPInput/OTPInputBase.d.ts.map +1 -0
  134. package/dist/components/LDOTPInput/OTPInputBase.js +48 -0
  135. package/dist/components/LDPagination/LDPagination.d.ts +5 -1
  136. package/dist/components/LDPagination/LDPagination.d.ts.map +1 -1
  137. package/dist/components/LDPagination/LDPagination.js +3 -1
  138. package/dist/components/LDPagination/PaginationBase.d.ts +13 -4
  139. package/dist/components/LDPagination/PaginationBase.d.ts.map +1 -1
  140. package/dist/components/LDPagination/PaginationBase.js +8 -7
  141. package/dist/components/LDPopover/LDPopover.d.ts +1 -1
  142. package/dist/components/LDPopover/LDPopover.d.ts.map +1 -1
  143. package/dist/components/LDPopover/LDPopover.js +8 -7
  144. package/dist/components/LDProgressBar/LDProgressBar.d.ts +16 -0
  145. package/dist/components/LDProgressBar/LDProgressBar.d.ts.map +1 -0
  146. package/dist/components/LDProgressBar/LDProgressBar.js +9 -0
  147. package/dist/components/LDProgressBar/ProgressBarBase.d.ts +11 -0
  148. package/dist/components/LDProgressBar/ProgressBarBase.d.ts.map +1 -0
  149. package/dist/components/LDProgressBar/ProgressBarBase.js +10 -0
  150. package/dist/components/LDRadio/LDFormRadioGroup.d.ts +11 -0
  151. package/dist/components/LDRadio/LDFormRadioGroup.d.ts.map +1 -0
  152. package/dist/components/LDRadio/LDFormRadioGroup.js +8 -0
  153. package/dist/components/LDRadio/LDRadio.d.ts +2 -2
  154. package/dist/components/LDRadio/LDRadio.d.ts.map +1 -1
  155. package/dist/components/LDRadio/LDRadio.js +70 -15
  156. package/dist/components/LDRadio/LDRadioGroup.d.ts +5 -3
  157. package/dist/components/LDRadio/LDRadioGroup.d.ts.map +1 -1
  158. package/dist/components/LDRadio/LDRadioGroup.js +11 -2
  159. package/dist/components/LDRadio/RadioBase.d.ts +2 -3
  160. package/dist/components/LDRadio/RadioBase.d.ts.map +1 -1
  161. package/dist/components/LDRadio/RadioBase.js +7 -4
  162. package/dist/components/LDSectionNav/LDSectionNav.d.ts +11 -0
  163. package/dist/components/LDSectionNav/LDSectionNav.d.ts.map +1 -0
  164. package/dist/components/LDSectionNav/LDSectionNav.js +11 -0
  165. package/dist/components/LDSectionNav/SectionNavBase.d.ts +20 -0
  166. package/dist/components/LDSectionNav/SectionNavBase.d.ts.map +1 -0
  167. package/dist/components/LDSectionNav/SectionNavBase.js +53 -0
  168. package/dist/components/LDSelect/LDFormMultiSelect.d.ts +13 -0
  169. package/dist/components/LDSelect/LDFormMultiSelect.d.ts.map +1 -0
  170. package/dist/components/LDSelect/{FormMultiSelect.js → LDFormMultiSelect.js} +2 -2
  171. package/dist/components/LDSelect/LDFormSelect.d.ts +13 -0
  172. package/dist/components/LDSelect/LDFormSelect.d.ts.map +1 -0
  173. package/dist/components/LDSelect/LDFormSelect.js +10 -0
  174. package/dist/components/LDSelect/LDMultiSelect.d.ts +6 -3
  175. package/dist/components/LDSelect/LDMultiSelect.d.ts.map +1 -1
  176. package/dist/components/LDSelect/LDMultiSelect.js +35 -31
  177. package/dist/components/LDSelect/LDSelect.d.ts +6 -3
  178. package/dist/components/LDSelect/LDSelect.d.ts.map +1 -1
  179. package/dist/components/LDSelect/LDSelect.js +37 -30
  180. package/dist/components/LDSelect/SelectBase.d.ts.map +1 -1
  181. package/dist/components/LDSelect/SelectBase.js +21 -7
  182. package/dist/components/LDSpinner/LDSpinner.d.ts +1 -1
  183. package/dist/components/LDSpinner/LDSpinner.d.ts.map +1 -1
  184. package/dist/components/LDSpinner/LDSpinner.js +6 -6
  185. package/dist/components/LDTable/LDCollapsibleTanstackTable.d.ts.map +1 -1
  186. package/dist/components/LDTable/LDCollapsibleTanstackTable.js +12 -9
  187. package/dist/components/LDTable/LDTable.d.ts.map +1 -1
  188. package/dist/components/LDTable/LDTable.js +1 -1
  189. package/dist/components/LDTable/LDTanstackTable.d.ts.map +1 -1
  190. package/dist/components/LDTable/LDTanstackTable.js +6 -7
  191. package/dist/components/LDTable/TableField.d.ts +1 -1
  192. package/dist/components/LDTable/TableField.d.ts.map +1 -1
  193. package/dist/components/LDTextarea/LDFormTextarea.d.ts +14 -0
  194. package/dist/components/LDTextarea/LDFormTextarea.d.ts.map +1 -0
  195. package/dist/components/LDTextarea/{FormTextarea.js → LDFormTextarea.js} +2 -2
  196. package/dist/components/LDTextarea/LDTextarea.d.ts +1 -1
  197. package/dist/components/LDTextarea/LDTextarea.d.ts.map +1 -1
  198. package/dist/components/LDTextarea/LDTextarea.js +30 -30
  199. package/dist/components/LDTimePicker/LDFormTimePicker.d.ts +12 -0
  200. package/dist/components/LDTimePicker/LDFormTimePicker.d.ts.map +1 -0
  201. package/dist/components/LDTimePicker/{FormTimePicker.js → LDFormTimePicker.js} +3 -3
  202. package/dist/components/LDTimePicker/LDTimePicker.js +3 -3
  203. package/dist/components/LDToast/LDToast.js +1 -1
  204. package/dist/components/LDToast/LDToaster.d.ts +2 -1
  205. package/dist/components/LDToast/LDToaster.d.ts.map +1 -1
  206. package/dist/components/LDToast/LDToaster.js +2 -2
  207. package/dist/components/LDToggleButton/LDFormToggleButton.d.ts +10 -0
  208. package/dist/components/LDToggleButton/LDFormToggleButton.d.ts.map +1 -0
  209. package/dist/components/LDToggleButton/LDFormToggleButton.js +8 -0
  210. package/dist/components/LDTooltip/LDTooltip.js +1 -1
  211. package/dist/components/LDTooltip/TooltipBase.d.ts +6 -2
  212. package/dist/components/LDTooltip/TooltipBase.d.ts.map +1 -1
  213. package/dist/components/LDTooltip/TooltipBase.js +4 -4
  214. package/dist/index.css +913 -307
  215. package/dist/index.d.ts +28 -19
  216. package/dist/index.d.ts.map +1 -1
  217. package/dist/index.js +32 -20
  218. package/dist/utils/file.d.ts +2 -2
  219. package/dist/utils/file.d.ts.map +1 -1
  220. package/dist/utils/file.js +26 -23
  221. package/dist/utils/renderIcon.d.ts +1 -2
  222. package/dist/utils/renderIcon.d.ts.map +1 -1
  223. package/dist/utils/renderIcon.js +5 -4
  224. package/package.json +14 -2
  225. package/src/styles/carousel.css +15 -14
  226. package/src/styles/components/button.css +2 -2
  227. package/src/styles/components/editor.css +6 -0
  228. package/src/styles/components/index.css +1 -0
  229. package/src/styles/components/input.css +16 -2
  230. package/src/styles/components/select.css +61 -0
  231. package/src/styles/components/shared.css +6 -6
  232. package/src/styles/motion.css +115 -0
  233. package/src/theme.css +3 -0
  234. package/dist/components/Icon/LucideIcon.d.ts +0 -12
  235. package/dist/components/Icon/LucideIcon.d.ts.map +0 -1
  236. package/dist/components/Icon/LucideIcon.js +0 -49
  237. package/dist/components/LDCheckbox/FormCheckbox.d.ts +0 -14
  238. package/dist/components/LDCheckbox/FormCheckbox.d.ts.map +0 -1
  239. package/dist/components/LDCheckbox/FormCheckbox.js +0 -9
  240. package/dist/components/LDCheckbox/FormCheckboxGroup.d.ts +0 -13
  241. package/dist/components/LDCheckbox/FormCheckboxGroup.d.ts.map +0 -1
  242. package/dist/components/LDCheckbox/FormCheckboxGroup.js +0 -9
  243. package/dist/components/LDDatePicker/FormDatePicker.d.ts +0 -12
  244. package/dist/components/LDDatePicker/FormDatePicker.d.ts.map +0 -1
  245. package/dist/components/LDDatePicker/FormDatePicker.js +0 -12
  246. package/dist/components/LDDateRangePicker/FormDateRangePicker.d.ts +0 -12
  247. package/dist/components/LDDateRangePicker/FormDateRangePicker.d.ts.map +0 -1
  248. package/dist/components/LDDateRangePicker/FormDateRangePicker.js +0 -10
  249. package/dist/components/LDModal/openModal.d.ts +0 -24
  250. package/dist/components/LDModal/openModal.d.ts.map +0 -1
  251. package/dist/components/LDModal/openModal.js +0 -52
  252. package/dist/components/LDRadio/FormRadioGroup.d.ts +0 -13
  253. package/dist/components/LDRadio/FormRadioGroup.d.ts.map +0 -1
  254. package/dist/components/LDRadio/FormRadioGroup.js +0 -9
  255. package/dist/components/LDSelect/FormMultiSelect.d.ts +0 -13
  256. package/dist/components/LDSelect/FormMultiSelect.d.ts.map +0 -1
  257. package/dist/components/LDSelect/FormSelect.d.ts +0 -13
  258. package/dist/components/LDSelect/FormSelect.d.ts.map +0 -1
  259. package/dist/components/LDSelect/FormSelect.js +0 -10
  260. package/dist/components/LDTextarea/FormTextarea.d.ts +0 -14
  261. package/dist/components/LDTextarea/FormTextarea.d.ts.map +0 -1
  262. package/dist/components/LDTimePicker/FormTimePicker.d.ts +0 -12
  263. package/dist/components/LDTimePicker/FormTimePicker.d.ts.map +0 -1
  264. package/dist/components/LDToggleButton/FormToggleButton.d.ts +0 -12
  265. package/dist/components/LDToggleButton/FormToggleButton.d.ts.map +0 -1
  266. package/dist/components/LDToggleButton/FormToggleButton.js +0 -9
@@ -1,12 +1,29 @@
1
- import type { ComponentProps } from 'react';
2
- import DataCalendarBase from './DataCalendarBase.js';
3
- declare const LDDataCalendar: {
4
- Root: ({ className, ...props }: ComponentProps<typeof DataCalendarBase.Root>) => import("react/jsx-runtime").JSX.Element;
5
- Title: ({ className, ...props }: ComponentProps<typeof DataCalendarBase.Title>) => import("react/jsx-runtime").JSX.Element;
6
- Prev: ({ className, children, ...props }: ComponentProps<typeof DataCalendarBase.Prev>) => import("react/jsx-runtime").JSX.Element;
7
- Next: ({ className, children, ...props }: ComponentProps<typeof DataCalendarBase.Next>) => import("react/jsx-runtime").JSX.Element;
8
- Grid: ({ className, weekdayClassName, ...props }: ComponentProps<typeof DataCalendarBase.Grid>) => import("react/jsx-runtime").JSX.Element;
9
- Cell: ({ className, dateClassName, ...props }: ComponentProps<typeof DataCalendarBase.Cell>) => import("react/jsx-runtime").JSX.Element;
10
- };
1
+ import type { ReactNode } from 'react';
2
+ import type { Dayjs } from 'dayjs';
3
+ export interface LDDataCalendarProps {
4
+ className?: string;
5
+ /** 초기 표시 월 */
6
+ defaultMonth?: Dayjs;
7
+ /** 월 이동 시 호출 */
8
+ onMonthChange?: (month: Dayjs) => void;
9
+ /** 셀 클릭으로 날짜 선택 허용 (기본 false, 표시 전용) */
10
+ selectable?: boolean;
11
+ /** 초기 선택 날짜 */
12
+ defaultSelectedDate?: Dayjs;
13
+ /** 선택 변경 시 호출 */
14
+ onSelectDate?: (date: Dayjs) => void;
15
+ /** 요일 헤더 (기본 일~토) */
16
+ weekdays?: string[];
17
+ /** 날짜 숫자 아래에 그릴 커스텀 콘텐츠(데이터 등). isOutside면 이전/다음 달 셀 */
18
+ renderCell?: (date: Dayjs, isOutside: boolean) => ReactNode;
19
+ /** 선택 상세(모바일 Detail 슬롯). 지정 시 그리드 아래에 Detail 렌더 */
20
+ renderDetail?: (date: Dayjs | null) => ReactNode;
21
+ }
22
+ /**
23
+ * LDDataCalendar — DataCalendarBase 컴파운드를 조립한 표시 전용 데이터 달력.
24
+ * 헤더(Prev·Title·Next)·그리드·셀 스타일은 컴포넌트가 제공하고,
25
+ * 날짜별 데이터는 `renderCell`, 선택 상세는 `renderDetail`로 주입한다.
26
+ */
27
+ declare const LDDataCalendar: ({ className, defaultMonth, onMonthChange, selectable, defaultSelectedDate, onSelectDate, weekdays, renderCell, renderDetail, }: LDDataCalendarProps) => import("react/jsx-runtime").JSX.Element;
11
28
  export default LDDataCalendar;
12
29
  //# sourceMappingURL=LDDataCalendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LDDataCalendar.d.ts","sourceRoot":"","sources":["../../../src/components/LDDataCalendar/LDDataCalendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAoFlD,QAAA,MAAM,cAAc;oCA/EjB,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;qCAU5C,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC;8CAW7C,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;8CAgB5C,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;sDAgB5C,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;mDAY5C,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;CAce,CAAC;AAE/D,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"LDDataCalendar.d.ts","sourceRoot":"","sources":["../../../src/components/LDDataCalendar/LDDataCalendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAKnC,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,gBAAgB;IAChB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvC,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe;IACf,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAC5B,iBAAiB;IACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IACrC,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,wDAAwD;IACxD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC;IAC5D,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC;CAClD;AAKD;;;;GAIG;AACH,QAAA,MAAM,cAAc,GAAI,gIAUrB,mBAAmB,4CA2CrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,13 +1,13 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { ChevronLeft, ChevronRight } from 'lucide-react';
4
4
  import cn from '../../utils/cn.js';
5
5
  import DataCalendarBase from './DataCalendarBase.js';
6
- const Root = ({ className, ...props }) => (_jsx(DataCalendarBase.Root, { className: cn('w-full select-none', className), ...props }));
7
- const Title = ({ className, ...props }) => (_jsx(DataCalendarBase.Title, { className: cn('display32 bold flex justify-center', className), ...props }));
8
- const Prev = ({ className, children, ...props }) => (_jsx(DataCalendarBase.Prev, { className: cn('flex items-center justify-center rounded-full size-[30px] bg-neutral100 hover:bg-mono400 text-neutral500 ld-transition cursor-pointer', className), ...props, children: children ?? _jsx(ChevronLeft, { size: 15 }) }));
9
- const Next = ({ className, children, ...props }) => (_jsx(DataCalendarBase.Next, { className: cn('flex items-center justify-center rounded-full size-[30px] bg-neutral100 hover:bg-mono400 text-neutral500 ld-transition cursor-pointer', className), ...props, children: children ?? _jsx(ChevronRight, { size: 16 }) }));
10
- const Grid = ({ className, weekdayClassName, ...props }) => (_jsx(DataCalendarBase.Grid, { className: className, weekdayClassName: cn('display14 text-mono500 py-[10px] ', weekdayClassName), ...props }));
11
- const Cell = ({ className, dateClassName, ...props }) => (_jsx(DataCalendarBase.Cell, { className: cn('min-h-[100px] py-[10px] flex flex-col gap-[15px] data-outside:*:text-mono400', className), dateClassName: cn('display16 font-normal self-start leading-none data-[outside]:text-mono400 data-[outside]:font-normal data-[weekend]:text-danger600 data-[outside]:data-[weekend]:text-danger200', dateClassName), ...props }));
12
- const LDDataCalendar = { Root, Title, Prev, Next, Grid, Cell };
6
+ const navButtonClass = 'flex items-center justify-center rounded-full size-[30px] bg-neutral100 hover:bg-mono400 text-neutral500 hover:text-neutral900 ld-transition cursor-pointer';
7
+ /**
8
+ * LDDataCalendar — DataCalendarBase 컴파운드를 조립한 표시 전용 데이터 달력.
9
+ * 헤더(Prev·Title·Next)·그리드·셀 스타일은 컴포넌트가 제공하고,
10
+ * 날짜별 데이터는 `renderCell`, 선택 상세는 `renderDetail`로 주입한다.
11
+ */
12
+ const LDDataCalendar = ({ className, defaultMonth, onMonthChange, selectable, defaultSelectedDate, onSelectDate, weekdays, renderCell, renderDetail, }) => (_jsxs(DataCalendarBase.Root, { className: cn('w-full select-none', className), defaultMonth: defaultMonth, onMonthChange: onMonthChange, selectable: selectable, defaultSelectedDate: defaultSelectedDate, onSelectDate: onSelectDate, children: [_jsxs("div", { className: "flex items-center justify-between mb-md", children: [_jsx(DataCalendarBase.Prev, { className: navButtonClass, children: _jsx(ChevronLeft, { size: 15 }) }), _jsx(DataCalendarBase.Title, { className: "display32 mobile:display20 bold flex justify-center" }), _jsx(DataCalendarBase.Next, { className: navButtonClass, children: _jsx(ChevronRight, { size: 16 }) })] }), _jsx(DataCalendarBase.Grid, { weekdays: weekdays, weekdayClassName: "display14 mobile:display12 text-mono500 py-[10px] mobile:py-1", renderCell: (date, _i, isOutside) => (_jsx(DataCalendarBase.Cell, { date: date, isOutside: isOutside, className: cn('min-h-[100px] mobile:min-h-13 py-[10px] mobile:py-1 flex flex-col gap-[15px] mobile:gap-1 data-outside:*:text-mono400', 'data-selectable:cursor-pointer data-selectable:hover:bg-mono100 data-selectable:rounded-[5px] ld-transition', 'data-[selected=true]:bg-tintBlue data-[selected=true]:hover:bg-tintBlue'), dateClassName: "display16 mobile:display12 font-normal self-start leading-none data-[outside]:text-mono400 data-[outside]:font-normal data-[weekend]:text-danger600 data-[outside]:data-[weekend]:text-danger200", children: renderCell?.(date, isOutside) }, date.format('YYYY-MM-DD'))) }), renderDetail && (_jsx(DataCalendarBase.Detail, { className: "hidden mobile:block mt-md p-md rounded-[10px] bg-mono50", children: renderDetail }))] }));
13
13
  export default LDDataCalendar;
@@ -1,19 +1,24 @@
1
1
  import { type ReactNode } from 'react';
2
+ type DatePickerVariant = 'filled' | 'outline';
3
+ type DatePickerColor = 'neutral' | 'point' | 'danger';
2
4
  export interface LDDatePickerProps {
5
+ variant?: DatePickerVariant;
6
+ color?: DatePickerColor;
3
7
  /** 선택된 날짜 (controlled) */
4
8
  value?: Date;
5
- /** 초기 선택 날짜 (uncontrolled) */
9
+ /** 원래 값(baseline). 현재 값이 이 값과 다르면 rotate가 나타나고, 누르면 이 값으로 되돌린다. */
6
10
  defaultValue?: Date;
7
- /** 날짜 변경 시 호출되는 콜백 */
11
+ /** 확인/닫기 시 커밋되는 콜백 */
8
12
  onChange?: (value: Date | undefined) => void;
9
13
  /** 미선택 시 표시할 텍스트 */
10
14
  placeholder?: string;
15
+ dateFormat?: string;
16
+ timeFormat?: string;
11
17
  /** 비활성화 여부 */
12
18
  disabled?: boolean;
13
19
  /** true 시 너비 100% */
14
20
  block?: boolean;
15
21
  /** 색상 테마 (danger 시 에러 스타일) */
16
- color?: 'neutral' | 'danger';
17
22
  /** 현재 시점 이후 날짜 선택 비활성화 */
18
23
  isDisableAfterNow?: boolean;
19
24
  /** 최소 선택 가능 날짜 */
@@ -28,7 +33,8 @@ export interface LDDatePickerProps {
28
33
  style?: React.CSSProperties;
29
34
  /** 트리거 버튼 className */
30
35
  triggerClassName?: string;
36
+ isExistTime?: boolean;
31
37
  }
32
- declare const LDDatePicker: ({ value, defaultValue, onChange, placeholder, disabled, block, color, isDisableAfterNow, minDate, trailingIcon, showReset, className, style, triggerClassName, }: LDDatePickerProps) => import("react/jsx-runtime").JSX.Element;
38
+ declare const LDDatePicker: ({ variant, color, value, defaultValue, onChange, placeholder, dateFormat, timeFormat, disabled, block, isDisableAfterNow, minDate, trailingIcon, showReset, isExistTime, className, style, triggerClassName, }: LDDatePickerProps) => import("react/jsx-runtime").JSX.Element;
33
39
  export default LDDatePicker;
34
40
  //# sourceMappingURL=LDDatePicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LDDatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/LDDatePicker/LDDatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AASjD,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,8BAA8B;IAC9B,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAC7C,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,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB;IAClB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,iBAAiB;IACjB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,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,kKAiBnB,iBAAiB,4CAyFnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"LDDatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/LDDatePicker/LDDatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AASf,KAAK,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC9C,KAAK,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAYtD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,mEAAmE;IACnE,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAC7C,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB;IAClB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,iBAAiB;IACjB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,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;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAyBD,QAAA,MAAM,YAAY,GAAI,gNAmBnB,iBAAiB,4CA6KnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,42 +1,112 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState } from 'react';
3
+ import { useCallback, useEffect, useMemo, useState, } from 'react';
4
4
  import dayjs from 'dayjs';
5
5
  import { ko } from 'react-day-picker/locale';
6
6
  import PopoverBase from '../LDPopover/PopoverBase.js';
7
- import LDCalendar from '../LDCalendar/LDCalendar.js';
8
- import LucideIcon from '../Icon/LucideIcon.js';
7
+ import LDCalendar, { TimePicker } from '../LDCalendar/LDCalendar.js';
9
8
  import cn from '../../utils/cn.js';
10
- const LDDatePicker = ({ value, defaultValue, onChange, placeholder = 'YYYY-MM-DD', disabled = false, block = false, color = 'neutral', isDisableAfterNow = false, minDate, trailingIcon = (_jsx(LucideIcon, { name: "calendar", size: 15, className: "text-mono400" })), showReset = true, className, style, triggerClassName, }) => {
9
+ import { Calendar, RotateCw } from 'lucide-react';
10
+ import LDButton from '../../components/LDButton/LDButton.js';
11
+ const timeFromDate = (selectedDate) => selectedDate ? dayjs(selectedDate).format('HH:mm:ss') : '00:00:00';
12
+ const combineDateTime = (date, time) => {
13
+ if (!date)
14
+ return undefined;
15
+ const [h = 0, m = 0, s = 0] = (time ?? '00:00:00').split(':').map(Number);
16
+ return dayjs(date).hour(h).minute(m).second(s).toDate();
17
+ };
18
+ // ── 스타일 매핑 ──
19
+ const variantColorClasses = {
20
+ filled: {
21
+ neutral: 'bg-neutral50 text-neutral900 border-none outline-2 outline-transparent [outline-style:solid] [outline-offset:-2px] focus:bg-tintBlue focus:outline-lb500',
22
+ point: 'bg-tintBlue text-neutral900 border-none outline-2 outline-transparent [outline-style:solid] [outline-offset:-2px] focus:outline-lb500',
23
+ danger: 'bg-tintRed text-neutral900 border-none outline-2 outline-transparent [outline-style:solid] [outline-offset:-2px] outline-danger600',
24
+ },
25
+ outline: {
26
+ neutral: 'bg-transparent text-neutral900 border-none outline-2 outline-neutral100 [outline-style:solid] [outline-offset:-2px] focus:outline-lb500',
27
+ point: 'bg-transparent text-neutral900 border-none outline-2 outline-lb500 [outline-style:solid] [outline-offset:-2px]',
28
+ danger: 'bg-transparent text-neutral900 border-none outline-2 outline-danger600 [outline-style:solid] [outline-offset:-2px]',
29
+ },
30
+ };
31
+ const LDDatePicker = ({ variant = 'filled', color = 'neutral', value, defaultValue, onChange, placeholder, dateFormat = 'YYYYMMDD', timeFormat = 'HH:MM:SS', disabled = false, block = false, isDisableAfterNow = false, minDate, trailingIcon = _jsx(Calendar, { size: 15, className: "text-mono400" }), showReset = true, isExistTime = true, className, style, triggerClassName, }) => {
11
32
  const [open, setOpen] = useState(false);
12
- const [internal, setInternal] = useState(defaultValue);
13
- const isControlled = value !== undefined;
14
- const resolved = isControlled ? value : internal;
15
- const handleSelect = (date) => {
16
- if (!isControlled)
17
- setInternal(date);
18
- onChange?.(date);
19
- setOpen(false);
33
+ const [selectedDate, setSelectedDate] = useState(value);
34
+ const [selectedTime, setSelectedTime] = useState(timeFromDate(value));
35
+ useEffect(() => {
36
+ if (open)
37
+ return;
38
+ setSelectedDate(value);
39
+ setSelectedTime(timeFromDate(value));
40
+ }, [open, value]);
41
+ const placeholderText = useMemo(() => {
42
+ if (placeholder)
43
+ return placeholder;
44
+ if (!isExistTime)
45
+ return dateFormat;
46
+ return `${dateFormat} ${timeFormat}`;
47
+ }, [placeholder, isExistTime, dateFormat, timeFormat]);
48
+ const reset = (d) => {
49
+ setSelectedDate(d);
50
+ setSelectedTime(timeFromDate(d));
20
51
  };
21
52
  const handleReset = (e) => {
22
53
  e.stopPropagation();
23
- if (!isControlled)
24
- setInternal(undefined);
25
- onChange?.(undefined);
54
+ reset(defaultValue);
55
+ if (!open)
56
+ onChange?.(defaultValue);
57
+ };
58
+ const handleConfirm = () => {
59
+ onChange?.(combineDateTime(selectedDate, selectedTime));
60
+ setOpen(false);
61
+ };
62
+ const handleCancel = () => {
63
+ reset(value);
64
+ setOpen(false);
65
+ };
66
+ const handleOpenChange = (next) => {
67
+ if (next) {
68
+ reset(value);
69
+ setOpen(true);
70
+ return;
71
+ }
72
+ if (selectedDate)
73
+ handleConfirm();
74
+ else
75
+ setOpen(false);
76
+ };
77
+ const handleSelect = useCallback((date) => {
78
+ setSelectedDate(date);
79
+ }, []);
80
+ const handleSelectedTime = (time) => {
81
+ setSelectedTime(time);
26
82
  };
27
- 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, className: cn('border border-neutral100 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', triggerClassName), children: [resolved ? (_jsx("span", { children: dayjs(resolved).format('YYYY-MM-DD') })) : (_jsx("span", { className: "text-mono400", children: placeholder })), _jsxs("div", { className: "flex gap-[6px]", children: [trailingIcon, showReset && resolved && (_jsx("span", { role: "button", tabIndex: 0, className: "text-mono400 cursor-pointer", onClick: handleReset, onKeyDown: (e) => {
83
+ const isSameAsDefault = (combineDateTime(selectedDate, selectedTime)?.getTime() ?? null) ===
84
+ (defaultValue?.getTime() ?? null);
85
+ const showRotate = showReset && !isSameAsDefault;
86
+ const displayDate = open
87
+ ? combineDateTime(selectedDate, selectedTime)
88
+ : value;
89
+ const isDateDisabled = useMemo(() => {
90
+ if (isDisableAfterNow)
91
+ return (date) => date > new Date();
92
+ if (minDate) {
93
+ return (date) => {
94
+ const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());
95
+ const minDateOnly = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
96
+ return dateOnly < minDateOnly;
97
+ };
98
+ }
99
+ return false;
100
+ }, [isDisableAfterNow, minDate]);
101
+ return (_jsx("div", { className: cn(block ? 'w-full' : 'w-auto', className), children: _jsxs(PopoverBase.Root, { open: open, onOpenChange: handleOpenChange, children: [_jsxs(PopoverBase.Trigger, { disabled: disabled, style: style, className: cn('border border-neutral100 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
102
+ ? 'cursor-not-allowed opacity-50'
103
+ : variantColorClasses[variant][color], triggerClassName), children: [displayDate ? (_jsx("span", { children: !isExistTime
104
+ ? `${dayjs(displayDate).format(dateFormat)}`
105
+ : `${dayjs(displayDate).format(`${dateFormat} ${timeFormat.replaceAll('M', 'm').replaceAll('S', 's')}`)}` })) : (_jsx("span", { className: "text-mono400 whitespace-nowrap", children: placeholderText })), _jsxs("div", { className: "flex items-center gap-xs", children: [_jsx("span", { role: "button", tabIndex: showRotate ? 0 : -1, "aria-hidden": !showRotate, className: cn('flex items-center text-mono400 cursor-pointer ld-transition', !showRotate ? 'opacity-0' : 'opacity-100'), onClick: handleReset, onKeyDown: (e) => {
28
106
  if (e.key === 'Enter' || e.key === ' ') {
29
107
  e.preventDefault();
30
108
  handleReset(e);
31
109
  }
32
- }, children: _jsx(LucideIcon, { name: "rotateCw", size: 14 }) }))] })] }), _jsx(PopoverBase.Content, { className: "rounded-md border border-neutral-200 bg-white shadow-md p-0 min-w-[280px] w-[var(--radix-popover-trigger-width)]", children: _jsx(LDCalendar, { className: "w-full", captionLayout: "dropdown", mode: "single", locale: ko, selected: resolved, onSelect: handleSelect, disabled: isDisableAfterNow
33
- ? (date) => date > new Date()
34
- : minDate
35
- ? (date) => {
36
- const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());
37
- const minDateOnly = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
38
- return dateOnly < minDateOnly;
39
- }
40
- : false }) })] }) }));
110
+ }, children: _jsx(RotateCw, { size: 15 }) }), trailingIcon] })] }), _jsx(PopoverBase.Content, { className: "rounded-md border border-neutral-200 bg-white shadow-md p-0", children: _jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex flex-row max-h-90", children: [_jsx(LDCalendar, { captionLayout: "dropdown", mode: "single", locale: ko, selected: selectedDate, onSelect: handleSelect, disabled: isDateDisabled }), isExistTime && (_jsx(TimePicker, { value: selectedTime, onChange: handleSelectedTime, className: "shrink-0" }))] }), _jsxs("div", { className: "flex items-center justify-end gap-sm py-xs px-sm border-t border-neutral100", children: [_jsx(LDButton, { variant: "outline", color: "neutral", onClick: handleCancel, children: "\uCDE8\uC18C" }), _jsx(LDButton, { onClick: handleConfirm, children: "\uD655\uC778" })] })] }) })] }) }));
41
111
  };
42
112
  export default LDDatePicker;
@@ -0,0 +1,13 @@
1
+ import { type RegisterOptions } from 'react-hook-form';
2
+ import { type LDDatePickerProps } from './LDDatePicker.js';
3
+ interface LDFormDatePickerProps extends Omit<LDDatePickerProps, 'value' | 'defaultValue' | 'onChange'> {
4
+ name: string;
5
+ options?: RegisterOptions;
6
+ customErrorMessage?: string;
7
+ isHiddenErrorMessage?: boolean;
8
+ isToastErrorMessage?: boolean;
9
+ errorClassName?: string;
10
+ }
11
+ declare const LDFormDatePicker: ({ name, options, customErrorMessage, isHiddenErrorMessage, errorClassName, disabled, block, ...props }: LDFormDatePickerProps) => import("react/jsx-runtime").JSX.Element;
12
+ export default LDFormDatePicker;
13
+ //# sourceMappingURL=LDFormDatePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LDFormDatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/LDDatePicker/LDFormDatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,iBAAiB,CAAC;AACvE,OAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKtE,UAAU,qBAAsB,SAAQ,IAAI,CAC1C,iBAAiB,EACjB,OAAO,GAAG,cAAc,GAAG,UAAU,CACtC;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,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,gBAAgB,GAAI,wGASvB,qBAAqB,4CAiCvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useFormContext } from 'react-hook-form';
4
+ import LDDatePicker from './LDDatePicker.js';
5
+ import FormField from '../LDForm/LDFormField.js';
6
+ import FormErrorMessage from '../LDForm/LDFormErrorMessage.js';
7
+ import cn from '../../utils/cn.js';
8
+ const LDFormDatePicker = ({ name, options, customErrorMessage = '', isHiddenErrorMessage = true, errorClassName, disabled = false, block = false, ...props }) => {
9
+ const { formState } = useFormContext();
10
+ const defaultValue = formState.defaultValues?.[name];
11
+ return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, children: ({ field, fieldState }) => (_jsxs("div", { className: cn('relative', block ? 'w-full' : 'w-auto'), children: [_jsx(LDDatePicker, { ...props, block: block, value: field.value ?? undefined, defaultValue: defaultValue, onChange: (date) => {
12
+ field.onChange(date);
13
+ }, disabled: disabled, color: fieldState.hasError ? 'danger' : (props.color ?? 'neutral') }), _jsx(FormErrorMessage, { error: fieldState.error, disabled: disabled, className: cn(isHiddenErrorMessage && 'hidden', errorClassName) })] })) }));
14
+ };
15
+ export default LDFormDatePicker;
@@ -4,7 +4,10 @@ type DateRange = {
4
4
  to?: Date;
5
5
  };
6
6
  type ViewMode = 'daily' | 'monthly' | 'yearly';
7
+ type DateRangePickerVariant = 'filled' | 'outline';
8
+ type DateRangePickerColor = 'neutral' | 'point' | 'danger';
7
9
  export interface LDDateRangePickerProps {
10
+ variant?: DateRangePickerVariant;
8
11
  /** 선택된 날짜 범위 ({ from, to? }) */
9
12
  value?: DateRange;
10
13
  /** 날짜 범위 변경 시 호출되는 콜백 */
@@ -14,19 +17,23 @@ export interface LDDateRangePickerProps {
14
17
  /** true 시 너비 100% */
15
18
  block?: boolean;
16
19
  /** 색상 테마 (danger 시 에러 스타일) */
17
- color?: 'neutral' | 'danger';
20
+ color?: DateRangePickerColor;
21
+ /** 미선택 시 표시할 텍스트 */
22
+ placeholder?: string;
23
+ /** 날짜 표시 형식 */
24
+ dateFormat?: string;
25
+ /** 시간 표시 형식 */
26
+ timeFormat?: string;
18
27
  /** 현재 시점 이후 날짜 선택 비활성화 */
19
28
  isDisableAfterNow?: boolean;
20
29
  /** 날짜 범위 완성 시 팝오버 자동 닫힘 */
21
30
  isAutoClose?: boolean;
22
31
  /** 선택 모드 (daily: 일별, monthly: 월별, yearly: 연별) */
23
32
  viewMode?: ViewMode;
24
- /** 초기 선택 날짜 범위 (uncontrolled) */
25
- defaultValue?: DateRange;
26
33
  /** 초기값 (리셋 시 이 값으로 복원) */
27
34
  initialValue?: {
28
- from: string;
29
- to: string;
35
+ from: string | Date;
36
+ to?: string | Date;
30
37
  };
31
38
  /** 트리거 우측 아이콘 */
32
39
  trailingIcon?: ReactNode;
@@ -44,6 +51,6 @@ export interface LDDateRangePickerProps {
44
51
  /** 트리거 버튼 className */
45
52
  triggerClassName?: string;
46
53
  }
47
- declare const LDDateRangePicker: ({ value, onChange, disabled, block, color, isDisableAfterNow, isAutoClose, viewMode, defaultValue, initialValue, trailingIcon, onRangeComplete, onResetComplete, className, style, triggerClassName, }: LDDateRangePickerProps) => import("react/jsx-runtime").JSX.Element;
54
+ declare const LDDateRangePicker: ({ variant, value, onChange, disabled, block, color, placeholder, dateFormat, timeFormat, isDisableAfterNow, isAutoClose, viewMode, initialValue, trailingIcon, onRangeComplete, onResetComplete, className, style, triggerClassName, }: LDDateRangePickerProps) => import("react/jsx-runtime").JSX.Element;
48
55
  export default LDDateRangePicker;
49
56
  //# sourceMappingURL=LDDateRangePicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LDDateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/LDDateRangePicker/LDDateRangePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AASjD,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAC3C,KAAK,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAe/C,MAAM,WAAW,sBAAsB;IACrC,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAClD,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,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,iCAAiC;IACjC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,0BAA0B;IAC1B,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,iBAAiB;IACjB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5D,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,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,iBAAiB,GAAI,wMAmBxB,sBAAsB,4CAiLxB,CAAC;AA6LF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"LDDateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/LDDateRangePicker/LDDateRangePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAWf,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAC3C,KAAK,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC/C,KAAK,sBAAsB,GAAG,QAAQ,GAAG,SAAS,CAAC;AACnD,KAAK,oBAAoB,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAqB3D,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAClD,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,0BAA0B;IAC1B,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3D,iBAAiB;IACjB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5D,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,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;AAwBD,QAAA,MAAM,iBAAiB,GAAI,wOAoBxB,sBAAsB,4CA4SxB,CAAC;AA6LF,eAAe,iBAAiB,CAAC"}