@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,5 +1,6 @@
|
|
|
1
|
+
import './UnifiedAuthProvider-F86d7dSi.js';
|
|
1
2
|
import * as React from 'react';
|
|
2
|
-
import React__default, { Component, ReactNode
|
|
3
|
+
import React__default, { Component, ReactNode } from 'react';
|
|
3
4
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
4
5
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
5
6
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
@@ -10,13 +11,16 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
|
10
11
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
11
12
|
import { DayPickerProps } from 'react-day-picker';
|
|
12
13
|
import * as ToastPrimitives from '@radix-ui/react-toast';
|
|
14
|
+
import './useToast-C8gR5ir4.js';
|
|
13
15
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
14
|
-
import
|
|
16
|
+
import './DataTable-Bz8ffqyA.js';
|
|
17
|
+
import './types-_x1f4QBF.js';
|
|
18
|
+
import { FieldValues, DefaultValues, SubmitHandler, SubmitErrorHandler, UseFormReturn, FieldPath, ControllerRenderProps, ControllerFieldState, UseFormStateReturn } from 'react-hook-form';
|
|
15
19
|
import { z } from 'zod';
|
|
16
20
|
import { User, SupabaseClient, createClient } from '@supabase/supabase-js';
|
|
17
|
-
import {
|
|
18
|
-
import { O as Organisation } from './
|
|
19
|
-
import {
|
|
21
|
+
import { P as Permission, A as AccessLevel } from './types-UU913iLA.js';
|
|
22
|
+
import { E as Event, O as Organisation } from './event-CW5YB_2p.js';
|
|
23
|
+
import { b as FileCategory, e as FileUploadResult, U as UploadProgress, c as FileUploadOptions, F as FileReference } from './file-reference-D06mEEWW.js';
|
|
20
24
|
|
|
21
25
|
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
22
26
|
/** Visual variant of the button */
|
|
@@ -115,6 +119,10 @@ interface CardProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
115
119
|
variant?: 'default' | 'outline' | 'ghost';
|
|
116
120
|
/** Size of the card */
|
|
117
121
|
size?: 'default' | 'sm' | 'lg';
|
|
122
|
+
/** Whether the card should appear as a clickable link with hover effects */
|
|
123
|
+
isLink?: boolean;
|
|
124
|
+
/** Path or URL to navigate to when the card is clicked */
|
|
125
|
+
link?: string;
|
|
118
126
|
}
|
|
119
127
|
declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLElement>>;
|
|
120
128
|
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>>;
|
|
@@ -122,7 +130,7 @@ declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HT
|
|
|
122
130
|
declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
123
131
|
declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>>;
|
|
124
132
|
declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>>;
|
|
125
|
-
declare const CardActions: React.ForwardRefExoticComponent<React.HTMLAttributes<
|
|
133
|
+
declare const CardActions: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>>;
|
|
126
134
|
type CardActionsProps = React.HTMLAttributes<HTMLElement>;
|
|
127
135
|
|
|
128
136
|
/**
|
|
@@ -289,7 +297,6 @@ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttri
|
|
|
289
297
|
*
|
|
290
298
|
* @dependencies
|
|
291
299
|
* - @radix-ui/react-label - Core label functionality
|
|
292
|
-
* - class-variance-authority - Variant styling
|
|
293
300
|
* - React 18+ - Hooks and refs
|
|
294
301
|
* - Tailwind CSS - Styling
|
|
295
302
|
*/
|
|
@@ -466,7 +473,7 @@ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.Re
|
|
|
466
473
|
declare const Alert: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
467
474
|
variant?: "default" | "destructive" | "inline";
|
|
468
475
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
469
|
-
declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<
|
|
476
|
+
declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
|
|
470
477
|
declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
471
478
|
|
|
472
479
|
/**
|
|
@@ -1015,15 +1022,17 @@ declare const DialogTitle: React.ForwardRefExoticComponent<DialogTitleProps & Re
|
|
|
1015
1022
|
declare const DialogDescription: React.ForwardRefExoticComponent<DialogDescriptionProps & React.RefAttributes<HTMLHeadingElement>>;
|
|
1016
1023
|
|
|
1017
1024
|
/**
|
|
1018
|
-
* @file Select
|
|
1025
|
+
* @file Select Component - Refactored SOLID Implementation
|
|
1019
1026
|
* @package @jmruthers/pace-core
|
|
1020
|
-
* @module Components/Select
|
|
1027
|
+
* @module Components/Select
|
|
1021
1028
|
* @since 0.4.0
|
|
1022
1029
|
*
|
|
1023
|
-
*
|
|
1024
|
-
* - Single Responsibility: Each
|
|
1030
|
+
* Refactored Select component following SOLID principles:
|
|
1031
|
+
* - Single Responsibility: Each component has one clear purpose
|
|
1025
1032
|
* - Open/Closed: Easy to extend without modification
|
|
1026
|
-
* -
|
|
1033
|
+
* - Liskov Substitution: Components can be substituted
|
|
1034
|
+
* - Interface Segregation: Small, focused interfaces
|
|
1035
|
+
* - Dependency Inversion: Depends on abstractions, not concretions
|
|
1027
1036
|
*/
|
|
1028
1037
|
|
|
1029
1038
|
interface UseSelectStateProps {
|
|
@@ -1036,21 +1045,6 @@ interface UseSelectStateProps {
|
|
|
1036
1045
|
onValueChange?: (value: string) => void;
|
|
1037
1046
|
onOpenChange?: (open: boolean) => void;
|
|
1038
1047
|
}
|
|
1039
|
-
|
|
1040
|
-
/**
|
|
1041
|
-
* @file Select Component - Refactored SOLID Implementation
|
|
1042
|
-
* @package @jmruthers/pace-core
|
|
1043
|
-
* @module Components/Select
|
|
1044
|
-
* @since 0.4.0
|
|
1045
|
-
*
|
|
1046
|
-
* Refactored Select component following SOLID principles:
|
|
1047
|
-
* - Single Responsibility: Each component has one clear purpose
|
|
1048
|
-
* - Open/Closed: Easy to extend without modification
|
|
1049
|
-
* - Liskov Substitution: Components can be substituted
|
|
1050
|
-
* - Interface Segregation: Small, focused interfaces
|
|
1051
|
-
* - Dependency Inversion: Depends on abstractions, not concretions
|
|
1052
|
-
*/
|
|
1053
|
-
|
|
1054
1048
|
interface SelectProps extends Omit<React.HTMLAttributes<HTMLFormElement>, 'onChange' | 'onKeyDown' | 'onFocus' | 'onBlur'> {
|
|
1055
1049
|
children: React.ReactNode;
|
|
1056
1050
|
className?: string;
|
|
@@ -1184,12 +1178,14 @@ interface TabsListProps extends React.ComponentPropsWithoutRef<typeof TabsPrimit
|
|
|
1184
1178
|
* ```
|
|
1185
1179
|
*/
|
|
1186
1180
|
declare const TabsList: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
1187
|
-
interface TabsTriggerProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {
|
|
1181
|
+
interface TabsTriggerProps extends Omit<React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>, 'asChild'>, Pick<ButtonProps, 'variant' | 'size'> {
|
|
1188
1182
|
}
|
|
1189
1183
|
/**
|
|
1190
1184
|
* TabsTrigger component
|
|
1191
1185
|
* Individual tab button that activates a tab panel
|
|
1192
1186
|
*
|
|
1187
|
+
* Uses Button component internally, allowing Button props (variant, size) to be passed through.
|
|
1188
|
+
*
|
|
1193
1189
|
* @component
|
|
1194
1190
|
* @example
|
|
1195
1191
|
* ```tsx
|
|
@@ -1199,6 +1195,11 @@ interface TabsTriggerProps extends React.ComponentPropsWithoutRef<typeof TabsPri
|
|
|
1199
1195
|
* <TabsTrigger value="transport">
|
|
1200
1196
|
* <Plane size={16} /> Transport
|
|
1201
1197
|
* </TabsTrigger>
|
|
1198
|
+
*
|
|
1199
|
+
* // With Button variant
|
|
1200
|
+
* <TabsTrigger value="tab1" variant="outline" size="sm">
|
|
1201
|
+
* Tab 1
|
|
1202
|
+
* </TabsTrigger>
|
|
1202
1203
|
* ```
|
|
1203
1204
|
*/
|
|
1204
1205
|
declare const TabsTrigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -1599,6 +1600,133 @@ interface FormProps<TFieldValues extends FieldValues = FieldValues> {
|
|
|
1599
1600
|
* ```
|
|
1600
1601
|
*/
|
|
1601
1602
|
declare function Form<TFieldValues extends FieldValues = FieldValues>({ schema, defaultValues, onSubmit, onError, mode, children, className, }: FormProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
1603
|
+
/**
|
|
1604
|
+
* Props for the FormField component
|
|
1605
|
+
*/
|
|
1606
|
+
interface FormFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> {
|
|
1607
|
+
/**
|
|
1608
|
+
* Field name
|
|
1609
|
+
*/
|
|
1610
|
+
name: TName;
|
|
1611
|
+
/**
|
|
1612
|
+
* Field label
|
|
1613
|
+
*/
|
|
1614
|
+
label?: string;
|
|
1615
|
+
/**
|
|
1616
|
+
* Field type
|
|
1617
|
+
*/
|
|
1618
|
+
type?: string;
|
|
1619
|
+
/**
|
|
1620
|
+
* Placeholder text
|
|
1621
|
+
*/
|
|
1622
|
+
placeholder?: string;
|
|
1623
|
+
/**
|
|
1624
|
+
* Additional props for the input
|
|
1625
|
+
*/
|
|
1626
|
+
inputProps?: React__default.InputHTMLAttributes<HTMLInputElement>;
|
|
1627
|
+
/**
|
|
1628
|
+
* Validation rules
|
|
1629
|
+
*/
|
|
1630
|
+
validation?: {
|
|
1631
|
+
required?: boolean;
|
|
1632
|
+
pattern?: {
|
|
1633
|
+
value: RegExp;
|
|
1634
|
+
message: string;
|
|
1635
|
+
};
|
|
1636
|
+
minLength?: {
|
|
1637
|
+
value: number;
|
|
1638
|
+
message: string;
|
|
1639
|
+
};
|
|
1640
|
+
maxLength?: {
|
|
1641
|
+
value: number;
|
|
1642
|
+
message: string;
|
|
1643
|
+
};
|
|
1644
|
+
};
|
|
1645
|
+
/**
|
|
1646
|
+
* Custom render function
|
|
1647
|
+
*/
|
|
1648
|
+
render?: (props: {
|
|
1649
|
+
field: ControllerRenderProps<TFieldValues, TName>;
|
|
1650
|
+
fieldState: ControllerFieldState;
|
|
1651
|
+
formState: UseFormStateReturn<TFieldValues>;
|
|
1652
|
+
}) => React__default.ReactElement;
|
|
1653
|
+
/**
|
|
1654
|
+
* Test ID
|
|
1655
|
+
*/
|
|
1656
|
+
'data-testid'?: string;
|
|
1657
|
+
/**
|
|
1658
|
+
* Class name
|
|
1659
|
+
*/
|
|
1660
|
+
className?: string;
|
|
1661
|
+
}
|
|
1662
|
+
/**
|
|
1663
|
+
* FormField component for React Hook Form integration
|
|
1664
|
+
*
|
|
1665
|
+
* A flexible form field component that integrates with React Hook Form and provides
|
|
1666
|
+
* built-in validation, error handling, and accessibility features.
|
|
1667
|
+
*
|
|
1668
|
+
* Features:
|
|
1669
|
+
* - React Hook Form integration with Controller
|
|
1670
|
+
* - Built-in validation with error display
|
|
1671
|
+
* - Accessible labels and error messages
|
|
1672
|
+
* - Custom render function support
|
|
1673
|
+
* - TypeScript support with generic field paths
|
|
1674
|
+
* - Consistent styling with error states
|
|
1675
|
+
* - Test ID support for testing
|
|
1676
|
+
* - Flexible input types and props
|
|
1677
|
+
*
|
|
1678
|
+
* @template TFieldValues - The type of form field values
|
|
1679
|
+
* @template TName - The type of the field name (must be a valid field path)
|
|
1680
|
+
* @param props - Form field configuration and validation
|
|
1681
|
+
* @returns JSX.Element - The rendered form field with validation
|
|
1682
|
+
*
|
|
1683
|
+
* @example
|
|
1684
|
+
* ```tsx
|
|
1685
|
+
* // Basic text field
|
|
1686
|
+
* <FormField
|
|
1687
|
+
* name="username"
|
|
1688
|
+
* label="Username"
|
|
1689
|
+
* placeholder="Enter your username"
|
|
1690
|
+
* validation={{ required: true }}
|
|
1691
|
+
* />
|
|
1692
|
+
*
|
|
1693
|
+
* // Email field with custom validation
|
|
1694
|
+
* <FormField
|
|
1695
|
+
* name="email"
|
|
1696
|
+
* label="Email Address"
|
|
1697
|
+
* type="email"
|
|
1698
|
+
* validation={{
|
|
1699
|
+
* required: true,
|
|
1700
|
+
* pattern: {
|
|
1701
|
+
* value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
|
|
1702
|
+
* message: "Invalid email address"
|
|
1703
|
+
* }
|
|
1704
|
+
* }}
|
|
1705
|
+
* />
|
|
1706
|
+
*
|
|
1707
|
+
* // Custom render function
|
|
1708
|
+
* <FormField
|
|
1709
|
+
* name="avatar"
|
|
1710
|
+
* label="Profile Picture"
|
|
1711
|
+
* render={({ field }) => (
|
|
1712
|
+
* <input
|
|
1713
|
+
* {...field}
|
|
1714
|
+
* type="file"
|
|
1715
|
+
* accept="image/*"
|
|
1716
|
+
* />
|
|
1717
|
+
* )}
|
|
1718
|
+
* />
|
|
1719
|
+
* ```
|
|
1720
|
+
*
|
|
1721
|
+
* @accessibility
|
|
1722
|
+
* - Proper label association with htmlFor
|
|
1723
|
+
* - Error messages with role="alert"
|
|
1724
|
+
* - Required field indicators
|
|
1725
|
+
* - Focus management
|
|
1726
|
+
* - Screen reader friendly error announcements
|
|
1727
|
+
* - Keyboard navigation support
|
|
1728
|
+
*/
|
|
1729
|
+
declare function FormField<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, label, type, placeholder, inputProps, validation, render, 'data-testid': testId, className, }: FormFieldProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
|
|
1602
1730
|
|
|
1603
1731
|
/**
|
|
1604
1732
|
* @file LoginForm Component
|
|
@@ -1745,85 +1873,6 @@ interface LoginFormProps {
|
|
|
1745
1873
|
*/
|
|
1746
1874
|
declare const LoginForm: React__default.NamedExoticComponent<LoginFormProps>;
|
|
1747
1875
|
|
|
1748
|
-
/**
|
|
1749
|
-
* @file NavigationMenu Types
|
|
1750
|
-
* @package @jmruthers/pace-core
|
|
1751
|
-
* @module NavigationMenu
|
|
1752
|
-
* @since 0.1.0
|
|
1753
|
-
*/
|
|
1754
|
-
/**
|
|
1755
|
-
* Navigation item configuration
|
|
1756
|
-
* Supports both flat and hierarchical navigation structures
|
|
1757
|
-
*/
|
|
1758
|
-
interface NavigationItem {
|
|
1759
|
-
/** Unique identifier for the navigation item */
|
|
1760
|
-
id: string;
|
|
1761
|
-
/** Display text for the navigation item */
|
|
1762
|
-
label: string;
|
|
1763
|
-
/** URL or path to navigate to (optional for parent items in hierarchical mode) */
|
|
1764
|
-
href?: string;
|
|
1765
|
-
/** Optional Lucide icon name for the navigation item */
|
|
1766
|
-
icon?: string;
|
|
1767
|
-
/** Child navigation items for hierarchical mode */
|
|
1768
|
-
children?: NavigationItem[];
|
|
1769
|
-
/** Whether this item is currently active (auto-detected if not provided) */
|
|
1770
|
-
isActive?: boolean;
|
|
1771
|
-
/** Permissions required for this navigation item */
|
|
1772
|
-
permissions?: string[];
|
|
1773
|
-
/** Roles that can access this navigation item */
|
|
1774
|
-
roles?: string[];
|
|
1775
|
-
/** Minimum access level required */
|
|
1776
|
-
accessLevel?: string;
|
|
1777
|
-
/** Page ID for permission checking */
|
|
1778
|
-
pageId?: string;
|
|
1779
|
-
/** Enable strict mode for this navigation item */
|
|
1780
|
-
strictMode?: boolean;
|
|
1781
|
-
/** Navigation item metadata */
|
|
1782
|
-
meta?: {
|
|
1783
|
-
title?: string;
|
|
1784
|
-
description?: string;
|
|
1785
|
-
hidden?: boolean;
|
|
1786
|
-
order?: number;
|
|
1787
|
-
};
|
|
1788
|
-
}
|
|
1789
|
-
/**
|
|
1790
|
-
* Navigation mode configuration
|
|
1791
|
-
*/
|
|
1792
|
-
type NavigationMode = 'dropdown' | 'hierarchical';
|
|
1793
|
-
/**
|
|
1794
|
-
* NavigationMenu component props
|
|
1795
|
-
*/
|
|
1796
|
-
interface NavigationMenuProps {
|
|
1797
|
-
/** Array of navigation items to display */
|
|
1798
|
-
items: NavigationItem[];
|
|
1799
|
-
/** Navigation mode: 'dropdown' for menu button style, 'hierarchical' for expandable tree */
|
|
1800
|
-
mode?: NavigationMode;
|
|
1801
|
-
/** Current page path for highlighting active item */
|
|
1802
|
-
currentPath?: string;
|
|
1803
|
-
/** Optional callback when navigation item is clicked */
|
|
1804
|
-
onNavigate?: (item: NavigationItem) => void;
|
|
1805
|
-
/** Additional CSS classes */
|
|
1806
|
-
className?: string;
|
|
1807
|
-
/** Whether the menu is disabled (dropdown mode only) */
|
|
1808
|
-
disabled?: boolean;
|
|
1809
|
-
/** Custom button text for dropdown mode (defaults to "Menu") */
|
|
1810
|
-
buttonText?: string;
|
|
1811
|
-
/** Whether to show icons in the navigation (dropdown mode only) */
|
|
1812
|
-
showIcons?: boolean;
|
|
1813
|
-
/** Custom navigation label for screen readers */
|
|
1814
|
-
navigationLabel?: string;
|
|
1815
|
-
/** Enable strict mode to prevent bypassing navigation protection (default: true) */
|
|
1816
|
-
strictMode?: boolean;
|
|
1817
|
-
/** Enable audit logging for all navigation access attempts (default: true) */
|
|
1818
|
-
auditLog?: boolean;
|
|
1819
|
-
/** Callback when navigation access is denied */
|
|
1820
|
-
onNavigationAccessDenied?: (itemId: string, reason: string) => void;
|
|
1821
|
-
/** Callback when strict mode violation occurs */
|
|
1822
|
-
onStrictModeViolation?: (itemId: string, reason: string) => void;
|
|
1823
|
-
/** Enable automatic filtering of navigation items based on permissions */
|
|
1824
|
-
filterByPermissions?: boolean;
|
|
1825
|
-
}
|
|
1826
|
-
|
|
1827
1876
|
/**
|
|
1828
1877
|
* @file Unified Navigation Menu Component
|
|
1829
1878
|
* @package @jmruthers/pace-core
|
|
@@ -2017,6 +2066,56 @@ interface NavigationMenuProps {
|
|
|
2017
2066
|
* - Tailwind CSS - Styling system
|
|
2018
2067
|
*/
|
|
2019
2068
|
|
|
2069
|
+
/**
|
|
2070
|
+
* Navigation mode type
|
|
2071
|
+
*/
|
|
2072
|
+
type NavigationMode = 'dropdown' | 'hierarchical';
|
|
2073
|
+
/**
|
|
2074
|
+
* Navigation item metadata
|
|
2075
|
+
*/
|
|
2076
|
+
interface NavigationItemMeta {
|
|
2077
|
+
hidden?: boolean;
|
|
2078
|
+
[key: string]: unknown;
|
|
2079
|
+
}
|
|
2080
|
+
/**
|
|
2081
|
+
* Navigation item interface
|
|
2082
|
+
*/
|
|
2083
|
+
interface NavigationItem {
|
|
2084
|
+
id: string;
|
|
2085
|
+
label: string;
|
|
2086
|
+
href?: string;
|
|
2087
|
+
icon?: string;
|
|
2088
|
+
children?: NavigationItem[];
|
|
2089
|
+
permissions?: (Permission | string)[];
|
|
2090
|
+
roles?: string[];
|
|
2091
|
+
accessLevel?: AccessLevel | string;
|
|
2092
|
+
meta?: NavigationItemMeta;
|
|
2093
|
+
pageId?: string;
|
|
2094
|
+
}
|
|
2095
|
+
/**
|
|
2096
|
+
* Navigation menu component props
|
|
2097
|
+
*/
|
|
2098
|
+
interface NavigationMenuProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2099
|
+
items: NavigationItem[];
|
|
2100
|
+
mode?: NavigationMode;
|
|
2101
|
+
currentPath?: string;
|
|
2102
|
+
onNavigate?: (item: NavigationItem) => void;
|
|
2103
|
+
className?: string;
|
|
2104
|
+
disabled?: boolean;
|
|
2105
|
+
buttonText?: string;
|
|
2106
|
+
showIcons?: boolean;
|
|
2107
|
+
navigationLabel?: string;
|
|
2108
|
+
strictMode?: boolean;
|
|
2109
|
+
auditLog?: boolean;
|
|
2110
|
+
onNavigationAccessDenied?: (item: NavigationItem) => void;
|
|
2111
|
+
onStrictModeViolation?: (item: NavigationItem, reason: string) => void;
|
|
2112
|
+
/**
|
|
2113
|
+
* If true, indicates that items have already been filtered by the parent component (e.g., PaceAppLayout).
|
|
2114
|
+
* When true, NavigationMenu will skip expensive permission checks and trust the provided items.
|
|
2115
|
+
* This significantly improves performance when items are pre-filtered.
|
|
2116
|
+
*/
|
|
2117
|
+
itemsPreFiltered?: boolean;
|
|
2118
|
+
}
|
|
2020
2119
|
/**
|
|
2021
2120
|
* Unified NavigationMenu component that supports both dropdown and hierarchical navigation modes.
|
|
2022
2121
|
*
|
|
@@ -2159,7 +2258,7 @@ interface NavigationMenuProps {
|
|
|
2159
2258
|
* onNavigate={(item) => navigate(item.href)}
|
|
2160
2259
|
* buttonText="Navigation"
|
|
2161
2260
|
* navigationLabel="Main application navigation"
|
|
2162
|
-
*
|
|
2261
|
+
* // Permission filtering is always enabled - no prop needed
|
|
2163
2262
|
* auditLog={true}
|
|
2164
2263
|
* />
|
|
2165
2264
|
* );
|
|
@@ -2210,6 +2309,120 @@ interface NavigationMenuProps {
|
|
|
2210
2309
|
*/
|
|
2211
2310
|
declare const NavigationMenu: React.ForwardRefExoticComponent<NavigationMenuProps & React.RefAttributes<HTMLDivElement>>;
|
|
2212
2311
|
|
|
2312
|
+
/**
|
|
2313
|
+
* @file Password Change Form Component
|
|
2314
|
+
* @package @jmruthers/pace-core
|
|
2315
|
+
* @module Components/PasswordChange
|
|
2316
|
+
* @since 0.1.0
|
|
2317
|
+
*
|
|
2318
|
+
* A secure password change form component with validation, confirmation matching,
|
|
2319
|
+
* and proper error handling for updating user passwords.
|
|
2320
|
+
*
|
|
2321
|
+
* Features:
|
|
2322
|
+
* - Password strength validation (minimum 8 characters)
|
|
2323
|
+
* - Password confirmation matching
|
|
2324
|
+
* - Loading states with disabled form
|
|
2325
|
+
* - Error handling and display
|
|
2326
|
+
* - Accessibility compliant
|
|
2327
|
+
* - Responsive design
|
|
2328
|
+
* - Form validation
|
|
2329
|
+
* - Secure password input
|
|
2330
|
+
* - Success and error callbacks
|
|
2331
|
+
*
|
|
2332
|
+
* @example
|
|
2333
|
+
* ```tsx
|
|
2334
|
+
* // Basic password change form
|
|
2335
|
+
* <PasswordChangeForm
|
|
2336
|
+
* onSubmit={async (values) => {
|
|
2337
|
+
* try {
|
|
2338
|
+
* await updatePassword(values.newPassword);
|
|
2339
|
+
* toast.success('Password updated successfully!');
|
|
2340
|
+
* return {};
|
|
2341
|
+
* } catch (error) {
|
|
2342
|
+
* return { error: { message: error.message } };
|
|
2343
|
+
* }
|
|
2344
|
+
* }}
|
|
2345
|
+
* />
|
|
2346
|
+
*
|
|
2347
|
+
* // Password change form with custom styling
|
|
2348
|
+
* <PasswordChangeForm
|
|
2349
|
+
* className="max-w-md mx-auto p-6 bg-main-50 rounded-lg shadow-md"
|
|
2350
|
+
* onSubmit={async (values) => {
|
|
2351
|
+
* const result = await authService.changePassword(values.newPassword);
|
|
2352
|
+
* if (result.success) {
|
|
2353
|
+
* navigate('/profile');
|
|
2354
|
+
* return {};
|
|
2355
|
+
* } else {
|
|
2356
|
+
* return { error: { message: result.error } };
|
|
2357
|
+
* }
|
|
2358
|
+
* }}
|
|
2359
|
+
* />
|
|
2360
|
+
*
|
|
2361
|
+
* // Password change form in a modal
|
|
2362
|
+
* <Modal isOpen={showPasswordChange} onClose={() => setShowPasswordChange(false)}>
|
|
2363
|
+
* <ModalContent>
|
|
2364
|
+
* <ModalHeader>
|
|
2365
|
+
* <ModalTitle>Change Password</ModalTitle>
|
|
2366
|
+
* </ModalHeader>
|
|
2367
|
+
* <ModalBody>
|
|
2368
|
+
* <PasswordChangeForm
|
|
2369
|
+
* onSubmit={async (values) => {
|
|
2370
|
+
* const result = await changePassword(values.newPassword);
|
|
2371
|
+
* if (result.success) {
|
|
2372
|
+
* setShowPasswordChange(false);
|
|
2373
|
+
* toast.success('Password changed successfully');
|
|
2374
|
+
* return {};
|
|
2375
|
+
* } else {
|
|
2376
|
+
* return { error: { message: result.error } };
|
|
2377
|
+
* }
|
|
2378
|
+
* }}
|
|
2379
|
+
* />
|
|
2380
|
+
* </ModalBody>
|
|
2381
|
+
* </ModalContent>
|
|
2382
|
+
* </Modal>
|
|
2383
|
+
* ```
|
|
2384
|
+
*
|
|
2385
|
+
* @accessibility
|
|
2386
|
+
* - WCAG 2.1 AA compliant
|
|
2387
|
+
* - Proper form labels and associations
|
|
2388
|
+
* - Screen reader friendly error messages
|
|
2389
|
+
* - Keyboard navigation support
|
|
2390
|
+
* - Focus management
|
|
2391
|
+
* - High contrast support
|
|
2392
|
+
* - Clear error identification
|
|
2393
|
+
* - Role="alert" for error announcements
|
|
2394
|
+
* - Password field security
|
|
2395
|
+
*
|
|
2396
|
+
* @security
|
|
2397
|
+
* - Password strength validation
|
|
2398
|
+
* - Secure password input fields
|
|
2399
|
+
* - Confirmation matching
|
|
2400
|
+
* - No password logging
|
|
2401
|
+
* - Proper error handling
|
|
2402
|
+
*
|
|
2403
|
+
* @dependencies
|
|
2404
|
+
* - React 18+ - Hooks and state
|
|
2405
|
+
* - Button component
|
|
2406
|
+
* - Input component
|
|
2407
|
+
* - Label component
|
|
2408
|
+
* - Tailwind CSS - Styling
|
|
2409
|
+
*/
|
|
2410
|
+
interface PasswordChangeFormValues {
|
|
2411
|
+
newPassword: string;
|
|
2412
|
+
confirmPassword: string;
|
|
2413
|
+
}
|
|
2414
|
+
interface PasswordChangeFormError {
|
|
2415
|
+
message?: string;
|
|
2416
|
+
code?: string;
|
|
2417
|
+
}
|
|
2418
|
+
interface PasswordChangeFormProps {
|
|
2419
|
+
onSubmit: (values: PasswordChangeFormValues) => Promise<{
|
|
2420
|
+
error?: PasswordChangeFormError;
|
|
2421
|
+
}>;
|
|
2422
|
+
className?: string;
|
|
2423
|
+
}
|
|
2424
|
+
declare function PasswordChangeForm({ onSubmit, className }: PasswordChangeFormProps): react_jsx_runtime.JSX.Element;
|
|
2425
|
+
|
|
2213
2426
|
/**
|
|
2214
2427
|
* Props for the Header component
|
|
2215
2428
|
*/
|
|
@@ -2228,7 +2441,7 @@ interface HeaderProps {
|
|
|
2228
2441
|
onSignOut?: () => Promise<void>;
|
|
2229
2442
|
/** Password change handler for user menu */
|
|
2230
2443
|
onChangePassword?: (newPassword: string, confirmPassword: string) => Promise<{
|
|
2231
|
-
error
|
|
2444
|
+
error?: PasswordChangeFormError;
|
|
2232
2445
|
}>;
|
|
2233
2446
|
/** Additional actions to display (will be placed between event selector and user menu) */
|
|
2234
2447
|
actions?: React__default.ReactNode;
|
|
@@ -2580,7 +2793,7 @@ interface UserMenuProps {
|
|
|
2580
2793
|
user: User | null;
|
|
2581
2794
|
onSignOut?: () => Promise<void>;
|
|
2582
2795
|
onChangePassword?: (newPassword: string, confirmPassword: string) => Promise<{
|
|
2583
|
-
error
|
|
2796
|
+
error?: PasswordChangeFormError;
|
|
2584
2797
|
}>;
|
|
2585
2798
|
className?: string;
|
|
2586
2799
|
showAvatar?: boolean;
|
|
@@ -2615,8 +2828,6 @@ interface PaceAppLayoutProps {
|
|
|
2615
2828
|
routePermissions?: Record<string, Operation>;
|
|
2616
2829
|
/** Fallback component to show when user lacks permission */
|
|
2617
2830
|
permissionFallback?: React__default.ReactNode;
|
|
2618
|
-
/** Enable permission-based navigation filtering */
|
|
2619
|
-
filterNavigationByPermissions?: boolean;
|
|
2620
2831
|
/** Custom permission page ID mapping */
|
|
2621
2832
|
pageIdMapping?: Record<string, string>;
|
|
2622
2833
|
/** Enable strict mode to prevent bypassing permission checks (default: true) */
|
|
@@ -2745,8 +2956,7 @@ interface PaceAppLayoutProps {
|
|
|
2745
2956
|
* <PaceAppLayout
|
|
2746
2957
|
* appName="My Custom App"
|
|
2747
2958
|
* navItems={customNavItems}
|
|
2748
|
-
* //
|
|
2749
|
-
* filterNavigationByPermissions={true}
|
|
2959
|
+
* // Permission filtering is always enabled - no prop needed
|
|
2750
2960
|
* routePermissions={{
|
|
2751
2961
|
* '/components': 'read',
|
|
2752
2962
|
* '/styles': 'read',
|
|
@@ -2805,7 +3015,7 @@ interface PaceAppLayoutProps {
|
|
|
2805
3015
|
*
|
|
2806
3016
|
* @since 0.1.0
|
|
2807
3017
|
*/
|
|
2808
|
-
declare function PaceAppLayout({ appName, navItems, showEventSelector, headerActions, customLogo, logoHref, customUserMenu, headerClassName, showUserMenu, enforcePermissions, defaultPermission, routePermissions, permissionFallback,
|
|
3018
|
+
declare function PaceAppLayout({ appName, navItems, showEventSelector, headerActions, customLogo, logoHref, customUserMenu, headerClassName, showUserMenu, enforcePermissions, defaultPermission, routePermissions, permissionFallback, pageIdMapping, strictMode, enforcePagePermissions, pagePermissionFallback, auditLog, onPageAccessDenied, onStrictModeViolation, roleBasedRouting, routeConfig, fallbackRoute, onRouteAccessDenied, onRouteStrictModeViolation }: PaceAppLayoutProps): react_jsx_runtime.JSX.Element;
|
|
2809
3019
|
|
|
2810
3020
|
/**
|
|
2811
3021
|
* @file PACE Login Page Component
|
|
@@ -3166,11 +3376,40 @@ declare const LoadingSpinner: React__default.FC<LoadingSpinnerProps>;
|
|
|
3166
3376
|
*
|
|
3167
3377
|
* Displays a consistent loading state while the authentication service
|
|
3168
3378
|
* restores the Supabase session from persistent storage.
|
|
3379
|
+
*
|
|
3380
|
+
* Features:
|
|
3381
|
+
* - Full-screen loading state
|
|
3382
|
+
* - Accessible with proper ARIA attributes
|
|
3383
|
+
* - Screen reader friendly
|
|
3384
|
+
* - Customizable message
|
|
3385
|
+
* - Uses LoadingSpinner component
|
|
3386
|
+
*
|
|
3387
|
+
* @example
|
|
3388
|
+
* ```tsx
|
|
3389
|
+
* // Basic usage
|
|
3390
|
+
* <SessionRestorationLoader />
|
|
3391
|
+
*
|
|
3392
|
+
* // With custom message
|
|
3393
|
+
* <SessionRestorationLoader message="Restoring your session..." />
|
|
3394
|
+
* ```
|
|
3395
|
+
*
|
|
3396
|
+
* @accessibility
|
|
3397
|
+
* - WCAG 2.1 AA compliant
|
|
3398
|
+
* - Proper ARIA role="status"
|
|
3399
|
+
* - Screen reader announcement
|
|
3400
|
+
* - High contrast support
|
|
3401
|
+
*
|
|
3402
|
+
* @dependencies
|
|
3403
|
+
* - React 18+ - Component framework
|
|
3404
|
+
* - LoadingSpinner - Spinner component
|
|
3405
|
+
* - Tailwind CSS - Styling
|
|
3169
3406
|
*/
|
|
3170
3407
|
|
|
3171
3408
|
interface SessionRestorationLoaderProps {
|
|
3172
3409
|
/** Customise the status message displayed under the spinner */
|
|
3173
3410
|
message?: string;
|
|
3411
|
+
/** Additional CSS classes for styling */
|
|
3412
|
+
className?: string;
|
|
3174
3413
|
}
|
|
3175
3414
|
declare const SessionRestorationLoader: React__default.FC<SessionRestorationLoaderProps>;
|
|
3176
3415
|
|
|
@@ -3550,37 +3789,6 @@ interface PublicPageLayoutProps {
|
|
|
3550
3789
|
/** Custom loading message */
|
|
3551
3790
|
loadingMessage?: string;
|
|
3552
3791
|
}
|
|
3553
|
-
/**
|
|
3554
|
-
* Layout component for public pages that don't require authentication
|
|
3555
|
-
*
|
|
3556
|
-
* This component provides a consistent structure for public event pages
|
|
3557
|
-
* with event-specific branding, error handling, and loading states.
|
|
3558
|
-
*
|
|
3559
|
-
* Automatically applies event colors from the event's event_colours field
|
|
3560
|
-
* when an event is provided, ensuring consistent theming across public pages.
|
|
3561
|
-
*
|
|
3562
|
-
* @param props - Layout configuration and content
|
|
3563
|
-
* @returns React element with complete public page layout
|
|
3564
|
-
*/
|
|
3565
|
-
declare function PublicPageLayout({ eventCode, children, event, isLoading, error, refetch, showFooter, className, errorFallback: ErrorFallback, loadingFallback: LoadingFallback, customHeader, customFooter, showValidationErrors, loadingMessage }: PublicPageLayoutProps): react_jsx_runtime.JSX.Element;
|
|
3566
|
-
/**
|
|
3567
|
-
* Hook for accessing public page context
|
|
3568
|
-
* Provides access to event data and layout state within public pages
|
|
3569
|
-
*
|
|
3570
|
-
* @deprecated This hook is no longer needed as PublicPageLayout no longer
|
|
3571
|
-
* automatically fetches event data. Use usePublicRouteParams and usePublicEvent
|
|
3572
|
-
* directly in your components instead.
|
|
3573
|
-
*/
|
|
3574
|
-
declare function usePublicPageContext$1(): {
|
|
3575
|
-
eventCode: null;
|
|
3576
|
-
eventId: null;
|
|
3577
|
-
event: null;
|
|
3578
|
-
isLoading: boolean;
|
|
3579
|
-
error: null;
|
|
3580
|
-
refetch: () => Promise<void>;
|
|
3581
|
-
isPublicPage: boolean;
|
|
3582
|
-
};
|
|
3583
|
-
|
|
3584
3792
|
interface PublicPageHeaderProps {
|
|
3585
3793
|
/** The event data for this public page */
|
|
3586
3794
|
event?: Event;
|
|
@@ -3601,29 +3809,42 @@ interface PublicPageHeaderProps {
|
|
|
3601
3809
|
/** Custom event logo component */
|
|
3602
3810
|
customEventLogo?: ReactNode;
|
|
3603
3811
|
}
|
|
3812
|
+
declare function PublicPageHeader({ event, eventCode, title, description, showEventLogo, showAppLogo, className, children, customEventLogo }: PublicPageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
3813
|
+
interface PublicPageFooterProps {
|
|
3814
|
+
/** The event data for this public page */
|
|
3815
|
+
event: Event;
|
|
3816
|
+
/** Company or organization name */
|
|
3817
|
+
companyName?: string;
|
|
3818
|
+
/** Current year or custom year for copyright */
|
|
3819
|
+
year?: number;
|
|
3820
|
+
/** Optional array of navigation links to display */
|
|
3821
|
+
links?: Array<{
|
|
3822
|
+
label: string;
|
|
3823
|
+
href: string;
|
|
3824
|
+
}>;
|
|
3825
|
+
/** Optional CSS class name */
|
|
3826
|
+
className?: string;
|
|
3827
|
+
/** Logo image URL */
|
|
3828
|
+
logo?: string;
|
|
3829
|
+
/** Copyright text */
|
|
3830
|
+
copyright?: string;
|
|
3831
|
+
/** Footer content - children to render inside footer */
|
|
3832
|
+
children?: React__default.ReactNode;
|
|
3833
|
+
}
|
|
3834
|
+
declare function PublicPageFooter({ event, companyName, year, links, className, logo, copyright, children }: PublicPageFooterProps): react_jsx_runtime.JSX.Element;
|
|
3604
3835
|
/**
|
|
3605
|
-
*
|
|
3606
|
-
*
|
|
3607
|
-
* This component displays the app logo, event logo, and event information
|
|
3608
|
-
* in a clean, accessible layout suitable for public pages.
|
|
3609
|
-
*
|
|
3610
|
-
* The app logo is automatically generated from the appName using the pattern:
|
|
3611
|
-
* `/{appName.toLowerCase()}_logo_wide.svg` from the public folder.
|
|
3836
|
+
* Layout component for public pages that don't require authentication
|
|
3612
3837
|
*
|
|
3613
|
-
*
|
|
3614
|
-
*
|
|
3615
|
-
* authenticated pages that use the same APP_NAME constant.
|
|
3838
|
+
* This component provides a consistent structure for public event pages
|
|
3839
|
+
* with event-specific branding, error handling, and loading states.
|
|
3616
3840
|
*
|
|
3617
|
-
*
|
|
3618
|
-
*
|
|
3619
|
-
* - The RPC function `data_file_reference_by_category_list` must be accessible to the anonymous/public role
|
|
3620
|
-
* - Storage bucket must allow public read access for logo files
|
|
3621
|
-
* - If no public logo is available, a fallback UI with event initials will be displayed
|
|
3841
|
+
* Automatically applies event colors from the event's event_colours field
|
|
3842
|
+
* when an event is provided, ensuring consistent theming across public pages.
|
|
3622
3843
|
*
|
|
3623
|
-
* @param props -
|
|
3624
|
-
* @returns React element with public page
|
|
3844
|
+
* @param props - Layout configuration and content
|
|
3845
|
+
* @returns React element with complete public page layout
|
|
3625
3846
|
*/
|
|
3626
|
-
declare function
|
|
3847
|
+
declare function PublicPageLayout({ eventCode, children, event, isLoading, error, refetch, showFooter, className, errorFallback: ErrorFallback, loadingFallback: LoadingFallback, customHeader, customFooter, showValidationErrors, loadingMessage }: PublicPageLayoutProps): react_jsx_runtime.JSX.Element;
|
|
3627
3848
|
|
|
3628
3849
|
interface PublicPageContextType {
|
|
3629
3850
|
isPublicPage: true;
|
|
@@ -3663,235 +3884,4 @@ declare function usePublicPageContext(): PublicPageContextType;
|
|
|
3663
3884
|
*/
|
|
3664
3885
|
declare function useIsPublicPage(): boolean;
|
|
3665
3886
|
|
|
3666
|
-
|
|
3667
|
-
/** The event data for this public page */
|
|
3668
|
-
event: Event;
|
|
3669
|
-
/** Company or organization name */
|
|
3670
|
-
companyName?: string;
|
|
3671
|
-
/** Current year or custom year for copyright */
|
|
3672
|
-
year?: number;
|
|
3673
|
-
/** Optional array of navigation links to display */
|
|
3674
|
-
links?: Array<{
|
|
3675
|
-
label: string;
|
|
3676
|
-
href: string;
|
|
3677
|
-
}>;
|
|
3678
|
-
/** Optional CSS class name */
|
|
3679
|
-
className?: string;
|
|
3680
|
-
/** Logo image URL */
|
|
3681
|
-
logo?: string;
|
|
3682
|
-
/** Copyright text */
|
|
3683
|
-
copyright?: string;
|
|
3684
|
-
/** Footer content - children to render inside footer */
|
|
3685
|
-
children?: React__default.ReactNode;
|
|
3686
|
-
}
|
|
3687
|
-
/**
|
|
3688
|
-
* Footer component for public pages that matches the normal Footer exactly
|
|
3689
|
-
*
|
|
3690
|
-
* This component uses the same styling and structure as the main Footer component
|
|
3691
|
-
* to ensure consistency across the application.
|
|
3692
|
-
*
|
|
3693
|
-
* @param props - Footer configuration and content
|
|
3694
|
-
* @returns React element with public page footer
|
|
3695
|
-
*/
|
|
3696
|
-
declare function PublicPageFooter({ event, companyName, year, links, className, logo, copyright, children }: PublicPageFooterProps): react_jsx_runtime.JSX.Element;
|
|
3697
|
-
|
|
3698
|
-
/**
|
|
3699
|
-
* @file Public Page Context Checker
|
|
3700
|
-
* @package @jmruthers/pace-core
|
|
3701
|
-
* @module Components/PublicLayout
|
|
3702
|
-
* @since 1.0.0
|
|
3703
|
-
*
|
|
3704
|
-
* A simple component that immediately identifies if a public page
|
|
3705
|
-
* is being rendered inside authentication context.
|
|
3706
|
-
*/
|
|
3707
|
-
interface PublicPageContextCheckerProps {
|
|
3708
|
-
/** Whether to enable checking */
|
|
3709
|
-
enabled?: boolean;
|
|
3710
|
-
/** Custom label for this checker instance */
|
|
3711
|
-
label?: string;
|
|
3712
|
-
}
|
|
3713
|
-
/**
|
|
3714
|
-
* Context checker component that immediately identifies authentication context issues
|
|
3715
|
-
*
|
|
3716
|
-
* This component will immediately log to console if authentication context
|
|
3717
|
-
* is being triggered in a public page.
|
|
3718
|
-
*
|
|
3719
|
-
* Only enabled in development mode when VITE_ENABLE_DEBUG_LOGS is 'true'
|
|
3720
|
-
*/
|
|
3721
|
-
declare function PublicPageContextChecker({ enabled, label }: PublicPageContextCheckerProps): react_jsx_runtime.JSX.Element | null;
|
|
3722
|
-
|
|
3723
|
-
interface PublicErrorBoundaryProps {
|
|
3724
|
-
/** Child components to wrap */
|
|
3725
|
-
children: ReactNode;
|
|
3726
|
-
/** Custom error fallback component */
|
|
3727
|
-
fallback?: React__default.ComponentType<PublicErrorBoundaryState>;
|
|
3728
|
-
/** Custom CSS classes for error display */
|
|
3729
|
-
className?: string;
|
|
3730
|
-
/** Whether to show error details in development */
|
|
3731
|
-
showErrorDetails?: boolean;
|
|
3732
|
-
/** Custom error message */
|
|
3733
|
-
customErrorMessage?: string;
|
|
3734
|
-
/** Custom recovery action */
|
|
3735
|
-
onRecover?: () => void;
|
|
3736
|
-
}
|
|
3737
|
-
interface PublicErrorBoundaryState {
|
|
3738
|
-
/** Whether an error has occurred */
|
|
3739
|
-
hasError: boolean;
|
|
3740
|
-
/** The error that occurred */
|
|
3741
|
-
error: Error | null;
|
|
3742
|
-
/** Error information */
|
|
3743
|
-
errorInfo: ErrorInfo | null;
|
|
3744
|
-
/** Function to reset the error state */
|
|
3745
|
-
resetError: () => void;
|
|
3746
|
-
}
|
|
3747
|
-
/**
|
|
3748
|
-
* Error boundary component for public pages
|
|
3749
|
-
*
|
|
3750
|
-
* This component catches JavaScript errors anywhere in the child component tree,
|
|
3751
|
-
* logs those errors, and displays a fallback UI instead of the component tree that crashed.
|
|
3752
|
-
*
|
|
3753
|
-
* @param props - Error boundary configuration
|
|
3754
|
-
* @returns React element with error boundary wrapper
|
|
3755
|
-
*/
|
|
3756
|
-
declare class PublicErrorBoundary extends Component<PublicErrorBoundaryProps, PublicErrorBoundaryState> {
|
|
3757
|
-
constructor(props: PublicErrorBoundaryProps);
|
|
3758
|
-
static getDerivedStateFromError(error: Error): Partial<PublicErrorBoundaryState>;
|
|
3759
|
-
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
3760
|
-
resetError: () => void;
|
|
3761
|
-
render(): string | number | boolean | Iterable<React__default.ReactNode> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
3762
|
-
}
|
|
3763
|
-
/**
|
|
3764
|
-
* Hook for accessing error boundary state
|
|
3765
|
-
* Useful for components that need to know if they're inside an error boundary
|
|
3766
|
-
*/
|
|
3767
|
-
declare function useErrorBoundary(): {
|
|
3768
|
-
captureError: (error: Error) => void;
|
|
3769
|
-
resetError: () => void;
|
|
3770
|
-
};
|
|
3771
|
-
/**
|
|
3772
|
-
* Default error fallback component
|
|
3773
|
-
*/
|
|
3774
|
-
declare function DefaultPublicErrorFallback({ error, resetError }: PublicErrorBoundaryState): react_jsx_runtime.JSX.Element;
|
|
3775
|
-
|
|
3776
|
-
/**
|
|
3777
|
-
* @file Public Loading Spinner Component
|
|
3778
|
-
* @package @jmruthers/pace-core
|
|
3779
|
-
* @module Components/PublicLayout
|
|
3780
|
-
* @since 1.0.0
|
|
3781
|
-
*
|
|
3782
|
-
* A loading spinner component specifically designed for public pages.
|
|
3783
|
-
* Provides consistent loading states with event-specific branding.
|
|
3784
|
-
*
|
|
3785
|
-
* Features:
|
|
3786
|
-
* - Consistent loading design
|
|
3787
|
-
* - Event-specific branding
|
|
3788
|
-
* - Multiple size options
|
|
3789
|
-
* - Accessibility compliant
|
|
3790
|
-
* - TypeScript support
|
|
3791
|
-
*
|
|
3792
|
-
* @example
|
|
3793
|
-
* ```tsx
|
|
3794
|
-
* import { PublicLoadingSpinner } from '@jmruthers/pace-core';
|
|
3795
|
-
*
|
|
3796
|
-
* function PublicEventPage() {
|
|
3797
|
-
* if (isLoading) {
|
|
3798
|
-
* return <PublicLoadingSpinner message="Loading event details..." />;
|
|
3799
|
-
* }
|
|
3800
|
-
* }
|
|
3801
|
-
* ```
|
|
3802
|
-
*
|
|
3803
|
-
* @accessibility
|
|
3804
|
-
* - WCAG 2.1 AA compliant
|
|
3805
|
-
* - Screen reader friendly
|
|
3806
|
-
* - Proper ARIA labels
|
|
3807
|
-
* - High contrast support
|
|
3808
|
-
*
|
|
3809
|
-
* @dependencies
|
|
3810
|
-
* - React 18+ - Component framework
|
|
3811
|
-
* - Tailwind CSS - Styling
|
|
3812
|
-
*/
|
|
3813
|
-
interface PublicLoadingSpinnerProps {
|
|
3814
|
-
/** Loading message to display */
|
|
3815
|
-
message?: string;
|
|
3816
|
-
/** Size variant */
|
|
3817
|
-
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
3818
|
-
/** Custom CSS classes */
|
|
3819
|
-
className?: string;
|
|
3820
|
-
/** Whether to show the app logo */
|
|
3821
|
-
showLogo?: boolean;
|
|
3822
|
-
/** Custom loading message */
|
|
3823
|
-
customMessage?: string;
|
|
3824
|
-
/** Whether to center the spinner */
|
|
3825
|
-
centered?: boolean;
|
|
3826
|
-
}
|
|
3827
|
-
/**
|
|
3828
|
-
* Loading spinner component for public pages
|
|
3829
|
-
*
|
|
3830
|
-
* This component displays a consistent loading state with optional
|
|
3831
|
-
* branding and messaging for public pages.
|
|
3832
|
-
*
|
|
3833
|
-
* @param props - Spinner configuration and styling
|
|
3834
|
-
* @returns React element with loading spinner
|
|
3835
|
-
*/
|
|
3836
|
-
declare function PublicLoadingSpinner({ message, size, className, showLogo, customMessage, centered }: PublicLoadingSpinnerProps): react_jsx_runtime.JSX.Element;
|
|
3837
|
-
/**
|
|
3838
|
-
* Full page loading spinner with event branding
|
|
3839
|
-
*/
|
|
3840
|
-
declare function PublicLoadingSpinnerFullPage({ message, eventName, className }: Pick<PublicLoadingSpinnerProps, 'message' | 'className'> & {
|
|
3841
|
-
eventName?: string;
|
|
3842
|
-
}): react_jsx_runtime.JSX.Element;
|
|
3843
|
-
/**
|
|
3844
|
-
* Skeleton loading component for content placeholders
|
|
3845
|
-
*/
|
|
3846
|
-
declare function PublicLoadingSkeleton({ lines, className }: {
|
|
3847
|
-
lines?: number;
|
|
3848
|
-
className?: string;
|
|
3849
|
-
}): react_jsx_runtime.JSX.Element;
|
|
3850
|
-
|
|
3851
|
-
interface EventLogoProps {
|
|
3852
|
-
/** The event ID to fetch logo for */
|
|
3853
|
-
eventId: string;
|
|
3854
|
-
/** The event name for fallback text generation */
|
|
3855
|
-
eventName: string;
|
|
3856
|
-
/** The organisation ID for storage path */
|
|
3857
|
-
organisationId: string;
|
|
3858
|
-
/** Logo size variant */
|
|
3859
|
-
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
3860
|
-
/** Custom CSS classes */
|
|
3861
|
-
className?: string;
|
|
3862
|
-
/** Whether to show fallback text when no logo is available */
|
|
3863
|
-
showFallback?: boolean;
|
|
3864
|
-
/** Custom fallback text generator */
|
|
3865
|
-
generateFallbackText?: (eventName: string) => string;
|
|
3866
|
-
/** Whether to validate image existence (deprecated - FileDisplay handles this) */
|
|
3867
|
-
validateImage?: boolean;
|
|
3868
|
-
/** Custom loading component */
|
|
3869
|
-
loadingComponent?: React__default.ComponentType;
|
|
3870
|
-
/** Custom error component */
|
|
3871
|
-
errorComponent?: React__default.ComponentType<{
|
|
3872
|
-
error: Error;
|
|
3873
|
-
}>;
|
|
3874
|
-
}
|
|
3875
|
-
/**
|
|
3876
|
-
* Component for displaying event logos with fallback to initials
|
|
3877
|
-
*
|
|
3878
|
-
* This component is context-aware and automatically detects whether it's being used
|
|
3879
|
-
* in a public or authenticated context. It uses FileDisplay internally to fetch and
|
|
3880
|
-
* display event logos from storage, with automatic fallback to event initials if no
|
|
3881
|
-
* logo is available.
|
|
3882
|
-
*
|
|
3883
|
-
* @param props - Logo configuration and styling
|
|
3884
|
-
* @returns React element with event logo or fallback
|
|
3885
|
-
*/
|
|
3886
|
-
declare function EventLogo({ eventId, eventName, organisationId, size, className, showFallback, generateFallbackText, validateImage, // Deprecated but kept for backward compatibility
|
|
3887
|
-
loadingComponent: LoadingComponent, errorComponent: ErrorComponent }: EventLogoProps): react_jsx_runtime.JSX.Element;
|
|
3888
|
-
/**
|
|
3889
|
-
* Compact event logo for small spaces
|
|
3890
|
-
*/
|
|
3891
|
-
declare function EventLogoCompact(props: EventLogoProps): react_jsx_runtime.JSX.Element;
|
|
3892
|
-
/**
|
|
3893
|
-
* Large event logo for prominent display
|
|
3894
|
-
*/
|
|
3895
|
-
declare function EventLogoLarge(props: EventLogoProps): react_jsx_runtime.JSX.Element;
|
|
3896
|
-
|
|
3897
|
-
export { type DialogHeaderProps as $, Alert as A, Button as B, Card as C, TableCell as D, TableFooter as E, TableHead as F, TableRow as G, Dialog as H, Input as I, DialogPortal as J, DialogOverlay as K, Label as L, DialogTrigger as M, DialogClose as N, DialogContent as O, Progress as P, DialogHeader as Q, DialogBody as R, Switch as S, Textarea as T, DialogFooter as U, DialogTitle as V, DialogDescription as W, type DialogProps as X, type DialogTriggerProps as Y, type DialogContentProps as Z, type DialogOverlayProps as _, type ButtonProps as a, useFileReference as a$, type DialogFooterProps as a0, type DialogTitleProps as a1, type DialogDescriptionProps as a2, type DialogSize as a3, Select as a4, SelectGroup as a5, SelectValue as a6, SelectTrigger as a7, SelectContent as a8, SelectLabel as a9, TooltipRoot as aA, Form as aB, type FormProps as aC, LoginForm as aD, type LoginFormProps as aE, Header as aF, Footer as aG, type FooterProps as aH, ProtectedRoute as aI, type ProtectedRouteProps as aJ, NavigationMenu as aK, type NavigationMenuProps as aL, type NavigationItem as aM, OrganisationSelector as aN, type OrganisationSelectorProps as aO, UserMenu as aP, ErrorBoundary as aQ, type ErrorBoundaryProps as aR, type ErrorBoundaryState as aS, LoadingSpinner as aT, SessionRestorationLoader as aU, type SessionRestorationLoaderProps as aV, EventSelector as aW, FileUpload as aX, type FileUploadProps as aY, FileDisplay as aZ, type FileDisplayProps as a_, SelectItem as aa, SelectSeparator as ab, Tabs as ac, TabsList as ad, TabsTrigger as ae, TabsContent as af, type TabsProps as ag, type TabsListProps as ah, type TabsTriggerProps as ai, type TabsContentProps as aj, Calendar as ak, type CalendarProps as al, Toast as am, Toaster as an, ToastAction as ao, ToastProvider as ap, ToastViewport as aq, ToastTitle as ar, ToastDescription as as, ToastClose as at, type ToastActionElement as au, type ToastProps as av, Tooltip as aw, TooltipTrigger as ax, TooltipContent as ay, TooltipProvider as az, CardHeader as b, useFileReferenceForRecord as b0, useFileReferenceById as b1, useFilesByCategory as b2, type UseFileReferenceOptions as b3, type UseFileReferenceReturn as b4, type UseFileReferenceForRecordReturn as b5, PublicPageLayout as b6, usePublicPageContext$1 as b7, PublicPageHeader as b8, PublicPageProvider as b9, usePublicPageContext as ba, useIsPublicPage as bb, PublicPageFooter as bc, PublicPageContextChecker as bd, PublicErrorBoundary as be, useErrorBoundary as bf, DefaultPublicErrorFallback as bg, PublicLoadingSpinner as bh, PublicLoadingSpinnerFullPage as bi, PublicLoadingSkeleton as bj, EventLogo as bk, EventLogoCompact as bl, EventLogoLarge as bm, type EventLogoProps as bn, type PublicPageLayoutProps as bo, type PublicPageHeaderProps as bp, type PublicPageFooterProps as bq, type PublicErrorBoundaryProps as br, type PublicErrorBoundaryState as bs, type PublicLoadingSpinnerProps as bt, type PaceAppLayoutProps as bu, PaceAppLayout as bv, type PaceLoginPageProps as bw, PaceLoginPage as bx, type UserMenuProps as by, CardFooter as c, CardTitle as d, CardDescription as e, CardContent as f, CardActions as g, type CardProps as h, type CardActionsProps as i, type InputProps as j, type LabelProps as k, type TextareaProps as l, AlertTitle as m, AlertDescription as n, Avatar as o, AvatarImage as p, AvatarFallback as q, Badge as r, type BadgeProps as s, type BadgeVariant as t, Checkbox as u, type SwitchProps as v, Table as w, TableHeader as x, TableBody as y, TableCaption as z };
|
|
3887
|
+
export { type TabsProps as $, Alert as A, Button as B, Card as C, Dialog as D, DialogContent as E, DialogHeader as F, DialogBody as G, DialogFooter as H, Input as I, DialogTitle as J, DialogDescription as K, Label as L, Select as M, SelectGroup as N, SelectValue as O, Progress as P, SelectTrigger as Q, SelectContent as R, Switch as S, Textarea as T, SelectLabel as U, SelectItem as V, SelectSeparator as W, Tabs as X, TabsList as Y, TabsTrigger as Z, TabsContent as _, type ButtonProps as a, TableCell as a$, type TabsListProps as a0, type TabsTriggerProps as a1, type TabsContentProps as a2, Calendar as a3, type CalendarProps as a4, Toast as a5, Toaster as a6, ToastAction as a7, ToastProvider as a8, ToastViewport as a9, type PaceAppLayoutProps as aA, PaceLoginPage as aB, type PaceLoginPageProps as aC, ProtectedRoute as aD, type ProtectedRouteProps as aE, ErrorBoundary as aF, LoadingSpinner as aG, SessionRestorationLoader as aH, type SessionRestorationLoaderProps as aI, EventSelector as aJ, OrganisationSelector as aK, PasswordChangeForm as aL, FileUpload as aM, type FileUploadProps as aN, FileDisplay as aO, type FileDisplayProps as aP, useFileReference as aQ, useFileReferenceForRecord as aR, useFileReferenceById as aS, useFilesByCategory as aT, type UseFileReferenceOptions as aU, type UseFileReferenceReturn as aV, type UseFileReferenceForRecordReturn as aW, Table as aX, TableHeader as aY, TableBody as aZ, TableCaption as a_, ToastTitle as aa, ToastDescription as ab, ToastClose as ac, type ToastActionElement as ad, type ToastProps as ae, Tooltip as af, TooltipTrigger as ag, TooltipContent as ah, TooltipProvider as ai, TooltipRoot as aj, Form as ak, FormField as al, type FormProps as am, type FormFieldProps as an, LoginForm as ao, type LoginFormProps as ap, Header as aq, Footer as ar, type FooterProps as as, NavigationMenu as at, type NavigationMenuProps as au, type NavigationItem as av, type NavigationMode as aw, UserMenu as ax, type UserMenuProps as ay, PaceAppLayout as az, CardHeader as b, TableFooter as b0, TableHead as b1, TableRow as b2, PublicPageLayout as b3, PublicPageHeader as b4, PublicPageFooter as b5, PublicPageProvider as b6, usePublicPageContext as b7, useIsPublicPage as b8, type PublicPageLayoutProps as b9, type PublicPageHeaderProps as ba, type PublicPageFooterProps as bb, type CardActionsProps as bc, type DialogProps as bd, type DialogTriggerProps as be, type DialogContentProps as bf, type DialogOverlayProps as bg, type DialogHeaderProps as bh, type DialogFooterProps as bi, type DialogTitleProps as bj, type DialogDescriptionProps as bk, type DialogSize as bl, type OrganisationSelectorProps as bm, type ErrorBoundaryProps as bn, type ErrorBoundaryState as bo, CardFooter as c, CardTitle as d, CardDescription as e, CardContent as f, CardActions as g, type CardProps as h, type InputProps as i, type LabelProps as j, type TextareaProps as k, AlertTitle as l, AlertDescription as m, Avatar as n, AvatarImage as o, AvatarFallback as p, Badge as q, type BadgeProps as r, type BadgeVariant as s, Checkbox as t, type SwitchProps as u, type ProgressProps as v, DialogPortal as w, DialogOverlay as x, DialogTrigger as y, DialogClose as z };
|