@gadmin2n/schematics 0.0.69 → 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 +1 -1
  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,11 +1,11 @@
1
- import { useMemo, useState, useEffect, useRef, useCallback } from "react";
2
- import { customRequest } from "helpers/login";
3
- import type { Role } from "types/role";
1
+ import { useMemo, useState, useEffect, useRef, useCallback } from 'react';
2
+ import { customRequest } from 'helpers/http';
3
+ import type { Role } from 'types/role';
4
4
 
5
- const RoleCacheKey = "oiterproles";
6
- const PagesCacheKey = "oiterpages";
7
- const RolePagesCacheKey = "oiterprolepages";
8
- const RolesDataCacheKey = "oiterprolesdatacache";
5
+ const RoleCacheKey = 'oiterproles';
6
+ const PagesCacheKey = 'oiterpages';
7
+ const RolePagesCacheKey = 'oiterprolepages';
8
+ const RolesDataCacheKey = 'oiterprolesdatacache';
9
9
 
10
10
  /**
11
11
  * Base Hook: User Page Access Data
@@ -84,30 +84,30 @@ function writeCache(key: string, value: unknown): void {
84
84
  export const useUserPageAccess = (): UseUserPageAccessResult => {
85
85
  // Role names — initialise from cache so first render is non-empty
86
86
  const [roleNames, setRoleNames] = useState<string[]>(
87
- () => readCache<string[]>(RoleCacheKey) ?? []
87
+ () => readCache<string[]>(RoleCacheKey) ?? [],
88
88
  );
89
89
  // isRoleLoading only stays true while we wait for the live /userinfo response
90
90
  const [isRoleLoading, setIsRoleLoading] = useState(true);
91
91
 
92
92
  // Data states — initialise from cache for instant first render
93
- const [rolesData, setRolesData] = useState<Role[] | null>(
94
- () => readCache<Role[]>(RolesDataCacheKey)
93
+ const [rolesData, setRolesData] = useState<Role[] | null>(() =>
94
+ readCache<Role[]>(RolesDataCacheKey),
95
95
  );
96
- const [rolePagesData, setRolePagesData] = useState<RolePage[] | null>(
97
- () => readCache<RolePage[]>(RolePagesCacheKey)
96
+ const [rolePagesData, setRolePagesData] = useState<RolePage[] | null>(() =>
97
+ readCache<RolePage[]>(RolePagesCacheKey),
98
98
  );
99
- const [pagesData, setPagesData] = useState<Page[] | null>(
100
- () => readCache<Page[]>(PagesCacheKey)
99
+ const [pagesData, setPagesData] = useState<Page[] | null>(() =>
100
+ readCache<Page[]>(PagesCacheKey),
101
101
  );
102
102
 
103
103
  // Track previous roles to detect changes
104
- const prevRolesRef = useRef<string>("");
104
+ const prevRolesRef = useRef<string>('');
105
105
 
106
106
  // Function to update roles in state and sessionStorage
107
107
  const updateRoles = useCallback((newRoles: string[]) => {
108
108
  const rolesKey = JSON.stringify(newRoles.sort());
109
109
  if (rolesKey !== prevRolesRef.current) {
110
- console.log("[useUserPageAccess] Roles changed:", newRoles);
110
+ console.log('[useUserPageAccess] Roles changed:', newRoles);
111
111
  prevRolesRef.current = rolesKey;
112
112
  setRoleNames(newRoles);
113
113
  writeCache(RoleCacheKey, newRoles);
@@ -118,13 +118,16 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
118
118
  useEffect(() => {
119
119
  const fetchRolesFromBackend = async () => {
120
120
  try {
121
- const res = await customRequest<any>("userinfo", "GET", {});
121
+ const res = await customRequest<any>('userinfo', 'GET', {});
122
122
  const roles = res?.configPerms?.roles;
123
123
  if (roles && Array.isArray(roles)) {
124
124
  updateRoles(roles as string[]);
125
125
  }
126
126
  } catch (error) {
127
- console.error("[useUserPageAccess] Failed to fetch roles from backend:", error);
127
+ console.error(
128
+ '[useUserPageAccess] Failed to fetch roles from backend:',
129
+ error,
130
+ );
128
131
  // Fallback to sessionStorage if backend request fails
129
132
  try {
130
133
  const cached = readCache<string[]>(RoleCacheKey);
@@ -132,7 +135,7 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
132
135
  updateRoles(cached);
133
136
  }
134
137
  } catch (e) {
135
- console.error("[useUserPageAccess] Failed to parse cached roles:", e);
138
+ console.error('[useUserPageAccess] Failed to parse cached roles:', e);
136
139
  }
137
140
  } finally {
138
141
  setIsRoleLoading(false);
@@ -146,21 +149,24 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
146
149
  useEffect(() => {
147
150
  const fetchPages = async () => {
148
151
  try {
149
- const res = await customRequest<any>("page/findMany", "post", {});
152
+ const res = await customRequest<any>('page/findMany', 'post', {});
150
153
  const pages = res?.data as Page[];
151
154
  // Keep existing reference if page IDs haven't changed — prevents
152
155
  // downstream memos (accessiblePageIds, dynamicResources, allResources)
153
156
  // from rebuilding and giving Refine a new resources prop.
154
- setPagesData(prev => {
155
- if (prev && prev.length === pages.length &&
156
- prev.every((p, i) => p.id === pages[i].id)) {
157
+ setPagesData((prev) => {
158
+ if (
159
+ prev &&
160
+ prev.length === pages.length &&
161
+ prev.every((p, i) => p.id === pages[i].id)
162
+ ) {
157
163
  return prev;
158
164
  }
159
165
  writeCache(PagesCacheKey, pages);
160
166
  return pages;
161
167
  });
162
168
  } catch (error) {
163
- console.error("[useUserPageAccess] Failed to fetch pages:", error);
169
+ console.error('[useUserPageAccess] Failed to fetch pages:', error);
164
170
  }
165
171
  };
166
172
  fetchPages();
@@ -179,21 +185,21 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
179
185
  where: { name: { in: roleNames } },
180
186
  select: { id: true, name: true },
181
187
  };
182
- const res = await customRequest<any>("role/findMany", "post", query);
188
+ const res = await customRequest<any>('role/findMany', 'post', query);
183
189
  const roles = res?.data as Role[];
184
190
  setRolesData(roles);
185
191
  writeCache(RolesDataCacheKey, roles);
186
192
  } catch (error) {
187
- console.error("[useUserPageAccess] Failed to fetch roles:", error);
193
+ console.error('[useUserPageAccess] Failed to fetch roles:', error);
188
194
  }
189
195
  };
190
196
  fetchRoles();
191
- }, [roleNames.join(",")]);
197
+ }, [roleNames.join(',')]);
192
198
 
193
199
  // Calculate roleIds
194
200
  const roleIds = useMemo(() => {
195
201
  if (!rolesData) return [];
196
- return rolesData.map(role => role.id);
202
+ return rolesData.map((role) => role.id);
197
203
  }, [rolesData]);
198
204
 
199
205
  // Step 4: Fetch role-page relationships when roleIds are available
@@ -206,24 +212,31 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
206
212
  const fetchRolePages = async () => {
207
213
  try {
208
214
  const query = { where: { roleId: { in: roleIds } } };
209
- const res = await customRequest<any>("rolePages/findMany", "post", query);
215
+ const res = await customRequest<any>(
216
+ 'rolePages/findMany',
217
+ 'post',
218
+ query,
219
+ );
210
220
  const rolePages = res?.data as RolePage[];
211
221
  // Same stable-reference trick: keep existing ref if content unchanged.
212
- setRolePagesData(prev => {
213
- if (prev && prev.length === rolePages.length &&
214
- prev.every((rp, i) => rp.id === rolePages[i].id)) {
222
+ setRolePagesData((prev) => {
223
+ if (
224
+ prev &&
225
+ prev.length === rolePages.length &&
226
+ prev.every((rp, i) => rp.id === rolePages[i].id)
227
+ ) {
215
228
  return prev;
216
229
  }
217
230
  writeCache(RolePagesCacheKey, rolePages);
218
231
  return rolePages;
219
232
  });
220
233
  } catch (error) {
221
- console.error("[useUserPageAccess] Failed to fetch rolePages:", error);
234
+ console.error('[useUserPageAccess] Failed to fetch rolePages:', error);
222
235
  }
223
236
  };
224
237
 
225
238
  fetchRolePages();
226
- }, [roleIds.join(",")]);
239
+ }, [roleIds.join(',')]);
227
240
 
228
241
  // Build page maps
229
242
  const { pageMap, pageCodeMap } = useMemo(() => {
@@ -231,7 +244,7 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
231
244
  const codeMap = new Map<string, Page>();
232
245
 
233
246
  if (pagesData) {
234
- pagesData.forEach(page => {
247
+ pagesData.forEach((page) => {
235
248
  idMap.set(page.id, page);
236
249
  codeMap.set(page.code, page);
237
250
  });
@@ -252,7 +265,7 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
252
265
  }
253
266
 
254
267
  // Add directly accessible pages
255
- rolePagesData.forEach(rolePage => {
268
+ rolePagesData.forEach((rolePage) => {
256
269
  ids.add(rolePage.pageId);
257
270
  });
258
271
 
@@ -272,13 +285,13 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
272
285
 
273
286
  const originalIds = Array.from(ids);
274
287
  const visited = new Set<number>();
275
- originalIds.forEach(pageId => {
288
+ originalIds.forEach((pageId) => {
276
289
  addAncestorPages(pageId, visited);
277
290
  });
278
291
 
279
292
  // Keep existing reference if IDs haven't changed
280
293
  const prev = prevAccessiblePageIdsRef.current;
281
- if (prev.size === ids.size && Array.from(ids).every(id => prev.has(id))) {
294
+ if (prev.size === ids.size && Array.from(ids).every((id) => prev.has(id))) {
282
295
  return prev;
283
296
  }
284
297
 
@@ -290,7 +303,7 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
290
303
  const accessiblePageCodes = useMemo(() => {
291
304
  const codes = new Set<string>();
292
305
 
293
- accessiblePageIds.forEach(pageId => {
306
+ accessiblePageIds.forEach((pageId) => {
294
307
  const page = pageMap.get(pageId);
295
308
  if (page) {
296
309
  codes.add(page.code);
@@ -312,7 +325,7 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
312
325
  const hasCache = useMemo(
313
326
  () => !!(readCache(PagesCacheKey) && readCache(RolePagesCacheKey)),
314
327
  // eslint-disable-next-line react-hooks/exhaustive-deps
315
- []
328
+ [],
316
329
  );
317
330
 
318
331
  const isLoading = useMemo(() => {
@@ -320,7 +333,8 @@ export const useUserPageAccess = (): UseUserPageAccessResult => {
320
333
  if (hasCache && pagesData && rolePagesData) return false;
321
334
  if (isRoleLoading) return true;
322
335
  if (!pagesData) return true;
323
- if (roleNames.length > 0 && roleIds.length > 0 && !rolePagesData) return true;
336
+ if (roleNames.length > 0 && roleIds.length > 0 && !rolePagesData)
337
+ return true;
324
338
  return false;
325
339
  }, [isRoleLoading, pagesData, roleNames, roleIds, rolePagesData, hasCache]);
326
340
 
@@ -1,20 +1,20 @@
1
- import i18n from "i18next";
2
- import { initReactI18next } from "react-i18next";
3
- import detector from "i18next-browser-languagedetector";
4
- import en from "./locales/en/common.json";
5
- import zh_CN from "./locales/zh_CN/common.json";
1
+ import i18n from 'i18next';
2
+ import { initReactI18next } from 'react-i18next';
3
+ import detector from 'i18next-browser-languagedetector';
4
+ import en from './locales/en/common.json';
5
+ import zh_CN from './locales/zh_CN/common.json';
6
6
 
7
7
  i18n
8
8
  .use(detector)
9
9
  .use(initReactI18next)
10
10
  .init({
11
- supportedLngs: ["en", "zh_CN"],
11
+ supportedLngs: ['en', 'zh_CN'],
12
12
  resources: {
13
13
  en: { common: en },
14
14
  zh_CN: { common: zh_CN },
15
15
  },
16
- defaultNS: "common",
17
- fallbackLng: ["en", "zh_CN"],
16
+ defaultNS: 'common',
17
+ fallbackLng: ['en', 'zh_CN'],
18
18
  react: {
19
19
  useSuspense: false,
20
20
  },
@@ -6,6 +6,13 @@ import './i18n';
6
6
 
7
7
  import { checkLogin, login } from './helpers/login';
8
8
 
9
+ // 屏蔽 ECharts 在 RadarChart 多 Y 轴场景下的 alignTicks 噪音警告
10
+ const _warn = console.warn.bind(console);
11
+ console.warn = (...args: any[]) => {
12
+ if (typeof args[0] === 'string' && args[0].includes('alignTicks')) return;
13
+ _warn(...args);
14
+ };
15
+
9
16
  if (!checkLogin()) {
10
17
  login();
11
18
  } else {
@@ -13,8 +20,8 @@ if (!checkLogin()) {
13
20
  const root = createRoot(container);
14
21
 
15
22
  root.render(
16
- <React.Suspense fallback='loading'>
23
+ <React.Suspense fallback="loading">
17
24
  <App />
18
- </React.Suspense>
25
+ </React.Suspense>,
19
26
  );
20
27
  }
@@ -115,6 +115,18 @@
115
115
  "fields":{
116
116
  "timestamp": "OperateTime"
117
117
  }
118
+ },
119
+ "iTActivityDay": {
120
+ "fields": {
121
+ "tags": "标签"
122
+ }
123
+ },
124
+ "event": {
125
+ "fields": {
126
+ "eventType": "eventType",
127
+ "city": "City",
128
+ "country": "Country"
129
+ }
118
130
  }
119
131
  },
120
132
  "table": {
@@ -124,5 +136,186 @@
124
136
  },
125
137
  "form": {
126
138
  "uploadPlaceholder": "Drag & drop a file in this area"
139
+ },
140
+ "canvas": {
141
+ "componentLib": "Components",
142
+ "backToList": "Back to list",
143
+ "save": "Save",
144
+ "saveDirty": "Save •",
145
+ "preview": "Preview",
146
+ "publish": "Publish",
147
+ "published": "Published ✓",
148
+ "unpublish": "Unpublish",
149
+ "unpublishConfirm": "Unpublish this page? It will be removed from the navigation menu.",
150
+ "unpublishSuccess": "Unpublished",
151
+ "unpublishFailed": "Unpublish failed",
152
+ "clickToRename": "Click to rename",
153
+ "emptyHint": "Drag components from the library",
154
+ "exitPreview": "Exit Preview",
155
+ "config": "Configure",
156
+ "editCode": "Edit Code",
157
+ "duplicate": "Duplicate",
158
+ "delete": "Delete",
159
+ "custom": "Custom",
160
+ "customAction": "Custom Action",
161
+ "customPlaceholder": "Describe what you want to do with this component",
162
+ "components": {
163
+ "NumCard": "Metric Card",
164
+ "BarChart": "Bar Chart",
165
+ "LineChart": "Line Chart",
166
+ "PieChart": "Pie Chart",
167
+ "RadarChart": "Radar Chart",
168
+ "TreemapChart": "Treemap",
169
+ "Table": "Table",
170
+ "WorldMap": "World Map"
171
+ },
172
+ "variants": {
173
+ "default": "Default",
174
+ "bar": "Bar",
175
+ "stackBar": "Stacked Bar",
176
+ "stackBarPercent": "Percent Stack",
177
+ "pie": "Pie",
178
+ "ring": "Ring",
179
+ "sunburst": "Sunburst",
180
+ "heatmap": "Heatmap",
181
+ "demo": "Demo",
182
+ "card-grid": "Card Grid",
183
+ "inline": "Inline",
184
+ "inline-right": "Inline Right"
185
+ },
186
+ "dataSource": {
187
+ "api": "Data Source (API)",
188
+ "sql": "Data Source (SQL)",
189
+ "apiPlaceholder": "Describe the data, e.g.: daily active users over last 14 days",
190
+ "sqlPlaceholder": "Describe the data, e.g.: revenue comparison over last 30 days"
191
+ },
192
+ "dataSourceModal": {
193
+ "title": "Data Source",
194
+ "ok": "OK",
195
+ "cancel": "Cancel",
196
+ "add": "Add",
197
+ "descLabel": "Data description:",
198
+ "descPlaceholder": "Describe the data you need, e.g.: query daily active users from t_daily_stats",
199
+ "includeChart": "Include line chart",
200
+ "chartRange": "Range:",
201
+ "chartRangePlaceholder": "e.g.: Last 7 days, Last 30 days",
202
+ "includeComparisons": "Include comparisons",
203
+ "comparedTo": "vs",
204
+ "comparedToPlaceholder": "Enter comparison target",
205
+ "columns": "Columns",
206
+ "columnPlaceholder": "Column name",
207
+ "pagination": "Pagination",
208
+ "pageSize": "Page size",
209
+ "pageSizeUnit": "rows",
210
+ "barDirection": "Direction",
211
+ "barVertical": "Vertical",
212
+ "barHorizontal": "Horizontal",
213
+ "showGrid": "Show grid",
214
+ "showLabel": "Show labels",
215
+ "showLegend": "Show legend",
216
+ "showAxis": "Show axis",
217
+ "showDots": "Show dots",
218
+ "showDotsLabel": "Show dot values",
219
+ "stacked": "Stacked",
220
+ "area": "Area fill",
221
+ "smooth": "Smooth curve",
222
+ "dimensionCount": "Dimensions",
223
+ "dimensionCountPlaceholder": "e.g.: 5",
224
+ "tablePlaceholder": "Describe the data, e.g.: query last 30 days from t_daily_report",
225
+ "barPlaceholder": "Describe the data, e.g.: query daily device counts by type from t_daily_stats",
226
+ "linePlaceholder": "Describe the data, e.g.: query daily metric trends from t_daily_stats",
227
+ "radarPlaceholder": "Describe the data, e.g.: query employee skill scores from t_employee_skills"
228
+ },
229
+ "menu": {
230
+ "hideLegend": "Hide Legend",
231
+ "showLegend": "Show Legend",
232
+ "editTitle": "Edit Title",
233
+ "addTitle": "Add Title",
234
+ "editChartTitle": "Edit Chart Title",
235
+ "addChartTitle": "Add Chart Title",
236
+ "titlePlaceholder": "Enter title (leave empty to remove)",
237
+ "removeComparisons": "Remove Comparisons",
238
+ "addComparisons": "Add Comparisons",
239
+ "removeChart": "Remove Chart",
240
+ "addChart": "Add Chart",
241
+ "changePageSize": "Change Page Size",
242
+ "removePagination": "Remove Pagination",
243
+ "addPagination": "Add Pagination",
244
+ "direction": "Direction",
245
+ "vertical": "Vertical",
246
+ "horizontal": "Horizontal",
247
+ "hideGrid": "Hide Grid",
248
+ "showGrid": "Show Grid",
249
+ "hideLabel": "Hide Labels",
250
+ "showLabel": "Show Labels",
251
+ "switchVariant": "Switch Style",
252
+ "pie": "Pie",
253
+ "ring": "Ring",
254
+ "topN": "Top N Items",
255
+ "hideAxis": "Hide Axis",
256
+ "showAxis": "Show Axis",
257
+ "hideDots": "Hide Dots",
258
+ "showDots": "Show Dots",
259
+ "hideDotsLabel": "Hide Dot Values",
260
+ "showDotsLabel": "Show Dot Values",
261
+ "disableStacked": "Disable Stacking",
262
+ "enableStacked": "Enable Stacking",
263
+ "disableArea": "Disable Area Fill",
264
+ "enableArea": "Enable Area Fill",
265
+ "disableSmooth": "Disable Smooth",
266
+ "enableSmooth": "Enable Smooth"
267
+ },
268
+ "list": {
269
+ "title": "My Canvas",
270
+ "create": "New Canvas",
271
+ "published": "Published",
272
+ "unpublished": "Unpublished",
273
+ "rename": "Rename",
274
+ "renameTitle": "Rename Canvas",
275
+ "renamePlaceholder": "Enter new name",
276
+ "renameEmpty": "Name cannot be empty",
277
+ "renameDuplicate": "Name already exists",
278
+ "renamed": "Renamed",
279
+ "renamePublishedWarning": "This Canvas is published. Renaming will also update the page name in the navigation.",
280
+ "renameFailed": "Rename failed",
281
+ "deleteBtn": "Delete",
282
+ "deletePublishedConfirm": "This Canvas is published. Deleting it will also remove the published page. Continue?",
283
+ "deleteConfirm": "Delete this Canvas?",
284
+ "deleted": "Deleted",
285
+ "deleteFailed": "Delete failed",
286
+ "loadFailed": "Failed to load Canvas list",
287
+ "createFailed": "Failed to create Canvas",
288
+ "ok": "OK",
289
+ "cancel": "Cancel"
290
+ },
291
+ "publishModal": {
292
+ "title": "Publish Canvas",
293
+ "updateBtn": "Update Page",
294
+ "publishBtn": "Publish",
295
+ "cancel": "Cancel",
296
+ "overwriteOption": "Update existing page",
297
+ "newPageOption": "Publish as new page",
298
+ "overwriteDesc": "Replace the published page content with the current Canvas.",
299
+ "pageName": "Page Name",
300
+ "pageNameRequired": "Please enter a page name",
301
+ "pageNamePlaceholder": "e.g.: Game Dashboard",
302
+ "parentPage": "Parent Page",
303
+ "parentPageRequired": "Please select a parent page",
304
+ "parentPagePlaceholder": "Select parent page",
305
+ "description": "Description (optional)",
306
+ "descriptionPlaceholder": "e.g.: Data from /api/game, needs loading state",
307
+ "rootPage": "Root (top level)",
308
+ "success": "Published successfully",
309
+ "error": "Publish failed",
310
+ "agentSent": "Publish request sent, AI agent is processing...",
311
+ "loadPagesFailed": "Failed to load page list"
312
+ },
313
+ "edit": {
314
+ "saved": "Saved",
315
+ "saveFailed": "Save failed",
316
+ "renamed": "Renamed",
317
+ "renameDuplicate": "Name already exists",
318
+ "renameFailed": "Rename failed"
319
+ }
127
320
  }
128
321
  }