@jmruthers/pace-core 0.6.5 → 0.6.7
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 +104 -0
- package/README.md +5 -403
- package/audit-tool/00-dependencies.cjs +394 -0
- package/audit-tool/audits/01-pace-core-compliance.cjs +556 -0
- package/audit-tool/audits/02-project-structure.cjs +255 -0
- package/audit-tool/audits/03-architecture.cjs +196 -0
- package/audit-tool/audits/04-code-quality.cjs +149 -0
- package/audit-tool/audits/05-styling.cjs +224 -0
- package/audit-tool/audits/06-security-rbac.cjs +544 -0
- package/audit-tool/audits/07-api-tech-stack.cjs +301 -0
- package/audit-tool/audits/08-testing-documentation.cjs +202 -0
- package/audit-tool/audits/09-operations.cjs +208 -0
- package/audit-tool/index.cjs +291 -0
- package/audit-tool/utils/code-utils.cjs +218 -0
- package/audit-tool/utils/file-utils.cjs +230 -0
- package/audit-tool/utils/report-utils.cjs +241 -0
- package/core-usage-manifest.json +93 -0
- package/cursor-rules/00-standards-overview.mdc +156 -0
- package/cursor-rules/01-pace-core-compliance.mdc +586 -0
- package/cursor-rules/02-project-structure.mdc +42 -4
- package/cursor-rules/{03-solid-principles.mdc → 03-architecture.mdc} +126 -10
- package/cursor-rules/04-code-quality.mdc +419 -0
- package/cursor-rules/{08-markup-quality.mdc → 05-styling.mdc} +104 -34
- package/cursor-rules/06-security-rbac.mdc +518 -0
- package/cursor-rules/07-api-tech-stack.mdc +377 -0
- package/cursor-rules/08-testing-documentation.mdc +324 -0
- package/cursor-rules/09-operations.mdc +365 -0
- package/dist/{AuthService-Cb34EQs3.d.ts → AuthService-DmfO5rGS.d.ts} +10 -0
- package/dist/DataTable-7PMH7XN7.js +15 -0
- package/dist/{DataTable-BMRU8a1j.d.ts → DataTable-DRUIgtUH.d.ts} +1 -1
- package/dist/{PublicPageProvider-QTFVrL-Z.d.ts → PublicPageProvider-DlsCaR5v.d.ts} +33 -72
- package/dist/UnifiedAuthProvider-ZT6TIGM7.js +7 -0
- package/dist/api-Y4MQWOFW.js +4 -0
- package/dist/audit-MYQXYZFU.js +3 -0
- package/dist/{chunk-DGUM43GV.js → chunk-3RG5ZIWI.js} +1 -4
- package/dist/{chunk-QXHPKYJV.js → chunk-4SXLQIZO.js} +1 -26
- package/dist/{chunk-UPPMRMYG.js → chunk-5X4QLXRG.js} +73 -151
- package/dist/chunk-6F3IILHI.js +62 -0
- package/dist/{chunk-E66EQZE6.js → chunk-6GLLNA6U.js} +3 -9
- package/dist/{chunk-ZSAAAMVR.js → chunk-6QYDGKQY.js} +1 -4
- package/dist/{chunk-FMUCXFII.js → chunk-7ILTDCL2.js} +9 -5
- package/dist/{chunk-M43Y4SSO.js → chunk-A3W6LW53.js} +15 -13
- package/dist/{chunk-63FOKYGO.js → chunk-AHU7G2R5.js} +2 -11
- package/dist/{chunk-HU2C6SSC.js → chunk-BM4CQ5P3.js} +606 -559
- package/dist/chunk-C7NSAPTL.js +1 -0
- package/dist/{chunk-J36DSWQK.js → chunk-FEJLJNWA.js} +7 -41
- package/dist/{chunk-IHB5DR3H.js → chunk-FTCRZOG2.js} +188 -387
- package/dist/{chunk-G37KK66H.js → chunk-FYHN4DD5.js} +60 -19
- package/dist/chunk-GHYHJTYV.js +994 -0
- package/dist/{chunk-VBXEHIUJ.js → chunk-HF6O3O37.js} +6 -88
- package/dist/{chunk-FFQEQTNW.js → chunk-IUBRCBSY.js} +134 -45
- package/dist/{chunk-6COVEUS7.js → chunk-JGWDVX64.js} +983 -1034
- package/dist/{chunk-RGAWHO7N.js → chunk-L4XMVJKY.js} +77 -222
- package/dist/chunk-MBADTM7L.js +64 -0
- package/dist/{chunk-M7MPQISP.js → chunk-OJ4SKRSV.js} +3 -16
- package/dist/{chunk-IVOFDYWT.js → chunk-Q7Q7V5NV.js} +2109 -1604
- package/dist/{chunk-JGRYX5UX.js → chunk-S7DKJPLT.js} +29 -58
- package/dist/{chunk-PWLANIRT.js → chunk-TTRFSOKR.js} +1 -7
- package/dist/{chunk-5DRSZLL2.js → chunk-UH3NTO3F.js} +1 -6
- package/dist/{chunk-NTM7ZSB6.js → chunk-VBCS3DUA.js} +261 -168
- package/dist/{chunk-EFN2EIMK.js → chunk-ZFYPMX46.js} +271 -87
- package/dist/{chunk-L4OXEN46.js → chunk-ZKAWKYT4.js} +10 -24
- package/dist/components.d.ts +7 -5
- package/dist/components.js +46 -257
- package/dist/{database.generated-CzIvgcPu.d.ts → database.generated-CcnC_DRc.d.ts} +4795 -3691
- package/dist/eslint-rules/index.cjs +35 -0
- package/{src/eslint-rules/pace-core-compliance.cjs → dist/eslint-rules/rules/01-pace-core-compliance.cjs} +234 -235
- package/dist/eslint-rules/rules/04-code-quality.cjs +290 -0
- package/dist/eslint-rules/rules/05-styling.cjs +61 -0
- package/dist/eslint-rules/rules/06-security-rbac.cjs +806 -0
- package/dist/eslint-rules/rules/07-api-tech-stack.cjs +263 -0
- package/dist/eslint-rules/rules/08-testing.cjs +94 -0
- package/dist/eslint-rules/utils/helpers.cjs +42 -0
- package/dist/eslint-rules/utils/manifest-loader.cjs +75 -0
- package/dist/hooks.d.ts +6 -6
- package/dist/hooks.js +62 -172
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.js +1 -0
- package/dist/index.d.ts +12 -11
- package/dist/index.js +67 -660
- package/dist/providers.d.ts +2 -2
- package/dist/providers.js +8 -35
- package/dist/rbac/eslint-rules.d.ts +46 -44
- package/dist/rbac/eslint-rules.js +7 -4
- package/dist/rbac/index.d.ts +109 -586
- package/dist/rbac/index.js +14 -207
- package/dist/styles/index.js +2 -12
- package/dist/theming/runtime.d.ts +14 -1
- package/dist/theming/runtime.js +3 -19
- package/dist/{timezone-CHhWg6b4.d.ts → timezone-BZe_eUxx.d.ts} +175 -1
- package/dist/{types-CkbwOr4Y.d.ts → types-DXstZpNI.d.ts} +4 -17
- package/dist/types-t9H8qKRw.d.ts +55 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +7 -94
- package/dist/{usePublicRouteParams-ClnV4tnv.d.ts → usePublicRouteParams-MamNgwqe.d.ts} +20 -20
- package/dist/utils.d.ts +24 -117
- package/dist/utils.js +54 -392
- package/docs/README.md +17 -7
- package/docs/api/README.md +4 -402
- package/docs/api/modules.md +301 -871
- package/docs/api-reference/components.md +21 -21
- package/docs/api-reference/deprecated.md +31 -6
- package/docs/api-reference/hooks.md +80 -80
- package/docs/api-reference/rpc-functions.md +78 -3
- package/docs/api-reference/types.md +1 -1
- package/docs/api-reference/utilities.md +1 -1
- package/docs/architecture/README.md +1 -1
- package/docs/core-concepts/events.md +3 -3
- package/docs/core-concepts/organisations.md +6 -6
- package/docs/core-concepts/permissions.md +6 -6
- package/docs/documentation-index.md +12 -18
- package/docs/getting-started/cursor-rules.md +3 -23
- package/docs/getting-started/dependencies.md +650 -0
- package/docs/getting-started/documentation-index.md +1 -1
- package/docs/getting-started/examples/README.md +4 -4
- package/docs/getting-started/examples/full-featured-app.md +1 -1
- package/docs/getting-started/faq.md +2 -2
- package/docs/getting-started/installation-guide.md +20 -7
- package/docs/getting-started/quick-reference.md +4 -4
- package/docs/getting-started/quick-start.md +23 -12
- package/docs/implementation-guides/authentication.md +15 -15
- package/docs/implementation-guides/component-styling.md +1 -1
- package/docs/implementation-guides/data-tables.md +126 -33
- package/docs/implementation-guides/datatable-rbac-usage.md +1 -1
- package/docs/implementation-guides/dynamic-colors.md +3 -3
- package/docs/implementation-guides/file-upload-storage.md +2 -2
- package/docs/implementation-guides/hierarchical-datatable.md +40 -60
- package/docs/implementation-guides/inactivity-tracking.md +3 -3
- package/docs/implementation-guides/large-datasets.md +3 -2
- package/docs/implementation-guides/organisation-security.md +2 -2
- package/docs/implementation-guides/performance.md +2 -2
- package/docs/implementation-guides/permission-enforcement.md +5 -1
- package/docs/migration/V0.3.44_organisation-context-timing-fix.md +1 -1
- package/docs/migration/V0.4.0_rbac-migration.md +6 -6
- package/docs/rbac/MIGRATION_GUIDE.md +819 -0
- package/docs/rbac/RBAC_CONTRACT.md +724 -0
- package/docs/rbac/README.md +17 -8
- package/docs/rbac/advanced-patterns.md +6 -6
- package/docs/rbac/api-reference.md +20 -20
- package/docs/rbac/edge-functions-guide.md +376 -0
- package/docs/rbac/event-based-apps.md +3 -3
- package/docs/rbac/examples.md +41 -41
- package/docs/rbac/getting-started.md +37 -37
- package/docs/rbac/performance.md +1 -1
- package/docs/rbac/quick-start.md +52 -52
- package/docs/rbac/secure-client-protection.md +1 -35
- package/docs/rbac/troubleshooting.md +1 -1
- package/docs/security/README.md +5 -5
- package/docs/standards/0-standards-overview.md +220 -0
- package/docs/standards/1-pace-core-compliance-standards.md +986 -0
- package/docs/standards/2-project-structure-standards.md +949 -0
- package/docs/standards/3-architecture-standards.md +606 -0
- package/docs/standards/4-code-quality-standards.md +728 -0
- package/docs/standards/5-styling-standards.md +348 -0
- package/docs/standards/{07-rbac-and-rls-standard.md → 6-security-rbac-standards.md} +269 -66
- package/docs/standards/7-api-tech-stack-standards.md +662 -0
- package/docs/standards/8-testing-documentation-standards.md +401 -0
- package/docs/standards/9-operations-standards.md +1102 -0
- package/docs/standards/README.md +185 -57
- package/docs/troubleshooting/README.md +4 -4
- package/docs/troubleshooting/common-issues.md +2 -2
- package/docs/troubleshooting/debugging.md +9 -9
- package/docs/troubleshooting/migration.md +4 -4
- package/docs/troubleshooting/organisation-context-setup.md +42 -19
- package/eslint-config-pace-core.cjs +33 -6
- package/package.json +35 -23
- package/scripts/install-cursor-rules.cjs +25 -6
- package/scripts/install-eslint-config.cjs +284 -0
- package/src/__tests__/fixtures/supabase.ts +1 -1
- package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +3 -3
- package/src/__tests__/helpers/__tests__/optimized-test-setup.test.ts +1 -1
- package/src/__tests__/helpers/__tests__/supabaseMock.test.ts +1 -1
- package/src/__tests__/helpers/__tests__/test-providers.test.tsx +2 -2
- package/src/__tests__/helpers/__tests__/test-utils.test.tsx +13 -13
- package/src/__tests__/helpers/component-test-utils.tsx +1 -1
- package/src/__tests__/helpers/supabaseMock.ts +2 -2
- package/src/__tests__/integration/UserProfile.test.tsx +14 -14
- package/src/__tests__/public-recipe-view.test.ts +38 -9
- package/src/__tests__/rbac/PagePermissionGuard.test.tsx +6 -6
- package/src/__tests__/templates/accessibility.test.template.tsx +9 -9
- package/src/__tests__/templates/component.test.template.tsx +18 -15
- package/src/components/Button/Button.tsx +5 -1
- package/src/components/Calendar/Calendar.tsx +201 -47
- package/src/components/ContextSelector/ContextSelector.tsx +106 -119
- package/src/components/DataTable/AUDIT_REPORT.md +293 -0
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +10 -2
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +10 -4
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +9 -9
- package/src/components/DataTable/components/ColumnFilter.tsx +63 -74
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +43 -41
- package/src/components/DataTable/components/DataTableCore.tsx +186 -13
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +9 -11
- package/src/components/DataTable/components/DataTableLayout.tsx +35 -21
- package/src/components/DataTable/components/EditFields.tsx +23 -3
- package/src/components/DataTable/components/EditableRow.tsx +12 -9
- package/src/components/DataTable/components/EmptyState.tsx +10 -9
- package/src/components/DataTable/components/FilterRow.tsx +2 -4
- package/src/components/DataTable/components/ImportModal.tsx +124 -126
- package/src/components/DataTable/components/LoadingState.tsx +5 -6
- package/src/components/DataTable/components/RowComponent.tsx +12 -0
- package/src/components/DataTable/components/SortIndicator.tsx +50 -0
- package/src/components/DataTable/components/__tests__/COVERAGE_NOTE.md +4 -4
- package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +23 -82
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +37 -9
- package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +7 -4
- package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +12 -4
- package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +41 -27
- package/src/components/DataTable/components/hooks/usePermissionTracking.ts +0 -4
- package/src/components/DataTable/components/index.ts +2 -1
- package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +51 -47
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +24 -21
- package/src/components/DataTable/hooks/useDataTableState.ts +125 -9
- package/src/components/DataTable/hooks/useTableColumns.ts +40 -2
- package/src/components/DataTable/hooks/useTableHandlers.ts +11 -0
- package/src/components/DataTable/types.ts +5 -18
- package/src/components/DataTable/utils/a11yUtils.ts +17 -0
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +2 -1
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +11 -15
- package/src/components/DateTimeField/DateTimeField.tsx +10 -9
- package/src/components/Dialog/Dialog.test.tsx +128 -104
- package/src/components/Dialog/Dialog.tsx +742 -24
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +77 -79
- package/src/components/FileDisplay/FileDisplay.test.tsx +4 -2
- package/src/components/FileDisplay/FileDisplay.tsx +23 -17
- package/src/components/FileUpload/FileUpload.test.tsx +52 -14
- package/src/components/FileUpload/FileUpload.tsx +112 -130
- package/src/components/Form/Form.test.tsx +6 -8
- package/src/components/Form/Form.tsx +365 -4
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +14 -13
- package/src/components/NavigationMenu/useNavigationFiltering.ts +11 -21
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +6 -4
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +11 -15
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +108 -61
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +27 -3
- package/src/components/Progress/Progress.tsx +2 -4
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +8 -8
- package/src/components/Select/Select.tsx +109 -98
- package/src/components/Select/types.ts +4 -1
- package/src/components/UserMenu/UserMenu.tsx +9 -6
- package/src/hooks/__tests__/ServiceHooks.test.tsx +16 -16
- package/src/hooks/__tests__/hooks.integration.test.tsx +55 -57
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +129 -67
- package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +97 -97
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +149 -67
- package/src/hooks/__tests__/usePublicEvent.test.ts +149 -79
- package/src/hooks/__tests__/usePublicEvent.unit.test.ts +158 -109
- package/src/hooks/__tests__/useSessionDraft.test.ts +163 -0
- package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +10 -5
- package/src/hooks/public/usePublicEvent.ts +67 -195
- package/src/hooks/public/usePublicEventLogo.test.ts +70 -17
- package/src/hooks/public/usePublicEventLogo.ts +24 -14
- package/src/hooks/public/usePublicFileDisplay.ts +2 -2
- package/src/hooks/public/usePublicRouteParams.ts +5 -5
- package/src/hooks/useAppConfig.ts +28 -26
- package/src/hooks/useEventTheme.test.ts +217 -239
- package/src/hooks/useEventTheme.ts +16 -28
- package/src/hooks/useFileDisplay.ts +2 -2
- package/src/hooks/useOrganisationPermissions.ts +5 -7
- package/src/hooks/useQueryCache.ts +0 -1
- package/src/hooks/useSessionDraft.ts +380 -0
- package/src/hooks/useSessionRestoration.ts +3 -1
- package/src/icons/index.ts +27 -0
- package/src/index.ts +5 -0
- package/src/providers/OrganisationProvider.tsx +23 -14
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +21 -21
- package/src/providers/__tests__/AuthProvider.test.tsx +21 -21
- package/src/providers/__tests__/EventProvider.test.tsx +61 -61
- package/src/providers/__tests__/InactivityProvider.test.tsx +56 -56
- package/src/providers/__tests__/OrganisationProvider.test.tsx +75 -75
- package/src/providers/__tests__/ProviderLifecycle.test.tsx +37 -37
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +103 -103
- package/src/providers/services/EventServiceProvider.tsx +1 -24
- package/src/providers/services/UnifiedAuthProvider.tsx +5 -48
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +7 -7
- package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +13 -10
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +7 -457
- package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +33 -7
- package/src/rbac/adapters.tsx +7 -295
- package/src/rbac/api.test.ts +44 -56
- package/src/rbac/api.ts +10 -17
- package/src/rbac/cache-invalidation.ts +0 -1
- package/src/rbac/compliance/index.ts +10 -0
- package/src/rbac/compliance/pattern-detector.ts +553 -0
- package/src/rbac/compliance/runtime-compliance.ts +22 -0
- package/src/rbac/components/AccessDenied.tsx +150 -0
- package/src/rbac/components/NavigationGuard.tsx +12 -20
- package/src/rbac/components/PagePermissionGuard.tsx +4 -24
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +21 -8
- package/src/rbac/components/index.ts +3 -41
- package/src/rbac/eslint-rules.js +1 -1
- package/src/rbac/hooks/index.ts +0 -3
- package/src/rbac/hooks/permissions/index.ts +0 -3
- package/src/rbac/hooks/permissions/useAccessLevel.ts +4 -8
- package/src/rbac/hooks/usePermissions.ts +0 -3
- package/src/rbac/hooks/useResolvedScope.test.ts +57 -47
- package/src/rbac/hooks/useResolvedScope.ts +58 -140
- package/src/rbac/hooks/useResourcePermissions.test.ts +124 -38
- package/src/rbac/hooks/useResourcePermissions.ts +139 -48
- package/src/rbac/hooks/useRoleManagement.test.ts +65 -22
- package/src/rbac/hooks/useRoleManagement.ts +147 -19
- package/src/rbac/hooks/useSecureSupabase.ts +4 -8
- package/src/rbac/index.ts +7 -9
- package/src/rbac/utils/contextValidator.ts +9 -7
- package/src/services/AuthService.ts +130 -18
- package/src/services/EventService.ts +4 -97
- package/src/services/InactivityService.ts +16 -0
- package/src/services/OrganisationService.ts +7 -44
- package/src/services/__tests__/OrganisationService.test.ts +26 -8
- package/src/services/base/BaseService.ts +0 -3
- package/src/styles/core.css +7 -0
- package/src/theming/__tests__/parseEventColours.test.ts +9 -3
- package/src/theming/parseEventColours.ts +22 -10
- package/src/types/database.generated.ts +4733 -3809
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +42 -39
- package/src/utils/__tests__/organisationContext.unit.test.ts +9 -10
- package/src/utils/context/organisationContext.test.ts +13 -28
- package/src/utils/context/organisationContext.ts +21 -52
- package/src/utils/dynamic/dynamicUtils.ts +1 -1
- package/src/utils/file-reference/index.ts +39 -15
- package/src/utils/formatting/formatDateTime.test.ts +3 -2
- package/src/utils/google-places/loadGoogleMapsScript.ts +29 -4
- package/src/utils/index.ts +4 -1
- package/src/utils/persistence/__tests__/keyDerivation.test.ts +135 -0
- package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +123 -0
- package/src/utils/persistence/keyDerivation.ts +304 -0
- package/src/utils/persistence/sensitiveFieldDetection.ts +212 -0
- package/src/utils/security/secureStorage.ts +5 -5
- package/src/utils/storage/README.md +1 -1
- package/src/utils/storage/helpers.ts +3 -3
- package/src/utils/supabase/createBaseClient.ts +147 -0
- package/src/utils/timezone/timezone.test.ts +1 -2
- package/src/utils/timezone/timezone.ts +1 -1
- package/src/utils/validation/csrf.ts +4 -4
- package/cursor-rules/00-pace-core-compliance.mdc +0 -331
- package/cursor-rules/01-standards-compliance.mdc +0 -244
- package/cursor-rules/04-testing-standards.mdc +0 -268
- package/cursor-rules/05-bug-reports-and-features.mdc +0 -246
- package/cursor-rules/06-code-quality.mdc +0 -309
- package/cursor-rules/07-tech-stack-compliance.mdc +0 -214
- package/cursor-rules/CHANGELOG.md +0 -119
- package/cursor-rules/README.md +0 -192
- package/dist/DataTable-AOVNCPTX.js +0 -175
- package/dist/DataTable-AOVNCPTX.js.map +0 -1
- package/dist/UnifiedAuthProvider-4SBX4LU5.js +0 -18
- package/dist/UnifiedAuthProvider-4SBX4LU5.js.map +0 -1
- package/dist/api-O6HTBX5Y.js +0 -52
- package/dist/api-O6HTBX5Y.js.map +0 -1
- package/dist/audit-V53FV5AG.js +0 -17
- package/dist/audit-V53FV5AG.js.map +0 -1
- package/dist/chunk-5DRSZLL2.js.map +0 -1
- package/dist/chunk-63FOKYGO.js.map +0 -1
- package/dist/chunk-6COVEUS7.js.map +0 -1
- package/dist/chunk-AFVQODI2.js +0 -263
- package/dist/chunk-AFVQODI2.js.map +0 -1
- package/dist/chunk-DGUM43GV.js.map +0 -1
- package/dist/chunk-E66EQZE6.js.map +0 -1
- package/dist/chunk-EFN2EIMK.js.map +0 -1
- package/dist/chunk-FFQEQTNW.js.map +0 -1
- package/dist/chunk-FMUCXFII.js.map +0 -1
- package/dist/chunk-G37KK66H.js.map +0 -1
- package/dist/chunk-G7QEZTYQ.js +0 -2053
- package/dist/chunk-G7QEZTYQ.js.map +0 -1
- package/dist/chunk-HU2C6SSC.js.map +0 -1
- package/dist/chunk-IHB5DR3H.js.map +0 -1
- package/dist/chunk-IVOFDYWT.js.map +0 -1
- package/dist/chunk-J36DSWQK.js.map +0 -1
- package/dist/chunk-JGRYX5UX.js.map +0 -1
- package/dist/chunk-KQCRWDSA.js +0 -1
- package/dist/chunk-KQCRWDSA.js.map +0 -1
- package/dist/chunk-L4OXEN46.js.map +0 -1
- package/dist/chunk-LMC26NLJ.js +0 -84
- package/dist/chunk-LMC26NLJ.js.map +0 -1
- package/dist/chunk-M43Y4SSO.js.map +0 -1
- package/dist/chunk-M7MPQISP.js.map +0 -1
- package/dist/chunk-NTM7ZSB6.js.map +0 -1
- package/dist/chunk-PWLANIRT.js.map +0 -1
- package/dist/chunk-QXHPKYJV.js.map +0 -1
- package/dist/chunk-RGAWHO7N.js.map +0 -1
- package/dist/chunk-UPPMRMYG.js.map +0 -1
- package/dist/chunk-VBXEHIUJ.js.map +0 -1
- package/dist/chunk-ZSAAAMVR.js.map +0 -1
- package/dist/components.js.map +0 -1
- package/dist/contextValidator-5OGXSPKS.js +0 -9
- package/dist/contextValidator-5OGXSPKS.js.map +0 -1
- package/dist/eslint-rules/pace-core-compliance.cjs +0 -510
- package/dist/hooks.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers.js.map +0 -1
- package/dist/rbac/eslint-rules.js.map +0 -1
- package/dist/rbac/index.js.map +0 -1
- package/dist/styles/index.js.map +0 -1
- package/dist/theming/runtime.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/docs/best-practices/README.md +0 -472
- package/docs/best-practices/accessibility.md +0 -601
- package/docs/best-practices/common-patterns.md +0 -516
- package/docs/best-practices/deployment.md +0 -1103
- package/docs/best-practices/performance.md +0 -1328
- package/docs/best-practices/security.md +0 -940
- package/docs/best-practices/testing.md +0 -1034
- package/docs/rbac/compliance/compliance-guide.md +0 -544
- package/docs/standards/01-architecture-standard.md +0 -44
- package/docs/standards/02-api-and-rpc-standard.md +0 -39
- package/docs/standards/03-component-standard.md +0 -32
- package/docs/standards/04-code-style-standard.md +0 -32
- package/docs/standards/05-security-standard.md +0 -44
- package/docs/standards/06-testing-and-docs-standard.md +0 -29
- package/docs/standards/pace-core-compliance.md +0 -432
- package/scripts/audit/core/checks/accessibility.cjs +0 -197
- package/scripts/audit/core/checks/api-usage.cjs +0 -191
- package/scripts/audit/core/checks/bundle.cjs +0 -142
- package/scripts/audit/core/checks/compliance.cjs +0 -2706
- package/scripts/audit/core/checks/config.cjs +0 -54
- package/scripts/audit/core/checks/coverage.cjs +0 -84
- package/scripts/audit/core/checks/dependencies.cjs +0 -994
- package/scripts/audit/core/checks/documentation.cjs +0 -268
- package/scripts/audit/core/checks/environment.cjs +0 -116
- package/scripts/audit/core/checks/error-handling.cjs +0 -340
- package/scripts/audit/core/checks/forms.cjs +0 -172
- package/scripts/audit/core/checks/heuristics.cjs +0 -68
- package/scripts/audit/core/checks/hooks.cjs +0 -334
- package/scripts/audit/core/checks/imports.cjs +0 -244
- package/scripts/audit/core/checks/performance.cjs +0 -325
- package/scripts/audit/core/checks/routes.cjs +0 -117
- package/scripts/audit/core/checks/state.cjs +0 -130
- package/scripts/audit/core/checks/structure.cjs +0 -65
- package/scripts/audit/core/checks/style.cjs +0 -584
- package/scripts/audit/core/checks/testing.cjs +0 -122
- package/scripts/audit/core/checks/typescript.cjs +0 -61
- package/scripts/audit/core/scanner.cjs +0 -199
- package/scripts/audit/core/utils.cjs +0 -137
- package/scripts/audit/index.cjs +0 -223
- package/scripts/audit/reporters/console.cjs +0 -151
- package/scripts/audit/reporters/json.cjs +0 -54
- package/scripts/audit/reporters/markdown.cjs +0 -124
- package/scripts/audit-consuming-app.cjs +0 -86
- package/src/components/DataTable/components/DataTableBody.tsx +0 -454
- package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -156
- package/src/components/DataTable/components/ExpandButton.tsx +0 -113
- package/src/components/DataTable/components/GroupHeader.tsx +0 -54
- package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -525
- package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -462
- package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +0 -393
- package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +0 -476
- package/src/components/DataTable/components/__tests__/VirtualizedDataTable.test.tsx +0 -128
- package/src/components/DataTable/core/DataTableContext.tsx +0 -216
- package/src/components/DataTable/core/__tests__/DataTableContext.test.tsx +0 -136
- package/src/components/DataTable/hooks/__tests__/useColumnReordering.test.ts +0 -570
- package/src/components/DataTable/hooks/useColumnReordering.ts +0 -123
- package/src/components/DataTable/utils/debugTools.ts +0 -514
- package/src/eslint-rules/pace-core-compliance.js +0 -638
- package/src/rbac/components/EnhancedNavigationMenu.test.tsx +0 -555
- package/src/rbac/components/EnhancedNavigationMenu.tsx +0 -293
- package/src/rbac/components/NavigationProvider.test.tsx +0 -481
- package/src/rbac/components/NavigationProvider.tsx +0 -345
- package/src/rbac/components/PagePermissionProvider.test.tsx +0 -476
- package/src/rbac/components/PagePermissionProvider.tsx +0 -279
- package/src/rbac/components/PermissionEnforcer.tsx +0 -312
- package/src/rbac/components/RoleBasedRouter.tsx +0 -440
- package/src/rbac/components/SecureDataProvider.test.tsx +0 -543
- package/src/rbac/components/SecureDataProvider.tsx +0 -339
- package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -620
- package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -726
- package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -661
- package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +0 -881
- package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +0 -783
- package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +0 -645
- package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -659
- package/src/rbac/hooks/permissions/useCachedPermissions.ts +0 -79
- package/src/rbac/hooks/permissions/useHasAllPermissions.ts +0 -90
- package/src/rbac/hooks/permissions/useHasAnyPermission.ts +0 -90
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
---
|
|
2
|
+
lastUpdated: 2025-01-28T00:00:00+00:00
|
|
3
|
+
version: 0.6.5
|
|
4
|
+
reviewedBy: dependency-clarity-audit
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# PACE Core Dependencies Guide
|
|
8
|
+
|
|
9
|
+
> **📚 Complete Dependency Reference** | [← Back to Documentation](../README.md) | [Installation Guide](./installation-guide.md) | [🔍 Dependency Audit Guide](./dependency-audit-guide.md)
|
|
10
|
+
|
|
11
|
+
**This guide clearly explains which dependencies you need to install and which are already included in pace-core.**
|
|
12
|
+
|
|
13
|
+
> **🎯 New to auditing?** Start with the [Dependency Audit Guide](./dependency-audit-guide.md) for a quick overview and step-by-step instructions.
|
|
14
|
+
|
|
15
|
+
## 🎯 Quick Start: Audit Your Dependencies
|
|
16
|
+
|
|
17
|
+
**This document is the single source of truth for pace-core dependencies.** Use it to audit your consuming app's dependencies.
|
|
18
|
+
|
|
19
|
+
> **🎯 New to auditing?** Start with the [Dependency Audit Guide](./dependency-audit-guide.md) for a quick overview and step-by-step instructions.
|
|
20
|
+
|
|
21
|
+
**Quick Audit Checklist:**
|
|
22
|
+
1. ✅ Verify pace-core version (`^0.6.5` or later)
|
|
23
|
+
2. ❌ Remove included dependencies (see [Included Dependencies](#-already-included-do-not-install) below)
|
|
24
|
+
3. ✅ Install required core dependencies (see [Required Peer Dependencies](#-required-peer-dependencies-must-install) below)
|
|
25
|
+
4. ⚠️ Install optional dependencies only if you use those features
|
|
26
|
+
5. 🔄 Update code to use pace-core exports instead of direct imports
|
|
27
|
+
|
|
28
|
+
**For detailed guidance:**
|
|
29
|
+
- [Dependency Audit Guide](./dependency-audit-guide.md) - Quick overview and 5-step process
|
|
30
|
+
- [Consuming Apps Audit Checklist](../../audit/consuming-apps-audit-checklist.md) - Step-by-step checklist with commands
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## ⚠️ CRITICAL: pace-core Version Requirement
|
|
35
|
+
|
|
36
|
+
**You MUST use `@jmruthers/pace-core@^0.6.5` or later.** Older versions may have incompatible dependencies or missing features.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# ✅ Ensure you're using the latest version
|
|
40
|
+
npm install @jmruthers/pace-core@latest
|
|
41
|
+
|
|
42
|
+
# Verify your installed version
|
|
43
|
+
npm ls @jmruthers/pace-core
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Why this matters:**
|
|
47
|
+
- Dependency structure may change between versions
|
|
48
|
+
- Security patches and bug fixes are included in newer versions
|
|
49
|
+
- New features require specific dependency versions
|
|
50
|
+
- This guide is accurate for pace-core v0.6.5+
|
|
51
|
+
|
|
52
|
+
## Quick Reference
|
|
53
|
+
|
|
54
|
+
### ✅ Already Included (DO NOT Install)
|
|
55
|
+
|
|
56
|
+
These packages are included as dependencies in `@jmruthers/pace-core` and **should NOT** be installed in your consuming app:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# ❌ DO NOT install these - they're already included
|
|
60
|
+
# @supabase/supabase-js (use createBaseClient from pace-core instead)
|
|
61
|
+
# @radix-ui/react-checkbox (use pace-core components instead)
|
|
62
|
+
# @radix-ui/react-label (use pace-core components instead)
|
|
63
|
+
# @radix-ui/react-slot (use pace-core components instead)
|
|
64
|
+
# @radix-ui/react-switch (use pace-core components instead)
|
|
65
|
+
# @radix-ui/react-tabs (use pace-core components instead)
|
|
66
|
+
# @radix-ui/react-toast (use pace-core components instead)
|
|
67
|
+
# @radix-ui/react-tooltip (use pace-core components instead)
|
|
68
|
+
# lucide-react (use @jmruthers/pace-core/icons instead)
|
|
69
|
+
# @tanstack/react-virtual
|
|
70
|
+
# @hookform/resolvers
|
|
71
|
+
# lodash.debounce
|
|
72
|
+
# lodash.throttle
|
|
73
|
+
# papaparse
|
|
74
|
+
# react-is
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
> **Note**:
|
|
78
|
+
> - `@supabase/supabase-js` is **included** - Use `createBaseClient()` from `@jmruthers/pace-core` instead of importing `createClient` directly (security enforcement).
|
|
79
|
+
> - `@radix-ui/*` packages are **included** - Use pace-core components instead of importing Radix UI primitives directly (consistency enforcement).
|
|
80
|
+
> - `lucide-react` is **included** - Use `@jmruthers/pace-core/icons` instead of importing icons directly (consistency enforcement).
|
|
81
|
+
> - `@tanstack/react-query` is a **peer dependency** (see below) because consuming apps need direct access to `QueryClient`, `QueryClientProvider`, and React Query hooks.
|
|
82
|
+
> - `date-fns` and `date-fns-tz` are **peer dependencies** (see below) because consuming apps may need direct access to date-fns functions that pace-core doesn't export.
|
|
83
|
+
|
|
84
|
+
### ⚠️ Required Peer Dependencies (MUST Install)
|
|
85
|
+
|
|
86
|
+
These packages are **required** for pace-core to function. You **MUST** install them in your consuming app:
|
|
87
|
+
|
|
88
|
+
**Minimum Versions (Required):**
|
|
89
|
+
```bash
|
|
90
|
+
# ✅ REQUIRED - Minimum versions (^ allows compatible updates)
|
|
91
|
+
npm install react@^19.0.0 react-dom@^19.0.0
|
|
92
|
+
npm install @tanstack/react-query@^5.90.0
|
|
93
|
+
npm install @tanstack/react-table@^8.0.0
|
|
94
|
+
npm install date-fns@^3.0.0 date-fns-tz@^3.0.0
|
|
95
|
+
npm install @radix-ui/react-checkbox@^1.0.0
|
|
96
|
+
npm install @radix-ui/react-label@^2.0.0
|
|
97
|
+
npm install @radix-ui/react-slot@^1.0.0
|
|
98
|
+
npm install @radix-ui/react-switch@^1.1.0
|
|
99
|
+
npm install @radix-ui/react-tabs@^1.0.0
|
|
100
|
+
npm install @radix-ui/react-toast@^1.0.0
|
|
101
|
+
npm install @radix-ui/react-tooltip@^1.0.0
|
|
102
|
+
npm install clsx@^2.0.0
|
|
103
|
+
npm install lucide-react@^0.400.0
|
|
104
|
+
npm install react-day-picker@^9.0.0
|
|
105
|
+
npm install react-hook-form@^7.0.0
|
|
106
|
+
npm install react-router-dom@^6.0.0
|
|
107
|
+
npm install tailwind-merge@^2.0.0
|
|
108
|
+
npm install tailwindcss@^4.0.0
|
|
109
|
+
npm install zod@^3.20.0
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Recommended Specific Versions (For Maximum Compatibility):**
|
|
113
|
+
```bash
|
|
114
|
+
# ✅ RECOMMENDED - Specific tested versions
|
|
115
|
+
npm install react@19.2.3 react-dom@19.2.3
|
|
116
|
+
npm install @tanstack/react-query@^5.90.16
|
|
117
|
+
npm install @tanstack/react-table@^8.20.0
|
|
118
|
+
npm install date-fns@^3.0.0 date-fns-tz@^3.0.0
|
|
119
|
+
npm install @radix-ui/react-checkbox@^1.1.2
|
|
120
|
+
npm install @radix-ui/react-label@^2.1.1
|
|
121
|
+
npm install @radix-ui/react-slot@^1.1.0
|
|
122
|
+
npm install @radix-ui/react-switch@^1.1.1
|
|
123
|
+
npm install @radix-ui/react-tabs@^1.1.1
|
|
124
|
+
npm install @radix-ui/react-toast@^1.2.2
|
|
125
|
+
npm install @radix-ui/react-tooltip@^1.1.3
|
|
126
|
+
npm install clsx@^2.1.1
|
|
127
|
+
npm install lucide-react@^0.468.0
|
|
128
|
+
npm install react-day-picker@^9.4.3
|
|
129
|
+
npm install react-hook-form@^7.54.2
|
|
130
|
+
npm install react-router-dom@^6.28.0
|
|
131
|
+
npm install tailwind-merge@^2.5.5
|
|
132
|
+
npm install tailwindcss@^4.0.0
|
|
133
|
+
npm install zod@^3.24.1
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
> **💡 Version Strategy**: Use `^` (caret) ranges for flexibility, or pin specific versions for maximum stability. React 19.2.3+ is recommended to avoid security vulnerabilities in earlier 19.x versions.
|
|
137
|
+
|
|
138
|
+
### 📦 One-Line Install (All Required Peers)
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npm install react react-dom @tanstack/react-query @tanstack/react-table clsx date-fns date-fns-tz react-day-picker react-hook-form react-router-dom tailwind-merge tailwindcss zod
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
> **Note**: Only install peer dependencies that your app actually uses. For example:
|
|
145
|
+
> - If you don't use DataTable, you may not need `@tanstack/react-table`
|
|
146
|
+
> - If you don't use forms, you may not need `react-hook-form`
|
|
147
|
+
> - If you don't use date pickers, you may not need `react-day-picker`
|
|
148
|
+
> - If you don't use date formatting, you may not need `date-fns`/`date-fns-tz`
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Detailed Breakdown
|
|
153
|
+
|
|
154
|
+
### Included Dependencies
|
|
155
|
+
|
|
156
|
+
These are bundled with pace-core. Installing them separately will create duplicate dependencies and potential version conflicts.
|
|
157
|
+
|
|
158
|
+
| Package | Version | Used For |
|
|
159
|
+
|---------|---------|----------|
|
|
160
|
+
| `@supabase/supabase-js` | ^2.89.0 | Supabase client (use `createBaseClient()` from pace-core) |
|
|
161
|
+
| `@radix-ui/react-checkbox` | ^1.0.0 | Checkbox primitive (use pace-core `Checkbox` component) |
|
|
162
|
+
| `@radix-ui/react-label` | ^2.0.0 | Label primitive (use pace-core `Label` component) |
|
|
163
|
+
| `@radix-ui/react-slot` | ^1.0.0 | Slot primitive (used by pace-core components) |
|
|
164
|
+
| `@radix-ui/react-switch` | ^1.1.0 | Switch primitive (use pace-core `Switch` component) |
|
|
165
|
+
| `@radix-ui/react-tabs` | ^1.0.0 | Tabs primitive (use pace-core `Tabs` component) |
|
|
166
|
+
| `@radix-ui/react-toast` | ^1.0.0 | Toast primitive (use pace-core `Toast` component) |
|
|
167
|
+
| `@radix-ui/react-tooltip` | ^1.0.0 | Tooltip primitive (use pace-core `Tooltip` component) |
|
|
168
|
+
| `lucide-react` | ^0.400.0 | Icon library (use `@jmruthers/pace-core/icons`) |
|
|
169
|
+
| `@tanstack/react-virtual` | ^3.13.16 | Virtual scrolling for DataTable performance |
|
|
170
|
+
| `@hookform/resolvers` | ^3.9.0 | Form validation with Zod |
|
|
171
|
+
| `lodash.debounce` | ^4.0.8 | Input debouncing |
|
|
172
|
+
| `lodash.throttle` | ^4.1.1 | Event throttling |
|
|
173
|
+
| `papaparse` | ^5.5.3 | CSV parsing (DataTable export) |
|
|
174
|
+
| `react-is` | ^19.2.3 | React element type checking |
|
|
175
|
+
|
|
176
|
+
**Why these are included:**
|
|
177
|
+
- They're core to pace-core's functionality
|
|
178
|
+
- Ensures version compatibility
|
|
179
|
+
- Prevents duplicate installations
|
|
180
|
+
- Simplifies consuming app setup
|
|
181
|
+
|
|
182
|
+
### Required Peer Dependencies
|
|
183
|
+
|
|
184
|
+
These must be installed by consuming apps because:
|
|
185
|
+
|
|
186
|
+
1. **React & React DOM** - Core framework (peer dependency to allow React 19+)
|
|
187
|
+
2. **@tanstack/react-query** - Data fetching, caching, state management (peer to allow app-level QueryClient configuration)
|
|
188
|
+
3. **date-fns & date-fns-tz** - Date formatting and timezone utilities (peer to allow apps to use date-fns functions directly)
|
|
189
|
+
4. **@tanstack/react-table** - DataTable component functionality
|
|
190
|
+
5. **react-router-dom** - Navigation and routing (peer to allow app-level routing)
|
|
191
|
+
6. **tailwindcss** - Styling system (peer to allow app-level Tailwind config)
|
|
192
|
+
7. **Other utilities** - Used throughout pace-core components
|
|
193
|
+
|
|
194
|
+
**Note**: `@supabase/supabase-js`, `@radix-ui/*` packages, and `lucide-react` are now **included dependencies** to enforce security and consistency. Use pace-core's exports instead:
|
|
195
|
+
- `createBaseClient()` from `@jmruthers/pace-core` (instead of `createClient` from `@supabase/supabase-js`)
|
|
196
|
+
- pace-core components (instead of `@radix-ui/*` primitives)
|
|
197
|
+
- `@jmruthers/pace-core/icons` (instead of `lucide-react`)
|
|
198
|
+
|
|
199
|
+
| Package | Minimum Version | Recommended Version | Used For | Required? |
|
|
200
|
+
|---------|-----------------|---------------------|----------|----------|
|
|
201
|
+
| `react` | ^19.0.0 | **19.2.3+** (security fixes) | React framework | ✅ Always |
|
|
202
|
+
| `react-dom` | ^19.0.0 | **19.2.3+** (security fixes) | React DOM rendering | ✅ Always |
|
|
203
|
+
| `react-router-dom` | ^6.0.0 | ^6.28.0 | Routing and navigation | ✅ Always |
|
|
204
|
+
| `tailwindcss` | ^4.0.0 | ^4.0.0 | CSS framework | ✅ Always |
|
|
205
|
+
| `@tanstack/react-query` | ^5.90.0 | ^5.90.16 | Data fetching, caching, QueryClient configuration | ⚠️ If using data fetching |
|
|
206
|
+
| `@tanstack/react-table` | ^8.0.0 | ^8.20.0 | DataTable component | ⚠️ If using DataTable |
|
|
207
|
+
| `date-fns` | ^3.0.0 | ^3.0.0 | Date formatting and manipulation | ⚠️ If using date formatting |
|
|
208
|
+
| `date-fns-tz` | ^3.0.0 | ^3.0.0 | Timezone-aware date operations | ⚠️ If using timezone features |
|
|
209
|
+
| `react-hook-form` | ^7.0.0 | ^7.54.2 | Form handling | ⚠️ If using forms |
|
|
210
|
+
| `react-day-picker` | ^9.0.0 | ^9.4.3 | Calendar/date picker | ⚠️ If using date pickers |
|
|
211
|
+
| `zod` | ^3.20.0 | ^3.24.1 | Schema validation | ⚠️ If using validation |
|
|
212
|
+
| `clsx` | ^2.0.0 | ^2.1.1 | Conditional className utility | ⚠️ If using className utilities |
|
|
213
|
+
| `tailwind-merge` | ^2.0.0 | ^2.5.5 | Tailwind class merging utility | ⚠️ If using class merging |
|
|
214
|
+
|
|
215
|
+
> **⚠️ React Version Security**: React 19.0.0 through 19.2.0 had security vulnerabilities (CVE-2025-55182). **You MUST use React 19.2.3 or later** to avoid these issues.
|
|
216
|
+
|
|
217
|
+
**Why these are peer dependencies:**
|
|
218
|
+
- Allows consuming apps to control versions
|
|
219
|
+
- Prevents duplicate installations
|
|
220
|
+
- Enables app-level configuration (e.g., Tailwind config)
|
|
221
|
+
- Ensures single instance of React/React Router
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Installation Checklist
|
|
226
|
+
|
|
227
|
+
Use this checklist to verify your installation:
|
|
228
|
+
|
|
229
|
+
### ✅ Step 1: Install pace-core (Latest Version)
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# Install latest version
|
|
233
|
+
npm install @jmruthers/pace-core@latest
|
|
234
|
+
|
|
235
|
+
# Or install specific minimum version
|
|
236
|
+
npm install @jmruthers/pace-core@^0.6.5
|
|
237
|
+
|
|
238
|
+
# Verify installed version
|
|
239
|
+
npm ls @jmruthers/pace-core
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**Expected output:** Should show `@jmruthers/pace-core@0.6.5` or higher.
|
|
243
|
+
|
|
244
|
+
### ✅ Step 2: Install Required Peer Dependencies
|
|
245
|
+
|
|
246
|
+
**Install core dependencies (always required):**
|
|
247
|
+
```bash
|
|
248
|
+
npm install react react-dom react-router-dom tailwindcss
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Install optional dependencies (only if you use these features):**
|
|
252
|
+
```bash
|
|
253
|
+
# If using data fetching
|
|
254
|
+
npm install @tanstack/react-query
|
|
255
|
+
|
|
256
|
+
# If using DataTable
|
|
257
|
+
npm install @tanstack/react-table
|
|
258
|
+
|
|
259
|
+
# If using date formatting
|
|
260
|
+
npm install date-fns date-fns-tz
|
|
261
|
+
|
|
262
|
+
# If using forms
|
|
263
|
+
npm install react-hook-form
|
|
264
|
+
|
|
265
|
+
# If using date pickers
|
|
266
|
+
npm install react-day-picker
|
|
267
|
+
|
|
268
|
+
# If using validation
|
|
269
|
+
npm install zod
|
|
270
|
+
|
|
271
|
+
# If using className utilities
|
|
272
|
+
npm install clsx tailwind-merge
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### ✅ Step 3: Install Tailwind v4 (Dev Dependency)
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
npm install -D @tailwindcss/vite tailwindcss@^4.0.0
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### ❌ Step 4: Verify You Did NOT Install Included Dependencies
|
|
282
|
+
|
|
283
|
+
Check your `package.json` - you should **NOT** have these as dependencies:
|
|
284
|
+
|
|
285
|
+
- ❌ `@supabase/supabase-js` (already in pace-core - use `createBaseClient()` from pace-core)
|
|
286
|
+
- ❌ `@radix-ui/react-checkbox` (already in pace-core - use pace-core `Checkbox` component)
|
|
287
|
+
- ❌ `@radix-ui/react-label` (already in pace-core - use pace-core `Label` component)
|
|
288
|
+
- ❌ `@radix-ui/react-slot` (already in pace-core - used by pace-core components)
|
|
289
|
+
- ❌ `@radix-ui/react-switch` (already in pace-core - use pace-core `Switch` component)
|
|
290
|
+
- ❌ `@radix-ui/react-tabs` (already in pace-core - use pace-core `Tabs` component)
|
|
291
|
+
- ❌ `@radix-ui/react-toast` (already in pace-core - use pace-core `Toast` component)
|
|
292
|
+
- ❌ `@radix-ui/react-tooltip` (already in pace-core - use pace-core `Tooltip` component)
|
|
293
|
+
- ❌ `lucide-react` (already in pace-core - use `@jmruthers/pace-core/icons`)
|
|
294
|
+
- ❌ `@tanstack/react-virtual` (already in pace-core)
|
|
295
|
+
- ❌ `@hookform/resolvers` (already in pace-core)
|
|
296
|
+
- ❌ `lodash.debounce` (already in pace-core)
|
|
297
|
+
- ❌ `lodash.throttle` (already in pace-core)
|
|
298
|
+
- ❌ `papaparse` (already in pace-core)
|
|
299
|
+
- ❌ `react-is` (already in pace-core)
|
|
300
|
+
- ❌ `@hookform/resolvers` (already in pace-core)
|
|
301
|
+
- ❌ `date-fns` (already in pace-core)
|
|
302
|
+
- ❌ `date-fns-tz` (already in pace-core)
|
|
303
|
+
- ❌ `lodash.debounce` (already in pace-core)
|
|
304
|
+
- ❌ `lodash.throttle` (already in pace-core)
|
|
305
|
+
- ❌ `papaparse` (already in pace-core)
|
|
306
|
+
- ❌ `react-is` (already in pace-core)
|
|
307
|
+
|
|
308
|
+
If you find any of these in your `package.json`, remove them:
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
npm uninstall @supabase/supabase-js @radix-ui/react-checkbox @radix-ui/react-label @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-tooltip lucide-react @tanstack/react-virtual @hookform/resolvers lodash.debounce lodash.throttle papaparse react-is
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
> **Note**:
|
|
315
|
+
> - `@supabase/supabase-js` is **included** - Use `createBaseClient()` from `@jmruthers/pace-core` instead.
|
|
316
|
+
> - `@radix-ui/*` packages are **included** - Use pace-core components instead.
|
|
317
|
+
> - `lucide-react` is **included** - Use `@jmruthers/pace-core/icons` instead.
|
|
318
|
+
> - `@tanstack/react-query` is a **peer dependency** and should be installed (see [Required Peer Dependencies](#-required-peer-dependencies-must-install) above).
|
|
319
|
+
> - `date-fns` and `date-fns-tz` are **peer dependencies** and should be installed (see [Required Peer Dependencies](#-required-peer-dependencies-must-install) above).
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## Common Mistakes
|
|
324
|
+
|
|
325
|
+
### ❌ Mistake 1: Installing Included Dependencies
|
|
326
|
+
|
|
327
|
+
**Problem:** Installing packages that are already included in pace-core
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
# ❌ WRONG - Don't do this
|
|
331
|
+
npm install @supabase/supabase-js @radix-ui/react-checkbox lucide-react @tanstack/react-virtual
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Why it's wrong:**
|
|
335
|
+
- Creates duplicate dependencies
|
|
336
|
+
- Can cause version conflicts
|
|
337
|
+
- Increases bundle size unnecessarily
|
|
338
|
+
- May cause runtime errors
|
|
339
|
+
- **Security risk**: Allows bypassing pace-core security rules
|
|
340
|
+
- **Consistency risk**: Allows bypassing pace-core components/icons
|
|
341
|
+
|
|
342
|
+
**Solution:** Remove them from your `package.json` and use pace-core exports instead:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
npm uninstall @supabase/supabase-js @radix-ui/react-checkbox @radix-ui/react-label @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-tooltip lucide-react @tanstack/react-virtual @hookform/resolvers lodash.debounce lodash.throttle papaparse react-is
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**Use pace-core exports instead:**
|
|
349
|
+
```tsx
|
|
350
|
+
// ✅ CORRECT: Use pace-core exports
|
|
351
|
+
import { createBaseClient } from '@jmruthers/pace-core';
|
|
352
|
+
import { Button, Checkbox, Label } from '@jmruthers/pace-core';
|
|
353
|
+
import { ChevronDown, Edit } from '@jmruthers/pace-core/icons';
|
|
354
|
+
|
|
355
|
+
// ❌ WRONG: Direct imports (will fail - packages are included, not peer)
|
|
356
|
+
import { createClient } from '@supabase/supabase-js';
|
|
357
|
+
import { Checkbox } from '@radix-ui/react-checkbox';
|
|
358
|
+
import { ChevronDown } from 'lucide-react';
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
> **Note**:
|
|
362
|
+
> - `@tanstack/react-query` is a **peer dependency** and should be installed. See [Required Peer Dependencies](#-required-peer-dependencies-must-install) above.
|
|
363
|
+
> - `date-fns` and `date-fns-tz` are **peer dependencies** and should be installed. See [Required Peer Dependencies](#-required-peer-dependencies-must-install) above.
|
|
364
|
+
|
|
365
|
+
### ❌ Mistake 2: Missing Required Peer Dependencies
|
|
366
|
+
|
|
367
|
+
**Problem:** Not installing required peer dependencies
|
|
368
|
+
|
|
369
|
+
**Symptoms:**
|
|
370
|
+
- Runtime errors: "Cannot find module '@radix-ui/react-checkbox'"
|
|
371
|
+
- TypeScript errors: "Module not found"
|
|
372
|
+
- Components don't render correctly
|
|
373
|
+
|
|
374
|
+
**Solution:** Install all required peer dependencies (see [Required Peer Dependencies](#-required-peer-dependencies-must-install) above)
|
|
375
|
+
|
|
376
|
+
### ❌ Mistake 3: Wrong Versions
|
|
377
|
+
|
|
378
|
+
**Problem:** Installing incompatible versions of peer dependencies
|
|
379
|
+
|
|
380
|
+
**Example:**
|
|
381
|
+
```bash
|
|
382
|
+
# ❌ WRONG - React 18 when pace-core requires React 19
|
|
383
|
+
npm install react@^18.0.0
|
|
384
|
+
|
|
385
|
+
# ❌ WRONG - React 19.0.0-19.2.0 have security vulnerabilities
|
|
386
|
+
npm install react@19.0.0
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
**Solution:** Use compatible versions specified in peer dependencies:
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
# ✅ CORRECT - Minimum version
|
|
393
|
+
npm install react@^19.0.0 react-dom@^19.0.0
|
|
394
|
+
|
|
395
|
+
# ✅ BETTER - Recommended secure version
|
|
396
|
+
npm install react@19.2.3 react-dom@19.2.3
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### ❌ Mistake 4: Installing Optional Dependencies
|
|
400
|
+
|
|
401
|
+
**Problem:** Installing packages that aren't needed
|
|
402
|
+
|
|
403
|
+
**Note:** Currently, all peer dependencies are required. There are no optional peer dependencies.
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
## Verification
|
|
408
|
+
|
|
409
|
+
### Check Your Installation
|
|
410
|
+
|
|
411
|
+
Run this command to verify core peer dependencies are installed:
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
# Check core dependencies (always required)
|
|
415
|
+
npm ls react react-dom react-router-dom tailwindcss
|
|
416
|
+
|
|
417
|
+
# Check optional dependencies (only if you use these features)
|
|
418
|
+
npm ls @tanstack/react-query @tanstack/react-table date-fns date-fns-tz react-day-picker react-hook-form zod clsx tailwind-merge
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Check for Duplicates
|
|
422
|
+
|
|
423
|
+
Verify you don't have duplicate dependencies:
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
# Check for included dependencies that shouldn't be installed
|
|
427
|
+
npm ls @supabase/supabase-js @radix-ui/react-checkbox @radix-ui/react-label @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-tooltip lucide-react @tanstack/react-virtual @hookform/resolvers lodash.debounce lodash.throttle papaparse react-is
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
If these show up as direct dependencies (not under `@jmruthers/pace-core`), remove them and use pace-core exports instead.
|
|
431
|
+
|
|
432
|
+
> **Note**:
|
|
433
|
+
> - `@tanstack/react-query` should be a direct dependency (it's a peer dependency).
|
|
434
|
+
> - `date-fns` and `date-fns-tz` should be direct dependencies (they're peer dependencies).
|
|
435
|
+
> - `@supabase/supabase-js`, `@radix-ui/*`, and `lucide-react` should NOT be direct dependencies (they're included - use pace-core exports).
|
|
436
|
+
|
|
437
|
+
### Verify pace-core Version
|
|
438
|
+
|
|
439
|
+
Check that you're using a compatible version of pace-core:
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
# Check installed version
|
|
443
|
+
npm ls @jmruthers/pace-core
|
|
444
|
+
|
|
445
|
+
# Check latest available version
|
|
446
|
+
npm view @jmruthers/pace-core version
|
|
447
|
+
|
|
448
|
+
# Compare versions
|
|
449
|
+
npm outdated @jmruthers/pace-core
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
**Required:** You must be using `@jmruthers/pace-core@^0.6.5` or later.
|
|
453
|
+
|
|
454
|
+
### Verify Version Compatibility
|
|
455
|
+
|
|
456
|
+
Check that your peer dependency versions match pace-core requirements:
|
|
457
|
+
|
|
458
|
+
```bash
|
|
459
|
+
# Check key dependencies
|
|
460
|
+
npm ls react react-dom @tanstack/react-query date-fns date-fns-tz tailwindcss @jmruthers/pace-core
|
|
461
|
+
|
|
462
|
+
# Check all peer dependencies
|
|
463
|
+
npm ls react react-dom @tanstack/react-query @tanstack/react-table clsx date-fns date-fns-tz react-day-picker react-hook-form react-router-dom tailwind-merge tailwindcss zod
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
All should show versions compatible with pace-core's peer dependency requirements.
|
|
467
|
+
|
|
468
|
+
**Critical Check:** Ensure React is 19.2.3 or later:
|
|
469
|
+
```bash
|
|
470
|
+
npm ls react
|
|
471
|
+
# Should show: react@19.2.3 or higher
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## Troubleshooting
|
|
477
|
+
|
|
478
|
+
### Issue: "Cannot find module '@radix-ui/react-checkbox'" or similar Radix UI errors
|
|
479
|
+
|
|
480
|
+
**Cause:** `@radix-ui/*` packages are now **included dependencies** in pace-core. You should NOT import them directly.
|
|
481
|
+
|
|
482
|
+
**Solution:**
|
|
483
|
+
1. **DO NOT** install `@radix-ui/*` packages - they're included in pace-core
|
|
484
|
+
2. **Use** pace-core components instead:
|
|
485
|
+
|
|
486
|
+
```tsx
|
|
487
|
+
// ✅ CORRECT: Use pace-core components
|
|
488
|
+
import { Checkbox, Label, Switch, Tabs, Toast, Tooltip } from '@jmruthers/pace-core';
|
|
489
|
+
|
|
490
|
+
// ❌ WRONG: Direct Radix UI import (will fail - packages are included, not peer)
|
|
491
|
+
import { Checkbox } from '@radix-ui/react-checkbox';
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Note**: `@radix-ui/*` packages are included dependencies to enforce consistency. Use pace-core components instead.
|
|
495
|
+
|
|
496
|
+
### Issue: "Module not found: '@supabase/supabase-js'" or "Rollup failed to resolve import '@supabase/supabase-js'"
|
|
497
|
+
|
|
498
|
+
**Cause:** `@supabase/supabase-js` is now an **included dependency** in pace-core. You should NOT import it directly.
|
|
499
|
+
|
|
500
|
+
**Solution:**
|
|
501
|
+
1. **Remove** `@supabase/supabase-js` from your `package.json` if you have it installed
|
|
502
|
+
2. **Use** `createBaseClient()` from pace-core instead:
|
|
503
|
+
|
|
504
|
+
```tsx
|
|
505
|
+
// ✅ CORRECT: Use pace-core's createBaseClient
|
|
506
|
+
import { createBaseClient } from '@jmruthers/pace-core';
|
|
507
|
+
|
|
508
|
+
const supabase = createBaseClient(
|
|
509
|
+
import.meta.env.VITE_SUPABASE_URL,
|
|
510
|
+
import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY
|
|
511
|
+
);
|
|
512
|
+
|
|
513
|
+
// ❌ WRONG: Direct import (will fail - package is included, not peer)
|
|
514
|
+
import { createClient } from '@supabase/supabase-js';
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
**Why:**
|
|
518
|
+
- `@supabase/supabase-js` is included to enforce security rules
|
|
519
|
+
- Use `createBaseClient()` which enforces the allowed exception pattern
|
|
520
|
+
- **Do NOT** add it to Vite `optimizeDeps` - that won't work and violates security rules
|
|
521
|
+
|
|
522
|
+
**Files to check:**
|
|
523
|
+
- `src/lib/supabase.ts`
|
|
524
|
+
- `src/main.tsx`
|
|
525
|
+
- Any file importing `createClient` from `@supabase/supabase-js`
|
|
526
|
+
|
|
527
|
+
### Issue: Build-Time Resolution Errors
|
|
528
|
+
|
|
529
|
+
**Cause:** Some bundlers (Vite/Rollup) require packages to be in direct dependencies for build-time module resolution.
|
|
530
|
+
|
|
531
|
+
**Symptoms:**
|
|
532
|
+
- Build errors: "Failed to resolve import '@tanstack/react-query'"
|
|
533
|
+
- Build errors: "Failed to resolve import 'date-fns'"
|
|
534
|
+
- Build errors: `[vite]: Rollup failed to resolve import "@tanstack/react-query"`
|
|
535
|
+
|
|
536
|
+
**Solution:**
|
|
537
|
+
- `@tanstack/react-query`, `date-fns`, and `date-fns-tz` are **peer dependencies** and **MUST be installed** as direct dependencies in your `package.json`. See [Required Peer Dependencies](#-required-peer-dependencies-must-install) above.
|
|
538
|
+
- **Do NOT** externalize them in Vite config - install them as dependencies instead.
|
|
539
|
+
- **Do NOT** add them to `optimizeDeps.include` - that won't fix the build error.
|
|
540
|
+
- `@supabase/supabase-js`, `@radix-ui/*`, and `lucide-react` are included dependencies - use pace-core exports instead of importing directly.
|
|
541
|
+
|
|
542
|
+
**Common Mistake:**
|
|
543
|
+
If you removed `@tanstack/react-query` during cleanup thinking it was included, you need to reinstall it:
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
# ✅ CORRECT: Install as peer dependency
|
|
547
|
+
npm install @tanstack/react-query@^5.90.0
|
|
548
|
+
|
|
549
|
+
# ❌ WRONG: Don't externalize in vite.config.ts
|
|
550
|
+
# build: { rollupOptions: { external: ['@tanstack/react-query'] } }
|
|
551
|
+
|
|
552
|
+
# ❌ WRONG: Don't add to optimizeDeps
|
|
553
|
+
# optimizeDeps: { include: ['@tanstack/react-query'] }
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
**Why:**
|
|
557
|
+
- Peer dependencies must be explicitly installed in your `package.json`
|
|
558
|
+
- Peer dependencies are **NOT** transitive dependencies - they won't be available unless you install them
|
|
559
|
+
- Externalizing or adding to `optimizeDeps` are workarounds that won't work - the dependency must be in `package.json`
|
|
560
|
+
- This is the standard approach for peer dependencies
|
|
561
|
+
|
|
562
|
+
### Issue: Version conflicts
|
|
563
|
+
|
|
564
|
+
**Cause:** Incompatible versions of peer dependencies
|
|
565
|
+
|
|
566
|
+
**Solution:**
|
|
567
|
+
1. Check required versions in pace-core's `package.json`
|
|
568
|
+
2. Update your dependencies to match:
|
|
569
|
+
```bash
|
|
570
|
+
npm install react@^19.0.0 react-dom@^19.0.0
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
### Issue: Duplicate React instances
|
|
574
|
+
|
|
575
|
+
**Cause:** Multiple React installations
|
|
576
|
+
|
|
577
|
+
**Solution:**
|
|
578
|
+
1. Check for duplicates: `npm ls react`
|
|
579
|
+
2. Remove duplicate installations
|
|
580
|
+
3. Ensure Vite config deduplicates React (see [Installation Guide](./installation-guide.md))
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
## Reference
|
|
585
|
+
|
|
586
|
+
### View Current Dependencies
|
|
587
|
+
|
|
588
|
+
To see pace-core's current dependencies and peer dependencies:
|
|
589
|
+
|
|
590
|
+
```bash
|
|
591
|
+
# View pace-core package.json
|
|
592
|
+
npm view @jmruthers/pace-core peerDependencies
|
|
593
|
+
npm view @jmruthers/pace-core dependencies
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
Or check the source:
|
|
597
|
+
- **Peer Dependencies:** `packages/core/package.json` → `peerDependencies`
|
|
598
|
+
- **Included Dependencies:** `packages/core/package.json` → `dependencies`
|
|
599
|
+
|
|
600
|
+
### Package.json Structure
|
|
601
|
+
|
|
602
|
+
```json
|
|
603
|
+
{
|
|
604
|
+
"peerDependencies": {
|
|
605
|
+
// ⚠️ REQUIRED - Install these in your app
|
|
606
|
+
"react": "^19.0.0",
|
|
607
|
+
"react-dom": "^19.0.0",
|
|
608
|
+
"@tanstack/react-query": "^5.90.0",
|
|
609
|
+
"date-fns": "^3.0.0",
|
|
610
|
+
"date-fns-tz": "^3.0.0",
|
|
611
|
+
// ... other required peers
|
|
612
|
+
},
|
|
613
|
+
"dependencies": {
|
|
614
|
+
// ✅ INCLUDED - Already in pace-core, don't install
|
|
615
|
+
// Use pace-core exports instead:
|
|
616
|
+
// - @supabase/supabase-js → use createBaseClient() from pace-core
|
|
617
|
+
// - @radix-ui/* → use pace-core components
|
|
618
|
+
// - lucide-react → use @jmruthers/pace-core/icons
|
|
619
|
+
"@supabase/supabase-js": "^2.89.0",
|
|
620
|
+
"@radix-ui/react-checkbox": "^1.0.0",
|
|
621
|
+
// ... other included deps
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
---
|
|
628
|
+
|
|
629
|
+
## Summary
|
|
630
|
+
|
|
631
|
+
| Category | Action | Packages |
|
|
632
|
+
|----------|--------|----------|
|
|
633
|
+
| **pace-core** | ✅ **MUST** use latest | `@jmruthers/pace-core@^0.6.5` (use `@latest` to get current version) |
|
|
634
|
+
| **Included** | ❌ **DO NOT** install | `@supabase/supabase-js` (use `createBaseClient()`), `@radix-ui/*` (use pace-core components), `lucide-react` (use `@jmruthers/pace-core/icons`), `@tanstack/react-virtual`, `@hookform/resolvers`, `lodash.debounce`, `lodash.throttle`, `papaparse`, `react-is` |
|
|
635
|
+
| **Required Peers (Always)** | ✅ **MUST** install | `react@19.2.3+`, `react-dom@19.2.3+`, `react-router-dom@^6.0.0`, `tailwindcss@^4.0.0` |
|
|
636
|
+
| **Optional Peers (If Used)** | ⚠️ **Install if needed** | `@tanstack/react-query@^5.90.0` (data fetching), `@tanstack/react-table@^8.0.0` (DataTable), `date-fns@^3.0.0` (date formatting), `date-fns-tz@^3.0.0` (timezone), `react-hook-form@^7.0.0` (forms), `react-day-picker@^9.0.0` (date pickers), `zod@^3.20.0` (validation), `clsx@^2.0.0` (className utility), `tailwind-merge@^2.0.0` (class merging) |
|
|
637
|
+
| **Dev Dependency** | ✅ **MUST** install | `@tailwindcss/vite`, `tailwindcss@^4.0.0` |
|
|
638
|
+
|
|
639
|
+
---
|
|
640
|
+
|
|
641
|
+
**Last Updated:** 2025-01-28 | **Version:** v0.6.5
|
|
642
|
+
|
|
643
|
+
**Next Steps:**
|
|
644
|
+
- [Consuming Apps Audit Checklist](../../audit/consuming-apps-audit-checklist.md) - **Use this checklist to audit your dependencies**
|
|
645
|
+
- [Installation Guide](./installation-guide.md) - Complete setup instructions
|
|
646
|
+
- [Quick Start](./quick-start.md) - Build your first app
|
|
647
|
+
- [Troubleshooting](../troubleshooting/README.md) - Fix common issues
|
|
648
|
+
|
|
649
|
+
**This document is the single source of truth for pace-core dependencies.**
|
|
650
|
+
|
|
@@ -30,7 +30,7 @@ Follow this checklist after installing `@jmruthers/pace-core`. Each step points
|
|
|
30
30
|
|
|
31
31
|
- ✅ Apply the design system tokens → [Styling usage](../styles/usage.md)
|
|
32
32
|
- ✅ Run the test playbook → [Testing overview](../testing/README.md)
|
|
33
|
-
- ✅ Prepare for production → [
|
|
33
|
+
- ✅ Prepare for production → [Operations Standards](../standards/9-operations-standards.md#cicd-integration) (deployment)
|
|
34
34
|
- ✅ Review security posture → [Security checklist](../security/checklist.md)
|
|
35
35
|
|
|
36
36
|
## Need help?
|
|
@@ -677,8 +677,8 @@ export function MealsPage() {
|
|
|
677
677
|
}
|
|
678
678
|
};
|
|
679
679
|
|
|
680
|
-
if (loading) return <
|
|
681
|
-
if (error) return <
|
|
680
|
+
if (loading) return <p>Loading meals...</p>;
|
|
681
|
+
if (error) return <p>Error: {error}</p>;
|
|
682
682
|
|
|
683
683
|
return (
|
|
684
684
|
<div className="p-6">
|
|
@@ -919,7 +919,7 @@ All examples are designed to be easily customizable:
|
|
|
919
919
|
3. **Examples** → Choose an example above
|
|
920
920
|
4. **Core Concepts** → [Understand the Fundamentals](../core-concepts/)
|
|
921
921
|
5. **Implementation** → [Advanced Patterns](../implementation-guides/)
|
|
922
|
-
6. **Production** → [
|
|
922
|
+
6. **Production** → [Standards](../standards/) - Development standards and best practices
|
|
923
923
|
|
|
924
924
|
## 🆘 Need Help?
|
|
925
925
|
|
|
@@ -932,4 +932,4 @@ All examples are designed to be easily customizable:
|
|
|
932
932
|
- [Authentication Implementation Guide](../implementation-guides/authentication.md) - Complete authentication setup
|
|
933
933
|
- [Data Tables Guide](../implementation-guides/data-tables.md) - Advanced data management
|
|
934
934
|
- [API Reference](../api-reference/) - Complete component documentation
|
|
935
|
-
- [
|
|
935
|
+
- [Standards](../standards/) - Development standards and production guidelines
|
|
@@ -615,4 +615,4 @@ REACT_APP_SUPABASE_ANON_KEY=your-anon-key-here
|
|
|
615
615
|
- **[Core Concepts](../core-concepts/)** - Understand authentication and RBAC
|
|
616
616
|
- **[Implementation Guides](../implementation-guides/)** - Advanced patterns
|
|
617
617
|
- **[API Reference](../api-reference/)** - All components and hooks
|
|
618
|
-
- **[
|
|
618
|
+
- **[Standards](../standards/)** - Development standards and production deployment
|