@dashadmin/dash-admin 1.3.24 → 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 (511) hide show
  1. package/dist/AppAsyncWrapper.js +30 -1
  2. package/dist/AppWrapper.js +35 -1
  3. package/dist/DASHAdmin.js +312 -1
  4. package/dist/RoutingWrapper.js +76 -1
  5. package/dist/classes/DASHStorageClass.js +15 -1
  6. package/dist/components/Input/RichTextField.js +26 -1
  7. package/dist/components/Redirect.js +56 -1
  8. package/dist/components/avatar/Avatar.js +72 -1
  9. package/dist/components/avatar/SingleImageUploader.js +46 -1
  10. package/dist/components/currency/Format.js +71 -1
  11. package/dist/components/custom/Redirect.js +20 -1
  12. package/dist/components/error/Error.js +161 -1
  13. package/dist/components/geocoding/GeocodingField.js +133 -1
  14. package/dist/components/i18n/BridgedLocalesMenuButton.js +126 -1
  15. package/dist/components/i18n/LangSwitcher.js +196 -1
  16. package/dist/components/loader/GlobalLoader.js +71 -1
  17. package/dist/components/logs/LogFile.js +99 -1
  18. package/dist/components/logs/LogFileById.js +75 -1
  19. package/dist/components/logs/LogViewer.js +33 -1
  20. package/dist/components/menu/AppMenu.js +11 -1
  21. package/dist/components/menu/CustomMenuItemLink.js +77 -1
  22. package/dist/components/menu/DarkToggleMode.js +47 -1
  23. package/dist/components/menu/LanguageToggleMode.js +99 -1
  24. package/dist/components/misc/CustomImageInput.js +54 -1
  25. package/dist/components/misc/DASHGlobalErrorHandler.js +159 -1
  26. package/dist/components/misc/DarkModeSwitcher.js +40 -1
  27. package/dist/components/misc/LanguageSwitcher.js +193 -1
  28. package/dist/components/misc/MUIHtmlToolTip.js +50 -1
  29. package/dist/components/misc/MuiSimpleJsonTable.js +178 -1
  30. package/dist/components/misc/MultiLevelTable.js +124 -1
  31. package/dist/components/misc/NoResults.js +17 -1
  32. package/dist/components/misc/PDFViewer.js +86 -1
  33. package/dist/components/navigation/Breadcrumbs.js +178 -1
  34. package/dist/components/navigation/BreadcrumbsManager.js +194 -1
  35. package/dist/components/navigation/index.js +8 -1
  36. package/dist/components/panel/Error.js +161 -1
  37. package/dist/components/permission/AvailablePermissionsContext.js +157 -1
  38. package/dist/components/permission/PermissionsSelector.js +719 -1
  39. package/dist/components/permission/PermissionsSelectorList.js +400 -1
  40. package/dist/components/racustombuttons/CustomRAButton.js +94 -1
  41. package/dist/components/racustombuttons/QuickButton.js +109 -1
  42. package/dist/components/racustombuttons/QuickEditButton.js +114 -1
  43. package/dist/components/racustombuttons/QuickIconButton.js +119 -1
  44. package/dist/components/scrollbar/Scrollbar.js +52 -1
  45. package/dist/components/selects/MultiSelect.js +42 -1
  46. package/dist/components/selects/RASearchableSelect.js +207 -1
  47. package/dist/components/selects/RASearchableSelectChips.js +225 -1
  48. package/dist/components/selects/SearchableSelect.js +128 -1
  49. package/dist/components/subscription/BillingCycleSelectInput.js +50 -1
  50. package/dist/components/subscription/PlanAddonsSettings.js +396 -1
  51. package/dist/components/subscription/PlanAuditLog.js +345 -1
  52. package/dist/components/subscription/PlanFeaturesSettings.js +151 -1
  53. package/dist/components/subscription/PlanLimitsSettings.js +168 -1
  54. package/dist/components/subscription/PlanMetadataSettings.js +219 -1
  55. package/dist/components/subscription/PlanPricesSettings.js +222 -1
  56. package/dist/components/subscription/index.js +12 -1
  57. package/dist/components/svgelements/SvgLoading.js +330 -1
  58. package/dist/components/svgelements/SvgLogo.js +70 -1
  59. package/dist/components/svgelements/SvgLogoMin.js +76 -1
  60. package/dist/components/svgelements/SvgShipping.js +1001 -1
  61. package/dist/components/tenant/TenantAttributes.js +107 -1
  62. package/dist/components/tenant/TenantAttributesContext.js +150 -1
  63. package/dist/components/tenant/TenantSelector.js +160 -1
  64. package/dist/components/tenant/TenantSettings.js +107 -1
  65. package/dist/components/tenant/TenantSettingsContext.js +152 -1
  66. package/dist/components/tenant/TenantTheme.js +112 -1
  67. package/dist/components/user/AvatarComponent.js +270 -1
  68. package/dist/components/user/TenantAvatarComponent.js +83 -1
  69. package/dist/components/user/UserPreferences.js +422 -1
  70. package/dist/config/ACTIONS.js +25 -1
  71. package/dist/config/ConstantsService.js +25 -1
  72. package/dist/config/DASHAdminSystemConstants.js +137 -1
  73. package/dist/config/PARSERS.js +9 -1
  74. package/dist/contexts/DashQueryClientContext.js +78 -1
  75. package/dist/contexts/DashResourceContext.js +21 -1
  76. package/dist/contexts/I18nBridgeContext.js +123 -1
  77. package/dist/contexts/I18nBridgeSetter.js +29 -1
  78. package/dist/contexts/I18nReduxSync.js +16 -1
  79. package/dist/contexts/SubscriptionPlanFormatsProvider.js +175 -1
  80. package/dist/contexts/SystemRequestsCache.js +194 -1
  81. package/dist/contexts/auth/AuthContext.js +396 -1
  82. package/dist/contexts/auth/AuthContextLocalStorage.js +118 -1
  83. package/dist/contexts/auth/DASHAuthenticationService.js +679 -1
  84. package/dist/contexts/auth/WindowContext.js +10 -1
  85. package/dist/contexts/auth/index.js +2 -1
  86. package/dist/contexts/com/FCMContext.js +378 -1
  87. package/dist/contexts/com/LaravelEchoContext.js +45 -1
  88. package/dist/contexts/com/LaravelEchoMgr.js +121 -1
  89. package/dist/contexts/com/components/DefaultNotificationComponent.js +31 -1
  90. package/dist/contexts/com/components/NotificationAttributesTable.js +28 -1
  91. package/dist/contexts/com/components/NotificationRenderer.js +36 -1
  92. package/dist/contexts/com/components/NotificationsWidget.js +142 -1
  93. package/dist/contexts/com/components/notificationFormats.js +15 -1
  94. package/dist/contexts/com/useLaravelEcho.js +340 -1
  95. package/dist/contexts/dictionary/DictionaryContext.js +43 -1
  96. package/dist/default-theme/DASHAppProviders.js +86 -1
  97. package/dist/default-theme/DashThemeContext.js +146 -1
  98. package/dist/default-theme/DashThemeHelperProvider.js +54 -1
  99. package/dist/default-theme/DomainAppLayout.js +126 -1
  100. package/dist/default-theme/DomainHeader.js +114 -1
  101. package/dist/default-theme/DomainTheme.js +60 -1
  102. package/dist/default-theme/FullLayoutMarkup.js +55 -1
  103. package/dist/default-theme/StaticLayout.js +36 -1
  104. package/dist/default-theme/index.js +19 -1
  105. package/dist/default-theme/menu/AppMaterialMenu.js +364 -1
  106. package/dist/default-theme/menu/AppMenuComponents/SubmenuPortal.js +33 -1
  107. package/dist/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItem.js +239 -1
  108. package/dist/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItems.js +22 -1
  109. package/dist/default-theme/menu/AppMenuComponents/expanded/CollapsableSidebarMenu.js +209 -1
  110. package/dist/default-theme/menu/AppMenuComponents/expanded/SidebarItem.js +71 -1
  111. package/dist/default-theme/menu/AppMenuComponents/getItem.js +7 -1
  112. package/dist/default-theme/menu/AppMenuComponents/submenuConstants.js +78 -1
  113. package/dist/default-theme/menu/AppSidebarMaterial.js +232 -1
  114. package/dist/default-theme/menu/SidebarActions.js +75 -1
  115. package/dist/default-theme/updateDomCssVariables.js +134 -1
  116. package/dist/helpers/checkRole.js +14 -1
  117. package/dist/helpers/parseAxiosError.js +28 -2
  118. package/dist/hooks/audio/useAudio.js +24 -1
  119. package/dist/hooks/axios.js +52 -1
  120. package/dist/hooks/data/useDashboardStats.js +88 -1
  121. package/dist/hooks/data/usePackageByClientsStats.js +51 -1
  122. package/dist/hooks/data/usePackageByCommunesStats.js +51 -1
  123. package/dist/hooks/data/usePackageStats.js +88 -1
  124. package/dist/hooks/data/usePackageWithdrawDetails.js +69 -1
  125. package/dist/hooks/data/useStats.js +94 -1
  126. package/dist/hooks/isCurrentPath.js +18 -1
  127. package/dist/hooks/notifications/WSMessagesManager.js +128 -1
  128. package/dist/hooks/notifications/WSPusherManager.js +70 -1
  129. package/dist/hooks/useBreadcrumbs.js +208 -1
  130. package/dist/hooks/useClickOutside.js +18 -1
  131. package/dist/hooks/useFormPersistance.js +129 -1
  132. package/dist/hooks/useGlobalErrorMediator.js +37 -1
  133. package/dist/hooks/useGlobalLoaderMgr.js +20 -1
  134. package/dist/hooks/useHash.js +24 -1
  135. package/dist/hooks/useLocalStorage.js +68 -1
  136. package/dist/hooks/usePolyglotTranslation.js +57 -1
  137. package/dist/hooks/usePrevious.js +12 -1
  138. package/dist/hooks/usePrintSelected.js +30 -1
  139. package/dist/hooks/useVirtualHash.js +28 -1
  140. package/dist/hooks/window/useWindowSize.js +23 -1
  141. package/dist/index.js +120 -97
  142. package/dist/interfaces.js +6 -1
  143. package/dist/layout/AppLayout.js +36 -1
  144. package/dist/layout/ApplicationLayout.js +110 -1
  145. package/dist/layout/MotionWrapper.js +182 -1
  146. package/dist/layout/MotionWrapper.original.js +182 -1
  147. package/dist/layout/ResourceMenu.js +87 -1
  148. package/dist/layout/ResoureLayout.js +47 -1
  149. package/dist/layout/TransitionWrapper.js +83 -2
  150. package/dist/pages/ChangePassword.js +198 -1
  151. package/dist/pages/DASHLanding.js +9 -1
  152. package/dist/pages/DASHLightWeightLogin.js +495 -1
  153. package/dist/pages/DASHSimpleLogin.js +231 -1
  154. package/dist/pages/Login.js +113 -1
  155. package/dist/pages/Profile.js +347 -1
  156. package/dist/pages/RecoverPassword.js +175 -1
  157. package/dist/pages/SingleImageUploader.js +40 -1
  158. package/dist/pages/VerifyAccount.js +129 -1
  159. package/dist/providers/authProvider.js +186 -1
  160. package/dist/providers/dataProvider.js +468 -1
  161. package/dist/providers/i18n/en.js +514 -1
  162. package/dist/providers/i18n/es.js +520 -1
  163. package/dist/providers/i18n/languages.js +8 -1
  164. package/dist/providers/i18nProvider.js +23 -1
  165. package/dist/react-admin-dash/RADashComponent.js +210 -1
  166. package/dist/react-admin-dash/Resource.js +62 -1
  167. package/dist/resources/Brand/BrandResource.js +106 -1
  168. package/dist/resources/DASHResourceLoader.js +104 -1
  169. package/dist/resources/Log/LogResource.js +59 -1
  170. package/dist/resources/Tenant/ImpersonateTenantResource.js +113 -1
  171. package/dist/resources/Trash/TrashTemplate.js +195 -1
  172. package/dist/resources.js +259 -1
  173. package/dist/schemas/log.js +45 -1
  174. package/dist/schemas/notification.js +39 -1
  175. package/dist/schemas/permissions.js +44 -1
  176. package/dist/schemas/roles.js +48 -1
  177. package/dist/schemas/rolesDataGrid.js +48 -1
  178. package/dist/schemas/subscription/components/SubscriptionActions.js +172 -1
  179. package/dist/schemas/subscription/components/SubscriptionPaymentHistory.js +101 -1
  180. package/dist/schemas/subscription/components/SubscriptionPlanFeatures.js +115 -1
  181. package/dist/schemas/subscription/components/SubscriptionPlanPreview.js +92 -1
  182. package/dist/schemas/subscription/components/SubscriptionPlanStats.js +181 -1
  183. package/dist/schemas/subscription/components/SubscriptionStatusIndicator.js +70 -1
  184. package/dist/schemas/subscription/subscriptionPlanSchema.js +184 -1
  185. package/dist/schemas/subscription/subscriptionSchema.js +147 -1
  186. package/dist/schemas/subscriptionPlan.js +397 -1
  187. package/dist/schemas/tenant.js +122 -1
  188. package/dist/schemas/tenantUser.js +94 -1
  189. package/dist/schemas/tenant_superadmin.js +118 -1
  190. package/dist/schemas/user.js +26 -1
  191. package/dist/systemResources.js +1039 -1
  192. package/dist/systemResources.old.js +668 -1
  193. package/dist/templates/ResourceTemplate.js +196 -1
  194. package/dist/templates/ResourceTemplateCreate.js +144 -1
  195. package/dist/templates/ResourceTemplateEdit.js +147 -1
  196. package/dist/templates/ResourceTemplateFull.js +518 -1
  197. package/dist/templates/ResourceTemplateList.js +295 -1
  198. package/dist/templates/ResourceTemplateShow.js +45 -1
  199. package/dist/templates/TrashTemplate.js +175 -1
  200. package/dist/tenantResources.js +206 -1
  201. package/dist/test_portal_bubbles.js +37 -1
  202. package/dist/theme/AppHeader.js +60 -1
  203. package/dist/theme/AppLayoutSetting.js +34 -1
  204. package/dist/theme/AppLogo.js +7 -1
  205. package/dist/theme/AppSidebar.js +30 -1
  206. package/dist/theme/AppSidebarContent.js +84 -1
  207. package/dist/theme/AppSidebarLogo.js +42 -1
  208. package/dist/theme/components/PageTitle.js +61 -1
  209. package/dist/utils/cache/CacheInvalidatorContext.js +100 -1
  210. package/dist/utils/cache/CacheInvalidatorListenerComponent.js +10 -1
  211. package/dist/utils/cache/useCacheInvalidatorListener.js +17 -1
  212. package/dist/utils/convertFileToBase64.js +10 -1
  213. package/dist/utils/convertToFile.js +12 -1
  214. package/dist/utils/cookies.js +45 -1
  215. package/dist/utils/dashDefaultQueryClient.js +15 -1
  216. package/dist/utils/dataUrlToBlob.js +23 -1
  217. package/dist/utils/deepReplace.js +17 -1
  218. package/dist/utils/getProfileMenu.js +31 -1
  219. package/dist/utils/getTenantSettings.js +9 -1
  220. package/dist/utils/getType.js +10 -1
  221. package/dist/utils/getUserSettings.js +9 -1
  222. package/dist/utils/hasCode.js +14 -1
  223. package/dist/utils/index.js +19 -1
  224. package/dist/utils/injectTenantStyles.js +19 -1
  225. package/dist/utils/isComponent.js +23 -1
  226. package/dist/utils/navEvents.js +75 -1
  227. package/dist/utils/prototypes.js +5 -1
  228. package/dist/utils/regexp.js +7 -1
  229. package/dist/utils/resolveObjectPath.js +5 -1
  230. package/dist/utils/setNativeValue.js +17 -1
  231. package/dist/utils/slugify.js +7 -1
  232. package/dist/utils/validators/emailValidator.js +8 -1
  233. package/dist/utils/validators/requiredValidator.js +7 -1
  234. package/dist/utils/validators/rutValidator.js +25 -1
  235. package/dist/utils/validators.js +57 -1
  236. package/package.json +153 -69
  237. package/src/AppAsyncWrapper.tsx +42 -0
  238. package/src/AppWrapper.tsx +45 -0
  239. package/src/DASHAdmin.tsx +501 -0
  240. package/src/RoutingWrapper.tsx +139 -0
  241. package/src/classes/DASHStorageClass.tsx +8 -0
  242. package/src/components/Input/RichTextField.tsx +27 -0
  243. package/src/components/Redirect.tsx +46 -0
  244. package/src/components/avatar/Avatar.tsx +67 -0
  245. package/src/components/avatar/SingleImageUploader.tsx +53 -0
  246. package/src/components/currency/Format.tsx +77 -0
  247. package/src/components/custom/Redirect.tsx +23 -0
  248. package/src/components/error/Error.tsx +168 -0
  249. package/src/components/geocoding/GeocodingField.tsx +167 -0
  250. package/src/components/i18n/BridgedLocalesMenuButton.tsx +159 -0
  251. package/src/components/i18n/LangSwitcher.tsx +204 -0
  252. package/src/components/loader/GlobalLoader.tsx +56 -0
  253. package/src/components/logs/LogFile.tsx +88 -0
  254. package/src/components/logs/LogFileById.tsx +68 -0
  255. package/src/components/logs/LogViewer.tsx +43 -0
  256. package/src/components/menu/AppMenu.tsx +22 -0
  257. package/src/components/menu/CustomMenuItemLink.tsx +61 -0
  258. package/src/components/menu/DarkToggleMode.tsx +65 -0
  259. package/src/components/menu/LanguageToggleMode.tsx +120 -0
  260. package/src/components/misc/CustomImageInput.tsx +62 -0
  261. package/src/components/misc/DASHGlobalErrorHandler.tsx +194 -0
  262. package/src/components/misc/DarkModeSwitcher.tsx +112 -0
  263. package/src/components/misc/LanguageSwitcher.tsx +199 -0
  264. package/src/components/misc/MUIHtmlToolTip.tsx +15 -0
  265. package/src/components/misc/MuiSimpleJsonTable.tsx +279 -0
  266. package/src/components/misc/MultiLevelTable.tsx +229 -0
  267. package/src/components/misc/NoResults.tsx +25 -0
  268. package/src/components/misc/PDFViewer.tsx +85 -0
  269. package/src/components/navigation/Breadcrumbs.tsx +220 -0
  270. package/src/components/navigation/BreadcrumbsManager.tsx +310 -0
  271. package/src/components/navigation/index.tsx +5 -0
  272. package/src/components/panel/Error.tsx +168 -0
  273. package/src/components/permission/AvailablePermissionsContext.tsx +173 -0
  274. package/src/components/permission/PermissionsSelector.tsx +819 -0
  275. package/src/components/permission/PermissionsSelectorList.tsx +468 -0
  276. package/src/components/permission/tsx +0 -0
  277. package/src/components/racustombuttons/CustomRAButton.tsx +87 -0
  278. package/src/components/racustombuttons/QuickButton.tsx +117 -0
  279. package/src/components/racustombuttons/QuickEditButton.tsx +115 -0
  280. package/src/components/racustombuttons/QuickIconButton.tsx +122 -0
  281. package/src/components/scrollbar/Scrollbar.tsx +31 -0
  282. package/src/components/selects/MultiSelect.tsx +53 -0
  283. package/src/components/selects/RASearchableSelect.tsx +279 -0
  284. package/src/components/selects/RASearchableSelectChips.tsx +304 -0
  285. package/src/components/selects/SearchableSelect.tsx +135 -0
  286. package/src/components/subscription/BillingCycleSelectInput.tsx +68 -0
  287. package/src/components/subscription/PlanAddonsSettings.tsx +522 -0
  288. package/src/components/subscription/PlanAuditLog.tsx +439 -0
  289. package/src/components/subscription/PlanFeaturesSettings.tsx +223 -0
  290. package/src/components/subscription/PlanLimitsSettings.tsx +230 -0
  291. package/src/components/subscription/PlanMetadataSettings.tsx +284 -0
  292. package/src/components/subscription/PlanPricesSettings.tsx +295 -0
  293. package/src/components/subscription/index.ts +7 -0
  294. package/src/components/svgelements/SvgLoading.tsx +229 -0
  295. package/src/components/svgelements/SvgLogo.tsx +53 -0
  296. package/src/components/svgelements/SvgLogoMin.tsx +64 -0
  297. package/src/components/svgelements/SvgShipping.tsx +673 -0
  298. package/src/components/tenant/AvailablePermissionsContext.tsx +0 -0
  299. package/src/components/tenant/TenantAttributes.tsx +153 -0
  300. package/src/components/tenant/TenantAttributesContext.tsx +163 -0
  301. package/src/components/tenant/TenantSelector.tsx +139 -0
  302. package/src/components/tenant/TenantSettings.tsx +172 -0
  303. package/src/components/tenant/TenantSettingsContext.tsx +165 -0
  304. package/src/components/tenant/TenantTheme.tsx +172 -0
  305. package/src/components/user/AvatarComponent.tsx +301 -0
  306. package/src/components/user/TenantAvatarComponent.tsx +99 -0
  307. package/src/components/user/UserPreferences.tsx +642 -0
  308. package/src/config/ACTIONS.tsx +26 -0
  309. package/src/config/ConstantsService.tsx +44 -0
  310. package/src/config/DASHAdminSystemConstants.tsx +182 -0
  311. package/src/config/PARSERS.tsx +9 -0
  312. package/src/contexts/DashQueryClientContext.tsx +113 -0
  313. package/src/contexts/DashResourceContext.tsx +34 -0
  314. package/src/contexts/I18nBridgeContext.tsx +156 -0
  315. package/src/contexts/I18nBridgeSetter.tsx +39 -0
  316. package/src/contexts/I18nReduxSync.tsx +27 -0
  317. package/src/contexts/SubscriptionPlanFormatsProvider.tsx +217 -0
  318. package/src/contexts/SystemRequestsCache.tsx +215 -0
  319. package/src/contexts/auth/AuthContext.tsx +553 -0
  320. package/src/contexts/auth/AuthContextLocalStorage.tsx +140 -0
  321. package/src/contexts/auth/DASHAuthenticationService.tsx +917 -0
  322. package/src/contexts/auth/WindowContext.tsx +15 -0
  323. package/src/contexts/auth/index.tsx +3 -0
  324. package/src/contexts/com/FCMContext.tsx +415 -0
  325. package/src/contexts/com/LaravelEchoContext.tsx +41 -0
  326. package/src/contexts/com/LaravelEchoMgr.tsx +155 -0
  327. package/src/contexts/com/components/DefaultNotificationComponent.tsx +20 -0
  328. package/src/contexts/com/components/NotificationAttributesTable.tsx +54 -0
  329. package/src/contexts/com/components/NotificationRenderer.tsx +42 -0
  330. package/src/contexts/com/components/NotificationsWidget.tsx +182 -0
  331. package/src/contexts/com/components/notificationFormats.tsx +50 -0
  332. package/src/contexts/com/useLaravelEcho.tsx +432 -0
  333. package/src/contexts/dictionary/DictionaryContext.tsx +94 -0
  334. package/src/default-theme/DASHAppProviders.tsx +117 -0
  335. package/src/default-theme/DashThemeContext.tsx +218 -0
  336. package/src/default-theme/DashThemeHelperProvider.tsx +98 -0
  337. package/src/default-theme/DomainAppLayout.tsx +166 -0
  338. package/src/default-theme/DomainHeader.tsx +162 -0
  339. package/src/default-theme/DomainTheme.tsx +59 -0
  340. package/src/default-theme/FullLayoutMarkup.tsx +250 -0
  341. package/src/default-theme/StaticLayout.tsx +47 -0
  342. package/src/default-theme/index.tsx +11 -0
  343. package/src/default-theme/menu/AppMaterialMenu.tsx +545 -0
  344. package/src/default-theme/menu/AppMenuComponents/SubmenuPortal.tsx +56 -0
  345. package/src/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItem.tsx +254 -0
  346. package/src/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItems.tsx +31 -0
  347. package/src/default-theme/menu/AppMenuComponents/expanded/CollapsableSidebarMenu.tsx +276 -0
  348. package/src/default-theme/menu/AppMenuComponents/expanded/SidebarItem.tsx +91 -0
  349. package/src/default-theme/menu/AppMenuComponents/getItem.tsx +17 -0
  350. package/src/default-theme/menu/AppMenuComponents/interfaces.tsx +41 -0
  351. package/src/default-theme/menu/AppMenuComponents/submenuConstants.ts +85 -0
  352. package/src/default-theme/menu/AppSidebarMaterial.tsx +339 -0
  353. package/src/default-theme/menu/SidebarActions.tsx +84 -0
  354. package/src/default-theme/updateDomCssVariables.tsx +176 -0
  355. package/src/helpers/checkRole.tsx +66 -0
  356. package/src/helpers/parseAxiosError.tsx +41 -0
  357. package/src/hooks/audio/useAudio.tsx +39 -0
  358. package/src/hooks/axios.tsx +62 -0
  359. package/src/hooks/data/useDashboardStats.tsx +65 -0
  360. package/src/hooks/data/usePackageByClientsStats.tsx +44 -0
  361. package/src/hooks/data/usePackageByCommunesStats.tsx +44 -0
  362. package/src/hooks/data/usePackageStats.tsx +69 -0
  363. package/src/hooks/data/usePackageWithdrawDetails.tsx +61 -0
  364. package/src/hooks/data/useStats.tsx +86 -0
  365. package/src/hooks/isCurrentPath.tsx +22 -0
  366. package/src/hooks/notifications/WSMessagesManager.tsx +152 -0
  367. package/src/hooks/notifications/WSPusherManager.tsx +92 -0
  368. package/src/hooks/useBreadcrumbs.tsx +329 -0
  369. package/src/hooks/useClickOutside.tsx +17 -0
  370. package/src/hooks/useFormPersistance.tsx +150 -0
  371. package/src/hooks/useGlobalErrorMediator.tsx +43 -0
  372. package/src/hooks/useGlobalLoaderMgr.tsx +21 -0
  373. package/src/hooks/useHash.tsx +27 -0
  374. package/src/hooks/useLocalStorage.tsx +196 -0
  375. package/src/hooks/usePolyglotTranslation.tsx +62 -0
  376. package/src/hooks/usePrevious.tsx +9 -0
  377. package/src/hooks/usePrintSelected.tsx +37 -0
  378. package/src/hooks/useVirtualHash.tsx +33 -0
  379. package/src/hooks/window/useWindowSize.tsx +36 -0
  380. package/src/index.tsx +110 -0
  381. package/src/interfaces/IAppResourceConfig.tsx +20 -0
  382. package/src/interfaces/Log.tsx +16 -0
  383. package/src/interfaces/Tenant.tsx +25 -0
  384. package/src/interfaces/communication/IActions.tsx +5 -0
  385. package/src/interfaces/communication/INotification.tsx +21 -0
  386. package/src/interfaces/communication/IPayload.tsx +3 -0
  387. package/src/interfaces/communication/IRequestAction.tsx +10 -0
  388. package/src/interfaces/communication/IRequestPayload.tsx +7 -0
  389. package/src/interfaces/communication/IResponseAction.tsx +7 -0
  390. package/src/interfaces/misc/IAny.tsx +3 -0
  391. package/src/interfaces/misc/IFlashMessage.tsx +10 -0
  392. package/src/interfaces/navigation/IAppMenu.ts +14 -0
  393. package/src/interfaces/navigation/ICollapsableSidebarMenu.ts +12 -0
  394. package/src/interfaces/navigation/IMenuItem.ts +16 -0
  395. package/src/interfaces/notifications/IModel.tsx +6 -0
  396. package/src/interfaces/notifications/IModelField.tsx +8 -0
  397. package/src/interfaces/notifications/IUserNotification.tsx +12 -0
  398. package/src/interfaces/notifications/IUserNotificationData.tsx +13 -0
  399. package/src/interfaces/notifications/IUserNotificationPayload.tsx +8 -0
  400. package/src/interfaces/user/IGetAuth.tsx +92 -0
  401. package/src/interfaces/user/ITenantSettings.tsx +3 -0
  402. package/src/interfaces/user/IUser.tsx +60 -0
  403. package/src/interfaces/user/IUserSettings.tsx +43 -0
  404. package/src/interfaces.tsx +6 -0
  405. package/src/layout/AppLayout.tsx +112 -0
  406. package/src/layout/ApplicationLayout.tsx +197 -0
  407. package/src/layout/MotionWrapper.original.tsx +236 -0
  408. package/src/layout/MotionWrapper.tsx +236 -0
  409. package/src/layout/ResourceMenu.tsx +164 -0
  410. package/src/layout/ResoureLayout.tsx +105 -0
  411. package/src/layout/TransitionWrapper.tsx +125 -0
  412. package/src/pages/ChangePassword.tsx +179 -0
  413. package/src/pages/DASHLanding.tsx +22 -0
  414. package/src/pages/DASHLightWeightLogin.tsx +610 -0
  415. package/src/pages/DASHSimpleLogin.tsx +260 -0
  416. package/src/pages/Login.tsx +111 -0
  417. package/src/pages/Profile.tsx +394 -0
  418. package/src/pages/RecoverPassword.tsx +166 -0
  419. package/src/pages/SingleImageUploader.tsx +55 -0
  420. package/src/pages/VerifyAccount.tsx +128 -0
  421. package/src/providers/authProvider.tsx +210 -0
  422. package/src/providers/dataProvider.tsx +672 -0
  423. package/src/providers/i18n/en.ts +533 -0
  424. package/src/providers/i18n/es.ts +539 -0
  425. package/src/providers/i18n/languages.tsx +5 -0
  426. package/src/providers/i18nProvider.tsx +23 -0
  427. package/src/react-admin-dash/RADashComponent.tsx +240 -0
  428. package/src/react-admin-dash/Resource.tsx +77 -0
  429. package/src/resources/Brand/BrandResource.tsx +130 -0
  430. package/src/resources/DASHResourceLoader.ts +180 -0
  431. package/src/resources/Log/LogResource.tsx +73 -0
  432. package/src/resources/Tenant/ImpersonateTenantResource.tsx +113 -0
  433. package/src/resources/Trash/TrashTemplate.tsx +180 -0
  434. package/src/resources.tsx +280 -0
  435. package/src/schemas/log.tsx +45 -0
  436. package/src/schemas/notification.tsx +42 -0
  437. package/src/schemas/permissions.tsx +44 -0
  438. package/src/schemas/roles.tsx +48 -0
  439. package/src/schemas/rolesDataGrid.tsx +48 -0
  440. package/src/schemas/subscription/components/SubscriptionActions.tsx +153 -0
  441. package/src/schemas/subscription/components/SubscriptionPaymentHistory.tsx +120 -0
  442. package/src/schemas/subscription/components/SubscriptionPlanFeatures.tsx +155 -0
  443. package/src/schemas/subscription/components/SubscriptionPlanPreview.tsx +128 -0
  444. package/src/schemas/subscription/components/SubscriptionPlanStats.tsx +268 -0
  445. package/src/schemas/subscription/components/SubscriptionStatusIndicator.tsx +72 -0
  446. package/src/schemas/subscription/subscriptionPlanSchema.tsx +185 -0
  447. package/src/schemas/subscription/subscriptionSchema.tsx +152 -0
  448. package/src/schemas/subscriptionPlan.ts +422 -0
  449. package/src/schemas/tenant.tsx +129 -0
  450. package/src/schemas/tenantUser.tsx +96 -0
  451. package/src/schemas/tenant_superadmin.tsx +119 -0
  452. package/src/schemas/user.tsx +26 -0
  453. package/src/systemResources.old.tsx +928 -0
  454. package/src/systemResources.tsx +1135 -0
  455. package/src/templates/ResourceTemplate.tsx +240 -0
  456. package/src/templates/ResourceTemplateCreate.tsx +167 -0
  457. package/src/templates/ResourceTemplateEdit.tsx +176 -0
  458. package/src/templates/ResourceTemplateFull.tsx +581 -0
  459. package/src/templates/ResourceTemplateList.tsx +340 -0
  460. package/src/templates/ResourceTemplateShow.tsx +88 -0
  461. package/src/templates/TrashTemplate.tsx +179 -0
  462. package/src/tenantResources.tsx +223 -0
  463. package/src/test_portal_bubbles.tsx +40 -0
  464. package/src/theme/AppHeader.tsx +52 -0
  465. package/src/theme/AppLayoutSetting.tsx +33 -0
  466. package/src/theme/AppLogo.tsx +13 -0
  467. package/src/theme/AppSidebar.tsx +12 -0
  468. package/src/theme/AppSidebarContent.tsx +105 -0
  469. package/src/theme/AppSidebarLogo.tsx +48 -0
  470. package/src/theme/components/PageTitle.tsx +37 -0
  471. package/src/utils/cache/CacheInvalidatorContext.tsx +125 -0
  472. package/src/utils/cache/CacheInvalidatorListenerComponent.tsx +10 -0
  473. package/src/utils/cache/useCacheInvalidatorListener.tsx +27 -0
  474. package/src/utils/convertFileToBase64.tsx +9 -0
  475. package/src/utils/convertToFile.tsx +14 -0
  476. package/src/utils/cookies.tsx +33 -0
  477. package/src/utils/dashDefaultQueryClient.tsx +34 -0
  478. package/src/utils/dataUrlToBlob.tsx +30 -0
  479. package/src/utils/deepReplace.tsx +19 -0
  480. package/src/utils/getProfileMenu.tsx +41 -0
  481. package/src/utils/getTenantSettings.tsx +9 -0
  482. package/src/utils/getType.tsx +8 -0
  483. package/src/utils/getUserSettings.tsx +8 -0
  484. package/src/utils/hasCode.tsx +14 -0
  485. package/src/utils/index.ts +19 -0
  486. package/src/utils/injectTenantStyles.ts +28 -0
  487. package/src/utils/isComponent.tsx +45 -0
  488. package/src/utils/navEvents.tsx +91 -0
  489. package/src/utils/prototypes.tsx +5 -0
  490. package/src/utils/regexp.tsx +4 -0
  491. package/src/utils/resolveObjectPath.tsx +4 -0
  492. package/src/utils/setNativeValue.tsx +24 -0
  493. package/src/utils/slugify.tsx +11 -0
  494. package/src/utils/validators/emailValidator.tsx +6 -0
  495. package/src/utils/validators/requiredValidator.tsx +5 -0
  496. package/src/utils/validators/rutValidator.tsx +31 -0
  497. package/src/utils/validators.tsx +96 -0
  498. package/dist/ChangePassword-DmWAQAX_.js +0 -152
  499. package/dist/Login-t41HMhVT.js +0 -101
  500. package/dist/Profile-By-gdPUd.js +0 -294
  501. package/dist/RecoverPassword-DzPdbkg2.js +0 -149
  502. package/dist/VerifyAccount-Bofaxe5w.js +0 -99
  503. package/dist/index-gfebuoyf.js +0 -21614
  504. /package/dist/{components/permission/tsx → declarations.d.js} +0 -0
  505. /package/{dist → src}/DASHAdmin.tsx.old +0 -0
  506. /package/{dist → src}/declarations.d.ts +0 -0
  507. /package/{dist → src}/default-theme/DashThemeContext.tsx.fast +0 -0
  508. /package/{dist → src}/default-theme/DashThemeContext.tsx.old +0 -0
  509. /package/{dist → src}/templates/ResourceTemplate.tsx.memoized_experiment +0 -0
  510. /package/{dist → src}/templates/ResourceTemplate.tsx.original +0 -0
  511. /package/{dist → src}/templates/ResourceTemplateOld.tsx.bkup +0 -0
@@ -0,0 +1,240 @@
1
+ import { useContext, useEffect } from 'react';
2
+ import { useGetIdentity, useResourceDefinitions } from 'react-admin';
3
+ import { useAuthContext } from '../contexts/auth';
4
+ import { useDialog } from 'dash-dialog';
5
+ import { useLocation, useNavigate } from 'react-router-dom';
6
+ import { useSelector } from 'react-redux';
7
+ import { dashStorage } from 'dash-utils';
8
+ declare global {
9
+ interface Window {
10
+ __DASH_DEBUG__: any;
11
+ }
12
+ }
13
+
14
+ // Debugging logic moved to a custom hook
15
+ function useRADashDebug({
16
+ location,
17
+ resourceDefinitions,
18
+ reduxState,
19
+ authContext,
20
+ identity,
21
+ identityLoading,
22
+ dialog,
23
+ navigate,
24
+ }) {
25
+ useEffect(() => {
26
+ // Enhanced route debugging
27
+ const debugInfo = {
28
+ timestamp: new Date().toISOString(),
29
+ location: {
30
+ pathname: location.pathname,
31
+ search: location.search,
32
+ hash: location.hash,
33
+ state: location.state,
34
+ key: location.key
35
+ },
36
+ reactAdminResources: Object.keys(resourceDefinitions || {}),
37
+ resourceDefinitionsDetails: resourceDefinitions,
38
+ reduxResources: reduxState.resources.map(r => ({
39
+ model: r.model,
40
+ label: r.label,
41
+ roles: r.roles,
42
+ group: r.group
43
+ })),
44
+ authContext: {
45
+ authenticated: authContext.authenticated,
46
+ user: authContext.user ? {
47
+ id: authContext.user.id,
48
+ roles: authContext.user.roles,
49
+ tenant_id: authContext.user.tenant_id
50
+ } : null
51
+ },
52
+ localStorage: {
53
+ currentAppPath: dashStorage.getItem('currentAppPath'),
54
+ currentMallSlug: dashStorage.getItem('currentMallSlug'),
55
+ currentMallPath: dashStorage.getItem('currentMallPath'),
56
+ tenant_id: dashStorage.getItem('tenant_id'),
57
+ userData: dashStorage.getItem('userData')
58
+ },
59
+ windowLocation: {
60
+ href: window.location.href,
61
+ origin: window.location.origin,
62
+ pathname: window.location.pathname,
63
+ search: window.location.search,
64
+ hash: window.location.hash
65
+ }
66
+ };
67
+
68
+ console.group('🔍 RADashComponent Route Debug');
69
+ console.log('📍 Current Location:', debugInfo.location);
70
+ console.log('🌐 Window Location:', debugInfo.windowLocation);
71
+ console.log('📦 React Admin Resources:', debugInfo.reactAdminResources);
72
+ console.log('📋 Resource Definitions:', debugInfo.resourceDefinitionsDetails);
73
+ console.log('🏪 Redux Resources:', debugInfo.reduxResources);
74
+ console.log('🔐 Auth Context:', debugInfo.authContext);
75
+ console.log('💾 Local Storage:', debugInfo.localStorage);
76
+
77
+ // Check for route matches
78
+ const currentPath = location.pathname;
79
+ const matchingResources = reduxState.resources.filter(resource => {
80
+ const resourcePath = resource.model;
81
+ const matches = currentPath.includes(resourcePath) || resourcePath === '/' && currentPath === '/';
82
+ return matches;
83
+ });
84
+
85
+ console.log('🎯 Matching Resources for current path:', matchingResources);
86
+
87
+ // Check if current path should match any resource
88
+ const pathSegments = currentPath.split('/').filter(Boolean);
89
+ console.log('📂 Path Segments:', pathSegments);
90
+
91
+ // Analyze potential routing issues
92
+ const routingIssues = [];
93
+
94
+ if (reduxState.resources.length === 0) {
95
+ routingIssues.push('No resources loaded in Redux state');
96
+ }
97
+
98
+ if (Object.keys(resourceDefinitions || {}).length === 0) {
99
+ routingIssues.push('No React Admin resource definitions found');
100
+ }
101
+
102
+ if (matchingResources.length === 0 && currentPath !== '/') {
103
+ routingIssues.push(`No resources match current path: ${currentPath}`);
104
+ }
105
+
106
+ if (!authContext.authenticated && reduxState.resources.some(r => !r.roles?.includes('Public'))) {
107
+ routingIssues.push('User not authenticated but trying to access protected resources');
108
+ }
109
+
110
+ if (routingIssues.length > 0) {
111
+ console.warn('⚠️ Potential Routing Issues:', routingIssues);
112
+ }
113
+
114
+ console.groupEnd();
115
+
116
+ // Store debug info globally for inspection
117
+ window.__DASH_DEBUG__ = {
118
+ ...window.__DASH_DEBUG__,
119
+ lastRouteDebug: debugInfo,
120
+ routingIssues
121
+ };
122
+
123
+ }, [location, resourceDefinitions, reduxState, authContext]);
124
+
125
+ useEffect(() => {
126
+ // Debug resource changes
127
+ console.group('📦 Resource Definitions Changed');
128
+ console.log('Available Resources:', Object.keys(resourceDefinitions || {}));
129
+ console.log('Resource Details:', resourceDefinitions);
130
+ console.groupEnd();
131
+ }, [resourceDefinitions]);
132
+
133
+ useEffect(() => {
134
+ // Debug auth changes
135
+ console.group('🔐 Auth Context Changed');
136
+ console.log('Authenticated:', authContext.authenticated);
137
+ console.log('User:', authContext.user);
138
+ console.log('Identity Loading:', identityLoading);
139
+ console.log('Identity:', identity);
140
+ console.groupEnd();
141
+ }, [authContext.authenticated, authContext.user, identityLoading, identity]);
142
+
143
+ useEffect(() => {
144
+ // Global axios error handler
145
+ const handleGlobalAxiosError = (event) => {
146
+ console.error('🚨 Global Axios Error:', event.data);
147
+ dialog({
148
+ variant: 'danger',
149
+ title: event.data?.name || "Error",
150
+ content: event.data?.message || "Error desconocido",
151
+ confirmText: 'Volver',
152
+ closeText: 'Cerrar',
153
+ onConfirm: () => {},
154
+ onClose: () => {},
155
+ });
156
+ };
157
+
158
+ window.addEventListener('global-axios-error', handleGlobalAxiosError);
159
+ return () => {
160
+ window.removeEventListener('global-axios-error', handleGlobalAxiosError);
161
+ };
162
+ }, [dialog]);
163
+
164
+ useEffect(() => {
165
+ // Debug React Admin routing errors
166
+ const handleReactAdminError = (error) => {
167
+ console.error('🚨 React Admin Error:', error);
168
+ // Check if it's a routing error
169
+ if (error.message?.includes('404') || error.message?.includes('not found')) {
170
+ console.group('🔍 Route Not Found Debug');
171
+ console.log('Current path:', location.pathname);
172
+ console.log('Available resources:', Object.keys(resourceDefinitions || {}));
173
+ console.log('Redux resources:', reduxState.resources.map(r => r.model));
174
+ console.log('Suggested fixes:');
175
+ console.log('1. Check if resource model matches the URL path');
176
+ console.log('2. Verify resource permissions/roles');
177
+ console.log('3. Ensure resource is properly registered');
178
+ console.groupEnd();
179
+ }
180
+ };
181
+
182
+ window.addEventListener('error', handleReactAdminError);
183
+ window.addEventListener('unhandledrejection', (event) => {
184
+ handleReactAdminError(event.reason);
185
+ });
186
+
187
+ return () => {
188
+ window.removeEventListener('error', handleReactAdminError);
189
+ window.removeEventListener('unhandledrejection', handleReactAdminError);
190
+ };
191
+ }, [location.pathname, resourceDefinitions, reduxState.resources]);
192
+
193
+ useEffect(() => {
194
+ // Add a helper function to manually trigger route analysis
195
+ window.__DASH_DEBUG__ = {
196
+ ...window.__DASH_DEBUG__,
197
+ analyzeCurrentRoute: () => {
198
+ console.group('🔍 Manual Route Analysis');
199
+ console.log('Current pathname:', location.pathname);
200
+ console.log('React Admin resources:', Object.keys(resourceDefinitions || {}));
201
+ console.log('Redux resources:', reduxState.resources);
202
+
203
+ // Try to find why route is not matching
204
+ const pathWithoutLeadingSlash = location.pathname.replace(/^\//, '');
205
+ const pathSegments = pathWithoutLeadingSlash.split('/').filter(Boolean);
206
+
207
+ console.log('Path segments:', pathSegments);
208
+
209
+ // Check each resource for potential matches
210
+ reduxState.resources.forEach(resource => {
211
+ const resourceModel = resource.model.replace(/^\//, '');
212
+ const matches = pathSegments[0] === resourceModel ||
213
+ (resource.model === '/' && location.pathname === '/');
214
+
215
+ console.log(`Resource "${resource.model}" matches:`, matches, {
216
+ resourceModel,
217
+ firstPathSegment: pathSegments[0],
218
+ roles: resource.roles,
219
+ authenticated: authContext.authenticated
220
+ });
221
+ });
222
+
223
+ console.groupEnd();
224
+ },
225
+ navigateToResource: (resourceName) => {
226
+ console.log(`Navigating to resource: ${resourceName}`);
227
+ navigate(`/${resourceName}`);
228
+ }
229
+ };
230
+ }, [location, resourceDefinitions, reduxState, authContext, navigate]);
231
+ }
232
+
233
+ const RADashComponent = () => {
234
+
235
+
236
+
237
+ return null;
238
+ };
239
+
240
+ export default RADashComponent;
@@ -0,0 +1,77 @@
1
+ import * as React from 'react';
2
+ import { ComponentType, ReactElement, isValidElement, Children } from 'react';
3
+ import { Route, Routes } from 'react-router-dom';
4
+ import { isValidElementType } from 'react-is';
5
+ import { ResourceContextProvider, ResourceProps, RestoreScrollPosition } from 'react-admin';
6
+
7
+ export const Resource = (props: ResourceProps) => {
8
+ const { create, edit, list, name, show } = props;
9
+
10
+ // Note: In React Router v7, we cannot pass arbitrary children to Routes.
11
+ // The trash route and other custom routes should be handled via CustomRoutes
12
+ // at the parent level, not as children of Resource.
13
+
14
+ return (
15
+ <ResourceContextProvider value={name}>
16
+ <Routes>
17
+ {create ? (
18
+ <Route path="create/*" element={getElement(create)} />
19
+ ) : null}
20
+ {show ? <Route path=":id/show/*" element={getElement(show)} /> : null}
21
+ {edit ? <Route path=":id/*" element={getElement(edit)} /> : null}
22
+ {list ? (
23
+ <Route
24
+ path="/*"
25
+ element={
26
+ <RestoreScrollPosition
27
+ storeKey={`${name}.list.scrollPosition`}
28
+ >
29
+ {getElement(list)}
30
+ </RestoreScrollPosition>
31
+ }
32
+ />
33
+ ) : null}
34
+ </Routes>
35
+ </ResourceContextProvider>
36
+ );
37
+ };
38
+
39
+ const getElement = (ElementOrComponent: ComponentType<any> | ReactElement) => {
40
+
41
+ if (isValidElement(ElementOrComponent)) {
42
+ return ElementOrComponent;
43
+ }
44
+
45
+ if (isValidElementType(ElementOrComponent)) {
46
+ const Element = ElementOrComponent as ComponentType<any>;
47
+ return <Element />;
48
+ }
49
+
50
+ return null;
51
+ };
52
+
53
+ Resource.raName = 'Resource';
54
+
55
+ Resource.registerResource = ({
56
+ create,
57
+ edit,
58
+ icon,
59
+ list,
60
+ name,
61
+ options,
62
+ show,
63
+ recordRepresentation,
64
+ hasCreate,
65
+ hasEdit,
66
+ hasShow,
67
+ }: ResourceProps) => ({
68
+ name,
69
+ options,
70
+ hasList: !!list,
71
+ hasCreate: !!create || !!hasCreate,
72
+ hasEdit: !!edit || !!hasEdit,
73
+ hasShow: !!show || !!hasShow,
74
+ icon,
75
+ recordRepresentation,
76
+ });
77
+
@@ -0,0 +1,130 @@
1
+ import { Resource, TabbedShowLayout } from 'react-admin';
2
+ import { Show } from 'react-admin';
3
+ // @ts-ignore - Layout may not exist
4
+ import ApplicationLayout from '../../layouts/ApplicationLayout';
5
+ import { IAppResourceConfig } from '../../interfaces/IAppResourceConfig';
6
+ import { useNotify } from 'react-admin';
7
+ import { useRedirect } from 'react-admin';
8
+ // @ts-ignore - Dialog service may not exist
9
+ import { useDialog } from '../../components/Dialog/DialogService';
10
+ import { TopToolbar } from 'react-admin';
11
+ import { EditButton } from 'react-admin';
12
+ import { CustomRoutes } from 'react-admin';
13
+ import { Route } from 'react-router';
14
+ import TrashTemplate from '../Trash/TrashTemplate';
15
+ // @ts-ignore - dash-auto-admin imports may not be available
16
+ import AutoCreate from 'dash-auto-admin/AutoCreate';
17
+ // @ts-ignore - dash-auto-admin imports may not be available
18
+ import AutoEdit from 'dash-auto-admin/AutoEdit';
19
+ // @ts-ignore - dash-auto-admin imports may not be available
20
+ import DashAutoList from 'dash-auto-admin/DashAutoList';
21
+ // @ts-ignore - dash-auto-admin imports may not be available
22
+ import AutoReferenceTab from 'dash-auto-admin/AutoReferenceTab';
23
+ // @ts-ignore - dash-auto-admin imports may not be available
24
+ import AutoTabs from 'dash-auto-admin/AutoTabs';
25
+ // @ts-ignore - dash-auto-admin imports may not be available
26
+ import { AutoTitle } from 'dash-auto-admin';
27
+
28
+ export const BrandResource = (resourceConfig: IAppResourceConfig) => {
29
+ const beforeSubmut = (data: any) => {
30
+ data.input_brand_mappings = data.input_brand_mappings.map(
31
+ (ele) => ele.text,
32
+ );
33
+ return data;
34
+ };
35
+
36
+ return (
37
+ <>
38
+ <CustomRoutes>{TrashTemplate(resourceConfig)}</CustomRoutes>
39
+ <Resource
40
+ options={{ label: resourceConfig.label, group: resourceConfig.group }}
41
+ name={resourceConfig.model}
42
+ list={() => {
43
+ return (
44
+ <ApplicationLayout resourceConfig={resourceConfig}>
45
+ <DashAutoList
46
+ /*sx={{
47
+ flexGrow: 1
48
+ }}*/
49
+ /*search={resourceConfig.search} schema={resourceConfig.listSchema ? resourceConfig.listSchema : resourceConfig.schema} BulkActions={resourceConfig.BulkActions} create={resourceConfig.create}*/ resourceConfig={
50
+ resourceConfig
51
+ }
52
+ />
53
+ </ApplicationLayout>
54
+ );
55
+ }}
56
+ edit={() => (
57
+ <ApplicationLayout resourceConfig={resourceConfig}>
58
+ <AutoEdit
59
+ beforeSubmit={beforeSubmut}
60
+ //schema={resourceConfig.editSchema ? resourceConfig.editSchema : resourceConfig.schema}
61
+ resourceConfig={resourceConfig}
62
+ />
63
+ </ApplicationLayout>
64
+ )}
65
+ create={() => {
66
+ const notify = useNotify();
67
+ const redirect = useRedirect();
68
+ const dialog = useDialog();
69
+ const onCreate = (data: any) => {
70
+ notify(`Recurso Creado`,{type:'success'});
71
+ dialog({
72
+ variant: 'info',
73
+ title: 'Recurso Creado',
74
+ description: 'Se ha creado el recurso ' + resourceConfig.label,
75
+ onConfirm: () => {
76
+ redirect('/' + resourceConfig.model);
77
+ },
78
+ onClose: () => {},
79
+ });
80
+ };
81
+ const onError = (error: any) => {
82
+ notify(`Error!`);
83
+ };
84
+ return (
85
+ <ApplicationLayout resourceConfig={resourceConfig}>
86
+ <AutoCreate
87
+ beforeSubmit={beforeSubmut}
88
+ //schema={resourceConfig.createSchema ? resourceConfig.createSchema : resourceConfig.schema}
89
+ onError={onError}
90
+ onSubmit={onCreate}
91
+ /*toolbar={<ResourceCreateToolbar />}*/ resourceConfig={
92
+ resourceConfig
93
+ } /*toolbar={<ResourceCreateToolbar />}*/
94
+ />
95
+ </ApplicationLayout>
96
+ );
97
+ }}
98
+ show={() => {
99
+ const ShowActions = ({ edit }) => (
100
+ <TopToolbar sx={{mb:2}} >{edit !== false && <EditButton />}</TopToolbar>
101
+ );
102
+ return (
103
+ <ApplicationLayout resourceConfig={resourceConfig}>
104
+ <Show
105
+ title={
106
+ <AutoTitle
107
+ //schema={resourceConfig.showSchema ? resourceConfig.showSchema : resourceConfig.schema} />}
108
+ //actions={<ShowActions edit={resourceConfig.edit}
109
+ resourceConfig={resourceConfig}
110
+ />
111
+ }
112
+ >
113
+ <TabbedShowLayout>
114
+ {AutoTabs(resourceConfig.schema)}
115
+ {resourceConfig.references &&
116
+ resourceConfig.references.map((reference) =>
117
+ AutoReferenceTab(reference),
118
+ )}
119
+ </TabbedShowLayout>
120
+ </Show>
121
+ </ApplicationLayout>
122
+ );
123
+ }}
124
+ // @ts-ignore - icon type compatibility issue
125
+ icon={resourceConfig.icon}
126
+ />
127
+ </>
128
+ );
129
+ };
130
+ export default BrandResource;
@@ -0,0 +1,180 @@
1
+ /**
2
+ * DASH Resource Loader
3
+ *
4
+ * Dynamic resource loading system that loads resources from a JSON manifest.
5
+ * Supports caching to prevent redundant imports and can be configured with
6
+ * a custom manifest path.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
11
+
12
+ /**
13
+ * Resource manifest entry interface
14
+ */
15
+ export interface IResourceManifestEntry {
16
+ /** Unique name identifier for the resource */
17
+ name: string;
18
+ /** Import path for the resource module */
19
+ path: string;
20
+ }
21
+
22
+ /**
23
+ * Resource loader configuration options
24
+ */
25
+ export interface IDASHResourceLoaderConfig {
26
+ /** Path to the resource manifest JSON file */
27
+ manifestPath?: string;
28
+ /** Whether to enable caching of loaded resources */
29
+ enableCache?: boolean;
30
+ /** Custom manifest entries to use instead of loading from file */
31
+ customManifest?: IResourceManifestEntry[];
32
+ }
33
+
34
+ /**
35
+ * Cache for loaded resources to prevent redundant imports
36
+ */
37
+ let resourceCache: IDashAutoAdminResourceConfig[] | null = null;
38
+
39
+ /**
40
+ * Clear the resource cache
41
+ * Useful when you need to reload resources
42
+ */
43
+ export const clearResourceCache = (): void => {
44
+ resourceCache = null;
45
+ };
46
+
47
+ /**
48
+ * Get cached resources if available
49
+ */
50
+ export const getCachedResources = (): IDashAutoAdminResourceConfig[] | null => {
51
+ return resourceCache;
52
+ };
53
+
54
+ /**
55
+ * Load resources from a manifest
56
+ *
57
+ * @param manifest - Array of resource manifest entries
58
+ * @returns Promise resolving to array of resource configurations
59
+ */
60
+ export const loadResourcesFromManifest = async (
61
+ manifest: IResourceManifestEntry[]
62
+ ): Promise<IDashAutoAdminResourceConfig[]> => {
63
+ const resources: IDashAutoAdminResourceConfig[] = [];
64
+
65
+ const loadedModules = await Promise.all(
66
+ manifest.map(async (item) => {
67
+ try {
68
+ // Dynamic import of the resource module
69
+ const module = await import(/* @vite-ignore */ item.path);
70
+ return {
71
+ name: item.name,
72
+ module: module.default || module,
73
+ };
74
+ } catch (error) {
75
+ console.error(`Failed to load resource "${item.name}" from "${item.path}":`, error);
76
+ return null;
77
+ }
78
+ })
79
+ );
80
+
81
+ loadedModules.forEach((loaded) => {
82
+ if (loaded && loaded.module) {
83
+ // Handle both single resource and array of resources
84
+ if (Array.isArray(loaded.module)) {
85
+ resources.push(...loaded.module);
86
+ } else {
87
+ resources.push(loaded.module);
88
+ }
89
+ }
90
+ });
91
+
92
+ return resources;
93
+ };
94
+
95
+ /**
96
+ * Default manifest loader that imports the manifest from a path
97
+ *
98
+ * @param manifestPath - Path to the manifest JSON file
99
+ * @returns Promise resolving to array of manifest entries
100
+ */
101
+ export const loadManifest = async (
102
+ manifestPath: string
103
+ ): Promise<IResourceManifestEntry[]> => {
104
+ try {
105
+ const manifestModule = await import(/* @vite-ignore */ manifestPath);
106
+ return manifestModule.default || manifestModule;
107
+ } catch (error) {
108
+ console.error(`Failed to load manifest from "${manifestPath}":`, error);
109
+ return [];
110
+ }
111
+ };
112
+
113
+ /**
114
+ * Create a resource loader function with configuration
115
+ *
116
+ * @param config - Resource loader configuration
117
+ * @returns Async function that returns loaded resources
118
+ *
119
+ * @example
120
+ * ```tsx
121
+ * // Using manifest file path
122
+ * const getResources = createDASHResourceLoader({
123
+ * manifestPath: '@app/resourceManifest.json'
124
+ * });
125
+ *
126
+ * // Using custom manifest array
127
+ * const getResources = createDASHResourceLoader({
128
+ * customManifest: [
129
+ * { name: 'todoResource', path: '@app/resources/todoResource' }
130
+ * ]
131
+ * });
132
+ *
133
+ * // Then use it
134
+ * const resources = await getResources();
135
+ * ```
136
+ */
137
+ export const createDASHResourceLoader = (
138
+ config: IDASHResourceLoaderConfig = {}
139
+ ): (() => Promise<IDashAutoAdminResourceConfig[]>) => {
140
+ const { manifestPath, enableCache = true, customManifest } = config;
141
+
142
+ return async (): Promise<IDashAutoAdminResourceConfig[]> => {
143
+ // Return cached resources if caching is enabled and cache exists
144
+ if (enableCache && resourceCache) {
145
+ return resourceCache;
146
+ }
147
+
148
+ let manifest: IResourceManifestEntry[];
149
+
150
+ if (customManifest) {
151
+ // Use custom manifest if provided
152
+ manifest = customManifest;
153
+ } else if (manifestPath) {
154
+ // Load manifest from file path
155
+ manifest = await loadManifest(manifestPath);
156
+ } else {
157
+ console.warn('No manifest path or custom manifest provided to resource loader');
158
+ return [];
159
+ }
160
+
161
+ const resources = await loadResourcesFromManifest(manifest);
162
+
163
+ // Cache the results if caching is enabled
164
+ if (enableCache) {
165
+ resourceCache = resources;
166
+ }
167
+
168
+ return resources;
169
+ };
170
+ };
171
+
172
+ /**
173
+ * Default resource loader using @app/resourceManifest.json
174
+ * This is a convenience export for the most common use case.
175
+ */
176
+ export const getDASHResources = createDASHResourceLoader({
177
+ manifestPath: '@app/resourceManifest.json',
178
+ });
179
+
180
+ export default createDASHResourceLoader;
@@ -0,0 +1,73 @@
1
+ import { Resource, TabbedShowLayout } from 'react-admin';
2
+ import { Show } from 'react-admin';
3
+ import { IAppResourceConfig } from '../../interfaces/IAppResourceConfig';
4
+ import { TopToolbar } from 'react-admin';
5
+ import { EditButton } from 'react-admin';
6
+ import { CustomRoutes } from 'react-admin';
7
+ import TrashTemplate from '../Trash/TrashTemplate';
8
+ import {
9
+ DashAutoList,
10
+ DashAutoReferenceTab,
11
+ DashAutoTabs,
12
+ DashAutoTitle,
13
+ } from 'dash-auto-admin';
14
+ import ApplicationLayout from '../../layout/ApplicationLayout';
15
+
16
+ export const LogResource = (resourceConfig: IAppResourceConfig) => {
17
+ return (
18
+ <>
19
+ <CustomRoutes>{TrashTemplate(resourceConfig)}</CustomRoutes>
20
+
21
+ <Resource
22
+ options={{ label: resourceConfig.label, group: resourceConfig.group }}
23
+ name={resourceConfig.model}
24
+ list={() => {
25
+ return (
26
+ <ApplicationLayout resourceConfig={resourceConfig}>
27
+ <DashAutoList
28
+ /*sx={{
29
+ flexGrow: 1,
30
+ transition: (theme: any) =>
31
+ theme.transitions.create(['all'], {
32
+ duration: theme.transitions.duration.enteringScreen,
33
+ })
34
+ }}*/
35
+
36
+ /*search={resourceConfig.search} schema={resourceConfig.listSchema ? resourceConfig.listSchema : resourceConfig.schema} BulkActions={resourceConfig.BulkActions} create={resourceConfig.create}*/ resourceConfig={
37
+ resourceConfig
38
+ }
39
+ />
40
+ </ApplicationLayout>
41
+ );
42
+ }}
43
+ show={() => {
44
+ const ShowActions = ({ edit }) => (
45
+ <TopToolbar sx={{ mb: 2 }} >{edit !== false && <EditButton />}</TopToolbar>
46
+ );
47
+ return (
48
+ <ApplicationLayout resourceConfig={resourceConfig}>
49
+ <Show
50
+ title={
51
+ <DashAutoTitle
52
+ resourceConfig={resourceConfig}
53
+ //schema={resourceConfig.showSchema ? resourceConfig.showSchema : resourceConfig.schema}
54
+ />
55
+ }
56
+ actions={<ShowActions edit={resourceConfig.edit} />}
57
+ >
58
+ <TabbedShowLayout>
59
+ {DashAutoTabs(resourceConfig)}
60
+ {resourceConfig.references &&
61
+ resourceConfig.references.map((reference) => DashAutoReferenceTab(reference) )}
62
+ </TabbedShowLayout>
63
+ </Show>
64
+ </ApplicationLayout>
65
+ );
66
+ }}
67
+ /* @ts-ignore Known issue type mismatch */
68
+ icon={resourceConfig.icon}
69
+ />
70
+ </>
71
+ );
72
+ };
73
+ export default LogResource;