@dashadmin/dash-app-common 1.3.25 → 1.3.26

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 (165) hide show
  1. package/dist/DashApp.js +176 -1
  2. package/dist/DashAppLoader.js +348 -3
  3. package/dist/DashDefaultResources.js +10 -1
  4. package/dist/components/DashDefaultPrivateApp.js +150 -1
  5. package/dist/components/DashDefaultPrivateResources.js +10 -1
  6. package/dist/components/DashDefaultPublicApp.js +20 -1
  7. package/dist/components/DashResourceLoader.js +245 -1
  8. package/dist/defaults/extensions/bootstrap/DashDefaultErrorBoundary.js +78 -1
  9. package/dist/defaults/extensions/bootstrap/dashDefaultInitializeApp.js +59 -1
  10. package/dist/defaults/extensions/bootstrap/index.js +24 -1
  11. package/dist/defaults/extensions/components/DashDefaultLoader.js +43 -2
  12. package/dist/defaults/extensions/components/dashDefaultAutoAdminComponents.js +67 -1
  13. package/dist/defaults/extensions/components/dashDefaultNotification.js +28 -1
  14. package/dist/defaults/extensions/components/dashDefaultStaticComponents.js +15 -1
  15. package/dist/defaults/extensions/components/index.js +13 -1
  16. package/dist/defaults/extensions/electron/dashDefaultIpcListeners.js +38 -1
  17. package/dist/defaults/extensions/electron/index.js +5 -1
  18. package/dist/defaults/extensions/hooks/index.js +12 -1
  19. package/dist/defaults/extensions/hooks/useDashDefaultLazyAutoAdminComponents.js +17 -1
  20. package/dist/defaults/extensions/hooks/useDashDefaultLazyI18nProvider.js +51 -1
  21. package/dist/defaults/extensions/hooks/useDashDefaultLazyResources.js +19 -1
  22. package/dist/defaults/extensions/hooks/useDashDefaultMountTracker.js +22 -1
  23. package/dist/defaults/extensions/hooks/useDashDefaultRoutePath.js +17 -1
  24. package/dist/defaults/extensions/i18n/dashDefaultI18nProvider.js +44 -1
  25. package/dist/defaults/extensions/i18n/dashDefaultTranslations.js +87 -1
  26. package/dist/defaults/extensions/i18n/index.js +24 -1
  27. package/dist/defaults/extensions/index.js +190 -1
  28. package/dist/defaults/extensions/layout/dashDefaultDomainAppLayout.js +58 -1
  29. package/dist/defaults/extensions/layout/index.js +12 -1
  30. package/dist/defaults/extensions/managers/DashDefaultWSMessagesManager.js +84 -1
  31. package/dist/defaults/extensions/managers/index.js +5 -1
  32. package/dist/defaults/extensions/providers/dashDefaultAuthProvider.js +220 -1
  33. package/dist/defaults/extensions/providers/dashDefaultDataProvider.js +395 -1
  34. package/dist/defaults/extensions/providers/index.js +24 -1
  35. package/dist/defaults/extensions/router/DashDefaultLanding.js +46 -1
  36. package/dist/defaults/extensions/router/dashDefaultPrivateRoutes.js +38 -1
  37. package/dist/defaults/extensions/router/dashDefaultPublicRoutes.js +65 -1
  38. package/dist/defaults/extensions/router/dashDefaultRouter.js +39 -1
  39. package/dist/defaults/extensions/router/dashDefaultSharedRoutes.js +40 -1
  40. package/dist/defaults/extensions/router/index.js +12 -1
  41. package/dist/defaults/extensions/state/dashDefaultAppCommon.js +57 -1
  42. package/dist/defaults/extensions/state/dashDefaultAppSettings.js +38 -1
  43. package/dist/defaults/extensions/state/dashDefaultInitialAppState.js +31 -1
  44. package/dist/defaults/extensions/state/dashDefaultLayoutSettings.js +48 -1
  45. package/dist/defaults/extensions/state/dashDefaultQueryClient.js +58 -1
  46. package/dist/defaults/extensions/state/dashDefaultResourcesIcons.js +24 -1
  47. package/dist/defaults/extensions/state/index.js +29 -1
  48. package/dist/defaults/extensions/styles/index.js +2 -1
  49. package/dist/defaults/extensions/theme/dashDefaultThemeOptions.js +74 -1
  50. package/dist/defaults/extensions/theme/index.js +6 -1
  51. package/dist/defaults/extensions/utils/IPCMessageBrokerContext.js +12 -1
  52. package/dist/defaults/extensions/utils/dashDefaultAuthProviderUtils.js +29 -1
  53. package/dist/defaults/extensions/utils/dashDefaultDataProviderUtils.js +37 -1
  54. package/dist/defaults/extensions/utils/dashDefaultNotificationsProcessor.js +149 -1
  55. package/dist/defaults/extensions/utils/index.js +44 -1
  56. package/dist/defaults/filters/demo/dashDefaultDemoFilters.js +36 -1
  57. package/dist/defaults/filters/demo/index.js +4 -1
  58. package/dist/defaults/filters/index.js +5 -1
  59. package/dist/defaults/index.js +14 -1
  60. package/dist/defaults/pages/Account/DashDefaultRegister.js +282 -1
  61. package/dist/defaults/pages/Account/DashDefaultSignUp.js +420 -1
  62. package/dist/defaults/pages/Account/DashDefaultSignUpSuccess.js +101 -1
  63. package/dist/defaults/pages/Account/index.js +8 -1
  64. package/dist/defaults/pages/DashDefaultLogin.js +218 -1
  65. package/dist/defaults/pages/Misc/DashDefaultNotFound.js +74 -1
  66. package/dist/defaults/pages/Misc/DashDefaultServerError.js +79 -1
  67. package/dist/defaults/pages/Misc/DashDefaultUnauthorized.js +90 -1
  68. package/dist/defaults/pages/Misc/index.js +8 -1
  69. package/dist/defaults/pages/Static/DashDefaultPrivacyPage.js +48 -1
  70. package/dist/defaults/pages/Static/DashDefaultStaticPage.js +55 -1
  71. package/dist/defaults/pages/Static/DashDefaultTermsPage.js +52 -1
  72. package/dist/defaults/pages/Static/index.js +8 -1
  73. package/dist/defaults/pages/index.js +25 -1
  74. package/dist/defaults/schemas/dashDefaultSchema.js +14 -1
  75. package/dist/defaults/schemas/demo/dashDefaultTodoSchema.js +24 -1
  76. package/dist/defaults/schemas/demo/index.js +4 -1
  77. package/dist/defaults/schemas/index.js +7 -1
  78. package/dist/filters/demo/todoFilters.js +36 -1
  79. package/dist/index.js +56 -5975
  80. package/dist/resources/demo/todoResource.js +58 -1
  81. package/dist/schemas/defaultSchema.js +14 -1
  82. package/dist/schemas/demo/todoSchema.js +24 -1
  83. package/package.json +132 -77
  84. package/src/DashApp.tsx +294 -0
  85. package/src/DashAppLoader.tsx +717 -0
  86. package/src/DashDefaultResources.tsx +10 -0
  87. package/src/components/DashDefaultPrivateApp.tsx +358 -0
  88. package/src/components/DashDefaultPrivateResources.tsx +10 -0
  89. package/src/components/DashDefaultPublicApp.tsx +40 -0
  90. package/src/components/DashResourceLoader.tsx +564 -0
  91. package/src/defaults/extensions/bootstrap/DashDefaultErrorBoundary.tsx +113 -0
  92. package/src/defaults/extensions/bootstrap/dashDefaultInitializeApp.ts +81 -0
  93. package/src/defaults/extensions/bootstrap/index.ts +32 -0
  94. package/src/defaults/extensions/components/DashDefaultLoader.tsx +59 -0
  95. package/src/defaults/extensions/components/dashDefaultAutoAdminComponents.tsx +49 -0
  96. package/src/defaults/extensions/components/dashDefaultNotification.tsx +37 -0
  97. package/src/defaults/extensions/components/dashDefaultStaticComponents.tsx +34 -0
  98. package/src/defaults/extensions/components/index.ts +17 -0
  99. package/src/defaults/extensions/electron/dashDefaultIpcListeners.ts +62 -0
  100. package/src/defaults/extensions/electron/index.ts +7 -0
  101. package/src/defaults/extensions/hooks/index.ts +11 -0
  102. package/src/defaults/extensions/hooks/useDashDefaultLazyAutoAdminComponents.ts +25 -0
  103. package/src/defaults/extensions/hooks/useDashDefaultLazyI18nProvider.ts +38 -0
  104. package/src/defaults/extensions/hooks/useDashDefaultLazyResources.ts +29 -0
  105. package/src/defaults/extensions/hooks/useDashDefaultMountTracker.ts +28 -0
  106. package/src/defaults/extensions/hooks/useDashDefaultRoutePath.ts +27 -0
  107. package/src/defaults/extensions/i18n/dashDefaultI18nProvider.ts +66 -0
  108. package/src/defaults/extensions/i18n/dashDefaultTranslations.ts +82 -0
  109. package/src/defaults/extensions/i18n/index.ts +22 -0
  110. package/src/defaults/extensions/index.ts +177 -0
  111. package/src/defaults/extensions/layout/dashDefaultDomainAppLayout.tsx +126 -0
  112. package/src/defaults/extensions/layout/index.ts +12 -0
  113. package/src/defaults/extensions/managers/DashDefaultWSMessagesManager.tsx +99 -0
  114. package/src/defaults/extensions/managers/index.ts +7 -0
  115. package/src/defaults/extensions/providers/dashDefaultAuthProvider.ts +256 -0
  116. package/src/defaults/extensions/providers/dashDefaultDataProvider.ts +513 -0
  117. package/src/defaults/extensions/providers/index.ts +25 -0
  118. package/src/defaults/extensions/router/DashDefaultLanding.tsx +51 -0
  119. package/src/defaults/extensions/router/dashDefaultPrivateRoutes.tsx +50 -0
  120. package/src/defaults/extensions/router/dashDefaultPublicRoutes.tsx +86 -0
  121. package/src/defaults/extensions/router/dashDefaultRouter.tsx +54 -0
  122. package/src/defaults/extensions/router/dashDefaultSharedRoutes.tsx +56 -0
  123. package/src/defaults/extensions/router/index.ts +13 -0
  124. package/src/defaults/extensions/state/dashDefaultAppCommon.ts +54 -0
  125. package/src/defaults/extensions/state/dashDefaultAppSettings.ts +29 -0
  126. package/src/defaults/extensions/state/dashDefaultInitialAppState.ts +75 -0
  127. package/src/defaults/extensions/state/dashDefaultLayoutSettings.ts +59 -0
  128. package/src/defaults/extensions/state/dashDefaultQueryClient.ts +59 -0
  129. package/src/defaults/extensions/state/dashDefaultResourcesIcons.tsx +23 -0
  130. package/src/defaults/extensions/state/index.ts +29 -0
  131. package/src/defaults/extensions/styles/index.ts +17 -0
  132. package/src/defaults/extensions/theme/dashDefaultThemeOptions.ts +89 -0
  133. package/src/defaults/extensions/theme/index.ts +7 -0
  134. package/src/defaults/extensions/utils/IPCMessageBrokerContext.tsx +22 -0
  135. package/src/defaults/extensions/utils/dashDefaultAuthProviderUtils.ts +36 -0
  136. package/src/defaults/extensions/utils/dashDefaultDataProviderUtils.ts +46 -0
  137. package/src/defaults/extensions/utils/dashDefaultNotificationsProcessor.tsx +208 -0
  138. package/src/defaults/extensions/utils/index.ts +42 -0
  139. package/src/defaults/filters/demo/dashDefaultDemoFilters.tsx +50 -0
  140. package/src/defaults/filters/demo/index.ts +6 -0
  141. package/src/defaults/filters/index.ts +11 -0
  142. package/src/defaults/index.ts +27 -0
  143. package/src/defaults/pages/Account/DashDefaultRegister.tsx +281 -0
  144. package/src/defaults/pages/Account/DashDefaultSignUp.tsx +492 -0
  145. package/src/defaults/pages/Account/DashDefaultSignUpSuccess.tsx +113 -0
  146. package/src/defaults/pages/Account/index.ts +8 -0
  147. package/src/defaults/pages/DashDefaultLogin.tsx +224 -0
  148. package/src/defaults/pages/Misc/DashDefaultNotFound.tsx +96 -0
  149. package/src/defaults/pages/Misc/DashDefaultServerError.tsx +102 -0
  150. package/src/defaults/pages/Misc/DashDefaultUnauthorized.tsx +116 -0
  151. package/src/defaults/pages/Misc/index.ts +8 -0
  152. package/src/defaults/pages/Static/DashDefaultPrivacyPage.tsx +85 -0
  153. package/src/defaults/pages/Static/DashDefaultStaticPage.tsx +75 -0
  154. package/src/defaults/pages/Static/DashDefaultTermsPage.tsx +69 -0
  155. package/src/defaults/pages/Static/index.ts +8 -0
  156. package/src/defaults/pages/index.ts +28 -0
  157. package/src/defaults/schemas/dashDefaultSchema.tsx +25 -0
  158. package/src/defaults/schemas/demo/dashDefaultTodoSchema.tsx +39 -0
  159. package/src/defaults/schemas/demo/index.ts +6 -0
  160. package/src/defaults/schemas/index.ts +14 -0
  161. package/src/filters/demo/todoFilters.tsx +39 -0
  162. package/src/index.ts +131 -0
  163. package/src/resources/demo/todoResource.tsx +68 -0
  164. package/src/schemas/defaultSchema.tsx +14 -0
  165. package/src/schemas/demo/todoSchema.tsx +27 -0
@@ -1 +1,58 @@
1
- import{jsx as d}from"react/jsx-runtime";import o from"@dashadmin/dash-admin/src/templates/ResourceTemplate";import r from"@mui/icons-material/FiberManualRecord";import{DASHAppConstants as a}from"@dashadmin/dash-constants";import s from"../../schemas/demo/todoSchema";import i from"../../filters/demo/todoFilters";const m=r,e=!0,n={roles:[a.system.SYSTEM_ROLE],component:o,model:"example/todo",label:"Todo",schema:s,icon:d(m,{}),group:"Example",trash:e,menu:[{title:"List",redirect:"/example/todo"},...e?[{title:"Trash",redirect:"/example/todo/trash"}]:[]],referenceFilters:i,mainAction:{title:"Crear Todo",mode:"create",fn:"virtualhash",redirect:"inline/create"},view:!0,create:!0,edit:!0,drawer:!0,drawerOptions:{create:!0,edit:!0,view:!0},isFormData:!0,formGroupMode:"tabs",postFormatter:t=>t,mutationMode:"pessimistic",saveButtonAlwaysEnabled:!0,listProps:{storeKey:!1},resetSelectedIdsOnLoad:!0};var w=n;export{w as default};
1
+ import { jsx } from "react/jsx-runtime";
2
+ import ResourceTemplate from "dash-admin/src/templates/ResourceTemplate";
3
+ import Dot from "@mui/icons-material/FiberManualRecord";
4
+ import { DASHAppConstants } from "dash-constants";
5
+ import todoSchema from "../../schemas/demo/todoSchema";
6
+ import todoFilters from "../../filters/demo/todoFilters";
7
+ const Icon = Dot;
8
+ const enableTrash = true;
9
+ const TodoResource = {
10
+ roles: [DASHAppConstants.system.SYSTEM_ROLE],
11
+ component: ResourceTemplate,
12
+ //trash: true,
13
+ model: "example/todo",
14
+ label: "Todo",
15
+ schema: todoSchema,
16
+ icon: /* @__PURE__ */ jsx(Icon, {}),
17
+ group: "Example",
18
+ trash: enableTrash,
19
+ menu: [
20
+ {
21
+ title: "List",
22
+ redirect: "/example/todo"
23
+ },
24
+ ...enableTrash ? [{
25
+ title: "Trash",
26
+ redirect: "/example/todo/trash"
27
+ }] : []
28
+ ],
29
+ referenceFilters: todoFilters,
30
+ mainAction: {
31
+ title: "Crear Todo",
32
+ mode: "create",
33
+ fn: "virtualhash",
34
+ redirect: "inline/create"
35
+ },
36
+ view: true,
37
+ create: true,
38
+ edit: true,
39
+ drawer: true,
40
+ drawerOptions: {
41
+ create: true,
42
+ edit: true,
43
+ view: true
44
+ },
45
+ isFormData: true,
46
+ formGroupMode: "tabs",
47
+ postFormatter: (params) => {
48
+ return params;
49
+ },
50
+ mutationMode: "pessimistic",
51
+ saveButtonAlwaysEnabled: true,
52
+ listProps: { storeKey: false },
53
+ resetSelectedIdsOnLoad: true
54
+ };
55
+ var todoResource_default = TodoResource;
56
+ export {
57
+ todoResource_default as default
58
+ };
@@ -1 +1,14 @@
1
- const t=[{attribute:"id",label:"Id",type:String,sortable:!0,inEdit:!1,inCreate:!1}];var i=t;export{i as default};
1
+ const defaultSchema = [
2
+ {
3
+ attribute: "id",
4
+ label: "Id",
5
+ type: String,
6
+ sortable: true,
7
+ inEdit: false,
8
+ inCreate: false
9
+ }
10
+ ];
11
+ var defaultSchema_default = defaultSchema;
12
+ export {
13
+ defaultSchema_default as default
14
+ };
@@ -1 +1,24 @@
1
- const t=[{tab:"Todo",attribute:"name",label:"Nombre",type:String},{tab:"Todo",attribute:"description",label:"Description",type:"textarea"},{tab:"Todo",attribute:"completed",label:"Completed",type:Boolean}];var a=t;export{a as default};
1
+ const todoSchema = [
2
+ {
3
+ tab: "Todo",
4
+ attribute: "name",
5
+ label: "Nombre",
6
+ type: String
7
+ },
8
+ {
9
+ tab: "Todo",
10
+ attribute: "description",
11
+ label: "Description",
12
+ type: "textarea"
13
+ },
14
+ {
15
+ tab: "Todo",
16
+ attribute: "completed",
17
+ label: "Completed",
18
+ type: Boolean
19
+ }
20
+ ];
21
+ var todoSchema_default = todoSchema;
22
+ export {
23
+ todoSchema_default as default
24
+ };
package/package.json CHANGED
@@ -1,78 +1,133 @@
1
1
  {
2
- "name": "@dashadmin/dash-app-common",
3
- "version": "1.3.25",
4
- "description": "Common defaults and utilities for Dash applications - provides pre-configured components, extensions, pages, filters, and schemas",
5
- "private": false,
6
- "main": "dist/index.js",
7
- "type": "module",
8
- "browserslist": {
9
- "production": [
10
- ">0.2%",
11
- "not dead",
12
- "not op_mini all"
13
- ],
14
- "development": [
15
- "last 1 chrome version",
16
- "last 1 firefox version",
17
- "last 1 safari version"
18
- ]
19
- },
20
- "dependencies": {
21
- "react": "latest",
22
- "react-dom": "latest",
23
- "react-redux": "latest",
24
- "react-router-dom": "7.17.0",
25
- "@dashadmin/dash-utils": "1.3.25",
26
- "@dashadmin/dash-admin-state": "1.3.25",
27
- "@dashadmin/dash-components": "1.3.25",
28
- "@dashadmin/dash-auth": "1.3.25",
29
- "@dashadmin/dash-axios-hook": "1.3.25",
30
- "@dashadmin/dash-constants": "1.3.25",
31
- "@dashadmin/dash-auto-admin": "1.3.25",
32
- "@dashadmin/dash-dialog": "1.3.25",
33
- "@dashadmin/dash-admin": "1.3.25"
34
- },
35
- "devDependencies": {
36
- "@types/node": "latest",
37
- "@types/react": "latest",
38
- "@types/react-dom": "latest",
39
- "eslint": "latest",
40
- "typescript": "latest",
41
- "vite": "^5.2.0",
42
- "rollup": "^4.0.0",
43
- "@dashadmin/dash-tsconfig": "1.3.25",
44
- "@dashadmin/dash-prettier": "1.3.25",
45
- "@dashadmin/dash-eslint": "1.3.25"
46
- },
47
- "peerDependencies": {
48
- "react": "latest",
49
- "react-dom": "latest"
50
- },
51
- "eslintConfig": {
52
- "extends": "react-app"
53
- },
54
- "publishConfig": {
55
- "name": "@dashadmin/dash-app-common",
56
- "access": "public"
57
- },
58
- "files": [
59
- "dist"
60
- ],
61
- "exports": {
62
- ".": {
63
- "import": "./dist/index.js"
64
- },
65
- "./src/*": {
66
- "import": "./dist/*.js"
67
- }
68
- },
69
- "scripts": {
70
- "lint": "eslint --ext .ts,.tsx .",
71
- "format": "pnpm prettier --write . && pnpm format-check && pnpm lint",
72
- "lint:check": "pnpm prettier --check .",
73
- "lint:fix": "pnpm prettier --write .",
74
- "check-updates": "pnpm npm-check-updates",
75
- "updates-packages": "pnpm npm-check-updates -u",
76
- "build": "rm -rf dist && node ../dash-build/compile.mjs && vite build"
77
- }
78
- }
2
+ "name": "@dashadmin/dash-app-common",
3
+ "version": "1.3.26",
4
+ "description": "Common defaults and utilities for Dash applications - provides pre-configured components, extensions, pages, filters, and schemas",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "lint": "eslint --ext .ts,.tsx .",
9
+ "format": "pnpm prettier --write . && pnpm format-check && pnpm lint",
10
+ "lint:check": "pnpm prettier --check .",
11
+ "lint:fix": "pnpm prettier --write .",
12
+ "check-updates": "pnpm npm-check-updates",
13
+ "updates-packages": "pnpm npm-check-updates -u",
14
+ "build": "tsup"
15
+ },
16
+ "browserslist": {
17
+ "production": [
18
+ ">0.2%",
19
+ "not dead",
20
+ "not op_mini all"
21
+ ],
22
+ "development": [
23
+ "last 1 chrome version",
24
+ "last 1 firefox version",
25
+ "last 1 safari version"
26
+ ]
27
+ },
28
+ "dependencies": {
29
+ "react": "latest",
30
+ "react-dom": "latest",
31
+ "react-redux": "latest",
32
+ "react-router-dom": "^7.9.6",
33
+ "@dashadmin/dash-utils": "workspace:*",
34
+ "@dashadmin/dash-admin": "workspace:*",
35
+ "@dashadmin/dash-admin-state": "workspace:*",
36
+ "@dashadmin/dash-components": "workspace:*",
37
+ "@dashadmin/dash-constants": "workspace:*",
38
+ "@dashadmin/dash-auth": "workspace:*",
39
+ "@dashadmin/dash-axios-hook": "workspace:*",
40
+ "@dashadmin/dash-dialog": "workspace:*",
41
+ "@dashadmin/dash-auto-admin": "workspace:*"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "latest",
45
+ "@types/react": "latest",
46
+ "@types/react-dom": "latest",
47
+ "eslint": "latest",
48
+ "typescript": "latest",
49
+ "@dashadmin/dash-tsconfig": "workspace:*",
50
+ "@dashadmin/dash-eslint": "workspace:*",
51
+ "@dashadmin/dash-prettier": "workspace:*"
52
+ },
53
+ "peerDependencies": {
54
+ "react": "latest",
55
+ "react-dom": "latest"
56
+ },
57
+ "eslintConfig": {
58
+ "extends": "react-app"
59
+ },
60
+ "module": "dist/index.js",
61
+ "types": "./src/index.ts",
62
+ "exports": {
63
+ ".": "./dist/index.js",
64
+ "./defaults": "./dist/defaults/index.js",
65
+ "./src/defaults": "./dist/defaults/index.js",
66
+ "./defaults/extensions": "./dist/defaults/extensions/index.js",
67
+ "./src/defaults/extensions": "./dist/defaults/extensions/index.js",
68
+ "./defaults/extensions/bootstrap": "./dist/defaults/extensions/bootstrap/index.js",
69
+ "./src/defaults/extensions/bootstrap": "./dist/defaults/extensions/bootstrap/index.js",
70
+ "./defaults/extensions/components": "./dist/defaults/extensions/components/index.js",
71
+ "./src/defaults/extensions/components": "./dist/defaults/extensions/components/index.js",
72
+ "./defaults/extensions/electron": "./dist/defaults/extensions/electron/index.js",
73
+ "./src/defaults/extensions/electron": "./dist/defaults/extensions/electron/index.js",
74
+ "./defaults/extensions/hooks": "./dist/defaults/extensions/hooks/index.js",
75
+ "./src/defaults/extensions/hooks": "./dist/defaults/extensions/hooks/index.js",
76
+ "./defaults/extensions/i18n": "./dist/defaults/extensions/i18n/index.js",
77
+ "./src/defaults/extensions/i18n": "./dist/defaults/extensions/i18n/index.js",
78
+ "./defaults/extensions/layout": "./dist/defaults/extensions/layout/index.js",
79
+ "./src/defaults/extensions/layout": "./dist/defaults/extensions/layout/index.js",
80
+ "./defaults/extensions/managers": "./dist/defaults/extensions/managers/index.js",
81
+ "./src/defaults/extensions/managers": "./dist/defaults/extensions/managers/index.js",
82
+ "./defaults/extensions/providers": "./dist/defaults/extensions/providers/index.js",
83
+ "./src/defaults/extensions/providers": "./dist/defaults/extensions/providers/index.js",
84
+ "./defaults/extensions/router": "./dist/defaults/extensions/router/index.js",
85
+ "./src/defaults/extensions/router": "./dist/defaults/extensions/router/index.js",
86
+ "./defaults/extensions/state": "./dist/defaults/extensions/state/index.js",
87
+ "./src/defaults/extensions/state": "./dist/defaults/extensions/state/index.js",
88
+ "./defaults/extensions/styles": "./dist/defaults/extensions/styles/index.js",
89
+ "./src/defaults/extensions/styles": "./dist/defaults/extensions/styles/index.js",
90
+ "./defaults/extensions/theme": "./dist/defaults/extensions/theme/index.js",
91
+ "./src/defaults/extensions/theme": "./dist/defaults/extensions/theme/index.js",
92
+ "./defaults/extensions/utils": "./dist/defaults/extensions/utils/index.js",
93
+ "./src/defaults/extensions/utils": "./dist/defaults/extensions/utils/index.js",
94
+ "./defaults/filters": "./dist/defaults/filters/index.js",
95
+ "./src/defaults/filters": "./dist/defaults/filters/index.js",
96
+ "./defaults/filters/demo": "./dist/defaults/filters/demo/index.js",
97
+ "./src/defaults/filters/demo": "./dist/defaults/filters/demo/index.js",
98
+ "./defaults/pages": "./dist/defaults/pages/index.js",
99
+ "./src/defaults/pages": "./dist/defaults/pages/index.js",
100
+ "./defaults/pages/Account": "./dist/defaults/pages/Account/index.js",
101
+ "./src/defaults/pages/Account": "./dist/defaults/pages/Account/index.js",
102
+ "./defaults/pages/Misc": "./dist/defaults/pages/Misc/index.js",
103
+ "./src/defaults/pages/Misc": "./dist/defaults/pages/Misc/index.js",
104
+ "./defaults/pages/Static": "./dist/defaults/pages/Static/index.js",
105
+ "./src/defaults/pages/Static": "./dist/defaults/pages/Static/index.js",
106
+ "./defaults/schemas": "./dist/defaults/schemas/index.js",
107
+ "./src/defaults/schemas": "./dist/defaults/schemas/index.js",
108
+ "./defaults/schemas/demo": "./dist/defaults/schemas/demo/index.js",
109
+ "./src/defaults/schemas/demo": "./dist/defaults/schemas/demo/index.js",
110
+ "./*": "./dist/*.js",
111
+ "./src/*": "./dist/*.js"
112
+ },
113
+ "publishConfig": {
114
+ "access": "public",
115
+ "registry": "https://registry.npmjs.org"
116
+ },
117
+ "files": [
118
+ "dist",
119
+ "src"
120
+ ],
121
+ "typesVersions": {
122
+ "*": {
123
+ "src/*": [
124
+ "src/*",
125
+ "src/*/index"
126
+ ],
127
+ "*": [
128
+ "src/*",
129
+ "src/*/index"
130
+ ]
131
+ }
132
+ }
133
+ }
@@ -0,0 +1,294 @@
1
+ /**
2
+ * DashApp - Simplified Application Shell
3
+ *
4
+ * A simple, easy-to-understand component that:
5
+ * 1. Sets up the Router context FIRST (solving useNavigate issues)
6
+ * 2. Checks authentication state
7
+ * 3. Renders either Public or Private app based on auth
8
+ *
9
+ * Usage:
10
+ * ```tsx
11
+ * import { DashApp } from 'dash-app-common';
12
+ *
13
+ * // Zero-config (uses default public/private apps)
14
+ * <DashApp />
15
+ *
16
+ * // With custom apps
17
+ * <DashApp
18
+ * PublicApp={MyPublicApp}
19
+ * PrivateApp={MyPrivateApp}
20
+ * />
21
+ * ```
22
+ */
23
+ import React, { useEffect, useState } from 'react';
24
+ import { useSelector, useDispatch } from 'react-redux';
25
+ import { BrowserRouter, HashRouter, Routes, Route } from 'react-router-dom';
26
+ import { getEnv } from 'dash-utils';
27
+ import { AuthPersistenceService, syncLocalStorageToDeviceStore } from 'dash-auth';
28
+ import { dashStorage } from 'dash-utils';
29
+
30
+ // Framework imports
31
+ import DASHAuthenticationService from 'dash-admin/src/contexts/auth/DASHAuthenticationService';
32
+ import { DASH_REDUX_ACTIONS } from 'dash-admin-state';
33
+ import { ACTION_UPDATE_AUTH } from 'dash-admin-state/src/redux/reducers/Auth';
34
+ import AppLoadingFallback from 'dash-components/src/components/theme/AppLoadingFallback';
35
+
36
+ // Default apps and routes
37
+ import { dashDefaultPublicRoutes } from './defaults/extensions/router/dashDefaultPublicRoutes';
38
+ import { dashDefaultPrivateRoutes } from './defaults/extensions/router/dashDefaultPrivateRoutes';
39
+
40
+ // Lazy load default private app
41
+ const DashDefaultPrivateApp = React.lazy(
42
+ () => import('./components/DashDefaultPrivateApp')
43
+ );
44
+
45
+ // ============================================================================
46
+ // TYPES
47
+ // ============================================================================
48
+
49
+ interface DashAppProps {
50
+ /**
51
+ * Custom public routes function. If not provided, uses default login/register routes.
52
+ */
53
+ publicRoutes?: () => React.ReactNode[];
54
+
55
+ /**
56
+ * Custom private routes function. If not provided, uses default admin routes.
57
+ */
58
+ privateRoutes?: () => React.ReactNode[];
59
+
60
+ /**
61
+ * Custom component to render for authenticated users instead of routes.
62
+ * Use this when you have a full custom admin app (like DashLazyAdminApp).
63
+ */
64
+ PrivateApp?: React.ComponentType<any>;
65
+
66
+ /**
67
+ * Props to pass to the PrivateApp component.
68
+ */
69
+ privateAppProps?: Record<string, any>;
70
+
71
+ /**
72
+ * Loading component shown during initialization.
73
+ */
74
+ LoadingComponent?: React.ComponentType<{ message?: string }>;
75
+
76
+ /**
77
+ * Force hash router (for Electron apps).
78
+ */
79
+ useHashRouter?: boolean;
80
+
81
+ /**
82
+ * Base path for the router.
83
+ */
84
+ basename?: string;
85
+
86
+ /**
87
+ * Enable debug logging.
88
+ */
89
+ debug?: boolean;
90
+ }
91
+
92
+ // ============================================================================
93
+ // HELPER: Determine router type
94
+ // ============================================================================
95
+
96
+ const shouldUseHashRouter = (): boolean => {
97
+ const platformType = getEnv('PLATFORM_TYPE');
98
+ const platform = getEnv('PLATFORM');
99
+ return platformType === 'desktop' || platform === 'electron';
100
+ };
101
+
102
+ // ============================================================================
103
+ // INNER COMPONENT: Routes Content (rendered inside Router)
104
+ // This component is responsible for rendering routes AFTER Router is mounted
105
+ // ============================================================================
106
+
107
+ interface RoutesContentProps {
108
+ publicRoutes: () => React.ReactNode[];
109
+ privateRoutes?: () => React.ReactNode[];
110
+ isAuthenticated: boolean;
111
+ LoadingComponent: React.ComponentType<{ message?: string }>;
112
+ privateAppProps?: Record<string, any>;
113
+ PrivateApp?: React.ComponentType<any>;
114
+ }
115
+
116
+ const RoutesContent: React.FC<RoutesContentProps> = ({
117
+ publicRoutes,
118
+ privateRoutes,
119
+ isAuthenticated,
120
+ LoadingComponent,
121
+ privateAppProps = {},
122
+ PrivateApp,
123
+ }) => {
124
+ // Render authenticated app
125
+ if (isAuthenticated) {
126
+ // If a custom PrivateApp is provided, render it directly
127
+ if (PrivateApp) {
128
+ return <PrivateApp {...privateAppProps} />;
129
+ }
130
+
131
+ // If custom private routes provided, render them
132
+ if (privateRoutes) {
133
+ return (
134
+ <Routes>
135
+ {privateRoutes()}
136
+ </Routes>
137
+ );
138
+ }
139
+
140
+ // Default: Use DashDefaultPrivateApp (with useOwnRouter=false since we already have Router)
141
+ return (
142
+ <React.Suspense fallback={<LoadingComponent message="Loading admin..." />}>
143
+ <DashDefaultPrivateApp useOwnRouter={false} {...privateAppProps} />
144
+ </React.Suspense>
145
+ );
146
+ }
147
+
148
+ // Render public routes (login, register, etc.)
149
+ // Routes are called here, INSIDE the Router context
150
+ return (
151
+ <Routes>
152
+ {publicRoutes()}
153
+ </Routes>
154
+ );
155
+ };
156
+
157
+ // ============================================================================
158
+ // INNER COMPONENT: App Content (rendered inside Router)
159
+ // ============================================================================
160
+
161
+ interface AppContentProps {
162
+ publicRoutes: () => React.ReactNode[];
163
+ privateRoutes?: () => React.ReactNode[];
164
+ PrivateApp?: React.ComponentType<any>;
165
+ privateAppProps?: Record<string, any>;
166
+ LoadingComponent: React.ComponentType<{ message?: string }>;
167
+ debug?: boolean;
168
+ }
169
+
170
+ const AppContent: React.FC<AppContentProps> = ({
171
+ publicRoutes,
172
+ privateRoutes,
173
+ PrivateApp,
174
+ privateAppProps = {},
175
+ LoadingComponent,
176
+ debug = false,
177
+ }) => {
178
+ const [isInitializing, setIsInitializing] = useState(true);
179
+ const dispatch = useDispatch();
180
+
181
+ // Get auth state from Redux
182
+ const auth = useSelector((state: any) => state.auth);
183
+ const isAuthenticated = auth?.authenticated ?? false;
184
+
185
+ const log = (...args: any[]) => {
186
+ if (debug) console.log('🔷 DashApp:', ...args);
187
+ };
188
+
189
+ // Initialize auth on mount
190
+ useEffect(() => {
191
+ const initializeAuth = async () => {
192
+ log('Initializing authentication...');
193
+
194
+ try {
195
+ // Check for persisted auth data
196
+ const storedToken = AuthPersistenceService.getToken();
197
+ const storedUser = AuthPersistenceService.getUser();
198
+ const isAuthenticatedStored = JSON.parse(dashStorage.getItem('authenticated') || 'false');
199
+
200
+ log('Persisted data:', { hasToken: !!storedToken, hasUser: !!storedUser, isAuthenticated: isAuthenticatedStored });
201
+
202
+ if (storedToken && isAuthenticatedStored) {
203
+ // Try to restore session
204
+ const result = await DASHAuthenticationService.initializeFromToken();
205
+
206
+ if (result.success) {
207
+ log('Session restored successfully');
208
+ dispatch(DASH_REDUX_ACTIONS.updateAuth(ACTION_UPDATE_AUTH, {
209
+ user: result.user,
210
+ authenticated: true,
211
+ auth: result.auth || null,
212
+ }));
213
+ await syncLocalStorageToDeviceStore();
214
+ } else {
215
+ log('Session restore failed, clearing auth');
216
+ AuthPersistenceService.clearAuth();
217
+ }
218
+ } else {
219
+ log('No valid session found');
220
+ }
221
+ } catch (error) {
222
+ console.error('DashApp: Auth initialization error:', error);
223
+ AuthPersistenceService.clearAuth();
224
+ } finally {
225
+ setIsInitializing(false);
226
+ }
227
+ };
228
+
229
+ initializeAuth();
230
+ }, [dispatch, debug]);
231
+
232
+ // Show loading during initialization
233
+ if (isInitializing) {
234
+ return <LoadingComponent message="Initializing..." />;
235
+ }
236
+
237
+ log('Rendering:', isAuthenticated ? 'Private App' : 'Public Routes');
238
+
239
+ // Use RoutesContent to defer route evaluation until we're sure we're inside Router
240
+ return (
241
+ <RoutesContent
242
+ publicRoutes={publicRoutes}
243
+ privateRoutes={privateRoutes}
244
+ isAuthenticated={isAuthenticated}
245
+ LoadingComponent={LoadingComponent}
246
+ privateAppProps={privateAppProps}
247
+ PrivateApp={PrivateApp}
248
+ />
249
+ );
250
+ };
251
+
252
+ // ============================================================================
253
+ // MAIN COMPONENT
254
+ // ============================================================================
255
+
256
+ /**
257
+ * DashApp - The main application shell
258
+ *
259
+ * Sets up Router context first, then handles auth and conditional rendering.
260
+ * This ensures useNavigate() and other Router hooks work everywhere.
261
+ */
262
+ export const DashApp: React.FC<DashAppProps> = ({
263
+ publicRoutes = dashDefaultPublicRoutes,
264
+ privateRoutes,
265
+ PrivateApp,
266
+ privateAppProps,
267
+ LoadingComponent = AppLoadingFallback,
268
+ useHashRouter: forceHashRouter,
269
+ basename,
270
+ debug = false,
271
+ }) => {
272
+ // Determine router type
273
+ const useHash = forceHashRouter ?? shouldUseHashRouter();
274
+ const effectiveBasename = basename ?? getEnv('BASE_PATH') ?? '/';
275
+
276
+ // Router wrapper
277
+ const Router = useHash ? HashRouter : BrowserRouter;
278
+ const routerProps = useHash ? { basename: '' } : { basename: effectiveBasename };
279
+
280
+ return (
281
+ <Router {...routerProps}>
282
+ <AppContent
283
+ publicRoutes={publicRoutes}
284
+ privateRoutes={privateRoutes}
285
+ PrivateApp={PrivateApp}
286
+ privateAppProps={privateAppProps}
287
+ LoadingComponent={LoadingComponent}
288
+ debug={debug}
289
+ />
290
+ </Router>
291
+ );
292
+ };
293
+
294
+ export default DashApp;