@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,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example app.css file for consuming applications
|
|
3
|
+
*
|
|
4
|
+
* This file demonstrates how to define your app's specific color palette
|
|
5
|
+
* using the new pace-core styling system.
|
|
6
|
+
*
|
|
7
|
+
* Copy this file to your app as app.css and update the color values
|
|
8
|
+
* to match your brand.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
@theme static {
|
|
12
|
+
/* MAIN palette - your primary brand color */
|
|
13
|
+
--color-main-raw: oklch(0.7 0.057 252.02);
|
|
14
|
+
--color-main-50: oklch(0.98 0.001 252.02);
|
|
15
|
+
--color-main-100: oklch(0.96 0.005 252.02);
|
|
16
|
+
--color-main-200: oklch(0.927 0.012 252.02);
|
|
17
|
+
--color-main-300: oklch(0.881 0.021 252.02);
|
|
18
|
+
--color-main-400: oklch(0.822 0.032 252.02);
|
|
19
|
+
--color-main-500: oklch(0.75 0.047 252.02);
|
|
20
|
+
--color-main-600: oklch(0.7 0.057 252.02);
|
|
21
|
+
--color-main-700: oklch(0.567 0.044 252.02);
|
|
22
|
+
--color-main-800: oklch(0.456 0.034 252.02);
|
|
23
|
+
--color-main-900: oklch(0.332 0.024 252.02);
|
|
24
|
+
--color-main-950: oklch(0.195 0.014 252.02);
|
|
25
|
+
|
|
26
|
+
/* SEC palette - your secondary brand color */
|
|
27
|
+
--color-sec-raw: oklch(0.58 0.23 280.75);
|
|
28
|
+
--color-sec-50: oklch(0.98 0.003 280.75);
|
|
29
|
+
--color-sec-100: oklch(0.96 0.014 280.75);
|
|
30
|
+
--color-sec-200: oklch(0.927 0.033 280.75);
|
|
31
|
+
--color-sec-300: oklch(0.881 0.059 280.75);
|
|
32
|
+
--color-sec-400: oklch(0.822 0.093 280.75);
|
|
33
|
+
--color-sec-500: oklch(0.75 0.133 280.75);
|
|
34
|
+
--color-sec-600: oklch(0.665 0.182 280.75);
|
|
35
|
+
--color-sec-700: oklch(0.58 0.23 280.75);
|
|
36
|
+
--color-sec-800: oklch(0.456 0.158 280.75);
|
|
37
|
+
--color-sec-900: oklch(0.332 0.099 280.75);
|
|
38
|
+
--color-sec-950: oklch(0.195 0.047 280.75);
|
|
39
|
+
|
|
40
|
+
/* ACC palette - your accent brand color */
|
|
41
|
+
--color-acc-raw: oklch(0.64 0.21 37.76);
|
|
42
|
+
--color-acc-50: oklch(0.98 0.003 37.76);
|
|
43
|
+
--color-acc-100: oklch(0.96 0.015 37.76);
|
|
44
|
+
--color-acc-200: oklch(0.927 0.035 37.76);
|
|
45
|
+
--color-acc-300: oklch(0.881 0.063 37.76);
|
|
46
|
+
--color-acc-400: oklch(0.822 0.099 37.76);
|
|
47
|
+
--color-acc-500: oklch(0.75 0.143 37.76);
|
|
48
|
+
--color-acc-600: oklch(0.64 0.21 37.76);
|
|
49
|
+
--color-acc-700: oklch(0.567 0.177 37.76);
|
|
50
|
+
--color-acc-800: oklch(0.456 0.13 37.76);
|
|
51
|
+
--color-acc-900: oklch(0.332 0.085 37.76);
|
|
52
|
+
--color-acc-950: oklch(0.195 0.044 37.76);
|
|
53
|
+
}
|
|
@@ -0,0 +1,577 @@
|
|
|
1
|
+
# PACE Core Architecture
|
|
2
|
+
|
|
3
|
+
This document provides a comprehensive overview of the PACE Core architecture, including system design, component relationships, and architectural decisions. This is the single source of truth for PACE Core's architectural documentation.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
PACE Core is a comprehensive React component library and utilities package designed for PACE applications. It provides a complete solution for building modern, accessible, and secure applications with built-in authentication, RBAC, and event management.
|
|
8
|
+
|
|
9
|
+
## Core Principles
|
|
10
|
+
|
|
11
|
+
### 1. **Consistency First**
|
|
12
|
+
- All components follow the same design patterns
|
|
13
|
+
- Consistent API design across all components
|
|
14
|
+
- Unified styling system using design tokens
|
|
15
|
+
|
|
16
|
+
### 2. **Type Safety**
|
|
17
|
+
- Full TypeScript support with strict typing
|
|
18
|
+
- Comprehensive type definitions for all APIs
|
|
19
|
+
- IntelliSense support for better developer experience
|
|
20
|
+
|
|
21
|
+
### 3. **Accessibility**
|
|
22
|
+
- WCAG 2.1 AA compliance where possible
|
|
23
|
+
- Keyboard navigation support
|
|
24
|
+
- Screen reader compatibility
|
|
25
|
+
- Focus management
|
|
26
|
+
|
|
27
|
+
### 4. **Performance**
|
|
28
|
+
- Optimized bundle sizes
|
|
29
|
+
- Tree-shaking support
|
|
30
|
+
- Lazy loading where appropriate
|
|
31
|
+
- Memoization for expensive operations
|
|
32
|
+
|
|
33
|
+
### 5. **Flexibility**
|
|
34
|
+
- Customizable styling through design tokens
|
|
35
|
+
- Extensible component APIs
|
|
36
|
+
- Multiple import strategies
|
|
37
|
+
- Configurable behavior
|
|
38
|
+
|
|
39
|
+
## System Architecture
|
|
40
|
+
|
|
41
|
+
### High-Level Architecture
|
|
42
|
+
|
|
43
|
+
```mermaid
|
|
44
|
+
graph TB
|
|
45
|
+
A[Your Application] --> B[PACE Core]
|
|
46
|
+
B --> C[Authentication Layer]
|
|
47
|
+
B --> D[RBAC System]
|
|
48
|
+
B --> E[UI Components]
|
|
49
|
+
B --> F[Utilities]
|
|
50
|
+
|
|
51
|
+
C --> G[Supabase Auth]
|
|
52
|
+
C --> H[UnifiedAuthProvider]
|
|
53
|
+
|
|
54
|
+
D --> I[Permission Engine]
|
|
55
|
+
D --> J[Role Management]
|
|
56
|
+
D --> K[Audit System]
|
|
57
|
+
|
|
58
|
+
E --> L[Form Components]
|
|
59
|
+
E --> M[Data Components]
|
|
60
|
+
E --> N[Layout Components]
|
|
61
|
+
E --> O[Navigation Components]
|
|
62
|
+
|
|
63
|
+
F --> P[Theme System]
|
|
64
|
+
F --> Q[Validation]
|
|
65
|
+
F --> R[API Helpers]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Component Architecture
|
|
69
|
+
|
|
70
|
+
```mermaid
|
|
71
|
+
graph TD
|
|
72
|
+
A[PACE Core] --> B[Providers]
|
|
73
|
+
A --> C[Components]
|
|
74
|
+
A --> D[Hooks]
|
|
75
|
+
A --> E[Utilities]
|
|
76
|
+
A --> F[Types]
|
|
77
|
+
|
|
78
|
+
B --> B1[UnifiedAuthProvider]
|
|
79
|
+
B --> B2[EventProvider]
|
|
80
|
+
B --> B3[OrganisationProvider]
|
|
81
|
+
|
|
82
|
+
C --> C1[UI Components]
|
|
83
|
+
C --> C2[Form Components]
|
|
84
|
+
C --> C3[Data Components]
|
|
85
|
+
C --> C4[Layout Components]
|
|
86
|
+
C --> C5[RBAC Components]
|
|
87
|
+
|
|
88
|
+
D --> D1[useUnifiedAuth]
|
|
89
|
+
D --> D2[useEvents]
|
|
90
|
+
D --> D3[useOrganisations]
|
|
91
|
+
D --> D4[useRBAC]
|
|
92
|
+
D --> D5[useCan]
|
|
93
|
+
|
|
94
|
+
E --> E1[Validation]
|
|
95
|
+
E --> E2[API Helpers]
|
|
96
|
+
E --> E3[Theme Utilities]
|
|
97
|
+
E --> E4[RBAC Utilities]
|
|
98
|
+
|
|
99
|
+
F --> F1[Auth Types]
|
|
100
|
+
F --> F2[RBAC Types]
|
|
101
|
+
F --> F3[Component Types]
|
|
102
|
+
F --> F4[API Types]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Component Structure
|
|
106
|
+
|
|
107
|
+
Each component follows a consistent structure:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
ComponentName/
|
|
111
|
+
├── ComponentName.tsx # Main component
|
|
112
|
+
├── ComponentName.test.tsx # Unit tests
|
|
113
|
+
├── ComponentName.stories.tsx # Storybook stories
|
|
114
|
+
├── components/ # Sub-components
|
|
115
|
+
├── hooks/ # Component-specific hooks
|
|
116
|
+
├── types.ts # Component types
|
|
117
|
+
└── index.ts # Exports
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Component Design Patterns
|
|
121
|
+
|
|
122
|
+
1. **Compound Components**: Components that work together (e.g., DataTable + DataTableHeader + DataTableBody)
|
|
123
|
+
2. **Render Props**: Flexible rendering patterns for complex components
|
|
124
|
+
3. **Controlled/Uncontrolled**: Support for both controlled and uncontrolled usage
|
|
125
|
+
4. **Composition**: Components that can be composed together
|
|
126
|
+
|
|
127
|
+
## Core Modules
|
|
128
|
+
|
|
129
|
+
### 1. Authentication Module
|
|
130
|
+
|
|
131
|
+
The authentication module provides a unified interface for user authentication across different providers.
|
|
132
|
+
|
|
133
|
+
**Key Components:**
|
|
134
|
+
- `UnifiedAuthProvider` - Context provider for authentication state
|
|
135
|
+
- `useUnifiedAuth` - Hook for accessing authentication state
|
|
136
|
+
- `PaceLoginPage` - Pre-built login page component
|
|
137
|
+
- `LoginForm` - Login form component
|
|
138
|
+
|
|
139
|
+
**Architecture:**
|
|
140
|
+
```mermaid
|
|
141
|
+
graph TD
|
|
142
|
+
A[UnifiedAuthProvider] --> B[Supabase Client]
|
|
143
|
+
A --> C[Auth State Management]
|
|
144
|
+
A --> D[Session Management]
|
|
145
|
+
|
|
146
|
+
C --> E[User State]
|
|
147
|
+
C --> F[Loading State]
|
|
148
|
+
C --> G[Error State]
|
|
149
|
+
|
|
150
|
+
D --> H[Login/Logout]
|
|
151
|
+
D --> I[Session Refresh]
|
|
152
|
+
D --> J[Token Management]
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 2. RBAC System
|
|
156
|
+
|
|
157
|
+
The Role-Based Access Control system provides comprehensive permission management and enforcement.
|
|
158
|
+
|
|
159
|
+
**Key Components:**
|
|
160
|
+
- `RBACEngine` - Core permission checking logic
|
|
161
|
+
- `useCan` - Hook for permission checking
|
|
162
|
+
- `PermissionEnforcer` - Component for permission-based rendering
|
|
163
|
+
- `PagePermissionGuard` - Component for page-level protection
|
|
164
|
+
|
|
165
|
+
**Architecture:**
|
|
166
|
+
```mermaid
|
|
167
|
+
graph TD
|
|
168
|
+
A[RBAC System] --> B[Permission Engine]
|
|
169
|
+
A --> C[Role Management]
|
|
170
|
+
A --> D[Audit System]
|
|
171
|
+
A --> E[Cache System]
|
|
172
|
+
|
|
173
|
+
B --> F[Permission Checking]
|
|
174
|
+
B --> G[Access Level Calculation]
|
|
175
|
+
B --> H[Scope Resolution]
|
|
176
|
+
|
|
177
|
+
C --> I[Global Roles]
|
|
178
|
+
C --> J[Organisation Roles]
|
|
179
|
+
C --> K[Event App Roles]
|
|
180
|
+
|
|
181
|
+
D --> L[Audit Logging]
|
|
182
|
+
D --> M[Event Tracking]
|
|
183
|
+
D --> N[Compliance Reporting]
|
|
184
|
+
|
|
185
|
+
E --> O[Permission Cache]
|
|
186
|
+
E --> P[Role Cache]
|
|
187
|
+
E --> Q[Session Cache]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 3. UI Components
|
|
191
|
+
|
|
192
|
+
The UI component system provides a comprehensive set of accessible, customizable components.
|
|
193
|
+
|
|
194
|
+
**Key Components:**
|
|
195
|
+
- `Button` - Button component with variants
|
|
196
|
+
- `DataTable` - Advanced data table with features
|
|
197
|
+
- `Form` - Form components with validation
|
|
198
|
+
- `Dialog` - Dialog components (replaces Modal)
|
|
199
|
+
- `Select` - Dropdown select components
|
|
200
|
+
|
|
201
|
+
**Architecture:**
|
|
202
|
+
```mermaid
|
|
203
|
+
graph TD
|
|
204
|
+
A[UI Components] --> B[Base Components]
|
|
205
|
+
A --> C[Composite Components]
|
|
206
|
+
A --> D[Layout Components]
|
|
207
|
+
A --> E[Form Components]
|
|
208
|
+
|
|
209
|
+
B --> F[Button]
|
|
210
|
+
B --> G[Input]
|
|
211
|
+
B --> H[Card]
|
|
212
|
+
B --> I[Alert]
|
|
213
|
+
|
|
214
|
+
C --> J[DataTable]
|
|
215
|
+
C --> K[Dialog]
|
|
216
|
+
C --> L[Select]
|
|
217
|
+
C --> M[Toast]
|
|
218
|
+
|
|
219
|
+
D --> N[PaceAppLayout]
|
|
220
|
+
D --> O[Header]
|
|
221
|
+
D --> P[Footer]
|
|
222
|
+
D --> Q[NavigationMenu]
|
|
223
|
+
|
|
224
|
+
E --> R[Form]
|
|
225
|
+
E --> S[FormField]
|
|
226
|
+
E --> T[FormErrorSummary]
|
|
227
|
+
E --> U[FormLiveRegion]
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Styling Architecture
|
|
231
|
+
|
|
232
|
+
PACE Core uses a **design token system** for consistent styling across all consuming applications. The styling system is designed to avoid conflicts with existing applications while providing a unified design language.
|
|
233
|
+
|
|
234
|
+
For detailed styling information, see [PACE Core Styling Guide](../styles/README.md).
|
|
235
|
+
|
|
236
|
+
### 4. Event Management
|
|
237
|
+
|
|
238
|
+
The event management system provides context-aware functionality for event-based applications.
|
|
239
|
+
|
|
240
|
+
**Key Components:**
|
|
241
|
+
- `EventProvider` - Context provider for event state
|
|
242
|
+
- `useEvents` - Hook for accessing event data
|
|
243
|
+
- `EventSelector` - Component for event selection
|
|
244
|
+
- `EventPermissionEnforcer` - Event-specific permission enforcement
|
|
245
|
+
|
|
246
|
+
**Architecture:**
|
|
247
|
+
```mermaid
|
|
248
|
+
graph TD
|
|
249
|
+
A[Event Management] --> B[Event Provider]
|
|
250
|
+
A --> C[Event Selection]
|
|
251
|
+
A --> D[Event Permissions]
|
|
252
|
+
A --> E[Event Context]
|
|
253
|
+
|
|
254
|
+
B --> F[Event State]
|
|
255
|
+
B --> G[Event Loading]
|
|
256
|
+
B --> H[Event Error Handling]
|
|
257
|
+
|
|
258
|
+
C --> I[Event List]
|
|
259
|
+
C --> J[Event Filtering]
|
|
260
|
+
C --> K[Event Search]
|
|
261
|
+
|
|
262
|
+
D --> L[Event Access Control]
|
|
263
|
+
D --> M[Event Role Management]
|
|
264
|
+
D --> N[Event Permission Checking]
|
|
265
|
+
|
|
266
|
+
E --> O[Current Event]
|
|
267
|
+
E --> P[Event Metadata]
|
|
268
|
+
E --> Q[Event Configuration]
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### 5. Organisation Management
|
|
272
|
+
|
|
273
|
+
The organisation management system provides multi-tenant support for organisation-based applications.
|
|
274
|
+
|
|
275
|
+
**Key Components:**
|
|
276
|
+
- `OrganisationProvider` - Context provider for organisation state
|
|
277
|
+
- `useOrganisations` - Hook for accessing organisation data
|
|
278
|
+
- `OrganisationSelector` - Component for organisation selection
|
|
279
|
+
- `OrganisationPermissionEnforcer` - Organisation-specific permission enforcement
|
|
280
|
+
|
|
281
|
+
**Architecture:**
|
|
282
|
+
```mermaid
|
|
283
|
+
graph TD
|
|
284
|
+
A[Organisation Management] --> B[Organisation Provider]
|
|
285
|
+
A --> C[Organisation Selection]
|
|
286
|
+
A --> D[Organisation Permissions]
|
|
287
|
+
A --> E[Organisation Context]
|
|
288
|
+
|
|
289
|
+
B --> F[Organisation State]
|
|
290
|
+
B --> G[Organisation Loading]
|
|
291
|
+
B --> H[Organisation Error Handling]
|
|
292
|
+
|
|
293
|
+
C --> I[Organisation List]
|
|
294
|
+
C --> J[Organisation Filtering]
|
|
295
|
+
C --> K[Organisation Search]
|
|
296
|
+
|
|
297
|
+
D --> L[Organisation Access Control]
|
|
298
|
+
D --> M[Organisation Role Management]
|
|
299
|
+
D --> N[Organisation Permission Checking]
|
|
300
|
+
|
|
301
|
+
E --> O[Current Organisation]
|
|
302
|
+
E --> P[Organisation Metadata]
|
|
303
|
+
E --> Q[Organisation Configuration]
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
## Data Flow
|
|
307
|
+
|
|
308
|
+
### 1. Authentication Flow
|
|
309
|
+
|
|
310
|
+
```mermaid
|
|
311
|
+
sequenceDiagram
|
|
312
|
+
participant U as User
|
|
313
|
+
participant A as App
|
|
314
|
+
participant P as PACE Core
|
|
315
|
+
participant S as Supabase
|
|
316
|
+
|
|
317
|
+
U->>A: Login Request
|
|
318
|
+
A->>P: useUnifiedAuth.login()
|
|
319
|
+
P->>S: signInWithPassword()
|
|
320
|
+
S-->>P: Auth Response
|
|
321
|
+
P-->>A: User State
|
|
322
|
+
A-->>U: Login Success
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### 2. Permission Check Flow
|
|
326
|
+
|
|
327
|
+
```mermaid
|
|
328
|
+
sequenceDiagram
|
|
329
|
+
participant C as Component
|
|
330
|
+
participant H as useCan Hook
|
|
331
|
+
participant E as RBAC Engine
|
|
332
|
+
participant D as Database
|
|
333
|
+
participant A as Audit System
|
|
334
|
+
|
|
335
|
+
C->>H: hasPermission(operation, resource)
|
|
336
|
+
H->>E: Check Permission
|
|
337
|
+
E->>D: Query User Roles
|
|
338
|
+
D-->>E: Role Data
|
|
339
|
+
E->>E: Calculate Permission
|
|
340
|
+
E->>A: Log Permission Check
|
|
341
|
+
E-->>H: Permission Result
|
|
342
|
+
H-->>C: Boolean Result
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### 3. Event Selection Flow
|
|
346
|
+
|
|
347
|
+
```mermaid
|
|
348
|
+
sequenceDiagram
|
|
349
|
+
participant U as User
|
|
350
|
+
participant C as Component
|
|
351
|
+
participant E as EventProvider
|
|
352
|
+
participant D as Database
|
|
353
|
+
participant R as RBAC
|
|
354
|
+
|
|
355
|
+
U->>C: Select Event
|
|
356
|
+
C->>E: setSelectedEvent()
|
|
357
|
+
E->>R: Check Event Access
|
|
358
|
+
R-->>E: Access Granted
|
|
359
|
+
E->>D: Load Event Data
|
|
360
|
+
D-->>E: Event Data
|
|
361
|
+
E-->>C: Event State Updated
|
|
362
|
+
C-->>U: UI Updated
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
## Security Architecture
|
|
366
|
+
|
|
367
|
+
### 1. Authentication Security
|
|
368
|
+
|
|
369
|
+
- **JWT Token Management**: Secure token storage and refresh
|
|
370
|
+
- **Session Management**: Automatic session validation and renewal
|
|
371
|
+
- **Password Security**: Integration with Supabase's secure password handling
|
|
372
|
+
- **Multi-Factor Authentication**: Support for MFA through Supabase
|
|
373
|
+
|
|
374
|
+
### 2. RBAC Security
|
|
375
|
+
|
|
376
|
+
- **Permission Granularity**: Fine-grained permission system
|
|
377
|
+
- **Role Hierarchy**: Hierarchical role structure
|
|
378
|
+
- **Context Isolation**: Organisation and event context isolation
|
|
379
|
+
- **Audit Logging**: Comprehensive audit trail for all permission checks
|
|
380
|
+
|
|
381
|
+
### 3. Data Security
|
|
382
|
+
|
|
383
|
+
- **Row Level Security**: Database-level security policies
|
|
384
|
+
- **API Security**: Secure API endpoints with proper authentication
|
|
385
|
+
- **Input Validation**: Comprehensive input validation and sanitization
|
|
386
|
+
- **XSS Protection**: Built-in XSS protection in components
|
|
387
|
+
|
|
388
|
+
## Performance Architecture
|
|
389
|
+
|
|
390
|
+
### 1. Caching Strategy
|
|
391
|
+
|
|
392
|
+
- **Permission Cache**: In-memory cache for permission checks
|
|
393
|
+
- **Role Cache**: Cached role information for performance
|
|
394
|
+
- **Session Cache**: Cached session data to reduce API calls
|
|
395
|
+
- **Component Cache**: Memoized components for better performance
|
|
396
|
+
|
|
397
|
+
### 2. Lazy Loading
|
|
398
|
+
|
|
399
|
+
- **Component Lazy Loading**: Lazy load components when needed
|
|
400
|
+
- **Route Lazy Loading**: Lazy load routes for better initial load time
|
|
401
|
+
- **Data Lazy Loading**: Lazy load data based on user interaction
|
|
402
|
+
|
|
403
|
+
### 3. Optimization
|
|
404
|
+
|
|
405
|
+
- **Bundle Splitting**: Optimized bundle splitting for better loading
|
|
406
|
+
- **Tree Shaking**: Dead code elimination for smaller bundles
|
|
407
|
+
- **Code Splitting**: Dynamic imports for better performance
|
|
408
|
+
|
|
409
|
+
## Scalability Architecture
|
|
410
|
+
|
|
411
|
+
### 1. Horizontal Scaling
|
|
412
|
+
|
|
413
|
+
- **Stateless Components**: Components designed for horizontal scaling
|
|
414
|
+
- **Database Scaling**: Support for database read replicas
|
|
415
|
+
- **CDN Integration**: Static asset delivery through CDN
|
|
416
|
+
|
|
417
|
+
### 2. Vertical Scaling
|
|
418
|
+
|
|
419
|
+
- **Memory Optimization**: Efficient memory usage patterns
|
|
420
|
+
- **CPU Optimization**: Optimized algorithms and data structures
|
|
421
|
+
- **I/O Optimization**: Efficient database queries and API calls
|
|
422
|
+
|
|
423
|
+
### 3. Multi-Tenancy
|
|
424
|
+
|
|
425
|
+
- **Organisation Isolation**: Complete data isolation between organisations
|
|
426
|
+
- **Event Isolation**: Event-specific data isolation
|
|
427
|
+
- **Resource Sharing**: Efficient resource sharing across tenants
|
|
428
|
+
|
|
429
|
+
## Monitoring and Observability
|
|
430
|
+
|
|
431
|
+
### 1. Logging
|
|
432
|
+
|
|
433
|
+
- **Structured Logging**: JSON-structured logs for better parsing
|
|
434
|
+
- **Log Levels**: Configurable log levels for different environments
|
|
435
|
+
- **Log Aggregation**: Centralized log collection and analysis
|
|
436
|
+
|
|
437
|
+
### 2. Metrics
|
|
438
|
+
|
|
439
|
+
- **Performance Metrics**: Component render times and performance
|
|
440
|
+
- **Business Metrics**: User actions and business logic metrics
|
|
441
|
+
- **System Metrics**: System health and resource usage
|
|
442
|
+
|
|
443
|
+
### 3. Tracing
|
|
444
|
+
|
|
445
|
+
- **Request Tracing**: End-to-end request tracing
|
|
446
|
+
- **Component Tracing**: Component lifecycle tracing
|
|
447
|
+
- **Permission Tracing**: RBAC permission check tracing
|
|
448
|
+
|
|
449
|
+
## Build System
|
|
450
|
+
|
|
451
|
+
### Package Structure
|
|
452
|
+
|
|
453
|
+
PACE Core is built as a single package with multiple entry points:
|
|
454
|
+
|
|
455
|
+
```json
|
|
456
|
+
{
|
|
457
|
+
"exports": {
|
|
458
|
+
".": "./dist/index.js",
|
|
459
|
+
"./components": "./dist/components.js",
|
|
460
|
+
"./rbac": "./dist/rbac/index.js",
|
|
461
|
+
"./validation": "./dist/validation.js",
|
|
462
|
+
"./hooks": "./dist/hooks.js",
|
|
463
|
+
"./styles": "./dist/styles/@jmruthers/pace-core.css",
|
|
464
|
+
"./styles/tokens": "./dist/styles/design-tokens.css",
|
|
465
|
+
"./styles/components": "./dist/styles/components.css"
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### Build Process
|
|
471
|
+
|
|
472
|
+
1. **TypeScript Compilation**: Compile TypeScript to JavaScript
|
|
473
|
+
2. **CSS Processing**: Process CSS files with PostCSS and Tailwind
|
|
474
|
+
3. **Bundle Optimization**: Optimize bundles for production
|
|
475
|
+
4. **Type Generation**: Generate TypeScript declaration files
|
|
476
|
+
|
|
477
|
+
### Tools Used
|
|
478
|
+
|
|
479
|
+
- **tsup**: TypeScript bundler for fast builds
|
|
480
|
+
- **PostCSS**: CSS processing and optimization
|
|
481
|
+
- **Tailwind CSS**: Utility-first CSS framework
|
|
482
|
+
- **TypeScript**: Type safety and compilation
|
|
483
|
+
|
|
484
|
+
### Import Strategies
|
|
485
|
+
|
|
486
|
+
PACE Core supports tree shaking for optimal bundle sizes and provides multiple import strategies for different use cases. For detailed information about importing components, styles, and utilities, see the [PACE Core Styling Guide](../styles/README.md).
|
|
487
|
+
|
|
488
|
+
## Development Architecture
|
|
489
|
+
|
|
490
|
+
### 1. Build System
|
|
491
|
+
|
|
492
|
+
- **TypeScript**: Full TypeScript support with strict typing
|
|
493
|
+
- **ESBuild**: Fast build system for development and production
|
|
494
|
+
- **Tree Shaking**: Automatic dead code elimination
|
|
495
|
+
- **Source Maps**: Full source map support for debugging
|
|
496
|
+
|
|
497
|
+
### 2. Testing
|
|
498
|
+
|
|
499
|
+
- **Unit Testing**: Comprehensive unit test coverage
|
|
500
|
+
- **Integration Testing**: Component integration testing
|
|
501
|
+
- **E2E Testing**: End-to-end testing support
|
|
502
|
+
- **Visual Testing**: Visual regression testing
|
|
503
|
+
|
|
504
|
+
### Development Workflow
|
|
505
|
+
|
|
506
|
+
#### Local Development
|
|
507
|
+
|
|
508
|
+
1. **Install Dependencies**: `npm install`
|
|
509
|
+
2. **Start Development Server**: `npm run dev`
|
|
510
|
+
3. **Run Tests**: `npm run test`
|
|
511
|
+
4. **Build Package**: `npm run build`
|
|
512
|
+
|
|
513
|
+
#### Testing Strategy
|
|
514
|
+
|
|
515
|
+
- **Unit Tests**: Jest for component testing
|
|
516
|
+
- **Integration Tests**: Testing component interactions
|
|
517
|
+
- **Visual Tests**: Storybook for visual regression testing
|
|
518
|
+
- **E2E Tests**: Playwright for end-to-end testing
|
|
519
|
+
|
|
520
|
+
#### Code Quality
|
|
521
|
+
|
|
522
|
+
- **ESLint**: Code linting and style enforcement
|
|
523
|
+
- **Prettier**: Code formatting
|
|
524
|
+
- **TypeScript**: Type checking
|
|
525
|
+
- **Husky**: Git hooks for quality checks
|
|
526
|
+
|
|
527
|
+
### 3. Documentation
|
|
528
|
+
|
|
529
|
+
- **API Documentation**: Comprehensive API documentation
|
|
530
|
+
- **Component Documentation**: Detailed component usage guides
|
|
531
|
+
- **Architecture Documentation**: System architecture documentation
|
|
532
|
+
- **Examples**: Practical usage examples and patterns
|
|
533
|
+
|
|
534
|
+
## Deployment Architecture
|
|
535
|
+
|
|
536
|
+
### 1. Build Process
|
|
537
|
+
|
|
538
|
+
- **Multi-Environment**: Support for multiple deployment environments
|
|
539
|
+
- **Environment Variables**: Secure environment variable management
|
|
540
|
+
- **Build Optimization**: Optimized builds for production
|
|
541
|
+
|
|
542
|
+
### 2. Package Distribution
|
|
543
|
+
|
|
544
|
+
- **NPM Package**: Published as NPM package for easy installation
|
|
545
|
+
- **Version Management**: Semantic versioning for package updates
|
|
546
|
+
- **Dependency Management**: Careful dependency management for stability
|
|
547
|
+
|
|
548
|
+
### 3. Integration
|
|
549
|
+
|
|
550
|
+
- **Framework Agnostic**: Works with any React-based framework
|
|
551
|
+
- **SSR Support**: Server-side rendering support
|
|
552
|
+
- **Static Generation**: Static site generation support
|
|
553
|
+
|
|
554
|
+
## Future Architecture
|
|
555
|
+
|
|
556
|
+
### 1. Planned Features
|
|
557
|
+
|
|
558
|
+
- **Micro-Frontend Support**: Support for micro-frontend architecture
|
|
559
|
+
- **Plugin System**: Extensible plugin system for custom functionality
|
|
560
|
+
- **Advanced Caching**: More sophisticated caching strategies
|
|
561
|
+
- **Real-time Updates**: WebSocket support for real-time updates
|
|
562
|
+
|
|
563
|
+
### 2. Scalability Improvements
|
|
564
|
+
|
|
565
|
+
- **Edge Computing**: Edge computing support for better performance
|
|
566
|
+
- **Progressive Web App**: PWA support for better mobile experience
|
|
567
|
+
- **Offline Support**: Offline functionality for better user experience
|
|
568
|
+
- **Advanced Analytics**: More detailed analytics and monitoring
|
|
569
|
+
|
|
570
|
+
### 3. Developer Experience
|
|
571
|
+
|
|
572
|
+
- **CLI Tools**: Command-line tools for better developer experience
|
|
573
|
+
- **Code Generation**: Code generation tools for common patterns
|
|
574
|
+
- **Advanced Debugging**: Better debugging tools and utilities
|
|
575
|
+
- **Performance Profiling**: Built-in performance profiling tools
|
|
576
|
+
|
|
577
|
+
This architecture provides a solid foundation for building scalable, secure, and maintainable applications with PACE Core. The modular design allows for easy extension and customization while maintaining consistency and reliability.
|