@jmruthers/pace-core 0.4.1 → 0.5.3
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-ZQDRE46Q.js} +15 -17
- package/dist/{DataTable-BDBqkU-i.d.ts → DataTable-ltTFXHS3.d.ts} +25 -51
- package/dist/{Table-CIm9IWqk.d.ts → PublicLoadingSpinner-Bq_-BeK-.d.ts} +635 -122
- package/dist/{UnifiedAuthProvider-V7y63NjT.d.ts → RBACProvider-BO4ilsQB.d.ts} +11 -36
- package/dist/UnifiedAuthProvider-DGQsy-vY.d.ts +103 -0
- package/dist/{api-AIJ3IJX3.js → api-H5A3H4IR.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-5H3C2SWM.js +3293 -0
- package/dist/chunk-5H3C2SWM.js.map +1 -0
- package/dist/chunk-5SIXIV7R.js +1925 -0
- package/dist/chunk-5SIXIV7R.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-4ZTIEYU2.js → chunk-CDQ3PX7L.js} +1 -1
- package/dist/chunk-CDQ3PX7L.js.map +1 -0
- package/dist/chunk-GNTALZV3.js +17 -0
- package/dist/chunk-GNTALZV3.js.map +1 -0
- package/dist/chunk-GWSBHC4J.js +1349 -0
- package/dist/chunk-GWSBHC4J.js.map +1 -0
- package/dist/{chunk-JUUNUW3O.js → chunk-HD7PYDUV.js} +14 -5
- package/dist/chunk-HD7PYDUV.js.map +1 -0
- package/dist/{chunk-H4PZ4B3Y.js → chunk-HXX35Q2M.js} +113 -27
- package/dist/chunk-HXX35Q2M.js.map +1 -0
- package/dist/chunk-K6B7BLSE.js +388 -0
- package/dist/chunk-K6B7BLSE.js.map +1 -0
- package/dist/chunk-M4RW7PIP.js +5441 -0
- package/dist/chunk-M4RW7PIP.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-DC5AMYBS.js → chunk-PLDDJCW6.js} +15 -5
- package/dist/chunk-PLDDJCW6.js.map +1 -0
- package/dist/{chunk-IOX76PSM.js → chunk-PVMYVQSM.js} +270 -28
- package/dist/chunk-PVMYVQSM.js.map +1 -0
- package/dist/{chunk-4MCJAK7J.js → chunk-QKHFMQ5R.js} +2155 -4853
- package/dist/chunk-QKHFMQ5R.js.map +1 -0
- package/dist/chunk-QVYBYGT2.js +428 -0
- package/dist/chunk-QVYBYGT2.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-WJARTBCT.js +128 -0
- package/dist/chunk-WJARTBCT.js.map +1 -0
- package/dist/chunk-YDJW5XTN.js +84 -0
- package/dist/chunk-YDJW5XTN.js.map +1 -0
- package/dist/components.d.ts +907 -10
- package/dist/components.js +3237 -204
- 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 +33 -11
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +247 -111
- package/dist/index.js +330 -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 +5 -4
- package/dist/providers.js +14 -5
- package/dist/rbac/index.d.ts +964 -839
- package/dist/rbac/index.js +58 -1970
- package/dist/rbac/index.js.map +1 -1
- package/dist/styles/core.css +364 -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-CMPjE_fv.d.ts} +0 -1
- package/dist/usePublicRouteParams-B2OcAsur.d.ts +477 -0
- package/dist/utils.d.ts +83 -60
- package/dist/utils.js +293 -55651
- 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/InvalidScopeError.md +73 -0
- package/docs/api/classes/MissingUserContextError.md +66 -0
- package/docs/api/classes/OrganisationContextRequiredError.md +66 -0
- package/docs/api/classes/PermissionDeniedError.md +73 -0
- package/docs/api/classes/PublicErrorBoundary.md +132 -0
- package/docs/api/classes/RBACAuditManager.md +270 -0
- package/docs/api/classes/RBACCache.md +284 -0
- package/docs/api/classes/RBACEngine.md +141 -0
- package/docs/api/classes/RBACError.md +76 -0
- package/docs/api/classes/RBACNotInitializedError.md +66 -0
- package/docs/api/classes/SecureSupabaseClient.md +135 -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/DataAccessRecord.md +96 -0
- 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/EnhancedNavigationMenuProps.md +235 -0
- 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/NavigationAccessRecord.md +107 -0
- package/docs/api/interfaces/NavigationContextType.md +164 -0
- package/docs/api/interfaces/NavigationGuardProps.md +139 -0
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +117 -0
- 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/PageAccessRecord.md +85 -0
- package/docs/api/interfaces/PagePermissionContextType.md +140 -0
- package/docs/api/interfaces/PagePermissionGuardProps.md +153 -0
- package/docs/api/interfaces/PagePermissionProviderProps.md +119 -0
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +153 -0
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +94 -0
- package/docs/api/interfaces/PublicErrorBoundaryState.md +68 -0
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +86 -0
- package/docs/api/interfaces/PublicPageFooterProps.md +112 -0
- package/docs/api/interfaces/PublicPageHeaderProps.md +138 -0
- package/docs/api/interfaces/PublicPageLayoutProps.md +138 -0
- package/docs/api/interfaces/RBACConfig.md +99 -0
- package/docs/api/interfaces/RBACContextType.md +474 -0
- package/docs/api/interfaces/RBACLogger.md +112 -0
- package/docs/api/interfaces/RBACProviderProps.md +107 -0
- package/docs/api/interfaces/RoleBasedRouterContextType.md +151 -0
- package/docs/api/interfaces/RoleBasedRouterProps.md +156 -0
- package/docs/api/interfaces/RouteAccessRecord.md +107 -0
- package/docs/api/interfaces/RouteConfig.md +121 -0
- package/docs/api/interfaces/SecureDataContextType.md +168 -0
- package/docs/api/interfaces/SecureDataProviderProps.md +132 -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 +465 -64
- 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 +4233 -1134
- 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 +77 -105
- 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 +226 -111
- 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 +54 -91
- package/docs/visual-testing.md +0 -7
- package/package.json +47 -25
- 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.test.tsx +482 -0
- package/src/components/Footer/Footer.tsx +197 -0
- package/src/components/Footer/index.ts +17 -0
- package/src/components/Form/Form.test.tsx +1158 -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.test.tsx +582 -0
- package/src/components/Header/Header.tsx +301 -0
- package/src/components/Header/index.ts +4 -0
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +489 -0
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +164 -0
- package/src/components/InactivityWarningModal/index.ts +9 -0
- package/src/components/Input/Input.test.tsx +466 -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.test.tsx +450 -0
- package/src/components/LoadingSpinner/LoadingSpinner.tsx +98 -0
- package/src/components/LoadingSpinner/index.ts +3 -0
- package/src/components/LoginForm/LoginForm.test.tsx +816 -0
- package/src/components/LoginForm/LoginForm.tsx +273 -0
- package/src/components/LoginForm/index.ts +3 -0
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +883 -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.test.tsx +748 -0
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +304 -0
- package/src/components/OrganisationSelector/index.ts +9 -0
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +891 -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.test.tsx +475 -0
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +221 -0
- package/src/components/PaceLoginPage/index.ts +1 -0
- package/src/components/PasswordReset/PasswordChangeForm.test.tsx +621 -0
- package/src/components/PasswordReset/PasswordChangeForm.tsx +186 -0
- package/src/components/PasswordReset/PasswordResetForm.test.tsx +605 -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/Select/Select.test.tsx +948 -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.test.tsx +586 -0
- package/src/components/Toast/Toast.tsx +339 -0
- package/src/components/Toast/index.ts +14 -0
- package/src/components/Tooltip/Tooltip.test.tsx +852 -0
- package/src/components/Tooltip/Tooltip.tsx +167 -0
- package/src/components/Tooltip/index.ts +7 -0
- package/src/components/UserMenu/UserMenu.test.tsx +702 -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.test.ts +375 -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.test.ts +528 -0
- package/src/hooks/useOrganisationPermissions.ts +208 -0
- package/src/hooks/useOrganisationSecurity.test.ts +734 -0
- package/src/hooks/useOrganisationSecurity.ts +262 -0
- package/src/hooks/usePerformanceMonitor.ts +128 -0
- package/src/hooks/usePermissionCache.test.ts +542 -0
- package/src/hooks/usePermissionCache.ts +455 -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 +199 -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/UnifiedAuthProvider.tsx +327 -0
- package/src/providers/index.ts +17 -0
- package/src/rbac/README.md +885 -0
- package/src/rbac/__tests__/integration.test.tsx +218 -0
- package/src/rbac/adapters.tsx +726 -0
- package/src/rbac/api.test.ts +441 -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/index.ts +21 -0
- package/src/rbac/hooks/useCan.test.ts +461 -0
- package/src/rbac/hooks/usePermissions.test.ts +359 -0
- package/src/rbac/hooks/usePermissions.ts +567 -0
- package/src/rbac/hooks/useRBAC.simple.test.ts +90 -0
- package/src/rbac/hooks/useRBAC.test.ts +503 -0
- package/src/rbac/hooks/useRBAC.ts +262 -0
- package/src/rbac/index.ts +109 -0
- package/src/rbac/permissions.ts +293 -0
- package/src/rbac/providers/RBACProvider.tsx +634 -0
- package/src/rbac/providers/__tests__/RBACProvider.test.tsx +687 -0
- package/src/rbac/providers/index.ts +11 -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 +364 -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/formatDate.test.ts +241 -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/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-KK6WIDK6.js +0 -63
- package/dist/chunk-KK6WIDK6.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-ZQDRE46Q.js.map} +0 -0
- package/dist/{api-AIJ3IJX3.js.map → api-H5A3H4IR.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
package/docs/migration/README.md
CHANGED
|
@@ -68,7 +68,7 @@ npm install @jmruthers/pace-core@latest
|
|
|
68
68
|
**CRITICAL**: Fixed Tailwind v4 theme file with missing semantic colors and circular @apply references.
|
|
69
69
|
|
|
70
70
|
**Impact**:
|
|
71
|
-
- Build failures when importing `@jmruthers/pace-core/styles/
|
|
71
|
+
- Build failures when importing `@jmruthers/pace-core/styles/core.css`
|
|
72
72
|
- Missing semantic colors (ring, border, background, foreground, etc.)
|
|
73
73
|
- Component classes not working due to circular references
|
|
74
74
|
|
|
@@ -90,9 +90,9 @@ npm install @jmruthers/pace-core@latest
|
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
**Usage** (now works out-of-the-box):
|
|
93
|
-
```
|
|
94
|
-
/*
|
|
95
|
-
|
|
93
|
+
```tsx
|
|
94
|
+
/* main.tsx */
|
|
95
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
```ts
|
|
@@ -143,7 +143,7 @@ PACE Core now supports Tailwind CSS v4 with modern CSS-first configuration.
|
|
|
143
143
|
@tailwind utilities;
|
|
144
144
|
|
|
145
145
|
/* After (v4) */
|
|
146
|
-
@import '@jmruthers/pace-core/styles/
|
|
146
|
+
@import '@jmruthers/pace-core/styles/core.css';
|
|
147
147
|
```
|
|
148
148
|
|
|
149
149
|
For complete Tailwind v4 setup instructions, see the [Styling Guide](../styles/README.md#tailwind-css-v4-setup).
|
|
@@ -270,7 +270,10 @@ function App() {
|
|
|
270
270
|
**After (PACE Core)**
|
|
271
271
|
```tsx
|
|
272
272
|
import { UnifiedAuthProvider } from '@jmruthers/pace-core';
|
|
273
|
-
|
|
273
|
+
|
|
274
|
+
// Import the core CSS file - app.css must come first for proper @theme processing
|
|
275
|
+
import './app.css'; // Your app's color palette
|
|
276
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
274
277
|
|
|
275
278
|
function App() {
|
|
276
279
|
return (
|
|
@@ -337,7 +340,10 @@ function MyComponent() {
|
|
|
337
340
|
**After (PACE Core Components)**
|
|
338
341
|
```tsx
|
|
339
342
|
import { Button, Modal } from '@jmruthers/pace-core';
|
|
340
|
-
|
|
343
|
+
|
|
344
|
+
// Import the core CSS file (in your app's entry point)
|
|
345
|
+
import './app.css'; // Your app's color palette (must come first)
|
|
346
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
341
347
|
|
|
342
348
|
function MyComponent() {
|
|
343
349
|
return (
|
|
@@ -434,7 +440,11 @@ echo "Migration complete! Please review changes and test thoroughly."
|
|
|
434
440
|
|
|
435
441
|
### Issue 3: Styling Not Applied
|
|
436
442
|
**Problem**: Components look unstyled
|
|
437
|
-
**Solution**: Import the
|
|
443
|
+
**Solution**: Import the CSS files in your app's entry point:
|
|
444
|
+
```tsx
|
|
445
|
+
import './app.css'; // Your app's color palette (must come first)
|
|
446
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
447
|
+
```
|
|
438
448
|
|
|
439
449
|
### Issue 4: TypeScript Errors
|
|
440
450
|
**Problem**: TypeScript errors after migration
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
# Quick Migration Guide
|
|
2
|
+
|
|
3
|
+
> **🚀 Fast Track Migration** | [Full Migration Guide](./README.md) | [Breaking Changes](./breaking-changes.md)
|
|
4
|
+
|
|
5
|
+
Quick migration guide for common PACE Core upgrade scenarios. For detailed migration instructions, see the [Full Migration Guide](./README.md).
|
|
6
|
+
|
|
7
|
+
## 🎯 Quick Migration Checklist
|
|
8
|
+
|
|
9
|
+
### Before You Start
|
|
10
|
+
- [ ] **Backup your project** - Always backup before major updates
|
|
11
|
+
- [ ] **Check current version** - `npm list @jmruthers/pace-core`
|
|
12
|
+
- [ ] **Review changelog** - Check for breaking changes
|
|
13
|
+
- [ ] **Test in development** - Never migrate directly in production
|
|
14
|
+
|
|
15
|
+
### Common Migration Scenarios
|
|
16
|
+
|
|
17
|
+
## 📦 Package Updates
|
|
18
|
+
|
|
19
|
+
### Minor Version Updates (e.g., v0.4.16 → v0.4.17)
|
|
20
|
+
|
|
21
|
+
**Usually safe, but check for:**
|
|
22
|
+
- New features
|
|
23
|
+
- Bug fixes
|
|
24
|
+
- Performance improvements
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Update to latest
|
|
28
|
+
npm update @jmruthers/pace-core
|
|
29
|
+
|
|
30
|
+
# Or specific version
|
|
31
|
+
npm install @jmruthers/pace-core@0.4.17
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**What to check:**
|
|
35
|
+
- [ ] App still builds successfully
|
|
36
|
+
- [ ] No console errors
|
|
37
|
+
- [ ] Components render correctly
|
|
38
|
+
- [ ] Authentication still works
|
|
39
|
+
|
|
40
|
+
### Major Version Updates (e.g., v0.x → v1.x)
|
|
41
|
+
|
|
42
|
+
**Requires more attention:**
|
|
43
|
+
- Breaking API changes
|
|
44
|
+
- New required props
|
|
45
|
+
- Deprecated features
|
|
46
|
+
- Configuration changes
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Check what's new
|
|
50
|
+
npm info @jmruthers/pace-core versions --json
|
|
51
|
+
|
|
52
|
+
# Update to latest
|
|
53
|
+
npm install @jmruthers/pace-core@latest
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**What to check:**
|
|
57
|
+
- [ ] Review [Breaking Changes](./breaking-changes.md)
|
|
58
|
+
- [ ] Update import statements
|
|
59
|
+
- [ ] Fix deprecated API usage
|
|
60
|
+
- [ ] Update configuration files
|
|
61
|
+
- [ ] Test all functionality
|
|
62
|
+
|
|
63
|
+
## 🔧 Configuration Updates
|
|
64
|
+
|
|
65
|
+
### Tailwind v4 Migration
|
|
66
|
+
|
|
67
|
+
**From v0.4.15 to v0.4.16+ (CSS-First Approach):**
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Remove old dependencies
|
|
71
|
+
npm uninstall tailwindcss postcss autoprefixer
|
|
72
|
+
|
|
73
|
+
# Install new dependencies
|
|
74
|
+
npm install @tailwindcss/vite tailwindcss@^4.0.0
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Update vite.config.ts:**
|
|
78
|
+
```ts
|
|
79
|
+
// Before (v0.4.15)
|
|
80
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
81
|
+
export default defineConfig({
|
|
82
|
+
plugins: [
|
|
83
|
+
react(),
|
|
84
|
+
tailwindcss({
|
|
85
|
+
content: [
|
|
86
|
+
'./src/**/*.{js,ts,jsx,tsx}',
|
|
87
|
+
'./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}'
|
|
88
|
+
]
|
|
89
|
+
})
|
|
90
|
+
],
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
// After (v0.4.16+)
|
|
94
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
95
|
+
export default defineConfig({
|
|
96
|
+
plugins: [
|
|
97
|
+
react(),
|
|
98
|
+
tailwindcss({
|
|
99
|
+
content: [
|
|
100
|
+
'./src/**/*.{js,ts,jsx,tsx}' // Only app files, pace-core scanned via @source
|
|
101
|
+
]
|
|
102
|
+
})
|
|
103
|
+
],
|
|
104
|
+
})
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Update CSS imports:**
|
|
108
|
+
```tsx
|
|
109
|
+
// Before
|
|
110
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
111
|
+
|
|
112
|
+
// After
|
|
113
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Source Path Fix (v0.4.17+)
|
|
117
|
+
|
|
118
|
+
**Critical fix for @source directive paths:**
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
// vite.config.ts
|
|
122
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
123
|
+
export default defineConfig({
|
|
124
|
+
plugins: [
|
|
125
|
+
react(),
|
|
126
|
+
tailwindcss({
|
|
127
|
+
content: [
|
|
128
|
+
'./src/**/*.{js,ts,jsx,tsx}',
|
|
129
|
+
'./node_modules/@jmruthers/pace-core/**/*.{js,ts,jsx,tsx}'
|
|
130
|
+
]
|
|
131
|
+
})
|
|
132
|
+
],
|
|
133
|
+
})
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 🔄 API Changes
|
|
137
|
+
|
|
138
|
+
### Component Props
|
|
139
|
+
|
|
140
|
+
**Common prop changes:**
|
|
141
|
+
|
|
142
|
+
```tsx
|
|
143
|
+
// Before (v0.x)
|
|
144
|
+
<DataTable
|
|
145
|
+
data={data}
|
|
146
|
+
columns={columns}
|
|
147
|
+
enableSearch={true}
|
|
148
|
+
enablePagination={true}
|
|
149
|
+
/>
|
|
150
|
+
|
|
151
|
+
// After (v1.x)
|
|
152
|
+
<DataTable
|
|
153
|
+
data={data}
|
|
154
|
+
columns={columns}
|
|
155
|
+
features={{
|
|
156
|
+
search: true,
|
|
157
|
+
pagination: true,
|
|
158
|
+
sorting: true,
|
|
159
|
+
filtering: true
|
|
160
|
+
}}
|
|
161
|
+
/>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Hook Changes
|
|
165
|
+
|
|
166
|
+
**RBAC hooks moved to separate module:**
|
|
167
|
+
|
|
168
|
+
```tsx
|
|
169
|
+
// Before
|
|
170
|
+
import { useCan, usePermissions } from '@jmruthers/pace-core';
|
|
171
|
+
|
|
172
|
+
// After
|
|
173
|
+
import { useCan, usePermissions } from '@jmruthers/pace-core/rbac';
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Import Changes
|
|
177
|
+
|
|
178
|
+
**Consolidated imports:**
|
|
179
|
+
|
|
180
|
+
```tsx
|
|
181
|
+
// Before
|
|
182
|
+
import { Button } from '@jmruthers/pace-core/components';
|
|
183
|
+
import { useUnifiedAuth } from '@jmruthers/pace-core/hooks';
|
|
184
|
+
|
|
185
|
+
// After
|
|
186
|
+
import { Button, useUnifiedAuth } from '@jmruthers/pace-core';
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## 🐛 Common Migration Issues
|
|
190
|
+
|
|
191
|
+
### Styling Issues
|
|
192
|
+
|
|
193
|
+
**Problem**: Components appear unstyled after update
|
|
194
|
+
|
|
195
|
+
**Solution**:
|
|
196
|
+
```tsx
|
|
197
|
+
// Ensure CSS import is first
|
|
198
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
199
|
+
import { Button } from '@jmruthers/pace-core';
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Build Errors
|
|
203
|
+
|
|
204
|
+
**Problem**: Build fails with Tailwind errors
|
|
205
|
+
|
|
206
|
+
**Solution**:
|
|
207
|
+
```bash
|
|
208
|
+
# Clear all caches
|
|
209
|
+
rm -rf node_modules package-lock.json
|
|
210
|
+
npm install
|
|
211
|
+
|
|
212
|
+
# Check Tailwind config
|
|
213
|
+
npm run build -- --debug
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### TypeScript Errors
|
|
217
|
+
|
|
218
|
+
**Problem**: Type errors after update
|
|
219
|
+
|
|
220
|
+
**Solution**:
|
|
221
|
+
```bash
|
|
222
|
+
# Update TypeScript types
|
|
223
|
+
npm install @types/react@latest @types/react-dom@latest
|
|
224
|
+
|
|
225
|
+
# Regenerate types
|
|
226
|
+
npm run type-check
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Authentication Issues
|
|
230
|
+
|
|
231
|
+
**Problem**: Login not working after update
|
|
232
|
+
|
|
233
|
+
**Solution**:
|
|
234
|
+
```tsx
|
|
235
|
+
// Check provider hierarchy
|
|
236
|
+
<UnifiedAuthProvider supabaseClient={supabase} appName="my-app">
|
|
237
|
+
<OrganisationProvider>
|
|
238
|
+
<EventProvider>
|
|
239
|
+
<YourApp />
|
|
240
|
+
</EventProvider>
|
|
241
|
+
</OrganisationProvider>
|
|
242
|
+
</UnifiedAuthProvider>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## ✅ Post-Migration Testing
|
|
246
|
+
|
|
247
|
+
### Essential Tests
|
|
248
|
+
- [ ] **Build succeeds** - `npm run build`
|
|
249
|
+
- [ ] **App starts** - `npm run dev`
|
|
250
|
+
- [ ] **Authentication works** - Login/logout
|
|
251
|
+
- [ ] **Components render** - All UI components display
|
|
252
|
+
- [ ] **Permissions work** - RBAC functions correctly
|
|
253
|
+
- [ ] **Forms work** - Form validation and submission
|
|
254
|
+
- [ ] **Data tables work** - CRUD operations
|
|
255
|
+
- [ ] **Styling correct** - No visual regressions
|
|
256
|
+
|
|
257
|
+
### Performance Tests
|
|
258
|
+
- [ ] **Bundle size** - Check for size increases
|
|
259
|
+
- [ ] **Load time** - Measure initial load
|
|
260
|
+
- [ ] **Runtime performance** - Check for slowdowns
|
|
261
|
+
- [ ] **Memory usage** - Monitor for leaks
|
|
262
|
+
|
|
263
|
+
### Browser Tests
|
|
264
|
+
- [ ] **Chrome** - Latest version
|
|
265
|
+
- [ ] **Firefox** - Latest version
|
|
266
|
+
- [ ] **Safari** - Latest version
|
|
267
|
+
- [ ] **Mobile browsers** - iOS Safari, Chrome Mobile
|
|
268
|
+
|
|
269
|
+
## 🆘 Getting Help
|
|
270
|
+
|
|
271
|
+
### If Migration Fails
|
|
272
|
+
|
|
273
|
+
1. **Check the logs** - Look for specific error messages
|
|
274
|
+
2. **Revert changes** - Go back to working version
|
|
275
|
+
3. **Check documentation** - Look for migration guides
|
|
276
|
+
4. **Search issues** - Check GitHub issues
|
|
277
|
+
5. **Ask for help** - Create detailed issue report
|
|
278
|
+
|
|
279
|
+
### Debug Information
|
|
280
|
+
|
|
281
|
+
When asking for help, include:
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
# Version information
|
|
285
|
+
npm list @jmruthers/pace-core
|
|
286
|
+
node --version
|
|
287
|
+
npm --version
|
|
288
|
+
|
|
289
|
+
# Build output
|
|
290
|
+
npm run build 2>&1 | tee build.log
|
|
291
|
+
|
|
292
|
+
# Error details
|
|
293
|
+
# Include full error messages and stack traces
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Emergency Rollback
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# Rollback to previous version
|
|
300
|
+
npm install @jmruthers/pace-core@0.4.16
|
|
301
|
+
|
|
302
|
+
# Or specific working version
|
|
303
|
+
npm install @jmruthers/pace-core@0.4.15
|
|
304
|
+
|
|
305
|
+
# Clear caches
|
|
306
|
+
rm -rf node_modules package-lock.json
|
|
307
|
+
npm install
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## 📚 Additional Resources
|
|
311
|
+
|
|
312
|
+
- **[Full Migration Guide](./README.md)** - Detailed migration instructions
|
|
313
|
+
- **[Breaking Changes](./breaking-changes.md)** - Complete list of breaking changes
|
|
314
|
+
- **[Changelog](../CHANGELOG.md)** - Version history and changes
|
|
315
|
+
- **[Troubleshooting](../troubleshooting/README.md)** - Common issues and solutions
|
|
316
|
+
- **[GitHub Issues](https://github.com/jmruthers/pace-core/issues)** - Report bugs and get help
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
**Remember**: Always test migrations in a development environment first!
|
|
@@ -20,6 +20,16 @@ import { useRBAC } from '@jmruthers/pace-core';
|
|
|
20
20
|
import { useCan, usePermissions } from '@jmruthers/pace-core/rbac';
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
### 2. New Security Features
|
|
24
|
+
|
|
25
|
+
The new RBAC system includes enhanced security features that are automatically enabled:
|
|
26
|
+
|
|
27
|
+
- **Input Validation**: All UUIDs, permissions, and scopes are validated
|
|
28
|
+
- **Security Monitoring**: Comprehensive logging of security events
|
|
29
|
+
- **Rate Limiting**: Built-in protection against abuse
|
|
30
|
+
- **Input Sanitization**: Automatic sanitization of potentially dangerous inputs
|
|
31
|
+
- **Audit Trail**: Complete audit logging for all permission operations
|
|
32
|
+
|
|
23
33
|
### 2. Hook API Changes
|
|
24
34
|
|
|
25
35
|
**Old (Legacy)**:
|
|
@@ -213,6 +223,9 @@ export async function POST(request: Request) {
|
|
|
213
223
|
- [ ] Verify performance improvements
|
|
214
224
|
- [ ] Check error handling
|
|
215
225
|
- [ ] Validate security enforcement
|
|
226
|
+
- [ ] Test security context features
|
|
227
|
+
- [ ] Verify input validation is working
|
|
228
|
+
- [ ] Check audit logging functionality
|
|
216
229
|
|
|
217
230
|
## Common Migration Patterns
|
|
218
231
|
|
|
@@ -501,6 +514,41 @@ If you encounter issues during migration:
|
|
|
501
514
|
- Performance validation
|
|
502
515
|
- Security verification
|
|
503
516
|
|
|
517
|
+
## Security Context Migration
|
|
518
|
+
|
|
519
|
+
### Using Security Context (Optional but Recommended)
|
|
520
|
+
|
|
521
|
+
The new RBAC system supports optional security context for enhanced security monitoring:
|
|
522
|
+
|
|
523
|
+
```typescript
|
|
524
|
+
// Basic usage (backward compatible)
|
|
525
|
+
const hasPermission = await isPermitted({
|
|
526
|
+
userId: 'user-123',
|
|
527
|
+
scope: { organisationId: 'org-456' },
|
|
528
|
+
permission: 'read:users'
|
|
529
|
+
});
|
|
530
|
+
|
|
531
|
+
// Enhanced usage with security context
|
|
532
|
+
const hasPermissionSecure = await isPermitted({
|
|
533
|
+
userId: 'user-123',
|
|
534
|
+
scope: { organisationId: 'org-456' },
|
|
535
|
+
permission: 'read:users'
|
|
536
|
+
}, {
|
|
537
|
+
userId: 'user-123',
|
|
538
|
+
organisationId: 'org-456',
|
|
539
|
+
ipAddress: '192.168.1.1',
|
|
540
|
+
userAgent: 'Mozilla/5.0...',
|
|
541
|
+
timestamp: new Date()
|
|
542
|
+
});
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
### Security Context Benefits
|
|
546
|
+
|
|
547
|
+
- **Enhanced Audit Logging**: More detailed security event logging
|
|
548
|
+
- **Rate Limiting**: Built-in protection against abuse
|
|
549
|
+
- **Input Validation**: Automatic validation of all inputs
|
|
550
|
+
- **Security Monitoring**: Comprehensive security event tracking
|
|
551
|
+
|
|
504
552
|
## Benefits of Migration
|
|
505
553
|
|
|
506
554
|
### Performance
|
|
@@ -517,5 +565,7 @@ If you encounter issues during migration:
|
|
|
517
565
|
- **Organisation context enforcement** prevents data leakage
|
|
518
566
|
- **Row Level Security** integration
|
|
519
567
|
- **Complete audit trail** for all permission checks
|
|
568
|
+
- **Enhanced security monitoring** with input validation and rate limiting
|
|
569
|
+
- **Automatic input sanitization** prevents injection attacks
|
|
520
570
|
|
|
521
571
|
The new RBAC system provides a more robust, performant, and secure foundation for your application's permission management.
|