@jmruthers/pace-core 0.5.193 → 0.6.2
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 +62 -0
- package/README.md +7 -1
- package/cursor-rules/00-pace-core-compliance.mdc +299 -0
- package/cursor-rules/01-standards-compliance.mdc +244 -0
- package/cursor-rules/02-project-structure.mdc +200 -0
- package/cursor-rules/03-solid-principles.mdc +222 -0
- package/cursor-rules/04-testing-standards.mdc +268 -0
- package/cursor-rules/05-bug-reports-and-features.mdc +246 -0
- package/cursor-rules/06-code-quality.mdc +309 -0
- package/cursor-rules/07-tech-stack-compliance.mdc +214 -0
- package/cursor-rules/08-markup-quality.mdc +452 -0
- package/cursor-rules/CHANGELOG.md +119 -0
- package/cursor-rules/README.md +192 -0
- package/dist/{AuthService-DjnJHDtC.d.ts → AuthService-BPvc3Ka0.d.ts} +54 -0
- package/dist/{DataTable-Be6dH_dR.d.ts → DataTable-BMRU8a1j.d.ts} +34 -2
- package/dist/{DataTable-5FU7IESH.js → DataTable-TPTKCX4D.js} +10 -9
- package/dist/{PublicPageProvider-C0Sm_e5k.d.ts → PublicPageProvider-DC6kCaqf.d.ts} +385 -261
- package/dist/{UnifiedAuthProvider-RGJTDE2C.js → UnifiedAuthProvider-CH6Z342H.js} +3 -3
- package/dist/{UnifiedAuthProvider-185Ih4dj.d.ts → UnifiedAuthProvider-CVcTjx-d.d.ts} +29 -0
- package/dist/{api-N774RPUA.js → api-MVVQZLJI.js} +2 -2
- package/dist/{chunk-KNC55RTG.js → chunk-24UVZUZG.js} +90 -54
- package/dist/chunk-24UVZUZG.js.map +1 -0
- package/dist/{chunk-HWIIPPNI.js → chunk-2UOI2FG5.js} +20 -20
- package/dist/chunk-2UOI2FG5.js.map +1 -0
- package/dist/{chunk-E3SPN4VZ 5.js → chunk-3XC4CPTD.js} +4345 -3986
- package/dist/chunk-3XC4CPTD.js.map +1 -0
- package/dist/{chunk-7EQTDTTJ.js → chunk-6J4GEEJR.js} +172 -45
- package/dist/chunk-6J4GEEJR.js.map +1 -0
- package/dist/{chunk-6C4YBBJM 5.js → chunk-6SOIHG6Z.js} +1 -1
- package/dist/chunk-6SOIHG6Z.js.map +1 -0
- package/dist/{chunk-7FLMSG37.js → chunk-EHMR7VYL.js} +25 -25
- package/dist/chunk-EHMR7VYL.js.map +1 -0
- package/dist/{chunk-I7PSE6JW.js → chunk-F2IMUDXZ.js} +2 -75
- package/dist/chunk-F2IMUDXZ.js.map +1 -0
- package/dist/{chunk-QWWZ5CAQ.js → chunk-FFQEQTNW.js} +7 -9
- package/dist/chunk-FFQEQTNW.js.map +1 -0
- package/dist/chunk-FMUCXFII.js +76 -0
- package/dist/chunk-FMUCXFII.js.map +1 -0
- package/dist/{chunk-HW3OVDUF.js → chunk-J36DSWQK.js} +1 -1
- package/dist/{chunk-HW3OVDUF.js.map → chunk-J36DSWQK.js.map} +1 -1
- package/dist/{chunk-SQGMNID3.js → chunk-L4OXEN46.js} +4 -5
- package/dist/chunk-L4OXEN46.js.map +1 -0
- package/dist/{chunk-R77UEZ4E 3.js → chunk-M43Y4SSO.js} +1 -1
- package/dist/chunk-M43Y4SSO.js.map +1 -0
- package/dist/{chunk-IIELH4DL.js → chunk-MMZ7JXPU.js} +60 -223
- package/dist/chunk-MMZ7JXPU.js.map +1 -0
- package/dist/{chunk-NOAYCWCX 5.js → chunk-NECFR5MM.js} +394 -312
- package/dist/chunk-NECFR5MM.js.map +1 -0
- package/dist/{chunk-BC4IJKSL.js → chunk-SFZUDBL5.js} +40 -4
- package/dist/chunk-SFZUDBL5.js.map +1 -0
- package/dist/{chunk-XNXXZ43G.js → chunk-XWQCNGTQ.js} +748 -364
- package/dist/chunk-XWQCNGTQ.js.map +1 -0
- package/dist/components.d.ts +6 -6
- package/dist/components.js +15 -12
- package/dist/components.js.map +1 -1
- package/dist/{functions-D_kgHktt.d.ts → functions-DHebl8-F.d.ts} +1 -1
- package/dist/hooks.d.ts +59 -126
- package/dist/hooks.js +19 -28
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +63 -16
- package/dist/index.js +23 -24
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +21 -3
- package/dist/providers.js +2 -2
- package/dist/rbac/index.d.ts +146 -115
- package/dist/rbac/index.js +8 -11
- package/dist/theming/runtime.d.ts +1 -13
- package/dist/theming/runtime.js +1 -1
- package/dist/{timezone-_pgH8qrY.d.ts → timezone-CHhWg6b4.d.ts} +3 -10
- package/dist/{types-UU913iLA.d.ts → types-BeoeWV5I.d.ts} +8 -0
- package/dist/{types-CEpcvwwF.d.ts → types-CkbwOr4Y.d.ts} +6 -0
- package/dist/types.d.ts +2 -2
- package/dist/{usePublicRouteParams-TZe0gy-4.d.ts → usePublicRouteParams-1oMokgLF.d.ts} +34 -4
- package/dist/{useToast-C8gR5ir4.d.ts → useToast-AyaT-x7p.d.ts} +2 -2
- package/dist/utils.d.ts +4 -5
- package/dist/utils.js +15 -15
- package/dist/utils.js.map +1 -1
- package/docs/api/README.md +7 -1
- package/docs/api/classes/ColumnFactory.md +8 -8
- package/docs/api/classes/InvalidScopeError.md +4 -4
- package/docs/api/classes/Logger.md +1 -1
- package/docs/api/classes/MissingUserContextError.md +4 -4
- package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
- package/docs/api/classes/PermissionDeniedError.md +4 -4
- package/docs/api/classes/RBACAuditManager.md +1 -1
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +1 -1
- package/docs/api/classes/RBACError.md +4 -4
- package/docs/api/classes/RBACNotInitializedError.md +4 -4
- package/docs/api/classes/SecureSupabaseClient.md +18 -15
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +1 -1
- package/docs/api/enums/LogLevel.md +1 -1
- package/docs/api/enums/RBACErrorCode.md +1 -1
- package/docs/api/enums/RPCFunction.md +1 -1
- package/docs/api/interfaces/AddressFieldProps.md +1 -1
- package/docs/api/interfaces/AddressFieldRef.md +1 -1
- package/docs/api/interfaces/AggregateConfig.md +4 -4
- package/docs/api/interfaces/AutocompleteOptions.md +1 -1
- package/docs/api/interfaces/AvatarProps.md +1 -1
- package/docs/api/interfaces/BadgeProps.md +9 -2
- package/docs/api/interfaces/ButtonProps.md +7 -4
- package/docs/api/interfaces/CalendarProps.md +8 -5
- package/docs/api/interfaces/CardProps.md +8 -5
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/ComplianceResult.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +9 -9
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +24 -21
- package/docs/api/interfaces/DataTableColumn.md +31 -31
- package/docs/api/interfaces/DataTableProps.md +1 -1
- package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
- package/docs/api/interfaces/DatabaseComplianceResult.md +1 -1
- package/docs/api/interfaces/DatabaseIssue.md +1 -1
- package/docs/api/interfaces/EmptyStateConfig.md +5 -5
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
- package/docs/api/interfaces/ErrorBoundaryProps.md +147 -0
- package/docs/api/interfaces/ErrorBoundaryProviderProps.md +36 -0
- package/docs/api/interfaces/ErrorBoundaryState.md +75 -0
- package/docs/api/interfaces/EventAppRoleData.md +1 -1
- package/docs/api/interfaces/ExportColumn.md +1 -1
- package/docs/api/interfaces/ExportOptions.md +8 -8
- package/docs/api/interfaces/FileDisplayProps.md +1 -1
- package/docs/api/interfaces/FileMetadata.md +1 -1
- package/docs/api/interfaces/FileReference.md +1 -1
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +1 -1
- package/docs/api/interfaces/FileUploadProps.md +26 -23
- package/docs/api/interfaces/FooterProps.md +10 -8
- package/docs/api/interfaces/FormFieldProps.md +10 -10
- package/docs/api/interfaces/FormProps.md +1 -1
- package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
- package/docs/api/interfaces/InputProps.md +7 -4
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoggerConfig.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +14 -11
- package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
- package/docs/api/interfaces/NavigationContextType.md +1 -1
- package/docs/api/interfaces/NavigationGuardProps.md +1 -1
- package/docs/api/interfaces/NavigationItem.md +11 -11
- package/docs/api/interfaces/NavigationMenuProps.md +15 -15
- package/docs/api/interfaces/NavigationProviderProps.md +1 -1
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +1 -1
- package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
- package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
- package/docs/api/interfaces/PaceAppLayoutProps.md +30 -27
- package/docs/api/interfaces/PaceLoginPageProps.md +6 -4
- package/docs/api/interfaces/PageAccessRecord.md +1 -1
- package/docs/api/interfaces/PagePermissionContextType.md +1 -1
- package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
- package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/ParsedAddress.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
- package/docs/api/interfaces/ProgressProps.md +1 -1
- package/docs/api/interfaces/ProtectedRouteProps.md +7 -26
- package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
- package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
- package/docs/api/interfaces/PublicPageLayoutProps.md +7 -20
- package/docs/api/interfaces/QuickFix.md +1 -1
- package/docs/api/interfaces/RBACAccessValidateParams.md +1 -1
- package/docs/api/interfaces/RBACAccessValidateResult.md +1 -1
- package/docs/api/interfaces/RBACAuditLogParams.md +1 -1
- package/docs/api/interfaces/RBACAuditLogResult.md +1 -1
- package/docs/api/interfaces/RBACConfig.md +1 -1
- package/docs/api/interfaces/RBACContext.md +1 -1
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/RBACPageAccessCheckParams.md +1 -1
- package/docs/api/interfaces/RBACPerformanceMetrics.md +1 -1
- package/docs/api/interfaces/RBACPermissionCheckParams.md +1 -1
- package/docs/api/interfaces/RBACPermissionCheckResult.md +1 -1
- package/docs/api/interfaces/RBACPermissionsGetParams.md +1 -1
- package/docs/api/interfaces/RBACPermissionsGetResult.md +1 -1
- package/docs/api/interfaces/RBACResult.md +1 -1
- package/docs/api/interfaces/RBACRoleGrantParams.md +1 -1
- package/docs/api/interfaces/RBACRoleGrantResult.md +1 -1
- package/docs/api/interfaces/RBACRoleRevokeParams.md +1 -1
- package/docs/api/interfaces/RBACRoleRevokeResult.md +1 -1
- package/docs/api/interfaces/RBACRoleValidateParams.md +1 -1
- package/docs/api/interfaces/RBACRoleValidateResult.md +1 -1
- package/docs/api/interfaces/RBACRolesListParams.md +1 -1
- package/docs/api/interfaces/RBACRolesListResult.md +1 -1
- package/docs/api/interfaces/RBACSessionTrackParams.md +1 -1
- package/docs/api/interfaces/RBACSessionTrackResult.md +1 -1
- package/docs/api/interfaces/ResourcePermissions.md +1 -1
- package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
- package/docs/api/interfaces/RoleManagementResult.md +1 -1
- package/docs/api/interfaces/RouteAccessRecord.md +1 -1
- package/docs/api/interfaces/RouteConfig.md +1 -1
- package/docs/api/interfaces/RuntimeComplianceResult.md +1 -1
- package/docs/api/interfaces/SecureDataContextType.md +9 -9
- package/docs/api/interfaces/SecureDataProviderProps.md +8 -8
- package/docs/api/interfaces/SessionRestorationLoaderProps.md +3 -3
- package/docs/api/interfaces/SetupIssue.md +1 -1
- package/docs/api/interfaces/StorageConfig.md +1 -1
- package/docs/api/interfaces/StorageFileInfo.md +1 -1
- package/docs/api/interfaces/StorageFileMetadata.md +1 -1
- package/docs/api/interfaces/StorageListOptions.md +1 -1
- package/docs/api/interfaces/StorageListResult.md +1 -1
- package/docs/api/interfaces/StorageUploadOptions.md +1 -1
- package/docs/api/interfaces/StorageUploadResult.md +1 -1
- package/docs/api/interfaces/StorageUrlOptions.md +1 -1
- package/docs/api/interfaces/StyleImport.md +1 -1
- package/docs/api/interfaces/SwitchProps.md +1 -1
- package/docs/api/interfaces/TabsContentProps.md +1 -1
- package/docs/api/interfaces/TabsListProps.md +1 -1
- package/docs/api/interfaces/TabsProps.md +1 -1
- package/docs/api/interfaces/TabsTriggerProps.md +3 -3
- package/docs/api/interfaces/TextareaProps.md +1 -1
- package/docs/api/interfaces/ToastActionElement.md +4 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +58 -55
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +15 -13
- package/docs/api/interfaces/UseFormDialogOptions.md +1 -1
- package/docs/api/interfaces/UseFormDialogReturn.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +11 -9
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +8 -8
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +6 -6
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +9 -6
- package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
- package/docs/api/interfaces/UsePublicEventReturn.md +8 -5
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +4 -4
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +12 -9
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +10 -7
- package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
- package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +14 -11
- package/docs/api/interfaces/UserMenuProps.md +8 -6
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +575 -634
- package/docs/architecture/database-schema-requirements.md +161 -0
- package/docs/core-concepts/rbac-system.md +3 -3
- package/docs/documentation-index.md +2 -4
- package/docs/getting-started/cursor-rules.md +263 -0
- package/docs/getting-started/installation-guide.md +6 -1
- package/docs/getting-started/quick-start.md +6 -1
- package/docs/migration/DOCUMENTATION_STRUCTURE.md +441 -0
- package/docs/migration/MIGRATION_GUIDE.md +6 -28
- package/docs/migration/README.md +52 -6
- package/docs/migration/V0.5.190_TO_V0.6.1_MIGRATION.md +1153 -0
- package/docs/migration/V0.6.0_REACT_19_MIGRATION.md +227 -0
- package/docs/migration/database-changes-december-2025.md +3 -3
- package/docs/rbac/event-based-apps.md +1 -1
- package/docs/rbac/getting-started.md +1 -1
- package/docs/rbac/quick-start.md +1 -1
- package/docs/standards/README.md +40 -0
- package/docs/troubleshooting/migration.md +4 -4
- package/examples/PublicPages/PublicEventPage.tsx +1 -1
- package/package.json +12 -6
- package/scripts/audit/core/checks/accessibility.cjs +197 -0
- package/scripts/audit/core/checks/api-usage.cjs +191 -0
- package/scripts/audit/core/checks/bundle.cjs +142 -0
- package/scripts/{check-pace-core-compliance.cjs → audit/core/checks/compliance.cjs} +737 -691
- package/scripts/audit/core/checks/config.cjs +54 -0
- package/scripts/audit/core/checks/coverage.cjs +84 -0
- package/scripts/audit/core/checks/dependencies.cjs +454 -0
- package/scripts/audit/core/checks/documentation.cjs +203 -0
- package/scripts/audit/core/checks/environment.cjs +128 -0
- package/scripts/audit/core/checks/error-handling.cjs +299 -0
- package/scripts/audit/core/checks/forms.cjs +172 -0
- package/scripts/audit/core/checks/heuristics.cjs +68 -0
- package/scripts/audit/core/checks/hooks.cjs +334 -0
- package/scripts/audit/core/checks/imports.cjs +244 -0
- package/scripts/audit/core/checks/performance.cjs +325 -0
- package/scripts/audit/core/checks/routes.cjs +117 -0
- package/scripts/audit/core/checks/state.cjs +130 -0
- package/scripts/audit/core/checks/structure.cjs +65 -0
- package/scripts/audit/core/checks/style.cjs +584 -0
- package/scripts/audit/core/checks/testing.cjs +122 -0
- package/scripts/audit/core/checks/typescript.cjs +61 -0
- package/scripts/audit/core/scanner.cjs +199 -0
- package/scripts/audit/core/utils.cjs +137 -0
- package/scripts/audit/index.cjs +223 -0
- package/scripts/audit/reporters/console.cjs +151 -0
- package/scripts/audit/reporters/json.cjs +54 -0
- package/scripts/audit/reporters/markdown.cjs +124 -0
- package/scripts/audit-consuming-app.cjs +86 -0
- package/scripts/build-docs/build-decision.js +240 -0
- package/scripts/build-docs/cache-utils.js +105 -0
- package/scripts/build-docs/content-normalization.js +150 -0
- package/scripts/build-docs/file-utils.js +105 -0
- package/scripts/build-docs/git-utils.js +86 -0
- package/scripts/build-docs/hash-utils.js +116 -0
- package/scripts/build-docs/typedoc-runner.js +220 -0
- package/scripts/build-docs-incremental.js +77 -913
- package/scripts/install-cursor-rules.cjs +236 -0
- package/scripts/utils/command-runner.js +16 -11
- package/scripts/validate-formats.js +61 -56
- package/scripts/validate-master.js +74 -69
- package/scripts/validate-pre-publish.js +70 -65
- package/src/__tests__/helpers/test-providers.tsx +1 -1
- package/src/__tests__/helpers/test-utils.tsx +1 -1
- package/src/__tests__/hooks/usePermissions.test.ts +2 -2
- package/src/components/Alert/Alert.test.tsx +12 -18
- package/src/components/Alert/Alert.tsx +5 -7
- package/src/components/Avatar/Avatar.test.tsx +4 -4
- package/src/components/Badge/Badge.tsx +16 -4
- package/src/components/Button/Button.tsx +27 -4
- package/src/components/Calendar/Calendar.tsx +9 -3
- package/src/components/Card/Card.tsx +4 -0
- package/src/components/Checkbox/Checkbox.test.tsx +12 -12
- package/src/components/Checkbox/Checkbox.tsx +2 -2
- package/src/components/DataTable/DataTable.test.tsx +57 -93
- package/src/components/DataTable/DataTable.tsx +40 -6
- package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +5 -6
- package/src/components/DataTable/__tests__/pagination.modes.test.tsx +29 -7
- package/src/components/DataTable/__tests__/ssr.strict-mode.test.tsx +12 -12
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +2 -3
- package/src/components/DataTable/components/AccessDeniedPage.tsx +17 -26
- package/src/components/DataTable/components/ActionButtons.tsx +10 -7
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +2 -2
- package/src/components/DataTable/components/ColumnFilter.tsx +10 -0
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +12 -0
- package/src/components/DataTable/components/DataTableBody.tsx +8 -0
- package/src/components/DataTable/components/DataTableCore.tsx +200 -561
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +11 -0
- package/src/components/DataTable/components/DataTableLayout.tsx +559 -0
- package/src/components/DataTable/components/DataTableModals.tsx +9 -1
- package/src/components/DataTable/components/DataTableToolbar.tsx +8 -0
- package/src/components/DataTable/components/DraggableColumnHeader.tsx +12 -0
- package/src/components/DataTable/components/EditFields.tsx +307 -0
- package/src/components/DataTable/components/EditableRow.tsx +9 -1
- package/src/components/DataTable/components/EmptyState.tsx +10 -0
- package/src/components/DataTable/components/FilterRow.tsx +12 -0
- package/src/components/DataTable/components/GroupHeader.tsx +12 -0
- package/src/components/DataTable/components/GroupingDropdown.tsx +12 -0
- package/src/components/DataTable/components/ImportModal.tsx +7 -0
- package/src/components/DataTable/components/LoadingState.tsx +6 -0
- package/src/components/DataTable/components/PaginationControls.tsx +16 -1
- package/src/components/DataTable/components/RowComponent.tsx +391 -0
- package/src/components/DataTable/components/UnifiedTableBody.tsx +62 -852
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +16 -4
- package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +4 -2
- package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +23 -23
- package/src/components/DataTable/components/__tests__/EditableRow.test.tsx +11 -11
- package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +36 -36
- package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +27 -27
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +39 -39
- package/src/components/DataTable/components/__tests__/UnifiedTableBody.test.tsx +33 -33
- package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +29 -29
- package/src/components/DataTable/components/cellValueUtils.ts +40 -0
- package/src/components/DataTable/components/hooks/useImportModalFocus.ts +53 -0
- package/src/components/DataTable/components/hooks/usePermissionTracking.ts +126 -0
- package/src/components/DataTable/context/DataTableContext.tsx +50 -0
- package/src/components/DataTable/core/ColumnFactory.ts +31 -0
- package/src/components/DataTable/core/DataTableContext.tsx +32 -1
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +10 -0
- package/src/components/DataTable/hooks/useColumnReordering.ts +14 -2
- package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +10 -0
- package/src/components/DataTable/hooks/useDataTableDataPipeline.ts +16 -0
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +124 -32
- package/src/components/DataTable/hooks/useDataTableState.ts +35 -1
- package/src/components/DataTable/hooks/useEffectiveColumnOrder.ts +12 -0
- package/src/components/DataTable/hooks/useKeyboardNavigation.ts +2 -2
- package/src/components/DataTable/hooks/useServerSideDataEffect.ts +11 -0
- package/src/components/DataTable/hooks/useTableColumns.ts +8 -0
- package/src/components/DataTable/hooks/useTableHandlers.ts +14 -0
- package/src/components/DataTable/styles.ts +6 -6
- package/src/components/DataTable/types.ts +6 -10
- package/src/components/DataTable/utils/a11yUtils.ts +7 -0
- package/src/components/DataTable/utils/debugTools.ts +18 -113
- package/src/components/DataTable/utils/errorHandling.ts +12 -0
- package/src/components/DataTable/utils/exportUtils.ts +9 -0
- package/src/components/DataTable/utils/flexibleImport.ts +12 -48
- package/src/components/DataTable/utils/paginationUtils.ts +8 -0
- package/src/components/DataTable/utils/performanceUtils.ts +5 -1
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +8 -14
- package/src/components/Dialog/Dialog.tsx +8 -7
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +180 -1
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +46 -6
- package/src/components/ErrorBoundary/ErrorBoundaryContext.tsx +129 -0
- package/src/components/ErrorBoundary/index.ts +27 -2
- package/src/components/EventSelector/EventSelector.tsx +4 -1
- package/src/components/FileDisplay/FileDisplay.test.tsx +2 -2
- package/src/components/FileDisplay/FileDisplay.tsx +32 -18
- package/src/components/FileUpload/FileUpload.tsx +22 -2
- package/src/components/Footer/Footer.test.tsx +16 -16
- package/src/components/Footer/Footer.tsx +15 -12
- package/src/components/Form/Form.test.tsx +36 -15
- package/src/components/Form/Form.tsx +31 -26
- package/src/components/Header/Header.tsx +22 -11
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +40 -40
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +1 -1
- package/src/components/Input/Input.test.tsx +2 -2
- package/src/components/Input/Input.tsx +36 -34
- package/src/components/Label/Label.tsx +1 -1
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +4 -4
- package/src/components/LoadingSpinner/LoadingSpinner.tsx +1 -1
- package/src/components/LoginForm/LoginForm.test.tsx +42 -42
- package/src/components/LoginForm/LoginForm.tsx +12 -8
- package/src/components/NavigationMenu/NavigationMenu.tsx +15 -514
- package/src/components/NavigationMenu/types.ts +56 -0
- package/src/components/NavigationMenu/useNavigationFiltering.ts +390 -0
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +3 -0
- package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +1 -1
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +54 -52
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +33 -12
- package/src/components/PaceAppLayout/README.md +1 -1
- package/src/components/PaceAppLayout/test-setup.tsx +1 -2
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +4 -1
- package/src/components/PasswordChange/PasswordChangeForm.test.tsx +33 -33
- package/src/components/PasswordChange/PasswordChangeForm.tsx +10 -1
- package/src/components/Progress/Progress.tsx +1 -1
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +3 -9
- package/src/components/PublicLayout/PublicPageLayout.tsx +3 -6
- package/src/components/PublicLayout/PublicPageProvider.tsx +4 -0
- package/src/components/Select/Select.tsx +95 -438
- package/src/components/Select/context.ts +23 -0
- package/src/components/Select/hooks/useSelectEvents.ts +87 -0
- package/src/components/Select/hooks/useSelectSearch.ts +91 -0
- package/src/components/Select/hooks/useSelectState.ts +104 -0
- package/src/components/Select/index.ts +9 -1
- package/src/components/Select/types.ts +123 -0
- package/src/components/Select/utils/text.ts +26 -0
- package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +5 -6
- package/src/components/Switch/Switch.tsx +4 -4
- package/src/components/Table/Table.tsx +1 -1
- package/src/components/Tabs/Tabs.tsx +1 -1
- package/src/components/Textarea/Textarea.tsx +27 -29
- package/src/components/Toast/Toast.tsx +5 -1
- package/src/components/Tooltip/Tooltip.tsx +3 -3
- package/src/components/UserMenu/UserMenu.test.tsx +24 -11
- package/src/components/UserMenu/UserMenu.tsx +22 -19
- package/src/components/index.ts +2 -2
- package/src/hooks/__tests__/hooks.integration.test.tsx +80 -55
- package/src/hooks/__tests__/index.unit.test.ts +2 -5
- package/src/hooks/__tests__/useStorage.unit.test.ts +36 -36
- package/src/hooks/index.ts +1 -2
- package/src/hooks/public/usePublicEvent.ts +5 -1
- package/src/hooks/public/usePublicEventLogo.ts +5 -1
- package/src/hooks/public/usePublicFileDisplay.ts +4 -0
- package/src/hooks/public/usePublicRouteParams.ts +5 -1
- package/src/hooks/services/useAuth.ts +32 -0
- package/src/hooks/services/useCurrentEvent.ts +6 -0
- package/src/hooks/services/useCurrentOrganisation.ts +6 -0
- package/src/hooks/useDataTableState.ts +8 -18
- package/src/hooks/useDebounce.ts +9 -0
- package/src/hooks/useEventTheme.ts +6 -0
- package/src/hooks/useFileDisplay.ts +4 -0
- package/src/hooks/useFileReference.ts +25 -7
- package/src/hooks/useFileUrl.ts +11 -1
- package/src/hooks/useFocusManagement.ts +16 -2
- package/src/hooks/useFocusTrap.ts +7 -4
- package/src/hooks/useFormDialog.ts +8 -7
- package/src/hooks/useInactivityTracker.ts +4 -1
- package/src/hooks/useKeyboardShortcuts.ts +4 -0
- package/src/hooks/useOrganisationPermissions.ts +4 -0
- package/src/hooks/useOrganisationSecurity.ts +4 -0
- package/src/hooks/usePerformanceMonitor.ts +4 -0
- package/src/hooks/usePermissionCache.ts +8 -1
- package/src/hooks/useQueryCache.ts +12 -1
- package/src/hooks/useSessionRestoration.ts +4 -0
- package/src/hooks/useStorage.ts +4 -0
- package/src/hooks/useToast.ts +3 -3
- package/src/index.ts +2 -1
- package/src/providers/__tests__/OrganisationProvider.test.tsx +115 -49
- package/src/providers/__tests__/ProviderLifecycle.test.tsx +21 -6
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +10 -10
- package/src/providers/services/AuthServiceProvider.tsx +18 -0
- package/src/providers/services/EventServiceProvider.tsx +18 -0
- package/src/providers/services/InactivityServiceProvider.tsx +18 -0
- package/src/providers/services/OrganisationServiceProvider.tsx +18 -0
- package/src/providers/services/UnifiedAuthProvider.tsx +58 -22
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +33 -7
- package/src/rbac/README.md +1 -1
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +26 -26
- package/src/rbac/__tests__/scenarios.user-role.test.tsx +4 -5
- package/src/rbac/adapters.tsx +14 -5
- package/src/rbac/api.ts +100 -67
- package/src/rbac/components/EnhancedNavigationMenu.tsx +1 -1
- package/src/rbac/components/NavigationGuard.tsx +1 -1
- package/src/rbac/components/NavigationProvider.tsx +5 -2
- package/src/rbac/components/PagePermissionGuard.tsx +158 -18
- package/src/rbac/components/PagePermissionProvider.tsx +1 -1
- package/src/rbac/components/PermissionEnforcer.tsx +1 -1
- package/src/rbac/components/RoleBasedRouter.tsx +6 -2
- package/src/rbac/components/SecureDataProvider.test.tsx +84 -49
- package/src/rbac/components/SecureDataProvider.tsx +21 -6
- package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +24 -14
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +7 -0
- package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +14 -6
- package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +15 -4
- package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +148 -24
- package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +81 -15
- package/src/rbac/engine.ts +38 -14
- package/src/rbac/hooks/permissions/index.ts +7 -0
- package/src/rbac/hooks/permissions/useAccessLevel.ts +105 -0
- package/src/rbac/hooks/permissions/useCachedPermissions.ts +79 -0
- package/src/rbac/hooks/permissions/useCan.ts +347 -0
- package/src/rbac/hooks/permissions/useHasAllPermissions.ts +90 -0
- package/src/rbac/hooks/permissions/useHasAnyPermission.ts +90 -0
- package/src/rbac/hooks/permissions/useMultiplePermissions.ts +93 -0
- package/src/rbac/hooks/permissions/usePermissions.ts +253 -0
- package/src/rbac/hooks/useCan.test.ts +71 -64
- package/src/rbac/hooks/usePermissions.ts +14 -995
- package/src/rbac/hooks/useResourcePermissions.test.ts +54 -18
- package/src/rbac/hooks/useResourcePermissions.ts +14 -4
- package/src/rbac/hooks/useSecureSupabase.ts +33 -13
- package/src/rbac/permissions.ts +0 -30
- package/src/rbac/secureClient.ts +212 -61
- package/src/rbac/types.ts +8 -0
- package/src/theming/__tests__/parseEventColours.test.ts +6 -9
- package/src/theming/parseEventColours.ts +5 -19
- package/src/types/vitest-globals.d.ts +51 -26
- package/src/utils/__mocks__/supabaseMock.ts +1 -3
- package/src/utils/__tests__/formatting.unit.test.ts +4 -4
- package/src/utils/__tests__/index.unit.test.ts +2 -2
- package/src/utils/audit/audit.ts +0 -3
- package/src/utils/core/cn.ts +1 -1
- package/src/utils/file-reference/index.ts +53 -1
- package/src/utils/formatting/formatting.ts +8 -18
- package/src/utils/index.ts +0 -1
- package/src/utils/security/secureDataAccess.test.ts +31 -20
- package/src/utils/security/secureDataAccess.ts +4 -3
- package/dist/chunk-6C4YBBJM.js +0 -628
- package/dist/chunk-6C4YBBJM.js.map +0 -1
- package/dist/chunk-7D4SUZUM.js 2.map +0 -1
- package/dist/chunk-7EQTDTTJ.js 2.map +0 -1
- package/dist/chunk-7EQTDTTJ.js.map +0 -1
- package/dist/chunk-7FLMSG37.js 2.map +0 -1
- package/dist/chunk-7FLMSG37.js.map +0 -1
- package/dist/chunk-BC4IJKSL.js.map +0 -1
- package/dist/chunk-E3SPN4VZ.js +0 -12917
- package/dist/chunk-E3SPN4VZ.js.map +0 -1
- package/dist/chunk-E66EQZE6 5.js +0 -37
- package/dist/chunk-E66EQZE6.js 2.map +0 -1
- package/dist/chunk-HWIIPPNI.js.map +0 -1
- package/dist/chunk-I7PSE6JW 5.js +0 -191
- package/dist/chunk-I7PSE6JW.js 2.map +0 -1
- package/dist/chunk-I7PSE6JW.js.map +0 -1
- package/dist/chunk-IIELH4DL.js.map +0 -1
- package/dist/chunk-KNC55RTG.js 5.map +0 -1
- package/dist/chunk-KNC55RTG.js.map +0 -1
- package/dist/chunk-KQCRWDSA.js 5.map +0 -1
- package/dist/chunk-LFNCN2SP.js +0 -412
- package/dist/chunk-LFNCN2SP.js 2.map +0 -1
- package/dist/chunk-LFNCN2SP.js.map +0 -1
- package/dist/chunk-LMC26NLJ 2.js +0 -84
- package/dist/chunk-NOAYCWCX.js +0 -4993
- package/dist/chunk-NOAYCWCX.js.map +0 -1
- package/dist/chunk-QWWZ5CAQ.js 3.map +0 -1
- package/dist/chunk-QWWZ5CAQ.js.map +0 -1
- package/dist/chunk-QXHPKYJV 3.js +0 -113
- package/dist/chunk-R77UEZ4E.js +0 -68
- package/dist/chunk-R77UEZ4E.js.map +0 -1
- package/dist/chunk-SQGMNID3.js.map +0 -1
- package/dist/chunk-VBXEHIUJ.js 6.map +0 -1
- package/dist/chunk-XNXXZ43G.js.map +0 -1
- package/dist/chunk-ZSAAAMVR 6.js +0 -25
- package/dist/components.js 5.map +0 -1
- package/dist/styles/index 2.js +0 -12
- package/dist/styles/index.js 5.map +0 -1
- package/dist/theming/runtime 5.js +0 -19
- package/dist/theming/runtime.js 5.map +0 -1
- package/docs/api/classes/ErrorBoundary.md +0 -144
- package/docs/migration/quick-migration-guide.md +0 -356
- package/docs/migration/service-architecture.md +0 -281
- package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +0 -680
- package/src/hooks/useSecureDataAccess.test.ts +0 -559
- package/src/hooks/useSecureDataAccess.ts +0 -666
- /package/dist/{DataTable-5FU7IESH.js.map → DataTable-TPTKCX4D.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-RGJTDE2C.js.map → UnifiedAuthProvider-CH6Z342H.js.map} +0 -0
- /package/dist/{api-N774RPUA.js.map → api-MVVQZLJI.js.map} +0 -0
- /package/docs/migration/{organisation-context-timing-fix.md → V0.3.44_organisation-context-timing-fix.md} +0 -0
- /package/docs/migration/{rbac-migration.md → V0.4.0_rbac-migration.md} +0 -0
- /package/docs/migration/{person-scoped-profiles-migration-guide.md → V0.5.190_person-scoped-profiles-migration-guide.md} +0 -0
- /package/examples/{rbac → RBAC}/CompleteRBACExample.tsx +0 -0
- /package/examples/{rbac → RBAC}/EventBasedApp.tsx +0 -0
- /package/examples/{rbac → RBAC}/PermissionExample.tsx +0 -0
- /package/examples/{rbac → RBAC}/index.ts +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Cursor Rules Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to pace-core cursor rules will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **08-markup-quality.mdc** - Enforces clean markup standards, semantic HTML usage, and pace-core component patterns
|
|
12
|
+
|
|
13
|
+
## [1.1.0] - 2025-01-28
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **08-markup-quality.mdc** - Comprehensive guide for markup quality, semantic HTML, and pace-core component usage patterns
|
|
17
|
+
- Enforces pace-core component usage over custom solutions
|
|
18
|
+
- Prohibits `<div>` elements (except first child of `<body>` in `index.html`)
|
|
19
|
+
- Requires semantic HTML elements (`<main>`, `<section>`, `<article>`, etc.)
|
|
20
|
+
- Prohibits typography styling (relies on pace-core core.css)
|
|
21
|
+
- Requires React Fragments for grouping without semantic meaning
|
|
22
|
+
- Enforces minimal element nesting and clear semantic purpose
|
|
23
|
+
- Includes decision tree and comprehensive checklist
|
|
24
|
+
|
|
25
|
+
## [1.0.0] - 2025-01-15
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- Initial release of cursor rules system
|
|
29
|
+
- 8 comprehensive rule files covering compliance, standards, structure, SOLID, testing, bug reports, code quality, and tech stack
|
|
30
|
+
- Installation script with safety guards
|
|
31
|
+
- Comprehensive audit tool with Phase 1 (deterministic) and Phase 2 (heuristic) checks
|
|
32
|
+
- Markdown report generation with timestamps
|
|
33
|
+
|
|
34
|
+
## [1.0.0] - 2025-01-15
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
- **00-pace-core-compliance.mdc** - Enforces pace-core usage patterns
|
|
38
|
+
- **01-standards-compliance.mdc** - Maps to all pace-core standards
|
|
39
|
+
- **02-project-structure.mdc** - Defines standard folder structure
|
|
40
|
+
- **03-solid-principles.mdc** - Enforces SOLID architecture principles
|
|
41
|
+
- **04-testing-standards.mdc** - Enforces testing framework consistency
|
|
42
|
+
- **05-bug-reports-and-features.mdc** - Templates for bug reports and feature requests
|
|
43
|
+
- **06-code-quality.mdc** - Enforces code quality standards
|
|
44
|
+
- **07-tech-stack-compliance.mdc** - Enforces tech stack versions and patterns
|
|
45
|
+
|
|
46
|
+
### Features
|
|
47
|
+
- Opt-in installation script (not automatic postinstall)
|
|
48
|
+
- Safety guards (environment variable, git check)
|
|
49
|
+
- Version tracking in rule files
|
|
50
|
+
- Rule numbering system (pace-core: 00-09, apps: 50+)
|
|
51
|
+
- Targeted globs for efficient rule application
|
|
52
|
+
- MUST/SHOULD/MAY semantics for clear guidance
|
|
53
|
+
- Comprehensive audit tool with markdown reports
|
|
54
|
+
- Phase-based audit approach (deterministic vs heuristic)
|
|
55
|
+
|
|
56
|
+
### Documentation
|
|
57
|
+
- README.md with installation and usage guide
|
|
58
|
+
- Getting started guide in docs
|
|
59
|
+
- Updated standards README with cursor rules section
|
|
60
|
+
|
|
61
|
+
## Migration Guide
|
|
62
|
+
|
|
63
|
+
### From No Rules to Cursor Rules
|
|
64
|
+
|
|
65
|
+
1. Install pace-core (if not already installed):
|
|
66
|
+
```bash
|
|
67
|
+
npm install @jmruthers/pace-core
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
2. Install cursor rules:
|
|
71
|
+
```bash
|
|
72
|
+
node node_modules/@jmruthers/pace-core/scripts/install-cursor-rules.cjs
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
3. Restart Cursor to load rules
|
|
76
|
+
|
|
77
|
+
4. Run audit to check compliance:
|
|
78
|
+
```bash
|
|
79
|
+
node node_modules/@jmruthers/pace-core/scripts/audit-consuming-app.cjs
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Updating Rules
|
|
83
|
+
|
|
84
|
+
When pace-core is updated:
|
|
85
|
+
|
|
86
|
+
1. Update pace-core:
|
|
87
|
+
```bash
|
|
88
|
+
npm update @jmruthers/pace-core
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
2. Update rules:
|
|
92
|
+
```bash
|
|
93
|
+
npm run setup:cursor-rules
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
3. Review any changes in rule files
|
|
97
|
+
|
|
98
|
+
### Custom Rules
|
|
99
|
+
|
|
100
|
+
If you have custom rules, number them starting at 50:
|
|
101
|
+
- `50-my-custom-rule.mdc`
|
|
102
|
+
- `51-another-rule.mdc`
|
|
103
|
+
- etc.
|
|
104
|
+
|
|
105
|
+
This ensures pace-core rules (00-09) load first.
|
|
106
|
+
|
|
107
|
+
## Version History
|
|
108
|
+
|
|
109
|
+
- **1.1.0** (2025-01-28) - Added markup quality rule (08-markup-quality.mdc)
|
|
110
|
+
- **1.0.0** (2025-01-15) - Initial release
|
|
111
|
+
|
|
112
|
+
## Future Enhancements
|
|
113
|
+
|
|
114
|
+
Potential future enhancements:
|
|
115
|
+
- CLI for rule validation
|
|
116
|
+
- GitHub Action template for PR audits
|
|
117
|
+
- Rule update notification system
|
|
118
|
+
- Interactive rule configuration
|
|
119
|
+
- Rule effectiveness metrics
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# pace-core Cursor Rules
|
|
2
|
+
|
|
3
|
+
This directory contains Cursor rules that ensure consuming apps maintain quality, consistency, and compliance with pace-core standards.
|
|
4
|
+
|
|
5
|
+
## What are Cursor Rules?
|
|
6
|
+
|
|
7
|
+
Cursor rules are `.mdc` (Markdown Cursor) files that guide AI assistants (like Cursor) to follow specific patterns and standards when writing code. These rules are automatically loaded by Cursor when present in `.cursor/rules/` directory.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
### Automatic Installation (Recommended)
|
|
12
|
+
|
|
13
|
+
Run the installation script from your consuming app root:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
node node_modules/@jmruthers/pace-core/scripts/install-cursor-rules.cjs
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Or add to your `package.json`:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"scripts": {
|
|
24
|
+
"setup:cursor-rules": "node node_modules/@jmruthers/pace-core/scripts/install-cursor-rules.cjs"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Then run:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm run setup:cursor-rules
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Manual Installation
|
|
36
|
+
|
|
37
|
+
Copy all `.mdc` files from `node_modules/@jmruthers/pace-core/cursor-rules/` to your `.cursor/rules/` directory.
|
|
38
|
+
|
|
39
|
+
## Rule Files
|
|
40
|
+
|
|
41
|
+
The rules are numbered for ordering (00-08):
|
|
42
|
+
|
|
43
|
+
- **00-pace-core-compliance.mdc** - Enforce pace-core usage patterns
|
|
44
|
+
- **01-standards-compliance.mdc** - Enforce all pace-core standards
|
|
45
|
+
- **02-project-structure.mdc** - Define standard folder structure
|
|
46
|
+
- **03-solid-principles.mdc** - Enforce SOLID architecture principles
|
|
47
|
+
- **04-testing-standards.mdc** - Enforce testing framework consistency
|
|
48
|
+
- **05-bug-reports-and-features.mdc** - Templates for bug reports and feature requests (guidance-only)
|
|
49
|
+
- **06-code-quality.mdc** - Enforce code quality standards
|
|
50
|
+
- **07-tech-stack-compliance.mdc** - Enforce tech stack versions and patterns
|
|
51
|
+
- **08-markup-quality.mdc** - Enforce clean markup standards, semantic HTML usage, and pace-core component patterns
|
|
52
|
+
|
|
53
|
+
## Rule Numbering System
|
|
54
|
+
|
|
55
|
+
- **pace-core rules**: `00-09` (reserved for pace-core)
|
|
56
|
+
- **Your app rules**: `50+` (create your own rules starting at 50)
|
|
57
|
+
|
|
58
|
+
This ensures pace-core rules load first, and your custom rules load after.
|
|
59
|
+
|
|
60
|
+
## Customization
|
|
61
|
+
|
|
62
|
+
### Adding Your Own Rules
|
|
63
|
+
|
|
64
|
+
Create your own rules in `.cursor/rules/` with numbers starting at `50`:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
.cursor/rules/
|
|
68
|
+
├── 00-pace-core-compliance.mdc # pace-core rule
|
|
69
|
+
├── 01-standards-compliance.mdc # pace-core rule
|
|
70
|
+
├── ...
|
|
71
|
+
├── 50-my-custom-rule.mdc # Your custom rule
|
|
72
|
+
└── 51-another-custom-rule.mdc # Your custom rule
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Updating Rules
|
|
76
|
+
|
|
77
|
+
When pace-core is updated, run the installation script again. The script will:
|
|
78
|
+
- **Automatically update** pace-core rules (00-09) if they've changed (version or content differs)
|
|
79
|
+
- Preserve your custom rules (50+)
|
|
80
|
+
- Skip files that are already up to date
|
|
81
|
+
|
|
82
|
+
### Force Update
|
|
83
|
+
|
|
84
|
+
To force update all rules (even when versions match):
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
node node_modules/@jmruthers/pace-core/scripts/install-cursor-rules.cjs --force
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Note**: Normally, pace-core rules (00-09) are automatically updated when they change. The `--force` flag forces an update even when versions match (useful if content changed but version metadata wasn't updated).
|
|
91
|
+
|
|
92
|
+
## How Cursor Uses Rules
|
|
93
|
+
|
|
94
|
+
Cursor automatically loads all `.mdc` files from `.cursor/rules/` when:
|
|
95
|
+
- You open a file that matches the rule's `globs` pattern
|
|
96
|
+
- You ask Cursor to write or modify code
|
|
97
|
+
- Cursor needs context for code generation
|
|
98
|
+
|
|
99
|
+
Rules with `alwaysApply: true` are always considered, while rules with `alwaysApply: false` are only referenced when relevant.
|
|
100
|
+
|
|
101
|
+
## Explicitly Referencing Rules
|
|
102
|
+
|
|
103
|
+
When working with Cursor, you can explicitly reference rules:
|
|
104
|
+
|
|
105
|
+
> "Use pace-core components and follow rules 00–04."
|
|
106
|
+
|
|
107
|
+
This helps Cursor focus on specific rule sets.
|
|
108
|
+
|
|
109
|
+
## Rule Format
|
|
110
|
+
|
|
111
|
+
Each rule file follows this format:
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
---
|
|
115
|
+
description: Brief description
|
|
116
|
+
globs: ["targeted/path/**/*.{ts,tsx}"] # Files this rule applies to
|
|
117
|
+
alwaysApply: true # or false
|
|
118
|
+
paceCoreVersion: "0.5.x" # pace-core version
|
|
119
|
+
rulesVersion: "2025-01-15" # Rule update date
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
# Rule Title
|
|
123
|
+
|
|
124
|
+
Content with examples and guidelines.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Safety Guards
|
|
128
|
+
|
|
129
|
+
The installation script includes safety guards:
|
|
130
|
+
|
|
131
|
+
- **Environment variable**: Set `PACE_CURSOR_RULES_DISABLED=1` to skip installation
|
|
132
|
+
- **Git check**: Skips if no `.git` folder exists (CI/safety)
|
|
133
|
+
- **Auto-update**: Automatically updates pace-core rules (00-09) when they change
|
|
134
|
+
- **Protection**: Never overwrites custom app rules (50+)
|
|
135
|
+
|
|
136
|
+
## Monorepo Support
|
|
137
|
+
|
|
138
|
+
For monorepos, run the installation script from each app's root directory. Each app maintains its own `.cursor/rules/` directory.
|
|
139
|
+
|
|
140
|
+
## Troubleshooting
|
|
141
|
+
|
|
142
|
+
### Rules Not Loading
|
|
143
|
+
|
|
144
|
+
1. Verify rules are in `.cursor/rules/` directory
|
|
145
|
+
2. Check file extensions are `.mdc`
|
|
146
|
+
3. Restart Cursor if rules were just installed
|
|
147
|
+
4. Check rule frontmatter is valid YAML
|
|
148
|
+
|
|
149
|
+
### Rules Conflicting
|
|
150
|
+
|
|
151
|
+
1. Check rule numbering (pace-core: 00-09, yours: 50+)
|
|
152
|
+
2. Verify `globs` patterns don't overlap unnecessarily
|
|
153
|
+
3. Review rule priorities in frontmatter
|
|
154
|
+
|
|
155
|
+
### Installation Fails
|
|
156
|
+
|
|
157
|
+
1. Check you're in the app root directory
|
|
158
|
+
2. Verify `node_modules/@jmruthers/pace-core/` exists
|
|
159
|
+
3. Check file permissions
|
|
160
|
+
4. Try with `--force` flag if needed
|
|
161
|
+
|
|
162
|
+
## Audit Tool
|
|
163
|
+
|
|
164
|
+
Run the audit tool to check compliance:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
node node_modules/@jmruthers/pace-core/scripts/audit-consuming-app.cjs
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
This generates a timestamped markdown report in `audit/` directory.
|
|
171
|
+
|
|
172
|
+
## Version Tracking
|
|
173
|
+
|
|
174
|
+
Each rule file includes version metadata:
|
|
175
|
+
- `paceCoreVersion`: pace-core version these rules target
|
|
176
|
+
- `rulesVersion`: Date when rules were last updated
|
|
177
|
+
|
|
178
|
+
Check these to see if rules need updating.
|
|
179
|
+
|
|
180
|
+
## Related Documentation
|
|
181
|
+
|
|
182
|
+
- [pace-core Standards](../docs/standards/README.md)
|
|
183
|
+
- [Getting Started Guide](../docs/getting-started/cursor-rules.md)
|
|
184
|
+
- [pace-core Exports](../docs/api-reference/README.md)
|
|
185
|
+
|
|
186
|
+
## Support
|
|
187
|
+
|
|
188
|
+
For issues with cursor rules:
|
|
189
|
+
1. Check this README
|
|
190
|
+
2. Review rule files for guidance
|
|
191
|
+
3. File an issue in pace-core repository
|
|
192
|
+
4. Check pace-core documentation
|
|
@@ -141,10 +141,21 @@ declare class EventService extends BaseService implements IEventService {
|
|
|
141
141
|
getNextEventByDate(events?: Event[]): Event | null;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
+
/**
|
|
145
|
+
* Event service context type.
|
|
146
|
+
* Provides event service instance to React components.
|
|
147
|
+
*/
|
|
144
148
|
interface EventServiceContextType {
|
|
145
149
|
eventService: EventService;
|
|
146
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Context for EventService.
|
|
153
|
+
* Provides event service instance to React components.
|
|
154
|
+
*/
|
|
147
155
|
declare const EventServiceContext: React__default.Context<EventServiceContextType | null>;
|
|
156
|
+
/**
|
|
157
|
+
* Props for the EventServiceProvider component.
|
|
158
|
+
*/
|
|
148
159
|
interface EventServiceProviderProps {
|
|
149
160
|
children: React__default.ReactNode;
|
|
150
161
|
supabaseClient: SupabaseClient;
|
|
@@ -154,6 +165,13 @@ interface EventServiceProviderProps {
|
|
|
154
165
|
selectedOrganisation: Organisation | null;
|
|
155
166
|
setSelectedEventId: (eventId: string | null) => void;
|
|
156
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* React provider for EventService.
|
|
170
|
+
* Provides event service instance to React components.
|
|
171
|
+
*
|
|
172
|
+
* @param props - Event service provider configuration
|
|
173
|
+
* @returns The event service provider
|
|
174
|
+
*/
|
|
157
175
|
declare function EventServiceProvider({ children, supabaseClient, user, session, appName, selectedOrganisation, setSelectedEventId }: EventServiceProviderProps): react_jsx_runtime.JSX.Element;
|
|
158
176
|
|
|
159
177
|
/**
|
|
@@ -246,16 +264,34 @@ declare class OrganisationService extends BaseService implements IOrganisationSe
|
|
|
246
264
|
private clearAllCachedData;
|
|
247
265
|
}
|
|
248
266
|
|
|
267
|
+
/**
|
|
268
|
+
* Organisation service context type.
|
|
269
|
+
* Provides organisation service instance to React components.
|
|
270
|
+
*/
|
|
249
271
|
interface OrganisationServiceContextType {
|
|
250
272
|
organisationService: OrganisationService;
|
|
251
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Context for OrganisationService.
|
|
276
|
+
* Provides organisation service instance to React components.
|
|
277
|
+
*/
|
|
252
278
|
declare const OrganisationServiceContext: React__default.Context<OrganisationServiceContextType | null>;
|
|
279
|
+
/**
|
|
280
|
+
* Props for the OrganisationServiceProvider component.
|
|
281
|
+
*/
|
|
253
282
|
interface OrganisationServiceProviderProps {
|
|
254
283
|
children: React__default.ReactNode;
|
|
255
284
|
supabaseClient: SupabaseClient;
|
|
256
285
|
user: User | null;
|
|
257
286
|
session: Session | null;
|
|
258
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* React provider for OrganisationService.
|
|
290
|
+
* Provides organisation service instance to React components.
|
|
291
|
+
*
|
|
292
|
+
* @param props - Organisation service provider configuration
|
|
293
|
+
* @returns The organisation service provider
|
|
294
|
+
*/
|
|
259
295
|
declare function OrganisationServiceProvider({ children, supabaseClient, user, session }: OrganisationServiceProviderProps): react_jsx_runtime.JSX.Element;
|
|
260
296
|
|
|
261
297
|
/**
|
|
@@ -343,10 +379,21 @@ declare class InactivityService extends BaseService implements IInactivityServic
|
|
|
343
379
|
private setupEventHandlers;
|
|
344
380
|
}
|
|
345
381
|
|
|
382
|
+
/**
|
|
383
|
+
* Inactivity service context type.
|
|
384
|
+
* Provides inactivity service instance to React components.
|
|
385
|
+
*/
|
|
346
386
|
interface InactivityServiceContextType {
|
|
347
387
|
inactivityService: InactivityService;
|
|
348
388
|
}
|
|
389
|
+
/**
|
|
390
|
+
* Context for InactivityService.
|
|
391
|
+
* Provides inactivity service instance to React components.
|
|
392
|
+
*/
|
|
349
393
|
declare const InactivityServiceContext: React__default.Context<InactivityServiceContextType | null>;
|
|
394
|
+
/**
|
|
395
|
+
* Props for the InactivityServiceProvider component.
|
|
396
|
+
*/
|
|
350
397
|
interface InactivityServiceProviderProps {
|
|
351
398
|
children: React__default.ReactNode;
|
|
352
399
|
supabaseClient: SupabaseClient;
|
|
@@ -356,6 +403,13 @@ interface InactivityServiceProviderProps {
|
|
|
356
403
|
warnBeforeMs: number;
|
|
357
404
|
onIdleLogout: (reason: 'inactivity') => void;
|
|
358
405
|
}
|
|
406
|
+
/**
|
|
407
|
+
* React provider for InactivityService.
|
|
408
|
+
* Provides inactivity service instance to React components.
|
|
409
|
+
*
|
|
410
|
+
* @param props - Inactivity service provider configuration
|
|
411
|
+
* @returns The inactivity service provider
|
|
412
|
+
*/
|
|
359
413
|
declare function InactivityServiceProvider({ children, supabaseClient, user, session, idleTimeoutMs, // REQUIRED: No default - must be explicitly provided
|
|
360
414
|
warnBeforeMs, // REQUIRED: No default - must be explicitly provided
|
|
361
415
|
onIdleLogout }: InactivityServiceProviderProps): react_jsx_runtime.JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { d as DataRecord, D as DataTableColumn, e as DataTableRBACConfig, f as DataTableFeatureConfig, H as HierarchicalConfig, g as PerformanceConfig, S as ServerSideConfig, h as PaginationMode, C as ChunkingConfig, i as SearchIndexConfig, j as ExportOptions, G as GetRowId, E as EmptyStateConfig, c as AggregateConfig, a as DataTableAction } from './types-
|
|
2
|
+
import { d as DataRecord, D as DataTableColumn, e as DataTableRBACConfig, f as DataTableFeatureConfig, H as HierarchicalConfig, g as PerformanceConfig, S as ServerSideConfig, h as PaginationMode, C as ChunkingConfig, i as SearchIndexConfig, j as ExportOptions, G as GetRowId, E as EmptyStateConfig, c as AggregateConfig, a as DataTableAction } from './types-CkbwOr4Y.js';
|
|
3
3
|
import React__default from 'react';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -101,7 +101,7 @@ interface DataTableProps<TData extends DataRecord> {
|
|
|
101
101
|
/** Whether the table is in a loading state */
|
|
102
102
|
isLoading?: boolean;
|
|
103
103
|
/** Custom component to display when table is empty */
|
|
104
|
-
emptyState?: EmptyStateConfig | React__default.ReactElement
|
|
104
|
+
emptyState?: EmptyStateConfig | React__default.ReactElement<any>;
|
|
105
105
|
/** Array of aggregation functions for grouped data */
|
|
106
106
|
aggregates?: AggregateConfig[];
|
|
107
107
|
/** Import modal configuration */
|
|
@@ -129,6 +129,38 @@ interface DataTableProps<TData extends DataRecord> {
|
|
|
129
129
|
*
|
|
130
130
|
* Features are configured through the unified `features` prop for maximum flexibility.
|
|
131
131
|
*/
|
|
132
|
+
/**
|
|
133
|
+
* Enhanced DataTable component with performance optimizations and comprehensive features.
|
|
134
|
+
*
|
|
135
|
+
* This is the main entry point for the DataTable component. It wraps DataTableCore
|
|
136
|
+
* and provides feature normalization and validation.
|
|
137
|
+
*
|
|
138
|
+
* @template TData - The type of data records in the table
|
|
139
|
+
* @param props - DataTable configuration including data, columns, features, and RBAC
|
|
140
|
+
* @returns The rendered DataTable component
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```tsx
|
|
144
|
+
* <DataTable
|
|
145
|
+
* data={users}
|
|
146
|
+
* columns={userColumns}
|
|
147
|
+
* rbac={{ pageId: 'user-management' }}
|
|
148
|
+
* features={{
|
|
149
|
+
* search: true,
|
|
150
|
+
* pagination: true,
|
|
151
|
+
* sorting: true
|
|
152
|
+
* }}
|
|
153
|
+
* />
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
/**
|
|
157
|
+
* Comprehensive, feature-rich data table component built on top of TanStack Table.
|
|
158
|
+
* Provides advanced data management capabilities with a clean, accessible interface.
|
|
159
|
+
*
|
|
160
|
+
* @template TData - The type of data records in the table
|
|
161
|
+
* @param props - DataTable configuration and props
|
|
162
|
+
* @returns The rendered DataTable component
|
|
163
|
+
*/
|
|
132
164
|
declare function DataTable<TData extends DataRecord>(props: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
|
|
133
165
|
|
|
134
166
|
export { DataTable as D, type DataTableProps as a };
|
|
@@ -60,8 +60,8 @@ import {
|
|
|
60
60
|
sum,
|
|
61
61
|
validateHierarchicalData,
|
|
62
62
|
validatePaginationConfig
|
|
63
|
-
} from "./chunk-
|
|
64
|
-
import "./chunk-
|
|
63
|
+
} from "./chunk-3XC4CPTD.js";
|
|
64
|
+
import "./chunk-XWQCNGTQ.js";
|
|
65
65
|
import {
|
|
66
66
|
CircuitBreaker,
|
|
67
67
|
DEFAULT_FALLBACK_CONFIG,
|
|
@@ -79,15 +79,16 @@ import {
|
|
|
79
79
|
safeExecute,
|
|
80
80
|
throttle,
|
|
81
81
|
useDataTablePerformance
|
|
82
|
-
} from "./chunk-
|
|
83
|
-
import "./chunk-
|
|
82
|
+
} from "./chunk-6SOIHG6Z.js";
|
|
83
|
+
import "./chunk-MMZ7JXPU.js";
|
|
84
84
|
import "./chunk-KQCRWDSA.js";
|
|
85
|
-
import "./chunk-
|
|
86
|
-
import "./chunk-
|
|
85
|
+
import "./chunk-EHMR7VYL.js";
|
|
86
|
+
import "./chunk-24UVZUZG.js";
|
|
87
87
|
import "./chunk-63FOKYGO.js";
|
|
88
88
|
import "./chunk-QXHPKYJV.js";
|
|
89
|
-
import "./chunk-
|
|
90
|
-
import "./chunk-
|
|
89
|
+
import "./chunk-M43Y4SSO.js";
|
|
90
|
+
import "./chunk-F2IMUDXZ.js";
|
|
91
|
+
import "./chunk-FMUCXFII.js";
|
|
91
92
|
import "./chunk-VBXEHIUJ.js";
|
|
92
93
|
import "./chunk-PWLANIRT.js";
|
|
93
94
|
import "./chunk-7D4SUZUM.js";
|
|
@@ -170,4 +171,4 @@ export {
|
|
|
170
171
|
validateHierarchicalData,
|
|
171
172
|
validatePaginationConfig
|
|
172
173
|
};
|
|
173
|
-
//# sourceMappingURL=DataTable-
|
|
174
|
+
//# sourceMappingURL=DataTable-TPTKCX4D.js.map
|