@loword/loword-design-system 0.0.2 → 0.0.4

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