@gadmin2n/schematics 0.0.64 → 0.0.65

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 (222) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/.dockerignore +2 -2
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/Dockerfile +40 -26
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +30 -4
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/example.prisma +33 -0
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +163 -0
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +70 -0
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Game.ts +6 -6
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/ITActivityDay.ts +70 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Log.ts +2 -2
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Role.ts +2 -2
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.env +20 -9
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.env.local +1 -0
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.eslintrc.js +1 -0
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +1 -0
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/server/README.md +2 -18
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +1 -1
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +1232 -0
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +65 -38
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma/.generator.prisma +4 -3
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +16 -0
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/games.ts +1 -71
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +17 -21
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +278 -0
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/seedDataMngtPages.ts +258 -0
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/users.ts +7 -0
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/alias.config.ts +7 -0
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.controller.ts +151 -11
  28. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.module.ts +29 -13
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.service.ts +151 -12
  30. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/auth.guard.ts +87 -41
  31. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/http-cache.interceptor.ts +21 -0
  32. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/logger.ts +19 -0
  33. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/safe-log.util.ts +176 -0
  34. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/{yufuid.ts → taihu.ts} +49 -34
  35. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/tracing.ts +174 -0
  36. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/trim.pipe.ts +51 -0
  37. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/utils.ts +91 -0
  38. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/lib/woaAuth.ts +25 -12
  39. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +22 -12
  40. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.controller.spec.ts +20 -0
  41. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.controller.ts +190 -0
  42. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.module.ts +10 -0
  43. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.service.spec.ts +338 -0
  44. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.service.ts +83 -0
  45. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.controller.spec.ts +20 -0
  46. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.controller.ts +188 -0
  47. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.module.ts +10 -0
  48. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.service.spec.ts +18 -0
  49. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.service.ts +83 -0
  50. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.controller.spec.ts +20 -0
  51. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.controller.ts +250 -0
  52. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.module.ts +10 -0
  53. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.spec.ts +18 -0
  54. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.ts +1051 -0
  55. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.controller.spec.ts +20 -0
  56. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.controller.ts +196 -0
  57. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.module.ts +13 -0
  58. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.service.spec.ts +18 -0
  59. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.service.ts +219 -0
  60. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.controller.spec.ts +20 -0
  61. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.controller.ts +196 -0
  62. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.module.ts +10 -0
  63. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.service.spec.ts +18 -0
  64. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.service.ts +199 -0
  65. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.controller.spec.ts +20 -0
  66. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.controller.ts +210 -0
  67. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.module.ts +12 -0
  68. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.spec.ts +18 -0
  69. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.ts +849 -0
  70. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/roles-refresher.service.ts +133 -0
  71. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.controller.spec.ts +20 -0
  72. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.controller.ts +196 -0
  73. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.module.ts +10 -0
  74. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.service.spec.ts +18 -0
  75. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.service.ts +201 -0
  76. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.controller.spec.ts +20 -0
  77. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.controller.ts +196 -0
  78. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.module.ts +10 -0
  79. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.service.spec.ts +18 -0
  80. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.service.ts +216 -0
  81. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.controller.spec.ts +20 -0
  82. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.controller.ts +198 -0
  83. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.module.ts +10 -0
  84. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.service.spec.ts +18 -0
  85. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.service.ts +104 -0
  86. package/dist/lib/application/files/gadmin2-game-angle-demo/server/start-prod.sh +130 -0
  87. package/dist/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.json +18 -3
  88. package/dist/lib/application/files/gadmin2-game-angle-demo/web/index.html +19 -0
  89. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +34 -42
  90. package/dist/lib/application/files/gadmin2-game-angle-demo/web/postcss.config.cjs +6 -0
  91. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +111 -185
  92. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/auditLogProvider.ts +5 -5
  93. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +49 -51
  94. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +38 -0
  95. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +4 -0
  96. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/{header/index.tsx → header.tsx} +22 -31
  97. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/index.ts +3 -1
  98. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +32 -0
  99. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +19 -0
  100. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +331 -166
  101. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +61 -0
  102. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +21 -0
  103. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/index.ts +1 -0
  104. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +44 -0
  105. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +74 -0
  106. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +258 -0
  107. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +16 -0
  108. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/audit-log.enum.ts +13 -0
  109. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/enums/index.ts +1 -0
  110. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +22 -4
  111. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +211 -0
  112. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useFetchData.ts +33 -0
  113. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRoles.ts +30 -0
  114. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useUserPageAccess.ts +339 -0
  115. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +8 -4
  116. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +3 -11
  117. package/dist/lib/application/files/gadmin2-game-angle-demo/web/{public → src}/locales/en/common.json +1 -1
  118. package/dist/lib/application/files/gadmin2-game-angle-demo/web/{public → src}/locales/zh_CN/common.json +1 -1
  119. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +3 -0
  120. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +134 -0
  121. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +113 -0
  122. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +122 -0
  123. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.ts +8 -0
  124. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +6 -0
  125. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +213 -0
  126. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +61 -0
  127. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +168 -0
  128. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +42 -0
  129. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +42 -0
  130. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +101 -0
  131. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +731 -0
  132. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/create.tsx +113 -0
  133. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/edit.tsx +122 -0
  134. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/hooks/usePageManagement.ts +36 -0
  135. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.ts +8 -0
  136. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.tsx +6 -0
  137. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +1113 -0
  138. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/queries.ts +17 -0
  139. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/show.tsx +61 -0
  140. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/types.ts +44 -0
  141. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/create.tsx +113 -0
  142. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/edit.tsx +122 -0
  143. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/index.tsx +6 -0
  144. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/list.tsx +243 -0
  145. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/pageResource/show.tsx +61 -0
  146. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permission-readme/index.tsx +1088 -0
  147. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +25 -0
  148. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +28 -0
  149. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +160 -0
  150. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +202 -0
  151. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/create.tsx +113 -0
  152. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/edit.tsx +122 -0
  153. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.ts +9 -0
  154. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.tsx +6 -0
  155. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +184 -0
  156. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/queries.ts +10 -0
  157. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/show.tsx +61 -0
  158. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/types.ts +9 -0
  159. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +30 -0
  160. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +47 -0
  161. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +56 -0
  162. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +302 -0
  163. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/create.tsx +113 -0
  164. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/edit.tsx +122 -0
  165. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/hooks/useRolePage.ts +35 -0
  166. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.ts +8 -0
  167. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.tsx +6 -0
  168. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +382 -0
  169. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/queries.ts +8 -0
  170. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/show.tsx +61 -0
  171. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/types.ts +8 -0
  172. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/create.tsx +113 -0
  173. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/edit.tsx +122 -0
  174. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/index.tsx +6 -0
  175. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/list.tsx +243 -0
  176. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/rolePages/show.tsx +61 -0
  177. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/create.tsx +113 -0
  178. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/edit.tsx +122 -0
  179. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/index.tsx +6 -0
  180. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/list.tsx +243 -0
  181. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/roleResource/show.tsx +61 -0
  182. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +17 -0
  183. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +19 -0
  184. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +188 -0
  185. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/index.ts +5 -0
  186. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +48 -0
  187. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +140 -0
  188. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/create.tsx +113 -0
  189. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/edit.tsx +122 -0
  190. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.ts +8 -0
  191. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.tsx +6 -0
  192. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +342 -0
  193. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/queries.ts +14 -0
  194. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/show.tsx +61 -0
  195. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +132 -0
  196. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +58 -0
  197. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +128 -0
  198. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +18 -0
  199. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +21 -0
  200. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/audit-log.ts +1 -0
  201. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/index.ts +3 -0
  202. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/role.ts +7 -0
  203. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/types/user.ts +1 -0
  204. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/utilities/get-name-initials.ts +8 -0
  205. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/utilities/get-random-color.ts +27 -0
  206. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/utilities/index.ts +2 -0
  207. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/utilities/utils.tsx +5 -0
  208. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/vite-env.d.ts +1 -0
  209. package/dist/lib/application/files/gadmin2-game-angle-demo/web/tsconfig.json +3 -3
  210. package/dist/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +31 -0
  211. package/package.json +1 -1
  212. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/sample.prisma +0 -65
  213. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Source.ts +0 -76
  214. package/dist/lib/application/files/gadmin2-game-angle-demo/config/ui/Tasklog.ts +0 -76
  215. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/roles.ts +0 -4
  216. package/dist/lib/application/files/gadmin2-game-angle-demo/web/craco.config.js +0 -27
  217. package/dist/lib/application/files/gadmin2-game-angle-demo/web/public/index.html +0 -53
  218. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/styles.ts +0 -10
  219. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/react-app-env.d.ts +0 -1
  220. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/reportWebVitals.ts +0 -15
  221. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.less +0 -79
  222. /package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/{index.js → index.jsx} +0 -0
@@ -1,185 +1,111 @@
1
- import React from "react";
2
- import { Refine, ResourceProps } from "@refinedev/core";
3
- import {
4
- notificationProvider,
5
- ErrorComponent,
6
- ThemedLayoutV2,
7
- } from "@refinedev/antd";
8
- import { RefineKbar, RefineKbarProvider } from "@refinedev/kbar";
9
- import routerProvider, {
10
- NavigateToResource,
11
- UnsavedChangesNotifier,
12
- } from "@refinedev/react-router-v6";
13
- import { BrowserRouter, Outlet, Route, Routes } from "react-router-dom";
14
- import { useTranslation } from "react-i18next";
15
- import resources from "generated/resources";
16
- import { OffLayoutArea } from "components/offLayoutArea";
17
- import { Header } from "components/layout";
18
- import { CustomSider } from "./components/layout";
19
- import { ColorModeContextProvider } from "components/contexts/color-mode";
20
- import { BusinessContextProvider } from "components/contexts/business";
21
- import { authProvider } from "authProvider";
22
- import produce from "immer";
23
- import Index from "pages/index";
24
- import "@refinedev/antd/dist/reset.css";
25
- import { auditLogProvider } from "auditLogProvider";
26
- import {
27
- DashboardOutlined,
28
- SettingOutlined,
29
- } from "@ant-design/icons";
30
- import { gadminCrudProvider as dataProvider } from "./helpers/login";
31
-
32
- const SYSTEM_MENU_NAME = "system";
33
- const newResources: ResourceProps[] = produce(resources, (draft) => {
34
- draft.forEach((resource) => {
35
- if (
36
- resource.meta &&
37
- ["game", "studio", "role", "log"].includes(resource.name)
38
- ) {
39
- resource.meta.parent = SYSTEM_MENU_NAME;
40
- resource.list = `/${SYSTEM_MENU_NAME}${resource.list}`;
41
- resource.create = `/${SYSTEM_MENU_NAME}${resource.create}`;
42
- resource.edit = `/${SYSTEM_MENU_NAME}${resource.edit}`;
43
- resource.clone = `/${SYSTEM_MENU_NAME}${resource.clone}`;
44
- resource.show = `/${SYSTEM_MENU_NAME}${resource.show}`;
45
- }
46
- });
47
- draft.splice(0, 0, {
48
- name: "index",
49
- list: "/index",
50
- meta: { icon: <DashboardOutlined /> },
51
- });
52
- draft.push({
53
- name: SYSTEM_MENU_NAME,
54
- list: `/${SYSTEM_MENU_NAME}`,
55
- meta: { icon: <SettingOutlined /> },
56
- });
57
- });
58
-
59
- function App() {
60
- const { t, i18n } = useTranslation();
61
-
62
- const i18nProvider = {
63
- translate: (key: string, defaultMessage?: string) => t(key, defaultMessage),
64
- changeLocale: (lang: string) => i18n.changeLanguage(lang),
65
- getLocale: () => i18n.language,
66
- };
67
-
68
- return (
69
- <BrowserRouter>
70
- <RefineKbarProvider>
71
- <BusinessContextProvider>
72
- <ColorModeContextProvider>
73
- <Refine
74
- resources={newResources}
75
- notificationProvider={notificationProvider}
76
- routerProvider={routerProvider}
77
- i18nProvider={i18nProvider}
78
- authProvider={authProvider}
79
- auditLogProvider={auditLogProvider(dataProvider)}
80
- dataProvider={{
81
- default: dataProvider,
82
- }}
83
- options={{
84
- syncWithLocation: true,
85
- warnWhenUnsavedChanges: true,
86
- }}
87
- >
88
- <Routes>
89
- <Route
90
- path="/"
91
- element={
92
- <ThemedLayoutV2
93
- Sider={CustomSider}
94
- Title={() => null}
95
- Header={Header}
96
- OffLayoutArea={OffLayoutArea}
97
- >
98
- <Outlet />
99
- </ThemedLayoutV2>
100
- }
101
- >
102
- <Route
103
- index
104
- element={<NavigateToResource resource="index" />}
105
- />
106
- <Route path="index" element={<Index />} />
107
- {newResources
108
- .filter((resource) => !resource?.meta?.parent)
109
- .map((resource) => {
110
- const {
111
- list: List,
112
- create: Create,
113
- edit: Edit,
114
- show: Show,
115
- } = resource?.meta?.components || {};
116
- return (
117
- <Route
118
- key={`/${resource.name}`}
119
- path={`/${resource.name}`}
120
- >
121
- {List ? <Route index element={<List />} /> : null}
122
- {Create ? (
123
- <Route path="create" element={<Create />} />
124
- ) : null}
125
- {Edit ? (
126
- <Route path="edit/:id" element={<Edit />} />
127
- ) : null}
128
- {Show ? (
129
- <Route path="show/:id" element={<Show />} />
130
- ) : null}
131
- {Edit ? (
132
- <Route path="clone/:id" element={<Edit />} />
133
- ) : null}
134
- </Route>
135
- );
136
- })}
137
- {[SYSTEM_MENU_NAME].map((name) => (
138
- <Route path={name}>
139
- {newResources
140
- .filter((resource) => resource?.meta?.parent === name)
141
- .map((resource) => {
142
- const {
143
- list: List,
144
- create: Create,
145
- edit: Edit,
146
- show: Show,
147
- } = resource?.meta?.components || {};
148
-
149
- return (
150
- <Route
151
- key={`${resource.name}`}
152
- path={`${resource.name}`}
153
- >
154
- {List ? <Route index element={<List />} /> : null}
155
- {Create ? (
156
- <Route path="create" element={<Create />} />
157
- ) : null}
158
- {Edit ? (
159
- <Route path="edit/:id" element={<Edit />} />
160
- ) : null}
161
- {Show ? (
162
- <Route path="show/:id" element={<Show />} />
163
- ) : null}
164
- {Edit ? (
165
- <Route path="clone/:id" element={<Edit />} />
166
- ) : null}
167
- </Route>
168
- );
169
- })}
170
- </Route>
171
- ))}
172
- <Route path="*" element={<ErrorComponent />} />
173
- </Route>
174
- </Routes>
175
- <RefineKbar />
176
- <UnsavedChangesNotifier />
177
- </Refine>
178
- </ColorModeContextProvider>
179
- </BusinessContextProvider>
180
- </RefineKbarProvider>
181
- </BrowserRouter>
182
- );
183
- }
184
-
185
- export default App;
1
+ import React from "react";
2
+ import { Refine } from "@refinedev/core";
3
+ import {
4
+ notificationProvider,
5
+ ErrorComponent,
6
+ } from "@refinedev/antd";
7
+ import { RefineKbar, RefineKbarProvider } from "@refinedev/kbar";
8
+ import routerProvider, {
9
+ NavigateToResource,
10
+ UnsavedChangesNotifier,
11
+ } from "@refinedev/react-router-v6";
12
+ import { BrowserRouter, Outlet, Route, Routes } from "react-router-dom";
13
+ import { useTranslation } from "react-i18next";
14
+ import { useMemo } from "react";
15
+ import { Spin } from "antd";
16
+ import { Layout } from "components/layout";
17
+ import { ColorModeContextProvider } from "components/contexts/color-mode";
18
+ import { BusinessContextProvider } from "components/contexts/business";
19
+ import { AgentProvider, AgentPanel } from "components/agentPanel";
20
+ import { authProvider } from "authProvider";
21
+ import "@refinedev/antd/dist/reset.css";
22
+ import "./styles/antd.css";
23
+ import "./styles/fc.css";
24
+ import "./styles/index.css";
25
+ import { auditLogProvider } from "auditLogProvider";
26
+ import { gadminCrudProvider as dataProvider } from "./helpers/login";
27
+ import { useDynamicResources } from "hooks/useDynamicResources";
28
+ import { renderRoutes } from "config/routeRegistry";
29
+
30
+ const isDev = import.meta.env.DEV;
31
+
32
+ // Wrapper component that only renders AgentProvider in development
33
+ const DevAgentWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => {
34
+ if (!isDev) return <>{children}</>;
35
+ return (
36
+ <AgentProvider>
37
+ {children}
38
+ <AgentPanel />
39
+ </AgentProvider>
40
+ );
41
+ };
42
+
43
+ function App() {
44
+ const { i18n } = useTranslation();
45
+
46
+ // Stable reference — i18n object identity never changes, so this memo runs once.
47
+ // i18n.t / i18n.language are called at invocation time, always returning fresh values.
48
+ const i18nProvider = useMemo(() => ({
49
+ translate: (key: string, defaultMessage?: string) => i18n.t(key, defaultMessage ?? ""),
50
+ changeLocale: (lang: string) => i18n.changeLanguage(lang),
51
+ getLocale: () => i18n.language,
52
+ }), [i18n]);
53
+
54
+ const resources = useDynamicResources();
55
+
56
+ return (
57
+ <BrowserRouter>
58
+ <RefineKbarProvider>
59
+ <BusinessContextProvider>
60
+ <ColorModeContextProvider>
61
+ <DevAgentWrapper>
62
+ <Refine
63
+ resources={resources}
64
+ notificationProvider={notificationProvider}
65
+ routerProvider={routerProvider}
66
+ i18nProvider={i18nProvider}
67
+ authProvider={authProvider}
68
+ auditLogProvider={auditLogProvider(dataProvider)}
69
+ dataProvider={{
70
+ default: dataProvider,
71
+ }}
72
+ options={{
73
+ syncWithLocation: true,
74
+ warnWhenUnsavedChanges: true,
75
+ }}
76
+ >
77
+ {resources.length === 0 ? (
78
+ <div style={{ display: "flex", justifyContent: "center", alignItems: "center", height: "100vh" }}>
79
+ <Spin size="large" />
80
+ </div>
81
+ ) : (
82
+ <Routes>
83
+ <Route
84
+ path="/"
85
+ element={
86
+ <Layout>
87
+ <Outlet />
88
+ </Layout>
89
+ }
90
+ >
91
+ <Route
92
+ index
93
+ element={<NavigateToResource resource={resources[0]?.name} />}
94
+ />
95
+ {renderRoutes()}
96
+ <Route path="*" element={<ErrorComponent />} />
97
+ </Route>
98
+ </Routes>
99
+ )}
100
+ <RefineKbar />
101
+ <UnsavedChangesNotifier />
102
+ </Refine>
103
+ </DevAgentWrapper>
104
+ </ColorModeContextProvider>
105
+ </BusinessContextProvider>
106
+ </RefineKbarProvider>
107
+ </BrowserRouter>
108
+ );
109
+ }
110
+
111
+ export default App;
@@ -10,7 +10,7 @@ export function auditLogProvider(
10
10
  return {
11
11
  get: async ({ resource, meta, }) => {
12
12
  const { data } = await dataProvider.getList({
13
- resource: "log",
13
+ resource: "audit",
14
14
  filters: [
15
15
  {
16
16
  field: "resource",
@@ -34,7 +34,7 @@ export function auditLogProvider(
34
34
  params.data.length === params?.meta?.ids.length
35
35
  ) {
36
36
  return dataProvider.createMany({
37
- resource: "log",
37
+ resource: "audit",
38
38
  variables: params.data.map((item: any, index: number) => ({
39
39
  action: params.action,
40
40
  resource: params.resource,
@@ -49,7 +49,7 @@ export function auditLogProvider(
49
49
  });
50
50
  } else {
51
51
  return dataProvider.createMany({
52
- resource: "log",
52
+ resource: "audit",
53
53
  variables: params.meta.ids.map((id: any) => ({
54
54
  action: params.action,
55
55
  resource: params.resource,
@@ -63,7 +63,7 @@ export function auditLogProvider(
63
63
  }
64
64
  }
65
65
  return dataProvider.create({
66
- resource: "log",
66
+ resource: "audit",
67
67
  variables: {
68
68
  action: params.action,
69
69
  resource: params.resource,
@@ -77,7 +77,7 @@ export function auditLogProvider(
77
77
  },
78
78
  update: async ({ id, name }) => {
79
79
  const { data } = await dataProvider.update({
80
- resource: "log",
80
+ resource: "audit",
81
81
  id,
82
82
  variables: { name },
83
83
  });
@@ -1,60 +1,58 @@
1
1
  import { RefineThemes } from "@refinedev/antd";
2
- import { ConfigProvider, theme } from "antd";
3
- import { PropsWithChildren, createContext, useEffect, useState } from "react";
4
-
5
- type ColorModeContextType = {
6
- mode: string;
7
- setMode: (mode: string) => void;
2
+ import { ConfigProvider } from "antd";
3
+ import type { ThemeConfig } from "antd";
4
+ import { PropsWithChildren } from "react";
5
+
6
+ const themeConfig: ThemeConfig = {
7
+ ...RefineThemes.Blue,
8
+ token: {
9
+ ...RefineThemes.Blue.token,
10
+ colorPrimary: "#1677FF",
11
+ colorError: "#fa541c",
12
+ colorPrimaryText: "rgba(0, 0, 0, 0.85)",
13
+ colorTextSecondary: "rgba(0, 0, 0, 0.65)",
14
+ colorTextTertiary: "rgba(0, 0, 0, 0.45)",
15
+ colorBgContainer: "#F7F8F9",
16
+ colorBgLayout: "#F0F2F5",
17
+ colorBorderBg: "#E8E9EA",
18
+ borderRadius: 6,
19
+ fontFamily:
20
+ "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",
21
+ },
22
+ components: {
23
+ Typography: {
24
+ colorText: "rgba(0, 0, 0, 0.85)",
25
+ colorTextDescription: "rgba(0, 0, 0, 0.65)",
26
+ colorTextDisabled: "rgba(0, 0, 0, 0.45)",
27
+ },
28
+ Card: {
29
+ colorBgContainer: "#FFFFFF",
30
+ headerBg: "#FAFAFA",
31
+ },
32
+ Table: {
33
+ colorBgContainer: "#fff",
34
+ },
35
+ Input: {
36
+ colorBgContainer: "#fff",
37
+ },
38
+ InputNumber: {
39
+ colorBgContainer: "#fff",
40
+ },
41
+ Select: {
42
+ colorBgContainer: "#fff",
43
+ },
44
+ Form: {
45
+ labelFontSize: 14,
46
+ },
47
+ },
8
48
  };
9
49
 
10
- export const ColorModeContext = createContext<ColorModeContextType>(
11
- {} as ColorModeContextType
12
- );
13
-
14
50
  export const ColorModeContextProvider: React.FC<PropsWithChildren> = ({
15
51
  children,
16
52
  }) => {
17
- // 优先默认使用light模式
18
- const colorModeFromLocalStorage = localStorage.getItem("colorMode") || "light";
19
- const isSystemPreferenceDark = window?.matchMedia(
20
- "(prefers-color-scheme: dark)"
21
- ).matches;
22
-
23
- const systemPreference = isSystemPreferenceDark ? "dark" : "light";
24
- const [mode, setMode] = useState(
25
- colorModeFromLocalStorage || systemPreference
26
- );
27
-
28
- useEffect(() => {
29
- window.localStorage.setItem("colorMode", mode);
30
- }, [mode]);
31
-
32
- const setColorMode = () => {
33
- if (mode === "light") {
34
- setMode("dark");
35
- } else {
36
- setMode("light");
37
- }
38
- };
39
-
40
- const { darkAlgorithm, defaultAlgorithm } = theme;
41
-
42
53
  return (
43
- <ColorModeContext.Provider
44
- value={{
45
- setMode: setColorMode,
46
- mode,
47
- }}
48
- >
49
- <ConfigProvider
50
- // you can change the theme colors here. example: ...RefineThemes.Magenta,
51
- theme={{
52
- ...RefineThemes.Blue,
53
- algorithm: mode === "light" ? defaultAlgorithm : darkAlgorithm,
54
- }}
55
- >
56
- {children}
57
- </ConfigProvider>
58
- </ColorModeContext.Provider>
54
+ <ConfigProvider theme={themeConfig}>
55
+ {children}
56
+ </ConfigProvider>
59
57
  );
60
58
  };
@@ -0,0 +1,38 @@
1
+ import React, { memo } from "react";
2
+
3
+ import type { AvatarProps } from "antd";
4
+ import { Avatar as AntdAvatar } from "antd";
5
+
6
+ import { getNameInitials, getRandomColorFromString } from "utilities";
7
+
8
+ type Props = AvatarProps & {
9
+ name?: string;
10
+ };
11
+
12
+ const CustomAvatarComponent: React.FC<Props> = ({ name = "", style, ...rest }) => {
13
+ return (
14
+ <AntdAvatar
15
+ alt={name}
16
+ size="small"
17
+ style={{
18
+ backgroundColor: rest?.src
19
+ ? "transparent"
20
+ : getRandomColorFromString(name),
21
+ display: "flex",
22
+ alignItems: "center",
23
+ border: "none",
24
+ ...style,
25
+ }}
26
+ {...rest}
27
+ >
28
+ {getNameInitials(name)}
29
+ </AntdAvatar>
30
+ );
31
+ };
32
+
33
+ export const CustomAvatar = memo(
34
+ CustomAvatarComponent,
35
+ (prevProps, nextProps) => {
36
+ return prevProps.name === nextProps.name && prevProps.src === nextProps.src;
37
+ },
38
+ );
@@ -2,3 +2,7 @@ export * from './SearchBar';
2
2
  export * from './BulkActions';
3
3
  export * from './RowActions';
4
4
  export * from './ListPageHeader';
5
+ export * from "./custom-avatar";
6
+ export * from "./pagination-total";
7
+ export * from "./tags";
8
+ export * from "./text";
@@ -1,20 +1,18 @@
1
1
  import { useGetLocale, useSetLocale, useGetIdentity } from "@refinedev/core";
2
2
  import {
3
- Layout as AntdLayout,
3
+ Layout,
4
4
  Space,
5
5
  Button,
6
6
  Dropdown,
7
7
  Avatar,
8
8
  Typography,
9
9
  theme,
10
- Switch,
11
10
  Select,
12
11
  Tooltip,
13
12
  } from "antd";
14
- import * as Icons from "@ant-design/icons";
13
+ import { DownOutlined, RobotOutlined } from "@ant-design/icons";
15
14
  import { useTranslation } from "react-i18next";
16
15
  import { useContext } from "react";
17
- import { ColorModeContext } from "components/contexts/color-mode";
18
16
  import { BusinessContext } from "components/contexts/business";
19
17
  import { useAgent } from "components/agentPanel";
20
18
  import type { MenuProps } from "antd";
@@ -25,11 +23,10 @@ type IUser = {
25
23
  avatar: string;
26
24
  };
27
25
 
28
- const { DownOutlined, RobotOutlined } = Icons;
29
26
  const { Text } = Typography;
30
27
  const { useToken } = theme;
31
28
 
32
- const isDev = process.env.NODE_ENV === "development";
29
+ const isDev = import.meta.env.DEV;
33
30
 
34
31
  export const Header: React.FC = () => {
35
32
  const { i18n } = useTranslation();
@@ -37,7 +34,6 @@ export const Header: React.FC = () => {
37
34
  const changeLanguage = useSetLocale();
38
35
  const { token } = useToken();
39
36
  const { data: user } = useGetIdentity<IUser>();
40
- const { mode, setMode } = useContext(ColorModeContext);
41
37
  const { business, setBusiness, businessList } = useContext(BusinessContext);
42
38
  const agent = useAgent();
43
39
  const openAgentPanel = agent?.open;
@@ -58,17 +54,20 @@ export const Header: React.FC = () => {
58
54
  onClick: ({ key: lang }) => changeLanguage(lang),
59
55
  };
60
56
 
57
+ const headerStyles: React.CSSProperties = {
58
+ backgroundColor: token.colorBgElevated,
59
+ display: "flex",
60
+ justifyContent: "flex-end",
61
+ alignItems: "center",
62
+ padding: "0px 24px",
63
+ height: "64px",
64
+ position: "sticky",
65
+ top: 0,
66
+ zIndex: 999,
67
+ };
68
+
61
69
  return (
62
- <AntdLayout.Header
63
- style={{
64
- backgroundColor: token.colorBgElevated,
65
- display: "flex",
66
- justifyContent: "flex-end",
67
- alignItems: "center",
68
- padding: "0px 24px",
69
- height: "64px",
70
- }}
71
- >
70
+ <Layout.Header style={headerStyles}>
72
71
  {isDev && (
73
72
  <Tooltip title="AI Agent (Dev Only)">
74
73
  <Button
@@ -83,7 +82,7 @@ export const Header: React.FC = () => {
83
82
  showSearch
84
83
  defaultValue={business.gameId}
85
84
  style={{ width: 160 }}
86
- bordered={false}
85
+ variant="borderless"
87
86
  options={[
88
87
  ...businessList.map((item) => ({
89
88
  label: item.gameName,
@@ -94,7 +93,7 @@ export const Header: React.FC = () => {
94
93
  options: [{ value: "-1", label: "All games" }],
95
94
  },
96
95
  ]}
97
- optionFilterProp="label" // or "value"
96
+ optionFilterProp="label"
98
97
  onChange={(gameId) => {
99
98
  const gameInfo =
100
99
  gameId === "-1"
@@ -113,18 +112,10 @@ export const Header: React.FC = () => {
113
112
  </Space>
114
113
  </Button>
115
114
  </Dropdown>
116
- <Space>
117
- <Switch
118
- checkedChildren="🌛"
119
- unCheckedChildren="🔆"
120
- onChange={() => setMode(mode === "light" ? "dark" : "light")}
121
- defaultChecked={mode === "dark"}
122
- />
123
- <Space style={{ marginLeft: "8px" }} size="middle">
124
- {user?.name && <Text strong>{user.name}</Text>}
125
- {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}
126
- </Space>
115
+ <Space style={{ marginLeft: "8px" }} size="middle">
116
+ {user?.name && <Text strong>{user.name}</Text>}
117
+ {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}
127
118
  </Space>
128
- </AntdLayout.Header>
119
+ </Layout.Header>
129
120
  );
130
121
  };
@@ -1,2 +1,4 @@
1
1
  export { Header } from "./header";
2
- export { CustomSider } from "./sider";
2
+ export { Sider } from "./sider";
3
+ export { Layout } from "./layout";
4
+ export { Title } from "./title";
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import { ThemedLayoutContextProvider } from "@refinedev/antd";
3
+ import { Grid, Layout as AntdLayout } from "antd";
4
+ import { Header } from "./header";
5
+ import { Sider } from "./sider";
6
+ import { OffLayoutArea } from "components/offLayoutArea";
7
+
8
+ export const Layout: React.FC<React.PropsWithChildren> = ({ children }) => {
9
+ const breakpoint = Grid.useBreakpoint();
10
+ const isSmall = typeof breakpoint.sm === "undefined" ? true : breakpoint.sm;
11
+
12
+ return (
13
+ <ThemedLayoutContextProvider>
14
+ <AntdLayout hasSider style={{ minHeight: "100vh" }}>
15
+ <Sider />
16
+ <AntdLayout>
17
+ <Header />
18
+ <AntdLayout.Content
19
+ style={{
20
+ padding: isSmall ? 32 : 16,
21
+ height: "calc(100vh - 64px)",
22
+ overflowY: "auto",
23
+ }}
24
+ >
25
+ {children}
26
+ </AntdLayout.Content>
27
+ </AntdLayout>
28
+ </AntdLayout>
29
+ <OffLayoutArea />
30
+ </ThemedLayoutContextProvider>
31
+ );
32
+ };