@hua-labs/ui 1.0.0 → 1.1.0

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