@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-18T14:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Component Styling Guide
|
|
@@ -413,4 +413,54 @@ function DashboardCard({ title, children }) {
|
|
|
413
413
|
|
|
414
414
|
---
|
|
415
415
|
|
|
416
|
+
## ♿ Accessibility
|
|
417
|
+
|
|
418
|
+
Component styling maintains accessibility standards:
|
|
419
|
+
|
|
420
|
+
- **Color Contrast** - All custom colors should meet WCAG 2.1 AA contrast requirements
|
|
421
|
+
- **Focus Indicators** - Custom styles should not remove or obscure focus indicators
|
|
422
|
+
- **Screen Reader Support** - Styling changes don't affect screen reader functionality
|
|
423
|
+
- **High Contrast Mode** - Custom styles work with system high contrast settings
|
|
424
|
+
|
|
425
|
+
### Accessibility Best Practices
|
|
426
|
+
|
|
427
|
+
1. **Test color contrast** - Ensure all color combinations meet WCAG standards
|
|
428
|
+
2. **Preserve focus indicators** - Don't remove or hide focus styles
|
|
429
|
+
3. **Test with high contrast mode** - Verify styles work with system accessibility settings
|
|
430
|
+
4. **Maintain semantic structure** - Don't use styling to convey information alone
|
|
431
|
+
|
|
432
|
+
## ⚠️ Edge Cases
|
|
433
|
+
|
|
434
|
+
### Theme Application Failures
|
|
435
|
+
|
|
436
|
+
When theme application fails:
|
|
437
|
+
- System falls back to default theme
|
|
438
|
+
- Errors are logged to console in development
|
|
439
|
+
- Components remain functional with default styles
|
|
440
|
+
- Clear error messages guide recovery
|
|
441
|
+
|
|
442
|
+
### CSS Conflicts
|
|
443
|
+
|
|
444
|
+
When custom styles conflict with component styles:
|
|
445
|
+
- Component styles take precedence for functionality
|
|
446
|
+
- Custom styles can override with `!important` when needed
|
|
447
|
+
- Clear documentation explains style precedence
|
|
448
|
+
- No breaking changes to component functionality
|
|
449
|
+
|
|
450
|
+
### Missing Design Tokens
|
|
451
|
+
|
|
452
|
+
When required design tokens are missing:
|
|
453
|
+
- System falls back to default tokens
|
|
454
|
+
- Components remain functional
|
|
455
|
+
- Clear warnings indicate missing tokens
|
|
456
|
+
- Documentation guides token setup
|
|
457
|
+
|
|
458
|
+
### Browser Compatibility
|
|
459
|
+
|
|
460
|
+
When styles don't work in certain browsers:
|
|
461
|
+
- System provides fallback styles
|
|
462
|
+
- Progressive enhancement ensures functionality
|
|
463
|
+
- Clear documentation explains browser support
|
|
464
|
+
- Graceful degradation maintains usability
|
|
465
|
+
|
|
416
466
|
**Next Steps**: Start customizing components to match your brand while maintaining design system consistency.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T14:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# DataTable Implementation Guide
|
|
@@ -66,13 +66,13 @@ const columns: DataTableColumn<User>[] = [
|
|
|
66
66
|
accessorKey: 'name',
|
|
67
67
|
header: 'Name',
|
|
68
68
|
sortable: true,
|
|
69
|
-
|
|
69
|
+
searchable: true, // Include this column in global search
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
accessorKey: 'email',
|
|
73
73
|
header: 'Email',
|
|
74
74
|
sortable: true,
|
|
75
|
-
|
|
75
|
+
searchable: true, // Include this column in global search
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
accessorKey: 'role',
|
|
@@ -2356,7 +2356,6 @@ Enable debug logging for DataTable issues:
|
|
|
2356
2356
|
<UnifiedAuthProvider
|
|
2357
2357
|
supabaseClient={supabase}
|
|
2358
2358
|
appName="your-app"
|
|
2359
|
-
enableRBAC={true}
|
|
2360
2359
|
debug={true} // Enable debug logging
|
|
2361
2360
|
>
|
|
2362
2361
|
<YourApp />
|
|
@@ -2540,8 +2539,78 @@ DataTable
|
|
|
2540
2539
|
- **60fps scrolling** performance guaranteed
|
|
2541
2540
|
- **< 10ms search times** for indexed fields
|
|
2542
2541
|
|
|
2542
|
+
## ♿ Accessibility
|
|
2543
|
+
|
|
2544
|
+
The DataTable component is designed with accessibility in mind and meets WCAG 2.1 AA standards:
|
|
2545
|
+
|
|
2546
|
+
- **Keyboard Navigation** - Full keyboard support for all interactive elements (sorting, filtering, pagination, row selection)
|
|
2547
|
+
- **Screen Reader Support** - Proper ARIA labels and roles for all table elements
|
|
2548
|
+
- **Focus Management** - Logical tab order and visible focus indicators
|
|
2549
|
+
- **Semantic HTML** - Uses proper `<table>`, `<thead>`, `<tbody>`, `<th>`, `<td>` elements
|
|
2550
|
+
- **Color Contrast** - All text meets WCAG contrast requirements
|
|
2551
|
+
- **Responsive Design** - Works with screen readers and assistive technologies
|
|
2552
|
+
|
|
2553
|
+
### Accessibility Features
|
|
2554
|
+
|
|
2555
|
+
1. **ARIA Labels** - All interactive elements have descriptive ARIA labels
|
|
2556
|
+
2. **Row Headers** - Column headers are properly associated with data cells
|
|
2557
|
+
3. **Sort Indicators** - Visual and text indicators for sort direction
|
|
2558
|
+
4. **Loading States** - Loading indicators are announced to screen readers
|
|
2559
|
+
5. **Error Messages** - Error states are properly announced
|
|
2560
|
+
6. **Keyboard Shortcuts** - Common operations accessible via keyboard
|
|
2561
|
+
|
|
2562
|
+
### Accessibility Best Practices
|
|
2563
|
+
|
|
2564
|
+
1. **Use semantic column headers** - Ensure headers clearly describe column content
|
|
2565
|
+
2. **Provide alt text for images** - Any images in cells should have alt text
|
|
2566
|
+
3. **Test with screen readers** - Verify table is navigable with screen readers
|
|
2567
|
+
4. **Maintain focus visibility** - Ensure focus indicators are visible
|
|
2568
|
+
5. **Use proper heading hierarchy** - Use appropriate heading levels for table context
|
|
2569
|
+
|
|
2570
|
+
## ⚠️ Edge Cases
|
|
2571
|
+
|
|
2572
|
+
### Empty Data Sets
|
|
2573
|
+
|
|
2574
|
+
When no data is available:
|
|
2575
|
+
- Table displays "No data" message
|
|
2576
|
+
- All features remain functional (search, filters, etc.)
|
|
2577
|
+
- Empty state is announced to screen readers
|
|
2578
|
+
- Custom empty state can be provided via `emptyState` prop
|
|
2579
|
+
|
|
2580
|
+
### Very Large Datasets
|
|
2581
|
+
|
|
2582
|
+
When handling 100,000+ records:
|
|
2583
|
+
- Virtualization is automatically enabled
|
|
2584
|
+
- Server-side pagination is recommended
|
|
2585
|
+
- Memory usage is monitored and optimized
|
|
2586
|
+
- Performance metrics help identify bottlenecks
|
|
2587
|
+
|
|
2588
|
+
### Rapid Data Updates
|
|
2589
|
+
|
|
2590
|
+
When data changes frequently:
|
|
2591
|
+
- Table handles updates gracefully
|
|
2592
|
+
- Selection state is preserved when possible
|
|
2593
|
+
- Sorting and filtering are recalculated efficiently
|
|
2594
|
+
- Performance optimizations prevent UI lag
|
|
2595
|
+
|
|
2596
|
+
### Concurrent User Actions
|
|
2597
|
+
|
|
2598
|
+
When multiple operations occur simultaneously:
|
|
2599
|
+
- Operations are queued and processed in order
|
|
2600
|
+
- Loading states prevent conflicting actions
|
|
2601
|
+
- Error handling ensures data consistency
|
|
2602
|
+
- User feedback is provided for all operations
|
|
2603
|
+
|
|
2604
|
+
### Network Failures
|
|
2605
|
+
|
|
2606
|
+
When network requests fail:
|
|
2607
|
+
- Error states are clearly displayed
|
|
2608
|
+
- Retry mechanisms are available
|
|
2609
|
+
- Partial data is preserved when possible
|
|
2610
|
+
- User-friendly error messages are shown
|
|
2611
|
+
|
|
2543
2612
|
## Conclusion
|
|
2544
2613
|
|
|
2545
2614
|
The PACE Core DataTable provides enterprise-grade functionality with comprehensive features for data management, RBAC integration, hierarchical data display, advanced filtering, and performance optimization. With automatic performance tuning, intelligent pagination modes, advanced search indexing, and memory management, it can handle datasets from hundreds to hundreds of thousands of records while maintaining excellent user experience.
|
|
2546
2615
|
|
|
2547
|
-
The implementation includes extensive testing, performance monitoring,
|
|
2616
|
+
The implementation includes extensive testing, performance monitoring, backward compatibility, and full accessibility support, making it a powerful tool for building data-rich applications with PACE Core.
|
|
@@ -285,7 +285,6 @@ Enable debug logging to see filter behavior:
|
|
|
285
285
|
<UnifiedAuthProvider
|
|
286
286
|
supabaseClient={supabase}
|
|
287
287
|
appName="your-app"
|
|
288
|
-
enableRBAC={true}
|
|
289
288
|
debug={true} // Enable debug logging
|
|
290
289
|
>
|
|
291
290
|
<YourApp />
|
|
@@ -303,7 +302,7 @@ Enable debug logging to see filter behavior:
|
|
|
303
302
|
|
|
304
303
|
## Migration from Old Filtering
|
|
305
304
|
|
|
306
|
-
If you're upgrading from an older version:
|
|
305
|
+
If you're upgrading from an older version: 0.5.181
|
|
307
306
|
|
|
308
307
|
1. **Replace `meta.filterOptions`** with `filterSelectOptions`
|
|
309
308
|
2. **Add `filterType: 'select'`** for explicit select filters
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T14:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Dynamic Theming
|
|
@@ -228,6 +228,101 @@ function App() {
|
|
|
228
228
|
- **Performance Optimized** - Minimal DOM updates
|
|
229
229
|
- **Type Safe** - Full TypeScript support
|
|
230
230
|
|
|
231
|
+
## Event Theming
|
|
232
|
+
|
|
233
|
+
### Overview
|
|
234
|
+
|
|
235
|
+
Event theming allows you to automatically apply event-specific colors when an event is selected. The system uses the `event_colours` JSONB field in the events table to store theme colors.
|
|
236
|
+
|
|
237
|
+
### Database Schema
|
|
238
|
+
|
|
239
|
+
Events have an `event_colours` JSONB field that stores theme colors in OKLCH format:
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
interface Event {
|
|
243
|
+
event_colours?: Record<string, unknown> | null; // JSONB field for theme colors
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
The expected format:
|
|
248
|
+
```json
|
|
249
|
+
{
|
|
250
|
+
"main": {
|
|
251
|
+
"50": {"L": 0.98, "C": 0.007, "H": 29.203},
|
|
252
|
+
"100": {"L": 0.96, "C": 0.018, "H": 29.203},
|
|
253
|
+
// ... all Tailwind shades 50-950
|
|
254
|
+
"raw": {"L": 0.587, "C": 0.24, "H": 29.203}
|
|
255
|
+
},
|
|
256
|
+
"sec": { /* secondary palette */ },
|
|
257
|
+
"acc": { /* accent palette */ }
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Automatic Event Theming
|
|
262
|
+
|
|
263
|
+
The `useEventTheme()` hook automatically applies event colors when an event is selected:
|
|
264
|
+
|
|
265
|
+
```tsx
|
|
266
|
+
import { useEventTheme } from '@jmruthers/pace-core';
|
|
267
|
+
|
|
268
|
+
function MyApp() {
|
|
269
|
+
useEventTheme(); // Automatically applies event colors
|
|
270
|
+
|
|
271
|
+
return <div>Your app content</div>;
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### How It Works
|
|
276
|
+
|
|
277
|
+
1. **ADMIN app** sets event colors via a palette picker and saves to `event.event_colours` in the database
|
|
278
|
+
2. **Consuming apps** (CAKE, TRACE) call `useEventTheme()` hook
|
|
279
|
+
3. When user selects an event via `EventSelector`, the hook detects the change
|
|
280
|
+
4. Hook extracts `event_colours` from selected event
|
|
281
|
+
5. Hook calls `applyPalette()` with the colors
|
|
282
|
+
6. CSS variables update dynamically → UI colors change
|
|
283
|
+
7. When event is deselected, hook calls `clearPalette()`
|
|
284
|
+
|
|
285
|
+
### Architecture Decision
|
|
286
|
+
|
|
287
|
+
**What's in pace-core:**
|
|
288
|
+
- ✅ Event theming infrastructure (runtime APIs)
|
|
289
|
+
- ✅ Automatic event theming hook (`useEventTheme`)
|
|
290
|
+
- ✅ Documentation and examples
|
|
291
|
+
- ✅ Type definitions
|
|
292
|
+
|
|
293
|
+
**What's in consuming apps:**
|
|
294
|
+
- ✅ Calling `useEventTheme()` in the app component
|
|
295
|
+
- ✅ ADMIN app: Palette picker UI to set colors
|
|
296
|
+
- ✅ ADMIN app: Save colors to database via `event_colours` field
|
|
297
|
+
|
|
298
|
+
### Migration Guide
|
|
299
|
+
|
|
300
|
+
If you're already manually applying event colors in your consuming apps:
|
|
301
|
+
|
|
302
|
+
**Before:**
|
|
303
|
+
```tsx
|
|
304
|
+
function App() {
|
|
305
|
+
const { selectedEvent } = useEvents();
|
|
306
|
+
|
|
307
|
+
useEffect(() => {
|
|
308
|
+
if (selectedEvent?.event_colours) {
|
|
309
|
+
applyPalette(selectedEvent.event_colours);
|
|
310
|
+
} else {
|
|
311
|
+
clearPalette();
|
|
312
|
+
}
|
|
313
|
+
}, [selectedEvent]);
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**After:**
|
|
318
|
+
```tsx
|
|
319
|
+
function App() {
|
|
320
|
+
useEventTheme(); // Replaces the above useEffect
|
|
321
|
+
|
|
322
|
+
return <div>Your app</div>;
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
231
326
|
## Troubleshooting
|
|
232
327
|
|
|
233
328
|
### Colors Not Applying
|
|
@@ -240,7 +335,63 @@ function App() {
|
|
|
240
335
|
- Check that all required shades (50-950) are provided
|
|
241
336
|
- Use `isDynamicThemingActive()` to debug
|
|
242
337
|
|
|
338
|
+
### Event Theming Not Working
|
|
339
|
+
- Ensure `useEventTheme()` is called at the top level of your app
|
|
340
|
+
- Verify event has `event_colours` field populated
|
|
341
|
+
- Check that EventProvider is properly set up
|
|
342
|
+
- Verify event selection is working correctly
|
|
343
|
+
|
|
243
344
|
### SSR Issues
|
|
244
345
|
- Ensure `generateSSRThemeCSS()` is called on server
|
|
245
346
|
- Verify CSS is injected into HTML head
|
|
246
|
-
- Check for hydration mismatches
|
|
347
|
+
- Check for hydration mismatches
|
|
348
|
+
|
|
349
|
+
## ♿ Accessibility
|
|
350
|
+
|
|
351
|
+
The dynamic theming system maintains accessibility standards:
|
|
352
|
+
|
|
353
|
+
- **Color Contrast** - All theme colors should meet WCAG 2.1 AA contrast requirements
|
|
354
|
+
- **Color Independence** - Information is not conveyed by color alone
|
|
355
|
+
- **High Contrast Mode** - Theme colors work with system high contrast settings
|
|
356
|
+
- **Screen Reader Support** - Theme changes don't affect screen reader functionality
|
|
357
|
+
|
|
358
|
+
### Accessibility Best Practices
|
|
359
|
+
|
|
360
|
+
1. **Test color contrast** - Ensure all color combinations meet WCAG standards
|
|
361
|
+
2. **Provide alternative indicators** - Don't rely solely on color to convey information
|
|
362
|
+
3. **Test with high contrast mode** - Verify themes work with system accessibility settings
|
|
363
|
+
4. **Maintain readability** - Ensure text remains readable with all theme variations
|
|
364
|
+
|
|
365
|
+
## ⚠️ Edge Cases
|
|
366
|
+
|
|
367
|
+
### Missing Palette Data
|
|
368
|
+
|
|
369
|
+
When palette data is incomplete or missing:
|
|
370
|
+
- `applyPalette()` validates palette structure before applying
|
|
371
|
+
- Missing shades default to nearest available shade
|
|
372
|
+
- Invalid OKLCH values are rejected with error messages
|
|
373
|
+
- System falls back to default app colors if validation fails
|
|
374
|
+
|
|
375
|
+
### Theme Application Failures
|
|
376
|
+
|
|
377
|
+
When theme application fails:
|
|
378
|
+
- Errors are logged to console in development mode
|
|
379
|
+
- System gracefully falls back to default colors
|
|
380
|
+
- `isDynamicThemingActive()` returns false on failure
|
|
381
|
+
- `getCurrentThemeData()` returns null if no theme is active
|
|
382
|
+
|
|
383
|
+
### Event Theme Conflicts
|
|
384
|
+
|
|
385
|
+
When multiple events are selected:
|
|
386
|
+
- Latest event theme takes precedence
|
|
387
|
+
- Previous themes are automatically cleared
|
|
388
|
+
- `useEventTheme()` handles cleanup automatically
|
|
389
|
+
- No manual intervention required
|
|
390
|
+
|
|
391
|
+
### SSR/CSR Mismatches
|
|
392
|
+
|
|
393
|
+
When server and client themes differ:
|
|
394
|
+
- SSR theme is applied first, then client theme updates
|
|
395
|
+
- Hydration mismatches are avoided by applying theme early
|
|
396
|
+
- `generateSSRThemeCSS()` ensures consistent initial render
|
|
397
|
+
- Client-side theme updates are applied after hydration
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-11-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T14:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# File Reference System
|
|
@@ -1048,6 +1048,75 @@ Run the cleanup migration (if applicable):
|
|
|
1048
1048
|
- Remove manual URL generation code
|
|
1049
1049
|
- Remove deprecated RPC function calls
|
|
1050
1050
|
|
|
1051
|
+
## ♿ Accessibility
|
|
1052
|
+
|
|
1053
|
+
The File Reference System components are designed with accessibility in mind:
|
|
1054
|
+
|
|
1055
|
+
- **WCAG 2.1 AA compliant** - All file management components meet accessibility standards
|
|
1056
|
+
- **Keyboard Navigation** - Full keyboard support for file operations
|
|
1057
|
+
- **Screen Reader Support** - Proper ARIA labels for file uploads and displays
|
|
1058
|
+
- **Focus Management** - Logical tab order for file management interfaces
|
|
1059
|
+
- **Error Announcements** - File upload errors are properly announced
|
|
1060
|
+
- **Loading States** - Upload progress is accessible and announced
|
|
1061
|
+
|
|
1062
|
+
### Accessibility Best Practices
|
|
1063
|
+
|
|
1064
|
+
1. **Provide alt text for file previews** - All file previews should have descriptive alt text
|
|
1065
|
+
2. **Label file inputs clearly** - Use proper labels for file upload inputs
|
|
1066
|
+
3. **Announce upload progress** - Use ARIA live regions for upload status
|
|
1067
|
+
4. **Test with screen readers** - Verify file operations work with assistive technologies
|
|
1068
|
+
5. **Ensure keyboard access** - All file management actions should be keyboard accessible
|
|
1069
|
+
|
|
1070
|
+
## ⚠️ Edge Cases
|
|
1071
|
+
|
|
1072
|
+
### Large File Uploads
|
|
1073
|
+
|
|
1074
|
+
When uploading very large files:
|
|
1075
|
+
- Progress indicators show upload status
|
|
1076
|
+
- Network failures can be retried
|
|
1077
|
+
- Partial uploads are handled gracefully
|
|
1078
|
+
- File size validation prevents oversized uploads
|
|
1079
|
+
|
|
1080
|
+
### Storage Quota Exceeded
|
|
1081
|
+
|
|
1082
|
+
When storage quota is exceeded:
|
|
1083
|
+
- Clear error messages explain the issue
|
|
1084
|
+
- Users are notified of quota limits
|
|
1085
|
+
- File operations fail gracefully
|
|
1086
|
+
- Alternative storage options can be suggested
|
|
1087
|
+
|
|
1088
|
+
### Orphaned Files
|
|
1089
|
+
|
|
1090
|
+
When files become orphaned (record deleted but file remains):
|
|
1091
|
+
- Audit functions identify orphaned files
|
|
1092
|
+
- Cleanup utilities help manage orphaned files
|
|
1093
|
+
- Storage costs are minimized through cleanup
|
|
1094
|
+
- Files can be safely deleted after verification
|
|
1095
|
+
|
|
1096
|
+
### Network Failures During Upload
|
|
1097
|
+
|
|
1098
|
+
When network fails during file upload:
|
|
1099
|
+
- Upload progress is preserved when possible
|
|
1100
|
+
- Retry mechanisms are available
|
|
1101
|
+
- Partial uploads are cleaned up automatically
|
|
1102
|
+
- User-friendly error messages guide recovery
|
|
1103
|
+
|
|
1104
|
+
### Invalid File Types
|
|
1105
|
+
|
|
1106
|
+
When invalid file types are uploaded:
|
|
1107
|
+
- File type validation prevents invalid uploads
|
|
1108
|
+
- Clear error messages explain allowed types
|
|
1109
|
+
- File type detection is automatic
|
|
1110
|
+
- User guidance helps select correct files
|
|
1111
|
+
|
|
1112
|
+
### Concurrent File Operations
|
|
1113
|
+
|
|
1114
|
+
When multiple file operations occur simultaneously:
|
|
1115
|
+
- Operations are queued and processed in order
|
|
1116
|
+
- File conflicts are handled gracefully
|
|
1117
|
+
- User feedback is provided for all operations
|
|
1118
|
+
- Data consistency is maintained
|
|
1119
|
+
|
|
1051
1120
|
## Support
|
|
1052
1121
|
|
|
1053
1122
|
For issues or questions about the File Reference System:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T14:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# File Upload & Storage System
|
|
@@ -811,6 +811,75 @@ setRBACConfig({
|
|
|
811
811
|
});
|
|
812
812
|
```
|
|
813
813
|
|
|
814
|
+
## ♿ Accessibility
|
|
815
|
+
|
|
816
|
+
File upload and storage components are designed with accessibility in mind:
|
|
817
|
+
|
|
818
|
+
- **WCAG 2.1 AA compliant** - All file components meet accessibility standards
|
|
819
|
+
- **Keyboard Navigation** - Full keyboard support for drag-and-drop and file selection
|
|
820
|
+
- **Screen Reader Support** - Proper ARIA labels for file upload areas and file lists
|
|
821
|
+
- **Focus Management** - Logical tab order for file management interfaces
|
|
822
|
+
- **Error Announcements** - Upload errors are properly announced to screen readers
|
|
823
|
+
- **Progress Indicators** - Upload progress is accessible and announced
|
|
824
|
+
|
|
825
|
+
### Accessibility Best Practices
|
|
826
|
+
|
|
827
|
+
1. **Label file inputs clearly** - Use descriptive labels for file upload inputs
|
|
828
|
+
2. **Provide keyboard alternatives** - Ensure drag-and-drop has keyboard equivalents
|
|
829
|
+
3. **Announce upload status** - Use ARIA live regions for upload progress
|
|
830
|
+
4. **Test with screen readers** - Verify file operations work with assistive technologies
|
|
831
|
+
5. **Ensure focus visibility** - File upload areas should have visible focus indicators
|
|
832
|
+
|
|
833
|
+
## ⚠️ Edge Cases
|
|
834
|
+
|
|
835
|
+
### File Upload Failures
|
|
836
|
+
|
|
837
|
+
When file uploads fail:
|
|
838
|
+
- Clear error messages explain the failure
|
|
839
|
+
- Retry mechanisms are available
|
|
840
|
+
- Partial uploads are cleaned up
|
|
841
|
+
- User guidance helps resolve issues
|
|
842
|
+
|
|
843
|
+
### Storage Quota Exceeded
|
|
844
|
+
|
|
845
|
+
When storage quota is exceeded:
|
|
846
|
+
- Error messages clearly explain the issue
|
|
847
|
+
- Users are notified of quota limits
|
|
848
|
+
- File operations fail gracefully
|
|
849
|
+
- Alternative solutions can be suggested
|
|
850
|
+
|
|
851
|
+
### Invalid File Types
|
|
852
|
+
|
|
853
|
+
When invalid file types are selected:
|
|
854
|
+
- File type validation prevents invalid uploads
|
|
855
|
+
- Clear error messages explain allowed types
|
|
856
|
+
- File type detection is automatic
|
|
857
|
+
- User guidance helps select correct files
|
|
858
|
+
|
|
859
|
+
### Large File Uploads
|
|
860
|
+
|
|
861
|
+
When uploading very large files:
|
|
862
|
+
- Progress indicators show upload status
|
|
863
|
+
- Network failures can be retried
|
|
864
|
+
- Partial uploads are handled gracefully
|
|
865
|
+
- File size validation prevents oversized uploads
|
|
866
|
+
|
|
867
|
+
### Concurrent File Operations
|
|
868
|
+
|
|
869
|
+
When multiple file operations occur simultaneously:
|
|
870
|
+
- Operations are queued and processed in order
|
|
871
|
+
- File conflicts are handled gracefully
|
|
872
|
+
- User feedback is provided for all operations
|
|
873
|
+
- Data consistency is maintained
|
|
874
|
+
|
|
875
|
+
### Network Interruptions
|
|
876
|
+
|
|
877
|
+
When network is interrupted during upload:
|
|
878
|
+
- Upload progress is preserved when possible
|
|
879
|
+
- Automatic retry mechanisms are available
|
|
880
|
+
- Partial uploads are cleaned up
|
|
881
|
+
- User-friendly error messages guide recovery
|
|
882
|
+
|
|
814
883
|
## Next Steps
|
|
815
884
|
|
|
816
885
|
- **[Storage Utilities](../api-reference/utilities.md#storage)** - Additional storage utilities
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T14:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Forms
|
|
@@ -568,4 +568,54 @@ function FormDebugger() {
|
|
|
568
568
|
}
|
|
569
569
|
```
|
|
570
570
|
|
|
571
|
+
## ⚠️ Edge Cases
|
|
572
|
+
|
|
573
|
+
### Form Submission Failures
|
|
574
|
+
|
|
575
|
+
When form submission fails:
|
|
576
|
+
- Error messages are clearly displayed
|
|
577
|
+
- Form data is preserved (not lost)
|
|
578
|
+
- Retry mechanisms are available
|
|
579
|
+
- User-friendly error messages guide recovery
|
|
580
|
+
|
|
581
|
+
### Network Interruptions
|
|
582
|
+
|
|
583
|
+
When network is interrupted during submission:
|
|
584
|
+
- Form state is preserved
|
|
585
|
+
- Partial submissions are prevented
|
|
586
|
+
- Clear error messages explain the issue
|
|
587
|
+
- Retry mechanisms are available
|
|
588
|
+
|
|
589
|
+
### Validation Race Conditions
|
|
590
|
+
|
|
591
|
+
When validation occurs during rapid input:
|
|
592
|
+
- Validation is debounced to prevent conflicts
|
|
593
|
+
- Latest validation results are used
|
|
594
|
+
- No flickering or inconsistent states
|
|
595
|
+
- Smooth user experience maintained
|
|
596
|
+
|
|
597
|
+
### Large Form Data
|
|
598
|
+
|
|
599
|
+
When forms contain large amounts of data:
|
|
600
|
+
- Performance remains optimal
|
|
601
|
+
- Validation is efficient
|
|
602
|
+
- Memory usage is managed
|
|
603
|
+
- No degradation with large datasets
|
|
604
|
+
|
|
605
|
+
### Concurrent Form Submissions
|
|
606
|
+
|
|
607
|
+
When multiple submissions occur:
|
|
608
|
+
- Duplicate submissions are prevented
|
|
609
|
+
- Loading states prevent conflicts
|
|
610
|
+
- Error handling ensures data consistency
|
|
611
|
+
- User feedback is provided for all operations
|
|
612
|
+
|
|
613
|
+
### Browser Back/Forward Navigation
|
|
614
|
+
|
|
615
|
+
When users navigate back/forward:
|
|
616
|
+
- Form state is preserved when possible
|
|
617
|
+
- Validation errors are maintained
|
|
618
|
+
- User data is not lost
|
|
619
|
+
- Smooth navigation experience
|
|
620
|
+
|
|
571
621
|
For more advanced form patterns and examples, see the [Form Examples](../examples/forms.md) guide.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T14:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Inactivity Tracking
|
|
@@ -777,6 +777,56 @@ const secure = useInactivityTracker({
|
|
|
777
777
|
});
|
|
778
778
|
```
|
|
779
779
|
|
|
780
|
+
## ⚠️ Edge Cases
|
|
781
|
+
|
|
782
|
+
### Multiple Tab Sessions
|
|
783
|
+
|
|
784
|
+
When users have multiple tabs open:
|
|
785
|
+
- Activity is synchronized across all tabs via BroadcastChannel
|
|
786
|
+
- Inactivity warnings appear in all tabs simultaneously
|
|
787
|
+
- Logout in one tab logs out all tabs
|
|
788
|
+
- Activity in any tab resets the timer for all tabs
|
|
789
|
+
|
|
790
|
+
### Browser Tab Switching
|
|
791
|
+
|
|
792
|
+
When users switch between browser tabs:
|
|
793
|
+
- Activity tracking continues in background tabs
|
|
794
|
+
- Warnings are shown when user returns to the tab
|
|
795
|
+
- Focus management ensures warnings are visible
|
|
796
|
+
- Timer continues counting even when tab is inactive
|
|
797
|
+
|
|
798
|
+
### Network Failures
|
|
799
|
+
|
|
800
|
+
When network fails during inactivity tracking:
|
|
801
|
+
- Local tracking continues to work
|
|
802
|
+
- Warnings are still shown
|
|
803
|
+
- Logout callbacks are executed
|
|
804
|
+
- Cross-tab sync may be delayed until network recovers
|
|
805
|
+
|
|
806
|
+
### Rapid Activity Changes
|
|
807
|
+
|
|
808
|
+
When user activity changes rapidly:
|
|
809
|
+
- Event throttling prevents excessive updates
|
|
810
|
+
- Timer resets are debounced for performance
|
|
811
|
+
- Warning states are managed efficiently
|
|
812
|
+
- No performance degradation with rapid changes
|
|
813
|
+
|
|
814
|
+
### Browser Storage Limitations
|
|
815
|
+
|
|
816
|
+
When browser storage is limited or disabled:
|
|
817
|
+
- System gracefully degrades to single-tab mode
|
|
818
|
+
- Cross-tab sync may not work
|
|
819
|
+
- Local tracking continues to function
|
|
820
|
+
- Clear error messages explain limitations
|
|
821
|
+
|
|
822
|
+
### Session Extension During Warning
|
|
823
|
+
|
|
824
|
+
When user extends session during warning:
|
|
825
|
+
- Timer is immediately reset
|
|
826
|
+
- Warning modal is closed
|
|
827
|
+
- Activity tracking resumes
|
|
828
|
+
- No interruption to user workflow
|
|
829
|
+
|
|
780
830
|
## Next Steps
|
|
781
831
|
|
|
782
832
|
- **[Authentication Integration](./permission-enforcement.md)** - Security patterns
|