@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,348 @@
|
|
|
1
|
+
# Styling Standards
|
|
2
|
+
|
|
3
|
+
**🤖 Cursor Rule**: See [05-styling.mdc](../../cursor-rules/05-styling.mdc) for AI-optimized directives that automatically enforce markup quality (this rule is ALWAYS APPLIED).
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
This standard defines the **REQUIRED** configuration for consuming apps to properly use pace-core styling. Adhering to this standard ensures:
|
|
8
|
+
|
|
9
|
+
- ✅ pace-core components render with correct styles
|
|
10
|
+
- ✅ Colors, typography, and spacing work correctly
|
|
11
|
+
- ✅ Tailwind v4 content scanning works properly
|
|
12
|
+
- ✅ Consistent styling across all PACE suite applications
|
|
13
|
+
|
|
14
|
+
## Component & Markup Guidance
|
|
15
|
+
|
|
16
|
+
- Components should be stateless when possible, fully typed, and accessibility-first.
|
|
17
|
+
- Prefer semantic HTML elements; use `<div>` only when no semantic element fits or when required by a library.
|
|
18
|
+
- Use React Fragments for grouping instead of wrapper nodes; keep markup minimal and avoid wrappers solely for styling.
|
|
19
|
+
- No inline styles; rely on pace-core variants and Tailwind utilities (layout/spacing) using theme tokens (`main-*`, `sec-*`, `acc-*`, semantic tokens).
|
|
20
|
+
- No arbitrary Tailwind colors or bracket syntax—use approved theme tokens only.
|
|
21
|
+
- Apply layout utilities to existing semantic parents or pace-core layout components.
|
|
22
|
+
|
|
23
|
+
### Component Principles
|
|
24
|
+
|
|
25
|
+
- Stateless when possible; keep surface area small and composable.
|
|
26
|
+
- Accessible by default with correct roles, keyboard support, and visible focus.
|
|
27
|
+
- UI primitives only; never add domain logic or data fetching inside components.
|
|
28
|
+
- Support controlled + uncontrolled usage where applicable.
|
|
29
|
+
|
|
30
|
+
### Testing Expectations
|
|
31
|
+
|
|
32
|
+
- Use React Testing Library + userEvent.
|
|
33
|
+
- Test key interactions; snapshots only for simple components.
|
|
34
|
+
- Keep components small—move non-UI logic to hooks/services.
|
|
35
|
+
|
|
36
|
+
## ⚠️ CRITICAL: Required Configuration
|
|
37
|
+
|
|
38
|
+
**Without proper configuration, pace-core components will appear unstyled or with incorrect styling.**
|
|
39
|
+
|
|
40
|
+
## Two-File CSS Architecture
|
|
41
|
+
|
|
42
|
+
pace-core uses a two-file CSS architecture:
|
|
43
|
+
|
|
44
|
+
1. **`@jmruthers/pace-core/styles/core.css`** - Core foundation (fonts, resets, typography, component styles)
|
|
45
|
+
2. **`src/app.css`** - App-specific configuration (color palettes, source directives)
|
|
46
|
+
|
|
47
|
+
## Required File: `src/app.css`
|
|
48
|
+
|
|
49
|
+
**MUST** create `src/app.css` in your consuming app with the following structure:
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
@import "tailwindcss";
|
|
53
|
+
|
|
54
|
+
/* @source directives for Tailwind v4 content scanning */
|
|
55
|
+
/* CRITICAL: Paths are relative to the CSS file location (src/app.css) */
|
|
56
|
+
@source "./**/*.{js,ts,jsx,tsx}";
|
|
57
|
+
@source "../node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
58
|
+
|
|
59
|
+
/* Import pace-core CSS files so Tailwind processes them */
|
|
60
|
+
/* CRITICAL: Must use package path, not /src/styles/ path */
|
|
61
|
+
@import "@jmruthers/pace-core/styles/core.css";
|
|
62
|
+
|
|
63
|
+
@theme static {
|
|
64
|
+
/* Your app's color palettes here */
|
|
65
|
+
/* See Color Palette Requirements below */
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## ⚠️ CRITICAL: @source Directive Paths
|
|
70
|
+
|
|
71
|
+
**The @source directive paths are relative to the CSS file location, not the project root.**
|
|
72
|
+
|
|
73
|
+
Since `app.css` is in `src/app.css`, the paths MUST be:
|
|
74
|
+
|
|
75
|
+
### ✅ CORRECT Patterns
|
|
76
|
+
|
|
77
|
+
```css
|
|
78
|
+
/* For app source files (relative to src/) */
|
|
79
|
+
@source "./**/*.{js,ts,jsx,tsx}";
|
|
80
|
+
|
|
81
|
+
/* For pace-core (one level up from src/ to project root, then into node_modules) */
|
|
82
|
+
@source "../node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### ❌ WRONG Patterns
|
|
86
|
+
|
|
87
|
+
```css
|
|
88
|
+
/* ❌ WRONG: Two levels up for node_modules (only needed if app.css is nested deeper) */
|
|
89
|
+
@source "../../node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
90
|
+
|
|
91
|
+
/* ❌ WRONG: Using ../src/ when app.css is already in src/ */
|
|
92
|
+
@source "../src/**/*.{js,ts,jsx,tsx}";
|
|
93
|
+
|
|
94
|
+
/* ❌ WRONG: Using ./src/ when app.css is already in src/ */
|
|
95
|
+
@source "./src/**/*.{js,ts,jsx,tsx}";
|
|
96
|
+
|
|
97
|
+
/* ❌ WRONG: Using project root paths (paths are relative to CSS file) */
|
|
98
|
+
@source "./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Path Resolution Logic
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Project Structure:
|
|
105
|
+
your-app/
|
|
106
|
+
├── src/
|
|
107
|
+
│ └── app.css ← CSS file is here
|
|
108
|
+
├── node_modules/
|
|
109
|
+
│ └── @jmruthers/
|
|
110
|
+
│ └── pace-core/
|
|
111
|
+
│ └── src/ ← pace-core source is here
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**From `src/app.css`:**
|
|
115
|
+
- To scan app source: `./**/*.{js,ts,jsx,tsx}` (current directory = src/)
|
|
116
|
+
- To scan pace-core: `../node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}` (up one level to project root, then into node_modules)
|
|
117
|
+
|
|
118
|
+
## ⚠️ CRITICAL: CSS Import Path
|
|
119
|
+
|
|
120
|
+
**MUST** use the package path, not the source path:
|
|
121
|
+
|
|
122
|
+
### ✅ CORRECT
|
|
123
|
+
|
|
124
|
+
```css
|
|
125
|
+
@import "@jmruthers/pace-core/styles/core.css";
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### ❌ WRONG
|
|
129
|
+
|
|
130
|
+
```css
|
|
131
|
+
/* ❌ WRONG: Don't use /src/styles/ path */
|
|
132
|
+
@import "@jmruthers/pace-core/src/styles/core.css";
|
|
133
|
+
|
|
134
|
+
/* ❌ WRONG: Don't import in main.tsx (import in app.css instead) */
|
|
135
|
+
/* In main.tsx: */
|
|
136
|
+
import '@jmruthers/pace-core/styles/core.css'; /* ❌ WRONG */
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Required Color Palettes
|
|
140
|
+
|
|
141
|
+
**MUST** define three complete color palettes in `@theme static`:
|
|
142
|
+
|
|
143
|
+
```css
|
|
144
|
+
@theme static {
|
|
145
|
+
/* Main palette - Primary brand color (all shades 50-950 required) */
|
|
146
|
+
--color-main-raw: oklch(0.58 0.23 300);
|
|
147
|
+
--color-main-50: oklch(0.98 0.003 300);
|
|
148
|
+
--color-main-100: oklch(0.96 0.014 300);
|
|
149
|
+
--color-main-200: oklch(0.927 0.033 300);
|
|
150
|
+
--color-main-300: oklch(0.881 0.059 300);
|
|
151
|
+
--color-main-400: oklch(0.822 0.093 300);
|
|
152
|
+
--color-main-500: oklch(0.75 0.133 300);
|
|
153
|
+
--color-main-600: oklch(0.665 0.182 300);
|
|
154
|
+
--color-main-700: oklch(0.58 0.23 300);
|
|
155
|
+
--color-main-800: oklch(0.456 0.158 300);
|
|
156
|
+
--color-main-900: oklch(0.332 0.099 300);
|
|
157
|
+
--color-main-950: oklch(0.195 0.047 300);
|
|
158
|
+
|
|
159
|
+
/* Secondary palette - Supporting color (all shades 50-950 required) */
|
|
160
|
+
--color-sec-raw: oklch(0.675 0.169 244.75);
|
|
161
|
+
--color-sec-50: oklch(0.98 0.003 244.75);
|
|
162
|
+
--color-sec-100: oklch(0.96 0.014 244.75);
|
|
163
|
+
--color-sec-200: oklch(0.927 0.032 244.75);
|
|
164
|
+
--color-sec-300: oklch(0.881 0.057 244.75);
|
|
165
|
+
--color-sec-400: oklch(0.822 0.089 244.75);
|
|
166
|
+
--color-sec-500: oklch(0.75 0.128 244.75);
|
|
167
|
+
--color-sec-600: oklch(0.675 0.169 244.75);
|
|
168
|
+
--color-sec-700: oklch(0.567 0.134 244.75);
|
|
169
|
+
--color-sec-800: oklch(0.456 0.101 244.75);
|
|
170
|
+
--color-sec-900: oklch(0.332 0.068 244.75);
|
|
171
|
+
--color-sec-950: oklch(0.195 0.037 244.75);
|
|
172
|
+
|
|
173
|
+
/* Accent palette - Highlight color (all shades 50-950 required) */
|
|
174
|
+
--color-acc-raw: oklch(0.64 0.23 7.385);
|
|
175
|
+
--color-acc-50: oklch(0.98 0.003 7.385);
|
|
176
|
+
--color-acc-100: oklch(0.96 0.017 7.385);
|
|
177
|
+
--color-acc-200: oklch(0.927 0.039 7.385);
|
|
178
|
+
--color-acc-300: oklch(0.881 0.069 7.385);
|
|
179
|
+
--color-acc-400: oklch(0.822 0.109 7.385);
|
|
180
|
+
--color-acc-500: oklch(0.75 0.157 7.385);
|
|
181
|
+
--color-acc-600: oklch(0.64 0.23 7.385);
|
|
182
|
+
--color-acc-700: oklch(0.567 0.193 7.385);
|
|
183
|
+
--color-acc-800: oklch(0.456 0.142 7.385);
|
|
184
|
+
--color-acc-900: oklch(0.332 0.092 7.385);
|
|
185
|
+
--color-acc-950: oklch(0.195 0.047 7.385);
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**All shades (50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950) plus `-raw` are REQUIRED.**
|
|
190
|
+
|
|
191
|
+
## Required Import in Entry Point
|
|
192
|
+
|
|
193
|
+
**MUST** import `app.css` in your entry point (e.g., `src/main.tsx`):
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
// src/main.tsx
|
|
197
|
+
import './app.css'; // ✅ CORRECT - Import app.css which imports core.css once
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**DO NOT** import `core.css` directly in `main.tsx`, `App.tsx`, or any other entry surface. Double-importing `core.css` leads to stylesheet duplication and ordering issues.
|
|
201
|
+
|
|
202
|
+
```tsx
|
|
203
|
+
// ❌ WRONG - Don't import core.css directly (app.css already does it)
|
|
204
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
205
|
+
import './app.css';
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Multi-entry decision tree
|
|
209
|
+
|
|
210
|
+
When you have additional entry points (storybook, tests, preview servers):
|
|
211
|
+
- If the entry point renders your React tree, **import only `app.css`** there as well.
|
|
212
|
+
- If you need raw styles for non-React tooling, **import `@jmruthers/pace-core/styles/core.css` once** in that tool-specific stylesheet, never alongside `app.css`.
|
|
213
|
+
- If you are unsure, default to a single `app.css` import and remove any extra `core.css` imports.
|
|
214
|
+
|
|
215
|
+
## Styling & Markup Rules
|
|
216
|
+
|
|
217
|
+
- **No inline styles**: Do not use `style={{ ... }}` except when a third-party library strictly requires it. Prefer pace-core variants + Tailwind utilities.
|
|
218
|
+
- **Use theme tokens only**: Avoid arbitrary Tailwind colors (`text-gray-500`, `bg-red-500`) and bracket syntax (`bg-[oklch(...)]`). Use `main-*`, `sec-*`, `acc-*`, or semantic tokens like `text-foreground`.
|
|
219
|
+
- **Semantic-first markup**: Prefer semantic HTML elements. Use `<div>` only when no semantic element fits or when required by a library; otherwise use semantic tags or React fragments.
|
|
220
|
+
- **Minimal wrappers**: Avoid extra wrapper elements just for styling—apply layout classes to existing semantic parents or use pace-core layout components.
|
|
221
|
+
- **Typography**: Rely on pace-core typography defaults; only add utilities when they reference approved theme tokens (e.g., `text-main-700`).
|
|
222
|
+
|
|
223
|
+
## Complete Example
|
|
224
|
+
|
|
225
|
+
### `src/app.css`
|
|
226
|
+
|
|
227
|
+
```css
|
|
228
|
+
@import "tailwindcss";
|
|
229
|
+
|
|
230
|
+
/* @source directives for Tailwind v4 content scanning */
|
|
231
|
+
@source "./**/*.{js,ts,jsx,tsx}";
|
|
232
|
+
@source "../node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
233
|
+
|
|
234
|
+
/* Import pace-core CSS files so Tailwind processes them */
|
|
235
|
+
@import "@jmruthers/pace-core/styles/core.css";
|
|
236
|
+
|
|
237
|
+
@theme static {
|
|
238
|
+
/* Your app's color palettes */
|
|
239
|
+
--color-main-raw: oklch(0.58 0.23 300);
|
|
240
|
+
--color-main-50: oklch(0.98 0.003 300);
|
|
241
|
+
/* ... continue through 950 for main, sec, and acc */
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### `src/main.tsx`
|
|
246
|
+
|
|
247
|
+
```tsx
|
|
248
|
+
import { createRoot } from 'react-dom/client';
|
|
249
|
+
import App from './App';
|
|
250
|
+
import './app.css'; // ✅ Import app.css (which imports core.css)
|
|
251
|
+
|
|
252
|
+
createRoot(document.getElementById('root')!).render(<App />);
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Verification Checklist
|
|
256
|
+
|
|
257
|
+
Before committing, verify:
|
|
258
|
+
|
|
259
|
+
- [ ] `src/app.css` exists and follows the structure above
|
|
260
|
+
- [ ] `@source` directives use correct paths (relative to `src/app.css`)
|
|
261
|
+
- [ ] `@import "@jmruthers/pace-core/styles/core.css";` is in `app.css` (not in `main.tsx`)
|
|
262
|
+
- [ ] All three color palettes (main, sec, acc) are defined with all shades (50-950)
|
|
263
|
+
- [ ] `app.css` is imported in `main.tsx` (not `core.css`)
|
|
264
|
+
- [ ] No duplicate imports of `core.css`
|
|
265
|
+
|
|
266
|
+
## Common Mistakes
|
|
267
|
+
|
|
268
|
+
### ❌ Mistake 1: Wrong @source Paths
|
|
269
|
+
|
|
270
|
+
```css
|
|
271
|
+
/* ❌ WRONG */
|
|
272
|
+
@source "../../node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Fix:** Use `../node_modules/` (one level up, not two)
|
|
276
|
+
|
|
277
|
+
### ❌ Mistake 2: Importing core.css in main.tsx
|
|
278
|
+
|
|
279
|
+
```tsx
|
|
280
|
+
// ❌ WRONG
|
|
281
|
+
import '@jmruthers/pace-core/styles/core.css';
|
|
282
|
+
import './app.css';
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Fix:** Only import `app.css` in `main.tsx`. The `app.css` file imports `core.css`.
|
|
286
|
+
|
|
287
|
+
### ❌ Mistake 3: Using /src/styles/ Path
|
|
288
|
+
|
|
289
|
+
```css
|
|
290
|
+
/* ❌ WRONG */
|
|
291
|
+
@import "@jmruthers/pace-core/src/styles/core.css";
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Fix:** Use `@jmruthers/pace-core/styles/core.css` (package path, not source path)
|
|
295
|
+
|
|
296
|
+
### ❌ Mistake 4: Missing Color Shades
|
|
297
|
+
|
|
298
|
+
```css
|
|
299
|
+
/* ❌ WRONG - Missing shades */
|
|
300
|
+
@theme static {
|
|
301
|
+
--color-main-500: oklch(0.75 0.133 300);
|
|
302
|
+
/* Missing 50, 100, 200, etc. */
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Fix:** Include all shades (50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950) plus `-raw` for each palette
|
|
307
|
+
|
|
308
|
+
### ❌ Mistake 5: Wrong App Source Path
|
|
309
|
+
|
|
310
|
+
```css
|
|
311
|
+
/* ❌ WRONG - If app.css is in src/ */
|
|
312
|
+
@source "../src/**/*.{js,ts,jsx,tsx}";
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**Fix:** Use `./**/*.{js,ts,jsx,tsx}` when `app.css` is in `src/`
|
|
316
|
+
|
|
317
|
+
## Troubleshooting
|
|
318
|
+
|
|
319
|
+
### Components Appear Unstyled
|
|
320
|
+
|
|
321
|
+
1. **Check @source directives:** Verify paths are correct relative to `src/app.css`
|
|
322
|
+
2. **Check CSS import:** Ensure `@import "@jmruthers/pace-core/styles/core.css";` is in `app.css`
|
|
323
|
+
3. **Check app.css import:** Ensure `import './app.css';` is in `main.tsx`
|
|
324
|
+
4. **Clear build cache:** Delete `dist/`, `.vite/`, and rebuild
|
|
325
|
+
|
|
326
|
+
### Colors Don't Work
|
|
327
|
+
|
|
328
|
+
1. **Check color palettes:** Verify all shades (50-950) are defined for main, sec, and acc
|
|
329
|
+
2. **Check @theme static:** Ensure color variables are in `@theme static` block
|
|
330
|
+
3. **Check import order:** Ensure `core.css` is imported before `@theme static` in `app.css`
|
|
331
|
+
|
|
332
|
+
### Tailwind Classes Missing
|
|
333
|
+
|
|
334
|
+
1. **Check @source directives:** Verify pace-core source is being scanned
|
|
335
|
+
2. **Check build output:** Look for warnings about missing classes
|
|
336
|
+
3. **Verify package version:** Ensure you're using a recent version of pace-core
|
|
337
|
+
|
|
338
|
+
## Related Documentation
|
|
339
|
+
|
|
340
|
+
- [Standards Overview](./0-standards-overview.md) - Standards system overview
|
|
341
|
+
- [Project Structure](./2-project-structure-standards.md) - File organization standards
|
|
342
|
+
- [Architecture](./3-architecture-standards.md) - Component development standards
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
**Last Updated:** 2025-01-28
|
|
347
|
+
**Version:** 2.0.0
|
|
348
|
+
**Applies to:** All consuming apps using `@jmruthers/pace-core`
|