donghy 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +422 -0
  3. package/dist/cjs/components/Button/Button.js +66 -0
  4. package/dist/cjs/components/Button/Button.module.css +137 -0
  5. package/dist/cjs/components/Button/index.js +14 -0
  6. package/dist/cjs/components/common/Affix/Affix.js +152 -0
  7. package/dist/cjs/components/common/Affix/Affix.module.css +11 -0
  8. package/dist/cjs/components/common/Affix/index.js +21 -0
  9. package/dist/cjs/components/common/Anchor/Anchor.js +224 -0
  10. package/dist/cjs/components/common/Anchor/Anchor.module.css +104 -0
  11. package/dist/cjs/components/common/Anchor/index.js +12 -0
  12. package/dist/cjs/components/common/App/App.js +214 -0
  13. package/dist/cjs/components/common/App/App.module.css +2 -0
  14. package/dist/cjs/components/common/App/index.js +12 -0
  15. package/dist/cjs/components/common/BackTop/BackTop.js +105 -0
  16. package/dist/cjs/components/common/BackTop/BackTop.module.css +43 -0
  17. package/dist/cjs/components/common/BackTop/index.js +12 -0
  18. package/dist/cjs/components/common/Button/Button.js +413 -0
  19. package/dist/cjs/components/common/Button/Button.module.css +122 -0
  20. package/dist/cjs/components/common/Button/index.js +12 -0
  21. package/dist/cjs/components/common/ConfigProvider/ConfigProvider.js +102 -0
  22. package/dist/cjs/components/common/ConfigProvider/ConfigProvider.module.css +2 -0
  23. package/dist/cjs/components/common/ConfigProvider/index.js +24 -0
  24. package/dist/cjs/components/common/FloatButton/FloatButton.js +552 -0
  25. package/dist/cjs/components/common/FloatButton/FloatButton.module.css +221 -0
  26. package/dist/cjs/components/common/FloatButton/index.js +24 -0
  27. package/dist/cjs/components/common/Icon/Icon.js +662 -0
  28. package/dist/cjs/components/common/Icon/Icon.module.css +26 -0
  29. package/dist/cjs/components/common/Icon/index.js +16 -0
  30. package/dist/cjs/components/common/Icon/style.css +26 -0
  31. package/dist/cjs/components/common/Typography/Typography.js +605 -0
  32. package/dist/cjs/components/common/Typography/Typography.module.css +303 -0
  33. package/dist/cjs/components/common/Typography/index.js +36 -0
  34. package/dist/cjs/components/common/Watermark/Watermark.js +248 -0
  35. package/dist/cjs/components/common/Watermark/Watermark.module.css +11 -0
  36. package/dist/cjs/components/common/Watermark/index.js +12 -0
  37. package/dist/cjs/components/common/index.js +115 -0
  38. package/dist/cjs/components/display/avatar/Avatar.js +127 -0
  39. package/dist/cjs/components/display/avatar/Avatar.module.css +95 -0
  40. package/dist/cjs/components/display/avatar/AvatarGroup.js +66 -0
  41. package/dist/cjs/components/display/avatar/index.js +19 -0
  42. package/dist/cjs/components/display/badge/Badge.js +152 -0
  43. package/dist/cjs/components/display/badge/Badge.module.css +161 -0
  44. package/dist/cjs/components/display/badge/BadgeRibbon.js +63 -0
  45. package/dist/cjs/components/display/badge/index.js +19 -0
  46. package/dist/cjs/components/display/calendar/Calendar.js +400 -0
  47. package/dist/cjs/components/display/calendar/Calendar.module.css +284 -0
  48. package/dist/cjs/components/display/calendar/index.js +12 -0
  49. package/dist/cjs/components/display/card/Card.js +201 -0
  50. package/dist/cjs/components/display/card/Card.module.css +222 -0
  51. package/dist/cjs/components/display/card/CardGrid.js +31 -0
  52. package/dist/cjs/components/display/card/CardMeta.js +63 -0
  53. package/dist/cjs/components/display/card/index.js +26 -0
  54. package/dist/cjs/components/display/carousel/Carousel.js +316 -0
  55. package/dist/cjs/components/display/carousel/Carousel.module.css +144 -0
  56. package/dist/cjs/components/display/carousel/index.js +12 -0
  57. package/dist/cjs/components/display/collapse/Collapse.js +183 -0
  58. package/dist/cjs/components/display/collapse/Collapse.module.css +149 -0
  59. package/dist/cjs/components/display/collapse/index.js +12 -0
  60. package/dist/cjs/components/display/descriptions/Descriptions.js +218 -0
  61. package/dist/cjs/components/display/descriptions/Descriptions.module.css +106 -0
  62. package/dist/cjs/components/display/descriptions/index.js +12 -0
  63. package/dist/cjs/components/display/empty/Empty.js +158 -0
  64. package/dist/cjs/components/display/empty/Empty.module.css +32 -0
  65. package/dist/cjs/components/display/empty/index.js +12 -0
  66. package/dist/cjs/components/display/image/Image.js +481 -0
  67. package/dist/cjs/components/display/image/Image.module.css +223 -0
  68. package/dist/cjs/components/display/image/ImagePreviewGroup.js +142 -0
  69. package/dist/cjs/components/display/image/index.js +19 -0
  70. package/dist/cjs/components/display/index.js +187 -0
  71. package/dist/cjs/components/display/list/List.js +215 -0
  72. package/dist/cjs/components/display/list/List.module.css +212 -0
  73. package/dist/cjs/components/display/list/index.js +12 -0
  74. package/dist/cjs/components/display/popover/Popover.js +142 -0
  75. package/dist/cjs/components/display/popover/Popover.module.css +138 -0
  76. package/dist/cjs/components/display/popover/index.js +12 -0
  77. package/dist/cjs/components/display/qrcode/QRCode.js +233 -0
  78. package/dist/cjs/components/display/qrcode/QRCode.module.css +91 -0
  79. package/dist/cjs/components/display/qrcode/index.js +12 -0
  80. package/dist/cjs/components/display/segmented/Segmented.js +177 -0
  81. package/dist/cjs/components/display/segmented/Segmented.module.css +82 -0
  82. package/dist/cjs/components/display/segmented/index.js +12 -0
  83. package/dist/cjs/components/display/statistic/Statistic.js +114 -0
  84. package/dist/cjs/components/display/statistic/Statistic.module.css +58 -0
  85. package/dist/cjs/components/display/statistic/StatisticTimer.js +174 -0
  86. package/dist/cjs/components/display/statistic/index.js +19 -0
  87. package/dist/cjs/components/display/table/Table.js +718 -0
  88. package/dist/cjs/components/display/table/Table.module.css +322 -0
  89. package/dist/cjs/components/display/table/index.js +12 -0
  90. package/dist/cjs/components/display/tag/CheckableTag.js +51 -0
  91. package/dist/cjs/components/display/tag/Tag.js +195 -0
  92. package/dist/cjs/components/display/tag/Tag.module.css +84 -0
  93. package/dist/cjs/components/display/tag/index.js +19 -0
  94. package/dist/cjs/components/display/timeline/Timeline.js +150 -0
  95. package/dist/cjs/components/display/timeline/Timeline.module.css +133 -0
  96. package/dist/cjs/components/display/timeline/index.js +12 -0
  97. package/dist/cjs/components/display/tooltip/Tooltip.js +121 -0
  98. package/dist/cjs/components/display/tooltip/Tooltip.module.css +118 -0
  99. package/dist/cjs/components/display/tooltip/index.js +12 -0
  100. package/dist/cjs/components/display/tour/Tour.js +450 -0
  101. package/dist/cjs/components/display/tour/Tour.module.css +318 -0
  102. package/dist/cjs/components/display/tour/index.js +12 -0
  103. package/dist/cjs/components/display/tree/Tree.js +837 -0
  104. package/dist/cjs/components/display/tree/Tree.module.css +235 -0
  105. package/dist/cjs/components/display/tree/index.js +12 -0
  106. package/dist/cjs/components/entry/auto-complete/AutoComplete.js +229 -0
  107. package/dist/cjs/components/entry/auto-complete/AutoComplete.module.css +113 -0
  108. package/dist/cjs/components/entry/auto-complete/index.js +12 -0
  109. package/dist/cjs/components/entry/cascader/Cascader.js +237 -0
  110. package/dist/cjs/components/entry/cascader/Cascader.module.css +124 -0
  111. package/dist/cjs/components/entry/cascader/index.js +12 -0
  112. package/dist/cjs/components/entry/choice/Checkbox.js +161 -0
  113. package/dist/cjs/components/entry/choice/Checkbox.module.css +88 -0
  114. package/dist/cjs/components/entry/choice/Radio.js +143 -0
  115. package/dist/cjs/components/entry/choice/Radio.module.css +85 -0
  116. package/dist/cjs/components/entry/choice/Switch.js +104 -0
  117. package/dist/cjs/components/entry/choice/Switch.module.css +86 -0
  118. package/dist/cjs/components/entry/choice/index.js +26 -0
  119. package/dist/cjs/components/entry/common.js +5 -0
  120. package/dist/cjs/components/entry/date-picker/DatePicker.js +212 -0
  121. package/dist/cjs/components/entry/date-picker/DatePicker.module.css +153 -0
  122. package/dist/cjs/components/entry/date-picker/index.js +12 -0
  123. package/dist/cjs/components/entry/form/Form.js +505 -0
  124. package/dist/cjs/components/entry/form/Form.module.css +124 -0
  125. package/dist/cjs/components/entry/form/Form.tokens.css +22 -0
  126. package/dist/cjs/components/entry/form/index.js +12 -0
  127. package/dist/cjs/components/entry/index.js +136 -0
  128. package/dist/cjs/components/entry/input/Input.js +257 -0
  129. package/dist/cjs/components/entry/input/Input.module.css +172 -0
  130. package/dist/cjs/components/entry/input/index.js +12 -0
  131. package/dist/cjs/components/entry/input-number/InputNumber.js +170 -0
  132. package/dist/cjs/components/entry/input-number/InputNumber.module.css +89 -0
  133. package/dist/cjs/components/entry/input-number/index.js +12 -0
  134. package/dist/cjs/components/entry/mention/Mention.js +170 -0
  135. package/dist/cjs/components/entry/mention/Mention.module.css +77 -0
  136. package/dist/cjs/components/entry/mention/index.js +12 -0
  137. package/dist/cjs/components/entry/range-picker/RangePicker.js +326 -0
  138. package/dist/cjs/components/entry/range-picker/RangePicker.module.css +193 -0
  139. package/dist/cjs/components/entry/range-picker/index.js +12 -0
  140. package/dist/cjs/components/entry/rate/Rate.js +123 -0
  141. package/dist/cjs/components/entry/rate/Rate.module.css +76 -0
  142. package/dist/cjs/components/entry/rate/index.js +12 -0
  143. package/dist/cjs/components/entry/select/Select.js +303 -0
  144. package/dist/cjs/components/entry/select/Select.module.css +202 -0
  145. package/dist/cjs/components/entry/select/index.js +12 -0
  146. package/dist/cjs/components/entry/slider/Slider.js +190 -0
  147. package/dist/cjs/components/entry/slider/Slider.module.css +196 -0
  148. package/dist/cjs/components/entry/slider/index.js +12 -0
  149. package/dist/cjs/components/entry/textarea/TextArea.js +99 -0
  150. package/dist/cjs/components/entry/textarea/TextArea.module.css +54 -0
  151. package/dist/cjs/components/entry/textarea/index.js +12 -0
  152. package/dist/cjs/components/entry/time-picker/TimePicker.js +213 -0
  153. package/dist/cjs/components/entry/time-picker/TimePicker.module.css +137 -0
  154. package/dist/cjs/components/entry/time-picker/index.js +12 -0
  155. package/dist/cjs/components/entry/tokens/index.js +151 -0
  156. package/dist/cjs/components/entry/transfer/Transfer.js +243 -0
  157. package/dist/cjs/components/entry/transfer/Transfer.module.css +170 -0
  158. package/dist/cjs/components/entry/transfer/index.js +12 -0
  159. package/dist/cjs/components/entry/tree-select/TreeSelect.js +225 -0
  160. package/dist/cjs/components/entry/tree-select/TreeSelect.module.css +138 -0
  161. package/dist/cjs/components/entry/tree-select/index.js +12 -0
  162. package/dist/cjs/components/entry/types.d.ts +10 -0
  163. package/dist/cjs/components/entry/upload/Upload.js +381 -0
  164. package/dist/cjs/components/entry/upload/Upload.module.css +150 -0
  165. package/dist/cjs/components/entry/upload/index.js +12 -0
  166. package/dist/cjs/components/feedback/alert/Alert.js +153 -0
  167. package/dist/cjs/components/feedback/alert/Alert.module.css +131 -0
  168. package/dist/cjs/components/feedback/alert/index.js +12 -0
  169. package/dist/cjs/components/feedback/drawer/Drawer.js +196 -0
  170. package/dist/cjs/components/feedback/drawer/Drawer.module.css +135 -0
  171. package/dist/cjs/components/feedback/drawer/index.js +12 -0
  172. package/dist/cjs/components/feedback/index.js +75 -0
  173. package/dist/cjs/components/feedback/message/Message.js +316 -0
  174. package/dist/cjs/components/feedback/message/Message.module.css +130 -0
  175. package/dist/cjs/components/feedback/message/index.js +12 -0
  176. package/dist/cjs/components/feedback/modal/Modal.js +193 -0
  177. package/dist/cjs/components/feedback/modal/Modal.module.css +123 -0
  178. package/dist/cjs/components/feedback/modal/index.js +12 -0
  179. package/dist/cjs/components/feedback/notification/Notification.js +339 -0
  180. package/dist/cjs/components/feedback/notification/Notification.module.css +262 -0
  181. package/dist/cjs/components/feedback/notification/index.js +12 -0
  182. package/dist/cjs/components/feedback/popconfirm/Popconfirm.js +169 -0
  183. package/dist/cjs/components/feedback/popconfirm/Popconfirm.module.css +180 -0
  184. package/dist/cjs/components/feedback/popconfirm/index.js +12 -0
  185. package/dist/cjs/components/feedback/progress/Progress.js +258 -0
  186. package/dist/cjs/components/feedback/progress/Progress.module.css +166 -0
  187. package/dist/cjs/components/feedback/progress/index.js +12 -0
  188. package/dist/cjs/components/feedback/result/Result.js +232 -0
  189. package/dist/cjs/components/feedback/result/Result.module.css +63 -0
  190. package/dist/cjs/components/feedback/result/index.js +12 -0
  191. package/dist/cjs/components/feedback/skeleton/Skeleton.js +174 -0
  192. package/dist/cjs/components/feedback/skeleton/Skeleton.module.css +96 -0
  193. package/dist/cjs/components/feedback/skeleton/index.js +12 -0
  194. package/dist/cjs/components/feedback/spin/Spin.js +178 -0
  195. package/dist/cjs/components/feedback/spin/Spin.module.css +86 -0
  196. package/dist/cjs/components/feedback/spin/index.js +12 -0
  197. package/dist/cjs/components/feedback/tokens/index.js +97 -0
  198. package/dist/cjs/components/index.js +1269 -0
  199. package/dist/cjs/components/layout/divider/Divider.js +45 -0
  200. package/dist/cjs/components/layout/divider/Divider.module.css +77 -0
  201. package/dist/cjs/components/layout/divider/index.js +12 -0
  202. package/dist/cjs/components/layout/flex/Flex.js +110 -0
  203. package/dist/cjs/components/layout/flex/Flex.module.css +26 -0
  204. package/dist/cjs/components/layout/flex/index.js +24 -0
  205. package/dist/cjs/components/layout/grid/Grid.js +171 -0
  206. package/dist/cjs/components/layout/grid/Grid.module.css +22 -0
  207. package/dist/cjs/components/layout/grid/index.js +18 -0
  208. package/dist/cjs/components/layout/index.js +79 -0
  209. package/dist/cjs/components/layout/layout/Layout.js +201 -0
  210. package/dist/cjs/components/layout/layout/Layout.module.css +92 -0
  211. package/dist/cjs/components/layout/layout/index.js +12 -0
  212. package/dist/cjs/components/layout/masonry/Masonry.js +53 -0
  213. package/dist/cjs/components/layout/masonry/Masonry.module.css +8 -0
  214. package/dist/cjs/components/layout/masonry/index.js +12 -0
  215. package/dist/cjs/components/layout/space/Space.js +76 -0
  216. package/dist/cjs/components/layout/space/Space.module.css +39 -0
  217. package/dist/cjs/components/layout/space/index.js +12 -0
  218. package/dist/cjs/components/layout/splitter/Splitter.js +192 -0
  219. package/dist/cjs/components/layout/splitter/Splitter.module.css +39 -0
  220. package/dist/cjs/components/layout/splitter/index.js +12 -0
  221. package/dist/cjs/components/layout/stack/Stack.js +45 -0
  222. package/dist/cjs/components/layout/stack/Stack.module.css +52 -0
  223. package/dist/cjs/components/layout/stack/index.js +12 -0
  224. package/dist/cjs/components/nav/breadcrumb/Breadcrumb.js +74 -0
  225. package/dist/cjs/components/nav/breadcrumb/Breadcrumb.module.css +60 -0
  226. package/dist/cjs/components/nav/breadcrumb/index.js +12 -0
  227. package/dist/cjs/components/nav/dropdown/Dropdown.js +134 -0
  228. package/dist/cjs/components/nav/dropdown/Dropdown.module.css +148 -0
  229. package/dist/cjs/components/nav/dropdown/index.js +12 -0
  230. package/dist/cjs/components/nav/index.js +47 -0
  231. package/dist/cjs/components/nav/menu/Menu.js +308 -0
  232. package/dist/cjs/components/nav/menu/Menu.module.css +250 -0
  233. package/dist/cjs/components/nav/menu/index.js +18 -0
  234. package/dist/cjs/components/nav/pagination/Pagination.js +277 -0
  235. package/dist/cjs/components/nav/pagination/Pagination.module.css +126 -0
  236. package/dist/cjs/components/nav/pagination/index.js +12 -0
  237. package/dist/cjs/components/nav/steps/Steps.js +135 -0
  238. package/dist/cjs/components/nav/steps/Steps.module.css +170 -0
  239. package/dist/cjs/components/nav/steps/index.js +12 -0
  240. package/dist/cjs/components/nav/tabs/Tabs.js +190 -0
  241. package/dist/cjs/components/nav/tabs/Tabs.module.css +251 -0
  242. package/dist/cjs/components/nav/tabs/index.js +12 -0
  243. package/dist/cjs/components/shared/constants/breakpoint.js +15 -0
  244. package/dist/cjs/components/shared/constants/index.js +18 -0
  245. package/dist/cjs/components/shared/hooks/index.js +53 -0
  246. package/dist/cjs/components/shared/hooks/useClickOutside.js +26 -0
  247. package/dist/cjs/components/shared/hooks/useControllableState.js +31 -0
  248. package/dist/cjs/components/shared/hooks/useEscapeKey.js +22 -0
  249. package/dist/cjs/components/shared/hooks/useMatchMedia.js +69 -0
  250. package/dist/cjs/components/shared/hooks/usePikaContext.js +40 -0
  251. package/dist/cjs/components/shared/hooks/useScrollListener.js +39 -0
  252. package/dist/cjs/components/shared/hooks/useZenContext.js +40 -0
  253. package/dist/cjs/components/shared/index.js +117 -0
  254. package/dist/cjs/components/shared/overlay/index.js +37 -0
  255. package/dist/cjs/components/shared/overlay/placement.js +105 -0
  256. package/dist/cjs/components/shared/overlay/useOverlay.js +183 -0
  257. package/dist/cjs/components/shared/types/common.js +5 -0
  258. package/dist/cjs/components/shared/types/css.js +5 -0
  259. package/dist/cjs/components/shared/types/index.js +5 -0
  260. package/dist/cjs/components/shared/utils/classNames.js +12 -0
  261. package/dist/cjs/components/shared/utils/index.js +38 -0
  262. package/dist/cjs/components/shared/utils/portal.js +20 -0
  263. package/dist/cjs/components/shared/utils/semantic.js +18 -0
  264. package/dist/cjs/global.css +247 -0
  265. package/dist/cjs/index.js +27 -0
  266. package/dist/cjs/theme/dark.css +56 -0
  267. package/dist/cjs/theme/dumi.css +695 -0
  268. package/dist/cjs/theme/tokens.js +133 -0
  269. package/dist/esm/components/Button/Button.js +60 -0
  270. package/dist/esm/components/Button/Button.module.css +137 -0
  271. package/dist/esm/components/Button/index.js +3 -0
  272. package/dist/esm/components/common/Affix/Affix.js +146 -0
  273. package/dist/esm/components/common/Affix/Affix.module.css +11 -0
  274. package/dist/esm/components/common/Affix/index.js +1 -0
  275. package/dist/esm/components/common/Anchor/Anchor.js +220 -0
  276. package/dist/esm/components/common/Anchor/Anchor.module.css +104 -0
  277. package/dist/esm/components/common/Anchor/index.js +1 -0
  278. package/dist/esm/components/common/App/App.js +206 -0
  279. package/dist/esm/components/common/App/App.module.css +2 -0
  280. package/dist/esm/components/common/App/index.js +1 -0
  281. package/dist/esm/components/common/BackTop/BackTop.js +99 -0
  282. package/dist/esm/components/common/BackTop/BackTop.module.css +43 -0
  283. package/dist/esm/components/common/BackTop/index.js +1 -0
  284. package/dist/esm/components/common/Button/Button.js +408 -0
  285. package/dist/esm/components/common/Button/Button.module.css +122 -0
  286. package/dist/esm/components/common/Button/index.js +1 -0
  287. package/dist/esm/components/common/ConfigProvider/ConfigProvider.js +99 -0
  288. package/dist/esm/components/common/ConfigProvider/ConfigProvider.module.css +2 -0
  289. package/dist/esm/components/common/ConfigProvider/index.js +2 -0
  290. package/dist/esm/components/common/FloatButton/FloatButton.js +572 -0
  291. package/dist/esm/components/common/FloatButton/FloatButton.module.css +221 -0
  292. package/dist/esm/components/common/FloatButton/index.js +1 -0
  293. package/dist/esm/components/common/Icon/Icon.js +651 -0
  294. package/dist/esm/components/common/Icon/Icon.module.css +26 -0
  295. package/dist/esm/components/common/Icon/index.js +2 -0
  296. package/dist/esm/components/common/Icon/style.css +26 -0
  297. package/dist/esm/components/common/Typography/Typography.js +599 -0
  298. package/dist/esm/components/common/Typography/Typography.module.css +303 -0
  299. package/dist/esm/components/common/Typography/index.js +1 -0
  300. package/dist/esm/components/common/Watermark/Watermark.js +243 -0
  301. package/dist/esm/components/common/Watermark/Watermark.module.css +11 -0
  302. package/dist/esm/components/common/Watermark/index.js +1 -0
  303. package/dist/esm/components/common/index.js +10 -0
  304. package/dist/esm/components/display/avatar/Avatar.js +128 -0
  305. package/dist/esm/components/display/avatar/Avatar.module.css +95 -0
  306. package/dist/esm/components/display/avatar/AvatarGroup.js +58 -0
  307. package/dist/esm/components/display/avatar/index.js +2 -0
  308. package/dist/esm/components/display/badge/Badge.js +153 -0
  309. package/dist/esm/components/display/badge/Badge.module.css +161 -0
  310. package/dist/esm/components/display/badge/BadgeRibbon.js +56 -0
  311. package/dist/esm/components/display/badge/index.js +2 -0
  312. package/dist/esm/components/display/calendar/Calendar.js +399 -0
  313. package/dist/esm/components/display/calendar/Calendar.module.css +284 -0
  314. package/dist/esm/components/display/calendar/index.js +1 -0
  315. package/dist/esm/components/display/card/Card.js +202 -0
  316. package/dist/esm/components/display/card/Card.module.css +222 -0
  317. package/dist/esm/components/display/card/CardGrid.js +22 -0
  318. package/dist/esm/components/display/card/CardMeta.js +56 -0
  319. package/dist/esm/components/display/card/index.js +3 -0
  320. package/dist/esm/components/display/carousel/Carousel.js +324 -0
  321. package/dist/esm/components/display/carousel/Carousel.module.css +144 -0
  322. package/dist/esm/components/display/carousel/index.js +1 -0
  323. package/dist/esm/components/display/collapse/Collapse.js +186 -0
  324. package/dist/esm/components/display/collapse/Collapse.module.css +149 -0
  325. package/dist/esm/components/display/collapse/index.js +1 -0
  326. package/dist/esm/components/display/descriptions/Descriptions.js +221 -0
  327. package/dist/esm/components/display/descriptions/Descriptions.module.css +106 -0
  328. package/dist/esm/components/display/descriptions/index.js +1 -0
  329. package/dist/esm/components/display/empty/Empty.js +157 -0
  330. package/dist/esm/components/display/empty/Empty.module.css +32 -0
  331. package/dist/esm/components/display/empty/index.js +1 -0
  332. package/dist/esm/components/display/image/Image.js +479 -0
  333. package/dist/esm/components/display/image/Image.module.css +223 -0
  334. package/dist/esm/components/display/image/ImagePreviewGroup.js +135 -0
  335. package/dist/esm/components/display/image/index.js +2 -0
  336. package/dist/esm/components/display/index.js +27 -0
  337. package/dist/esm/components/display/list/List.js +208 -0
  338. package/dist/esm/components/display/list/List.module.css +212 -0
  339. package/dist/esm/components/display/list/index.js +1 -0
  340. package/dist/esm/components/display/popover/Popover.js +144 -0
  341. package/dist/esm/components/display/popover/Popover.module.css +138 -0
  342. package/dist/esm/components/display/popover/index.js +1 -0
  343. package/dist/esm/components/display/qrcode/QRCode.js +226 -0
  344. package/dist/esm/components/display/qrcode/QRCode.module.css +91 -0
  345. package/dist/esm/components/display/qrcode/index.js +1 -0
  346. package/dist/esm/components/display/segmented/Segmented.js +170 -0
  347. package/dist/esm/components/display/segmented/Segmented.module.css +82 -0
  348. package/dist/esm/components/display/segmented/index.js +1 -0
  349. package/dist/esm/components/display/statistic/Statistic.js +107 -0
  350. package/dist/esm/components/display/statistic/Statistic.module.css +58 -0
  351. package/dist/esm/components/display/statistic/StatisticTimer.js +167 -0
  352. package/dist/esm/components/display/statistic/index.js +2 -0
  353. package/dist/esm/components/display/table/Table.js +712 -0
  354. package/dist/esm/components/display/table/Table.module.css +322 -0
  355. package/dist/esm/components/display/table/index.js +1 -0
  356. package/dist/esm/components/display/tag/CheckableTag.js +42 -0
  357. package/dist/esm/components/display/tag/Tag.js +188 -0
  358. package/dist/esm/components/display/tag/Tag.module.css +84 -0
  359. package/dist/esm/components/display/tag/index.js +2 -0
  360. package/dist/esm/components/display/timeline/Timeline.js +147 -0
  361. package/dist/esm/components/display/timeline/Timeline.module.css +133 -0
  362. package/dist/esm/components/display/timeline/index.js +1 -0
  363. package/dist/esm/components/display/tooltip/Tooltip.js +117 -0
  364. package/dist/esm/components/display/tooltip/Tooltip.module.css +118 -0
  365. package/dist/esm/components/display/tooltip/index.js +1 -0
  366. package/dist/esm/components/display/tour/Tour.js +449 -0
  367. package/dist/esm/components/display/tour/Tour.module.css +318 -0
  368. package/dist/esm/components/display/tour/index.js +1 -0
  369. package/dist/esm/components/display/tree/Tree.js +837 -0
  370. package/dist/esm/components/display/tree/Tree.module.css +235 -0
  371. package/dist/esm/components/display/tree/index.js +1 -0
  372. package/dist/esm/components/entry/auto-complete/AutoComplete.js +229 -0
  373. package/dist/esm/components/entry/auto-complete/AutoComplete.module.css +113 -0
  374. package/dist/esm/components/entry/auto-complete/index.js +1 -0
  375. package/dist/esm/components/entry/cascader/Cascader.js +229 -0
  376. package/dist/esm/components/entry/cascader/Cascader.module.css +124 -0
  377. package/dist/esm/components/entry/cascader/index.js +1 -0
  378. package/dist/esm/components/entry/choice/Checkbox.js +160 -0
  379. package/dist/esm/components/entry/choice/Checkbox.module.css +88 -0
  380. package/dist/esm/components/entry/choice/Radio.js +140 -0
  381. package/dist/esm/components/entry/choice/Radio.module.css +85 -0
  382. package/dist/esm/components/entry/choice/Switch.js +104 -0
  383. package/dist/esm/components/entry/choice/Switch.module.css +86 -0
  384. package/dist/esm/components/entry/choice/index.js +3 -0
  385. package/dist/esm/components/entry/common.js +1 -0
  386. package/dist/esm/components/entry/date-picker/DatePicker.js +213 -0
  387. package/dist/esm/components/entry/date-picker/DatePicker.module.css +153 -0
  388. package/dist/esm/components/entry/date-picker/index.js +1 -0
  389. package/dist/esm/components/entry/form/Form.js +518 -0
  390. package/dist/esm/components/entry/form/Form.module.css +124 -0
  391. package/dist/esm/components/entry/form/Form.tokens.css +22 -0
  392. package/dist/esm/components/entry/form/index.js +1 -0
  393. package/dist/esm/components/entry/index.js +19 -0
  394. package/dist/esm/components/entry/input/Input.js +252 -0
  395. package/dist/esm/components/entry/input/Input.module.css +172 -0
  396. package/dist/esm/components/entry/input/index.js +1 -0
  397. package/dist/esm/components/entry/input-number/InputNumber.js +168 -0
  398. package/dist/esm/components/entry/input-number/InputNumber.module.css +89 -0
  399. package/dist/esm/components/entry/input-number/index.js +1 -0
  400. package/dist/esm/components/entry/mention/Mention.js +169 -0
  401. package/dist/esm/components/entry/mention/Mention.module.css +77 -0
  402. package/dist/esm/components/entry/mention/index.js +1 -0
  403. package/dist/esm/components/entry/range-picker/RangePicker.js +320 -0
  404. package/dist/esm/components/entry/range-picker/RangePicker.module.css +193 -0
  405. package/dist/esm/components/entry/range-picker/index.js +1 -0
  406. package/dist/esm/components/entry/rate/Rate.js +120 -0
  407. package/dist/esm/components/entry/rate/Rate.module.css +76 -0
  408. package/dist/esm/components/entry/rate/index.js +1 -0
  409. package/dist/esm/components/entry/select/Select.js +303 -0
  410. package/dist/esm/components/entry/select/Select.module.css +202 -0
  411. package/dist/esm/components/entry/select/index.js +1 -0
  412. package/dist/esm/components/entry/slider/Slider.js +183 -0
  413. package/dist/esm/components/entry/slider/Slider.module.css +196 -0
  414. package/dist/esm/components/entry/slider/index.js +1 -0
  415. package/dist/esm/components/entry/textarea/TextArea.js +95 -0
  416. package/dist/esm/components/entry/textarea/TextArea.module.css +54 -0
  417. package/dist/esm/components/entry/textarea/index.js +1 -0
  418. package/dist/esm/components/entry/time-picker/TimePicker.js +211 -0
  419. package/dist/esm/components/entry/time-picker/TimePicker.module.css +137 -0
  420. package/dist/esm/components/entry/time-picker/index.js +1 -0
  421. package/dist/esm/components/entry/tokens/index.js +145 -0
  422. package/dist/esm/components/entry/transfer/Transfer.js +242 -0
  423. package/dist/esm/components/entry/transfer/Transfer.module.css +170 -0
  424. package/dist/esm/components/entry/transfer/index.js +1 -0
  425. package/dist/esm/components/entry/tree-select/TreeSelect.js +221 -0
  426. package/dist/esm/components/entry/tree-select/TreeSelect.module.css +138 -0
  427. package/dist/esm/components/entry/tree-select/index.js +1 -0
  428. package/dist/esm/components/entry/types.d.ts +10 -0
  429. package/dist/esm/components/entry/upload/Upload.js +382 -0
  430. package/dist/esm/components/entry/upload/Upload.module.css +150 -0
  431. package/dist/esm/components/entry/upload/index.js +1 -0
  432. package/dist/esm/components/feedback/alert/Alert.js +152 -0
  433. package/dist/esm/components/feedback/alert/Alert.module.css +131 -0
  434. package/dist/esm/components/feedback/alert/index.js +1 -0
  435. package/dist/esm/components/feedback/drawer/Drawer.js +190 -0
  436. package/dist/esm/components/feedback/drawer/Drawer.module.css +135 -0
  437. package/dist/esm/components/feedback/drawer/index.js +1 -0
  438. package/dist/esm/components/feedback/index.js +10 -0
  439. package/dist/esm/components/feedback/message/Message.js +317 -0
  440. package/dist/esm/components/feedback/message/Message.module.css +130 -0
  441. package/dist/esm/components/feedback/message/index.js +1 -0
  442. package/dist/esm/components/feedback/modal/Modal.js +191 -0
  443. package/dist/esm/components/feedback/modal/Modal.module.css +123 -0
  444. package/dist/esm/components/feedback/modal/index.js +1 -0
  445. package/dist/esm/components/feedback/notification/Notification.js +342 -0
  446. package/dist/esm/components/feedback/notification/Notification.module.css +262 -0
  447. package/dist/esm/components/feedback/notification/index.js +1 -0
  448. package/dist/esm/components/feedback/popconfirm/Popconfirm.js +165 -0
  449. package/dist/esm/components/feedback/popconfirm/Popconfirm.module.css +180 -0
  450. package/dist/esm/components/feedback/popconfirm/index.js +1 -0
  451. package/dist/esm/components/feedback/progress/Progress.js +262 -0
  452. package/dist/esm/components/feedback/progress/Progress.module.css +166 -0
  453. package/dist/esm/components/feedback/progress/index.js +1 -0
  454. package/dist/esm/components/feedback/result/Result.js +224 -0
  455. package/dist/esm/components/feedback/result/Result.module.css +63 -0
  456. package/dist/esm/components/feedback/result/index.js +1 -0
  457. package/dist/esm/components/feedback/skeleton/Skeleton.js +174 -0
  458. package/dist/esm/components/feedback/skeleton/Skeleton.module.css +96 -0
  459. package/dist/esm/components/feedback/skeleton/index.js +1 -0
  460. package/dist/esm/components/feedback/spin/Spin.js +175 -0
  461. package/dist/esm/components/feedback/spin/Spin.module.css +86 -0
  462. package/dist/esm/components/feedback/spin/index.js +1 -0
  463. package/dist/esm/components/feedback/tokens/index.js +91 -0
  464. package/dist/esm/components/index.js +24 -0
  465. package/dist/esm/components/layout/divider/Divider.js +36 -0
  466. package/dist/esm/components/layout/divider/Divider.module.css +77 -0
  467. package/dist/esm/components/layout/divider/index.js +1 -0
  468. package/dist/esm/components/layout/flex/Flex.js +108 -0
  469. package/dist/esm/components/layout/flex/Flex.module.css +26 -0
  470. package/dist/esm/components/layout/flex/index.js +1 -0
  471. package/dist/esm/components/layout/grid/Grid.js +167 -0
  472. package/dist/esm/components/layout/grid/Grid.module.css +22 -0
  473. package/dist/esm/components/layout/grid/index.js +1 -0
  474. package/dist/esm/components/layout/index.js +16 -0
  475. package/dist/esm/components/layout/layout/Layout.js +208 -0
  476. package/dist/esm/components/layout/layout/Layout.module.css +92 -0
  477. package/dist/esm/components/layout/layout/index.js +1 -0
  478. package/dist/esm/components/layout/masonry/Masonry.js +47 -0
  479. package/dist/esm/components/layout/masonry/Masonry.module.css +8 -0
  480. package/dist/esm/components/layout/masonry/index.js +1 -0
  481. package/dist/esm/components/layout/space/Space.js +70 -0
  482. package/dist/esm/components/layout/space/Space.module.css +39 -0
  483. package/dist/esm/components/layout/space/index.js +1 -0
  484. package/dist/esm/components/layout/splitter/Splitter.js +189 -0
  485. package/dist/esm/components/layout/splitter/Splitter.module.css +39 -0
  486. package/dist/esm/components/layout/splitter/index.js +1 -0
  487. package/dist/esm/components/layout/stack/Stack.js +38 -0
  488. package/dist/esm/components/layout/stack/Stack.module.css +52 -0
  489. package/dist/esm/components/layout/stack/index.js +1 -0
  490. package/dist/esm/components/nav/breadcrumb/Breadcrumb.js +66 -0
  491. package/dist/esm/components/nav/breadcrumb/Breadcrumb.module.css +60 -0
  492. package/dist/esm/components/nav/breadcrumb/index.js +1 -0
  493. package/dist/esm/components/nav/dropdown/Dropdown.js +128 -0
  494. package/dist/esm/components/nav/dropdown/Dropdown.module.css +148 -0
  495. package/dist/esm/components/nav/dropdown/index.js +1 -0
  496. package/dist/esm/components/nav/index.js +6 -0
  497. package/dist/esm/components/nav/menu/Menu.js +304 -0
  498. package/dist/esm/components/nav/menu/Menu.module.css +250 -0
  499. package/dist/esm/components/nav/menu/index.js +1 -0
  500. package/dist/esm/components/nav/pagination/Pagination.js +274 -0
  501. package/dist/esm/components/nav/pagination/Pagination.module.css +126 -0
  502. package/dist/esm/components/nav/pagination/index.js +1 -0
  503. package/dist/esm/components/nav/steps/Steps.js +132 -0
  504. package/dist/esm/components/nav/steps/Steps.module.css +170 -0
  505. package/dist/esm/components/nav/steps/index.js +1 -0
  506. package/dist/esm/components/nav/tabs/Tabs.js +187 -0
  507. package/dist/esm/components/nav/tabs/Tabs.module.css +251 -0
  508. package/dist/esm/components/nav/tabs/index.js +1 -0
  509. package/dist/esm/components/shared/constants/breakpoint.js +9 -0
  510. package/dist/esm/components/shared/constants/index.js +1 -0
  511. package/dist/esm/components/shared/hooks/index.js +6 -0
  512. package/dist/esm/components/shared/hooks/useClickOutside.js +20 -0
  513. package/dist/esm/components/shared/hooks/useControllableState.js +25 -0
  514. package/dist/esm/components/shared/hooks/useEscapeKey.js +16 -0
  515. package/dist/esm/components/shared/hooks/useMatchMedia.js +62 -0
  516. package/dist/esm/components/shared/hooks/usePikaContext.js +34 -0
  517. package/dist/esm/components/shared/hooks/useScrollListener.js +33 -0
  518. package/dist/esm/components/shared/hooks/useZenContext.js +34 -0
  519. package/dist/esm/components/shared/index.js +10 -0
  520. package/dist/esm/components/shared/overlay/index.js +2 -0
  521. package/dist/esm/components/shared/overlay/placement.js +98 -0
  522. package/dist/esm/components/shared/overlay/useOverlay.js +177 -0
  523. package/dist/esm/components/shared/types/common.js +1 -0
  524. package/dist/esm/components/shared/types/css.js +1 -0
  525. package/dist/esm/components/shared/types/index.js +1 -0
  526. package/dist/esm/components/shared/utils/classNames.js +6 -0
  527. package/dist/esm/components/shared/utils/index.js +3 -0
  528. package/dist/esm/components/shared/utils/portal.js +13 -0
  529. package/dist/esm/components/shared/utils/semantic.js +11 -0
  530. package/dist/esm/global.css +247 -0
  531. package/dist/esm/index.js +2 -0
  532. package/dist/esm/theme/dark.css +56 -0
  533. package/dist/esm/theme/dumi.css +695 -0
  534. package/dist/esm/theme/tokens.js +127 -0
  535. package/package.json +109 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 FoxD Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,422 @@
1
+ # FoxD
2
+
3
+ A modern React component library.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @wentian/foxd
9
+ ```
10
+
11
+ ```bash
12
+ pnpm add @wentian/foxd
13
+ ```
14
+
15
+ ```bash
16
+ yarn add @wentian/foxd
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ```tsx
22
+ import { Button, Input, Modal } from '@wentian/foxd'
23
+ import '@wentian/foxd/styles'
24
+
25
+ function App() {
26
+ return (
27
+ <div>
28
+ <Button variant="primary">Click Me</Button>
29
+ <Input placeholder="Type something..." />
30
+ </div>
31
+ )
32
+ }
33
+ ```
34
+
35
+ ## Theme
36
+
37
+ FoxD supports light and dark themes via `ConfigProvider`:
38
+
39
+ ```tsx
40
+ import { ConfigProvider } from '@wentian/foxd'
41
+
42
+ function App() {
43
+ return (
44
+ <ConfigProvider theme="dark">
45
+ {/* your app */}
46
+ </ConfigProvider>
47
+ )
48
+ }
49
+ ```
50
+
51
+ ## Components
52
+
53
+ ### Common
54
+
55
+ | Component | Description |
56
+ |-----------|-------------|
57
+ | `Button` | Button component with multiple variants and sizes |
58
+ | `Icon` | Icon component with 100+ built-in icons |
59
+ | `Typography` | Typography with Text, Title, Paragraph, Link |
60
+ | `Affix` | Affix component to fix element on scroll |
61
+ | `Anchor` | Anchor navigation with links |
62
+ | `App` | App wrapper providing Message, Modal, Notification context |
63
+ | `BackTop` | Back to top button |
64
+ | `ConfigProvider` | Global configuration provider for theme and locale |
65
+ | `FloatButton` | Floating action button with group support |
66
+ | `Watermark` | Watermark overlay |
67
+
68
+ ### Layout
69
+
70
+ | Component | Description |
71
+ |-----------|-------------|
72
+ | `Layout` | Page layout with Header, Footer, Content, Sider |
73
+ | `Divider` | Divider line |
74
+ | `Flex` | Flexbox layout |
75
+ | `HStack` | Horizontal stack layout |
76
+ | `VStack` | Vertical stack layout |
77
+ | `Row` / `Col` | Grid system with 24 columns |
78
+ | `Masonry` | Masonry/waterfall layout |
79
+ | `Space` | Consistent spacing between elements |
80
+ | `Splitter` | Resizable split panels |
81
+ | `Stack` | Stack layout |
82
+
83
+ ### Navigation
84
+
85
+ | Component | Description |
86
+ |-----------|-------------|
87
+ | `Breadcrumb` | Breadcrumb navigation |
88
+ | `Dropdown` | Dropdown menu |
89
+ | `Menu` | Navigation menu |
90
+ | `Pagination` | Pagination controls |
91
+ | `Steps` | Step-by-step navigation |
92
+ | `Tabs` | Tabbed content |
93
+
94
+ ### Data Entry
95
+
96
+ | Component | Description |
97
+ |-----------|-------------|
98
+ | `Form` | Form with validation support |
99
+ | `Input` | Text input with password and search variants |
100
+ | `TextArea` | Multi-line text input |
101
+ | `InputNumber` | Numeric input with step controls |
102
+ | `AutoComplete` | Input with autocomplete suggestions |
103
+ | `Select` | Dropdown selector |
104
+ | `Cascader` | Cascading selector |
105
+ | `TreeSelect` | Tree-structured selector |
106
+ | `Checkbox` | Checkbox with group support |
107
+ | `Radio` | Radio button with group support |
108
+ | `Switch` | Toggle switch |
109
+ | `Slider` | Slider input |
110
+ | `Transfer` | Dual-list transfer |
111
+ | `DatePicker` | Date picker |
112
+ | `RangePicker` | Date range picker |
113
+ | `TimePicker` | Time picker |
114
+ | `Upload` | File upload with drag support |
115
+ | `Rate` | Star rating |
116
+ | `Mention` | @ mention input |
117
+
118
+ ### Feedback
119
+
120
+ | Component | Description |
121
+ |-----------|-------------|
122
+ | `Alert` | Alert banner |
123
+ | `Drawer` | Side drawer panel |
124
+ | `Message` | Global message toast |
125
+ | `Modal` | Dialog modal |
126
+ | `Notification` | Notification notification box |
127
+ | `Popconfirm` | Popover confirmation |
128
+ | `Progress` | Progress indicator |
129
+ | `Result` | Result page |
130
+ | `Skeleton` | Content placeholder skeleton |
131
+ | `Spin` | Loading spinner |
132
+
133
+ ### Display
134
+
135
+ | Component | Description |
136
+ |-----------|-------------|
137
+ | `Avatar` / `AvatarGroup` | User avatar with group |
138
+ | `Badge` / `BadgeRibbon` | Status badge and ribbon |
139
+ | `Tag` / `CheckableTag` | Tag label |
140
+ | `Tooltip` | Tooltip on hover |
141
+ | `Popover` | Popover card |
142
+ | `Card` / `CardGrid` / `CardMeta` | Content card |
143
+ | `Empty` | Empty state placeholder |
144
+ | `Statistic` / `StatisticTimer` | Statistic number display |
145
+ | `Collapse` | Collapsible panels |
146
+ | `Timeline` | Timeline display |
147
+ | `Descriptions` | Key-value description list |
148
+ | `Segmented` | Segmented control |
149
+ | `Table` | Data table with sorting, filtering, selection |
150
+ | `Tree` | Tree view |
151
+ | `Carousel` | Image/content carousel |
152
+ | `Image` / `ImagePreviewGroup` | Image with preview |
153
+ | `Calendar` | Calendar view |
154
+ | `QRCode` | QR code generator |
155
+ | `Tour` | Guided tour |
156
+ | `List` | Data list |
157
+
158
+ ## API Reference
159
+
160
+ ### Button
161
+
162
+ | Prop | Type | Default | Description |
163
+ |------|------|---------|-------------|
164
+ | `variant` | `'primary' \| 'default' \| 'dashed' \| 'text' \| 'link'` | `'default'` | Button style variant |
165
+ | `size` | `'small' \| 'middle' \| 'large'` | `'middle'` | Button size |
166
+ | `disabled` | `boolean` | `false` | Whether the button is disabled |
167
+ | `loading` | `boolean` | `false` | Show loading spinner |
168
+ | `danger` | `boolean` | `false` | Danger style |
169
+ | `block` | `boolean` | `false` | Full width button |
170
+ | `icon` | `ReactNode` | - | Icon element |
171
+ | `onClick` | `(e: MouseEvent) => void` | - | Click handler |
172
+
173
+ ### Input
174
+
175
+ | Prop | Type | Default | Description |
176
+ |------|------|---------|-------------|
177
+ | `value` | `string` | - | Input value (controlled) |
178
+ | `defaultValue` | `string` | - | Default value |
179
+ | `placeholder` | `string` | - | Placeholder text |
180
+ | `size` | `'small' \| 'middle' \| 'large'` | `'middle'` | Input size |
181
+ | `status` | `'default' \| 'error' \| 'warning'` | `'default'` | Validation status |
182
+ | `disabled` | `boolean` | `false` | Whether the input is disabled |
183
+ | `readOnly` | `boolean` | `false` | Read only |
184
+ | `prefix` | `ReactNode` | - | Prefix icon/element |
185
+ | `suffix` | `ReactNode` | - | Suffix icon/element |
186
+ | `onChange` | `(e: ChangeEvent) => void` | - | Change handler |
187
+
188
+ ### Modal
189
+
190
+ | Prop | Type | Default | Description |
191
+ |------|------|---------|-------------|
192
+ | `open` | `boolean` | `false` | Whether the modal is visible |
193
+ | `title` | `ReactNode` | - | Modal title |
194
+ | `footer` | `ReactNode \| null` | - | Footer content, `null` to hide |
195
+ | `size` | `'small' \| 'middle' \| 'large'` | `'middle'` | Modal size |
196
+ | `closable` | `boolean` | `true` | Show close button |
197
+ | `centered` | `boolean` | `false` | Vertically center the modal |
198
+ | `mask` | `boolean` | `true` | Show mask overlay |
199
+ | `maskClosable` | `boolean` | `true` | Close on mask click |
200
+ | `keyboard` | `boolean` | `true` | Close on ESC key |
201
+ | `confirmLoading` | `boolean` | `false` | Loading state for confirm button |
202
+ | `okText` | `ReactNode` | - | Confirm button text |
203
+ | `cancelText` | `ReactNode` | - | Cancel button text |
204
+ | `onOk` | `(e: MouseEvent) => void` | - | Confirm handler |
205
+ | `onCancel` | `(e: MouseEvent) => void` | - | Cancel handler |
206
+
207
+ ### Form
208
+
209
+ | Prop | Type | Default | Description |
210
+ |------|------|---------|-------------|
211
+ | `initialValues` | `Record<string, any>` | - | Initial form values |
212
+ | `onFinish` | `(values: Record<string, any>) => void` | - | Submit handler (validation passed) |
213
+ | `onFinishFailed` | `(errors: FormErrorInfo) => void` | - | Submit handler (validation failed) |
214
+ | `layout` | `'horizontal' \| 'vertical' \| 'inline'` | `'horizontal'` | Form layout |
215
+
216
+ #### Form.Item
217
+
218
+ | Prop | Type | Default | Description |
219
+ |------|------|---------|-------------|
220
+ | `name` | `string` | - | Field name |
221
+ | `label` | `ReactNode` | - | Field label |
222
+ | `rules` | `ValidationRule[]` | - | Validation rules |
223
+ | `required` | `boolean` | `false` | Whether the field is required |
224
+
225
+ ### Select
226
+
227
+ | Prop | Type | Default | Description |
228
+ |------|------|---------|-------------|
229
+ | `value` | `string \| string[]` | - | Selected value (controlled) |
230
+ | `options` | `SelectOption[]` | - | Options list |
231
+ | `mode` | `'single' \| 'multiple' \| 'tags'` | `'single'` | Selection mode |
232
+ | `placeholder` | `string` | - | Placeholder text |
233
+ | `size` | `'small' \| 'middle' \| 'large'` | `'middle'` | Select size |
234
+ | `disabled` | `boolean` | `false` | Whether the select is disabled |
235
+ | `showSearch` | `boolean` | `false` | Enable search filtering |
236
+ | `showClear` | `boolean` | `false` | Show clear button |
237
+ | `onChange` | `(value, option) => void` | - | Change handler |
238
+
239
+ ### Table
240
+
241
+ | Prop | Type | Default | Description |
242
+ |------|------|---------|-------------|
243
+ | `dataSource` | `T[]` | `[]` | Data array |
244
+ | `columns` | `ColumnType<T>[]` | - | Column definitions |
245
+ | `size` | `'small' \| 'middle' \| 'large'` | `'middle'` | Table size |
246
+ | `variant` | `'bordered' \| 'borderless'` | `'bordered'` | Table variant |
247
+ | `loading` | `boolean` | `false` | Loading state |
248
+ | `rowKey` | `string \| ((record) => string)` | - | Row key field |
249
+ | `rowSelection` | `RowSelectionConfig` | - | Row selection config |
250
+ | `pagination` | `PaginationConfig \| false` | - | Pagination config |
251
+
252
+ ### Message
253
+
254
+ ```tsx
255
+ import { Message } from '@wentian/foxd'
256
+
257
+ Message.success('Operation completed')
258
+ Message.error('Something went wrong')
259
+ Message.warning('Warning message')
260
+ Message.info('Info message')
261
+ Message.loading('Loading...')
262
+ ```
263
+
264
+ | Method | Description |
265
+ |--------|-------------|
266
+ | `Message.success(content, duration?)` | Success message |
267
+ | `Message.error(content, duration?)` | Error message |
268
+ | `Message.warning(content, duration?)` | Warning message |
269
+ | `Message.info(content, duration?)` | Info message |
270
+ | `Message.loading(content, duration?)` | Loading message |
271
+
272
+ ### Notification
273
+
274
+ ```tsx
275
+ import { Notification } from '@wentian/foxd'
276
+
277
+ Notification.open({ message: 'Title', description: 'Description' })
278
+ Notification.success({ message: 'Success', description: 'Operation completed' })
279
+ ```
280
+
281
+ ### Icon
282
+
283
+ FoxD includes 100+ built-in icons. All icons follow the `XxxOutlined` / `XxxFilled` / `XxxTwoTone` naming convention:
284
+
285
+ ```tsx
286
+ import { SearchOutlined, StarFilled, HeartTwoTone } from '@wentian/foxd'
287
+
288
+ <SearchOutlined />
289
+ <StarFilled style={{ color: 'gold' }} />
290
+ <HeartTwoTone twoToneColor="#eb2f96" />
291
+ ```
292
+
293
+ | Prop | Type | Default | Description |
294
+ |------|------|---------|-------------|
295
+ | `spin` | `boolean` | `false` | Rotate icon animation |
296
+ | `rotate` | `number` | `0` | Rotation degrees |
297
+ | `style` | `CSSProperties` | - | Custom styles |
298
+ | `onClick` | `(e: MouseEvent) => void` | - | Click handler |
299
+
300
+ Custom icon from SVG:
301
+
302
+ ```tsx
303
+ import { Icon } from '@wentian/foxd'
304
+
305
+ const SvgIcon = () => (
306
+ <Icon component={() => <svg>...</svg>} />
307
+ )
308
+ ```
309
+
310
+ Icon from iconfont:
311
+
312
+ ```tsx
313
+ import { createFromIconfontCN } from '@wentian/foxd'
314
+
315
+ const IconFont = createFromIconfontCN({
316
+ scriptUrl: '//at.alicdn.com/t/font_xxx.js'
317
+ })
318
+ ```
319
+
320
+ ### ConfigProvider
321
+
322
+ | Prop | Type | Default | Description |
323
+ |------|------|---------|-------------|
324
+ | `theme` | `'light' \| 'dark'` | `'light'` | Theme mode |
325
+ | `locale` | `Locale` | - | Locale configuration |
326
+ | `prefixCls` | `string` | - | CSS class prefix |
327
+
328
+ ### DatePicker
329
+
330
+ | Prop | Type | Default | Description |
331
+ |------|------|---------|-------------|
332
+ | `value` | `string \| null` | - | Selected date value (controlled), format `YYYY-MM-DD` |
333
+ | `defaultValue` | `string \| null` | - | Default date value |
334
+ | `placeholder` | `string` | `'选择日期'` | Placeholder text |
335
+ | `size` | `'small' \| 'middle' \| 'large'` | `'middle'` | Picker size |
336
+ | `status` | `'default' \| 'error' \| 'warning'` | `'default'` | Validation status |
337
+ | `disabled` | `boolean` | `false` | Whether the picker is disabled |
338
+ | `showTime` | `boolean` | `false` | Show time selection |
339
+ | `disabledDate` | `(date: Date) => boolean` | - | Disable specific dates |
340
+ | `onChange` | `(value: string, date: Date) => void` | - | Date change handler |
341
+
342
+ ### Upload
343
+
344
+ | Prop | Type | Default | Description |
345
+ |------|------|---------|-------------|
346
+ | `action` | `string` | - | Upload URL |
347
+ | `method` | `string` | `'post'` | HTTP method |
348
+ | `accept` | `string` | - | Accepted file types |
349
+ | `multiple` | `boolean` | `false` | Allow multiple file selection |
350
+ | `draggable` | `boolean` | `false` | Enable drag-and-drop upload |
351
+ | `disabled` | `boolean` | `false` | Whether the upload is disabled |
352
+ | `size` | `'small' \| 'middle' \| 'large'` | `'middle'` | Upload area size |
353
+ | `showUploadList` | `boolean` | `true` | Show file list |
354
+ | `fileList` | `UploadFile[]` | - | File list (controlled) |
355
+ | `defaultFileList` | `UploadFile[]` | `[]` | Default file list |
356
+ | `maxCount` | `number` | - | Max upload count |
357
+ | `onChange` | `(file: UploadFile, fileList: UploadFile[]) => void` | - | File status change handler |
358
+ | `onRemove` | `(file: UploadFile) => boolean \| void` | - | File remove handler, return `false` to prevent |
359
+ | `beforeUpload` | `(file: File, fileList: File[]) => boolean \| void \| Promise<boolean \| void>` | - | Pre-upload hook, return `false` to cancel |
360
+
361
+ #### UploadFile
362
+
363
+ | Field | Type | Description |
364
+ |-------|------|-------------|
365
+ | `uid` | `string` | Unique file identifier |
366
+ | `name` | `string` | File name |
367
+ | `status` | `'pending' \| 'uploading' \| 'success' \| 'error'` | Upload status |
368
+ | `percent` | `number` | Upload progress (0-100) |
369
+ | `url` | `string` | File access URL |
370
+ | `response` | `unknown` | Upload response data |
371
+ | `error` | `string` | Error message |
372
+
373
+ ### Drawer
374
+
375
+ | Prop | Type | Default | Description |
376
+ |------|------|---------|-------------|
377
+ | `open` | `boolean` | `false` | Whether the drawer is visible |
378
+ | `title` | `ReactNode` | - | Drawer title |
379
+ | `footer` | `ReactNode \| null` | - | Footer content, `null` to hide |
380
+ | `placement` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'right'` | Drawer placement |
381
+ | `size` | `'small' \| 'middle' \| 'large'` | `'middle'` | Drawer size (378/480/736px) |
382
+ | `width` | `number \| string` | - | Custom width (for left/right placement) |
383
+ | `height` | `number \| string` | - | Custom height (for top/bottom placement) |
384
+ | `closable` | `boolean` | `true` | Show close button |
385
+ | `closeIcon` | `ReactNode` | - | Custom close icon |
386
+ | `mask` | `boolean` | `true` | Show mask overlay |
387
+ | `maskClosable` | `boolean` | `true` | Close on mask click |
388
+ | `keyboard` | `boolean` | `true` | Close on ESC key |
389
+ | `loading` | `boolean` | `false` | Loading state |
390
+ | `extra` | `ReactNode` | - | Extra content in header |
391
+ | `destroyOnClose` | `boolean` | `false` | Destroy content when closed |
392
+ | `forceRender` | `boolean` | `false` | Force render content even when hidden |
393
+ | `push` | `boolean \| { distance?: number \| string }` | `false` | Push behavior when nested drawers |
394
+ | `zIndex` | `number` | - | Z-index of the drawer |
395
+ | `onClose` | `(e: MouseEvent) => void` | - | Close handler |
396
+ | `afterOpenChange` | `(open: boolean) => void` | - | Callback after open state changed |
397
+
398
+ ## Development
399
+
400
+ ```bash
401
+ # Install dependencies
402
+ pnpm install
403
+
404
+ # Start dev server
405
+ pnpm dev
406
+
407
+ # Build
408
+ pnpm build
409
+
410
+ # Run tests
411
+ pnpm test
412
+
413
+ # Lint
414
+ pnpm lint
415
+
416
+ # Format
417
+ pnpm format
418
+ ```
419
+
420
+ ## License
421
+
422
+ MIT
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Button = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _ButtonModule = _interopRequireDefault(require("./Button.module.css"));
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ var _excluded = ["variant", "size", "loading", "icon", "iconPosition", "fullWidth", "children", "className"];
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
16
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
17
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
19
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
20
+ var LOADING_MAP = {
21
+ solid: _ButtonModule.default.solid,
22
+ outline: _ButtonModule.default.outline,
23
+ ghost: _ButtonModule.default.ghost,
24
+ glass: _ButtonModule.default.glass
25
+ };
26
+ var Button = exports.Button = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
27
+ var _ref$variant = _ref.variant,
28
+ variant = _ref$variant === void 0 ? 'solid' : _ref$variant,
29
+ _ref$size = _ref.size,
30
+ size = _ref$size === void 0 ? 'md' : _ref$size,
31
+ _ref$loading = _ref.loading,
32
+ loading = _ref$loading === void 0 ? false : _ref$loading,
33
+ icon = _ref.icon,
34
+ _ref$iconPosition = _ref.iconPosition,
35
+ iconPosition = _ref$iconPosition === void 0 ? 'left' : _ref$iconPosition,
36
+ _ref$fullWidth = _ref.fullWidth,
37
+ fullWidth = _ref$fullWidth === void 0 ? false : _ref$fullWidth,
38
+ children = _ref.children,
39
+ className = _ref.className,
40
+ rest = _objectWithoutProperties(_ref, _excluded);
41
+ var cls = [_ButtonModule.default.btn, LOADING_MAP[variant], className].filter(Boolean).join(' ');
42
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("button", _objectSpread(_objectSpread({
43
+ ref: ref,
44
+ className: cls,
45
+ "data-variant": variant,
46
+ "data-size": size,
47
+ "data-loading": loading || undefined,
48
+ "data-full-width": fullWidth || undefined,
49
+ disabled: loading || rest.disabled
50
+ }, rest), {}, {
51
+ children: [loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
52
+ className: _ButtonModule.default.spinner,
53
+ "aria-hidden": true
54
+ }) : icon && iconPosition === 'left' && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
55
+ className: _ButtonModule.default.iconLeft,
56
+ children: icon
57
+ }), children && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
58
+ className: _ButtonModule.default.text,
59
+ children: children
60
+ }), icon && iconPosition === 'right' && !loading && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
61
+ className: _ButtonModule.default.iconRight,
62
+ children: icon
63
+ })]
64
+ }));
65
+ });
66
+ Button.displayName = 'Button';
@@ -0,0 +1,137 @@
1
+ .btn {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ gap: 6px;
6
+ border: none;
7
+ cursor: pointer;
8
+ font-family: inherit;
9
+ font-weight: 500;
10
+ line-height: 1;
11
+ transition:
12
+ background 0.2s ease,
13
+ box-shadow 0.2s ease,
14
+ transform 0.15s ease;
15
+ user-select: none;
16
+ }
17
+
18
+ .btn:active {
19
+ transform: scale(0.97);
20
+ }
21
+
22
+ .btn:disabled {
23
+ opacity: 0.5;
24
+ cursor: not-allowed;
25
+ transform: none;
26
+ }
27
+
28
+ /* sizes */
29
+ .btn[data-size='xs'] {
30
+ height: 24px;
31
+ padding: 0 8px;
32
+ font-size: 12px;
33
+ border-radius: 4px;
34
+ }
35
+ .btn[data-size='sm'] {
36
+ height: 32px;
37
+ padding: 0 12px;
38
+ font-size: 13px;
39
+ border-radius: 6px;
40
+ }
41
+ .btn[data-size='md'] {
42
+ height: 40px;
43
+ padding: 0 16px;
44
+ font-size: 14px;
45
+ border-radius: 8px;
46
+ }
47
+ .btn[data-size='lg'] {
48
+ height: 48px;
49
+ padding: 0 24px;
50
+ font-size: 16px;
51
+ border-radius: 10px;
52
+ }
53
+ .btn[data-size='xl'] {
54
+ height: 56px;
55
+ padding: 0 32px;
56
+ font-size: 18px;
57
+ border-radius: 12px;
58
+ }
59
+
60
+ /* variants */
61
+ .solid {
62
+ background: #6c5ce7;
63
+ color: #fff;
64
+ }
65
+ .solid:hover:not(:disabled) {
66
+ background: #a29bfe;
67
+ }
68
+ .solid:active:not(:disabled) {
69
+ background: #4a3dbf;
70
+ }
71
+
72
+ .outline {
73
+ background: transparent;
74
+ color: #6c5ce7;
75
+ border: 1.5px solid #6c5ce7;
76
+ }
77
+ .outline:hover:not(:disabled) {
78
+ background: rgba(108, 92, 231, 0.06);
79
+ }
80
+ .outline:active:not(:disabled) {
81
+ background: rgba(108, 92, 231, 0.12);
82
+ }
83
+
84
+ .ghost {
85
+ background: transparent;
86
+ color: #6c5ce7;
87
+ }
88
+ .ghost:hover:not(:disabled) {
89
+ background: rgba(108, 92, 231, 0.06);
90
+ }
91
+ .ghost:active:not(:disabled) {
92
+ background: rgba(108, 92, 231, 0.12);
93
+ }
94
+
95
+ .glass {
96
+ background: rgba(108, 92, 231, 0.1);
97
+ color: #6c5ce7;
98
+ backdrop-filter: blur(8px);
99
+ border: 1px solid rgba(108, 92, 231, 0.2);
100
+ }
101
+ .glass:hover:not(:disabled) {
102
+ background: rgba(108, 92, 231, 0.18);
103
+ }
104
+
105
+ /* full width */
106
+ .btn[data-full-width] {
107
+ width: 100%;
108
+ }
109
+
110
+ /* icon */
111
+ .iconLeft,
112
+ .iconRight {
113
+ display: inline-flex;
114
+ align-items: center;
115
+ }
116
+
117
+ /* text */
118
+ .text {
119
+ display: inline-flex;
120
+ align-items: center;
121
+ }
122
+
123
+ /* spinner */
124
+ .spinner {
125
+ width: 16px;
126
+ height: 16px;
127
+ border: 2px solid currentColor;
128
+ border-top-color: transparent;
129
+ border-radius: 50%;
130
+ animation: spin 0.6s linear infinite;
131
+ }
132
+
133
+ @keyframes spin {
134
+ to {
135
+ transform: rotate(360deg);
136
+ }
137
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Button", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Button.Button;
10
+ }
11
+ });
12
+ exports.default = void 0;
13
+ var _Button = require("./Button");
14
+ var _default = exports.default = _Button.Button;