@jmruthers/pace-core 0.2.7 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -26
- package/README.md +229 -231
- package/dist/{DataTable-EEUDXPE5.js → DataTable-2LB6HI6V.js} +17 -10
- package/dist/{DataTable-C1AEm9Cx.d.ts → DataTable-BDBqkU-i.d.ts} +51 -23
- package/dist/{PublicLoadingSpinner-DztrzuJr.d.ts → Table-CIm9IWqk.d.ts} +122 -635
- package/dist/UnifiedAuthProvider-V7y63NjT.d.ts +88 -0
- package/dist/{api-ETQ6YJ3C.js → api-AIJ3IJX3.js} +4 -6
- package/dist/{appConfig-BVGyuvI7.d.ts → appConfig-fB1pP_v3.d.ts} +1 -1
- package/dist/{audit-BUW3LMJB.js → audit-PD5L5ZSC.js} +3 -3
- package/dist/{chunk-ETEJVKYK.js → chunk-4MCJAK7J.js} +4927 -504
- package/dist/chunk-4MCJAK7J.js.map +1 -0
- package/dist/{chunk-CDQ3PX7L.js → chunk-4ZTIEYU2.js} +1 -1
- package/dist/chunk-4ZTIEYU2.js.map +1 -0
- package/dist/{chunk-PLDDJCW6.js → chunk-DC5AMYBS.js} +5 -15
- package/dist/{chunk-HEMJ4SUJ.js → chunk-H4PZ4B3Y.js} +27 -124
- package/dist/chunk-H4PZ4B3Y.js.map +1 -0
- package/dist/{chunk-HNDFPXUU.js → chunk-IOX76PSM.js} +28 -270
- package/dist/chunk-IOX76PSM.js.map +1 -0
- package/dist/{chunk-TIVL4UQ7.js → chunk-JUUNUW3O.js} +5 -14
- package/dist/chunk-JUUNUW3O.js.map +1 -0
- package/dist/chunk-KK6WIDK6.js +63 -0
- package/dist/chunk-KK6WIDK6.js.map +1 -0
- package/dist/chunk-U7DY5T33.js +11 -0
- package/dist/chunk-U7DY5T33.js.map +1 -0
- package/dist/{chunk-SS3E6QLB.js → chunk-WHLSWC6W.js} +61 -16
- package/dist/chunk-WHLSWC6W.js.map +1 -0
- package/dist/chunk-XI7QFSSC.js +790 -0
- package/dist/chunk-XI7QFSSC.js.map +1 -0
- package/dist/chunk-XIJMMBDD.js +73 -0
- package/dist/chunk-XIJMMBDD.js.map +1 -0
- package/dist/{chunk-7BNPOCLL.js → chunk-YNU5QJ4S.js} +5 -22
- package/dist/chunk-YNU5QJ4S.js.map +1 -0
- package/dist/chunk-YWYCNGWH.js +2070 -0
- package/dist/chunk-YWYCNGWH.js.map +1 -0
- package/dist/chunk-ZJ3UKPIW.js +952 -0
- package/dist/chunk-ZJ3UKPIW.js.map +1 -0
- package/dist/components.d.ts +10 -906
- package/dist/components.js +77 -3255
- package/dist/components.js.map +1 -1
- package/dist/{database-C3Szpi5J.d.ts → database-CAMsquLm.d.ts} +11 -28
- package/dist/hooks.d.ts +6 -7
- package/dist/hooks.js +11 -35
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +111 -245
- package/dist/index.js +178 -187
- package/dist/index.js.map +1 -1
- package/dist/{organisation-CO3Sh3_D.d.ts → organisation-DLNNQhPB.d.ts} +1 -1
- package/dist/providers.d.ts +4 -4
- package/dist/providers.js +5 -19
- package/dist/rbac/index.d.ts +5 -61
- package/dist/rbac/index.js +93 -256
- package/dist/rbac/index.js.map +1 -1
- package/dist/{types-DiRQsGJs.d.ts → types-Bavn44NW.d.ts} +36 -71
- package/dist/types.d.ts +5 -5
- package/dist/types.js +2 -7
- package/dist/types.js.map +1 -1
- package/dist/{unified-CM7T0aTK.d.ts → unified-BtRpPbmp.d.ts} +2 -1
- package/dist/useAppConfig-CZNJJsT_.d.ts +148 -0
- package/dist/utils.d.ts +60 -83
- package/dist/utils.js +55633 -277
- package/dist/utils.js.map +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.js +1 -1
- package/docs/README.md +32 -46
- package/docs/api/README.md +229 -231
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/interfaces/AggregateConfig.md +4 -4
- package/docs/api/interfaces/ButtonProps.md +2 -2
- package/docs/api/interfaces/CardProps.md +2 -2
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +7 -85
- package/docs/api/interfaces/DataTableColumn.md +12 -131
- package/docs/api/interfaces/DataTableProps.md +274 -64
- package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
- package/docs/api/interfaces/EmptyStateConfig.md +5 -5
- package/docs/api/interfaces/EventContextType.md +7 -7
- package/docs/api/interfaces/EventProviderProps.md +2 -2
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/InputProps.md +2 -2
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +1 -1
- package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
- package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
- package/docs/api/interfaces/PaceAppLayoutProps.md +26 -26
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/StyleImport.md +2 -2
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +46 -447
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +9 -95
- package/docs/api/interfaces/UserEventAccess.md +14 -14
- package/docs/api/interfaces/UserMenuProps.md +6 -6
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +773 -1631
- package/docs/api-reference/components.md +43 -761
- package/docs/api-reference/hooks.md +0 -126
- package/docs/api-reference/providers.md +65 -141
- package/docs/api-reference/types.md +36 -66
- package/docs/api-reference/utilities.md +1 -1
- package/docs/architecture/README.md +2 -1
- package/docs/consuming-app-example.md +96 -42
- package/docs/core-concepts/events.md +3 -3
- package/docs/core-concepts/organisations.md +1 -0
- package/docs/core-concepts/rbac-system.md +10 -23
- package/docs/documentation-style-checklist.md +2 -8
- package/docs/getting-started/examples/README.md +1 -15
- package/docs/getting-started/examples/basic-auth-app.md +119 -444
- package/docs/getting-started/examples/full-featured-app.md +6 -6
- package/docs/getting-started/installation.md +52 -231
- package/docs/getting-started/quick-start.md +24 -121
- package/docs/implementation-guides/app-layout.md +108 -133
- package/docs/implementation-guides/data-tables.md +29 -1011
- package/docs/implementation-guides/forms.md +3 -3
- package/docs/implementation-guides/large-datasets.md +2 -2
- package/docs/implementation-guides/navigation.md +1 -1
- package/docs/implementation-guides/permission-enforcement.md +4 -4
- package/docs/migration/README.md +8 -18
- package/docs/migration/rbac-migration.md +0 -50
- package/docs/migration-guide.md +104 -51
- package/docs/performance/README.md +4 -1
- package/docs/quick-reference.md +36 -53
- package/docs/rbac/README.md +69 -136
- package/docs/rbac/api-reference.md +8 -39
- package/docs/rbac/examples.md +66 -237
- package/docs/rbac/getting-started.md +16 -131
- package/docs/rbac/quick-start.md +323 -499
- package/docs/rbac/troubleshooting.md +262 -240
- package/docs/security/README.md +1 -50
- package/docs/styles/README.md +117 -143
- package/docs/testing/README.md +10 -6
- package/docs/troubleshooting/common-issues.md +14 -604
- package/docs/usage.md +90 -28
- package/docs/visual-testing.md +7 -0
- package/package.json +24 -43
- package/dist/UnifiedAuthProvider-w66zSCUf.d.ts +0 -160
- package/dist/appNameResolver-7GHF5ED2.js +0 -22
- package/dist/chunk-2V3Y6YBC.js +0 -114
- package/dist/chunk-2V3Y6YBC.js.map +0 -1
- package/dist/chunk-7BNPOCLL.js.map +0 -1
- package/dist/chunk-BEZRLNK3.js +0 -1744
- package/dist/chunk-BEZRLNK3.js.map +0 -1
- package/dist/chunk-C5G2A4PO.js +0 -1349
- package/dist/chunk-C5G2A4PO.js.map +0 -1
- package/dist/chunk-CDQ3PX7L.js.map +0 -1
- package/dist/chunk-ETEJVKYK.js.map +0 -1
- package/dist/chunk-EWKPTNPO.js +0 -5139
- package/dist/chunk-EWKPTNPO.js.map +0 -1
- package/dist/chunk-HEMJ4SUJ.js.map +0 -1
- package/dist/chunk-HNDFPXUU.js.map +0 -1
- package/dist/chunk-MZBUOP4P.js +0 -119
- package/dist/chunk-MZBUOP4P.js.map +0 -1
- package/dist/chunk-N2EUGZRW.js +0 -98
- package/dist/chunk-N2EUGZRW.js.map +0 -1
- package/dist/chunk-NQ4TOOO6.js +0 -20
- package/dist/chunk-NQ4TOOO6.js.map +0 -1
- package/dist/chunk-OHXGNT3K.js +0 -21
- package/dist/chunk-OHXGNT3K.js.map +0 -1
- package/dist/chunk-PLDDJCW6.js.map +0 -1
- package/dist/chunk-RRUYHORU.js +0 -3431
- package/dist/chunk-RRUYHORU.js.map +0 -1
- package/dist/chunk-SS3E6QLB.js.map +0 -1
- package/dist/chunk-TIVL4UQ7.js.map +0 -1
- package/dist/chunk-VYG4AXYW.js +0 -388
- package/dist/chunk-VYG4AXYW.js.map +0 -1
- package/dist/chunk-YDJW5XTN.js +0 -84
- package/dist/chunk-YDJW5XTN.js.map +0 -1
- package/dist/styles/core.css +0 -422
- 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 +0 -36
- package/dist/styles/index.js +0 -24
- package/dist/styles/index.js.map +0 -1
- package/dist/theming/runtime.d.ts +0 -73
- package/dist/theming/runtime.js +0 -16
- package/dist/theming/runtime.js.map +0 -1
- package/dist/usePublicRouteParams-B6i0KtXW.d.ts +0 -477
- package/docs/INDEX.md +0 -192
- package/docs/api/classes/PublicErrorBoundary.md +0 -132
- package/docs/api/interfaces/EventLogoProps.md +0 -152
- package/docs/api/interfaces/FileSizeLimits.md +0 -7
- package/docs/api/interfaces/FileUploadProps.md +0 -154
- package/docs/api/interfaces/InactivityWarningModalProps.md +0 -115
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
- package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
- package/docs/api/interfaces/PublicPageFooterProps.md +0 -112
- package/docs/api/interfaces/PublicPageHeaderProps.md +0 -138
- package/docs/api/interfaces/PublicPageLayoutProps.md +0 -138
- package/docs/api/interfaces/StorageConfig.md +0 -41
- package/docs/api/interfaces/StorageFileInfo.md +0 -74
- package/docs/api/interfaces/StorageFileMetadata.md +0 -140
- package/docs/api/interfaces/StorageListOptions.md +0 -86
- package/docs/api/interfaces/StorageListResult.md +0 -41
- package/docs/api/interfaces/StorageUploadOptions.md +0 -88
- package/docs/api/interfaces/StorageUploadResult.md +0 -63
- package/docs/api/interfaces/StorageUrlOptions.md +0 -47
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +0 -136
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +0 -123
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +0 -87
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +0 -81
- package/docs/api/interfaces/UsePublicEventOptions.md +0 -34
- package/docs/api/interfaces/UsePublicEventReturn.md +0 -68
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +0 -94
- package/docs/best-practices/README.md +0 -400
- package/docs/consuming-app-vite-config.md +0 -233
- package/docs/examples/navigation-menu-auth-fix.md +0 -344
- package/docs/implementation-guides/hierarchical-datatable.md +0 -850
- package/docs/implementation-guides/public-pages.md +0 -752
- package/docs/migration/quick-migration-guide.md +0 -320
- package/docs/migration/v0.4.15-tailwind-scanning.md +0 -272
- package/docs/migration/v0.4.16-css-first-approach.md +0 -306
- package/docs/migration/v0.4.17-source-path-fix.md +0 -229
- package/docs/print-components/README.md +0 -258
- package/docs/print-components/api-reference.md +0 -636
- package/docs/print-components/examples/README.md +0 -204
- package/docs/print-components/examples/basic-report.tsx +0 -92
- package/docs/print-components/examples/card-catalog.tsx +0 -149
- package/docs/print-components/examples/cover-page-report.tsx +0 -163
- package/docs/print-components/quick-start.md +0 -363
- package/docs/troubleshooting/README.md +0 -497
- package/docs/troubleshooting/styling-issues.md +0 -219
- package/docs/troubleshooting/tailwind-content-scanning.md +0 -213
- package/src/__mocks__/lucide-react.ts +0 -181
- package/src/__tests__/README.md +0 -404
- package/src/__tests__/debug-provider.unit.test.tsx +0 -67
- package/src/__tests__/e2e/workflows.test.tsx +0 -373
- package/src/__tests__/hybridPermissions.unit.test.tsx +0 -474
- package/src/__tests__/index.integration.test.ts +0 -491
- package/src/__tests__/mocks/MockAuthProvider-standalone.tsx +0 -47
- package/src/__tests__/mocks/MockAuthProvider.tsx +0 -63
- package/src/__tests__/mocks/enhancedSupabaseMock.ts +0 -252
- package/src/__tests__/mocks/index.test.ts +0 -23
- package/src/__tests__/mocks/index.ts +0 -16
- package/src/__tests__/mocks/mockAuth.ts +0 -155
- package/src/__tests__/mocks/mockSupabase.ts +0 -83
- package/src/__tests__/mocks/mockSupabaseClient.ts +0 -63
- package/src/__tests__/mocks/providers.tsx +0 -22
- package/src/__tests__/patterns/__tests__/testPatterns.test.ts +0 -394
- package/src/__tests__/patterns/testPatterns.ts +0 -124
- package/src/__tests__/performance/componentPerformance.performance.test.ts +0 -27
- package/src/__tests__/performance/index.ts +0 -24
- package/src/__tests__/performance/performanceValidation.performance.test.ts +0 -15
- package/src/__tests__/security/security.unit.test.tsx +0 -7
- package/src/__tests__/security/securityValidation.security.test.tsx +0 -153
- package/src/__tests__/setup.ts +0 -259
- package/src/__tests__/setupTests.d.ts +0 -1
- package/src/__tests__/shared/componentTestUtils.tsx +0 -475
- package/src/__tests__/shared/errorHandlingTestUtils.ts +0 -107
- package/src/__tests__/shared/index.ts +0 -81
- package/src/__tests__/shared/integrationTestUtils.tsx +0 -375
- package/src/__tests__/shared/performanceTestUtils.tsx +0 -476
- package/src/__tests__/shared/testUtils.optimized.tsx +0 -685
- package/src/__tests__/simple.test.tsx +0 -20
- package/src/__tests__/templates/accessibility.test.template.tsx +0 -279
- package/src/__tests__/templates/component.test.template.tsx +0 -122
- package/src/__tests__/templates/integration.test.template.tsx +0 -199
- package/src/__tests__/test-utils/dataFactories.ts +0 -60
- package/src/__tests__/test-utils/index.ts +0 -6
- package/src/__tests__/typeSafety.unit.test.ts +0 -65
- package/src/__tests__/unifiedAuth.unit.test.tsx +0 -151
- package/src/__tests__/utils/accessibilityHelpers.ts +0 -254
- package/src/__tests__/utils/assertions.ts +0 -50
- package/src/__tests__/utils/deterministicHelpers.ts +0 -31
- package/src/__tests__/utils/edgeCaseConfig.test.ts +0 -75
- package/src/__tests__/utils/edgeCaseConfig.ts +0 -98
- package/src/__tests__/utils/mockHelpers.ts +0 -149
- package/src/__tests__/utils/mockLoader.ts +0 -101
- package/src/__tests__/utils/performanceHelpers.ts +0 -55
- package/src/__tests__/utils/performanceTestHelpers.ts +0 -68
- package/src/__tests__/utils/testDataFactories.ts +0 -28
- package/src/__tests__/utils/testIsolation.ts +0 -67
- package/src/__tests__/utils/visualTestHelpers.ts +0 -20
- package/src/__tests__/visual/__snapshots__/componentSnapshots.visual.test.tsx.snap +0 -68
- package/src/__tests__/visual/__snapshots__/componentVisuals.visual.test.tsx.snap +0 -14
- package/src/__tests__/visual/__snapshots__/visualRegression.test.tsx.snap +0 -217
- package/src/__tests__/visual/__snapshots__/visualRegression.visual.test.tsx.snap +0 -24
- package/src/__tests__/visual/componentSnapshots.visual.test.tsx +0 -33
- package/src/__tests__/visual/componentVisuals.visual.test.tsx +0 -12
- package/src/__tests__/visual/visualRegression.visual.test.tsx +0 -20
- package/src/components/Alert/Alert.tsx +0 -134
- package/src/components/Alert/__tests__/Alert.unit.test.tsx +0 -381
- package/src/components/Alert/index.ts +0 -2
- package/src/components/Avatar/Avatar.tsx +0 -84
- package/src/components/Avatar/__tests__/Avatar.unit.test.tsx +0 -232
- package/src/components/Avatar/index.ts +0 -2
- package/src/components/Button/Button.tsx +0 -270
- package/src/components/Button/__tests__/Button.accessibility.test.tsx +0 -131
- package/src/components/Button/__tests__/Button.comprehensive.test.tsx +0 -721
- package/src/components/Button/__tests__/Button.unit.test.tsx +0 -189
- package/src/components/Button/__tests__/EventSelector.integration.test.tsx +0 -285
- package/src/components/Button/index.ts +0 -2
- package/src/components/Card/Card.tsx +0 -271
- package/src/components/Card/__tests__/Card.accessibility.test.tsx +0 -394
- package/src/components/Card/__tests__/Card.comprehensive.test.tsx +0 -599
- package/src/components/Card/__tests__/Card.integration.test.tsx +0 -673
- package/src/components/Card/__tests__/Card.performance.test.tsx +0 -546
- package/src/components/Card/__tests__/Card.unit.test.tsx +0 -330
- package/src/components/Card/__tests__/Card.visual.test.tsx +0 -599
- package/src/components/Card/__tests__/README.md +0 -211
- package/src/components/Card/index.ts +0 -1
- package/src/components/Checkbox/Checkbox.tsx +0 -75
- package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
- package/src/components/Checkbox/__tests__/Checkbox.unit.test.tsx +0 -520
- package/src/components/Checkbox/index.ts +0 -2
- package/src/components/DataTable/DataTable.tsx +0 -438
- package/src/components/DataTable/__tests__/DataTable.errorHandling.test.tsx +0 -251
- package/src/components/DataTable/__tests__/DataTable.hierarchical.test.tsx +0 -680
- package/src/components/DataTable/__tests__/DataTable.infinite-loop.test.tsx +0 -323
- package/src/components/DataTable/__tests__/DataTable.integration.test.tsx +0 -716
- package/src/components/DataTable/__tests__/DataTable.performance.test.tsx +0 -589
- package/src/components/DataTable/__tests__/DataTable.permissions.test.tsx +0 -316
- package/src/components/DataTable/__tests__/DataTable.regressionFixes.test.tsx +0 -546
- package/src/components/DataTable/__tests__/DataTable.selection.controlled.test.tsx +0 -386
- package/src/components/DataTable/__tests__/DataTable.selection.test.tsx +0 -338
- package/src/components/DataTable/__tests__/DataTable.sorting.test.tsx +0 -321
- package/src/components/DataTable/__tests__/DataTable.userWorkflows.test.tsx +0 -320
- package/src/components/DataTable/__tests__/DataTable.workflowValidation.test.tsx +0 -583
- package/src/components/DataTable/__tests__/DataTable.workflows.test.tsx +0 -711
- package/src/components/DataTable/__tests__/README.md +0 -145
- package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +0 -66
- package/src/components/DataTable/__tests__/performance-regression.test.tsx +0 -777
- package/src/components/DataTable/__tests__/performance.test.tsx +0 -365
- package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +0 -103
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +0 -381
- package/src/components/DataTable/__tests__/test-utils.ts +0 -94
- package/src/components/DataTable/components/ActionButtons.tsx +0 -177
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +0 -160
- package/src/components/DataTable/components/ColumnFilter.tsx +0 -114
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +0 -100
- package/src/components/DataTable/components/DataTableBody.tsx +0 -461
- package/src/components/DataTable/components/DataTableCore.tsx +0 -941
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +0 -214
- package/src/components/DataTable/components/DataTableModals.tsx +0 -87
- package/src/components/DataTable/components/DataTableToolbar.tsx +0 -250
- package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -144
- package/src/components/DataTable/components/EditableRow.tsx +0 -159
- package/src/components/DataTable/components/EmptyState.tsx +0 -64
- package/src/components/DataTable/components/ExpandButton.tsx +0 -113
- package/src/components/DataTable/components/FilterRow.tsx +0 -100
- package/src/components/DataTable/components/GroupHeader.tsx +0 -42
- package/src/components/DataTable/components/GroupingDropdown.tsx +0 -96
- package/src/components/DataTable/components/ImportModal.tsx +0 -345
- package/src/components/DataTable/components/LoadingState.tsx +0 -12
- package/src/components/DataTable/components/PaginationControls.tsx +0 -332
- package/src/components/DataTable/components/UnifiedTableBody.tsx +0 -713
- package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -513
- package/src/components/DataTable/components/__tests__/ActionButtons.unit.test.tsx +0 -150
- package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +0 -224
- package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.unit.test.tsx +0 -244
- package/src/components/DataTable/components/__tests__/DataTable.accessibility.test.tsx +0 -629
- package/src/components/DataTable/components/__tests__/DataTable.integration.test.tsx +0 -470
- package/src/components/DataTable/components/__tests__/DataTable.performance.test.tsx +0 -160
- package/src/components/DataTable/components/__tests__/DataTable.real.test.tsx +0 -251
- package/src/components/DataTable/components/__tests__/DataTable.security.test.tsx +0 -171
- package/src/components/DataTable/components/__tests__/DataTable.unit.test.tsx +0 -290
- package/src/components/DataTable/components/__tests__/DataTableBody.unit.test.tsx +0 -147
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.unit.test.tsx +0 -182
- package/src/components/DataTable/components/__tests__/DataTableModals.unit.test.tsx +0 -123
- package/src/components/DataTable/components/__tests__/EditableRow.unit.test.tsx +0 -660
- package/src/components/DataTable/components/__tests__/EmptyState.unit.test.tsx +0 -256
- package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -498
- package/src/components/DataTable/components/__tests__/FilterRow.unit.test.tsx +0 -112
- package/src/components/DataTable/components/__tests__/FilteringToggle.unit.test.tsx +0 -133
- package/src/components/DataTable/components/__tests__/GroupHeader.unit.test.tsx +0 -172
- package/src/components/DataTable/components/__tests__/GroupingDropdown.unit.test.tsx +0 -222
- package/src/components/DataTable/components/__tests__/ImportModal.unit.test.tsx +0 -780
- package/src/components/DataTable/components/__tests__/LoadingState.unit.test.tsx +0 -65
- package/src/components/DataTable/components/__tests__/PaginationControls.unit.test.tsx +0 -634
- package/src/components/DataTable/components/__tests__/StateComponents.unit.test.tsx +0 -48
- package/src/components/DataTable/components/__tests__/UnifiedTableBody.hierarchical.test.tsx +0 -541
- package/src/components/DataTable/components/__tests__/ViewRowModal.unit.test.tsx +0 -228
- package/src/components/DataTable/components/__tests__/VirtualizedDataTable.unit.test.tsx +0 -568
- package/src/components/DataTable/components/index.ts +0 -16
- package/src/components/DataTable/context/DataTableContext.tsx +0 -97
- package/src/components/DataTable/core/ActionManager.ts +0 -235
- package/src/components/DataTable/core/ColumnFactory.ts +0 -268
- package/src/components/DataTable/core/ColumnManager.ts +0 -205
- package/src/components/DataTable/core/DataManager.ts +0 -188
- package/src/components/DataTable/core/DataTableContext.tsx +0 -181
- package/src/components/DataTable/core/LocalDataAdapter.ts +0 -264
- package/src/components/DataTable/core/PluginRegistry.ts +0 -229
- package/src/components/DataTable/core/StateManager.ts +0 -311
- package/src/components/DataTable/core/__tests__/ActionManager.unit.test.ts +0 -405
- package/src/components/DataTable/core/__tests__/ArchitectureIntegration.unit.test.tsx +0 -445
- package/src/components/DataTable/core/__tests__/ColumnFactory.unit.test.ts +0 -288
- package/src/components/DataTable/core/__tests__/ColumnManager.unit.test.ts +0 -623
- package/src/components/DataTable/core/__tests__/DataManager.unit.test.ts +0 -431
- package/src/components/DataTable/core/__tests__/DataTableContext.unit.test.tsx +0 -433
- package/src/components/DataTable/core/__tests__/LocalDataAdapter.unit.test.ts +0 -422
- package/src/components/DataTable/core/__tests__/PluginRegistry.unit.test.tsx +0 -207
- package/src/components/DataTable/core/__tests__/StateManager.unit.test.ts +0 -278
- package/src/components/DataTable/core/index.ts +0 -8
- package/src/components/DataTable/core/interfaces.ts +0 -338
- package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -418
- package/src/components/DataTable/examples/HierarchicalExample.tsx +0 -472
- package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -173
- package/src/components/DataTable/examples/PerformanceExample.tsx +0 -502
- package/src/components/DataTable/examples/__tests__/PerformanceExample.unit.test.tsx +0 -281
- package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.unit.test.ts +0 -407
- package/src/components/DataTable/hooks/__tests__/useColumnReordering.unit.test.ts +0 -679
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -95
- package/src/components/DataTable/hooks/useColumnReordering.ts +0 -110
- package/src/components/DataTable/hooks/useDataTableState.ts +0 -325
- package/src/components/DataTable/hooks/useHierarchicalState.ts +0 -174
- package/src/components/DataTable/index.ts +0 -68
- package/src/components/DataTable/styles.ts +0 -171
- package/src/components/DataTable/types.ts +0 -473
- package/src/components/DataTable/utils/__tests__/debugTools.unit.test.ts +0 -267
- package/src/components/DataTable/utils/__tests__/errorHandling.unit.test.ts +0 -467
- package/src/components/DataTable/utils/__tests__/exportUtils.unit.test.ts +0 -380
- package/src/components/DataTable/utils/__tests__/flexibleImport.unit.test.ts +0 -233
- package/src/components/DataTable/utils/__tests__/performanceUtils.unit.test.ts +0 -414
- package/src/components/DataTable/utils/debugTools.ts +0 -583
- package/src/components/DataTable/utils/errorHandling.ts +0 -494
- package/src/components/DataTable/utils/exportUtils.ts +0 -126
- package/src/components/DataTable/utils/flexibleImport.ts +0 -510
- package/src/components/DataTable/utils/hierarchicalSorting.ts +0 -151
- package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -218
- package/src/components/DataTable/utils/index.ts +0 -1
- package/src/components/DataTable/utils/performanceUtils.ts +0 -351
- package/src/components/Dialog/Dialog.tsx +0 -782
- package/src/components/Dialog/README.md +0 -804
- package/src/components/Dialog/__tests__/Dialog.accessibility.test.tsx +0 -521
- package/src/components/Dialog/__tests__/Dialog.auto-size.example.tsx +0 -157
- package/src/components/Dialog/__tests__/Dialog.enhanced.test.tsx +0 -538
- package/src/components/Dialog/__tests__/Dialog.unit.test.tsx +0 -1373
- package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
- package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
- package/src/components/Dialog/examples/HtmlDialogExample.tsx +0 -202
- package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
- package/src/components/Dialog/examples/SmartDialogExample.tsx +0 -322
- package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -151
- package/src/components/Dialog/index.ts +0 -12
- package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
- package/src/components/Dialog/utils/safeHtml.ts +0 -185
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -312
- package/src/components/ErrorBoundary/__tests__/ErrorBoundary.accessibility.test.tsx +0 -517
- package/src/components/ErrorBoundary/__tests__/ErrorBoundary.integration.test.tsx +0 -572
- package/src/components/ErrorBoundary/__tests__/ErrorBoundary.unit.test.tsx +0 -579
- package/src/components/ErrorBoundary/index.ts +0 -8
- package/src/components/EventSelector/EventSelector.tsx +0 -360
- package/src/components/EventSelector/__tests__/EventSelector.test.tsx +0 -528
- package/src/components/EventSelector/index.ts +0 -3
- package/src/components/EventSelector/types.ts +0 -79
- package/src/components/FileUpload/FileUpload.example.tsx +0 -218
- package/src/components/FileUpload/FileUpload.tsx +0 -237
- package/src/components/FileUpload/__tests__/FileUpload.integration.test.tsx +0 -992
- package/src/components/FileUpload/__tests__/FileUpload.real.test.tsx +0 -927
- package/src/components/FileUpload/__tests__/FileUpload.test.tsx +0 -855
- package/src/components/FileUpload/__tests__/FileUpload.unit.test.tsx +0 -1311
- package/src/components/FileUpload/__tests__/FileUpload.unmocked.test.tsx +0 -937
- package/src/components/FileUpload/index.ts +0 -6
- package/src/components/Footer/Footer.tsx +0 -197
- package/src/components/Footer/__tests__/Footer.accessibility.test.tsx +0 -359
- package/src/components/Footer/__tests__/Footer.integration.test.tsx +0 -353
- package/src/components/Footer/__tests__/Footer.performance.test.tsx +0 -309
- package/src/components/Footer/__tests__/Footer.unit.test.tsx +0 -309
- package/src/components/Footer/__tests__/Footer.visual.test.tsx +0 -335
- package/src/components/Footer/index.ts +0 -17
- package/src/components/Form/Form.tsx +0 -166
- package/src/components/Form/FormErrorSummary.tsx +0 -113
- package/src/components/Form/FormField.tsx +0 -249
- package/src/components/Form/FormFieldset.tsx +0 -127
- package/src/components/Form/FormLiveRegion.tsx +0 -198
- package/src/components/Form/__tests__/Form.accessibility.test.tsx +0 -820
- package/src/components/Form/__tests__/Form.unit.test.tsx +0 -305
- package/src/components/Form/__tests__/FormErrorSummary.unit.test.tsx +0 -285
- package/src/components/Form/__tests__/FormFieldset.unit.test.tsx +0 -241
- package/src/components/Form/index.ts +0 -26
- package/src/components/Header/Header.tsx +0 -301
- package/src/components/Header/__tests__/Header.accessibility.test.tsx +0 -382
- package/src/components/Header/__tests__/Header.comprehensive.test.tsx +0 -509
- package/src/components/Header/__tests__/Header.unit.test.tsx +0 -335
- package/src/components/Header/index.ts +0 -4
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +0 -196
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +0 -164
- package/src/components/InactivityWarningModal/__tests__/InactivityWarningModal.unit.test.tsx +0 -224
- package/src/components/InactivityWarningModal/index.ts +0 -9
- package/src/components/Input/Input.tsx +0 -201
- package/src/components/Input/__mocks__/Input.tsx +0 -2
- package/src/components/Input/__tests__/Input.accessibility.test.tsx +0 -632
- package/src/components/Input/__tests__/Input.unit.test.tsx +0 -1121
- package/src/components/Input/index.ts +0 -9
- package/src/components/Label/Label.tsx +0 -186
- package/src/components/Label/__tests__/Label.accessibility.test.tsx +0 -239
- package/src/components/Label/__tests__/Label.unit.test.tsx +0 -331
- package/src/components/Label/index.ts +0 -2
- package/src/components/LoadingSpinner/LoadingSpinner.tsx +0 -98
- package/src/components/LoadingSpinner/__tests__/LoadingSpinner.accessibility.test.tsx +0 -116
- package/src/components/LoadingSpinner/__tests__/LoadingSpinner.unit.test.tsx +0 -144
- package/src/components/LoadingSpinner/index.ts +0 -3
- package/src/components/LoginForm/LoginForm.tsx +0 -273
- package/src/components/LoginForm/__tests__/LoginForm.accessibility.test.tsx +0 -201
- package/src/components/LoginForm/__tests__/LoginForm.unit.test.tsx +0 -119
- package/src/components/LoginForm/index.ts +0 -3
- package/src/components/NavigationMenu/NavigationMenu.tsx +0 -698
- package/src/components/NavigationMenu/__tests__/NavigationMenu.accessibility.test.tsx +0 -378
- package/src/components/NavigationMenu/__tests__/NavigationMenu.enhanced.test.tsx +0 -768
- package/src/components/NavigationMenu/__tests__/NavigationMenu.integration.test.tsx +0 -576
- package/src/components/NavigationMenu/__tests__/NavigationMenu.performance.test.tsx +0 -585
- package/src/components/NavigationMenu/__tests__/NavigationMenu.real.component.test.tsx +0 -783
- package/src/components/NavigationMenu/__tests__/NavigationMenu.security.enhanced.test.tsx +0 -810
- package/src/components/NavigationMenu/__tests__/NavigationMenu.security.test.tsx +0 -494
- package/src/components/NavigationMenu/__tests__/NavigationMenu.unit.test.tsx +0 -331
- package/src/components/NavigationMenu/__tests__/NavigationMenu.userWorkflows.test.tsx +0 -347
- package/src/components/NavigationMenu/__tests__/NavigationMenu.workflows.test.tsx +0 -584
- package/src/components/NavigationMenu/index.ts +0 -10
- package/src/components/NavigationMenu/types.ts +0 -85
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +0 -304
- package/src/components/OrganisationSelector/__tests__/OrganisationSelector.unit.test.tsx +0 -664
- package/src/components/OrganisationSelector/index.ts +0 -9
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +0 -699
- package/src/components/PaceAppLayout/README.md +0 -278
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -288
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +0 -893
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.performance.test.tsx +0 -629
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +0 -782
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -904
- package/src/components/PaceAppLayout/index.ts +0 -1
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +0 -221
- package/src/components/PaceLoginPage/__tests__/PaceLoginPage.accessibility.test.tsx +0 -463
- package/src/components/PaceLoginPage/__tests__/PaceLoginPage.integration.test.tsx +0 -586
- package/src/components/PaceLoginPage/__tests__/PaceLoginPage.unit.test.tsx +0 -533
- package/src/components/PaceLoginPage/index.ts +0 -1
- package/src/components/PasswordReset/PasswordChangeForm.tsx +0 -186
- package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
- package/src/components/PasswordReset/__tests__/PasswordChangeForm.accessibility.test.tsx +0 -408
- package/src/components/PasswordReset/__tests__/PasswordChangeForm.unit.test.tsx +0 -561
- package/src/components/PasswordReset/__tests__/PasswordReset.integration.test.tsx +0 -304
- package/src/components/PasswordReset/__tests__/PasswordResetForm.accessibility.test.tsx +0 -20
- package/src/components/PasswordReset/__tests__/PasswordResetForm.unit.test.tsx +0 -523
- package/src/components/PasswordReset/__tests__/__mocks__/UnifiedAuthProvider.ts +0 -29
- package/src/components/PasswordReset/index.ts +0 -4
- package/src/components/Print/__tests__/Print.comprehensive.test.tsx +0 -331
- package/src/components/PrintButton/PrintButton.tsx +0 -321
- package/src/components/PrintButton/PrintButtonGroup.tsx +0 -84
- package/src/components/PrintButton/PrintToolbar.tsx +0 -94
- package/src/components/PrintButton/__tests__/PrintButton.unit.test.tsx +0 -429
- package/src/components/PrintButton/__tests__/PrintButtonGroup.unit.test.tsx +0 -277
- package/src/components/PrintButton/__tests__/PrintToolbar.unit.test.tsx +0 -264
- package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +0 -438
- package/src/components/PrintButton/index.ts +0 -33
- package/src/components/PrintButton/types.ts +0 -173
- package/src/components/PrintCard/PrintCard.tsx +0 -154
- package/src/components/PrintCard/PrintCardContent.tsx +0 -57
- package/src/components/PrintCard/PrintCardFooter.tsx +0 -60
- package/src/components/PrintCard/PrintCardGrid.tsx +0 -91
- package/src/components/PrintCard/PrintCardHeader.tsx +0 -78
- package/src/components/PrintCard/PrintCardImage.tsx +0 -81
- package/src/components/PrintCard/__tests__/PrintCard.unit.test.tsx +0 -233
- package/src/components/PrintCard/__tests__/PrintCardContent.test.tsx +0 -284
- package/src/components/PrintCard/__tests__/PrintCardGrid.unit.test.tsx +0 -214
- package/src/components/PrintCard/__tests__/PrintCardImage.unit.test.tsx +0 -264
- package/src/components/PrintCard/examples/PrintCardShowcase.tsx +0 -239
- package/src/components/PrintCard/index.ts +0 -34
- package/src/components/PrintCard/types.ts +0 -171
- package/src/components/PrintDataTable/PrintDataTable.tsx +0 -215
- package/src/components/PrintDataTable/PrintTableGroup.tsx +0 -90
- package/src/components/PrintDataTable/PrintTableRow.tsx +0 -76
- package/src/components/PrintDataTable/__tests__/PrintDataTable.unit.test.tsx +0 -361
- package/src/components/PrintDataTable/__tests__/PrintTableGroup.unit.test.tsx +0 -314
- package/src/components/PrintDataTable/__tests__/PrintTableRow.unit.test.tsx +0 -362
- package/src/components/PrintDataTable/index.ts +0 -25
- package/src/components/PrintDataTable/types.ts +0 -67
- package/src/components/PrintFooter/PrintFooter.tsx +0 -183
- package/src/components/PrintFooter/PrintFooterContent.tsx +0 -71
- package/src/components/PrintFooter/PrintFooterInfo.tsx +0 -86
- package/src/components/PrintFooter/PrintPageNumber.tsx +0 -90
- package/src/components/PrintFooter/__tests__/PrintFooter.unit.test.tsx +0 -500
- package/src/components/PrintFooter/__tests__/PrintFooterContent.unit.test.tsx +0 -321
- package/src/components/PrintFooter/__tests__/PrintFooterInfo.unit.test.tsx +0 -335
- package/src/components/PrintFooter/__tests__/PrintPageNumber.unit.test.tsx +0 -340
- package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +0 -390
- package/src/components/PrintFooter/index.ts +0 -30
- package/src/components/PrintFooter/types.ts +0 -149
- package/src/components/PrintGrid/PrintGrid.tsx +0 -180
- package/src/components/PrintGrid/PrintGridBreakpoint.tsx +0 -109
- package/src/components/PrintGrid/PrintGridContainer.tsx +0 -128
- package/src/components/PrintGrid/PrintGridItem.tsx +0 -220
- package/src/components/PrintGrid/__tests__/PrintGrid.unit.test.tsx +0 -340
- package/src/components/PrintGrid/__tests__/PrintGridBreakpoint.unit.test.tsx +0 -261
- package/src/components/PrintGrid/__tests__/PrintGridContainer.unit.test.tsx +0 -338
- package/src/components/PrintGrid/__tests__/PrintGridItem.unit.test.tsx +0 -338
- package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +0 -359
- package/src/components/PrintGrid/index.ts +0 -31
- package/src/components/PrintGrid/types.ts +0 -159
- package/src/components/PrintHeader/PrintCoverHeader.tsx +0 -230
- package/src/components/PrintHeader/PrintHeader.tsx +0 -150
- package/src/components/PrintHeader/__tests__/PrintCoverHeader.unit.test.tsx +0 -309
- package/src/components/PrintHeader/__tests__/PrintHeader.unit.test.tsx +0 -202
- package/src/components/PrintHeader/index.ts +0 -17
- package/src/components/PrintHeader/types.ts +0 -42
- package/src/components/PrintLayout/PrintLayout.tsx +0 -122
- package/src/components/PrintLayout/PrintLayoutContext.tsx +0 -66
- package/src/components/PrintLayout/PrintPageBreak.tsx +0 -52
- package/src/components/PrintLayout/__tests__/PrintLayout.unit.test.tsx +0 -238
- package/src/components/PrintLayout/examples/PrintShowcase.tsx +0 -230
- package/src/components/PrintLayout/index.ts +0 -19
- package/src/components/PrintLayout/types.ts +0 -37
- package/src/components/PrintPageBreak/PrintPageBreak.tsx +0 -120
- package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +0 -90
- package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +0 -112
- package/src/components/PrintPageBreak/__tests__/PrintPageBreak.unit.test.tsx +0 -263
- package/src/components/PrintPageBreak/__tests__/PrintPageBreakGroup.unit.test.tsx +0 -239
- package/src/components/PrintPageBreak/__tests__/PrintPageBreakIndicator.unit.test.tsx +0 -235
- package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +0 -279
- package/src/components/PrintPageBreak/index.ts +0 -23
- package/src/components/PrintPageBreak/types.ts +0 -94
- package/src/components/PrintSection/PrintColumn.tsx +0 -104
- package/src/components/PrintSection/PrintDivider.tsx +0 -101
- package/src/components/PrintSection/PrintSection.tsx +0 -129
- package/src/components/PrintSection/PrintSectionContent.tsx +0 -75
- package/src/components/PrintSection/PrintSectionHeader.tsx +0 -97
- package/src/components/PrintSection/__tests__/PrintColumn.unit.test.tsx +0 -385
- package/src/components/PrintSection/__tests__/PrintDivider.unit.test.tsx +0 -373
- package/src/components/PrintSection/__tests__/PrintSection.unit.test.tsx +0 -390
- package/src/components/PrintSection/__tests__/PrintSectionContent.unit.test.tsx +0 -321
- package/src/components/PrintSection/__tests__/PrintSectionHeader.unit.test.tsx +0 -334
- package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +0 -258
- package/src/components/PrintSection/index.ts +0 -33
- package/src/components/PrintSection/types.ts +0 -155
- package/src/components/PrintText/PrintText.tsx +0 -116
- package/src/components/PrintText/__tests__/PrintText.unit.test.tsx +0 -351
- package/src/components/PrintText/index.ts +0 -16
- package/src/components/PrintText/types.ts +0 -24
- package/src/components/Progress/Progress.tsx +0 -116
- package/src/components/Progress/__tests__/Progress.accessibility.test.tsx +0 -240
- package/src/components/Progress/__tests__/Progress.unit.test.tsx +0 -242
- package/src/components/Progress/index.ts +0 -3
- package/src/components/PublicLayout/EventLogo.tsx +0 -287
- package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -279
- package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -208
- package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -130
- package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
- package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
- package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
- package/src/components/PublicLayout/PublicPageHeader.tsx +0 -178
- package/src/components/PublicLayout/PublicPageLayout.tsx +0 -232
- package/src/components/PublicLayout/PublicPageProvider.tsx +0 -137
- package/src/components/PublicLayout/__tests__/EventLogo.test.tsx +0 -761
- package/src/components/PublicLayout/__tests__/PublicErrorBoundary.simplified.test.tsx +0 -228
- package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -228
- package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -459
- package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -362
- package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -522
- package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -599
- package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -513
- package/src/components/PublicLayout/index.ts +0 -51
- package/src/components/RBAC/PagePermissionGuard.tsx +0 -287
- package/src/components/RBAC/RBACGuard.tsx +0 -143
- package/src/components/RBAC/RBACProvider.tsx +0 -186
- package/src/components/RBAC/RoleBasedContent.tsx +0 -129
- package/src/components/RBAC/__tests__/PagePermissionGuard.unit.test.tsx +0 -683
- package/src/components/RBAC/__tests__/RBAC.integration.test.tsx +0 -573
- package/src/components/RBAC/__tests__/RBACGuard.unit.test.tsx +0 -467
- package/src/components/RBAC/__tests__/RBACProvider.accessibility.test.tsx +0 -475
- package/src/components/RBAC/__tests__/RBACProvider.advanced.test.tsx +0 -569
- package/src/components/RBAC/__tests__/RBACProvider.integration.test.tsx +0 -352
- package/src/components/RBAC/__tests__/RBACProvider.unit.test.tsx +0 -128
- package/src/components/RBAC/__tests__/RoleBasedContent.unit.test.tsx +0 -657
- package/src/components/RBAC/index.ts +0 -23
- package/src/components/Select/Select.tsx +0 -660
- package/src/components/Select/__tests__/SearchableSelect.unit.test.tsx +0 -437
- package/src/components/Select/__tests__/Select.accessibility.test.tsx +0 -1202
- package/src/components/Select/__tests__/Select.actual.test.tsx +0 -774
- package/src/components/Select/__tests__/Select.comprehensive.test.tsx +0 -837
- package/src/components/Select/__tests__/Select.enhanced.test.tsx +0 -1101
- package/src/components/Select/__tests__/Select.integration.test.tsx +0 -772
- package/src/components/Select/__tests__/Select.performance.test.tsx +0 -695
- package/src/components/Select/__tests__/Select.real-world.test.tsx +0 -1046
- package/src/components/Select/__tests__/Select.search-algorithms.test.tsx +0 -968
- package/src/components/Select/__tests__/Select.unit.test.tsx +0 -647
- package/src/components/Select/__tests__/Select.utils.test.tsx +0 -890
- package/src/components/Select/index.ts +0 -1
- package/src/components/SuperAdminGuard.tsx +0 -116
- package/src/components/Table/Table.tsx +0 -222
- package/src/components/Table/__tests__/Table.accessibility.test.tsx +0 -233
- package/src/components/Table/__tests__/Table.unit.test.tsx +0 -235
- package/src/components/Table/index.ts +0 -11
- package/src/components/Toast/Toast.tsx +0 -339
- package/src/components/Toast/__tests__/Toast.accessibility.test.tsx +0 -238
- package/src/components/Toast/__tests__/Toast.integration.test.tsx +0 -699
- package/src/components/Toast/__tests__/Toast.unit.test.tsx +0 -750
- package/src/components/Toast/index.ts +0 -14
- package/src/components/Tooltip/Tooltip.tsx +0 -167
- package/src/components/Tooltip/__tests__/Tooltip.accessibility.test.tsx +0 -121
- package/src/components/Tooltip/__tests__/Tooltip.unit.test.tsx +0 -185
- package/src/components/Tooltip/index.ts +0 -7
- package/src/components/UserMenu/UserMenu.tsx +0 -243
- package/src/components/UserMenu/__tests__/UserMenu.accessibility.test.tsx +0 -139
- package/src/components/UserMenu/__tests__/UserMenu.integration.test.tsx +0 -188
- package/src/components/UserMenu/__tests__/UserMenu.unit.test.tsx +0 -458
- package/src/components/UserMenu/index.ts +0 -3
- package/src/components/__tests__/EdgeCaseTesting.enhanced.test.tsx +0 -524
- package/src/components/__tests__/ErrorTesting.enhanced.test.tsx +0 -455
- package/src/components/__tests__/SuperAdminGuard.test.tsx +0 -456
- package/src/components/__tests__/SuperAdminGuard.unit.test.tsx +0 -456
- package/src/components/examples/PermissionExample.tsx +0 -150
- package/src/components/examples/__tests__/PermissionExample.unit.test.tsx +0 -360
- package/src/components/index.ts +0 -434
- package/src/components.ts +0 -19
- package/src/constants/performance.ts +0 -14
- package/src/examples/CorrectPublicPageImplementation.tsx +0 -301
- package/src/examples/PublicEventPage.tsx +0 -274
- package/src/examples/PublicPageApp.tsx +0 -308
- package/src/examples/PublicPageUsageExample.tsx +0 -216
- package/src/hooks/__tests__/hooks.integration.test.tsx +0 -575
- package/src/hooks/__tests__/useApiFetch.unit.test.ts +0 -115
- package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +0 -133
- package/src/hooks/__tests__/useDebounce.unit.test.ts +0 -82
- package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +0 -293
- package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +0 -385
- package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +0 -286
- package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +0 -838
- package/src/hooks/__tests__/usePermissionCache.unit.test.ts +0 -627
- package/src/hooks/__tests__/useRBAC.unit.test.ts +0 -911
- package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +0 -537
- package/src/hooks/__tests__/useToast.unit.test.tsx +0 -62
- package/src/hooks/__tests__/useZodForm.unit.test.tsx +0 -37
- package/src/hooks/index.ts +0 -56
- package/src/hooks/public/__tests__/usePublicEvent.test.tsx +0 -397
- package/src/hooks/public/__tests__/usePublicEventLogo.test.tsx +0 -690
- package/src/hooks/public/__tests__/usePublicRouteParams.test.tsx +0 -449
- package/src/hooks/public/index.ts +0 -34
- package/src/hooks/public/usePublicEvent.ts +0 -261
- package/src/hooks/public/usePublicEventLogo.ts +0 -285
- package/src/hooks/public/usePublicRouteParams.ts +0 -259
- package/src/hooks/useAppConfig.ts +0 -94
- package/src/hooks/useComponentPerformance.ts +0 -39
- package/src/hooks/useDataTablePerformance.ts +0 -387
- package/src/hooks/useDataTableState.ts +0 -110
- package/src/hooks/useDebounce.ts +0 -18
- package/src/hooks/useFocusManagement.ts +0 -161
- package/src/hooks/useFocusTrap.ts +0 -155
- package/src/hooks/useInactivityTracker.ts +0 -372
- package/src/hooks/useIsMobile.ts +0 -42
- package/src/hooks/useKeyboardShortcuts.ts +0 -237
- package/src/hooks/useOrganisationPermissions.ts +0 -208
- package/src/hooks/useOrganisationSecurity.ts +0 -262
- package/src/hooks/usePerformanceMonitor.ts +0 -128
- package/src/hooks/usePermissionCache.ts +0 -455
- package/src/hooks/useRBAC.ts +0 -262
- package/src/hooks/useSecureDataAccess.ts +0 -586
- package/src/hooks/useStorage.ts +0 -274
- package/src/hooks/useToast.ts +0 -242
- package/src/hooks/useZodForm.ts +0 -28
- package/src/index.ts +0 -200
- package/src/providers/AuthProvider.tsx +0 -369
- package/src/providers/EventProvider.tsx +0 -324
- package/src/providers/InactivityProvider.tsx +0 -238
- package/src/providers/OrganisationProvider.tsx +0 -588
- package/src/providers/RBACProvider.tsx +0 -634
- package/src/providers/UnifiedAuthProvider.tsx +0 -327
- package/src/providers/__tests__/EventProvider.unit.test.tsx +0 -768
- package/src/providers/__tests__/OrganisationProvider.basic.test.tsx +0 -116
- package/src/providers/__tests__/OrganisationProvider.unit.test.tsx +0 -1312
- package/src/providers/__tests__/UnifiedAuthProvider.inactivity.test.tsx +0 -601
- package/src/providers/__tests__/UnifiedAuthProvider.unit.test.tsx +0 -683
- package/src/providers/__tests__/index.unit.test.ts +0 -78
- package/src/providers/index.ts +0 -15
- package/src/rbac/README.md +0 -885
- package/src/rbac/__tests__/PagePermissionGuard.test.tsx +0 -673
- package/src/rbac/__tests__/README.md +0 -170
- package/src/rbac/__tests__/RoleBasedRouter.test.tsx +0 -709
- package/src/rbac/__tests__/TestContext.tsx +0 -72
- package/src/rbac/__tests__/__mocks__/cache.ts +0 -144
- package/src/rbac/__tests__/__mocks__/supabase.ts +0 -152
- package/src/rbac/__tests__/adapters-hooks-comprehensive.test.tsx +0 -782
- package/src/rbac/__tests__/adapters-hooks.test.tsx +0 -561
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +0 -963
- package/src/rbac/__tests__/adapters.test.tsx +0 -444
- package/src/rbac/__tests__/api.test.ts +0 -620
- package/src/rbac/__tests__/audit-observability-comprehensive.test.ts +0 -792
- package/src/rbac/__tests__/audit-observability.test.ts +0 -549
- package/src/rbac/__tests__/audit.test.ts +0 -616
- package/src/rbac/__tests__/build-contract-compliance-simple.test.ts +0 -230
- package/src/rbac/__tests__/cache-invalidation-comprehensive.test.ts +0 -889
- package/src/rbac/__tests__/cache-invalidation.test.ts +0 -457
- package/src/rbac/__tests__/cache.test.ts +0 -458
- package/src/rbac/__tests__/components-navigation-guard.enhanced.test.tsx +0 -859
- package/src/rbac/__tests__/components-navigation-guard.test.tsx +0 -895
- package/src/rbac/__tests__/components-navigation-provider.test.tsx +0 -692
- package/src/rbac/__tests__/components-page-permission-guard.test.tsx +0 -673
- package/src/rbac/__tests__/components-page-permission-provider.test.tsx +0 -614
- package/src/rbac/__tests__/components-permission-enforcer.enhanced.fixed.test.tsx +0 -836
- package/src/rbac/__tests__/components-permission-enforcer.enhanced.test.tsx +0 -837
- package/src/rbac/__tests__/components-permission-enforcer.test.tsx +0 -825
- package/src/rbac/__tests__/components-role-based-router.test.tsx +0 -709
- package/src/rbac/__tests__/components-secure-data-provider.test.tsx +0 -607
- package/src/rbac/__tests__/config.test.ts +0 -583
- package/src/rbac/__tests__/core-logic-unit.test.ts +0 -190
- package/src/rbac/__tests__/core-permission-logic-comprehensive.test.ts +0 -1467
- package/src/rbac/__tests__/core-permission-logic-fixed.test.ts +0 -151
- package/src/rbac/__tests__/core-permission-logic-simple.test.ts +0 -968
- package/src/rbac/__tests__/core-permission-logic.test.ts +0 -966
- package/src/rbac/__tests__/edge-cases-comprehensive.test.ts +0 -988
- package/src/rbac/__tests__/edge-cases.test.ts +0 -654
- package/src/rbac/__tests__/engine.test.ts +0 -361
- package/src/rbac/__tests__/engine.unit.test.ts +0 -361
- package/src/rbac/__tests__/hooks.enhanced.test.tsx +0 -979
- package/src/rbac/__tests__/hooks.fixed.test.tsx +0 -475
- package/src/rbac/__tests__/hooks.test.tsx +0 -385
- package/src/rbac/__tests__/index.test.ts +0 -269
- package/src/rbac/__tests__/integration.enhanced.test.tsx +0 -824
- package/src/rbac/__tests__/page-permission-guard-super-admin.test.tsx +0 -261
- package/src/rbac/__tests__/performance.enhanced.test.tsx +0 -724
- package/src/rbac/__tests__/permissions.test.ts +0 -383
- package/src/rbac/__tests__/requires-event.test.ts +0 -330
- package/src/rbac/__tests__/scope-isolation-comprehensive.test.ts +0 -1349
- package/src/rbac/__tests__/scope-isolation.test.ts +0 -755
- package/src/rbac/__tests__/secure-client-rls-comprehensive.test.ts +0 -592
- package/src/rbac/__tests__/secure-client-rls.test.ts +0 -377
- package/src/rbac/__tests__/security.test.ts +0 -296
- package/src/rbac/__tests__/setup.ts +0 -228
- package/src/rbac/__tests__/test-utils-enhanced.tsx +0 -400
- package/src/rbac/__tests__/types.test.ts +0 -685
- package/src/rbac/adapters.tsx +0 -726
- package/src/rbac/api.ts +0 -339
- package/src/rbac/audit-enhanced.ts +0 -339
- package/src/rbac/audit.ts +0 -338
- package/src/rbac/cache.ts +0 -215
- package/src/rbac/components/EnhancedNavigationMenu.tsx +0 -294
- package/src/rbac/components/NavigationGuard.tsx +0 -294
- package/src/rbac/components/NavigationProvider.tsx +0 -314
- package/src/rbac/components/PagePermissionGuard.tsx +0 -430
- package/src/rbac/components/PagePermissionProvider.tsx +0 -274
- package/src/rbac/components/PermissionEnforcer.tsx +0 -307
- package/src/rbac/components/RoleBasedRouter.tsx +0 -425
- package/src/rbac/components/SecureDataProvider.tsx +0 -319
- package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -631
- package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -667
- package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -647
- package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -496
- package/src/rbac/components/index.ts +0 -64
- package/src/rbac/config.ts +0 -133
- package/src/rbac/docs/event-based-apps.md +0 -285
- package/src/rbac/engine.ts +0 -1026
- package/src/rbac/eslint-rules.js +0 -285
- package/src/rbac/examples/CompleteRBACExample.tsx +0 -323
- package/src/rbac/examples/EventBasedApp.tsx +0 -238
- package/src/rbac/hooks.ts +0 -570
- package/src/rbac/index.ts +0 -114
- package/src/rbac/permissions.ts +0 -293
- package/src/rbac/secureClient.ts +0 -244
- package/src/rbac/security.ts +0 -346
- package/src/rbac/testing/__tests__/index.test.tsx +0 -342
- package/src/rbac/testing/index.tsx +0 -340
- package/src/rbac/types.ts +0 -343
- package/src/rbac/utils/__tests__/eventContext.test.ts +0 -428
- package/src/rbac/utils/__tests__/eventContext.unit.test.ts +0 -428
- package/src/rbac/utils/eventContext.ts +0 -83
- package/src/styles/__tests__/styles.unit.test.ts +0 -164
- package/src/styles/core.css +0 -422
- package/src/styles/index.ts +0 -51
- package/src/test-dom-cleanup.test.tsx +0 -38
- package/src/theming/__tests__/README.md +0 -335
- package/src/theming/__tests__/runtime.accessibility.test.ts +0 -474
- package/src/theming/__tests__/runtime.error.test.ts +0 -616
- package/src/theming/__tests__/runtime.integration.test.ts +0 -376
- package/src/theming/__tests__/runtime.performance.test.ts +0 -411
- package/src/theming/__tests__/runtime.unit.test.ts +0 -470
- package/src/theming/runtime.ts +0 -187
- package/src/types/__tests__/database.unit.test.ts +0 -489
- package/src/types/__tests__/guards.unit.test.ts +0 -146
- package/src/types/__tests__/index.unit.test.ts +0 -77
- package/src/types/__tests__/organisation.unit.test.ts +0 -713
- package/src/types/__tests__/rbac.unit.test.ts +0 -621
- package/src/types/__tests__/security.unit.test.ts +0 -347
- package/src/types/__tests__/supabase.unit.test.ts +0 -658
- package/src/types/__tests__/theme.unit.test.ts +0 -218
- package/src/types/__tests__/unified.unit.test.ts +0 -537
- package/src/types/__tests__/validation.unit.test.ts +0 -616
- package/src/types/database.ts +0 -472
- package/src/types/guards.ts +0 -30
- package/src/types/index.ts +0 -25
- package/src/types/organisation.ts +0 -184
- package/src/types/security.ts +0 -70
- package/src/types/supabase.ts +0 -166
- package/src/types/theme.ts +0 -6
- package/src/types/unified.ts +0 -262
- package/src/types/validation.ts +0 -164
- package/src/types/vitest-globals.d.ts +0 -43
- package/src/utils/__mocks__/supabaseMock.ts +0 -75
- package/src/utils/__mocks__/supabaseMock.tsx +0 -198
- package/src/utils/__tests__/appConfig.unit.test.ts +0 -55
- package/src/utils/__tests__/appNameResolver.unit.test.ts +0 -137
- package/src/utils/__tests__/audit.unit.test.ts +0 -69
- package/src/utils/__tests__/auth-utils.unit.test.ts +0 -70
- package/src/utils/__tests__/bundleAnalysis.unit.test.ts +0 -317
- package/src/utils/__tests__/cn.unit.test.ts +0 -34
- package/src/utils/__tests__/deviceFingerprint.unit.test.ts +0 -480
- package/src/utils/__tests__/dynamicUtils.unit.test.ts +0 -322
- package/src/utils/__tests__/formatDate.unit.test.ts +0 -109
- package/src/utils/__tests__/formatting.unit.test.ts +0 -66
- package/src/utils/__tests__/index.unit.test.ts +0 -251
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +0 -304
- package/src/utils/__tests__/organisationContext.unit.test.ts +0 -192
- package/src/utils/__tests__/performanceBudgets.unit.test.ts +0 -259
- package/src/utils/__tests__/permissionTypes.unit.test.ts +0 -250
- package/src/utils/__tests__/permissionUtils.unit.test.ts +0 -362
- package/src/utils/__tests__/sanitization.unit.test.ts +0 -346
- package/src/utils/__tests__/schemaUtils.unit.test.ts +0 -441
- package/src/utils/__tests__/secureDataAccess.unit.test.ts +0 -334
- package/src/utils/__tests__/secureErrors.unit.test.ts +0 -377
- package/src/utils/__tests__/secureStorage.unit.test.ts +0 -293
- package/src/utils/__tests__/security.unit.test.ts +0 -127
- package/src/utils/__tests__/securityMonitor.unit.test.ts +0 -280
- package/src/utils/__tests__/sessionTracking.unit.test.ts +0 -370
- package/src/utils/__tests__/validation.unit.test.ts +0 -84
- package/src/utils/__tests__/validationUtils.unit.test.ts +0 -571
- package/src/utils/appConfig.ts +0 -47
- package/src/utils/appIdResolver.ts +0 -130
- package/src/utils/appNameResolver.ts +0 -190
- package/src/utils/audit.ts +0 -127
- package/src/utils/auth-utils.ts +0 -96
- package/src/utils/bundleAnalysis.ts +0 -129
- package/src/utils/cn.ts +0 -7
- package/src/utils/debugLogger.ts +0 -46
- package/src/utils/deviceFingerprint.ts +0 -215
- package/src/utils/dynamicUtils.ts +0 -105
- package/src/utils/formatting.ts +0 -77
- package/src/utils/index.ts +0 -145
- package/src/utils/lazyLoad.tsx +0 -44
- package/src/utils/organisationContext.ts +0 -135
- package/src/utils/performanceBenchmark.ts +0 -64
- package/src/utils/performanceBudgets.ts +0 -111
- package/src/utils/permissionTypes.ts +0 -37
- package/src/utils/permissionUtils.ts +0 -31
- package/src/utils/print/PrintDataProcessor.ts +0 -390
- package/src/utils/print/__tests__/PrintDataProcessor.unit.test.ts +0 -219
- package/src/utils/print/__tests__/usePrintOptimization.unit.test.tsx +0 -353
- package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +0 -397
- package/src/utils/print/index.ts +0 -29
- package/src/utils/print/types.ts +0 -196
- package/src/utils/print/usePrintOptimization.ts +0 -272
- package/src/utils/sanitization.ts +0 -264
- package/src/utils/schemaUtils.ts +0 -37
- package/src/utils/secureDataAccess.ts +0 -361
- package/src/utils/secureErrors.ts +0 -79
- package/src/utils/secureStorage.ts +0 -244
- package/src/utils/security.ts +0 -156
- package/src/utils/securityMonitor.ts +0 -45
- package/src/utils/sessionTracking.ts +0 -170
- package/src/utils/storage/README.md +0 -348
- package/src/utils/storage/__tests__/config.unit.test.ts +0 -206
- package/src/utils/storage/__tests__/helpers.unit.test.ts +0 -648
- package/src/utils/storage/__tests__/index.unit.test.ts +0 -167
- package/src/utils/storage/__tests__/types.unit.test.ts +0 -441
- package/src/utils/storage/config.ts +0 -100
- package/src/utils/storage/helpers.ts +0 -359
- package/src/utils/storage/index.ts +0 -36
- package/src/utils/storage/types.ts +0 -90
- package/src/utils/validation.ts +0 -111
- package/src/utils/validationUtils.ts +0 -120
- package/src/validation/__tests__/common.unit.test.ts +0 -101
- package/src/validation/__tests__/csrf.unit.test.ts +0 -302
- package/src/validation/__tests__/passwordSchema.unit.test.ts +0 -98
- package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +0 -466
- package/src/validation/common.ts +0 -53
- package/src/validation/csrf.ts +0 -214
- package/src/validation/index.ts +0 -43
- package/src/validation/passwordSchema.ts +0 -125
- package/src/validation/sanitization.ts +0 -96
- package/src/validation/schemaUtils.ts +0 -42
- package/src/validation/sqlInjectionProtection.ts +0 -242
- package/src/validation/user.ts +0 -34
- package/dist/{DataTable-EEUDXPE5.js.map → DataTable-2LB6HI6V.js.map} +0 -0
- package/dist/{api-ETQ6YJ3C.js.map → api-AIJ3IJX3.js.map} +0 -0
- package/dist/{appNameResolver-7GHF5ED2.js.map → audit-PD5L5ZSC.js.map} +0 -0
- package/dist/{audit-BUW3LMJB.js.map → chunk-DC5AMYBS.js.map} +0 -0
- package/dist/{validation-PM_iOaTI.d.ts → validation-D2-NNCCE.d.ts} +6 -6
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# Components API Reference
|
|
2
2
|
|
|
3
|
-
> **📚 Complete API Reference** | [← Back to Documentation](../README.md) | [↑ Table of Contents](#table-of-contents)
|
|
4
|
-
|
|
5
3
|
This section provides detailed API documentation for all UI components in `@jmruthers/pace-core`.
|
|
6
4
|
|
|
7
5
|
## Button
|
|
@@ -68,33 +66,6 @@ A comprehensive, enterprise-grade data table with advanced features and performa
|
|
|
68
66
|
### Props
|
|
69
67
|
|
|
70
68
|
```typescript
|
|
71
|
-
interface DataTableFeatureConfig {
|
|
72
|
-
// Search and filtering
|
|
73
|
-
search?: boolean;
|
|
74
|
-
filtering?: boolean;
|
|
75
|
-
|
|
76
|
-
// Pagination and sorting
|
|
77
|
-
pagination?: boolean;
|
|
78
|
-
sorting?: boolean;
|
|
79
|
-
|
|
80
|
-
// Row operations
|
|
81
|
-
selection?: boolean;
|
|
82
|
-
creation?: boolean;
|
|
83
|
-
editing?: boolean;
|
|
84
|
-
deletion?: boolean;
|
|
85
|
-
deleteSelected?: boolean;
|
|
86
|
-
|
|
87
|
-
// Data operations
|
|
88
|
-
export?: boolean;
|
|
89
|
-
import?: boolean;
|
|
90
|
-
|
|
91
|
-
// Advanced features
|
|
92
|
-
grouping?: boolean;
|
|
93
|
-
columnVisibility?: boolean;
|
|
94
|
-
columnReordering?: boolean;
|
|
95
|
-
autoColumnSizing?: boolean;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
69
|
interface DataTableProps<TData extends DataRecord> {
|
|
99
70
|
// Core data
|
|
100
71
|
data: TData[];
|
|
@@ -106,9 +77,6 @@ interface DataTableProps<TData extends DataRecord> {
|
|
|
106
77
|
variant?: 'default' | 'compact' | 'spacious';
|
|
107
78
|
className?: string;
|
|
108
79
|
|
|
109
|
-
// Column ordering
|
|
110
|
-
columnOrder?: string[];
|
|
111
|
-
|
|
112
80
|
// Feature configuration (required)
|
|
113
81
|
features: DataTableFeatureConfig;
|
|
114
82
|
|
|
@@ -127,79 +95,6 @@ interface DataTableProps<TData extends DataRecord> {
|
|
|
127
95
|
// Utilities
|
|
128
96
|
getRowId?: GetRowId<TData>;
|
|
129
97
|
emptyState?: EmptyStateConfig;
|
|
130
|
-
|
|
131
|
-
// Hierarchical configuration
|
|
132
|
-
hierarchical?: HierarchicalConfig;
|
|
133
|
-
}
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### HierarchicalConfig
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
interface HierarchicalConfig {
|
|
140
|
-
/** Enable/disable hierarchical functionality */
|
|
141
|
-
enabled: boolean;
|
|
142
|
-
/** Initial expansion state - false = all collapsed, true = all expanded, string[] = specific IDs */
|
|
143
|
-
defaultExpanded?: boolean | string[];
|
|
144
|
-
/** Callback when expansion state changes */
|
|
145
|
-
onExpandedChange?: (expandedIds: string[]) => void;
|
|
146
|
-
/** Custom expand/collapse button component */
|
|
147
|
-
expandButton?: React.ComponentType<ExpandButtonProps>;
|
|
148
|
-
/** Indentation for child rows in pixels */
|
|
149
|
-
indentSize?: number;
|
|
150
|
-
/** CSS classes for parent rows */
|
|
151
|
-
parentRowClassName?: string;
|
|
152
|
-
/** CSS classes for child rows */
|
|
153
|
-
childRowClassName?: string;
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### DataTableColumn (Hierarchical Properties)
|
|
158
|
-
|
|
159
|
-
```typescript
|
|
160
|
-
interface DataTableColumn<TData> {
|
|
161
|
-
// ... standard column properties
|
|
162
|
-
|
|
163
|
-
// Hierarchical-specific properties
|
|
164
|
-
/** Custom renderer for parent rows */
|
|
165
|
-
renderForParent?: (row: TData) => React.ReactNode;
|
|
166
|
-
/** Custom renderer for child rows */
|
|
167
|
-
renderForChild?: (row: TData) => React.ReactNode;
|
|
168
|
-
/** Hide this column for parent rows */
|
|
169
|
-
hideForParent?: boolean;
|
|
170
|
-
/** Hide this column for child rows */
|
|
171
|
-
hideForChild?: boolean;
|
|
172
|
-
}
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
### DataTableAction
|
|
176
|
-
|
|
177
|
-
```typescript
|
|
178
|
-
interface DataTableAction<TData extends DataRecord> {
|
|
179
|
-
/** Display label for the action */
|
|
180
|
-
label: string;
|
|
181
|
-
/** Icon component */
|
|
182
|
-
icon?: React.ComponentType<{ className?: string }>;
|
|
183
|
-
/** Action handler */
|
|
184
|
-
onClick: (row: TData) => void;
|
|
185
|
-
/** Visual variant */
|
|
186
|
-
variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost';
|
|
187
|
-
/** Whether action is disabled */
|
|
188
|
-
disabled?: (row: TData) => boolean;
|
|
189
|
-
/** Test ID for testing */
|
|
190
|
-
testId?: string;
|
|
191
|
-
/** Whether this action should only show for parent rows (hierarchical mode) */
|
|
192
|
-
showForParent?: boolean;
|
|
193
|
-
/** Whether this action should only show for child rows (hierarchical mode) */
|
|
194
|
-
showForChild?: boolean;
|
|
195
|
-
/** Icon component for parent rows (overrides icon when showForParent is true) */
|
|
196
|
-
parentIcon?: React.ComponentType<{ className?: string }>;
|
|
197
|
-
/** Icon component for child rows (overrides icon when showForChild is true) */
|
|
198
|
-
childIcon?: React.ComponentType<{ className?: string }>;
|
|
199
|
-
/** Label for parent rows (overrides label when showForParent is true) */
|
|
200
|
-
parentLabel?: string;
|
|
201
|
-
/** Label for child rows (overrides label when showForChild is true) */
|
|
202
|
-
childLabel?: string;
|
|
203
98
|
}
|
|
204
99
|
```
|
|
205
100
|
|
|
@@ -242,8 +137,8 @@ const columns: DataTableColumn<User>[] = [
|
|
|
242
137
|
cell: ({ row }) => (
|
|
243
138
|
<span className={`px-2 py-1 rounded text-xs ${
|
|
244
139
|
row.original.status === 'active'
|
|
245
|
-
? 'bg-
|
|
246
|
-
: 'bg-
|
|
140
|
+
? 'bg-green-100 text-green-800'
|
|
141
|
+
: 'bg-red-100 text-red-800'
|
|
247
142
|
}`}>
|
|
248
143
|
{row.original.status}
|
|
249
144
|
</span>
|
|
@@ -264,9 +159,7 @@ const columns: DataTableColumn<User>[] = [
|
|
|
264
159
|
creation: true,
|
|
265
160
|
editing: true,
|
|
266
161
|
deletion: true,
|
|
267
|
-
autoColumnSizing: true, // Enable automatic column width adjustment
|
|
268
162
|
}}
|
|
269
|
-
columnOrder={['name', 'email', 'role', 'status']} // Control column order
|
|
270
163
|
onEditRow={handleEdit}
|
|
271
164
|
onDeleteRow={handleDelete}
|
|
272
165
|
onCreateRow={handleCreate}
|
|
@@ -277,11 +170,9 @@ const columns: DataTableColumn<User>[] = [
|
|
|
277
170
|
|
|
278
171
|
- **🚀 Performance**: Virtual scrolling, smart pagination, memory optimization
|
|
279
172
|
- **📊 Data Management**: Sorting, filtering, search, export/import
|
|
280
|
-
- **🌳 Hierarchical Rows**: Parent/child relationships with expand/collapse all
|
|
281
173
|
- **✏️ Editing**: Inline row editing, creation, and deletion
|
|
282
174
|
- **🎯 Actions**: Custom row actions and toolbar buttons
|
|
283
175
|
- **📈 Grouping**: Data grouping with aggregation functions
|
|
284
|
-
- **📏 Auto Sizing**: Automatic column width adjustment based on content
|
|
285
176
|
- **🎨 Customization**: Column visibility, responsive design
|
|
286
177
|
- **♿ Accessibility**: WCAG 2.1 AA compliant with keyboard navigation
|
|
287
178
|
- **🔧 TypeScript**: Full TypeScript support with strict typing
|
|
@@ -338,7 +229,7 @@ const userSchema = z.object({
|
|
|
338
229
|
|
|
339
230
|
## Dialog
|
|
340
231
|
|
|
341
|
-
A
|
|
232
|
+
A modal dialog component with backdrop and focus management.
|
|
342
233
|
|
|
343
234
|
### Props
|
|
344
235
|
|
|
@@ -352,89 +243,17 @@ interface DialogProps {
|
|
|
352
243
|
interface DialogContentProps {
|
|
353
244
|
children: React.ReactNode;
|
|
354
245
|
className?: string;
|
|
355
|
-
|
|
356
|
-
size?: 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'auto';
|
|
357
|
-
/** Whether to show the close button */
|
|
358
|
-
showCloseButton?: boolean;
|
|
359
|
-
/** Custom className for the overlay */
|
|
360
|
-
overlayClassName?: string;
|
|
361
|
-
/** Whether to prevent closing on escape key */
|
|
362
|
-
preventCloseOnEscape?: boolean;
|
|
363
|
-
/** Whether to prevent closing on outside click */
|
|
364
|
-
preventCloseOnOutsideClick?: boolean;
|
|
365
|
-
/** Maximum height as percentage of viewport height (0-100) */
|
|
366
|
-
maxHeightPercent?: number;
|
|
367
|
-
/** Maximum width as percentage of viewport width (0-100) */
|
|
368
|
-
maxWidthPercent?: number;
|
|
369
|
-
/** Enable smart scrolling with sticky header/footer */
|
|
370
|
-
enableScrolling?: boolean;
|
|
371
|
-
/** Custom max height in CSS units (overrides maxHeightPercent) */
|
|
372
|
-
maxHeight?: string;
|
|
373
|
-
/** Custom max width in CSS units (overrides maxWidthPercent and size) */
|
|
374
|
-
maxWidth?: string;
|
|
375
|
-
/** Minimum height in CSS units */
|
|
376
|
-
minHeight?: string;
|
|
377
|
-
/** Minimum width in CSS units */
|
|
378
|
-
minWidth?: string;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
interface DialogHeaderProps {
|
|
382
|
-
children: React.ReactNode;
|
|
383
|
-
className?: string;
|
|
384
|
-
/** Whether this header should be sticky when scrolling is enabled */
|
|
385
|
-
sticky?: boolean;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
interface DialogBodyProps {
|
|
389
|
-
children: React.ReactNode;
|
|
390
|
-
className?: string;
|
|
391
|
-
/** Custom max height for the scrollable area */
|
|
392
|
-
maxHeight?: string;
|
|
393
|
-
/** HTML content to render (will be sanitized for security) */
|
|
394
|
-
htmlContent?: string;
|
|
395
|
-
/** Whether to allow HTML content rendering (default: true) */
|
|
396
|
-
allowHtml?: boolean;
|
|
397
|
-
/** Whether to use strict HTML sanitization (default: true) */
|
|
398
|
-
strictSanitization?: boolean;
|
|
399
|
-
/** Whether to log HTML sanitization warnings to console (default: false) */
|
|
400
|
-
logWarnings?: boolean;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
interface DialogFooterProps {
|
|
404
|
-
children: React.ReactNode;
|
|
405
|
-
className?: string;
|
|
406
|
-
/** Whether this footer should be sticky when scrolling is enabled */
|
|
407
|
-
sticky?: boolean;
|
|
246
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
408
247
|
}
|
|
409
248
|
|
|
410
249
|
interface DialogTriggerProps {
|
|
411
250
|
children: React.ReactNode;
|
|
412
251
|
asChild?: boolean;
|
|
413
252
|
}
|
|
414
|
-
|
|
415
|
-
interface DialogTitleProps {
|
|
416
|
-
children: React.ReactNode;
|
|
417
|
-
className?: string;
|
|
418
|
-
/** HTML content to render as title (will be sanitized for security) */
|
|
419
|
-
htmlContent?: string;
|
|
420
|
-
/** Whether to allow HTML content rendering (default: true) */
|
|
421
|
-
allowHtml?: boolean;
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
interface DialogDescriptionProps {
|
|
425
|
-
children: React.ReactNode;
|
|
426
|
-
className?: string;
|
|
427
|
-
/** HTML content to render as description (will be sanitized for security) */
|
|
428
|
-
htmlContent?: string;
|
|
429
|
-
/** Whether to allow HTML content rendering (default: true) */
|
|
430
|
-
allowHtml?: boolean;
|
|
431
|
-
}
|
|
432
253
|
```
|
|
433
254
|
|
|
434
255
|
### Usage
|
|
435
256
|
|
|
436
|
-
#### Basic Dialog
|
|
437
|
-
|
|
438
257
|
```tsx
|
|
439
258
|
import {
|
|
440
259
|
Dialog,
|
|
@@ -443,7 +262,6 @@ import {
|
|
|
443
262
|
DialogHeader,
|
|
444
263
|
DialogTitle,
|
|
445
264
|
DialogDescription,
|
|
446
|
-
DialogBody,
|
|
447
265
|
DialogFooter,
|
|
448
266
|
Button
|
|
449
267
|
} from '@jmruthers/pace-core';
|
|
@@ -452,104 +270,19 @@ import {
|
|
|
452
270
|
<DialogTrigger asChild>
|
|
453
271
|
<Button>Open Dialog</Button>
|
|
454
272
|
</DialogTrigger>
|
|
455
|
-
<DialogContent
|
|
273
|
+
<DialogContent>
|
|
456
274
|
<DialogHeader>
|
|
457
|
-
<DialogTitle>
|
|
458
|
-
<DialogDescription>
|
|
459
|
-
Make changes to your profile here. Click save when you're done.
|
|
460
|
-
</DialogDescription>
|
|
461
|
-
</DialogHeader>
|
|
462
|
-
<DialogBody>
|
|
463
|
-
<section className="space-y-4">
|
|
464
|
-
<p>Your content goes here...</p>
|
|
465
|
-
</section>
|
|
466
|
-
</DialogBody>
|
|
467
|
-
<DialogFooter>
|
|
468
|
-
<Button variant="outline">Cancel</Button>
|
|
469
|
-
<Button>Save changes</Button>
|
|
470
|
-
</DialogFooter>
|
|
471
|
-
</DialogContent>
|
|
472
|
-
</Dialog>
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
#### Scrollable Dialog with Sticky Elements
|
|
476
|
-
|
|
477
|
-
```tsx
|
|
478
|
-
<Dialog>
|
|
479
|
-
<DialogTrigger asChild>
|
|
480
|
-
<Button>Scrollable Dialog</Button>
|
|
481
|
-
</DialogTrigger>
|
|
482
|
-
<DialogContent
|
|
483
|
-
size="lg"
|
|
484
|
-
enableScrolling={true}
|
|
485
|
-
maxHeightPercent={80}
|
|
486
|
-
>
|
|
487
|
-
<DialogHeader sticky={true}>
|
|
488
|
-
<DialogTitle>Large Content Dialog</DialogTitle>
|
|
275
|
+
<DialogTitle>Example Dialog</DialogTitle>
|
|
489
276
|
<DialogDescription>
|
|
490
|
-
This
|
|
277
|
+
This is a dialog component with proper accessibility.
|
|
491
278
|
</DialogDescription>
|
|
492
279
|
</DialogHeader>
|
|
493
|
-
<
|
|
494
|
-
<
|
|
495
|
-
|
|
496
|
-
<article key={i}>
|
|
497
|
-
<h4>Content Item {i + 1}</h4>
|
|
498
|
-
<p>This is semantic content within the dialog body.</p>
|
|
499
|
-
</article>
|
|
500
|
-
))}
|
|
501
|
-
</section>
|
|
502
|
-
</DialogBody>
|
|
503
|
-
<DialogFooter sticky={true}>
|
|
504
|
-
<Button>Save</Button>
|
|
505
|
-
</DialogFooter>
|
|
506
|
-
</DialogContent>
|
|
507
|
-
</Dialog>
|
|
508
|
-
```
|
|
509
|
-
|
|
510
|
-
#### Auto-Sizing Dialog
|
|
511
|
-
|
|
512
|
-
```tsx
|
|
513
|
-
<Dialog>
|
|
514
|
-
<DialogTrigger asChild>
|
|
515
|
-
<Button>Auto Size Dialog</Button>
|
|
516
|
-
</DialogTrigger>
|
|
517
|
-
<DialogContent size="auto">
|
|
518
|
-
<DialogHeader>
|
|
519
|
-
<DialogTitle>Auto-Sized Dialog</DialogTitle>
|
|
520
|
-
<DialogDescription>
|
|
521
|
-
This dialog automatically adjusts its width to fit the content.
|
|
522
|
-
</DialogDescription>
|
|
523
|
-
</DialogHeader>
|
|
524
|
-
<DialogBody>
|
|
525
|
-
<section>
|
|
526
|
-
<p>Content that determines the dialog width...</p>
|
|
527
|
-
</section>
|
|
528
|
-
</DialogBody>
|
|
529
|
-
</DialogContent>
|
|
530
|
-
</Dialog>
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
#### HTML Content Dialog
|
|
534
|
-
|
|
535
|
-
```tsx
|
|
536
|
-
<Dialog>
|
|
537
|
-
<DialogTrigger asChild>
|
|
538
|
-
<Button>Import Instructions</Button>
|
|
539
|
-
</DialogTrigger>
|
|
540
|
-
<DialogContent size="lg">
|
|
541
|
-
<DialogHeader>
|
|
542
|
-
<DialogTitle htmlContent="Import Dishes or Recipes" />
|
|
543
|
-
<DialogDescription htmlContent="Follow the <strong>instructions below</strong> to upload your CSV file." />
|
|
544
|
-
</DialogHeader>
|
|
545
|
-
<DialogBody
|
|
546
|
-
htmlContent="<h2>Required Columns</h2><ul><li><code>dish_code</code></li><li><code>dish_name</code></li><li><code>mealtype_name</code></li></ul><p><strong>Note:</strong> All HTML content is automatically sanitized for security.</p>"
|
|
547
|
-
allowHtml={true}
|
|
548
|
-
strictSanitization={true}
|
|
549
|
-
/>
|
|
280
|
+
<div>
|
|
281
|
+
<p>Dialog content goes here</p>
|
|
282
|
+
</div>
|
|
550
283
|
<DialogFooter>
|
|
551
284
|
<Button variant="outline">Cancel</Button>
|
|
552
|
-
<Button>
|
|
285
|
+
<Button>Confirm</Button>
|
|
553
286
|
</DialogFooter>
|
|
554
287
|
</DialogContent>
|
|
555
288
|
</Dialog>
|
|
@@ -557,33 +290,12 @@ import {
|
|
|
557
290
|
|
|
558
291
|
### Features
|
|
559
292
|
|
|
560
|
-
|
|
561
|
-
- **
|
|
562
|
-
- **
|
|
563
|
-
- **
|
|
564
|
-
- **
|
|
565
|
-
- **
|
|
566
|
-
|
|
567
|
-
#### Advanced Features
|
|
568
|
-
- **Smart Height Management**: Automatic viewport-based height constraints
|
|
569
|
-
- **Scrollable Content**: Long content scrolls while keeping headers/footers visible
|
|
570
|
-
- **Sticky Headers/Footers**: Important UI elements remain accessible during scrolling
|
|
571
|
-
- **HTML Content Rendering**: Safe HTML content with automatic sanitization
|
|
572
|
-
- **Multiple Size Variants**: sm, md, lg, xl, full, auto sizing options
|
|
573
|
-
- **Custom Dimensions**: Fine-grained control over width and height
|
|
574
|
-
- **Configurable Close Behavior**: Control escape key and outside click behavior
|
|
575
|
-
- **Smooth Animations**: Polished transitions and micro-interactions
|
|
576
|
-
|
|
577
|
-
### Size Variants
|
|
578
|
-
|
|
579
|
-
| Size | Max Width | Use Case |
|
|
580
|
-
|------|-----------|----------|
|
|
581
|
-
| `sm` | 384px | Simple confirmations, alerts |
|
|
582
|
-
| `md` | 448px | Standard forms, basic content |
|
|
583
|
-
| `lg` | 512px | Complex forms, detailed content |
|
|
584
|
-
| `xl` | 576px | Large forms, data tables |
|
|
585
|
-
| `full` | 100% | Full screen experiences |
|
|
586
|
-
| `auto` | Content-based | Dynamic content sizing |
|
|
293
|
+
- **Focus Management**: Automatically manages focus
|
|
294
|
+
- **Backdrop Click**: Click outside to close
|
|
295
|
+
- **Escape Key**: Press Escape to close
|
|
296
|
+
- **Accessible**: ARIA attributes and keyboard navigation
|
|
297
|
+
- **Responsive**: Adapts to screen size
|
|
298
|
+
- **Composition**: Flexible component composition
|
|
587
299
|
|
|
588
300
|
## Select
|
|
589
301
|
|
|
@@ -806,7 +518,7 @@ import { LoadingSpinner } from '@jmruthers/pace-core';
|
|
|
806
518
|
// With custom styling
|
|
807
519
|
<LoadingSpinner
|
|
808
520
|
size="lg"
|
|
809
|
-
className="text-
|
|
521
|
+
className="text-blue-500"
|
|
810
522
|
/>
|
|
811
523
|
|
|
812
524
|
// In a button
|
|
@@ -949,7 +661,7 @@ import {
|
|
|
949
661
|
<TooltipTrigger asChild>
|
|
950
662
|
<Button>Advanced Tooltip</Button>
|
|
951
663
|
</TooltipTrigger>
|
|
952
|
-
<TooltipContent side="top" className="bg-
|
|
664
|
+
<TooltipContent side="top" className="bg-blue-500 text-white">
|
|
953
665
|
<div className="space-y-1">
|
|
954
666
|
<p className="font-semibold">Advanced Tooltip</p>
|
|
955
667
|
<p className="text-xs">With custom styling</p>
|
|
@@ -988,6 +700,23 @@ applyPalette({
|
|
|
988
700
|
clearPalette();
|
|
989
701
|
```
|
|
990
702
|
|
|
703
|
+
### Dark Mode Toggle
|
|
704
|
+
|
|
705
|
+
For dark mode functionality, add a toggle to your app:
|
|
706
|
+
|
|
707
|
+
```tsx
|
|
708
|
+
function DarkModeToggle() {
|
|
709
|
+
const toggleDarkMode = () => {
|
|
710
|
+
document.documentElement.toggleAttribute('data-mode', true);
|
|
711
|
+
};
|
|
712
|
+
|
|
713
|
+
return (
|
|
714
|
+
<button onClick={toggleDarkMode}>
|
|
715
|
+
Toggle Dark Mode
|
|
716
|
+
</button>
|
|
717
|
+
);
|
|
718
|
+
}
|
|
719
|
+
```
|
|
991
720
|
|
|
992
721
|
## Layout Components
|
|
993
722
|
|
|
@@ -1033,121 +762,18 @@ import { Footer } from '@jmruthers/pace-core';
|
|
|
1033
762
|
|
|
1034
763
|
### NavigationMenu
|
|
1035
764
|
|
|
1036
|
-
A
|
|
1037
|
-
|
|
1038
|
-
```typescript
|
|
1039
|
-
interface NavigationMenuProps {
|
|
1040
|
-
items: NavigationItem[];
|
|
1041
|
-
mode?: 'dropdown' | 'hierarchical';
|
|
1042
|
-
currentPath?: string;
|
|
1043
|
-
onNavigate?: (item: NavigationItem) => void;
|
|
1044
|
-
className?: string;
|
|
1045
|
-
disabled?: boolean;
|
|
1046
|
-
buttonText?: string;
|
|
1047
|
-
showIcons?: boolean;
|
|
1048
|
-
navigationLabel?: string;
|
|
1049
|
-
strictMode?: boolean;
|
|
1050
|
-
auditLog?: boolean;
|
|
1051
|
-
onNavigationAccessDenied?: (itemId: string, reason: string) => void;
|
|
1052
|
-
onStrictModeViolation?: (itemId: string, reason: string) => void;
|
|
1053
|
-
filterByPermissions?: boolean;
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
interface NavigationItem {
|
|
1057
|
-
id: string;
|
|
1058
|
-
label: string;
|
|
1059
|
-
href?: string;
|
|
1060
|
-
icon?: string;
|
|
1061
|
-
children?: NavigationItem[];
|
|
1062
|
-
isActive?: boolean;
|
|
1063
|
-
permissions?: string[];
|
|
1064
|
-
roles?: string[];
|
|
1065
|
-
accessLevel?: string;
|
|
1066
|
-
pageId?: string;
|
|
1067
|
-
strictMode?: boolean;
|
|
1068
|
-
meta?: {
|
|
1069
|
-
title?: string;
|
|
1070
|
-
description?: string;
|
|
1071
|
-
hidden?: boolean;
|
|
1072
|
-
order?: number;
|
|
1073
|
-
};
|
|
1074
|
-
}
|
|
1075
|
-
```
|
|
1076
|
-
|
|
1077
|
-
#### Usage
|
|
765
|
+
A navigation menu component with permission filtering.
|
|
1078
766
|
|
|
1079
|
-
**Basic Usage:**
|
|
1080
767
|
```tsx
|
|
1081
768
|
import { NavigationMenu } from '@jmruthers/pace-core';
|
|
1082
769
|
|
|
1083
|
-
|
|
1084
|
-
{
|
|
1085
|
-
{
|
|
1086
|
-
{
|
|
1087
|
-
];
|
|
1088
|
-
|
|
1089
|
-
<NavigationMenu
|
|
1090
|
-
items={navItems}
|
|
1091
|
-
mode="dropdown"
|
|
1092
|
-
currentPath={location.pathname}
|
|
1093
|
-
onNavigate={(item) => navigate(item.href)}
|
|
1094
|
-
buttonText="Menu"
|
|
1095
|
-
showIcons={true}
|
|
770
|
+
<NavigationMenu
|
|
771
|
+
items={navigationItems}
|
|
772
|
+
currentPath={pathname}
|
|
773
|
+
onNavigate={handleNavigate}
|
|
1096
774
|
/>
|
|
1097
775
|
```
|
|
1098
776
|
|
|
1099
|
-
**With Authentication and Permissions:**
|
|
1100
|
-
```tsx
|
|
1101
|
-
import { NavigationMenu } from '@jmruthers/pace-core';
|
|
1102
|
-
import { useUnifiedAuth } from '@jmruthers/pace-core/providers';
|
|
1103
|
-
|
|
1104
|
-
function AuthenticatedNavigation() {
|
|
1105
|
-
const { hasPermission, hasRole } = useUnifiedAuth();
|
|
1106
|
-
|
|
1107
|
-
const navItems = [
|
|
1108
|
-
{
|
|
1109
|
-
id: 'dashboard',
|
|
1110
|
-
label: 'Dashboard',
|
|
1111
|
-
href: '/dashboard',
|
|
1112
|
-
icon: 'LayoutDashboard',
|
|
1113
|
-
permissions: ['dashboard:read']
|
|
1114
|
-
},
|
|
1115
|
-
{
|
|
1116
|
-
id: 'meals',
|
|
1117
|
-
label: 'Meals',
|
|
1118
|
-
href: '/meals',
|
|
1119
|
-
icon: 'UtensilsCrossed',
|
|
1120
|
-
permissions: ['meals:read']
|
|
1121
|
-
},
|
|
1122
|
-
{
|
|
1123
|
-
id: 'admin',
|
|
1124
|
-
label: 'Admin Panel',
|
|
1125
|
-
href: '/admin',
|
|
1126
|
-
icon: 'Shield',
|
|
1127
|
-
roles: ['admin', 'super_admin']
|
|
1128
|
-
},
|
|
1129
|
-
{
|
|
1130
|
-
id: 'profile',
|
|
1131
|
-
label: 'Profile',
|
|
1132
|
-
href: '/profile',
|
|
1133
|
-
icon: 'User'
|
|
1134
|
-
}
|
|
1135
|
-
];
|
|
1136
|
-
|
|
1137
|
-
return (
|
|
1138
|
-
<NavigationMenu
|
|
1139
|
-
items={navItems}
|
|
1140
|
-
mode="dropdown"
|
|
1141
|
-
currentPath={location.pathname}
|
|
1142
|
-
onNavigate={(item) => navigate(item.href)}
|
|
1143
|
-
buttonText="Navigation"
|
|
1144
|
-
filterByPermissions={true}
|
|
1145
|
-
auditLog={true}
|
|
1146
|
-
/>
|
|
1147
|
-
);
|
|
1148
|
-
}
|
|
1149
|
-
```
|
|
1150
|
-
|
|
1151
777
|
### UserMenu
|
|
1152
778
|
|
|
1153
779
|
A user menu component with profile and logout options.
|
|
@@ -1240,323 +866,6 @@ import { PasswordChangeForm } from '@jmruthers/pace-core';
|
|
|
1240
866
|
/>
|
|
1241
867
|
```
|
|
1242
868
|
|
|
1243
|
-
## Print Components
|
|
1244
|
-
|
|
1245
|
-
PACE Core includes a comprehensive set of print-optimized components for creating reports and documents.
|
|
1246
|
-
|
|
1247
|
-
### PrintLayout
|
|
1248
|
-
|
|
1249
|
-
The main container for print documents with A4 optimization.
|
|
1250
|
-
|
|
1251
|
-
```typescript
|
|
1252
|
-
interface PrintLayoutProps {
|
|
1253
|
-
children: React.ReactNode;
|
|
1254
|
-
orientation?: 'portrait' | 'landscape';
|
|
1255
|
-
pageSize?: 'A4' | 'A3' | 'Letter';
|
|
1256
|
-
className?: string;
|
|
1257
|
-
}
|
|
1258
|
-
```
|
|
1259
|
-
|
|
1260
|
-
### PrintHeader
|
|
1261
|
-
|
|
1262
|
-
Document header with title and branding.
|
|
1263
|
-
|
|
1264
|
-
```typescript
|
|
1265
|
-
interface PrintHeaderProps {
|
|
1266
|
-
title: string;
|
|
1267
|
-
subtitle?: string;
|
|
1268
|
-
branding?: {
|
|
1269
|
-
companyName: string;
|
|
1270
|
-
projectName?: string;
|
|
1271
|
-
logo?: string;
|
|
1272
|
-
};
|
|
1273
|
-
className?: string;
|
|
1274
|
-
}
|
|
1275
|
-
```
|
|
1276
|
-
|
|
1277
|
-
### PrintDataTable
|
|
1278
|
-
|
|
1279
|
-
Print-optimized data table with pagination and styling.
|
|
1280
|
-
|
|
1281
|
-
```typescript
|
|
1282
|
-
interface PrintDataTableProps<TData> {
|
|
1283
|
-
data: TData[];
|
|
1284
|
-
columns: PrintColumn<TData>[];
|
|
1285
|
-
title?: string;
|
|
1286
|
-
showPagination?: boolean;
|
|
1287
|
-
pageSize?: number;
|
|
1288
|
-
className?: string;
|
|
1289
|
-
}
|
|
1290
|
-
```
|
|
1291
|
-
|
|
1292
|
-
### PrintCard
|
|
1293
|
-
|
|
1294
|
-
Print-optimized card component.
|
|
1295
|
-
|
|
1296
|
-
```typescript
|
|
1297
|
-
interface PrintCardProps {
|
|
1298
|
-
children: React.ReactNode;
|
|
1299
|
-
title?: string;
|
|
1300
|
-
className?: string;
|
|
1301
|
-
}
|
|
1302
|
-
```
|
|
1303
|
-
|
|
1304
|
-
### PrintSection
|
|
1305
|
-
|
|
1306
|
-
Section divider for print documents.
|
|
1307
|
-
|
|
1308
|
-
```typescript
|
|
1309
|
-
interface PrintSectionProps {
|
|
1310
|
-
children: React.ReactNode;
|
|
1311
|
-
title?: string;
|
|
1312
|
-
level?: 1 | 2 | 3;
|
|
1313
|
-
className?: string;
|
|
1314
|
-
}
|
|
1315
|
-
```
|
|
1316
|
-
|
|
1317
|
-
### PrintGrid
|
|
1318
|
-
|
|
1319
|
-
Grid layout for print documents.
|
|
1320
|
-
|
|
1321
|
-
```typescript
|
|
1322
|
-
interface PrintGridProps {
|
|
1323
|
-
children: React.ReactNode;
|
|
1324
|
-
columns?: 1 | 2 | 3 | 4;
|
|
1325
|
-
gap?: 'sm' | 'md' | 'lg';
|
|
1326
|
-
className?: string;
|
|
1327
|
-
}
|
|
1328
|
-
```
|
|
1329
|
-
|
|
1330
|
-
### PrintButton
|
|
1331
|
-
|
|
1332
|
-
Print-optimized button (appears as text in print).
|
|
1333
|
-
|
|
1334
|
-
```typescript
|
|
1335
|
-
interface PrintButtonProps {
|
|
1336
|
-
children: React.ReactNode;
|
|
1337
|
-
onClick?: () => void;
|
|
1338
|
-
className?: string;
|
|
1339
|
-
}
|
|
1340
|
-
```
|
|
1341
|
-
|
|
1342
|
-
### PrintPageBreak
|
|
1343
|
-
|
|
1344
|
-
Forces a page break in print documents.
|
|
1345
|
-
|
|
1346
|
-
```tsx
|
|
1347
|
-
<PrintPageBreak />
|
|
1348
|
-
```
|
|
1349
|
-
|
|
1350
|
-
### PrintDivider
|
|
1351
|
-
|
|
1352
|
-
Visual divider for print documents.
|
|
1353
|
-
|
|
1354
|
-
```tsx
|
|
1355
|
-
<PrintDivider />
|
|
1356
|
-
```
|
|
1357
|
-
|
|
1358
|
-
### Print Usage Example
|
|
1359
|
-
|
|
1360
|
-
```tsx
|
|
1361
|
-
import {
|
|
1362
|
-
PrintLayout,
|
|
1363
|
-
PrintHeader,
|
|
1364
|
-
PrintDataTable,
|
|
1365
|
-
PrintCard,
|
|
1366
|
-
PrintSection,
|
|
1367
|
-
PrintPageBreak
|
|
1368
|
-
} from '@jmruthers/pace-core';
|
|
1369
|
-
|
|
1370
|
-
function ReportPage() {
|
|
1371
|
-
return (
|
|
1372
|
-
<PrintLayout orientation="portrait" pageSize="A4">
|
|
1373
|
-
<PrintHeader
|
|
1374
|
-
title="Monthly Report"
|
|
1375
|
-
subtitle="Q4 2024"
|
|
1376
|
-
branding={{
|
|
1377
|
-
companyName: "Your Company",
|
|
1378
|
-
projectName: "Analytics Dashboard"
|
|
1379
|
-
}}
|
|
1380
|
-
/>
|
|
1381
|
-
|
|
1382
|
-
<PrintSection title="Executive Summary" level={1}>
|
|
1383
|
-
<PrintCard title="Key Metrics">
|
|
1384
|
-
<p>Total revenue: $1,234,567</p>
|
|
1385
|
-
<p>Growth rate: 15.3%</p>
|
|
1386
|
-
</PrintCard>
|
|
1387
|
-
</PrintSection>
|
|
1388
|
-
|
|
1389
|
-
<PrintPageBreak />
|
|
1390
|
-
|
|
1391
|
-
<PrintSection title="Detailed Data" level={1}>
|
|
1392
|
-
<PrintDataTable
|
|
1393
|
-
data={reportData}
|
|
1394
|
-
columns={columns}
|
|
1395
|
-
title="Revenue by Region"
|
|
1396
|
-
showPagination={true}
|
|
1397
|
-
pageSize={20}
|
|
1398
|
-
/>
|
|
1399
|
-
</PrintSection>
|
|
1400
|
-
</PrintLayout>
|
|
1401
|
-
);
|
|
1402
|
-
}
|
|
1403
|
-
```
|
|
1404
|
-
|
|
1405
|
-
For detailed print component usage, see [Print Components Guide](../print-components/README.md).
|
|
1406
|
-
|
|
1407
|
-
## Public Page Components
|
|
1408
|
-
|
|
1409
|
-
PACE Core includes a complete set of components for creating public pages that work independently of your main application's authentication context.
|
|
1410
|
-
|
|
1411
|
-
### PublicPageProvider
|
|
1412
|
-
|
|
1413
|
-
**Required wrapper for all public pages.** Provides environment variables and context without authentication.
|
|
1414
|
-
|
|
1415
|
-
```typescript
|
|
1416
|
-
interface PublicPageProviderProps {
|
|
1417
|
-
children: React.ReactNode;
|
|
1418
|
-
environment?: {
|
|
1419
|
-
supabaseUrl?: string;
|
|
1420
|
-
supabaseKey?: string;
|
|
1421
|
-
};
|
|
1422
|
-
}
|
|
1423
|
-
```
|
|
1424
|
-
|
|
1425
|
-
### PublicPageLayout
|
|
1426
|
-
|
|
1427
|
-
**Main layout component for public pages.** Handles event data and provides consistent styling.
|
|
1428
|
-
|
|
1429
|
-
```typescript
|
|
1430
|
-
interface PublicPageLayoutProps {
|
|
1431
|
-
eventCode: string;
|
|
1432
|
-
children: React.ReactNode;
|
|
1433
|
-
event?: Event | null;
|
|
1434
|
-
showFooter?: boolean;
|
|
1435
|
-
className?: string;
|
|
1436
|
-
errorFallback?: React.ComponentType<{ error: Error; resetError: () => void }>;
|
|
1437
|
-
loadingFallback?: React.ComponentType;
|
|
1438
|
-
customHeader?: React.ReactNode;
|
|
1439
|
-
customFooter?: React.ReactNode;
|
|
1440
|
-
showValidationErrors?: boolean;
|
|
1441
|
-
}
|
|
1442
|
-
```
|
|
1443
|
-
|
|
1444
|
-
### PublicPageHeader
|
|
1445
|
-
|
|
1446
|
-
**Header component with event branding and information.**
|
|
1447
|
-
|
|
1448
|
-
```typescript
|
|
1449
|
-
interface PublicPageHeaderProps {
|
|
1450
|
-
event: Event;
|
|
1451
|
-
eventCode: string;
|
|
1452
|
-
title?: string;
|
|
1453
|
-
description?: string;
|
|
1454
|
-
showEventLogo?: boolean;
|
|
1455
|
-
showAppLogo?: boolean;
|
|
1456
|
-
className?: string;
|
|
1457
|
-
children?: React.ReactNode;
|
|
1458
|
-
customAppLogo?: React.ReactNode;
|
|
1459
|
-
customEventLogo?: React.ReactNode;
|
|
1460
|
-
}
|
|
1461
|
-
```
|
|
1462
|
-
|
|
1463
|
-
### PublicPageFooter
|
|
1464
|
-
|
|
1465
|
-
**Footer component with event and app information.**
|
|
1466
|
-
|
|
1467
|
-
```typescript
|
|
1468
|
-
interface PublicPageFooterProps {
|
|
1469
|
-
event: Event;
|
|
1470
|
-
showEventInfo?: boolean;
|
|
1471
|
-
showCopyright?: boolean;
|
|
1472
|
-
showAppBranding?: boolean;
|
|
1473
|
-
className?: string;
|
|
1474
|
-
children?: React.ReactNode;
|
|
1475
|
-
customCopyright?: string;
|
|
1476
|
-
customAppName?: string;
|
|
1477
|
-
}
|
|
1478
|
-
```
|
|
1479
|
-
|
|
1480
|
-
### PublicLoadingSpinner
|
|
1481
|
-
|
|
1482
|
-
**Loading spinner component for public pages.**
|
|
1483
|
-
|
|
1484
|
-
```typescript
|
|
1485
|
-
interface PublicLoadingSpinnerProps {
|
|
1486
|
-
message?: string;
|
|
1487
|
-
size?: 'sm' | 'md' | 'lg';
|
|
1488
|
-
className?: string;
|
|
1489
|
-
}
|
|
1490
|
-
```
|
|
1491
|
-
|
|
1492
|
-
### PublicErrorBoundary
|
|
1493
|
-
|
|
1494
|
-
**Error boundary component for public pages.**
|
|
1495
|
-
|
|
1496
|
-
```typescript
|
|
1497
|
-
interface PublicErrorBoundaryProps {
|
|
1498
|
-
children: React.ReactNode;
|
|
1499
|
-
fallback?: React.ComponentType<{ error: Error; resetError: () => void }>;
|
|
1500
|
-
onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
|
|
1501
|
-
}
|
|
1502
|
-
```
|
|
1503
|
-
|
|
1504
|
-
### Public Page Usage Example
|
|
1505
|
-
|
|
1506
|
-
```tsx
|
|
1507
|
-
import {
|
|
1508
|
-
PublicPageProvider,
|
|
1509
|
-
PublicPageLayout,
|
|
1510
|
-
PublicPageHeader,
|
|
1511
|
-
PublicPageFooter,
|
|
1512
|
-
usePublicEvent,
|
|
1513
|
-
usePublicRouteParams,
|
|
1514
|
-
PublicLoadingSpinner
|
|
1515
|
-
} from '@jmruthers/pace-core';
|
|
1516
|
-
|
|
1517
|
-
function PublicPageApp() {
|
|
1518
|
-
return (
|
|
1519
|
-
<PublicPageProvider>
|
|
1520
|
-
<Routes>
|
|
1521
|
-
<Route path="/events/:eventCode" element={<PublicEventPage />} />
|
|
1522
|
-
</Routes>
|
|
1523
|
-
</PublicPageProvider>
|
|
1524
|
-
);
|
|
1525
|
-
}
|
|
1526
|
-
|
|
1527
|
-
function PublicEventPage() {
|
|
1528
|
-
const { eventCode } = usePublicRouteParams({ fetchEventData: false });
|
|
1529
|
-
const { event, isLoading, error } = usePublicEvent(eventCode || '');
|
|
1530
|
-
|
|
1531
|
-
if (isLoading) {
|
|
1532
|
-
return <PublicLoadingSpinner message="Loading event..." />;
|
|
1533
|
-
}
|
|
1534
|
-
|
|
1535
|
-
if (error || !event) {
|
|
1536
|
-
return <div>Event not found</div>;
|
|
1537
|
-
}
|
|
1538
|
-
|
|
1539
|
-
return (
|
|
1540
|
-
<PublicPageLayout eventCode={eventCode || ''} event={event}>
|
|
1541
|
-
<PublicPageHeader
|
|
1542
|
-
event={event}
|
|
1543
|
-
eventCode={eventCode || ''}
|
|
1544
|
-
title="Event Details"
|
|
1545
|
-
description="Public information about this event"
|
|
1546
|
-
/>
|
|
1547
|
-
|
|
1548
|
-
<main>
|
|
1549
|
-
{/* Your public page content */}
|
|
1550
|
-
</main>
|
|
1551
|
-
|
|
1552
|
-
<PublicPageFooter event={event} />
|
|
1553
|
-
</PublicPageLayout>
|
|
1554
|
-
);
|
|
1555
|
-
}
|
|
1556
|
-
```
|
|
1557
|
-
|
|
1558
|
-
For detailed public page implementation, see [Public Pages Guide](../implementation-guides/public-pages.md).
|
|
1559
|
-
|
|
1560
869
|
## Utility Components
|
|
1561
870
|
|
|
1562
871
|
### ErrorBoundary
|
|
@@ -1577,6 +886,7 @@ import { ErrorBoundary } from '@jmruthers/pace-core';
|
|
|
1577
886
|
All components use Tailwind CSS for styling and support:
|
|
1578
887
|
|
|
1579
888
|
- **Responsive Design**: Mobile-first approach
|
|
889
|
+
- **Dark Mode**: Automatic theme switching
|
|
1580
890
|
- **Accessibility**: WCAG 2.1 AA compliant
|
|
1581
891
|
- **Customization**: Extensible with className prop
|
|
1582
892
|
- **Consistent Spacing**: Design system spacing
|
|
@@ -1592,32 +902,4 @@ All components include:
|
|
|
1592
902
|
- **Visual Tests**: Visual regression testing
|
|
1593
903
|
- **Performance Tests**: Rendering performance
|
|
1594
904
|
|
|
1595
|
-
For more information about testing components, see the [Testing Guide](../best-practices/testing.md).
|
|
1596
|
-
|
|
1597
|
-
## 🔗 Related Documentation
|
|
1598
|
-
|
|
1599
|
-
### Component Usage
|
|
1600
|
-
- **[Data Tables Implementation](../implementation-guides/data-tables.md)** - Complete data table guide
|
|
1601
|
-
- **[Forms Implementation](../implementation-guides/forms.md)** - Form handling patterns
|
|
1602
|
-
- **[App Layout Implementation](../implementation-guides/app-layout.md)** - Layout patterns
|
|
1603
|
-
- **[Navigation Implementation](../implementation-guides/navigation.md)** - Navigation systems
|
|
1604
|
-
|
|
1605
|
-
### Styling & Theming
|
|
1606
|
-
- **[Styling Overview](../styles/README.md)** - Design system and theming
|
|
1607
|
-
- **[Component Styling](../styles/component-styling.md)** - How components are styled
|
|
1608
|
-
- **[Custom Themes](../styles/custom-themes.md)** - Creating custom themes
|
|
1609
|
-
|
|
1610
|
-
### Best Practices
|
|
1611
|
-
- **[Component Best Practices](../best-practices/README.md#component-usage)** - Component usage guidelines
|
|
1612
|
-
- **[Performance Best Practices](../best-practices/performance.md)** - Performance optimization
|
|
1613
|
-
- **[Accessibility Guidelines](../best-practices/README.md#accessibility)** - Accessibility best practices
|
|
1614
|
-
|
|
1615
|
-
### Troubleshooting
|
|
1616
|
-
- **[Common Issues](../troubleshooting/common-issues.md)** - Component-related problems
|
|
1617
|
-
- **[Styling Issues](../troubleshooting/styling-issues.md)** - Styling problems
|
|
1618
|
-
- **[Debugging Guide](../troubleshooting/debugging.md)** - Debugging techniques
|
|
1619
|
-
|
|
1620
|
-
### Examples
|
|
1621
|
-
- **[Basic Auth App](../getting-started/examples/basic-auth-app.md)** - Simple component usage
|
|
1622
|
-
- **[Full-Featured App](../getting-started/examples/full-featured-app.md)** - Advanced patterns
|
|
1623
|
-
- **[Component Examples](../getting-started/examples/)** - Complete working examples
|
|
905
|
+
For more information about testing components, see the [Testing Guide](../best-practices/testing.md).
|