@jmruthers/pace-core 0.5.181 → 0.5.183
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/usePublicEventLogo.test.ts +147 -0
- 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.test.ts +21 -0
- package/src/styles/index.ts +1 -5
- package/src/types/__tests__/guards.test.ts +1 -1
- package/src/types/__tests__/organisation.roles.test.ts +55 -0
- 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/audit/audit.test.ts +65 -0
- package/src/utils/device/deviceFingerprint.test.ts +171 -0
- 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/__tests__/validationUtils.test.ts +72 -0
- 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,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T12:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Components API Reference
|
|
@@ -29,6 +29,8 @@ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
29
29
|
|
|
30
30
|
```tsx
|
|
31
31
|
import { Button } from '@jmruthers/pace-core';
|
|
32
|
+
import { Link } from 'react-router-dom'; // or your routing library
|
|
33
|
+
import { Settings } from 'lucide-react'; // for icon example
|
|
32
34
|
|
|
33
35
|
// Default button
|
|
34
36
|
<Button onClick={handleClick}>
|
|
@@ -67,6 +69,102 @@ import { Button } from '@jmruthers/pace-core';
|
|
|
67
69
|
- **lg**: Large button (h-10 px-8)
|
|
68
70
|
- **icon**: Square icon button (h-8 w-8)
|
|
69
71
|
|
|
72
|
+
### Accessibility
|
|
73
|
+
|
|
74
|
+
- **Keyboard Navigation**: Fully keyboard accessible. Use `Enter` or `Space` to activate.
|
|
75
|
+
- **ARIA Attributes**: Supports all standard ARIA attributes via `React.ButtonHTMLAttributes`.
|
|
76
|
+
- **Disabled State**: When disabled, button is not focusable and has `aria-disabled="true"`.
|
|
77
|
+
- **Icon Buttons**: Always provide `aria-label` for icon-only buttons for screen readers.
|
|
78
|
+
- **Focus Management**: Visible focus indicators via `focus-visible` styles.
|
|
79
|
+
- **Screen Readers**: Button text is automatically announced. Use descriptive labels.
|
|
80
|
+
|
|
81
|
+
### Edge Cases
|
|
82
|
+
|
|
83
|
+
- **asChild Prop**: When using `asChild`, the button renders as the child element (e.g., `<Link>`). The `type` attribute is not applied in this case.
|
|
84
|
+
- **Disabled State**: Disabled buttons cannot be clicked and are excluded from keyboard navigation.
|
|
85
|
+
- **Loading States**: For loading states, combine with `disabled` prop and show loading indicator as children.
|
|
86
|
+
- **Form Submission**: Use `type="submit"` for form submission buttons. Default is `type="button"`.
|
|
87
|
+
- **Composition**: When composing with other components via `asChild`, ensure child element supports button-like behavior.
|
|
88
|
+
|
|
89
|
+
### ButtonGroup
|
|
90
|
+
|
|
91
|
+
A component that groups multiple buttons together with consistent styling and spacing.
|
|
92
|
+
|
|
93
|
+
#### Props
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
interface ButtonGroupProps {
|
|
97
|
+
children: React.ReactNode;
|
|
98
|
+
orientation?: 'horizontal' | 'vertical';
|
|
99
|
+
variant?: 'default' | 'outline' | 'ghost';
|
|
100
|
+
size?: 'sm' | 'default' | 'lg';
|
|
101
|
+
className?: string;
|
|
102
|
+
spacing?: 'none' | 'sm' | 'md' | 'lg';
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### Usage
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
import { Button } from '@jmruthers/pace-core';
|
|
110
|
+
import { ButtonGroup } from '@jmruthers/pace-core/components';
|
|
111
|
+
|
|
112
|
+
// Horizontal button group
|
|
113
|
+
<ButtonGroup variant="outline" spacing="md">
|
|
114
|
+
<Button>Cancel</Button>
|
|
115
|
+
<Button variant="default">Save</Button>
|
|
116
|
+
</ButtonGroup>
|
|
117
|
+
|
|
118
|
+
// Vertical button group
|
|
119
|
+
<ButtonGroup orientation="vertical" spacing="lg">
|
|
120
|
+
<Button>Option 1</Button>
|
|
121
|
+
<Button>Option 2</Button>
|
|
122
|
+
<Button>Option 3</Button>
|
|
123
|
+
</ButtonGroup>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### Features
|
|
127
|
+
|
|
128
|
+
- Automatically applies variant and size to child Button components
|
|
129
|
+
- Configurable spacing between buttons
|
|
130
|
+
- Supports horizontal and vertical orientations
|
|
131
|
+
- Uses `role="group"` for accessibility
|
|
132
|
+
|
|
133
|
+
### IconButton
|
|
134
|
+
|
|
135
|
+
A button component specifically designed for icon-only interactions with built-in tooltip support.
|
|
136
|
+
|
|
137
|
+
#### Props
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
interface IconButtonProps extends Omit<ButtonProps, 'children'> {
|
|
141
|
+
icon: React.ReactNode;
|
|
142
|
+
'aria-label': string; // Required for accessibility
|
|
143
|
+
tooltip?: string;
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
#### Usage
|
|
148
|
+
|
|
149
|
+
```tsx
|
|
150
|
+
import { IconButton } from '@jmruthers/pace-core/components';
|
|
151
|
+
import { Settings } from 'lucide-react';
|
|
152
|
+
|
|
153
|
+
<IconButton
|
|
154
|
+
icon={<Settings />}
|
|
155
|
+
aria-label="Settings"
|
|
156
|
+
tooltip="Open settings"
|
|
157
|
+
onClick={handleClick}
|
|
158
|
+
/>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
#### Accessibility
|
|
162
|
+
|
|
163
|
+
- **Required aria-label**: IconButton requires an `aria-label` prop for screen readers
|
|
164
|
+
- **Tooltip Support**: Optional tooltip provides additional context on hover
|
|
165
|
+
- **Keyboard Accessible**: Fully keyboard accessible like standard Button
|
|
166
|
+
- **Focus Indicators**: Visible focus indicators for keyboard navigation
|
|
167
|
+
|
|
70
168
|
## DataTable
|
|
71
169
|
|
|
72
170
|
A comprehensive, enterprise-grade data table with advanced features and performance optimizations.
|
|
@@ -106,6 +204,9 @@ interface DataTableProps<TData extends DataRecord> {
|
|
|
106
204
|
data: TData[];
|
|
107
205
|
columns: (DataTableColumn<TData> | SimpleColumn<TData>)[];
|
|
108
206
|
|
|
207
|
+
// MANDATORY RBAC - REQUIRED for all DataTables
|
|
208
|
+
rbac: DataTableRBACConfig;
|
|
209
|
+
|
|
109
210
|
// Display
|
|
110
211
|
title?: string;
|
|
111
212
|
description?: string;
|
|
@@ -115,8 +216,8 @@ interface DataTableProps<TData extends DataRecord> {
|
|
|
115
216
|
// Column ordering
|
|
116
217
|
columnOrder?: string[];
|
|
117
218
|
|
|
118
|
-
// Feature configuration (
|
|
119
|
-
features
|
|
219
|
+
// Feature configuration (optional - all features disabled by default)
|
|
220
|
+
features?: DataTableFeatureConfig;
|
|
120
221
|
|
|
121
222
|
// Event handlers
|
|
122
223
|
onEditRow?: (row: TData, data: Partial<TData>) => void;
|
|
@@ -130,18 +231,44 @@ interface DataTableProps<TData extends DataRecord> {
|
|
|
130
231
|
*/
|
|
131
232
|
onExport?: (options: ExportOptions<TData>) => void | Promise<void>;
|
|
132
233
|
onDeleteSelected?: (selectedRows: Record<string, boolean>) => void;
|
|
234
|
+
onRowSelectionChange?: (selection: Record<string, boolean>) => void;
|
|
235
|
+
selection?: Record<string, boolean>;
|
|
133
236
|
|
|
134
237
|
// Performance
|
|
135
238
|
performance?: PerformanceConfig;
|
|
136
239
|
serverSide?: ServerSideConfig<TData>;
|
|
240
|
+
paginationMode?: PaginationMode;
|
|
241
|
+
chunking?: ChunkingConfig;
|
|
242
|
+
searchIndex?: SearchIndexConfig;
|
|
243
|
+
initialPageSize?: number;
|
|
137
244
|
isLoading?: boolean;
|
|
138
245
|
|
|
139
246
|
// Utilities
|
|
140
247
|
getRowId?: GetRowId<TData>;
|
|
141
|
-
emptyState?: EmptyStateConfig;
|
|
248
|
+
emptyState?: EmptyStateConfig | React.ReactElement;
|
|
249
|
+
aggregates?: AggregateConfig[];
|
|
250
|
+
importModalConfig?: ImportModalConfig;
|
|
142
251
|
|
|
143
252
|
// Hierarchical configuration
|
|
144
253
|
hierarchical?: HierarchicalConfig;
|
|
254
|
+
|
|
255
|
+
// Default state configuration
|
|
256
|
+
defaultGrouping?: string[];
|
|
257
|
+
defaultSorting?: Array<{ id: string; desc: boolean }>;
|
|
258
|
+
|
|
259
|
+
// Persistence configuration
|
|
260
|
+
storageKey?: string;
|
|
261
|
+
onLayoutChange?: (layout: { columnOrder: string[]; columnVisibility: Record<string, boolean> }) => void;
|
|
262
|
+
|
|
263
|
+
// Enhanced pagination
|
|
264
|
+
enhancedPagination?: boolean;
|
|
265
|
+
|
|
266
|
+
// Custom components
|
|
267
|
+
loadingComponent?: React.ComponentType;
|
|
268
|
+
errorComponent?: React.ComponentType<{ error: Error; retry: () => void }>;
|
|
269
|
+
|
|
270
|
+
// Virtual scrolling
|
|
271
|
+
virtualHeight?: number;
|
|
145
272
|
}
|
|
146
273
|
```
|
|
147
274
|
|
|
@@ -819,6 +946,8 @@ A flexible card component suite for displaying content with consistent styling a
|
|
|
819
946
|
|
|
820
947
|
```typescript
|
|
821
948
|
interface CardProps extends React.HTMLAttributes<HTMLElement> {
|
|
949
|
+
variant?: 'default' | 'outline' | 'ghost';
|
|
950
|
+
size?: 'default' | 'sm' | 'lg';
|
|
822
951
|
className?: string;
|
|
823
952
|
}
|
|
824
953
|
|
|
@@ -878,14 +1007,39 @@ import {
|
|
|
878
1007
|
</Card>
|
|
879
1008
|
```
|
|
880
1009
|
|
|
1010
|
+
### Variants
|
|
1011
|
+
|
|
1012
|
+
- **default**: Standard card with shadow (shadow-xl)
|
|
1013
|
+
- **outline**: Card with prominent border (border-2)
|
|
1014
|
+
- **ghost**: Card without border or shadow (border-0 shadow-none)
|
|
1015
|
+
|
|
1016
|
+
### Sizes
|
|
1017
|
+
|
|
1018
|
+
- **default**: Standard card size
|
|
1019
|
+
- **sm**: Small card with smaller text (text-sm)
|
|
1020
|
+
- **lg**: Large card with larger text (text-lg)
|
|
1021
|
+
|
|
881
1022
|
### Semantic Structure
|
|
882
1023
|
|
|
883
1024
|
- **Card**: `<article>` element for self-contained content
|
|
884
1025
|
- **CardHeader**: `<header>` element for card heading area
|
|
885
|
-
- **CardContent**: `<
|
|
1026
|
+
- **CardContent**: `<main>` element for primary card content
|
|
886
1027
|
- **CardFooter**: `<footer>` element for card footer area
|
|
887
1028
|
- **CardActions**: `<nav>` element for action buttons
|
|
888
1029
|
|
|
1030
|
+
### Accessibility
|
|
1031
|
+
|
|
1032
|
+
- **Semantic HTML**: Uses proper semantic elements (`<article>`, `<header>`, `<main>`, `<footer>`, `<nav>`) for screen readers
|
|
1033
|
+
- **Keyboard Navigation**: All interactive elements within cards are keyboard accessible
|
|
1034
|
+
- **Focus Management**: Proper focus indicators on interactive card content
|
|
1035
|
+
- **Screen Readers**: Semantic structure provides clear content hierarchy
|
|
1036
|
+
|
|
1037
|
+
### Edge Cases
|
|
1038
|
+
|
|
1039
|
+
- **Nested Cards**: CardContent uses `<main>` element which should only appear once per page. When nesting cards, consider using a different structure.
|
|
1040
|
+
- **Empty Cards**: Cards can be empty or contain only header/footer without content
|
|
1041
|
+
- **Variant Combinations**: Variant and size props work independently and can be combined
|
|
1042
|
+
|
|
889
1043
|
## LoadingSpinner
|
|
890
1044
|
|
|
891
1045
|
A simple, accessible loading spinner component for indicating loading states.
|
|
@@ -927,10 +1081,27 @@ import { LoadingSpinner } from '@jmruthers/pace-core';
|
|
|
927
1081
|
|
|
928
1082
|
### Features
|
|
929
1083
|
|
|
930
|
-
-
|
|
931
|
-
-
|
|
932
|
-
-
|
|
933
|
-
-
|
|
1084
|
+
- Multiple size variants (sm, md, lg)
|
|
1085
|
+
- Smooth CSS animations with reduced motion support
|
|
1086
|
+
- Screen reader friendly with proper ARIA attributes
|
|
1087
|
+
- Customizable styling via className
|
|
1088
|
+
- Lightweight and performant (CSS-only animations)
|
|
1089
|
+
|
|
1090
|
+
### Accessibility
|
|
1091
|
+
|
|
1092
|
+
- **ARIA Role**: Uses `role="status"` for screen reader announcement
|
|
1093
|
+
- **Screen Reader Text**: Includes "Loading..." text for screen readers (visually hidden)
|
|
1094
|
+
- **Reduced Motion**: Respects `prefers-reduced-motion` media query for users with vestibular disorders
|
|
1095
|
+
- **High Contrast**: Works with high contrast mode
|
|
1096
|
+
- **Focus Management**: Non-interactive element, no focus concerns
|
|
1097
|
+
|
|
1098
|
+
### Edge Cases
|
|
1099
|
+
|
|
1100
|
+
- **Multiple Spinners**: Can be used multiple times on the same page without conflicts
|
|
1101
|
+
- **Nested Usage**: Safe to nest within buttons, cards, or other components
|
|
1102
|
+
- **Custom Styling**: className prop allows full customization while maintaining accessibility
|
|
1103
|
+
- **Size Variants**: Default size is 'md' if not specified
|
|
1104
|
+
- **Animation Performance**: CSS-only animations ensure smooth performance even with multiple spinners
|
|
934
1105
|
|
|
935
1106
|
## Toast
|
|
936
1107
|
|
|
@@ -1159,7 +1330,7 @@ interface NavigationMenuProps {
|
|
|
1159
1330
|
auditLog?: boolean;
|
|
1160
1331
|
onNavigationAccessDenied?: (itemId: string, reason: string) => void;
|
|
1161
1332
|
onStrictModeViolation?: (itemId: string, reason: string) => void;
|
|
1162
|
-
filterByPermissions
|
|
1333
|
+
// filterByPermissions prop removed - permission filtering is always enabled
|
|
1163
1334
|
}
|
|
1164
1335
|
|
|
1165
1336
|
interface NavigationItem {
|
|
@@ -1250,7 +1421,7 @@ function AuthenticatedNavigation() {
|
|
|
1250
1421
|
currentPath={location.pathname}
|
|
1251
1422
|
onNavigate={(item) => navigate(item.href)}
|
|
1252
1423
|
buttonText="Navigation"
|
|
1253
|
-
|
|
1424
|
+
// Permission filtering is always enabled
|
|
1254
1425
|
auditLog={true}
|
|
1255
1426
|
/>
|
|
1256
1427
|
);
|
|
@@ -1786,7 +1957,7 @@ function EventHeader({ eventId }: { eventId: string }) {
|
|
|
1786
1957
|
}
|
|
1787
1958
|
```
|
|
1788
1959
|
|
|
1789
|
-
For detailed implementation, see [Public Pages
|
|
1960
|
+
For detailed implementation, see [Public Pages Guide](../implementation-guides/public-pages.md#advanced-topics).
|
|
1790
1961
|
|
|
1791
1962
|
## Component Styling
|
|
1792
1963
|
|
|
@@ -1808,7 +1979,7 @@ All components include:
|
|
|
1808
1979
|
- **Visual Tests**: Visual regression testing
|
|
1809
1980
|
- **Performance Tests**: Rendering performance
|
|
1810
1981
|
|
|
1811
|
-
For more information about testing components, see the [Testing Guide](../
|
|
1982
|
+
For more information about testing components, see the [Testing Guide](../testing/README.md).
|
|
1812
1983
|
|
|
1813
1984
|
## Avatar
|
|
1814
1985
|
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
---
|
|
2
|
+
lastUpdated: 2025-11-18T12:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Deprecated API Reference
|
|
8
|
+
|
|
9
|
+
This document lists all deprecated APIs in `@jmruthers/pace-core` and provides migration paths. Deprecated items follow a 2-release retirement window as per the [API & RPC Standard](../standards/02-api-and-rpc-standard.md).
|
|
10
|
+
|
|
11
|
+
## Deprecation Policy
|
|
12
|
+
|
|
13
|
+
- **Retirement Window**: 2 stable releases
|
|
14
|
+
- **Marking**: Items are marked with `@deprecated` JSDoc tags
|
|
15
|
+
- **Documentation**: Migration paths are provided below
|
|
16
|
+
- **Timeline**: Check package version for removal timeline
|
|
17
|
+
|
|
18
|
+
## Component Deprecations
|
|
19
|
+
|
|
20
|
+
### ProtectedRoute.allowSuperAdminBypass
|
|
21
|
+
|
|
22
|
+
**Status**: Deprecated
|
|
23
|
+
**Since**: v0.5.x
|
|
24
|
+
**Removal**: v0.7.x
|
|
25
|
+
|
|
26
|
+
**Deprecated Prop**:
|
|
27
|
+
```typescript
|
|
28
|
+
interface ProtectedRouteProps {
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated Use requireEvent={false} for routes that don't need events
|
|
31
|
+
*/
|
|
32
|
+
allowSuperAdminBypass?: boolean;
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Migration**:
|
|
37
|
+
```tsx
|
|
38
|
+
// Old
|
|
39
|
+
<ProtectedRoute allowSuperAdminBypass={true}>
|
|
40
|
+
<Route path="/settings" element={<SettingsPage />} />
|
|
41
|
+
</ProtectedRoute>
|
|
42
|
+
|
|
43
|
+
// New
|
|
44
|
+
<ProtectedRoute requireEvent={false}>
|
|
45
|
+
<Route path="/settings" element={<SettingsPage />} />
|
|
46
|
+
</ProtectedRoute>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### PublicPageLayout.className
|
|
50
|
+
|
|
51
|
+
**Status**: Deprecated
|
|
52
|
+
**Since**: v0.5.x
|
|
53
|
+
**Removal**: v0.7.x
|
|
54
|
+
|
|
55
|
+
**Reason**: Wrapper div was removed from PublicPageLayout component.
|
|
56
|
+
|
|
57
|
+
**Deprecated Prop**:
|
|
58
|
+
```typescript
|
|
59
|
+
interface PublicPageLayoutProps {
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated Custom CSS classes for the layout - no longer used as wrapper div was removed
|
|
62
|
+
*/
|
|
63
|
+
className?: string;
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Migration**: Remove `className` prop usage. Use custom header/footer components for styling:
|
|
68
|
+
```tsx
|
|
69
|
+
// Old
|
|
70
|
+
<PublicPageLayout className="custom-layout" eventCode={eventCode}>
|
|
71
|
+
|
|
72
|
+
// New
|
|
73
|
+
<PublicPageLayout
|
|
74
|
+
eventCode={eventCode}
|
|
75
|
+
customHeader={<CustomHeader className="custom-layout" />}
|
|
76
|
+
>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### usePublicPageContext Hook
|
|
80
|
+
|
|
81
|
+
**Status**: Deprecated
|
|
82
|
+
**Since**: v0.5.x
|
|
83
|
+
**Removal**: v0.7.x
|
|
84
|
+
|
|
85
|
+
**Location**: `packages/core/src/components/PublicLayout/PublicPageLayout.tsx`
|
|
86
|
+
|
|
87
|
+
**Deprecated Hook**:
|
|
88
|
+
```typescript
|
|
89
|
+
/**
|
|
90
|
+
* @deprecated This hook is no longer needed as PublicPageLayout no longer
|
|
91
|
+
* automatically fetches event data. Use usePublicRouteParams and usePublicEvent
|
|
92
|
+
* directly in your components instead.
|
|
93
|
+
*/
|
|
94
|
+
export function usePublicPageContext()
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Migration**: Use `usePublicRouteParams` and `usePublicEvent` hooks directly:
|
|
98
|
+
```tsx
|
|
99
|
+
// Old
|
|
100
|
+
import { usePublicPageContext } from '@jmruthers/pace-core';
|
|
101
|
+
const { event, eventCode, isLoading } = usePublicPageContext();
|
|
102
|
+
|
|
103
|
+
// New
|
|
104
|
+
import { usePublicRouteParams, usePublicEvent } from '@jmruthers/pace-core';
|
|
105
|
+
const { eventCode } = usePublicRouteParams({ fetchEventData: false });
|
|
106
|
+
const { event, isLoading } = usePublicEvent(eventCode || '');
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Hook Deprecations
|
|
110
|
+
|
|
111
|
+
### usePermissionCache
|
|
112
|
+
|
|
113
|
+
**Status**: Deprecated
|
|
114
|
+
**Since**: v0.4.x
|
|
115
|
+
**Removal**: v0.6.x
|
|
116
|
+
|
|
117
|
+
**Location**: `packages/core/src/hooks/usePermissionCache.ts`
|
|
118
|
+
|
|
119
|
+
**Deprecated Hook**:
|
|
120
|
+
```typescript
|
|
121
|
+
/**
|
|
122
|
+
* @deprecated Consider using useCan() or usePermissions() hooks directly instead.
|
|
123
|
+
*/
|
|
124
|
+
export function usePermissionCache(...)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Migration**:
|
|
128
|
+
```tsx
|
|
129
|
+
// Old
|
|
130
|
+
import { usePermissionCache } from '@jmruthers/pace-core';
|
|
131
|
+
|
|
132
|
+
// New - Use RBAC hooks directly
|
|
133
|
+
import { useCan, usePermissions } from '@jmruthers/pace-core/rbac';
|
|
134
|
+
|
|
135
|
+
const { hasPermission } = useCan();
|
|
136
|
+
const { permissions } = usePermissions({ userId, scope });
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Utility Deprecations
|
|
140
|
+
|
|
141
|
+
### sanitizeUserInput (from validationUtils)
|
|
142
|
+
|
|
143
|
+
**Status**: Deprecated
|
|
144
|
+
**Since**: v0.5.x
|
|
145
|
+
**Removal**: v0.7.x
|
|
146
|
+
|
|
147
|
+
**Location**: `packages/core/src/utils/validation/validationUtils.ts`
|
|
148
|
+
|
|
149
|
+
**Deprecated Function**:
|
|
150
|
+
```typescript
|
|
151
|
+
/**
|
|
152
|
+
* @deprecated Use sanitizeUserInput from lib/sanitization instead
|
|
153
|
+
*/
|
|
154
|
+
export function sanitizeUserInput(...)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Migration**:
|
|
158
|
+
```typescript
|
|
159
|
+
// Old
|
|
160
|
+
import { sanitizeUserInput } from '@jmruthers/pace-core/utils/validation/validationUtils';
|
|
161
|
+
|
|
162
|
+
// New
|
|
163
|
+
import { sanitizeUserInput } from '@jmruthers/pace-core/utils/validation/sanitization';
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### sortHierarchicalDataByStructure
|
|
167
|
+
|
|
168
|
+
**Status**: Deprecated
|
|
169
|
+
**Since**: v0.5.x
|
|
170
|
+
**Removal**: v0.7.x
|
|
171
|
+
|
|
172
|
+
**Location**: `packages/core/src/components/DataTable/utils/hierarchicalUtils.ts`
|
|
173
|
+
|
|
174
|
+
**Deprecated Function**:
|
|
175
|
+
```typescript
|
|
176
|
+
/**
|
|
177
|
+
* @deprecated Use sortHierarchicalDataByStructure from hierarchicalSorting.ts
|
|
178
|
+
*/
|
|
179
|
+
export function sortHierarchicalDataByStructure(...)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Migration**:
|
|
183
|
+
```typescript
|
|
184
|
+
// Old
|
|
185
|
+
import { sortHierarchicalDataByStructure } from './hierarchicalUtils';
|
|
186
|
+
|
|
187
|
+
// New
|
|
188
|
+
import { sortHierarchicalDataByStructure } from './hierarchicalSorting';
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## RBAC Deprecations
|
|
192
|
+
|
|
193
|
+
### getPermissionsForRole
|
|
194
|
+
|
|
195
|
+
**Status**: Removed
|
|
196
|
+
**Since**: v0.4.x
|
|
197
|
+
**Reason**: Removed to ensure RBAC compliance - permissions must be queried from database
|
|
198
|
+
|
|
199
|
+
**Deprecated Function**:
|
|
200
|
+
```typescript
|
|
201
|
+
/**
|
|
202
|
+
* @deprecated This function has been removed to ensure RBAC compliance.
|
|
203
|
+
*/
|
|
204
|
+
export function getPermissionsForRole(role: string): Permission[]
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Migration**: Query permissions from database:
|
|
208
|
+
```typescript
|
|
209
|
+
// Old
|
|
210
|
+
const permissions = getPermissionsForRole('admin');
|
|
211
|
+
|
|
212
|
+
// New - Query from database
|
|
213
|
+
const { data } = await supabase
|
|
214
|
+
.from('rbac_page_permissions')
|
|
215
|
+
.select('operation, allowed')
|
|
216
|
+
.eq('role_name', 'admin')
|
|
217
|
+
.eq('organisation_id', organisationId)
|
|
218
|
+
.eq('allowed', true);
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## RPC Function Deprecations
|
|
222
|
+
|
|
223
|
+
### Legacy File Reference RPCs
|
|
224
|
+
|
|
225
|
+
**Status**: Deprecated
|
|
226
|
+
**Since**: v0.5.x
|
|
227
|
+
**Removal**: v0.7.x
|
|
228
|
+
|
|
229
|
+
**Deprecated Functions**:
|
|
230
|
+
- `insert_file_reference` → Use `data_file_reference_create`
|
|
231
|
+
- `get_file_url` → Use `data_file_reference_url_get`
|
|
232
|
+
- `get_file_signed_url` → Use `data_file_reference_signed_url_get`
|
|
233
|
+
- `delete_file_reference` → Use `data_file_reference_delete`
|
|
234
|
+
- `get_record_files` → Use `data_file_reference_list`
|
|
235
|
+
- `get_record_file_count` → Use `data_file_reference_count_get`
|
|
236
|
+
|
|
237
|
+
**Migration**: Use the new RPC naming pattern (`data_*` prefix) or use the service layer:
|
|
238
|
+
```typescript
|
|
239
|
+
// Old
|
|
240
|
+
await supabase.rpc('insert_file_reference', { ... });
|
|
241
|
+
|
|
242
|
+
// New - Direct RPC
|
|
243
|
+
await supabase.rpc('data_file_reference_create', { ... });
|
|
244
|
+
|
|
245
|
+
// New - Service layer (recommended)
|
|
246
|
+
import { useFileReference } from '@jmruthers/pace-core';
|
|
247
|
+
const { uploadFile } = useFileReference(supabase);
|
|
248
|
+
await uploadFile({ ... }, file);
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Legacy RBAC RPCs
|
|
252
|
+
|
|
253
|
+
**Status**: Removed
|
|
254
|
+
**Since**: v0.5.x
|
|
255
|
+
**Reason**: Replaced with standardized `rbac_*` prefix functions
|
|
256
|
+
|
|
257
|
+
**Removed Functions**:
|
|
258
|
+
- `get_rbac_permissions` → Use `rbac_permissions_get`
|
|
259
|
+
- `check_page_permission` → Use `rbac_page_access_check` or `rbac_check_permission_simplified`
|
|
260
|
+
- `has_organisation_role` → Use `rbac_role_validate` or query `rbac_user_organisation_roles`
|
|
261
|
+
- `grant_organisation_role` → Use `rbac_role_grant`
|
|
262
|
+
- `revoke_organisation_role` → Use `rbac_role_revoke`
|
|
263
|
+
|
|
264
|
+
**Migration**:
|
|
265
|
+
```typescript
|
|
266
|
+
// Old
|
|
267
|
+
const { data } = await supabase.rpc('get_rbac_permissions', { ... });
|
|
268
|
+
const { data: hasPermission } = await supabase.rpc('check_page_permission', { ... });
|
|
269
|
+
const { data: roleId } = await supabase.rpc('grant_organisation_role', { ... });
|
|
270
|
+
|
|
271
|
+
// New
|
|
272
|
+
const { data } = await supabase.rpc('rbac_permissions_get', { ... });
|
|
273
|
+
const { data: hasPermission } = await supabase.rpc('rbac_page_access_check', { ... });
|
|
274
|
+
const { data: roleId } = await supabase.rpc('rbac_role_grant', { ... });
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Legacy Event RPCs
|
|
278
|
+
|
|
279
|
+
**Status**: Deprecated
|
|
280
|
+
**Since**: v0.5.x
|
|
281
|
+
**Removal**: v0.7.x
|
|
282
|
+
|
|
283
|
+
**Deprecated Functions**:
|
|
284
|
+
- `get_pace_user_events` → Use `data_user_events_get`
|
|
285
|
+
|
|
286
|
+
**Migration**:
|
|
287
|
+
```typescript
|
|
288
|
+
// Old
|
|
289
|
+
const { data } = await supabase.rpc('get_pace_user_events', {
|
|
290
|
+
user_uuid: userId,
|
|
291
|
+
app_name: appName,
|
|
292
|
+
p_organisation_id: orgId
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
// New
|
|
296
|
+
const { data, error } = await supabase.rpc('data_user_events_get', {
|
|
297
|
+
p_user_id: userId,
|
|
298
|
+
p_app_id: appId, // Use app ID instead of app name
|
|
299
|
+
p_organisation_id: orgId
|
|
300
|
+
});
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Legacy Data Access RPCs
|
|
304
|
+
|
|
305
|
+
**Status**: Removed
|
|
306
|
+
**Since**: v0.5.x
|
|
307
|
+
**Reason**: Replaced with standardized naming pattern
|
|
308
|
+
|
|
309
|
+
**Removed Functions**:
|
|
310
|
+
- `data_cake_meals_get` → Use `data_cake_meals_list` (provides pagination support)
|
|
311
|
+
|
|
312
|
+
**Migration**:
|
|
313
|
+
```typescript
|
|
314
|
+
// Old
|
|
315
|
+
const { data } = await supabase.rpc('data_cake_meals_get', {
|
|
316
|
+
p_event_id: eventId,
|
|
317
|
+
p_user_id: userId,
|
|
318
|
+
p_organisation_id: orgId
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
// New
|
|
322
|
+
const { data, error } = await supabase.rpc('data_cake_meals_list', {
|
|
323
|
+
p_event_id: eventId,
|
|
324
|
+
p_user_id: userId,
|
|
325
|
+
p_organisation_id: orgId,
|
|
326
|
+
p_limit: 100, // Pagination support
|
|
327
|
+
p_offset: 0
|
|
328
|
+
});
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
## Service Deprecations
|
|
332
|
+
|
|
333
|
+
### RBACService
|
|
334
|
+
|
|
335
|
+
**Status**: Deprecated
|
|
336
|
+
**Since**: v0.4.x
|
|
337
|
+
**Removal**: v0.6.x
|
|
338
|
+
|
|
339
|
+
**Location**: `packages/core/src/providers/services/RBACService.ts`
|
|
340
|
+
|
|
341
|
+
**Deprecated Service**: Use RBAC Engine instead.
|
|
342
|
+
|
|
343
|
+
**Migration**:
|
|
344
|
+
```typescript
|
|
345
|
+
// Old
|
|
346
|
+
import { RBACService } from '@jmruthers/pace-core/providers/services';
|
|
347
|
+
|
|
348
|
+
// New
|
|
349
|
+
import { useRBAC } from '@jmruthers/pace-core/rbac';
|
|
350
|
+
const { hasPermission } = useRBAC();
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Migration Checklist
|
|
354
|
+
|
|
355
|
+
When migrating deprecated APIs:
|
|
356
|
+
|
|
357
|
+
- [ ] Check current package version
|
|
358
|
+
- [ ] Identify all deprecated API usage in codebase
|
|
359
|
+
- [ ] Review migration paths above
|
|
360
|
+
- [ ] Update imports and function calls
|
|
361
|
+
- [ ] Test thoroughly
|
|
362
|
+
- [ ] Remove deprecated code before removal version
|
|
363
|
+
|
|
364
|
+
## Reporting Issues
|
|
365
|
+
|
|
366
|
+
If you encounter issues migrating from deprecated APIs, please:
|
|
367
|
+
|
|
368
|
+
1. Check this documentation first
|
|
369
|
+
2. Review the [Migration Guide](../migration/MIGRATION_GUIDE.md)
|
|
370
|
+
3. Check [Troubleshooting](../troubleshooting/README.md)
|
|
371
|
+
4. Open an issue on GitHub with:
|
|
372
|
+
- Package version
|
|
373
|
+
- Deprecated API being used
|
|
374
|
+
- Error messages
|
|
375
|
+
- Migration attempt details
|
|
376
|
+
|