@lobehub/ui 5.51.2 → 5.52.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 (322) hide show
  1. package/es/Accordion/Accordion.mjs +1 -1
  2. package/es/Accordion/Accordion.mjs.map +1 -1
  3. package/es/ActionIconGroup/type.d.mts +2 -1
  4. package/es/Alert/Alert.mjs +1 -1
  5. package/es/AutoComplete/Select.mjs +1 -1
  6. package/es/Avatar/Avatar.mjs +2 -2
  7. package/es/Burger/Burger.mjs +2 -2
  8. package/es/Burger/Burger.mjs.map +1 -1
  9. package/es/Button/Button.mjs +1 -1
  10. package/es/CodeDiff/DiffPanel.mjs +1 -1
  11. package/es/CodeDiff/DiffPanel.mjs.map +1 -1
  12. package/es/Collapse/Collapse.mjs +1 -1
  13. package/es/ColorSwatches/ColorSwatches.mjs +21 -21
  14. package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
  15. package/es/ColorSwatches/style.mjs +3 -12
  16. package/es/ColorSwatches/style.mjs.map +1 -1
  17. package/es/DatePicker/DatePicker.mjs +1 -1
  18. package/es/DraggablePanel/DraggablePanel.mjs +1 -1
  19. package/es/Drawer/Drawer.mjs +1 -1
  20. package/es/EditableText/ControlInput.d.mts +2 -2
  21. package/es/EditableText/ControlInput.mjs +1 -1
  22. package/es/EditableText/ControlInput.mjs.map +1 -1
  23. package/es/EditableText/EditableText.mjs +1 -0
  24. package/es/EditableText/EditableText.mjs.map +1 -1
  25. package/es/EditableText/type.d.mts +5 -1
  26. package/es/EmojiPicker/AvatarUploader.mjs +76 -71
  27. package/es/EmojiPicker/AvatarUploader.mjs.map +1 -1
  28. package/es/EmojiPicker/EmojiPicker.mjs +12 -6
  29. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  30. package/es/EmojiPicker/style.mjs +32 -9
  31. package/es/EmojiPicker/style.mjs.map +1 -1
  32. package/es/EmojiPicker/type.d.mts +2 -1
  33. package/es/Form/Form.mjs +1 -1
  34. package/es/Form/components/FormDivider.mjs +1 -1
  35. package/es/Form/components/FormItem.mjs +1 -1
  36. package/es/Form/components/FormSubmitFooter.mjs +1 -1
  37. package/es/Form/components/FormTitle.mjs +1 -1
  38. package/es/GroupAvatar/GroupAvatar.mjs +1 -1
  39. package/es/GroupAvatar/GroupAvatar.mjs.map +1 -1
  40. package/es/GroupAvatar/type.d.mts +2 -1
  41. package/es/Highlighter/Highlighter.mjs +1 -1
  42. package/es/Highlighter/Highlighter.mjs.map +1 -1
  43. package/es/Highlighter/LangSelect.mjs +23 -13
  44. package/es/Highlighter/LangSelect.mjs.map +1 -1
  45. package/es/Highlighter/style.mjs +1 -1
  46. package/es/Highlighter/style.mjs.map +1 -1
  47. package/es/HtmlPreview/HtmlPreview.mjs +28 -1
  48. package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
  49. package/es/Image/viewer/ImageViewer.mjs +1 -1
  50. package/es/Image/viewer/ImageViewer.mjs.map +1 -1
  51. package/es/Image/viewer/Toolbar.mjs +1 -1
  52. package/es/Input/Input.mjs +1 -1
  53. package/es/Input/InputNumber.mjs +1 -1
  54. package/es/Input/InputOPT.mjs +1 -1
  55. package/es/Input/InputPassword.mjs +1 -1
  56. package/es/Input/TextArea.mjs +1 -1
  57. package/es/Menu/Menu.mjs +1 -1
  58. package/es/Menu/index.d.mts +2 -1
  59. package/es/Menu/index.mjs +1 -1
  60. package/es/Menu/itemInterface.d.mts +71 -0
  61. package/es/Menu/type.d.mts +8 -8
  62. package/es/Mermaid/Mermaid.mjs +1 -1
  63. package/es/Mermaid/Mermaid.mjs.map +1 -1
  64. package/es/Modal/Modal.mjs +1 -1
  65. package/es/SearchBar/SearchBar.mjs +1 -1
  66. package/es/SearchBar/SearchBar.mjs.map +1 -1
  67. package/es/SearchBar/type.d.mts +2 -2
  68. package/es/Segmented/Segmented.mjs +1 -1
  69. package/es/Select/Select.mjs +1 -1
  70. package/es/SliderWithInput/SliderWithInput.mjs +1 -1
  71. package/es/Tabs/Tabs.mjs +1 -1
  72. package/es/Tag/Tag.mjs +1 -1
  73. package/es/ThemeProvider/ConfigProvider.mjs +1 -1
  74. package/es/ThemeProvider/ThemeProvider.mjs +1 -1
  75. package/es/ThemeSwitch/ThemeSwitch.mjs +1 -1
  76. package/es/Toc/Toc.mjs +1 -1
  77. package/es/Toc/TocMobile.mjs +1 -1
  78. package/es/awesome/AgentSkillCard/AgentSkillCard.mjs +1 -1
  79. package/es/awesome/Hero/Hero.mjs +1 -1
  80. package/es/awesome/LandingSection/LandingSection.mjs +1 -1
  81. package/es/base-ui/Anchor/Anchor.d.mts +6 -0
  82. package/es/base-ui/Anchor/Anchor.mjs +141 -0
  83. package/es/base-ui/Anchor/Anchor.mjs.map +1 -0
  84. package/es/base-ui/Anchor/index.d.mts +3 -0
  85. package/es/base-ui/Anchor/style.mjs +80 -0
  86. package/es/base-ui/Anchor/style.mjs.map +1 -0
  87. package/es/base-ui/Anchor/type.d.mts +20 -0
  88. package/es/base-ui/AutoComplete/AutoComplete.mjs.map +1 -1
  89. package/es/base-ui/Avatar/Avatar.mjs +1 -1
  90. package/es/base-ui/Breadcrumb/Breadcrumb.d.mts +6 -0
  91. package/es/base-ui/Breadcrumb/Breadcrumb.mjs +58 -0
  92. package/es/base-ui/Breadcrumb/Breadcrumb.mjs.map +1 -0
  93. package/es/base-ui/Breadcrumb/index.d.mts +3 -0
  94. package/es/base-ui/Breadcrumb/style.mjs +65 -0
  95. package/es/base-ui/Breadcrumb/style.mjs.map +1 -0
  96. package/es/base-ui/Breadcrumb/type.d.mts +24 -0
  97. package/es/base-ui/Burger/Burger.d.mts +6 -0
  98. package/es/base-ui/Burger/Burger.mjs +69 -0
  99. package/es/base-ui/Burger/Burger.mjs.map +1 -0
  100. package/es/base-ui/Burger/index.d.mts +3 -0
  101. package/es/base-ui/Burger/style.mjs +63 -0
  102. package/es/base-ui/Burger/style.mjs.map +1 -0
  103. package/es/base-ui/Burger/type.d.mts +23 -0
  104. package/es/base-ui/Carousel/Carousel.d.mts +6 -0
  105. package/es/base-ui/Carousel/Carousel.mjs +157 -0
  106. package/es/base-ui/Carousel/Carousel.mjs.map +1 -0
  107. package/es/base-ui/Carousel/index.d.mts +3 -0
  108. package/es/base-ui/Carousel/style.mjs +88 -0
  109. package/es/base-ui/Carousel/style.mjs.map +1 -0
  110. package/es/base-ui/Carousel/type.d.mts +23 -0
  111. package/es/base-ui/ColorPicker/ColorPicker.d.mts +6 -0
  112. package/es/base-ui/ColorPicker/ColorPicker.mjs +227 -0
  113. package/es/base-ui/ColorPicker/ColorPicker.mjs.map +1 -0
  114. package/es/base-ui/ColorPicker/SaturationArea.mjs +64 -0
  115. package/es/base-ui/ColorPicker/SaturationArea.mjs.map +1 -0
  116. package/es/base-ui/ColorPicker/color.mjs +28 -0
  117. package/es/base-ui/ColorPicker/color.mjs.map +1 -0
  118. package/es/base-ui/ColorPicker/index.d.mts +3 -0
  119. package/es/base-ui/ColorPicker/style.mjs +180 -0
  120. package/es/base-ui/ColorPicker/style.mjs.map +1 -0
  121. package/es/base-ui/ColorPicker/type.d.mts +20 -0
  122. package/es/base-ui/ContextMenu/ContextMenuHost.mjs.map +1 -1
  123. package/es/base-ui/ContextMenu/renderItems.d.mts +0 -1
  124. package/es/base-ui/ContextMenu/renderItems.mjs.map +1 -1
  125. package/es/base-ui/DatePicker/CalendarPanel.mjs +188 -0
  126. package/es/base-ui/DatePicker/CalendarPanel.mjs.map +1 -0
  127. package/es/base-ui/DatePicker/DatePicker.d.mts +6 -0
  128. package/es/base-ui/DatePicker/DatePicker.mjs +88 -0
  129. package/es/base-ui/DatePicker/DatePicker.mjs.map +1 -0
  130. package/es/base-ui/DatePicker/DateRangePicker.d.mts +6 -0
  131. package/es/base-ui/DatePicker/DateRangePicker.mjs +128 -0
  132. package/es/base-ui/DatePicker/DateRangePicker.mjs.map +1 -0
  133. package/es/base-ui/DatePicker/PickerShell.mjs +43 -0
  134. package/es/base-ui/DatePicker/PickerShell.mjs.map +1 -0
  135. package/es/base-ui/DatePicker/calendar.d.mts +5 -0
  136. package/es/base-ui/DatePicker/calendar.mjs +46 -0
  137. package/es/base-ui/DatePicker/calendar.mjs.map +1 -0
  138. package/es/base-ui/DatePicker/index.d.mts +5 -0
  139. package/es/base-ui/DatePicker/style.mjs +193 -0
  140. package/es/base-ui/DatePicker/style.mjs.map +1 -0
  141. package/es/base-ui/DatePicker/type.d.mts +35 -0
  142. package/es/base-ui/Descriptions/Descriptions.d.mts +6 -0
  143. package/es/base-ui/Descriptions/Descriptions.mjs +62 -0
  144. package/es/base-ui/Descriptions/Descriptions.mjs.map +1 -0
  145. package/es/base-ui/Descriptions/index.d.mts +3 -0
  146. package/es/base-ui/Descriptions/style.mjs +64 -0
  147. package/es/base-ui/Descriptions/style.mjs.map +1 -0
  148. package/es/base-ui/Descriptions/type.d.mts +28 -0
  149. package/es/base-ui/Divider/Divider.d.mts +6 -0
  150. package/es/base-ui/Divider/Divider.mjs +30 -0
  151. package/es/base-ui/Divider/Divider.mjs.map +1 -0
  152. package/es/base-ui/Divider/index.d.mts +3 -0
  153. package/es/base-ui/Divider/style.mjs +59 -0
  154. package/es/base-ui/Divider/style.mjs.map +1 -0
  155. package/es/base-ui/Divider/type.d.mts +12 -0
  156. package/es/base-ui/Drawer/atoms.mjs.map +1 -1
  157. package/es/base-ui/DropdownMenu/atoms.mjs +1 -1
  158. package/es/base-ui/DropdownMenu/atoms.mjs.map +1 -1
  159. package/es/base-ui/DropdownMenu/renderItems.d.mts +0 -1
  160. package/es/base-ui/DropdownMenu/renderItems.mjs.map +1 -1
  161. package/es/base-ui/Form/components/FormTitle.mjs +1 -1
  162. package/es/base-ui/Form/components/FormTitle.mjs.map +1 -1
  163. package/es/base-ui/Form/type.d.mts +2 -2
  164. package/es/base-ui/Input/ClearButton.mjs +32 -0
  165. package/es/base-ui/Input/ClearButton.mjs.map +1 -0
  166. package/es/base-ui/Input/Input.mjs +30 -4
  167. package/es/base-ui/Input/Input.mjs.map +1 -1
  168. package/es/base-ui/Input/InputNumber.mjs +43 -22
  169. package/es/base-ui/Input/InputNumber.mjs.map +1 -1
  170. package/es/base-ui/Input/TextArea.mjs +50 -13
  171. package/es/base-ui/Input/TextArea.mjs.map +1 -1
  172. package/es/base-ui/Input/clearNativeValue.mjs +12 -0
  173. package/es/base-ui/Input/clearNativeValue.mjs.map +1 -0
  174. package/es/base-ui/Input/pressEnter.mjs +6 -0
  175. package/es/base-ui/Input/pressEnter.mjs.map +1 -0
  176. package/es/base-ui/Input/style.d.mts +5 -1
  177. package/es/base-ui/Input/style.mjs +67 -4
  178. package/es/base-ui/Input/style.mjs.map +1 -1
  179. package/es/base-ui/Input/type.d.mts +13 -2
  180. package/es/base-ui/List/List.d.mts +6 -0
  181. package/es/base-ui/List/List.mjs +50 -0
  182. package/es/base-ui/List/List.mjs.map +1 -0
  183. package/es/base-ui/List/ListRow.mjs +74 -0
  184. package/es/base-ui/List/ListRow.mjs.map +1 -0
  185. package/es/base-ui/List/index.d.mts +3 -0
  186. package/es/base-ui/List/style.mjs +146 -0
  187. package/es/base-ui/List/style.mjs.map +1 -0
  188. package/es/base-ui/List/type.d.mts +48 -0
  189. package/es/base-ui/Modal/atoms.mjs.map +1 -1
  190. package/es/base-ui/Modal/imperative.mjs +1 -1
  191. package/es/base-ui/Modal/imperative.mjs.map +1 -1
  192. package/es/base-ui/Modal/type.d.mts +1 -0
  193. package/es/base-ui/Popover/PopoverPortal.mjs.map +1 -1
  194. package/es/base-ui/Progress/Progress.mjs +16 -14
  195. package/es/base-ui/Progress/Progress.mjs.map +1 -1
  196. package/es/base-ui/Progress/style.mjs +16 -25
  197. package/es/base-ui/Progress/style.mjs.map +1 -1
  198. package/es/base-ui/QRCode/QRCode.d.mts +6 -0
  199. package/es/base-ui/QRCode/QRCode.mjs +105 -0
  200. package/es/base-ui/QRCode/QRCode.mjs.map +1 -0
  201. package/es/base-ui/QRCode/index.d.mts +3 -0
  202. package/es/base-ui/QRCode/qrPath.mjs +16 -0
  203. package/es/base-ui/QRCode/qrPath.mjs.map +1 -0
  204. package/es/base-ui/QRCode/style.mjs +52 -0
  205. package/es/base-ui/QRCode/style.mjs.map +1 -0
  206. package/es/base-ui/QRCode/type.d.mts +19 -0
  207. package/es/base-ui/Rate/Rate.d.mts +6 -0
  208. package/es/base-ui/Rate/Rate.mjs +111 -0
  209. package/es/base-ui/Rate/Rate.mjs.map +1 -0
  210. package/es/base-ui/Rate/index.d.mts +3 -0
  211. package/es/base-ui/Rate/style.mjs +81 -0
  212. package/es/base-ui/Rate/style.mjs.map +1 -0
  213. package/es/base-ui/Rate/type.d.mts +19 -0
  214. package/es/base-ui/Select/atoms.mjs.map +1 -1
  215. package/es/base-ui/Select/hooks.mjs.map +1 -1
  216. package/es/base-ui/Statistic/Statistic.d.mts +6 -0
  217. package/es/base-ui/Statistic/Statistic.mjs +42 -0
  218. package/es/base-ui/Statistic/Statistic.mjs.map +1 -0
  219. package/es/base-ui/Statistic/formatValue.d.mts +5 -0
  220. package/es/base-ui/Statistic/formatValue.mjs +23 -0
  221. package/es/base-ui/Statistic/formatValue.mjs.map +1 -0
  222. package/es/base-ui/Statistic/index.d.mts +4 -0
  223. package/es/base-ui/Statistic/style.mjs +34 -0
  224. package/es/base-ui/Statistic/style.mjs.map +1 -0
  225. package/es/base-ui/Statistic/type.d.mts +23 -0
  226. package/es/base-ui/Steps/Steps.d.mts +6 -0
  227. package/es/base-ui/Steps/Steps.mjs +74 -0
  228. package/es/base-ui/Steps/Steps.mjs.map +1 -0
  229. package/es/base-ui/Steps/index.d.mts +3 -0
  230. package/es/base-ui/Steps/style.mjs +155 -0
  231. package/es/base-ui/Steps/style.mjs.map +1 -0
  232. package/es/base-ui/Steps/type.d.mts +32 -0
  233. package/es/base-ui/Table/FilterMenu.mjs +45 -0
  234. package/es/base-ui/Table/FilterMenu.mjs.map +1 -0
  235. package/es/base-ui/Table/Table.d.mts +10 -0
  236. package/es/base-ui/Table/Table.mjs +134 -0
  237. package/es/base-ui/Table/Table.mjs.map +1 -0
  238. package/es/base-ui/Table/TableBody.mjs +59 -0
  239. package/es/base-ui/Table/TableBody.mjs.map +1 -0
  240. package/es/base-ui/Table/TableHead.mjs +50 -0
  241. package/es/base-ui/Table/TableHead.mjs.map +1 -0
  242. package/es/base-ui/Table/features.mjs +12 -0
  243. package/es/base-ui/Table/features.mjs.map +1 -0
  244. package/es/base-ui/Table/fixedOffsets.mjs +29 -0
  245. package/es/base-ui/Table/fixedOffsets.mjs.map +1 -0
  246. package/es/base-ui/Table/index.d.mts +3 -0
  247. package/es/base-ui/Table/style.mjs +168 -0
  248. package/es/base-ui/Table/style.mjs.map +1 -0
  249. package/es/base-ui/Table/toColumnDefs.mjs +26 -0
  250. package/es/base-ui/Table/toColumnDefs.mjs.map +1 -0
  251. package/es/base-ui/Table/type.d.mts +68 -0
  252. package/es/base-ui/Table/useTableState.mjs +99 -0
  253. package/es/base-ui/Table/useTableState.mjs.map +1 -0
  254. package/es/base-ui/Toast/imperative.mjs.map +1 -1
  255. package/es/base-ui/Tooltip/TooltipGroup.mjs.map +1 -1
  256. package/es/base-ui/Tooltip/TooltipStandalone.mjs.map +1 -1
  257. package/es/base-ui/index.d.mts +66 -21
  258. package/es/base-ui/index.mjs +42 -26
  259. package/es/base-ui/panelStyles.mjs +95 -0
  260. package/es/base-ui/panelStyles.mjs.map +1 -0
  261. package/es/chat/ChatList/components/HistoryDivider.mjs +9 -6
  262. package/es/chat/ChatList/components/HistoryDivider.mjs.map +1 -1
  263. package/es/chat/MessageModal/MessageModal.mjs +1 -1
  264. package/es/chat/TokenTag/TokenTag.mjs +1 -1
  265. package/es/color/CssVar/VarRow.mjs +1 -1
  266. package/es/color/CssVar/index.mjs +1 -1
  267. package/es/dashboard/FilterSidebar/FilterSidebar.mjs +1 -1
  268. package/es/i18n/resources/en/burger.d.mts +8 -0
  269. package/es/i18n/resources/en/burger.mjs +9 -0
  270. package/es/i18n/resources/en/burger.mjs.map +1 -0
  271. package/es/i18n/resources/en/colorPicker.d.mts +12 -0
  272. package/es/i18n/resources/en/colorPicker.mjs +13 -0
  273. package/es/i18n/resources/en/colorPicker.mjs.map +1 -0
  274. package/es/i18n/resources/en/common.d.mts +1 -0
  275. package/es/i18n/resources/en/common.mjs +1 -0
  276. package/es/i18n/resources/en/common.mjs.map +1 -1
  277. package/es/i18n/resources/en/datePicker.d.mts +13 -0
  278. package/es/i18n/resources/en/datePicker.mjs +14 -0
  279. package/es/i18n/resources/en/datePicker.mjs.map +1 -0
  280. package/es/i18n/resources/en/index.d.mts +15 -11
  281. package/es/i18n/resources/en/index.mjs +9 -1
  282. package/es/i18n/resources/en/index.mjs.map +1 -1
  283. package/es/i18n/resources/en/qrCode.d.mts +9 -0
  284. package/es/i18n/resources/en/qrCode.mjs +10 -0
  285. package/es/i18n/resources/en/qrCode.mjs.map +1 -0
  286. package/es/i18n/resources/zhCn/burger.d.mts +8 -0
  287. package/es/i18n/resources/zhCn/burger.mjs +9 -0
  288. package/es/i18n/resources/zhCn/burger.mjs.map +1 -0
  289. package/es/i18n/resources/zhCn/colorPicker.d.mts +12 -0
  290. package/es/i18n/resources/zhCn/colorPicker.mjs +13 -0
  291. package/es/i18n/resources/zhCn/colorPicker.mjs.map +1 -0
  292. package/es/i18n/resources/zhCn/common.d.mts +1 -0
  293. package/es/i18n/resources/zhCn/common.mjs +1 -0
  294. package/es/i18n/resources/zhCn/common.mjs.map +1 -1
  295. package/es/i18n/resources/zhCn/datePicker.d.mts +13 -0
  296. package/es/i18n/resources/zhCn/datePicker.mjs +14 -0
  297. package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -0
  298. package/es/i18n/resources/zhCn/index.d.mts +15 -11
  299. package/es/i18n/resources/zhCn/index.mjs +9 -1
  300. package/es/i18n/resources/zhCn/index.mjs.map +1 -1
  301. package/es/i18n/resources/zhCn/qrCode.d.mts +9 -0
  302. package/es/i18n/resources/zhCn/qrCode.mjs +10 -0
  303. package/es/i18n/resources/zhCn/qrCode.mjs.map +1 -0
  304. package/es/i18n/types.d.mts +14 -10
  305. package/es/index.d.mts +12 -11
  306. package/es/index.mjs +23 -23
  307. package/es/mdx/Cards/Card.d.mts +2 -2
  308. package/es/mdx/Cards/Card.mjs +1 -1
  309. package/es/mdx/Cards/Card.mjs.map +1 -1
  310. package/es/mdx/Mdx/index.mjs +1 -1
  311. package/es/mdx/Mdx/index.mjs.map +1 -1
  312. package/es/mdx/Tabs/index.d.mts +2 -2
  313. package/es/mdx/Tabs/index.mjs +7 -2
  314. package/es/mdx/Tabs/index.mjs.map +1 -1
  315. package/es/mdx/Tabs/style.mjs +33 -1
  316. package/es/mdx/Tabs/style.mjs.map +1 -1
  317. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs +1 -1
  318. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs.map +1 -1
  319. package/es/static-css/baseline.mjs +1 -4
  320. package/es/static-css/baseline.mjs.map +1 -1
  321. package/es/static-css/buildAntdStaticCss.mjs +1 -1
  322. package/package.json +3 -1
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import Skeleton from "../Skeleton/index.mjs";
3
+ import { formatStatisticValue } from "./formatValue.mjs";
4
+ import { styles } from "./style.mjs";
5
+ import { memo } from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { cx } from "antd-style";
8
+ //#region src/base-ui/Statistic/Statistic.tsx
9
+ const Statistic = memo(({ className, classNames, formatter, loading = false, precision, prefix, ref, styles: customStyles, suffix, title, value, ...rest }) => {
10
+ return /* @__PURE__ */ jsxs("div", {
11
+ className: cx(styles.root, className),
12
+ ref,
13
+ ...rest,
14
+ children: [title != null && /* @__PURE__ */ jsx("div", {
15
+ className: cx(styles.title, classNames?.title),
16
+ style: customStyles?.title,
17
+ children: title
18
+ }), loading ? /* @__PURE__ */ jsx(Skeleton, {
19
+ height: 30,
20
+ width: 96
21
+ }) : /* @__PURE__ */ jsxs("div", {
22
+ className: cx(styles.value, classNames?.value),
23
+ style: customStyles?.value,
24
+ children: [
25
+ prefix != null && /* @__PURE__ */ jsx("span", {
26
+ className: styles.affix,
27
+ children: prefix
28
+ }),
29
+ /* @__PURE__ */ jsx("span", { children: formatter ? formatter(value) : formatStatisticValue(value, precision) }),
30
+ suffix != null && /* @__PURE__ */ jsx("span", {
31
+ className: styles.affix,
32
+ children: suffix
33
+ })
34
+ ]
35
+ })]
36
+ });
37
+ });
38
+ Statistic.displayName = "Statistic";
39
+ //#endregion
40
+ export { Statistic as default };
41
+
42
+ //# sourceMappingURL=Statistic.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Statistic.mjs","names":[],"sources":["../../../src/base-ui/Statistic/Statistic.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\n\nimport Skeleton from '@/base-ui/Skeleton';\n\nimport { formatStatisticValue } from './formatValue';\nimport { styles } from './style';\nimport type { StatisticProps } from './type';\n\nconst Statistic = memo<StatisticProps>(\n ({\n className,\n classNames,\n formatter,\n loading = false,\n precision,\n prefix,\n ref,\n styles: customStyles,\n suffix,\n title,\n value,\n ...rest\n }) => {\n return (\n <div className={cx(styles.root, className)} ref={ref} {...rest}>\n {title != null && (\n <div className={cx(styles.title, classNames?.title)} style={customStyles?.title}>\n {title}\n </div>\n )}\n {loading ? (\n <Skeleton height={30} width={96} />\n ) : (\n <div className={cx(styles.value, classNames?.value)} style={customStyles?.value}>\n {prefix != null && <span className={styles.affix}>{prefix}</span>}\n <span>{formatter ? formatter(value) : formatStatisticValue(value, precision)}</span>\n {suffix != null && <span className={styles.affix}>{suffix}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nStatistic.displayName = 'Statistic';\n\nexport default Statistic;\n"],"mappings":";;;;;;;;AAWA,MAAM,YAAY,MACf,EACC,WACA,YACA,WACA,UAAU,OACV,WACA,QACA,KACA,QAAQ,cACR,QACA,OACA,OACA,GAAG,WACC;CACJ,OACE,qBAAC,OAAD;EAAK,WAAW,GAAG,OAAO,MAAM,SAAS;EAAQ;EAAK,GAAI;EAA1D,UAAA,CACG,SAAS,QACR,oBAAC,OAAD;GAAK,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;GAAG,OAAO,cAAc;GACvE,UAAA;EACE,CAAA,GAEN,UACC,oBAAC,UAAD;GAAU,QAAQ;GAAI,OAAO;EAAK,CAAA,IAElC,qBAAC,OAAD;GAAK,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;GAAG,OAAO,cAAc;GAA1E,UAAA;IACG,UAAU,QAAQ,oBAAC,QAAD;KAAM,WAAW,OAAO;KAAQ,UAAA;IAAa,CAAA;IAChE,oBAAC,QAAD,EAAA,UAAO,YAAY,UAAU,KAAK,IAAI,qBAAqB,OAAO,SAAS,EAAQ,CAAA;IAClF,UAAU,QAAQ,oBAAC,QAAD;KAAM,WAAW,OAAO;KAAQ,UAAA;IAAa,CAAA;GAC7D;EAEJ,CAAA,CAAA;;AAET,CACF;AAEA,UAAU,cAAc"}
@@ -0,0 +1,5 @@
1
+ //#region src/base-ui/Statistic/formatValue.d.ts
2
+ declare const formatStatisticValue: (value: number | string | undefined, precision?: number) => string;
3
+ //#endregion
4
+ export { formatStatisticValue };
5
+ //# sourceMappingURL=formatValue.d.mts.map
@@ -0,0 +1,23 @@
1
+ //#region src/base-ui/Statistic/formatValue.ts
2
+ const grouping = new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 });
3
+ const formatStatisticValue = (value, precision) => {
4
+ if (value === void 0 || value === null) return "";
5
+ if (typeof value === "string") {
6
+ if (!/^-?\d+(\.\d+)?$/.test(value)) return value;
7
+ return formatStatisticValue(Number(value), precision);
8
+ }
9
+ if (!Number.isFinite(value)) return String(value);
10
+ if (precision !== void 0) return new Intl.NumberFormat("en-US", {
11
+ maximumFractionDigits: precision,
12
+ minimumFractionDigits: precision
13
+ }).format(value);
14
+ const raw = String(value);
15
+ if (raw.includes("e")) return raw;
16
+ const [integer, decimal] = raw.split(".");
17
+ const grouped = grouping.format(Number(integer));
18
+ return decimal ? `${grouped}.${decimal}` : grouped;
19
+ };
20
+ //#endregion
21
+ export { formatStatisticValue };
22
+
23
+ //# sourceMappingURL=formatValue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatValue.mjs","names":[],"sources":["../../../src/base-ui/Statistic/formatValue.ts"],"sourcesContent":["const grouping = new Intl.NumberFormat('en-US', { maximumFractionDigits: 0 });\n\nexport const formatStatisticValue = (\n value: number | string | undefined,\n precision?: number,\n): string => {\n if (value === undefined || value === null) return '';\n if (typeof value === 'string') {\n if (!/^-?\\d+(\\.\\d+)?$/.test(value)) return value;\n return formatStatisticValue(Number(value), precision);\n }\n if (!Number.isFinite(value)) return String(value);\n\n if (precision !== undefined) {\n return new Intl.NumberFormat('en-US', {\n maximumFractionDigits: precision,\n minimumFractionDigits: precision,\n }).format(value);\n }\n\n const raw = String(value);\n if (raw.includes('e')) return raw;\n\n const [integer, decimal] = raw.split('.');\n const grouped = grouping.format(Number(integer));\n\n return decimal ? `${grouped}.${decimal}` : grouped;\n};\n"],"mappings":";AAAA,MAAM,WAAW,IAAI,KAAK,aAAa,SAAS,EAAE,uBAAuB,EAAE,CAAC;AAE5E,MAAa,wBACX,OACA,cACW;CACX,IAAI,UAAU,KAAA,KAAa,UAAU,MAAM,OAAO;CAClD,IAAI,OAAO,UAAU,UAAU;EAC7B,IAAI,CAAC,kBAAkB,KAAK,KAAK,GAAG,OAAO;EAC3C,OAAO,qBAAqB,OAAO,KAAK,GAAG,SAAS;CACtD;CACA,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG,OAAO,OAAO,KAAK;CAEhD,IAAI,cAAc,KAAA,GAChB,OAAO,IAAI,KAAK,aAAa,SAAS;EACpC,uBAAuB;EACvB,uBAAuB;CACzB,CAAC,CAAC,CAAC,OAAO,KAAK;CAGjB,MAAM,MAAM,OAAO,KAAK;CACxB,IAAI,IAAI,SAAS,GAAG,GAAG,OAAO;CAE9B,MAAM,CAAC,SAAS,WAAW,IAAI,MAAM,GAAG;CACxC,MAAM,UAAU,SAAS,OAAO,OAAO,OAAO,CAAC;CAE/C,OAAO,UAAU,GAAG,QAAQ,GAAG,YAAY;AAC7C"}
@@ -0,0 +1,4 @@
1
+ import { formatStatisticValue } from "./formatValue.mjs";
2
+ import { StatisticProps } from "./type.mjs";
3
+ import Statistic from "./Statistic.mjs";
4
+ export { type StatisticProps, Statistic as default, formatStatisticValue };
@@ -0,0 +1,34 @@
1
+ import { createStaticStyles } from "antd-style";
2
+ //#region src/base-ui/Statistic/style.ts
3
+ const styles = createStaticStyles(({ css, cssVar }) => ({
4
+ affix: css`
5
+ font-size: 14px;
6
+ font-weight: 400;
7
+ color: ${cssVar.colorTextSecondary};
8
+ `,
9
+ root: css`
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: 4px;
13
+ `,
14
+ title: css`
15
+ font-size: 14px;
16
+ line-height: 1.5;
17
+ color: ${cssVar.colorTextDescription};
18
+ `,
19
+ value: css`
20
+ display: flex;
21
+ gap: 4px;
22
+ align-items: baseline;
23
+
24
+ font-size: 24px;
25
+ font-weight: 600;
26
+ font-variant-numeric: tabular-nums;
27
+ line-height: 1.25;
28
+ color: ${cssVar.colorText};
29
+ `
30
+ }));
31
+ //#endregion
32
+ export { styles };
33
+
34
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Statistic/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n affix: css`\n font-size: 14px;\n font-weight: 400;\n color: ${cssVar.colorTextSecondary};\n `,\n root: css`\n display: flex;\n flex-direction: column;\n gap: 4px;\n `,\n title: css`\n font-size: 14px;\n line-height: 1.5;\n color: ${cssVar.colorTextDescription};\n `,\n value: css`\n display: flex;\n gap: 4px;\n align-items: baseline;\n\n font-size: 24px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n line-height: 1.25;\n color: ${cssVar.colorText};\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,OAAO,GAAG;;;aAGC,OAAO,mBAAmB;;CAErC,MAAM,GAAG;;;;;CAKT,OAAO,GAAG;;;aAGC,OAAO,qBAAqB;;CAEvC,OAAO,GAAG;;;;;;;;;aASC,OAAO,UAAU;;AAE9B,EAAE"}
@@ -0,0 +1,23 @@
1
+ import { CSSProperties, ComponentProps, ReactNode, Ref } from "react";
2
+ //#region src/base-ui/Statistic/type.d.ts
3
+ interface StatisticProps extends Omit<ComponentProps<'div'>, 'title' | 'prefix'> {
4
+ classNames?: {
5
+ title?: string;
6
+ value?: string;
7
+ };
8
+ formatter?: (value: number | string | undefined) => ReactNode;
9
+ loading?: boolean;
10
+ precision?: number;
11
+ prefix?: ReactNode;
12
+ ref?: Ref<HTMLDivElement>;
13
+ styles?: {
14
+ title?: CSSProperties;
15
+ value?: CSSProperties;
16
+ };
17
+ suffix?: ReactNode;
18
+ title?: ReactNode;
19
+ value?: number | string;
20
+ }
21
+ //#endregion
22
+ export { StatisticProps };
23
+ //# sourceMappingURL=type.d.mts.map
@@ -0,0 +1,6 @@
1
+ import { StepsProps } from "./type.mjs";
2
+ //#region src/base-ui/Steps/Steps.d.ts
3
+ declare const Steps: import("react").NamedExoticComponent<StepsProps>;
4
+ //#endregion
5
+ export { Steps as default };
6
+ //# sourceMappingURL=Steps.d.mts.map
@@ -0,0 +1,74 @@
1
+ "use client";
2
+ import Icon from "../../Icon/Icon.mjs";
3
+ import { styles } from "./style.mjs";
4
+ import { memo } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { cx } from "antd-style";
7
+ import { Check } from "lucide-react";
8
+ //#region src/base-ui/Steps/Steps.tsx
9
+ const getStatus = (index, current, item) => {
10
+ if (item.status) return item.status;
11
+ if (current === void 0) return void 0;
12
+ if (index < current) return "finish";
13
+ if (index === current) return "process";
14
+ return "wait";
15
+ };
16
+ const renderIndicator = (item, index, status, isDot) => {
17
+ if (isDot) return null;
18
+ if (item.icon != null) return item.icon;
19
+ if (status === "finish") return /* @__PURE__ */ jsx(Icon, {
20
+ icon: Check,
21
+ size: 12
22
+ });
23
+ return index + 1;
24
+ };
25
+ const Steps = memo(({ className, classNames, current, items, orientation = "horizontal", ref, styles: customStyles, variant = "default", ...rest }) => {
26
+ const isDot = variant === "dot";
27
+ return /* @__PURE__ */ jsx("ol", {
28
+ ref,
29
+ className: cx(styles.root, orientation === "vertical" ? styles.vertical : styles.horizontal, isDot && styles.dot, className),
30
+ ...rest,
31
+ children: items.map((item, index) => {
32
+ const status = getStatus(index, current, item);
33
+ const isLast = index === items.length - 1;
34
+ return /* @__PURE__ */ jsxs("li", {
35
+ "aria-current": current !== void 0 && index === current ? "step" : void 0,
36
+ className: cx(classNames?.item),
37
+ "data-status": status ?? "guide",
38
+ style: customStyles?.item,
39
+ children: [
40
+ /* @__PURE__ */ jsx("span", {
41
+ className: cx(styles.indicator, classNames?.indicator),
42
+ style: customStyles?.indicator,
43
+ children: renderIndicator(item, index, status, isDot)
44
+ }),
45
+ (item.title != null || item.description != null) && /* @__PURE__ */ jsxs("div", {
46
+ className: styles.body,
47
+ children: [item.title != null && /* @__PURE__ */ jsx("div", {
48
+ className: cx(styles.title, classNames?.title),
49
+ style: customStyles?.title,
50
+ children: item.title
51
+ }), item.description != null && /* @__PURE__ */ jsx("div", {
52
+ className: cx(styles.description, classNames?.description),
53
+ style: customStyles?.description,
54
+ children: item.description
55
+ })]
56
+ }),
57
+ !isLast && /* @__PURE__ */ jsx("span", {
58
+ "aria-hidden": "true",
59
+ className: styles.connector,
60
+ style: isDot ? {
61
+ insetBlockStart: 20,
62
+ insetInlineStart: 3
63
+ } : void 0
64
+ })
65
+ ]
66
+ }, item.key ?? index);
67
+ })
68
+ });
69
+ });
70
+ Steps.displayName = "Steps";
71
+ //#endregion
72
+ export { Steps as default };
73
+
74
+ //# sourceMappingURL=Steps.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Steps.mjs","names":[],"sources":["../../../src/base-ui/Steps/Steps.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { Check } from 'lucide-react';\nimport { memo, type ReactNode } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { StepItem, StepsProps, StepStatus } from './type';\n\nconst getStatus = (\n index: number,\n current: number | undefined,\n item: StepItem,\n): StepStatus | undefined => {\n if (item.status) return item.status;\n if (current === undefined) return undefined;\n if (index < current) return 'finish';\n if (index === current) return 'process';\n return 'wait';\n};\n\nconst renderIndicator = (\n item: StepItem,\n index: number,\n status: StepStatus | undefined,\n isDot: boolean,\n): ReactNode => {\n if (isDot) return null;\n if (item.icon != null) return item.icon;\n if (status === 'finish') return <Icon icon={Check} size={12} />;\n return index + 1;\n};\n\nconst Steps = memo<StepsProps>(\n ({\n className,\n classNames,\n current,\n items,\n orientation = 'horizontal',\n ref,\n styles: customStyles,\n variant = 'default',\n ...rest\n }) => {\n const isDot = variant === 'dot';\n\n return (\n <ol\n ref={ref}\n className={cx(\n styles.root,\n orientation === 'vertical' ? styles.vertical : styles.horizontal,\n isDot && styles.dot,\n className,\n )}\n {...rest}\n >\n {items.map((item, index) => {\n const status = getStatus(index, current, item);\n const isLast = index === items.length - 1;\n\n return (\n <li\n aria-current={current !== undefined && index === current ? 'step' : undefined}\n className={cx(classNames?.item)}\n data-status={status ?? 'guide'}\n key={item.key ?? index}\n style={customStyles?.item}\n >\n <span\n className={cx(styles.indicator, classNames?.indicator)}\n style={customStyles?.indicator}\n >\n {renderIndicator(item, index, status, isDot)}\n </span>\n {(item.title != null || item.description != null) && (\n <div className={styles.body}>\n {item.title != null && (\n <div\n className={cx(styles.title, classNames?.title)}\n style={customStyles?.title}\n >\n {item.title}\n </div>\n )}\n {item.description != null && (\n <div\n className={cx(styles.description, classNames?.description)}\n style={customStyles?.description}\n >\n {item.description}\n </div>\n )}\n </div>\n )}\n {!isLast && (\n <span\n aria-hidden=\"true\"\n className={styles.connector}\n style={isDot ? { insetBlockStart: 20, insetInlineStart: 3 } : undefined}\n />\n )}\n </li>\n );\n })}\n </ol>\n );\n },\n);\n\nSteps.displayName = 'Steps';\n\nexport default Steps;\n"],"mappings":";;;;;;;;AAWA,MAAM,aACJ,OACA,SACA,SAC2B;CAC3B,IAAI,KAAK,QAAQ,OAAO,KAAK;CAC7B,IAAI,YAAY,KAAA,GAAW,OAAO,KAAA;CAClC,IAAI,QAAQ,SAAS,OAAO;CAC5B,IAAI,UAAU,SAAS,OAAO;CAC9B,OAAO;AACT;AAEA,MAAM,mBACJ,MACA,OACA,QACA,UACc;CACd,IAAI,OAAO,OAAO;CAClB,IAAI,KAAK,QAAQ,MAAM,OAAO,KAAK;CACnC,IAAI,WAAW,UAAU,OAAO,oBAAC,MAAD;EAAM,MAAM;EAAO,MAAM;CAAK,CAAA;CAC9D,OAAO,QAAQ;AACjB;AAEA,MAAM,QAAQ,MACX,EACC,WACA,YACA,SACA,OACA,cAAc,cACd,KACA,QAAQ,cACR,UAAU,WACV,GAAG,WACC;CACJ,MAAM,QAAQ,YAAY;CAE1B,OACE,oBAAC,MAAD;EACO;EACL,WAAW,GACT,OAAO,MACP,gBAAgB,aAAa,OAAO,WAAW,OAAO,YACtD,SAAS,OAAO,KAChB,SACF;EACA,GAAI;EAEH,UAAA,MAAM,KAAK,MAAM,UAAU;GAC1B,MAAM,SAAS,UAAU,OAAO,SAAS,IAAI;GAC7C,MAAM,SAAS,UAAU,MAAM,SAAS;GAExC,OACE,qBAAC,MAAD;IACE,gBAAc,YAAY,KAAA,KAAa,UAAU,UAAU,SAAS,KAAA;IACpE,WAAW,GAAG,YAAY,IAAI;IAC9B,eAAa,UAAU;IAEvB,OAAO,cAAc;IALvB,UAAA;KAOE,oBAAC,QAAD;MACE,WAAW,GAAG,OAAO,WAAW,YAAY,SAAS;MACrD,OAAO,cAAc;MAEpB,UAAA,gBAAgB,MAAM,OAAO,QAAQ,KAAK;KACvC,CAAA;MACJ,KAAK,SAAS,QAAQ,KAAK,eAAe,SAC1C,qBAAC,OAAD;MAAK,WAAW,OAAO;MAAvB,UAAA,CACG,KAAK,SAAS,QACb,oBAAC,OAAD;OACE,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;OAC7C,OAAO,cAAc;OAEpB,UAAA,KAAK;MACH,CAAA,GAEN,KAAK,eAAe,QACnB,oBAAC,OAAD;OACE,WAAW,GAAG,OAAO,aAAa,YAAY,WAAW;OACzD,OAAO,cAAc;OAEpB,UAAA,KAAK;MACH,CAAA,CAEJ;;KAEN,CAAC,UACA,oBAAC,QAAD;MACE,eAAY;MACZ,WAAW,OAAO;MAClB,OAAO,QAAQ;OAAE,iBAAiB;OAAI,kBAAkB;MAAE,IAAI,KAAA;KAC/D,CAAA;IAED;GApCG,GAAA,KAAK,OAAO,KAoCf;EAER,CAAC;CACC,CAAA;AAER,CACF;AAEA,MAAM,cAAc"}
@@ -0,0 +1,3 @@
1
+ import { StepItem, StepStatus, StepsProps } from "./type.mjs";
2
+ import Steps from "./Steps.mjs";
3
+ export { type StepItem, type StepStatus, type StepsProps, Steps as default };
@@ -0,0 +1,155 @@
1
+ import { createStaticStyles } from "antd-style";
2
+ //#region src/base-ui/Steps/style.ts
3
+ const styles = createStaticStyles(({ css, cssVar }) => ({
4
+ body: css`
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: 2px;
8
+ min-width: 0;
9
+ `,
10
+ connector: css`
11
+ flex: 1;
12
+ min-width: 16px;
13
+ height: 1px;
14
+ background: ${cssVar.colorBorderSecondary};
15
+
16
+ li[data-status='finish'] > & {
17
+ background: ${cssVar.colorPrimary};
18
+ }
19
+ `,
20
+ description: css`
21
+ font-size: 13px;
22
+ line-height: 1.5;
23
+ color: ${cssVar.colorTextSecondary};
24
+ `,
25
+ dot: css`
26
+ & > li > span:first-child {
27
+ width: 7px;
28
+ height: 7px;
29
+ margin-block-start: 8px;
30
+ border: 0;
31
+
32
+ background: ${cssVar.colorTextQuaternary};
33
+ }
34
+
35
+ & > li[data-status='process'] > span:first-child,
36
+ & > li[data-status='finish'] > span:first-child {
37
+ background: ${cssVar.colorPrimary};
38
+ }
39
+ `,
40
+ horizontal: css`
41
+ display: flex;
42
+ gap: 8px;
43
+ align-items: center;
44
+
45
+ & > li {
46
+ display: flex;
47
+ flex: 1;
48
+ gap: 8px;
49
+ align-items: center;
50
+
51
+ min-width: 0;
52
+ }
53
+
54
+ & > li:last-child {
55
+ flex: none;
56
+ }
57
+ `,
58
+ indicator: css`
59
+ display: inline-flex;
60
+ flex: none;
61
+ align-items: center;
62
+ justify-content: center;
63
+
64
+ width: 22px;
65
+ height: 22px;
66
+ border: 1px solid ${cssVar.colorBorder};
67
+ border-radius: 50%;
68
+
69
+ font-size: 12px;
70
+ font-weight: 500;
71
+ font-variant-numeric: tabular-nums;
72
+ color: ${cssVar.colorTextDescription};
73
+
74
+ li[data-status='process'] > & {
75
+ border-color: ${cssVar.colorPrimary};
76
+ color: ${cssVar.colorBgContainer};
77
+ background: ${cssVar.colorPrimary};
78
+ }
79
+
80
+ li[data-status='finish'] > & {
81
+ border-color: ${cssVar.colorPrimary};
82
+ color: ${cssVar.colorPrimary};
83
+ }
84
+
85
+ li[data-status='error'] > & {
86
+ border-color: ${cssVar.colorError};
87
+ color: ${cssVar.colorError};
88
+ }
89
+
90
+ li[data-status='guide'] > & {
91
+ color: ${cssVar.colorTextSecondary};
92
+ }
93
+ `,
94
+ root: css`
95
+ margin: 0;
96
+ padding: 0;
97
+ list-style: none;
98
+ `,
99
+ title: css`
100
+ font-size: 14px;
101
+ line-height: 22px;
102
+ color: ${cssVar.colorTextDescription};
103
+ white-space: nowrap;
104
+
105
+ li[data-status='process'] &,
106
+ li[data-status='finish'] &,
107
+ li[data-status='guide'] & {
108
+ color: ${cssVar.colorText};
109
+ }
110
+
111
+ li[data-status='process'] & {
112
+ font-weight: 500;
113
+ }
114
+
115
+ li[data-status='error'] & {
116
+ color: ${cssVar.colorError};
117
+ }
118
+ `,
119
+ vertical: css`
120
+ display: flex;
121
+ flex-direction: column;
122
+
123
+ & > li {
124
+ position: relative;
125
+
126
+ display: grid;
127
+ grid-template-columns: auto minmax(0, 1fr);
128
+ column-gap: 12px;
129
+
130
+ padding-block-end: 18px;
131
+ }
132
+
133
+ & > li:last-child {
134
+ padding-block-end: 0;
135
+ }
136
+
137
+ & > li > span[aria-hidden] {
138
+ position: absolute;
139
+ inset-block: 26px 4px;
140
+ inset-inline-start: 11px;
141
+
142
+ width: 1px;
143
+ min-width: 0;
144
+ height: auto;
145
+ }
146
+
147
+ & > li > div > div:first-child {
148
+ white-space: normal;
149
+ }
150
+ `
151
+ }));
152
+ //#endregion
153
+ export { styles };
154
+
155
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Steps/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n body: css`\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n `,\n connector: css`\n flex: 1;\n min-width: 16px;\n height: 1px;\n background: ${cssVar.colorBorderSecondary};\n\n li[data-status='finish'] > & {\n background: ${cssVar.colorPrimary};\n }\n `,\n description: css`\n font-size: 13px;\n line-height: 1.5;\n color: ${cssVar.colorTextSecondary};\n `,\n dot: css`\n & > li > span:first-child {\n width: 7px;\n height: 7px;\n margin-block-start: 8px;\n border: 0;\n\n background: ${cssVar.colorTextQuaternary};\n }\n\n & > li[data-status='process'] > span:first-child,\n & > li[data-status='finish'] > span:first-child {\n background: ${cssVar.colorPrimary};\n }\n `,\n horizontal: css`\n display: flex;\n gap: 8px;\n align-items: center;\n\n & > li {\n display: flex;\n flex: 1;\n gap: 8px;\n align-items: center;\n\n min-width: 0;\n }\n\n & > li:last-child {\n flex: none;\n }\n `,\n indicator: css`\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n width: 22px;\n height: 22px;\n border: 1px solid ${cssVar.colorBorder};\n border-radius: 50%;\n\n font-size: 12px;\n font-weight: 500;\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorTextDescription};\n\n li[data-status='process'] > & {\n border-color: ${cssVar.colorPrimary};\n color: ${cssVar.colorBgContainer};\n background: ${cssVar.colorPrimary};\n }\n\n li[data-status='finish'] > & {\n border-color: ${cssVar.colorPrimary};\n color: ${cssVar.colorPrimary};\n }\n\n li[data-status='error'] > & {\n border-color: ${cssVar.colorError};\n color: ${cssVar.colorError};\n }\n\n li[data-status='guide'] > & {\n color: ${cssVar.colorTextSecondary};\n }\n `,\n root: css`\n margin: 0;\n padding: 0;\n list-style: none;\n `,\n title: css`\n font-size: 14px;\n line-height: 22px;\n color: ${cssVar.colorTextDescription};\n white-space: nowrap;\n\n li[data-status='process'] &,\n li[data-status='finish'] &,\n li[data-status='guide'] & {\n color: ${cssVar.colorText};\n }\n\n li[data-status='process'] & {\n font-weight: 500;\n }\n\n li[data-status='error'] & {\n color: ${cssVar.colorError};\n }\n `,\n vertical: css`\n display: flex;\n flex-direction: column;\n\n & > li {\n position: relative;\n\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n column-gap: 12px;\n\n padding-block-end: 18px;\n }\n\n & > li:last-child {\n padding-block-end: 0;\n }\n\n & > li > span[aria-hidden] {\n position: absolute;\n inset-block: 26px 4px;\n inset-inline-start: 11px;\n\n width: 1px;\n min-width: 0;\n height: auto;\n }\n\n & > li > div > div:first-child {\n white-space: normal;\n }\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,MAAM,GAAG;;;;;;CAMT,WAAW,GAAG;;;;kBAIE,OAAO,qBAAqB;;;oBAG1B,OAAO,aAAa;;;CAGtC,aAAa,GAAG;;;aAGL,OAAO,mBAAmB;;CAErC,KAAK,GAAG;;;;;;;oBAOU,OAAO,oBAAoB;;;;;oBAK3B,OAAO,aAAa;;;CAGtC,YAAY,GAAG;;;;;;;;;;;;;;;;;;CAkBf,WAAW,GAAG;;;;;;;;wBAQQ,OAAO,YAAY;;;;;;aAM9B,OAAO,qBAAqB;;;sBAGnB,OAAO,aAAa;eAC3B,OAAO,iBAAiB;oBACnB,OAAO,aAAa;;;;sBAIlB,OAAO,aAAa;eAC3B,OAAO,aAAa;;;;sBAIb,OAAO,WAAW;eACzB,OAAO,WAAW;;;;eAIlB,OAAO,mBAAmB;;;CAGvC,MAAM,GAAG;;;;;CAKT,OAAO,GAAG;;;aAGC,OAAO,qBAAqB;;;;;;eAM1B,OAAO,UAAU;;;;;;;;eAQjB,OAAO,WAAW;;;CAG/B,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCf,EAAE"}
@@ -0,0 +1,32 @@
1
+ import { CSSProperties, ComponentProps, Key, ReactNode, Ref } from "react";
2
+ //#region src/base-ui/Steps/type.d.ts
3
+ type StepStatus = 'wait' | 'process' | 'finish' | 'error';
4
+ interface StepItem {
5
+ description?: ReactNode;
6
+ icon?: ReactNode;
7
+ key?: Key;
8
+ status?: StepStatus;
9
+ title?: ReactNode;
10
+ }
11
+ interface StepsProps extends Omit<ComponentProps<'ol'>, 'children'> {
12
+ classNames?: {
13
+ description?: string;
14
+ indicator?: string;
15
+ item?: string;
16
+ title?: string;
17
+ };
18
+ current?: number;
19
+ items: StepItem[];
20
+ orientation?: 'horizontal' | 'vertical';
21
+ ref?: Ref<HTMLOListElement>;
22
+ styles?: {
23
+ description?: CSSProperties;
24
+ indicator?: CSSProperties;
25
+ item?: CSSProperties;
26
+ title?: CSSProperties;
27
+ };
28
+ variant?: 'default' | 'dot';
29
+ }
30
+ //#endregion
31
+ export { StepItem, StepStatus, StepsProps };
32
+ //# sourceMappingURL=type.d.mts.map
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import Icon from "../../Icon/Icon.mjs";
3
+ import DropdownMenu from "../DropdownMenu/DropdownMenu.mjs";
4
+ import { styles } from "./style.mjs";
5
+ import { memo } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { cx } from "antd-style";
8
+ import { ListFilter } from "lucide-react";
9
+ //#region src/base-ui/Table/FilterMenu.tsx
10
+ const FilterMenu = memo(({ filters, label, onChange, value }) => {
11
+ const items = [
12
+ ...filters.map((filter) => ({
13
+ checked: value.includes(filter.value),
14
+ closeOnClick: false,
15
+ key: String(filter.value),
16
+ label: filter.text,
17
+ onCheckedChange: (checked) => onChange(checked ? [...value, filter.value] : value.filter((item) => item !== filter.value)),
18
+ type: "checkbox"
19
+ })),
20
+ { type: "divider" },
21
+ {
22
+ disabled: value.length === 0,
23
+ key: "__reset",
24
+ label: "Reset",
25
+ onClick: () => onChange([])
26
+ }
27
+ ];
28
+ return /* @__PURE__ */ jsx(DropdownMenu, {
29
+ items,
30
+ children: /* @__PURE__ */ jsx("button", {
31
+ "aria-label": `Filter ${label}`,
32
+ className: cx(styles.filterButton, value.length > 0 && styles.filterActive),
33
+ type: "button",
34
+ children: /* @__PURE__ */ jsx(Icon, {
35
+ icon: ListFilter,
36
+ size: 12
37
+ })
38
+ })
39
+ });
40
+ });
41
+ FilterMenu.displayName = "TableFilterMenu";
42
+ //#endregion
43
+ export { FilterMenu as default };
44
+
45
+ //# sourceMappingURL=FilterMenu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterMenu.mjs","names":[],"sources":["../../../src/base-ui/Table/FilterMenu.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ListFilter } from 'lucide-react';\nimport { memo, type ReactNode } from 'react';\n\nimport DropdownMenu from '@/base-ui/DropdownMenu';\nimport type { DropdownItem } from '@/base-ui/DropdownMenu/type';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { FilterValue } from './type';\n\ninterface FilterMenuProps {\n filters: { text: ReactNode; value: FilterValue }[];\n label: string;\n onChange: (next: FilterValue[]) => void;\n value: FilterValue[];\n}\n\nconst FilterMenu = memo<FilterMenuProps>(({ filters, label, onChange, value }) => {\n const items: DropdownItem[] = [\n ...filters.map((filter) => ({\n checked: value.includes(filter.value),\n closeOnClick: false,\n key: String(filter.value),\n label: filter.text,\n onCheckedChange: (checked: boolean) =>\n onChange(\n checked ? [...value, filter.value] : value.filter((item) => item !== filter.value),\n ),\n type: 'checkbox' as const,\n })),\n { type: 'divider' as const },\n { disabled: value.length === 0, key: '__reset', label: 'Reset', onClick: () => onChange([]) },\n ];\n\n return (\n <DropdownMenu items={items}>\n <button\n aria-label={`Filter ${label}`}\n className={cx(styles.filterButton, value.length > 0 && styles.filterActive)}\n type=\"button\"\n >\n <Icon icon={ListFilter} size={12} />\n </button>\n </DropdownMenu>\n );\n});\n\nFilterMenu.displayName = 'TableFilterMenu';\n\nexport default FilterMenu;\n"],"mappings":";;;;;;;;;AAoBA,MAAM,aAAa,MAAuB,EAAE,SAAS,OAAO,UAAU,YAAY;CAChF,MAAM,QAAwB;EAC5B,GAAG,QAAQ,KAAK,YAAY;GAC1B,SAAS,MAAM,SAAS,OAAO,KAAK;GACpC,cAAc;GACd,KAAK,OAAO,OAAO,KAAK;GACxB,OAAO,OAAO;GACd,kBAAkB,YAChB,SACE,UAAU,CAAC,GAAG,OAAO,OAAO,KAAK,IAAI,MAAM,QAAQ,SAAS,SAAS,OAAO,KAAK,CACnF;GACF,MAAM;EACR,EAAE;EACF,EAAE,MAAM,UAAmB;EAC3B;GAAE,UAAU,MAAM,WAAW;GAAG,KAAK;GAAW,OAAO;GAAS,eAAe,SAAS,CAAC,CAAC;EAAE;CAC9F;CAEA,OACE,oBAAC,cAAD;EAAqB;EACnB,UAAA,oBAAC,UAAD;GACE,cAAY,UAAU;GACtB,WAAW,GAAG,OAAO,cAAc,MAAM,SAAS,KAAK,OAAO,YAAY;GAC1E,MAAK;GAEL,UAAA,oBAAC,MAAD;IAAM,MAAM;IAAY,MAAM;GAAK,CAAA;EAC7B,CAAA;CACI,CAAA;AAElB,CAAC;AAED,WAAW,cAAc"}
@@ -0,0 +1,10 @@
1
+ import { TableProps } from "./type.mjs";
2
+ import { ReactNode } from "react";
3
+ import { RowData } from "@tanstack/react-table";
4
+ //#region src/base-ui/Table/Table.d.ts
5
+ declare const Table: (<T extends RowData>(props: TableProps<T>) => ReactNode) & {
6
+ displayName?: string;
7
+ };
8
+ //#endregion
9
+ export { Table as default };
10
+ //# sourceMappingURL=Table.d.mts.map
@@ -0,0 +1,134 @@
1
+ "use client";
2
+ import { useEventCallback } from "../../hooks/useEventCallback.mjs";
3
+ import Pagination from "../Pagination/Pagination.mjs";
4
+ import Spin from "../Spin/Spin.mjs";
5
+ import { tableFeatureSet } from "./features.mjs";
6
+ import { styles } from "./style.mjs";
7
+ import FilterMenu from "./FilterMenu.mjs";
8
+ import { getFixedOffsets } from "./fixedOffsets.mjs";
9
+ import { toColumnDefs } from "./toColumnDefs.mjs";
10
+ import TableBody from "./TableBody.mjs";
11
+ import TableHead from "./TableHead.mjs";
12
+ import { useTableState } from "./useTableState.mjs";
13
+ import { memo, useEffect, useMemo } from "react";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ import { cx } from "antd-style";
16
+ import { useTable } from "@tanstack/react-table";
17
+ //#region src/base-ui/Table/Table.tsx
18
+ const EMPTY_DATA = [];
19
+ const TableInner = (props) => {
20
+ const { bordered = false, className, classNames, columns, dataSource = EMPTY_DATA, emptyText, loading = false, onChange, onRow, pagination, ref, renderFilter, rowClassName, rowKey, scroll, size = "middle", style, styles: customStyles, tableLayout } = props;
21
+ const state = useTableState({
22
+ columns,
23
+ onChange,
24
+ pagination
25
+ });
26
+ const columnDefs = useMemo(() => toColumnDefs(columns), [columns]);
27
+ const fixedOffsets = useMemo(() => getFixedOffsets(columns), [columns]);
28
+ const table = useTable({
29
+ columns: columnDefs,
30
+ data: dataSource,
31
+ enableMultiSort: false,
32
+ enableSortingRemoval: true,
33
+ features: tableFeatureSet,
34
+ getRowId: (record) => String(typeof rowKey === "function" ? rowKey(record) : record[rowKey]),
35
+ manualSorting: state.manualSorting,
36
+ onColumnFiltersChange: state.onColumnFiltersChange,
37
+ onSortingChange: state.onSortingChange,
38
+ state: {
39
+ columnFilters: state.columnFilters,
40
+ sorting: state.sorting
41
+ }
42
+ });
43
+ const allRows = table.getRowModel().rows;
44
+ const { page } = state;
45
+ const clientPaginated = pagination !== false && state.config?.total === void 0;
46
+ const total = state.config?.total ?? allRows.length;
47
+ const pageCount = Math.max(1, Math.ceil(total / page.pageSize));
48
+ const pageIndex = Math.min(page.pageIndex, pageCount - 1);
49
+ const rows = clientPaginated ? allRows.slice(pageIndex * page.pageSize, (pageIndex + 1) * page.pageSize) : allRows;
50
+ const syncClampedPage = useEventCallback(() => state.clampPage(pageIndex));
51
+ useEffect(() => {
52
+ if (clientPaginated && pageIndex !== page.pageIndex) syncClampedPage();
53
+ }, [
54
+ clientPaginated,
55
+ pageIndex,
56
+ page.pageIndex,
57
+ syncClampedPage
58
+ ]);
59
+ const minWidth = scroll?.x === "max-content" ? "100%" : scroll?.x;
60
+ return /* @__PURE__ */ jsxs("div", {
61
+ className: cx(styles.root, className),
62
+ ref,
63
+ style,
64
+ children: [/* @__PURE__ */ jsxs("div", {
65
+ className: cx(styles.wrapper, bordered && styles.bordered, classNames?.wrapper),
66
+ "data-table-wrapper": "",
67
+ style: {
68
+ maxHeight: scroll?.y,
69
+ ...customStyles?.wrapper
70
+ },
71
+ children: [/* @__PURE__ */ jsxs("table", {
72
+ className: cx(styles.table, size === "small" ? styles.small : styles.middle),
73
+ style: {
74
+ minWidth,
75
+ tableLayout,
76
+ width: scroll?.x === "max-content" ? "max-content" : "100%"
77
+ },
78
+ children: [/* @__PURE__ */ jsx(TableHead, {
79
+ classNames,
80
+ columnIds: state.columnIds,
81
+ columns,
82
+ fixedOffsets,
83
+ getColumn: (id) => table.getColumn(id),
84
+ styles: customStyles,
85
+ renderFilter: (column, id) => {
86
+ if (renderFilter) return renderFilter(column, id, table);
87
+ const tableColumn = table.getColumn(id);
88
+ const value = tableColumn?.getFilterValue() ?? [];
89
+ return /* @__PURE__ */ jsx(FilterMenu, {
90
+ filters: column.filters ?? [],
91
+ label: typeof column.title === "string" ? column.title : id,
92
+ value,
93
+ onChange: (next) => tableColumn?.setFilterValue(next.length > 0 ? next : void 0)
94
+ });
95
+ }
96
+ }), /* @__PURE__ */ jsx(TableBody, {
97
+ classNames,
98
+ columnIds: state.columnIds,
99
+ columns,
100
+ emptyText,
101
+ fixedOffsets,
102
+ loading,
103
+ rowClassName,
104
+ rows,
105
+ styles: customStyles,
106
+ onRow
107
+ })]
108
+ }), loading && rows.length > 0 && /* @__PURE__ */ jsx("div", {
109
+ className: styles.loading,
110
+ "data-table-loading": "",
111
+ children: /* @__PURE__ */ jsx(Spin, {})
112
+ })]
113
+ }), pagination !== false && total > 0 && /* @__PURE__ */ jsx("div", {
114
+ className: styles.pagination,
115
+ children: /* @__PURE__ */ jsx(Pagination, {
116
+ current: pageIndex + 1,
117
+ pageSize: page.pageSize,
118
+ pageSizeOptions: state.config?.pageSizeOptions,
119
+ showSizeChanger: state.config?.showSizeChanger,
120
+ total,
121
+ onChange: (next, pageSize) => state.onPaginationChange({
122
+ pageIndex: next - 1,
123
+ pageSize
124
+ })
125
+ })
126
+ })]
127
+ });
128
+ };
129
+ const Table = memo(TableInner);
130
+ Table.displayName = "Table";
131
+ //#endregion
132
+ export { TableInner, Table as default };
133
+
134
+ //# sourceMappingURL=Table.mjs.map