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

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 +897 -210
  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-627HOIRV.mjs +2 -0
  25. package/dist/chunk-627HOIRV.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-E5PN4LUS.mjs +2 -0
  29. package/dist/chunk-E5PN4LUS.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-MXGXBG63.mjs +2 -0
  33. package/dist/chunk-MXGXBG63.mjs.map +1 -0
  34. package/dist/chunk-R5KCFRYV.mjs +2 -0
  35. package/dist/chunk-R5KCFRYV.mjs.map +1 -0
  36. package/dist/chunk-UGSYQDR4.mjs +2 -0
  37. package/dist/chunk-UGSYQDR4.mjs.map +1 -0
  38. package/dist/chunk-UUHAXGMO.mjs +2 -0
  39. package/dist/chunk-UUHAXGMO.mjs.map +1 -0
  40. package/dist/chunk-VU264VFN.mjs +2 -0
  41. package/dist/chunk-VU264VFN.mjs.map +1 -0
  42. package/dist/chunk-ZFS4B5QT.mjs +2 -0
  43. package/dist/chunk-ZFS4B5QT.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 +559 -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 +92 -25
  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
package/README.md CHANGED
@@ -1,35 +1,33 @@
1
- # @hua-labs/ui 🎨
1
+ # @hua-labs/ui
2
2
 
3
- **HUA Labs의 모던 React UI 컴포넌트 라이브러리**
3
+ Modern React UI component library with 70+ production-ready components.
4
+ 70개 이상의 프로덕션 준비 완료 React UI 컴포넌트 라이브러리.
4
5
 
5
- Beautiful, accessible, and customizable components for React applications.
6
+ [![npm version](https://img.shields.io/npm/v/@hua-labs/ui.svg)](https://www.npmjs.com/package/@hua-labs/ui)
7
+ [![license](https://img.shields.io/npm/l/@hua-labs/ui.svg)](https://github.com/HUA-Labs/HUA-Labs-public/blob/main/LICENSE)
6
8
 
7
- ## 주요 기능
9
+ > **⚠️ Alpha Release**: This package is currently in alpha. APIs may change before the stable release.
8
10
 
9
- ### 🎯 **15개의 핵심 컴포넌트**
10
- - **기본 UI**: Accordion, BottomSheet, Drawer, ConfirmModal, ScrollArea, Icon, Breadcrumb
11
- - **테마**: ThemeProvider, ThemeToggle
12
- - **스크롤**: ScrollToTop, ScrollIndicator, ScrollProgress
13
- - **전환**: PageTransition
14
- - **감정**: ChatMessage, EmotionAnalysis, EmotionSelector
11
+ ---
15
12
 
16
- ### 🌙 **다크모드 지원**
17
- - 자동 테마 감지
18
- - 수동 테마 전환
19
- - 일관된 디자인 시스템
13
+ ## English
20
14
 
21
- ### ♿ **접근성 고려**
22
- - ARIA 속성 지원
23
- - 키보드 네비게이션
24
- - 스크린 리더 호환
15
+ ### Overview
16
+ Accessible, TypeScript-native component library for React applications. Provides modular entry points for optimal bundle size and comprehensive dark mode support.
25
17
 
26
- ### 📱 **반응형 디자인**
27
- - 모든 디바이스에서 완벽한 경험
28
- - 모바일 우선 설계
18
+ ## Features
29
19
 
30
- ## 🚀 시작하기
20
+ - 70+ production-ready components
21
+ - Modular entry points for bundle optimization
22
+ - Full TypeScript support
23
+ - Dark mode support
24
+ - Accessible (ARIA attributes, keyboard navigation)
25
+ - Responsive design
26
+ - Tree-shaking friendly
27
+ - Zero external dependencies (except React)
28
+ - Tailwind CSS based styling
31
29
 
32
- ### 설치
30
+ ## Installation
33
31
 
34
32
  ```bash
35
33
  npm install @hua-labs/ui
@@ -39,288 +37,962 @@ yarn add @hua-labs/ui
39
37
  pnpm add @hua-labs/ui
40
38
  ```
41
39
 
42
- ### 기본 사용법
40
+ ### Peer Dependencies
41
+
42
+ ```bash
43
+ # Required
44
+ npm install react react-dom
45
+
46
+ # Optional (for Phosphor Icons support)
47
+ npm install @phosphor-icons/react
48
+ ```
49
+
50
+ ### 엔트리 포인트
51
+
52
+ HUA UI는 **Core**, **Form**, **Advanced** 엔트리로 나뉩니다. 필요한 컴포넌트만 선택적으로 import하여 번들 크기를 최적화할 수 있습니다.
53
+
54
+ | Entry | Path | 설명 |
55
+ |-------|------|------|
56
+ | Core | `@hua-labs/ui` | 버튼/레이아웃/데이터 표시 등 기본 컴포넌트와 유틸 (대부분의 일반적인 앱 개발 가능) |
57
+ | Form | `@hua-labs/ui/form` | 모든 폼 컴포넌트 (Input, Select, DatePicker, Upload, Autocomplete 등) |
58
+ | Navigation | `@hua-labs/ui/navigation` | 대규모 앱 구조에 필요한 네비게이션 (PageNavigation, PageTransition) |
59
+ | Feedback | `@hua-labs/ui/feedback` | 글로벌 상태 관리가 필요한 Toast (ToastProvider, useToast) |
60
+ | Advanced (all) | `@hua-labs/ui/advanced` | 대시보드 위젯 + 고급 모션 전체 |
61
+ | Dashboard widgets | `@hua-labs/ui/advanced/dashboard` | StatCard, TransactionsTable, TrendChart 등 데이터 위젯 |
62
+ | Motion/Experimental | `@hua-labs/ui/advanced/motion` | AdvancedPageTransition 등 모션/실험 기능 |
43
63
 
44
64
  ```tsx
45
- import { Accordion, ThemeProvider } from '@hua-labs/ui';
65
+ // Core 컴포넌트 (가장 자주 사용되는 컴포넌트들)
66
+ import { Button, Card, Table, Badge, Alert, Modal, Drawer } from '@hua-labs/ui';
46
67
 
47
- function App() {
48
- return (
49
- <ThemeProvider>
50
- <Accordion type="single" collapsible>
51
- <AccordionItem value="item-1">
52
- <AccordionTrigger>아코디언 제목</AccordionTrigger>
53
- <AccordionContent>
54
- 아코디언 내용입니다.
55
- </AccordionContent>
56
- </AccordionItem>
57
- </Accordion>
58
- </ThemeProvider>
59
- );
60
- }
68
+ // Form 컴포넌트만 (번들 최적화)
69
+ import { Input, Select, DatePicker, Form } from '@hua-labs/ui/form';
70
+
71
+ // Navigation 컴포넌트 (대규모 앱에서만 필요)
72
+ import { PageNavigation, PageTransition } from '@hua-labs/ui/navigation';
73
+
74
+ // Feedback 컴포넌트 (Toast - 글로벌 상태 관리)
75
+ import { ToastProvider, useToast } from '@hua-labs/ui/feedback';
76
+ import '@hua-labs/ui/styles/toast.css';
77
+
78
+ // Advanced 전체
79
+ import { StatCard, DashboardSidebar } from '@hua-labs/ui/advanced';
80
+
81
+ // 필요한 영역만 선택적으로
82
+ import { TransactionsTable } from '@hua-labs/ui/advanced/dashboard';
83
+ import { AdvancedPageTransition } from '@hua-labs/ui/advanced/motion';
61
84
  ```
62
85
 
63
- ## 📚 컴포넌트 가이드
86
+ **참고**: 서브패키지 분리 분석 문서는 [`docs/SUBPACKAGE_ANALYSIS.md`](./docs/SUBPACKAGE_ANALYSIS.md)를 참고하세요.
87
+
88
+ ## Bundle Optimization
89
+
90
+ HUA UI는 모듈 단위 번들링과 tree-shaking을 지원합니다. 필요한 컴포넌트만 선택적으로 import하여 번들 크기를 최적화할 수 있습니다.
91
+
92
+ ### 번들 최적화 전략
93
+
94
+ - **Core**: 가장 자주 사용하는 80% 컴포넌트 포함 (대부분의 일반적인 앱 개발 가능)
95
+ - **Form / Navigation / Feedback**: 필요한 경우에만 선택적으로 import
96
+ - **Advanced / Dashboard / Motion**: 대규모 앱에서만 사용하는 특수 컴포넌트
64
97
 
65
- ### Accordion (아코디언)
98
+ ### 사용 예시
99
+
100
+ #### Next.js (Turbopack)
66
101
 
67
102
  ```tsx
68
- import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@hua-labs/ui';
103
+ // 권장: 필요한 서브패키지만 import (tree-shaking 자동 적용)
104
+ import { Input, Select, DatePicker } from '@hua-labs/ui/form';
105
+ import { PageTransition } from '@hua-labs/ui/navigation';
106
+ import { ToastProvider, useToast } from '@hua-labs/ui/feedback';
69
107
 
70
- <Accordion type="single" collapsible>
71
- <AccordionItem value="item-1">
72
- <AccordionTrigger>첫 번째 항목</AccordionTrigger>
73
- <AccordionContent>첫 번째 항목의 내용</AccordionContent>
74
- </AccordionItem>
75
- <AccordionItem value="item-2">
76
- <AccordionTrigger>두 번째 항목</AccordionTrigger>
77
- <AccordionContent>두 번째 항목의 내용</AccordionContent>
78
- </AccordionItem>
79
- </Accordion>
108
+ // Core 전체를 불러오지 않으므로 번들 크기 최적화
80
109
  ```
81
110
 
82
- ### ThemeProvider & ThemeToggle
111
+ #### Vite / Webpack
83
112
 
84
113
  ```tsx
85
- import { ThemeProvider, ThemeToggle } from '@hua-labs/ui';
114
+ // 권장: 서브패키지 사용
115
+ import { Input } from '@hua-labs/ui/form';
116
+ import { PageTransition } from '@hua-labs/ui/navigation';
117
+
118
+ // 비권장: Core에서 모든 컴포넌트 import (번들 크기 증가)
119
+ import { Input, PageTransition, ToastProvider } from '@hua-labs/ui';
120
+ ```
121
+
122
+ ### Tree-shaking
123
+
124
+ 모든 엔트리 포인트는 ESM 형식으로 제공되며, 최신 번들러(Next.js Turbopack, Vite, Webpack 5+)에서 tree-shaking이 자동으로 적용됩니다.
125
+
126
+ **최적화 팁**:
127
+ - 필요한 컴포넌트만 import
128
+ - 서브패키지 활용 (Form, Navigation, Feedback)
129
+ - Advanced 컴포넌트는 실제로 사용할 때만 import
130
+
131
+ **참고**: Core에서도 모든 컴포넌트를 import할 수 있습니다 (하위 호환성). 서브패키지는 번들 크기 최적화를 위한 선택사항입니다. Next.js + Turbopack 환경에서 tree-shaking이 자동 적용됩니다.
132
+
133
+ ## Quick Start
134
+
135
+ ```tsx
136
+ import { Button, Input, Card, ThemeProvider } from '@hua-labs/ui';
86
137
 
87
138
  function App() {
88
139
  return (
89
140
  <ThemeProvider>
90
141
  <div>
91
- <ThemeToggle />
92
- {/* 다른 컴포넌트들 */}
142
+ <Button>Click me</Button>
143
+ <Input placeholder="Enter text" />
144
+ <Card>
145
+ <CardHeader>
146
+ <CardTitle>Card Title</CardTitle>
147
+ </CardHeader>
148
+ <CardContent>
149
+ Card content
150
+ </CardContent>
151
+ </Card>
93
152
  </div>
94
153
  </ThemeProvider>
95
154
  );
96
155
  }
97
156
  ```
98
157
 
99
- ### BottomSheet (바텀시트)
158
+ ### CSS 스타일 import (Toast 컴포넌트 사용 시)
159
+
160
+ Toast 컴포넌트의 애니메이션을 사용하려면 CSS 파일을 import해야 합니다:
161
+
162
+ ```css
163
+ /* globals.css 또는 메인 CSS 파일에 추가 */
164
+ @import '@hua-labs/ui/styles/toast.css';
165
+ ```
166
+
167
+ 또는 JavaScript/TypeScript에서:
100
168
 
101
169
  ```tsx
102
- import { BottomSheet } from '@hua-labs/ui';
170
+ // app/layout.tsx 또는 _app.tsx
171
+ import '@hua-labs/ui/styles/toast.css';
172
+ ```
103
173
 
104
- function MyComponent() {
105
- const [isOpen, setIsOpen] = useState(false);
174
+ ## Core Components
106
175
 
107
- return (
108
- <BottomSheet
109
- isOpen={isOpen}
110
- onClose={() => setIsOpen(false)}
111
- >
112
- <div className="p-6">
113
- <h2>바텀시트 제목</h2>
114
- <p>바텀시트 내용입니다.</p>
115
- </div>
116
- </BottomSheet>
117
- );
118
- }
176
+ ### Basic UI
177
+
178
+ #### Button
179
+
180
+ ```tsx
181
+ import { Button } from '@hua-labs/ui';
182
+
183
+ <Button>Default</Button>
184
+ <Button variant="outline">Outline</Button>
185
+ <Button variant="ghost">Ghost</Button>
186
+ <Button variant="destructive">Destructive</Button>
187
+ <Button variant="gradient">Gradient</Button>
188
+ <Button variant="neon">Neon</Button>
189
+ <Button variant="glass">Glass</Button>
190
+ <Button size="sm">Small</Button>
191
+ <Button size="md">Medium</Button>
192
+ <Button size="lg">Large</Button>
193
+ <Button loading>Loading</Button>
194
+ <Button disabled>Disabled</Button>
195
+ <Button fullWidth>Full Width</Button>
119
196
  ```
120
197
 
121
- ## 🎨 테마 커스터마이징
198
+ #### Action
122
199
 
123
- ### CSS 변수 사용
200
+ Advanced button component with additional effects and styles.
124
201
 
125
- ```css
126
- :root {
127
- --hua-primary: #3b82f6;
128
- --hua-secondary: #64748b;
129
- --hua-accent: #f59e0b;
130
- --hua-background: #ffffff;
131
- --hua-foreground: #0f172a;
132
- }
202
+ ```tsx
203
+ import { Action } from '@hua-labs/ui';
204
+
205
+ <Action actionType="primary">Primary Action</Action>
206
+ <Action actionType="secondary">Secondary Action</Action>
207
+ <Action actionType="magical">Magical</Action>
208
+ <Action actionType="cyberpunk">Cyberpunk</Action>
209
+ <Action feedback="ripple">Ripple Effect</Action>
210
+ <Action feedback="particle">Particle Effect</Action>
211
+ <Action particleEffect rippleEffect>Multiple Effects</Action>
212
+ ```
133
213
 
134
- [data-theme="dark"] {
135
- --hua-background: #0f172a;
136
- --hua-foreground: #f8fafc;
137
- }
214
+ #### Input
215
+
216
+ ```tsx
217
+ import { Input } from '@hua-labs/ui';
218
+
219
+ <Input placeholder="Enter text" />
220
+ <Input type="password" />
221
+ <Input disabled />
222
+ <Input error="Error message" />
138
223
  ```
139
224
 
140
- ## 🔧 개발
225
+ #### Icon
141
226
 
142
- ### 빌드
227
+ ```tsx
228
+ import { Icon } from '@hua-labs/ui';
143
229
 
144
- ```bash
145
- pnpm build
230
+ <Icon name="heart" />
231
+ <Icon name="star" size="lg" />
232
+ <Icon name="user" className="text-blue-500" />
146
233
  ```
147
234
 
148
- ### 개발 모드
235
+ Supports Lucide React icons and optional Phosphor Icons.
149
236
 
150
- ```bash
151
- pnpm dev
237
+ #### Avatar
238
+
239
+ ```tsx
240
+ import { Avatar, AvatarImage, AvatarFallback } from '@hua-labs/ui';
241
+
242
+ <Avatar>
243
+ <AvatarImage src="/avatar.jpg" alt="User" />
244
+ <AvatarFallback>JD</AvatarFallback>
245
+ </Avatar>
152
246
  ```
153
247
 
154
- ### 타입 체크
248
+ ### Layout Components
155
249
 
156
- ```bash
157
- pnpm type-check
250
+ #### Card
251
+
252
+ ```tsx
253
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from '@hua-labs/ui';
254
+
255
+ <Card>
256
+ <CardHeader>
257
+ <CardTitle>Card Title</CardTitle>
258
+ <CardDescription>Card description</CardDescription>
259
+ </CardHeader>
260
+ <CardContent>
261
+ Card content
262
+ </CardContent>
263
+ <CardFooter>
264
+ Footer content
265
+ </CardFooter>
266
+ </Card>
158
267
  ```
159
268
 
160
- ## 📄 라이선스
269
+ #### Panel
161
270
 
162
- MIT License - 자유롭게 사용하세요!
271
+ Advanced card component with more styling options.
163
272
 
164
- ## 🤝 기여하기
273
+ ```tsx
274
+ import { Panel } from '@hua-labs/ui';
275
+
276
+ <Panel style="elevated" padding="large">
277
+ Elevated panel
278
+ </Panel>
279
+ <Panel style="outline" padding="medium">
280
+ Outline panel
281
+ </Panel>
282
+ ```
165
283
 
166
- 1. **Fork** 프로젝트
167
- 2. **Feature branch** 생성 (`git checkout -b feature/amazing-feature`)
168
- 3. **Commit** 변경사항 (`git commit -m 'Add amazing feature'`)
169
- 4. **Push** 브랜치 (`git push origin feature/amazing-feature`)
170
- 5. **Pull Request** 생성
284
+ #### Container
171
285
 
172
- ## 🔗 관련 링크
286
+ ```tsx
287
+ import { Container } from '@hua-labs/ui';
173
288
 
174
- - [HUA Labs 공식 사이트](https://hua-labs.com)
175
- - [UI 컴포넌트 갤러리](https://ui.hua-labs.com)
176
- - [GitHub 저장소](https://github.com/HUA-Labs/HUA-Labs-public)
289
+ <Container size="sm">Small container</Container>
290
+ <Container size="md">Medium container</Container>
291
+ <Container size="lg">Large container</Container>
292
+ <Container size="xl">Extra large container</Container>
293
+ ```
177
294
 
178
- ---
295
+ #### Grid
179
296
 
180
- **HUA Labs**에서 제작되었습니다. 🚀
297
+ ```tsx
298
+ import { Grid } from '@hua-labs/ui';
181
299
 
182
- ---
300
+ <Grid cols={3} gap={4}>
301
+ <div>Item 1</div>
302
+ <div>Item 2</div>
303
+ <div>Item 3</div>
304
+ </Grid>
305
+ ```
183
306
 
184
- # @hua-labs/ui 🎨
307
+ #### Stack
185
308
 
186
- **HUA Labs' Modern React UI Component Library**
309
+ ```tsx
310
+ import { Stack } from '@hua-labs/ui';
187
311
 
188
- Beautiful, accessible, and customizable components for React applications.
312
+ <Stack direction="vertical" gap={4}>
313
+ <div>Item 1</div>
314
+ <div>Item 2</div>
315
+ </Stack>
316
+ ```
189
317
 
190
- ## Key Features
318
+ ### Navigation Components
191
319
 
192
- ### 🎯 **15 Core Components**
193
- - **Basic UI**: Accordion, BottomSheet, Drawer, ConfirmModal, ScrollArea, Icon, Breadcrumb
194
- - **Theme**: ThemeProvider, ThemeToggle
195
- - **Scroll**: ScrollToTop, ScrollIndicator, ScrollProgress
196
- - **Transition**: PageTransition
197
- - **Emotion**: ChatMessage, EmotionAnalysis, EmotionSelector
320
+ #### Navigation
198
321
 
199
- ### 🌙 **Dark Mode Support**
200
- - Automatic theme detection
201
- - Manual theme switching
202
- - Consistent design system
322
+ ```tsx
323
+ import { Navigation, NavigationList, NavigationItem, NavigationContent } from '@hua-labs/ui';
324
+
325
+ <Navigation defaultValue="tab1">
326
+ <NavigationList>
327
+ <NavigationItem value="tab1">Tab 1</NavigationItem>
328
+ <NavigationItem value="tab2">Tab 2</NavigationItem>
329
+ </NavigationList>
330
+ <NavigationContent value="tab1">Tab 1 content</NavigationContent>
331
+ <NavigationContent value="tab2">Tab 2 content</NavigationContent>
332
+ </Navigation>
333
+ ```
203
334
 
204
- ### ♿ **Accessibility**
205
- - ARIA attributes support
206
- - Keyboard navigation
207
- - Screen reader compatibility
335
+ #### Tabs
208
336
 
209
- ### 📱 **Responsive Design**
210
- - Perfect experience on all devices
211
- - Mobile-first design
337
+ ```tsx
338
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from '@hua-labs/ui';
339
+
340
+ <Tabs defaultValue="tab1">
341
+ <TabsList>
342
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
343
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
344
+ </TabsList>
345
+ <TabsContent value="tab1">Tab 1 content</TabsContent>
346
+ <TabsContent value="tab2">Tab 2 content</TabsContent>
347
+ </Tabs>
348
+ ```
212
349
 
213
- ## 🚀 Getting Started
350
+ #### Breadcrumb
214
351
 
215
- ### Installation
352
+ ```tsx
353
+ import { Breadcrumb, BreadcrumbItem } from '@hua-labs/ui';
216
354
 
217
- ```bash
218
- npm install @hua-labs/ui
219
- # or
220
- yarn add @hua-labs/ui
221
- # or
222
- pnpm add @hua-labs/ui
355
+ <Breadcrumb>
356
+ <BreadcrumbItem href="/">Home</BreadcrumbItem>
357
+ <BreadcrumbItem href="/products">Products</BreadcrumbItem>
358
+ <BreadcrumbItem>Current</BreadcrumbItem>
359
+ </Breadcrumb>
360
+ ```
361
+
362
+ #### Pagination
363
+
364
+ ```tsx
365
+ import { Pagination, PaginationWithInfo } from '@hua-labs/ui';
366
+
367
+ <Pagination
368
+ currentPage={1}
369
+ totalPages={10}
370
+ onPageChange={(page) => console.log(page)}
371
+ />
372
+
373
+ <PaginationWithInfo
374
+ currentPage={1}
375
+ totalPages={10}
376
+ totalItems={100}
377
+ itemsPerPage={10}
378
+ onPageChange={(page) => console.log(page)}
379
+ />
380
+ ```
381
+
382
+ ### Form Components
383
+
384
+ #### Form
385
+
386
+ ```tsx
387
+ import { Form, FormField, FormGroup } from '@hua-labs/ui';
388
+
389
+ <Form onSubmit={handleSubmit}>
390
+ <FormGroup>
391
+ <FormField label="Name" required>
392
+ <Input name="name" />
393
+ </FormField>
394
+ <FormField label="Email" required>
395
+ <Input type="email" name="email" />
396
+ </FormField>
397
+ </FormGroup>
398
+ </Form>
399
+ ```
400
+
401
+ #### Select
402
+
403
+ ```tsx
404
+ import { Select, SelectOption } from '@hua-labs/ui';
405
+
406
+ <Select value={value} onValueChange={setValue}>
407
+ <SelectOption value="option1">Option 1</SelectOption>
408
+ <SelectOption value="option2">Option 2</SelectOption>
409
+ </Select>
410
+ ```
411
+
412
+ #### Checkbox
413
+
414
+ ```tsx
415
+ import { Checkbox } from '@hua-labs/ui';
416
+
417
+ <Checkbox checked={checked} onCheckedChange={setChecked}>
418
+ Accept terms
419
+ </Checkbox>
420
+ ```
421
+
422
+ #### Radio
423
+
424
+ ```tsx
425
+ import { Radio } from '@hua-labs/ui';
426
+
427
+ <Radio value="option1" checked={value === "option1"} onChange={handleChange}>
428
+ Option 1
429
+ </Radio>
430
+ ```
431
+
432
+ #### Switch
433
+
434
+ ```tsx
435
+ import { Switch } from '@hua-labs/ui';
436
+
437
+ <Switch checked={enabled} onCheckedChange={setEnabled} />
438
+ ```
439
+
440
+ #### Textarea
441
+
442
+ ```tsx
443
+ import { Textarea } from '@hua-labs/ui';
444
+
445
+ <Textarea placeholder="Enter text" rows={4} />
223
446
  ```
224
447
 
225
- ### Basic Usage
448
+ #### Slider
226
449
 
227
450
  ```tsx
228
- import { Accordion, ThemeProvider } from '@hua-labs/ui';
451
+ import { Slider } from '@hua-labs/ui';
452
+
453
+ <Slider
454
+ value={value}
455
+ onValueChange={setValue}
456
+ min={0}
457
+ max={100}
458
+ step={1}
459
+ />
460
+ ```
461
+
462
+ ### Feedback Components
463
+
464
+ #### Alert
465
+
466
+ ```tsx
467
+ import { Alert, AlertSuccess, AlertWarning, AlertError, AlertInfo } from '@hua-labs/ui';
468
+
469
+ <Alert>Default alert</Alert>
470
+ <AlertSuccess>Success message</AlertSuccess>
471
+ <AlertWarning>Warning message</AlertWarning>
472
+ <AlertError>Error message</AlertError>
473
+ <AlertInfo>Info message</AlertInfo>
474
+ ```
475
+
476
+ #### Toast
477
+
478
+ ```tsx
479
+ import { ToastProvider, useToast } from '@hua-labs/ui';
229
480
 
230
481
  function App() {
231
482
  return (
232
- <ThemeProvider>
233
- <Accordion type="single" collapsible>
234
- <AccordionItem value="item-1">
235
- <AccordionTrigger>Accordion Title</AccordionTrigger>
236
- <AccordionContent>
237
- Accordion content here.
238
- </AccordionContent>
239
- </AccordionItem>
240
- </Accordion>
241
- </ThemeProvider>
483
+ <ToastProvider>
484
+ <YourApp />
485
+ </ToastProvider>
242
486
  );
243
487
  }
488
+
489
+ function Component() {
490
+ const { addToast } = useToast();
491
+
492
+ const handleClick = () => {
493
+ addToast({
494
+ title: "Success",
495
+ description: "Operation completed",
496
+ variant: "success"
497
+ });
498
+ };
499
+
500
+ return <Button onClick={handleClick}>Show Toast</Button>;
501
+ }
502
+ ```
503
+
504
+ #### LoadingSpinner
505
+
506
+ ```tsx
507
+ import { LoadingSpinner } from '@hua-labs/ui';
508
+
509
+ <LoadingSpinner />
510
+ <LoadingSpinner size="sm" />
511
+ <LoadingSpinner size="lg" />
512
+ <LoadingSpinner color="primary" />
244
513
  ```
245
514
 
246
- ## 📚 Component Guide
515
+ #### Tooltip
247
516
 
248
- ### Accordion
517
+ ```tsx
518
+ import { Tooltip, TooltipLight, TooltipDark } from '@hua-labs/ui';
519
+
520
+ <Tooltip content="Tooltip text">
521
+ <Button>Hover me</Button>
522
+ </Tooltip>
523
+ ```
524
+
525
+ ### Overlay Components
526
+
527
+ #### Modal
528
+
529
+ ```tsx
530
+ import { Modal } from '@hua-labs/ui';
531
+
532
+ <Modal isOpen={isOpen} onClose={() => setIsOpen(false)}>
533
+ <div className="p-6">
534
+ <h2>Modal Title</h2>
535
+ <p>Modal content</p>
536
+ </div>
537
+ </Modal>
538
+ ```
539
+
540
+ #### ConfirmModal
541
+
542
+ ```tsx
543
+ import { ConfirmModal } from '@hua-labs/ui';
544
+
545
+ <ConfirmModal
546
+ isOpen={isOpen}
547
+ onClose={() => setIsOpen(false)}
548
+ onConfirm={handleConfirm}
549
+ title="Confirm Action"
550
+ description="Are you sure you want to proceed?"
551
+ />
552
+ ```
553
+
554
+ #### Drawer
555
+
556
+ ```tsx
557
+ import { Drawer, DrawerHeader, DrawerContent, DrawerFooter } from '@hua-labs/ui';
558
+
559
+ <Drawer isOpen={isOpen} onClose={() => setIsOpen(false)}>
560
+ <DrawerHeader>Drawer Title</DrawerHeader>
561
+ <DrawerContent>
562
+ Drawer content
563
+ </DrawerContent>
564
+ <DrawerFooter>
565
+ Footer actions
566
+ </DrawerFooter>
567
+ </Drawer>
568
+ ```
569
+
570
+ #### BottomSheet
571
+
572
+ ```tsx
573
+ import { BottomSheet } from '@hua-labs/ui';
574
+
575
+ <BottomSheet isOpen={isOpen} onClose={() => setIsOpen(false)}>
576
+ <div className="p-6">
577
+ <h2>Bottom Sheet Title</h2>
578
+ <p>Bottom sheet content</p>
579
+ </div>
580
+ </BottomSheet>
581
+ ```
582
+
583
+ #### Popover
584
+
585
+ ```tsx
586
+ import { Popover, PopoverTrigger, PopoverContent } from '@hua-labs/ui';
587
+
588
+ <Popover>
589
+ <PopoverTrigger>
590
+ <Button>Open Popover</Button>
591
+ </PopoverTrigger>
592
+ <PopoverContent>
593
+ Popover content
594
+ </PopoverContent>
595
+ </Popover>
596
+ ```
597
+
598
+ #### Dropdown
599
+
600
+ ```tsx
601
+ import { Dropdown, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel, DropdownGroup } from '@hua-labs/ui';
602
+
603
+ <Dropdown>
604
+ <DropdownMenu>
605
+ <DropdownLabel>My Account</DropdownLabel>
606
+ <DropdownSeparator />
607
+ <DropdownGroup>
608
+ <DropdownItem>Profile</DropdownItem>
609
+ <DropdownItem>Settings</DropdownItem>
610
+ </DropdownGroup>
611
+ <DropdownSeparator />
612
+ <DropdownItem>Logout</DropdownItem>
613
+ </DropdownMenu>
614
+ </Dropdown>
615
+ ```
616
+
617
+ ### Data Display Components
618
+
619
+ #### Table
620
+
621
+ ```tsx
622
+ import { Table, TableHeader, TableBody, TableHead, TableRow, TableCell, TableCaption } from '@hua-labs/ui';
623
+
624
+ <Table>
625
+ <TableCaption>Table caption</TableCaption>
626
+ <TableHeader>
627
+ <TableRow>
628
+ <TableHead>Name</TableHead>
629
+ <TableHead>Email</TableHead>
630
+ </TableRow>
631
+ </TableHeader>
632
+ <TableBody>
633
+ <TableRow>
634
+ <TableCell>John Doe</TableCell>
635
+ <TableCell>john@example.com</TableCell>
636
+ </TableRow>
637
+ </TableBody>
638
+ </Table>
639
+ ```
640
+
641
+ #### Badge
642
+
643
+ ```tsx
644
+ import { Badge } from '@hua-labs/ui';
645
+
646
+ <Badge>Default</Badge>
647
+ <Badge variant="success">Success</Badge>
648
+ <Badge variant="warning">Warning</Badge>
649
+ <Badge variant="error">Error</Badge>
650
+ <Badge variant="info">Info</Badge>
651
+ ```
652
+
653
+ #### Progress
654
+
655
+ ```tsx
656
+ import { Progress, ProgressSuccess, ProgressWarning, ProgressError, ProgressInfo } from '@hua-labs/ui';
657
+
658
+ <Progress value={50} />
659
+ <ProgressSuccess value={75} />
660
+ <ProgressWarning value={50} />
661
+ <ProgressError value={25} />
662
+ <ProgressInfo value={60} />
663
+ ```
664
+
665
+ #### Skeleton
666
+
667
+ ```tsx
668
+ import { Skeleton, SkeletonText, SkeletonCircle, SkeletonCard, SkeletonAvatar } from '@hua-labs/ui';
669
+
670
+ <Skeleton className="h-4 w-full" />
671
+ <SkeletonText lines={3} />
672
+ <SkeletonCircle size={40} />
673
+ <SkeletonCard />
674
+ <SkeletonAvatar />
675
+ ```
676
+
677
+ ### Interactive Components
678
+
679
+ #### Accordion
249
680
 
250
681
  ```tsx
251
682
  import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@hua-labs/ui';
252
683
 
253
684
  <Accordion type="single" collapsible>
254
685
  <AccordionItem value="item-1">
255
- <AccordionTrigger>First Item</AccordionTrigger>
256
- <AccordionContent>First item content</AccordionContent>
686
+ <AccordionTrigger>Item 1</AccordionTrigger>
687
+ <AccordionContent>Content 1</AccordionContent>
257
688
  </AccordionItem>
258
689
  <AccordionItem value="item-2">
259
- <AccordionTrigger>Second Item</AccordionTrigger>
260
- <AccordionContent>Second item content</AccordionContent>
690
+ <AccordionTrigger>Item 2</AccordionTrigger>
691
+ <AccordionContent>Content 2</AccordionContent>
261
692
  </AccordionItem>
262
693
  </Accordion>
263
694
  ```
264
695
 
265
- ### ThemeProvider & ThemeToggle
696
+ #### Menu
697
+
698
+ ```tsx
699
+ import { Menu, MenuItem, MenuSeparator, MenuLabel, MenuHorizontal, MenuVertical } from '@hua-labs/ui';
700
+
701
+ <Menu>
702
+ <MenuItem>Item 1</MenuItem>
703
+ <MenuItem>Item 2</MenuItem>
704
+ <MenuSeparator />
705
+ <MenuLabel>Label</MenuLabel>
706
+ <MenuItem>Item 3</MenuItem>
707
+ </Menu>
708
+ ```
709
+
710
+ #### Command
711
+
712
+ ```tsx
713
+ import { Command, CommandInput, CommandList, CommandItem, CommandGroup, CommandEmpty } from '@hua-labs/ui';
714
+
715
+ <Command>
716
+ <CommandInput placeholder="Search..." />
717
+ <CommandList>
718
+ <CommandEmpty>No results found.</CommandEmpty>
719
+ <CommandGroup heading="Suggestions">
720
+ <CommandItem>Calendar</CommandItem>
721
+ <CommandItem>Search Emoji</CommandItem>
722
+ </CommandGroup>
723
+ </CommandList>
724
+ </Command>
725
+ ```
726
+
727
+ ### Scroll Components
728
+
729
+ #### ScrollToTop
730
+
731
+ ```tsx
732
+ import { ScrollToTop } from '@hua-labs/ui';
733
+
734
+ <ScrollToTop
735
+ className="fixed bottom-6 right-6"
736
+ threshold={150}
737
+ />
738
+ ```
739
+
740
+ #### ScrollProgress
266
741
 
267
742
  ```tsx
268
- import { ThemeProvider, ThemeToggle } from '@hua-labs/ui';
743
+ import { ScrollProgress } from '@hua-labs/ui';
744
+
745
+ <ScrollProgress />
746
+ ```
747
+
748
+ #### ScrollIndicator
749
+
750
+ ```tsx
751
+ import { ScrollIndicator } from '@hua-labs/ui';
752
+
753
+ <ScrollIndicator />
754
+ ```
755
+
756
+ #### ScrollArea
757
+
758
+ ```tsx
759
+ import { ScrollArea } from '@hua-labs/ui';
760
+
761
+ <ScrollArea className="h-72">
762
+ <div>Scrollable content</div>
763
+ </ScrollArea>
764
+ ```
765
+
766
+ ### Theme Components
767
+
768
+ #### ThemeProvider
769
+
770
+ ```tsx
771
+ import { ThemeProvider } from '@hua-labs/ui';
269
772
 
270
773
  function App() {
271
774
  return (
272
- <ThemeProvider>
273
- <div>
274
- <ThemeToggle />
275
- {/* Other components */}
276
- </div>
775
+ <ThemeProvider
776
+ attribute="class"
777
+ defaultTheme="system"
778
+ enableSystem
779
+ >
780
+ <YourApp />
277
781
  </ThemeProvider>
278
782
  );
279
783
  }
280
784
  ```
281
785
 
282
- ### BottomSheet
786
+ #### ThemeToggle
283
787
 
284
788
  ```tsx
285
- import { BottomSheet } from '@hua-labs/ui';
789
+ import { ThemeToggle } from '@hua-labs/ui';
286
790
 
287
- function MyComponent() {
288
- const [isOpen, setIsOpen] = useState(false);
791
+ <ThemeToggle />
792
+ ```
289
793
 
290
- return (
291
- <BottomSheet
292
- isOpen={isOpen}
293
- onClose={() => setIsOpen(false)}
294
- >
295
- <div className="p-6">
296
- <h2>Bottom Sheet Title</h2>
297
- <p>Bottom sheet content here.</p>
298
- </div>
299
- </BottomSheet>
300
- );
301
- }
794
+ ### Specialized Components
795
+
796
+ #### ChatMessage
797
+
798
+ ```tsx
799
+ import { ChatMessage } from '@hua-labs/ui';
800
+
801
+ <ChatMessage
802
+ message="Hello, world!"
803
+ sender="user"
804
+ timestamp={new Date()}
805
+ />
302
806
  ```
303
807
 
304
- ## 🎨 Theme Customization
808
+ #### EmotionAnalysis
305
809
 
306
- ### Using CSS Variables
810
+ ```tsx
811
+ import { EmotionAnalysis } from '@hua-labs/ui';
307
812
 
308
- ```css
309
- :root {
310
- --hua-primary: #3b82f6;
311
- --hua-secondary: #64748b;
312
- --hua-accent: #f59e0b;
313
- --hua-background: #ffffff;
314
- --hua-foreground: #0f172a;
315
- }
813
+ <EmotionAnalysis
814
+ emotions={['joy', 'sadness', 'anger']}
815
+ intensity={[0.8, 0.3, 0.2]}
816
+ />
817
+ ```
316
818
 
317
- [data-theme="dark"] {
318
- --hua-background: #0f172a;
319
- --hua-foreground: #f8fafc;
320
- }
819
+ #### EmotionSelector
820
+
821
+ ```tsx
822
+ import { EmotionSelector } from '@hua-labs/ui';
823
+
824
+ <EmotionSelector
825
+ value={selectedEmotion}
826
+ onValueChange={setSelectedEmotion}
827
+ />
321
828
  ```
322
829
 
323
- ## 🔧 Development
830
+ #### InfoCard
831
+
832
+ ```tsx
833
+ import { InfoCard } from '@hua-labs/ui';
834
+
835
+ <InfoCard
836
+ title="Information"
837
+ description="This is an info card"
838
+ variant="info"
839
+ />
840
+ ```
841
+
842
+ #### FeatureCard
843
+
844
+ ```tsx
845
+ import { FeatureCard } from '@hua-labs/ui';
846
+
847
+ <FeatureCard
848
+ title="Feature"
849
+ description="Feature description"
850
+ icon={<Icon name="star" />}
851
+ />
852
+ ```
853
+
854
+ ### Dashboard Components
855
+
856
+ Dashboard components are available from the advanced export:
857
+
858
+ ```tsx
859
+ import {
860
+ StatCard,
861
+ QuickActionCard,
862
+ DashboardGrid,
863
+ ActivityFeed,
864
+ ProfileCard,
865
+ MembershipBadge,
866
+ MiniBarChart,
867
+ SummaryCard,
868
+ NotificationCard,
869
+ MetricCard,
870
+ ProgressCard
871
+ } from '@hua-labs/ui';
872
+ ```
873
+
874
+ Or import from the dashboard subpath:
875
+
876
+ ```tsx
877
+ import * from '@hua-labs/ui/advanced/dashboard';
878
+ ```
879
+
880
+ ### Advanced Page Transitions
881
+
882
+ Advanced page transition components are available from the advanced export:
883
+
884
+ ```tsx
885
+ import {
886
+ AdvancedPageTransition,
887
+ usePageTransition,
888
+ usePageTransitionManager
889
+ } from '@hua-labs/ui/advanced';
890
+ ```
891
+
892
+ ## Utilities
893
+
894
+ ### merge
895
+
896
+ Smart class merging utility that resolves duplicate Tailwind classes.
897
+
898
+ ```tsx
899
+ import { merge } from '@hua-labs/ui';
900
+
901
+ const className = merge("px-2 py-1", "px-4"); // "py-1 px-4"
902
+ const className2 = merge("text-red-500", "text-blue-500"); // "text-blue-500"
903
+ ```
904
+
905
+ ### mergeIf
906
+
907
+ Conditional class merging.
908
+
909
+ ```tsx
910
+ import { mergeIf } from '@hua-labs/ui';
911
+
912
+ const className = mergeIf(isActive, "bg-blue-500", "bg-gray-200");
913
+ const className2 = mergeIf(isLoading, "opacity-50 cursor-not-allowed");
914
+ ```
915
+
916
+ ### mergeMap
917
+
918
+ Object-based conditional class merging.
919
+
920
+ ```tsx
921
+ import { mergeMap } from '@hua-labs/ui';
922
+
923
+ const className = mergeMap({
924
+ "bg-blue-500": isPrimary,
925
+ "bg-gray-500": !isPrimary,
926
+ "text-white": true,
927
+ "opacity-50": isDisabled
928
+ });
929
+ ```
930
+
931
+ ### cn
932
+
933
+ Alias for `merge` (for compatibility with shadcn/ui).
934
+
935
+ ```tsx
936
+ import { cn } from '@hua-labs/ui';
937
+
938
+ const className = cn("px-2", "py-1");
939
+ ```
940
+
941
+ ### formatRelativeTime
942
+
943
+ Format a date as relative time (e.g., "방금 전", "5분 전", "2시간 전", "3일 전"). Returns absolute date for dates older than 7 days.
944
+
945
+ ```tsx
946
+ import { formatRelativeTime } from '@hua-labs/ui';
947
+
948
+ formatRelativeTime(new Date()) // "방금 전"
949
+ formatRelativeTime(new Date(Date.now() - 5 * 60000)) // "5분 전"
950
+ formatRelativeTime(new Date(Date.now() - 2 * 3600000)) // "2시간 전"
951
+ formatRelativeTime(new Date(Date.now() - 3 * 86400000)) // "3일 전"
952
+ formatRelativeTime(new Date("2024-01-01")) // "2024. 1. 1." (7일 이상 경과)
953
+ ```
954
+
955
+ ## Icon Support
956
+
957
+ The Icon component supports multiple icon libraries:
958
+
959
+ - Lucide React (default, included)
960
+ - Phosphor Icons (optional, requires `@phosphor-icons/react`)
961
+
962
+ ```tsx
963
+ import { Icon } from '@hua-labs/ui';
964
+
965
+ // Lucide icons (default)
966
+ <Icon name="heart" />
967
+ <Icon name="star" />
968
+
969
+ // Phosphor icons (if installed)
970
+ <Icon name="heart" provider="phosphor" />
971
+ ```
972
+
973
+ ## Exports
974
+
975
+ ### Main Export
976
+
977
+ ```tsx
978
+ import { Button, Input, Card } from '@hua-labs/ui';
979
+ ```
980
+
981
+ ### Advanced Exports
982
+
983
+ ```tsx
984
+ import * from '@hua-labs/ui/advanced';
985
+ import * from '@hua-labs/ui/advanced/dashboard';
986
+ import * from '@hua-labs/ui/advanced/motion';
987
+ ```
988
+
989
+ ### Style Exports
990
+
991
+ ```tsx
992
+ import '@hua-labs/ui/styles/toast.css';
993
+ ```
994
+
995
+ ## Development
324
996
 
325
997
  ### Build
326
998
 
@@ -340,24 +1012,39 @@ pnpm dev
340
1012
  pnpm type-check
341
1013
  ```
342
1014
 
343
- ## 📄 License
1015
+ ### Lint
1016
+
1017
+ ```bash
1018
+ pnpm lint
1019
+ ```
1020
+
1021
+ ### Test
344
1022
 
345
- MIT License - Feel free to use!
1023
+ ```bash
1024
+ pnpm test
1025
+ ```
346
1026
 
347
- ## 🤝 Contributing
1027
+ ## Requirements
348
1028
 
349
- 1. **Fork** the project
350
- 2. **Create** feature branch (`git checkout -b feature/amazing-feature`)
351
- 3. **Commit** changes (`git commit -m 'Add amazing feature'`)
352
- 4. **Push** branch (`git push origin feature/amazing-feature`)
353
- 5. **Create** Pull Request
1029
+ - React >= 16.8.0
1030
+ - React DOM >= 16.8.0
1031
+ - Tailwind CSS (for styling)
1032
+ - Optional: @phosphor-icons/react (for Phosphor icon support)
354
1033
 
355
- ## 🔗 Links
1034
+ ## License
356
1035
 
357
- - [HUA Labs Official Site](https://hua-labs.com)
358
- - [UI Component Gallery](https://ui.hua-labs.com)
359
- - [GitHub Repository](https://github.com/HUA-Labs/HUA-Labs-public)
1036
+ MIT License
360
1037
 
361
- ---
1038
+ ## 문서
1039
+
1040
+ - [아키텍처 문서](./docs/ARCHITECTURE.md) - 전체 아키텍처 및 설계 원칙
1041
+ - [패키지 구조](./docs/PACKAGE_STRUCTURE.md) - 디렉토리 구조 및 파일 조직
1042
+ - [개발 가이드](./docs/DEVELOPMENT_GUIDE.md) - 컴포넌트 추가 및 개발 가이드
1043
+ - [모노레포/멀티레포 호환성](./docs/MONOREPO_COMPATIBILITY.md) - 모노레포 및 멀티레포 환경 호환성
1044
+ - [서브패키지 분석](./docs/SUBPACKAGE_ANALYSIS.md) - 서브패키지 분리 전략
1045
+ - [아이콘 시스템](./docs/ICON_SYSTEM.md) - 아이콘 시스템 가이드
1046
+ - [개선 사항](./docs/IMPROVEMENTS_2025-12-06.md) - 개선 이력
1047
+
1048
+ ## Repository
362
1049
 
363
- **Made with ❤️ by HUA Labs** 🚀
1050
+ https://github.com/HUA-Labs/HUA-Labs-public