@jmruthers/pace-core 0.4.1 → 0.5.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 +26 -1
- package/README.md +231 -229
- package/dist/{DataTable-2LB6HI6V.js → DataTable-GX3XERFJ.js} +14 -17
- package/dist/{DataTable-BDBqkU-i.d.ts → DataTable-ltTFXHS3.d.ts} +25 -51
- package/dist/{Table-CIm9IWqk.d.ts → PublicLoadingSpinner-DztrzuJr.d.ts} +635 -122
- package/dist/UnifiedAuthProvider-w66zSCUf.d.ts +160 -0
- package/dist/{api-AIJ3IJX3.js → api-ETQ6YJ3C.js} +6 -4
- package/dist/{appConfig-fB1pP_v3.d.ts → appConfig-BVGyuvI7.d.ts} +1 -1
- package/dist/appNameResolver-7GHF5ED2.js +22 -0
- package/dist/{audit-PD5L5ZSC.js → audit-BUW3LMJB.js} +3 -3
- package/dist/chunk-5EL3KHOQ.js +388 -0
- package/dist/chunk-5EL3KHOQ.js.map +1 -0
- package/dist/{chunk-4MCJAK7J.js → chunk-6CR3MRZN.js} +1827 -4886
- package/dist/chunk-6CR3MRZN.js.map +1 -0
- package/dist/{chunk-YNU5QJ4S.js → chunk-7BNPOCLL.js} +22 -5
- package/dist/chunk-7BNPOCLL.js.map +1 -0
- package/dist/chunk-AUE24LVR.js +268 -0
- package/dist/chunk-AUE24LVR.js.map +1 -0
- package/dist/chunk-C5G2A4PO.js +1349 -0
- package/dist/chunk-C5G2A4PO.js.map +1 -0
- package/dist/{chunk-4ZTIEYU2.js → chunk-CDQ3PX7L.js} +1 -1
- package/dist/chunk-CDQ3PX7L.js.map +1 -0
- package/dist/chunk-COBPIXXQ.js +379 -0
- package/dist/chunk-COBPIXXQ.js.map +1 -0
- package/dist/chunk-GSNM5D6H.js +5441 -0
- package/dist/chunk-GSNM5D6H.js.map +1 -0
- package/dist/chunk-MZBUOP4P.js +119 -0
- package/dist/chunk-MZBUOP4P.js.map +1 -0
- package/dist/chunk-N2EUGZRW.js +98 -0
- package/dist/chunk-N2EUGZRW.js.map +1 -0
- package/dist/chunk-NQ4TOOO6.js +20 -0
- package/dist/chunk-NQ4TOOO6.js.map +1 -0
- package/dist/{chunk-KK6WIDK6.js → chunk-OEGRKULD.js} +12 -2
- package/dist/{chunk-KK6WIDK6.js.map → chunk-OEGRKULD.js.map} +1 -1
- package/dist/chunk-OYRY44Q2.js +62 -0
- package/dist/chunk-OYRY44Q2.js.map +1 -0
- package/dist/{chunk-DC5AMYBS.js → chunk-PLDDJCW6.js} +15 -5
- package/dist/chunk-PLDDJCW6.js.map +1 -0
- package/dist/{chunk-WHLSWC6W.js → chunk-SS3E6QLB.js} +16 -61
- package/dist/chunk-SS3E6QLB.js.map +1 -0
- package/dist/chunk-T3XIA4AJ.js +3295 -0
- package/dist/chunk-T3XIA4AJ.js.map +1 -0
- package/dist/{chunk-H4PZ4B3Y.js → chunk-TGDCLPP2.js} +129 -28
- package/dist/chunk-TGDCLPP2.js.map +1 -0
- package/dist/{chunk-IOX76PSM.js → chunk-U6JDHVC2.js} +273 -29
- package/dist/chunk-U6JDHVC2.js.map +1 -0
- package/dist/{chunk-JUUNUW3O.js → chunk-XJK2J4N6.js} +17 -6
- package/dist/chunk-XJK2J4N6.js.map +1 -0
- package/dist/chunk-YDJW5XTN.js +84 -0
- package/dist/chunk-YDJW5XTN.js.map +1 -0
- package/dist/components.d.ts +906 -10
- package/dist/components.js +3263 -84
- package/dist/components.js.map +1 -1
- package/dist/{database-CAMsquLm.d.ts → database-C3Szpi5J.d.ts} +28 -11
- package/dist/hooks.d.ts +7 -6
- package/dist/hooks.js +35 -11
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +245 -111
- package/dist/index.js +195 -185
- package/dist/index.js.map +1 -1
- package/dist/{organisation-DLNNQhPB.d.ts → organisation-CO3Sh3_D.d.ts} +1 -1
- package/dist/providers.d.ts +4 -4
- package/dist/providers.js +21 -6
- package/dist/rbac/index.d.ts +862 -806
- package/dist/rbac/index.js +953 -1032
- package/dist/rbac/index.js.map +1 -1
- package/dist/styles/core.css +422 -0
- package/dist/styles/fonts/georama-italic.woff2 +0 -0
- package/dist/styles/fonts/georama.woff2 +0 -0
- package/dist/styles/fonts/open-sans-italic.woff2 +0 -0
- package/dist/styles/fonts/open-sans.woff2 +0 -0
- package/dist/styles/fonts/reddit-mono.woff2 +0 -0
- package/dist/styles/index.d.ts +36 -0
- package/dist/styles/index.js +24 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/theming/runtime.d.ts +73 -0
- package/dist/theming/runtime.js +16 -0
- package/dist/theming/runtime.js.map +1 -0
- package/dist/{types-Bavn44NW.d.ts → types-BRDU7N6w.d.ts} +79 -33
- package/dist/types.d.ts +5 -5
- package/dist/types.js +7 -2
- package/dist/types.js.map +1 -1
- package/dist/{unified-BtRpPbmp.d.ts → unified-CM7T0aTK.d.ts} +1 -2
- package/dist/usePublicRouteParams-B6i0KtXW.d.ts +477 -0
- package/dist/utils.d.ts +83 -60
- package/dist/utils.js +301 -55657
- package/dist/utils.js.map +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.js +1 -1
- package/docs/INDEX.md +192 -0
- package/docs/README.md +46 -32
- package/docs/api/README.md +231 -229
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/PublicErrorBoundary.md +132 -0
- 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 +98 -7
- package/docs/api/interfaces/DataTableColumn.md +131 -12
- package/docs/api/interfaces/DataTableProps.md +77 -274
- 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/EventLogoProps.md +152 -0
- package/docs/api/interfaces/EventProviderProps.md +2 -2
- package/docs/api/interfaces/FileSizeLimits.md +7 -0
- package/docs/api/interfaces/FileUploadProps.md +154 -0
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +115 -0
- 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 +2 -2
- 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/PublicErrorBoundaryProps.md +94 -0
- package/docs/api/interfaces/PublicErrorBoundaryState.md +68 -0
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +86 -0
- package/docs/api/interfaces/PublicPageFooterProps.md +112 -0
- package/docs/api/interfaces/PublicPageHeaderProps.md +138 -0
- package/docs/api/interfaces/PublicPageLayoutProps.md +138 -0
- package/docs/api/interfaces/StorageConfig.md +41 -0
- package/docs/api/interfaces/StorageFileInfo.md +74 -0
- package/docs/api/interfaces/StorageFileMetadata.md +140 -0
- package/docs/api/interfaces/StorageListOptions.md +86 -0
- package/docs/api/interfaces/StorageListResult.md +41 -0
- package/docs/api/interfaces/StorageUploadOptions.md +88 -0
- package/docs/api/interfaces/StorageUploadResult.md +63 -0
- package/docs/api/interfaces/StorageUrlOptions.md +47 -0
- package/docs/api/interfaces/StyleImport.md +2 -2
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +447 -46
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +95 -9
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +136 -0
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +123 -0
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
- package/docs/api/interfaces/UsePublicEventOptions.md +34 -0
- package/docs/api/interfaces/UsePublicEventReturn.md +68 -0
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +94 -0
- package/docs/api/interfaces/UserEventAccess.md +14 -14
- package/docs/api/interfaces/UserMenuProps.md +6 -6
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +1626 -768
- package/docs/api-reference/components.md +761 -43
- package/docs/api-reference/hooks.md +126 -0
- package/docs/api-reference/providers.md +141 -65
- package/docs/api-reference/types.md +66 -36
- package/docs/api-reference/utilities.md +1 -1
- package/docs/architecture/README.md +1 -2
- package/docs/best-practices/README.md +400 -0
- package/docs/consuming-app-example.md +42 -96
- package/docs/consuming-app-vite-config.md +233 -0
- package/docs/core-concepts/events.md +3 -3
- package/docs/core-concepts/organisations.md +0 -1
- package/docs/core-concepts/rbac-system.md +23 -10
- package/docs/documentation-style-checklist.md +8 -2
- package/docs/examples/navigation-menu-auth-fix.md +344 -0
- package/docs/getting-started/examples/README.md +15 -1
- package/docs/getting-started/examples/basic-auth-app.md +444 -119
- package/docs/getting-started/examples/full-featured-app.md +6 -6
- package/docs/getting-started/installation.md +231 -52
- package/docs/getting-started/quick-start.md +121 -24
- package/docs/implementation-guides/app-layout.md +133 -108
- package/docs/implementation-guides/data-tables.md +1011 -29
- package/docs/implementation-guides/forms.md +3 -3
- package/docs/implementation-guides/hierarchical-datatable.md +850 -0
- 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/implementation-guides/public-pages.md +752 -0
- package/docs/migration/README.md +18 -8
- package/docs/migration/quick-migration-guide.md +320 -0
- package/docs/migration/rbac-migration.md +50 -0
- package/docs/migration/v0.4.15-tailwind-scanning.md +272 -0
- package/docs/migration/v0.4.16-css-first-approach.md +306 -0
- package/docs/migration/v0.4.17-source-path-fix.md +229 -0
- package/docs/migration-guide.md +51 -104
- package/docs/performance/README.md +1 -4
- package/docs/print-components/README.md +258 -0
- package/docs/print-components/api-reference.md +636 -0
- package/docs/print-components/examples/README.md +204 -0
- package/docs/print-components/examples/basic-report.tsx +92 -0
- package/docs/print-components/examples/card-catalog.tsx +149 -0
- package/docs/print-components/examples/cover-page-report.tsx +163 -0
- package/docs/print-components/quick-start.md +363 -0
- package/docs/quick-reference.md +53 -36
- package/docs/rbac/README.md +136 -69
- package/docs/rbac/api-reference.md +39 -8
- package/docs/rbac/examples.md +237 -66
- package/docs/rbac/getting-started.md +131 -16
- package/docs/rbac/quick-start.md +499 -323
- package/docs/rbac/troubleshooting.md +240 -262
- package/docs/security/README.md +50 -1
- package/docs/styles/README.md +143 -117
- package/docs/testing/README.md +6 -10
- package/docs/troubleshooting/README.md +497 -0
- package/docs/troubleshooting/common-issues.md +604 -14
- package/docs/troubleshooting/styling-issues.md +219 -0
- package/docs/troubleshooting/tailwind-content-scanning.md +213 -0
- package/docs/usage.md +28 -90
- package/docs/visual-testing.md +0 -7
- package/package.json +46 -24
- package/src/__mocks__/lucide-react.ts +181 -0
- package/src/__tests__/REBUILD_PLAN.md +223 -0
- package/src/__tests__/TESTING_GUIDELINES.md +341 -0
- package/src/__tests__/fixtures/mocks.ts +93 -0
- package/src/__tests__/helpers/component-test-utils.tsx +145 -0
- package/src/__tests__/helpers/test-utils.tsx +117 -0
- package/src/__tests__/integration/UserProfile.test.tsx +128 -0
- package/src/__tests__/setup.ts +71 -0
- package/src/__tests__/templates/accessibility.test.template.tsx +279 -0
- package/src/__tests__/templates/component.test.template.tsx +144 -0
- package/src/__tests__/templates/hook.test.template.ts +173 -0
- package/src/__tests__/templates/integration.test.template.tsx +199 -0
- package/src/__tests__/types/test.types.ts +106 -0
- package/src/components/Alert/Alert.test.tsx +496 -0
- package/src/components/Alert/Alert.tsx +134 -0
- package/src/components/Alert/index.ts +2 -0
- package/src/components/Avatar/Avatar.test.tsx +484 -0
- package/src/components/Avatar/Avatar.tsx +84 -0
- package/src/components/Avatar/index.ts +2 -0
- package/src/components/Button/Button.test.tsx +662 -0
- package/src/components/Button/Button.tsx +270 -0
- package/src/components/Button/index.ts +2 -0
- package/src/components/Card/Card.test.tsx +593 -0
- package/src/components/Card/Card.tsx +271 -0
- package/src/components/Card/index.ts +1 -0
- package/src/components/Checkbox/Checkbox.test.tsx +461 -0
- package/src/components/Checkbox/Checkbox.tsx +75 -0
- package/src/components/Checkbox/__mocks__/Checkbox.tsx +2 -0
- package/src/components/Checkbox/index.ts +2 -0
- package/src/components/DataTable/DataTable.tsx +446 -0
- package/src/components/DataTable/__tests__/README.md +145 -0
- package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +66 -0
- package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +103 -0
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +381 -0
- package/src/components/DataTable/__tests__/test-utils.ts +94 -0
- package/src/components/DataTable/components/AccessDeniedPage.tsx +168 -0
- package/src/components/DataTable/components/ActionButtons.tsx +194 -0
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +160 -0
- package/src/components/DataTable/components/ColumnFilter.tsx +114 -0
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +100 -0
- package/src/components/DataTable/components/DataTableBody.tsx +461 -0
- package/src/components/DataTable/components/DataTableCore.tsx +1027 -0
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +214 -0
- package/src/components/DataTable/components/DataTableModals.tsx +87 -0
- package/src/components/DataTable/components/DataTableToolbar.tsx +262 -0
- package/src/components/DataTable/components/DraggableColumnHeader.tsx +144 -0
- package/src/components/DataTable/components/EditableRow.tsx +159 -0
- package/src/components/DataTable/components/EmptyState.tsx +64 -0
- package/src/components/DataTable/components/ExpandButton.tsx +113 -0
- package/src/components/DataTable/components/FilterRow.tsx +100 -0
- package/src/components/DataTable/components/GroupHeader.tsx +42 -0
- package/src/components/DataTable/components/GroupingDropdown.tsx +96 -0
- package/src/components/DataTable/components/ImportModal.tsx +345 -0
- package/src/components/DataTable/components/LoadingState.tsx +12 -0
- package/src/components/DataTable/components/PaginationControls.tsx +332 -0
- package/src/components/DataTable/components/UnifiedTableBody.tsx +742 -0
- package/src/components/DataTable/components/ViewRowModal.tsx +68 -0
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +513 -0
- package/src/components/DataTable/components/index.ts +16 -0
- package/src/components/DataTable/context/DataTableContext.tsx +97 -0
- package/src/components/DataTable/core/ActionManager.ts +235 -0
- package/src/components/DataTable/core/ColumnFactory.ts +268 -0
- package/src/components/DataTable/core/ColumnManager.ts +205 -0
- package/src/components/DataTable/core/DataManager.ts +188 -0
- package/src/components/DataTable/core/DataTableContext.tsx +181 -0
- package/src/components/DataTable/core/LocalDataAdapter.ts +264 -0
- package/src/components/DataTable/core/PluginRegistry.ts +229 -0
- package/src/components/DataTable/core/StateManager.ts +311 -0
- package/src/components/DataTable/core/index.ts +8 -0
- package/src/components/DataTable/core/interfaces.ts +338 -0
- package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +419 -0
- package/src/components/DataTable/examples/HierarchicalExample.tsx +475 -0
- package/src/components/DataTable/examples/InitialPageSizeExample.tsx +176 -0
- package/src/components/DataTable/examples/PerformanceExample.tsx +505 -0
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +95 -0
- package/src/components/DataTable/hooks/useColumnReordering.ts +110 -0
- package/src/components/DataTable/hooks/useDataTableState.ts +325 -0
- package/src/components/DataTable/hooks/useHierarchicalState.ts +174 -0
- package/src/components/DataTable/index.ts +68 -0
- package/src/components/DataTable/styles.ts +171 -0
- package/src/components/DataTable/types.ts +511 -0
- package/src/components/DataTable/utils/debugTools.ts +583 -0
- package/src/components/DataTable/utils/errorHandling.ts +494 -0
- package/src/components/DataTable/utils/exportUtils.ts +126 -0
- package/src/components/DataTable/utils/flexibleImport.ts +510 -0
- package/src/components/DataTable/utils/hierarchicalSorting.ts +151 -0
- package/src/components/DataTable/utils/hierarchicalUtils.ts +218 -0
- package/src/components/DataTable/utils/index.ts +1 -0
- package/src/components/DataTable/utils/performanceUtils.ts +351 -0
- package/src/components/Dialog/Dialog.test.tsx +1139 -0
- package/src/components/Dialog/Dialog.tsx +782 -0
- package/src/components/Dialog/README.md +804 -0
- package/src/components/Dialog/examples/BasicHtmlTest.tsx +55 -0
- package/src/components/Dialog/examples/DebugHtmlExample.tsx +68 -0
- package/src/components/Dialog/examples/HtmlDialogExample.tsx +202 -0
- package/src/components/Dialog/examples/SimpleHtmlTest.tsx +61 -0
- package/src/components/Dialog/examples/SmartDialogExample.tsx +322 -0
- package/src/components/Dialog/index.ts +12 -0
- package/src/components/Dialog/utils/safeHtml.ts +185 -0
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +752 -0
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +312 -0
- package/src/components/ErrorBoundary/index.ts +8 -0
- package/src/components/EventSelector/EventSelector.tsx +360 -0
- package/src/components/EventSelector/index.ts +3 -0
- package/src/components/EventSelector/types.ts +79 -0
- package/src/components/FileUpload/FileUpload.example.tsx +218 -0
- package/src/components/FileUpload/FileUpload.test.tsx +665 -0
- package/src/components/FileUpload/FileUpload.tsx +237 -0
- package/src/components/FileUpload/index.ts +6 -0
- package/src/components/Footer/Footer.tsx +197 -0
- package/src/components/Footer/index.ts +17 -0
- package/src/components/Form/Form.tsx +166 -0
- package/src/components/Form/FormErrorSummary.tsx +113 -0
- package/src/components/Form/FormField.tsx +249 -0
- package/src/components/Form/FormFieldset.tsx +127 -0
- package/src/components/Form/FormLiveRegion.tsx +198 -0
- package/src/components/Form/index.ts +26 -0
- package/src/components/Header/Header.tsx +301 -0
- package/src/components/Header/index.ts +4 -0
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +164 -0
- package/src/components/InactivityWarningModal/index.ts +9 -0
- package/src/components/Input/Input.tsx +201 -0
- package/src/components/Input/__mocks__/Input.tsx +2 -0
- package/src/components/Input/index.ts +9 -0
- package/src/components/Label/Label.tsx +186 -0
- package/src/components/Label/index.ts +2 -0
- package/src/components/LoadingSpinner/LoadingSpinner.tsx +98 -0
- package/src/components/LoadingSpinner/index.ts +3 -0
- package/src/components/LoginForm/LoginForm.tsx +273 -0
- package/src/components/LoginForm/index.ts +3 -0
- package/src/components/NavigationMenu/NavigationMenu.tsx +698 -0
- package/src/components/NavigationMenu/index.ts +10 -0
- package/src/components/NavigationMenu/types.ts +85 -0
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +304 -0
- package/src/components/OrganisationSelector/index.ts +9 -0
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +699 -0
- package/src/components/PaceAppLayout/README.md +278 -0
- package/src/components/PaceAppLayout/index.ts +1 -0
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +221 -0
- package/src/components/PaceLoginPage/index.ts +1 -0
- package/src/components/PasswordReset/PasswordChangeForm.tsx +186 -0
- package/src/components/PasswordReset/PasswordResetForm.tsx +201 -0
- package/src/components/PasswordReset/index.ts +4 -0
- package/src/components/PrintButton/PrintButton.tsx +321 -0
- package/src/components/PrintButton/PrintButtonGroup.tsx +84 -0
- package/src/components/PrintButton/PrintToolbar.tsx +94 -0
- package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +438 -0
- package/src/components/PrintButton/index.ts +33 -0
- package/src/components/PrintButton/types.ts +173 -0
- package/src/components/PrintCard/PrintCard.tsx +154 -0
- package/src/components/PrintCard/PrintCardContent.tsx +57 -0
- package/src/components/PrintCard/PrintCardFooter.tsx +60 -0
- package/src/components/PrintCard/PrintCardGrid.tsx +91 -0
- package/src/components/PrintCard/PrintCardHeader.tsx +78 -0
- package/src/components/PrintCard/PrintCardImage.tsx +81 -0
- package/src/components/PrintCard/examples/PrintCardShowcase.tsx +239 -0
- package/src/components/PrintCard/index.ts +34 -0
- package/src/components/PrintCard/types.ts +171 -0
- package/src/components/PrintDataTable/PrintDataTable.tsx +215 -0
- package/src/components/PrintDataTable/PrintTableGroup.tsx +90 -0
- package/src/components/PrintDataTable/PrintTableRow.tsx +76 -0
- package/src/components/PrintDataTable/index.ts +25 -0
- package/src/components/PrintDataTable/types.ts +67 -0
- package/src/components/PrintFooter/PrintFooter.tsx +183 -0
- package/src/components/PrintFooter/PrintFooterContent.tsx +71 -0
- package/src/components/PrintFooter/PrintFooterInfo.tsx +86 -0
- package/src/components/PrintFooter/PrintPageNumber.tsx +90 -0
- package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +390 -0
- package/src/components/PrintFooter/index.ts +30 -0
- package/src/components/PrintFooter/types.ts +149 -0
- package/src/components/PrintGrid/PrintGrid.tsx +180 -0
- package/src/components/PrintGrid/PrintGridBreakpoint.tsx +109 -0
- package/src/components/PrintGrid/PrintGridContainer.tsx +128 -0
- package/src/components/PrintGrid/PrintGridItem.tsx +220 -0
- package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +359 -0
- package/src/components/PrintGrid/index.ts +31 -0
- package/src/components/PrintGrid/types.ts +159 -0
- package/src/components/PrintHeader/PrintCoverHeader.tsx +230 -0
- package/src/components/PrintHeader/PrintHeader.tsx +150 -0
- package/src/components/PrintHeader/index.ts +17 -0
- package/src/components/PrintHeader/types.ts +42 -0
- package/src/components/PrintLayout/PrintLayout.tsx +122 -0
- package/src/components/PrintLayout/PrintLayoutContext.tsx +66 -0
- package/src/components/PrintLayout/PrintPageBreak.tsx +52 -0
- package/src/components/PrintLayout/examples/PrintShowcase.tsx +230 -0
- package/src/components/PrintLayout/index.ts +19 -0
- package/src/components/PrintLayout/types.ts +37 -0
- package/src/components/PrintPageBreak/PrintPageBreak.tsx +120 -0
- package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +90 -0
- package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +112 -0
- package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +279 -0
- package/src/components/PrintPageBreak/index.ts +23 -0
- package/src/components/PrintPageBreak/types.ts +94 -0
- package/src/components/PrintSection/PrintColumn.tsx +104 -0
- package/src/components/PrintSection/PrintDivider.tsx +101 -0
- package/src/components/PrintSection/PrintSection.tsx +129 -0
- package/src/components/PrintSection/PrintSectionContent.tsx +75 -0
- package/src/components/PrintSection/PrintSectionHeader.tsx +97 -0
- package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +258 -0
- package/src/components/PrintSection/index.ts +33 -0
- package/src/components/PrintSection/types.ts +155 -0
- package/src/components/PrintText/PrintText.tsx +116 -0
- package/src/components/PrintText/index.ts +16 -0
- package/src/components/PrintText/types.ts +24 -0
- package/src/components/Progress/Progress.tsx +116 -0
- package/src/components/Progress/index.ts +3 -0
- package/src/components/PublicLayout/EventLogo.tsx +287 -0
- package/src/components/PublicLayout/PublicErrorBoundary.tsx +279 -0
- package/src/components/PublicLayout/PublicLoadingSpinner.tsx +208 -0
- package/src/components/PublicLayout/PublicPageContextChecker.tsx +130 -0
- package/src/components/PublicLayout/PublicPageDebugger.tsx +104 -0
- package/src/components/PublicLayout/PublicPageDiagnostic.tsx +162 -0
- package/src/components/PublicLayout/PublicPageFooter.tsx +124 -0
- package/src/components/PublicLayout/PublicPageHeader.tsx +178 -0
- package/src/components/PublicLayout/PublicPageLayout.tsx +232 -0
- package/src/components/PublicLayout/PublicPageProvider.tsx +137 -0
- package/src/components/PublicLayout/index.ts +51 -0
- package/src/components/RBAC/PagePermissionGuard.tsx +287 -0
- package/src/components/RBAC/RBACGuard.tsx +143 -0
- package/src/components/RBAC/RBACProvider.tsx +186 -0
- package/src/components/RBAC/RoleBasedContent.tsx +129 -0
- package/src/components/RBAC/index.ts +23 -0
- package/src/components/Select/Select.tsx +660 -0
- package/src/components/Select/index.ts +1 -0
- package/src/components/SuperAdminGuard.tsx +116 -0
- package/src/components/Table/Table.tsx +222 -0
- package/src/components/Table/index.ts +11 -0
- package/src/components/Toast/Toast.tsx +339 -0
- package/src/components/Toast/index.ts +14 -0
- package/src/components/Tooltip/Tooltip.tsx +167 -0
- package/src/components/Tooltip/index.ts +7 -0
- package/src/components/UserMenu/UserMenu.tsx +243 -0
- package/src/components/UserMenu/index.ts +3 -0
- package/src/components/examples/PermissionExample.tsx +150 -0
- package/src/components/index.ts +434 -0
- package/src/components.ts +19 -0
- package/src/constants/performance.ts +14 -0
- package/src/examples/CorrectPublicPageImplementation.tsx +301 -0
- package/src/examples/PublicEventPage.tsx +274 -0
- package/src/examples/PublicPageApp.tsx +308 -0
- package/src/examples/PublicPageUsageExample.tsx +216 -0
- package/src/hooks/index.ts +56 -0
- package/src/hooks/public/index.ts +34 -0
- package/src/hooks/public/usePublicEvent.ts +261 -0
- package/src/hooks/public/usePublicEventLogo.ts +285 -0
- package/src/hooks/public/usePublicRouteParams.ts +259 -0
- package/src/hooks/useAppConfig.ts +94 -0
- package/src/hooks/useComponentPerformance.ts +39 -0
- package/src/hooks/useCounter.test.ts +135 -0
- package/src/hooks/useDataTablePerformance.ts +387 -0
- package/src/hooks/useDataTableState.ts +110 -0
- package/src/hooks/useDebounce.ts +18 -0
- package/src/hooks/useFocusManagement.ts +161 -0
- package/src/hooks/useFocusTrap.ts +155 -0
- package/src/hooks/useInactivityTracker.ts +372 -0
- package/src/hooks/useIsMobile.ts +42 -0
- package/src/hooks/useKeyboardShortcuts.ts +237 -0
- package/src/hooks/useOrganisationPermissions.ts +208 -0
- package/src/hooks/useOrganisationSecurity.ts +262 -0
- package/src/hooks/usePerformanceMonitor.ts +128 -0
- package/src/hooks/usePermissionCache.ts +455 -0
- package/src/hooks/useRBAC.ts +262 -0
- package/src/hooks/useSecureDataAccess.ts +586 -0
- package/src/hooks/useStorage.ts +274 -0
- package/src/hooks/useToast.ts +242 -0
- package/src/hooks/useZodForm.ts +28 -0
- package/src/index.ts +200 -0
- package/src/providers/AuthProvider.tsx +369 -0
- package/src/providers/EventProvider.tsx +324 -0
- package/src/providers/InactivityProvider.tsx +238 -0
- package/src/providers/OrganisationProvider.tsx +588 -0
- package/src/providers/RBACProvider.tsx +634 -0
- package/src/providers/UnifiedAuthProvider.tsx +327 -0
- package/src/providers/index.ts +15 -0
- package/src/rbac/README.md +885 -0
- package/src/rbac/adapters.tsx +726 -0
- package/src/rbac/api.ts +339 -0
- package/src/rbac/audit-enhanced.ts +339 -0
- package/src/rbac/audit.ts +338 -0
- package/src/rbac/cache.ts +215 -0
- package/src/rbac/components/EnhancedNavigationMenu.tsx +294 -0
- package/src/rbac/components/NavigationGuard.tsx +294 -0
- package/src/rbac/components/NavigationProvider.tsx +314 -0
- package/src/rbac/components/PagePermissionGuard.tsx +430 -0
- package/src/rbac/components/PagePermissionProvider.tsx +274 -0
- package/src/rbac/components/PermissionEnforcer.tsx +307 -0
- package/src/rbac/components/RoleBasedRouter.tsx +425 -0
- package/src/rbac/components/SecureDataProvider.tsx +319 -0
- package/src/rbac/components/index.ts +64 -0
- package/src/rbac/config.ts +133 -0
- package/src/rbac/docs/event-based-apps.md +285 -0
- package/src/rbac/engine.ts +1026 -0
- package/src/rbac/eslint-rules.js +285 -0
- package/src/rbac/examples/CompleteRBACExample.tsx +323 -0
- package/src/rbac/examples/EventBasedApp.tsx +238 -0
- package/src/rbac/hooks.ts +570 -0
- package/src/rbac/index.ts +114 -0
- package/src/rbac/permissions.ts +293 -0
- package/src/rbac/secureClient.ts +244 -0
- package/src/rbac/security.ts +346 -0
- package/src/rbac/testing/index.tsx +340 -0
- package/src/rbac/types.ts +343 -0
- package/src/rbac/utils/eventContext.ts +83 -0
- package/src/styles/core.css +422 -0
- package/src/styles/index.ts +51 -0
- package/src/theming/runtime.ts +187 -0
- package/src/types/database.ts +472 -0
- package/src/types/guards.ts +30 -0
- package/src/types/index.ts +25 -0
- package/src/types/organisation.ts +184 -0
- package/src/types/security.ts +70 -0
- package/src/types/supabase.ts +166 -0
- package/src/types/theme.ts +6 -0
- package/src/types/unified.ts +262 -0
- package/src/types/validation.ts +164 -0
- package/src/types/vitest-globals.d.ts +43 -0
- package/src/utils/__mocks__/supabaseMock.ts +75 -0
- package/src/utils/__mocks__/supabaseMock.tsx +198 -0
- package/src/utils/appConfig.ts +47 -0
- package/src/utils/appIdResolver.ts +130 -0
- package/src/utils/appNameResolver.ts +190 -0
- package/src/utils/audit.ts +127 -0
- package/src/utils/auth-utils.ts +96 -0
- package/src/utils/bundleAnalysis.ts +129 -0
- package/src/utils/cn.ts +7 -0
- package/src/utils/debugLogger.ts +46 -0
- package/src/utils/deviceFingerprint.ts +215 -0
- package/src/utils/dynamicUtils.ts +105 -0
- package/src/utils/formatting.ts +77 -0
- package/src/utils/index.ts +145 -0
- package/src/utils/lazyLoad.tsx +44 -0
- package/src/utils/organisationContext.ts +135 -0
- package/src/utils/performanceBenchmark.ts +64 -0
- package/src/utils/performanceBudgets.ts +111 -0
- package/src/utils/permissionTypes.ts +37 -0
- package/src/utils/permissionUtils.ts +31 -0
- package/src/utils/print/PrintDataProcessor.ts +390 -0
- package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +397 -0
- package/src/utils/print/index.ts +29 -0
- package/src/utils/print/types.ts +196 -0
- package/src/utils/print/usePrintOptimization.ts +272 -0
- package/src/utils/sanitization.ts +264 -0
- package/src/utils/schemaUtils.ts +37 -0
- package/src/utils/secureDataAccess.ts +361 -0
- package/src/utils/secureErrors.ts +79 -0
- package/src/utils/secureStorage.ts +244 -0
- package/src/utils/security.ts +156 -0
- package/src/utils/securityMonitor.ts +45 -0
- package/src/utils/sessionTracking.ts +170 -0
- package/src/utils/storage/README.md +348 -0
- package/src/utils/storage/config.ts +100 -0
- package/src/utils/storage/helpers.ts +359 -0
- package/src/utils/storage/index.ts +36 -0
- package/src/utils/storage/types.ts +90 -0
- package/src/utils/validation.ts +111 -0
- package/src/utils/validationUtils.ts +120 -0
- package/src/validation/common.ts +53 -0
- package/src/validation/csrf.ts +214 -0
- package/src/validation/index.ts +43 -0
- package/src/validation/passwordSchema.ts +125 -0
- package/src/validation/sanitization.ts +96 -0
- package/src/validation/schemaUtils.ts +42 -0
- package/src/validation/sqlInjectionProtection.ts +242 -0
- package/src/validation/user.ts +34 -0
- package/dist/UnifiedAuthProvider-V7y63NjT.d.ts +0 -88
- package/dist/chunk-4MCJAK7J.js.map +0 -1
- package/dist/chunk-4ZTIEYU2.js.map +0 -1
- package/dist/chunk-H4PZ4B3Y.js.map +0 -1
- package/dist/chunk-IOX76PSM.js.map +0 -1
- package/dist/chunk-JUUNUW3O.js.map +0 -1
- package/dist/chunk-U7DY5T33.js +0 -11
- package/dist/chunk-U7DY5T33.js.map +0 -1
- package/dist/chunk-WHLSWC6W.js.map +0 -1
- package/dist/chunk-XI7QFSSC.js +0 -790
- package/dist/chunk-XI7QFSSC.js.map +0 -1
- package/dist/chunk-XIJMMBDD.js +0 -73
- package/dist/chunk-XIJMMBDD.js.map +0 -1
- package/dist/chunk-YNU5QJ4S.js.map +0 -1
- package/dist/chunk-YWYCNGWH.js +0 -2070
- package/dist/chunk-YWYCNGWH.js.map +0 -1
- package/dist/chunk-ZJ3UKPIW.js +0 -952
- package/dist/chunk-ZJ3UKPIW.js.map +0 -1
- package/dist/useAppConfig-CZNJJsT_.d.ts +0 -148
- package/dist/{DataTable-2LB6HI6V.js.map → DataTable-GX3XERFJ.js.map} +0 -0
- package/dist/{api-AIJ3IJX3.js.map → api-ETQ6YJ3C.js.map} +0 -0
- package/dist/{audit-PD5L5ZSC.js.map → appNameResolver-7GHF5ED2.js.map} +0 -0
- package/dist/{chunk-DC5AMYBS.js.map → audit-BUW3LMJB.js.map} +0 -0
- package/dist/{validation-D2-NNCCE.d.ts → validation-PM_iOaTI.d.ts} +6 -6
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
# Troubleshooting Guide
|
|
2
|
+
|
|
3
|
+
> **🆘 Get Help Fast** | [Common Issues](#common-issues) | [Debugging](#debugging) | [Support](#support)
|
|
4
|
+
|
|
5
|
+
[← Back to Documentation](../README.md) | [↑ Table of Contents](#table-of-contents)
|
|
6
|
+
|
|
7
|
+
Comprehensive troubleshooting guide for PACE Core applications. Find solutions to common problems and learn debugging techniques.
|
|
8
|
+
|
|
9
|
+
## 📋 Table of Contents
|
|
10
|
+
|
|
11
|
+
- [Common Issues](#-common-issues)
|
|
12
|
+
- [Debugging Techniques](#-debugging-techniques)
|
|
13
|
+
- [Performance Issues](#-performance-issues)
|
|
14
|
+
- [Authentication Problems](#-authentication-problems)
|
|
15
|
+
- [Styling Issues](#-styling-issues)
|
|
16
|
+
- [Build & Deployment](#-build--deployment)
|
|
17
|
+
- [Getting Help](#-getting-help)
|
|
18
|
+
|
|
19
|
+
## 🐛 Common Issues
|
|
20
|
+
|
|
21
|
+
### Quick Fixes
|
|
22
|
+
|
|
23
|
+
**Most common issues and their solutions:**
|
|
24
|
+
|
|
25
|
+
| Issue | Quick Fix | Full Guide |
|
|
26
|
+
|-------|-----------|------------|
|
|
27
|
+
| Components not styled | Import `core.css` | [Styling Issues](#styling-issues) |
|
|
28
|
+
| Authentication not working | Check provider setup | [Authentication Problems](#authentication-problems) |
|
|
29
|
+
| Permissions returning false | Verify RBAC setup | [RBAC Issues](#rbac-issues) |
|
|
30
|
+
| Build failing | Check Tailwind config | [Build Issues](#build-issues) |
|
|
31
|
+
| DataTable not rendering | Check features prop | [Component Issues](#component-issues) |
|
|
32
|
+
|
|
33
|
+
### Styling Issues
|
|
34
|
+
|
|
35
|
+
**Problem**: Components appear unstyled or broken
|
|
36
|
+
|
|
37
|
+
**Quick Fix:**
|
|
38
|
+
```tsx
|
|
39
|
+
// ✅ Make sure you import the CSS
|
|
40
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Common Causes:**
|
|
44
|
+
- Missing CSS import
|
|
45
|
+
- Incorrect Tailwind configuration
|
|
46
|
+
- CSS conflicts with existing styles
|
|
47
|
+
- Missing Vite content scanning
|
|
48
|
+
|
|
49
|
+
**Full Solution**: See [Common Issues - Styling](./common-issues.md#styling-issues)
|
|
50
|
+
|
|
51
|
+
### Authentication Problems
|
|
52
|
+
|
|
53
|
+
**Problem**: Login not working or user state not updating
|
|
54
|
+
|
|
55
|
+
**Quick Fix:**
|
|
56
|
+
```tsx
|
|
57
|
+
// ✅ Ensure proper provider hierarchy
|
|
58
|
+
<UnifiedAuthProvider supabaseClient={supabase} appName="my-app">
|
|
59
|
+
<OrganisationProvider>
|
|
60
|
+
<EventProvider>
|
|
61
|
+
<YourApp />
|
|
62
|
+
</EventProvider>
|
|
63
|
+
</OrganisationProvider>
|
|
64
|
+
</UnifiedAuthProvider>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Common Causes:**
|
|
68
|
+
- Missing provider setup
|
|
69
|
+
- Incorrect Supabase configuration
|
|
70
|
+
- Provider hierarchy issues
|
|
71
|
+
- Session management problems
|
|
72
|
+
|
|
73
|
+
**Full Solution**: See [Common Issues - Authentication](./common-issues.md#authentication-issues)
|
|
74
|
+
|
|
75
|
+
### RBAC Issues
|
|
76
|
+
|
|
77
|
+
**Problem**: Permissions always return false or incorrect
|
|
78
|
+
|
|
79
|
+
**Quick Fix:**
|
|
80
|
+
```tsx
|
|
81
|
+
// ✅ Check if user has proper context
|
|
82
|
+
const { hasPermission, isLoading } = useCan();
|
|
83
|
+
if (isLoading) return <div>Loading permissions...</div>;
|
|
84
|
+
|
|
85
|
+
// ✅ Ensure proper scope
|
|
86
|
+
<PermissionGuard
|
|
87
|
+
userId={user.id}
|
|
88
|
+
scope={{ organisationId: currentOrg.id }}
|
|
89
|
+
permission="read:users"
|
|
90
|
+
>
|
|
91
|
+
<UserList />
|
|
92
|
+
</PermissionGuard>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Common Causes:**
|
|
96
|
+
- Missing organisation context
|
|
97
|
+
- Incorrect permission strings
|
|
98
|
+
- RBAC not properly initialized
|
|
99
|
+
- Database RLS policies
|
|
100
|
+
|
|
101
|
+
**Full Solution**: See [Common Issues - RBAC](./common-issues.md#rbac-issues)
|
|
102
|
+
|
|
103
|
+
## 🔍 Debugging Techniques
|
|
104
|
+
|
|
105
|
+
### Enable Debug Mode
|
|
106
|
+
|
|
107
|
+
**PACE Core Debug Mode:**
|
|
108
|
+
```tsx
|
|
109
|
+
// Enable debug logging
|
|
110
|
+
<UnifiedAuthProvider
|
|
111
|
+
supabaseClient={supabase}
|
|
112
|
+
appName="my-app"
|
|
113
|
+
debug={true} // Enable debug mode
|
|
114
|
+
>
|
|
115
|
+
<YourApp />
|
|
116
|
+
</UnifiedAuthProvider>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**RBAC Debug Mode:**
|
|
120
|
+
```tsx
|
|
121
|
+
// Debug permission checks
|
|
122
|
+
const { hasPermission, debugInfo } = useCan();
|
|
123
|
+
|
|
124
|
+
console.log('Permission debug info:', debugInfo);
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Browser DevTools
|
|
128
|
+
|
|
129
|
+
**React DevTools:**
|
|
130
|
+
1. Install React DevTools browser extension
|
|
131
|
+
2. Check component props and state
|
|
132
|
+
3. Use Profiler to identify performance issues
|
|
133
|
+
4. Inspect context providers
|
|
134
|
+
|
|
135
|
+
**Network Tab:**
|
|
136
|
+
1. Check API requests to Supabase
|
|
137
|
+
2. Verify authentication headers
|
|
138
|
+
3. Look for failed requests
|
|
139
|
+
4. Check response data
|
|
140
|
+
|
|
141
|
+
**Console Logging:**
|
|
142
|
+
```tsx
|
|
143
|
+
// Add temporary logging
|
|
144
|
+
useEffect(() => {
|
|
145
|
+
console.log('User:', user);
|
|
146
|
+
console.log('Session:', session);
|
|
147
|
+
console.log('Organisation:', currentOrg);
|
|
148
|
+
}, [user, session, currentOrg]);
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Common Debug Patterns
|
|
152
|
+
|
|
153
|
+
**Check Provider Hierarchy:**
|
|
154
|
+
```tsx
|
|
155
|
+
// Add debug components
|
|
156
|
+
function DebugProviders() {
|
|
157
|
+
const auth = useUnifiedAuth();
|
|
158
|
+
const org = useOrganisation();
|
|
159
|
+
const events = useEvents();
|
|
160
|
+
|
|
161
|
+
console.log('Auth:', auth);
|
|
162
|
+
console.log('Organisation:', org);
|
|
163
|
+
console.log('Events:', events);
|
|
164
|
+
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Add to your app
|
|
169
|
+
<DebugProviders />
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Check Permission State:**
|
|
173
|
+
```tsx
|
|
174
|
+
function PermissionDebugger() {
|
|
175
|
+
const { hasPermission, isLoading, error } = useCan();
|
|
176
|
+
|
|
177
|
+
console.log('Permission state:', {
|
|
178
|
+
hasPermission: hasPermission('read', 'users'),
|
|
179
|
+
isLoading,
|
|
180
|
+
error
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## ⚡ Performance Issues
|
|
188
|
+
|
|
189
|
+
### Slow Rendering
|
|
190
|
+
|
|
191
|
+
**Symptoms:**
|
|
192
|
+
- Components take long to render
|
|
193
|
+
- UI feels sluggish
|
|
194
|
+
- High CPU usage
|
|
195
|
+
|
|
196
|
+
**Solutions:**
|
|
197
|
+
```tsx
|
|
198
|
+
// ✅ Use React.memo for expensive components
|
|
199
|
+
const ExpensiveComponent = React.memo(({ data }) => {
|
|
200
|
+
return <DataTable data={data} columns={columns} />;
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
// ✅ Use useCallback for event handlers
|
|
204
|
+
const handleClick = useCallback((id: string) => {
|
|
205
|
+
// Handle click
|
|
206
|
+
}, []);
|
|
207
|
+
|
|
208
|
+
// ✅ Use useMemo for expensive calculations
|
|
209
|
+
const processedData = useMemo(() => {
|
|
210
|
+
return data.map(item => expensiveTransform(item));
|
|
211
|
+
}, [data]);
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Large Bundle Size
|
|
215
|
+
|
|
216
|
+
**Symptoms:**
|
|
217
|
+
- Slow initial load
|
|
218
|
+
- Large JavaScript bundles
|
|
219
|
+
- Long build times
|
|
220
|
+
|
|
221
|
+
**Solutions:**
|
|
222
|
+
```tsx
|
|
223
|
+
// ✅ Use dynamic imports
|
|
224
|
+
const HeavyComponent = React.lazy(() => import('./HeavyComponent'));
|
|
225
|
+
|
|
226
|
+
// ✅ Import only what you need
|
|
227
|
+
import { Button, Card } from '@jmruthers/pace-core';
|
|
228
|
+
// Instead of: import * as PACE from '@jmruthers/pace-core';
|
|
229
|
+
|
|
230
|
+
// ✅ Use code splitting
|
|
231
|
+
const AdminPanel = React.lazy(() => import('./AdminPanel'));
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Memory Leaks
|
|
235
|
+
|
|
236
|
+
**Symptoms:**
|
|
237
|
+
- Memory usage increases over time
|
|
238
|
+
- Browser becomes slow
|
|
239
|
+
- Crashes after extended use
|
|
240
|
+
|
|
241
|
+
**Solutions:**
|
|
242
|
+
```tsx
|
|
243
|
+
// ✅ Clean up event listeners
|
|
244
|
+
useEffect(() => {
|
|
245
|
+
const handleResize = () => setWidth(window.innerWidth);
|
|
246
|
+
window.addEventListener('resize', handleResize);
|
|
247
|
+
|
|
248
|
+
return () => window.removeEventListener('resize', handleResize);
|
|
249
|
+
}, []);
|
|
250
|
+
|
|
251
|
+
// ✅ Cancel API requests
|
|
252
|
+
useEffect(() => {
|
|
253
|
+
const controller = new AbortController();
|
|
254
|
+
|
|
255
|
+
fetchData({ signal: controller.signal });
|
|
256
|
+
|
|
257
|
+
return () => controller.abort();
|
|
258
|
+
}, []);
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## 🔐 Authentication Problems
|
|
262
|
+
|
|
263
|
+
### Login Not Working
|
|
264
|
+
|
|
265
|
+
**Checklist:**
|
|
266
|
+
- [ ] Supabase client properly configured
|
|
267
|
+
- [ ] Correct environment variables
|
|
268
|
+
- [ ] Provider hierarchy correct
|
|
269
|
+
- [ ] User credentials valid
|
|
270
|
+
- [ ] Network connectivity
|
|
271
|
+
|
|
272
|
+
**Debug Steps:**
|
|
273
|
+
```tsx
|
|
274
|
+
// 1. Check Supabase connection
|
|
275
|
+
const { data, error } = await supabase.auth.getSession();
|
|
276
|
+
console.log('Session:', data, error);
|
|
277
|
+
|
|
278
|
+
// 2. Check login attempt
|
|
279
|
+
const { data, error } = await supabase.auth.signInWithPassword({
|
|
280
|
+
email: 'user@example.com',
|
|
281
|
+
password: 'password'
|
|
282
|
+
});
|
|
283
|
+
console.log('Login result:', data, error);
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Session Management Issues
|
|
287
|
+
|
|
288
|
+
**Common Problems:**
|
|
289
|
+
- Session not persisting
|
|
290
|
+
- Automatic logout
|
|
291
|
+
- Token refresh failures
|
|
292
|
+
|
|
293
|
+
**Solutions:**
|
|
294
|
+
```tsx
|
|
295
|
+
// ✅ Check session persistence
|
|
296
|
+
useEffect(() => {
|
|
297
|
+
const { data: { subscription } } = supabase.auth.onAuthStateChange(
|
|
298
|
+
(event, session) => {
|
|
299
|
+
console.log('Auth state change:', event, session);
|
|
300
|
+
if (event === 'SIGNED_OUT') {
|
|
301
|
+
// Handle logout
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
);
|
|
305
|
+
|
|
306
|
+
return () => subscription.unsubscribe();
|
|
307
|
+
}, []);
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Permission Issues
|
|
311
|
+
|
|
312
|
+
**Checklist:**
|
|
313
|
+
- [ ] User has proper roles
|
|
314
|
+
- [ ] Organisation context set
|
|
315
|
+
- [ ] RLS policies correct
|
|
316
|
+
- [ ] Permission strings match
|
|
317
|
+
|
|
318
|
+
**Debug:**
|
|
319
|
+
```tsx
|
|
320
|
+
// Check user roles
|
|
321
|
+
const { data: userRoles } = await supabase
|
|
322
|
+
.from('user_roles')
|
|
323
|
+
.select('*')
|
|
324
|
+
.eq('user_id', user.id);
|
|
325
|
+
|
|
326
|
+
console.log('User roles:', userRoles);
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## 🎨 Styling Issues
|
|
330
|
+
|
|
331
|
+
### Components Not Styled
|
|
332
|
+
|
|
333
|
+
**Quick Fix:**
|
|
334
|
+
```tsx
|
|
335
|
+
// ✅ Import CSS first
|
|
336
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
337
|
+
import { Button } from '@jmruthers/pace-core';
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**Vite Configuration:**
|
|
341
|
+
```ts
|
|
342
|
+
// vite.config.ts
|
|
343
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
344
|
+
export default defineConfig({
|
|
345
|
+
plugins: [
|
|
346
|
+
react(),
|
|
347
|
+
tailwindcss({
|
|
348
|
+
content: [
|
|
349
|
+
'./src/**/*.{js,ts,jsx,tsx}',
|
|
350
|
+
'./node_modules/@jmruthers/pace-core/**/*.{js,ts,jsx,tsx}'
|
|
351
|
+
]
|
|
352
|
+
})
|
|
353
|
+
],
|
|
354
|
+
})
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### CSS Conflicts
|
|
358
|
+
|
|
359
|
+
**Problem**: PACE Core styles conflict with existing styles
|
|
360
|
+
|
|
361
|
+
**Solution:**
|
|
362
|
+
```css
|
|
363
|
+
/* Use CSS layers to control specificity */
|
|
364
|
+
@layer pace-core, your-app;
|
|
365
|
+
|
|
366
|
+
@layer your-app {
|
|
367
|
+
/* Your custom styles */
|
|
368
|
+
.my-button {
|
|
369
|
+
/* Will override PACE Core styles */
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### Theme Not Working
|
|
375
|
+
|
|
376
|
+
**Check:**
|
|
377
|
+
- [ ] CSS import order
|
|
378
|
+
- [ ] Tailwind configuration
|
|
379
|
+
- [ ] Content scanning paths
|
|
380
|
+
- [ ] CSS variables defined
|
|
381
|
+
|
|
382
|
+
## 🏗️ Build & Deployment
|
|
383
|
+
|
|
384
|
+
### Build Failures
|
|
385
|
+
|
|
386
|
+
**Common Causes:**
|
|
387
|
+
- Missing dependencies
|
|
388
|
+
- TypeScript errors
|
|
389
|
+
- Tailwind configuration issues
|
|
390
|
+
- Environment variables missing
|
|
391
|
+
|
|
392
|
+
**Solutions:**
|
|
393
|
+
```bash
|
|
394
|
+
# Clear cache and reinstall
|
|
395
|
+
rm -rf node_modules package-lock.json
|
|
396
|
+
npm install
|
|
397
|
+
|
|
398
|
+
# Check for TypeScript errors
|
|
399
|
+
npm run type-check
|
|
400
|
+
|
|
401
|
+
# Verify Tailwind config
|
|
402
|
+
npm run build -- --debug
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### Environment Variables
|
|
406
|
+
|
|
407
|
+
**Check:**
|
|
408
|
+
```tsx
|
|
409
|
+
// Verify environment variables
|
|
410
|
+
console.log('Environment:', {
|
|
411
|
+
supabaseUrl: import.meta.env.VITE_SUPABASE_URL,
|
|
412
|
+
supabaseKey: import.meta.env.VITE_SUPABASE_ANON_KEY,
|
|
413
|
+
appName: import.meta.env.VITE_APP_NAME,
|
|
414
|
+
});
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### Deployment Issues
|
|
418
|
+
|
|
419
|
+
**Common Problems:**
|
|
420
|
+
- Missing environment variables
|
|
421
|
+
- Build artifacts not found
|
|
422
|
+
- CORS issues
|
|
423
|
+
- CDN configuration
|
|
424
|
+
|
|
425
|
+
**Solutions:**
|
|
426
|
+
```yaml
|
|
427
|
+
# Example deployment config
|
|
428
|
+
env:
|
|
429
|
+
VITE_SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
|
|
430
|
+
VITE_SUPABASE_ANON_KEY: ${{ secrets.SUPABASE_ANON_KEY }}
|
|
431
|
+
VITE_APP_NAME: "My App"
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
## 🆘 Getting Help
|
|
435
|
+
|
|
436
|
+
### Before Asking for Help
|
|
437
|
+
|
|
438
|
+
1. **Check this guide** - Your issue might already be covered
|
|
439
|
+
2. **Search existing issues** - Look for similar problems
|
|
440
|
+
3. **Gather information** - Error messages, browser console, steps to reproduce
|
|
441
|
+
4. **Try debugging** - Use the debugging techniques above
|
|
442
|
+
|
|
443
|
+
### Information to Include
|
|
444
|
+
|
|
445
|
+
When asking for help, include:
|
|
446
|
+
|
|
447
|
+
- **PACE Core version**: `npm list @jmruthers/pace-core`
|
|
448
|
+
- **Node.js version**: `node --version`
|
|
449
|
+
- **Browser and version**
|
|
450
|
+
- **Error messages** (full stack trace)
|
|
451
|
+
- **Steps to reproduce**
|
|
452
|
+
- **Expected vs actual behavior**
|
|
453
|
+
- **Code snippets** (minimal reproduction)
|
|
454
|
+
|
|
455
|
+
### Debug Information Template
|
|
456
|
+
|
|
457
|
+
```tsx
|
|
458
|
+
// Add this to your app for debugging
|
|
459
|
+
function DebugInfo() {
|
|
460
|
+
const auth = useUnifiedAuth();
|
|
461
|
+
const org = useOrganisation();
|
|
462
|
+
const events = useEvents();
|
|
463
|
+
const { hasPermission } = useCan();
|
|
464
|
+
|
|
465
|
+
return (
|
|
466
|
+
<div style={{ position: 'fixed', top: 0, right: 0, background: 'white', padding: '10px', border: '1px solid black', zIndex: 9999 }}>
|
|
467
|
+
<h4>Debug Info</h4>
|
|
468
|
+
<pre>{JSON.stringify({
|
|
469
|
+
auth: { user: auth.user?.id, loading: auth.loading },
|
|
470
|
+
org: { current: org.selectedOrganisation?.id, loading: org.loading },
|
|
471
|
+
events: { current: events.selectedEvent?.id, loading: events.loading },
|
|
472
|
+
permissions: { canReadUsers: hasPermission('read', 'users') }
|
|
473
|
+
}, null, 2)}</pre>
|
|
474
|
+
</div>
|
|
475
|
+
);
|
|
476
|
+
}
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
### Support Channels
|
|
480
|
+
|
|
481
|
+
- **GitHub Issues**: For bug reports and feature requests
|
|
482
|
+
- **Documentation**: Check the full documentation
|
|
483
|
+
- **Community**: Join our community discussions
|
|
484
|
+
- **Email**: For security issues or private support
|
|
485
|
+
|
|
486
|
+
### Common Solutions
|
|
487
|
+
|
|
488
|
+
**Still having issues? Try these:**
|
|
489
|
+
|
|
490
|
+
1. **Update to latest version**
|
|
491
|
+
2. **Clear all caches** (browser, npm, build)
|
|
492
|
+
3. **Check browser console** for errors
|
|
493
|
+
4. **Verify all dependencies** are installed
|
|
494
|
+
5. **Test in incognito mode** to rule out extensions
|
|
495
|
+
6. **Try a minimal reproduction** in a new project
|
|
496
|
+
|
|
497
|
+
Remember: **Most issues have simple solutions. Take a step back and check the basics first!**
|