@jmruthers/pace-core 0.2.4
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 +202 -0
- package/README.md +299 -0
- package/dist/DataTable-BHlzyKZP.d.ts +116 -0
- package/dist/DataTable-GEY5U7OI.js +100 -0
- package/dist/DataTable-GEY5U7OI.js.map +1 -0
- package/dist/PublicLoadingSpinner-DztrzuJr.d.ts +3430 -0
- package/dist/UnifiedAuthProvider-w66zSCUf.d.ts +160 -0
- package/dist/api-GZHIDA4X.js +41 -0
- package/dist/api-GZHIDA4X.js.map +1 -0
- package/dist/appConfig-BVGyuvI7.d.ts +71 -0
- package/dist/appNameResolver-7GHF5ED2.js +22 -0
- package/dist/appNameResolver-7GHF5ED2.js.map +1 -0
- package/dist/audit-BUW3LMJB.js +16 -0
- package/dist/audit-BUW3LMJB.js.map +1 -0
- package/dist/chunk-22KLBHPS.js +29 -0
- package/dist/chunk-22KLBHPS.js.map +1 -0
- package/dist/chunk-24MKLB7U.js +81 -0
- package/dist/chunk-24MKLB7U.js.map +1 -0
- package/dist/chunk-2MKP6IYD.js +388 -0
- package/dist/chunk-2MKP6IYD.js.map +1 -0
- package/dist/chunk-2V3Y6YBC.js +114 -0
- package/dist/chunk-2V3Y6YBC.js.map +1 -0
- package/dist/chunk-5CDJCTOO.js +190 -0
- package/dist/chunk-5CDJCTOO.js.map +1 -0
- package/dist/chunk-6ZQVSHKL.js +1345 -0
- package/dist/chunk-6ZQVSHKL.js.map +1 -0
- package/dist/chunk-74C6SNEC.js +77 -0
- package/dist/chunk-74C6SNEC.js.map +1 -0
- package/dist/chunk-7BNPOCLL.js +178 -0
- package/dist/chunk-7BNPOCLL.js.map +1 -0
- package/dist/chunk-7JL3T7BO.js +3344 -0
- package/dist/chunk-7JL3T7BO.js.map +1 -0
- package/dist/chunk-CDQ3PX7L.js +18 -0
- package/dist/chunk-CDQ3PX7L.js.map +1 -0
- package/dist/chunk-DY5E3AT7.js +1734 -0
- package/dist/chunk-DY5E3AT7.js.map +1 -0
- package/dist/chunk-ETEJVKYK.js +6032 -0
- package/dist/chunk-ETEJVKYK.js.map +1 -0
- package/dist/chunk-I5Z3QH5X.js +32 -0
- package/dist/chunk-I5Z3QH5X.js.map +1 -0
- package/dist/chunk-MZBUOP4P.js +119 -0
- package/dist/chunk-MZBUOP4P.js.map +1 -0
- package/dist/chunk-N2EUGZRW.js +98 -0
- package/dist/chunk-N2EUGZRW.js.map +1 -0
- package/dist/chunk-NQ4TOOO6.js +20 -0
- package/dist/chunk-NQ4TOOO6.js.map +1 -0
- package/dist/chunk-OHXGNT3K.js +21 -0
- package/dist/chunk-OHXGNT3K.js.map +1 -0
- package/dist/chunk-OKXMUYIB.js +522 -0
- package/dist/chunk-OKXMUYIB.js.map +1 -0
- package/dist/chunk-PFRRIDYA.js +382 -0
- package/dist/chunk-PFRRIDYA.js.map +1 -0
- package/dist/chunk-PLDDJCW6.js +49 -0
- package/dist/chunk-PLDDJCW6.js.map +1 -0
- package/dist/chunk-SS3E6QLB.js +695 -0
- package/dist/chunk-SS3E6QLB.js.map +1 -0
- package/dist/chunk-TMRLB2LA.js +326 -0
- package/dist/chunk-TMRLB2LA.js.map +1 -0
- package/dist/chunk-WYB6MBZA.js +5533 -0
- package/dist/chunk-WYB6MBZA.js.map +1 -0
- package/dist/chunk-YDJW5XTN.js +84 -0
- package/dist/chunk-YDJW5XTN.js.map +1 -0
- package/dist/components.d.ts +1308 -0
- package/dist/components.js +3759 -0
- package/dist/components.js.map +1 -0
- package/dist/database-C3Szpi5J.d.ts +470 -0
- package/dist/hooks.d.ts +449 -0
- package/dist/hooks.js +612 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +385 -0
- package/dist/index.js +569 -0
- package/dist/index.js.map +1 -0
- package/dist/organisation-CO3Sh3_D.d.ts +99 -0
- package/dist/providers.d.ts +45 -0
- package/dist/providers.js +36 -0
- package/dist/providers.js.map +1 -0
- package/dist/rbac/eslint-rules.d.ts +52 -0
- package/dist/rbac/eslint-rules.js +252 -0
- package/dist/rbac/eslint-rules.js.map +1 -0
- package/dist/rbac/index.d.ts +1918 -0
- package/dist/rbac/index.js +2212 -0
- package/dist/rbac/index.js.map +1 -0
- package/dist/styles/core.css +401 -0
- package/dist/styles/fonts/georama-italic.woff2 +0 -0
- package/dist/styles/fonts/georama.woff2 +0 -0
- package/dist/styles/fonts/open-sans-italic.woff2 +0 -0
- package/dist/styles/fonts/open-sans.woff2 +0 -0
- package/dist/styles/fonts/reddit-mono.woff2 +0 -0
- package/dist/styles/index.d.ts +36 -0
- package/dist/styles/index.js +24 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/theming/runtime.d.ts +73 -0
- package/dist/theming/runtime.js +16 -0
- package/dist/theming/runtime.js.map +1 -0
- package/dist/types-CInEi-ng.d.ts +316 -0
- package/dist/types.d.ts +196 -0
- package/dist/types.js +83 -0
- package/dist/types.js.map +1 -0
- package/dist/unified-CM7T0aTK.d.ts +198 -0
- package/dist/useComponentPerformance-DE9l5RkL.d.ts +11 -0
- package/dist/usePublicRouteParams-B6i0KtXW.d.ts +477 -0
- package/dist/utils.d.ts +639 -0
- package/dist/utils.js +1103 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation-PM_iOaTI.d.ts +159 -0
- package/dist/validation.d.ts +138 -0
- package/dist/validation.js +477 -0
- package/dist/validation.js.map +1 -0
- package/docs/INDEX.md +192 -0
- package/docs/README.md +165 -0
- package/docs/api/.nojekyll +1 -0
- package/docs/api/README.md +301 -0
- package/docs/api/classes/ErrorBoundary.md +144 -0
- package/docs/api/classes/PublicErrorBoundary.md +132 -0
- package/docs/api/interfaces/AggregateConfig.md +43 -0
- package/docs/api/interfaces/ButtonProps.md +53 -0
- package/docs/api/interfaces/CardProps.md +40 -0
- package/docs/api/interfaces/ColorPalette.md +7 -0
- package/docs/api/interfaces/ColorShade.md +41 -0
- package/docs/api/interfaces/DataTableAction.md +200 -0
- package/docs/api/interfaces/DataTableColumn.md +300 -0
- package/docs/api/interfaces/DataTableProps.md +517 -0
- package/docs/api/interfaces/DataTableToolbarButton.md +96 -0
- package/docs/api/interfaces/EmptyStateConfig.md +61 -0
- package/docs/api/interfaces/EventContextType.md +96 -0
- package/docs/api/interfaces/EventLogoProps.md +152 -0
- package/docs/api/interfaces/EventProviderProps.md +19 -0
- package/docs/api/interfaces/FileSizeLimits.md +7 -0
- package/docs/api/interfaces/FileUploadProps.md +154 -0
- package/docs/api/interfaces/FooterProps.md +105 -0
- package/docs/api/interfaces/InactivityWarningModalProps.md +115 -0
- package/docs/api/interfaces/InputProps.md +53 -0
- package/docs/api/interfaces/LabelProps.md +107 -0
- package/docs/api/interfaces/LoginFormProps.md +184 -0
- package/docs/api/interfaces/NavigationItem.md +176 -0
- package/docs/api/interfaces/NavigationMenuProps.md +236 -0
- package/docs/api/interfaces/Organisation.md +140 -0
- package/docs/api/interfaces/OrganisationContextType.md +377 -0
- package/docs/api/interfaces/OrganisationMembership.md +140 -0
- package/docs/api/interfaces/OrganisationProviderProps.md +19 -0
- package/docs/api/interfaces/OrganisationSecurityError.md +62 -0
- package/docs/api/interfaces/PaceAppLayoutProps.md +393 -0
- package/docs/api/interfaces/PaceLoginPageProps.md +34 -0
- package/docs/api/interfaces/PaletteData.md +41 -0
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +94 -0
- package/docs/api/interfaces/PublicErrorBoundaryState.md +68 -0
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +86 -0
- package/docs/api/interfaces/PublicPageFooterProps.md +112 -0
- package/docs/api/interfaces/PublicPageHeaderProps.md +138 -0
- package/docs/api/interfaces/PublicPageLayoutProps.md +138 -0
- package/docs/api/interfaces/StorageConfig.md +41 -0
- package/docs/api/interfaces/StorageFileInfo.md +74 -0
- package/docs/api/interfaces/StorageFileMetadata.md +140 -0
- package/docs/api/interfaces/StorageListOptions.md +86 -0
- package/docs/api/interfaces/StorageListResult.md +41 -0
- package/docs/api/interfaces/StorageUploadOptions.md +88 -0
- package/docs/api/interfaces/StorageUploadResult.md +63 -0
- package/docs/api/interfaces/StorageUrlOptions.md +47 -0
- package/docs/api/interfaces/StyleImport.md +19 -0
- package/docs/api/interfaces/ToastActionElement.md +9 -0
- package/docs/api/interfaces/ToastProps.md +9 -0
- package/docs/api/interfaces/UnifiedAuthContextType.md +1108 -0
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +171 -0
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +136 -0
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +123 -0
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
- package/docs/api/interfaces/UsePublicEventOptions.md +34 -0
- package/docs/api/interfaces/UsePublicEventReturn.md +68 -0
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +94 -0
- package/docs/api/interfaces/UserEventAccess.md +118 -0
- package/docs/api/interfaces/UserMenuProps.md +86 -0
- package/docs/api/interfaces/UserProfile.md +63 -0
- package/docs/api/modules.md +4153 -0
- package/docs/api-reference/components.md +1623 -0
- package/docs/api-reference/hooks.md +627 -0
- package/docs/api-reference/providers.md +487 -0
- package/docs/api-reference/types.md +1005 -0
- package/docs/api-reference/utilities.md +1104 -0
- package/docs/app.css.example +53 -0
- package/docs/architecture/README.md +577 -0
- package/docs/best-practices/README.md +400 -0
- package/docs/best-practices/deployment.md +1042 -0
- package/docs/best-practices/performance.md +789 -0
- package/docs/best-practices/security.md +881 -0
- package/docs/best-practices/testing.md +981 -0
- package/docs/consuming-app-example.md +290 -0
- package/docs/consuming-app-vite-config.md +233 -0
- package/docs/core-concepts/authentication.md +98 -0
- package/docs/core-concepts/events.md +756 -0
- package/docs/core-concepts/organisations.md +790 -0
- package/docs/core-concepts/permissions.md +729 -0
- package/docs/core-concepts/rbac-system.md +233 -0
- package/docs/database-schema-requirements.md +172 -0
- package/docs/documentation-style-checklist.md +294 -0
- package/docs/examples/navigation-menu-auth-fix.md +344 -0
- package/docs/getting-started/examples/README.md +106 -0
- package/docs/getting-started/examples/basic-auth-app.md +521 -0
- package/docs/getting-started/examples/full-featured-app.md +616 -0
- package/docs/getting-started/installation.md +269 -0
- package/docs/getting-started/quick-start.md +401 -0
- package/docs/implementation-guides/app-layout.md +983 -0
- package/docs/implementation-guides/data-tables.md +1898 -0
- package/docs/implementation-guides/dynamic-colors.md +195 -0
- package/docs/implementation-guides/forms.md +578 -0
- package/docs/implementation-guides/hierarchical-datatable.md +850 -0
- package/docs/implementation-guides/large-datasets.md +281 -0
- package/docs/implementation-guides/navigation.md +844 -0
- package/docs/implementation-guides/performance.md +403 -0
- package/docs/implementation-guides/permission-enforcement.md +764 -0
- package/docs/implementation-guides/public-pages.md +752 -0
- package/docs/migration/README.md +493 -0
- package/docs/migration/organisation-context-timing-fix.md +217 -0
- package/docs/migration/quick-migration-guide.md +320 -0
- package/docs/migration/rbac-migration.md +571 -0
- package/docs/migration/v0.4.15-tailwind-scanning.md +272 -0
- package/docs/migration/v0.4.16-css-first-approach.md +306 -0
- package/docs/migration/v0.4.17-source-path-fix.md +229 -0
- package/docs/migration-guide.md +168 -0
- package/docs/performance/README.md +551 -0
- package/docs/print-components/README.md +258 -0
- package/docs/print-components/api-reference.md +636 -0
- package/docs/print-components/examples/README.md +204 -0
- package/docs/print-components/examples/basic-report.tsx +92 -0
- package/docs/print-components/examples/card-catalog.tsx +149 -0
- package/docs/print-components/examples/cover-page-report.tsx +163 -0
- package/docs/print-components/quick-start.md +363 -0
- package/docs/quick-reference.md +576 -0
- package/docs/rbac/README.md +265 -0
- package/docs/rbac/advanced-patterns.md +776 -0
- package/docs/rbac/api-reference.md +1033 -0
- package/docs/rbac/examples.md +883 -0
- package/docs/rbac/getting-started.md +679 -0
- package/docs/rbac/quick-start.md +619 -0
- package/docs/rbac/super-admin-guide.md +592 -0
- package/docs/rbac/troubleshooting.md +316 -0
- package/docs/security/README.md +680 -0
- package/docs/security/checklist.md +343 -0
- package/docs/style-guide.md +522 -0
- package/docs/styles/README.md +319 -0
- package/docs/testing/README.md +874 -0
- package/docs/troubleshooting/README.md +497 -0
- package/docs/troubleshooting/common-issues.md +1563 -0
- package/docs/troubleshooting/database-view-compatibility.md +119 -0
- package/docs/troubleshooting/debugging.md +1117 -0
- package/docs/troubleshooting/migration.md +918 -0
- package/docs/troubleshooting/organisation-context-setup.md +277 -0
- package/docs/troubleshooting/react-hooks-issue-analysis.md +166 -0
- package/docs/troubleshooting/styling-issues.md +219 -0
- package/docs/troubleshooting/tailwind-content-scanning.md +213 -0
- package/docs/usage.md +175 -0
- package/docs/visual-testing.md +114 -0
- package/package.json +211 -0
- package/src/__mocks__/lucide-react.ts +181 -0
- package/src/__tests__/README.md +404 -0
- package/src/__tests__/debug-provider.unit.test.tsx +67 -0
- package/src/__tests__/e2e/workflows.test.tsx +373 -0
- package/src/__tests__/hybridPermissions.unit.test.tsx +474 -0
- package/src/__tests__/index.integration.test.ts +491 -0
- package/src/__tests__/mocks/MockAuthProvider-standalone.tsx +47 -0
- package/src/__tests__/mocks/MockAuthProvider.tsx +63 -0
- package/src/__tests__/mocks/enhancedSupabaseMock.ts +252 -0
- package/src/__tests__/mocks/index.test.ts +23 -0
- package/src/__tests__/mocks/index.ts +16 -0
- package/src/__tests__/mocks/mockAuth.ts +155 -0
- package/src/__tests__/mocks/mockSupabase.ts +83 -0
- package/src/__tests__/mocks/mockSupabaseClient.ts +63 -0
- package/src/__tests__/mocks/providers.tsx +22 -0
- package/src/__tests__/patterns/__tests__/testPatterns.test.ts +394 -0
- package/src/__tests__/patterns/testPatterns.ts +124 -0
- package/src/__tests__/performance/componentPerformance.performance.test.ts +27 -0
- package/src/__tests__/performance/index.ts +24 -0
- package/src/__tests__/performance/performanceValidation.performance.test.ts +15 -0
- package/src/__tests__/security/security.unit.test.tsx +7 -0
- package/src/__tests__/security/securityValidation.security.test.tsx +153 -0
- package/src/__tests__/setup.ts +259 -0
- package/src/__tests__/setupTests.d.ts +1 -0
- package/src/__tests__/shared/componentTestUtils.tsx +475 -0
- package/src/__tests__/shared/errorHandlingTestUtils.ts +107 -0
- package/src/__tests__/shared/index.ts +81 -0
- package/src/__tests__/shared/integrationTestUtils.tsx +375 -0
- package/src/__tests__/shared/performanceTestUtils.tsx +476 -0
- package/src/__tests__/shared/testUtils.optimized.tsx +627 -0
- package/src/__tests__/simple.test.tsx +20 -0
- package/src/__tests__/templates/accessibility.test.template.tsx +279 -0
- package/src/__tests__/templates/component.test.template.tsx +122 -0
- package/src/__tests__/templates/integration.test.template.tsx +199 -0
- package/src/__tests__/test-utils/dataFactories.ts +60 -0
- package/src/__tests__/test-utils/index.ts +6 -0
- package/src/__tests__/typeSafety.unit.test.ts +65 -0
- package/src/__tests__/unifiedAuth.unit.test.tsx +151 -0
- package/src/__tests__/utils/accessibilityHelpers.ts +254 -0
- package/src/__tests__/utils/assertions.ts +50 -0
- package/src/__tests__/utils/deterministicHelpers.ts +31 -0
- package/src/__tests__/utils/edgeCaseConfig.test.ts +75 -0
- package/src/__tests__/utils/edgeCaseConfig.ts +98 -0
- package/src/__tests__/utils/mockHelpers.ts +149 -0
- package/src/__tests__/utils/mockLoader.ts +101 -0
- package/src/__tests__/utils/performanceHelpers.ts +55 -0
- package/src/__tests__/utils/performanceTestHelpers.ts +68 -0
- package/src/__tests__/utils/testDataFactories.ts +28 -0
- package/src/__tests__/utils/testIsolation.ts +67 -0
- package/src/__tests__/utils/visualTestHelpers.ts +20 -0
- package/src/__tests__/visual/__snapshots__/componentSnapshots.visual.test.tsx.snap +68 -0
- package/src/__tests__/visual/__snapshots__/componentVisuals.visual.test.tsx.snap +14 -0
- package/src/__tests__/visual/__snapshots__/visualRegression.test.tsx.snap +217 -0
- package/src/__tests__/visual/__snapshots__/visualRegression.visual.test.tsx.snap +24 -0
- package/src/__tests__/visual/componentSnapshots.visual.test.tsx +33 -0
- package/src/__tests__/visual/componentVisuals.visual.test.tsx +12 -0
- package/src/__tests__/visual/visualRegression.visual.test.tsx +20 -0
- package/src/components/Alert/Alert.tsx +134 -0
- package/src/components/Alert/__tests__/Alert.unit.test.tsx +381 -0
- package/src/components/Alert/index.ts +2 -0
- package/src/components/Avatar/Avatar.tsx +84 -0
- package/src/components/Avatar/__tests__/Avatar.unit.test.tsx +232 -0
- package/src/components/Avatar/index.ts +2 -0
- package/src/components/Button/Button.tsx +270 -0
- package/src/components/Button/__tests__/Button.accessibility.test.tsx +131 -0
- package/src/components/Button/__tests__/Button.comprehensive.test.tsx +721 -0
- package/src/components/Button/__tests__/Button.unit.test.tsx +189 -0
- package/src/components/Button/__tests__/EventSelector.integration.test.tsx +285 -0
- package/src/components/Button/index.ts +2 -0
- package/src/components/Card/Card.tsx +271 -0
- package/src/components/Card/__tests__/Card.accessibility.test.tsx +394 -0
- package/src/components/Card/__tests__/Card.comprehensive.test.tsx +599 -0
- package/src/components/Card/__tests__/Card.integration.test.tsx +673 -0
- package/src/components/Card/__tests__/Card.performance.test.tsx +546 -0
- package/src/components/Card/__tests__/Card.unit.test.tsx +330 -0
- package/src/components/Card/__tests__/Card.visual.test.tsx +599 -0
- package/src/components/Card/__tests__/README.md +211 -0
- package/src/components/Card/index.ts +1 -0
- package/src/components/Checkbox/Checkbox.tsx +75 -0
- package/src/components/Checkbox/__mocks__/Checkbox.tsx +2 -0
- package/src/components/Checkbox/__tests__/Checkbox.unit.test.tsx +520 -0
- package/src/components/Checkbox/index.ts +2 -0
- package/src/components/DataTable/DataTable.tsx +440 -0
- package/src/components/DataTable/__tests__/DataTable.autoSizing.test.tsx +526 -0
- package/src/components/DataTable/__tests__/DataTable.errorHandling.test.tsx +259 -0
- package/src/components/DataTable/__tests__/DataTable.hierarchical.test.tsx +675 -0
- package/src/components/DataTable/__tests__/DataTable.infinite-loop.test.tsx +324 -0
- package/src/components/DataTable/__tests__/DataTable.integration.test.tsx +724 -0
- package/src/components/DataTable/__tests__/DataTable.performance.test.tsx +597 -0
- package/src/components/DataTable/__tests__/DataTable.permissions.test.tsx +306 -0
- package/src/components/DataTable/__tests__/DataTable.regressionFixes.test.tsx +546 -0
- package/src/components/DataTable/__tests__/DataTable.selection.controlled.test.tsx +386 -0
- package/src/components/DataTable/__tests__/DataTable.selection.test.tsx +338 -0
- package/src/components/DataTable/__tests__/DataTable.userWorkflows.test.tsx +310 -0
- package/src/components/DataTable/__tests__/DataTable.workflowValidation.test.tsx +489 -0
- package/src/components/DataTable/__tests__/DataTable.workflows.test.tsx +701 -0
- package/src/components/DataTable/__tests__/README.md +136 -0
- package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +66 -0
- package/src/components/DataTable/__tests__/performance-regression.test.tsx +788 -0
- package/src/components/DataTable/__tests__/performance.test.tsx +365 -0
- package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +103 -0
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +382 -0
- package/src/components/DataTable/__tests__/test-utils.ts +94 -0
- package/src/components/DataTable/components/ActionButtons.tsx +177 -0
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +160 -0
- package/src/components/DataTable/components/ColumnFilter.tsx +114 -0
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +100 -0
- package/src/components/DataTable/components/DataTableBody.tsx +462 -0
- package/src/components/DataTable/components/DataTableCore.tsx +869 -0
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +214 -0
- package/src/components/DataTable/components/DataTableHeader.tsx +31 -0
- package/src/components/DataTable/components/DataTableModals.tsx +87 -0
- package/src/components/DataTable/components/DataTableToolbar.tsx +251 -0
- package/src/components/DataTable/components/DraggableColumnHeader.tsx +148 -0
- package/src/components/DataTable/components/EditableRow.tsx +160 -0
- package/src/components/DataTable/components/EmptyState.tsx +64 -0
- package/src/components/DataTable/components/ExpandButton.tsx +113 -0
- package/src/components/DataTable/components/FilterRow.tsx +101 -0
- package/src/components/DataTable/components/GroupHeader.tsx +42 -0
- package/src/components/DataTable/components/GroupingDropdown.tsx +96 -0
- package/src/components/DataTable/components/ImportModal.tsx +345 -0
- package/src/components/DataTable/components/LoadingState.tsx +12 -0
- package/src/components/DataTable/components/PaginationControls.tsx +332 -0
- package/src/components/DataTable/components/UnifiedTableBody.tsx +911 -0
- package/src/components/DataTable/components/ViewRowModal.tsx +68 -0
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +593 -0
- package/src/components/DataTable/components/__tests__/ActionButtons.unit.test.tsx +150 -0
- package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +224 -0
- package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.unit.test.tsx +244 -0
- package/src/components/DataTable/components/__tests__/DataTable.accessibility.test.tsx +523 -0
- package/src/components/DataTable/components/__tests__/DataTable.integration.test.tsx +401 -0
- package/src/components/DataTable/components/__tests__/DataTable.performance.test.tsx +161 -0
- package/src/components/DataTable/components/__tests__/DataTable.real.test.tsx +251 -0
- package/src/components/DataTable/components/__tests__/DataTable.security.test.tsx +172 -0
- package/src/components/DataTable/components/__tests__/DataTable.unit.test.tsx +290 -0
- package/src/components/DataTable/components/__tests__/DataTableBody.unit.test.tsx +147 -0
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.unit.test.tsx +182 -0
- package/src/components/DataTable/components/__tests__/DataTableHeader.unit.test.tsx +143 -0
- package/src/components/DataTable/components/__tests__/DataTableModals.unit.test.tsx +123 -0
- package/src/components/DataTable/components/__tests__/EditableRow.unit.test.tsx +660 -0
- package/src/components/DataTable/components/__tests__/EmptyState.unit.test.tsx +256 -0
- package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +498 -0
- package/src/components/DataTable/components/__tests__/FilterRow.unit.test.tsx +112 -0
- package/src/components/DataTable/components/__tests__/FilteringToggle.unit.test.tsx +130 -0
- package/src/components/DataTable/components/__tests__/GroupHeader.unit.test.tsx +172 -0
- package/src/components/DataTable/components/__tests__/GroupingDropdown.unit.test.tsx +222 -0
- package/src/components/DataTable/components/__tests__/ImportModal.unit.test.tsx +780 -0
- package/src/components/DataTable/components/__tests__/LoadingState.unit.test.tsx +65 -0
- package/src/components/DataTable/components/__tests__/PaginationControls.unit.test.tsx +634 -0
- package/src/components/DataTable/components/__tests__/StateComponents.unit.test.tsx +48 -0
- package/src/components/DataTable/components/__tests__/UnifiedTableBody.hierarchical.test.tsx +541 -0
- package/src/components/DataTable/components/__tests__/ViewRowModal.unit.test.tsx +228 -0
- package/src/components/DataTable/components/__tests__/VirtualizedDataTable.unit.test.tsx +568 -0
- package/src/components/DataTable/components/index.ts +17 -0
- package/src/components/DataTable/context/DataTableContext.tsx +97 -0
- package/src/components/DataTable/core/ActionManager.ts +235 -0
- package/src/components/DataTable/core/ColumnFactory.ts +268 -0
- package/src/components/DataTable/core/ColumnManager.ts +205 -0
- package/src/components/DataTable/core/DataManager.ts +188 -0
- package/src/components/DataTable/core/DataTableContext.tsx +182 -0
- package/src/components/DataTable/core/LocalDataAdapter.ts +264 -0
- package/src/components/DataTable/core/PluginRegistry.ts +229 -0
- package/src/components/DataTable/core/StateManager.ts +311 -0
- package/src/components/DataTable/core/__tests__/ActionManager.unit.test.ts +405 -0
- package/src/components/DataTable/core/__tests__/ArchitectureIntegration.unit.test.tsx +445 -0
- package/src/components/DataTable/core/__tests__/ColumnFactory.unit.test.ts +288 -0
- package/src/components/DataTable/core/__tests__/ColumnManager.unit.test.ts +623 -0
- package/src/components/DataTable/core/__tests__/DataManager.unit.test.ts +431 -0
- package/src/components/DataTable/core/__tests__/DataTableContext.unit.test.tsx +433 -0
- package/src/components/DataTable/core/__tests__/LocalDataAdapter.unit.test.ts +422 -0
- package/src/components/DataTable/core/__tests__/PluginRegistry.unit.test.tsx +207 -0
- package/src/components/DataTable/core/__tests__/StateManager.unit.test.ts +278 -0
- package/src/components/DataTable/core/index.ts +8 -0
- package/src/components/DataTable/core/interfaces.ts +338 -0
- package/src/components/DataTable/examples/AutoSizingExample.tsx +180 -0
- package/src/components/DataTable/examples/ColumnSizingComparison.tsx +235 -0
- package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +418 -0
- package/src/components/DataTable/examples/HierarchicalExample.tsx +472 -0
- package/src/components/DataTable/examples/InitialPageSizeExample.tsx +173 -0
- package/src/components/DataTable/examples/PerformanceExample.tsx +502 -0
- package/src/components/DataTable/examples/__tests__/PerformanceExample.unit.test.tsx +281 -0
- package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.unit.test.ts +407 -0
- package/src/components/DataTable/hooks/__tests__/useColumnReordering.unit.test.ts +679 -0
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +95 -0
- package/src/components/DataTable/hooks/useColumnReordering.ts +110 -0
- package/src/components/DataTable/hooks/useDataTableState.ts +325 -0
- package/src/components/DataTable/hooks/useHierarchicalState.ts +174 -0
- package/src/components/DataTable/index.ts +70 -0
- package/src/components/DataTable/styles.ts +171 -0
- package/src/components/DataTable/types.ts +475 -0
- package/src/components/DataTable/utils/__tests__/columnSizing.test.ts +237 -0
- package/src/components/DataTable/utils/__tests__/debugTools.unit.test.ts +267 -0
- package/src/components/DataTable/utils/__tests__/errorHandling.unit.test.ts +467 -0
- package/src/components/DataTable/utils/__tests__/exportUtils.unit.test.ts +380 -0
- package/src/components/DataTable/utils/__tests__/flexibleImport.unit.test.ts +233 -0
- package/src/components/DataTable/utils/__tests__/performanceUtils.unit.test.ts +414 -0
- package/src/components/DataTable/utils/columnSizing.ts +125 -0
- package/src/components/DataTable/utils/debugTools.ts +583 -0
- package/src/components/DataTable/utils/errorHandling.ts +494 -0
- package/src/components/DataTable/utils/exportUtils.ts +126 -0
- package/src/components/DataTable/utils/flexibleImport.ts +510 -0
- package/src/components/DataTable/utils/hierarchicalSorting.ts +151 -0
- package/src/components/DataTable/utils/hierarchicalUtils.ts +218 -0
- package/src/components/DataTable/utils/index.ts +1 -0
- package/src/components/DataTable/utils/performanceUtils.ts +351 -0
- package/src/components/Dialog/Dialog.tsx +782 -0
- package/src/components/Dialog/README.md +804 -0
- package/src/components/Dialog/__tests__/Dialog.accessibility.test.tsx +521 -0
- package/src/components/Dialog/__tests__/Dialog.auto-size.example.tsx +157 -0
- package/src/components/Dialog/__tests__/Dialog.enhanced.test.tsx +538 -0
- package/src/components/Dialog/__tests__/Dialog.unit.test.tsx +1373 -0
- package/src/components/Dialog/examples/BasicHtmlTest.tsx +55 -0
- package/src/components/Dialog/examples/DebugHtmlExample.tsx +68 -0
- package/src/components/Dialog/examples/HtmlDialogExample.tsx +202 -0
- package/src/components/Dialog/examples/SimpleHtmlTest.tsx +61 -0
- package/src/components/Dialog/examples/SmartDialogExample.tsx +322 -0
- package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +151 -0
- package/src/components/Dialog/index.ts +12 -0
- package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +611 -0
- package/src/components/Dialog/utils/safeHtml.ts +185 -0
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +312 -0
- package/src/components/ErrorBoundary/__tests__/ErrorBoundary.accessibility.test.tsx +517 -0
- package/src/components/ErrorBoundary/__tests__/ErrorBoundary.integration.test.tsx +572 -0
- package/src/components/ErrorBoundary/__tests__/ErrorBoundary.unit.test.tsx +579 -0
- package/src/components/ErrorBoundary/index.ts +8 -0
- package/src/components/EventSelector/EventSelector.tsx +360 -0
- package/src/components/EventSelector/__tests__/EventSelector.test.tsx +528 -0
- package/src/components/EventSelector/index.ts +3 -0
- package/src/components/EventSelector/types.ts +79 -0
- package/src/components/FileUpload/FileUpload.example.tsx +218 -0
- package/src/components/FileUpload/FileUpload.tsx +237 -0
- package/src/components/FileUpload/__tests__/FileUpload.integration.test.tsx +992 -0
- package/src/components/FileUpload/__tests__/FileUpload.real.test.tsx +927 -0
- package/src/components/FileUpload/__tests__/FileUpload.test.tsx +855 -0
- package/src/components/FileUpload/__tests__/FileUpload.unit.test.tsx +1311 -0
- package/src/components/FileUpload/__tests__/FileUpload.unmocked.test.tsx +937 -0
- package/src/components/FileUpload/index.ts +6 -0
- package/src/components/Footer/Footer.tsx +197 -0
- package/src/components/Footer/__tests__/Footer.accessibility.test.tsx +359 -0
- package/src/components/Footer/__tests__/Footer.integration.test.tsx +353 -0
- package/src/components/Footer/__tests__/Footer.performance.test.tsx +309 -0
- package/src/components/Footer/__tests__/Footer.unit.test.tsx +309 -0
- package/src/components/Footer/__tests__/Footer.visual.test.tsx +335 -0
- package/src/components/Footer/index.ts +17 -0
- package/src/components/Form/Form.tsx +166 -0
- package/src/components/Form/FormErrorSummary.tsx +113 -0
- package/src/components/Form/FormField.tsx +249 -0
- package/src/components/Form/FormFieldset.tsx +127 -0
- package/src/components/Form/FormLiveRegion.tsx +198 -0
- package/src/components/Form/__tests__/Form.accessibility.test.tsx +820 -0
- package/src/components/Form/__tests__/Form.unit.test.tsx +305 -0
- package/src/components/Form/__tests__/FormErrorSummary.unit.test.tsx +285 -0
- package/src/components/Form/__tests__/FormFieldset.unit.test.tsx +241 -0
- package/src/components/Form/index.ts +26 -0
- package/src/components/Header/Header.tsx +301 -0
- package/src/components/Header/__tests__/Header.accessibility.test.tsx +382 -0
- package/src/components/Header/__tests__/Header.comprehensive.test.tsx +509 -0
- package/src/components/Header/__tests__/Header.unit.test.tsx +335 -0
- package/src/components/Header/index.ts +4 -0
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +196 -0
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +164 -0
- package/src/components/InactivityWarningModal/__tests__/InactivityWarningModal.unit.test.tsx +224 -0
- package/src/components/InactivityWarningModal/index.ts +9 -0
- package/src/components/Input/Input.tsx +201 -0
- package/src/components/Input/__mocks__/Input.tsx +2 -0
- package/src/components/Input/__tests__/Input.accessibility.test.tsx +632 -0
- package/src/components/Input/__tests__/Input.unit.test.tsx +1121 -0
- package/src/components/Input/index.ts +9 -0
- package/src/components/Label/Label.tsx +186 -0
- package/src/components/Label/__tests__/Label.accessibility.test.tsx +239 -0
- package/src/components/Label/__tests__/Label.unit.test.tsx +331 -0
- package/src/components/Label/index.ts +2 -0
- package/src/components/LoadingSpinner/LoadingSpinner.tsx +98 -0
- package/src/components/LoadingSpinner/__tests__/LoadingSpinner.accessibility.test.tsx +116 -0
- package/src/components/LoadingSpinner/__tests__/LoadingSpinner.unit.test.tsx +144 -0
- package/src/components/LoadingSpinner/index.ts +3 -0
- package/src/components/LoginForm/LoginForm.tsx +273 -0
- package/src/components/LoginForm/__tests__/LoginForm.accessibility.test.tsx +201 -0
- package/src/components/LoginForm/__tests__/LoginForm.unit.test.tsx +119 -0
- package/src/components/LoginForm/index.ts +3 -0
- package/src/components/NavigationMenu/NavigationMenu.tsx +698 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.accessibility.test.tsx +378 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.enhanced.test.tsx +768 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.integration.test.tsx +576 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.performance.test.tsx +585 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.real.component.test.tsx +783 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.security.enhanced.test.tsx +810 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.security.test.tsx +494 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.unit.test.tsx +331 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.userWorkflows.test.tsx +347 -0
- package/src/components/NavigationMenu/__tests__/NavigationMenu.workflows.test.tsx +584 -0
- package/src/components/NavigationMenu/index.ts +10 -0
- package/src/components/NavigationMenu/types.ts +85 -0
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +304 -0
- package/src/components/OrganisationSelector/__tests__/OrganisationSelector.unit.test.tsx +664 -0
- package/src/components/OrganisationSelector/index.ts +9 -0
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +699 -0
- package/src/components/PaceAppLayout/README.md +278 -0
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +288 -0
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +889 -0
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.performance.test.tsx +629 -0
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +782 -0
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +904 -0
- package/src/components/PaceAppLayout/index.ts +1 -0
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +221 -0
- package/src/components/PaceLoginPage/__tests__/PaceLoginPage.accessibility.test.tsx +463 -0
- package/src/components/PaceLoginPage/__tests__/PaceLoginPage.integration.test.tsx +586 -0
- package/src/components/PaceLoginPage/__tests__/PaceLoginPage.unit.test.tsx +533 -0
- package/src/components/PaceLoginPage/index.ts +1 -0
- package/src/components/PasswordReset/PasswordChangeForm.tsx +186 -0
- package/src/components/PasswordReset/PasswordResetForm.tsx +201 -0
- package/src/components/PasswordReset/__tests__/PasswordChangeForm.accessibility.test.tsx +408 -0
- package/src/components/PasswordReset/__tests__/PasswordChangeForm.unit.test.tsx +561 -0
- package/src/components/PasswordReset/__tests__/PasswordReset.integration.test.tsx +304 -0
- package/src/components/PasswordReset/__tests__/PasswordResetForm.accessibility.test.tsx +20 -0
- package/src/components/PasswordReset/__tests__/PasswordResetForm.unit.test.tsx +523 -0
- package/src/components/PasswordReset/__tests__/__mocks__/UnifiedAuthProvider.ts +29 -0
- package/src/components/PasswordReset/index.ts +4 -0
- package/src/components/Print/__tests__/Print.comprehensive.test.tsx +331 -0
- package/src/components/PrintButton/PrintButton.tsx +321 -0
- package/src/components/PrintButton/PrintButtonGroup.tsx +84 -0
- package/src/components/PrintButton/PrintToolbar.tsx +94 -0
- package/src/components/PrintButton/__tests__/PrintButton.unit.test.tsx +429 -0
- package/src/components/PrintButton/__tests__/PrintButtonGroup.unit.test.tsx +277 -0
- package/src/components/PrintButton/__tests__/PrintToolbar.unit.test.tsx +264 -0
- package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +438 -0
- package/src/components/PrintButton/index.ts +33 -0
- package/src/components/PrintButton/types.ts +173 -0
- package/src/components/PrintCard/PrintCard.tsx +154 -0
- package/src/components/PrintCard/PrintCardContent.tsx +57 -0
- package/src/components/PrintCard/PrintCardFooter.tsx +60 -0
- package/src/components/PrintCard/PrintCardGrid.tsx +91 -0
- package/src/components/PrintCard/PrintCardHeader.tsx +78 -0
- package/src/components/PrintCard/PrintCardImage.tsx +81 -0
- package/src/components/PrintCard/__tests__/PrintCard.unit.test.tsx +233 -0
- package/src/components/PrintCard/__tests__/PrintCardContent.test.tsx +284 -0
- package/src/components/PrintCard/__tests__/PrintCardGrid.unit.test.tsx +214 -0
- package/src/components/PrintCard/__tests__/PrintCardImage.unit.test.tsx +264 -0
- package/src/components/PrintCard/examples/PrintCardShowcase.tsx +239 -0
- package/src/components/PrintCard/index.ts +34 -0
- package/src/components/PrintCard/types.ts +171 -0
- package/src/components/PrintDataTable/PrintDataTable.tsx +215 -0
- package/src/components/PrintDataTable/PrintTableGroup.tsx +90 -0
- package/src/components/PrintDataTable/PrintTableRow.tsx +76 -0
- package/src/components/PrintDataTable/__tests__/PrintDataTable.unit.test.tsx +361 -0
- package/src/components/PrintDataTable/__tests__/PrintTableGroup.unit.test.tsx +314 -0
- package/src/components/PrintDataTable/__tests__/PrintTableRow.unit.test.tsx +362 -0
- package/src/components/PrintDataTable/index.ts +25 -0
- package/src/components/PrintDataTable/types.ts +67 -0
- package/src/components/PrintFooter/PrintFooter.tsx +183 -0
- package/src/components/PrintFooter/PrintFooterContent.tsx +71 -0
- package/src/components/PrintFooter/PrintFooterInfo.tsx +86 -0
- package/src/components/PrintFooter/PrintPageNumber.tsx +90 -0
- package/src/components/PrintFooter/__tests__/PrintFooter.unit.test.tsx +500 -0
- package/src/components/PrintFooter/__tests__/PrintFooterContent.unit.test.tsx +321 -0
- package/src/components/PrintFooter/__tests__/PrintFooterInfo.unit.test.tsx +335 -0
- package/src/components/PrintFooter/__tests__/PrintPageNumber.unit.test.tsx +340 -0
- package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +390 -0
- package/src/components/PrintFooter/index.ts +30 -0
- package/src/components/PrintFooter/types.ts +149 -0
- package/src/components/PrintGrid/PrintGrid.tsx +180 -0
- package/src/components/PrintGrid/PrintGridBreakpoint.tsx +109 -0
- package/src/components/PrintGrid/PrintGridContainer.tsx +128 -0
- package/src/components/PrintGrid/PrintGridItem.tsx +220 -0
- package/src/components/PrintGrid/__tests__/PrintGrid.unit.test.tsx +340 -0
- package/src/components/PrintGrid/__tests__/PrintGridBreakpoint.unit.test.tsx +261 -0
- package/src/components/PrintGrid/__tests__/PrintGridContainer.unit.test.tsx +338 -0
- package/src/components/PrintGrid/__tests__/PrintGridItem.unit.test.tsx +338 -0
- package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +359 -0
- package/src/components/PrintGrid/index.ts +31 -0
- package/src/components/PrintGrid/types.ts +159 -0
- package/src/components/PrintHeader/PrintCoverHeader.tsx +230 -0
- package/src/components/PrintHeader/PrintHeader.tsx +150 -0
- package/src/components/PrintHeader/__tests__/PrintCoverHeader.unit.test.tsx +309 -0
- package/src/components/PrintHeader/__tests__/PrintHeader.unit.test.tsx +202 -0
- package/src/components/PrintHeader/index.ts +17 -0
- package/src/components/PrintHeader/types.ts +42 -0
- package/src/components/PrintLayout/PrintLayout.tsx +122 -0
- package/src/components/PrintLayout/PrintLayoutContext.tsx +66 -0
- package/src/components/PrintLayout/PrintPageBreak.tsx +52 -0
- package/src/components/PrintLayout/__tests__/PrintLayout.unit.test.tsx +238 -0
- package/src/components/PrintLayout/examples/PrintShowcase.tsx +230 -0
- package/src/components/PrintLayout/index.ts +19 -0
- package/src/components/PrintLayout/types.ts +37 -0
- package/src/components/PrintPageBreak/PrintPageBreak.tsx +120 -0
- package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +90 -0
- package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +112 -0
- package/src/components/PrintPageBreak/__tests__/PrintPageBreak.unit.test.tsx +263 -0
- package/src/components/PrintPageBreak/__tests__/PrintPageBreakGroup.unit.test.tsx +239 -0
- package/src/components/PrintPageBreak/__tests__/PrintPageBreakIndicator.unit.test.tsx +235 -0
- package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +279 -0
- package/src/components/PrintPageBreak/index.ts +23 -0
- package/src/components/PrintPageBreak/types.ts +94 -0
- package/src/components/PrintSection/PrintColumn.tsx +104 -0
- package/src/components/PrintSection/PrintDivider.tsx +101 -0
- package/src/components/PrintSection/PrintSection.tsx +129 -0
- package/src/components/PrintSection/PrintSectionContent.tsx +75 -0
- package/src/components/PrintSection/PrintSectionHeader.tsx +97 -0
- package/src/components/PrintSection/__tests__/PrintColumn.unit.test.tsx +385 -0
- package/src/components/PrintSection/__tests__/PrintDivider.unit.test.tsx +373 -0
- package/src/components/PrintSection/__tests__/PrintSection.unit.test.tsx +390 -0
- package/src/components/PrintSection/__tests__/PrintSectionContent.unit.test.tsx +321 -0
- package/src/components/PrintSection/__tests__/PrintSectionHeader.unit.test.tsx +334 -0
- package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +258 -0
- package/src/components/PrintSection/index.ts +33 -0
- package/src/components/PrintSection/types.ts +155 -0
- package/src/components/PrintText/PrintText.tsx +116 -0
- package/src/components/PrintText/__tests__/PrintText.unit.test.tsx +351 -0
- package/src/components/PrintText/index.ts +16 -0
- package/src/components/PrintText/types.ts +24 -0
- package/src/components/Progress/Progress.tsx +116 -0
- package/src/components/Progress/__tests__/Progress.accessibility.test.tsx +240 -0
- package/src/components/Progress/__tests__/Progress.unit.test.tsx +242 -0
- package/src/components/Progress/index.ts +3 -0
- package/src/components/PublicLayout/EventLogo.tsx +287 -0
- package/src/components/PublicLayout/PublicErrorBoundary.tsx +279 -0
- package/src/components/PublicLayout/PublicLoadingSpinner.tsx +208 -0
- package/src/components/PublicLayout/PublicPageContextChecker.tsx +130 -0
- package/src/components/PublicLayout/PublicPageDebugger.tsx +104 -0
- package/src/components/PublicLayout/PublicPageDiagnostic.tsx +162 -0
- package/src/components/PublicLayout/PublicPageFooter.tsx +124 -0
- package/src/components/PublicLayout/PublicPageHeader.tsx +178 -0
- package/src/components/PublicLayout/PublicPageLayout.tsx +232 -0
- package/src/components/PublicLayout/PublicPageProvider.tsx +137 -0
- package/src/components/PublicLayout/__tests__/EventLogo.test.tsx +761 -0
- package/src/components/PublicLayout/__tests__/PublicErrorBoundary.simplified.test.tsx +228 -0
- package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +228 -0
- package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +459 -0
- package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +362 -0
- package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +522 -0
- package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +599 -0
- package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +513 -0
- package/src/components/PublicLayout/index.ts +51 -0
- package/src/components/RBAC/PagePermissionGuard.tsx +274 -0
- package/src/components/RBAC/RBACGuard.tsx +143 -0
- package/src/components/RBAC/RBACProvider.tsx +186 -0
- package/src/components/RBAC/RoleBasedContent.tsx +129 -0
- package/src/components/RBAC/__tests__/PagePermissionGuard.unit.test.tsx +674 -0
- package/src/components/RBAC/__tests__/RBAC.integration.test.tsx +573 -0
- package/src/components/RBAC/__tests__/RBACGuard.unit.test.tsx +467 -0
- package/src/components/RBAC/__tests__/RBACProvider.accessibility.test.tsx +475 -0
- package/src/components/RBAC/__tests__/RBACProvider.advanced.test.tsx +569 -0
- package/src/components/RBAC/__tests__/RBACProvider.integration.test.tsx +352 -0
- package/src/components/RBAC/__tests__/RBACProvider.unit.test.tsx +128 -0
- package/src/components/RBAC/__tests__/RoleBasedContent.unit.test.tsx +657 -0
- package/src/components/RBAC/index.ts +23 -0
- package/src/components/Select/Select.tsx +654 -0
- package/src/components/Select/__tests__/SearchableSelect.unit.test.tsx +437 -0
- package/src/components/Select/__tests__/Select.accessibility.test.tsx +1202 -0
- package/src/components/Select/__tests__/Select.actual.test.tsx +774 -0
- package/src/components/Select/__tests__/Select.comprehensive.test.tsx +837 -0
- package/src/components/Select/__tests__/Select.enhanced.test.tsx +1101 -0
- package/src/components/Select/__tests__/Select.integration.test.tsx +772 -0
- package/src/components/Select/__tests__/Select.performance.test.tsx +695 -0
- package/src/components/Select/__tests__/Select.real-world.test.tsx +1046 -0
- package/src/components/Select/__tests__/Select.search-algorithms.test.tsx +968 -0
- package/src/components/Select/__tests__/Select.unit.test.tsx +647 -0
- package/src/components/Select/__tests__/Select.utils.test.tsx +890 -0
- package/src/components/Select/index.ts +1 -0
- package/src/components/SuperAdminGuard.tsx +116 -0
- package/src/components/Table/Table.tsx +222 -0
- package/src/components/Table/__tests__/Table.accessibility.test.tsx +233 -0
- package/src/components/Table/__tests__/Table.unit.test.tsx +235 -0
- package/src/components/Table/index.ts +11 -0
- package/src/components/Toast/Toast.tsx +339 -0
- package/src/components/Toast/__tests__/Toast.accessibility.test.tsx +238 -0
- package/src/components/Toast/__tests__/Toast.integration.test.tsx +699 -0
- package/src/components/Toast/__tests__/Toast.unit.test.tsx +750 -0
- package/src/components/Toast/index.ts +14 -0
- package/src/components/Tooltip/Tooltip.tsx +167 -0
- package/src/components/Tooltip/__tests__/Tooltip.accessibility.test.tsx +121 -0
- package/src/components/Tooltip/__tests__/Tooltip.unit.test.tsx +185 -0
- package/src/components/Tooltip/index.ts +7 -0
- package/src/components/UserMenu/UserMenu.tsx +243 -0
- package/src/components/UserMenu/__tests__/UserMenu.accessibility.test.tsx +139 -0
- package/src/components/UserMenu/__tests__/UserMenu.integration.test.tsx +188 -0
- package/src/components/UserMenu/__tests__/UserMenu.unit.test.tsx +458 -0
- package/src/components/UserMenu/index.ts +3 -0
- package/src/components/__tests__/EdgeCaseTesting.enhanced.test.tsx +523 -0
- package/src/components/__tests__/ErrorTesting.enhanced.test.tsx +455 -0
- package/src/components/__tests__/SuperAdminGuard.test.tsx +456 -0
- package/src/components/__tests__/SuperAdminGuard.unit.test.tsx +456 -0
- package/src/components/examples/PermissionExample.tsx +150 -0
- package/src/components/examples/__tests__/PermissionExample.unit.test.tsx +360 -0
- package/src/components/index.ts +434 -0
- package/src/components.ts +19 -0
- package/src/constants/performance.ts +14 -0
- package/src/examples/CorrectPublicPageImplementation.tsx +301 -0
- package/src/examples/PublicEventPage.tsx +274 -0
- package/src/examples/PublicPageApp.tsx +308 -0
- package/src/examples/PublicPageUsageExample.tsx +216 -0
- package/src/fonts/georama-italic.woff2 +0 -0
- package/src/fonts/georama.woff2 +0 -0
- package/src/fonts/open-sans-italic.woff2 +0 -0
- package/src/fonts/open-sans.woff2 +0 -0
- package/src/fonts/reddit-mono.woff2 +0 -0
- package/src/hooks/__tests__/hooks.integration.test.tsx +575 -0
- package/src/hooks/__tests__/useApiFetch.unit.test.ts +115 -0
- package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +133 -0
- package/src/hooks/__tests__/useDebounce.unit.test.ts +82 -0
- package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +293 -0
- package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +385 -0
- package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +286 -0
- package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +838 -0
- package/src/hooks/__tests__/usePermissionCache.unit.test.ts +627 -0
- package/src/hooks/__tests__/useRBAC.unit.test.ts +903 -0
- package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +537 -0
- package/src/hooks/__tests__/useToast.unit.test.tsx +62 -0
- package/src/hooks/__tests__/useZodForm.unit.test.tsx +37 -0
- package/src/hooks/index.ts +56 -0
- package/src/hooks/public/__tests__/usePublicEvent.test.tsx +397 -0
- package/src/hooks/public/__tests__/usePublicEventLogo.test.tsx +690 -0
- package/src/hooks/public/__tests__/usePublicRouteParams.test.tsx +449 -0
- package/src/hooks/public/index.ts +34 -0
- package/src/hooks/public/usePublicEvent.ts +261 -0
- package/src/hooks/public/usePublicEventLogo.ts +285 -0
- package/src/hooks/public/usePublicRouteParams.ts +259 -0
- package/src/hooks/useAppConfig.ts +94 -0
- package/src/hooks/useComponentPerformance.ts +39 -0
- package/src/hooks/useDataTablePerformance.ts +387 -0
- package/src/hooks/useDataTableState.ts +110 -0
- package/src/hooks/useDebounce.ts +18 -0
- package/src/hooks/useFocusManagement.ts +161 -0
- package/src/hooks/useFocusTrap.ts +155 -0
- package/src/hooks/useInactivityTracker.ts +372 -0
- package/src/hooks/useIsMobile.ts +42 -0
- package/src/hooks/useKeyboardShortcuts.ts +237 -0
- package/src/hooks/useOrganisationPermissions.ts +208 -0
- package/src/hooks/useOrganisationSecurity.ts +262 -0
- package/src/hooks/usePerformanceMonitor.ts +128 -0
- package/src/hooks/usePermissionCache.ts +455 -0
- package/src/hooks/useRBAC.ts +262 -0
- package/src/hooks/useSecureDataAccess.ts +586 -0
- package/src/hooks/useStorage.ts +274 -0
- package/src/hooks/useToast.ts +242 -0
- package/src/hooks/useZodForm.ts +28 -0
- package/src/index.ts +200 -0
- package/src/providers/AuthProvider.tsx +369 -0
- package/src/providers/EventProvider.tsx +324 -0
- package/src/providers/InactivityProvider.tsx +238 -0
- package/src/providers/OrganisationProvider.tsx +588 -0
- package/src/providers/RBACProvider.tsx +622 -0
- package/src/providers/UnifiedAuthProvider.tsx +327 -0
- package/src/providers/__tests__/EventProvider.unit.test.tsx +768 -0
- package/src/providers/__tests__/OrganisationProvider.basic.test.tsx +116 -0
- package/src/providers/__tests__/OrganisationProvider.unit.test.tsx +1312 -0
- package/src/providers/__tests__/UnifiedAuthProvider.inactivity.test.tsx +601 -0
- package/src/providers/__tests__/UnifiedAuthProvider.unit.test.tsx +675 -0
- package/src/providers/__tests__/index.unit.test.ts +78 -0
- package/src/providers/index.ts +15 -0
- package/src/rbac/README.md +885 -0
- package/src/rbac/__tests__/PagePermissionGuard.test.tsx +673 -0
- package/src/rbac/__tests__/README.md +170 -0
- package/src/rbac/__tests__/RoleBasedRouter.test.tsx +709 -0
- package/src/rbac/__tests__/TestContext.tsx +72 -0
- package/src/rbac/__tests__/__mocks__/cache.ts +144 -0
- package/src/rbac/__tests__/__mocks__/supabase.ts +152 -0
- package/src/rbac/__tests__/adapters-hooks-comprehensive.test.tsx +782 -0
- package/src/rbac/__tests__/adapters-hooks.test.tsx +561 -0
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +963 -0
- package/src/rbac/__tests__/adapters.test.tsx +444 -0
- package/src/rbac/__tests__/api.test.ts +620 -0
- package/src/rbac/__tests__/audit-observability-comprehensive.test.ts +792 -0
- package/src/rbac/__tests__/audit-observability.test.ts +549 -0
- package/src/rbac/__tests__/audit.test.ts +616 -0
- package/src/rbac/__tests__/build-contract-compliance-simple.test.ts +230 -0
- package/src/rbac/__tests__/cache-invalidation-comprehensive.test.ts +889 -0
- package/src/rbac/__tests__/cache-invalidation.test.ts +457 -0
- package/src/rbac/__tests__/cache.test.ts +458 -0
- package/src/rbac/__tests__/components-navigation-guard.enhanced.test.tsx +859 -0
- package/src/rbac/__tests__/components-navigation-guard.test.tsx +895 -0
- package/src/rbac/__tests__/components-navigation-provider.test.tsx +692 -0
- package/src/rbac/__tests__/components-page-permission-guard.test.tsx +673 -0
- package/src/rbac/__tests__/components-page-permission-provider.test.tsx +614 -0
- package/src/rbac/__tests__/components-permission-enforcer.enhanced.fixed.test.tsx +836 -0
- package/src/rbac/__tests__/components-permission-enforcer.enhanced.test.tsx +837 -0
- package/src/rbac/__tests__/components-permission-enforcer.test.tsx +825 -0
- package/src/rbac/__tests__/components-role-based-router.test.tsx +709 -0
- package/src/rbac/__tests__/components-secure-data-provider.test.tsx +607 -0
- package/src/rbac/__tests__/config.test.ts +583 -0
- package/src/rbac/__tests__/core-logic-unit.test.ts +190 -0
- package/src/rbac/__tests__/core-permission-logic-comprehensive.test.ts +1467 -0
- package/src/rbac/__tests__/core-permission-logic-fixed.test.ts +151 -0
- package/src/rbac/__tests__/core-permission-logic-simple.test.ts +968 -0
- package/src/rbac/__tests__/core-permission-logic.test.ts +966 -0
- package/src/rbac/__tests__/edge-cases-comprehensive.test.ts +988 -0
- package/src/rbac/__tests__/edge-cases.test.ts +654 -0
- package/src/rbac/__tests__/engine.test.ts +361 -0
- package/src/rbac/__tests__/engine.unit.test.ts +361 -0
- package/src/rbac/__tests__/hooks.enhanced.test.tsx +979 -0
- package/src/rbac/__tests__/hooks.fixed.test.tsx +475 -0
- package/src/rbac/__tests__/hooks.test.tsx +385 -0
- package/src/rbac/__tests__/index.test.ts +269 -0
- package/src/rbac/__tests__/integration.enhanced.test.tsx +824 -0
- package/src/rbac/__tests__/page-permission-guard-super-admin.test.tsx +261 -0
- package/src/rbac/__tests__/performance.enhanced.test.tsx +724 -0
- package/src/rbac/__tests__/permissions.test.ts +383 -0
- package/src/rbac/__tests__/requires-event.test.ts +330 -0
- package/src/rbac/__tests__/scope-isolation-comprehensive.test.ts +1349 -0
- package/src/rbac/__tests__/scope-isolation.test.ts +755 -0
- package/src/rbac/__tests__/secure-client-rls-comprehensive.test.ts +592 -0
- package/src/rbac/__tests__/secure-client-rls.test.ts +377 -0
- package/src/rbac/__tests__/security.test.ts +296 -0
- package/src/rbac/__tests__/setup.ts +228 -0
- package/src/rbac/__tests__/test-utils-enhanced.tsx +400 -0
- package/src/rbac/__tests__/types.test.ts +685 -0
- package/src/rbac/adapters.tsx +726 -0
- package/src/rbac/api.ts +337 -0
- package/src/rbac/audit-enhanced.ts +339 -0
- package/src/rbac/audit.ts +338 -0
- package/src/rbac/cache.ts +213 -0
- package/src/rbac/components/EnhancedNavigationMenu.tsx +294 -0
- package/src/rbac/components/NavigationGuard.tsx +294 -0
- package/src/rbac/components/NavigationProvider.tsx +314 -0
- package/src/rbac/components/PagePermissionGuard.tsx +430 -0
- package/src/rbac/components/PagePermissionProvider.tsx +274 -0
- package/src/rbac/components/PermissionEnforcer.tsx +307 -0
- package/src/rbac/components/RoleBasedRouter.tsx +425 -0
- package/src/rbac/components/SecureDataProvider.tsx +319 -0
- package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +631 -0
- package/src/rbac/components/__tests__/NavigationProvider.test.tsx +667 -0
- package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +647 -0
- package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +496 -0
- package/src/rbac/components/index.ts +64 -0
- package/src/rbac/config.ts +133 -0
- package/src/rbac/docs/event-based-apps.md +285 -0
- package/src/rbac/engine.ts +1026 -0
- package/src/rbac/eslint-rules.js +285 -0
- package/src/rbac/examples/CompleteRBACExample.tsx +323 -0
- package/src/rbac/examples/EventBasedApp.tsx +238 -0
- package/src/rbac/hooks.ts +555 -0
- package/src/rbac/index.ts +114 -0
- package/src/rbac/permissions.ts +293 -0
- package/src/rbac/secureClient.ts +244 -0
- package/src/rbac/security.ts +346 -0
- package/src/rbac/testing/__tests__/index.test.tsx +342 -0
- package/src/rbac/testing/index.tsx +340 -0
- package/src/rbac/types.ts +341 -0
- package/src/rbac/utils/__tests__/eventContext.test.ts +428 -0
- package/src/rbac/utils/__tests__/eventContext.unit.test.ts +428 -0
- package/src/rbac/utils/eventContext.ts +83 -0
- package/src/styles/__tests__/styles.unit.test.ts +164 -0
- package/src/styles/core.css +401 -0
- package/src/styles/index.ts +51 -0
- package/src/test-dom-cleanup.test.tsx +38 -0
- package/src/theming/__tests__/README.md +335 -0
- package/src/theming/__tests__/runtime.accessibility.test.ts +474 -0
- package/src/theming/__tests__/runtime.error.test.ts +616 -0
- package/src/theming/__tests__/runtime.integration.test.ts +376 -0
- package/src/theming/__tests__/runtime.performance.test.ts +411 -0
- package/src/theming/__tests__/runtime.unit.test.ts +470 -0
- package/src/theming/runtime.ts +187 -0
- package/src/types/__tests__/database.unit.test.ts +489 -0
- package/src/types/__tests__/guards.unit.test.ts +146 -0
- package/src/types/__tests__/index.unit.test.ts +77 -0
- package/src/types/__tests__/organisation.unit.test.ts +713 -0
- package/src/types/__tests__/rbac.unit.test.ts +621 -0
- package/src/types/__tests__/security.unit.test.ts +347 -0
- package/src/types/__tests__/supabase.unit.test.ts +658 -0
- package/src/types/__tests__/theme.unit.test.ts +218 -0
- package/src/types/__tests__/unified.unit.test.ts +537 -0
- package/src/types/__tests__/validation.unit.test.ts +616 -0
- package/src/types/database.ts +472 -0
- package/src/types/guards.ts +30 -0
- package/src/types/index.ts +25 -0
- package/src/types/organisation.ts +184 -0
- package/src/types/security.ts +70 -0
- package/src/types/supabase.ts +166 -0
- package/src/types/theme.ts +6 -0
- package/src/types/unified.ts +262 -0
- package/src/types/validation.ts +164 -0
- package/src/types/vitest-globals.d.ts +43 -0
- package/src/utils/__mocks__/supabaseMock.ts +75 -0
- package/src/utils/__mocks__/supabaseMock.tsx +198 -0
- package/src/utils/__tests__/appConfig.unit.test.ts +55 -0
- package/src/utils/__tests__/appNameResolver.unit.test.ts +137 -0
- package/src/utils/__tests__/audit.unit.test.ts +69 -0
- package/src/utils/__tests__/auth-utils.unit.test.ts +70 -0
- package/src/utils/__tests__/bundleAnalysis.unit.test.ts +317 -0
- package/src/utils/__tests__/cn.unit.test.ts +34 -0
- package/src/utils/__tests__/deviceFingerprint.unit.test.ts +480 -0
- package/src/utils/__tests__/dynamicUtils.unit.test.ts +322 -0
- package/src/utils/__tests__/formatDate.unit.test.ts +109 -0
- package/src/utils/__tests__/formatting.unit.test.ts +66 -0
- package/src/utils/__tests__/index.unit.test.ts +251 -0
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +309 -0
- package/src/utils/__tests__/organisationContext.unit.test.ts +192 -0
- package/src/utils/__tests__/performanceBudgets.unit.test.ts +259 -0
- package/src/utils/__tests__/permissionTypes.unit.test.ts +250 -0
- package/src/utils/__tests__/permissionUtils.unit.test.ts +362 -0
- package/src/utils/__tests__/sanitization.unit.test.ts +346 -0
- package/src/utils/__tests__/schemaUtils.unit.test.ts +441 -0
- package/src/utils/__tests__/secureDataAccess.unit.test.ts +334 -0
- package/src/utils/__tests__/secureErrors.unit.test.ts +377 -0
- package/src/utils/__tests__/secureStorage.unit.test.ts +293 -0
- package/src/utils/__tests__/security.unit.test.ts +127 -0
- package/src/utils/__tests__/securityMonitor.unit.test.ts +280 -0
- package/src/utils/__tests__/sessionTracking.unit.test.ts +370 -0
- package/src/utils/__tests__/validation.unit.test.ts +84 -0
- package/src/utils/__tests__/validationUtils.unit.test.ts +571 -0
- package/src/utils/appConfig.ts +47 -0
- package/src/utils/appIdResolver.ts +130 -0
- package/src/utils/appNameResolver.ts +190 -0
- package/src/utils/audit.ts +127 -0
- package/src/utils/auth-utils.ts +96 -0
- package/src/utils/bundleAnalysis.ts +129 -0
- package/src/utils/cn.ts +7 -0
- package/src/utils/debugLogger.ts +46 -0
- package/src/utils/deviceFingerprint.ts +215 -0
- package/src/utils/dynamicUtils.ts +105 -0
- package/src/utils/formatting.ts +77 -0
- package/src/utils/index.ts +145 -0
- package/src/utils/lazyLoad.tsx +44 -0
- package/src/utils/organisationContext.ts +135 -0
- package/src/utils/performanceBenchmark.ts +64 -0
- package/src/utils/performanceBudgets.ts +111 -0
- package/src/utils/permissionTypes.ts +37 -0
- package/src/utils/permissionUtils.ts +31 -0
- package/src/utils/print/PrintDataProcessor.ts +390 -0
- package/src/utils/print/__tests__/PrintDataProcessor.unit.test.ts +219 -0
- package/src/utils/print/__tests__/usePrintOptimization.unit.test.tsx +353 -0
- package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +397 -0
- package/src/utils/print/index.ts +29 -0
- package/src/utils/print/types.ts +196 -0
- package/src/utils/print/usePrintOptimization.ts +272 -0
- package/src/utils/sanitization.ts +264 -0
- package/src/utils/schemaUtils.ts +37 -0
- package/src/utils/secureDataAccess.ts +361 -0
- package/src/utils/secureErrors.ts +79 -0
- package/src/utils/secureStorage.ts +244 -0
- package/src/utils/security.ts +156 -0
- package/src/utils/securityMonitor.ts +45 -0
- package/src/utils/sessionTracking.ts +170 -0
- package/src/utils/storage/README.md +348 -0
- package/src/utils/storage/__tests__/config.unit.test.ts +206 -0
- package/src/utils/storage/__tests__/helpers.unit.test.ts +646 -0
- package/src/utils/storage/__tests__/index.unit.test.ts +167 -0
- package/src/utils/storage/__tests__/types.unit.test.ts +441 -0
- package/src/utils/storage/config.ts +100 -0
- package/src/utils/storage/helpers.ts +359 -0
- package/src/utils/storage/index.ts +36 -0
- package/src/utils/storage/types.ts +90 -0
- package/src/utils/validation.ts +111 -0
- package/src/utils/validationUtils.ts +120 -0
- package/src/validation/__tests__/common.unit.test.ts +101 -0
- package/src/validation/__tests__/csrf.unit.test.ts +302 -0
- package/src/validation/__tests__/passwordSchema.unit.test.ts +98 -0
- package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +466 -0
- package/src/validation/common.ts +53 -0
- package/src/validation/csrf.ts +214 -0
- package/src/validation/index.ts +43 -0
- package/src/validation/passwordSchema.ts +125 -0
- package/src/validation/sanitization.ts +96 -0
- package/src/validation/schemaUtils.ts +42 -0
- package/src/validation/sqlInjectionProtection.ts +242 -0
- package/src/validation/user.ts +34 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Unified types for PACE Core
|
|
3
|
+
* @package @jmruthers/pace-core
|
|
4
|
+
* @module unified
|
|
5
|
+
* @since 0.1.0
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @file Unified Types for DataTable
|
|
9
|
+
* @package @jmruthers/pace-core
|
|
10
|
+
* @module Types
|
|
11
|
+
* @since 0.3.0
|
|
12
|
+
*/
|
|
13
|
+
declare enum AuthErrorCode {
|
|
14
|
+
UNKNOWN_ERROR = "UNKNOWN_ERROR",
|
|
15
|
+
INVALID_CREDENTIALS = "INVALID_CREDENTIALS",
|
|
16
|
+
USER_NOT_FOUND = "USER_NOT_FOUND",
|
|
17
|
+
EMAIL_NOT_CONFIRMED = "EMAIL_NOT_CONFIRMED",
|
|
18
|
+
PASSWORD_TOO_WEAK = "PASSWORD_TOO_WEAK",
|
|
19
|
+
WEAK_PASSWORD = "WEAK_PASSWORD",
|
|
20
|
+
RATE_LIMITED = "RATE_LIMITED",
|
|
21
|
+
RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
|
|
22
|
+
SESSION_EXPIRED = "SESSION_EXPIRED",
|
|
23
|
+
PERMISSION_DENIED = "PERMISSION_DENIED",
|
|
24
|
+
NETWORK_ERROR = "NETWORK_ERROR"
|
|
25
|
+
}
|
|
26
|
+
declare enum PermissionErrorCode {
|
|
27
|
+
INSUFFICIENT_PERMISSIONS = "INSUFFICIENT_PERMISSIONS",
|
|
28
|
+
INVALID_PERMISSION = "INVALID_PERMISSION",
|
|
29
|
+
PERMISSION_CHECK_FAILED = "PERMISSION_CHECK_FAILED",
|
|
30
|
+
ACCESS_DENIED = "ACCESS_DENIED"
|
|
31
|
+
}
|
|
32
|
+
declare enum AccessLevel {
|
|
33
|
+
NONE = "none",
|
|
34
|
+
VIEWER = "viewer",
|
|
35
|
+
PARTICIPANT = "participant",
|
|
36
|
+
EDITOR = "editor",
|
|
37
|
+
PLANNER = "planner",
|
|
38
|
+
ADMIN = "admin",
|
|
39
|
+
SUPER_ADMIN = "super_admin",
|
|
40
|
+
SUPER = "super"
|
|
41
|
+
}
|
|
42
|
+
type UserId = string & {
|
|
43
|
+
__brand: 'UserId';
|
|
44
|
+
};
|
|
45
|
+
type SessionToken = string & {
|
|
46
|
+
__brand: 'SessionToken';
|
|
47
|
+
};
|
|
48
|
+
type PermissionString = string & {
|
|
49
|
+
__brand: 'PermissionString';
|
|
50
|
+
};
|
|
51
|
+
type RequestId = string & {
|
|
52
|
+
__brand: 'RequestId';
|
|
53
|
+
};
|
|
54
|
+
declare function createUserId(id: string): UserId;
|
|
55
|
+
declare function createSessionToken(token: string): SessionToken;
|
|
56
|
+
declare function createPermissionString(permission: string): PermissionString;
|
|
57
|
+
declare function createRequestId(id: string): RequestId;
|
|
58
|
+
declare function isUserId(value: unknown): value is UserId;
|
|
59
|
+
declare function isSessionToken(value: unknown): value is SessionToken;
|
|
60
|
+
declare function isPermissionString(value: unknown): value is PermissionString;
|
|
61
|
+
declare function isRequestId(value: unknown): value is RequestId;
|
|
62
|
+
type PermissionMap = Record<string, boolean>;
|
|
63
|
+
interface PermissionContext {
|
|
64
|
+
eventId?: string;
|
|
65
|
+
appName?: string;
|
|
66
|
+
userId?: string;
|
|
67
|
+
}
|
|
68
|
+
interface AuthError extends Error {
|
|
69
|
+
__isAuthError: true;
|
|
70
|
+
name: 'AuthError';
|
|
71
|
+
message: string;
|
|
72
|
+
code: AuthErrorCode;
|
|
73
|
+
user_message: string;
|
|
74
|
+
timestamp: number;
|
|
75
|
+
}
|
|
76
|
+
interface PermissionError extends Error {
|
|
77
|
+
__isPermissionError: true;
|
|
78
|
+
name: 'PermissionError';
|
|
79
|
+
message: string;
|
|
80
|
+
code: PermissionErrorCode;
|
|
81
|
+
timestamp: number;
|
|
82
|
+
}
|
|
83
|
+
interface ThemeColors {
|
|
84
|
+
primary: string;
|
|
85
|
+
secondary: string;
|
|
86
|
+
hover?: string;
|
|
87
|
+
active?: string;
|
|
88
|
+
bgSoft?: string;
|
|
89
|
+
}
|
|
90
|
+
interface EventTheme {
|
|
91
|
+
mid: ThemeColors;
|
|
92
|
+
light: ThemeColors;
|
|
93
|
+
}
|
|
94
|
+
interface Event {
|
|
95
|
+
id: string;
|
|
96
|
+
event_id: string;
|
|
97
|
+
event_name: string;
|
|
98
|
+
event_code?: string;
|
|
99
|
+
organisation_id: string;
|
|
100
|
+
event_date?: string;
|
|
101
|
+
event_days?: number;
|
|
102
|
+
event_venue?: string;
|
|
103
|
+
event_participants?: number;
|
|
104
|
+
is_visible?: boolean;
|
|
105
|
+
event_logo?: string;
|
|
106
|
+
event_colours?: Record<string, unknown> | null;
|
|
107
|
+
event_col_d1?: string;
|
|
108
|
+
event_col_d2?: string;
|
|
109
|
+
event_col_m1?: string;
|
|
110
|
+
event_col_m2?: string;
|
|
111
|
+
event_col_l1?: string;
|
|
112
|
+
event_col_l2?: string;
|
|
113
|
+
event_news?: string;
|
|
114
|
+
event_billing?: string;
|
|
115
|
+
event_catering_email?: string;
|
|
116
|
+
event_email?: string;
|
|
117
|
+
event_footer?: string;
|
|
118
|
+
event_rounddown?: number;
|
|
119
|
+
event_youthmultiplier?: number;
|
|
120
|
+
event_typicalunit?: number;
|
|
121
|
+
created_at: string;
|
|
122
|
+
updated_at: string;
|
|
123
|
+
created_by?: string;
|
|
124
|
+
updated_by?: string;
|
|
125
|
+
name?: string;
|
|
126
|
+
description?: string;
|
|
127
|
+
start_date?: string;
|
|
128
|
+
end_date?: string;
|
|
129
|
+
theme_colors?: EventTheme;
|
|
130
|
+
}
|
|
131
|
+
interface EventContextType {
|
|
132
|
+
selectedEvent: Event | null;
|
|
133
|
+
currentEvent: Event | null;
|
|
134
|
+
events: Event[];
|
|
135
|
+
isLoading: boolean;
|
|
136
|
+
error: string | null;
|
|
137
|
+
selectEvent: (event: Event) => void;
|
|
138
|
+
setCurrentEvent: (event: Event | null) => void;
|
|
139
|
+
clearSelection: () => void;
|
|
140
|
+
refreshEvents: () => Promise<void>;
|
|
141
|
+
createEvent: (event: Partial<Event>) => Promise<Event>;
|
|
142
|
+
updateEvent: (id: string, updates: Partial<Event>) => Promise<Event>;
|
|
143
|
+
deleteEvent: (id: string) => Promise<void>;
|
|
144
|
+
}
|
|
145
|
+
interface UserPermissions {
|
|
146
|
+
user_id: UserId;
|
|
147
|
+
accessLevel: AccessLevel;
|
|
148
|
+
permissions: PermissionMap;
|
|
149
|
+
roles: string[];
|
|
150
|
+
}
|
|
151
|
+
interface User {
|
|
152
|
+
id: string;
|
|
153
|
+
email?: string;
|
|
154
|
+
created_at: string;
|
|
155
|
+
updated_at: string;
|
|
156
|
+
email_confirmed_at?: string;
|
|
157
|
+
last_sign_in_at?: string;
|
|
158
|
+
user_metadata?: Record<string, unknown>;
|
|
159
|
+
app_metadata?: Record<string, unknown>;
|
|
160
|
+
}
|
|
161
|
+
interface Session {
|
|
162
|
+
access_token: string;
|
|
163
|
+
refresh_token?: string;
|
|
164
|
+
expires_in: number;
|
|
165
|
+
expires_at: number;
|
|
166
|
+
token_type: string;
|
|
167
|
+
user: User;
|
|
168
|
+
provider_token?: string;
|
|
169
|
+
provider_refresh_token?: string;
|
|
170
|
+
}
|
|
171
|
+
interface DataRecord {
|
|
172
|
+
id: string | number;
|
|
173
|
+
[key: string]: unknown;
|
|
174
|
+
}
|
|
175
|
+
interface DataTableAction<T = unknown> {
|
|
176
|
+
label: string;
|
|
177
|
+
onClick: (row: T) => void;
|
|
178
|
+
testId?: string;
|
|
179
|
+
disabled?: boolean | ((row: T) => boolean);
|
|
180
|
+
variant?: 'primary' | 'secondary' | 'destructive';
|
|
181
|
+
}
|
|
182
|
+
interface DataTableColumn<T = unknown> {
|
|
183
|
+
id?: string;
|
|
184
|
+
key: string;
|
|
185
|
+
label: string;
|
|
186
|
+
sortable?: boolean;
|
|
187
|
+
filterable?: boolean;
|
|
188
|
+
accessorKey?: keyof T;
|
|
189
|
+
accessorFn?: (row: T) => unknown;
|
|
190
|
+
cell?: (value: unknown, row: T) => React.ReactNode;
|
|
191
|
+
header?: React.ReactNode;
|
|
192
|
+
enableSorting?: boolean;
|
|
193
|
+
enableColumnFilter?: boolean;
|
|
194
|
+
enableGrouping?: boolean;
|
|
195
|
+
enableHiding?: boolean;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export { type AuthError as A, type DataRecord as D, type EventTheme as E, type PermissionError as P, type RequestId as R, type Session as S, type ThemeColors as T, type User as U, type UserPermissions as a, type PermissionString as b, AccessLevel as c, AuthErrorCode as d, PermissionErrorCode as e, type UserId as f, type SessionToken as g, createUserId as h, createSessionToken as i, createPermissionString as j, createRequestId as k, isUserId as l, isSessionToken as m, isPermissionString as n, isRequestId as o, type PermissionMap as p, type PermissionContext as q, type Event as r, type EventContextType as s, type DataTableAction as t, type DataTableColumn as u };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface PerformanceConfig {
|
|
2
|
+
componentName: string;
|
|
3
|
+
enableLogging?: boolean;
|
|
4
|
+
threshold?: number;
|
|
5
|
+
}
|
|
6
|
+
declare function useComponentPerformance({ componentName, enableLogging, threshold }: PerformanceConfig): {
|
|
7
|
+
renderCount: number;
|
|
8
|
+
componentName: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { useComponentPerformance as u };
|
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
import { e as OrganisationRole, f as OrganisationPermission, g as SuperAdminContext } from './organisation-CO3Sh3_D.js';
|
|
2
|
+
import { r as Event } from './unified-CM7T0aTK.js';
|
|
3
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
4
|
+
import { D as Database } from './database-C3Szpi5J.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @file useOrganisationPermissions Hook
|
|
8
|
+
* @package @jmruthers/pace-core
|
|
9
|
+
* @module Hooks/useOrganisationPermissions
|
|
10
|
+
* @since 0.4.0
|
|
11
|
+
*
|
|
12
|
+
* Hook for managing organisation-specific permissions and role validation.
|
|
13
|
+
* Provides secure access to user's role and permissions within organisations.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* function OrganisationComponent() {
|
|
18
|
+
* const {
|
|
19
|
+
* isOrgAdmin,
|
|
20
|
+
* canManageMembers,
|
|
21
|
+
* userRole,
|
|
22
|
+
* hasOrganisationAccess
|
|
23
|
+
* } = useOrganisationPermissions();
|
|
24
|
+
*
|
|
25
|
+
* return (
|
|
26
|
+
* <div>
|
|
27
|
+
* {isOrgAdmin && <AdminPanel />}
|
|
28
|
+
* {canManageMembers && <MemberManagement />}
|
|
29
|
+
* <p>Your role: {userRole}</p>
|
|
30
|
+
* </div>
|
|
31
|
+
* );
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* // For specific organisation
|
|
35
|
+
* function MultiOrgComponent() {
|
|
36
|
+
* const permissions = useOrganisationPermissions('org-123');
|
|
37
|
+
*
|
|
38
|
+
* if (!permissions.hasOrganisationAccess) {
|
|
39
|
+
* return <div>No access to this organisation</div>;
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* return <div>Role in org-123: {permissions.userRole}</div>;
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @security
|
|
47
|
+
* - Validates user membership in organisation
|
|
48
|
+
* - Provides role-based permission checks
|
|
49
|
+
* - Ensures secure access to organisation data
|
|
50
|
+
* - Real-time permission validation
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
interface UseOrganisationPermissionsReturn {
|
|
54
|
+
/** User's role in the organisation */
|
|
55
|
+
userRole: OrganisationRole | 'no_access';
|
|
56
|
+
/** Whether user has organisation admin role */
|
|
57
|
+
isOrgAdmin: boolean;
|
|
58
|
+
/** Whether user is a super admin */
|
|
59
|
+
isSuperAdmin: boolean;
|
|
60
|
+
/** Whether user can moderate content */
|
|
61
|
+
canModerate: boolean;
|
|
62
|
+
/** Whether user can manage members */
|
|
63
|
+
canManageMembers: boolean;
|
|
64
|
+
/** Whether user can manage organisation settings */
|
|
65
|
+
canManageSettings: boolean;
|
|
66
|
+
/** Whether user can manage events */
|
|
67
|
+
canManageEvents: boolean;
|
|
68
|
+
/** Whether user has any admin privileges */
|
|
69
|
+
hasAdminPrivileges: boolean;
|
|
70
|
+
/** Whether user has access to the organisation */
|
|
71
|
+
hasOrganisationAccess: boolean;
|
|
72
|
+
/** Check if user has specific permission */
|
|
73
|
+
hasPermission: (permission: OrganisationPermission) => boolean;
|
|
74
|
+
/** Get all permissions for the user */
|
|
75
|
+
getAllPermissions: () => OrganisationPermission[];
|
|
76
|
+
/** Organisation ID being checked */
|
|
77
|
+
organisationId: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Hook to access organisation-specific permissions and roles
|
|
81
|
+
*
|
|
82
|
+
* @param orgId - Optional organisation ID. Defaults to currently selected organisation
|
|
83
|
+
* @returns Organisation permissions and role information
|
|
84
|
+
*/
|
|
85
|
+
declare function useOrganisationPermissions(orgId?: string): UseOrganisationPermissionsReturn;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @file Organisation Security Hook
|
|
89
|
+
* @package @jmruthers/pace-core
|
|
90
|
+
* @module Hooks/OrganisationSecurity
|
|
91
|
+
* @since 0.4.0
|
|
92
|
+
*
|
|
93
|
+
* Security-focused hook for organisation access validation and super admin functionality.
|
|
94
|
+
* Provides utilities for validating user access to organisations and checking permissions.
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
interface OrganisationSecurityHook {
|
|
98
|
+
superAdminContext: SuperAdminContext;
|
|
99
|
+
validateOrganisationAccess: (orgId: string) => Promise<boolean>;
|
|
100
|
+
hasMinimumRole: (minRole: string, orgId?: string) => boolean;
|
|
101
|
+
canAccessChildOrganisations: (orgId?: string) => boolean;
|
|
102
|
+
hasPermission: (permission: string, orgId?: string) => Promise<boolean>;
|
|
103
|
+
getUserPermissions: (orgId?: string) => Promise<string[]>;
|
|
104
|
+
logOrganisationAccess: (action: string, details?: any) => Promise<void>;
|
|
105
|
+
ensureOrganisationAccess: (orgId: string) => Promise<void>;
|
|
106
|
+
validateUserAccess: (userId: string, orgId: string) => Promise<boolean>;
|
|
107
|
+
}
|
|
108
|
+
declare const useOrganisationSecurity: () => OrganisationSecurityHook;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @file useAppConfig Hook
|
|
112
|
+
* @package @jmruthers/pace-core
|
|
113
|
+
* @module Hooks/useAppConfig
|
|
114
|
+
* @since 0.4.0
|
|
115
|
+
*
|
|
116
|
+
* Hook for accessing app configuration like direct access support and event requirements.
|
|
117
|
+
* This is a convenience hook that extracts app config from the UnifiedAuthProvider.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```tsx
|
|
121
|
+
* function MyComponent() {
|
|
122
|
+
* const { supportsDirectAccess, requiresEvent, isLoading } = useAppConfig();
|
|
123
|
+
*
|
|
124
|
+
* if (isLoading) return <div>Loading...</div>;
|
|
125
|
+
*
|
|
126
|
+
* return (
|
|
127
|
+
* <div>
|
|
128
|
+
* {supportsDirectAccess && (
|
|
129
|
+
* <div>This app supports direct access!</div>
|
|
130
|
+
* )}
|
|
131
|
+
* {requiresEvent && (
|
|
132
|
+
* <EventSelector />
|
|
133
|
+
* )}
|
|
134
|
+
* </div>
|
|
135
|
+
* );
|
|
136
|
+
* }
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
interface UseAppConfigReturn {
|
|
140
|
+
supportsDirectAccess: boolean;
|
|
141
|
+
requiresEvent: boolean;
|
|
142
|
+
isLoading: boolean;
|
|
143
|
+
appName: string;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Hook to access app configuration
|
|
147
|
+
* Works in both authenticated and public contexts
|
|
148
|
+
* @returns App configuration and loading state
|
|
149
|
+
*/
|
|
150
|
+
declare function useAppConfig(): UseAppConfigReturn;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* @file Public Event Hook
|
|
154
|
+
* @package @jmruthers/pace-core
|
|
155
|
+
* @module Hooks/Public
|
|
156
|
+
* @since 1.0.0
|
|
157
|
+
*
|
|
158
|
+
* A React hook for accessing public event data without authentication.
|
|
159
|
+
* Provides event information by event_code for public pages.
|
|
160
|
+
*
|
|
161
|
+
* Features:
|
|
162
|
+
* - No authentication required
|
|
163
|
+
* - Caching for performance
|
|
164
|
+
* - Error handling and loading states
|
|
165
|
+
* - TypeScript support
|
|
166
|
+
* - Automatic refetch capabilities
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```tsx
|
|
170
|
+
* import { usePublicEvent } from '@jmruthers/pace-core';
|
|
171
|
+
*
|
|
172
|
+
* function PublicEventPage() {
|
|
173
|
+
* const { eventCode } = usePublicRouteParams();
|
|
174
|
+
* const { event, isLoading, error, refetch } = usePublicEvent(eventCode);
|
|
175
|
+
*
|
|
176
|
+
* if (isLoading) return <div>Loading event...</div>;
|
|
177
|
+
* if (error) return <div>Error: {error.message}</div>;
|
|
178
|
+
* if (!event) return <div>Event not found</div>;
|
|
179
|
+
*
|
|
180
|
+
* return (
|
|
181
|
+
* <div>
|
|
182
|
+
* <h1>{event.event_name}</h1>
|
|
183
|
+
* <p>Date: {event.event_date}</p>
|
|
184
|
+
* <p>Venue: {event.event_venue}</p>
|
|
185
|
+
* </div>
|
|
186
|
+
* );
|
|
187
|
+
* }
|
|
188
|
+
* ```
|
|
189
|
+
*
|
|
190
|
+
* @accessibility
|
|
191
|
+
* - No direct accessibility concerns (hook)
|
|
192
|
+
* - Enables accessible public event display
|
|
193
|
+
* - Supports screen reader friendly loading states
|
|
194
|
+
*
|
|
195
|
+
* @security
|
|
196
|
+
* - Only returns public-safe event data
|
|
197
|
+
* - Validates event_code before querying
|
|
198
|
+
* - No sensitive information exposed
|
|
199
|
+
* - Rate limiting applied at database level
|
|
200
|
+
*
|
|
201
|
+
* @performance
|
|
202
|
+
* - Built-in caching with TTL
|
|
203
|
+
* - Minimal re-renders with stable references
|
|
204
|
+
* - Lazy loading support
|
|
205
|
+
* - Error boundary integration
|
|
206
|
+
*
|
|
207
|
+
* @dependencies
|
|
208
|
+
* - React 18+ - Hooks and effects
|
|
209
|
+
* - @supabase/supabase-js - Database integration
|
|
210
|
+
* - Event types - Type definitions
|
|
211
|
+
*/
|
|
212
|
+
|
|
213
|
+
interface UsePublicEventReturn {
|
|
214
|
+
/** The event data, null if not loaded or not found */
|
|
215
|
+
event: Event | null;
|
|
216
|
+
/** Whether the data is currently loading */
|
|
217
|
+
isLoading: boolean;
|
|
218
|
+
/** Any error that occurred during loading */
|
|
219
|
+
error: Error | null;
|
|
220
|
+
/** Function to manually refetch the data */
|
|
221
|
+
refetch: () => Promise<void>;
|
|
222
|
+
}
|
|
223
|
+
interface UsePublicEventOptions {
|
|
224
|
+
/** Cache TTL in milliseconds (default: 5 minutes) */
|
|
225
|
+
cacheTtl?: number;
|
|
226
|
+
/** Whether to enable caching (default: true) */
|
|
227
|
+
enableCache?: boolean;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Hook for accessing public event data by event_code
|
|
231
|
+
*
|
|
232
|
+
* This hook provides access to public event information without requiring
|
|
233
|
+
* authentication. It includes caching, error handling, and loading states.
|
|
234
|
+
*
|
|
235
|
+
* @param eventCode - The event code to look up
|
|
236
|
+
* @param options - Configuration options for caching and behavior
|
|
237
|
+
* @returns Object containing event data, loading state, error, and refetch function
|
|
238
|
+
*/
|
|
239
|
+
declare function usePublicEvent(eventCode: string, options?: UsePublicEventOptions): UsePublicEventReturn;
|
|
240
|
+
/**
|
|
241
|
+
* Clear all cached public event data
|
|
242
|
+
* Useful for testing or when you need to force refresh all data
|
|
243
|
+
*/
|
|
244
|
+
declare function clearPublicEventCache(): void;
|
|
245
|
+
/**
|
|
246
|
+
* Get cache statistics for debugging
|
|
247
|
+
*/
|
|
248
|
+
declare function getPublicEventCacheStats(): {
|
|
249
|
+
size: number;
|
|
250
|
+
keys: string[];
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* @file Public Event Logo Hook
|
|
255
|
+
* @package @jmruthers/pace-core
|
|
256
|
+
* @module Hooks/Public
|
|
257
|
+
* @since 1.0.0
|
|
258
|
+
*
|
|
259
|
+
* A React hook for accessing public event logo URLs without authentication.
|
|
260
|
+
* Provides logo URLs with fallback handling for public pages.
|
|
261
|
+
*
|
|
262
|
+
* Features:
|
|
263
|
+
* - No authentication required
|
|
264
|
+
* - Automatic fallback to event initials
|
|
265
|
+
* - Caching for performance
|
|
266
|
+
* - Error handling and loading states
|
|
267
|
+
* - TypeScript support
|
|
268
|
+
* - Image validation
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```tsx
|
|
272
|
+
* import { usePublicEventLogo } from '@jmruthers/pace-core';
|
|
273
|
+
*
|
|
274
|
+
* function EventHeader() {
|
|
275
|
+
* const { logoUrl, fallbackText, isLoading, error } = usePublicEventLogo(
|
|
276
|
+
* eventId,
|
|
277
|
+
* eventName,
|
|
278
|
+
* organisationId
|
|
279
|
+
* );
|
|
280
|
+
*
|
|
281
|
+
* if (isLoading) return <div>Loading logo...</div>;
|
|
282
|
+
* if (error) return <div>Error: {error.message}</div>;
|
|
283
|
+
*
|
|
284
|
+
* return (
|
|
285
|
+
* <div>
|
|
286
|
+
* {logoUrl ? (
|
|
287
|
+
* <img src={logoUrl} alt={`${eventName} logo`} />
|
|
288
|
+
* ) : (
|
|
289
|
+
* <div className="logo-fallback">{fallbackText}</div>
|
|
290
|
+
* )}
|
|
291
|
+
* </div>
|
|
292
|
+
* );
|
|
293
|
+
* }
|
|
294
|
+
* ```
|
|
295
|
+
*
|
|
296
|
+
* @accessibility
|
|
297
|
+
* - No direct accessibility concerns (hook)
|
|
298
|
+
* - Enables accessible logo display with proper alt text
|
|
299
|
+
* - Supports screen reader friendly fallbacks
|
|
300
|
+
*
|
|
301
|
+
* @security
|
|
302
|
+
* - Only returns public-safe logo URLs
|
|
303
|
+
* - Validates image existence before returning URL
|
|
304
|
+
* - No sensitive information exposed
|
|
305
|
+
* - Rate limiting applied at storage level
|
|
306
|
+
*
|
|
307
|
+
* @performance
|
|
308
|
+
* - Built-in caching with TTL
|
|
309
|
+
* - Image validation and optimization
|
|
310
|
+
* - Minimal re-renders with stable references
|
|
311
|
+
* - Lazy loading support
|
|
312
|
+
*
|
|
313
|
+
* @dependencies
|
|
314
|
+
* - React 18+ - Hooks and effects
|
|
315
|
+
* - @supabase/supabase-js - Storage integration
|
|
316
|
+
* - Event types - Type definitions
|
|
317
|
+
*/
|
|
318
|
+
|
|
319
|
+
interface UsePublicEventLogoReturn {
|
|
320
|
+
/** The logo URL if available, null if not found or error */
|
|
321
|
+
logoUrl: string | null;
|
|
322
|
+
/** Fallback text (event initials) if no logo is available */
|
|
323
|
+
fallbackText: string;
|
|
324
|
+
/** Whether the logo is currently loading */
|
|
325
|
+
isLoading: boolean;
|
|
326
|
+
/** Any error that occurred during loading */
|
|
327
|
+
error: Error | null;
|
|
328
|
+
/** Function to manually refetch the logo */
|
|
329
|
+
refetch: () => Promise<void>;
|
|
330
|
+
}
|
|
331
|
+
interface UsePublicEventLogoOptions {
|
|
332
|
+
/** Cache TTL in milliseconds (default: 30 minutes) */
|
|
333
|
+
cacheTtl?: number;
|
|
334
|
+
/** Whether to enable caching (default: true) */
|
|
335
|
+
enableCache?: boolean;
|
|
336
|
+
/** Whether to validate image existence (default: true) */
|
|
337
|
+
validateImage?: boolean;
|
|
338
|
+
/** Custom fallback text generator */
|
|
339
|
+
generateFallbackText?: (eventName: string) => string;
|
|
340
|
+
/** Supabase client instance (required) */
|
|
341
|
+
supabase: SupabaseClient<Database>;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Hook for accessing public event logo URLs
|
|
345
|
+
*
|
|
346
|
+
* This hook provides access to event logo URLs without requiring
|
|
347
|
+
* authentication. It includes fallback handling and image validation.
|
|
348
|
+
*
|
|
349
|
+
* @param eventId - The event ID to fetch logo for
|
|
350
|
+
* @param eventName - The event name for fallback text generation
|
|
351
|
+
* @param organisationId - The organisation ID for storage path
|
|
352
|
+
* @param options - Configuration options for caching and behavior
|
|
353
|
+
* @returns Object containing logo URL, fallback text, loading state, error, and refetch function
|
|
354
|
+
*/
|
|
355
|
+
declare function usePublicEventLogo(eventId: string | undefined, eventName: string | undefined, organisationId: string | undefined, options: UsePublicEventLogoOptions): UsePublicEventLogoReturn;
|
|
356
|
+
/**
|
|
357
|
+
* Clear all cached public logo data
|
|
358
|
+
* Useful for testing or when you need to force refresh all data
|
|
359
|
+
*/
|
|
360
|
+
declare function clearPublicLogoCache(): void;
|
|
361
|
+
/**
|
|
362
|
+
* Get cache statistics for debugging
|
|
363
|
+
*/
|
|
364
|
+
declare function getPublicLogoCacheStats(): {
|
|
365
|
+
size: number;
|
|
366
|
+
keys: string[];
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* @file Public Route Params Hook
|
|
371
|
+
* @package @jmruthers/pace-core
|
|
372
|
+
* @module Hooks/Public
|
|
373
|
+
* @since 1.0.0
|
|
374
|
+
*
|
|
375
|
+
* A React hook for extracting and validating public route parameters.
|
|
376
|
+
* Provides event code extraction and validation for public pages.
|
|
377
|
+
*
|
|
378
|
+
* Features:
|
|
379
|
+
* - URL parameter extraction
|
|
380
|
+
* - Event code validation
|
|
381
|
+
* - TypeScript support
|
|
382
|
+
* - Error handling
|
|
383
|
+
* - Route pattern support
|
|
384
|
+
*
|
|
385
|
+
* @example
|
|
386
|
+
* ```tsx
|
|
387
|
+
* import { usePublicRouteParams } from '@jmruthers/pace-core';
|
|
388
|
+
*
|
|
389
|
+
* function PublicEventPage() {
|
|
390
|
+
* const { eventCode, eventId, event, error, isLoading } = usePublicRouteParams();
|
|
391
|
+
*
|
|
392
|
+
* if (isLoading) return <div>Loading...</div>;
|
|
393
|
+
* if (error) return <div>Error: {error.message}</div>;
|
|
394
|
+
* if (!event) return <div>Event not found</div>;
|
|
395
|
+
*
|
|
396
|
+
* return (
|
|
397
|
+
* <div>
|
|
398
|
+
* <h1>{event.event_name}</h1>
|
|
399
|
+
* <p>Event Code: {eventCode}</p>
|
|
400
|
+
* </div>
|
|
401
|
+
* );
|
|
402
|
+
* }
|
|
403
|
+
* ```
|
|
404
|
+
*
|
|
405
|
+
* @accessibility
|
|
406
|
+
* - No direct accessibility concerns (hook)
|
|
407
|
+
* - Enables accessible route parameter handling
|
|
408
|
+
* - Supports screen reader friendly error states
|
|
409
|
+
*
|
|
410
|
+
* @security
|
|
411
|
+
* - Validates event codes before processing
|
|
412
|
+
* - Sanitizes URL parameters
|
|
413
|
+
* - No sensitive information exposed
|
|
414
|
+
* - Rate limiting applied at route level
|
|
415
|
+
*
|
|
416
|
+
* @performance
|
|
417
|
+
* - Minimal re-renders with stable references
|
|
418
|
+
* - Efficient parameter extraction
|
|
419
|
+
* - Caching integration
|
|
420
|
+
*
|
|
421
|
+
* @dependencies
|
|
422
|
+
* - React 18+ - Hooks and effects
|
|
423
|
+
* - React Router - URL parameter extraction
|
|
424
|
+
* - Event types - Type definitions
|
|
425
|
+
*/
|
|
426
|
+
|
|
427
|
+
interface UsePublicRouteParamsReturn {
|
|
428
|
+
/** The event code from the URL */
|
|
429
|
+
eventCode: string | null;
|
|
430
|
+
/** The event ID (resolved from event code) */
|
|
431
|
+
eventId: string | null;
|
|
432
|
+
/** The full event object */
|
|
433
|
+
event: Event | null;
|
|
434
|
+
/** Whether the route parameters are being processed */
|
|
435
|
+
isLoading: boolean;
|
|
436
|
+
/** Any error that occurred during processing */
|
|
437
|
+
error: Error | null;
|
|
438
|
+
/** Function to manually refetch the event data */
|
|
439
|
+
refetch: () => Promise<void>;
|
|
440
|
+
}
|
|
441
|
+
interface UsePublicRouteParamsOptions {
|
|
442
|
+
/** Whether to automatically fetch event data (default: true) */
|
|
443
|
+
fetchEventData?: boolean;
|
|
444
|
+
/** Custom event code parameter name (default: 'eventCode') */
|
|
445
|
+
eventCodeParam?: string;
|
|
446
|
+
/** Whether to validate event code format (default: true) */
|
|
447
|
+
validateEventCode?: boolean;
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Hook for extracting and validating public route parameters
|
|
451
|
+
*
|
|
452
|
+
* This hook extracts event codes from URL parameters and optionally
|
|
453
|
+
* fetches the corresponding event data. It provides validation and
|
|
454
|
+
* error handling for public routes.
|
|
455
|
+
*
|
|
456
|
+
* @param options - Configuration options for behavior
|
|
457
|
+
* @returns Object containing route parameters, event data, loading state, error, and refetch function
|
|
458
|
+
*/
|
|
459
|
+
declare function usePublicRouteParams(options?: UsePublicRouteParamsOptions): UsePublicRouteParamsReturn;
|
|
460
|
+
/**
|
|
461
|
+
* Hook for extracting just the event code without fetching event data
|
|
462
|
+
* Useful when you only need the event code and will fetch data separately
|
|
463
|
+
*/
|
|
464
|
+
declare function usePublicEventCode(eventCodeParam?: string): {
|
|
465
|
+
eventCode: string | null;
|
|
466
|
+
error: Error | null;
|
|
467
|
+
};
|
|
468
|
+
/**
|
|
469
|
+
* Utility function to generate public route paths
|
|
470
|
+
*/
|
|
471
|
+
declare function generatePublicRoutePath(eventCode: string, pageName?: string): string;
|
|
472
|
+
/**
|
|
473
|
+
* Utility function to extract event code from a public route path
|
|
474
|
+
*/
|
|
475
|
+
declare function extractEventCodeFromPath(path: string): string | null;
|
|
476
|
+
|
|
477
|
+
export { type OrganisationSecurityHook as O, type UsePublicEventReturn as U, useOrganisationSecurity as a, useAppConfig as b, usePublicEvent as c, clearPublicEventCache as d, usePublicEventLogo as e, clearPublicLogoCache as f, getPublicEventCacheStats as g, getPublicLogoCacheStats as h, usePublicRouteParams as i, usePublicEventCode as j, generatePublicRoutePath as k, extractEventCodeFromPath as l, type UsePublicEventOptions as m, type UsePublicEventLogoReturn as n, type UsePublicEventLogoOptions as o, type UsePublicRouteParamsReturn as p, type UseOrganisationPermissionsReturn as q, type UseAppConfigReturn as r, useOrganisationPermissions as u };
|