@jmruthers/pace-core 0.5.143 → 0.5.145

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 (136) hide show
  1. package/dist/{DataTable-SKCX4SCB.js → DataTable-AKZ6GRWF.js} +3 -3
  2. package/dist/{chunk-VOJBGZYI.js → chunk-4LTN3DVN.js} +35 -7
  3. package/dist/chunk-4LTN3DVN.js.map +1 -0
  4. package/dist/{chunk-VP44VQJ6.js → chunk-E2LWA55X.js} +35 -17
  5. package/dist/chunk-E2LWA55X.js.map +1 -0
  6. package/dist/{chunk-SFVL7ZFI.js → chunk-NVVYDA5H.js} +2 -2
  7. package/dist/{chunk-E6ZCVF4T.js → chunk-WBK6ZKTF.js} +2 -2
  8. package/dist/components.js +3 -3
  9. package/dist/index.js +4 -4
  10. package/dist/rbac/index.js +2 -2
  11. package/dist/utils.js +1 -1
  12. package/docs/api/classes/ColumnFactory.md +1 -1
  13. package/docs/api/classes/ErrorBoundary.md +1 -1
  14. package/docs/api/classes/InvalidScopeError.md +1 -1
  15. package/docs/api/classes/MissingUserContextError.md +1 -1
  16. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  17. package/docs/api/classes/PermissionDeniedError.md +1 -1
  18. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  19. package/docs/api/classes/RBACAuditManager.md +1 -1
  20. package/docs/api/classes/RBACCache.md +1 -1
  21. package/docs/api/classes/RBACEngine.md +1 -1
  22. package/docs/api/classes/RBACError.md +1 -1
  23. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  24. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  25. package/docs/api/classes/StorageUtils.md +1 -1
  26. package/docs/api/enums/FileCategory.md +1 -1
  27. package/docs/api/interfaces/AggregateConfig.md +1 -1
  28. package/docs/api/interfaces/BadgeProps.md +1 -1
  29. package/docs/api/interfaces/ButtonProps.md +1 -1
  30. package/docs/api/interfaces/CalendarProps.md +1 -1
  31. package/docs/api/interfaces/CardProps.md +1 -1
  32. package/docs/api/interfaces/ColorPalette.md +1 -1
  33. package/docs/api/interfaces/ColorShade.md +1 -1
  34. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  35. package/docs/api/interfaces/DataRecord.md +1 -1
  36. package/docs/api/interfaces/DataTableAction.md +1 -1
  37. package/docs/api/interfaces/DataTableColumn.md +1 -1
  38. package/docs/api/interfaces/DataTableProps.md +1 -1
  39. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  40. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  41. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  42. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  43. package/docs/api/interfaces/EventLogoProps.md +1 -1
  44. package/docs/api/interfaces/ExportColumn.md +1 -1
  45. package/docs/api/interfaces/ExportOptions.md +1 -1
  46. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  47. package/docs/api/interfaces/FileMetadata.md +1 -1
  48. package/docs/api/interfaces/FileReference.md +1 -1
  49. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  50. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  51. package/docs/api/interfaces/FileUploadProps.md +1 -1
  52. package/docs/api/interfaces/FooterProps.md +1 -1
  53. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  54. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  55. package/docs/api/interfaces/InputProps.md +1 -1
  56. package/docs/api/interfaces/LabelProps.md +1 -1
  57. package/docs/api/interfaces/LoginFormProps.md +1 -1
  58. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  59. package/docs/api/interfaces/NavigationContextType.md +1 -1
  60. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  61. package/docs/api/interfaces/NavigationItem.md +1 -1
  62. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  63. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  64. package/docs/api/interfaces/Organisation.md +1 -1
  65. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  66. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  67. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  68. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  69. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  70. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  71. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  72. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  73. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  74. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  75. package/docs/api/interfaces/PaletteData.md +1 -1
  76. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  77. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  78. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  79. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  80. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  81. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  82. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  83. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  84. package/docs/api/interfaces/RBACConfig.md +1 -1
  85. package/docs/api/interfaces/RBACLogger.md +1 -1
  86. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  87. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  88. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  89. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  90. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  91. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  92. package/docs/api/interfaces/RouteConfig.md +1 -1
  93. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  94. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  95. package/docs/api/interfaces/SessionRestorationLoaderProps.md +1 -1
  96. package/docs/api/interfaces/StorageConfig.md +1 -1
  97. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  98. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  99. package/docs/api/interfaces/StorageListOptions.md +1 -1
  100. package/docs/api/interfaces/StorageListResult.md +1 -1
  101. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  102. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  103. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  104. package/docs/api/interfaces/StyleImport.md +1 -1
  105. package/docs/api/interfaces/SwitchProps.md +1 -1
  106. package/docs/api/interfaces/TabsContentProps.md +1 -1
  107. package/docs/api/interfaces/TabsListProps.md +1 -1
  108. package/docs/api/interfaces/TabsProps.md +1 -1
  109. package/docs/api/interfaces/TabsTriggerProps.md +1 -1
  110. package/docs/api/interfaces/TextareaProps.md +1 -1
  111. package/docs/api/interfaces/ToastActionElement.md +1 -1
  112. package/docs/api/interfaces/ToastProps.md +1 -1
  113. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  114. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  115. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  116. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  117. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  118. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  119. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
  120. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  121. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  122. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  123. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  124. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  125. package/docs/api/interfaces/UserEventAccess.md +1 -1
  126. package/docs/api/interfaces/UserMenuProps.md +1 -1
  127. package/docs/api/interfaces/UserProfile.md +1 -1
  128. package/docs/api/modules.md +2 -2
  129. package/package.json +1 -1
  130. package/src/components/NavigationMenu/NavigationMenu.tsx +51 -15
  131. package/src/rbac/hooks/useRBAC.ts +45 -6
  132. package/dist/chunk-VOJBGZYI.js.map +0 -1
  133. package/dist/chunk-VP44VQJ6.js.map +0 -1
  134. /package/dist/{DataTable-SKCX4SCB.js.map → DataTable-AKZ6GRWF.js.map} +0 -0
  135. /package/dist/{chunk-SFVL7ZFI.js.map → chunk-NVVYDA5H.js.map} +0 -0
  136. /package/dist/{chunk-E6ZCVF4T.js.map → chunk-WBK6ZKTF.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / PublicLoadingSpinnerProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / PublicLoadingSpinnerProps
2
2
 
3
3
  # Interface: PublicLoadingSpinnerProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / PublicPageFooterProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / PublicPageFooterProps
2
2
 
3
3
  # Interface: PublicPageFooterProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / PublicPageHeaderProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / PublicPageHeaderProps
2
2
 
3
3
  # Interface: PublicPageHeaderProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / PublicPageLayoutProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / PublicPageLayoutProps
2
2
 
3
3
  # Interface: PublicPageLayoutProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / RBACConfig
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / RBACConfig
2
2
 
3
3
  # Interface: RBACConfig
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / RBACLogger
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / RBACLogger
2
2
 
3
3
  # Interface: RBACLogger
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / ResourcePermissions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / ResourcePermissions
2
2
 
3
3
  # Interface: ResourcePermissions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / RevokeEventAppRoleParams
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / RevokeEventAppRoleParams
2
2
 
3
3
  # Interface: RevokeEventAppRoleParams
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / RoleBasedRouterContextType
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / RoleBasedRouterContextType
2
2
 
3
3
  # Interface: RoleBasedRouterContextType
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / RoleBasedRouterProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / RoleBasedRouterProps
2
2
 
3
3
  # Interface: RoleBasedRouterProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / RoleManagementResult
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / RoleManagementResult
2
2
 
3
3
  # Interface: RoleManagementResult
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / RouteAccessRecord
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / RouteAccessRecord
2
2
 
3
3
  # Interface: RouteAccessRecord
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / RouteConfig
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / RouteConfig
2
2
 
3
3
  # Interface: RouteConfig
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / SecureDataContextType
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / SecureDataContextType
2
2
 
3
3
  # Interface: SecureDataContextType
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / SecureDataProviderProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / SecureDataProviderProps
2
2
 
3
3
  # Interface: SecureDataProviderProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / SessionRestorationLoaderProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / SessionRestorationLoaderProps
2
2
 
3
3
  # Interface: SessionRestorationLoaderProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StorageConfig
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StorageConfig
2
2
 
3
3
  # Interface: StorageConfig
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StorageFileInfo
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StorageFileInfo
2
2
 
3
3
  # Interface: StorageFileInfo
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StorageFileMetadata
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StorageFileMetadata
2
2
 
3
3
  # Interface: StorageFileMetadata
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StorageListOptions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StorageListOptions
2
2
 
3
3
  # Interface: StorageListOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StorageListResult
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StorageListResult
2
2
 
3
3
  # Interface: StorageListResult
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StorageUploadOptions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StorageUploadOptions
2
2
 
3
3
  # Interface: StorageUploadOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StorageUploadResult
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StorageUploadResult
2
2
 
3
3
  # Interface: StorageUploadResult
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StorageUrlOptions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StorageUrlOptions
2
2
 
3
3
  # Interface: StorageUrlOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / StyleImport
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / StyleImport
2
2
 
3
3
  # Interface: StyleImport
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / SwitchProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / SwitchProps
2
2
 
3
3
  # Interface: SwitchProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / TabsContentProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / TabsContentProps
2
2
 
3
3
  # Interface: TabsContentProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / TabsListProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / TabsListProps
2
2
 
3
3
  # Interface: TabsListProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / TabsProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / TabsProps
2
2
 
3
3
  # Interface: TabsProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / TabsTriggerProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / TabsTriggerProps
2
2
 
3
3
  # Interface: TabsTriggerProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / TextareaProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / TextareaProps
2
2
 
3
3
  # Interface: TextareaProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / ToastActionElement
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / ToastActionElement
2
2
 
3
3
  # Interface: ToastActionElement
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / ToastProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / ToastProps
2
2
 
3
3
  # Interface: ToastProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UnifiedAuthContextType
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UnifiedAuthContextType
2
2
 
3
3
  # Interface: UnifiedAuthContextType
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UnifiedAuthProviderProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UnifiedAuthProviderProps
2
2
 
3
3
  # Interface: UnifiedAuthProviderProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UseInactivityTrackerOptions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UseInactivityTrackerOptions
2
2
 
3
3
  # Interface: UseInactivityTrackerOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UseInactivityTrackerReturn
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UseInactivityTrackerReturn
2
2
 
3
3
  # Interface: UseInactivityTrackerReturn
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UsePublicEventOptions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UsePublicEventOptions
2
2
 
3
3
  # Interface: UsePublicEventOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UsePublicEventReturn
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UsePublicEventReturn
2
2
 
3
3
  # Interface: UsePublicEventReturn
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UsePublicFileDisplayOptions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UsePublicFileDisplayOptions
2
2
 
3
3
  # Interface: UsePublicFileDisplayOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UsePublicFileDisplayReturn
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UsePublicFileDisplayReturn
2
2
 
3
3
  # Interface: UsePublicFileDisplayReturn
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UsePublicRouteParamsReturn
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UsePublicRouteParamsReturn
2
2
 
3
3
  # Interface: UsePublicRouteParamsReturn
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UseResolvedScopeOptions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UseResolvedScopeOptions
2
2
 
3
3
  # Interface: UseResolvedScopeOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UseResolvedScopeReturn
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UseResolvedScopeReturn
2
2
 
3
3
  # Interface: UseResolvedScopeReturn
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UseResourcePermissionsOptions
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UseResourcePermissionsOptions
2
2
 
3
3
  # Interface: UseResourcePermissionsOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UserEventAccess
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UserEventAccess
2
2
 
3
3
  # Interface: UserEventAccess
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UserMenuProps
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UserMenuProps
2
2
 
3
3
  # Interface: UserMenuProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.143](../README.md) / [Exports](../modules.md) / UserProfile
1
+ [@jmruthers/pace-core - v0.5.145](../README.md) / [Exports](../modules.md) / UserProfile
2
2
 
3
3
  # Interface: UserProfile
4
4
 
@@ -1,6 +1,6 @@
1
- [@jmruthers/pace-core - v0.5.143](README.md) / Exports
1
+ [@jmruthers/pace-core - v0.5.145](README.md) / Exports
2
2
 
3
- # @jmruthers/pace-core - v0.5.143
3
+ # @jmruthers/pace-core - v0.5.145
4
4
 
5
5
  **`File`**
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jmruthers/pace-core",
3
- "version": "0.5.143",
3
+ "version": "0.5.145",
4
4
  "description": "Clean, modern React component library with Tailwind v4 styling and native utilities",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -451,7 +451,7 @@ export const NavigationMenu = React.forwardRef<
451
451
  // When filterByPermissions is false, we'll simply ignore the resolved scope
452
452
  const { supabase } = authContext || {};
453
453
  const { selectedOrganisation } = authContext || {};
454
- const { resolvedScope, isLoading: scopeLoading } = useResolvedScope({
454
+ const { resolvedScope, isLoading: scopeLoading, error: scopeError } = useResolvedScope({
455
455
  supabase: filterByPermissions ? (supabase || null) : null,
456
456
  selectedOrganisationId: filterByPermissions ? (selectedOrganisation?.id || null) : null,
457
457
  selectedEventId: filterByPermissions ? (selectedEvent?.event_id || null) : null
@@ -467,12 +467,30 @@ export const NavigationMenu = React.forwardRef<
467
467
  appId: undefined
468
468
  });
469
469
 
470
- // Only update stable scope when scope is resolved (not loading) AND values actually changed
470
+ // Build scope from resolvedScope if available, otherwise fall back to context values
471
+ // This handles the case where useResolvedScope errored initially but context is now ready
472
+ const effectiveScope = React.useMemo(() => {
473
+ if (!scopeLoading && resolvedScope?.organisationId) {
474
+ // Use resolved scope if available
475
+ return resolvedScope;
476
+ } else if (!scopeLoading && selectedOrganisation?.id) {
477
+ // Fall back to building scope from context if resolvedScope is null but context is ready
478
+ // This handles the case where useResolvedScope errored but context is now available
479
+ return {
480
+ organisationId: selectedOrganisation.id,
481
+ eventId: selectedEvent?.event_id || undefined,
482
+ appId: undefined // App ID will be resolved by usePermissions if needed
483
+ };
484
+ }
485
+ return null;
486
+ }, [scopeLoading, resolvedScope, selectedOrganisation?.id, selectedEvent?.event_id]);
487
+
488
+ // Only update stable scope when effective scope is available AND values actually changed
471
489
  // This prevents triggering permission refetches during scope transitions
472
- if (!scopeLoading && resolvedScope?.organisationId) {
473
- const newOrgId = resolvedScope.organisationId;
474
- const newEventId = resolvedScope.eventId;
475
- const newAppId = resolvedScope.appId;
490
+ if (effectiveScope?.organisationId) {
491
+ const newOrgId = effectiveScope.organisationId;
492
+ const newEventId = effectiveScope.eventId;
493
+ const newAppId = effectiveScope.appId;
476
494
 
477
495
  // Only update if values actually changed
478
496
  if (stableScopeRef.current.organisationId !== newOrgId ||
@@ -484,7 +502,7 @@ export const NavigationMenu = React.forwardRef<
484
502
  appId: newAppId
485
503
  };
486
504
  }
487
- } else if (!scopeLoading && !resolvedScope) {
505
+ } else if (!scopeLoading && !effectiveScope) {
488
506
  // Only reset if we had a previous value and scope is resolved - don't clear during loading
489
507
  if (stableScopeRef.current.organisationId !== '') {
490
508
  stableScopeRef.current = {
@@ -522,13 +540,28 @@ export const NavigationMenu = React.forwardRef<
522
540
  // Only wait for event context if we're actually loading events
523
541
  const isEventContextReady = eventLoadingRaw === undefined ? true : !eventLoading;
524
542
 
543
+ // Check if we have valid context for permission checking
544
+ // Use actual context values, not just resolvedScope, because resolvedScope might be null
545
+ // if useResolvedScope errored initially but context is now ready
546
+ const hasValidContext = isOrgContextReady && isEventContextReady;
547
+
548
+ // If scope is still loading or we don't have valid context yet, show nothing
549
+ // BUT: If scope errored but context is now ready, retry (don't block forever)
550
+ const shouldWaitForScope = scopeLoading || (!hasValidContext);
551
+ const shouldRetryAfterError = scopeError && hasValidContext && !scopeLoading;
552
+
525
553
  // During initial load or when scope/context is loading, show nothing
526
- if (!authContext || !rbacContext || scopeLoading || !isOrgContextReady || !isEventContextReady) {
554
+ if (!authContext || !rbacContext || (shouldWaitForScope && !shouldRetryAfterError)) {
527
555
  // Still loading - show nothing to prevent security risk
528
556
  // Note: We check both org and event context readiness to prevent premature permission checks
557
+ // Exception: If scope errored but context is now ready, we'll retry below
529
558
  return [];
530
559
  }
531
560
 
561
+ // If scope errored but context is now ready, we can proceed with permission checks
562
+ // The resolvedScope might be null, but we'll use the actual context values
563
+ // usePermissions will handle the scope resolution internally
564
+
532
565
  // During permission refetch (after initial load), preserve previous items if we have them
533
566
  // This prevents navigation from disappearing when switching events
534
567
  if (permissionsLoading) {
@@ -728,8 +761,10 @@ export const NavigationMenu = React.forwardRef<
728
761
  permissionMap,
729
762
  hasAnyPermission,
730
763
  scopeLoading,
764
+ scopeError,
731
765
  permissionsLoading,
732
766
  resolvedScope,
767
+ effectiveScope,
733
768
  auditLog,
734
769
  // Add event context state to dependencies so we re-check permissions when event context becomes available
735
770
  eventLoadingRaw,
@@ -742,18 +777,19 @@ export const NavigationMenu = React.forwardRef<
742
777
  // Log navigation access attempts for debugging
743
778
  React.useEffect(() => {
744
779
  if (auditLog && authContext) {
780
+ // Find the current navigation item to log its actual permissions
781
+ const currentItem = items?.find(item => item.href === currentPath || item.id === 'navigation-menu');
745
782
  logger.debug('NavigationMenu', 'Navigation access attempt:', {
746
- itemId: 'navigation-menu',
747
- label: 'Navigation Menu',
783
+ itemId: currentItem?.id || 'navigation-menu',
784
+ label: currentItem?.label || 'Navigation Menu',
748
785
  href: currentPath,
749
- // RBAC properties removed - use useRBAC() hook instead
750
- permissions: null,
751
- roles: null,
752
- accessLevel: null,
786
+ permissions: currentItem?.permissions || null,
787
+ roles: currentItem?.roles || null,
788
+ accessLevel: currentItem?.accessLevel || null,
753
789
  timestamp: new Date().toISOString()
754
790
  });
755
791
  }
756
- }, [auditLog, authContext, currentPath]);
792
+ }, [auditLog, authContext, currentPath, items]);
757
793
 
758
794
 
759
795
  // Handle keyboard navigation for hierarchical mode
@@ -50,16 +50,21 @@ function mapAccessLevelToEventRole(level: string | null): EventAppRole | null {
50
50
 
51
51
  export function useRBAC(pageId?: string): UserRBACContext {
52
52
  const logger = getRBACLogger();
53
- const { user, session, appName } = useUnifiedAuth();
53
+ const { user, session, appName, appConfig } = useUnifiedAuth();
54
54
  const { selectedOrganisation } = useOrganisations();
55
55
 
56
56
  let selectedEvent: { event_id: string } | null = null;
57
+ let eventLoading = false;
57
58
  try {
58
59
  const eventsContext = useEvents();
59
60
  selectedEvent = eventsContext.selectedEvent;
61
+ eventLoading = eventsContext.isLoading;
60
62
  } catch (error) {
61
63
  logger.debug('[useRBAC] Event provider not available, continuing without event context', error);
62
64
  }
65
+
66
+ // Check if app requires event context
67
+ const requiresEvent = appConfig?.requires_event ?? false;
63
68
 
64
69
  const [globalRole, setGlobalRole] = useState<GlobalRole | null>(null);
65
70
  const [organisationRole, setOrganisationRole] = useState<OrganisationRole | null>(null);
@@ -83,17 +88,51 @@ export function useRBAC(pageId?: string): UserRBACContext {
83
88
  return;
84
89
  }
85
90
 
91
+ // For event-based apps, wait for event context to be ready before loading RBAC
92
+ // This prevents NetworkError when RPC calls are made before event context is available
93
+ if (requiresEvent) {
94
+ if (eventLoading || !selectedEvent) {
95
+ // Event context not ready yet - don't load RBAC yet
96
+ // This prevents premature RPC calls that can cause NetworkError
97
+ logger.debug('[useRBAC] Waiting for event context before loading RBAC context', {
98
+ eventLoading,
99
+ hasSelectedEvent: !!selectedEvent,
100
+ appName
101
+ });
102
+ return;
103
+ }
104
+ }
105
+
86
106
  setIsLoading(true);
87
107
  setError(null);
88
108
 
89
109
  try {
90
110
  let appId: UUID | undefined;
91
111
  if (appName) {
92
- const resolved = await resolveAppContext({ userId: user.id as UUID, appName });
93
- if (!resolved || !resolved.hasAccess) {
94
- throw new Error(`User does not have access to app "${appName}"`);
112
+ // Wrap RPC call in try-catch to handle NetworkError gracefully
113
+ try {
114
+ const resolved = await resolveAppContext({ userId: user.id as UUID, appName });
115
+ if (!resolved || !resolved.hasAccess) {
116
+ throw new Error(`User does not have access to app "${appName}"`);
117
+ }
118
+ appId = resolved.appId;
119
+ } catch (rpcError: any) {
120
+ // Handle NetworkError - might be due to timing issue
121
+ if (rpcError?.message?.includes('NetworkError') || rpcError?.message?.includes('fetch')) {
122
+ logger.warn('[useRBAC] NetworkError resolving app context - may be timing issue, will retry when context is ready', {
123
+ appName,
124
+ error: rpcError.message,
125
+ requiresEvent,
126
+ eventLoading,
127
+ hasSelectedEvent: !!selectedEvent
128
+ });
129
+ // Don't throw - let it retry when dependencies change
130
+ setIsLoading(false);
131
+ return;
132
+ }
133
+ // Re-throw other errors
134
+ throw rpcError;
95
135
  }
96
- appId = resolved.appId;
97
136
  }
98
137
 
99
138
  const scope: Scope = {
@@ -121,7 +160,7 @@ export function useRBAC(pageId?: string): UserRBACContext {
121
160
  } finally {
122
161
  setIsLoading(false);
123
162
  }
124
- }, [appName, logger, resetState, selectedEvent?.event_id, selectedOrganisation?.id, session, user]);
163
+ }, [appName, logger, resetState, selectedEvent?.event_id, selectedOrganisation?.id, session, user, requiresEvent, eventLoading]);
125
164
 
126
165
  const hasGlobalPermission = useCallback(
127
166
  (permission: string): boolean => {