@loword/loword-design-system 0.0.2 → 0.0.3

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 (250) hide show
  1. package/dist/components/BreadCrumb/BreadCrumb.d.ts +17 -0
  2. package/dist/components/BreadCrumb/BreadCrumb.d.ts.map +1 -0
  3. package/dist/components/BreadCrumb/BreadCrumb.js +37 -0
  4. package/dist/components/BreadCrumb/BreadCrumbBase.d.ts +9 -0
  5. package/dist/components/BreadCrumb/BreadCrumbBase.d.ts.map +1 -0
  6. package/dist/components/BreadCrumb/BreadCrumbBase.js +17 -0
  7. package/dist/components/Button/ButtonSpinner.d.ts +1 -2
  8. package/dist/components/Button/ButtonSpinner.d.ts.map +1 -1
  9. package/dist/components/Button/ButtonSpinner.js +3 -2
  10. package/dist/components/Callout/Callout.d.ts +10 -0
  11. package/dist/components/Callout/Callout.d.ts.map +1 -0
  12. package/dist/components/Callout/Callout.js +6 -0
  13. package/dist/components/Callout/CalloutBase.d.ts +18 -0
  14. package/dist/components/Callout/CalloutBase.d.ts.map +1 -0
  15. package/dist/components/Callout/CalloutBase.js +21 -0
  16. package/dist/components/Divider/Divider.d.ts +9 -0
  17. package/dist/components/Divider/Divider.d.ts.map +1 -0
  18. package/dist/components/Divider/Divider.js +11 -0
  19. package/dist/components/Divider/DividerBase.d.ts +9 -0
  20. package/dist/components/Divider/DividerBase.d.ts.map +1 -0
  21. package/dist/components/Divider/DividerBase.js +9 -0
  22. package/dist/components/FileUpload/FileUploadBase.d.ts +5 -5
  23. package/dist/components/FileUpload/FileUploadBase.d.ts.map +1 -1
  24. package/dist/components/FileUpload/FileUploadBase.js +4 -4
  25. package/dist/components/Form/FormField.d.ts +2 -2
  26. package/dist/components/LDAvatar/AvatarBase.d.ts +32 -0
  27. package/dist/components/LDAvatar/AvatarBase.d.ts.map +1 -0
  28. package/dist/components/LDAvatar/AvatarBase.js +49 -0
  29. package/dist/components/LDAvatar/LDAvatar.d.ts +11 -0
  30. package/dist/components/LDAvatar/LDAvatar.d.ts.map +1 -0
  31. package/dist/components/LDAvatar/LDAvatar.js +24 -0
  32. package/dist/components/LDBadge/BadgeBase.d.ts +10 -0
  33. package/dist/components/LDBadge/BadgeBase.d.ts.map +1 -0
  34. package/dist/components/LDBadge/BadgeBase.js +9 -0
  35. package/dist/components/LDBadge/LDBadge.d.ts +25 -0
  36. package/dist/components/LDBadge/LDBadge.d.ts.map +1 -0
  37. package/dist/components/LDBadge/LDBadge.js +36 -0
  38. package/dist/components/LDBreadCrumb/BreadCrumbBase.d.ts +9 -0
  39. package/dist/components/LDBreadCrumb/BreadCrumbBase.d.ts.map +1 -0
  40. package/dist/components/LDBreadCrumb/BreadCrumbBase.js +17 -0
  41. package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts +17 -0
  42. package/dist/components/LDBreadCrumb/LDBreadCrumb.d.ts.map +1 -0
  43. package/dist/components/LDBreadCrumb/LDBreadCrumb.js +37 -0
  44. package/dist/components/LDButton/ButtonBase.d.ts +5 -0
  45. package/dist/components/LDButton/ButtonBase.d.ts.map +1 -0
  46. package/dist/components/LDButton/ButtonBase.js +10 -0
  47. package/dist/components/LDButton/ButtonSpinner.d.ts +8 -0
  48. package/dist/components/LDButton/ButtonSpinner.d.ts.map +1 -0
  49. package/dist/components/LDButton/ButtonSpinner.js +15 -0
  50. package/dist/components/LDButton/LDButton.d.ts +26 -0
  51. package/dist/components/LDButton/LDButton.d.ts.map +1 -0
  52. package/dist/components/LDButton/LDButton.js +102 -0
  53. package/dist/components/LDCalendar/LDCalendar.d.ts +16 -0
  54. package/dist/components/LDCalendar/LDCalendar.d.ts.map +1 -0
  55. package/dist/components/LDCalendar/LDCalendar.js +75 -0
  56. package/dist/components/LDCallout/CalloutBase.d.ts +18 -0
  57. package/dist/components/LDCallout/CalloutBase.d.ts.map +1 -0
  58. package/dist/components/LDCallout/CalloutBase.js +21 -0
  59. package/dist/components/LDCallout/LDCallout.d.ts +10 -0
  60. package/dist/components/LDCallout/LDCallout.d.ts.map +1 -0
  61. package/dist/components/LDCallout/LDCallout.js +6 -0
  62. package/dist/components/LDCarousel/CarouselBase.d.ts +98 -0
  63. package/dist/components/LDCarousel/CarouselBase.d.ts.map +1 -0
  64. package/dist/components/LDCarousel/CarouselBase.js +144 -0
  65. package/dist/components/LDCarousel/LDCarousel.d.ts +50 -0
  66. package/dist/components/LDCarousel/LDCarousel.d.ts.map +1 -0
  67. package/dist/components/LDCarousel/LDCarousel.js +22 -0
  68. package/dist/components/LDCheckbox/CheckboxBase.d.ts +40 -0
  69. package/dist/components/LDCheckbox/CheckboxBase.d.ts.map +1 -0
  70. package/dist/components/LDCheckbox/CheckboxBase.js +57 -0
  71. package/dist/components/LDCheckbox/FormCheckbox.d.ts +14 -0
  72. package/dist/components/LDCheckbox/FormCheckbox.d.ts.map +1 -0
  73. package/dist/components/LDCheckbox/FormCheckbox.js +9 -0
  74. package/dist/components/LDCheckbox/FormCheckboxGroup.d.ts +13 -0
  75. package/dist/components/LDCheckbox/FormCheckboxGroup.d.ts.map +1 -0
  76. package/dist/components/LDCheckbox/FormCheckboxGroup.js +9 -0
  77. package/dist/components/LDCheckbox/LDCheckbox.d.ts +27 -0
  78. package/dist/components/LDCheckbox/LDCheckbox.d.ts.map +1 -0
  79. package/dist/components/LDCheckbox/LDCheckbox.js +30 -0
  80. package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts +22 -0
  81. package/dist/components/LDCheckbox/LDCheckboxGroup.d.ts.map +1 -0
  82. package/dist/components/LDCheckbox/LDCheckboxGroup.js +13 -0
  83. package/dist/components/LDDataCalendar/DataCalendarBase.d.ts +45 -0
  84. package/dist/components/LDDataCalendar/DataCalendarBase.d.ts.map +1 -0
  85. package/dist/components/LDDataCalendar/DataCalendarBase.js +57 -0
  86. package/dist/components/LDDataCalendar/LDDataCalendar.d.ts +12 -0
  87. package/dist/components/LDDataCalendar/LDDataCalendar.d.ts.map +1 -0
  88. package/dist/components/LDDataCalendar/LDDataCalendar.js +13 -0
  89. package/dist/components/LDDatePicker/FormDatePicker.d.ts +12 -0
  90. package/dist/components/LDDatePicker/FormDatePicker.d.ts.map +1 -0
  91. package/dist/components/LDDatePicker/FormDatePicker.js +12 -0
  92. package/dist/components/LDDatePicker/LDDatePicker.d.ts +34 -0
  93. package/dist/components/LDDatePicker/LDDatePicker.d.ts.map +1 -0
  94. package/dist/components/LDDatePicker/LDDatePicker.js +44 -0
  95. package/dist/components/LDDateRangePicker/FormDateRangePicker.d.ts +12 -0
  96. package/dist/components/LDDateRangePicker/FormDateRangePicker.d.ts.map +1 -0
  97. package/dist/components/LDDateRangePicker/FormDateRangePicker.js +10 -0
  98. package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts +49 -0
  99. package/dist/components/LDDateRangePicker/LDDateRangePicker.d.ts.map +1 -0
  100. package/dist/components/LDDateRangePicker/LDDateRangePicker.js +197 -0
  101. package/dist/components/LDDivider/DividerBase.d.ts +9 -0
  102. package/dist/components/LDDivider/DividerBase.d.ts.map +1 -0
  103. package/dist/components/LDDivider/DividerBase.js +9 -0
  104. package/dist/components/LDDivider/LDDivider.d.ts +9 -0
  105. package/dist/components/LDDivider/LDDivider.d.ts.map +1 -0
  106. package/dist/components/LDDivider/LDDivider.js +11 -0
  107. package/dist/components/LDDrawer/DrawerBase.d.ts +52 -0
  108. package/dist/components/LDDrawer/DrawerBase.d.ts.map +1 -0
  109. package/dist/components/LDDrawer/DrawerBase.js +38 -0
  110. package/dist/components/LDDrawer/LDDrawer.d.ts +51 -0
  111. package/dist/components/LDDrawer/LDDrawer.d.ts.map +1 -0
  112. package/dist/components/LDDrawer/LDDrawer.js +30 -0
  113. package/dist/components/LDEditor/EditorBase.d.ts +52 -0
  114. package/dist/components/LDEditor/EditorBase.d.ts.map +1 -0
  115. package/dist/components/LDEditor/EditorBase.js +89 -0
  116. package/dist/components/LDEditor/LDEditor.d.ts +12 -0
  117. package/dist/components/LDEditor/LDEditor.d.ts.map +1 -0
  118. package/dist/components/LDEditor/LDEditor.js +162 -0
  119. package/dist/components/LDEditor/LDViewer.d.ts +7 -0
  120. package/dist/components/LDEditor/LDViewer.d.ts.map +1 -0
  121. package/dist/components/LDEditor/LDViewer.js +9 -0
  122. package/dist/components/LDEditor/extensions.d.ts +6 -0
  123. package/dist/components/LDEditor/extensions.d.ts.map +1 -0
  124. package/dist/components/LDEditor/extensions.js +38 -0
  125. package/dist/components/LDInput/FormInput.d.ts +15 -0
  126. package/dist/components/LDInput/FormInput.d.ts.map +1 -0
  127. package/dist/components/LDInput/FormInput.js +19 -0
  128. package/dist/components/LDInput/InputBase.d.ts +22 -0
  129. package/dist/components/LDInput/InputBase.d.ts.map +1 -0
  130. package/dist/components/LDInput/InputBase.js +17 -0
  131. package/dist/components/LDInput/LDInput.d.ts +24 -0
  132. package/dist/components/LDInput/LDInput.d.ts.map +1 -0
  133. package/dist/components/LDInput/LDInput.js +71 -0
  134. package/dist/components/LDLoadingDots/LDLoadingDots.d.ts +8 -0
  135. package/dist/components/LDLoadingDots/LDLoadingDots.d.ts.map +1 -0
  136. package/dist/components/LDLoadingDots/LDLoadingDots.js +29 -0
  137. package/dist/components/LDMenuBar/LDMenuBar.d.ts +21 -0
  138. package/dist/components/LDMenuBar/LDMenuBar.d.ts.map +1 -0
  139. package/dist/components/LDMenuBar/LDMenuBar.js +33 -0
  140. package/dist/components/LDMenuBar/MenuBarBase.d.ts +43 -0
  141. package/dist/components/LDMenuBar/MenuBarBase.d.ts.map +1 -0
  142. package/dist/components/LDMenuBar/MenuBarBase.js +69 -0
  143. package/dist/components/LDModal/LDModal.d.ts +51 -0
  144. package/dist/components/LDModal/LDModal.d.ts.map +1 -0
  145. package/dist/components/LDModal/LDModal.js +72 -0
  146. package/dist/components/LDModal/ModalBase.d.ts +42 -0
  147. package/dist/components/LDModal/ModalBase.d.ts.map +1 -0
  148. package/dist/components/LDModal/ModalBase.js +30 -0
  149. package/dist/components/LDModal/openModal.d.ts +24 -0
  150. package/dist/components/LDModal/openModal.d.ts.map +1 -0
  151. package/dist/components/LDModal/openModal.js +52 -0
  152. package/dist/components/LDOTPInput/LDOTPInput.d.ts +46 -0
  153. package/dist/components/LDOTPInput/LDOTPInput.d.ts.map +1 -0
  154. package/dist/components/LDOTPInput/LDOTPInput.js +87 -0
  155. package/dist/components/LDPagination/LDPagination.d.ts +12 -0
  156. package/dist/components/LDPagination/LDPagination.d.ts.map +1 -0
  157. package/dist/components/LDPagination/LDPagination.js +5 -0
  158. package/dist/components/LDPagination/PaginationBase.d.ts +36 -0
  159. package/dist/components/LDPagination/PaginationBase.d.ts.map +1 -0
  160. package/dist/components/LDPagination/PaginationBase.js +44 -0
  161. package/dist/components/LDPagination/paginationUtils.d.ts +2 -0
  162. package/dist/components/LDPagination/paginationUtils.d.ts.map +1 -0
  163. package/dist/components/LDPagination/paginationUtils.js +18 -0
  164. package/dist/components/LDPopover/LDPopover.d.ts +42 -0
  165. package/dist/components/LDPopover/LDPopover.d.ts.map +1 -0
  166. package/dist/components/LDPopover/LDPopover.js +31 -0
  167. package/dist/components/LDPopover/PopoverBase.d.ts +31 -0
  168. package/dist/components/LDPopover/PopoverBase.d.ts.map +1 -0
  169. package/dist/components/LDPopover/PopoverBase.js +18 -0
  170. package/dist/components/LDRadio/FormRadioGroup.d.ts +13 -0
  171. package/dist/components/LDRadio/FormRadioGroup.d.ts.map +1 -0
  172. package/dist/components/LDRadio/FormRadioGroup.js +9 -0
  173. package/dist/components/LDRadio/LDRadio.d.ts +24 -0
  174. package/dist/components/LDRadio/LDRadio.d.ts.map +1 -0
  175. package/dist/components/LDRadio/LDRadio.js +39 -0
  176. package/dist/components/LDRadio/LDRadioGroup.d.ts +22 -0
  177. package/dist/components/LDRadio/LDRadioGroup.d.ts.map +1 -0
  178. package/dist/components/LDRadio/LDRadioGroup.js +7 -0
  179. package/dist/components/LDRadio/RadioBase.d.ts +38 -0
  180. package/dist/components/LDRadio/RadioBase.d.ts.map +1 -0
  181. package/dist/components/LDRadio/RadioBase.js +46 -0
  182. package/dist/components/LDScrollArea/LDScrollArea.d.ts +15 -0
  183. package/dist/components/LDScrollArea/LDScrollArea.d.ts.map +1 -0
  184. package/dist/components/LDScrollArea/LDScrollArea.js +10 -0
  185. package/dist/components/LDSelect/FormMultiSelect.d.ts +13 -0
  186. package/dist/components/LDSelect/FormMultiSelect.d.ts.map +1 -0
  187. package/dist/components/LDSelect/FormMultiSelect.js +14 -0
  188. package/dist/components/LDSelect/FormSelect.d.ts +13 -0
  189. package/dist/components/LDSelect/FormSelect.d.ts.map +1 -0
  190. package/dist/components/LDSelect/FormSelect.js +10 -0
  191. package/dist/components/LDSelect/LDMultiSelect.d.ts +31 -0
  192. package/dist/components/LDSelect/LDMultiSelect.d.ts.map +1 -0
  193. package/dist/components/LDSelect/LDMultiSelect.js +59 -0
  194. package/dist/components/LDSelect/LDSelect.d.ts +41 -0
  195. package/dist/components/LDSelect/LDSelect.d.ts.map +1 -0
  196. package/dist/components/LDSelect/LDSelect.js +55 -0
  197. package/dist/components/LDSelect/SelectBase.d.ts +59 -0
  198. package/dist/components/LDSelect/SelectBase.d.ts.map +1 -0
  199. package/dist/components/LDSelect/SelectBase.js +211 -0
  200. package/dist/components/LDSkeleton/LDSkeleton.d.ts +10 -0
  201. package/dist/components/LDSkeleton/LDSkeleton.d.ts.map +1 -0
  202. package/dist/components/LDSkeleton/LDSkeleton.js +8 -0
  203. package/dist/components/LDSlider/LDSlider.d.ts +23 -0
  204. package/dist/components/LDSlider/LDSlider.d.ts.map +1 -0
  205. package/dist/components/LDSlider/LDSlider.js +195 -0
  206. package/dist/components/LDSpinner/LDSpinner.d.ts +25 -0
  207. package/dist/components/LDSpinner/LDSpinner.d.ts.map +1 -0
  208. package/dist/components/LDSpinner/LDSpinner.js +20 -0
  209. package/dist/components/LDTable/LDTable.d.ts +34 -0
  210. package/dist/components/LDTable/LDTable.d.ts.map +1 -0
  211. package/dist/components/LDTable/LDTable.js +29 -0
  212. package/dist/components/LDTable/LDTanstackTable.d.ts +23 -0
  213. package/dist/components/LDTable/LDTanstackTable.d.ts.map +1 -0
  214. package/dist/components/LDTable/LDTanstackTable.js +35 -0
  215. package/dist/components/LDTable/TableBase.d.ts +37 -0
  216. package/dist/components/LDTable/TableBase.d.ts.map +1 -0
  217. package/dist/components/LDTable/TableBase.js +39 -0
  218. package/dist/components/LDTable/TableField.d.ts +64 -0
  219. package/dist/components/LDTable/TableField.d.ts.map +1 -0
  220. package/dist/components/LDTable/TableField.js +87 -0
  221. package/dist/components/LDTimePicker/FormTimePicker.d.ts +12 -0
  222. package/dist/components/LDTimePicker/FormTimePicker.d.ts.map +1 -0
  223. package/dist/components/LDTimePicker/FormTimePicker.js +12 -0
  224. package/dist/components/LDTimePicker/LDTimePicker.d.ts +27 -0
  225. package/dist/components/LDTimePicker/LDTimePicker.d.ts.map +1 -0
  226. package/dist/components/LDTimePicker/LDTimePicker.js +120 -0
  227. package/dist/components/LDToggleButton/FormToggleButton.d.ts +12 -0
  228. package/dist/components/LDToggleButton/FormToggleButton.d.ts.map +1 -0
  229. package/dist/components/LDToggleButton/FormToggleButton.js +9 -0
  230. package/dist/components/LDToggleButton/LDToggleButton.d.ts +31 -0
  231. package/dist/components/LDToggleButton/LDToggleButton.d.ts.map +1 -0
  232. package/dist/components/LDToggleButton/LDToggleButton.js +42 -0
  233. package/dist/components/LDToggleButton/ToggleButtonBase.d.ts +41 -0
  234. package/dist/components/LDToggleButton/ToggleButtonBase.d.ts.map +1 -0
  235. package/dist/components/LDToggleButton/ToggleButtonBase.js +59 -0
  236. package/dist/components/LDTooltip/LDTooltip.d.ts +18 -0
  237. package/dist/components/LDTooltip/LDTooltip.d.ts.map +1 -0
  238. package/dist/components/LDTooltip/LDTooltip.js +13 -0
  239. package/dist/components/LDTooltip/TooltipBase.d.ts +39 -0
  240. package/dist/components/LDTooltip/TooltipBase.d.ts.map +1 -0
  241. package/dist/components/LDTooltip/TooltipBase.js +46 -0
  242. package/dist/components/LNB/LNBBase.js +2 -2
  243. package/dist/components/Spinner/Spinner.d.ts +1 -1
  244. package/dist/components/Spinner/Spinner.d.ts.map +1 -1
  245. package/dist/components/Spinner/Spinner.js +1 -1
  246. package/dist/index.css +115 -13
  247. package/dist/index.d.ts +48 -45
  248. package/dist/index.d.ts.map +1 -1
  249. package/dist/index.js +81 -75
  250. package/package.json +1 -1
@@ -0,0 +1,8 @@
1
+ interface LDLoadingDotsProps {
2
+ size?: LoadingDotsSize;
3
+ className?: string;
4
+ }
5
+ type LoadingDotsSize = '2xsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
6
+ declare const LDLoadingDots: ({ size, className }: LDLoadingDotsProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default LDLoadingDots;
8
+ //# sourceMappingURL=LDLoadingDots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LDLoadingDots.d.ts","sourceRoot":"","sources":["../../../src/components/LDLoadingDots/LDLoadingDots.tsx"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,eAAe,GAChB,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,CAAC;AAEb,QAAA,MAAM,aAAa,GAAI,qBAA+B,kBAAkB,4CA4CvE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import cn from '../../utils/cn.js';
3
+ const LDLoadingDots = ({ size = 'small', className }) => {
4
+ const sizeMap = {
5
+ '2xsmall': 2,
6
+ xsmall: 2,
7
+ small: 2,
8
+ medium: 2,
9
+ large: 3,
10
+ xlarge: 4,
11
+ };
12
+ return (_jsxs("div", { className: cn('flex items-center justify-center gap-1', className), style: { height: sizeMap[size] }, children: [_jsx("div", { className: "bg-current rounded-full animate-pulse", style: {
13
+ width: sizeMap[size],
14
+ height: sizeMap[size],
15
+ animationDelay: '0ms',
16
+ animationDuration: '1000ms',
17
+ } }), _jsx("div", { className: "bg-current rounded-full animate-pulse", style: {
18
+ width: sizeMap[size],
19
+ height: sizeMap[size],
20
+ animationDelay: '200ms',
21
+ animationDuration: '1000ms',
22
+ } }), _jsx("div", { className: "bg-current rounded-full animate-pulse", style: {
23
+ width: sizeMap[size],
24
+ height: sizeMap[size],
25
+ animationDelay: '400ms',
26
+ animationDuration: '1000ms',
27
+ } })] }));
28
+ };
29
+ export default LDLoadingDots;
@@ -0,0 +1,21 @@
1
+ import type { ComponentProps } from 'react';
2
+ import MenuBarBase from './MenuBarBase.js';
3
+ declare const LDMenuBar: {
4
+ Root: ({ className, ...props }: ComponentProps<typeof MenuBarBase.Root>) => import("react/jsx-runtime").JSX.Element;
5
+ Logo: ({ className, ...props }: ComponentProps<typeof MenuBarBase.Logo>) => import("react/jsx-runtime").JSX.Element;
6
+ Nav: ({ className, ...props }: ComponentProps<typeof MenuBarBase.Nav>) => import("react/jsx-runtime").JSX.Element;
7
+ Item: ({ className, ...props }: ComponentProps<typeof MenuBarBase.Item>) => import("react/jsx-runtime").JSX.Element;
8
+ Trigger: ({ className, ...props }: ComponentProps<typeof MenuBarBase.Trigger>) => import("react/jsx-runtime").JSX.Element;
9
+ Content: {
10
+ ({ className, ...props }: ComponentProps<typeof MenuBarBase.Content>): import("react/jsx-runtime").JSX.Element;
11
+ displayName: string;
12
+ };
13
+ MegaContent: {
14
+ ({ className, ...props }: ComponentProps<typeof MenuBarBase.Content>): import("react/jsx-runtime").JSX.Element;
15
+ displayName: string;
16
+ };
17
+ Actions: ({ className, ...props }: ComponentProps<typeof MenuBarBase.Actions>) => import("react/jsx-runtime").JSX.Element;
18
+ Separator: ({ className, }: ComponentProps<typeof MenuBarBase.Separator>) => import("react/jsx-runtime").JSX.Element;
19
+ };
20
+ export default LDMenuBar;
21
+ //# sourceMappingURL=LDMenuBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LDMenuBar.d.ts","sourceRoot":"","sources":["../../../src/components/LDMenuBar/LDMenuBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,WAAW,MAAM,eAAe,CAAC;AAkHxC,QAAA,MAAM,SAAS;oCA1GZ,cAAc,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC;oCAcvC,cAAc,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC;mCAUvC,cAAc,CAAC,OAAO,WAAW,CAAC,GAAG,CAAC;oCAUtC,cAAc,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC;uCAOvC,cAAc,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC;;kCAgB1C,cAAc,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC;;;;kCAgB1C,cAAc,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC;;;uCAoB1C,cAAc,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC;gCAS1C,cAAc,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC;CAc9C,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,33 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import cn from '../../utils/cn.js';
4
+ import MenuBarBase from './MenuBarBase.js';
5
+ // 스타일 래퍼: Base 골격에 디자인 토큰 클래스를 입혀 재노출.
6
+ // className을 주면 cn으로 머지되어 소비측 오버라이드 우선.
7
+ const Root = ({ className, ...props }) => (_jsx(MenuBarBase.Root, { className: cn('relative flex items-center justify-between w-full h-[64px] min-h-[64px]', 'px-md gap-10 bg-white border-b border-mono100 sticky top-0 z-50', className), ...props }));
8
+ const Logo = ({ className, ...props }) => (_jsx(MenuBarBase.Logo, { className: cn('flex items-center shrink-0', className), ...props }));
9
+ const Nav = ({ className, ...props }) => (_jsx(MenuBarBase.Nav, { className: cn('flex flex-1 items-center justify-start gap-xs', className), ...props }));
10
+ const Item = ({ className, ...props }) => (_jsx(MenuBarBase.Item, { className: className, ...props }));
11
+ const Trigger = ({ className, ...props }) => (_jsx(MenuBarBase.Trigger, { className: cn('flex items-center gap-xs px-sm py-xs rounded-[5px] cursor-pointer', 'display16 bold text-mono700 hover:bg-mono100 hover:text-mono900 ld-transition', 'aria-expanded:bg-tintBlue aria-expanded:text-blue400', className), ...props }));
12
+ // item 모드: 항목 바로 아래 작은 드롭다운
13
+ const Content = ({ className, ...props }) => (_jsx(MenuBarBase.Content, { className: cn('absolute top-full left-0 mt-xs min-w-[180px] z-50', 'flex flex-col gap-xs p-xs rounded-[8px] bg-white border border-mono100 shadow-lg', className), ...props }));
14
+ // mega 모드: 헤더 전체 폭 패널 + 뒤쪽 딤(클릭 시 닫기)
15
+ // fixed로 부모 li(relative)를 벗어나 뷰포트(=헤더) 전체 폭을 차지. top-16 = 헤더 높이 64px.
16
+ const MegaContent = ({ className, ...props }) => (_jsx(MenuBarBase.Content, { backdrop: true, backdropClassName: "fixed left-0 right-0 top-16 bottom-0 z-40 bg-black/40", className: cn('fixed left-0 right-0 top-16 z-50', 'p-lg bg-white border-b border-mono100 shadow-lg', className), ...props }));
17
+ // Item의 드롭다운 자동 판정이 래퍼를 통과하도록 Base와 동일한 displayName 부여
18
+ Content.displayName = MenuBarBase.Content.displayName;
19
+ MegaContent.displayName = MenuBarBase.Content.displayName;
20
+ const Actions = ({ className, ...props }) => (_jsx(MenuBarBase.Actions, { className: cn('flex items-center gap-sm shrink-0', className), ...props }));
21
+ const Separator = ({ className, }) => (_jsx(MenuBarBase.Separator, { className: cn('w-px h-5 bg-mono200', className) }));
22
+ const LDMenuBar = {
23
+ Root,
24
+ Logo,
25
+ Nav,
26
+ Item,
27
+ Trigger,
28
+ Content,
29
+ MegaContent,
30
+ Actions,
31
+ Separator,
32
+ };
33
+ export default LDMenuBar;
@@ -0,0 +1,43 @@
1
+ import type { ElementType, ReactNode } from 'react';
2
+ interface RootProps {
3
+ children: ReactNode;
4
+ className?: string;
5
+ trigger?: 'hover' | 'click';
6
+ }
7
+ interface SlotProps {
8
+ children?: ReactNode;
9
+ className?: string;
10
+ }
11
+ interface ItemProps {
12
+ value: string;
13
+ children: ReactNode;
14
+ className?: string;
15
+ }
16
+ interface TriggerProps {
17
+ as?: ElementType;
18
+ children: ReactNode;
19
+ className?: string;
20
+ [key: string]: unknown;
21
+ }
22
+ interface ContentProps extends SlotProps {
23
+ /** 뒤쪽 딤 + 클릭 시 닫기 */
24
+ backdrop?: boolean;
25
+ backdropClassName?: string;
26
+ }
27
+ declare const MenuBarBase: {
28
+ Root: ({ children, className, trigger }: RootProps) => import("react/jsx-runtime").JSX.Element;
29
+ Logo: ({ children, className }: SlotProps) => import("react/jsx-runtime").JSX.Element;
30
+ Nav: ({ children, className }: SlotProps) => import("react/jsx-runtime").JSX.Element;
31
+ Item: ({ value, children, className }: ItemProps) => import("react/jsx-runtime").JSX.Element;
32
+ Trigger: ({ as: Comp, children, className, ...rest }: TriggerProps) => import("react/jsx-runtime").JSX.Element;
33
+ Content: {
34
+ ({ children, className, backdrop, backdropClassName, }: ContentProps): import("react/jsx-runtime").JSX.Element | null;
35
+ displayName: string;
36
+ };
37
+ Actions: ({ children, className }: SlotProps) => import("react/jsx-runtime").JSX.Element;
38
+ Separator: ({ className }: {
39
+ className?: string;
40
+ }) => import("react/jsx-runtime").JSX.Element;
41
+ };
42
+ export default MenuBarBase;
43
+ //# sourceMappingURL=MenuBarBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuBarBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDMenuBar/MenuBarBase.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AA0CpD,UAAU,SAAS;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAqBD,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmBD,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0BD,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAuCD,UAAU,YAAa,SAAQ,SAAS;IACtC,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA0BD,QAAA,MAAM,WAAW;6CAjJyC,SAAS;oCAwB5B,SAAS;mCAIV,SAAS;2CAmBD,SAAS;0DAoCpD,YAAY;;gEA2CZ,YAAY;;;uCA9F2B,SAAS;+BAIjB;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAsHvD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,69 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Children, createContext, isValidElement, useContext, useState, } from 'react';
4
+ import cn from '../../utils/cn.js';
5
+ const CONTENT_NAME = 'MenuBarContent';
6
+ const MenuBarContext = createContext(null);
7
+ const useMenuBarContext = () => {
8
+ const ctx = useContext(MenuBarContext);
9
+ if (!ctx)
10
+ throw new Error('MenuBarBase 서브컴포넌트는 MenuBarBase.Root 내부에서 사용해야 합니다.');
11
+ return ctx;
12
+ };
13
+ const ItemContext = createContext(null);
14
+ const useItemContext = () => {
15
+ const ctx = useContext(ItemContext);
16
+ if (!ctx)
17
+ throw new Error('MenuBarBase.Trigger / Content는 MenuBarBase.Item 내부에서 사용해야 합니다.');
18
+ return ctx;
19
+ };
20
+ const Root = ({ children, className, trigger = 'hover' }) => {
21
+ const [openValue, setOpenValue] = useState(null);
22
+ const isOpen = (v) => openValue === v;
23
+ return (_jsx(MenuBarContext, { value: { openValue, setOpenValue, isOpen, trigger }, children: _jsx("header", { className: className, onMouseLeave: trigger === 'hover' ? () => setOpenValue(null) : undefined, children: children }) }));
24
+ };
25
+ const Logo = ({ children, className }) => (_jsx("div", { className: className, children: children }));
26
+ const Nav = ({ children, className }) => (_jsx("ul", { className: className, children: children }));
27
+ const Actions = ({ children, className }) => (_jsx("div", { className: className, children: children }));
28
+ const Separator = ({ className }) => (_jsx("span", { "aria-hidden": true, className: className }));
29
+ const Item = ({ value, children, className }) => {
30
+ const { trigger, setOpenValue } = useMenuBarContext();
31
+ // Content 존재 여부로 드롭다운 항목인지 자동 판정 (스타일 래퍼도 같은 displayName을 가짐)
32
+ const hasContent = Children.toArray(children).some((c) => isValidElement(c) &&
33
+ c.type?.displayName === CONTENT_NAME);
34
+ const hoverProps = trigger === 'hover' && hasContent
35
+ ? { onMouseEnter: () => setOpenValue(value) }
36
+ : {};
37
+ return (_jsx(ItemContext, { value: { value, hasContent }, children: _jsx("li", { className: cn('relative', className), ...hoverProps, children: children }) }));
38
+ };
39
+ const Trigger = ({ as: Comp = 'button', children, className, ...rest }) => {
40
+ const { trigger, setOpenValue, isOpen } = useMenuBarContext();
41
+ const { value, hasContent } = useItemContext();
42
+ // 드롭다운 없는 항목 → 순수 링크/버튼 (토글 안 함)
43
+ if (!hasContent) {
44
+ return (_jsx(Comp, { className: className, ...rest, children: children }));
45
+ }
46
+ const handleClick = trigger === 'click'
47
+ ? () => setOpenValue(isOpen(value) ? null : value)
48
+ : undefined;
49
+ return (_jsx(Comp, { type: Comp === 'button' ? 'button' : undefined, "aria-expanded": isOpen(value), onClick: handleClick, className: className, ...rest, children: children }));
50
+ };
51
+ const Content = ({ children, className, backdrop, backdropClassName, }) => {
52
+ const { isOpen, setOpenValue } = useMenuBarContext();
53
+ const { value } = useItemContext();
54
+ if (!isOpen(value))
55
+ return null;
56
+ return (_jsxs(_Fragment, { children: [backdrop && (_jsx("div", { "aria-hidden": true, onClick: () => setOpenValue(null), className: backdropClassName })), _jsx("div", { className: className, children: children })] }));
57
+ };
58
+ Content.displayName = CONTENT_NAME;
59
+ const MenuBarBase = {
60
+ Root,
61
+ Logo,
62
+ Nav,
63
+ Item,
64
+ Trigger,
65
+ Content,
66
+ Actions,
67
+ Separator,
68
+ };
69
+ export default MenuBarBase;
@@ -0,0 +1,51 @@
1
+ import { type ReactNode } from 'react';
2
+ export type ModalSize = 'small' | 'medium' | 'large' | 'xlarge';
3
+ export interface ModalButtons {
4
+ direction?: 'row' | 'column';
5
+ list?: ModalButton[];
6
+ }
7
+ export interface ModalButton<T = unknown> {
8
+ /** 버튼 텍스트 */
9
+ label: string;
10
+ /** 버튼 식별 값 (onButtonClick에 전달) */
11
+ value: T;
12
+ /** 버튼 스타일 유형 */
13
+ variant?: 'solid' | 'outline' | 'ghost';
14
+ /** 버튼 색상 테마 */
15
+ color?: 'neutral' | 'point' | 'danger';
16
+ /** 클릭 핸들러 (false 반환 시 모달 닫힘 방지) */
17
+ onClick?: () => void | boolean | Promise<void | boolean>;
18
+ }
19
+ export interface LDModalProps {
20
+ /** 모달 열림 상태 (제어 컴포넌트) */
21
+ open?: boolean;
22
+ /** 초기 열림 상태 (비제어 컴포넌트) */
23
+ defaultOpen?: boolean;
24
+ /** 열림 상태 변경 시 호출되는 콜백 */
25
+ onOpenChange?: (open: boolean) => void;
26
+ /** 서브 타이틀 (title 위에 표시) */
27
+ name?: string;
28
+ /** 모달 제목 */
29
+ title?: string;
30
+ /** 모달 설명 텍스트 */
31
+ description?: string;
32
+ /** 본문 콘텐츠 */
33
+ children?: ReactNode;
34
+ /** 모달 너비 프리셋 */
35
+ size?: ModalSize;
36
+ /** 너비 직접 지정 (size보다 우선) */
37
+ icon?: 'success' | 'fail';
38
+ /** 하단 버튼 목록 */
39
+ buttons?: ModalButtons;
40
+ /** 스크롤 동작 */
41
+ scrollBehavior?: 'inside' | 'outside';
42
+ /** 추가 CSS 클래스 (모달 패널에 적용) */
43
+ className?: string;
44
+ /** 인라인 스타일 (모달 패널에 적용) */
45
+ style?: React.CSSProperties;
46
+ /** 버튼 클릭 시 해당 버튼의 value를 전달하는 콜백 */
47
+ onButtonClick?: (value: unknown) => void;
48
+ }
49
+ declare const LDModal: ({ open, defaultOpen, onOpenChange, name, title, description, children, size, icon, buttons, scrollBehavior, className, style, onButtonClick, }: LDModalProps) => import("react/jsx-runtime").JSX.Element;
50
+ export default LDModal;
51
+ //# sourceMappingURL=LDModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LDModal.d.ts","sourceRoot":"","sources":["../../../src/components/LDModal/LDModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAO/C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,EAAE,CAAC,CAAC;IACT,gBAAgB;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,eAAe;IACf,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACvC,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yBAAyB;IACzB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gBAAgB;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,eAAe;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,aAAa;IACb,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACtC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AA6CD,QAAA,MAAM,OAAO,GAAI,gJAed,YAAY,4CA0Jd,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef } from 'react';
3
+ import ModalBase from './ModalBase.js';
4
+ import LucideIcon from '../Icon/LucideIcon.js';
5
+ import cn from '../../utils/cn.js';
6
+ import LDButton from '../LDButton/LDButton.js';
7
+ // ── 스타일 매핑 ──
8
+ const sizeClasses = {
9
+ small: 'modal-sm',
10
+ medium: 'modal-md',
11
+ large: 'modal-lg',
12
+ xlarge: 'modal-xl',
13
+ };
14
+ const buttonSizeClasses = {
15
+ small: 'medium',
16
+ medium: 'large',
17
+ large: 'large',
18
+ xlarge: 'large',
19
+ };
20
+ const buttonsGapSizeClasses = {
21
+ small: 'gap-xs',
22
+ medium: 'gap-sm',
23
+ large: 'gap-sm',
24
+ xlarge: 'gap-sm',
25
+ };
26
+ const layoutGapSizeClasses = {
27
+ small: 'gap-lg',
28
+ medium: 'gap-xl',
29
+ large: 'gap-xl',
30
+ xlarge: 'gap-xl',
31
+ };
32
+ const noHeaderPaddingTopSizeClasses = {
33
+ small: 'pt-lg',
34
+ medium: 'pt-xl',
35
+ large: 'pt-xl',
36
+ xlarge: 'pt-xl',
37
+ };
38
+ const statusIconSizeClasses = {
39
+ small: 'size-10',
40
+ medium: 'size-12.5',
41
+ large: 'size-12.5',
42
+ xlarge: 'size-12.5',
43
+ };
44
+ const LDModal = ({ open, defaultOpen, onOpenChange, name, title, description, children, size = 'small', icon, buttons, scrollBehavior = 'inside', className, style, onButtonClick, }) => {
45
+ const overlayRef = useRef(false);
46
+ const hasHeader = name || title || description || icon;
47
+ const handleClick = async (button) => {
48
+ if (button.onClick) {
49
+ const res = await button.onClick();
50
+ if (res === false)
51
+ return;
52
+ }
53
+ onButtonClick?.(button.value);
54
+ onOpenChange?.(false);
55
+ };
56
+ return (_jsxs(ModalBase.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, children: [_jsx(ModalBase.Overlay, {}), _jsx(ModalBase.Content, { className: cn({
57
+ ['top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2']: scrollBehavior === 'inside',
58
+ ['inset-0 overflow-y-auto flex justify-center items-start py-20']: scrollBehavior === 'outside',
59
+ }), onMouseDown: (e) => (overlayRef.current = e.target === e.currentTarget), onClick: (e) => {
60
+ if (scrollBehavior === 'outside' &&
61
+ e.target === e.currentTarget &&
62
+ overlayRef.current)
63
+ onOpenChange?.(false);
64
+ overlayRef.current = false;
65
+ }, children: _jsxs("div", { className: cn('relative bg-white rounded-2xl p-5', sizeClasses[size], 'mobile:max-w-[calc(100vw-40px)]', scrollBehavior === 'inside' &&
66
+ 'flex flex-col overflow-y-auto max-h-[90dvh]', className), style: style, onClick: (e) => e.stopPropagation(), children: [_jsx(ModalBase.Close, { className: "absolute top-4 right-5 text-neutral500 cursor-pointer outline-hidden", children: _jsx(LDButton, { variant: "ghost", color: "neutral", leftIcon: "x", compact: true }) }), _jsxs("div", { className: cn('w-full flex flex-col shrink-0', scrollBehavior === 'inside' && 'flex-1 min-h-0', layoutGapSizeClasses[size], !hasHeader && noHeaderPaddingTopSizeClasses[size]), children: [hasHeader && (_jsxs("div", { className: "w-full flex gap-5 py-5 items-center flex-col text-center shrink-0", children: [icon === 'success' && (_jsx("div", { className: cn('flex items-center justify-center rounded-full bg-hyper-blue', statusIconSizeClasses[size]), children: _jsx(LucideIcon, { name: "check", className: "text-white" }) })), icon === 'fail' && (_jsx("div", { className: cn('flex items-center justify-center rounded-full bg-danger600', statusIconSizeClasses[size]), children: _jsx(LucideIcon, { name: "circleAlert", className: "text-white" }) })), name && (_jsx("span", { className: "display16 bold text-neutral500 whitespace-pre-wrap", children: name })), title && (_jsx(ModalBase.Title, { className: "display28 bold whitespace-pre-wrap text-center", children: title })), description && (_jsx(ModalBase.Description, { className: "display14 text-neutral500 whitespace-pre-wrap text-center", children: description }))] })), children && (_jsx("div", { className: cn(scrollBehavior === 'inside' &&
67
+ 'flex-1 min-h-10 overflow-y-auto'), children: children })), buttons?.list && buttons?.list?.length > 0 && (_jsx("div", { className: cn('flex mobile:flex-1 mobile:flex-col mobile:items-center', buttons.direction === 'column' ? 'flex-col' : 'flex-row', buttonsGapSizeClasses[size]), children: buttons?.list?.map((button, index) => {
68
+ const isFirst = index === 0;
69
+ return (_jsx("div", { className: "flex flex-1 w-full", children: _jsx(LDButton, { type: "button", onClick: () => handleClick(button), variant: button.variant ?? (isFirst ? 'solid' : 'outline'), color: button.color ?? (isFirst ? 'point' : 'neutral'), size: buttonSizeClasses[size], block: true, children: button.label }) }, String(button.value)));
70
+ }) }))] })] }) })] }));
71
+ };
72
+ export default LDModal;
@@ -0,0 +1,42 @@
1
+ import { type ReactNode } from 'react';
2
+ interface RootProps {
3
+ open?: boolean;
4
+ defaultOpen?: boolean;
5
+ onOpenChange?: (open: boolean) => void;
6
+ children?: ReactNode;
7
+ }
8
+ interface OverlayProps {
9
+ className?: string;
10
+ }
11
+ interface ContentProps {
12
+ className?: string;
13
+ children?: ReactNode;
14
+ style?: React.CSSProperties;
15
+ onClick?: React.MouseEventHandler<HTMLElement>;
16
+ onMouseDown?: React.MouseEventHandler<HTMLElement>;
17
+ onPointerDownOutside?: (e: Event) => void;
18
+ onEscapeKeyDown?: (e: KeyboardEvent) => void;
19
+ }
20
+ interface CloseProps {
21
+ asChild?: boolean;
22
+ className?: string;
23
+ children?: ReactNode;
24
+ }
25
+ interface TitleProps {
26
+ className?: string;
27
+ children?: ReactNode;
28
+ }
29
+ interface DescriptionProps {
30
+ className?: string;
31
+ children?: ReactNode;
32
+ }
33
+ export declare const ModalBase: {
34
+ Root: ({ open, defaultOpen, onOpenChange, children }: RootProps) => import("react/jsx-runtime").JSX.Element;
35
+ Overlay: ({ className }: OverlayProps) => import("react/jsx-runtime").JSX.Element;
36
+ Content: ({ className, children, style, onClick, onMouseDown, onPointerDownOutside, onEscapeKeyDown, }: ContentProps) => import("react/jsx-runtime").JSX.Element;
37
+ Close: ({ asChild, className, children }: CloseProps) => import("react/jsx-runtime").JSX.Element;
38
+ Title: ({ className, children }: TitleProps) => import("react/jsx-runtime").JSX.Element;
39
+ Description: ({ className, children }: DescriptionProps) => import("react/jsx-runtime").JSX.Element;
40
+ };
41
+ export default ModalBase;
42
+ //# sourceMappingURL=ModalBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalBase.d.ts","sourceRoot":"","sources":["../../../src/components/LDModal/ModalBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAeD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiBD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACnD,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CAC9C;AAgCD,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAWD,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAOD,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAQD,eAAO,MAAM,SAAS;0DA5GuC,SAAS;6BAiBtC,YAAY;4GAiCzC,YAAY;8CA4BkC,UAAU;qCAcnB,UAAU;2CAUJ,gBAAgB;CAa7D,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as Dialog from '@radix-ui/react-dialog';
3
+ import cn from '../../utils/cn.js';
4
+ const Root = ({ open, defaultOpen, onOpenChange, children }) => {
5
+ return (_jsx(Dialog.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, children: children }));
6
+ };
7
+ const Overlay = ({ className }) => {
8
+ return (_jsx(Dialog.Portal, { children: _jsx(Dialog.Overlay, { className: cn('fixed inset-0 z-50 bg-black/30', 'data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out', className) }) }));
9
+ };
10
+ const Content = ({ className, children, style, onClick, onMouseDown, onPointerDownOutside, onEscapeKeyDown, }) => {
11
+ return (_jsx(Dialog.Portal, { children: _jsx(Dialog.Content, { className: cn('fixed z-50', 'data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out', className), style: style, onClick: onClick, onMouseDown: onMouseDown, onPointerDownOutside: onPointerDownOutside, onEscapeKeyDown: onEscapeKeyDown, children: children }) }));
12
+ };
13
+ const Close = ({ asChild, className, children }) => {
14
+ return (_jsx(Dialog.Close, { asChild: asChild, className: className, children: children }));
15
+ };
16
+ const Title = ({ className, children }) => {
17
+ return _jsx(Dialog.Title, { className: className, children: children });
18
+ };
19
+ const Description = ({ className, children }) => {
20
+ return (_jsx(Dialog.Description, { className: className, children: children }));
21
+ };
22
+ export const ModalBase = {
23
+ Root,
24
+ Overlay,
25
+ Content,
26
+ Close,
27
+ Title,
28
+ Description,
29
+ };
30
+ export default ModalBase;
@@ -0,0 +1,24 @@
1
+ import { type ModalSize } from './LDModal.js';
2
+ interface ModalOptions<T = undefined> {
3
+ name?: string;
4
+ title?: string;
5
+ description?: string;
6
+ content?: React.ReactNode | ((args: {
7
+ onClose: (value?: T) => void;
8
+ }) => React.ReactNode);
9
+ buttons?: {
10
+ value: T;
11
+ label: string;
12
+ variant?: 'solid' | 'outline' | 'ghost';
13
+ color?: 'neutral' | 'point' | 'danger';
14
+ onClick?: () => void | boolean | Promise<void | boolean>;
15
+ }[];
16
+ /** 버튼 배치 방향 */
17
+ buttonsDirection?: 'row' | 'column';
18
+ size?: ModalSize;
19
+ icon?: 'success' | 'fail';
20
+ onBeforeClose?: () => Promise<boolean> | boolean;
21
+ }
22
+ declare const modal: <T = undefined>(options: ModalOptions<T>) => Promise<T | undefined>;
23
+ export default modal;
24
+ //# sourceMappingURL=openModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openModal.d.ts","sourceRoot":"","sources":["../../../src/components/LDModal/openModal.tsx"],"names":[],"mappings":"AACA,OAAgB,EAAoB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtE,UAAU,YAAY,CAAC,CAAC,GAAG,SAAS;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EACJ,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAClE,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;QACxC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;QACvC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;KAC1D,EAAE,CAAC;IACJ,eAAe;IACf,gBAAgB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACpC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAClD;AAED,QAAA,MAAM,KAAK,GAAI,CAAC,GAAG,SAAS,EAC1B,SAAS,YAAY,CAAC,CAAC,CAAC,KACvB,OAAO,CAAC,CAAC,GAAG,SAAS,CAgEvB,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createRoot } from 'react-dom/client';
3
+ import LDModal from './LDModal.js';
4
+ const modal = (options) => {
5
+ return new Promise((resolve) => {
6
+ const container = document.createElement('div');
7
+ document.body.appendChild(container);
8
+ const root = createRoot(container);
9
+ const cleanup = () => {
10
+ root.unmount();
11
+ container.remove();
12
+ };
13
+ const handleClose = async (value) => {
14
+ try {
15
+ if (options.onBeforeClose) {
16
+ const canClose = await options.onBeforeClose();
17
+ if (!canClose)
18
+ return;
19
+ }
20
+ }
21
+ catch (e) {
22
+ console.error('onBeforeClose error:', e);
23
+ }
24
+ cleanup();
25
+ resolve(value);
26
+ };
27
+ const list = options.buttons?.map((btn) => ({
28
+ ...btn,
29
+ value: btn.value,
30
+ onClick: async () => {
31
+ let shouldClose = true;
32
+ if (btn.onClick) {
33
+ const res = await btn.onClick();
34
+ if (res === false)
35
+ shouldClose = false;
36
+ }
37
+ if (shouldClose) {
38
+ handleClose(btn.value);
39
+ }
40
+ return false; // LDModal 내부의 기본 닫기 동작 방지
41
+ },
42
+ }));
43
+ const content = typeof options.content === 'function'
44
+ ? options.content({ onClose: handleClose })
45
+ : options.content;
46
+ root.render(_jsx(LDModal, { open: true, onOpenChange: (open) => {
47
+ if (!open)
48
+ handleClose(undefined);
49
+ }, name: options.name, title: options.title, description: options.description, size: options.size, icon: options.icon, buttons: list ? { direction: options.buttonsDirection, list } : undefined, children: content }));
50
+ });
51
+ };
52
+ export default modal;
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ export type OTPInputSize = 'xSmall' | 'small' | 'medium' | 'large' | 'xLarge';
3
+ export type OTPInputVariant = 'filled' | 'outline' | 'ghost';
4
+ export interface LDOTPInputProps {
5
+ maxLength: number;
6
+ value: string;
7
+ onChange: (value: string) => void;
8
+ onComplete?: (value: string) => void;
9
+ disabled?: boolean;
10
+ isInvalid?: boolean;
11
+ variant?: OTPInputVariant;
12
+ size?: OTPInputSize;
13
+ className?: string;
14
+ children: React.ReactNode;
15
+ }
16
+ /**
17
+ * LDOTPInput (Root)
18
+ * 실제 입력을 처리하는 Hidden LDInput과 상태를 관리합니다.
19
+ */
20
+ declare const LDOTPInput: ({ maxLength, value, onChange, onComplete, disabled, isInvalid, variant, size, className, children, }: LDOTPInputProps) => import("react/jsx-runtime").JSX.Element;
21
+ /**
22
+ * OTPInputGroup
23
+ * 슬롯들을 묶어주는 컨테이너입니다.
24
+ */
25
+ declare const OTPInputGroup: ({ className, children, }: {
26
+ className?: string;
27
+ children: React.ReactNode;
28
+ }) => import("react/jsx-runtime").JSX.Element;
29
+ /**
30
+ * OTPInputSlot
31
+ * 개별 글자를 보여주는 칸입니다.
32
+ */
33
+ declare const OTPInputSlot: ({ index, className, }: {
34
+ index: number;
35
+ className?: string;
36
+ }) => import("react/jsx-runtime").JSX.Element;
37
+ /**
38
+ * OTPInputSeparator
39
+ * 그룹 사이의 구분선입니다.
40
+ */
41
+ declare const OTPInputSeparator: ({ className }: {
42
+ className?: string;
43
+ }) => import("react/jsx-runtime").JSX.Element;
44
+ export { LDOTPInput, OTPInputGroup, OTPInputSlot, OTPInputSeparator };
45
+ export default LDOTPInput;
46
+ //# sourceMappingURL=LDOTPInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LDOTPInput.d.ts","sourceRoot":"","sources":["../../../src/components/LDOTPInput/LDOTPInput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAMN,MAAM,OAAO,CAAC;AA2Bf,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAkBD;;;GAGG;AACH,QAAA,MAAM,UAAU,GAAI,sGAWjB,eAAe,4CA4DjB,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,aAAa,GAAI,0BAGpB;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,4CAIA,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,YAAY,GAAI,uBAGnB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,4CA0BA,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,iBAAiB,GAAI,eAAe;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,4CAE/D,CAAC;AAGF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;AACtE,eAAe,UAAU,CAAC"}