@dashadmin/dash-admin 1.3.73 → 1.3.74-srcfree.2

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 (553) hide show
  1. package/dist/AppAsyncWrapper.d.ts +3 -0
  2. package/dist/AppWrapper.d.ts +3 -0
  3. package/dist/DASHAdmin.d.ts +38 -0
  4. package/dist/RoutingWrapper.d.ts +10 -0
  5. package/dist/classes/DASHStorageClass.d.ts +5 -0
  6. package/dist/components/Input/RichTextField.d.ts +4 -0
  7. package/dist/components/Redirect.d.ts +9 -0
  8. package/dist/components/avatar/Avatar.d.ts +7 -0
  9. package/dist/components/avatar/SingleImageUploader.d.ts +9 -0
  10. package/dist/components/currency/Format.d.ts +4 -0
  11. package/dist/components/custom/Redirect.d.ts +7 -0
  12. package/dist/components/error/Error.d.ts +31 -0
  13. package/dist/components/geocoding/GeocodingField.d.ts +4 -0
  14. package/dist/components/i18n/BridgedLocalesMenuButton.d.ts +7 -0
  15. package/dist/components/i18n/LangSwitcher.d.ts +10 -0
  16. package/dist/components/loader/GlobalLoader.d.ts +6 -0
  17. package/dist/components/logs/LogFile.d.ts +6 -0
  18. package/dist/components/logs/LogFileById.d.ts +6 -0
  19. package/dist/components/logs/LogViewer.d.ts +8 -0
  20. package/dist/components/menu/AppMenu.d.ts +7 -0
  21. package/dist/components/menu/CustomMenuItemLink.d.ts +12 -0
  22. package/dist/components/menu/DarkToggleMode.d.ts +3 -0
  23. package/dist/components/menu/LanguageToggleMode.d.ts +3 -0
  24. package/dist/components/misc/CustomImageInput.d.ts +4 -0
  25. package/dist/components/misc/DASHGlobalErrorHandler.d.ts +10 -0
  26. package/dist/components/misc/DarkModeSwitcher.d.ts +3 -0
  27. package/dist/components/misc/HorizontalScroller.d.ts +14 -0
  28. package/dist/components/misc/LanguageSwitcher.d.ts +10 -0
  29. package/dist/components/misc/MuiSimpleJsonTable.d.ts +16 -0
  30. package/dist/components/misc/MultiLevelTable.d.ts +18 -0
  31. package/dist/components/misc/NoResults.d.ts +6 -0
  32. package/dist/components/misc/PDFViewer.d.ts +4 -0
  33. package/dist/components/navigation/Breadcrumbs.d.ts +14 -0
  34. package/dist/components/navigation/BreadcrumbsManager.d.ts +14 -0
  35. package/{src/components/navigation/index.tsx → dist/components/navigation/index.d.ts} +0 -1
  36. package/dist/components/panel/Error.d.ts +31 -0
  37. package/dist/components/permission/AvailablePermissionsContext.d.ts +11 -0
  38. package/dist/components/permission/PermissionsSelector.d.ts +4 -0
  39. package/dist/components/permission/PermissionsSelectorList.d.ts +4 -0
  40. package/dist/components/racustombuttons/CustomRAButton.d.ts +23 -0
  41. package/dist/components/racustombuttons/QuickButton.d.ts +15 -0
  42. package/dist/components/racustombuttons/QuickEditButton.d.ts +28 -0
  43. package/dist/components/racustombuttons/QuickIconButton.d.ts +27 -0
  44. package/dist/components/scrollbar/Scrollbar.d.ts +7 -0
  45. package/dist/components/selects/MultiSelect.d.ts +4 -0
  46. package/dist/components/selects/RASearchableSelect.d.ts +25 -0
  47. package/dist/components/selects/RASearchableSelectChips.d.ts +29 -0
  48. package/dist/components/selects/SearchableSelect.d.ts +3 -0
  49. package/dist/components/serviceAccount/ApiKeyRevealDialog.d.ts +7 -0
  50. package/dist/components/serviceAccount/ServiceAccountStatusSwitch.d.ts +4 -0
  51. package/dist/components/subscription/BillingCycleSelectInput.d.ts +3 -0
  52. package/dist/components/subscription/PlanAddonsSettings.d.ts +4 -0
  53. package/dist/components/subscription/PlanAuditLog.d.ts +4 -0
  54. package/dist/components/subscription/PlanFeaturesSettings.d.ts +4 -0
  55. package/dist/components/subscription/PlanLimitsSettings.d.ts +4 -0
  56. package/dist/components/subscription/PlanMetadataSettings.d.ts +4 -0
  57. package/dist/components/subscription/PlanPricesSettings.d.ts +4 -0
  58. package/{src/components/subscription/index.ts → dist/components/subscription/index.d.ts} +0 -2
  59. package/dist/components/svgelements/SvgLoading.d.ts +3 -0
  60. package/dist/components/svgelements/SvgLogo.d.ts +3 -0
  61. package/dist/components/svgelements/SvgLogoMin.d.ts +3 -0
  62. package/dist/components/svgelements/SvgShipping.d.ts +3 -0
  63. package/dist/components/tenancy/GlobalTenantWrapper.d.ts +6 -0
  64. package/dist/components/tenancy/TenantSwitcher.d.ts +16 -0
  65. package/dist/components/tenant/SettingsSections.d.ts +11 -0
  66. package/dist/components/tenant/TenancyPlan.d.ts +4 -0
  67. package/dist/components/tenant/TenancyPlan.js +307 -0
  68. package/dist/components/tenant/TenancySettings.d.ts +4 -0
  69. package/dist/components/tenant/TenantAttributes.d.ts +4 -0
  70. package/dist/components/tenant/TenantAttributesContext.d.ts +10 -0
  71. package/dist/components/tenant/TenantSelector.d.ts +11 -0
  72. package/dist/components/tenant/TenantSettings.d.ts +4 -0
  73. package/dist/components/tenant/TenantSettingsContext.d.ts +11 -0
  74. package/dist/components/tenant/TenantTheme.d.ts +4 -0
  75. package/dist/components/user/AvatarComponent.d.ts +6 -0
  76. package/dist/components/user/TenantAvatarComponent.d.ts +15 -0
  77. package/dist/components/user/UserPreferences.d.ts +3 -0
  78. package/dist/config/ACTIONS.d.ts +3 -0
  79. package/dist/config/ConstantsService.d.ts +14 -0
  80. package/dist/config/DASHAdminSystemConstants.d.ts +120 -0
  81. package/dist/config/PARSERS.d.ts +5 -0
  82. package/dist/contexts/DashQueryClientContext.d.ts +19 -0
  83. package/dist/contexts/DashResourceContext.d.ts +11 -0
  84. package/dist/contexts/I18nBridgeContext.d.ts +18 -0
  85. package/dist/contexts/I18nBridgeSetter.d.ts +3 -0
  86. package/dist/contexts/I18nReduxSync.d.ts +6 -0
  87. package/dist/contexts/SubscriptionPlanFormatsProvider.d.ts +13 -0
  88. package/dist/contexts/SystemRequestsCache.d.ts +16 -0
  89. package/dist/contexts/auth/AuthContext.d.ts +40 -0
  90. package/dist/contexts/auth/AuthContextLocalStorage.d.ts +27 -0
  91. package/dist/contexts/auth/DASHAuthenticationService.d.ts +46 -0
  92. package/dist/contexts/auth/WindowContext.d.ts +8 -0
  93. package/{src/contexts/auth/index.tsx → dist/contexts/auth/index.d.ts} +0 -1
  94. package/dist/contexts/com/FCMContext.d.ts +62 -0
  95. package/dist/contexts/com/LaravelEchoContext.d.ts +18 -0
  96. package/dist/contexts/com/LaravelEchoMgr.d.ts +8 -0
  97. package/dist/contexts/com/components/DefaultNotificationComponent.d.ts +6 -0
  98. package/dist/contexts/com/components/EchoNotificationsCenter.d.ts +3 -0
  99. package/dist/contexts/com/components/NotificationAttributesTable.d.ts +8 -0
  100. package/dist/contexts/com/components/NotificationRenderer.d.ts +8 -0
  101. package/dist/contexts/com/components/NotificationsWidget.d.ts +17 -0
  102. package/dist/contexts/com/components/notificationFormats.d.ts +38 -0
  103. package/dist/contexts/com/useLaravelEcho.d.ts +37 -0
  104. package/dist/contexts/dictionary/DictionaryContext.d.ts +21 -0
  105. package/dist/default-theme/DASHAppProviders.d.ts +21 -0
  106. package/dist/default-theme/DashThemeContext.d.ts +17 -0
  107. package/dist/default-theme/DashThemeHelperProvider.d.ts +10 -0
  108. package/dist/default-theme/DomainAppLayout.d.ts +13 -0
  109. package/dist/default-theme/DomainHeader.d.ts +6 -0
  110. package/dist/default-theme/DomainTheme.d.ts +8 -0
  111. package/dist/default-theme/FullLayoutMarkup.d.ts +9 -0
  112. package/dist/default-theme/StaticLayout.d.ts +5 -0
  113. package/{src/default-theme/index.tsx → dist/default-theme/index.d.ts} +0 -3
  114. package/dist/default-theme/menu/AppDashboardGrid.d.ts +24 -0
  115. package/dist/default-theme/menu/AppMaterialMenu.d.ts +11 -0
  116. package/dist/default-theme/menu/AppMenuComponents/SubmenuPortal.d.ts +15 -0
  117. package/dist/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItem.d.ts +22 -0
  118. package/dist/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItems.d.ts +11 -0
  119. package/dist/default-theme/menu/AppMenuComponents/expanded/CollapsableSidebarMenu.d.ts +4 -0
  120. package/dist/default-theme/menu/AppMenuComponents/expanded/SidebarItem.d.ts +3 -0
  121. package/dist/default-theme/menu/AppMenuComponents/getItem.d.ts +3 -0
  122. package/dist/default-theme/menu/AppMenuComponents/interfaces.d.ts +36 -0
  123. package/dist/default-theme/menu/AppMenuComponents/submenuConstants.d.ts +7 -0
  124. package/dist/default-theme/menu/AppSidebarMaterial.d.ts +8 -0
  125. package/dist/default-theme/menu/SidebarActions.d.ts +8 -0
  126. package/dist/default-theme/updateDomCssVariables.d.ts +6 -0
  127. package/dist/helpers/checkRole.d.ts +2 -0
  128. package/dist/helpers/parseAxiosError.d.ts +1 -0
  129. package/dist/hooks/audio/useAudio.d.ts +2 -0
  130. package/dist/hooks/axios.d.ts +5 -0
  131. package/dist/hooks/data/useDashboardStats.d.ts +13 -0
  132. package/dist/hooks/data/usePackageByClientsStats.d.ts +13 -0
  133. package/dist/hooks/data/usePackageByCommunesStats.d.ts +13 -0
  134. package/dist/hooks/data/usePackageStats.d.ts +13 -0
  135. package/dist/hooks/data/usePackageWithdrawDetails.d.ts +25 -0
  136. package/dist/hooks/data/useStats.d.ts +9 -0
  137. package/dist/hooks/isCurrentPath.d.ts +3 -0
  138. package/dist/hooks/notifications/WSMessagesManager.d.ts +4 -0
  139. package/dist/hooks/notifications/WSPusherManager.d.ts +3 -0
  140. package/dist/hooks/useBreadcrumbs.d.ts +21 -0
  141. package/dist/hooks/useClickOutside.d.ts +2 -0
  142. package/dist/hooks/useFormPersistance.d.ts +13 -0
  143. package/dist/hooks/useGlobalErrorMediator.d.ts +5 -0
  144. package/dist/hooks/useGlobalLoaderMgr.d.ts +3 -0
  145. package/dist/hooks/useHash.d.ts +2 -0
  146. package/dist/hooks/useLocalStorage.d.ts +2 -0
  147. package/dist/hooks/usePolyglotTranslation.d.ts +11 -0
  148. package/dist/hooks/usePrevious.d.ts +2 -0
  149. package/dist/hooks/usePrintSelected.d.ts +12 -0
  150. package/dist/hooks/useVirtualHash.d.ts +5 -0
  151. package/dist/hooks/window/useWindowSize.d.ts +6 -0
  152. package/{src/index.tsx → dist/index.d.ts} +22 -91
  153. package/dist/interfaces/IAppResourceConfig.d.ts +10 -0
  154. package/dist/interfaces/Log.d.ts +15 -0
  155. package/dist/interfaces/Tenant.d.ts +25 -0
  156. package/{src/interfaces/communication/IActions.tsx → dist/interfaces/communication/IActions.d.ts} +1 -2
  157. package/{src/interfaces/communication/INotification.tsx → dist/interfaces/communication/INotification.d.ts} +5 -7
  158. package/{src/interfaces/communication/IPayload.tsx → dist/interfaces/communication/IPayload.d.ts} +1 -1
  159. package/dist/interfaces/communication/IRequestAction.d.ts +10 -0
  160. package/dist/interfaces/communication/IRequestPayload.d.ts +7 -0
  161. package/dist/interfaces/communication/IResponseAction.d.ts +7 -0
  162. package/{src/interfaces/misc/IAny.tsx → dist/interfaces/misc/IAny.d.ts} +1 -1
  163. package/dist/interfaces/misc/IFlashMessage.d.ts +10 -0
  164. package/dist/interfaces/navigation/IAppMenu.d.ts +11 -0
  165. package/dist/interfaces/navigation/ICollapsableSidebarMenu.d.ts +10 -0
  166. package/dist/interfaces/navigation/IMenuItem.d.ts +14 -0
  167. package/{src/interfaces/notifications/IModel.tsx → dist/interfaces/notifications/IModel.d.ts} +1 -2
  168. package/dist/interfaces/notifications/IModelField.d.ts +10 -0
  169. package/dist/interfaces/notifications/IUserNotification.d.ts +11 -0
  170. package/{src/interfaces/notifications/IUserNotificationData.tsx → dist/interfaces/notifications/IUserNotificationData.d.ts} +6 -7
  171. package/dist/interfaces/notifications/IUserNotificationPayload.d.ts +10 -0
  172. package/dist/interfaces/user/IGetAuth.d.ts +75 -0
  173. package/dist/interfaces/user/ITenantSettings.d.ts +3 -0
  174. package/dist/interfaces/user/IUser.d.ts +60 -0
  175. package/dist/interfaces/user/IUserSettings.d.ts +36 -0
  176. package/{src/interfaces.tsx → dist/interfaces.d.ts} +5 -6
  177. package/dist/layout/AppLayout.d.ts +5 -0
  178. package/dist/layout/ApplicationLayout.d.ts +22 -0
  179. package/dist/layout/MotionWrapper.d.ts +22 -0
  180. package/dist/layout/MotionWrapper.original.d.ts +22 -0
  181. package/dist/layout/ResourceMenu.d.ts +7 -0
  182. package/dist/layout/ResoureLayout.d.ts +8 -0
  183. package/dist/layout/TransitionWrapper.d.ts +8 -0
  184. package/dist/pages/ChangePassword.d.ts +6 -0
  185. package/dist/pages/DASHLanding.d.ts +5 -0
  186. package/dist/pages/DASHLightWeightLogin.d.ts +6 -0
  187. package/dist/pages/DASHSimpleLogin.d.ts +6 -0
  188. package/dist/pages/Login.d.ts +3 -0
  189. package/dist/pages/Profile.d.ts +3 -0
  190. package/dist/pages/RecoverPassword.d.ts +3 -0
  191. package/dist/pages/SingleImageUploader.d.ts +8 -0
  192. package/dist/pages/VerifyAccount.d.ts +5 -0
  193. package/dist/providers/authProvider.d.ts +15 -0
  194. package/dist/providers/dataProvider.d.ts +31 -0
  195. package/dist/providers/i18n/en.d.ts +569 -0
  196. package/dist/providers/i18n/es.d.ts +2 -0
  197. package/dist/providers/i18n/languages.d.ts +571 -0
  198. package/dist/providers/i18n/mergeTranslations.d.ts +3 -0
  199. package/dist/providers/i18nProvider.d.ts +2 -0
  200. package/dist/react-admin-dash/RADashComponent.d.ts +7 -0
  201. package/dist/react-admin-dash/Resource.d.ts +16 -0
  202. package/dist/resources/Brand/BrandResource.d.ts +3 -0
  203. package/dist/resources/DASHResourceLoader.d.ts +17 -0
  204. package/dist/resources/Log/LogResource.d.ts +3 -0
  205. package/dist/resources/Tenant/ImpersonateTenantResource.d.ts +5 -0
  206. package/dist/resources/Trash/TrashTemplate.d.ts +3 -0
  207. package/dist/resources/User/components/AvatarUploadField.d.ts +6 -0
  208. package/dist/resources/User/components/PasswordFields.d.ts +8 -0
  209. package/dist/resources/User/getProfileMenu.d.ts +4 -0
  210. package/dist/resources/User/profileResource.d.ts +3 -0
  211. package/dist/resources/User/userLayout.d.ts +2 -0
  212. package/dist/resources/User/userResource.d.ts +3 -0
  213. package/dist/resources/User/userSchema.d.ts +3 -0
  214. package/dist/resources/User/usersFilters.d.ts +3 -0
  215. package/dist/resources.d.ts +11 -0
  216. package/dist/schemas/log.d.ts +3 -0
  217. package/dist/schemas/notification.d.ts +3 -0
  218. package/dist/schemas/permissions.d.ts +3 -0
  219. package/dist/schemas/roles.d.ts +3 -0
  220. package/dist/schemas/rolesDataGrid.d.ts +3 -0
  221. package/dist/schemas/subscription/components/SubscriptionActions.d.ts +4 -0
  222. package/dist/schemas/subscription/components/SubscriptionPaymentHistory.d.ts +4 -0
  223. package/dist/schemas/subscription/components/SubscriptionPlanFeatures.d.ts +4 -0
  224. package/dist/schemas/subscription/components/SubscriptionPlanPreview.d.ts +4 -0
  225. package/dist/schemas/subscription/components/SubscriptionPlanStats.d.ts +4 -0
  226. package/dist/schemas/subscription/components/SubscriptionStatusIndicator.d.ts +4 -0
  227. package/dist/schemas/subscription/subscriptionPlanSchema.d.ts +3 -0
  228. package/dist/schemas/subscription/subscriptionSchema.d.ts +3 -0
  229. package/dist/schemas/subscriptionPlan.d.ts +3 -0
  230. package/dist/schemas/tenant.d.ts +3 -0
  231. package/dist/schemas/tenantUser.d.ts +3 -0
  232. package/dist/schemas/tenant_superadmin.d.ts +3 -0
  233. package/dist/schemas/user.d.ts +3 -0
  234. package/dist/systemResources.d.ts +3 -0
  235. package/dist/systemResources.js +18 -2
  236. package/dist/systemResources.old.d.ts +3 -0
  237. package/dist/templates/ResourceTemplate.d.ts +10 -0
  238. package/dist/templates/ResourceTemplateCreate.d.ts +3 -0
  239. package/dist/templates/ResourceTemplateEdit.d.ts +3 -0
  240. package/dist/templates/ResourceTemplateFull.d.ts +7 -0
  241. package/dist/templates/ResourceTemplateList.d.ts +8 -0
  242. package/dist/templates/ResourceTemplateShow.d.ts +3 -0
  243. package/dist/templates/TrashTemplate.d.ts +3 -0
  244. package/dist/tenantResources.d.ts +3 -0
  245. package/dist/test_portal_bubbles.d.ts +2 -0
  246. package/dist/theme/AppHeader.d.ts +6 -0
  247. package/dist/theme/AppLayoutSetting.d.ts +28 -0
  248. package/dist/theme/AppLogo.d.ts +8 -0
  249. package/dist/theme/AppSidebar.d.ts +7 -0
  250. package/dist/theme/AppSidebarContent.d.ts +12 -0
  251. package/dist/theme/AppSidebarLogo.d.ts +9 -0
  252. package/dist/theme/components/PageTitle.d.ts +10 -0
  253. package/dist/utils/cache/CacheInvalidatorContext.d.ts +25 -0
  254. package/dist/utils/cache/CacheInvalidatorListenerComponent.d.ts +3 -0
  255. package/dist/utils/cache/useCacheInvalidatorListener.d.ts +4 -0
  256. package/dist/utils/convertFileToBase64.d.ts +2 -0
  257. package/dist/utils/convertToFile.d.ts +2 -0
  258. package/dist/utils/cookies.d.ts +5 -0
  259. package/dist/utils/dashDefaultQueryClient.d.ts +3 -0
  260. package/dist/utils/dataUrlToBlob.d.ts +2 -0
  261. package/dist/utils/deepReplace.d.ts +2 -0
  262. package/dist/utils/getProfileMenu.d.ts +3 -0
  263. package/dist/utils/getTenantSettings.d.ts +3 -0
  264. package/dist/utils/getType.d.ts +2 -0
  265. package/dist/utils/getUserSettings.d.ts +3 -0
  266. package/dist/utils/hasCode.d.ts +2 -0
  267. package/dist/utils/index.d.ts +19 -0
  268. package/dist/utils/injectTenantStyles.d.ts +2 -0
  269. package/dist/utils/isComponent.d.ts +2 -0
  270. package/dist/utils/navEvents.d.ts +28 -0
  271. package/dist/utils/regexp.d.ts +1 -0
  272. package/dist/utils/resolveObjectPath.d.ts +2 -0
  273. package/dist/utils/setNativeValue.d.ts +2 -0
  274. package/dist/utils/slugify.d.ts +1 -0
  275. package/dist/utils/validators/emailValidator.d.ts +2 -0
  276. package/dist/utils/validators/requiredValidator.d.ts +2 -0
  277. package/dist/utils/validators/rutValidator.d.ts +2 -0
  278. package/dist/utils/validators.d.ts +3 -0
  279. package/package.json +25 -22
  280. package/src/AppAsyncWrapper.tsx +0 -42
  281. package/src/AppWrapper.tsx +0 -45
  282. package/src/DASHAdmin.tsx +0 -502
  283. package/src/DASHAdmin.tsx.old +0 -456
  284. package/src/RoutingWrapper.tsx +0 -143
  285. package/src/classes/DASHStorageClass.tsx +0 -8
  286. package/src/components/Input/RichTextField.tsx +0 -27
  287. package/src/components/Redirect.tsx +0 -46
  288. package/src/components/avatar/Avatar.tsx +0 -71
  289. package/src/components/avatar/SingleImageUploader.tsx +0 -107
  290. package/src/components/currency/Format.tsx +0 -79
  291. package/src/components/custom/Redirect.tsx +0 -23
  292. package/src/components/error/Error.tsx +0 -168
  293. package/src/components/geocoding/GeocodingField.tsx +0 -167
  294. package/src/components/i18n/BridgedLocalesMenuButton.tsx +0 -160
  295. package/src/components/i18n/LangSwitcher.tsx +0 -204
  296. package/src/components/loader/GlobalLoader.tsx +0 -49
  297. package/src/components/logs/LogFile.tsx +0 -88
  298. package/src/components/logs/LogFileById.tsx +0 -68
  299. package/src/components/logs/LogViewer.tsx +0 -43
  300. package/src/components/menu/AppMenu.tsx +0 -22
  301. package/src/components/menu/CustomMenuItemLink.tsx +0 -61
  302. package/src/components/menu/DarkToggleMode.tsx +0 -65
  303. package/src/components/menu/LanguageToggleMode.tsx +0 -120
  304. package/src/components/misc/CustomImageInput.tsx +0 -62
  305. package/src/components/misc/DASHGlobalErrorHandler.tsx +0 -194
  306. package/src/components/misc/DarkModeSwitcher.tsx +0 -112
  307. package/src/components/misc/HorizontalScroller.tsx +0 -225
  308. package/src/components/misc/LanguageSwitcher.tsx +0 -199
  309. package/src/components/misc/MUIHtmlToolTip.tsx +0 -15
  310. package/src/components/misc/MuiSimpleJsonTable.tsx +0 -279
  311. package/src/components/misc/MultiLevelTable.tsx +0 -229
  312. package/src/components/misc/NoResults.tsx +0 -28
  313. package/src/components/misc/PDFViewer.tsx +0 -85
  314. package/src/components/navigation/Breadcrumbs.tsx +0 -220
  315. package/src/components/navigation/BreadcrumbsManager.tsx +0 -310
  316. package/src/components/panel/Error.tsx +0 -168
  317. package/src/components/permission/AvailablePermissionsContext.tsx +0 -173
  318. package/src/components/permission/PermissionsSelector.tsx +0 -834
  319. package/src/components/permission/PermissionsSelectorList.tsx +0 -473
  320. package/src/components/racustombuttons/CustomRAButton.tsx +0 -87
  321. package/src/components/racustombuttons/QuickButton.tsx +0 -117
  322. package/src/components/racustombuttons/QuickEditButton.tsx +0 -115
  323. package/src/components/racustombuttons/QuickIconButton.tsx +0 -122
  324. package/src/components/scrollbar/Scrollbar.tsx +0 -31
  325. package/src/components/selects/MultiSelect.tsx +0 -53
  326. package/src/components/selects/RASearchableSelect.tsx +0 -282
  327. package/src/components/selects/RASearchableSelectChips.tsx +0 -308
  328. package/src/components/selects/SearchableSelect.tsx +0 -139
  329. package/src/components/serviceAccount/ApiKeyRevealDialog.tsx +0 -129
  330. package/src/components/serviceAccount/ServiceAccountStatusSwitch.tsx +0 -99
  331. package/src/components/subscription/BillingCycleSelectInput.tsx +0 -68
  332. package/src/components/subscription/PlanAddonsSettings.tsx +0 -563
  333. package/src/components/subscription/PlanAuditLog.tsx +0 -453
  334. package/src/components/subscription/PlanFeaturesSettings.tsx +0 -243
  335. package/src/components/subscription/PlanLimitsSettings.tsx +0 -230
  336. package/src/components/subscription/PlanMetadataSettings.tsx +0 -306
  337. package/src/components/subscription/PlanPricesSettings.tsx +0 -307
  338. package/src/components/svgelements/SvgLoading.tsx +0 -229
  339. package/src/components/svgelements/SvgLogo.tsx +0 -53
  340. package/src/components/svgelements/SvgLogoMin.tsx +0 -64
  341. package/src/components/svgelements/SvgShipping.tsx +0 -673
  342. package/src/components/tenancy/GlobalTenantWrapper.tsx +0 -84
  343. package/src/components/tenancy/TenantSwitcher.tsx +0 -514
  344. package/src/components/tenant/SettingsSections.tsx +0 -151
  345. package/src/components/tenant/TenancySettings.tsx +0 -122
  346. package/src/components/tenant/TenantAttributes.tsx +0 -153
  347. package/src/components/tenant/TenantAttributesContext.tsx +0 -163
  348. package/src/components/tenant/TenantSelector.tsx +0 -142
  349. package/src/components/tenant/TenantSettings.tsx +0 -184
  350. package/src/components/tenant/TenantSettingsContext.tsx +0 -165
  351. package/src/components/tenant/TenantTheme.tsx +0 -172
  352. package/src/components/user/AvatarComponent.tsx +0 -317
  353. package/src/components/user/TenantAvatarComponent.tsx +0 -99
  354. package/src/components/user/UserPreferences.tsx +0 -677
  355. package/src/config/ACTIONS.tsx +0 -26
  356. package/src/config/ConstantsService.tsx +0 -44
  357. package/src/config/DASHAdminSystemConstants.tsx +0 -183
  358. package/src/config/PARSERS.tsx +0 -9
  359. package/src/contexts/DashQueryClientContext.tsx +0 -113
  360. package/src/contexts/DashResourceContext.tsx +0 -34
  361. package/src/contexts/I18nBridgeContext.tsx +0 -156
  362. package/src/contexts/I18nBridgeSetter.tsx +0 -39
  363. package/src/contexts/I18nReduxSync.tsx +0 -27
  364. package/src/contexts/SubscriptionPlanFormatsProvider.tsx +0 -217
  365. package/src/contexts/SystemRequestsCache.tsx +0 -215
  366. package/src/contexts/auth/AuthContext.tsx +0 -567
  367. package/src/contexts/auth/AuthContextLocalStorage.tsx +0 -140
  368. package/src/contexts/auth/DASHAuthenticationService.tsx +0 -915
  369. package/src/contexts/auth/WindowContext.tsx +0 -15
  370. package/src/contexts/com/FCMContext.tsx +0 -415
  371. package/src/contexts/com/LaravelEchoContext.tsx +0 -41
  372. package/src/contexts/com/LaravelEchoMgr.tsx +0 -155
  373. package/src/contexts/com/components/DefaultNotificationComponent.tsx +0 -20
  374. package/src/contexts/com/components/EchoNotificationsCenter.tsx +0 -65
  375. package/src/contexts/com/components/NotificationAttributesTable.tsx +0 -54
  376. package/src/contexts/com/components/NotificationRenderer.tsx +0 -42
  377. package/src/contexts/com/components/NotificationsWidget.tsx +0 -182
  378. package/src/contexts/com/components/notificationFormats.tsx +0 -50
  379. package/src/contexts/com/useLaravelEcho.tsx +0 -432
  380. package/src/contexts/dictionary/DictionaryContext.tsx +0 -94
  381. package/src/declarations.d.ts +0 -17
  382. package/src/default-theme/DASHAppProviders.tsx +0 -117
  383. package/src/default-theme/DashThemeContext.tsx +0 -209
  384. package/src/default-theme/DashThemeContext.tsx.fast +0 -143
  385. package/src/default-theme/DashThemeContext.tsx.old +0 -306
  386. package/src/default-theme/DashThemeHelperProvider.tsx +0 -98
  387. package/src/default-theme/DomainAppLayout.tsx +0 -166
  388. package/src/default-theme/DomainHeader.tsx +0 -162
  389. package/src/default-theme/DomainTheme.tsx +0 -59
  390. package/src/default-theme/FullLayoutMarkup.tsx +0 -231
  391. package/src/default-theme/StaticLayout.tsx +0 -47
  392. package/src/default-theme/menu/AppDashboardGrid.tsx +0 -279
  393. package/src/default-theme/menu/AppMaterialMenu.tsx +0 -546
  394. package/src/default-theme/menu/AppMenuComponents/SubmenuPortal.tsx +0 -61
  395. package/src/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItem.tsx +0 -264
  396. package/src/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItems.tsx +0 -31
  397. package/src/default-theme/menu/AppMenuComponents/expanded/CollapsableSidebarMenu.tsx +0 -293
  398. package/src/default-theme/menu/AppMenuComponents/expanded/SidebarItem.tsx +0 -92
  399. package/src/default-theme/menu/AppMenuComponents/getItem.tsx +0 -17
  400. package/src/default-theme/menu/AppMenuComponents/interfaces.tsx +0 -41
  401. package/src/default-theme/menu/AppMenuComponents/submenuConstants.ts +0 -90
  402. package/src/default-theme/menu/AppSidebarMaterial.tsx +0 -339
  403. package/src/default-theme/menu/SidebarActions.tsx +0 -84
  404. package/src/default-theme/updateDomCssVariables.tsx +0 -176
  405. package/src/helpers/checkRole.tsx +0 -66
  406. package/src/helpers/parseAxiosError.tsx +0 -41
  407. package/src/hooks/audio/useAudio.tsx +0 -39
  408. package/src/hooks/axios.tsx +0 -165
  409. package/src/hooks/data/useDashboardStats.tsx +0 -65
  410. package/src/hooks/data/usePackageByClientsStats.tsx +0 -44
  411. package/src/hooks/data/usePackageByCommunesStats.tsx +0 -44
  412. package/src/hooks/data/usePackageStats.tsx +0 -69
  413. package/src/hooks/data/usePackageWithdrawDetails.tsx +0 -61
  414. package/src/hooks/data/useStats.tsx +0 -86
  415. package/src/hooks/isCurrentPath.tsx +0 -22
  416. package/src/hooks/notifications/WSMessagesManager.tsx +0 -152
  417. package/src/hooks/notifications/WSPusherManager.tsx +0 -92
  418. package/src/hooks/useBreadcrumbs.tsx +0 -329
  419. package/src/hooks/useClickOutside.tsx +0 -57
  420. package/src/hooks/useFormPersistance.tsx +0 -150
  421. package/src/hooks/useGlobalErrorMediator.tsx +0 -43
  422. package/src/hooks/useGlobalLoaderMgr.tsx +0 -21
  423. package/src/hooks/useHash.tsx +0 -27
  424. package/src/hooks/useLocalStorage.tsx +0 -196
  425. package/src/hooks/usePolyglotTranslation.tsx +0 -62
  426. package/src/hooks/usePrevious.tsx +0 -9
  427. package/src/hooks/usePrintSelected.tsx +0 -37
  428. package/src/hooks/useVirtualHash.tsx +0 -33
  429. package/src/hooks/window/useWindowSize.tsx +0 -36
  430. package/src/interfaces/IAppResourceConfig.tsx +0 -20
  431. package/src/interfaces/Log.tsx +0 -16
  432. package/src/interfaces/Tenant.tsx +0 -25
  433. package/src/interfaces/communication/IRequestAction.tsx +0 -10
  434. package/src/interfaces/communication/IRequestPayload.tsx +0 -7
  435. package/src/interfaces/communication/IResponseAction.tsx +0 -7
  436. package/src/interfaces/misc/IFlashMessage.tsx +0 -10
  437. package/src/interfaces/navigation/IAppMenu.ts +0 -14
  438. package/src/interfaces/navigation/ICollapsableSidebarMenu.ts +0 -12
  439. package/src/interfaces/navigation/IMenuItem.ts +0 -16
  440. package/src/interfaces/notifications/IModelField.tsx +0 -8
  441. package/src/interfaces/notifications/IUserNotification.tsx +0 -12
  442. package/src/interfaces/notifications/IUserNotificationPayload.tsx +0 -8
  443. package/src/interfaces/user/IGetAuth.tsx +0 -92
  444. package/src/interfaces/user/ITenantSettings.tsx +0 -3
  445. package/src/interfaces/user/IUser.tsx +0 -60
  446. package/src/interfaces/user/IUserSettings.tsx +0 -43
  447. package/src/layout/AppLayout.tsx +0 -112
  448. package/src/layout/ApplicationLayout.tsx +0 -197
  449. package/src/layout/MotionWrapper.original.tsx +0 -236
  450. package/src/layout/MotionWrapper.tsx +0 -236
  451. package/src/layout/ResourceMenu.tsx +0 -164
  452. package/src/layout/ResoureLayout.tsx +0 -105
  453. package/src/layout/TransitionWrapper.tsx +0 -125
  454. package/src/pages/ChangePassword.tsx +0 -179
  455. package/src/pages/DASHLanding.tsx +0 -22
  456. package/src/pages/DASHLightWeightLogin.tsx +0 -611
  457. package/src/pages/DASHSimpleLogin.tsx +0 -260
  458. package/src/pages/Login.tsx +0 -111
  459. package/src/pages/Profile.tsx +0 -357
  460. package/src/pages/RecoverPassword.tsx +0 -175
  461. package/src/pages/SingleImageUploader.tsx +0 -55
  462. package/src/pages/VerifyAccount.tsx +0 -128
  463. package/src/providers/authProvider.tsx +0 -217
  464. package/src/providers/dataProvider.tsx +0 -672
  465. package/src/providers/i18n/en.ts +0 -646
  466. package/src/providers/i18n/es.ts +0 -652
  467. package/src/providers/i18n/languages.tsx +0 -8
  468. package/src/providers/i18n/mergeTranslations.ts +0 -53
  469. package/src/providers/i18nProvider.tsx +0 -23
  470. package/src/react-admin-dash/RADashComponent.tsx +0 -240
  471. package/src/react-admin-dash/Resource.tsx +0 -77
  472. package/src/resources/Brand/BrandResource.tsx +0 -130
  473. package/src/resources/DASHResourceLoader.ts +0 -180
  474. package/src/resources/Log/LogResource.tsx +0 -73
  475. package/src/resources/Tenant/ImpersonateTenantResource.tsx +0 -113
  476. package/src/resources/Trash/TrashTemplate.tsx +0 -180
  477. package/src/resources/User/components/AvatarUploadField.tsx +0 -57
  478. package/src/resources/User/components/PasswordFields.tsx +0 -73
  479. package/src/resources/User/getProfileMenu.ts +0 -57
  480. package/src/resources/User/profileResource.tsx +0 -51
  481. package/src/resources/User/userLayout.tsx +0 -62
  482. package/src/resources/User/userResource.tsx +0 -111
  483. package/src/resources/User/userSchema.tsx +0 -213
  484. package/src/resources/User/usersFilters.tsx +0 -21
  485. package/src/resources.tsx +0 -280
  486. package/src/schemas/log.tsx +0 -45
  487. package/src/schemas/notification.tsx +0 -42
  488. package/src/schemas/permissions.tsx +0 -44
  489. package/src/schemas/roles.tsx +0 -48
  490. package/src/schemas/rolesDataGrid.tsx +0 -48
  491. package/src/schemas/subscription/components/SubscriptionActions.tsx +0 -153
  492. package/src/schemas/subscription/components/SubscriptionPaymentHistory.tsx +0 -127
  493. package/src/schemas/subscription/components/SubscriptionPlanFeatures.tsx +0 -162
  494. package/src/schemas/subscription/components/SubscriptionPlanPreview.tsx +0 -141
  495. package/src/schemas/subscription/components/SubscriptionPlanStats.tsx +0 -318
  496. package/src/schemas/subscription/components/SubscriptionStatusIndicator.tsx +0 -72
  497. package/src/schemas/subscription/subscriptionPlanSchema.tsx +0 -185
  498. package/src/schemas/subscription/subscriptionSchema.tsx +0 -152
  499. package/src/schemas/subscriptionPlan.ts +0 -422
  500. package/src/schemas/tenant.tsx +0 -129
  501. package/src/schemas/tenantUser.tsx +0 -96
  502. package/src/schemas/tenant_superadmin.tsx +0 -119
  503. package/src/schemas/user.tsx +0 -26
  504. package/src/systemResources.old.tsx +0 -928
  505. package/src/systemResources.tsx +0 -1369
  506. package/src/templates/ResourceTemplate.tsx +0 -240
  507. package/src/templates/ResourceTemplate.tsx.memoized_experiment +0 -350
  508. package/src/templates/ResourceTemplate.tsx.original +0 -396
  509. package/src/templates/ResourceTemplateCreate.tsx +0 -182
  510. package/src/templates/ResourceTemplateEdit.tsx +0 -176
  511. package/src/templates/ResourceTemplateFull.tsx +0 -581
  512. package/src/templates/ResourceTemplateList.tsx +0 -340
  513. package/src/templates/ResourceTemplateOld.tsx.bkup +0 -567
  514. package/src/templates/ResourceTemplateShow.tsx +0 -88
  515. package/src/templates/TrashTemplate.tsx +0 -179
  516. package/src/tenantResources.tsx +0 -223
  517. package/src/test_portal_bubbles.tsx +0 -40
  518. package/src/theme/AppHeader.tsx +0 -52
  519. package/src/theme/AppLayoutSetting.tsx +0 -33
  520. package/src/theme/AppLogo.tsx +0 -13
  521. package/src/theme/AppSidebar.tsx +0 -12
  522. package/src/theme/AppSidebarContent.tsx +0 -105
  523. package/src/theme/AppSidebarLogo.tsx +0 -48
  524. package/src/theme/components/PageTitle.tsx +0 -37
  525. package/src/utils/cache/CacheInvalidatorContext.tsx +0 -125
  526. package/src/utils/cache/CacheInvalidatorListenerComponent.tsx +0 -10
  527. package/src/utils/cache/useCacheInvalidatorListener.tsx +0 -27
  528. package/src/utils/convertFileToBase64.tsx +0 -9
  529. package/src/utils/convertToFile.tsx +0 -14
  530. package/src/utils/cookies.tsx +0 -33
  531. package/src/utils/dashDefaultQueryClient.tsx +0 -34
  532. package/src/utils/dataUrlToBlob.tsx +0 -30
  533. package/src/utils/deepReplace.tsx +0 -19
  534. package/src/utils/getProfileMenu.tsx +0 -41
  535. package/src/utils/getTenantSettings.tsx +0 -9
  536. package/src/utils/getType.tsx +0 -8
  537. package/src/utils/getUserSettings.tsx +0 -8
  538. package/src/utils/hasCode.tsx +0 -14
  539. package/src/utils/index.ts +0 -19
  540. package/src/utils/injectTenantStyles.ts +0 -28
  541. package/src/utils/isComponent.tsx +0 -45
  542. package/src/utils/navEvents.tsx +0 -91
  543. package/src/utils/prototypes.tsx +0 -5
  544. package/src/utils/regexp.tsx +0 -4
  545. package/src/utils/resolveObjectPath.tsx +0 -4
  546. package/src/utils/setNativeValue.tsx +0 -24
  547. package/src/utils/slugify.tsx +0 -11
  548. package/src/utils/validators/emailValidator.tsx +0 -6
  549. package/src/utils/validators/requiredValidator.tsx +0 -5
  550. package/src/utils/validators/rutValidator.tsx +0 -31
  551. package/src/utils/validators.tsx +0 -96
  552. /package/{src/components/permission/tsx → dist/components/tenant/AvailablePermissionsContext.d.ts} +0 -0
  553. /package/{src/components/tenant/AvailablePermissionsContext.tsx → dist/utils/prototypes.d.ts} +0 -0
@@ -1,84 +0,0 @@
1
- /**
2
- * GlobalTenantWrapper
3
- *
4
- * Tenant Data Fetcher Component that runs inside DashThemeProvider — takes
5
- * tenant data (fetched by a mall/self-service session flow, before any user
6
- * authentication exists) and:
7
- * - Sets panel-settings logos in Redux from the tenant's images
8
- * - Recreates the MUI theme from the tenant's theme settings
9
- * - Persists a "public" auth shape (tenant only, no user) via
10
- * AuthPersistenceService, so the rest of the app can read tenant context
11
- *
12
- * Consolidated 2026-08-03 from seven byte-identical app-level copies. Two of
13
- * its five real consumers (kitchntabs-app's and vanexa-app's
14
- * kt-kiosk/components/MallClientWrapper.tsx) had a stale, commented-out
15
- * import with a wrong path — GlobalTenantWrapper was referenced in JSX but
16
- * never actually imported, a pre-existing bug fixed as part of repointing
17
- * those call sites here.
18
- */
19
- import { AuthPersistenceService } from "dash-auth";
20
- import { DASH_REDUX_ACTIONS } from "dash-admin-state";
21
- import { useDispatch } from "react-redux";
22
- import DashThemeContext from '../../default-theme/DashThemeContext';
23
- import React, { PropsWithChildren, useEffect } from "react";
24
-
25
- export interface IGlobalTenantWrapper extends PropsWithChildren {
26
- tenantData?: any;
27
- }
28
-
29
- // Tenant Data Fetcher Component that runs inside DashThemeProvider
30
- const GlobalTenantWrapper: React.FC<IGlobalTenantWrapper> = (props) => {
31
- const {
32
- tenantData = null,
33
- children
34
- } = props;
35
-
36
- const dispatch = useDispatch();
37
- const themeContext = React.useContext(DashThemeContext);
38
- const recreateTheme = themeContext?.recreateTheme;
39
-
40
- useEffect(() => {
41
- if (!tenantData) {
42
- // No data to process
43
- return;
44
- }
45
-
46
- // Process tenant images for panel settings
47
- if (tenantData.tenantImages) {
48
- const logos = {
49
- ...(tenantData.tenantImages.horizontal_logo?.original && {
50
- horizontalLogo: tenantData.tenantImages.horizontal_logo.original
51
- }),
52
- ...(tenantData.tenantImages.squared_logo?.original && {
53
- squaredLogo: tenantData.tenantImages.squared_logo.original
54
- }),
55
- ...(tenantData.tenantImages.banner?.original && {
56
- loginBackground: tenantData.tenantImages.banner.original
57
- })
58
- };
59
- dispatch(DASH_REDUX_ACTIONS.setPanelSettings(logos));
60
- }
61
-
62
- // Process tenant settings for theme
63
- if (tenantData.tenantSettings && recreateTheme) {
64
- recreateTheme(tenantData.tenantSettings);
65
- }
66
-
67
- // Store tenant data for persistence (without user authentication)
68
- const publicAuthData = {
69
- auth: {
70
- tenantImages: tenantData.tenantImages,
71
- tenantSettings: tenantData.tenantSettings,
72
- tenant: tenantData.tenant,
73
- },
74
- systemValues: tenantData.systemValues
75
- };
76
-
77
- AuthPersistenceService.saveAuth(publicAuthData);
78
-
79
- }, [tenantData]);
80
-
81
- return <></>;
82
- }
83
-
84
- export default GlobalTenantWrapper;
@@ -1,514 +0,0 @@
1
- /**
2
- * TenantSwitcher
3
- *
4
- * A dropdown component that allows switching between the Tenancy Account and
5
- * individual Tenants. It reads the available tenants from the persisted
6
- * systemValues (populated by the tenancyAuth endpoint) and allows the user
7
- * to select one, triggering a full environment switch:
8
- *
9
- * - Persists the selected tenant_id to dashStorage
10
- * - Dispatches a 'tenant_switch' CustomEvent so the PrivateAppLoader can
11
- * reload the correct resources, routes, and auth data
12
- * - Re-fetches the appropriate getAuth endpoint (tenancyAuth vs getauth)
13
- * - Updates CSS variables and logos from the new tenant's settings
14
- *
15
- * Consolidated 2026-08-03 from four byte-identical app-level copies
16
- * (kitchntabs-app, kitchntabs-web, vanexa-app, vanexa-web). The only per-app
17
- * difference was which local brand assets each app fell back to when
18
- * switching back to the tenancy level — that's now the defaultHorizontalLogo/
19
- * defaultSquaredLogo/defaultLoginBackground props instead of hardcoded
20
- * relative imports (a relative image import moved into this package would
21
- * have resolved against dash-admin's own assets, not each app's brand).
22
- */
23
- import React, { useState, useRef, useEffect, useCallback } from 'react';
24
- import {
25
- Avatar,
26
- Box,
27
- Typography,
28
- CircularProgress,
29
- } from '@mui/material';
30
- import BusinessIcon from '@mui/icons-material/Business';
31
- import StoreIcon from '@mui/icons-material/Store';
32
- import SwapHorizIcon from '@mui/icons-material/SwapHoriz';
33
- import ReactDOM from 'react-dom';
34
- import { dashStorage } from 'dash-utils';
35
- import { AuthPersistenceService } from 'dash-auth';
36
- import { DASHAdminSystemConstants } from 'dash-constants';
37
- import { useAxios } from 'dash-axios-hook';
38
- import { updateDomCssVariables } from 'dash-utils';
39
- import DASHLayoutSettings from '../../theme/AppLayoutSetting';
40
- import { useDispatch, useSelector } from 'react-redux';
41
- import { setPanelSettings } from 'dash-admin-state/redux/actions/Common';
42
- import { IDASHAppState } from 'dash-admin-state';
43
- import { useWindowSize } from 'dash-utils';
44
- import { setAuthEvent } from '../../contexts/auth';
45
- import useClickOutside from '../../hooks/useClickOutside';
46
-
47
- export interface TenantSwitcherProps {
48
- /** Fallback horizontal logo used when switching back to the tenancy level */
49
- defaultHorizontalLogo?: string;
50
- /** Fallback squared logo used when switching back to the tenancy level */
51
- defaultSquaredLogo?: string;
52
- /** Fallback login background used when switching back to the tenancy level */
53
- defaultLoginBackground?: string;
54
- }
55
-
56
- /** Shape of a tenant from systemValues.tenants */
57
- interface TenantOption {
58
- id: string;
59
- name: string;
60
- slug: string | null;
61
- }
62
-
63
- /** The value emitted in the tenant_switch CustomEvent */
64
- export interface TenantSwitchEventDetail {
65
- tenantId: string | null; // null = tenancy account level
66
- tenantName: string;
67
- isTenanancyLevel: boolean;
68
- }
69
-
70
- /**
71
- * Dispatch a tenant_switch event so other parts of the app can react.
72
- */
73
- export const dispatchTenantSwitchEvent = (detail: TenantSwitchEventDetail) => {
74
- window.dispatchEvent(new CustomEvent('tenant_switch', { detail }));
75
- };
76
-
77
- /**
78
- * Get the currently active tenant_id from storage (null = tenancy level).
79
- */
80
- export const getActiveTenantId = (): string | null => {
81
- if (!isTenantImpersonationEnabled()) {
82
- return null;
83
- }
84
- return dashStorage.getItem('active_tenant_id') || null;
85
- };
86
-
87
- /**
88
- * Check whether tenant impersonation is enabled.
89
- */
90
- export const isTenantImpersonationEnabled = (): boolean => {
91
- const val = DASHAdminSystemConstants.system.ENABLE_TENANT_IMPERSONATION;
92
- if (typeof val === 'boolean') return val;
93
- if (typeof val === 'string') return val === 'true' || val === '1';
94
- return !!val;
95
- };
96
-
97
-
98
-
99
- const TenantSwitcher: React.FC<TenantSwitcherProps> = ({
100
- defaultHorizontalLogo,
101
- defaultSquaredLogo,
102
- defaultLoginBackground,
103
- }) => {
104
- const axios = useAxios();
105
- const dispatch = useDispatch();
106
- const windowSize = useWindowSize();
107
-
108
-
109
-
110
- const [open, setOpen] = useState(false);
111
- const [switching, setSwitching] = useState(false);
112
- const avatarRef = useRef<HTMLDivElement>(null);
113
- const menuRef = useRef<HTMLDivElement>(null);
114
- const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 });
115
- const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
116
- const [webView, setWebView] = useState(false);
117
-
118
- // Current active tenant id
119
- const [activeTenantId, setActiveTenantId] = useState<string | null>(
120
- getActiveTenantId()
121
- );
122
-
123
- // Read panel settings for logos
124
- const panelSettings = useSelector(
125
- (state: IDASHAppState<any, any, any>) => state.common?.panelSettings
126
- );
127
-
128
- // Get primary and secondary sidebar positions from Redux panelSettings
129
- const sidebarPosition = panelSettings?.sidebarPosition || 'left';
130
-
131
- // Get tenants from persisted systemValues
132
- const systemValues = AuthPersistenceService.getSystemValues();
133
- const tenants: TenantOption[] = systemValues?.tenants || [];
134
- const tenancy = systemValues?.tenancy;
135
-
136
- // Get current tenant auth data for display
137
- const auth = AuthPersistenceService.getAuth();
138
- const currentTenantName = activeTenantId
139
- ? tenants.find(t => t.id === activeTenantId)?.name || 'Tenant'
140
- : tenancy?.public_name || auth?.tenant?.name || 'Tenancy Account';
141
-
142
- useEffect(() => {
143
- if (document.body.classList.contains('webview')) {
144
- setWebView(true);
145
- }
146
- }, []);
147
-
148
- // Close on click/tap outside the trigger AND the portal-rendered menu
149
- // (both refs — the menu isn't a DOM descendant of the trigger since it's
150
- // rendered via createPortal). Declared above the early-return guard
151
- // below, alongside the component's other hooks, so hook order stays
152
- // stable across renders regardless of whether that guard ends up
153
- // returning null.
154
- useClickOutside([avatarRef, menuRef], () => setOpen(false), open);
155
-
156
- // Don't render if impersonation is disabled or no tenants available
157
- if (!isTenantImpersonationEnabled() || tenants.length === 0) {
158
- return null;
159
- }
160
-
161
- const calculateMenuPosition = () => {
162
- if (avatarRef.current && windowSize.width && windowSize.height) {
163
- const rect = avatarRef.current.getBoundingClientRect();
164
- const menuWidth = 230; // minWidth from styles
165
- const menuHeight = 120; // approximate menu height
166
-
167
- let left = rect.left + window.scrollX;
168
- let top = rect.top + window.scrollY;
169
-
170
- // Ensure menu doesn't go off-screen horizontally
171
- if (left + menuWidth > windowSize.width) {
172
- left = windowSize.width - menuWidth - 10; // 10px margin
173
- }
174
- if (left < 10) {
175
- left = 10; // 10px margin
176
- }
177
-
178
- // For bottom sidebar position, open menu above the avatar
179
- if (sidebarPosition === 'bottom') {
180
- top = rect.top + window.scrollY - menuHeight - 10; // Open above
181
- }
182
-
183
- setMenuPosition({
184
- top: top,
185
- left: left + 40
186
- });
187
- }
188
- };
189
-
190
- const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {
191
- e.preventDefault();
192
- if (timeoutRef.current) {
193
- clearTimeout(timeoutRef.current);
194
- timeoutRef.current = null;
195
- }
196
- setOpen(true);
197
- calculateMenuPosition();
198
- };
199
-
200
- const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {
201
- e.preventDefault();
202
- setOpen(prev => !prev);
203
- calculateMenuPosition();
204
- };
205
-
206
- const handleMouseLeave = () => {
207
- if (!webView) {
208
- timeoutRef.current = setTimeout(() => setOpen(false), 150);
209
- }
210
- };
211
-
212
- const handleMenuMouseEnter = () => {
213
- if (timeoutRef.current) {
214
- clearTimeout(timeoutRef.current);
215
- timeoutRef.current = null;
216
- }
217
- };
218
-
219
- const handleMenuMouseLeave = () => {
220
- if (!webView) {
221
- setOpen(false);
222
- }
223
- };
224
-
225
- useEffect(() => {
226
- return () => {
227
- if (timeoutRef.current) clearTimeout(timeoutRef.current);
228
- };
229
- }, []);
230
-
231
- useEffect(() => {
232
- if (open) calculateMenuPosition();
233
- }, [open, windowSize.width]);
234
-
235
- /**
236
- * Core switching logic.
237
- * - Always uses tenancyAuth endpoint (preserves tenancy/tenants in response)
238
- * - Passes X-Tenant-Id header when switching to a specific tenant
239
- * - Persists auth data
240
- * - Updates CSS variables, logos
241
- * - Dispatches tenant_switch event for PrivateAppLoader
242
- */
243
- const handleSwitch = useCallback(async (tenantId: string | null) => {
244
- if (switching) return;
245
- if (tenantId === activeTenantId) {
246
- setOpen(false);
247
- return;
248
- }
249
-
250
- setSwitching(true);
251
- setOpen(false);
252
-
253
- try {
254
- const isTenancyLevel = tenantId === null;
255
- // Always use tenancyAuth - it returns tenancy/tenants list + respects
256
- // X-Tenant-Id header. Deliberately NOT reading APP_GETAUTH_ENDPOINT
257
- // here (every app's env has it set to 'auth/getauth') — that
258
- // endpoint ignores X-Tenant-Id entirely and always resolves off the
259
- // user's raw tenant_id FK, so every switch silently kept returning
260
- // the same tenant's data regardless of which one was picked. This
261
- // component only ever renders once TenancyContextService has
262
- // already put at least one tenant in scope (see the render guard
263
- // below), so hitting the TenancyAdmin-only endpoint unconditionally
264
- // is always correct here.
265
- const authEndpoint = 'auth/tenancyAuth';
266
-
267
- // If switching to a specific tenant, set the header so backend knows
268
- const headers: Record<string, string> = {};
269
- if (!isTenancyLevel && tenantId) {
270
- headers['X-Tenant-Id'] = tenantId;
271
- }
272
-
273
- // Persist active_tenant_id BEFORE the request so the axios interceptor picks it up
274
- if (tenantId) {
275
- dashStorage.setItem('active_tenant_id', tenantId);
276
- dashStorage.setItem('tenant_id', tenantId);
277
- } else {
278
- dashStorage.removeItem('active_tenant_id');
279
- dashStorage.removeItem('tenant_id');
280
- }
281
-
282
- // Persist the choice server-side so it survives a reload and
283
- // shows up on another device — not just in this browser's
284
- // storage. Best-effort: a failed write here still leaves the
285
- // switch working for the rest of this session via the local
286
- // storage above, it just won't be remembered next time.
287
- try {
288
- await axios.put('auth/active-tenant', { tenant_id: tenantId });
289
- } catch (err) {
290
- console.error('[TenantSwitcher] Failed to persist active tenant:', err);
291
- }
292
-
293
- // Fetch new auth data from the correct endpoint
294
- const { data: authData } = await axios.get(authEndpoint, { headers });
295
-
296
- // Persist auth data using the standard service
297
- AuthPersistenceService.saveAuth(authData);
298
-
299
- // Update basic localStorage for react-admin compatibility
300
- dashStorage.setItem('authenticated', 'true');
301
- dashStorage.setItem('user', JSON.stringify(authData.user));
302
- if (authData.user?.roles) {
303
- dashStorage.setItem('roles', JSON.stringify(authData.user.roles));
304
- }
305
-
306
- // Trigger auth context update
307
- setAuthEvent({
308
- authenticated: true,
309
- user: authData.user,
310
- auth: authData.auth,
311
- token: dashStorage.getItem('token'),
312
- roles: authData.user?.roles,
313
- });
314
-
315
- // Update CSS variables from new tenant settings
316
- const tenantSettings = authData.auth?.tenantSettings;
317
- try {
318
-
319
- // Read current theme mode instead of hardcoding 'dark'
320
- const currentThemeMode = document.documentElement.getAttribute('data-theme') || DASHLayoutSettings.THEME_TYPE_DARK;
321
- // Always call updateDomCssVariables — when colors is undefined,
322
- // it correctly resets to compiled LESS defaults for tenants without custom colors.
323
- updateDomCssVariables(currentThemeMode, tenantSettings?.colors, tenantSettings?.values);
324
- } catch (err) {
325
- console.error('[TenantSwitcher] Error updating CSS variables:', err);
326
- }
327
-
328
- // Update logos in Redux panel settings
329
- const tenantImages = authData.auth?.tenantImages;
330
- if (tenantImages) {
331
- AuthPersistenceService.setTenantImages(tenantImages);
332
- dispatch(setPanelSettings({
333
- ...(panelSettings || {}),
334
- horizontalLogo: tenantImages.horizontal_logo?.original || panelSettings?.horizontalLogo,
335
- squaredLogo: tenantImages.squared_logo?.original || panelSettings?.squaredLogo,
336
- loginBackground: tenantImages.banner?.original || panelSettings?.loginBackground,
337
- }));
338
- } else {
339
- // Switching to tenancy level — clear stale tenant images
340
- // and reset Redux logos to system defaults
341
- AuthPersistenceService.clearTenantImages();
342
- dispatch(setPanelSettings({
343
- ...(panelSettings || {}),
344
- horizontalLogo: defaultHorizontalLogo,
345
- squaredLogo: defaultSquaredLogo,
346
- loginBackground: defaultLoginBackground,
347
- }));
348
- }
349
-
350
- // Update tenant settings in persistence
351
- if (tenantSettings) {
352
- AuthPersistenceService.setTenantSettings(tenantSettings);
353
- } else {
354
- // Switching to tenancy level — clear stale tenant settings
355
- // so DashThemeProvider reads null on remount and uses defaults
356
- AuthPersistenceService.clearTenantSettings();
357
- }
358
-
359
- setActiveTenantId(tenantId);
360
-
361
- // Find tenant name for event
362
- const tenantName = isTenancyLevel
363
- ? (tenancy?.public_name || 'Tenancy Account')
364
- : (tenants.find(t => t.id === tenantId)?.name || 'Tenant');
365
-
366
- // Dispatch switch event so PrivateAppLoader can reload resources
367
- dispatchTenantSwitchEvent({
368
- tenantId,
369
- tenantName,
370
- isTenanancyLevel: isTenancyLevel,
371
- });
372
-
373
- console.log(`[TenantSwitcher] Switched to ${isTenancyLevel ? 'Tenancy Account' : tenantName} (${tenantId})`);
374
-
375
- } catch (error) {
376
- console.error('[TenantSwitcher] Switch failed:', error);
377
- // Revert storage on failure
378
- if (activeTenantId) {
379
- dashStorage.setItem('active_tenant_id', activeTenantId);
380
- dashStorage.setItem('tenant_id', activeTenantId);
381
- } else {
382
- dashStorage.removeItem('active_tenant_id');
383
- dashStorage.removeItem('tenant_id');
384
- }
385
- } finally {
386
- setSwitching(false);
387
- }
388
- }, [activeTenantId, switching, axios, dispatch, panelSettings, tenants, tenancy, defaultHorizontalLogo, defaultSquaredLogo, defaultLoginBackground]);
389
-
390
- const isSelected = (id: string | null) => id === activeTenantId;
391
-
392
- return (
393
- <>
394
- <div
395
- ref={avatarRef}
396
- className="dash-tenant-switcher-trigger"
397
- {...(!webView
398
- ? { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }
399
- : { onClick: handleClick }
400
- )}
401
- style={{ cursor: 'pointer', display: 'flex', alignItems: 'center' }}
402
- >
403
- {switching ? (
404
- <CircularProgress
405
- className='dash-icon-button-color dash-icon-button-bg'
406
- size={30} />
407
- ) : (
408
- <Avatar
409
- className='dash-icon-button-color dash-icon-button-bg'
410
- sx={{
411
- width: 30,
412
- height: 30,
413
- fontSize: '0.8rem',
414
- }}
415
- >
416
- {activeTenantId ? <StoreIcon sx={{ fontSize: 18 }} /> : <BusinessIcon sx={{ fontSize: 18 }} />}
417
- </Avatar>
418
- )}
419
- </div>
420
-
421
- {open && ReactDOM.createPortal(
422
- <div
423
- ref={menuRef}
424
- className="dash-tenant-switcher-portal"
425
- onMouseEnter={!webView ? handleMenuMouseEnter : undefined}
426
- onMouseLeave={!webView ? handleMenuMouseLeave : undefined}
427
- >
428
- <div
429
- className="dash-tenant-switcher-menu"
430
- style={{
431
- top: menuPosition.top,
432
- left: menuPosition.left,
433
- zIndex: 10000,
434
- position: 'absolute',
435
- }}
436
- >
437
- {/* Header */}
438
- <Box sx={{ px: 2, py: 1.5, borderBottom: '1px solid rgba(255,255,255,0.08)' }}>
439
- <Typography variant="caption" sx={{ color: 'text.secondary', fontWeight: 600, textTransform: 'uppercase', letterSpacing: 0.5 }}>
440
- <SwapHorizIcon sx={{ fontSize: 14, mr: 0.5, verticalAlign: 'middle' }} />
441
- Switch Environment
442
- </Typography>
443
- </Box>
444
-
445
- {/* Tenancy Account option */}
446
- <div
447
- onClick={() => handleSwitch(null)}
448
- style={{
449
- padding: '10px 16px',
450
- cursor: 'pointer',
451
- display: 'flex',
452
- alignItems: 'center',
453
- gap: 10,
454
- backgroundColor: isSelected(null) ? 'rgba(var(--dash-primary-rgb, 25, 118, 210), 0.15)' : 'transparent',
455
- borderLeft: isSelected(null) ? '3px solid var(--dash-primary, #1976d2)' : '3px solid transparent',
456
- transition: 'background-color 0.15s ease',
457
- }}
458
- onMouseOver={(e) => { if (!isSelected(null)) (e.currentTarget.style.backgroundColor = 'rgba(255,255,255,0.05)'); }}
459
- onMouseOut={(e) => { if (!isSelected(null)) (e.currentTarget.style.backgroundColor = 'transparent'); }}
460
- >
461
- <BusinessIcon sx={{ fontSize: 20, color: isSelected(null) ? 'primary.main' : 'text.secondary' }} />
462
- <Box>
463
- <Typography variant="body2" sx={{ fontWeight: isSelected(null) ? 600 : 400, color: isSelected(null) ? 'primary.main' : 'text.primary' }}>
464
- {tenancy?.public_name || 'Tenancy Account'}
465
- </Typography>
466
- <Typography variant="caption" sx={{ color: 'text.secondary' }}>
467
- Manager Account
468
- </Typography>
469
- </Box>
470
- </div>
471
-
472
- {/* Divider */}
473
- <Box sx={{ borderTop: '1px solid rgba(255,255,255,0.06)', mx: 1 }} />
474
-
475
- {/* Tenant options */}
476
- {tenants.map((tenant) => (
477
- <div
478
- key={tenant.id}
479
- onClick={() => handleSwitch(tenant.id)}
480
- style={{
481
- padding: '10px 16px',
482
- cursor: 'pointer',
483
- display: 'flex',
484
- alignItems: 'center',
485
- gap: 10,
486
- backgroundColor: isSelected(tenant.id) ? 'rgba(var(--dash-primary-rgb, 25, 118, 210), 0.15)' : 'transparent',
487
- borderLeft: isSelected(tenant.id) ? '3px solid var(--dash-primary, #1976d2)' : '3px solid transparent',
488
- transition: 'background-color 0.15s ease',
489
- }}
490
- onMouseOver={(e) => { if (!isSelected(tenant.id)) (e.currentTarget.style.backgroundColor = 'rgba(255,255,255,0.05)'); }}
491
- onMouseOut={(e) => { if (!isSelected(tenant.id)) (e.currentTarget.style.backgroundColor = 'transparent'); }}
492
- >
493
- <StoreIcon sx={{ fontSize: 20, color: isSelected(tenant.id) ? 'primary.main' : 'text.secondary' }} />
494
- <Box>
495
- <Typography variant="body2" sx={{ fontWeight: isSelected(tenant.id) ? 600 : 400, color: isSelected(tenant.id) ? 'primary.main' : 'text.primary' }}>
496
- {tenant.name}
497
- </Typography>
498
- {tenant.slug && (
499
- <Typography variant="caption" sx={{ color: 'text.secondary' }}>
500
- {tenant.slug}
501
- </Typography>
502
- )}
503
- </Box>
504
- </div>
505
- ))}
506
- </div>
507
- </div>,
508
- document.body
509
- )}
510
- </>
511
- );
512
- };
513
-
514
- export default TenantSwitcher;