@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
@@ -0,0 +1,41 @@
1
+ import { type ReactNode } from 'react';
2
+ type RootProps = {
3
+ type: 'single';
4
+ value?: string;
5
+ defaultValue?: string;
6
+ onValueChange?: (value: string) => void;
7
+ collapsible?: boolean;
8
+ disabled?: boolean;
9
+ className?: string;
10
+ children?: ReactNode;
11
+ } | {
12
+ type: 'multiple';
13
+ value?: string[];
14
+ defaultValue?: string[];
15
+ onValueChange?: (value: string[]) => void;
16
+ disabled?: boolean;
17
+ className?: string;
18
+ children?: ReactNode;
19
+ };
20
+ interface ItemProps {
21
+ value: string;
22
+ disabled?: boolean;
23
+ className?: string;
24
+ children?: ReactNode;
25
+ }
26
+ interface TriggerProps {
27
+ className?: string;
28
+ children?: ReactNode;
29
+ }
30
+ interface ContentProps {
31
+ className?: string;
32
+ children?: ReactNode;
33
+ }
34
+ export declare const AccordionBase: {
35
+ Root: ({ className, children, ...props }: RootProps) => import("react/jsx-runtime").JSX.Element;
36
+ Item: ({ value, disabled, className, children }: ItemProps) => import("react/jsx-runtime").JSX.Element;
37
+ Trigger: ({ className, children }: TriggerProps) => import("react/jsx-runtime").JSX.Element;
38
+ Content: ({ className, children }: ContentProps) => import("react/jsx-runtime").JSX.Element;
39
+ };
40
+ export default AccordionBase;
41
+ //# sourceMappingURL=AccordionBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDAccordion/AccordionBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,KAAK,SAAS,GACV;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAeN,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAeD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAkBD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAgBD,eAAO,MAAM,aAAa;8CAzEuB,SAAS;qDAoBF,SAAS;uCAkBvB,YAAY;uCAqBZ,YAAY;CAmBrD,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as RadixAccordion from '@radix-ui/react-accordion';
3
+ import cn from '../../utils/cn.js';
4
+ const Root = ({ className, children, ...props }) => {
5
+ return (
6
+ // Radix의 single/multiple 판별 유니온을 그대로 위임한다.
7
+ _jsx(RadixAccordion.Root, { ...props, className: cn('w-full', className), children: children }));
8
+ };
9
+ const Item = ({ value, disabled, className, children }) => {
10
+ return (_jsx(RadixAccordion.Item, { value: value, disabled: disabled, className: className, children: children }));
11
+ };
12
+ const Trigger = ({ className, children }) => {
13
+ return (_jsx(RadixAccordion.Header, { className: "flex", children: _jsx(RadixAccordion.Trigger, { className: cn('flex w-full items-center justify-between cursor-pointer disabled:cursor-not-allowed', className), children: children }) }));
14
+ };
15
+ const Content = ({ className, children }) => {
16
+ return (_jsx(RadixAccordion.Content, { className: cn('overflow-hidden', 'data-[state=open]:accordion-down data-[state=closed]:accordion-up', className), children: children }));
17
+ };
18
+ export const AccordionBase = {
19
+ Root,
20
+ Item,
21
+ Trigger,
22
+ Content,
23
+ };
24
+ export default AccordionBase;
@@ -0,0 +1,31 @@
1
+ import { type ReactNode } from 'react';
2
+ /** 아코디언 개별 항목 */
3
+ export interface LDAccordionItem {
4
+ /** 항목을 구분하는 고유 값 */
5
+ value: string;
6
+ /** 헤더에 표시할 제목 */
7
+ title: ReactNode;
8
+ /** 펼쳤을 때 표시할 내용 */
9
+ content: ReactNode;
10
+ /** 이 항목만 비활성화 */
11
+ disabled?: boolean;
12
+ }
13
+ export interface LDAccordionProps {
14
+ /** 아코디언에 표시할 항목 목록 */
15
+ items: LDAccordionItem[];
16
+ /** 'single'(한 번에 하나) | 'multiple'(여러 개 동시 열림). 기본 'single' */
17
+ type?: 'single' | 'multiple';
18
+ /** 초기 열림 값 (uncontrolled) */
19
+ defaultValue?: string | string[];
20
+ /** 열림 값 (controlled) */
21
+ value?: string | string[];
22
+ /** 열림 값 변경 콜백 */
23
+ onValueChange?: (value: string | string[]) => void;
24
+ /** single일 때 열린 항목을 다시 닫아 전체 닫힘 허용. 기본 true */
25
+ collapsible?: boolean;
26
+ /** 루트 컨테이너 className */
27
+ className?: string;
28
+ }
29
+ declare const LDAccordion: ({ items, type, defaultValue, value, onValueChange, collapsible, className, }: LDAccordionProps) => import("react/jsx-runtime").JSX.Element;
30
+ export default LDAccordion;
31
+ //# sourceMappingURL=LDAccordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LDAccordion.d.ts","sourceRoot":"","sources":["../../../src/components/LDAccordion/LDAccordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,iBAAiB;AACjB,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,mBAAmB;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,iBAAiB;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,iBAAiB;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,WAAW,GAAI,8EAQlB,gBAAgB,4CA2DlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDown, ChevronUp } from 'lucide-react';
3
+ import AccordionBase from './AccordionBase.js';
4
+ import cn from '../../utils/cn.js';
5
+ const LDAccordion = ({ items, type = 'single', defaultValue, value, onValueChange, collapsible = true, className, }) => {
6
+ // single/multiple 유니온을 Base로 넘기기 위해 공통 props를 한 번에 캐스팅한다.
7
+ const rootProps = {
8
+ type,
9
+ defaultValue,
10
+ value,
11
+ onValueChange,
12
+ ...(type === 'single' ? { collapsible } : {}),
13
+ };
14
+ return (_jsx(AccordionBase.Root, { ...rootProps, className: cn('flex flex-col gap-2.5', className), children: items.map((item) => {
15
+ // content가 없으면(nullish/false) 펼칠 게 없으므로 chevron·Content를 렌더하지 않는다.
16
+ // (헤더 트리거 자체는 그대로 유지)
17
+ const hasContent = item.content != null && item.content !== false;
18
+ return (_jsxs(AccordionBase.Item, { value: item.value, disabled: item.disabled, className: cn(item.disabled && 'opacity-40'), children: [_jsxs(AccordionBase.Trigger, { className: "group text-neutral900 display16 bold text-left", children: [item.title, hasContent && (_jsxs("div", { className: "relative size-5 text-neutral500", children: [_jsx(ChevronDown, { className: cn('absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2', 'group-data-[state=open]:animate-fade-in', 'group-data-[state=closed]:animate-fade-out'), "aria-hidden": true }), _jsx(ChevronUp, { className: cn('absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2', 'group-data-[state=open]:animate-fade-out', 'group-data-[state=closed]:animate-fade-in'), "aria-hidden": true })] }))] }), hasContent && (_jsx(AccordionBase.Content, { className: "text-neutral700 display14", children: _jsx("div", { className: "pl-5 pt-2.5", children: item.content }) }))] }, item.value));
19
+ }) }));
20
+ };
21
+ export default LDAccordion;
@@ -13,12 +13,12 @@ const useAutoCompleteContext = () => {
13
13
  return autoCompeleteContext;
14
14
  };
15
15
  const autoCompleteSizeClasses = {
16
- xSmall: 'autocomplete-2xs',
17
- small: 'autocomplete-xs',
18
- medium: 'autocomplete-sm',
19
- large: 'autocomplete-md',
20
- big: 'autocomplete-lg',
21
- xLarge: 'autocomplete-xl',
16
+ '2xsmall': 'autocomplete-2xs',
17
+ xsmall: 'autocomplete-xs',
18
+ small: 'autocomplete-sm',
19
+ medium: 'autocomplete-md',
20
+ large: 'autocomplete-lg',
21
+ xlarge: 'autocomplete-xl',
22
22
  };
23
23
  const Root = ({ displayField, subFields, onSelectedItem, onChange, className, children, ref, }) => {
24
24
  const [query, setQuery] = useState('');
@@ -1,4 +1,4 @@
1
- type AvatarSize = 'sm' | 'md' | 'lg';
1
+ type AvatarSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
2
2
  export interface LDAvatarProps {
3
3
  src?: string | null;
4
4
  alt?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"LDAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/LDAvatar/LDAvatar.tsx"],"names":[],"mappings":"AAKA,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAqBrC,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,QAAQ,GAAI,uCAMf,aAAa,4CAef,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"LDAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/LDAvatar/LDAvatar.tsx"],"names":[],"mappings":"AAKA,KAAK,UAAU,GACX,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AA8Bb,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,QAAQ,GAAI,uCAMf,aAAa,4CAef,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -3,21 +3,30 @@ import { UserRound } from 'lucide-react';
3
3
  import AvatarBase from './AvatarBase.js';
4
4
  import cn from '../../utils/cn.js';
5
5
  const SIZE_MAP = {
6
- sm: 'w-8 h-8',
7
- md: 'w-12 h-12',
8
- lg: 'w-16 h-16',
6
+ '2xsmall': 'w-2 h-2',
7
+ xsmall: 'w-4 h-4',
8
+ small: 'w-6 h-6',
9
+ medium: 'w-8 h-8',
10
+ large: 'w-12 h-12',
11
+ xlarge: 'w-16 h-16',
9
12
  };
10
13
  const IMAGE_SIZE_MAP = {
11
- sm: 32,
12
- md: 48,
13
- lg: 64,
14
+ '2xsmall': 8,
15
+ xsmall: 16,
16
+ small: 24,
17
+ medium: 32,
18
+ large: 48,
19
+ xlarge: 64,
14
20
  };
15
21
  const ICON_SIZE_MAP = {
16
- sm: 24,
17
- md: 32,
18
- lg: 40,
22
+ '2xsmall': 5,
23
+ xsmall: 10,
24
+ small: 15,
25
+ medium: 20,
26
+ large: 30,
27
+ xlarge: 40,
19
28
  };
20
- const LDAvatar = ({ src, alt = 'avatar', size = 'sm', className, style, }) => {
29
+ const LDAvatar = ({ src, alt = 'avatar', size = 'small', className, style, }) => {
21
30
  const px = IMAGE_SIZE_MAP[size];
22
31
  return (_jsxs(AvatarBase.Root, { src: src, style: style, className: cn(SIZE_MAP[size], className), children: [_jsx(AvatarBase.Image, { alt: alt, width: px, height: px }), _jsx(AvatarBase.Fallback, { className: "bg-mono100", children: _jsx(UserRound, { size: ICON_SIZE_MAP[size], className: "text-mono400" }) })] }));
23
32
  };
@@ -1,5 +1,4 @@
1
1
  import { type ReactNode } from 'react';
2
- import { type IconName } from '../Icon/LucideIcon.js';
3
2
  type BadgeSize = 'xsmall' | 'small' | 'medium' | 'large';
4
3
  type BadgeColor = 'orange' | 'fillOrange' | 'red' | 'fillRed' | 'green' | 'fillGreen' | 'blue' | 'fillBlue' | 'yellow' | 'fillYellow' | 'gray' | 'fillGray';
5
4
  export interface LDBadgeProps<T extends string> {
@@ -9,17 +8,17 @@ export interface LDBadgeProps<T extends string> {
9
8
  size?: BadgeSize;
10
9
  /** type별 색상 매핑 객체 (프리셋 BadgeColor 또는 커스텀 Tailwind 클래스) */
11
10
  colorsMap: Record<T, BadgeColor | string>;
11
+ /** 왼쪽 아이콘 (ReactNode) */
12
+ leftIcon?: ReactNode;
13
+ /** 오른쪽 아이콘 (ReactNode) */
14
+ rightIcon?: ReactNode;
12
15
  /** 뱃지 내용 */
13
16
  children?: ReactNode;
14
- /** 왼쪽 아이콘 (IconName 또는 ReactNode) */
15
- leftIcon?: IconName | ReactNode;
16
- /** 오른쪽 아이콘 (IconName 또는 ReactNode) */
17
- rightIcon?: IconName | ReactNode;
18
17
  /** 추가 CSS 클래스 */
19
18
  className?: string;
20
19
  /** 인라인 스타일 */
21
20
  style?: React.CSSProperties;
22
21
  }
23
- declare const LDBadge: <T extends string>({ type, size, colorsMap, children, leftIcon, rightIcon, className, style, }: LDBadgeProps<T>) => import("react/jsx-runtime").JSX.Element;
22
+ declare const LDBadge: <T extends string>({ type, size, colorsMap, leftIcon, rightIcon, children, className, style, }: LDBadgeProps<T>) => import("react/jsx-runtime").JSX.Element;
24
23
  export default LDBadge;
25
24
  //# sourceMappingURL=LDBadge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LDBadge.d.ts","sourceRoot":"","sources":["../../../src/components/LDBadge/LDBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,KAAK,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AACzD,KAAK,UAAU,GACX,QAAQ,GACR,YAAY,GACZ,KAAK,GACL,SAAS,GACT,OAAO,GACP,WAAW,GACX,MAAM,GACN,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,UAAU,CAAC;AAEf,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM;IAC5C,iCAAiC;IACjC,IAAI,EAAE,CAAC,CAAC;IACR,aAAa;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;IAC1C,YAAY;IACZ,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,sCAAsC;IACtC,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AA+BD,QAAA,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,EAAE,6EAShC,YAAY,CAAC,CAAC,CAAC,4CAmBjB,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"LDBadge.d.ts","sourceRoot":"","sources":["../../../src/components/LDBadge/LDBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,KAAK,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AACzD,KAAK,UAAU,GACX,QAAQ,GACR,YAAY,GACZ,KAAK,GACL,SAAS,GACT,OAAO,GACP,WAAW,GACX,MAAM,GACN,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,UAAU,CAAC;AAEf,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM;IAC5C,iCAAiC;IACjC,IAAI,EAAE,CAAC,CAAC;IACR,aAAa;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;IAC1C,yBAAyB;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY;IACZ,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AA+BD,QAAA,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,EAAE,6EAShC,YAAY,CAAC,CAAC,CAAC,4CAmBjB,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import BadgeBase from './BadgeBase.js';
3
- import { renderIcon } from '../../utils/renderIcon.js';
4
3
  import cn from '../../utils/cn.js';
4
+ import { renderIcon } from '../../utils/renderIcon.js';
5
5
  const colorClasses = {
6
6
  orange: 'bg-tintOrange text-orange500',
7
7
  fillOrange: 'bg-orange400 text-white',
@@ -28,7 +28,7 @@ const iconSizes = {
28
28
  medium: 'icon-md',
29
29
  large: 'icon-lg',
30
30
  };
31
- const LDBadge = ({ type, size = 'small', colorsMap, children, leftIcon, rightIcon, className, style, }) => {
31
+ const LDBadge = ({ type, size = 'small', colorsMap, leftIcon, rightIcon, children, className, style, }) => {
32
32
  const color = colorsMap[type];
33
33
  const iconSize = iconSizes[size];
34
34
  return (_jsxs(BadgeBase.Root, { className: cn('w-auto text-center whitespace-nowrap border border-transparent', colorClasses[color] ?? color, sizeClasses[size], className), style: style, children: [renderIcon(leftIcon, iconSize), children, renderIcon(rightIcon, iconSize)] }));
@@ -1,10 +1,9 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { type ButtonSize } from '../LDButton/LDButton.js';
3
- import { type IconName } from '../Icon/LucideIcon.js';
4
3
  export interface LDBreadCrumbItem {
5
4
  label: string;
6
5
  href?: string;
7
- icon?: IconName | ReactNode;
6
+ icon?: ReactNode;
8
7
  }
9
8
  export interface LDBreadCrumbProps {
10
9
  items: LDBreadCrumbItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"LDBreadCrumb.d.ts","sourceRoot":"","sources":["../../../src/components/LDBreadCrumb/LDBreadCrumb.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,QAAA,MAAM,YAAY,GAAI,wCAKnB,iBAAiB,4CAiDnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"LDBreadCrumb.d.ts","sourceRoot":"","sources":["../../../src/components/LDBreadCrumb/LDBreadCrumb.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,QAAA,MAAM,YAAY,GAAI,wCAKnB,iBAAiB,4CAiDnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import * as React from 'react';
2
2
  import { type ElementType } from 'react';
3
3
  import { PolymorphicComponentProps } from '../../types/polymorphic.js';
4
- import { type IconName } from '../Icon/LucideIcon.js';
5
4
  type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'link';
6
5
  type ButtonColor = 'neutral' | 'point' | 'danger';
7
6
  export type ButtonSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
8
7
  type ButtonShape = 'default' | 'capsule';
9
8
  type ButtonAlign = 'left' | 'center' | 'right';
9
+ export declare const iconSizeClasses: Record<ButtonSize, string>;
10
10
  type _ButtonProps = {
11
11
  variant?: ButtonVariant;
12
12
  color?: ButtonColor;
@@ -15,8 +15,8 @@ type _ButtonProps = {
15
15
  align?: ButtonAlign;
16
16
  loading?: boolean;
17
17
  block?: boolean;
18
- leftIcon?: IconName | React.ReactNode;
19
- rightIcon?: IconName | React.ReactNode;
18
+ leftIcon?: React.ReactNode;
19
+ rightIcon?: React.ReactNode;
20
20
  compact?: boolean;
21
21
  disabled?: boolean;
22
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"LDButton.d.ts","sourceRoot":"","sources":["../../../src/components/LDButton/LDButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAQnD,KAAK,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAC5D,KAAK,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAClD,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AACb,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AACzC,KAAK,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAkG/C,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,WAAW,IAAI,yBAAyB,CAC1E,CAAC,EACD,YAAY,CACb,CAAC;AAEF,KAAK,eAAe,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,EAC5D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KACpB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAE/B,QAAA,MAAM,QAAQ,EAAE,eAoEf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"LDButton.d.ts","sourceRoot":"","sources":["../../../src/components/LDButton/LDButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAQpE,KAAK,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAC5D,KAAK,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAClD,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AACb,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AACzC,KAAK,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AA6E/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOtD,CAAC;AAcF,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,WAAW,IAAI,yBAAyB,CAC1E,CAAC,EACD,YAAY,CACb,CAAC;AAEF,KAAK,eAAe,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,QAAQ,EAC5D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KACpB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAE/B,QAAA,MAAM,QAAQ,EAAE,eAoEf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -11,17 +11,17 @@ const variantBaseClasses = {
11
11
  danger: 'bg-danger500 text-white',
12
12
  },
13
13
  outline: {
14
- neutral: 'bg-white outline outline-neutral100 text-neutral500',
14
+ neutral: 'bg-white outline outline-neutral100 text-neutral900',
15
15
  point: 'bg-white outline outline-lb500 text-lb500',
16
16
  danger: 'bg-white outline outline-danger500 text-danger500',
17
17
  },
18
18
  ghost: {
19
- neutral: 'bg-transparent text-neutral500',
19
+ neutral: 'bg-transparent text-neutral900',
20
20
  point: 'bg-transparent text-lb500',
21
21
  danger: 'bg-transparent text-danger500',
22
22
  },
23
23
  link: {
24
- neutral: 'bg-transparent underline underline-offset-[4px] text-neutral500',
24
+ neutral: 'bg-transparent underline underline-offset-[4px] text-neutral900',
25
25
  point: 'bg-transparent text-lb500 underline underline-offset-[4px]',
26
26
  danger: 'bg-transparent text-danger500 underline underline-offset-[4px]',
27
27
  },
@@ -43,7 +43,7 @@ const variantHoverClasses = {
43
43
  danger: 'hover:bg-danger50',
44
44
  },
45
45
  link: {
46
- neutral: 'hover:text-neutral700 active:text-neutral700',
46
+ neutral: 'hover:text-neutral900 active:text-neutral900',
47
47
  point: 'hover:text-lb700 active:text-lb700',
48
48
  danger: 'hover:text-danger600 active:text-danger600',
49
49
  },
@@ -67,7 +67,7 @@ const sizeClasses = {
67
67
  large: 'btn-lg',
68
68
  xlarge: 'btn-xl',
69
69
  };
70
- const iconSizeClasses = {
70
+ export const iconSizeClasses = {
71
71
  '2xsmall': 'icon-2xs',
72
72
  xsmall: 'icon-xs',
73
73
  small: 'icon-sm',
@@ -0,0 +1,17 @@
1
+ import { type DayPickerProps, type Matcher } from 'react-day-picker';
2
+ import { type CSSProperties } from 'react';
3
+ /** react-day-picker의 DayPickerProps를 확장한 캘린더 Base props */
4
+ export type CalendarBaseProps = DayPickerProps & {
5
+ className?: string;
6
+ style?: CSSProperties;
7
+ booked?: Matcher | Matcher[];
8
+ book?: Matcher | Matcher[];
9
+ };
10
+ /**
11
+ * CalendarBase — react-day-picker 래핑 레이어. 구조·동작·접근성만 담당한다.
12
+ * (component 오버라이드, booked/book 모디파이어 배선, formatters, 날짜 범위, 포커스 관리)
13
+ * 시각 스타일은 Custom 레이어(LDCalendar)가 `className`/`classNames`로 주입한다.
14
+ */
15
+ declare const CalendarBase: ({ className, style, classNames, captionLayout, formatters, components, book, booked, modifiers, showOutsideDays, ...props }: CalendarBaseProps) => import("react/jsx-runtime").JSX.Element;
16
+ export default CalendarBase;
17
+ //# sourceMappingURL=CalendarBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalendarBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDCalendar/CalendarBase.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,OAAO,CAAC;AAIf,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,YAAY,GAAI,6HAYnB,iBAAiB,4CAmDnB,CAAC;AA0EF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,49 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { DayPicker, getDefaultClassNames, } from 'react-day-picker';
4
+ import { useRef, useEffect, } from 'react';
5
+ import cn from '../../utils/cn.js';
6
+ import { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';
7
+ /**
8
+ * CalendarBase — react-day-picker 래핑 레이어. 구조·동작·접근성만 담당한다.
9
+ * (component 오버라이드, booked/book 모디파이어 배선, formatters, 날짜 범위, 포커스 관리)
10
+ * 시각 스타일은 Custom 레이어(LDCalendar)가 `className`/`classNames`로 주입한다.
11
+ */
12
+ const CalendarBase = ({ className, style, classNames, captionLayout = 'label', formatters, components, book, booked, modifiers, showOutsideDays = true, ...props }) => {
13
+ return (_jsx(DayPicker, { showOutsideDays: showOutsideDays, startMonth: new Date(1900, 0), endMonth: new Date(new Date().getFullYear() + 10, 11), style: style, className: className, captionLayout: captionLayout, formatters: {
14
+ formatMonthDropdown: (date) => date.toLocaleString('default', { month: 'short' }),
15
+ ...formatters,
16
+ }, classNames: classNames, modifiers: {
17
+ booked,
18
+ book,
19
+ ...modifiers,
20
+ }, components: {
21
+ Root: ({ className: rootClassName, rootRef, ...rootProps }) => (_jsx("div", { "data-slot": "calendar", ref: rootRef, className: cn(rootClassName), ...rootProps })),
22
+ Chevron: ({ className: chevronClassName, orientation }) => {
23
+ return orientation === 'left' ? (_jsx(ChevronLeft, { className: cn('size-4', chevronClassName) })) : orientation === 'right' ? (_jsx(ChevronRight, { className: cn('size-4', chevronClassName) })) : (_jsx(ChevronDown, { className: cn('size-4', chevronClassName) }));
24
+ },
25
+ DayButton: CalendarDayButton,
26
+ WeekNumber: ({ children, ...weekNumberProps }) => (_jsx("td", { ...weekNumberProps, children: _jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children: children }) })),
27
+ ...components,
28
+ }, ...props }));
29
+ };
30
+ /** 날짜 셀 버튼 — 구조 + 접근성(data-속성, 포커스 관리) + book/booked 표시 요소 */
31
+ const CalendarDayButton = ({ className: btnClassName, day, modifiers, ...btnProps }) => {
32
+ const defaultClassNames = getDefaultClassNames();
33
+ const ref = useRef(null);
34
+ useEffect(() => {
35
+ if (modifiers.focused)
36
+ ref.current?.focus();
37
+ }, [modifiers.focused]);
38
+ return (_jsxs("button", { ref: ref, type: "button", "data-day": day.date.toLocaleDateString(), "data-selected-single": modifiers.selected &&
39
+ !modifiers.range_start &&
40
+ !modifiers.range_end &&
41
+ !modifiers.range_middle, "data-range-start": modifiers.range_start, "data-range-end": modifiers.range_end, "data-range-middle": modifiers.range_middle, className: cn('relative inline-flex items-center justify-center rounded-lg text-sm font-medium ld-transition outline-none cursor-pointer', 'hover:bg-tintBlue hover:text-lb500', 'flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1', 'leading-none font-normal', 'data-[selected-single=true]:bg-tintBlue data-[selected-single=true]:text-lb500', 'data-[selected-single=true]:animate-day-picker-color-in', 'data-[range-start=true]:bg-tintBlue data-[range-start=true]:text-lb500', 'data-[range-start=true]:animate-day-picker-color-in', 'data-[range-middle=true]:bg-mono50 data-[range-middle=true]:text-neutral500 data-[range-middle=true]:animate-day-range-picker-color-in', 'data-[range-end=true]:bg-tintBlue data-[range-end=true]:text-lb500', 'data-[range-end=true]:animate-day-picker-color-in', 'group-data-[focused=true]/day:relative', 'group-data-[focused=true]/day:z-10', '', modifiers.range_start &&
42
+ !modifiers.range_end &&
43
+ 'rounded-l-lg rounded-r-none', modifiers.range_end &&
44
+ !modifiers.range_start &&
45
+ 'rounded-l-none rounded-r-lg', modifiers.range_middle && 'rounded-none', modifiers.range_start && modifiers.range_end && 'rounded-lg',
46
+ // '[&>span]:text-xs [&>span]:opacity-70',
47
+ defaultClassNames.day, btnClassName), ...btnProps, children: [_jsx("span", { className: cn('relative z-10', modifiers.booked && 'line-through opacity-40 decoration-current'), children: btnProps.children }), modifiers.book && (_jsx("span", { className: "absolute bottom-1 size-1 rounded-full bg-lb500" }))] }));
48
+ };
49
+ export default CalendarBase;
@@ -1,16 +1,10 @@
1
- import { type DayPickerProps, type Matcher } from 'react-day-picker';
2
- import { type CSSProperties } from 'react';
3
- /** react-day-picker의 DayPickerProps를 확장한 캘린더 props */
4
- type LDCalendarProps = DayPickerProps & {
5
- /** 추가 CSS 클래스 */
1
+ import { type CalendarBaseProps } from './CalendarBase.js';
2
+ type LDCalendarProps = CalendarBaseProps;
3
+ export declare const TimePicker: ({ value, onChange, className, }: {
4
+ value?: string;
5
+ onChange?: (time: string) => void;
6
6
  className?: string;
7
- /** 인라인 스타일 */
8
- style?: CSSProperties;
9
- /** 예약 완료된 날짜 (취소선 표시) */
10
- booked?: Matcher | Matcher[];
11
- /** 예약 가능한 날짜 (아래에 점 표시) */
12
- book?: Matcher | Matcher[];
13
- };
14
- declare const LDCalendar: ({ className, style, classNames, showOutsideDays, captionLayout, formatters, components, booked, book, modifiers, ...props }: LDCalendarProps) => import("react/jsx-runtime").JSX.Element;
15
- export default LDCalendar;
7
+ }) => import("react/jsx-runtime").JSX.Element;
8
+ declare const LDCalendarMemo: import("react").MemoExoticComponent<({ className, classNames, captionLayout, ...props }: LDCalendarProps) => import("react/jsx-runtime").JSX.Element>;
9
+ export default LDCalendarMemo;
16
10
  //# sourceMappingURL=LDCalendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LDCalendar.d.ts","sourceRoot":"","sources":["../../../src/components/LDCalendar/LDCalendar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,OAAO,CAAC;AAIf,sDAAsD;AACtD,KAAK,eAAe,GAAG,cAAc,GAAG;IACtC,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,yBAAyB;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAC7B,2BAA2B;IAC3B,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;CAC5B,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,6HAYjB,eAAe,4CAsJjB,CAAC;AAoEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"LDCalendar.d.ts","sourceRoot":"","sources":["../../../src/components/LDCalendar/LDCalendar.tsx"],"names":[],"mappings":"AAKA,OAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,KAAK,eAAe,GAAG,iBAAiB,CAAC;AA8LzC,eAAO,MAAM,UAAU,GAAI,iCAIxB;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,4CAgEA,CAAC;AAEF,QAAA,MAAM,cAAc,2FAjQjB,eAAe,6CAiQqB,CAAC;AAGxC,eAAe,cAAc,CAAC"}
@@ -1,18 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { DayPicker, getDefaultClassNames, } from 'react-day-picker';
4
- import { useRef, useEffect, } from 'react';
5
- import LucideIcon from '../Icon/LucideIcon.js';
3
+ import { getDefaultClassNames } from 'react-day-picker';
4
+ import { memo, useRef, useEffect, useMemo } from 'react';
6
5
  import cn from '../../utils/cn.js';
7
- const LDCalendar = ({ className, style, classNames, showOutsideDays = true, captionLayout = 'label', formatters, components, booked, book, modifiers, ...props }) => {
8
- // 라이브러리가 기본적으로 사용하는 모든 css 클래스 이름을 담고있는 객체
6
+ import CalendarBase from './CalendarBase.js';
7
+ const LDCalendar = ({ className, classNames, captionLayout = 'label', ...props }) => {
9
8
  const defaultClassNames = getDefaultClassNames();
10
- return (_jsx(DayPicker, { showOutsideDays: showOutsideDays, startMonth: new Date(1900, 0), endMonth: new Date(new Date().getFullYear() + 10, 11), style: style, className: cn('bg-white group/calendar p-3 [--cell-size:--spacing(8)] w-fit',
9
+ return (_jsx(CalendarBase, { captionLayout: captionLayout, className: cn('bg-white group/calendar p-sm [--cell-size:--spacing(8)] w-fit',
11
10
  //rtl일때 버튼 아이콘 방향 전환
12
- String.raw `rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw `rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className), captionLayout: captionLayout, formatters: {
13
- formatMonthDropdown: (date) => date.toLocaleString('default', { month: 'short' }),
14
- ...formatters,
15
- }, classNames: {
11
+ String.raw `rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw `rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className), classNames: {
16
12
  root: cn(defaultClassNames.root),
17
13
  months: cn('flex gap-4 flex-col md:flex-row relative', defaultClassNames.months),
18
14
  month: cn('flex flex-col w-full gap-4', defaultClassNames.month),
@@ -36,40 +32,56 @@ const LDCalendar = ({ className, style, classNames, showOutsideDays = true, capt
36
32
  range_start: cn('rounded-l-md bg-neutral-100', defaultClassNames.range_start),
37
33
  range_middle: cn('rounded-none', defaultClassNames.range_middle),
38
34
  range_end: cn('rounded-r-md bg-neutral-100', defaultClassNames.range_end),
39
- today: cn('bg-lb50 text-lb900 rounded-md data-[selected=true]:rounded-none font-semibold', defaultClassNames.today),
35
+ today: cn('rounded-lg ring-1 ring-inset ring-lb500 hover:ring-0 data-[selected=true]:ring-0', 'data-[range-start=true]:rounded-l-lg data-[range-start=true]:rounded-r-none', 'data-[range-end=true]:rounded-r-lg data-[range-end=true]:rounded-l-none', 'font-semibold', defaultClassNames.today),
40
36
  outside: cn('text-neutral-500 aria-selected:text-neutral-500', defaultClassNames.outside),
41
37
  disabled: cn('text-neutral-500 opacity-50', defaultClassNames.disabled),
42
38
  hidden: cn('invisible', defaultClassNames.hidden),
43
39
  ...classNames,
44
- }, modifiers: {
45
- booked,
46
- book,
47
- ...modifiers,
48
- }, components: {
49
- Root: ({ className: rootClassName, rootRef, ...rootProps }) => (_jsx("div", { "data-slot": "calendar", ref: rootRef, className: cn(rootClassName), ...rootProps })),
50
- Chevron: ({ className: chevronClassName, orientation }) => {
51
- const iconName = orientation === 'left'
52
- ? 'chevronLeft'
53
- : orientation === 'right'
54
- ? 'chevronRight'
55
- : 'chevronDown';
56
- return (_jsx(LucideIcon, { name: iconName, className: cn('size-4', chevronClassName) }));
57
- },
58
- DayButton: CalendarDayButton,
59
- WeekNumber: ({ children, ...weekNumberProps }) => (_jsx("td", { ...weekNumberProps, children: _jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children: children }) })),
60
- ...components,
61
40
  }, ...props }));
62
41
  };
63
- function CalendarDayButton({ className: btnClassName, day, modifiers, ...btnProps }) {
64
- const defaultClassNames = getDefaultClassNames();
42
+ const TIME_ITEM_HEIGHT = 32; // NOTE: px, h-8과 동일
43
+ const pad2 = (n) => String(n).padStart(2, '0');
44
+ const HOURS = Array.from({ length: 12 }, (_, i) => (i === 0 ? 12 : i));
45
+ const MINUTES = Array.from({ length: 60 }, (_, i) => i);
46
+ const SECONDS = Array.from({ length: 60 }, (_, i) => i);
47
+ const AMPM = ['am', 'pm'];
48
+ const to24Hour = (hour12, period) => {
49
+ const base = hour12 % 12; // 12 → 0
50
+ return period === 'pm' ? base + 12 : base;
51
+ };
52
+ const TimeScrollColumn = ({ values, selected, onSelect, ariaLabel, format = (v) => String(v), className, }) => {
65
53
  const ref = useRef(null);
54
+ const mountRef = useRef(false);
66
55
  useEffect(() => {
67
- if (modifiers.focused)
68
- ref.current?.focus();
69
- }, [modifiers.focused]);
70
- return (_jsxs("button", { ref: ref, type: "button", "data-day": day.date.toLocaleDateString(), "data-selected-single": modifiers.selected &&
71
- !modifiers.range_start &&
72
- !modifiers.range_end &&
73
- !modifiers.range_middle, "data-range-start": modifiers.range_start, "data-range-end": modifiers.range_end, "data-range-middle": modifiers.range_middle, className: cn('relative inline-flex items-center justify-center rounded-md text-sm font-medium transition-all outline-none cursor-pointer', 'hover:bg-lb50 hover:text-lb900', 'focus-visible:border-lb600 focus-visible:ring-lb600/50 focus-visible:ring-[3px]', 'data-[selected-single=true]:bg-lb600 data-[selected-single=true]:text-white', 'data-[range-middle=true]:bg-lb50 data-[range-middle=true]:text-lb900', 'data-[range-start=true]:bg-lb600 data-[range-start=true]:text-white', 'data-[range-end=true]:bg-lb600 data-[range-end=true]:text-white', 'flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal', 'group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-lb600/50 group-data-[focused=true]/day:ring-[3px]', 'data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md', 'data-[range-middle=true]:rounded-none', 'data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md', '[&>span]:text-xs [&>span]:opacity-70', defaultClassNames.day, btnClassName), ...btnProps, children: [_jsx("span", { className: cn('relative z-10', modifiers.booked && 'line-through opacity-40 decoration-current'), children: btnProps.children }), modifiers.book && (_jsx("span", { className: cn('absolute bottom-1.5 size-1 rounded-full bg-lb600', modifiers.selected && 'bg-white') }))] }));
74
- }
75
- export default LDCalendar;
56
+ const el = ref.current;
57
+ if (!el)
58
+ return;
59
+ const idx = values.indexOf(selected);
60
+ if (idx < 0)
61
+ return;
62
+ const behavior = mountRef.current ? 'smooth' : 'auto';
63
+ mountRef.current = true;
64
+ el.scrollTo({
65
+ top: idx * TIME_ITEM_HEIGHT - (el.clientHeight - TIME_ITEM_HEIGHT) / 2,
66
+ behavior,
67
+ });
68
+ }, [selected, values]);
69
+ return (_jsx("div", { ref: ref, role: "listbox", "aria-label": ariaLabel, className: cn('h-full min-h-0 overflow-y-auto scrollbar-hover ld-transition w-auto border-neutral100 pt-1 pb-0', className), children: values.map((v) => (_jsx("button", { type: "button", role: "option", "aria-selected": v === selected, onClick: () => onSelect(v), className: cn('display14 flex h-8 w-10 items-center justify-center rounded-md text-sm ld-transition hover:cursor-pointer', v === selected ? 'bg-tintBlue text-lb500' : 'hover:bg-neutral50'), children: format(v) }, String(v)))) }));
70
+ };
71
+ export const TimePicker = ({ value, onChange, className, }) => {
72
+ const [hours, minutes, seconds, ampm] = useMemo(() => {
73
+ const [h = 0, m = 0, s = 0] = (value ?? '00:00:00')
74
+ .split(':')
75
+ .map((s) => parseInt(s, 10));
76
+ const ampm = h >= 12 ? 'pm' : 'am';
77
+ const hour = h % 12 === 0 ? 12 : h % 12;
78
+ return [hour, m, s, ampm];
79
+ }, [value]);
80
+ const commit = (hours, minutes, seconds, ampm) => {
81
+ onChange?.(`${pad2(to24Hour(hours, ampm))}:${pad2(minutes)}:${pad2(seconds)}`);
82
+ };
83
+ return (_jsxs("div", { className: cn('flex h-auto items-stretch border-l border-neutral100 pr-1.5', className), children: [_jsx(TimeScrollColumn, { values: HOURS, selected: hours, ariaLabel: "\uC2DC", format: pad2, onSelect: (v) => commit(v, minutes, seconds, ampm), className: "border-r border-neutral100 pl-1" }), _jsx(TimeScrollColumn, { values: MINUTES, selected: minutes, ariaLabel: "\uBD84", format: pad2, onSelect: (v) => commit(hours, v, seconds, ampm), className: "border-r border-neutral100 pl-1" }), _jsx(TimeScrollColumn, { values: SECONDS, selected: seconds, ariaLabel: "\uCD08", format: pad2, onSelect: (v) => commit(hours, minutes, v, ampm), className: "border-r border-neutral100 pl-1" }), _jsx(TimeScrollColumn, { values: AMPM, selected: ampm, ariaLabel: "\uC624\uC804/\uC624\uD6C4", format: (v) => (v === 'am' ? '오전' : '오후'), onSelect: (v) => commit(hours, minutes, seconds, v), className: "pl-1" })] }));
84
+ };
85
+ const LDCalendarMemo = memo(LDCalendar);
86
+ LDCalendarMemo.displayName = 'LDCalendar';
87
+ export default LDCalendarMemo;
@@ -65,8 +65,8 @@ export interface ContainerProps {
65
65
  children?: ReactNode;
66
66
  }
67
67
  export interface SlideProps {
68
- /** 슬라이드 크기(basis). 기본 '100%' ( 번에 하나) */
69
- size?: string;
68
+ /** 한 화면에 보일 슬라이드 수. 기본 1(=100%). `'auto'`면 슬라이드가 내용 폭대로(basis auto) */
69
+ slidesPerView?: number | 'auto';
70
70
  index?: number;
71
71
  total?: number;
72
72
  className?: string;
@@ -91,7 +91,7 @@ export declare const CarouselBase: {
91
91
  Root: ({ orientation, loop, autoplay, autoScroll, align, containScroll, options, gap, className, style, children, }: RootProps) => import("react/jsx-runtime").JSX.Element;
92
92
  Viewport: ({ className, children }: ViewportProps) => import("react/jsx-runtime").JSX.Element;
93
93
  Container: ({ className, style, children }: ContainerProps) => import("react/jsx-runtime").JSX.Element;
94
- Slide: ({ size, index, total, className, style, children, }: SlideProps) => import("react/jsx-runtime").JSX.Element;
94
+ Slide: ({ slidesPerView, index, total, className, style, children, }: SlideProps) => import("react/jsx-runtime").JSX.Element;
95
95
  Prev: ({ className, children, ...props }: NavButtonProps) => import("react/jsx-runtime").JSX.Element;
96
96
  Next: ({ className, children, ...props }: NavButtonProps) => import("react/jsx-runtime").JSX.Element;
97
97
  Dots: ({ className, dotClassName }: DotsProps) => import("react/jsx-runtime").JSX.Element;