@gadmin2n/schematics 0.0.68 → 0.0.70

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 (223) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/canvas.prisma +45 -0
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/example.prisma +24 -23
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +93 -90
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Audit.ts +70 -0
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +3 -3
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Page.ts +70 -0
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/PageResource.ts +70 -0
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Resource.ts +70 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/RolePages.ts +70 -0
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/RoleResource.ts +70 -0
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/SavedQuery.ts +70 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/User.ts +70 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/readme.md +95 -2
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.eslintrc.js +4 -2
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +7 -1
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/config/index.ts +1 -3
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +2 -2
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +6 -5
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/lib/page-helpers.ts +157 -0
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/page-manage.ts +290 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/permission-manage.ts +184 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/prismaModels.ts +143 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/sync-resources.ts +100 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/scripts/syncDataMngtPages.ts +119 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +1 -3
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +109 -143
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +5 -2
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.spec.ts +20 -0
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.ts +81 -0
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.dto.ts +49 -0
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.module.ts +11 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.spec.ts +334 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.ts +249 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +2 -1
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.ts +2 -2
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.ts +17 -4
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +7737 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.env +1 -0
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.eslintrc.json +38 -0
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.prettierignore +2 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/web/dev-shell-entry.html +49 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +13 -2
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +137 -111
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/auditLogProvider.ts +46 -44
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +32 -12
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +74 -23
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +9 -9
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +57 -31
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +53 -24
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/SqlModal.tsx +148 -72
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +190 -16
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +914 -63
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/agentAttributes.ts +17 -8
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/index.ts +0 -10
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +969 -46
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/pagePathUtils.ts +66 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/promptGenerator.ts +85 -25
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/propPatcher.ts +84 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +16 -20
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/index.ts +4 -4
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +13 -13
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +15 -16
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +15 -15
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +2 -2
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/BarChart/index.tsx +896 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartSwitcher/index.tsx +219 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartViewer/index.tsx +159 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Filter/index.tsx +192 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/LineChart/index.tsx +1034 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/NumCard.module.css +8 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +509 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +66 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/PieChart/index.tsx +552 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/RadarChart/index.tsx +263 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Section/index.tsx +35 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Table/index.tsx +207 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/TreemapChart/index.tsx +382 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/WorldMap/index.tsx +135 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/chart-constants.ts +53 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/InfoIcon.tsx +8 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/index.ts +1 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/config.ts +31 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/nameMap.json +9 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/world.geo.json +39349 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/metric-info-tooltip/index.tsx +19 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +12 -12
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +22 -26
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +13 -9
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +4 -4
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +22 -37
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/index.ts +4 -4
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +10 -10
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +1 -1
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +113 -65
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +14 -14
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +1 -1
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +2 -2
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/index.ts +1 -1
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +21 -21
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +17 -13
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/http.ts +26 -5
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +221 -51
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +3 -3
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +199 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +335 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DeleteDataConfirm.tsx +56 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +401 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/EditDataModal.tsx +129 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/SkillMenu.tsx +202 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/UndoConfirm.tsx +36 -0
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/index.tsx +8 -0
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +835 -0
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/audit-log.enum.ts +8 -8
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/index.ts +1 -1
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +120 -70
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-name-initials.ts +3 -3
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-random-color.ts +11 -11
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/http.ts +16 -19
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +1 -1
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +99 -73
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +22 -27
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/page-tree.ts +74 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +95 -51
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/utils.tsx +7 -3
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/types.ts +15 -15
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchDelete.ts +10 -10
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperations.ts +8 -7
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperationsCore.ts +10 -10
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchUpdate.ts +10 -10
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +36 -27
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useECharts.tsx +144 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useFetchData.ts +4 -4
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +34 -34
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRoles.ts +8 -4
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRowSelection.ts +1 -1
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useUserPageAccess.ts +55 -41
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +8 -8
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +9 -2
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +193 -0
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +194 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +81 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +37 -37
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +23 -31
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +34 -35
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.ts +1 -1
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +4 -6
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +41 -34
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +33 -20
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +87 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasEditPage.tsx +192 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +409 -0
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +1372 -0
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +384 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +476 -0
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/ComponentThumbnail.tsx +135 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/IsolatedLivePreview.tsx +101 -0
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/LivePreview.tsx +236 -0
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +200 -0
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasApi.ts +92 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasConfigRegistry.tsx +25 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +875 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +126 -0
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasI18n.ts +11 -0
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +115 -0
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ChartViewerConfigModal.tsx +217 -0
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +153 -0
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +211 -0
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +90 -0
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +87 -0
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +204 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/demos.ts +1153 -0
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/index.tsx +2 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +45 -0
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +45 -0
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +108 -0
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/create.tsx +105 -0
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +121 -0
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/index.tsx +4 -0
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +237 -0
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +74 -0
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +29 -20
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +3 -3
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +7 -3
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +58 -23
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +206 -122
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/hooks/usePageManagement.ts +8 -4
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.ts +1 -1
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +345 -190
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/types.ts +1 -1
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +341 -340
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +2 -2
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +2 -2
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +41 -24
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +64 -36
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.ts +2 -2
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +78 -40
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +3 -3
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +4 -4
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +19 -9
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +45 -47
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/hooks/useRolePage.ts +4 -4
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.ts +1 -1
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +121 -147
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/types.ts +1 -1
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +2 -2
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +2 -2
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +25 -19
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/index.ts +5 -5
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +10 -10
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +31 -26
  211. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.ts +1 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +76 -71
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/setupTests.ts +1 -1
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/audit-log.ts +1 -1
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/index.ts +3 -3
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/role.ts +1 -1
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/user.ts +1 -1
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +42 -25
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/yarn.lock +1193 -32
  220. package/package.json +1 -1
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/seedDataMngtPages.ts +0 -258
  222. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentPanel.tsx +0 -497
  223. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/skills.ts +0 -464
@@ -1,6 +1,12 @@
1
- import React, { useMemo, useEffect, useRef, useCallback, type CSSProperties } from "react";
2
-
3
- import { useThemedLayoutContext } from "@refinedev/antd";
1
+ import React, {
2
+ useMemo,
3
+ useEffect,
4
+ useRef,
5
+ useCallback,
6
+ type CSSProperties,
7
+ } from 'react';
8
+
9
+ import { useThemedLayoutContext } from '@refinedev/antd';
4
10
  import {
5
11
  type ITreeMenu,
6
12
  pickNotDeprecated,
@@ -8,22 +14,31 @@ import {
8
14
  useMenu,
9
15
  useNavigation,
10
16
  useGo,
11
- } from "@refinedev/core";
12
- import { useTranslation } from "react-i18next";
17
+ } from '@refinedev/core';
18
+ import { useTranslation } from 'react-i18next';
13
19
 
14
20
  import {
15
21
  BarsOutlined,
16
22
  LeftOutlined,
17
23
  RightOutlined,
18
24
  UnorderedListOutlined,
19
- } from "@ant-design/icons";
20
- import { Button, Drawer, Grid, Layout, Menu, theme, type MenuProps } from "antd";
21
- import { Title } from "./title";
25
+ } from '@ant-design/icons';
26
+ import {
27
+ Button,
28
+ Drawer,
29
+ Grid,
30
+ Layout,
31
+ Menu,
32
+ theme,
33
+ type MenuProps,
34
+ } from 'antd';
35
+ import { Title } from './title';
36
+ import { agentAttrs } from 'components/agentPanel/agentAttributes';
22
37
 
23
38
  const drawerButtonStyles: CSSProperties = {
24
39
  borderTopLeftRadius: 0,
25
40
  borderBottomLeftRadius: 0,
26
- position: "fixed",
41
+ position: 'fixed',
27
42
  top: 64,
28
43
  zIndex: 1001,
29
44
  };
@@ -39,7 +54,7 @@ const getParentKeysFromMenuTree = (
39
54
  parentKeys: string[] = [],
40
55
  ): string[] | null => {
41
56
  for (const item of items) {
42
- const currentKey = item.key || "";
57
+ const currentKey = item.key || '';
43
58
 
44
59
  if (currentKey === targetKey) {
45
60
  return parentKeys;
@@ -58,8 +73,12 @@ const getParentKeysFromMenuTree = (
58
73
  return null;
59
74
  };
60
75
 
61
- const getMenuLabel = (name: string, meta: Record<string, any>, locale: string): string => {
62
- const isZh = locale === "zh_CN" || locale === "zh";
76
+ const getMenuLabel = (
77
+ name: string,
78
+ meta: Record<string, any>,
79
+ locale: string,
80
+ ): string => {
81
+ const isZh = locale === 'zh_CN' || locale === 'zh';
63
82
  if (isZh && meta?.zhLabel) return meta.zhLabel;
64
83
  if (!isZh && meta?.enLabel) return meta.enLabel;
65
84
  return meta?.label || name;
@@ -76,7 +95,11 @@ export const Sider: React.FC = () => {
76
95
  const lastSelectedKeyRef = useRef<string | undefined>(undefined);
77
96
 
78
97
  useEffect(() => {
79
- if (selectedKey && selectedKey !== lastSelectedKeyRef.current && menuItems.length > 0) {
98
+ if (
99
+ selectedKey &&
100
+ selectedKey !== lastSelectedKeyRef.current &&
101
+ menuItems.length > 0
102
+ ) {
80
103
  lastSelectedKeyRef.current = selectedKey;
81
104
 
82
105
  const parentKeys = getParentKeysFromMenuTree(menuItems, selectedKey);
@@ -87,8 +110,12 @@ export const Sider: React.FC = () => {
87
110
  }
88
111
  }, [selectedKey, menuItems]);
89
112
 
90
- const { siderCollapsed, setSiderCollapsed, mobileSiderOpen, setMobileSiderOpen } =
91
- useThemedLayoutContext();
113
+ const {
114
+ siderCollapsed,
115
+ setSiderCollapsed,
116
+ mobileSiderOpen,
117
+ setMobileSiderOpen,
118
+ } = useThemedLayoutContext();
92
119
 
93
120
  const Link = useLink();
94
121
  const go = useGo();
@@ -96,16 +123,17 @@ export const Sider: React.FC = () => {
96
123
  const breakpoint = Grid.useBreakpoint();
97
124
  const { listUrl } = useNavigation();
98
125
 
99
- const isMobile = typeof breakpoint.lg === "undefined" ? false : !breakpoint.lg;
126
+ const isMobile =
127
+ typeof breakpoint.lg === 'undefined' ? false : !breakpoint.lg;
100
128
 
101
129
  const renderTreeView = useCallback(
102
- (tree: ITreeMenu[], currentSelectedKey?: string): MenuProps["items"] => {
130
+ (tree: ITreeMenu[], currentSelectedKey?: string): MenuProps['items'] => {
103
131
  return tree
104
132
  .map((item: ITreeMenu) => {
105
133
  const { key, name, children, meta = {}, list } = item;
106
134
  const { icon, parent: parentName } = meta;
107
135
 
108
- const route = typeof list === "string" ? list : listUrl(name);
136
+ const route = typeof list === 'string' ? list : listUrl(name);
109
137
 
110
138
  if (children.length > 0) {
111
139
  return {
@@ -119,16 +147,20 @@ export const Sider: React.FC = () => {
119
147
  const menuItemKey = item.key || Math.random().toString();
120
148
  const isSelected = menuItemKey === currentSelectedKey;
121
149
  const isRoute = !(
122
- pickNotDeprecated(meta?.parent, meta?.parent, parentName) !== undefined &&
123
- children.length === 0
150
+ pickNotDeprecated(meta?.parent, meta?.parent, parentName) !==
151
+ undefined && children.length === 0
124
152
  );
125
153
 
126
154
  return {
127
155
  key: menuItemKey,
128
156
  label: (
129
157
  <>
130
- <Link to={route ?? ""}>{getMenuLabel(name, meta, currentLocale)}</Link>
131
- {!siderCollapsed && isSelected && <div className="ant-menu-tree-arrow" />}
158
+ <Link to={route ?? ''}>
159
+ {getMenuLabel(name, meta, currentLocale)}
160
+ </Link>
161
+ {!siderCollapsed && isSelected && (
162
+ <div className="ant-menu-tree-arrow" />
163
+ )}
132
164
  </>
133
165
  ),
134
166
  icon: icon ?? (isRoute && <UnorderedListOutlined />),
@@ -147,13 +179,17 @@ export const Sider: React.FC = () => {
147
179
  useEffect(() => {
148
180
  if (reRouteNum > 5) return;
149
181
 
150
- const isKeyInMenuItems = (menuItems: MenuProps["items"], key: string): boolean => {
182
+ const isKeyInMenuItems = (
183
+ menuItems: MenuProps['items'],
184
+ key: string,
185
+ ): boolean => {
151
186
  if (!menuItems) return false;
152
187
  for (const item of menuItems) {
153
188
  if (!item) continue;
154
189
  if (item.key === key) return true;
155
- if ("children" in item && item.children) {
156
- if (isKeyInMenuItems(item.children as MenuProps["items"], key)) return true;
190
+ if ('children' in item && item.children) {
191
+ if (isKeyInMenuItems(item.children as MenuProps['items'], key))
192
+ return true;
157
193
  }
158
194
  }
159
195
  return false;
@@ -166,11 +202,12 @@ export const Sider: React.FC = () => {
166
202
 
167
203
  // Skip auto-redirect for CRUD detail pages (edit/show/create)
168
204
  // These pages are not in the menu but are valid navigation targets
169
- if (selectedKey && (
170
- selectedKey.includes('/edit/') ||
171
- selectedKey.includes('/show/') ||
172
- selectedKey.endsWith('/create')
173
- )) {
205
+ if (
206
+ selectedKey &&
207
+ (selectedKey.includes('/edit/') ||
208
+ selectedKey.includes('/show/') ||
209
+ selectedKey.endsWith('/create'))
210
+ ) {
174
211
  return;
175
212
  }
176
213
 
@@ -178,9 +215,9 @@ export const Sider: React.FC = () => {
178
215
  reRouteNum++;
179
216
 
180
217
  const firstKey = items?.[0]?.key;
181
- if (firstKey && firstKey !== "/dashboard") {
218
+ if (firstKey && firstKey !== '/dashboard') {
182
219
  setOpenKeys([String(firstKey)]);
183
- const firstItem = items?.find(item => item?.key === firstKey) as any;
220
+ const firstItem = items?.find((item) => item?.key === firstKey) as any;
184
221
  if (firstItem?.children?.length > 0) {
185
222
  let childItem = firstItem?.children?.find(
186
223
  (item: any) => selectedKey.indexOf(item?.key) !== -1,
@@ -194,13 +231,14 @@ export const Sider: React.FC = () => {
194
231
  const grandsonItem = childItem?.children?.find(
195
232
  (item: any) => selectedKey.indexOf(item?.key) !== -1,
196
233
  );
197
- const grandsonKey = grandsonItem?.key || firstItem?.children?.[0]?.children?.[0]?.key;
198
- go({ to: grandsonKey, type: "replace" });
234
+ const grandsonKey =
235
+ grandsonItem?.key || firstItem?.children?.[0]?.children?.[0]?.key;
236
+ go({ to: grandsonKey, type: 'replace' });
199
237
  } else {
200
- go({ to: childKey, type: "replace" });
238
+ go({ to: childKey, type: 'replace' });
201
239
  }
202
240
  } else {
203
- go({ to: String(firstKey), type: "replace" });
241
+ go({ to: String(firstKey), type: 'replace' });
204
242
  }
205
243
  }
206
244
  }, 300);
@@ -210,10 +248,11 @@ export const Sider: React.FC = () => {
210
248
 
211
249
  const handleOpenChange = useCallback(
212
250
  (keys: string[]) => {
213
- const latestOpenKey = keys.find(key => !openKeys.includes(key));
251
+ const latestOpenKey = keys.find((key) => !openKeys.includes(key));
214
252
 
215
253
  if (latestOpenKey) {
216
- const parentKeys = getParentKeysFromMenuTree(menuItems, latestOpenKey) || [];
254
+ const parentKeys =
255
+ getParentKeysFromMenuTree(menuItems, latestOpenKey) || [];
217
256
  setOpenKeys([...parentKeys, latestOpenKey]);
218
257
  } else {
219
258
  setOpenKeys(keys);
@@ -224,7 +263,7 @@ export const Sider: React.FC = () => {
224
263
 
225
264
  const handleMenuClick = useCallback(
226
265
  ({ key }: { key: string }) => {
227
- const clickedItem = menuItems.find(item => item.key === key);
266
+ const clickedItem = menuItems.find((item) => item.key === key);
228
267
  if (clickedItem && clickedItem.children.length === 0) {
229
268
  setOpenKeys([]);
230
269
  }
@@ -243,16 +282,23 @@ export const Sider: React.FC = () => {
243
282
  mode="inline"
244
283
  items={items}
245
284
  style={{
246
- paddingTop: "8px",
247
- border: "none",
248
- overflow: "auto",
249
- height: "calc(100% - 72px)",
250
- background: "transparent",
285
+ paddingTop: '8px',
286
+ border: 'none',
287
+ overflow: 'auto',
288
+ height: 'calc(100% - 72px)',
289
+ background: 'transparent',
251
290
  }}
252
291
  onClick={handleMenuClick}
253
292
  ></Menu>
254
293
  );
255
- }, [selectedKey, defaultOpenKeys, openKeys, handleOpenChange, items, handleMenuClick]);
294
+ }, [
295
+ selectedKey,
296
+ defaultOpenKeys,
297
+ openKeys,
298
+ handleOpenChange,
299
+ items,
300
+ handleMenuClick,
301
+ ]);
256
302
 
257
303
  const renderDrawerSider = () => {
258
304
  return (
@@ -274,21 +320,22 @@ export const Sider: React.FC = () => {
274
320
  <Layout.Sider
275
321
  width={500}
276
322
  style={{
277
- height: "100vh",
323
+ height: '100vh',
278
324
  backgroundColor: token.colorBgContainer,
279
325
  borderRight: `1px solid ${token.colorBorderBg}`,
280
326
  }}
281
327
  >
282
328
  <div
329
+ {...agentAttrs({ type: 'app-title' })}
283
330
  style={{
284
- width: "256px",
285
- padding: "0 16px",
286
- display: "flex",
287
- justifyContent: "flex-start",
288
- alignItems: "center",
289
- height: "64px",
331
+ width: '256px',
332
+ padding: '0 16px',
333
+ display: 'flex',
334
+ justifyContent: 'flex-start',
335
+ alignItems: 'center',
336
+ height: '64px',
290
337
  backgroundColor: token.colorBgElevated,
291
- borderBottom: "none",
338
+ borderBottom: 'none',
292
339
  }}
293
340
  >
294
341
  <Title collapsed={false} />
@@ -314,10 +361,10 @@ export const Sider: React.FC = () => {
314
361
  const siderStyles: React.CSSProperties = {
315
362
  backgroundColor: token.colorBgContainer,
316
363
  borderRight: `1px solid ${token.colorBorderBg}`,
317
- position: "sticky",
364
+ position: 'sticky',
318
365
  top: 0,
319
366
  left: 0,
320
- height: "100vh",
367
+ height: '100vh',
321
368
  zIndex: 999,
322
369
  };
323
370
 
@@ -329,7 +376,7 @@ export const Sider: React.FC = () => {
329
376
  collapsible
330
377
  collapsed={siderCollapsed}
331
378
  onCollapse={(collapsed, type) => {
332
- if (type === "clickTrigger") {
379
+ if (type === 'clickTrigger') {
333
380
  setSiderCollapsed(collapsed);
334
381
  }
335
382
  }}
@@ -340,8 +387,8 @@ export const Sider: React.FC = () => {
340
387
  type="text"
341
388
  style={{
342
389
  borderRadius: 0,
343
- height: "100%",
344
- width: "100%",
390
+ height: '100%',
391
+ width: '100%',
345
392
  backgroundColor: token.colorBgElevated,
346
393
  borderRight: `1px solid ${token.colorBorderBg}`,
347
394
  }}
@@ -363,15 +410,16 @@ export const Sider: React.FC = () => {
363
410
  }
364
411
  >
365
412
  <div
413
+ {...agentAttrs({ type: 'app-title' })}
366
414
  style={{
367
- width: siderCollapsed ? "80px" : "256px",
368
- padding: siderCollapsed ? "0" : "0 16px",
369
- display: "flex",
370
- justifyContent: siderCollapsed ? "center" : "flex-start",
371
- alignItems: "center",
372
- height: "64px",
415
+ width: siderCollapsed ? '80px' : '256px',
416
+ padding: siderCollapsed ? '0' : '0 16px',
417
+ display: 'flex',
418
+ justifyContent: siderCollapsed ? 'center' : 'flex-start',
419
+ alignItems: 'center',
420
+ height: '64px',
373
421
  backgroundColor: token.colorBgElevated,
374
- fontSize: "14px",
422
+ fontSize: '14px',
375
423
  }}
376
424
  >
377
425
  <Title collapsed={siderCollapsed} />
@@ -1,15 +1,15 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
 
3
- import type { RefineLayoutThemedTitleProps } from "@refinedev/antd";
4
- import { useLink } from "@refinedev/core";
3
+ import type { RefineLayoutThemedTitleProps } from '@refinedev/antd';
4
+ import { useLink } from '@refinedev/core';
5
5
 
6
- import { Space, theme, Typography } from "antd";
6
+ import { Space, theme, Typography } from 'antd';
7
7
 
8
- import { Logo } from "./logo";
8
+ import { Logo } from './logo';
9
9
 
10
10
  const { useToken } = theme;
11
11
 
12
- const name = "Opinions admin";
12
+ const name = 'Opinions admin';
13
13
 
14
14
  export const Title: React.FC<RefineLayoutThemedTitleProps> = ({
15
15
  collapsed,
@@ -22,22 +22,22 @@ export const Title: React.FC<RefineLayoutThemedTitleProps> = ({
22
22
  <Link
23
23
  to="/"
24
24
  style={{
25
- display: "inline-block",
26
- textDecoration: "none",
25
+ display: 'inline-block',
26
+ textDecoration: 'none',
27
27
  }}
28
28
  >
29
29
  <Space
30
30
  style={{
31
- display: "flex",
32
- alignItems: "center",
33
- fontSize: "inherit",
31
+ display: 'flex',
32
+ alignItems: 'center',
33
+ fontSize: 'inherit',
34
34
  ...wrapperStyles,
35
35
  }}
36
36
  >
37
37
  <div
38
38
  style={{
39
- height: "24px",
40
- width: "24px",
39
+ height: '24px',
40
+ width: '24px',
41
41
  color: token.colorPrimary,
42
42
  }}
43
43
  >
@@ -47,7 +47,7 @@ export const Title: React.FC<RefineLayoutThemedTitleProps> = ({
47
47
  {!collapsed && (
48
48
  <Typography.Title
49
49
  style={{
50
- fontSize: "inherit",
50
+ fontSize: 'inherit',
51
51
  marginBottom: 0,
52
52
  fontWeight: 700,
53
53
  }}
@@ -1,4 +1,4 @@
1
- import { RefineKbar } from "@refinedev/kbar";
1
+ import { RefineKbar } from '@refinedev/kbar';
2
2
 
3
3
  export const OffLayoutArea: React.FC = () => {
4
4
  return <RefineKbar />;
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
 
3
3
  type PaginationTotalProps = {
4
4
  total: number;
@@ -12,7 +12,7 @@ export const PaginationTotal: React.FC<PaginationTotalProps> = ({
12
12
  return (
13
13
  <span
14
14
  style={{
15
- marginLeft: "16px",
15
+ marginLeft: '16px',
16
16
  }}
17
17
  >
18
18
  <span className="ant-text secondary">{total}</span> {entityName} in total
@@ -1 +1 @@
1
- export * from "./role-tag";
1
+ export * from './role-tag';
@@ -1,26 +1,26 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
 
3
- import { Tag } from "antd";
3
+ import { Tag } from 'antd';
4
4
 
5
5
  // Color mapping for different roles
6
6
  const roleColorMap: Record<string, string> = {
7
- OFFICE: "green",
8
- CES: "blue",
9
- INFRA: "purple",
10
- FIT: "green",
11
- SECURITY: "green",
12
- COST: "gold",
13
- HR: "orange",
14
- HR_AMER: "coral",
15
- HR_APAC: "khaki",
16
- HR_EMEA: "amber",
17
- HR_MALAYSIA: "pink",
18
- HR_SINGAPORE: "lightblue",
19
- OMC: "magenta",
20
- PRODUCT: "cyan",
21
- SYSTEM_ADMIN: "red",
22
- FEATURE_IOA_DEVICE_IP: "green",
23
- BUSINESS_TRIP: "teal",
7
+ OFFICE: 'green',
8
+ CES: 'blue',
9
+ INFRA: 'purple',
10
+ FIT: 'green',
11
+ SECURITY: 'green',
12
+ COST: 'gold',
13
+ HR: 'orange',
14
+ HR_AMER: 'coral',
15
+ HR_APAC: 'khaki',
16
+ HR_EMEA: 'amber',
17
+ HR_MALAYSIA: 'pink',
18
+ HR_SINGAPORE: 'lightblue',
19
+ OMC: 'magenta',
20
+ PRODUCT: 'cyan',
21
+ SYSTEM_ADMIN: 'red',
22
+ FEATURE_IOA_DEVICE_IP: 'green',
23
+ BUSINESS_TRIP: 'teal',
24
24
  };
25
25
 
26
26
  type Props = {
@@ -28,12 +28,12 @@ type Props = {
28
28
  };
29
29
 
30
30
  export const RoleStatusTag: React.FC<Props> = ({ role }) => {
31
- const color = roleColorMap[role] || "blue";
31
+ const color = roleColorMap[role] || 'blue';
32
32
 
33
33
  return (
34
34
  <Tag
35
35
  style={{
36
- textTransform: "capitalize",
36
+ textTransform: 'capitalize',
37
37
  }}
38
38
  color={color}
39
39
  title={role}
@@ -1,19 +1,19 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
 
3
- import { ConfigProvider, Typography } from "antd";
3
+ import { ConfigProvider, Typography } from 'antd';
4
4
 
5
5
  export type TextProps = {
6
6
  size?:
7
- | "xs"
8
- | "sm"
9
- | "md"
10
- | "lg"
11
- | "xl"
12
- | "xxl"
13
- | "xxxl"
14
- | "huge"
15
- | "xhuge"
16
- | "xxhuge";
7
+ | 'xs'
8
+ | 'sm'
9
+ | 'md'
10
+ | 'lg'
11
+ | 'xl'
12
+ | 'xxl'
13
+ | 'xxxl'
14
+ | 'huge'
15
+ | 'xhuge'
16
+ | 'xxhuge';
17
17
  } & React.ComponentProps<typeof Typography.Text>;
18
18
 
19
19
  const sizes = {
@@ -59,7 +59,11 @@ const sizes = {
59
59
  },
60
60
  };
61
61
 
62
- export const Text: React.FC<TextProps> = ({ size = "sm", children, ...rest }) => {
62
+ export const Text: React.FC<TextProps> = ({
63
+ size = 'sm',
64
+ children,
65
+ ...rest
66
+ }) => {
63
67
  return (
64
68
  <ConfigProvider
65
69
  theme={{
@@ -1,16 +1,37 @@
1
1
  // ─── URL / 部署配置 ───────────────────────────────────────────────────────────
2
+ // 本文件定义了前端访问后端 API 的 URL 生成逻辑,支持多种部署场景(本地开发、同域部署、跨域部署等)
3
+ // 变量名 配置文件 生效阶段 用途
4
+ // ──────────────── ─────────────── ────────────────── ──────────────────────────────────
5
+ // VITE_API_URL web/.env* 浏览器运行时 直接覆盖 API baseURL(优先级最高)
6
+ // VITE_BACKEND_URL web/.env* Vite Dev Server dev proxy target,仅 dev 模式生效
7
+ // VITE_DEPLOY_NAME web/.env* 浏览器运行时 子路径前缀,如 "myapp" → /myapp/api
8
+ //
9
+ // 注:server 端的环境变量(如 DATABASE_URL、PORT 等)配置在 server/.env*,与此文件无关
10
+ //
11
+ // ─── 典型场景速查 ─────────────────────────────────────────────────────────────
12
+ //
13
+ // 场景 最终 API 地址
14
+ // ─────────────────────────────────────────────── ──────────────────────────────────────
15
+ // 本地开发,web/ 前端 :3000,无任何 env 配置 http://localhost:8000/api(直连 server/)
16
+ // 本地开发,web/ 前端 :5173,web/.env* 设 VITE_BACKEND_URL http://localhost:5173/api → proxy → server/ :8000
17
+ // 本地开发,web/ 前端 :5173,未设 VITE_BACKEND_URL http://localhost:5173/api ❌ 请求会失败
18
+ // web/.env* 设置了 VITE_DEPLOY_NAME=foo http://localhost:8000/foo/api
19
+ // 生产环境,web/.env* 设置了 VITE_API_URL https://api.example.com/api
20
+ // 生产环境,同域部署,未设 VITE_API_URL https://your-domain.com/api
21
+ //
22
+ // ─────────────────────────────────────────────────────────────────────────────
2
23
  /**
3
24
  * 读取部署子路径(Vite env: VITE_DEPLOY_NAME)
4
25
  * 本地开发不设置时返回空字符串
5
26
  */
6
27
  export function getUrlBasename(): string {
7
28
  if (
8
- typeof import.meta !== "undefined" &&
29
+ typeof import.meta !== 'undefined' &&
9
30
  import.meta.env?.VITE_DEPLOY_NAME?.trim()
10
31
  ) {
11
32
  return `/${import.meta.env.VITE_DEPLOY_NAME.trim()}`;
12
33
  }
13
- return "";
34
+ return '';
14
35
  }
15
36
 
16
37
  /**
@@ -19,10 +40,10 @@ export function getUrlBasename(): string {
19
40
  */
20
41
  export function getApiUrl(): string {
21
42
  if (
22
- typeof import.meta !== "undefined" &&
43
+ typeof import.meta !== 'undefined' &&
23
44
  import.meta.env?.VITE_API_URL?.trim()
24
45
  ) {
25
46
  return import.meta.env.VITE_API_URL.trim();
26
47
  }
27
- return `${window.location.origin.replace("3000", "8000")}${getUrlBasename()}/api`;
28
- }
48
+ return `${window.location.origin.replace(':3000', ':8000')}${getUrlBasename()}/api`;
49
+ }