@jmruthers/pace-core 0.5.180 → 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-4VSEJQ7D.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-6HLVGAZG.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-CPTUD43C.js → chunk-MI7HBHN3.js} +164 -243
- package/dist/chunk-MI7HBHN3.js.map +1 -0
- package/dist/{chunk-N5YCCUG5.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-P6UUHOIF.js → chunk-QETLRQI6.js} +526 -887
- package/dist/chunk-QETLRQI6.js.map +1 -0
- package/dist/{chunk-GQA2LIAE.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-ONI7Y733.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-R53TUSFK.js → chunk-W22JP75J.js} +5 -13
- package/dist/{chunk-R53TUSFK.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/examples/{components 2/DataTable/HierarchicalExample.tsx → 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 +57 -31
- 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-BMJAP6Z7.js +0 -16
- package/dist/auth-DReDSLq9.d.ts +0 -16
- package/dist/chunk-56XJ3TU6.js +0 -11
- package/dist/chunk-56XJ3TU6.js.map +0 -1
- package/dist/chunk-6HLVGAZG.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-CPTUD43C.js.map +0 -1
- package/dist/chunk-CX5M4ZAG.js.map +0 -1
- package/dist/chunk-ERGKJX4D.js +0 -15
- package/dist/chunk-ERGKJX4D.js.map +0 -1
- package/dist/chunk-ERISIBYU.js.map +0 -1
- package/dist/chunk-GQA2LIAE.js.map +0 -1
- package/dist/chunk-JISYG63F.js +0 -70
- package/dist/chunk-JISYG63F.js.map +0 -1
- package/dist/chunk-MSHEVJXS.js +0 -27
- package/dist/chunk-MSHEVJXS.js.map +0 -1
- package/dist/chunk-N5YCCUG5.js.map +0 -1
- package/dist/chunk-ONI7Y733.js.map +0 -1
- package/dist/chunk-OWAG3GSU.js.map +0 -1
- package/dist/chunk-P6UUHOIF.js.map +0 -1
- package/dist/chunk-PKW27QVS.js +0 -61
- package/dist/chunk-PKW27QVS.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-WM26XK7I.js +0 -2432
- package/dist/chunk-WM26XK7I.js.map +0 -1
- package/dist/chunk-XDNLUEXI.js +0 -138
- package/dist/chunk-XJ2HZOBU.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/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/HierarchicalExample.tsx +0 -475
- 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-4VSEJQ7D.js.map → DataTable-QAB34V6K.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-BMJAP6Z7.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-18T16:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# PACE Core Architecture
|
|
@@ -576,3 +576,49 @@ PACE Core supports tree shaking for optimal bundle sizes and provides multiple i
|
|
|
576
576
|
- **Performance Profiling**: Built-in performance profiling tools
|
|
577
577
|
|
|
578
578
|
This architecture provides a solid foundation for building scalable, secure, and maintainable applications with PACE Core. The modular design allows for easy extension and customization while maintaining consistency and reliability.
|
|
579
|
+
|
|
580
|
+
## ♿ Accessibility
|
|
581
|
+
|
|
582
|
+
The PACE Core architecture is designed with accessibility in mind:
|
|
583
|
+
|
|
584
|
+
- **WCAG 2.1 AA compliance** - All components meet accessibility standards
|
|
585
|
+
- **Screen Reader Support** - Proper ARIA labels and semantic HTML
|
|
586
|
+
- **Keyboard Navigation** - Full keyboard support for all interactive elements
|
|
587
|
+
- **Focus Management** - Proper focus handling throughout the application
|
|
588
|
+
- **Color Contrast** - All colors meet WCAG contrast requirements
|
|
589
|
+
|
|
590
|
+
### Accessibility Architecture
|
|
591
|
+
|
|
592
|
+
1. **Component Level** - All UI components include accessibility features
|
|
593
|
+
2. **Provider Level** - Context providers manage accessibility state
|
|
594
|
+
3. **Hook Level** - Hooks provide accessibility utilities
|
|
595
|
+
4. **Utility Level** - Accessibility helpers for common patterns
|
|
596
|
+
|
|
597
|
+
## ⚠️ Edge Cases
|
|
598
|
+
|
|
599
|
+
### Architecture Scalability
|
|
600
|
+
|
|
601
|
+
When scaling the architecture:
|
|
602
|
+
- Monitor provider performance with many components
|
|
603
|
+
- Consider code splitting for large applications
|
|
604
|
+
- Use lazy loading for heavy components
|
|
605
|
+
- Optimize bundle sizes with tree-shaking
|
|
606
|
+
- Profile performance regularly
|
|
607
|
+
|
|
608
|
+
### Multi-Tenant Architecture
|
|
609
|
+
|
|
610
|
+
When working with multiple tenants:
|
|
611
|
+
- Ensure proper organisation context isolation
|
|
612
|
+
- Verify RLS policies are correctly configured
|
|
613
|
+
- Test cross-tenant data access prevention
|
|
614
|
+
- Monitor resource usage per tenant
|
|
615
|
+
- Implement proper caching strategies
|
|
616
|
+
|
|
617
|
+
### Service Integration Issues
|
|
618
|
+
|
|
619
|
+
When services fail to integrate:
|
|
620
|
+
- Verify service initialization order
|
|
621
|
+
- Check provider hierarchy is correct
|
|
622
|
+
- Ensure all dependencies are available
|
|
623
|
+
- Review service lifecycle management
|
|
624
|
+
- Test error handling and recovery
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T16:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Database Schema Requirements
|
|
@@ -176,3 +176,40 @@ AND tablename = 'rbac_organisation_roles';
|
|
|
176
176
|
-- Test membership view
|
|
177
177
|
SELECT * FROM user_organisation_memberships LIMIT 5;
|
|
178
178
|
```
|
|
179
|
+
|
|
180
|
+
## ♿ Accessibility
|
|
181
|
+
|
|
182
|
+
Database schema requirements don't directly impact accessibility, but ensure:
|
|
183
|
+
|
|
184
|
+
- **Error messages are accessible** - Database errors should be clearly communicated
|
|
185
|
+
- **Data validation** - Ensure data validation doesn't break accessibility features
|
|
186
|
+
- **Performance** - Database performance impacts user experience and accessibility
|
|
187
|
+
|
|
188
|
+
## ⚠️ Edge Cases
|
|
189
|
+
|
|
190
|
+
### Schema Migration Issues
|
|
191
|
+
|
|
192
|
+
When migrating database schema:
|
|
193
|
+
- Test migrations on staging environment first
|
|
194
|
+
- Ensure backward compatibility during migration
|
|
195
|
+
- Have rollback plan ready
|
|
196
|
+
- Verify all indexes are created correctly
|
|
197
|
+
- Check RLS policies are applied correctly
|
|
198
|
+
|
|
199
|
+
### Missing Required Tables
|
|
200
|
+
|
|
201
|
+
When required tables are missing:
|
|
202
|
+
- Verify all migrations have been applied
|
|
203
|
+
- Check database connection is correct
|
|
204
|
+
- Ensure user has proper permissions
|
|
205
|
+
- Review migration logs for errors
|
|
206
|
+
- Test with minimal schema setup
|
|
207
|
+
|
|
208
|
+
### Schema Version Mismatches
|
|
209
|
+
|
|
210
|
+
When schema versions don't match:
|
|
211
|
+
- Verify pace-core version matches schema version
|
|
212
|
+
- Check migration history for missing migrations
|
|
213
|
+
- Ensure all consuming apps use compatible versions
|
|
214
|
+
- Review breaking changes in migration guides
|
|
215
|
+
- Test with compatible schema version
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T16:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# RBAC Security Architecture
|
|
8
8
|
|
|
9
|
-
**Last Updated**:
|
|
9
|
+
**Last Updated**: 2025-01-28
|
|
10
10
|
|
|
11
11
|
## Overview
|
|
12
12
|
|
|
@@ -256,3 +256,40 @@ Caching improves performance but must be secure:
|
|
|
256
256
|
- [RBAC Implementation](rbac-implementation.md)
|
|
257
257
|
- [RLS Policies](../migration/rls-policies.md)
|
|
258
258
|
- [Security Testing](../testing/security-testing.md)
|
|
259
|
+
|
|
260
|
+
## ♿ Accessibility
|
|
261
|
+
|
|
262
|
+
RBAC security architecture doesn't directly impact accessibility, but ensure:
|
|
263
|
+
|
|
264
|
+
- **Permission errors are accessible** - Error messages should be clearly communicated
|
|
265
|
+
- **Loading states are announced** - Screen readers should announce permission checks
|
|
266
|
+
- **Focus management** - Ensure focus is properly managed during permission checks
|
|
267
|
+
|
|
268
|
+
## ⚠️ Edge Cases
|
|
269
|
+
|
|
270
|
+
### Permission Check Failures
|
|
271
|
+
|
|
272
|
+
When permission checks fail:
|
|
273
|
+
- Verify RLS policies are correctly configured
|
|
274
|
+
- Check organisation context is properly set
|
|
275
|
+
- Ensure user has required roles assigned
|
|
276
|
+
- Review audit logs for permission denials
|
|
277
|
+
- Test with different user roles
|
|
278
|
+
|
|
279
|
+
### Super Admin Bypass Issues
|
|
280
|
+
|
|
281
|
+
When super admin bypass doesn't work:
|
|
282
|
+
- Verify super admin status is correctly detected
|
|
283
|
+
- Check global roles table is accessible
|
|
284
|
+
- Ensure JWT claims are properly set
|
|
285
|
+
- Review audit logs for bypass attempts
|
|
286
|
+
- Test with known super admin user
|
|
287
|
+
|
|
288
|
+
### Cross-Organisation Data Leakage
|
|
289
|
+
|
|
290
|
+
When data leaks between organisations:
|
|
291
|
+
- Verify RLS policies are enforced
|
|
292
|
+
- Check organisation context is required
|
|
293
|
+
- Ensure all queries include organisation filter
|
|
294
|
+
- Review database logs for unauthorized access
|
|
295
|
+
- Test with users from different organisations
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T16:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Service Architecture Documentation
|
|
@@ -12,8 +12,16 @@ The pace-core library now uses a service-based architecture that follows SOLID p
|
|
|
12
12
|
|
|
13
13
|
## Architecture Design
|
|
14
14
|
|
|
15
|
+
The service architecture follows a **three-layer pattern** that separates concerns and provides clear boundaries:
|
|
16
|
+
|
|
17
|
+
1. **Service Layer** (`src/services/`) - Pure TypeScript classes with business logic
|
|
18
|
+
2. **Provider Layer** (`src/providers/services/`) - React context providers for dependency injection
|
|
19
|
+
3. **Hook Layer** (`src/hooks/services/`) - React hooks for reactive component integration
|
|
20
|
+
|
|
15
21
|
### Service Layer (Pure TypeScript Classes)
|
|
16
22
|
|
|
23
|
+
**Location**: `packages/core/src/services/`
|
|
24
|
+
|
|
17
25
|
The service layer contains pure TypeScript classes that handle business logic without any React dependencies:
|
|
18
26
|
|
|
19
27
|
- **AuthService**: Authentication operations (sign in, sign out, session management)
|
|
@@ -24,19 +32,36 @@ The service layer contains pure TypeScript classes that handle business logic wi
|
|
|
24
32
|
|
|
25
33
|
> **⚠️ Note**: RBACService is deprecated in favor of the new RBAC system. Use `useRBAC()` from `@jmruthers/pace-core/rbac` instead.
|
|
26
34
|
|
|
35
|
+
**Key Characteristics**:
|
|
36
|
+
- No React dependencies
|
|
37
|
+
- Pure TypeScript classes
|
|
38
|
+
- Observable pattern for state changes
|
|
39
|
+
- Easy to unit test
|
|
40
|
+
- Reusable across different frameworks
|
|
41
|
+
|
|
27
42
|
### Provider Layer (React Context)
|
|
28
43
|
|
|
44
|
+
**Location**: `packages/core/src/providers/services/`
|
|
45
|
+
|
|
29
46
|
Each service has its own React provider that:
|
|
30
|
-
- Creates and manages service instances
|
|
47
|
+
- Creates and manages service instances (singleton pattern)
|
|
31
48
|
- Provides services to React components via context
|
|
32
49
|
- Handles service lifecycle (initialization, cleanup)
|
|
50
|
+
- Updates service dependencies when props change
|
|
51
|
+
|
|
52
|
+
**Important**: Providers do **not** export hooks. Hooks are exported from the hook layer.
|
|
33
53
|
|
|
34
54
|
### Hook Layer (React Integration)
|
|
35
55
|
|
|
56
|
+
**Location**: `packages/core/src/hooks/services/`
|
|
57
|
+
|
|
36
58
|
Each service has corresponding hooks that:
|
|
37
59
|
- Access services from context
|
|
38
|
-
- Subscribe to service state changes
|
|
60
|
+
- Subscribe to service state changes using the observable pattern
|
|
39
61
|
- Trigger React re-renders when state changes
|
|
62
|
+
- Provide reactive access to service state
|
|
63
|
+
|
|
64
|
+
**⚠️ Critical**: Always import service hooks from `hooks/services/`, **not** from `providers/services/`. The hooks in `hooks/services/` include state subscription logic that ensures components re-render when service state changes.
|
|
40
65
|
|
|
41
66
|
## Service Interfaces
|
|
42
67
|
|
|
@@ -128,28 +153,27 @@ function MyComponent() {
|
|
|
128
153
|
|
|
129
154
|
### Using Individual Service Hooks
|
|
130
155
|
|
|
156
|
+
**✅ Correct**: Import hooks from the main package (which exports from `hooks/services/`):
|
|
157
|
+
|
|
131
158
|
```tsx
|
|
132
159
|
import {
|
|
133
160
|
useAuthService,
|
|
134
161
|
useOrganisationService,
|
|
135
162
|
useEventService,
|
|
136
|
-
|
|
163
|
+
useInactivityService
|
|
137
164
|
} from '@jmruthers/pace-core';
|
|
138
165
|
|
|
139
166
|
function MyComponent() {
|
|
140
167
|
const authService = useAuthService();
|
|
141
168
|
const orgService = useOrganisationService();
|
|
142
169
|
const eventService = useEventService();
|
|
143
|
-
const rbacService = useRBACService();
|
|
144
170
|
|
|
145
171
|
return (
|
|
146
172
|
<div>
|
|
147
173
|
{authService.isAuthenticated() && (
|
|
148
174
|
<div>
|
|
149
175
|
<h1>{orgService.getSelectedOrganisation()?.display_name}</h1>
|
|
150
|
-
{
|
|
151
|
-
<EventList events={eventService.getEvents()} />
|
|
152
|
-
)}
|
|
176
|
+
<EventList events={eventService.getEvents()} />
|
|
153
177
|
</div>
|
|
154
178
|
)}
|
|
155
179
|
</div>
|
|
@@ -157,6 +181,13 @@ function MyComponent() {
|
|
|
157
181
|
}
|
|
158
182
|
```
|
|
159
183
|
|
|
184
|
+
**❌ Incorrect**: Do not import hooks directly from provider files. Provider files only export the provider component and context, not hooks.
|
|
185
|
+
|
|
186
|
+
```tsx
|
|
187
|
+
// ❌ DON'T DO THIS
|
|
188
|
+
import { useEventService } from '@jmruthers/pace-core/providers/services/EventServiceProvider';
|
|
189
|
+
```
|
|
190
|
+
|
|
160
191
|
## Testing
|
|
161
192
|
|
|
162
193
|
### Unit Tests for Services
|
|
@@ -276,56 +307,73 @@ All providers use the service-based architecture:
|
|
|
276
307
|
|
|
277
308
|
## File Structure
|
|
278
309
|
|
|
310
|
+
The service architecture is organized into three distinct layers:
|
|
311
|
+
|
|
279
312
|
```
|
|
280
313
|
packages/core/src/
|
|
281
|
-
├── services/
|
|
282
|
-
│ ├── interfaces/
|
|
314
|
+
├── services/ # Layer 1: Service Classes
|
|
315
|
+
│ ├── interfaces/ # Service interfaces (contracts)
|
|
283
316
|
│ │ ├── IAuthService.ts
|
|
284
|
-
│ │ ├── IRBACService.ts
|
|
285
317
|
│ │ ├── IOrganisationService.ts
|
|
286
318
|
│ │ ├── IEventService.ts
|
|
287
319
|
│ │ └── IInactivityService.ts
|
|
288
320
|
│ ├── base/
|
|
289
|
-
│ │ └── BaseService.ts
|
|
290
|
-
│ ├── AuthService.ts
|
|
291
|
-
│ ├──
|
|
292
|
-
│ ├──
|
|
293
|
-
│ ├──
|
|
294
|
-
│
|
|
295
|
-
│
|
|
296
|
-
│ ├── AuthService.test.ts
|
|
297
|
-
│ └── RBACService.test.ts
|
|
321
|
+
│ │ └── BaseService.ts # Base class with observable pattern
|
|
322
|
+
│ ├── AuthService.ts # Pure TypeScript service class
|
|
323
|
+
│ ├── OrganisationService.ts # Pure TypeScript service class
|
|
324
|
+
│ ├── EventService.ts # Pure TypeScript service class
|
|
325
|
+
│ ├── InactivityService.ts # Pure TypeScript service class
|
|
326
|
+
│ └── __tests__/ # Service unit tests
|
|
327
|
+
│
|
|
298
328
|
├── providers/
|
|
299
|
-
│ └── services/
|
|
300
|
-
│ ├── AuthServiceProvider.tsx
|
|
301
|
-
│ ├── RBACServiceProvider.tsx
|
|
329
|
+
│ └── services/ # Layer 2: React Context Providers
|
|
330
|
+
│ ├── AuthServiceProvider.tsx # Creates AuthService, provides via context
|
|
302
331
|
│ ├── OrganisationServiceProvider.tsx
|
|
303
332
|
│ ├── EventServiceProvider.tsx
|
|
304
333
|
│ ├── InactivityServiceProvider.tsx
|
|
305
|
-
│ ├──
|
|
306
|
-
│ └── __tests__/
|
|
307
|
-
│
|
|
308
|
-
│ └── NewUnifiedAuthProvider.integration.test.tsx
|
|
334
|
+
│ ├── UnifiedAuthProvider.tsx # Composes multiple service providers
|
|
335
|
+
│ └── __tests__/ # Provider integration tests
|
|
336
|
+
│
|
|
309
337
|
└── hooks/
|
|
310
|
-
└── services/
|
|
311
|
-
├── useAuthService.ts
|
|
312
|
-
├──
|
|
313
|
-
├──
|
|
314
|
-
├──
|
|
315
|
-
├──
|
|
316
|
-
├──
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
338
|
+
└── services/ # Layer 3: React Hooks (EXPORT THESE)
|
|
339
|
+
├── useAuthService.ts # ✅ Import hooks from here
|
|
340
|
+
├── useOrganisationService.ts # ✅ Subscribes to service state changes
|
|
341
|
+
├── useEventService.ts # ✅ Triggers re-renders on updates
|
|
342
|
+
├── useInactivityService.ts # ✅ Provides reactive access
|
|
343
|
+
├── useAuth.ts # Convenience hook wrapper
|
|
344
|
+
├── useCurrentOrganisation.ts # Convenience hook wrapper
|
|
345
|
+
└── useCurrentEvent.ts # Convenience hook wrapper
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Import Guidelines
|
|
349
|
+
|
|
350
|
+
**✅ DO**: Import service hooks from the main package or hooks/services:
|
|
351
|
+
```tsx
|
|
352
|
+
import { useEventService } from '@jmruthers/pace-core';
|
|
353
|
+
// or
|
|
354
|
+
import { useEventService } from '@jmruthers/pace-core/hooks/services/useEventService';
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
**❌ DON'T**: Import hooks from provider files:
|
|
358
|
+
```tsx
|
|
359
|
+
// ❌ Provider files don't export hooks
|
|
360
|
+
import { useEventService } from '@jmruthers/pace-core/providers/services/EventServiceProvider';
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**✅ DO**: Import providers when setting up your app:
|
|
364
|
+
```tsx
|
|
365
|
+
import { EventServiceProvider } from '@jmruthers/pace-core';
|
|
320
366
|
```
|
|
321
367
|
|
|
322
368
|
## Best Practices
|
|
323
369
|
|
|
324
370
|
### 1. Service Usage
|
|
325
371
|
|
|
326
|
-
-
|
|
327
|
-
- Use
|
|
328
|
-
- Use
|
|
372
|
+
- **Import hooks from `hooks/services/`** (or main package export) - these include state subscription logic
|
|
373
|
+
- Use individual service hooks for better performance and granular control
|
|
374
|
+
- Use convenience hooks (like `useEvents`, `useOrganisations`) for common patterns
|
|
375
|
+
- Use the unified provider (`UnifiedAuthProvider`) for backward compatibility and simpler setup
|
|
376
|
+
- **Never import hooks from provider files** - providers only export the provider component and context types
|
|
329
377
|
|
|
330
378
|
### 2. Testing
|
|
331
379
|
|
|
@@ -378,3 +426,40 @@ When contributing to the service architecture:
|
|
|
378
426
|
2. **Write tests**: Include unit and integration tests
|
|
379
427
|
3. **Document changes**: Update documentation for new features
|
|
380
428
|
4. **Maintain compatibility**: Ensure backward compatibility when possible
|
|
429
|
+
|
|
430
|
+
## ♿ Accessibility
|
|
431
|
+
|
|
432
|
+
Service architecture doesn't directly impact accessibility, but ensure:
|
|
433
|
+
|
|
434
|
+
- **Service errors are accessible** - Error messages should be clearly communicated
|
|
435
|
+
- **Loading states are announced** - Screen readers should announce service operations
|
|
436
|
+
- **Focus management** - Ensure focus is properly managed during service operations
|
|
437
|
+
|
|
438
|
+
## ⚠️ Edge Cases
|
|
439
|
+
|
|
440
|
+
### Service Initialization Failures
|
|
441
|
+
|
|
442
|
+
When services fail to initialize:
|
|
443
|
+
- Verify all dependencies are available
|
|
444
|
+
- Check provider hierarchy is correct
|
|
445
|
+
- Ensure Supabase client is properly configured
|
|
446
|
+
- Review service lifecycle management
|
|
447
|
+
- Test with minimal service setup
|
|
448
|
+
|
|
449
|
+
### Service State Synchronization Issues
|
|
450
|
+
|
|
451
|
+
When service state gets out of sync:
|
|
452
|
+
- Verify state updates are properly propagated
|
|
453
|
+
- Check for race conditions in async operations
|
|
454
|
+
- Ensure cache invalidation is working correctly
|
|
455
|
+
- Review service state management
|
|
456
|
+
- Test with concurrent operations
|
|
457
|
+
|
|
458
|
+
### Deprecated Service Usage
|
|
459
|
+
|
|
460
|
+
When using deprecated services:
|
|
461
|
+
- Review migration guides for replacement services
|
|
462
|
+
- Update code to use new service APIs
|
|
463
|
+
- Test thoroughly after migration
|
|
464
|
+
- Remove deprecated service code
|
|
465
|
+
- Update documentation references
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T17:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Best Practices
|
|
@@ -31,8 +31,7 @@ Comprehensive best practices for building secure, performant, and maintainable a
|
|
|
31
31
|
- [**Accessibility Guide**](./accessibility.md) - WCAG compliance and inclusive design
|
|
32
32
|
|
|
33
33
|
### Performance
|
|
34
|
-
- [**Performance Optimization**](./performance.md) -
|
|
35
|
-
- [**Advanced Performance**](./performance-expansion.md) - Advanced optimization techniques
|
|
34
|
+
- [**Performance Optimization**](./performance.md) - Comprehensive performance optimization strategies
|
|
36
35
|
|
|
37
36
|
### Testing
|
|
38
37
|
- [**Testing Best Practices**](./testing.md) - Testing strategies and patterns
|
|
@@ -424,3 +423,50 @@ import { z } from 'zod';
|
|
|
424
423
|
- [Troubleshooting Guide](../troubleshooting/) - Common issues and solutions
|
|
425
424
|
|
|
426
425
|
Remember: **Best practices are guidelines, not rules. Adapt them to your specific needs and constraints.**
|
|
426
|
+
|
|
427
|
+
## ♿ Accessibility
|
|
428
|
+
|
|
429
|
+
All best practices should consider accessibility:
|
|
430
|
+
|
|
431
|
+
- **WCAG 2.1 AA compliance** - Ensure all practices maintain accessibility standards
|
|
432
|
+
- **Screen Reader Support** - Verify practices don't break screen reader functionality
|
|
433
|
+
- **Keyboard Navigation** - Ensure practices don't affect keyboard accessibility
|
|
434
|
+
- **Error Announcements** - Ensure error messages are accessible
|
|
435
|
+
- **Focus Management** - Verify focus handling remains correct
|
|
436
|
+
|
|
437
|
+
### Accessibility Best Practices
|
|
438
|
+
|
|
439
|
+
1. **Test with screen readers** - Verify practices work with assistive technologies
|
|
440
|
+
2. **Check error announcements** - Ensure error messages are properly announced
|
|
441
|
+
3. **Maintain keyboard access** - Verify all interactive elements remain keyboard accessible
|
|
442
|
+
4. **Preserve semantic structure** - Don't break semantic HTML with optimizations
|
|
443
|
+
5. **Test focus management** - Ensure focus handling remains correct
|
|
444
|
+
|
|
445
|
+
## ⚠️ Edge Cases
|
|
446
|
+
|
|
447
|
+
### Best Practices Conflicts
|
|
448
|
+
|
|
449
|
+
When best practices conflict:
|
|
450
|
+
- Prioritize security over performance when necessary
|
|
451
|
+
- Balance accessibility with design requirements
|
|
452
|
+
- Consider trade-offs between maintainability and optimization
|
|
453
|
+
- Document decisions when deviating from best practices
|
|
454
|
+
- Test thoroughly when combining multiple practices
|
|
455
|
+
|
|
456
|
+
### Performance vs Accessibility
|
|
457
|
+
|
|
458
|
+
When performance optimizations impact accessibility:
|
|
459
|
+
- Ensure lazy loading doesn't break screen reader navigation
|
|
460
|
+
- Verify code splitting maintains keyboard navigation
|
|
461
|
+
- Check that memoization doesn't affect focus management
|
|
462
|
+
- Test with assistive technologies after optimizations
|
|
463
|
+
- Balance performance gains with accessibility requirements
|
|
464
|
+
|
|
465
|
+
### Security vs Usability
|
|
466
|
+
|
|
467
|
+
When security practices impact usability:
|
|
468
|
+
- Find balance between security and user experience
|
|
469
|
+
- Provide clear error messages without exposing vulnerabilities
|
|
470
|
+
- Implement security measures transparently
|
|
471
|
+
- Test with real users to ensure usability
|
|
472
|
+
- Document security decisions for future reference
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T17:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Best Practices: Accessibility
|
|
@@ -570,3 +570,32 @@ PACE Core components are designed to meet WCAG 2.1 Level AA standards:
|
|
|
570
570
|
---
|
|
571
571
|
|
|
572
572
|
**Next Steps**: Review your application's accessibility, implement missing ARIA attributes, and test with screen readers.
|
|
573
|
+
|
|
574
|
+
## ⚠️ Edge Cases
|
|
575
|
+
|
|
576
|
+
### Accessibility vs Performance
|
|
577
|
+
|
|
578
|
+
When accessibility features impact performance:
|
|
579
|
+
- Optimize ARIA live regions to reduce re-renders
|
|
580
|
+
- Use efficient focus management techniques
|
|
581
|
+
- Balance screen reader announcements with performance
|
|
582
|
+
- Test performance with assistive technologies enabled
|
|
583
|
+
- Profile accessibility features for bottlenecks
|
|
584
|
+
|
|
585
|
+
### Complex Accessibility Scenarios
|
|
586
|
+
|
|
587
|
+
When dealing with complex accessibility requirements:
|
|
588
|
+
- Test with multiple screen reader combinations
|
|
589
|
+
- Verify keyboard navigation in complex UIs
|
|
590
|
+
- Ensure focus management in dynamic content
|
|
591
|
+
- Test with different assistive technology configurations
|
|
592
|
+
- Document accessibility patterns for complex components
|
|
593
|
+
|
|
594
|
+
### Third-Party Component Accessibility
|
|
595
|
+
|
|
596
|
+
When using third-party components:
|
|
597
|
+
- Verify third-party components meet accessibility standards
|
|
598
|
+
- Add wrapper components for accessibility improvements
|
|
599
|
+
- Test third-party integrations with assistive technologies
|
|
600
|
+
- Document accessibility limitations
|
|
601
|
+
- Provide alternatives when components aren't accessible
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T17:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Common Patterns & Best Practices
|
|
@@ -467,3 +467,50 @@ function DeleteConfirmation({ item, onConfirm }) {
|
|
|
467
467
|
- **[Implementation Guides](./implementation-guides/)** - Explore specific features
|
|
468
468
|
- **[API Reference](./api-reference/components.md)** - Component documentation
|
|
469
469
|
|
|
470
|
+
## ♿ Accessibility
|
|
471
|
+
|
|
472
|
+
Common patterns should maintain accessibility:
|
|
473
|
+
|
|
474
|
+
- **Patterns include accessibility features** - All patterns should consider accessibility
|
|
475
|
+
- **Keyboard navigation is supported** - Patterns should support keyboard navigation
|
|
476
|
+
- **Screen reader compatibility** - Patterns should work with screen readers
|
|
477
|
+
- **Focus management** - Patterns should handle focus correctly
|
|
478
|
+
- **ARIA labels are included** - Patterns should include proper ARIA labels
|
|
479
|
+
|
|
480
|
+
### Accessibility Best Practices
|
|
481
|
+
|
|
482
|
+
1. **Test patterns with screen readers** - Verify patterns work with assistive technologies
|
|
483
|
+
2. **Ensure keyboard access** - All patterns should be keyboard accessible
|
|
484
|
+
3. **Include ARIA labels** - Patterns should have proper ARIA attributes
|
|
485
|
+
4. **Test focus management** - Verify focus handling in patterns
|
|
486
|
+
5. **Document accessibility requirements** - Include accessibility in pattern documentation
|
|
487
|
+
|
|
488
|
+
## ⚠️ Edge Cases
|
|
489
|
+
|
|
490
|
+
### Pattern Conflicts
|
|
491
|
+
|
|
492
|
+
When patterns conflict:
|
|
493
|
+
- Document pattern trade-offs
|
|
494
|
+
- Provide guidance on pattern selection
|
|
495
|
+
- Test pattern combinations
|
|
496
|
+
- Verify patterns work together
|
|
497
|
+
- Consider pattern alternatives
|
|
498
|
+
|
|
499
|
+
### Pattern Scalability
|
|
500
|
+
|
|
501
|
+
When patterns don't scale:
|
|
502
|
+
- Test patterns with large datasets
|
|
503
|
+
- Verify patterns work with many components
|
|
504
|
+
- Monitor pattern performance
|
|
505
|
+
- Optimize patterns for scale
|
|
506
|
+
- Document scalability limitations
|
|
507
|
+
|
|
508
|
+
### Pattern Maintenance
|
|
509
|
+
|
|
510
|
+
When patterns need updates:
|
|
511
|
+
- Version pattern documentation
|
|
512
|
+
- Provide migration guides
|
|
513
|
+
- Test pattern updates thoroughly
|
|
514
|
+
- Document breaking changes
|
|
515
|
+
- Maintain backward compatibility when possible
|
|
516
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T17:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Deployment Best Practices
|
|
@@ -1052,6 +1052,52 @@ else
|
|
|
1052
1052
|
echo "Rollback failed"
|
|
1053
1053
|
exit 1
|
|
1054
1054
|
fi
|
|
1055
|
-
|
|
1055
|
+
|
|
1056
|
+
## ♿ Accessibility
|
|
1057
|
+
|
|
1058
|
+
Deployment should maintain accessibility:
|
|
1059
|
+
|
|
1060
|
+
- **Production builds maintain accessibility** - Verify accessibility features work in production
|
|
1061
|
+
- **Environment variables don't break accessibility** - Ensure accessibility settings are correct
|
|
1062
|
+
- **CDN caching doesn't affect accessibility** - Verify cached assets maintain accessibility
|
|
1063
|
+
- **Error pages are accessible** - Ensure error pages meet accessibility standards
|
|
1064
|
+
- **Monitoring includes accessibility metrics** - Track accessibility in production
|
|
1065
|
+
|
|
1066
|
+
### Accessibility Best Practices
|
|
1067
|
+
|
|
1068
|
+
1. **Test production builds with screen readers** - Verify accessibility works in production
|
|
1069
|
+
2. **Monitor accessibility in production** - Track accessibility metrics
|
|
1070
|
+
3. **Ensure error pages are accessible** - Error pages should meet WCAG standards
|
|
1071
|
+
4. **Test with assistive technologies** - Verify production deployment works with screen readers
|
|
1072
|
+
5. **Document accessibility requirements** - Include accessibility in deployment checklists
|
|
1073
|
+
|
|
1074
|
+
## ⚠️ Edge Cases
|
|
1075
|
+
|
|
1076
|
+
### Deployment Failures
|
|
1077
|
+
|
|
1078
|
+
When deployment fails:
|
|
1079
|
+
- Have rollback plan ready
|
|
1080
|
+
- Test deployment procedures in staging
|
|
1081
|
+
- Monitor deployment logs
|
|
1082
|
+
- Verify all dependencies are available
|
|
1083
|
+
- Test with minimal configuration
|
|
1084
|
+
|
|
1085
|
+
### Environment-Specific Issues
|
|
1086
|
+
|
|
1087
|
+
When issues occur in specific environments:
|
|
1088
|
+
- Verify environment variables are correct
|
|
1089
|
+
- Check build configuration matches environment
|
|
1090
|
+
- Ensure all services are available
|
|
1091
|
+
- Test with environment-specific data
|
|
1092
|
+
- Review environment differences
|
|
1093
|
+
|
|
1094
|
+
### Rollback Scenarios
|
|
1095
|
+
|
|
1096
|
+
When rollback is needed:
|
|
1097
|
+
- Have automated rollback procedures
|
|
1098
|
+
- Test rollback in staging environment
|
|
1099
|
+
- Verify data integrity after rollback
|
|
1100
|
+
- Document rollback steps clearly
|
|
1101
|
+
- Monitor system after rollback
|
|
1056
1102
|
|
|
1057
1103
|
For more information about deploying your application, see the [Security Guide](./security.md) and [Performance Guide](./performance.md).
|