@hua-labs/ui 1.0.0 → 1.1.0-alpha.0.1

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 (348) hide show
  1. package/README.md +891 -213
  2. package/dist/ComponentLayout-BxCenSAm.d.mts +73 -0
  3. package/dist/advanced/dashboard.d.ts +7 -0
  4. package/dist/advanced/dashboard.d.ts.map +1 -0
  5. package/dist/advanced/motion.d.ts +2 -0
  6. package/dist/advanced/motion.d.ts.map +1 -0
  7. package/dist/advanced-dashboard.d.mts +4 -0
  8. package/dist/advanced-dashboard.js +2 -0
  9. package/dist/advanced-dashboard.js.map +1 -0
  10. package/dist/advanced-dashboard.mjs +2 -0
  11. package/dist/advanced-dashboard.mjs.map +1 -0
  12. package/dist/advanced-motion.d.mts +93 -0
  13. package/dist/advanced-motion.js +2 -0
  14. package/dist/advanced-motion.js.map +1 -0
  15. package/dist/advanced-motion.mjs +2 -0
  16. package/dist/advanced-motion.mjs.map +1 -0
  17. package/dist/advanced.d.mts +734 -0
  18. package/dist/advanced.d.ts +17 -0
  19. package/dist/advanced.d.ts.map +1 -0
  20. package/dist/advanced.js +2 -0
  21. package/dist/advanced.js.map +1 -0
  22. package/dist/advanced.mjs +2 -0
  23. package/dist/advanced.mjs.map +1 -0
  24. package/dist/chunk-6NXF6ATP.mjs +2 -0
  25. package/dist/chunk-6NXF6ATP.mjs.map +1 -0
  26. package/dist/chunk-ACEKLG37.mjs +2 -0
  27. package/dist/chunk-ACEKLG37.mjs.map +1 -0
  28. package/dist/chunk-DMYT7RZ4.mjs +2 -0
  29. package/dist/chunk-DMYT7RZ4.mjs.map +1 -0
  30. package/dist/chunk-KHEJZ3U4.mjs +2 -0
  31. package/dist/chunk-KHEJZ3U4.mjs.map +1 -0
  32. package/dist/chunk-QXBMXCML.mjs +2 -0
  33. package/dist/chunk-QXBMXCML.mjs.map +1 -0
  34. package/dist/chunk-SGCVGEDR.mjs +2 -0
  35. package/dist/chunk-SGCVGEDR.mjs.map +1 -0
  36. package/dist/chunk-UUHAXGMO.mjs +2 -0
  37. package/dist/chunk-UUHAXGMO.mjs.map +1 -0
  38. package/dist/chunk-VPOFRDYL.mjs +2 -0
  39. package/dist/chunk-VPOFRDYL.mjs.map +1 -0
  40. package/dist/chunk-YY6ZBUVJ.mjs +2 -0
  41. package/dist/chunk-YY6ZBUVJ.mjs.map +1 -0
  42. package/dist/chunk-ZQAAB3P4.mjs +2 -0
  43. package/dist/chunk-ZQAAB3P4.mjs.map +1 -0
  44. package/dist/components/Accordion.d.ts +109 -1
  45. package/dist/components/Accordion.d.ts.map +1 -1
  46. package/dist/components/Action.d.ts +68 -0
  47. package/dist/components/Action.d.ts.map +1 -0
  48. package/dist/components/ActionToolbar.d.ts +65 -0
  49. package/dist/components/ActionToolbar.d.ts.map +1 -0
  50. package/dist/components/Alert.d.ts +49 -0
  51. package/dist/components/Alert.d.ts.map +1 -1
  52. package/dist/components/Autocomplete.d.ts +88 -0
  53. package/dist/components/Autocomplete.d.ts.map +1 -0
  54. package/dist/components/Avatar.d.ts +71 -1
  55. package/dist/components/Avatar.d.ts.map +1 -1
  56. package/dist/components/Badge.d.ts +32 -2
  57. package/dist/components/Badge.d.ts.map +1 -1
  58. package/dist/components/Bookmark.d.ts +49 -0
  59. package/dist/components/Bookmark.d.ts.map +1 -0
  60. package/dist/components/BottomSheet.d.ts +91 -1
  61. package/dist/components/BottomSheet.d.ts.map +1 -1
  62. package/dist/components/Breadcrumb.d.ts +73 -14
  63. package/dist/components/Breadcrumb.d.ts.map +1 -1
  64. package/dist/components/Button.d.ts +82 -7
  65. package/dist/components/Button.d.ts.map +1 -1
  66. package/dist/components/Card.d.ts +122 -5
  67. package/dist/components/Card.d.ts.map +1 -1
  68. package/dist/components/ChatMessage.d.ts +67 -1
  69. package/dist/components/ChatMessage.d.ts.map +1 -1
  70. package/dist/components/Checkbox.d.ts +48 -2
  71. package/dist/components/Checkbox.d.ts.map +1 -1
  72. package/dist/components/Command.d.ts +82 -1
  73. package/dist/components/Command.d.ts.map +1 -1
  74. package/dist/components/ComponentLayout.d.ts +72 -0
  75. package/dist/components/ComponentLayout.d.ts.map +1 -0
  76. package/dist/components/ConfirmModal.d.ts +66 -1
  77. package/dist/components/ConfirmModal.d.ts.map +1 -1
  78. package/dist/components/Container.d.ts +39 -0
  79. package/dist/components/Container.d.ts.map +1 -1
  80. package/dist/components/ContextMenu.d.ts +51 -1
  81. package/dist/components/ContextMenu.d.ts.map +1 -1
  82. package/dist/components/DatePicker.d.ts +62 -0
  83. package/dist/components/DatePicker.d.ts.map +1 -0
  84. package/dist/components/Divider.d.ts +13 -3
  85. package/dist/components/Divider.d.ts.map +1 -1
  86. package/dist/components/Drawer.d.ts +103 -1
  87. package/dist/components/Drawer.d.ts.map +1 -1
  88. package/dist/components/Dropdown.d.ts +51 -1
  89. package/dist/components/Dropdown.d.ts.map +1 -1
  90. package/dist/components/EmotionAnalysis.d.ts +59 -1
  91. package/dist/components/EmotionAnalysis.d.ts.map +1 -1
  92. package/dist/components/EmotionButton.d.ts +35 -1
  93. package/dist/components/EmotionButton.d.ts.map +1 -1
  94. package/dist/components/EmotionMeter.d.ts +38 -2
  95. package/dist/components/EmotionMeter.d.ts.map +1 -1
  96. package/dist/components/EmotionSelector.d.ts +51 -1
  97. package/dist/components/EmotionSelector.d.ts.map +1 -1
  98. package/dist/components/FeatureCard.d.ts +61 -0
  99. package/dist/components/FeatureCard.d.ts.map +1 -0
  100. package/dist/components/Form.d.ts +114 -0
  101. package/dist/components/Form.d.ts.map +1 -0
  102. package/dist/components/Grid.d.ts +42 -1
  103. package/dist/components/Grid.d.ts.map +1 -1
  104. package/dist/components/HeroSection.d.ts +77 -0
  105. package/dist/components/HeroSection.d.ts.map +1 -0
  106. package/dist/components/Icon/Icon.d.ts +159 -0
  107. package/dist/components/Icon/Icon.d.ts.map +1 -0
  108. package/dist/components/Icon/IconProvider.d.ts +94 -0
  109. package/dist/components/Icon/IconProvider.d.ts.map +1 -0
  110. package/dist/components/Icon/icon-store.d.ts +21 -0
  111. package/dist/components/Icon/icon-store.d.ts.map +1 -0
  112. package/dist/components/Icon/index.d.ts +10 -0
  113. package/dist/components/Icon/index.d.ts.map +1 -0
  114. package/dist/components/InfoCard.d.ts +48 -0
  115. package/dist/components/InfoCard.d.ts.map +1 -0
  116. package/dist/components/Input.d.ts +40 -8
  117. package/dist/components/Input.d.ts.map +1 -1
  118. package/dist/components/Label.d.ts +50 -0
  119. package/dist/components/Label.d.ts.map +1 -0
  120. package/dist/components/LanguageToggle.d.ts +41 -1
  121. package/dist/components/LanguageToggle.d.ts.map +1 -1
  122. package/dist/components/Link.d.ts +52 -0
  123. package/dist/components/Link.d.ts.map +1 -0
  124. package/dist/components/LoadingSpinner.d.ts +44 -5
  125. package/dist/components/LoadingSpinner.d.ts.map +1 -1
  126. package/dist/components/Menu.d.ts +92 -1
  127. package/dist/components/Menu.d.ts.map +1 -1
  128. package/dist/components/Modal.d.ts +67 -5
  129. package/dist/components/Modal.d.ts.map +1 -1
  130. package/dist/components/Navigation.d.ts +72 -0
  131. package/dist/components/Navigation.d.ts.map +1 -0
  132. package/dist/components/PageNavigation.d.ts +48 -0
  133. package/dist/components/PageNavigation.d.ts.map +1 -0
  134. package/dist/components/PageTransition.d.ts +44 -1
  135. package/dist/components/PageTransition.d.ts.map +1 -1
  136. package/dist/components/Pagination.d.ts +52 -1
  137. package/dist/components/Pagination.d.ts.map +1 -1
  138. package/dist/components/Panel.d.ts +99 -0
  139. package/dist/components/Panel.d.ts.map +1 -0
  140. package/dist/components/Popover.d.ts +46 -1
  141. package/dist/components/Popover.d.ts.map +1 -1
  142. package/dist/components/Progress.d.ts +52 -3
  143. package/dist/components/Progress.d.ts.map +1 -1
  144. package/dist/components/Radio.d.ts +44 -2
  145. package/dist/components/Radio.d.ts.map +1 -1
  146. package/dist/components/ScrollArea.d.ts +53 -1
  147. package/dist/components/ScrollArea.d.ts.map +1 -1
  148. package/dist/components/ScrollIndicator.d.ts +43 -1
  149. package/dist/components/ScrollIndicator.d.ts.map +1 -1
  150. package/dist/components/ScrollProgress.d.ts +37 -0
  151. package/dist/components/ScrollProgress.d.ts.map +1 -1
  152. package/dist/components/ScrollToTop.d.ts +48 -11
  153. package/dist/components/ScrollToTop.d.ts.map +1 -1
  154. package/dist/components/SectionHeader.d.ts +42 -0
  155. package/dist/components/SectionHeader.d.ts.map +1 -0
  156. package/dist/components/Select.d.ts +59 -2
  157. package/dist/components/Select.d.ts.map +1 -1
  158. package/dist/components/Skeleton.d.ts +44 -1
  159. package/dist/components/Skeleton.d.ts.map +1 -1
  160. package/dist/components/Slider.d.ts +75 -0
  161. package/dist/components/Slider.d.ts.map +1 -0
  162. package/dist/components/Stack.d.ts +42 -1
  163. package/dist/components/Stack.d.ts.map +1 -1
  164. package/dist/components/StatsPanel.d.ts +72 -0
  165. package/dist/components/StatsPanel.d.ts.map +1 -0
  166. package/dist/components/Switch.d.ts +48 -2
  167. package/dist/components/Switch.d.ts.map +1 -1
  168. package/dist/components/Table.d.ts +206 -0
  169. package/dist/components/Table.d.ts.map +1 -0
  170. package/dist/components/Tabs.d.ts +123 -10
  171. package/dist/components/Tabs.d.ts.map +1 -1
  172. package/dist/components/Textarea.d.ts +48 -2
  173. package/dist/components/Textarea.d.ts.map +1 -1
  174. package/dist/components/ThemeProvider.d.ts +67 -2
  175. package/dist/components/ThemeProvider.d.ts.map +1 -1
  176. package/dist/components/ThemeToggle.d.ts +44 -0
  177. package/dist/components/ThemeToggle.d.ts.map +1 -1
  178. package/dist/components/Toast.d.ts +75 -1
  179. package/dist/components/Toast.d.ts.map +1 -1
  180. package/dist/components/Toggle.d.ts +62 -0
  181. package/dist/components/Toggle.d.ts.map +1 -0
  182. package/dist/components/Tooltip.d.ts +48 -1
  183. package/dist/components/Tooltip.d.ts.map +1 -1
  184. package/dist/components/Upload.d.ts +87 -0
  185. package/dist/components/Upload.d.ts.map +1 -0
  186. package/dist/components/advanced/AdvancedPageTransition.d.ts +25 -0
  187. package/dist/components/advanced/AdvancedPageTransition.d.ts.map +1 -0
  188. package/dist/components/advanced/index.d.ts +4 -0
  189. package/dist/components/advanced/index.d.ts.map +1 -0
  190. package/dist/components/advanced/usePageTransition.d.ts +33 -0
  191. package/dist/components/advanced/usePageTransition.d.ts.map +1 -0
  192. package/dist/components/advanced/usePageTransitionManager.d.ts +44 -0
  193. package/dist/components/advanced/usePageTransitionManager.d.ts.map +1 -0
  194. package/dist/components/dashboard/ActivityFeed.d.ts +87 -0
  195. package/dist/components/dashboard/ActivityFeed.d.ts.map +1 -0
  196. package/dist/components/dashboard/BarChart.d.ts +82 -0
  197. package/dist/components/dashboard/BarChart.d.ts.map +1 -0
  198. package/dist/components/dashboard/DashboardGrid.d.ts +44 -0
  199. package/dist/components/dashboard/DashboardGrid.d.ts.map +1 -0
  200. package/dist/components/dashboard/DashboardSidebar.d.ts +105 -0
  201. package/dist/components/dashboard/DashboardSidebar.d.ts.map +1 -0
  202. package/dist/components/dashboard/DashboardToolbar.d.ts +120 -0
  203. package/dist/components/dashboard/DashboardToolbar.d.ts.map +1 -0
  204. package/dist/components/dashboard/EmptyState.d.ts +61 -0
  205. package/dist/components/dashboard/EmptyState.d.ts.map +1 -0
  206. package/dist/components/dashboard/MembershipBadge.d.ts +45 -0
  207. package/dist/components/dashboard/MembershipBadge.d.ts.map +1 -0
  208. package/dist/components/dashboard/MerchantList.d.ts +98 -0
  209. package/dist/components/dashboard/MerchantList.d.ts.map +1 -0
  210. package/dist/components/dashboard/MetricCard.d.ts +75 -0
  211. package/dist/components/dashboard/MetricCard.d.ts.map +1 -0
  212. package/dist/components/dashboard/MiniBarChart.d.ts +60 -0
  213. package/dist/components/dashboard/MiniBarChart.d.ts.map +1 -0
  214. package/dist/components/dashboard/NotificationCard.d.ts +89 -0
  215. package/dist/components/dashboard/NotificationCard.d.ts.map +1 -0
  216. package/dist/components/dashboard/ProfileCard.d.ts +82 -0
  217. package/dist/components/dashboard/ProfileCard.d.ts.map +1 -0
  218. package/dist/components/dashboard/ProgressCard.d.ts +71 -0
  219. package/dist/components/dashboard/ProgressCard.d.ts.map +1 -0
  220. package/dist/components/dashboard/QuickActionCard.d.ts +63 -0
  221. package/dist/components/dashboard/QuickActionCard.d.ts.map +1 -0
  222. package/dist/components/dashboard/RoutingBreakdownCard.d.ts +88 -0
  223. package/dist/components/dashboard/RoutingBreakdownCard.d.ts.map +1 -0
  224. package/dist/components/dashboard/SettlementTimeline.d.ts +90 -0
  225. package/dist/components/dashboard/SettlementTimeline.d.ts.map +1 -0
  226. package/dist/components/dashboard/StatCard.d.ts +70 -0
  227. package/dist/components/dashboard/StatCard.d.ts.map +1 -0
  228. package/dist/components/dashboard/SummaryCard.d.ts +73 -0
  229. package/dist/components/dashboard/SummaryCard.d.ts.map +1 -0
  230. package/dist/components/dashboard/TransactionDetailDrawer.d.ts +183 -0
  231. package/dist/components/dashboard/TransactionDetailDrawer.d.ts.map +1 -0
  232. package/dist/components/dashboard/TransactionsTable.d.ts +137 -0
  233. package/dist/components/dashboard/TransactionsTable.d.ts.map +1 -0
  234. package/dist/components/dashboard/TrendChart.d.ts +75 -0
  235. package/dist/components/dashboard/TrendChart.d.ts.map +1 -0
  236. package/dist/components/dashboard/index.d.ts +41 -0
  237. package/dist/components/dashboard/index.d.ts.map +1 -0
  238. package/dist/components/scrollbar/scrollbar.d.ts +12 -0
  239. package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
  240. package/dist/dashboard-QMssHf5j.d.mts +1801 -0
  241. package/dist/feedback.d.mts +103 -0
  242. package/dist/feedback.d.ts +21 -0
  243. package/dist/feedback.d.ts.map +1 -0
  244. package/dist/feedback.js +2 -0
  245. package/dist/feedback.js.map +1 -0
  246. package/dist/feedback.mjs +2 -0
  247. package/dist/feedback.mjs.map +1 -0
  248. package/dist/form.d.mts +803 -0
  249. package/dist/form.d.ts +42 -0
  250. package/dist/form.d.ts.map +1 -0
  251. package/dist/form.js +2 -0
  252. package/dist/form.js.map +1 -0
  253. package/dist/form.mjs +2 -0
  254. package/dist/form.mjs.map +1 -0
  255. package/dist/hooks/useScrollToggle.d.ts +12 -0
  256. package/dist/hooks/useScrollToggle.d.ts.map +1 -0
  257. package/dist/icons-DoSGIez_.d.mts +135 -0
  258. package/dist/index.d.mts +3770 -0
  259. package/dist/index.d.ts +76 -38
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +37 -49
  262. package/dist/index.js.map +1 -0
  263. package/dist/index.mjs +37 -0
  264. package/dist/index.mjs.map +1 -0
  265. package/dist/lib/icon-aliases.d.ts +24 -0
  266. package/dist/lib/icon-aliases.d.ts.map +1 -0
  267. package/dist/lib/icon-names.d.ts +47 -0
  268. package/dist/lib/icon-names.d.ts.map +1 -0
  269. package/dist/lib/icon-providers.d.ts +560 -0
  270. package/dist/lib/icon-providers.d.ts.map +1 -0
  271. package/dist/lib/icons.d.ts +113 -24
  272. package/dist/lib/icons.d.ts.map +1 -1
  273. package/dist/lib/phosphor-icons.d.ts +6 -0
  274. package/dist/lib/phosphor-icons.d.ts.map +1 -0
  275. package/dist/lib/styles/colors.d.ts +131 -0
  276. package/dist/lib/styles/colors.d.ts.map +1 -0
  277. package/dist/lib/styles/index.d.ts +8 -0
  278. package/dist/lib/styles/index.d.ts.map +1 -0
  279. package/dist/lib/styles/utils.d.ts +87 -0
  280. package/dist/lib/styles/utils.d.ts.map +1 -0
  281. package/dist/lib/styles/variants.d.ts +79 -0
  282. package/dist/lib/styles/variants.d.ts.map +1 -0
  283. package/dist/lib/types/common.d.ts +80 -0
  284. package/dist/lib/types/common.d.ts.map +1 -0
  285. package/dist/lib/types/index.d.ts +6 -0
  286. package/dist/lib/types/index.d.ts.map +1 -0
  287. package/dist/lib/utils.d.ts +73 -1
  288. package/dist/lib/utils.d.ts.map +1 -1
  289. package/dist/navigation.d.mts +105 -0
  290. package/dist/navigation.d.ts +22 -0
  291. package/dist/navigation.d.ts.map +1 -0
  292. package/dist/navigation.js +2 -0
  293. package/dist/navigation.js.map +1 -0
  294. package/dist/navigation.mjs +2 -0
  295. package/dist/navigation.mjs.map +1 -0
  296. package/package.json +85 -19
  297. package/src/styles/toast.css +23 -0
  298. package/dist/components/Accordion.js +0 -84
  299. package/dist/components/Alert.js +0 -61
  300. package/dist/components/Avatar.js +0 -18
  301. package/dist/components/Badge.js +0 -15
  302. package/dist/components/BottomSheet.js +0 -96
  303. package/dist/components/Breadcrumb.js +0 -47
  304. package/dist/components/Button.js +0 -23
  305. package/dist/components/Card.js +0 -18
  306. package/dist/components/ChatMessage.js +0 -59
  307. package/dist/components/Checkbox.js +0 -30
  308. package/dist/components/Command.js +0 -119
  309. package/dist/components/ConfirmModal.js +0 -53
  310. package/dist/components/Container.js +0 -23
  311. package/dist/components/ContextMenu.js +0 -110
  312. package/dist/components/Divider.js +0 -39
  313. package/dist/components/Drawer.js +0 -79
  314. package/dist/components/Dropdown.js +0 -174
  315. package/dist/components/EmotionAnalysis.js +0 -40
  316. package/dist/components/EmotionButton.js +0 -16
  317. package/dist/components/EmotionMeter.js +0 -21
  318. package/dist/components/EmotionSelector.js +0 -46
  319. package/dist/components/Grid.js +0 -44
  320. package/dist/components/Icon.d.ts +0 -26
  321. package/dist/components/Icon.d.ts.map +0 -1
  322. package/dist/components/Icon.js +0 -48
  323. package/dist/components/Input.js +0 -25
  324. package/dist/components/LanguageToggle.js +0 -61
  325. package/dist/components/LoadingSpinner.js +0 -37
  326. package/dist/components/Menu.js +0 -122
  327. package/dist/components/Modal.js +0 -62
  328. package/dist/components/PageTransition.js +0 -39
  329. package/dist/components/Pagination.js +0 -87
  330. package/dist/components/Popover.js +0 -159
  331. package/dist/components/Progress.js +0 -51
  332. package/dist/components/Radio.js +0 -29
  333. package/dist/components/ScrollArea.js +0 -42
  334. package/dist/components/ScrollIndicator.js +0 -60
  335. package/dist/components/ScrollProgress.js +0 -39
  336. package/dist/components/ScrollToTop.js +0 -46
  337. package/dist/components/Select.js +0 -29
  338. package/dist/components/Skeleton.js +0 -71
  339. package/dist/components/Stack.js +0 -34
  340. package/dist/components/Switch.js +0 -29
  341. package/dist/components/Tabs.js +0 -117
  342. package/dist/components/Textarea.js +0 -31
  343. package/dist/components/ThemeProvider.js +0 -76
  344. package/dist/components/ThemeToggle.js +0 -49
  345. package/dist/components/Toast.js +0 -138
  346. package/dist/components/Tooltip.js +0 -102
  347. package/dist/lib/icons.js +0 -321
  348. package/dist/lib/utils.js +0 -5
@@ -0,0 +1,2 @@
1
+ import {l}from'./chunk-DMYT7RZ4.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import f,{useState,useEffect}from'react';import {jsxs,jsx}from'react/jsx-runtime';var M=f.forwardRef(({className:t,prevPage:e,nextPage:i,showOnMobile:o=false,...n},m)=>!e&&!i?null:jsxs("div",{ref:m,className:a("flex items-center justify-between py-4",!o&&"hidden md:flex",t),...n,children:[jsx("div",{className:"flex-1",children:e&&jsxs("a",{href:e.href,className:"group inline-flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors",children:[jsx(l,{name:"chevronLeft",className:"w-4 h-4 mr-2 transition-transform group-hover:-translate-x-1"}),jsx("span",{className:"hidden sm:inline",children:e.title})]})}),jsx("div",{className:"flex-1 flex justify-end",children:i&&jsxs("a",{href:i.href,className:"group inline-flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors",children:[jsx("span",{className:"hidden sm:inline mr-2",children:i.title}),jsx(l,{name:"chevronRight",className:"w-4 h-4 transition-transform group-hover:translate-x-1"})]})})]}));M.displayName="PageNavigation";function h({className:t,size:e="md",variant:i="default",text:o,color:n="default"}){let m={sm:"w-6 h-6",md:"w-8 h-8",lg:"w-12 h-12",xl:"w-16 h-16"},s={default:"border-gray-300 border-t-gray-600 dark:border-gray-600 dark:border-t-gray-300",primary:"border-blue-300 border-t-blue-600 dark:border-blue-600 dark:border-t-blue-300",secondary:"border-gray-300 border-t-gray-600 dark:border-gray-600 dark:border-t-gray-300",success:"border-green-300 border-t-green-600 dark:border-green-600 dark:border-t-green-300",warning:"border-yellow-300 border-t-yellow-600 dark:border-yellow-600 dark:border-t-yellow-300",error:"border-red-300 border-t-red-600 dark:border-red-600 dark:border-t-red-300",glass:"border-white/30 border-t-white/50 dark:border-slate-600/50 dark:border-t-slate-400/50"},d=()=>{switch(i){case "dots":return jsxs("div",{className:"flex space-x-1",children:[jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-100"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-200"})]});case "bars":return jsxs("div",{className:"flex space-x-1 h-full items-end",children:[jsx("div",{className:"w-1 bg-current animate-pulse",style:{height:"60%"}}),jsx("div",{className:"w-1 bg-current animate-pulse delay-100",style:{height:"80%"}}),jsx("div",{className:"w-1 bg-current animate-pulse delay-200",style:{height:"40%"}}),jsx("div",{className:"w-1 bg-current animate-pulse delay-300",style:{height:"100%"}}),jsx("div",{className:"w-1 bg-current animate-pulse delay-500",style:{height:"70%"}})]});case "ring":return jsx("div",{className:a("animate-spin rounded-full border-2",s[n]||s.default)});case "ripple":return jsxs("div",{className:"relative",children:[jsx("div",{className:a("absolute inset-0 rounded-full border-2 animate-ping",s[n]||s.default)}),jsx("div",{className:a("rounded-full border-2",s[n]||s.default)})]});default:return jsx("div",{className:a("animate-spin rounded-full border-2",s[n]||s.default)})}};return jsxs("div",{className:a("flex flex-col items-center justify-center",t),children:[jsx("div",{className:a(m[e],"text-gray-600 dark:text-gray-400"),children:d()}),o&&jsx("p",{className:"mt-3 text-sm text-gray-600 dark:text-gray-400 text-center",children:o})]})}var u=f.forwardRef(({children:t,className:e,duration:i=300,variant:o="fade",loadingVariant:n="ripple",loadingText:m="\uD398\uC774\uC9C0 \uB85C\uB529 \uC911...",showLoading:s=true,onTransitionStart:d,onTransitionEnd:p},N)=>{let[w,k]=useState(true),[g,T]=useState(false);useEffect(()=>{let L=setTimeout(()=>{k(false),T(true),p==null||p();},i);return d==null||d(),()=>clearTimeout(L)},[i,d,p]);let P={fade:a("transition-opacity duration-300 ease-in-out",g?"opacity-100":"opacity-0"),slide:a("transition-transform duration-300 ease-in-out",g?"translate-x-0":"translate-x-full"),scale:a("transition-all duration-300 ease-in-out",g?"scale-100 opacity-100":"scale-95 opacity-0"),flip:a("transition-all duration-500 ease-in-out",g?"rotate-y-0 opacity-100":"rotate-y-90 opacity-0")};return w&&s?jsx("div",{className:a("flex flex-col items-center justify-center min-h-screen bg-gradient-to-br from-blue-50 to-purple-50 dark:from-slate-900 dark:to-slate-800",e),children:jsx(h,{size:"lg",variant:n,text:m})}):jsx("div",{ref:N,className:a("w-full",P[o],e),style:{transitionDuration:`${i}ms`},children:t})});u.displayName="PageTransition";var H=f.forwardRef((t,e)=>jsx(u,{ref:e,variant:"fade",...t})),S=f.forwardRef((t,e)=>jsx(u,{ref:e,variant:"slide",...t})),O=f.forwardRef((t,e)=>jsx(u,{ref:e,variant:"scale",...t})),E=f.forwardRef((t,e)=>jsx(u,{ref:e,variant:"flip",...t}));H.displayName="FadeTransition";S.displayName="SlideTransition";O.displayName="ScaleTransition";E.displayName="FlipTransition";export{M as a,h as b,u as c};//# sourceMappingURL=chunk-ZQAAB3P4.mjs.map
2
+ //# sourceMappingURL=chunk-ZQAAB3P4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/PageNavigation.tsx","../src/components/LoadingSpinner.tsx","../src/components/PageTransition.tsx"],"names":["PageNavigation","React","className","prevPage","nextPage","showOnMobile","props","ref","jsxs","merge","jsx","Icon","LoadingSpinner","size","variant","text","color","sizeClasses","spinnerColors","renderSpinner","PageTransition","children","duration","loadingVariant","loadingText","showLoading","onTransitionStart","onTransitionEnd","isLoading","setIsLoading","useState","isVisible","setIsVisible","useEffect","timer","transitionClasses","FadeTransition","SlideTransition","ScaleTransition","FlipTransition"],"mappings":"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","file":"chunk-ZQAAB3P4.mjs","sourcesContent":["\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\nimport { Icon } from \"./Icon\"\n\n/**\n * PageNavigation 컴포넌트의 props / PageNavigation component props\n * @typedef {Object} PageNavigationProps\n * @property {Object} [prevPage] - 이전 페이지 정보 / Previous page information\n * @property {string} prevPage.title - 이전 페이지 제목 / Previous page title\n * @property {string} prevPage.href - 이전 페이지 링크 / Previous page link\n * @property {Object} [nextPage] - 다음 페이지 정보 / Next page information\n * @property {string} nextPage.title - 다음 페이지 제목 / Next page title\n * @property {string} nextPage.href - 다음 페이지 링크 / Next page link\n * @property {boolean} [showOnMobile=false] - 모바일에서 표시 여부 / Show on mobile\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface PageNavigationProps extends React.HTMLAttributes<HTMLDivElement> {\n prevPage?: {\n title: string\n href: string\n }\n nextPage?: {\n title: string\n href: string\n }\n showOnMobile?: boolean\n}\n\n/**\n * PageNavigation 컴포넌트 / PageNavigation component\n * \n * 이전/다음 페이지로 이동하는 네비게이션 컴포넌트입니다.\n * 문서 페이지나 가이드 페이지에서 사용하기 적합합니다.\n * \n * Navigation component for moving to previous/next pages.\n * Suitable for documentation or guide pages.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <PageNavigation\n * prevPage={{ title: \"이전 페이지\", href: \"/prev\" }}\n * nextPage={{ title: \"다음 페이지\", href: \"/next\" }}\n * />\n * \n * @param {PageNavigationProps} props - PageNavigation 컴포넌트의 props / PageNavigation component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} PageNavigation 컴포넌트 / PageNavigation component\n */\nconst PageNavigation = React.forwardRef<HTMLDivElement, PageNavigationProps>(\n ({ \n className, \n prevPage, \n nextPage, \n showOnMobile = false,\n ...props \n }, ref) => {\n if (!prevPage && !nextPage) {\n return null\n }\n\n return (\n <div\n ref={ref}\n className={merge(\n \"flex items-center justify-between py-4\",\n !showOnMobile && \"hidden md:flex\",\n className\n )}\n {...props}\n >\n {/* 이전 페이지 */}\n <div className=\"flex-1\">\n {prevPage && (\n <a\n href={prevPage.href}\n className=\"group inline-flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors\"\n >\n <Icon \n name=\"chevronLeft\" \n className=\"w-4 h-4 mr-2 transition-transform group-hover:-translate-x-1\" \n />\n <span className=\"hidden sm:inline\">{prevPage.title}</span>\n </a>\n )}\n </div>\n\n {/* 다음 페이지 */}\n <div className=\"flex-1 flex justify-end\">\n {nextPage && (\n <a\n href={nextPage.href}\n className=\"group inline-flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors\"\n >\n <span className=\"hidden sm:inline mr-2\">{nextPage.title}</span>\n <Icon \n name=\"chevronRight\" \n className=\"w-4 h-4 transition-transform group-hover:translate-x-1\" \n />\n </a>\n )}\n </div>\n </div>\n )\n }\n)\nPageNavigation.displayName = \"PageNavigation\"\n\nexport { PageNavigation } ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\n\n/**\n * LoadingSpinner 컴포넌트의 props / LoadingSpinner component props\n * @typedef {Object} LoadingSpinnerProps\n * @property {\"sm\" | \"md\" | \"lg\" | \"xl\"} [size=\"md\"] - Spinner 크기 / Spinner size\n * @property {\"default\" | \"dots\" | \"bars\" | \"ring\" | \"ripple\"} [variant=\"default\"] - Spinner 애니메이션 타입 / Spinner animation type\n * @property {string} [text] - Spinner 아래 표시할 텍스트 / Text to display below spinner\n * @property {\"default\" | \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"error\" | \"glass\"} [color=\"default\"] - Spinner 색상 / Spinner color\n * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class\n */\nexport interface LoadingSpinnerProps {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\"\n variant?: \"default\" | \"dots\" | \"bars\" | \"ring\" | \"ripple\"\n text?: string\n color?: \"default\" | \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"error\" | \"glass\"\n className?: string\n}\n\n/**\n * LoadingSpinner 컴포넌트 / LoadingSpinner component\n * \n * 로딩 상태를 표시하는 스피너 컴포넌트입니다.\n * 다양한 애니메이션 타입과 크기를 지원합니다.\n * \n * Spinner component that displays loading state.\n * Supports various animation types and sizes.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <LoadingSpinner />\n * \n * @example\n * // 텍스트와 함께 / With text\n * <LoadingSpinner \n * text=\"로딩 중...\"\n * size=\"lg\"\n * color=\"primary\"\n * />\n * \n * @example\n * // 다양한 애니메이션 / Various animations\n * <LoadingSpinner variant=\"dots\" />\n * <LoadingSpinner variant=\"bars\" color=\"success\" />\n * <LoadingSpinner variant=\"ripple\" size=\"xl\" />\n * \n * @param {LoadingSpinnerProps} props - LoadingSpinner 컴포넌트의 props / LoadingSpinner component props\n * @returns {JSX.Element} LoadingSpinner 컴포넌트 / LoadingSpinner component\n */\nexport function LoadingSpinner({ \n className, \n size = \"md\", \n variant = \"default\", \n text, \n color = \"default\" \n}: LoadingSpinnerProps) {\n const sizeClasses = {\n sm: \"w-6 h-6\", // 24px - 더 넉넉한 크기\n md: \"w-8 h-8\", // 32px - 더 넉넉한 크기\n lg: \"w-12 h-12\", // 48px - 더 넉넉한 크기\n xl: \"w-16 h-16\" // 64px - 더 넉넉한 크기\n }\n\n // LoadingSpinner는 border 색상을 사용하므로 특화 색상 시스템 사용\n const spinnerColors: Record<string, string> = {\n default: \"border-gray-300 border-t-gray-600 dark:border-gray-600 dark:border-t-gray-300\",\n primary: \"border-blue-300 border-t-blue-600 dark:border-blue-600 dark:border-t-blue-300\",\n secondary: \"border-gray-300 border-t-gray-600 dark:border-gray-600 dark:border-t-gray-300\",\n success: \"border-green-300 border-t-green-600 dark:border-green-600 dark:border-t-green-300\",\n warning: \"border-yellow-300 border-t-yellow-600 dark:border-yellow-600 dark:border-t-yellow-300\",\n error: \"border-red-300 border-t-red-600 dark:border-red-600 dark:border-t-red-300\",\n glass: \"border-white/30 border-t-white/50 dark:border-slate-600/50 dark:border-t-slate-400/50\"\n }\n\n const renderSpinner = () => {\n switch (variant) {\n case \"dots\":\n return (\n <div className=\"flex space-x-1\">\n <div className=\"w-2 h-2 bg-current rounded-full animate-bounce\" />\n <div className=\"w-2 h-2 bg-current rounded-full animate-bounce delay-100\" />\n <div className=\"w-2 h-2 bg-current rounded-full animate-bounce delay-200\" />\n </div>\n )\n case \"bars\":\n return (\n <div className=\"flex space-x-1 h-full items-end\">\n <div className=\"w-1 bg-current animate-pulse\" style={{ height: '60%' }} />\n <div className=\"w-1 bg-current animate-pulse delay-100\" style={{ height: '80%' }} />\n <div className=\"w-1 bg-current animate-pulse delay-200\" style={{ height: '40%' }} />\n <div className=\"w-1 bg-current animate-pulse delay-300\" style={{ height: '100%' }} />\n <div className=\"w-1 bg-current animate-pulse delay-500\" style={{ height: '70%' }} />\n </div>\n )\n case \"ring\":\n return (\n <div className={merge(\n \"animate-spin rounded-full border-2\",\n spinnerColors[color] || spinnerColors.default\n )} />\n )\n case \"ripple\":\n return (\n <div className=\"relative\">\n <div className={merge(\n \"absolute inset-0 rounded-full border-2 animate-ping\",\n spinnerColors[color] || spinnerColors.default\n )} />\n <div className={merge(\n \"rounded-full border-2\",\n spinnerColors[color] || spinnerColors.default\n )} />\n </div>\n )\n default:\n return (\n <div className={merge(\n \"animate-spin rounded-full border-2\",\n spinnerColors[color] || spinnerColors.default\n )} />\n )\n }\n }\n\n return (\n <div className={merge(\"flex flex-col items-center justify-center\", className)}>\n <div className={merge(sizeClasses[size], \"text-gray-600 dark:text-gray-400\")}>\n {renderSpinner()}\n </div>\n {text && (\n <p className=\"mt-3 text-sm text-gray-600 dark:text-gray-400 text-center\">\n {text}\n </p>\n )}\n </div>\n )\n} ","'use client'\n\nimport React, { useState, useEffect } from 'react'\nimport { merge } from '../lib/utils'\nimport { LoadingSpinner } from './LoadingSpinner'\n\n/**\n * PageTransition 컴포넌트의 props / PageTransition component props\n * @typedef {Object} PageTransitionProps\n * @property {React.ReactNode} children - 페이지 내용 / Page content\n * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class\n * @property {number} [duration=300] - 전환 지속 시간 (ms) / Transition duration (ms)\n * @property {'fade' | 'slide' | 'scale' | 'flip'} [variant='fade'] - 전환 애니메이션 타입 / Transition animation type\n * @property {'default' | 'dots' | 'bars' | 'ring' | 'ripple'} [loadingVariant='ripple'] - 로딩 스피너 타입 / Loading spinner type\n * @property {string} [loadingText='페이지 로딩 중...'] - 로딩 텍스트 / Loading text\n * @property {boolean} [showLoading=true] - 로딩 표시 여부 / Show loading\n * @property {() => void} [onTransitionStart] - 전환 시작 콜백 / Transition start callback\n * @property {() => void} [onTransitionEnd] - 전환 종료 콜백 / Transition end callback\n */\nexport interface PageTransitionProps {\n children: React.ReactNode\n className?: string\n duration?: number\n variant?: 'fade' | 'slide' | 'scale' | 'flip'\n loadingVariant?: 'default' | 'dots' | 'bars' | 'ring' | 'ripple'\n loadingText?: string\n showLoading?: boolean\n onTransitionStart?: () => void\n onTransitionEnd?: () => void\n}\n\n/**\n * PageTransition 컴포넌트 / PageTransition component\n * \n * 페이지 전환 애니메이션을 제공하는 컴포넌트입니다.\n * 다양한 전환 효과와 로딩 스피너를 지원합니다.\n * \n * Component that provides page transition animations.\n * Supports various transition effects and loading spinners.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <PageTransition>\n * <div>페이지 내용</div>\n * </PageTransition>\n * \n * @example\n * // Slide 전환 / Slide transition\n * <PageTransition\n * variant=\"slide\"\n * duration={500}\n * loadingVariant=\"dots\"\n * >\n * <div>페이지 내용</div>\n * </PageTransition>\n * \n * @param {PageTransitionProps} props - PageTransition 컴포넌트의 props / PageTransition component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} PageTransition 컴포넌트 / PageTransition component\n */\nexport const PageTransition = React.forwardRef<HTMLDivElement, PageTransitionProps>(({\n children,\n className,\n duration = 300,\n variant = 'fade',\n loadingVariant = 'ripple',\n loadingText = '페이지 로딩 중...',\n showLoading = true,\n onTransitionStart,\n onTransitionEnd\n}, ref) => {\n const [isLoading, setIsLoading] = useState(true)\n const [isVisible, setIsVisible] = useState(false)\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setIsLoading(false)\n setIsVisible(true)\n onTransitionEnd?.()\n }, duration)\n\n onTransitionStart?.()\n\n return () => clearTimeout(timer)\n }, [duration, onTransitionStart, onTransitionEnd])\n\n const transitionClasses = {\n fade: merge(\n 'transition-opacity duration-300 ease-in-out',\n isVisible ? 'opacity-100' : 'opacity-0'\n ),\n slide: merge(\n 'transition-transform duration-300 ease-in-out',\n isVisible ? 'translate-x-0' : 'translate-x-full'\n ),\n scale: merge(\n 'transition-all duration-300 ease-in-out',\n isVisible ? 'scale-100 opacity-100' : 'scale-95 opacity-0'\n ),\n flip: merge(\n 'transition-all duration-500 ease-in-out',\n isVisible ? 'rotate-y-0 opacity-100' : 'rotate-y-90 opacity-0'\n )\n }\n\n if (isLoading && showLoading) {\n return (\n <div className={merge('flex flex-col items-center justify-center min-h-screen bg-gradient-to-br from-blue-50 to-purple-50 dark:from-slate-900 dark:to-slate-800', className)}>\n <LoadingSpinner\n size=\"lg\"\n variant={loadingVariant}\n text={loadingText}\n />\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n className={merge(\n 'w-full',\n transitionClasses[variant],\n className\n )}\n style={{ transitionDuration: `${duration}ms` }}\n >\n {children}\n </div>\n )\n})\n\nPageTransition.displayName = 'PageTransition'\n\n// Convenience components for different transition types\nexport const FadeTransition = React.forwardRef<HTMLDivElement, Omit<PageTransitionProps, 'variant'>>((props, ref) => (\n <PageTransition ref={ref} variant=\"fade\" {...props} />\n))\n\nexport const SlideTransition = React.forwardRef<HTMLDivElement, Omit<PageTransitionProps, 'variant'>>((props, ref) => (\n <PageTransition ref={ref} variant=\"slide\" {...props} />\n))\n\nexport const ScaleTransition = React.forwardRef<HTMLDivElement, Omit<PageTransitionProps, 'variant'>>((props, ref) => (\n <PageTransition ref={ref} variant=\"scale\" {...props} />\n))\n\nexport const FlipTransition = React.forwardRef<HTMLDivElement, Omit<PageTransitionProps, 'variant'>>((props, ref) => (\n <PageTransition ref={ref} variant=\"flip\" {...props} />\n))\n\n// Add displayName for convenience components\nFadeTransition.displayName = 'FadeTransition'\nSlideTransition.displayName = 'SlideTransition'\nScaleTransition.displayName = 'ScaleTransition'\nFlipTransition.displayName = 'FlipTransition' "]}
@@ -1,4 +1,15 @@
1
- import * as React from "react";
1
+ import React from "react";
2
+ /**
3
+ * Accordion 컴포넌트의 props / Accordion component props
4
+ * @typedef {Object} AccordionProps
5
+ * @property {React.ReactNode} children - AccordionItem 컴포넌트들 / AccordionItem components
6
+ * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
7
+ * @property {"single" | "multiple"} [type="single"] - 단일 또는 다중 아이템 열기 허용 / Allow single or multiple items to be open
8
+ * @property {string | string[]} [defaultValue] - 초기 열린 아이템 값 (비제어 컴포넌트) / Initial open item value (uncontrolled component)
9
+ * @property {string | string[]} [value] - 현재 열린 아이템 값 (제어 컴포넌트) / Current open item value (controlled component)
10
+ * @property {(value: string | string[]) => void} [onValueChange] - 아이템 열림/닫힘 콜백 / Item open/close callback
11
+ * @property {boolean} [collapsible=false] - 단일 모드에서 열린 아이템을 닫을 수 있는지 여부 / Whether open item can be closed in single mode
12
+ */
2
13
  interface AccordionProps {
3
14
  children: React.ReactNode;
4
15
  className?: string;
@@ -8,7 +19,63 @@ interface AccordionProps {
8
19
  onValueChange?: (value: string | string[]) => void;
9
20
  collapsible?: boolean;
10
21
  }
22
+ /**
23
+ * Accordion 컴포넌트 / Accordion component
24
+ *
25
+ * 접을 수 있는 콘텐츠 섹션을 제공하는 컴포넌트입니다.
26
+ * 키보드 네비게이션(Arrow keys, Home/End)을 지원하며, ARIA 속성을 자동으로 설정합니다.
27
+ *
28
+ * Component that provides collapsible content sections.
29
+ * Supports keyboard navigation (Arrow keys, Home/End) and automatically sets ARIA attributes.
30
+ *
31
+ * @component
32
+ * @example
33
+ * // 기본 사용 (단일 열기) / Basic usage (single open)
34
+ * <Accordion type="single">
35
+ * <AccordionItem value="item1">
36
+ * <AccordionTrigger>제목 1</AccordionTrigger>
37
+ * <AccordionContent>내용 1</AccordionContent>
38
+ * </AccordionItem>
39
+ * <AccordionItem value="item2">
40
+ * <AccordionTrigger>제목 2</AccordionTrigger>
41
+ * <AccordionContent>내용 2</AccordionContent>
42
+ * </AccordionItem>
43
+ * </Accordion>
44
+ *
45
+ * @example
46
+ * // 다중 열기 / Multiple open
47
+ * <Accordion type="multiple" defaultValue={["item1", "item2"]}>
48
+ * <AccordionItem value="item1">
49
+ * <AccordionTrigger>제목 1</AccordionTrigger>
50
+ * <AccordionContent>내용 1</AccordionContent>
51
+ * </AccordionItem>
52
+ * </Accordion>
53
+ *
54
+ * @example
55
+ * // 제어 컴포넌트 / Controlled component
56
+ * const [openItems, setOpenItems] = useState<string[]>([])
57
+ * <Accordion type="multiple" value={openItems} onValueChange={setOpenItems}>
58
+ * <AccordionItem value="item1">
59
+ * <AccordionTrigger>제목</AccordionTrigger>
60
+ * <AccordionContent>내용</AccordionContent>
61
+ * </AccordionItem>
62
+ * </Accordion>
63
+ *
64
+ * @param {AccordionProps} props - Accordion 컴포넌트의 props / Accordion component props
65
+ * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
66
+ * @returns {JSX.Element} Accordion 컴포넌트 / Accordion component
67
+ */
11
68
  declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
69
+ /**
70
+ * AccordionItem 컴포넌트의 props / AccordionItem component props
71
+ * @typedef {Object} AccordionItemProps
72
+ * @property {string} value - 아이템의 고유 값 / Item unique value
73
+ * @property {React.ReactNode} children - AccordionTrigger와 AccordionContent / AccordionTrigger and AccordionContent
74
+ * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
75
+ * @property {boolean} [disabled=false] - 아이템 비활성화 여부 / Item disabled state
76
+ * @property {string[]} [openItems] - 열린 아이템 목록 (Accordion에서 자동 전달) / Open items list (auto-passed from Accordion)
77
+ * @property {(value: string) => void} [onToggle] - 토글 콜백 (Accordion에서 자동 전달) / Toggle callback (auto-passed from Accordion)
78
+ */
12
79
  interface AccordionItemProps {
13
80
  value: string;
14
81
  children: React.ReactNode;
@@ -17,6 +84,16 @@ interface AccordionItemProps {
17
84
  openItems?: string[];
18
85
  onToggle?: (value: string) => void;
19
86
  }
87
+ /**
88
+ * AccordionItem 컴포넌트 / AccordionItem component
89
+ * 아코디언의 개별 아이템을 감싸는 컨테이너입니다.
90
+ * Container that wraps an individual accordion item.
91
+ *
92
+ * @component
93
+ * @param {AccordionItemProps} props - AccordionItem 컴포넌트의 props / AccordionItem component props
94
+ * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
95
+ * @returns {JSX.Element} AccordionItem 컴포넌트 / AccordionItem component
96
+ */
20
97
  declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
21
98
  interface AccordionTriggerProps {
22
99
  children: React.ReactNode;
@@ -29,11 +106,42 @@ interface AccordionTriggerProps {
29
106
  onToggle?: () => void;
30
107
  }
31
108
  declare const AccordionTrigger: React.ForwardRefExoticComponent<AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
109
+ /**
110
+ * AccordionTrigger 컴포넌트 / AccordionTrigger component
111
+ * 아코디언 아이템을 열고 닫는 트리거 버튼입니다.
112
+ * Button that opens and closes an accordion item.
113
+ *
114
+ * @component
115
+ * @param {AccordionTriggerProps} props - AccordionTrigger 컴포넌트의 props / AccordionTrigger component props
116
+ * @param {React.Ref<HTMLButtonElement>} ref - button 요소 ref / button element ref
117
+ * @returns {JSX.Element} AccordionTrigger 컴포넌트 / AccordionTrigger component
118
+ */
119
+ /**
120
+ * AccordionContent 컴포넌트의 props
121
+ * @typedef {Object} AccordionContentProps
122
+ * @property {React.ReactNode} children - 콘텐츠
123
+ * @property {string} [className] - 추가 CSS 클래스
124
+ * @property {boolean} [isOpen] - 열림 상태 (AccordionItem에서 자동 전달)
125
+ * @property {string} [value] - 아이템 값 (AccordionItem에서 자동 전달)
126
+ * @property {string} ['data-accordion-value'] - 아이템 값 (내부 사용)
127
+ */
32
128
  interface AccordionContentProps {
33
129
  children: React.ReactNode;
34
130
  className?: string;
35
131
  isOpen?: boolean;
132
+ value?: string;
133
+ 'data-accordion-value'?: string;
36
134
  }
135
+ /**
136
+ * AccordionContent 컴포넌트 / AccordionContent component
137
+ * 아코디언 아이템의 콘텐츠를 표시합니다.
138
+ * Displays the content of an accordion item.
139
+ *
140
+ * @component
141
+ * @param {AccordionContentProps} props - AccordionContent 컴포넌트의 props / AccordionContent component props
142
+ * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
143
+ * @returns {JSX.Element} AccordionContent 컴포넌트 / AccordionContent component
144
+ */
37
145
  declare const AccordionContent: React.ForwardRefExoticComponent<AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
38
146
  export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
39
147
  //# sourceMappingURL=Accordion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../src/components/Accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,UAAU,cAAc;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAClD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,QAAA,MAAM,SAAS,uFA8Dd,CAAA;AAGD,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,QAAA,MAAM,aAAa,2FAqClB,CAAA;AAGD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,QAAA,MAAM,gBAAgB,iGAyCrB,CAAA;AAGD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,QAAA,MAAM,gBAAgB,8FA+BrB,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../src/components/Accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB;;;;;;;;;;GAUG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAClD,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,QAAA,MAAM,SAAS,uFA8Gd,CAAA;AAGD;;;;;;;;;GASG;AACH,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED;;;;;;;;;GASG;AACH,QAAA,MAAM,aAAa,2FAsClB,CAAA;AAGD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,QAAA,MAAM,gBAAgB,iGAkDrB,CAAA;AAGD;;;;;;;;;GASG;AAEH;;;;;;;;GAQG;AACH,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED;;;;;;;;;GASG;AACH,QAAA,MAAM,gBAAgB,8FAuCrB,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,68 @@
1
+ import React from "react";
2
+ import { type ButtonProps } from "./Button";
3
+ /** Action 전용 옵션(버튼 공통 옵션은 ButtonProps에서 상속) */
4
+ type ActionKind = "primary" | "secondary" | "tertiary" | "magical" | "cyberpunk" | "ninja" | "wizard" | "sniper";
5
+ type FeedbackKind = "ripple" | "particle" | "sound" | "haptic" | "glitch" | "sparkle" | "smoke";
6
+ type ActionExtras = {
7
+ actionType?: ActionKind;
8
+ feedback?: FeedbackKind;
9
+ particleEffect?: boolean;
10
+ rippleEffect?: boolean;
11
+ soundEffect?: boolean;
12
+ hapticFeedback?: boolean;
13
+ transparency?: number;
14
+ blurIntensity?: number;
15
+ glowIntensity?: number;
16
+ glowColor?: string;
17
+ };
18
+ /**
19
+ * Action 컴포넌트의 props / Action component props
20
+ * @typedef {Object} ActionProps
21
+ * @property {ActionKind} [actionType="primary"] - Action 타입 / Action type
22
+ * @property {FeedbackKind} [feedback="ripple"] - 피드백 타입 / Feedback type
23
+ * @property {boolean} [particleEffect=false] - 파티클 효과 활성화 / Enable particle effect
24
+ * @property {boolean} [rippleEffect=false] - 리플 효과 활성화 / Enable ripple effect
25
+ * @property {boolean} [soundEffect=false] - 사운드 효과 활성화 / Enable sound effect
26
+ * @property {boolean} [hapticFeedback=false] - 햅틱 피드백 활성화 / Enable haptic feedback
27
+ * @property {number} [transparency=1] - 투명도 (0-1) / Transparency (0-1)
28
+ * @property {number} [blurIntensity=0] - blur 강도 (px) / Blur intensity (px)
29
+ * @property {number} [glowIntensity=0] - 글로우 강도 (px) / Glow intensity (px)
30
+ * @property {string} [glowColor="rgba(91,140,255,.8)"] - 글로우 색상 / Glow color
31
+ * @extends {ButtonProps}
32
+ */
33
+ export type ActionProps = ButtonProps & ActionExtras;
34
+ type AnchorEl = HTMLAnchorElement;
35
+ type ButtonEl = HTMLButtonElement;
36
+ type AnchorOrButton = AnchorEl | ButtonEl;
37
+ /**
38
+ * Action 컴포넌트 / Action component
39
+ *
40
+ * 고급 효과를 가진 액션 버튼 컴포넌트입니다.
41
+ * Button 컴포넌트를 기반으로 하며, 파티클, 리플, 사운드, 햅틱 피드백 등을 지원합니다.
42
+ *
43
+ * Action button component with advanced effects.
44
+ * Based on Button component, supports particle, ripple, sound, haptic feedback, etc.
45
+ *
46
+ * @component
47
+ * @example
48
+ * // 기본 사용 / Basic usage
49
+ * <Action>클릭</Action>
50
+ *
51
+ * @example
52
+ * // 고급 효과 / Advanced effects
53
+ * <Action
54
+ * actionType="magical"
55
+ * feedback="particle"
56
+ * particleEffect
57
+ * rippleEffect
58
+ * >
59
+ * 마법 버튼
60
+ * </Action>
61
+ *
62
+ * @param {ActionProps} props - Action 컴포넌트의 props / Action component props
63
+ * @param {React.Ref<AnchorOrButton>} ref - button 또는 anchor 요소 ref / button or anchor element ref
64
+ * @returns {JSX.Element} Action 컴포넌트 / Action component
65
+ */
66
+ export declare const Action: React.ForwardRefExoticComponent<ActionProps & React.RefAttributes<AnchorOrButton>>;
67
+ export {};
68
+ //# sourceMappingURL=Action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../../src/components/Action.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,+CAA+C;AAC/C,KAAK,UAAU,GACX,SAAS,GAAG,WAAW,GAAG,UAAU,GACpC,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC5D,KAAK,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhG,KAAK,YAAY,GAAG;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;AAErD,KAAK,QAAQ,GAAG,iBAAiB,CAAC;AAClC,KAAK,QAAQ,GAAG,iBAAiB,CAAC;AAClC,KAAK,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAgB1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,MAAM,oFAiOlB,CAAC"}
@@ -0,0 +1,65 @@
1
+ import React from 'react';
2
+ import type { IconName } from '../lib/icons';
3
+ /**
4
+ * ActionButton 인터페이스
5
+ * @typedef {Object} ActionButton
6
+ * @property {string} label - 버튼 라벨 (데스크톱)
7
+ * @property {string} [labelMobile] - 버튼 라벨 (모바일, 없으면 label 사용)
8
+ * @property {IconName} [icon] - 버튼 아이콘
9
+ * @property {() => void} onClick - 클릭 핸들러
10
+ * @property {boolean} [disabled] - 비활성화 여부
11
+ * @property {'default' | 'outline' | 'destructive' | 'ghost'} [variant='outline'] - 버튼 스타일
12
+ * @property {Object} [badge] - 배지 정보
13
+ * @property {number} badge.count - 배지 숫자
14
+ * @property {'blue' | 'red' | 'gray' | 'green'} [badge.color='gray'] - 배지 색상
15
+ * @property {string} [className] - 추가 CSS 클래스
16
+ */
17
+ export interface ActionButton {
18
+ label: string;
19
+ labelMobile?: string;
20
+ icon?: IconName;
21
+ onClick: () => void;
22
+ disabled?: boolean;
23
+ variant?: 'default' | 'outline' | 'destructive' | 'ghost';
24
+ badge?: {
25
+ count: number;
26
+ color?: 'blue' | 'red' | 'gray' | 'green';
27
+ };
28
+ className?: string;
29
+ }
30
+ /**
31
+ * ActionToolbar 컴포넌트의 props / ActionToolbar component props
32
+ * @typedef {Object} ActionToolbarProps
33
+ * @property {boolean} [isSelectMode=false] - 선택 모드 활성화 여부 / Enable select mode
34
+ * @property {number} [totalCount=0] - 전체 항목 개수 / Total item count
35
+ * @property {number} [selectedCount=0] - 선택된 항목 개수 / Selected item count
36
+ * @property {ActionButton[]} [actions=[]] - 일반 모드 액션 버튼들 / Normal mode action buttons
37
+ * @property {ActionButton[]} [selectModeActions=[]] - 선택 모드 액션 버튼들 / Select mode action buttons
38
+ * @property {() => void} [onToggleSelectMode] - 선택 모드 토글 함수 / Toggle select mode function
39
+ * @property {() => void} [onToggleSelectAll] - 전체 선택/해제 함수 / Toggle select all function
40
+ * @property {() => void} [onCancelSelect] - 선택 모드 취소 함수 / Cancel select mode function
41
+ * @property {boolean} [loading=false] - 로딩 상태 / Loading state
42
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
43
+ */
44
+ export interface ActionToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
45
+ /** 선택 모드 활성화 여부 */
46
+ isSelectMode?: boolean;
47
+ /** 전체 항목 개수 */
48
+ totalCount?: number;
49
+ /** 선택된 항목 개수 */
50
+ selectedCount?: number;
51
+ /** 일반 모드 액션 버튼들 */
52
+ actions?: ActionButton[];
53
+ /** 선택 모드 액션 버튼들 */
54
+ selectModeActions?: ActionButton[];
55
+ /** 선택 모드 토글 함수 */
56
+ onToggleSelectMode?: () => void;
57
+ /** 전체 선택/해제 함수 */
58
+ onToggleSelectAll?: () => void;
59
+ /** 선택 모드 취소 함수 */
60
+ onCancelSelect?: () => void;
61
+ /** 로딩 상태 */
62
+ loading?: boolean;
63
+ }
64
+ export declare const ActionToolbar: React.NamedExoticComponent<ActionToolbarProps & React.RefAttributes<HTMLDivElement>>;
65
+ //# sourceMappingURL=ActionToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionToolbar.d.ts","sourceRoot":"","sources":["../../src/components/ActionToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;IAC1D,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;KAC3C,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC9E,mBAAmB;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,mBAAmB;IACnB,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC;IACnC,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB;IAClB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAqLD,eAAO,MAAM,aAAa,sFAAqC,CAAC"}
@@ -1,4 +1,16 @@
1
1
  import React from "react";
2
+ /**
3
+ * Alert 컴포넌트의 props
4
+ * @typedef {Object} AlertProps
5
+ * @property {"default" | "success" | "warning" | "error" | "info"} [variant="default"] - Alert 스타일 변형
6
+ * @property {string} [title] - Alert 제목
7
+ * @property {string} [description] - Alert 설명
8
+ * @property {React.ReactNode} [icon] - 커스텀 아이콘
9
+ * @property {React.ReactNode} [action] - 액션 버튼/요소
10
+ * @property {boolean} [closable=false] - 닫기 버튼 표시 여부
11
+ * @property {() => void} [onClose] - 닫기 버튼 클릭 시 호출되는 콜백
12
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
13
+ */
2
14
  export interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
3
15
  variant?: "default" | "success" | "warning" | "error" | "info";
4
16
  title?: string;
@@ -8,6 +20,43 @@ export interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
8
20
  closable?: boolean;
9
21
  onClose?: () => void;
10
22
  }
23
+ /**
24
+ * Alert 컴포넌트 / Alert component
25
+ *
26
+ * 사용자에게 중요한 정보나 경고를 표시하는 컴포넌트입니다.
27
+ * 다양한 변형(variant)을 지원하며, 아이콘, 제목, 설명, 액션 버튼을 포함할 수 있습니다.
28
+ *
29
+ * Component for displaying important information or warnings to users.
30
+ * Supports various variants and can include icons, titles, descriptions, and action buttons.
31
+ *
32
+ * @component
33
+ * @example
34
+ * // 기본 사용 / Basic usage
35
+ * <Alert variant="info" title="정보" description="이것은 정보 메시지입니다." />
36
+ *
37
+ * @example
38
+ * // 닫기 버튼 포함 / With close button
39
+ * <Alert
40
+ * variant="warning"
41
+ * title="경고"
42
+ * closable
43
+ * onClose={() => console.log('닫기')}
44
+ * />
45
+ *
46
+ * @example
47
+ * // 커스텀 아이콘과 액션 / Custom icon and action
48
+ * <Alert
49
+ * variant="success"
50
+ * icon={<Icon name="check" />}
51
+ * action={<Button size="sm">확인</Button>}
52
+ * >
53
+ * 작업이 완료되었습니다.
54
+ * </Alert>
55
+ *
56
+ * @param {AlertProps} props - Alert 컴포넌트의 props / Alert component props
57
+ * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
58
+ * @returns {JSX.Element} Alert 컴포넌트 / Alert component
59
+ */
11
60
  declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
12
61
  export declare const AlertSuccess: React.ForwardRefExoticComponent<Omit<AlertProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
13
62
  export declare const AlertWarning: React.ForwardRefExoticComponent<Omit<AlertProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../src/components/Alert.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,QAAA,MAAM,KAAK,mFAuIV,CAAA;AAID,eAAO,MAAM,YAAY,oGAIxB,CAAA;AAGD,eAAO,MAAM,YAAY,oGAIxB,CAAA;AAGD,eAAO,MAAM,UAAU,oGAItB,CAAA;AAGD,eAAO,MAAM,SAAS,oGAIrB,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../src/components/Alert.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,QAAA,MAAM,KAAK,mFAuIV,CAAA;AAID,eAAO,MAAM,YAAY,oGAIxB,CAAA;AAGD,eAAO,MAAM,YAAY,oGAIxB,CAAA;AAGD,eAAO,MAAM,UAAU,oGAItB,CAAA;AAGD,eAAO,MAAM,SAAS,oGAIrB,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,88 @@
1
+ import React from "react";
2
+ /**
3
+ * Autocomplete 옵션 인터페이스 / Autocomplete option interface
4
+ * @typedef {Object} AutocompleteOption
5
+ * @property {string} value - 옵션 값 / Option value
6
+ * @property {string} label - 옵션 라벨 / Option label
7
+ * @property {string} [description] - 옵션 설명 / Option description
8
+ * @property {React.ReactNode} [icon] - 옵션 아이콘 / Option icon
9
+ * @property {Record<string, unknown>} [data] - 추가 데이터 / Additional data
10
+ */
11
+ export interface AutocompleteOption {
12
+ value: string;
13
+ label: string;
14
+ description?: string;
15
+ icon?: React.ReactNode;
16
+ data?: Record<string, unknown>;
17
+ }
18
+ /**
19
+ * Autocomplete 컴포넌트의 props / Autocomplete component props
20
+ * @typedef {Object} AutocompleteProps
21
+ * @property {AutocompleteOption[]} options - 옵션 목록 / Options list
22
+ * @property {string} [value] - 선택된 값 / Selected value
23
+ * @property {(value: string, option?: AutocompleteOption) => void} [onChange] - 값 변경 핸들러 / Value change handler
24
+ * @property {string} [placeholder="검색하거나 선택하세요"] - 플레이스홀더 / Placeholder
25
+ * @property {boolean} [disabled=false] - 비활성화 상태 / Disabled state
26
+ * @property {boolean} [error=false] - 에러 상태 / Error state
27
+ * @property {boolean} [loading=false] - 로딩 상태 / Loading state
28
+ * @property {number} [maxHeight=300] - 드롭다운 최대 높이 (px) / Dropdown max height in px
29
+ * @property {boolean} [clearable=true] - 지우기 버튼 표시 / Show clear button
30
+ * @property {boolean} [filterable=true] - 필터링 활성화 / Enable filtering
31
+ * @property {(query: string) => AutocompleteOption[] | Promise<AutocompleteOption[]>} [onSearch] - 검색 핸들러 (비동기 지원) / Search handler (async support)
32
+ * @property {React.ReactNode} [emptyText="결과가 없습니다"] - 빈 결과 텍스트 / Empty result text
33
+ * @property {"sm" | "md" | "lg"} [size="md"] - 크기 / Size
34
+ * @property {string} [className] - 추가 클래스명 / Additional class name
35
+ * @extends {Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>}
36
+ */
37
+ export interface AutocompleteProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
38
+ options: AutocompleteOption[];
39
+ value?: string;
40
+ onChange?: (value: string, option?: AutocompleteOption) => void;
41
+ placeholder?: string;
42
+ disabled?: boolean;
43
+ error?: boolean;
44
+ loading?: boolean;
45
+ maxHeight?: number;
46
+ clearable?: boolean;
47
+ filterable?: boolean;
48
+ onSearch?: (query: string) => AutocompleteOption[] | Promise<AutocompleteOption[]>;
49
+ emptyText?: string;
50
+ size?: "sm" | "md" | "lg";
51
+ className?: string;
52
+ }
53
+ /**
54
+ * Autocomplete 컴포넌트 / Autocomplete component
55
+ *
56
+ * 자동완성 입력 컴포넌트입니다.
57
+ * 입력하면서 옵션을 필터링하고 선택할 수 있습니다.
58
+ *
59
+ * Autocomplete input component.
60
+ * Filters and selects options as you type.
61
+ *
62
+ * @component
63
+ * @example
64
+ * // 기본 사용 / Basic usage
65
+ * <Autocomplete
66
+ * options={[
67
+ * { value: "1", label: "옵션 1" },
68
+ * { value: "2", label: "옵션 2" }
69
+ * ]}
70
+ * onChange={(value) => console.log(value)}
71
+ * />
72
+ *
73
+ * @example
74
+ * // 비동기 검색 / Async search
75
+ * <Autocomplete
76
+ * options={options}
77
+ * onSearch={async (query) => {
78
+ * const results = await searchAPI(query)
79
+ * return results
80
+ * }}
81
+ * loading={isLoading}
82
+ * />
83
+ *
84
+ * @param {AutocompleteProps} props - Autocomplete 컴포넌트의 props / Autocomplete component props
85
+ * @returns {JSX.Element} Autocomplete 컴포넌트 / Autocomplete component
86
+ */
87
+ export declare const Autocomplete: React.ForwardRefExoticComponent<AutocompleteProps & React.RefAttributes<HTMLDivElement>>;
88
+ //# sourceMappingURL=Autocomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../src/components/Autocomplete.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC/F,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,YAAY,0FAqQxB,CAAA"}
@@ -1,13 +1,83 @@
1
- import * as React from "react";
1
+ import React from "react";
2
+ /**
3
+ * Avatar 컴포넌트의 props / Avatar component props
4
+ * @typedef {Object} AvatarProps
5
+ * @property {"sm" | "md" | "lg"} [size="md"] - 아바타 크기 / Avatar size
6
+ * @property {"default" | "glass"} [variant="default"] - 아바타 스타일 변형 / Avatar style variant
7
+ * @property {string} [src] - 이미지 URL / Image URL
8
+ * @property {string} [alt] - 이미지 대체 텍스트 / Image alt text
9
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
10
+ */
2
11
  export interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
3
12
  size?: "sm" | "md" | "lg";
13
+ variant?: "default" | "glass";
14
+ src?: string;
15
+ alt?: string;
4
16
  }
17
+ /**
18
+ * AvatarImage 컴포넌트의 props
19
+ * @typedef {Object} AvatarImageProps
20
+ * @extends {React.ImgHTMLAttributes<HTMLImageElement>}
21
+ */
5
22
  export interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {
6
23
  }
24
+ /**
25
+ * AvatarFallback 컴포넌트의 props
26
+ * @typedef {Object} AvatarFallbackProps
27
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
28
+ */
7
29
  export interface AvatarFallbackProps extends React.HTMLAttributes<HTMLDivElement> {
8
30
  }
31
+ /**
32
+ * Avatar 컴포넌트 / Avatar component
33
+ *
34
+ * 사용자 프로필 이미지를 표시하는 컴포넌트입니다.
35
+ * 이미지가 없을 경우 대체 텍스트나 초기 문자를 표시합니다.
36
+ *
37
+ * Component for displaying user profile images.
38
+ * Shows fallback text or initials when image is not available.
39
+ *
40
+ * @component
41
+ * @example
42
+ * // 기본 사용 (이미지) / Basic usage (with image)
43
+ * <Avatar src="/user.jpg" alt="사용자" />
44
+ *
45
+ * @example
46
+ * // 대체 텍스트 / Fallback text
47
+ * <Avatar alt="홍길동">홍</Avatar>
48
+ *
49
+ * @example
50
+ * // Glass 스타일 / Glass style
51
+ * <Avatar variant="glass" size="lg" src="/user.jpg" alt="사용자" />
52
+ *
53
+ * @param {AvatarProps} props - Avatar 컴포넌트의 props / Avatar component props
54
+ * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
55
+ * @returns {JSX.Element} Avatar 컴포넌트 / Avatar component
56
+ */
9
57
  declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
58
+ /**
59
+ * AvatarImage 컴포넌트 / AvatarImage component
60
+ *
61
+ * 아바타 이미지를 표시하는 컴포넌트입니다.
62
+ * Displays the avatar image.
63
+ *
64
+ * @component
65
+ * @param {AvatarImageProps} props - AvatarImage 컴포넌트의 props / AvatarImage component props
66
+ * @param {React.Ref<HTMLImageElement>} ref - img 요소 ref / img element ref
67
+ * @returns {JSX.Element} AvatarImage 컴포넌트 / AvatarImage component
68
+ */
10
69
  declare const AvatarImage: React.ForwardRefExoticComponent<AvatarImageProps & React.RefAttributes<HTMLImageElement>>;
70
+ /**
71
+ * AvatarFallback 컴포넌트 / AvatarFallback component
72
+ *
73
+ * 아바타 이미지가 없을 때 표시되는 대체 컴포넌트입니다.
74
+ * Fallback component displayed when avatar image is not available.
75
+ *
76
+ * @component
77
+ * @param {AvatarFallbackProps} props - AvatarFallback 컴포넌트의 props / AvatarFallback component props
78
+ * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
79
+ * @returns {JSX.Element} AvatarFallback 컴포넌트 / AvatarFallback component
80
+ */
11
81
  declare const AvatarFallback: React.ForwardRefExoticComponent<AvatarFallbackProps & React.RefAttributes<HTMLDivElement>>;
12
82
  export { Avatar, AvatarImage, AvatarFallback };
13
83
  //# sourceMappingURL=Avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/components/Avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACvE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;CAAG;AAEtF,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEpF,QAAA,MAAM,MAAM,oFAoBX,CAAA;AAGD,QAAA,MAAM,WAAW,2FAQhB,CAAA;AAGD,QAAA,MAAM,cAAc,4FAWnB,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/components/Avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACvE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;CAAG;AAEtF;;;;GAIG;AACH,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,QAAA,MAAM,MAAM,oFAkCX,CAAA;AAGD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,WAAW,2FAQhB,CAAA;AAGD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,cAAc,4FAWnB,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA"}