@jmruthers/pace-core 0.6.1 → 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 +43 -10
- package/cursor-rules/00-pace-core-compliance.mdc +18 -91
- package/cursor-rules/01-standards-compliance.mdc +16 -47
- package/cursor-rules/02-project-structure.mdc +4 -4
- package/cursor-rules/03-solid-principles.mdc +45 -164
- package/cursor-rules/04-testing-standards.mdc +22 -69
- package/cursor-rules/05-bug-reports-and-features.mdc +2 -2
- package/cursor-rules/06-code-quality.mdc +42 -125
- package/cursor-rules/07-tech-stack-compliance.mdc +33 -128
- package/cursor-rules/08-markup-quality.mdc +452 -0
- package/cursor-rules/CHANGELOG.md +18 -0
- package/cursor-rules/README.md +2 -1
- package/dist/{AuthService-DjnJHDtC.d.ts → AuthService-BPvc3Ka0.d.ts} +54 -0
- package/dist/{DataTable-CH1U5Tpy.d.ts → DataTable-BMRU8a1j.d.ts} +33 -1
- package/dist/{DataTable-DQ7RSOHE.js → DataTable-TPTKCX4D.js} +10 -9
- package/dist/{PublicPageProvider-ce4xlHYA.d.ts → PublicPageProvider-DC6kCaqf.d.ts} +356 -111
- package/dist/{UnifiedAuthProvider-ATAP5UTR.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-4N5C5XZU.js → chunk-2UOI2FG5.js} +4 -4
- package/dist/chunk-2UOI2FG5.js.map +1 -0
- package/dist/{chunk-T33XF5ZC.js → chunk-3XC4CPTD.js} +4317 -3963
- package/dist/chunk-3XC4CPTD.js.map +1 -0
- package/dist/{chunk-4ZC4GX36.js → chunk-6J4GEEJR.js} +172 -45
- package/dist/chunk-6J4GEEJR.js.map +1 -0
- package/dist/{chunk-3QRJFVBR.js → chunk-6SOIHG6Z.js} +1 -1
- package/dist/chunk-6SOIHG6Z.js.map +1 -0
- package/dist/{chunk-BYFSK72L.js → chunk-EHMR7VYL.js} +4 -4
- 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-LXQLPRQ2.js → chunk-FFQEQTNW.js} +6 -8
- 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-SQGMNID3.js → chunk-L4OXEN46.js} +4 -5
- package/dist/chunk-L4OXEN46.js.map +1 -0
- package/dist/{chunk-R77UEZ4E.js → chunk-M43Y4SSO.js} +1 -1
- package/dist/chunk-M43Y4SSO.js.map +1 -0
- package/dist/{chunk-3XTALGJF.js → chunk-MMZ7JXPU.js} +60 -223
- package/dist/chunk-MMZ7JXPU.js.map +1 -0
- package/dist/{chunk-GLK6VM3F.js → chunk-NECFR5MM.js} +254 -170
- package/dist/chunk-NECFR5MM.js.map +1 -0
- package/dist/{chunk-JBKQ3SAO.js → chunk-SFZUDBL5.js} +40 -4
- package/dist/chunk-SFZUDBL5.js.map +1 -0
- package/dist/{chunk-XM25TVIE.js → chunk-XWQCNGTQ.js} +724 -363
- package/dist/chunk-XWQCNGTQ.js.map +1 -0
- package/dist/components.d.ts +5 -5
- package/dist/components.js +14 -11
- 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 +55 -122
- package/dist/hooks.js +8 -12
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +60 -13
- package/dist/index.js +19 -19
- 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 +145 -114
- 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-BJAlWfuJ.d.ts → usePublicRouteParams-1oMokgLF.d.ts} +31 -1
- package/dist/utils.d.ts +4 -5
- package/dist/utils.js +14 -14
- 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 +2 -1
- package/docs/migration/DOCUMENTATION_STRUCTURE.md +441 -0
- package/docs/migration/MIGRATION_GUIDE.md +2 -24
- package/docs/migration/README.md +52 -6
- package/docs/migration/V0.5.190_TO_V0.6.1_MIGRATION.md +1153 -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 +1 -0
- package/package.json +2 -1
- 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} +714 -687
- 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 +61 -936
- 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/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__/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 +14 -0
- package/src/components/Button/Button.tsx +22 -0
- package/src/components/Calendar/Calendar.tsx +8 -2
- 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.tsx +38 -4
- package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +5 -6
- package/src/components/DataTable/__tests__/pagination.modes.test.tsx +18 -4
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +2 -3
- package/src/components/DataTable/components/AccessDeniedPage.tsx +16 -25
- package/src/components/DataTable/components/ActionButtons.tsx +10 -7
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +1 -1
- 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 +196 -554
- 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 +8 -0
- 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 +8 -0
- 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 +61 -849
- 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/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 +12 -0
- 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/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/Dialog/Dialog.tsx +2 -2
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +180 -1
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +45 -5
- package/src/components/ErrorBoundary/ErrorBoundaryContext.tsx +129 -0
- package/src/components/ErrorBoundary/index.ts +27 -2
- package/src/components/EventSelector/EventSelector.tsx +3 -0
- 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 +14 -11
- package/src/components/Form/Form.tsx +1 -0
- package/src/components/Header/Header.tsx +21 -10
- package/src/components/Input/Input.test.tsx +2 -2
- package/src/components/Input/Input.tsx +8 -4
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +4 -4
- package/src/components/LoginForm/LoginForm.tsx +4 -0
- package/src/components/NavigationMenu/NavigationMenu.tsx +14 -513
- 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.test.tsx +4 -2
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +32 -11
- package/src/components/PaceAppLayout/test-setup.tsx +1 -2
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +3 -0
- package/src/components/PasswordChange/PasswordChangeForm.tsx +9 -0
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +3 -9
- package/src/components/PublicLayout/PublicPageLayout.tsx +2 -5
- package/src/components/PublicLayout/PublicPageProvider.tsx +4 -0
- package/src/components/Select/Select.tsx +80 -434
- 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 +4 -5
- package/src/components/Switch/Switch.tsx +4 -4
- package/src/components/Tabs/Tabs.tsx +1 -1
- package/src/components/Toast/Toast.tsx +4 -0
- package/src/components/Tooltip/Tooltip.tsx +2 -2
- package/src/components/UserMenu/UserMenu.test.tsx +24 -11
- package/src/components/UserMenu/UserMenu.tsx +21 -18
- package/src/components/index.ts +2 -2
- package/src/hooks/__tests__/index.unit.test.ts +2 -5
- package/src/hooks/index.ts +1 -2
- package/src/hooks/public/usePublicEvent.ts +4 -0
- package/src/hooks/public/usePublicEventLogo.ts +4 -0
- package/src/hooks/public/usePublicFileDisplay.ts +4 -0
- package/src/hooks/public/usePublicRouteParams.ts +4 -0
- 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/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 +14 -0
- package/src/hooks/useFocusTrap.ts +3 -0
- package/src/hooks/useInactivityTracker.ts +3 -0
- 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 +7 -0
- 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 +1 -1
- package/src/index.ts +2 -1
- package/src/providers/__tests__/OrganisationProvider.test.tsx +92 -70
- 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 +36 -0
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +29 -13
- package/src/rbac/README.md +1 -1
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +2 -2
- 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/NavigationProvider.tsx +4 -1
- package/src/rbac/components/PagePermissionGuard.tsx +157 -17
- package/src/rbac/components/RoleBasedRouter.tsx +5 -1
- package/src/rbac/components/SecureDataProvider.test.tsx +84 -49
- package/src/rbac/components/SecureDataProvider.tsx +20 -5
- 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 +200 -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/dist/chunk-3QRJFVBR.js.map +0 -1
- package/dist/chunk-3XTALGJF.js.map +0 -1
- package/dist/chunk-4N5C5XZU.js.map +0 -1
- package/dist/chunk-4ZC4GX36.js.map +0 -1
- package/dist/chunk-BYFSK72L.js.map +0 -1
- package/dist/chunk-EXUD6RNJ.js +0 -451
- package/dist/chunk-EXUD6RNJ.js.map +0 -1
- package/dist/chunk-GLK6VM3F.js.map +0 -1
- package/dist/chunk-I7PSE6JW.js.map +0 -1
- package/dist/chunk-JBKQ3SAO.js.map +0 -1
- package/dist/chunk-KNC55RTG.js.map +0 -1
- package/dist/chunk-LXQLPRQ2.js.map +0 -1
- package/dist/chunk-R77UEZ4E.js.map +0 -1
- package/dist/chunk-SQGMNID3.js.map +0 -1
- package/dist/chunk-T33XF5ZC.js.map +0 -1
- package/dist/chunk-XM25TVIE.js.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 -681
- /package/dist/{DataTable-DQ7RSOHE.js.map → DataTable-TPTKCX4D.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-ATAP5UTR.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/docs/migration/{REACT_19_MIGRATION.md → V0.6.0_REACT_19_MIGRATION.md} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
|
-
import React__default, {
|
|
2
|
+
import React__default, { ReactNode, Component } from 'react';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
-
import { P as ParsedAddress, A as AutocompleteOptions } from './types-
|
|
4
|
+
import { P as ParsedAddress, A as AutocompleteOptions } from './types-CkbwOr4Y.js';
|
|
5
5
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
6
6
|
import { F as FileCategory, e as FileUploadResult, U as UploadProgress, c as FileUploadOptions, a as FileReference } from './file-reference-BavO2eQj.js';
|
|
7
7
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
@@ -14,9 +14,19 @@ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
|
14
14
|
import { FieldValues, DefaultValues, SubmitHandler, SubmitErrorHandler, UseFormReturn, FieldPath, ControllerRenderProps, ControllerFieldState, UseFormStateReturn } from 'react-hook-form';
|
|
15
15
|
import { z } from 'zod';
|
|
16
16
|
import { User, SupabaseClient, createClient } from '@supabase/supabase-js';
|
|
17
|
-
import { P as Permission, A as AccessLevel } from './types-
|
|
17
|
+
import { P as Permission, A as AccessLevel } from './types-BeoeWV5I.js';
|
|
18
18
|
import { E as Event, O as Organisation } from './event-CW5YB_2p.js';
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Button component props
|
|
22
|
+
* Extends standard HTML button attributes with button-specific styling and behavior options.
|
|
23
|
+
*
|
|
24
|
+
* @interface ButtonProps
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Props for the Button component.
|
|
28
|
+
* Extends standard button HTML attributes.
|
|
29
|
+
*/
|
|
20
30
|
interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
21
31
|
/** Visual variant of the button */
|
|
22
32
|
variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
|
|
@@ -109,6 +119,10 @@ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.Re
|
|
|
109
119
|
* - Screen reader friendly with semantic landmarks
|
|
110
120
|
*/
|
|
111
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Props for the Card component.
|
|
124
|
+
* Extends standard HTML attributes for semantic HTML elements.
|
|
125
|
+
*/
|
|
112
126
|
interface CardProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
113
127
|
/** Visual variant of the card */
|
|
114
128
|
variant?: 'default' | 'outline' | 'ghost';
|
|
@@ -128,6 +142,10 @@ declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttribut
|
|
|
128
142
|
declare const CardActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLElement> & React$1.RefAttributes<HTMLElement>>;
|
|
129
143
|
type CardActionsProps = React$1.HTMLAttributes<HTMLElement>;
|
|
130
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Props for the Input component.
|
|
147
|
+
* Extends standard input HTML attributes.
|
|
148
|
+
*/
|
|
131
149
|
interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
132
150
|
/**
|
|
133
151
|
* Input variant style
|
|
@@ -464,22 +482,20 @@ declare namespace Textarea {
|
|
|
464
482
|
*
|
|
465
483
|
* @example
|
|
466
484
|
* ```tsx
|
|
467
|
-
* // Basic alert
|
|
485
|
+
* // Basic alert (renders as <aside> with <h5> title and <p> description)
|
|
468
486
|
* <Alert>
|
|
469
487
|
* <AlertTitle>Success</AlertTitle>
|
|
470
488
|
* <AlertDescription>Your changes have been saved.</AlertDescription>
|
|
471
489
|
* </Alert>
|
|
472
490
|
*
|
|
473
|
-
* // Destructive alert with icon
|
|
491
|
+
* // Destructive alert with icon (renders as <aside> with <h5> title and <p> description)
|
|
474
492
|
* <Alert variant="destructive">
|
|
475
493
|
* <ErrorIcon />
|
|
476
|
-
* <
|
|
477
|
-
*
|
|
478
|
-
* <AlertDescription>Something went wrong.</AlertDescription>
|
|
479
|
-
* </div>
|
|
494
|
+
* <AlertTitle>Error</AlertTitle>
|
|
495
|
+
* <AlertDescription>Something went wrong.</AlertDescription>
|
|
480
496
|
* </Alert>
|
|
481
497
|
*
|
|
482
|
-
* // Inline alert (renders as
|
|
498
|
+
* // Inline alert (renders as React.Fragment with <strong> title and <span> description)
|
|
483
499
|
* <Alert variant="inline">
|
|
484
500
|
* <AlertTitle>Note:</AlertTitle>
|
|
485
501
|
* <AlertDescription>This is an inline message.</AlertDescription>
|
|
@@ -570,7 +586,21 @@ interface AvatarProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
570
586
|
*/
|
|
571
587
|
declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
572
588
|
|
|
589
|
+
/**
|
|
590
|
+
* Badge variant type
|
|
591
|
+
* Defines the visual style, color palette, and shade intensity of the badge.
|
|
592
|
+
* Format: {style}-{color}-{shade}
|
|
593
|
+
* - style: 'solid' | 'outline' | 'soft'
|
|
594
|
+
* - color: 'main' | 'sec' | 'acc'
|
|
595
|
+
* - shade: 'muted' | 'normal' | 'strong'
|
|
596
|
+
*/
|
|
573
597
|
type BadgeVariant = 'solid-main-muted' | 'solid-main-normal' | 'solid-main-strong' | 'solid-sec-muted' | 'solid-sec-normal' | 'solid-sec-strong' | 'solid-acc-muted' | 'solid-acc-normal' | 'solid-acc-strong' | 'outline-main-muted' | 'outline-main-normal' | 'outline-main-strong' | 'outline-sec-muted' | 'outline-sec-normal' | 'outline-sec-strong' | 'outline-acc-muted' | 'outline-acc-normal' | 'outline-acc-strong' | 'soft-main-muted' | 'soft-main-normal' | 'soft-main-strong' | 'soft-sec-muted' | 'soft-sec-normal' | 'soft-sec-strong' | 'soft-acc-muted' | 'soft-acc-normal' | 'soft-acc-strong';
|
|
598
|
+
/**
|
|
599
|
+
* Badge component props
|
|
600
|
+
* Extends standard HTML span attributes with badge-specific styling options.
|
|
601
|
+
*
|
|
602
|
+
* @interface BadgeProps
|
|
603
|
+
*/
|
|
574
604
|
interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
575
605
|
/** Visual variant of the badge (style-color-shade) */
|
|
576
606
|
variant?: BadgeVariant;
|
|
@@ -625,10 +655,10 @@ declare namespace Badge {
|
|
|
625
655
|
* <Checkbox />
|
|
626
656
|
*
|
|
627
657
|
* // With label
|
|
628
|
-
*
|
|
658
|
+
* <>
|
|
629
659
|
* <Checkbox id="terms" />
|
|
630
660
|
* <label htmlFor="terms">Accept terms and conditions</label>
|
|
631
|
-
*
|
|
661
|
+
* </>
|
|
632
662
|
*
|
|
633
663
|
* // Disabled state
|
|
634
664
|
* <Checkbox disabled />
|
|
@@ -677,7 +707,7 @@ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive
|
|
|
677
707
|
* const [checked, setChecked] = React.useState(false);
|
|
678
708
|
*
|
|
679
709
|
* return (
|
|
680
|
-
*
|
|
710
|
+
* <>
|
|
681
711
|
* <Switch
|
|
682
712
|
* checked={checked}
|
|
683
713
|
* onCheckedChange={setChecked}
|
|
@@ -686,7 +716,7 @@ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive
|
|
|
686
716
|
* <label htmlFor="notifications">
|
|
687
717
|
* Enable notifications
|
|
688
718
|
* </label>
|
|
689
|
-
*
|
|
719
|
+
* </>
|
|
690
720
|
* );
|
|
691
721
|
* }
|
|
692
722
|
* ```
|
|
@@ -697,12 +727,12 @@ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive
|
|
|
697
727
|
*
|
|
698
728
|
* function FormExample() {
|
|
699
729
|
* return (
|
|
700
|
-
*
|
|
730
|
+
* <>
|
|
701
731
|
* <Switch id="terms" />
|
|
702
732
|
* <Label htmlFor="terms">
|
|
703
733
|
* I agree to the terms and conditions
|
|
704
734
|
* </Label>
|
|
705
|
-
*
|
|
735
|
+
* </>
|
|
706
736
|
* );
|
|
707
737
|
* }
|
|
708
738
|
* ```
|
|
@@ -1038,19 +1068,13 @@ declare const DialogTitle: React$1.ForwardRefExoticComponent<DialogTitleProps &
|
|
|
1038
1068
|
declare const DialogDescription: React$1.ForwardRefExoticComponent<DialogDescriptionProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
1039
1069
|
|
|
1040
1070
|
/**
|
|
1041
|
-
*
|
|
1042
|
-
*
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
*
|
|
1047
|
-
* - Single Responsibility: Each component has one clear purpose
|
|
1048
|
-
* - Open/Closed: Easy to extend without modification
|
|
1049
|
-
* - Liskov Substitution: Components can be substituted
|
|
1050
|
-
* - Interface Segregation: Small, focused interfaces
|
|
1051
|
-
* - Dependency Inversion: Depends on abstractions, not concretions
|
|
1071
|
+
* Direction for Select dropdown opening.
|
|
1072
|
+
* Controls whether the dropdown opens upward or downward.
|
|
1073
|
+
*/
|
|
1074
|
+
type SelectDirection = "up" | "down";
|
|
1075
|
+
/**
|
|
1076
|
+
* Props for the useSelectState hook.
|
|
1052
1077
|
*/
|
|
1053
|
-
|
|
1054
1078
|
interface UseSelectStateProps {
|
|
1055
1079
|
value?: string;
|
|
1056
1080
|
defaultValue?: string;
|
|
@@ -1061,19 +1085,31 @@ interface UseSelectStateProps {
|
|
|
1061
1085
|
onValueChange?: (value: string) => void;
|
|
1062
1086
|
onOpenChange?: (open: boolean) => void;
|
|
1063
1087
|
}
|
|
1064
|
-
|
|
1088
|
+
/**
|
|
1089
|
+
* Props for the Select root component.
|
|
1090
|
+
*/
|
|
1091
|
+
interface SelectProps extends Omit<React$1.HTMLAttributes<HTMLFormElement>, "onChange" | "onKeyDown" | "onFocus" | "onBlur"> {
|
|
1065
1092
|
children: React$1.ReactNode;
|
|
1066
1093
|
className?: string;
|
|
1067
|
-
direction?:
|
|
1094
|
+
direction?: SelectDirection;
|
|
1068
1095
|
}
|
|
1069
|
-
|
|
1096
|
+
/**
|
|
1097
|
+
* Props for the SelectTrigger component.
|
|
1098
|
+
*/
|
|
1099
|
+
interface SelectTriggerProps extends Omit<ButtonProps, "onClick" | "onKeyDown"> {
|
|
1070
1100
|
children: React$1.ReactNode;
|
|
1071
1101
|
asChild?: boolean;
|
|
1072
1102
|
}
|
|
1103
|
+
/**
|
|
1104
|
+
* Props for the SelectValue component.
|
|
1105
|
+
*/
|
|
1073
1106
|
interface SelectValueProps {
|
|
1074
1107
|
placeholder?: string;
|
|
1075
1108
|
children?: React$1.ReactNode;
|
|
1076
1109
|
}
|
|
1110
|
+
/**
|
|
1111
|
+
* Props for the SelectContent component.
|
|
1112
|
+
*/
|
|
1077
1113
|
interface SelectContentProps {
|
|
1078
1114
|
children: React$1.ReactNode;
|
|
1079
1115
|
className?: string;
|
|
@@ -1082,6 +1118,9 @@ interface SelectContentProps {
|
|
|
1082
1118
|
maxHeight?: string;
|
|
1083
1119
|
style?: React$1.CSSProperties;
|
|
1084
1120
|
}
|
|
1121
|
+
/**
|
|
1122
|
+
* Props for the SelectItem component.
|
|
1123
|
+
*/
|
|
1085
1124
|
interface SelectItemProps {
|
|
1086
1125
|
value: string;
|
|
1087
1126
|
children: React$1.ReactNode;
|
|
@@ -1089,19 +1128,98 @@ interface SelectItemProps {
|
|
|
1089
1128
|
className?: string;
|
|
1090
1129
|
onClick?: (e: React$1.MouseEvent) => void;
|
|
1091
1130
|
}
|
|
1131
|
+
|
|
1132
|
+
/**
|
|
1133
|
+
* @file Select Component - Refactored SOLID Implementation
|
|
1134
|
+
* @package @jmruthers/pace-core
|
|
1135
|
+
* @module Components/Select
|
|
1136
|
+
* @since 0.4.0
|
|
1137
|
+
*
|
|
1138
|
+
* Refactored Select component following SOLID principles:
|
|
1139
|
+
* - Single Responsibility: Each component has one clear purpose
|
|
1140
|
+
* - Open/Closed: Easy to extend without modification
|
|
1141
|
+
* - Liskov Substitution: Components can be substituted
|
|
1142
|
+
* - Interface Segregation: Small, focused interfaces
|
|
1143
|
+
* - Dependency Inversion: Depends on abstractions, not concretions
|
|
1144
|
+
*/
|
|
1145
|
+
|
|
1146
|
+
/**
|
|
1147
|
+
* Select component root.
|
|
1148
|
+
* Provides select dropdown functionality with search, keyboard navigation, and accessibility.
|
|
1149
|
+
*
|
|
1150
|
+
* @param props - Select configuration
|
|
1151
|
+
* @param ref - Forwarded ref to the form element
|
|
1152
|
+
* @returns The rendered select component
|
|
1153
|
+
*/
|
|
1092
1154
|
declare const Select: React$1.ForwardRefExoticComponent<SelectProps & UseSelectStateProps & React$1.RefAttributes<HTMLFormElement>>;
|
|
1155
|
+
/**
|
|
1156
|
+
* Select trigger button component.
|
|
1157
|
+
* Opens/closes the select dropdown and displays the selected value.
|
|
1158
|
+
*
|
|
1159
|
+
* @param props - Select trigger configuration
|
|
1160
|
+
* @param ref - Forwarded ref to the button element
|
|
1161
|
+
* @returns The rendered select trigger
|
|
1162
|
+
*/
|
|
1093
1163
|
declare const SelectTrigger: React$1.ForwardRefExoticComponent<SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1164
|
+
/**
|
|
1165
|
+
* Select value display component.
|
|
1166
|
+
* Shows the selected value or placeholder text.
|
|
1167
|
+
*
|
|
1168
|
+
* @param props - Select value configuration
|
|
1169
|
+
* @param ref - Forwarded ref to the span element
|
|
1170
|
+
* @returns The rendered select value display
|
|
1171
|
+
*/
|
|
1094
1172
|
declare const SelectValue: React$1.ForwardRefExoticComponent<SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1173
|
+
/**
|
|
1174
|
+
* Select content/dropdown component.
|
|
1175
|
+
* Contains the list of selectable options.
|
|
1176
|
+
*
|
|
1177
|
+
* @param props - Select content configuration
|
|
1178
|
+
* @param ref - Forwarded ref to the list element
|
|
1179
|
+
* @returns The rendered select content
|
|
1180
|
+
*/
|
|
1095
1181
|
declare const SelectContent: React$1.ForwardRefExoticComponent<SelectContentProps & React$1.RefAttributes<HTMLUListElement>>;
|
|
1182
|
+
/**
|
|
1183
|
+
* Select item component.
|
|
1184
|
+
* Represents a single selectable option in the dropdown.
|
|
1185
|
+
*
|
|
1186
|
+
* @param props - Select item configuration
|
|
1187
|
+
* @param ref - Forwarded ref to the list item element
|
|
1188
|
+
* @returns The rendered select item
|
|
1189
|
+
*/
|
|
1096
1190
|
declare const SelectItem: React$1.ForwardRefExoticComponent<SelectItemProps & React$1.RefAttributes<HTMLLIElement>>;
|
|
1191
|
+
/**
|
|
1192
|
+
* Select group component.
|
|
1193
|
+
* Groups related select items together.
|
|
1194
|
+
*
|
|
1195
|
+
* @param props - Select group configuration
|
|
1196
|
+
* @param ref - Forwarded ref to the div element
|
|
1197
|
+
* @returns The rendered select group
|
|
1198
|
+
*/
|
|
1097
1199
|
declare const SelectGroup: React$1.ForwardRefExoticComponent<{
|
|
1098
1200
|
children: React$1.ReactNode;
|
|
1099
1201
|
className?: string;
|
|
1100
1202
|
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
1203
|
+
/**
|
|
1204
|
+
* Select label component.
|
|
1205
|
+
* Provides a label for a group of select items.
|
|
1206
|
+
*
|
|
1207
|
+
* @param props - Select label configuration
|
|
1208
|
+
* @param ref - Forwarded ref to the div element
|
|
1209
|
+
* @returns The rendered select label
|
|
1210
|
+
*/
|
|
1101
1211
|
declare const SelectLabel: React$1.ForwardRefExoticComponent<{
|
|
1102
1212
|
children: React$1.ReactNode;
|
|
1103
1213
|
className?: string;
|
|
1104
1214
|
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
1215
|
+
/**
|
|
1216
|
+
* Select separator component.
|
|
1217
|
+
* Provides visual separation between groups of select items.
|
|
1218
|
+
*
|
|
1219
|
+
* @param props - Select separator configuration
|
|
1220
|
+
* @param ref - Forwarded ref to the div element
|
|
1221
|
+
* @returns The rendered select separator
|
|
1222
|
+
*/
|
|
1105
1223
|
declare const SelectSeparator: React$1.ForwardRefExoticComponent<{
|
|
1106
1224
|
className?: string;
|
|
1107
1225
|
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
@@ -1229,7 +1347,7 @@ interface TabsContentProps extends React$1.ComponentPropsWithoutRef<typeof TabsP
|
|
|
1229
1347
|
* @example
|
|
1230
1348
|
* ```tsx
|
|
1231
1349
|
* <TabsContent value="tab1">
|
|
1232
|
-
* <
|
|
1350
|
+
* <section>Content for tab 1</section>
|
|
1233
1351
|
* </TabsContent>
|
|
1234
1352
|
* ```
|
|
1235
1353
|
*/
|
|
@@ -1292,6 +1410,10 @@ declare const TabsContent: React$1.ForwardRefExoticComponent<TabsContentProps &
|
|
|
1292
1410
|
* - Date announcements
|
|
1293
1411
|
*/
|
|
1294
1412
|
|
|
1413
|
+
/**
|
|
1414
|
+
* Props for the Calendar component.
|
|
1415
|
+
* Extends DayPickerProps with pace-core specific customizations.
|
|
1416
|
+
*/
|
|
1295
1417
|
interface CalendarProps extends Omit<DayPickerProps, 'className' | 'classNames' | 'styles' | 'onSelect'> {
|
|
1296
1418
|
/**
|
|
1297
1419
|
* Additional CSS classes to apply to the calendar table
|
|
@@ -1460,6 +1582,10 @@ declare const ToastTitle: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives
|
|
|
1460
1582
|
declare const ToastDescription: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastDescriptionProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1461
1583
|
interface ToastProps extends React$1.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> {
|
|
1462
1584
|
}
|
|
1585
|
+
/**
|
|
1586
|
+
* Type for toast action elements.
|
|
1587
|
+
* Represents a React element that can be used as a toast action button.
|
|
1588
|
+
*/
|
|
1463
1589
|
interface ToastActionElement extends React$1.ReactElement<typeof ToastAction> {
|
|
1464
1590
|
}
|
|
1465
1591
|
/**
|
|
@@ -1521,10 +1647,10 @@ declare function Toaster(): react_jsx_runtime.JSX.Element;
|
|
|
1521
1647
|
* <Button>Advanced Tooltip</Button>
|
|
1522
1648
|
* </TooltipTrigger>
|
|
1523
1649
|
* <TooltipContent side="top" className="bg-main-500 text-main-50">
|
|
1524
|
-
* <
|
|
1650
|
+
* <section className="space-y-1">
|
|
1525
1651
|
* <p className="font-semibold">Advanced Tooltip</p>
|
|
1526
1652
|
* <p className="text-xs">With custom styling</p>
|
|
1527
|
-
* </
|
|
1653
|
+
* </section>
|
|
1528
1654
|
* </TooltipContent>
|
|
1529
1655
|
* </TooltipRoot>
|
|
1530
1656
|
* </TooltipProvider>
|
|
@@ -1887,6 +2013,10 @@ declare function FormField<TFieldValues extends FieldValues = FieldValues, TName
|
|
|
1887
2013
|
* - Tailwind CSS - Styling
|
|
1888
2014
|
*/
|
|
1889
2015
|
|
|
2016
|
+
/**
|
|
2017
|
+
* Props for the LoginForm component.
|
|
2018
|
+
* Configures login form behavior, validation, and callbacks.
|
|
2019
|
+
*/
|
|
1890
2020
|
interface LoginFormProps {
|
|
1891
2021
|
/** Callback invoked when the form is submitted */
|
|
1892
2022
|
onSignIn: (data: {
|
|
@@ -1932,6 +2062,57 @@ interface LoginFormProps {
|
|
|
1932
2062
|
*/
|
|
1933
2063
|
declare const LoginForm: React__default.NamedExoticComponent<LoginFormProps>;
|
|
1934
2064
|
|
|
2065
|
+
/**
|
|
2066
|
+
* Navigation mode type
|
|
2067
|
+
*/
|
|
2068
|
+
type NavigationMode = "dropdown" | "hierarchical";
|
|
2069
|
+
/**
|
|
2070
|
+
* Navigation item metadata
|
|
2071
|
+
*/
|
|
2072
|
+
interface NavigationItemMeta {
|
|
2073
|
+
hidden?: boolean;
|
|
2074
|
+
[key: string]: unknown;
|
|
2075
|
+
}
|
|
2076
|
+
/**
|
|
2077
|
+
* Navigation item interface
|
|
2078
|
+
*/
|
|
2079
|
+
interface NavigationItem {
|
|
2080
|
+
id: string;
|
|
2081
|
+
label: string;
|
|
2082
|
+
href?: string;
|
|
2083
|
+
icon?: string;
|
|
2084
|
+
children?: NavigationItem[];
|
|
2085
|
+
permissions?: (Permission | string)[];
|
|
2086
|
+
roles?: string[];
|
|
2087
|
+
accessLevel?: AccessLevel | string;
|
|
2088
|
+
meta?: NavigationItemMeta;
|
|
2089
|
+
pageId?: string;
|
|
2090
|
+
}
|
|
2091
|
+
/**
|
|
2092
|
+
* Navigation menu component props
|
|
2093
|
+
*/
|
|
2094
|
+
interface NavigationMenuProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2095
|
+
items: NavigationItem[];
|
|
2096
|
+
mode?: NavigationMode;
|
|
2097
|
+
currentPath?: string;
|
|
2098
|
+
onNavigate?: (item: NavigationItem) => void;
|
|
2099
|
+
className?: string;
|
|
2100
|
+
disabled?: boolean;
|
|
2101
|
+
buttonText?: string;
|
|
2102
|
+
showIcons?: boolean;
|
|
2103
|
+
navigationLabel?: string;
|
|
2104
|
+
strictMode?: boolean;
|
|
2105
|
+
auditLog?: boolean;
|
|
2106
|
+
onNavigationAccessDenied?: (item: NavigationItem) => void;
|
|
2107
|
+
onStrictModeViolation?: (item: NavigationItem, reason: string) => void;
|
|
2108
|
+
/**
|
|
2109
|
+
* If true, indicates that items have already been filtered by the parent component (e.g., PaceAppLayout).
|
|
2110
|
+
* When true, NavigationMenu will skip expensive permission checks and trust the provided items.
|
|
2111
|
+
* This significantly improves performance when items are pre-filtered.
|
|
2112
|
+
*/
|
|
2113
|
+
itemsPreFiltered?: boolean;
|
|
2114
|
+
}
|
|
2115
|
+
|
|
1935
2116
|
/**
|
|
1936
2117
|
* @file Unified Navigation Menu Component
|
|
1937
2118
|
* @package @jmruthers/pace-core
|
|
@@ -2125,56 +2306,6 @@ declare const LoginForm: React__default.NamedExoticComponent<LoginFormProps>;
|
|
|
2125
2306
|
* - Tailwind CSS - Styling system
|
|
2126
2307
|
*/
|
|
2127
2308
|
|
|
2128
|
-
/**
|
|
2129
|
-
* Navigation mode type
|
|
2130
|
-
*/
|
|
2131
|
-
type NavigationMode = 'dropdown' | 'hierarchical';
|
|
2132
|
-
/**
|
|
2133
|
-
* Navigation item metadata
|
|
2134
|
-
*/
|
|
2135
|
-
interface NavigationItemMeta {
|
|
2136
|
-
hidden?: boolean;
|
|
2137
|
-
[key: string]: unknown;
|
|
2138
|
-
}
|
|
2139
|
-
/**
|
|
2140
|
-
* Navigation item interface
|
|
2141
|
-
*/
|
|
2142
|
-
interface NavigationItem {
|
|
2143
|
-
id: string;
|
|
2144
|
-
label: string;
|
|
2145
|
-
href?: string;
|
|
2146
|
-
icon?: string;
|
|
2147
|
-
children?: NavigationItem[];
|
|
2148
|
-
permissions?: (Permission | string)[];
|
|
2149
|
-
roles?: string[];
|
|
2150
|
-
accessLevel?: AccessLevel | string;
|
|
2151
|
-
meta?: NavigationItemMeta;
|
|
2152
|
-
pageId?: string;
|
|
2153
|
-
}
|
|
2154
|
-
/**
|
|
2155
|
-
* Navigation menu component props
|
|
2156
|
-
*/
|
|
2157
|
-
interface NavigationMenuProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2158
|
-
items: NavigationItem[];
|
|
2159
|
-
mode?: NavigationMode;
|
|
2160
|
-
currentPath?: string;
|
|
2161
|
-
onNavigate?: (item: NavigationItem) => void;
|
|
2162
|
-
className?: string;
|
|
2163
|
-
disabled?: boolean;
|
|
2164
|
-
buttonText?: string;
|
|
2165
|
-
showIcons?: boolean;
|
|
2166
|
-
navigationLabel?: string;
|
|
2167
|
-
strictMode?: boolean;
|
|
2168
|
-
auditLog?: boolean;
|
|
2169
|
-
onNavigationAccessDenied?: (item: NavigationItem) => void;
|
|
2170
|
-
onStrictModeViolation?: (item: NavigationItem, reason: string) => void;
|
|
2171
|
-
/**
|
|
2172
|
-
* If true, indicates that items have already been filtered by the parent component (e.g., PaceAppLayout).
|
|
2173
|
-
* When true, NavigationMenu will skip expensive permission checks and trust the provided items.
|
|
2174
|
-
* This significantly improves performance when items are pre-filtered.
|
|
2175
|
-
*/
|
|
2176
|
-
itemsPreFiltered?: boolean;
|
|
2177
|
-
}
|
|
2178
2309
|
/**
|
|
2179
2310
|
* Unified NavigationMenu component that supports both dropdown and hierarchical navigation modes.
|
|
2180
2311
|
*
|
|
@@ -2466,14 +2597,23 @@ declare const NavigationMenu: React$1.ForwardRefExoticComponent<NavigationMenuPr
|
|
|
2466
2597
|
* - Label component
|
|
2467
2598
|
* - Tailwind CSS - Styling
|
|
2468
2599
|
*/
|
|
2600
|
+
/**
|
|
2601
|
+
* Form values for password change.
|
|
2602
|
+
*/
|
|
2469
2603
|
interface PasswordChangeFormValues {
|
|
2470
2604
|
newPassword: string;
|
|
2471
2605
|
confirmPassword: string;
|
|
2472
2606
|
}
|
|
2607
|
+
/**
|
|
2608
|
+
* Error structure for password change form.
|
|
2609
|
+
*/
|
|
2473
2610
|
interface PasswordChangeFormError {
|
|
2474
2611
|
message?: string;
|
|
2475
2612
|
code?: string;
|
|
2476
2613
|
}
|
|
2614
|
+
/**
|
|
2615
|
+
* Props for the PasswordChangeForm component.
|
|
2616
|
+
*/
|
|
2477
2617
|
interface PasswordChangeFormProps {
|
|
2478
2618
|
onSubmit: (values: PasswordChangeFormValues) => Promise<{
|
|
2479
2619
|
error?: PasswordChangeFormError;
|
|
@@ -2583,10 +2723,10 @@ interface HeaderProps {
|
|
|
2583
2723
|
*
|
|
2584
2724
|
* function HeaderWithActions() {
|
|
2585
2725
|
* const customActions = (
|
|
2586
|
-
*
|
|
2726
|
+
* <>
|
|
2587
2727
|
* <Button variant="outline" size="sm">Export</Button>
|
|
2588
2728
|
* <Button size="sm">New Item</Button>
|
|
2589
|
-
*
|
|
2729
|
+
* </>
|
|
2590
2730
|
* );
|
|
2591
2731
|
*
|
|
2592
2732
|
* return (
|
|
@@ -2622,6 +2762,13 @@ interface HeaderProps {
|
|
|
2622
2762
|
*
|
|
2623
2763
|
* @since 0.1.0
|
|
2624
2764
|
*/
|
|
2765
|
+
/**
|
|
2766
|
+
* Header component for application layouts.
|
|
2767
|
+
* Provides navigation, user menu, organisation/event selectors, and customizable branding.
|
|
2768
|
+
*
|
|
2769
|
+
* @param props - Header configuration
|
|
2770
|
+
* @returns The rendered header
|
|
2771
|
+
*/
|
|
2625
2772
|
declare function Header({ logoUrl, logoAlt, logo, navItems, user, onSignOut, onChangePassword, actions, userMenu, className, showEventSelector, showOrgSelector, showUserMenu, currentPath, onNavigate, logoHref }: HeaderProps): react_jsx_runtime.JSX.Element;
|
|
2626
2773
|
|
|
2627
2774
|
/**
|
|
@@ -2673,28 +2820,28 @@ declare function Header({ logoUrl, logoAlt, logo, navItems, user, onSignOut, onC
|
|
|
2673
2820
|
*
|
|
2674
2821
|
* // Footer with custom content
|
|
2675
2822
|
* <Footer companyName="My Company">
|
|
2676
|
-
* <
|
|
2677
|
-
* <
|
|
2823
|
+
* <section className="grid grid-cols-1 md:grid-cols-3 gap-8 mb-8">
|
|
2824
|
+
* <section>
|
|
2678
2825
|
* <h3 className="font-semibold mb-2">About Us</h3>
|
|
2679
2826
|
* <p className="text-sm text-muted-foreground">
|
|
2680
2827
|
* We provide innovative solutions for modern businesses.
|
|
2681
2828
|
* </p>
|
|
2682
|
-
* </
|
|
2683
|
-
* <
|
|
2829
|
+
* </section>
|
|
2830
|
+
* <section>
|
|
2684
2831
|
* <h3 className="font-semibold mb-2">Contact</h3>
|
|
2685
2832
|
* <p className="text-sm text-muted-foreground">
|
|
2686
2833
|
* Email: info@mycompany.com<br />
|
|
2687
2834
|
* Phone: (555) 123-4567
|
|
2688
2835
|
* </p>
|
|
2689
|
-
* </
|
|
2690
|
-
* <
|
|
2836
|
+
* </section>
|
|
2837
|
+
* <section>
|
|
2691
2838
|
* <h3 className="font-semibold mb-2">Follow Us</h3>
|
|
2692
|
-
* <
|
|
2839
|
+
* <nav className="flex gap-2">
|
|
2693
2840
|
* <a href="#" className="text-muted-foreground hover:text-foreground">Twitter</a>
|
|
2694
2841
|
* <a href="#" className="text-muted-foreground hover:text-foreground">LinkedIn</a>
|
|
2695
|
-
* </
|
|
2696
|
-
* </
|
|
2697
|
-
* </
|
|
2842
|
+
* </nav>
|
|
2843
|
+
* </section>
|
|
2844
|
+
* </section>
|
|
2698
2845
|
* </Footer>
|
|
2699
2846
|
* ```
|
|
2700
2847
|
*
|
|
@@ -2711,6 +2858,9 @@ declare function Header({ logoUrl, logoAlt, logo, navItems, user, onSignOut, onC
|
|
|
2711
2858
|
* - Tailwind CSS - Styling
|
|
2712
2859
|
*/
|
|
2713
2860
|
|
|
2861
|
+
/**
|
|
2862
|
+
* Props for the Footer component.
|
|
2863
|
+
*/
|
|
2714
2864
|
interface FooterProps {
|
|
2715
2865
|
/**
|
|
2716
2866
|
* Company or organization name
|
|
@@ -2809,7 +2959,7 @@ declare const Footer: React__default.NamedExoticComponent<FooterProps>;
|
|
|
2809
2959
|
*
|
|
2810
2960
|
* // User menu in header
|
|
2811
2961
|
* <Header>
|
|
2812
|
-
* <
|
|
2962
|
+
* <nav className="flex items-center gap-4">
|
|
2813
2963
|
* <Navigation />
|
|
2814
2964
|
* <UserMenu
|
|
2815
2965
|
* user={user}
|
|
@@ -2817,7 +2967,7 @@ declare const Footer: React__default.NamedExoticComponent<FooterProps>;
|
|
|
2817
2967
|
* onChangePassword={handlePasswordChange}
|
|
2818
2968
|
* className="ml-auto"
|
|
2819
2969
|
* />
|
|
2820
|
-
* </
|
|
2970
|
+
* </nav>
|
|
2821
2971
|
* </Header>
|
|
2822
2972
|
* ```
|
|
2823
2973
|
*
|
|
@@ -2850,6 +3000,9 @@ declare const Footer: React__default.NamedExoticComponent<FooterProps>;
|
|
|
2850
3000
|
* - Tailwind CSS - Styling
|
|
2851
3001
|
*/
|
|
2852
3002
|
|
|
3003
|
+
/**
|
|
3004
|
+
* Props for the UserMenu component.
|
|
3005
|
+
*/
|
|
2853
3006
|
interface UserMenuProps {
|
|
2854
3007
|
user: User | null;
|
|
2855
3008
|
onSignOut?: () => Promise<void>;
|
|
@@ -2862,6 +3015,10 @@ interface UserMenuProps {
|
|
|
2862
3015
|
declare const UserMenu: React__default.NamedExoticComponent<UserMenuProps>;
|
|
2863
3016
|
|
|
2864
3017
|
type Operation = 'read' | 'create' | 'update' | 'delete' | 'manage';
|
|
3018
|
+
/**
|
|
3019
|
+
* Props for the PaceAppLayout component.
|
|
3020
|
+
* Configures the application layout including navigation, header, and footer.
|
|
3021
|
+
*/
|
|
2865
3022
|
interface PaceAppLayoutProps {
|
|
2866
3023
|
/** The name of the application to be displayed in the header. */
|
|
2867
3024
|
appName: string;
|
|
@@ -3203,6 +3360,9 @@ declare function PaceAppLayout({ appName, navItems, showEventSelector, showOrgSe
|
|
|
3203
3360
|
* - Tailwind CSS - Styling
|
|
3204
3361
|
*/
|
|
3205
3362
|
|
|
3363
|
+
/**
|
|
3364
|
+
* Props for the PaceLoginPage component.
|
|
3365
|
+
*/
|
|
3206
3366
|
interface PaceLoginPageProps {
|
|
3207
3367
|
/** The name of the application to be displayed on the login form. */
|
|
3208
3368
|
appName: string;
|
|
@@ -3237,6 +3397,9 @@ interface PaceLoginPageProps {
|
|
|
3237
3397
|
*/
|
|
3238
3398
|
declare const PaceLoginPage: React__default.FC<PaceLoginPageProps>;
|
|
3239
3399
|
|
|
3400
|
+
/**
|
|
3401
|
+
* Props for the ProtectedRoute component.
|
|
3402
|
+
*/
|
|
3240
3403
|
interface ProtectedRouteProps {
|
|
3241
3404
|
/**
|
|
3242
3405
|
* Whether an event is required for routes inside this component.
|
|
@@ -3245,13 +3408,6 @@ interface ProtectedRouteProps {
|
|
|
3245
3408
|
* @default true
|
|
3246
3409
|
*/
|
|
3247
3410
|
requireEvent?: boolean;
|
|
3248
|
-
/**
|
|
3249
|
-
* Whether super admins can bypass event requirement.
|
|
3250
|
-
* Note: This feature requires additional RBAC setup. For simple bypass, set requireEvent={false} instead.
|
|
3251
|
-
* @default false
|
|
3252
|
-
* @deprecated Use requireEvent={false} for routes that don't need events
|
|
3253
|
-
*/
|
|
3254
|
-
allowSuperAdminBypass?: boolean;
|
|
3255
3411
|
/**
|
|
3256
3412
|
* Custom component to render when no events are available.
|
|
3257
3413
|
* If not provided, a default message is shown.
|
|
@@ -3284,7 +3440,7 @@ interface ProtectedRouteProps {
|
|
|
3284
3440
|
* @param props - Configuration for route protection
|
|
3285
3441
|
* @returns React element with route protection logic
|
|
3286
3442
|
*/
|
|
3287
|
-
declare function ProtectedRoute({ requireEvent,
|
|
3443
|
+
declare function ProtectedRoute({ requireEvent, noEventsFallback, loadingFallback, loginPath }: ProtectedRouteProps): string | number | bigint | true | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element;
|
|
3288
3444
|
|
|
3289
3445
|
/**
|
|
3290
3446
|
* State interface for the ErrorBoundary component
|
|
@@ -3321,6 +3477,8 @@ interface ErrorBoundaryProps {
|
|
|
3321
3477
|
enableRetry?: boolean;
|
|
3322
3478
|
/** Whether to enable error reporting */
|
|
3323
3479
|
enableReporting?: boolean;
|
|
3480
|
+
/** Internal: Global error handler from context (not part of public API) */
|
|
3481
|
+
_globalErrorHandler?: (error: Error, errorInfo: React__default.ErrorInfo, errorId: string, componentName: string) => void;
|
|
3324
3482
|
}
|
|
3325
3483
|
/**
|
|
3326
3484
|
* ErrorBoundary component
|
|
@@ -3339,7 +3497,7 @@ interface ErrorBoundaryProps {
|
|
|
3339
3497
|
* </ErrorBoundary>
|
|
3340
3498
|
* ```
|
|
3341
3499
|
*/
|
|
3342
|
-
declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
3500
|
+
declare class ErrorBoundary$1 extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
3343
3501
|
private retryTimeoutId;
|
|
3344
3502
|
constructor(props: ErrorBoundaryProps);
|
|
3345
3503
|
static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
|
|
@@ -3350,6 +3508,65 @@ declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryS
|
|
|
3350
3508
|
render(): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
3351
3509
|
}
|
|
3352
3510
|
|
|
3511
|
+
/**
|
|
3512
|
+
* Type definition for the global error handler function
|
|
3513
|
+
* @public
|
|
3514
|
+
*/
|
|
3515
|
+
type GlobalErrorHandler = (error: Error, errorInfo: React__default.ErrorInfo, errorId: string, componentName: string) => void;
|
|
3516
|
+
/**
|
|
3517
|
+
* Props for ErrorBoundaryProvider component
|
|
3518
|
+
* @public
|
|
3519
|
+
*/
|
|
3520
|
+
interface ErrorBoundaryProviderProps {
|
|
3521
|
+
/** Children to wrap with the provider */
|
|
3522
|
+
children: ReactNode;
|
|
3523
|
+
/** Global error handler that will be used by all ErrorBoundary instances unless overridden */
|
|
3524
|
+
defaultErrorHandler?: GlobalErrorHandler;
|
|
3525
|
+
}
|
|
3526
|
+
/**
|
|
3527
|
+
* Provider component for ErrorBoundary global error handler configuration
|
|
3528
|
+
*
|
|
3529
|
+
* Wrap your application with this provider to set a default error handler that will
|
|
3530
|
+
* be used by all ErrorBoundary instances unless they provide their own onError prop.
|
|
3531
|
+
*
|
|
3532
|
+
* @example
|
|
3533
|
+
* ```tsx
|
|
3534
|
+
* <ErrorBoundaryProvider
|
|
3535
|
+
* defaultErrorHandler={(error, errorInfo, errorId, componentName) => {
|
|
3536
|
+
* errorTracking.captureException(error, {
|
|
3537
|
+
* componentStack: errorInfo.componentStack,
|
|
3538
|
+
* errorBoundary: true,
|
|
3539
|
+
* errorId,
|
|
3540
|
+
* componentName,
|
|
3541
|
+
* });
|
|
3542
|
+
* }}
|
|
3543
|
+
* >
|
|
3544
|
+
* <App />
|
|
3545
|
+
* </ErrorBoundaryProvider>
|
|
3546
|
+
* ```
|
|
3547
|
+
*
|
|
3548
|
+
* @public
|
|
3549
|
+
*/
|
|
3550
|
+
/**
|
|
3551
|
+
* Error boundary provider component.
|
|
3552
|
+
* Provides global error handling configuration to child ErrorBoundary components.
|
|
3553
|
+
*
|
|
3554
|
+
* @param props - Error boundary provider configuration
|
|
3555
|
+
* @returns The error boundary provider
|
|
3556
|
+
*/
|
|
3557
|
+
declare function ErrorBoundaryProvider({ children, defaultErrorHandler, }: ErrorBoundaryProviderProps): react_jsx_runtime.JSX.Element;
|
|
3558
|
+
|
|
3559
|
+
/**
|
|
3560
|
+
* @file Error Boundary exports
|
|
3561
|
+
*/
|
|
3562
|
+
|
|
3563
|
+
/**
|
|
3564
|
+
* ErrorBoundary component with automatic context support
|
|
3565
|
+
* This wrapper automatically uses the global error handler from ErrorBoundaryProvider
|
|
3566
|
+
* if no onError prop is provided.
|
|
3567
|
+
*/
|
|
3568
|
+
declare const ErrorBoundary: React__default.ForwardRefExoticComponent<Omit<ErrorBoundaryProps, "_globalErrorHandler"> & React__default.RefAttributes<ErrorBoundary$1>>;
|
|
3569
|
+
|
|
3353
3570
|
/**
|
|
3354
3571
|
* @file LoadingSpinner Component
|
|
3355
3572
|
* @package @jmruthers/pace-core
|
|
@@ -3476,6 +3693,9 @@ interface SessionRestorationLoaderProps {
|
|
|
3476
3693
|
}
|
|
3477
3694
|
declare const SessionRestorationLoader: React__default.FC<SessionRestorationLoaderProps>;
|
|
3478
3695
|
|
|
3696
|
+
/**
|
|
3697
|
+
* Props for the EventSelector component.
|
|
3698
|
+
*/
|
|
3479
3699
|
interface EventSelectorProps {
|
|
3480
3700
|
/** Placeholder text for the dropdown */
|
|
3481
3701
|
placeholder?: string;
|
|
@@ -3510,6 +3730,9 @@ interface EventSelectorProps {
|
|
|
3510
3730
|
*/
|
|
3511
3731
|
declare function EventSelector({ placeholder, className, onEventChange, showNoEventsMessage, showRetryButton, showEventDetails, showNextEventIndicator }: EventSelectorProps): react_jsx_runtime.JSX.Element | null;
|
|
3512
3732
|
|
|
3733
|
+
/**
|
|
3734
|
+
* Props for the OrganisationSelector component.
|
|
3735
|
+
*/
|
|
3513
3736
|
interface OrganisationSelectorProps {
|
|
3514
3737
|
/** Placeholder text for the dropdown */
|
|
3515
3738
|
placeholder?: string;
|
|
@@ -3542,6 +3765,10 @@ interface OrganisationSelectorProps {
|
|
|
3542
3765
|
*/
|
|
3543
3766
|
declare function OrganisationSelector({ placeholder, className, onOrganisationChange, showNoOrganisationsMessage, showRetryButton, showRole, compact, disabled }: OrganisationSelectorProps): react_jsx_runtime.JSX.Element | null;
|
|
3544
3767
|
|
|
3768
|
+
/**
|
|
3769
|
+
* Props for the FileUpload component.
|
|
3770
|
+
* Configures file upload behavior including storage location, validation, and callbacks.
|
|
3771
|
+
*/
|
|
3545
3772
|
interface FileUploadProps {
|
|
3546
3773
|
supabase: SupabaseClient;
|
|
3547
3774
|
table_name: string;
|
|
@@ -3631,8 +3858,22 @@ interface FileDisplayProps {
|
|
|
3631
3858
|
* @param props.category - Optional category filter. When specified, only displays files matching this category and uses single file display variant.
|
|
3632
3859
|
* @returns React element with file display
|
|
3633
3860
|
*/
|
|
3861
|
+
/**
|
|
3862
|
+
* File display component.
|
|
3863
|
+
* Renders files from the file reference system with support for previews, downloads, and public/private access.
|
|
3864
|
+
*
|
|
3865
|
+
* @param props - File display configuration
|
|
3866
|
+
* @returns The rendered file display
|
|
3867
|
+
*/
|
|
3634
3868
|
declare function FileDisplay({ table_name, record_id, organisation_id, category, displayOnly, showDelete, className, imgClassName, children, loadingComponent, errorComponent, showFallback, generateFallbackText, fallbackText, fallbackSourceText, fallbackSize, enableChildren, showMetadata }: FileDisplayProps): react_jsx_runtime.JSX.Element;
|
|
3635
3869
|
|
|
3870
|
+
/**
|
|
3871
|
+
* Hook for managing file references.
|
|
3872
|
+
* Provides file upload, retrieval, and URL generation functionality.
|
|
3873
|
+
*
|
|
3874
|
+
* @param supabase - Supabase client instance
|
|
3875
|
+
* @returns File reference service with upload, get, and URL methods
|
|
3876
|
+
*/
|
|
3636
3877
|
declare function useFileReference(supabase: SupabaseClient): {
|
|
3637
3878
|
isLoading: boolean;
|
|
3638
3879
|
error: string | null;
|
|
@@ -3699,6 +3940,9 @@ type UseFileReferenceOptions = {
|
|
|
3699
3940
|
record_id: string;
|
|
3700
3941
|
organisation_id: string;
|
|
3701
3942
|
};
|
|
3943
|
+
/**
|
|
3944
|
+
* Return value of the useFileReference hook.
|
|
3945
|
+
*/
|
|
3702
3946
|
type UseFileReferenceReturn = {
|
|
3703
3947
|
isLoading: boolean;
|
|
3704
3948
|
error: string | null;
|
|
@@ -3712,6 +3956,9 @@ type UseFileReferenceReturn = {
|
|
|
3712
3956
|
getFileCount: (table_name: string, record_id: string, organisation_id: string) => Promise<number>;
|
|
3713
3957
|
clearError: () => void;
|
|
3714
3958
|
};
|
|
3959
|
+
/**
|
|
3960
|
+
* Return value of the useFileReferenceForRecord hook.
|
|
3961
|
+
*/
|
|
3715
3962
|
type UseFileReferenceForRecordReturn = {
|
|
3716
3963
|
isLoading: boolean;
|
|
3717
3964
|
error: string | null;
|
|
@@ -3859,8 +4106,6 @@ interface PublicPageLayoutProps {
|
|
|
3859
4106
|
refetch?: () => Promise<void> | void;
|
|
3860
4107
|
/** Whether to show the footer (default: true) */
|
|
3861
4108
|
showFooter?: boolean;
|
|
3862
|
-
/** @deprecated Custom CSS classes for the layout - no longer used as wrapper div was removed */
|
|
3863
|
-
className?: string;
|
|
3864
4109
|
/** Custom error fallback component */
|
|
3865
4110
|
errorFallback?: React__default.ComponentType<{
|
|
3866
4111
|
error: Error;
|
|
@@ -3932,7 +4177,7 @@ declare function PublicPageFooter({ event, companyName, year, links, className,
|
|
|
3932
4177
|
* @param props - Layout configuration and content
|
|
3933
4178
|
* @returns React element with complete public page layout
|
|
3934
4179
|
*/
|
|
3935
|
-
declare function PublicPageLayout({ eventCode, children, event, isLoading, error, refetch, showFooter,
|
|
4180
|
+
declare function PublicPageLayout({ eventCode, children, event, isLoading, error, refetch, showFooter, errorFallback: ErrorFallback, loadingFallback: LoadingFallback, customHeader, customFooter, showValidationErrors, loadingMessage }: PublicPageLayoutProps): react_jsx_runtime.JSX.Element;
|
|
3936
4181
|
|
|
3937
4182
|
interface PublicPageContextType {
|
|
3938
4183
|
isPublicPage: true;
|
|
@@ -3972,4 +4217,4 @@ declare function usePublicPageContext(): PublicPageContextType;
|
|
|
3972
4217
|
*/
|
|
3973
4218
|
declare function useIsPublicPage(): boolean;
|
|
3974
4219
|
|
|
3975
|
-
export { type DialogTriggerProps as $, AddressField as A, Button as B, Card as C, TableHeader as D, TableBody as E, TableCaption as F, TableCell as G, TableFooter as H, Input as I, TableHead as J, TableRow as K, Label as L, Dialog as M, DialogPortal as N, DialogOverlay as O, Progress as P, DialogTrigger as Q, DialogClose as R, Switch as S, Textarea as T, DialogContent as U, DialogHeader as V, DialogBody as W, DialogFooter as X, DialogTitle as Y, DialogDescription as Z, type DialogProps as _, type ButtonProps as a,
|
|
4220
|
+
export { type DialogTriggerProps as $, AddressField as A, Button as B, Card as C, TableHeader as D, TableBody as E, TableCaption as F, TableCell as G, TableFooter as H, Input as I, TableHead as J, TableRow as K, Label as L, Dialog as M, DialogPortal as N, DialogOverlay as O, Progress as P, DialogTrigger as Q, DialogClose as R, Switch as S, Textarea as T, DialogContent as U, DialogHeader as V, DialogBody as W, DialogFooter as X, DialogTitle as Y, DialogDescription as Z, type DialogProps as _, type ButtonProps as a, LoadingSpinner as a$, type DialogContentProps as a0, type DialogOverlayProps as a1, type DialogHeaderProps as a2, type DialogFooterProps as a3, type DialogTitleProps as a4, type DialogDescriptionProps as a5, type DialogSize as a6, Select as a7, SelectGroup as a8, SelectValue as a9, TooltipTrigger as aA, TooltipContent as aB, TooltipProvider as aC, TooltipRoot as aD, Form as aE, FormField as aF, type FormProps as aG, type FormFieldProps as aH, LoginForm as aI, type LoginFormProps as aJ, Header as aK, Footer as aL, type FooterProps as aM, ProtectedRoute as aN, type ProtectedRouteProps as aO, NavigationMenu as aP, type NavigationMenuProps as aQ, type NavigationItem as aR, OrganisationSelector as aS, type OrganisationSelectorProps as aT, UserMenu as aU, ErrorBoundary as aV, ErrorBoundaryProvider as aW, type ErrorBoundaryProps as aX, type ErrorBoundaryState as aY, type ErrorBoundaryProviderProps as aZ, type GlobalErrorHandler as a_, SelectTrigger as aa, SelectContent as ab, SelectLabel as ac, SelectItem as ad, SelectSeparator as ae, Tabs as af, TabsList as ag, TabsTrigger as ah, TabsContent as ai, type TabsProps as aj, type TabsListProps as ak, type TabsTriggerProps as al, type TabsContentProps as am, Calendar as an, type CalendarProps as ao, Toast as ap, Toaster as aq, ToastAction as ar, ToastProvider as as, ToastViewport as at, ToastTitle as au, ToastDescription as av, ToastClose as aw, type ToastActionElement as ax, type ToastProps as ay, Tooltip as az, CardHeader as b, SessionRestorationLoader as b0, type SessionRestorationLoaderProps as b1, EventSelector as b2, FileUpload as b3, type FileUploadProps as b4, FileDisplay as b5, type FileDisplayProps as b6, useFileReference as b7, useFileReferenceForRecord as b8, useFileReferenceById as b9, useFilesByCategory as ba, type UseFileReferenceOptions as bb, type UseFileReferenceReturn as bc, type UseFileReferenceForRecordReturn as bd, PublicPageLayout as be, PublicPageHeader as bf, PublicPageFooter as bg, PublicPageProvider as bh, usePublicPageContext as bi, useIsPublicPage as bj, type PublicPageLayoutProps as bk, type PublicPageHeaderProps as bl, type PublicPageFooterProps as bm, type PaceAppLayoutProps as bn, PaceAppLayout as bo, type PaceLoginPageProps as bp, PaceLoginPage as bq, type NavigationMode as br, type UserMenuProps as bs, PasswordChangeForm as bt, CardFooter as c, CardTitle as d, CardDescription as e, CardContent as f, CardActions as g, type CardProps as h, type CardActionsProps as i, type InputProps as j, type AddressFieldProps as k, type AddressFieldRef as l, type LabelProps as m, type TextareaProps as n, Alert as o, AlertTitle as p, AlertDescription as q, Avatar as r, type AvatarProps as s, Badge as t, type BadgeProps as u, type BadgeVariant as v, Checkbox as w, type SwitchProps as x, type ProgressProps as y, Table as z };
|