@jmruthers/pace-core 0.5.181 → 0.5.182
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.
- package/CHANGELOG.md +1 -1
- package/README.md +16 -2
- package/dist/{AuthService-DYuQPJj6.d.ts → AuthService-B-cd2MA4.d.ts} +9 -11
- package/dist/{DataTable-CWAZZcXC.d.ts → DataTable-Bz8ffqyA.d.ts} +1 -1
- package/dist/{DataTable-UA6CL4JI.js → DataTable-QAB34V6K.js} +14 -15
- package/dist/UnifiedAuthProvider-7F6T4B6K.js +13 -0
- package/dist/{UnifiedAuthProvider-DJxGTftH.d.ts → UnifiedAuthProvider-F86d7dSi.d.ts} +5 -6
- package/dist/{api-45XYYO2A.js → api-ROMBCNKU.js} +5 -5
- package/dist/{audit-64X3VJXB.js → audit-WRS3KJKI.js} +4 -4
- package/dist/auth-BZOJqrdd.d.ts +49 -0
- package/dist/{chunk-CX5M4ZAG.js → chunk-5DRSZLL2.js} +1 -1
- package/dist/chunk-5DRSZLL2.js.map +1 -0
- package/dist/{chunk-BESYRHQM.js → chunk-6C4YBBJM.js} +10 -7
- package/dist/chunk-6C4YBBJM.js.map +1 -0
- package/dist/{chunk-PLDDJCW6.js → chunk-7D4SUZUM.js} +2 -13
- package/dist/{chunk-HRO5HWN2.js → chunk-CSOFYHAG.js} +55 -162
- package/dist/chunk-CSOFYHAG.js.map +1 -0
- package/dist/{chunk-ANBQRTPX.js → chunk-E66EQZE6.js} +3 -5
- package/dist/{chunk-ANBQRTPX.js.map → chunk-E66EQZE6.js.map} +1 -1
- package/dist/{chunk-Q5QRDWKI.js → chunk-F2IMUDXZ.js} +4 -6
- package/dist/chunk-F2IMUDXZ.js.map +1 -0
- package/dist/{chunk-SBVILCCA.js → chunk-FSFQFJCU.js} +28 -6
- package/dist/chunk-FSFQFJCU.js.map +1 -0
- package/dist/chunk-FUEYYMX5.js +2296 -0
- package/dist/chunk-FUEYYMX5.js.map +1 -0
- package/dist/{chunk-FFKNH6U5.js → chunk-HKIT6O7W.js} +3 -5
- package/dist/{chunk-FFKNH6U5.js.map → chunk-HKIT6O7W.js.map} +1 -1
- package/dist/chunk-KQCRWDSA.js +1 -0
- package/dist/{chunk-S5OFRT4M.js → chunk-KUEN3HFB.js} +6 -6
- package/dist/chunk-KUEN3HFB.js.map +1 -0
- package/dist/chunk-LMC26NLJ.js +84 -0
- package/dist/chunk-LMC26NLJ.js.map +1 -0
- package/dist/{chunk-BVYWGZVV.js → chunk-M7W4CP3M.js} +52 -19
- package/dist/chunk-M7W4CP3M.js.map +1 -0
- package/dist/{chunk-HZLDFOE4.js → chunk-MI7HBHN3.js} +164 -243
- package/dist/chunk-MI7HBHN3.js.map +1 -0
- package/dist/{chunk-PPMP5J6T.js → chunk-PWAHJW4G.js} +180 -29
- package/dist/chunk-PWAHJW4G.js.map +1 -0
- package/dist/chunk-PWLANIRT.js +127 -0
- package/dist/{chunk-XDNLUEXI.js.map → chunk-PWLANIRT.js.map} +1 -1
- package/dist/chunk-QCDXODCA.js +75 -0
- package/dist/chunk-QCDXODCA.js.map +1 -0
- package/dist/{chunk-D7LCGMVS.js → chunk-QETLRQI6.js} +526 -887
- package/dist/chunk-QETLRQI6.js.map +1 -0
- package/dist/{chunk-5MT24GKJ.js → chunk-QUVSNGIP.js} +264 -262
- package/dist/chunk-QUVSNGIP.js.map +1 -0
- package/dist/chunk-QXHPKYJV.js +113 -0
- package/dist/chunk-QXHPKYJV.js.map +1 -0
- package/dist/{chunk-OWAG3GSU.js → chunk-R77UEZ4E.js} +11 -1
- package/dist/chunk-R77UEZ4E.js.map +1 -0
- package/dist/{chunk-ZYTYSTO5.js → chunk-RA3JUFMW.js} +314 -161
- package/dist/chunk-RA3JUFMW.js.map +1 -0
- package/dist/{chunk-ERISIBYU.js → chunk-SQGMNID3.js} +3 -8
- package/dist/chunk-SQGMNID3.js.map +1 -0
- package/dist/{chunk-XJ2HZOBU.js → chunk-UHNYIBXL.js} +1 -1
- package/dist/chunk-UHNYIBXL.js.map +1 -0
- package/{src/utils/secureStorage.ts → dist/chunk-VBXEHIUJ.js} +113 -88
- package/dist/{chunk-7QCC6MCP.js.map → chunk-VBXEHIUJ.js.map} +1 -1
- package/dist/{chunk-VZ4VDGTB.js → chunk-W22JP75J.js} +5 -13
- package/dist/{chunk-VZ4VDGTB.js.map → chunk-W22JP75J.js.map} +1 -1
- package/dist/components.d.ts +12 -93
- package/dist/components.js +23 -106
- package/dist/components.js.map +1 -1
- package/dist/core-CUElvH_C.d.ts +164 -0
- package/dist/database.generated-CBmg2950.d.ts +8284 -0
- package/dist/event-CW5YB_2p.d.ts +239 -0
- package/dist/{file-reference-C6Gkn77H.d.ts → file-reference-D06mEEWW.d.ts} +7 -5
- package/dist/functions-D_kgHktt.d.ts +208 -0
- package/dist/hooks.d.ts +54 -7
- package/dist/hooks.js +204 -17
- package/dist/hooks.js.map +1 -1
- package/dist/{EventLogo-B3V3otev.d.ts → index-Bl--n7-T.d.ts} +387 -397
- package/dist/index.d.ts +94 -261
- package/dist/index.js +314 -126
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +7 -8
- package/dist/providers.js +6 -13
- package/dist/rbac/index.d.ts +171 -101
- package/dist/rbac/index.js +23 -17
- package/dist/styles/index.d.ts +1 -3
- package/dist/styles/index.js +2 -17
- package/dist/theming/runtime.js +3 -3
- package/dist/types-UU913iLA.d.ts +102 -0
- package/dist/{types-Dfz9dmVH.d.ts → types-_x1f4QBF.d.ts} +6 -6
- package/dist/types.d.ts +88 -227
- package/dist/types.js +64 -112
- package/dist/types.js.map +1 -1
- package/dist/{usePublicRouteParams-B7PabvuH.d.ts → usePublicRouteParams-JJczomYq.d.ts} +203 -6
- package/dist/utils.d.ts +299 -13
- package/dist/utils.js +481 -55
- package/dist/utils.js.map +1 -1
- package/dist/validation-643vUDZW.d.ts +177 -0
- package/docs/DOCUMENTATION_REVIEW_TRACKER.md +511 -0
- package/docs/README.md +9 -8
- package/docs/api/README.md +16 -2
- package/docs/api/classes/ColumnFactory.md +1 -1
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +4 -4
- package/docs/api/classes/MissingUserContextError.md +4 -4
- package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
- package/docs/api/classes/PermissionDeniedError.md +4 -4
- package/docs/api/classes/RBACAuditManager.md +14 -14
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +2 -2
- package/docs/api/classes/RBACError.md +4 -4
- package/docs/api/classes/RBACNotInitializedError.md +4 -4
- package/docs/api/classes/SecureSupabaseClient.md +29 -9
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +17 -17
- package/docs/api/enums/RBACErrorCode.md +228 -0
- package/docs/api/enums/RPCFunction.md +118 -0
- package/docs/api/interfaces/AggregateConfig.md +1 -1
- package/docs/api/interfaces/BadgeProps.md +1 -1
- package/docs/api/interfaces/ButtonProps.md +2 -2
- package/docs/api/interfaces/CalendarProps.md +1 -1
- package/docs/api/interfaces/CardProps.md +29 -3
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +1 -1
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +2 -2
- package/docs/api/interfaces/DataTableColumn.md +6 -6
- package/docs/api/interfaces/DataTableProps.md +1 -1
- package/docs/api/interfaces/DataTableToolbarButton.md +2 -2
- package/docs/api/interfaces/EmptyStateConfig.md +1 -1
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
- package/docs/api/interfaces/EventAppRoleData.md +1 -1
- package/docs/api/interfaces/ExportColumn.md +5 -5
- package/docs/api/interfaces/ExportOptions.md +4 -4
- package/docs/api/interfaces/FileDisplayProps.md +1 -1
- package/docs/api/interfaces/FileMetadata.md +13 -13
- package/docs/api/interfaces/FileReference.md +12 -12
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +10 -10
- package/docs/api/interfaces/FileUploadProps.md +19 -19
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/FormFieldProps.md +166 -0
- package/docs/api/interfaces/FormProps.md +113 -0
- package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +8 -8
- package/docs/api/interfaces/InputProps.md +2 -2
- package/docs/api/interfaces/LabelProps.md +8 -8
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
- package/docs/api/interfaces/NavigationContextType.md +1 -1
- package/docs/api/interfaces/NavigationGuardProps.md +1 -1
- package/docs/api/interfaces/NavigationItem.md +17 -73
- package/docs/api/interfaces/NavigationMenuProps.md +38 -53
- package/docs/api/interfaces/NavigationProviderProps.md +1 -1
- package/docs/api/interfaces/Organisation.md +13 -13
- package/docs/api/interfaces/OrganisationContextType.md +21 -21
- package/docs/api/interfaces/OrganisationMembership.md +15 -15
- package/docs/api/interfaces/OrganisationProviderProps.md +59 -2
- package/docs/api/interfaces/OrganisationSecurityError.md +5 -5
- package/docs/api/interfaces/PaceAppLayoutProps.md +26 -39
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- package/docs/api/interfaces/PageAccessRecord.md +1 -1
- package/docs/api/interfaces/PagePermissionContextType.md +1 -1
- package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
- package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
- package/docs/api/interfaces/ProgressProps.md +50 -0
- package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
- package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
- package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
- package/docs/api/interfaces/PublicPageLayoutProps.md +15 -15
- package/docs/api/interfaces/RBACAccessValidateParams.md +52 -0
- package/docs/api/interfaces/RBACAccessValidateResult.md +41 -0
- package/docs/api/interfaces/RBACAuditLogParams.md +85 -0
- package/docs/api/interfaces/RBACAuditLogResult.md +52 -0
- package/docs/api/interfaces/RBACConfig.md +2 -2
- package/docs/api/interfaces/RBACContext.md +52 -0
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/RBACPageAccessCheckParams.md +74 -0
- package/docs/api/interfaces/RBACPermissionCheckParams.md +74 -0
- package/docs/api/interfaces/RBACPermissionCheckResult.md +52 -0
- package/docs/api/interfaces/RBACPermissionsGetParams.md +63 -0
- package/docs/api/interfaces/RBACPermissionsGetResult.md +63 -0
- package/docs/api/interfaces/RBACResult.md +58 -0
- package/docs/api/interfaces/RBACRoleGrantParams.md +63 -0
- package/docs/api/interfaces/RBACRoleGrantResult.md +52 -0
- package/docs/api/interfaces/RBACRoleRevokeParams.md +63 -0
- package/docs/api/interfaces/RBACRoleRevokeResult.md +52 -0
- package/docs/api/interfaces/RBACRoleValidateParams.md +52 -0
- package/docs/api/interfaces/RBACRoleValidateResult.md +63 -0
- package/docs/api/interfaces/RBACRolesListParams.md +52 -0
- package/docs/api/interfaces/RBACRolesListResult.md +74 -0
- package/docs/api/interfaces/RBACSessionTrackParams.md +74 -0
- package/docs/api/interfaces/RBACSessionTrackResult.md +52 -0
- package/docs/api/interfaces/ResourcePermissions.md +1 -1
- package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
- package/docs/api/interfaces/RoleManagementResult.md +1 -1
- package/docs/api/interfaces/RouteAccessRecord.md +1 -1
- package/docs/api/interfaces/RouteConfig.md +1 -1
- package/docs/api/interfaces/SecureDataContextType.md +1 -1
- package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
- package/docs/api/interfaces/SessionRestorationLoaderProps.md +15 -2
- package/docs/api/interfaces/StorageConfig.md +1 -1
- package/docs/api/interfaces/StorageFileInfo.md +1 -1
- package/docs/api/interfaces/StorageFileMetadata.md +1 -1
- package/docs/api/interfaces/StorageListOptions.md +1 -1
- package/docs/api/interfaces/StorageListResult.md +1 -1
- package/docs/api/interfaces/StorageUploadOptions.md +1 -1
- package/docs/api/interfaces/StorageUploadResult.md +1 -1
- package/docs/api/interfaces/StorageUrlOptions.md +1 -1
- package/docs/api/interfaces/StyleImport.md +1 -1
- package/docs/api/interfaces/SwitchProps.md +1 -1
- package/docs/api/interfaces/TabsContentProps.md +1 -1
- package/docs/api/interfaces/TabsListProps.md +1 -1
- package/docs/api/interfaces/TabsProps.md +1 -1
- package/docs/api/interfaces/TabsTriggerProps.md +43 -2
- package/docs/api/interfaces/TextareaProps.md +2 -2
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +61 -61
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
- package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
- package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
- package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
- package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +1 -1
- package/docs/api/interfaces/UserMenuProps.md +4 -4
- package/docs/api/interfaces/UserProfile.md +7 -7
- package/docs/api/modules.md +484 -462
- package/docs/api-reference/components.md +186 -15
- package/docs/api-reference/deprecated.md +376 -0
- package/docs/api-reference/hooks.md +149 -19
- package/docs/api-reference/providers.md +61 -6
- package/docs/api-reference/rpc-functions.md +397 -0
- package/docs/api-reference/types.md +135 -78
- package/docs/api-reference/utilities.md +51 -380
- package/docs/architecture/README.md +49 -3
- package/docs/architecture/database-schema-requirements.md +40 -3
- package/docs/architecture/rbac-security-architecture.md +41 -4
- package/docs/architecture/services.md +127 -42
- package/docs/best-practices/README.md +51 -5
- package/docs/best-practices/accessibility.md +32 -3
- package/docs/best-practices/common-patterns.md +50 -3
- package/docs/best-practices/deployment.md +50 -4
- package/docs/best-practices/performance.md +50 -3
- package/docs/best-practices/security.md +94 -41
- package/docs/best-practices/testing.md +33 -4
- package/docs/core-concepts/authentication.md +5 -5
- package/docs/core-concepts/events.md +3 -3
- package/docs/core-concepts/organisations.md +3 -3
- package/docs/core-concepts/permissions.md +3 -3
- package/docs/core-concepts/rbac-system.md +5 -5
- package/docs/documentation-index.md +30 -8
- package/docs/getting-started/documentation-index.md +1 -1
- package/docs/getting-started/examples/README.md +7 -5
- package/docs/getting-started/examples/basic-auth-app.md +3 -0
- package/docs/getting-started/examples/full-featured-app.md +5 -3
- package/docs/getting-started/faq.md +6 -6
- package/docs/getting-started/installation-guide.md +192 -13
- package/docs/getting-started/local-development.md +303 -0
- package/docs/getting-started/quick-reference.md +3 -3
- package/docs/getting-started/quick-start.md +517 -0
- package/docs/implementation-guides/app-layout.md +45 -3
- package/docs/implementation-guides/authentication.md +66 -7
- package/docs/implementation-guides/component-styling.md +53 -3
- package/docs/implementation-guides/data-tables.md +76 -7
- package/docs/implementation-guides/datatable-filtering.md +1 -2
- package/docs/implementation-guides/datatable-rbac-usage.md +0 -1
- package/docs/implementation-guides/dynamic-colors.md +155 -4
- package/docs/implementation-guides/file-reference-system.md +72 -3
- package/docs/implementation-guides/file-upload-storage.md +72 -3
- package/docs/implementation-guides/forms.md +53 -3
- package/docs/implementation-guides/inactivity-tracking.md +53 -3
- package/docs/implementation-guides/large-datasets.md +1 -1
- package/docs/implementation-guides/navigation.md +55 -5
- package/docs/implementation-guides/organisation-security.md +72 -3
- package/docs/implementation-guides/performance.md +57 -1
- package/docs/implementation-guides/permission-enforcement.md +81 -8
- package/docs/implementation-guides/public-pages.md +560 -14
- package/docs/migration/MIGRATION_GUIDE.md +409 -50
- package/docs/migration/README.md +37 -3
- package/docs/migration/organisation-context-timing-fix.md +39 -4
- package/docs/migration/quick-migration-guide.md +41 -5
- package/docs/migration/rbac-migration.md +59 -3
- package/docs/migration/service-architecture.md +77 -14
- package/docs/rbac/README.md +79 -3
- package/docs/rbac/advanced-patterns.md +47 -3
- package/docs/rbac/api-reference.md +77 -8
- package/docs/rbac/event-based-apps.md +50 -5
- package/docs/rbac/examples/rbac-rls-integration-example.md +3 -3
- package/docs/rbac/examples.md +39 -3
- package/docs/rbac/getting-started.md +63 -4
- package/docs/rbac/quick-start.md +57 -5
- package/docs/rbac/rbac-rls-integration.md +68 -6
- package/docs/rbac/super-admin-guide.md +47 -3
- package/docs/rbac/troubleshooting.md +3 -3
- package/docs/security/README.md +68 -3
- package/docs/security/checklist.md +50 -3
- package/docs/standards/01-architecture-standard.md +39 -0
- package/docs/standards/02-api-and-rpc-standard.md +39 -0
- package/docs/standards/03-component-standard.md +32 -0
- package/docs/standards/04-code-style-standard.md +32 -0
- package/docs/standards/05-security-standard.md +30 -0
- package/docs/standards/06-testing-and-docs-standard.md +29 -0
- package/docs/standards/README.md +35 -0
- package/docs/styles/README.md +89 -8
- package/docs/testing/README.md +175 -24
- package/docs/troubleshooting/README.md +50 -3
- package/docs/troubleshooting/common-issues.md +271 -5
- package/docs/troubleshooting/debugging.md +54 -1
- package/docs/troubleshooting/migration.md +54 -1
- package/docs/troubleshooting/organisation-context-setup.md +29 -3
- package/docs/troubleshooting/styling-issues.md +246 -4
- package/{src/components/DataTable/examples → examples/DataTable}/GroupingAggregationExample.tsx +1 -1
- package/examples/{components 2/DataTable/HierarchicalActionsExample.tsx → DataTable/HierarchicalActionsExample.tsx} +7 -6
- package/{src/components/DataTable/examples → examples/DataTable}/HierarchicalExample.tsx +8 -6
- package/examples/{components 2/DataTable/PerformanceExample.tsx → DataTable/PerformanceExample.tsx} +2 -2
- package/examples/{components 2/DataTable/index.ts → DataTable/index.ts} +1 -0
- package/{src/components/Dialog/examples → examples/Dialog}/HtmlDialogExample.tsx +3 -3
- package/examples/{components 2/Dialog/ScrollableDialogExample.tsx → Dialog/ScrollableDialogExample.tsx} +1 -1
- package/{src/components/Dialog/examples → examples/Dialog}/SmartDialogExample.tsx +1 -1
- package/examples/{components 2/Dialog/index.ts → Dialog/index.ts} +0 -3
- package/examples/{features/public-pages → PublicPages}/CorrectPublicPageImplementation.tsx +52 -17
- package/examples/{features/public-pages → PublicPages}/PublicEventPage.tsx +65 -35
- package/examples/{features/public-pages → PublicPages}/PublicPageApp.tsx +52 -18
- package/examples/{features/public-pages → PublicPages}/PublicPageUsageExample.tsx +28 -15
- package/examples/README.md +81 -33
- package/examples/index.ts +14 -12
- package/examples/{RBAC → rbac}/CompleteRBACExample.tsx +1 -1
- package/examples/{features/rbac → rbac}/EventBasedApp.tsx +4 -4
- package/examples/{features/rbac → rbac}/PermissionExample.tsx +5 -3
- package/package.json +21 -27
- package/src/__tests__/helpers/test-utils.tsx +29 -3
- package/src/__tests__/rbac/PagePermissionGuard.test.tsx +7 -5
- package/src/components/Alert/Alert.test.tsx +2 -2
- package/src/components/Alert/Alert.tsx +4 -4
- package/src/components/Avatar/Avatar.test.tsx +17 -6
- package/src/components/Badge/Badge.test.tsx +1 -1
- package/src/components/Badge/Badge.tsx +2 -2
- package/src/components/Button/Button.test.tsx +2 -2
- package/src/components/Button/Button.tsx +11 -7
- package/src/components/Calendar/Calendar.test.tsx +41 -8
- package/src/components/Calendar/Calendar.tsx +39 -36
- package/src/components/Card/Card.tsx +51 -13
- package/src/components/Checkbox/Checkbox.test.tsx +36 -12
- package/src/components/DataTable/DataTable.test.tsx +1 -1
- package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +13 -7
- package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +14 -42
- package/src/components/DataTable/__tests__/DataTable.export.test.tsx +13 -10
- package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +14 -11
- package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +4 -2
- package/src/components/DataTable/__tests__/DataTable.test.tsx +13 -7
- package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +13 -10
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +15 -11
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +12 -6
- package/src/components/DataTable/__tests__/keyboard.test.tsx +12 -6
- package/src/components/DataTable/__tests__/pagination.modes.test.tsx +10 -6
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +1 -1
- package/src/components/DataTable/components/DataTableBody.tsx +10 -25
- package/src/components/DataTable/components/DataTableCore.tsx +1 -1
- package/src/components/DataTable/components/FilterRow.tsx +3 -1
- package/src/components/DataTable/components/ImportModal.tsx +1 -1
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +9 -9
- package/src/components/DataTable/core/ColumnFactory.ts +6 -6
- package/src/components/DataTable/core/DataTableContext.tsx +14 -10
- package/src/components/DataTable/core/LocalDataAdapter.ts +2 -1
- package/src/components/DataTable/core/PluginRegistry.ts +3 -3
- package/src/components/DataTable/core/StateManager.ts +12 -11
- package/src/components/DataTable/core/__tests__/ActionManager.test.ts +104 -0
- package/src/components/DataTable/core/__tests__/DataManager.test.ts +101 -0
- package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +84 -0
- package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +102 -0
- package/src/components/DataTable/core/__tests__/StateManager.test.ts +104 -0
- package/src/components/DataTable/core/interfaces.ts +17 -17
- package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +124 -0
- package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +117 -0
- package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +102 -0
- package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +53 -0
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -2
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +9 -8
- package/src/components/DataTable/types.ts +5 -5
- package/src/components/DataTable/utils/aggregationUtils.ts +4 -4
- package/src/components/DataTable/utils/columnUtils.ts +3 -2
- package/src/components/DataTable/utils/debugTools.ts +1 -1
- package/src/components/DataTable/utils/exportUtils.ts +6 -6
- package/src/components/DataTable/utils/hierarchicalSorting.ts +6 -6
- package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -8
- package/src/components/DataTable/utils/index.ts +0 -1
- package/src/components/DataTable/utils/performanceUtils.ts +9 -4
- package/src/components/Dialog/Dialog.test.tsx +49 -27
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +13 -8
- package/src/components/EventSelector/EventSelector.test.tsx +60 -12
- package/src/components/EventSelector/EventSelector.tsx +38 -15
- package/src/components/EventSelector/index.ts +2 -2
- package/src/components/FileDisplay/FileDisplay.test.tsx +143 -85
- package/src/components/FileDisplay/FileDisplay.tsx +1 -0
- package/src/components/FileUpload/FileUpload.test.tsx +532 -152
- package/src/components/FileUpload/FileUpload.tsx +43 -8
- package/src/components/Footer/Footer.test.tsx +19 -14
- package/src/components/Form/Form.test.tsx +96 -14
- package/src/components/Form/Form.tsx +210 -1
- package/src/components/Form/index.ts +3 -7
- package/src/components/Header/Header.test.tsx +24 -17
- package/src/components/Header/Header.tsx +3 -1
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +2 -4
- package/src/components/Input/Input.test.tsx +61 -36
- package/src/components/Label/{__tests__/Label.test.tsx → Label.test.tsx} +2 -2
- package/src/components/Label/Label.tsx +2 -3
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +6 -5
- package/src/components/LoadingSpinner/LoadingSpinner.tsx +6 -2
- package/src/components/LoginForm/LoginForm.test.tsx +14 -13
- package/src/components/LoginForm/LoginForm.tsx +1 -1
- package/src/components/LoginForm/index.ts +7 -0
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +233 -20
- package/src/components/NavigationMenu/NavigationMenu.tsx +191 -55
- package/src/components/NavigationMenu/index.ts +1 -1
- package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +20 -11
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +1 -1
- package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.integration.test.tsx → PaceAppLayout.integration.test.tsx} +272 -79
- package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.performance.test.tsx → PaceAppLayout.performance.test.tsx} +155 -32
- package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.security.test.tsx → PaceAppLayout.security.test.tsx} +211 -65
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +498 -210
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +63 -64
- package/src/components/PaceAppLayout/test-setup.tsx +192 -0
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +193 -39
- package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.test.tsx +2 -2
- package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.tsx +10 -4
- package/src/components/PasswordChange/index.ts +2 -0
- package/src/components/Progress/Progress.test.tsx +11 -0
- package/src/components/Progress/Progress.tsx +1 -1
- package/src/components/Progress/index.ts +10 -0
- package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +2 -1
- package/src/components/PublicLayout/PublicLayout.test.tsx +1210 -0
- package/src/components/PublicLayout/PublicPageLayout.tsx +190 -36
- package/src/components/PublicLayout/PublicPageProvider.tsx +8 -7
- package/src/components/PublicLayout/index.ts +10 -28
- package/src/components/Select/Select.test.tsx +7 -7
- package/src/components/Select/Select.tsx +277 -11
- package/src/components/Select/index.ts +1 -2
- package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +232 -0
- package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +40 -19
- package/src/components/Table/{__tests__/Table.test.tsx → Table.test.tsx} +94 -41
- package/src/components/Tabs/Tabs.test.tsx +10 -9
- package/src/components/Tabs/Tabs.tsx +61 -33
- package/src/components/Textarea/Textarea.test.tsx +31 -18
- package/src/components/Toast/Toast.tsx +2 -2
- package/src/components/Tooltip/Tooltip.test.tsx +1 -1
- package/src/components/UserMenu/UserMenu.test.tsx +7 -6
- package/src/components/UserMenu/UserMenu.tsx +2 -2
- package/src/components/index.ts +5 -4
- package/src/constants/performance.ts +19 -8
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +21 -22
- package/src/hooks/__tests__/useEvents.unit.test.ts +5 -4
- package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +2 -2
- package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -0
- package/src/hooks/__tests__/usePermissionCache.unit.test.ts +16 -11
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +1 -3
- package/src/hooks/__tests__/usePublicEvent.unit.test.ts +1 -3
- package/src/hooks/__tests__/useRBAC.unit.test.ts +24 -2
- package/src/hooks/index.ts +4 -0
- package/src/hooks/public/index.ts +2 -0
- package/src/hooks/public/usePublicEvent.ts +4 -6
- package/src/hooks/public/usePublicRouteParams.ts +1 -1
- package/src/hooks/services/useAuth.ts +2 -4
- package/src/hooks/services/useCurrentEvent.ts +1 -1
- package/src/hooks/useAppConfig.ts +1 -1
- package/src/hooks/useDataTablePerformance.ts +2 -2
- package/src/hooks/useEventTheme.ts +1 -1
- package/src/hooks/useEvents.ts +51 -10
- package/src/hooks/useOrganisationPermissions.test.ts +3 -3
- package/src/hooks/useOrganisationPermissions.ts +1 -1
- package/src/hooks/useOrganisationSecurity.ts +2 -2
- package/src/hooks/usePermissionCache.test.ts +9 -9
- package/src/hooks/usePermissionCache.ts +2 -2
- package/src/index.ts +19 -12
- package/src/providers/OrganisationProvider.tsx +73 -9
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
- package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
- package/src/providers/__tests__/EventProvider.test.tsx +24 -15
- package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
- package/src/providers/index.ts +0 -3
- package/src/providers/services/AuthServiceProvider.tsx +2 -17
- package/src/providers/services/EventServiceProvider.tsx +11 -16
- package/src/providers/services/InactivityServiceProvider.tsx +9 -12
- package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
- package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
- package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
- package/src/rbac/adapters.tsx +1 -1
- package/src/rbac/api.ts +20 -4
- package/src/rbac/audit-enhanced.ts +47 -2
- package/src/rbac/audit.ts +47 -2
- package/src/rbac/components/NavigationGuard.tsx +1 -1
- package/src/rbac/components/NavigationProvider.test.tsx +7 -6
- package/src/rbac/components/NavigationProvider.tsx +1 -1
- package/src/rbac/components/PagePermissionGuard.tsx +1 -1
- package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
- package/src/rbac/components/PagePermissionProvider.tsx +1 -1
- package/src/rbac/components/PermissionEnforcer.tsx +1 -1
- package/src/rbac/components/RoleBasedRouter.tsx +1 -1
- package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
- package/src/rbac/components/SecureDataProvider.tsx +1 -1
- package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
- package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
- package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
- package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
- package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
- package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
- package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
- package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
- package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
- package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
- package/src/rbac/hooks/index.ts +3 -0
- package/src/rbac/hooks/usePermissions.ts +31 -85
- package/src/rbac/hooks/useRBAC.test.ts +13 -1
- package/src/rbac/hooks/useRBAC.ts +13 -67
- package/src/rbac/hooks/useResolvedScope.ts +11 -0
- package/src/rbac/hooks/useSecureSupabase.ts +308 -0
- package/src/rbac/index.ts +3 -0
- package/src/rbac/secureClient.ts +53 -6
- package/src/rbac/security.ts +37 -1
- package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
- package/src/rbac/types.ts +3 -2
- package/src/services/AuthService.ts +33 -25
- package/src/services/EventService.ts +56 -44
- package/src/services/InactivityService.ts +33 -53
- package/src/services/OrganisationService.ts +36 -40
- package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
- package/src/services/__tests__/EventService.test.ts +67 -33
- package/src/services/interfaces/IEventService.ts +1 -1
- package/src/styles/core.css +2 -2
- package/src/styles/index.ts +1 -5
- package/src/types/__tests__/guards.test.ts +1 -1
- package/src/types/__tests__/type-validation.test.ts +0 -1
- package/src/types/auth.ts +42 -2
- package/src/types/core.ts +251 -0
- package/src/types/database.ts +11 -496
- package/src/types/event.ts +102 -0
- package/src/types/file-reference.ts +6 -4
- package/src/types/guards.ts +2 -1
- package/src/types/index.ts +48 -14
- package/src/types/lodash.debounce.d.ts +15 -0
- package/src/types/organisation.ts +14 -10
- package/src/types/supabase.ts +15 -17
- package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
- package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
- package/src/utils/app/appNameResolver.ts +1 -1
- package/src/utils/dynamic/dynamicUtils.ts +3 -2
- package/src/utils/file-reference/index.ts +25 -6
- package/src/utils/security/secureErrors.ts +1 -1
- package/src/utils/validation/index.ts +6 -12
- package/src/utils/validation/validationUtils.ts +0 -13
- package/dist/UnifiedAuthProvider-B37ATQHE.js +0 -16
- package/dist/auth-DReDSLq9.d.ts +0 -16
- package/dist/chunk-3JI76CYK.js +0 -2444
- package/dist/chunk-3JI76CYK.js.map +0 -1
- package/dist/chunk-56XJ3TU6.js +0 -11
- package/dist/chunk-56XJ3TU6.js.map +0 -1
- package/dist/chunk-5MT24GKJ.js.map +0 -1
- package/dist/chunk-7QCC6MCP.js +0 -288
- package/dist/chunk-BESYRHQM.js.map +0 -1
- package/dist/chunk-BJPBT3CU.js +0 -21
- package/dist/chunk-BJPBT3CU.js.map +0 -1
- package/dist/chunk-BVYWGZVV.js.map +0 -1
- package/dist/chunk-CX5M4ZAG.js.map +0 -1
- package/dist/chunk-D7LCGMVS.js.map +0 -1
- package/dist/chunk-EGI6MUL6.js +0 -27
- package/dist/chunk-EGI6MUL6.js.map +0 -1
- package/dist/chunk-ERISIBYU.js.map +0 -1
- package/dist/chunk-HRO5HWN2.js.map +0 -1
- package/dist/chunk-HZLDFOE4.js.map +0 -1
- package/dist/chunk-JISYG63F.js +0 -70
- package/dist/chunk-JISYG63F.js.map +0 -1
- package/dist/chunk-LIMSTKYD.js +0 -61
- package/dist/chunk-LIMSTKYD.js.map +0 -1
- package/dist/chunk-OWAG3GSU.js.map +0 -1
- package/dist/chunk-PPMP5J6T.js.map +0 -1
- package/dist/chunk-Q5QRDWKI.js.map +0 -1
- package/dist/chunk-S5OFRT4M.js.map +0 -1
- package/dist/chunk-SBVILCCA.js.map +0 -1
- package/dist/chunk-TUMEWN34.js +0 -15
- package/dist/chunk-TUMEWN34.js.map +0 -1
- package/dist/chunk-XDNLUEXI.js +0 -138
- package/dist/chunk-XJ2HZOBU.js.map +0 -1
- package/dist/chunk-ZYTYSTO5.js.map +0 -1
- package/dist/chunk-ZZ2SS7NI.js +0 -237
- package/dist/chunk-ZZ2SS7NI.js.map +0 -1
- package/dist/database-C6jy7EOu.d.ts +0 -500
- package/dist/organisation-D6qRDtbF.d.ts +0 -93
- package/dist/schema-DTDZQe2u.d.ts +0 -28
- package/dist/unified-DQ4VcT7H.d.ts +0 -198
- package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
- package/dist/validation.d.ts +0 -47
- package/dist/validation.js +0 -24
- package/dist/validation.js.map +0 -1
- package/docs/DOCUMENTATION_AUDIT.md +0 -172
- package/docs/DOCUMENTATION_STANDARD.md +0 -137
- package/docs/api/classes/PublicErrorBoundary.md +0 -132
- package/docs/api/interfaces/EventLogoProps.md +0 -152
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
- package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
- package/docs/architecture/rpc-function-standards.md +0 -1106
- package/docs/getting-started/consuming-app-vite-config.md +0 -239
- package/docs/implementation-guides/event-theming-summary.md +0 -226
- package/docs/implementation-guides/public-pages-advanced.md +0 -1038
- package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
- package/docs/migration/v0.4.16-css-first-approach.md +0 -312
- package/docs/migration/v0.4.17-source-path-fix.md +0 -235
- package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
- package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
- package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
- package/docs/rbac/README-rbac-rls-integration.md +0 -374
- package/docs/styles/usage.md +0 -227
- package/docs/testing/visual-testing.md +0 -120
- package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
- package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
- package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
- package/docs/troubleshooting/database-view-compatibility.md +0 -125
- package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
- package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
- package/examples/RBAC/EventBasedApp.tsx +0 -239
- package/examples/RBAC/PermissionExample.tsx +0 -151
- package/examples/STRUCTURE.md +0 -125
- package/examples/components 2/DataTable/HierarchicalExample.tsx +0 -475
- package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
- package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
- package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
- package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
- package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
- package/examples/components 2/index.ts +0 -11
- package/examples/features/index.ts +0 -12
- package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
- package/examples/features/rbac/index.ts +0 -13
- package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
- package/examples/public-pages/PublicEventPage.tsx +0 -274
- package/examples/public-pages/PublicPageApp.tsx +0 -308
- package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
- package/examples/public-pages/index.ts +0 -14
- package/src/__tests__/TEST_STANDARD.md +0 -1008
- package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
- package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
- package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
- package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
- package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
- package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
- package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
- package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
- package/src/components/Dialog/README.md +0 -804
- package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
- package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
- package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
- package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
- package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
- package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
- package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
- package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
- package/src/components/Dialog/utils/safeHtml.ts +0 -185
- package/src/components/EventSelector/types.ts +0 -79
- package/src/components/Form/FormErrorSummary.tsx +0 -113
- package/src/components/Form/FormField.tsx +0 -249
- package/src/components/Form/FormFieldset.tsx +0 -127
- package/src/components/Form/FormLiveRegion.tsx +0 -198
- package/src/components/Input/__mocks__/Input.tsx +0 -2
- package/src/components/NavigationMenu/types.ts +0 -85
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
- package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
- package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
- package/src/components/PasswordReset/index.ts +0 -2
- package/src/components/ProtectedRoute/README.md +0 -164
- package/src/components/PublicLayout/EventLogo.tsx +0 -175
- package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
- package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
- package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
- package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
- package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
- package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
- package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
- package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
- package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
- package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
- package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
- package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
- package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
- package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
- package/src/components/Select/hooks.ts +0 -289
- package/src/hooks/useCounter.test.ts +0 -131
- package/src/hooks/useDebounce.test.ts +0 -375
- package/src/providers/AuthProvider.tsx +0 -15
- package/src/providers/EventProvider.tsx +0 -16
- package/src/providers/InactivityProvider.tsx +0 -15
- package/src/providers/OrganisationProvider.context.test.tsx +0 -169
- package/src/providers/UnifiedAuthProvider.tsx +0 -15
- package/src/types/theme.ts +0 -6
- package/src/types/unified.ts +0 -265
- package/src/utils/appConfig.ts +0 -47
- package/src/utils/appIdResolver.test.ts +0 -499
- package/src/utils/appIdResolver.ts +0 -130
- package/src/utils/appNameResolver.simple.test.ts +0 -212
- package/src/utils/appNameResolver.test.ts +0 -121
- package/src/utils/appNameResolver.ts +0 -191
- package/src/utils/audit.ts +0 -127
- package/src/utils/auth-utils.ts +0 -96
- package/src/utils/bundleAnalysis.ts +0 -129
- package/src/utils/debugLogger.ts +0 -67
- package/src/utils/deviceFingerprint.ts +0 -215
- package/src/utils/dynamicUtils.ts +0 -105
- package/src/utils/file-reference.test.ts +0 -788
- package/src/utils/file-reference.ts +0 -519
- package/src/utils/formatDate.test.ts +0 -237
- package/src/utils/formatting.ts +0 -170
- package/src/utils/lazyLoad.tsx +0 -44
- package/src/utils/logger.ts +0 -179
- package/src/utils/organisationContext.test.ts +0 -322
- package/src/utils/organisationContext.ts +0 -153
- package/src/utils/performanceBenchmark.ts +0 -64
- package/src/utils/performanceBudgets.ts +0 -110
- package/src/utils/permissionTypes.ts +0 -37
- package/src/utils/permissionUtils.test.ts +0 -393
- package/src/utils/permissionUtils.ts +0 -34
- package/src/utils/sanitization.ts +0 -264
- package/src/utils/schemaUtils.ts +0 -37
- package/src/utils/secureDataAccess.test.ts +0 -711
- package/src/utils/secureDataAccess.ts +0 -377
- package/src/utils/secureErrors.ts +0 -79
- package/src/utils/security.ts +0 -156
- package/src/utils/securityMonitor.ts +0 -45
- package/src/utils/sessionTracking.ts +0 -126
- package/src/utils/validation.ts +0 -111
- package/src/utils/validationUtils.ts +0 -120
- package/src/validation/index.ts +0 -12
- /package/dist/{DataTable-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-B37ATQHE.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
- /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
- /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
- /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
- /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
- /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
- /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
- /package/examples/{RBAC → rbac}/index.ts +0 -0
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
lastUpdated: 2025-10-29T22:43:00+11:00
|
|
3
|
-
version: 0.5.76
|
|
4
|
-
reviewedBy: content-audit
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Migration Guide: v0.4.17 Source Path Fix
|
|
8
|
-
|
|
9
|
-
This guide explains the critical fix in pace-core v0.4.17 that resolves the @source directive path issue.
|
|
10
|
-
|
|
11
|
-
## 🎯 What's Fixed in v0.4.17
|
|
12
|
-
|
|
13
|
-
**Issue**: The @source directives in `core.css` were using incorrect relative paths, preventing Tailwind v4 from scanning the pace-core source files.
|
|
14
|
-
|
|
15
|
-
**Root Cause**: Since `core.css` is located in `src/styles/core.css`, the relative paths `./src/**/*.{js,ts,jsx,tsx}` were looking for `dist/src/` which doesn't exist.
|
|
16
|
-
|
|
17
|
-
## ✅ The Fix
|
|
18
|
-
|
|
19
|
-
### Before (v0.4.16 - Incorrect)
|
|
20
|
-
```css
|
|
21
|
-
/* @source directives for Tailwind v4 content scanning */
|
|
22
|
-
@source "./src/**/*.{js,ts,jsx,tsx}";
|
|
23
|
-
@source "./src/components/**/*.{js,ts,jsx,tsx}";
|
|
24
|
-
@source "./src/providers/**/*.{js,ts,jsx,tsx}";
|
|
25
|
-
@source "./src/hooks/**/*.{js,ts,jsx,tsx}";
|
|
26
|
-
@source "./src/utils/**/*.{js,ts,jsx,tsx}";
|
|
27
|
-
@source "./src/types/**/*.{js,ts,jsx,tsx}";
|
|
28
|
-
@source "./src/validation/**/*.{js,ts,jsx,tsx}";
|
|
29
|
-
@source "./src/rbac/**/*.{js,ts,jsx,tsx}";
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### After (v0.4.17 - Correct)
|
|
33
|
-
```css
|
|
34
|
-
/* @source directives for Tailwind v4 content scanning */
|
|
35
|
-
@source "../src/**/*.{js,ts,jsx,tsx}";
|
|
36
|
-
@source "../src/components/**/*.{js,ts,jsx,tsx}";
|
|
37
|
-
@source "../src/providers/**/*.{js,ts,jsx,tsx}";
|
|
38
|
-
@source "../src/hooks/**/*.{js,ts,jsx,tsx}";
|
|
39
|
-
@source "../src/utils/**/*.{js,ts,jsx,tsx}";
|
|
40
|
-
@source "../src/types/**/*.{js,ts,jsx,tsx}";
|
|
41
|
-
@source "../src/validation/**/*.{js,ts,jsx,tsx}";
|
|
42
|
-
@source "../src/rbac/**/*.{js,ts,jsx,tsx}";
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## 📁 File Structure Explanation
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
node_modules/@jmruthers/pace-core/
|
|
49
|
-
├── dist/
|
|
50
|
-
│ └── styles/
|
|
51
|
-
│ └── core.css ← @source directives are here
|
|
52
|
-
├── src/ ← Source files are here
|
|
53
|
-
│ ├── components/
|
|
54
|
-
│ ├── providers/
|
|
55
|
-
│ ├── hooks/
|
|
56
|
-
│ └── ...
|
|
57
|
-
└── package.json
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**Path Resolution**:
|
|
61
|
-
- From `src/styles/core.css` to `src/` requires `../src/`
|
|
62
|
-
- The `../` goes up one directory from `src/styles/` to `src/`
|
|
63
|
-
- Then `src/` goes into the source directory
|
|
64
|
-
|
|
65
|
-
## 🚀 Migration Steps
|
|
66
|
-
|
|
67
|
-
### 1. Update pace-core
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
npm install @jmruthers/pace-core@latest
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### 2. Verify the Fix
|
|
74
|
-
|
|
75
|
-
Check that your CSS file size increases significantly:
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
# Before (v0.4.16) - ~21KB
|
|
79
|
-
# After (v0.4.17) - 50-100+ KB
|
|
80
|
-
ls -la dist/assets/*.css
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### 3. Test Component Styling
|
|
84
|
-
|
|
85
|
-
Create a test component to verify styling:
|
|
86
|
-
|
|
87
|
-
```tsx
|
|
88
|
-
// src/TestComponent.tsx
|
|
89
|
-
import { Button, Card } from '@jmruthers/pace-core';
|
|
90
|
-
|
|
91
|
-
export function TestComponent() {
|
|
92
|
-
return (
|
|
93
|
-
<div className="p-8 space-y-4">
|
|
94
|
-
<h1 className="text-2xl font-bold text-main-900">Path Fix Test</h1>
|
|
95
|
-
|
|
96
|
-
<Card className="p-4 border border-main-300">
|
|
97
|
-
<h2 className="text-lg font-semibold text-sec-800 mb-2">
|
|
98
|
-
Component Styling Test
|
|
99
|
-
</h2>
|
|
100
|
-
<div className="space-y-2">
|
|
101
|
-
<Button
|
|
102
|
-
variant="primary"
|
|
103
|
-
className="bg-main-600 text-main-50 hover:bg-main-700"
|
|
104
|
-
>
|
|
105
|
-
Primary Button
|
|
106
|
-
</Button>
|
|
107
|
-
<Button
|
|
108
|
-
variant="secondary"
|
|
109
|
-
className="bg-sec-500 text-main-50 hover:bg-sec-600"
|
|
110
|
-
>
|
|
111
|
-
Secondary Button
|
|
112
|
-
</Button>
|
|
113
|
-
<div className="p-2 bg-acc-100 text-acc-800 rounded">
|
|
114
|
-
Accent colored div
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
</Card>
|
|
118
|
-
</div>
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
**Expected Result**:
|
|
124
|
-
- ✅ Proper PACE Core colors (main, sec, acc palettes)
|
|
125
|
-
- ✅ Correct spacing and typography
|
|
126
|
-
- ✅ Hover effects working
|
|
127
|
-
- ✅ Component styling complete
|
|
128
|
-
|
|
129
|
-
## 🔍 Verification Steps
|
|
130
|
-
|
|
131
|
-
### 1. Check CSS Output Size
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
# Check CSS file size
|
|
135
|
-
ls -la dist/assets/*.css
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
**Expected Results**:
|
|
139
|
-
- ✅ **50-100+ kB** (with all utility classes)
|
|
140
|
-
- ❌ **20-30 kB** (missing classes - indicates scanning issue)
|
|
141
|
-
|
|
142
|
-
### 2. Count CSS Rules
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
# Count CSS rules (approximate)
|
|
146
|
-
grep -c "\.bg-\|\.text-\|\.p-\|\.m-\|\.w-\|\.h-\|\.flex\|\.grid" dist/assets/*.css
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
**Expected Results**:
|
|
150
|
-
- ✅ **800+ rules** (complete utility set)
|
|
151
|
-
- ❌ **<300 rules** (incomplete - scanning issue)
|
|
152
|
-
|
|
153
|
-
### 3. Check Browser Dev Tools
|
|
154
|
-
|
|
155
|
-
Inspect elements to verify:
|
|
156
|
-
1. **Open browser dev tools**
|
|
157
|
-
2. **Inspect the test component**
|
|
158
|
-
3. **Check computed styles** for:
|
|
159
|
-
- `background-color` values (should show PACE Core colors)
|
|
160
|
-
- `color` values (should show proper text colors)
|
|
161
|
-
- `padding`, `margin` values (should show proper spacing)
|
|
162
|
-
|
|
163
|
-
## 📊 Before vs After
|
|
164
|
-
|
|
165
|
-
| Aspect | v0.4.16 (Broken) | v0.4.17 (Fixed) |
|
|
166
|
-
|--------|------------------|-----------------|
|
|
167
|
-
| **@source paths** | `./src/**/*.{js,ts,jsx,tsx}` | `../src/**/*.{js,ts,jsx,tsx}` |
|
|
168
|
-
| **Path resolution** | Looks for `dist/src/` (doesn't exist) | Looks for `src/` (correct) |
|
|
169
|
-
| **CSS Rules** | ~292 rules | 800+ rules |
|
|
170
|
-
| **File Size** | 20-30 kB | 50-100+ kB |
|
|
171
|
-
| **Component Styling** | Incomplete | Complete |
|
|
172
|
-
| **Colors** | Missing | Full palette |
|
|
173
|
-
| **Spacing** | Limited | Complete |
|
|
174
|
-
|
|
175
|
-
## 🎉 Success Indicators
|
|
176
|
-
|
|
177
|
-
You'll know the fix was successful when:
|
|
178
|
-
|
|
179
|
-
- ✅ **CSS file is 50-100+ kB**
|
|
180
|
-
- ✅ **Components render with proper styling**
|
|
181
|
-
- ✅ **PACE Core colors work** (`bg-main-600`, `text-sec-700`, etc.)
|
|
182
|
-
- ✅ **Spacing and typography are correct**
|
|
183
|
-
- ✅ **Hover effects and transitions work**
|
|
184
|
-
- ✅ **No console errors about missing classes**
|
|
185
|
-
|
|
186
|
-
## 🛠️ Troubleshooting
|
|
187
|
-
|
|
188
|
-
### Issue: Still only 292 CSS rules
|
|
189
|
-
|
|
190
|
-
**Possible Causes**:
|
|
191
|
-
1. Using old package version
|
|
192
|
-
2. Cached build files
|
|
193
|
-
3. @source directives still not working
|
|
194
|
-
|
|
195
|
-
**Solutions**:
|
|
196
|
-
1. **Verify package version**:
|
|
197
|
-
```bash
|
|
198
|
-
npm list @jmruthers/pace-core
|
|
199
|
-
# Should show v0.4.17+
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
2. **Clear all caches**:
|
|
203
|
-
```bash
|
|
204
|
-
rm -rf dist .vite node_modules package-lock.json
|
|
205
|
-
npm install
|
|
206
|
-
npm run build
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
3. **Check @source directives**:
|
|
210
|
-
```bash
|
|
211
|
-
# Verify correct paths in core.css
|
|
212
|
-
grep -n "@source" node_modules/@jmruthers/pace-core/src/styles/core.css
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### Issue: Components still unstyled
|
|
216
|
-
|
|
217
|
-
**Solution**:
|
|
218
|
-
1. Verify CSS import: `import '@jmruthers/pace-core/src/styles/core.css'`
|
|
219
|
-
2. Restart dev server after changes
|
|
220
|
-
3. Check browser dev tools for missing classes
|
|
221
|
-
|
|
222
|
-
## 📚 Additional Resources
|
|
223
|
-
|
|
224
|
-
- [CSS-First Migration Guide](./v0.4.16-css-first-approach.md)
|
|
225
|
-
- [Troubleshooting Guide](../troubleshooting/tailwind-content-scanning.md)
|
|
226
|
-
- [Vite Configuration Guide](../consuming-app-vite-config.md)
|
|
227
|
-
|
|
228
|
-
## 🆘 Need Help?
|
|
229
|
-
|
|
230
|
-
If you're still experiencing issues after following this guide:
|
|
231
|
-
|
|
232
|
-
1. **Check the troubleshooting guides** above
|
|
233
|
-
2. **Verify your configuration** matches the examples
|
|
234
|
-
3. **Test with a minimal example** to isolate the issue
|
|
235
|
-
4. **Contact support** with specific error messages and configuration details
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
# RBAC Event Context Loading - How It Works
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
For event-based apps (`requires_event: true`), RBAC waits for event context to be ready before loading permissions. This document explains how this works and answers common questions.
|
|
6
|
-
|
|
7
|
-
## How RBAC Detects Event Context Availability
|
|
8
|
-
|
|
9
|
-
### Automatic Detection via React Hooks
|
|
10
|
-
|
|
11
|
-
RBAC uses React's dependency system to automatically detect when event context becomes available:
|
|
12
|
-
|
|
13
|
-
1. **`useRBAC` hook watches event state**:
|
|
14
|
-
- `eventLoading` - boolean indicating if events are loading
|
|
15
|
-
- `selectedEvent` - the currently selected event object (or null)
|
|
16
|
-
|
|
17
|
-
2. **`loadRBACContext` callback depends on event state**:
|
|
18
|
-
```typescript
|
|
19
|
-
const loadRBACContext = useCallback(async () => {
|
|
20
|
-
// ... loading logic
|
|
21
|
-
}, [selectedEvent, eventLoading, ...other dependencies]);
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
3. **`useEffect` automatically re-runs when callback changes**:
|
|
25
|
-
```typescript
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
loadRBACContext();
|
|
28
|
-
}, [loadRBACContext]);
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Flow Diagram
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
1. Component mounts → useRBAC called
|
|
35
|
-
2. loadRBACContext created (depends on eventLoading, selectedEvent)
|
|
36
|
-
3. useEffect runs → calls loadRBACContext()
|
|
37
|
-
4. If eventLoading=true OR selectedEvent=null:
|
|
38
|
-
→ Log: "Waiting for event context"
|
|
39
|
-
→ Set isLoading=true
|
|
40
|
-
→ Return early (don't load RBAC)
|
|
41
|
-
5. When eventLoading changes to false AND selectedEvent becomes available:
|
|
42
|
-
→ loadRBACContext callback is recreated (dependency changed)
|
|
43
|
-
→ useEffect detects callback changed → re-runs
|
|
44
|
-
→ loadRBACContext() called again
|
|
45
|
-
→ This time: eventLoading=false AND selectedEvent exists
|
|
46
|
-
→ Proceeds to load RBAC context
|
|
47
|
-
→ Log: "Loading RBAC context"
|
|
48
|
-
→ Log: "RBAC context loaded successfully"
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Should You See the "Waiting for Event Context" Log?
|
|
52
|
-
|
|
53
|
-
**Yes, you should see this log** when:
|
|
54
|
-
- App has `requires_event: true`
|
|
55
|
-
- Event context is loading (`eventLoading: true`) OR no event selected (`selectedEvent: null`)
|
|
56
|
-
|
|
57
|
-
**Log level**: `INFO` (should be visible in console)
|
|
58
|
-
|
|
59
|
-
**Log message**:
|
|
60
|
-
```
|
|
61
|
-
[useRBAC] Waiting for event context before loading RBAC context
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**If you don't see this log**, it might mean:
|
|
65
|
-
1. App doesn't have `requires_event: true` configured
|
|
66
|
-
2. Event context loads too quickly (race condition)
|
|
67
|
-
3. Log level is set too high (unlikely, as it's INFO level)
|
|
68
|
-
|
|
69
|
-
## Is RBAC Loading Automatic?
|
|
70
|
-
|
|
71
|
-
**Yes, RBAC loading is completely automatic**. You don't need to call anything explicitly.
|
|
72
|
-
|
|
73
|
-
### How It Works Automatically
|
|
74
|
-
|
|
75
|
-
1. **`useRBAC` hook is called automatically** when:
|
|
76
|
-
- Component using RBAC mounts (e.g., `NavigationMenu`, `PagePermissionGuard`)
|
|
77
|
-
- Or when you explicitly call `useRBAC()` in a component
|
|
78
|
-
|
|
79
|
-
2. **React's dependency system triggers re-runs**:
|
|
80
|
-
- When `eventLoading` changes from `true` → `false`
|
|
81
|
-
- When `selectedEvent` changes from `null` → object
|
|
82
|
-
- The `loadRBACContext` callback is recreated
|
|
83
|
-
- The `useEffect` detects the change and re-runs
|
|
84
|
-
- RBAC context loads automatically
|
|
85
|
-
|
|
86
|
-
### What You Need to Do
|
|
87
|
-
|
|
88
|
-
**Nothing!** Just ensure:
|
|
89
|
-
- ✅ `setupRBAC(supabase)` is called in your app initialization
|
|
90
|
-
- ✅ `UnifiedAuthProvider` has `appConfig={{ requires_event: true }}` for event-based apps
|
|
91
|
-
- ✅ `EventProvider` is wrapping your app (for event-based apps)
|
|
92
|
-
- ✅ Event context is loading correctly
|
|
93
|
-
|
|
94
|
-
## How to Manually Trigger RBAC Loading (For Testing)
|
|
95
|
-
|
|
96
|
-
### Option 1: Force Re-render
|
|
97
|
-
|
|
98
|
-
If you need to manually trigger RBAC loading for testing:
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
import { useRBAC } from '@jmruthers/pace-core/rbac';
|
|
102
|
-
|
|
103
|
-
function TestComponent() {
|
|
104
|
-
const { isLoading, error, permissionMap } = useRBAC();
|
|
105
|
-
const [forceReload, setForceReload] = useState(0);
|
|
106
|
-
|
|
107
|
-
const manualReload = () => {
|
|
108
|
-
setForceReload(prev => prev + 1);
|
|
109
|
-
// This will cause useRBAC to re-run
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
return (
|
|
113
|
-
<div>
|
|
114
|
-
<button onClick={manualReload}>Reload RBAC</button>
|
|
115
|
-
<div>Loading: {isLoading ? 'Yes' : 'No'}</div>
|
|
116
|
-
<div>Permissions: {Object.keys(permissionMap).length}</div>
|
|
117
|
-
</div>
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Option 2: Call RPC Directly (Advanced)
|
|
123
|
-
|
|
124
|
-
For debugging, you can call the RPC function directly:
|
|
125
|
-
|
|
126
|
-
```typescript
|
|
127
|
-
import { getEngine } from '@jmruthers/pace-core/rbac';
|
|
128
|
-
|
|
129
|
-
async function testRBAC() {
|
|
130
|
-
const engine = getEngine();
|
|
131
|
-
|
|
132
|
-
// Test app resolution
|
|
133
|
-
const appContext = await engine.resolveAppContext({
|
|
134
|
-
userId: 'your-user-id',
|
|
135
|
-
appName: 'TRAC'
|
|
136
|
-
});
|
|
137
|
-
console.log('App context:', appContext);
|
|
138
|
-
|
|
139
|
-
// Test permission map
|
|
140
|
-
const permissionMap = await engine.getPermissionMap({
|
|
141
|
-
userId: 'your-user-id',
|
|
142
|
-
scope: {
|
|
143
|
-
organisationId: 'your-org-id',
|
|
144
|
-
eventId: 'your-event-id',
|
|
145
|
-
appId: appContext?.appId
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
console.log('Permission map:', permissionMap);
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Option 3: Check Console Logs
|
|
153
|
-
|
|
154
|
-
The fix includes detailed logging:
|
|
155
|
-
|
|
156
|
-
1. **When waiting**: `[useRBAC] Waiting for event context before loading RBAC context`
|
|
157
|
-
2. **When loading**: `[useRBAC] Loading RBAC context`
|
|
158
|
-
3. **When successful**: `[useRBAC] RBAC context loaded successfully` (with permission count)
|
|
159
|
-
|
|
160
|
-
## Troubleshooting
|
|
161
|
-
|
|
162
|
-
### RBAC Not Loading After Event Context Ready
|
|
163
|
-
|
|
164
|
-
**Symptoms**:
|
|
165
|
-
- Event context loads (`eventLoading: false`, `selectedEvent` set)
|
|
166
|
-
- No RBAC loading logs appear
|
|
167
|
-
- Permission map remains empty
|
|
168
|
-
|
|
169
|
-
**Check**:
|
|
170
|
-
1. ✅ Verify `appConfig={{ requires_event: true }}` in `UnifiedAuthProvider`
|
|
171
|
-
2. ✅ Verify database has `requires_event: true` for your app
|
|
172
|
-
3. ✅ Check console for "Waiting for event context" log (should appear first)
|
|
173
|
-
4. ✅ Check console for "Loading RBAC context" log (should appear after event ready)
|
|
174
|
-
5. ✅ Verify `selectedEvent` is actually set (not null)
|
|
175
|
-
6. ✅ Verify `eventLoading` is actually `false` (not `true`)
|
|
176
|
-
|
|
177
|
-
**If still not working**:
|
|
178
|
-
- Check browser console for any errors
|
|
179
|
-
- Verify `setupRBAC(supabase)` was called
|
|
180
|
-
- Check that `useRBAC` hook is being called somewhere (NavigationMenu calls it automatically)
|
|
181
|
-
|
|
182
|
-
### Logs Not Appearing
|
|
183
|
-
|
|
184
|
-
**If you don't see any logs**:
|
|
185
|
-
1. Check log level - logs are `INFO` level, should be visible
|
|
186
|
-
2. Check browser console filter settings
|
|
187
|
-
3. Verify RBAC logger is configured correctly
|
|
188
|
-
|
|
189
|
-
### Permission Map Still Empty
|
|
190
|
-
|
|
191
|
-
**If permission map is empty after RBAC loads**:
|
|
192
|
-
1. Check "RBAC context loaded successfully" log - what's the `permissionCount`?
|
|
193
|
-
2. If `permissionCount: 0`, check:
|
|
194
|
-
- User has event-app role assigned
|
|
195
|
-
- Permissions exist for that role in database
|
|
196
|
-
- Event ID matches the selected event
|
|
197
|
-
- Organisation ID matches user's organisation
|
|
198
|
-
|
|
199
|
-
## Expected Console Log Sequence
|
|
200
|
-
|
|
201
|
-
For event-based apps, you should see this sequence:
|
|
202
|
-
|
|
203
|
-
```
|
|
204
|
-
1. [RBAC INFO] RBAC system initialized successfully
|
|
205
|
-
2. [useRBAC] Waiting for event context before loading RBAC context
|
|
206
|
-
{ eventLoading: true, hasSelectedEvent: false, appName: "TRAC" }
|
|
207
|
-
3. [useRBAC] Loading RBAC context
|
|
208
|
-
{ appName: "TRAC", requiresEvent: true, hasSelectedEvent: true, ... }
|
|
209
|
-
4. [useRBAC] RBAC context loaded successfully
|
|
210
|
-
{ appName: "TRAC", permissionCount: 32, ... }
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Summary
|
|
214
|
-
|
|
215
|
-
- ✅ **RBAC detection is automatic** - React hooks handle it
|
|
216
|
-
- ✅ **You should see "Waiting" log** - when event is loading
|
|
217
|
-
- ✅ **RBAC loads automatically** - when event context becomes ready
|
|
218
|
-
- ✅ **No manual triggering needed** - but you can force re-render for testing
|
|
219
|
-
- ✅ **Detailed logs included** - to help debug issues
|
|
220
|
-
|
|
221
|
-
The fix ensures RBAC waits for event context before loading, preventing NetworkError and ensuring permissions load correctly for event-based apps.
|
|
222
|
-
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# RBAC Login Safety Fix - v0.5.148
|
|
2
|
-
|
|
3
|
-
## Problem
|
|
4
|
-
|
|
5
|
-
After RBAC changes, users reported login failures. Investigation revealed:
|
|
6
|
-
1. **CORS error** - Network/infrastructure issue (separate from RBAC)
|
|
7
|
-
2. **Potential hook errors** - `useOrganisations()` might throw when called before authentication
|
|
8
|
-
|
|
9
|
-
## Root Cause
|
|
10
|
-
|
|
11
|
-
`useRBAC` hook calls `useOrganisations()` unconditionally (required by React hooks rules). If `useOrganisations()` throws an error when there's no authenticated user, it could break the login flow.
|
|
12
|
-
|
|
13
|
-
## Fix Applied
|
|
14
|
-
|
|
15
|
-
Wrapped `useOrganisations()` call in try-catch, similar to how `useEvents()` is handled:
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
// Safely get organisation context - may not be available during login
|
|
19
|
-
let selectedOrganisation: { id: string } | null = null;
|
|
20
|
-
let orgContextReady = false;
|
|
21
|
-
let orgLoading = false;
|
|
22
|
-
try {
|
|
23
|
-
const orgContext = useOrganisations();
|
|
24
|
-
selectedOrganisation = orgContext.selectedOrganisation;
|
|
25
|
-
orgContextReady = orgContext.isContextReady;
|
|
26
|
-
orgLoading = orgContext.isLoading;
|
|
27
|
-
} catch (error) {
|
|
28
|
-
// Organisation provider not available or user not authenticated - this is OK
|
|
29
|
-
logger.debug('[useRBAC] Organisation provider not available, continuing without organisation context', error);
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Safety Guarantees
|
|
34
|
-
|
|
35
|
-
1. ✅ **`useRBAC` never throws** - All hook calls are wrapped in try-catch
|
|
36
|
-
2. ✅ **Safe during login** - Returns empty state when unauthenticated
|
|
37
|
-
3. ✅ **Early returns** - Exits immediately if no user/session
|
|
38
|
-
4. ✅ **No logging noise** - Only logs when authenticated
|
|
39
|
-
5. ✅ **No network calls** - Doesn't make RPC calls when unauthenticated
|
|
40
|
-
|
|
41
|
-
## Verification
|
|
42
|
-
|
|
43
|
-
### When Unauthenticated:
|
|
44
|
-
- `useRBAC` returns safely with empty state
|
|
45
|
-
- No errors thrown
|
|
46
|
-
- No network calls made
|
|
47
|
-
- Login flow proceeds normally
|
|
48
|
-
|
|
49
|
-
### When Authenticated:
|
|
50
|
-
- `useRBAC` loads organisation context
|
|
51
|
-
- Waits for organisation context before loading RBAC
|
|
52
|
-
- Loads permissions correctly
|
|
53
|
-
|
|
54
|
-
## CORS Error (Separate Issue)
|
|
55
|
-
|
|
56
|
-
The CORS error is **NOT caused by RBAC**. It's a network/infrastructure issue:
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource
|
|
60
|
-
at https://srqhjwivpohjcjqikjry.supabase.co/auth/v1/token?grant_type=password
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### To Fix CORS:
|
|
64
|
-
1. Check Supabase Dashboard → Settings → API → CORS
|
|
65
|
-
2. Add `localhost:8087` to allowed origins
|
|
66
|
-
3. Or use wildcard `*` for development
|
|
67
|
-
4. Check network/proxy settings
|
|
68
|
-
5. Verify browser isn't blocking requests
|
|
69
|
-
|
|
70
|
-
## Testing
|
|
71
|
-
|
|
72
|
-
1. **Before login**:
|
|
73
|
-
- Open browser console
|
|
74
|
-
- Navigate to login page
|
|
75
|
-
- Verify no RBAC errors
|
|
76
|
-
- Verify login form displays
|
|
77
|
-
|
|
78
|
-
2. **During login**:
|
|
79
|
-
- Enter credentials
|
|
80
|
-
- Click login
|
|
81
|
-
- Verify no RBAC errors in console
|
|
82
|
-
- If CORS error appears, it's a Supabase config issue (not RBAC)
|
|
83
|
-
|
|
84
|
-
3. **After login**:
|
|
85
|
-
- Verify RBAC loads correctly
|
|
86
|
-
- Check console for RBAC loading logs
|
|
87
|
-
- Verify permissions load
|
|
88
|
-
|
|
89
|
-
## Summary
|
|
90
|
-
|
|
91
|
-
- ✅ **RBAC is now safe** - Wrapped in try-catch, won't break login
|
|
92
|
-
- ✅ **No interference** - Early returns prevent any action when unauthenticated
|
|
93
|
-
- ⚠️ **CORS is separate** - Infrastructure issue, needs Supabase config fix
|
|
94
|
-
- ✅ **Ready for testing** - Should work correctly now
|
|
95
|
-
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# RBAC v0.5.147 Fix - Event Context Loading
|
|
2
|
-
|
|
3
|
-
## Problem
|
|
4
|
-
|
|
5
|
-
RBAC wasn't loading for event-based apps because:
|
|
6
|
-
1. **Logger filtering**: Critical logs were using `logger.info()` but RBAC logger defaults to `logLevel: 'warn'`, so logs were filtered out
|
|
7
|
-
2. **Missing dependencies**: `appConfig` wasn't in `loadRBACContext` dependencies, so callback wasn't recreated when appConfig changed
|
|
8
|
-
3. **No visibility**: No way to verify if `useRBAC` hook was being called
|
|
9
|
-
|
|
10
|
-
## Fixes Applied
|
|
11
|
-
|
|
12
|
-
### 1. Changed Log Levels to `warn`
|
|
13
|
-
|
|
14
|
-
All critical logs now use `logger.warn()` instead of `logger.info()` so they're always visible:
|
|
15
|
-
|
|
16
|
-
- `[useRBAC] Hook initialized` - Shows when hook is called
|
|
17
|
-
- `[useRBAC] Waiting for event context before loading RBAC context` - Shows when waiting
|
|
18
|
-
- `[useRBAC] Loading RBAC context` - Shows when loading starts
|
|
19
|
-
- `[useRBAC] RBAC context loaded successfully` - Shows when loading completes
|
|
20
|
-
|
|
21
|
-
### 2. Added Direct Console Logging
|
|
22
|
-
|
|
23
|
-
Added direct `console.warn()` at hook initialization as a fallback to ensure visibility:
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
console.warn('[useRBAC] Hook initialized (direct log)', hookInitLog);
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
This ensures logs are visible even if logger configuration is incorrect.
|
|
30
|
-
|
|
31
|
-
### 3. Added `appConfig` to Dependencies
|
|
32
|
-
|
|
33
|
-
Added `appConfig` to `loadRBACContext` callback dependencies so it recreates when appConfig changes:
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
}, [appName, logger, resetState, selectedEvent, selectedEvent?.event_id, selectedOrganisation?.id, session, user, requiresEvent, eventLoading, appConfig]);
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### 4. Improved `requiresEvent` Logic
|
|
40
|
-
|
|
41
|
-
Changed default behavior when `appConfig` is `null`:
|
|
42
|
-
|
|
43
|
-
```typescript
|
|
44
|
-
// If appConfig is null initially, default to true (safer for event-based apps)
|
|
45
|
-
const requiresEvent = appConfig?.requires_event ?? (appConfig === null ? true : false);
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
This prevents premature loading when appConfig hasn't loaded yet.
|
|
49
|
-
|
|
50
|
-
### 5. Added useEffect Logging
|
|
51
|
-
|
|
52
|
-
Added logging in `useEffect` to track when it runs:
|
|
53
|
-
|
|
54
|
-
```typescript
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
logger.warn('[useRBAC] useEffect triggered - calling loadRBACContext', { ... });
|
|
57
|
-
loadRBACContext();
|
|
58
|
-
}, [loadRBACContext, appName, requiresEvent, eventLoading, selectedEvent, user, session]);
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 6. Added Explicit useEffect Dependencies
|
|
62
|
-
|
|
63
|
-
Added explicit dependencies to `useEffect` so it re-runs when event context changes:
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
}, [loadRBACContext, appName, requiresEvent, eventLoading, selectedEvent, user, session]);
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Expected Console Logs
|
|
70
|
-
|
|
71
|
-
After this fix, you should see this sequence:
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
1. [useRBAC] Hook initialized (direct log)
|
|
75
|
-
{ appName: "TRAC", requiresEvent: true, ... }
|
|
76
|
-
|
|
77
|
-
2. [useRBAC] useEffect triggered - calling loadRBACContext
|
|
78
|
-
{ appName: "TRAC", requiresEvent: true, eventLoading: true, ... }
|
|
79
|
-
|
|
80
|
-
3. [useRBAC] Waiting for event context before loading RBAC context
|
|
81
|
-
{ eventLoading: true, hasSelectedEvent: false, appName: "TRAC" }
|
|
82
|
-
|
|
83
|
-
4. [useRBAC] useEffect triggered - calling loadRBACContext
|
|
84
|
-
{ appName: "TRAC", requiresEvent: true, eventLoading: false, hasSelectedEvent: true, ... }
|
|
85
|
-
|
|
86
|
-
5. [useRBAC] Loading RBAC context
|
|
87
|
-
{ appName: "TRAC", requiresEvent: true, hasSelectedEvent: true, ... }
|
|
88
|
-
|
|
89
|
-
6. [useRBAC] RBAC context loaded successfully
|
|
90
|
-
{ appName: "TRAC", permissionCount: 32, ... }
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Debugging Steps
|
|
94
|
-
|
|
95
|
-
If you still don't see logs:
|
|
96
|
-
|
|
97
|
-
1. **Check if hook is called**: Look for `[useRBAC] Hook initialized (direct log)` - this uses direct `console.warn()` so it should always appear
|
|
98
|
-
2. **Check if effect runs**: Look for `[useRBAC] useEffect triggered` - this shows when the effect runs
|
|
99
|
-
3. **Check event context**: Verify `eventLoading: false` and `hasSelectedEvent: true` in logs
|
|
100
|
-
4. **Check appConfig**: Verify `appConfig` is not `null` and `requiresEvent: true` in logs
|
|
101
|
-
|
|
102
|
-
## Testing
|
|
103
|
-
|
|
104
|
-
To test the fix:
|
|
105
|
-
|
|
106
|
-
1. Clear browser cache
|
|
107
|
-
2. Restart dev server
|
|
108
|
-
3. Open browser console
|
|
109
|
-
4. Navigate to app
|
|
110
|
-
5. Look for the log sequence above
|
|
111
|
-
|
|
112
|
-
## Related Issues
|
|
113
|
-
|
|
114
|
-
- Fixes: RBAC not loading for event-based apps
|
|
115
|
-
- Related: NavigationMenu empty when `filterNavigationByPermissions={true}`
|
|
116
|
-
- Related: RBAC logs not appearing
|
|
117
|
-
|