@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
@@ -0,0 +1,10 @@
1
+ import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
2
+ import todoResource from './resources/demo/todoResource';
3
+ import systemResources from 'dash-admin/src/systemResources';
4
+
5
+ const DASHDefaultResources: IDashAutoAdminResourceConfig[] = [
6
+ ...systemResources,
7
+ todoResource,
8
+ ];
9
+
10
+ export default DASHDefaultResources;
@@ -0,0 +1,358 @@
1
+ /**
2
+ * DefaultPrivateApp
3
+ *
4
+ * A minimal authenticated admin application.
5
+ * Used as the default fallback when no custom privateAppImport is provided.
6
+ *
7
+ * This provides a basic admin shell with:
8
+ * - DASHAdmin with default configuration
9
+ * - Default data and auth providers from dash-admin
10
+ * - Minimal routing setup
11
+ *
12
+ * NOTE: This is a minimal fallback. For full functionality, apps should
13
+ * provide their own privateAppImport with proper provider configuration.
14
+ */
15
+ import React, { Suspense, useMemo, PropsWithChildren, ReactElement } from 'react';
16
+ import { Route } from 'react-router-dom';
17
+ import { useSelector } from 'react-redux';
18
+ import { DashRouterComponent, MinimalLayout, RouterComponent } from 'dash-utils';
19
+ import { NotFound } from 'dash-components';
20
+ import AppLoadingFallback from 'dash-components/src/components/theme/AppLoadingFallback';
21
+
22
+
23
+ // Import default providers from dash-admin (these are already configured)
24
+ import authProvider from 'dash-admin/src/providers/authProvider';
25
+ import dataProvider from 'dash-admin/src/providers/dataProvider';
26
+ import DefaultPrivateResources from './DashDefaultPrivateResources';
27
+ import DomainAppLayout from 'dash-admin/src/default-theme/DomainAppLayout';
28
+
29
+
30
+
31
+ // Lazy load DASHAdmin components
32
+ const DASHAdmin = React.lazy(() => import('dash-admin').then(module => ({ default: module.DASHAdmin })));
33
+ const DASHAppProviders = React.lazy(() => import('dash-admin').then(module => ({ default: module.DASHAppProviders })));
34
+ const RoutingWrapper = React.lazy(() => import('dash-admin').then(module => ({ default: module.RoutingWrapper })));
35
+ const AnimatedRoutesWrapper = React.lazy(() => import('dash-admin').then(module => ({ default: module.AnimatedRoutesWrapper })));
36
+
37
+ // Default loading fallback
38
+ const LoadingFallback: React.FC<{ message?: string }> = ({ message }) => (
39
+ <AppLoadingFallback message={message || "Loading..."} />
40
+ );
41
+
42
+ // ============================================================================
43
+ // TYPES
44
+ // ============================================================================
45
+
46
+ /**
47
+ * Props for DefaultPrivateApp
48
+ *
49
+ * Includes all DASHAdmin props plus app-specific configuration.
50
+ * Props are passed through to DASHAdmin with sensible defaults.
51
+ */
52
+ interface DefaultPrivateAppProps extends PropsWithChildren {
53
+ // ========================================================================
54
+ // APP CONFIGURATION PROPS
55
+ // ========================================================================
56
+ /**
57
+ * Base path for the admin app
58
+ */
59
+ appPath?: string;
60
+
61
+ /**
62
+ * Custom resources configuration
63
+ */
64
+ resources?: any[];
65
+
66
+ /**
67
+ * Whether to use the internal router
68
+ */
69
+ useOwnRouter?: boolean;
70
+
71
+ /**
72
+ * Global hook component (for global side effects)
73
+ */
74
+ GlobalHook?: React.ComponentType<any>;
75
+
76
+ // ========================================================================
77
+ // DASHADMIN PROPS (passed through to DASHAdmin)
78
+ // ========================================================================
79
+ /**
80
+ * Admin hook component (wraps admin content)
81
+ */
82
+ AdminHook?: React.ComponentType<any>;
83
+
84
+ /**
85
+ * Custom layout component for the admin
86
+ */
87
+ customLayout?: React.FC<any>;
88
+
89
+ /**
90
+ * Custom login page component
91
+ */
92
+ customLoginPage?: React.FC<any>;
93
+
94
+ /**
95
+ * Custom notification component
96
+ */
97
+ customNotification?: () => React.JSX.Element;
98
+
99
+ /**
100
+ * Custom error/catch-all page component
101
+ */
102
+ customErrorPage?: any;
103
+
104
+ /**
105
+ * Custom data provider
106
+ */
107
+ customDataProvider?: any;
108
+
109
+ /**
110
+ * Custom auth provider
111
+ */
112
+ customAuthProvider?: any;
113
+
114
+ /**
115
+ * Custom i18n provider
116
+ */
117
+ customI18nProvider?: any;
118
+
119
+ /**
120
+ * Whether to use core resources (default: false)
121
+ */
122
+ useCoreResources?: boolean;
123
+
124
+ /**
125
+ * Custom profile page component (false to disable)
126
+ */
127
+ customProfilePage?: React.JSX.Element | false;
128
+
129
+ /**
130
+ * Custom recover password page (false to disable)
131
+ */
132
+ customRecoverPassword?: React.JSX.Element | false;
133
+
134
+ /**
135
+ * Custom change password page (false to disable)
136
+ */
137
+ customChangePassword?: React.JSX.Element | false;
138
+
139
+ /**
140
+ * Custom verify account page (false to disable)
141
+ */
142
+ customVerifyAccount?: React.JSX.Element | false;
143
+
144
+ /**
145
+ * Custom theme configuration
146
+ */
147
+ customThemeConfig?: any;
148
+
149
+ /**
150
+ * Custom authenticated routes (passed directly to DASHAdmin)
151
+ */
152
+ customAuthRoutes?: React.ReactElement[];
153
+
154
+ /**
155
+ * Custom public routes (passed directly to DASHAdmin)
156
+ */
157
+ customRoutes?: React.ReactElement[];
158
+
159
+ /**
160
+ * Custom public routes (returns array, legacy support)
161
+ */
162
+ customPublicRoutes?: () => ReactElement[];
163
+
164
+ /**
165
+ * Custom private routes (returns array, legacy support)
166
+ */
167
+ customPrivateRoutes?: () => ReactElement[];
168
+
169
+ /**
170
+ * Custom React Query client
171
+ */
172
+ customQueryClient?: any;
173
+
174
+ /**
175
+ * Custom dictionary for translations
176
+ */
177
+ customDict?: { [x: string]: string };
178
+
179
+ /**
180
+ * Custom string replacements
181
+ */
182
+ customReplacements?: { [x: string]: string };
183
+
184
+ /**
185
+ * Custom history object
186
+ */
187
+ history?: any;
188
+
189
+ /**
190
+ * Initial app constants
191
+ */
192
+ initialAppConstants?: any;
193
+
194
+ /**
195
+ * WebSocket messages manager for real-time notifications
196
+ */
197
+ wsMessagesManager?: any;
198
+ }
199
+
200
+ // ============================================================================
201
+ // COMPONENT
202
+ // ============================================================================
203
+ const DefaultPrivateApp: React.FC<DefaultPrivateAppProps> = ({
204
+ // App configuration props
205
+ appPath = null,
206
+ resources = DefaultPrivateResources,
207
+ useOwnRouter = true,
208
+ GlobalHook = () => <></>,
209
+
210
+ // DASHAdmin props with defaults
211
+ AdminHook = (props) => props.children,
212
+ customLayout = DomainAppLayout,
213
+ customLoginPage,
214
+ customNotification,
215
+ customErrorPage = NotFound,
216
+ customDataProvider = null,
217
+ customAuthProvider = null,
218
+ customI18nProvider,
219
+ useCoreResources = false,
220
+ customProfilePage,
221
+ customRecoverPassword,
222
+ customChangePassword,
223
+ customVerifyAccount,
224
+ customThemeConfig,
225
+ customAuthRoutes,
226
+ customRoutes,
227
+ customPublicRoutes = null,
228
+ customPrivateRoutes = null,
229
+ customQueryClient,
230
+ customDict,
231
+ customReplacements,
232
+ history,
233
+ initialAppConstants,
234
+ wsMessagesManager,
235
+
236
+ children
237
+ }) => {
238
+ // Get common state for route path calculation
239
+ const common = useSelector((state: any) => state?.common || {});
240
+
241
+ // Calculate route path
242
+ const routePath = useMemo(() => {
243
+ return appPath || common?.appPath || '/';
244
+ }, [appPath, common?.appPath]);
245
+
246
+ // Create router component wrapper
247
+ const RouterWrapper = useMemo(() => {
248
+ const Wrapper: React.FC<{ children: React.ReactNode }> = ({ children: c }) => (
249
+ <DashRouterComponent basename={routePath}>
250
+ {c}
251
+ </DashRouterComponent>
252
+ );
253
+ return Wrapper;
254
+ }, [routePath]);
255
+
256
+ // Routes configuration - support both direct arrays and function-based routes
257
+ // Direct arrays (customRoutes, customAuthRoutes) take precedence over function-based
258
+ const resolvedCustomRoutes = useMemo(
259
+ () => customRoutes || (customPublicRoutes ? customPublicRoutes() : []),
260
+ [customRoutes, customPublicRoutes]
261
+ );
262
+
263
+ const resolvedAuthRoutes = useMemo(
264
+ () => customAuthRoutes || (customPrivateRoutes ? customPrivateRoutes() : []),
265
+ [customAuthRoutes, customPrivateRoutes]
266
+ );
267
+
268
+ // State for lazy-loaded providers - use defaults from dash-admin
269
+ const resolvedDataProvider = customDataProvider || dataProvider;
270
+ const resolvedAuthProvider = customAuthProvider || authProvider;
271
+
272
+ return (
273
+ <Suspense fallback={<LoadingFallback message="Loading admin providers..." />}>
274
+ <DASHAppProviders wsMessagesManager={wsMessagesManager}>
275
+ <GlobalHook />
276
+
277
+ {useOwnRouter ? (
278
+ <Suspense fallback={<LoadingFallback message="Loading routing..." />}>
279
+ <RoutingWrapper
280
+ BrowserRouterComponent={RouterWrapper}
281
+ Wrapper={AnimatedRoutesWrapper}
282
+ LayoutComponent={MinimalLayout}
283
+ >
284
+ <Route
285
+ path={routePath + "/*"}
286
+ element={
287
+ <Suspense fallback={<LoadingFallback message="Loading admin..." />}>
288
+ {children}
289
+ <DASHAdmin
290
+ basePath={routePath}
291
+ customDataProvider={resolvedDataProvider}
292
+ customAuthProvider={resolvedAuthProvider}
293
+ customResources={resources}
294
+ useCoreResources={useCoreResources}
295
+ customLayout={customLayout}
296
+ customLoginPage={customLoginPage}
297
+ customNotification={customNotification}
298
+ customErrorPage={customErrorPage}
299
+ customI18nProvider={customI18nProvider}
300
+ customProfilePage={customProfilePage}
301
+ customRecoverPassword={customRecoverPassword}
302
+ customChangePassword={customChangePassword}
303
+ customVerifyAccount={customVerifyAccount}
304
+ customThemeConfig={customThemeConfig}
305
+ customAuthRoutes={resolvedAuthRoutes}
306
+ customRoutes={resolvedCustomRoutes}
307
+ customQueryClient={customQueryClient}
308
+ customDict={customDict}
309
+ customReplacements={customReplacements}
310
+ history={history}
311
+ initialAppConstants={initialAppConstants}
312
+ AdminHook={AdminHook}
313
+ />
314
+ </Suspense>
315
+ }
316
+ />
317
+ </RoutingWrapper>
318
+ </Suspense>
319
+ ) : (
320
+ <Suspense fallback={<LoadingFallback message="Loading layout..." />}>
321
+ <MinimalLayout>
322
+ <Suspense fallback={<LoadingFallback message="Loading admin..." />}>
323
+ {children}
324
+ <DASHAdmin
325
+ basePath={routePath}
326
+ customDataProvider={resolvedDataProvider}
327
+ customAuthProvider={resolvedAuthProvider}
328
+ customResources={resources}
329
+ useCoreResources={useCoreResources}
330
+ customLayout={customLayout}
331
+ customLoginPage={customLoginPage}
332
+ customNotification={customNotification}
333
+ customErrorPage={customErrorPage}
334
+ customI18nProvider={customI18nProvider}
335
+ customProfilePage={customProfilePage}
336
+ customRecoverPassword={customRecoverPassword}
337
+ customChangePassword={customChangePassword}
338
+ customVerifyAccount={customVerifyAccount}
339
+ customThemeConfig={customThemeConfig}
340
+ customAuthRoutes={resolvedAuthRoutes}
341
+ customRoutes={resolvedCustomRoutes}
342
+ customQueryClient={customQueryClient}
343
+ customDict={customDict}
344
+ customReplacements={customReplacements}
345
+ history={history}
346
+ initialAppConstants={initialAppConstants}
347
+ AdminHook={AdminHook}
348
+ />
349
+ </Suspense>
350
+ </MinimalLayout>
351
+ </Suspense>
352
+ )}
353
+ </DASHAppProviders>
354
+ </Suspense>
355
+ );
356
+ };
357
+
358
+ export default DefaultPrivateApp;
@@ -0,0 +1,10 @@
1
+ import { systemResources } from 'dash-admin';
2
+ import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
3
+ import todoResource from '../resources/demo/todoResource';
4
+
5
+ const DefaultPrivateResources: IDashAutoAdminResourceConfig[] = [
6
+ ...systemResources,
7
+ todoResource,
8
+ ];
9
+
10
+ export default DefaultPrivateResources;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * DefaultPublicApp
3
+ *
4
+ * A minimal public-facing application shell for unauthenticated users.
5
+ * Used as the default fallback when no custom publicAppImport is provided.
6
+ *
7
+ * Renders default public routes (login, password recovery, etc.)
8
+ * using the DashRouterComponent from dash-utils.
9
+ */
10
+ import React from 'react';
11
+ import { DashRouterComponent } from 'dash-utils';
12
+ import AppLoadingFallback from 'dash-components/src/components/theme/AppLoadingFallback';
13
+ import defaultPublicRoutes from "../defaults/extensions/router/dashDefaultPublicRoutes";
14
+
15
+
16
+
17
+ interface DefaultPublicAppProps {
18
+ /**
19
+ * Optional custom public routes to use instead of defaults
20
+ */
21
+ customPublicRoutes?: () => React.ReactNode[];
22
+ }
23
+
24
+ const DefaultPublicApp: React.FC<DefaultPublicAppProps> = ({
25
+ customPublicRoutes
26
+ }) => {
27
+ // IMPORTANT: Pass the routes FUNCTION, not the result of calling it
28
+ // This ensures routes are created INSIDE the Router context
29
+ // where useNavigate and other Router hooks are available
30
+ const routesProvider = customPublicRoutes || defaultPublicRoutes;
31
+
32
+ return (
33
+ <DashRouterComponent
34
+ loader={<AppLoadingFallback message="Loading..." />}
35
+ publicRoutes={routesProvider}
36
+ />
37
+ );
38
+ };
39
+
40
+ export default DefaultPublicApp;