@jmruthers/pace-core 0.5.143 → 0.5.144

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 (124) hide show
  1. package/dist/{chunk-VP44VQJ6.js → chunk-FC46D3KC.js} +33 -15
  2. package/dist/chunk-FC46D3KC.js.map +1 -0
  3. package/dist/components.js +1 -1
  4. package/dist/index.js +1 -1
  5. package/docs/api/classes/ColumnFactory.md +1 -1
  6. package/docs/api/classes/ErrorBoundary.md +1 -1
  7. package/docs/api/classes/InvalidScopeError.md +1 -1
  8. package/docs/api/classes/MissingUserContextError.md +1 -1
  9. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  10. package/docs/api/classes/PermissionDeniedError.md +1 -1
  11. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  12. package/docs/api/classes/RBACAuditManager.md +1 -1
  13. package/docs/api/classes/RBACCache.md +1 -1
  14. package/docs/api/classes/RBACEngine.md +1 -1
  15. package/docs/api/classes/RBACError.md +1 -1
  16. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  17. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  18. package/docs/api/classes/StorageUtils.md +1 -1
  19. package/docs/api/enums/FileCategory.md +1 -1
  20. package/docs/api/interfaces/AggregateConfig.md +1 -1
  21. package/docs/api/interfaces/BadgeProps.md +1 -1
  22. package/docs/api/interfaces/ButtonProps.md +1 -1
  23. package/docs/api/interfaces/CalendarProps.md +1 -1
  24. package/docs/api/interfaces/CardProps.md +1 -1
  25. package/docs/api/interfaces/ColorPalette.md +1 -1
  26. package/docs/api/interfaces/ColorShade.md +1 -1
  27. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  28. package/docs/api/interfaces/DataRecord.md +1 -1
  29. package/docs/api/interfaces/DataTableAction.md +1 -1
  30. package/docs/api/interfaces/DataTableColumn.md +1 -1
  31. package/docs/api/interfaces/DataTableProps.md +1 -1
  32. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  33. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  34. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  35. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  36. package/docs/api/interfaces/EventLogoProps.md +1 -1
  37. package/docs/api/interfaces/ExportColumn.md +1 -1
  38. package/docs/api/interfaces/ExportOptions.md +1 -1
  39. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  40. package/docs/api/interfaces/FileMetadata.md +1 -1
  41. package/docs/api/interfaces/FileReference.md +1 -1
  42. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  43. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  44. package/docs/api/interfaces/FileUploadProps.md +1 -1
  45. package/docs/api/interfaces/FooterProps.md +1 -1
  46. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  47. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  48. package/docs/api/interfaces/InputProps.md +1 -1
  49. package/docs/api/interfaces/LabelProps.md +1 -1
  50. package/docs/api/interfaces/LoginFormProps.md +1 -1
  51. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  52. package/docs/api/interfaces/NavigationContextType.md +1 -1
  53. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  54. package/docs/api/interfaces/NavigationItem.md +1 -1
  55. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  56. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  57. package/docs/api/interfaces/Organisation.md +1 -1
  58. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  59. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  60. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  61. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  62. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  63. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  64. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  65. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  66. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  67. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  68. package/docs/api/interfaces/PaletteData.md +1 -1
  69. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  70. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  71. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  72. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  73. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  74. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  75. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  76. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  77. package/docs/api/interfaces/RBACConfig.md +1 -1
  78. package/docs/api/interfaces/RBACLogger.md +1 -1
  79. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  80. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  81. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  82. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  83. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  84. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  85. package/docs/api/interfaces/RouteConfig.md +1 -1
  86. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  87. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  88. package/docs/api/interfaces/SessionRestorationLoaderProps.md +1 -1
  89. package/docs/api/interfaces/StorageConfig.md +1 -1
  90. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  91. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  92. package/docs/api/interfaces/StorageListOptions.md +1 -1
  93. package/docs/api/interfaces/StorageListResult.md +1 -1
  94. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  95. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  96. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  97. package/docs/api/interfaces/StyleImport.md +1 -1
  98. package/docs/api/interfaces/SwitchProps.md +1 -1
  99. package/docs/api/interfaces/TabsContentProps.md +1 -1
  100. package/docs/api/interfaces/TabsListProps.md +1 -1
  101. package/docs/api/interfaces/TabsProps.md +1 -1
  102. package/docs/api/interfaces/TabsTriggerProps.md +1 -1
  103. package/docs/api/interfaces/TextareaProps.md +1 -1
  104. package/docs/api/interfaces/ToastActionElement.md +1 -1
  105. package/docs/api/interfaces/ToastProps.md +1 -1
  106. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  107. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  108. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  109. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  110. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  111. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  112. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
  113. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  114. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  115. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  116. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  117. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  118. package/docs/api/interfaces/UserEventAccess.md +1 -1
  119. package/docs/api/interfaces/UserMenuProps.md +1 -1
  120. package/docs/api/interfaces/UserProfile.md +1 -1
  121. package/docs/api/modules.md +2 -2
  122. package/package.json +1 -1
  123. package/src/components/NavigationMenu/NavigationMenu.tsx +51 -15
  124. package/dist/chunk-VP44VQJ6.js.map +0 -1
@@ -1158,7 +1158,7 @@ var NavigationMenu = React12.forwardRef(({
1158
1158
  const orgContextReady = authContext?.isContextReady ?? (authContext?.selectedOrganisation?.id ? true : false);
1159
1159
  const { supabase } = authContext || {};
1160
1160
  const { selectedOrganisation } = authContext || {};
1161
- const { resolvedScope, isLoading: scopeLoading } = useResolvedScope({
1161
+ const { resolvedScope, isLoading: scopeLoading, error: scopeError } = useResolvedScope({
1162
1162
  supabase: filterByPermissions ? supabase || null : null,
1163
1163
  selectedOrganisationId: filterByPermissions ? selectedOrganisation?.id || null : null,
1164
1164
  selectedEventId: filterByPermissions ? selectedEvent?.event_id || null : null
@@ -1168,10 +1168,23 @@ var NavigationMenu = React12.forwardRef(({
1168
1168
  eventId: void 0,
1169
1169
  appId: void 0
1170
1170
  });
1171
- if (!scopeLoading && resolvedScope?.organisationId) {
1172
- const newOrgId = resolvedScope.organisationId;
1173
- const newEventId = resolvedScope.eventId;
1174
- const newAppId = resolvedScope.appId;
1171
+ const effectiveScope = React12.useMemo(() => {
1172
+ if (!scopeLoading && resolvedScope?.organisationId) {
1173
+ return resolvedScope;
1174
+ } else if (!scopeLoading && selectedOrganisation?.id) {
1175
+ return {
1176
+ organisationId: selectedOrganisation.id,
1177
+ eventId: selectedEvent?.event_id || void 0,
1178
+ appId: void 0
1179
+ // App ID will be resolved by usePermissions if needed
1180
+ };
1181
+ }
1182
+ return null;
1183
+ }, [scopeLoading, resolvedScope, selectedOrganisation?.id, selectedEvent?.event_id]);
1184
+ if (effectiveScope?.organisationId) {
1185
+ const newOrgId = effectiveScope.organisationId;
1186
+ const newEventId = effectiveScope.eventId;
1187
+ const newAppId = effectiveScope.appId;
1175
1188
  if (stableScopeRef.current.organisationId !== newOrgId || stableScopeRef.current.eventId !== newEventId || stableScopeRef.current.appId !== newAppId) {
1176
1189
  stableScopeRef.current = {
1177
1190
  organisationId: newOrgId,
@@ -1179,7 +1192,7 @@ var NavigationMenu = React12.forwardRef(({
1179
1192
  appId: newAppId
1180
1193
  };
1181
1194
  }
1182
- } else if (!scopeLoading && !resolvedScope) {
1195
+ } else if (!scopeLoading && !effectiveScope) {
1183
1196
  if (stableScopeRef.current.organisationId !== "") {
1184
1197
  stableScopeRef.current = {
1185
1198
  organisationId: "",
@@ -1199,7 +1212,10 @@ var NavigationMenu = React12.forwardRef(({
1199
1212
  if (filterByPermissions) {
1200
1213
  const isOrgContextReady = orgContextReady && selectedOrganisation?.id;
1201
1214
  const isEventContextReady = eventLoadingRaw === void 0 ? true : !eventLoading;
1202
- if (!authContext || !rbacContext || scopeLoading || !isOrgContextReady || !isEventContextReady) {
1215
+ const hasValidContext = isOrgContextReady && isEventContextReady;
1216
+ const shouldWaitForScope = scopeLoading || !hasValidContext;
1217
+ const shouldRetryAfterError = scopeError && hasValidContext && !scopeLoading;
1218
+ if (!authContext || !rbacContext || shouldWaitForScope && !shouldRetryAfterError) {
1203
1219
  return [];
1204
1220
  }
1205
1221
  if (permissionsLoading) {
@@ -1332,8 +1348,10 @@ var NavigationMenu = React12.forwardRef(({
1332
1348
  permissionMap,
1333
1349
  hasAnyPermission,
1334
1350
  scopeLoading,
1351
+ scopeError,
1335
1352
  permissionsLoading,
1336
1353
  resolvedScope,
1354
+ effectiveScope,
1337
1355
  auditLog,
1338
1356
  // Add event context state to dependencies so we re-check permissions when event context becomes available
1339
1357
  eventLoadingRaw,
@@ -1344,18 +1362,18 @@ var NavigationMenu = React12.forwardRef(({
1344
1362
  ]);
1345
1363
  React12.useEffect(() => {
1346
1364
  if (auditLog && authContext) {
1365
+ const currentItem = items?.find((item) => item.href === currentPath || item.id === "navigation-menu");
1347
1366
  logger.debug("NavigationMenu", "Navigation access attempt:", {
1348
- itemId: "navigation-menu",
1349
- label: "Navigation Menu",
1367
+ itemId: currentItem?.id || "navigation-menu",
1368
+ label: currentItem?.label || "Navigation Menu",
1350
1369
  href: currentPath,
1351
- // RBAC properties removed - use useRBAC() hook instead
1352
- permissions: null,
1353
- roles: null,
1354
- accessLevel: null,
1370
+ permissions: currentItem?.permissions || null,
1371
+ roles: currentItem?.roles || null,
1372
+ accessLevel: currentItem?.accessLevel || null,
1355
1373
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
1356
1374
  });
1357
1375
  }
1358
- }, [auditLog, authContext, currentPath]);
1376
+ }, [auditLog, authContext, currentPath, items]);
1359
1377
  const handleHierarchicalKeyDown = (event, item) => {
1360
1378
  switch (event.key) {
1361
1379
  case "Enter":
@@ -4564,4 +4582,4 @@ export {
4564
4582
  EventLogoCompact,
4565
4583
  EventLogoLarge
4566
4584
  };
4567
- //# sourceMappingURL=chunk-VP44VQJ6.js.map
4585
+ //# sourceMappingURL=chunk-FC46D3KC.js.map