@blocklet/ui-react 2.13.70 → 3.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 (381) hide show
  1. package/lib/@types/index.js +5 -18
  2. package/lib/BlockletStudio/index.js +75 -89
  3. package/lib/ComponentInstaller/index.js +153 -190
  4. package/lib/ComponentInstaller/installer-item.js +56 -55
  5. package/lib/ComponentInstaller/locales.js +19 -18
  6. package/lib/ComponentInstaller/use-component-installed.js +49 -80
  7. package/lib/ComponentManager/components/add-component.js +68 -89
  8. package/lib/ComponentManager/components/check-component.js +4 -2
  9. package/lib/ComponentManager/components/publish-component.js +48 -57
  10. package/lib/ComponentManager/components/resource-dialog.js +41 -55
  11. package/lib/ComponentManager/index.js +8 -3
  12. package/lib/ComponentManager/libs/locales.js +8 -5
  13. package/lib/Dashboard/index.js +88 -124
  14. package/lib/Footer/brand.js +25 -28
  15. package/lib/Footer/copyright.js +15 -16
  16. package/lib/Footer/index.js +55 -65
  17. package/lib/Footer/internal-footer.js +93 -95
  18. package/lib/Footer/layout/plain.js +26 -24
  19. package/lib/Footer/layout/row.js +16 -20
  20. package/lib/Footer/layout/standard.js +73 -59
  21. package/lib/Footer/links.js +100 -120
  22. package/lib/Footer/social-media.js +28 -33
  23. package/lib/Header/index.js +108 -130
  24. package/lib/Icon/index.js +43 -59
  25. package/lib/Notifications/Snackbar.js +114 -151
  26. package/lib/Notifications/hooks/use-title.js +85 -126
  27. package/lib/Notifications/hooks/use-width.js +10 -9
  28. package/lib/Notifications/utils.js +74 -114
  29. package/lib/UserCenter/components/config-inviter.js +21 -31
  30. package/lib/UserCenter/components/config-profile.js +41 -47
  31. package/lib/UserCenter/components/danger-zone.js +88 -93
  32. package/lib/UserCenter/components/editable-field.js +149 -167
  33. package/lib/UserCenter/components/nft.js +91 -81
  34. package/lib/UserCenter/components/notification.js +206 -195
  35. package/lib/UserCenter/components/passport.js +37 -53
  36. package/lib/UserCenter/components/privacy.js +53 -64
  37. package/lib/UserCenter/components/settings.js +117 -128
  38. package/lib/UserCenter/components/status-dialog/date-picker.js +35 -36
  39. package/lib/UserCenter/components/status-dialog/index.js +132 -144
  40. package/lib/UserCenter/components/status-selector/duration-menu.js +53 -48
  41. package/lib/UserCenter/components/status-selector/index.js +37 -36
  42. package/lib/UserCenter/components/status-selector/menu-item.js +13 -9
  43. package/lib/UserCenter/components/storage/action.js +27 -25
  44. package/lib/UserCenter/components/storage/connected.js +59 -30
  45. package/lib/UserCenter/components/storage/delete.js +32 -39
  46. package/lib/UserCenter/components/storage/disconnect.js +43 -25
  47. package/lib/UserCenter/components/storage/icons/empty-spaces-nft.svg.js +7 -0
  48. package/lib/UserCenter/components/storage/index.js +24 -18
  49. package/lib/UserCenter/components/storage/preview-nft.js +35 -36
  50. package/lib/UserCenter/components/third-party-login/index.js +73 -143
  51. package/lib/UserCenter/components/third-party-login/third-party-item.js +132 -153
  52. package/lib/UserCenter/components/user-center.js +345 -461
  53. package/lib/UserCenter/components/user-info/address.js +120 -100
  54. package/lib/UserCenter/components/user-info/index.js +10 -4
  55. package/lib/UserCenter/components/user-info/link-preview-input.js +148 -159
  56. package/lib/UserCenter/components/user-info/metadata.js +290 -385
  57. package/lib/UserCenter/components/user-info/switch-role.js +24 -18
  58. package/lib/UserCenter/components/user-info/timezone-select.js +37 -45
  59. package/lib/UserCenter/components/user-info/user-basic-info.js +213 -207
  60. package/lib/UserCenter/components/user-info/user-info-item.js +39 -26
  61. package/lib/UserCenter/components/user-info/user-info.js +52 -67
  62. package/lib/UserCenter/components/user-info/user-status.js +111 -154
  63. package/lib/UserCenter/components/user-info/utils.js +96 -93
  64. package/lib/UserCenter/components/webhook-item.js +95 -143
  65. package/lib/UserCenter/index.js +4 -1
  66. package/lib/UserCenter/libs/locales.js +132 -129
  67. package/lib/UserCenter/libs/utils.js +17 -22
  68. package/lib/UserSessions/components/user-session-info.js +30 -26
  69. package/lib/UserSessions/components/user-sessions.js +222 -268
  70. package/lib/UserSessions/index.js +4 -1
  71. package/lib/UserSessions/libs/locales.js +31 -28
  72. package/lib/UserSessions/libs/utils.js +30 -56
  73. package/lib/blocklets.js +75 -156
  74. package/lib/common/domain-warning.js +64 -104
  75. package/lib/common/header-addons.js +59 -80
  76. package/lib/common/link-blocker.js +10 -16
  77. package/lib/common/notification-addon.js +56 -89
  78. package/lib/common/overridable-theme-provider.js +12 -12
  79. package/lib/common/wallet-hidden-topbar.js +11 -13
  80. package/lib/common/ws.js +23 -34
  81. package/lib/contexts/config-user-space.js +34 -43
  82. package/lib/hooks/use-mobile.js +7 -4
  83. package/lib/index.js +25 -10
  84. package/lib/libs/client.js +5 -2
  85. package/lib/libs/constant.js +4 -1
  86. package/lib/libs/spaces.js +11 -11
  87. package/lib/libs/with-hide-when-embed.js +13 -15
  88. package/lib/packages/blocklet-ui-react/build.config.d.ts +2 -0
  89. package/lib/packages/blocklet-ui-react/jest.config.d.ts +8 -0
  90. package/lib/packages/blocklet-ui-react/lib/@types/index.d.ts +3 -0
  91. package/lib/packages/blocklet-ui-react/lib/BlockletStudio/index.d.ts +26 -0
  92. package/lib/packages/blocklet-ui-react/lib/ComponentInstaller/index.d.ts +18 -0
  93. package/lib/packages/blocklet-ui-react/lib/ComponentInstaller/installer-item.d.ts +18 -0
  94. package/lib/packages/blocklet-ui-react/lib/ComponentInstaller/locales.d.ts +28 -0
  95. package/lib/packages/blocklet-ui-react/lib/ComponentInstaller/use-component-installed.d.ts +12 -0
  96. package/lib/packages/blocklet-ui-react/lib/ComponentManager/components/add-component.d.ts +13 -0
  97. package/lib/packages/blocklet-ui-react/lib/ComponentManager/components/check-component.d.ts +2 -0
  98. package/lib/packages/blocklet-ui-react/lib/ComponentManager/components/publish-component.d.ts +7 -0
  99. package/lib/packages/blocklet-ui-react/lib/ComponentManager/components/resource-dialog.d.ts +11 -0
  100. package/lib/packages/blocklet-ui-react/lib/ComponentManager/index.d.ts +4 -0
  101. package/lib/packages/blocklet-ui-react/lib/ComponentManager/libs/locales.d.ts +19 -0
  102. package/lib/packages/blocklet-ui-react/lib/Dashboard/index.d.ts +27 -0
  103. package/lib/packages/blocklet-ui-react/lib/Footer/brand.d.ts +15 -0
  104. package/lib/packages/blocklet-ui-react/lib/Footer/copyright.d.ts +13 -0
  105. package/lib/packages/blocklet-ui-react/lib/Footer/index.d.ts +2 -0
  106. package/lib/packages/blocklet-ui-react/lib/Footer/internal-footer.d.ts +29 -0
  107. package/lib/packages/blocklet-ui-react/lib/Footer/layout/plain.d.ts +19 -0
  108. package/lib/packages/blocklet-ui-react/lib/Footer/layout/row.d.ts +13 -0
  109. package/lib/packages/blocklet-ui-react/lib/Footer/layout/standard.d.ts +21 -0
  110. package/lib/packages/blocklet-ui-react/lib/Footer/links.d.ts +20 -0
  111. package/lib/packages/blocklet-ui-react/lib/Footer/social-media.d.ts +14 -0
  112. package/lib/packages/blocklet-ui-react/lib/Header/index.d.ts +2 -0
  113. package/lib/packages/blocklet-ui-react/lib/Icon/index.d.ts +7 -0
  114. package/lib/packages/blocklet-ui-react/lib/Notifications/Snackbar.d.ts +8 -0
  115. package/lib/packages/blocklet-ui-react/lib/Notifications/hooks/use-title.d.ts +9 -0
  116. package/lib/packages/blocklet-ui-react/lib/Notifications/hooks/use-width.d.ts +2 -0
  117. package/lib/packages/blocklet-ui-react/lib/Notifications/utils.d.ts +10 -0
  118. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/config-inviter.d.ts +4 -0
  119. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/config-profile.d.ts +5 -0
  120. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/danger-zone.d.ts +2 -0
  121. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/editable-field.d.ts +50 -0
  122. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/nft.d.ts +4 -0
  123. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/notification.d.ts +5 -0
  124. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/passport.d.ts +5 -0
  125. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/privacy.d.ts +5 -0
  126. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/settings.d.ts +8 -0
  127. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/status-dialog/date-picker.d.ts +9 -0
  128. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/status-dialog/index.d.ts +9 -0
  129. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/status-selector/duration-menu.d.ts +7 -0
  130. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/status-selector/index.d.ts +8 -0
  131. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/status-selector/menu-item.d.ts +9 -0
  132. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/storage/action.d.ts +7 -0
  133. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/storage/connected.d.ts +4 -0
  134. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/storage/delete.d.ts +5 -0
  135. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/storage/disconnect.d.ts +2 -0
  136. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/storage/icons/empty-spaces-nft.svg.d.ts +3 -0
  137. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/storage/index.d.ts +2 -0
  138. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/storage/preview-nft.d.ts +5 -0
  139. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/third-party-login/index.d.ts +4 -0
  140. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/third-party-login/third-party-item.d.ts +4 -0
  141. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-center.d.ts +15 -0
  142. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/address.d.ts +7 -0
  143. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/index.d.ts +5 -0
  144. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/link-preview-input.d.ts +6 -0
  145. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/metadata.d.ts +7 -0
  146. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/switch-role.d.ts +6 -0
  147. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/timezone-select.d.ts +7 -0
  148. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/user-basic-info.d.ts +12 -0
  149. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/user-info-item.d.ts +6 -0
  150. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/user-info.d.ts +6 -0
  151. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/user-status.d.ts +9 -0
  152. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/user-info/utils.d.ts +33 -0
  153. package/lib/packages/blocklet-ui-react/lib/UserCenter/components/webhook-item.d.ts +10 -0
  154. package/lib/packages/blocklet-ui-react/lib/UserCenter/index.d.ts +2 -0
  155. package/lib/packages/blocklet-ui-react/lib/UserCenter/libs/locales.d.ts +513 -0
  156. package/lib/packages/blocklet-ui-react/lib/UserCenter/libs/utils.d.ts +3 -0
  157. package/lib/packages/blocklet-ui-react/lib/UserSessions/components/user-session-info.d.ts +5 -0
  158. package/lib/packages/blocklet-ui-react/lib/UserSessions/components/user-sessions.d.ts +8 -0
  159. package/lib/packages/blocklet-ui-react/lib/UserSessions/index.d.ts +2 -0
  160. package/lib/packages/blocklet-ui-react/lib/UserSessions/libs/locales.d.ts +88 -0
  161. package/lib/packages/blocklet-ui-react/lib/UserSessions/libs/utils.d.ts +3 -0
  162. package/lib/packages/blocklet-ui-react/lib/blocklets.d.ts +18 -0
  163. package/lib/packages/blocklet-ui-react/lib/common/domain-warning.d.ts +12 -0
  164. package/lib/packages/blocklet-ui-react/lib/common/header-addons.d.ts +19 -0
  165. package/lib/packages/blocklet-ui-react/lib/common/link-blocker.d.ts +4 -0
  166. package/lib/packages/blocklet-ui-react/lib/common/notification-addon.d.ts +10 -0
  167. package/lib/packages/blocklet-ui-react/lib/common/overridable-theme-provider.d.ts +12 -0
  168. package/lib/packages/blocklet-ui-react/lib/common/wallet-hidden-topbar.d.ts +2 -0
  169. package/lib/packages/blocklet-ui-react/lib/common/ws.d.ts +4 -0
  170. package/lib/packages/blocklet-ui-react/lib/contexts/config-user-space.d.ts +7 -0
  171. package/lib/packages/blocklet-ui-react/lib/hooks/use-mobile.d.ts +4 -0
  172. package/lib/packages/blocklet-ui-react/lib/index.d.ts +12 -0
  173. package/lib/packages/blocklet-ui-react/lib/libs/client.d.ts +3 -0
  174. package/lib/packages/blocklet-ui-react/lib/libs/constant.d.ts +2 -0
  175. package/lib/packages/blocklet-ui-react/lib/libs/spaces.d.ts +3 -0
  176. package/lib/packages/blocklet-ui-react/lib/libs/with-hide-when-embed.d.ts +5 -0
  177. package/lib/packages/blocklet-ui-react/lib/types.d.ts +37 -0
  178. package/lib/packages/blocklet-ui-react/lib/utils.d.ts +11 -0
  179. package/lib/{@types → packages/blocklet-ui-react/src/@types}/index.d.ts +3 -3
  180. package/lib/{BlockletStudio → packages/blocklet-ui-react/src/BlockletStudio}/index.d.ts +1 -1
  181. package/lib/packages/blocklet-ui-react/src/ComponentInstaller/ComponentInstaller.stories.d.ts +9 -0
  182. package/lib/packages/blocklet-ui-react/src/ComponentInstaller/demo/basic.d.ts +29 -0
  183. package/lib/packages/blocklet-ui-react/src/ComponentInstaller/demo/mock-optional-components.d.ts +2 -0
  184. package/lib/packages/blocklet-ui-react/src/ComponentInstaller/index.d.ts +18 -0
  185. package/lib/packages/blocklet-ui-react/src/ComponentInstaller/installer-item.d.ts +18 -0
  186. package/lib/{ComponentInstaller → packages/blocklet-ui-react/src/ComponentInstaller}/use-component-installed.d.ts +1 -1
  187. package/lib/{ComponentManager → packages/blocklet-ui-react/src/ComponentManager}/components/add-component.d.ts +2 -2
  188. package/lib/packages/blocklet-ui-react/src/ComponentManager/components/check-component.d.ts +2 -0
  189. package/lib/{ComponentManager → packages/blocklet-ui-react/src/ComponentManager}/components/publish-component.d.ts +2 -2
  190. package/lib/{ComponentManager → packages/blocklet-ui-react/src/ComponentManager}/components/resource-dialog.d.ts +2 -2
  191. package/lib/packages/blocklet-ui-react/src/Dashboard/Dashboard.stories.d.ts +13 -0
  192. package/lib/packages/blocklet-ui-react/src/Dashboard/demo/basic.d.ts +29 -0
  193. package/lib/packages/blocklet-ui-react/src/Dashboard/index.d.ts +30 -0
  194. package/lib/packages/blocklet-ui-react/src/Footer/Footer.stories.d.ts +19 -0
  195. package/lib/packages/blocklet-ui-react/src/Footer/brand.d.ts +15 -0
  196. package/lib/packages/blocklet-ui-react/src/Footer/copyright.d.ts +13 -0
  197. package/lib/packages/blocklet-ui-react/src/Footer/demo/arcblock-site.d.ts +31 -0
  198. package/lib/packages/blocklet-ui-react/src/Footer/demo/brand.d.ts +1 -0
  199. package/lib/packages/blocklet-ui-react/src/Footer/demo/copyright.d.ts +1 -0
  200. package/lib/packages/blocklet-ui-react/src/Footer/demo/footer.d.ts +10 -0
  201. package/lib/packages/blocklet-ui-react/src/Footer/demo/links.d.ts +1 -0
  202. package/lib/packages/blocklet-ui-react/src/Footer/demo/social-media-icons.d.ts +1 -0
  203. package/lib/packages/blocklet-ui-react/src/Footer/index.d.ts +6 -0
  204. package/lib/packages/blocklet-ui-react/src/Footer/internal-footer.d.ts +32 -0
  205. package/lib/packages/blocklet-ui-react/src/Footer/layout/plain.d.ts +22 -0
  206. package/lib/packages/blocklet-ui-react/src/Footer/layout/row.d.ts +13 -0
  207. package/lib/packages/blocklet-ui-react/src/Footer/layout/standard.d.ts +24 -0
  208. package/lib/packages/blocklet-ui-react/src/Footer/links.d.ts +23 -0
  209. package/lib/packages/blocklet-ui-react/src/Footer/social-media.d.ts +14 -0
  210. package/lib/packages/blocklet-ui-react/src/Header/Header.stories.d.ts +26 -0
  211. package/lib/packages/blocklet-ui-react/src/Header/demo/addons-customization.d.ts +11 -0
  212. package/lib/packages/blocklet-ui-react/src/Header/demo/basic.d.ts +1 -0
  213. package/lib/packages/blocklet-ui-react/src/Header/demo/fixtures/index.d.ts +49 -0
  214. package/lib/packages/blocklet-ui-react/src/Header/demo/with-enable-connect-enable-locale.d.ts +1 -0
  215. package/lib/{Header → packages/blocklet-ui-react/src/Header}/index.d.ts +3 -2
  216. package/lib/packages/blocklet-ui-react/src/Icon/Icon.stories.d.ts +12 -0
  217. package/lib/packages/blocklet-ui-react/src/Icon/demo/basic.d.ts +1 -0
  218. package/lib/{Icon → packages/blocklet-ui-react/src/Icon}/index.d.ts +2 -3
  219. package/lib/packages/blocklet-ui-react/src/Notifications/Snackbar.d.ts +16 -0
  220. package/lib/{Notifications → packages/blocklet-ui-react/src/Notifications}/hooks/use-title.d.ts +1 -1
  221. package/lib/{Notifications → packages/blocklet-ui-react/src/Notifications}/utils.d.ts +2 -2
  222. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/config-inviter.d.ts +1 -1
  223. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/config-profile.d.ts +1 -1
  224. package/lib/packages/blocklet-ui-react/src/UserCenter/components/danger-zone.d.ts +1 -0
  225. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/editable-field.d.ts +3 -3
  226. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/nft.d.ts +1 -1
  227. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/notification.d.ts +1 -1
  228. package/lib/packages/blocklet-ui-react/src/UserCenter/components/passport.d.ts +5 -0
  229. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/privacy.d.ts +1 -1
  230. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/settings.d.ts +2 -2
  231. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/status-dialog/date-picker.d.ts +1 -1
  232. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/status-dialog/index.d.ts +1 -1
  233. package/lib/packages/blocklet-ui-react/src/UserCenter/components/status-selector/duration-menu.d.ts +7 -0
  234. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/status-selector/index.d.ts +1 -1
  235. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/status-selector/menu-item.d.ts +4 -4
  236. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/storage/action.d.ts +1 -1
  237. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/storage/connected.d.ts +1 -1
  238. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/storage/delete.d.ts +1 -1
  239. package/lib/packages/blocklet-ui-react/src/UserCenter/components/storage/disconnect.d.ts +2 -0
  240. package/lib/packages/blocklet-ui-react/src/UserCenter/components/storage/index.d.ts +2 -0
  241. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/storage/preview-nft.d.ts +1 -1
  242. package/lib/packages/blocklet-ui-react/src/UserCenter/components/third-party-login/index.d.ts +4 -0
  243. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/third-party-login/third-party-item.d.ts +2 -2
  244. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-center.d.ts +2 -2
  245. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/address.d.ts +2 -2
  246. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/link-preview-input.d.ts +1 -1
  247. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/metadata.d.ts +2 -2
  248. package/lib/packages/blocklet-ui-react/src/UserCenter/components/user-info/switch-role.d.ts +7 -0
  249. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/timezone-select.d.ts +1 -1
  250. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/user-basic-info.d.ts +3 -3
  251. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/user-info-item.d.ts +1 -1
  252. package/lib/packages/blocklet-ui-react/src/UserCenter/components/user-info/user-info.d.ts +6 -0
  253. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/user-status.d.ts +2 -2
  254. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/utils.d.ts +8 -5
  255. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/webhook-item.d.ts +1 -1
  256. package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/libs/utils.d.ts +1 -1
  257. package/lib/{UserSessions → packages/blocklet-ui-react/src/UserSessions}/components/user-session-info.d.ts +1 -1
  258. package/lib/{UserSessions → packages/blocklet-ui-react/src/UserSessions}/components/user-sessions.d.ts +1 -1
  259. package/lib/packages/blocklet-ui-react/src/common/domain-warning.d.ts +12 -0
  260. package/lib/packages/blocklet-ui-react/src/common/header-addons.d.ts +19 -0
  261. package/lib/{common → packages/blocklet-ui-react/src/common}/link-blocker.d.ts +1 -1
  262. package/lib/{common → packages/blocklet-ui-react/src/common}/notification-addon.d.ts +3 -6
  263. package/lib/{common → packages/blocklet-ui-react/src/common}/overridable-theme-provider.d.ts +5 -8
  264. package/lib/{contexts → packages/blocklet-ui-react/src/contexts}/config-user-space.d.ts +3 -3
  265. package/lib/{libs → packages/blocklet-ui-react/src/libs}/with-hide-when-embed.d.ts +1 -1
  266. package/lib/packages/blocklet-ui-react/src/types.d.ts +36 -0
  267. package/lib/packages/blocklet-ui-react/tools/auto-exports.d.ts +1 -0
  268. package/lib/packages/blocklet-ui-react/tools/jest.d.ts +1 -0
  269. package/lib/packages/blocklet-ui-react/vite.config.d.mts +2 -0
  270. package/lib/types.js +39 -39
  271. package/lib/utils.js +61 -175
  272. package/package.json +28 -34
  273. package/src/ComponentInstaller/ComponentInstaller.stories.jsx +16 -0
  274. package/src/ComponentInstaller/index.jsx +11 -27
  275. package/src/ComponentInstaller/installer-item.jsx +1 -5
  276. package/src/ComponentManager/components/add-component.tsx +3 -3
  277. package/src/ComponentManager/components/publish-component.tsx +3 -3
  278. package/src/Dashboard/Dashboard.stories.jsx +20 -0
  279. package/src/Dashboard/index.jsx +16 -27
  280. package/src/Footer/Footer.stories.jsx +32 -0
  281. package/src/Footer/brand.jsx +1 -7
  282. package/src/Footer/copyright.jsx +1 -6
  283. package/src/Footer/index.jsx +1 -6
  284. package/src/Footer/internal-footer.jsx +26 -16
  285. package/src/Footer/layout/row.jsx +2 -7
  286. package/src/Footer/layout/standard.jsx +12 -2
  287. package/src/Footer/links.jsx +2 -7
  288. package/src/Footer/social-media.jsx +1 -5
  289. package/src/Header/Header.stories.jsx +30 -0
  290. package/src/Header/index.tsx +1 -1
  291. package/src/Icon/Icon.stories.jsx +12 -0
  292. package/src/Notifications/Snackbar.tsx +119 -126
  293. package/src/Notifications/hooks/use-title.tsx +5 -2
  294. package/src/Notifications/hooks/use-width.tsx +1 -1
  295. package/src/UserCenter/components/config-profile.tsx +0 -1
  296. package/src/UserCenter/components/danger-zone.tsx +7 -3
  297. package/src/UserCenter/components/editable-field.tsx +45 -44
  298. package/src/UserCenter/components/nft.tsx +21 -9
  299. package/src/UserCenter/components/notification.tsx +22 -6
  300. package/src/UserCenter/components/privacy.tsx +1 -1
  301. package/src/UserCenter/components/settings.tsx +6 -1
  302. package/src/UserCenter/components/status-dialog/date-picker.tsx +10 -7
  303. package/src/UserCenter/components/status-dialog/index.tsx +11 -4
  304. package/src/UserCenter/components/status-selector/duration-menu.tsx +7 -2
  305. package/src/UserCenter/components/status-selector/index.tsx +7 -1
  306. package/src/UserCenter/components/status-selector/menu-item.tsx +1 -2
  307. package/src/UserCenter/components/storage/action.tsx +1 -2
  308. package/src/UserCenter/components/storage/connected.tsx +18 -5
  309. package/src/UserCenter/components/storage/delete.tsx +1 -1
  310. package/src/UserCenter/components/storage/disconnect.tsx +10 -2
  311. package/src/UserCenter/components/storage/index.tsx +6 -1
  312. package/src/UserCenter/components/storage/preview-nft.tsx +1 -1
  313. package/src/UserCenter/components/third-party-login/index.tsx +2 -2
  314. package/src/UserCenter/components/third-party-login/third-party-item.tsx +11 -7
  315. package/src/UserCenter/components/user-center.tsx +10 -5
  316. package/src/UserCenter/components/user-info/address.tsx +12 -6
  317. package/src/UserCenter/components/user-info/link-preview-input.tsx +36 -51
  318. package/src/UserCenter/components/user-info/metadata.tsx +45 -39
  319. package/src/UserCenter/components/user-info/timezone-select.tsx +2 -5
  320. package/src/UserCenter/components/user-info/user-basic-info.tsx +24 -8
  321. package/src/UserCenter/components/user-info/user-info-item.tsx +7 -2
  322. package/src/UserCenter/components/user-info/user-status.tsx +7 -9
  323. package/src/UserCenter/components/user-info/utils.ts +77 -11
  324. package/src/UserCenter/components/webhook-item.tsx +4 -2
  325. package/src/UserSessions/components/user-sessions.tsx +1 -1
  326. package/src/common/domain-warning.jsx +2 -14
  327. package/src/common/header-addons.jsx +8 -11
  328. package/src/common/notification-addon.jsx +1 -7
  329. package/src/common/overridable-theme-provider.jsx +1 -5
  330. package/src/common/ws.js +2 -2
  331. package/src/contexts/config-user-space.tsx +3 -3
  332. package/vite.config.mjs +31 -0
  333. package/lib/@types/shims.d.ts +0 -18
  334. package/lib/ComponentInstaller/index.d.ts +0 -37
  335. package/lib/ComponentInstaller/installer-item.d.ts +0 -21
  336. package/lib/ComponentManager/components/check-component.d.ts +0 -2
  337. package/lib/Dashboard/index.d.ts +0 -44
  338. package/lib/Footer/brand.d.ts +0 -22
  339. package/lib/Footer/copyright.d.ts +0 -18
  340. package/lib/Footer/index.d.ts +0 -6
  341. package/lib/Footer/internal-footer.d.ts +0 -29
  342. package/lib/Footer/layout/plain.d.ts +0 -15
  343. package/lib/Footer/layout/row.d.ts +0 -18
  344. package/lib/Footer/layout/standard.d.ts +0 -17
  345. package/lib/Footer/links.d.ts +0 -23
  346. package/lib/Footer/social-media.d.ts +0 -14
  347. package/lib/Notifications/Snackbar.d.ts +0 -14
  348. package/lib/UserCenter/components/danger-zone.d.ts +0 -1
  349. package/lib/UserCenter/components/passport.d.ts +0 -5
  350. package/lib/UserCenter/components/status-selector/duration-menu.d.ts +0 -7
  351. package/lib/UserCenter/components/storage/disconnect.d.ts +0 -2
  352. package/lib/UserCenter/components/storage/icons/empty-spaces-nft.svg +0 -58
  353. package/lib/UserCenter/components/storage/icons/long-arrow.svg +0 -5
  354. package/lib/UserCenter/components/storage/icons/space-connected.svg +0 -3
  355. package/lib/UserCenter/components/storage/icons/space-disconnect.svg +0 -3
  356. package/lib/UserCenter/components/storage/index.d.ts +0 -2
  357. package/lib/UserCenter/components/third-party-login/index.d.ts +0 -4
  358. package/lib/UserCenter/components/user-info/switch-role.d.ts +0 -7
  359. package/lib/UserCenter/components/user-info/user-info.d.ts +0 -6
  360. package/lib/common/domain-warning.d.ts +0 -17
  361. package/lib/common/header-addons.d.ts +0 -27
  362. package/lib/types.d.ts +0 -2
  363. /package/lib/{ComponentInstaller → packages/blocklet-ui-react/src/ComponentInstaller}/locales.d.ts +0 -0
  364. /package/lib/{ComponentManager → packages/blocklet-ui-react/src/ComponentManager}/index.d.ts +0 -0
  365. /package/lib/{ComponentManager → packages/blocklet-ui-react/src/ComponentManager}/libs/locales.d.ts +0 -0
  366. /package/lib/{Notifications → packages/blocklet-ui-react/src/Notifications}/hooks/use-width.d.ts +0 -0
  367. /package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/components/user-info/index.d.ts +0 -0
  368. /package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/index.d.ts +0 -0
  369. /package/lib/{UserCenter → packages/blocklet-ui-react/src/UserCenter}/libs/locales.d.ts +0 -0
  370. /package/lib/{UserSessions → packages/blocklet-ui-react/src/UserSessions}/index.d.ts +0 -0
  371. /package/lib/{UserSessions → packages/blocklet-ui-react/src/UserSessions}/libs/locales.d.ts +0 -0
  372. /package/lib/{UserSessions → packages/blocklet-ui-react/src/UserSessions}/libs/utils.d.ts +0 -0
  373. /package/lib/{blocklets.d.ts → packages/blocklet-ui-react/src/blocklets.d.ts} +0 -0
  374. /package/lib/{common → packages/blocklet-ui-react/src/common}/wallet-hidden-topbar.d.ts +0 -0
  375. /package/lib/{common → packages/blocklet-ui-react/src/common}/ws.d.ts +0 -0
  376. /package/lib/{hooks → packages/blocklet-ui-react/src/hooks}/use-mobile.d.ts +0 -0
  377. /package/lib/{index.d.ts → packages/blocklet-ui-react/src/index.d.ts} +0 -0
  378. /package/lib/{libs → packages/blocklet-ui-react/src/libs}/client.d.ts +0 -0
  379. /package/lib/{libs → packages/blocklet-ui-react/src/libs}/constant.d.ts +0 -0
  380. /package/lib/{libs → packages/blocklet-ui-react/src/libs}/spaces.d.ts +0 -0
  381. /package/lib/{utils.d.ts → packages/blocklet-ui-react/src/utils.d.ts} +0 -0
@@ -18,10 +18,10 @@ interface ConfigUserSpaceContextType {
18
18
  settingStorageEndpoint: SettingStorageEndpoint;
19
19
  hasStorageEndpoint: boolean;
20
20
  }
21
- declare const ConfigUserSpaceContext: import("react").Context<ConfigUserSpaceContextType>;
22
- declare const Consumer: import("react").Consumer<ConfigUserSpaceContextType>;
21
+ declare const ConfigUserSpaceContext: import('react').Context<ConfigUserSpaceContextType>;
22
+ declare const Consumer: import('react').Consumer<ConfigUserSpaceContextType>;
23
23
  declare function ConfigUserSpaceProvider({ children }: {
24
24
  children: React.ReactNode;
25
- }): import("react").JSX.Element;
25
+ }): import("react/jsx-runtime").JSX.Element;
26
26
  declare function useConfigUserSpaceContext(): ConfigUserSpaceContextType;
27
27
  export { ConfigUserSpaceContext, ConfigUserSpaceProvider, Consumer as ConfigUserSpaceConsumer, useConfigUserSpaceContext, };
@@ -1,4 +1,4 @@
1
1
  export default function withHideWhenEmbed<T extends object>(Component: React.ComponentType<T>): {
2
- (props: T): import("react").JSX.Element | null;
2
+ (props: T): import("react/jsx-runtime").JSX.Element | null;
3
3
  displayName: string;
4
4
  };
@@ -0,0 +1,36 @@
1
+ import { default as PropTypes } from 'prop-types';
2
+ export const BlockletMetaProps: PropTypes.Requireable<PropTypes.InferProps<{
3
+ appLogo: PropTypes.Requireable<PropTypes.ReactNodeLike>;
4
+ appName: PropTypes.Requireable<string>;
5
+ theme: PropTypes.Requireable<PropTypes.InferProps<{
6
+ background: PropTypes.Requireable<string>;
7
+ }>>;
8
+ enableConnect: PropTypes.Requireable<boolean>;
9
+ enableLocale: PropTypes.Requireable<boolean>;
10
+ navigation: PropTypes.Requireable<(PropTypes.InferProps<{
11
+ title: PropTypes.Requireable<NonNullable<string | object | null | undefined>>;
12
+ link: PropTypes.Requireable<NonNullable<string | object | null | undefined>>;
13
+ icon: PropTypes.Requireable<string>;
14
+ items: PropTypes.Requireable<(PropTypes.InferProps<{
15
+ title: PropTypes.Requireable<NonNullable<string | object | null | undefined>>;
16
+ link: PropTypes.Requireable<NonNullable<string | object | null | undefined>>;
17
+ }> | null | undefined)[]>;
18
+ }> | null | undefined)[]>;
19
+ }>>;
20
+ export const SessionManagerProps: PropTypes.Requireable<PropTypes.InferProps<{
21
+ showText: PropTypes.Requireable<boolean>;
22
+ showRole: PropTypes.Requireable<boolean>;
23
+ switchDid: PropTypes.Requireable<boolean>;
24
+ switchProfile: PropTypes.Requireable<boolean>;
25
+ switchPassport: PropTypes.Requireable<boolean>;
26
+ disableLogout: PropTypes.Requireable<boolean>;
27
+ onLogin: PropTypes.Requireable<(...args: any[]) => any>;
28
+ onLogout: PropTypes.Requireable<(...args: any[]) => any>;
29
+ onSwitchDid: PropTypes.Requireable<(...args: any[]) => any>;
30
+ onSwitchProfile: PropTypes.Requireable<(...args: any[]) => any>;
31
+ onSwitchPassport: PropTypes.Requireable<(...args: any[]) => any>;
32
+ menu: PropTypes.Requireable<any[]>;
33
+ menuRender: PropTypes.Requireable<(...args: any[]) => any>;
34
+ dark: PropTypes.Requireable<boolean>;
35
+ size: PropTypes.Requireable<number>;
36
+ }>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vite').UserConfig;
2
+ export default _default;
package/lib/types.js CHANGED
@@ -1,43 +1,43 @@
1
- /* eslint-disable import/prefer-default-export */
2
- import PropTypes from 'prop-types';
3
-
4
- export const BlockletMetaProps = PropTypes.shape({
5
- appLogo: PropTypes.node,
6
- appName: PropTypes.string,
7
- theme: PropTypes.shape({
8
- background: PropTypes.string,
1
+ import o from "prop-types";
2
+ const n = o.shape({
3
+ appLogo: o.node,
4
+ appName: o.string,
5
+ theme: o.shape({
6
+ background: o.string
9
7
  }),
10
- enableConnect: PropTypes.bool,
11
- enableLocale: PropTypes.bool,
12
- navigation: PropTypes.arrayOf(
13
- PropTypes.shape({
14
- title: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
15
- link: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
16
- icon: PropTypes.string,
17
- items: PropTypes.arrayOf(
18
- PropTypes.shape({
19
- title: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
20
- link: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
8
+ enableConnect: o.bool,
9
+ enableLocale: o.bool,
10
+ navigation: o.arrayOf(
11
+ o.shape({
12
+ title: o.oneOfType([o.string, o.object]),
13
+ link: o.oneOfType([o.string, o.object]),
14
+ icon: o.string,
15
+ items: o.arrayOf(
16
+ o.shape({
17
+ title: o.oneOfType([o.string, o.object]),
18
+ link: o.oneOfType([o.string, o.object])
21
19
  })
22
- ),
20
+ )
23
21
  })
24
- ),
25
- });
26
-
27
- export const SessionManagerProps = PropTypes.shape({
28
- showText: PropTypes.bool,
29
- showRole: PropTypes.bool,
30
- switchDid: PropTypes.bool,
31
- switchProfile: PropTypes.bool,
32
- switchPassport: PropTypes.bool,
33
- disableLogout: PropTypes.bool,
34
- onLogin: PropTypes.func,
35
- onLogout: PropTypes.func,
36
- onSwitchDid: PropTypes.func,
37
- onSwitchProfile: PropTypes.func,
38
- onSwitchPassport: PropTypes.func,
39
- menu: PropTypes.array,
40
- menuRender: PropTypes.func,
41
- dark: PropTypes.bool,
42
- size: PropTypes.number,
22
+ )
23
+ }), t = o.shape({
24
+ showText: o.bool,
25
+ showRole: o.bool,
26
+ switchDid: o.bool,
27
+ switchProfile: o.bool,
28
+ switchPassport: o.bool,
29
+ disableLogout: o.bool,
30
+ onLogin: o.func,
31
+ onLogout: o.func,
32
+ onSwitchDid: o.func,
33
+ onSwitchProfile: o.func,
34
+ onSwitchPassport: o.func,
35
+ menu: o.array,
36
+ menuRender: o.func,
37
+ dark: o.bool,
38
+ size: o.number
43
39
  });
40
+ export {
41
+ n as BlockletMetaProps,
42
+ t as SessionManagerProps
43
+ };
package/lib/utils.js CHANGED
@@ -1,179 +1,65 @@
1
- import semver from 'semver';
2
-
3
- export const mapRecursive = (array, fn, childrenKey = 'children') => {
4
- return array.map((item) => {
5
- if (Array.isArray(item[childrenKey])) {
6
- return fn({
7
- ...item,
8
- [childrenKey]: mapRecursive(item[childrenKey], fn, childrenKey),
9
- });
10
- }
11
- return fn(item);
12
- });
13
- };
14
-
15
- // 展平有层级结构的 array
16
- export const flatRecursive = (array, childrenKey = 'children') => {
17
- const result = [];
18
- mapRecursive(array, (item) => result.push(item), childrenKey);
19
- return result;
20
- };
21
-
22
- // 对有层级结构的 array 元素计数
23
- export const countRecursive = (array, childrenKey = 'children') => {
24
- let counter = 0;
25
- mapRecursive(array, () => counter++, childrenKey);
26
- return counter;
27
- };
28
-
29
- // 对有层级结构的 array 进行 filter 处理
30
- // 因为是 DFS 遍历, 可以借助 context.filteredChildren 在过滤/保留子结的同时保持父子结构 (即使父结点不满足筛选条件)
31
- export const filterRecursive = (array, predicate, childrenKey = 'children') => {
32
- return array
33
- .map((item) => ({ ...item }))
34
- .filter((item) => {
35
- const children = item[childrenKey];
36
- if (Array.isArray(children)) {
37
- const filtered = filterRecursive(children, predicate, childrenKey);
38
- item[childrenKey] = filtered?.length ? filtered : undefined;
39
- }
40
- const context = { filteredChildren: item[childrenKey], isLeaf: !children?.length };
41
- return predicate(item, context);
42
- });
43
- };
44
-
45
- // "http://", "https://" 2 种情况
46
- export const isUrl = (str) => {
47
- return /^https?:\/\//.test(str);
48
- };
49
-
50
- /**
51
- * @description 检测是否是 Iconify 格式的字符串
52
- * @deprecated
53
- */
54
- export const isIconifyString = (str) => {
55
- return /^[\w-]+:[\w-]+$/.test(str);
56
- };
57
-
58
- /**
59
- * 检测 path 是否匹配当前 location, path 只考虑 "/" 开头的相对路径
60
- */
61
- export const matchPath = (path) => {
62
- if (!path || !path?.startsWith('/')) {
63
- return false;
64
- }
65
- const ensureTrailingSlash = (str) => (str.endsWith('/') ? str : `${str}/`);
66
- const pathname = ensureTrailingSlash(window.location.pathname);
67
- const normalizedPath = ensureTrailingSlash(new URL(path, window.location.origin).pathname);
68
- return pathname.startsWith(normalizedPath);
69
- };
70
-
71
- /**
72
- * 从一组 paths 中, 找到匹配当前 location 的 path, 返回序号
73
- */
74
- export const matchPaths = (paths = []) => {
75
- const matched = paths.map((item, index) => ({ path: item, index })).filter((item) => matchPath(item.path));
76
- if (!matched?.length) {
77
- return -1;
1
+ import R from "semver";
2
+ const d = (n, e, r = "children") => n.map((t) => Array.isArray(t[r]) ? e({
3
+ ...t,
4
+ [r]: d(t[r], e, r)
5
+ }) : e(t)), S = (n, e = "children") => {
6
+ const r = [];
7
+ return d(n, (t) => r.push(t), e), r;
8
+ }, x = (n, e = "children") => {
9
+ let r = 0;
10
+ return d(n, () => r++, e), r;
11
+ }, V = (n, e, r = "children") => n.map((t) => ({ ...t })).filter((t) => {
12
+ const s = t[r];
13
+ if (Array.isArray(s)) {
14
+ const o = V(s, e, r);
15
+ t[r] = o != null && o.length ? o : void 0;
78
16
  }
79
- // 多个 path 都匹配时, 取一个最具体 (最长的) path
80
- const mostSpecific = matched.slice(1).reduce((prev, cur) => {
81
- return prev.path.length >= cur.path.length ? prev : cur;
82
- }, matched[0]);
83
- return mostSpecific.index;
84
- };
85
-
86
- /** 导航列表分列 */
87
- export const splitNavColumns = (items, options = {}) => {
88
- const { columns = 1, breakInside = false, groupHeight = 48, itemHeight = 24, childrenKey = 'items' } = options;
89
-
90
- // 高度预估
91
- const totalHeight = items.reduce((height, group) => {
92
- return height + groupHeight + (group[childrenKey]?.length || 0) * itemHeight;
93
- }, 0);
94
- const targetHeight = Math.ceil(totalHeight / columns);
95
-
96
- // 使用贪心策略进行分列
97
- const result = [[]];
98
- let currentColumn = 0;
99
- let currentHeight = 0;
100
-
101
- // 允许的高度偏差范围(有利于得到高度相差不大的列)
102
- const heightVariance = targetHeight * 0.2;
103
-
104
- // 是否应该分列
105
- const shouldBreakColumn = (nextHeight) => {
106
- return (
107
- currentHeight > targetHeight - heightVariance &&
108
- currentColumn < columns - 1 &&
109
- currentHeight + nextHeight > targetHeight + heightVariance
110
- );
111
- };
112
-
113
- items.forEach((group) => {
114
- const groupTotalHeight = groupHeight + (group[childrenKey]?.length || 0) * itemHeight;
115
-
116
- // 允许截断分组时,可以在任何子项处换列
117
- if (breakInside && shouldBreakColumn(groupHeight)) {
118
- currentColumn++;
119
- currentHeight = 0;
120
- result[currentColumn] = [];
121
- }
122
- // 不允许截断分组时,只能在分组边界换列
123
- if (!breakInside && currentHeight > 0 && shouldBreakColumn(groupTotalHeight)) {
124
- currentColumn++;
125
- currentHeight = 0;
126
- result[currentColumn] = [];
127
- }
128
-
129
- // 添加分组标题
130
- result[currentColumn].push({
131
- ...group,
132
- group: true,
17
+ const c = { filteredChildren: t[r], isLeaf: !(s != null && s.length) };
18
+ return e(t, c);
19
+ }), P = (n) => /^https?:\/\//.test(n), W = (n) => /^[\w-]+:[\w-]+$/.test(n), A = (n) => {
20
+ if (!n || !(n != null && n.startsWith("/")))
21
+ return !1;
22
+ const e = (s) => s.endsWith("/") ? s : `${s}/`, r = e(window.location.pathname), t = e(new URL(n, window.location.origin).pathname);
23
+ return r.startsWith(t);
24
+ }, k = (n = []) => {
25
+ const e = n.map((t, s) => ({ path: t, index: s })).filter((t) => A(t.path));
26
+ return e != null && e.length ? e.slice(1).reduce((t, s) => t.path.length >= s.path.length ? t : s, e[0]).index : -1;
27
+ }, v = (n, e = {}) => {
28
+ const { columns: r = 1, breakInside: t = !1, groupHeight: s = 48, itemHeight: c = 24, childrenKey: o = "items" } = e, w = n.reduce((u, m) => {
29
+ var h;
30
+ return u + s + (((h = m[o]) == null ? void 0 : h.length) || 0) * c;
31
+ }, 0), f = Math.ceil(w / r), l = [[]];
32
+ let i = 0, a = 0;
33
+ const p = f * 0.2, g = (u) => a > f - p && i < r - 1 && a + u > f + p;
34
+ return n.forEach((u) => {
35
+ var h;
36
+ const m = s + (((h = u[o]) == null ? void 0 : h.length) || 0) * c;
37
+ t && g(s) && (i++, a = 0, l[i] = []), !t && a > 0 && g(m) && (i++, a = 0, l[i] = []), l[i].push({
38
+ ...u,
39
+ group: !0
40
+ }), a += s, u[o] && u[o].forEach((H) => {
41
+ t && g(c) && (i++, a = 0, l[i] = []), l[i].push({
42
+ ...H,
43
+ group: !1
44
+ }), a += c;
133
45
  });
134
- currentHeight += groupHeight;
135
-
136
- // 添加子项
137
- if (group[childrenKey]) {
138
- group[childrenKey].forEach((child) => {
139
- if (breakInside && shouldBreakColumn(itemHeight)) {
140
- currentColumn++;
141
- currentHeight = 0;
142
- result[currentColumn] = [];
143
- }
144
-
145
- result[currentColumn].push({
146
- ...child,
147
- group: false,
148
- });
149
- currentHeight += itemHeight;
150
- });
151
- }
152
- });
153
-
154
- return result;
46
+ }), l;
47
+ }, E = (n, e) => {
48
+ const r = (c) => {
49
+ const o = c.match(/^(\d+\.\d+\.\d+(?:-[^-]+?-\d{8}))/);
50
+ return o ? o[1] : c;
51
+ }, t = r(n), s = r(e);
52
+ return t === s && n !== e ? !1 : R.gte(t, s);
155
53
  };
156
-
157
- /**
158
- * 比较两个版本号,用于判断版本号是否兼容
159
- * @param {*} version1
160
- * @param {*} version2
161
- * @returns 0: 版本相同, -1: version1 < version2, 1: version1 > version2
162
- */
163
- export const compareVersions = (version1, version2) => {
164
- const getDateVersion = (version) => {
165
- const match = version.match(/^(\d+\.\d+\.\d+(?:-[^-]+?-\d{8}))/);
166
- return match ? match[1] : version;
167
- };
168
-
169
- const dateVersion1 = getDateVersion(version1);
170
- const dateVersion2 = getDateVersion(version2);
171
-
172
- // 如果基础版本相同,但完整版本不同(意味着有额外部分),返回false
173
- if (dateVersion1 === dateVersion2 && version1 !== version2) {
174
- return false;
175
- }
176
-
177
- // 其他情况正常比较
178
- return semver.gte(dateVersion1, dateVersion2);
54
+ export {
55
+ E as compareVersions,
56
+ x as countRecursive,
57
+ V as filterRecursive,
58
+ S as flatRecursive,
59
+ W as isIconifyString,
60
+ P as isUrl,
61
+ d as mapRecursive,
62
+ A as matchPath,
63
+ k as matchPaths,
64
+ v as splitNavColumns
179
65
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocklet/ui-react",
3
- "version": "2.13.70",
3
+ "version": "3.0.1",
4
4
  "description": "Some useful front-end web components that can be used in Blocklets.",
5
5
  "keywords": [
6
6
  "react",
@@ -20,8 +20,8 @@
20
20
  "scripts": {
21
21
  "lint": "eslint src tests --ext js --ext jsx --ext tsx --ext ts",
22
22
  "lint:fix": "npm run lint -- --fix",
23
- "build": "unbuild",
24
- "watch": "CONSOLA_LEVEL=1 nodemon -e .jsx,.js,.ts,.tsx -w src -x 'yalc publish --push'",
23
+ "build": "vite build",
24
+ "watch": "vite build --watch",
25
25
  "precommit": "CI=1 npm run lint",
26
26
  "prepush": "CI=1 npm run lint",
27
27
  "prepublish": "npm run build",
@@ -34,65 +34,59 @@
34
34
  "dependencies": {
35
35
  "@abtnode/constant": "^1.16.44",
36
36
  "@abtnode/util": "^1.16.44",
37
- "@arcblock/bridge": "^2.13.70",
38
- "@arcblock/react-hooks": "^2.13.70",
37
+ "@arcblock/bridge": "3.0.1",
38
+ "@arcblock/icons": "3.0.1",
39
+ "@arcblock/react-hooks": "3.0.1",
39
40
  "@arcblock/ws": "^1.20.14",
40
41
  "@blocklet/constant": "^1.16.44",
41
- "@blocklet/did-space-react": "^1.0.60",
42
+ "@blocklet/did-space-react": "^1.0.62",
42
43
  "@iconify-icons/logos": "^1.2.36",
43
44
  "@iconify-icons/material-symbols": "^1.2.58",
44
45
  "@iconify-icons/tabler": "^1.2.95",
45
- "@iconify/react": "^5.2.0",
46
- "ahooks": "^3.7.10",
47
- "axios": "^1.7.5",
48
- "clsx": "^2.1.0",
49
- "core-js": "^3.25.5",
50
- "dayjs": "^1.11.5",
51
- "dompurify": "^3.2.1",
46
+ "@iconify/react": "^5.2.1",
47
+ "ahooks": "^3.8.5",
48
+ "axios": "^1.10.0",
49
+ "clsx": "^2.1.1",
50
+ "dayjs": "^1.11.13",
51
+ "dompurify": "^3.2.6",
52
52
  "iconify-icon": "^1.0.8",
53
53
  "iconify-icons-material-symbols-400": "^0.0.1",
54
54
  "is-url": "^1.2.4",
55
55
  "js-cookie": "^2.2.1",
56
56
  "lodash": "^4.17.21",
57
- "moment-timezone": "^0.5.37",
58
- "notistack": "^2.0.5",
57
+ "notistack": "^2.0.8",
59
58
  "p-all": "^5.0.0",
60
59
  "p-queue": "^6.6.2",
61
60
  "p-wait-for": "^5.0.2",
62
61
  "prop-types": "^15.8.1",
63
62
  "react-error-boundary": "^3.1.4",
64
63
  "react-placeholder": "^4.1.0",
65
- "semver": "^7.6.3",
66
- "type-fest": "^4.22.0",
67
- "ua-parser-js": "^1.0.37",
68
- "ufo": "^1.5.3",
69
- "validator": "^13.9.0"
64
+ "semver": "^7.7.2",
65
+ "type-fest": "^4.41.0",
66
+ "ua-parser-js": "^1.0.40",
67
+ "ufo": "^1.6.1",
68
+ "validator": "^13.15.15"
70
69
  },
71
70
  "peerDependencies": {
72
- "@arcblock/did-connect": "^2.11.48",
73
- "@arcblock/ux": "^2.11.48",
71
+ "@arcblock/did-connect": "workspace:*",
72
+ "@arcblock/ux": "workspace:*",
74
73
  "@blocklet/js-sdk": "^1.16.41",
75
- "@emotion/react": "^11.10.4",
76
- "@emotion/styled": "^11.10.4",
77
- "@mui/icons-material": "^5.15.0",
78
- "@mui/material": "^5.15.0",
79
- "react": "^18.2.0",
74
+ "@emotion/react": "^11.14.0",
75
+ "@emotion/styled": "^11.14.0",
76
+ "@mui/icons-material": "^7.1.2",
77
+ "@mui/material": "^7.1.2",
78
+ "react": "^19.0.0",
80
79
  "react-router-dom": "^6.22.3"
81
80
  },
82
81
  "publishConfig": {
83
82
  "access": "public"
84
83
  },
85
84
  "devDependencies": {
86
- "@babel/cli": "^7.19.3",
87
- "@babel/core": "^7.19.3",
88
- "@babel/preset-env": "^7.19.3",
89
- "@babel/preset-react": "^7.18.6",
90
85
  "@types/dompurify": "^3.2.0",
91
86
  "@types/ua-parser-js": "^0.7.39",
92
- "eslint-plugin-react-hooks": "^4.6.0",
93
- "glob": "^10.3.3",
87
+ "eslint-plugin-react-hooks": "^4.6.2",
94
88
  "jest": "^29.7.0",
95
89
  "unbuild": "^2.0.0"
96
90
  },
97
- "gitHead": "b38a83a2c7d9a22e90bab369d8f61340db2abbd0"
91
+ "gitHead": "36d86df0c9fd5fdf668fb3505492c830e437b3a5"
98
92
  }
@@ -0,0 +1,16 @@
1
+ import Basic from './demo/basic';
2
+
3
+ export default {
4
+ title: 'Blocklet-UI-React/ComponentInstaller',
5
+
6
+ parameters: {
7
+ layout: 'fullscreen',
8
+ },
9
+ };
10
+
11
+ Basic.argTypes = {
12
+ userRole: { control: 'select', options: [null, 'owner', 'developer'] },
13
+ };
14
+ Basic.storyName = 'ComponentInstaller';
15
+
16
+ export { Basic };
@@ -3,26 +3,26 @@ import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
3
3
  import { translate } from '@arcblock/ux/lib/Locale/util';
4
4
  import SessionPermission from '@arcblock/ux/lib/SessionPermission';
5
5
  import { Icon } from '@iconify/react';
6
- import CloseIcon from '@mui/icons-material/Close';
6
+ import { Close as CloseIcon } from '@mui/icons-material';
7
7
  import { Box, ClickAwayListener, Fade, IconButton, Paper } from '@mui/material';
8
8
  import { useMemoizedFn } from 'ahooks';
9
9
  import PropTypes from 'prop-types';
10
- import { useContext } from 'react';
10
+ import { use } from 'react';
11
11
  import InstallerItem from './installer-item';
12
12
  import translations from './locales';
13
13
  import useComponentInstalled from './use-component-installed';
14
14
 
15
15
  function ComponentInstaller({
16
- warnIcon,
16
+ warnIcon = null,
17
17
  did,
18
- noPermissionMute,
19
- onInstalled,
20
- onError,
18
+ noPermissionMute = false,
19
+ onInstalled = null,
20
+ onError = null,
21
21
  children,
22
- closeByOutSize,
23
- onClose,
24
- fallback,
25
- disabled,
22
+ closeByOutSize = false,
23
+ onClose = null,
24
+ fallback = null,
25
+ disabled = false,
26
26
  roles = ['owner', 'admin'],
27
27
  }) {
28
28
  const { locale } = useLocaleContext();
@@ -34,7 +34,7 @@ function ComponentInstaller({
34
34
  onInstalled,
35
35
  onError,
36
36
  });
37
- const sessionCtx = useContext(SessionContext);
37
+ const sessionCtx = use(SessionContext);
38
38
 
39
39
  const handleClose = () => {
40
40
  onClose?.(false);
@@ -193,18 +193,6 @@ ComponentInstaller.propTypes = {
193
193
  roles: PropTypes.array,
194
194
  };
195
195
 
196
- ComponentInstaller.defaultProps = {
197
- disabled: false,
198
- warnIcon: null,
199
- noPermissionMute: false,
200
- onInstalled: null,
201
- onError: null,
202
- closeByOutSize: false,
203
- onClose: null,
204
- fallback: null,
205
- roles: ['owner', 'admin'],
206
- };
207
-
208
196
  export default function WrapComponentInstaller(props) {
209
197
  if (window.blocklet) {
210
198
  return <ComponentInstaller {...props} />;
@@ -217,7 +205,3 @@ WrapComponentInstaller.propTypes = {
217
205
  ...ComponentInstaller.propTypes,
218
206
  children: PropTypes.any.isRequired,
219
207
  };
220
-
221
- WrapComponentInstaller.defaultProps = {
222
- ...ComponentInstaller.defaultProps,
223
- };
@@ -2,7 +2,7 @@ import { Icon } from '@iconify/react';
2
2
  import { Box, Button, useTheme } from '@mui/material';
3
3
  import PropTypes from 'prop-types';
4
4
 
5
- export default function InstallerItem({ optionalComponent, index, installStatus, hasPermission, t }) {
5
+ export default function InstallerItem({ optionalComponent, index, installStatus = '', hasPermission, t }) {
6
6
  const { palette } = useTheme();
7
7
  const handleInstall = () => {
8
8
  // 这里是安全的
@@ -127,7 +127,3 @@ InstallerItem.propTypes = {
127
127
  installStatus: PropTypes.string,
128
128
  hasPermission: PropTypes.bool.isRequired,
129
129
  };
130
-
131
- InstallerItem.defaultProps = {
132
- installStatus: '',
133
- };
@@ -1,4 +1,4 @@
1
- import { useEffect, ReactElement, useRef, useContext } from 'react';
1
+ import { useEffect, ReactElement, useRef, use } from 'react';
2
2
  import Button from '@arcblock/ux/lib/Button';
3
3
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
4
4
  import { BLOCKLET_SERVICE_PATH_PREFIX } from '@arcblock/ux/lib/Util/constant';
@@ -33,9 +33,9 @@ export default function AddComponent({
33
33
  grantedRoles?: string[];
34
34
  onComplete: () => void;
35
35
  onClose: () => void;
36
- render?: ({ onClick, loading }: { onClick: () => void; loading: boolean }) => ReactElement;
36
+ render?: ({ onClick, loading }: { onClick: () => void; loading: boolean }) => ReactElement<any>;
37
37
  }) {
38
- const { session } = useContext<TSessionContext>(SessionContext);
38
+ const { session } = use<TSessionContext>(SessionContext);
39
39
  const { locale } = useLocaleContext();
40
40
  const t = useMemoizedFn((key, data = {}) => {
41
41
  return translate(translations, key, locale, 'en', data);
@@ -1,4 +1,4 @@
1
- import { ReactElement, useContext } from 'react';
1
+ import { ReactElement, use } from 'react';
2
2
  import Button from '@arcblock/ux/lib/Button';
3
3
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
4
4
  import { BLOCKLET_SERVICE_PATH_PREFIX } from '@arcblock/ux/lib/Util/constant';
@@ -20,9 +20,9 @@ export default function PublishComponent({
20
20
  componentDid: string;
21
21
  grantedRoles?: string[];
22
22
  onClose: () => void;
23
- render?: ({ onClick, loading }: { onClick: () => void; loading: boolean }) => ReactElement;
23
+ render?: ({ onClick, loading }: { onClick: () => void; loading: boolean }) => ReactElement<any>;
24
24
  }) {
25
- const { session } = useContext<TSessionContext>(SessionContext);
25
+ const { session } = use<TSessionContext>(SessionContext);
26
26
  const { locale } = useLocaleContext();
27
27
  const t = useMemoizedFn((key, data = {}) => {
28
28
  return translate(translations, key, locale, 'en', data);