@jmruthers/pace-core 0.5.180 → 0.5.182
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 +1 -1
- package/README.md +16 -2
- package/dist/{AuthService-DYuQPJj6.d.ts → AuthService-B-cd2MA4.d.ts} +9 -11
- package/dist/{DataTable-CWAZZcXC.d.ts → DataTable-Bz8ffqyA.d.ts} +1 -1
- package/dist/{DataTable-4VSEJQ7D.js → DataTable-QAB34V6K.js} +14 -15
- package/dist/UnifiedAuthProvider-7F6T4B6K.js +13 -0
- package/dist/{UnifiedAuthProvider-DJxGTftH.d.ts → UnifiedAuthProvider-F86d7dSi.d.ts} +5 -6
- package/dist/{api-45XYYO2A.js → api-ROMBCNKU.js} +5 -5
- package/dist/{audit-64X3VJXB.js → audit-WRS3KJKI.js} +4 -4
- package/dist/auth-BZOJqrdd.d.ts +49 -0
- package/dist/{chunk-CX5M4ZAG.js → chunk-5DRSZLL2.js} +1 -1
- package/dist/chunk-5DRSZLL2.js.map +1 -0
- package/dist/{chunk-BESYRHQM.js → chunk-6C4YBBJM.js} +10 -7
- package/dist/chunk-6C4YBBJM.js.map +1 -0
- package/dist/{chunk-PLDDJCW6.js → chunk-7D4SUZUM.js} +2 -13
- package/dist/{chunk-6HLVGAZG.js → chunk-CSOFYHAG.js} +55 -162
- package/dist/chunk-CSOFYHAG.js.map +1 -0
- package/dist/{chunk-ANBQRTPX.js → chunk-E66EQZE6.js} +3 -5
- package/dist/{chunk-ANBQRTPX.js.map → chunk-E66EQZE6.js.map} +1 -1
- package/dist/{chunk-Q5QRDWKI.js → chunk-F2IMUDXZ.js} +4 -6
- package/dist/chunk-F2IMUDXZ.js.map +1 -0
- package/dist/{chunk-SBVILCCA.js → chunk-FSFQFJCU.js} +28 -6
- package/dist/chunk-FSFQFJCU.js.map +1 -0
- package/dist/chunk-FUEYYMX5.js +2296 -0
- package/dist/chunk-FUEYYMX5.js.map +1 -0
- package/dist/{chunk-FFKNH6U5.js → chunk-HKIT6O7W.js} +3 -5
- package/dist/{chunk-FFKNH6U5.js.map → chunk-HKIT6O7W.js.map} +1 -1
- package/dist/chunk-KQCRWDSA.js +1 -0
- package/dist/{chunk-S5OFRT4M.js → chunk-KUEN3HFB.js} +6 -6
- package/dist/chunk-KUEN3HFB.js.map +1 -0
- package/dist/chunk-LMC26NLJ.js +84 -0
- package/dist/chunk-LMC26NLJ.js.map +1 -0
- package/dist/{chunk-BVYWGZVV.js → chunk-M7W4CP3M.js} +52 -19
- package/dist/chunk-M7W4CP3M.js.map +1 -0
- package/dist/{chunk-CPTUD43C.js → chunk-MI7HBHN3.js} +164 -243
- package/dist/chunk-MI7HBHN3.js.map +1 -0
- package/dist/{chunk-N5YCCUG5.js → chunk-PWAHJW4G.js} +180 -29
- package/dist/chunk-PWAHJW4G.js.map +1 -0
- package/dist/chunk-PWLANIRT.js +127 -0
- package/dist/{chunk-XDNLUEXI.js.map → chunk-PWLANIRT.js.map} +1 -1
- package/dist/chunk-QCDXODCA.js +75 -0
- package/dist/chunk-QCDXODCA.js.map +1 -0
- package/dist/{chunk-P6UUHOIF.js → chunk-QETLRQI6.js} +526 -887
- package/dist/chunk-QETLRQI6.js.map +1 -0
- package/dist/{chunk-GQA2LIAE.js → chunk-QUVSNGIP.js} +264 -262
- package/dist/chunk-QUVSNGIP.js.map +1 -0
- package/dist/chunk-QXHPKYJV.js +113 -0
- package/dist/chunk-QXHPKYJV.js.map +1 -0
- package/dist/{chunk-OWAG3GSU.js → chunk-R77UEZ4E.js} +11 -1
- package/dist/chunk-R77UEZ4E.js.map +1 -0
- package/dist/{chunk-ONI7Y733.js → chunk-RA3JUFMW.js} +314 -161
- package/dist/chunk-RA3JUFMW.js.map +1 -0
- package/dist/{chunk-ERISIBYU.js → chunk-SQGMNID3.js} +3 -8
- package/dist/chunk-SQGMNID3.js.map +1 -0
- package/dist/{chunk-XJ2HZOBU.js → chunk-UHNYIBXL.js} +1 -1
- package/dist/chunk-UHNYIBXL.js.map +1 -0
- package/{src/utils/secureStorage.ts → dist/chunk-VBXEHIUJ.js} +113 -88
- package/dist/{chunk-7QCC6MCP.js.map → chunk-VBXEHIUJ.js.map} +1 -1
- package/dist/{chunk-R53TUSFK.js → chunk-W22JP75J.js} +5 -13
- package/dist/{chunk-R53TUSFK.js.map → chunk-W22JP75J.js.map} +1 -1
- package/dist/components.d.ts +12 -93
- package/dist/components.js +23 -106
- package/dist/components.js.map +1 -1
- package/dist/core-CUElvH_C.d.ts +164 -0
- package/dist/database.generated-CBmg2950.d.ts +8284 -0
- package/dist/event-CW5YB_2p.d.ts +239 -0
- package/dist/{file-reference-C6Gkn77H.d.ts → file-reference-D06mEEWW.d.ts} +7 -5
- package/dist/functions-D_kgHktt.d.ts +208 -0
- package/dist/hooks.d.ts +54 -7
- package/dist/hooks.js +204 -17
- package/dist/hooks.js.map +1 -1
- package/dist/{EventLogo-B3V3otev.d.ts → index-Bl--n7-T.d.ts} +387 -397
- package/dist/index.d.ts +94 -261
- package/dist/index.js +314 -126
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +7 -8
- package/dist/providers.js +6 -13
- package/dist/rbac/index.d.ts +171 -101
- package/dist/rbac/index.js +23 -17
- package/dist/styles/index.d.ts +1 -3
- package/dist/styles/index.js +2 -17
- package/dist/theming/runtime.js +3 -3
- package/dist/types-UU913iLA.d.ts +102 -0
- package/dist/{types-Dfz9dmVH.d.ts → types-_x1f4QBF.d.ts} +6 -6
- package/dist/types.d.ts +88 -227
- package/dist/types.js +64 -112
- package/dist/types.js.map +1 -1
- package/dist/{usePublicRouteParams-B7PabvuH.d.ts → usePublicRouteParams-JJczomYq.d.ts} +203 -6
- package/dist/utils.d.ts +299 -13
- package/dist/utils.js +481 -55
- package/dist/utils.js.map +1 -1
- package/dist/validation-643vUDZW.d.ts +177 -0
- package/docs/DOCUMENTATION_REVIEW_TRACKER.md +511 -0
- package/docs/README.md +9 -8
- package/docs/api/README.md +16 -2
- package/docs/api/classes/ColumnFactory.md +1 -1
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +4 -4
- 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 +14 -14
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +2 -2
- package/docs/api/classes/RBACError.md +4 -4
- package/docs/api/classes/RBACNotInitializedError.md +4 -4
- package/docs/api/classes/SecureSupabaseClient.md +29 -9
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +17 -17
- package/docs/api/enums/RBACErrorCode.md +228 -0
- package/docs/api/enums/RPCFunction.md +118 -0
- package/docs/api/interfaces/AggregateConfig.md +1 -1
- package/docs/api/interfaces/BadgeProps.md +1 -1
- package/docs/api/interfaces/ButtonProps.md +2 -2
- package/docs/api/interfaces/CalendarProps.md +1 -1
- package/docs/api/interfaces/CardProps.md +29 -3
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +1 -1
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +2 -2
- package/docs/api/interfaces/DataTableColumn.md +6 -6
- package/docs/api/interfaces/DataTableProps.md +1 -1
- package/docs/api/interfaces/DataTableToolbarButton.md +2 -2
- package/docs/api/interfaces/EmptyStateConfig.md +1 -1
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
- package/docs/api/interfaces/EventAppRoleData.md +1 -1
- package/docs/api/interfaces/ExportColumn.md +5 -5
- package/docs/api/interfaces/ExportOptions.md +4 -4
- package/docs/api/interfaces/FileDisplayProps.md +1 -1
- package/docs/api/interfaces/FileMetadata.md +13 -13
- package/docs/api/interfaces/FileReference.md +12 -12
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +10 -10
- package/docs/api/interfaces/FileUploadProps.md +19 -19
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/FormFieldProps.md +166 -0
- package/docs/api/interfaces/FormProps.md +113 -0
- package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +8 -8
- package/docs/api/interfaces/InputProps.md +2 -2
- package/docs/api/interfaces/LabelProps.md +8 -8
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- 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 +17 -73
- package/docs/api/interfaces/NavigationMenuProps.md +38 -53
- package/docs/api/interfaces/NavigationProviderProps.md +1 -1
- package/docs/api/interfaces/Organisation.md +13 -13
- package/docs/api/interfaces/OrganisationContextType.md +21 -21
- package/docs/api/interfaces/OrganisationMembership.md +15 -15
- package/docs/api/interfaces/OrganisationProviderProps.md +59 -2
- package/docs/api/interfaces/OrganisationSecurityError.md +5 -5
- package/docs/api/interfaces/PaceAppLayoutProps.md +26 -39
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- 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/PermissionEnforcerProps.md +1 -1
- package/docs/api/interfaces/ProgressProps.md +50 -0
- package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
- package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
- package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
- package/docs/api/interfaces/PublicPageLayoutProps.md +15 -15
- package/docs/api/interfaces/RBACAccessValidateParams.md +52 -0
- package/docs/api/interfaces/RBACAccessValidateResult.md +41 -0
- package/docs/api/interfaces/RBACAuditLogParams.md +85 -0
- package/docs/api/interfaces/RBACAuditLogResult.md +52 -0
- package/docs/api/interfaces/RBACConfig.md +2 -2
- package/docs/api/interfaces/RBACContext.md +52 -0
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/RBACPageAccessCheckParams.md +74 -0
- package/docs/api/interfaces/RBACPermissionCheckParams.md +74 -0
- package/docs/api/interfaces/RBACPermissionCheckResult.md +52 -0
- package/docs/api/interfaces/RBACPermissionsGetParams.md +63 -0
- package/docs/api/interfaces/RBACPermissionsGetResult.md +63 -0
- package/docs/api/interfaces/RBACResult.md +58 -0
- package/docs/api/interfaces/RBACRoleGrantParams.md +63 -0
- package/docs/api/interfaces/RBACRoleGrantResult.md +52 -0
- package/docs/api/interfaces/RBACRoleRevokeParams.md +63 -0
- package/docs/api/interfaces/RBACRoleRevokeResult.md +52 -0
- package/docs/api/interfaces/RBACRoleValidateParams.md +52 -0
- package/docs/api/interfaces/RBACRoleValidateResult.md +63 -0
- package/docs/api/interfaces/RBACRolesListParams.md +52 -0
- package/docs/api/interfaces/RBACRolesListResult.md +74 -0
- package/docs/api/interfaces/RBACSessionTrackParams.md +74 -0
- package/docs/api/interfaces/RBACSessionTrackResult.md +52 -0
- 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/SecureDataContextType.md +1 -1
- package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
- package/docs/api/interfaces/SessionRestorationLoaderProps.md +15 -2
- 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 +43 -2
- package/docs/api/interfaces/TextareaProps.md +2 -2
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +61 -61
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
- package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
- package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
- package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
- package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +1 -1
- package/docs/api/interfaces/UserMenuProps.md +4 -4
- package/docs/api/interfaces/UserProfile.md +7 -7
- package/docs/api/modules.md +484 -462
- package/docs/api-reference/components.md +186 -15
- package/docs/api-reference/deprecated.md +376 -0
- package/docs/api-reference/hooks.md +149 -19
- package/docs/api-reference/providers.md +61 -6
- package/docs/api-reference/rpc-functions.md +397 -0
- package/docs/api-reference/types.md +135 -78
- package/docs/api-reference/utilities.md +51 -380
- package/docs/architecture/README.md +49 -3
- package/docs/architecture/database-schema-requirements.md +40 -3
- package/docs/architecture/rbac-security-architecture.md +41 -4
- package/docs/architecture/services.md +127 -42
- package/docs/best-practices/README.md +51 -5
- package/docs/best-practices/accessibility.md +32 -3
- package/docs/best-practices/common-patterns.md +50 -3
- package/docs/best-practices/deployment.md +50 -4
- package/docs/best-practices/performance.md +50 -3
- package/docs/best-practices/security.md +94 -41
- package/docs/best-practices/testing.md +33 -4
- package/docs/core-concepts/authentication.md +5 -5
- package/docs/core-concepts/events.md +3 -3
- package/docs/core-concepts/organisations.md +3 -3
- package/docs/core-concepts/permissions.md +3 -3
- package/docs/core-concepts/rbac-system.md +5 -5
- package/docs/documentation-index.md +30 -8
- package/docs/getting-started/documentation-index.md +1 -1
- package/docs/getting-started/examples/README.md +7 -5
- package/docs/getting-started/examples/basic-auth-app.md +3 -0
- package/docs/getting-started/examples/full-featured-app.md +5 -3
- package/docs/getting-started/faq.md +6 -6
- package/docs/getting-started/installation-guide.md +192 -13
- package/docs/getting-started/local-development.md +303 -0
- package/docs/getting-started/quick-reference.md +3 -3
- package/docs/getting-started/quick-start.md +517 -0
- package/docs/implementation-guides/app-layout.md +45 -3
- package/docs/implementation-guides/authentication.md +66 -7
- package/docs/implementation-guides/component-styling.md +53 -3
- package/docs/implementation-guides/data-tables.md +76 -7
- package/docs/implementation-guides/datatable-filtering.md +1 -2
- package/docs/implementation-guides/datatable-rbac-usage.md +0 -1
- package/docs/implementation-guides/dynamic-colors.md +155 -4
- package/docs/implementation-guides/file-reference-system.md +72 -3
- package/docs/implementation-guides/file-upload-storage.md +72 -3
- package/docs/implementation-guides/forms.md +53 -3
- package/docs/implementation-guides/inactivity-tracking.md +53 -3
- package/docs/implementation-guides/large-datasets.md +1 -1
- package/docs/implementation-guides/navigation.md +55 -5
- package/docs/implementation-guides/organisation-security.md +72 -3
- package/docs/implementation-guides/performance.md +57 -1
- package/docs/implementation-guides/permission-enforcement.md +81 -8
- package/docs/implementation-guides/public-pages.md +560 -14
- package/docs/migration/MIGRATION_GUIDE.md +409 -50
- package/docs/migration/README.md +37 -3
- package/docs/migration/organisation-context-timing-fix.md +39 -4
- package/docs/migration/quick-migration-guide.md +41 -5
- package/docs/migration/rbac-migration.md +59 -3
- package/docs/migration/service-architecture.md +77 -14
- package/docs/rbac/README.md +79 -3
- package/docs/rbac/advanced-patterns.md +47 -3
- package/docs/rbac/api-reference.md +77 -8
- package/docs/rbac/event-based-apps.md +50 -5
- package/docs/rbac/examples/rbac-rls-integration-example.md +3 -3
- package/docs/rbac/examples.md +39 -3
- package/docs/rbac/getting-started.md +63 -4
- package/docs/rbac/quick-start.md +57 -5
- package/docs/rbac/rbac-rls-integration.md +68 -6
- package/docs/rbac/super-admin-guide.md +47 -3
- package/docs/rbac/troubleshooting.md +3 -3
- package/docs/security/README.md +68 -3
- package/docs/security/checklist.md +50 -3
- package/docs/standards/01-architecture-standard.md +39 -0
- package/docs/standards/02-api-and-rpc-standard.md +39 -0
- package/docs/standards/03-component-standard.md +32 -0
- package/docs/standards/04-code-style-standard.md +32 -0
- package/docs/standards/05-security-standard.md +30 -0
- package/docs/standards/06-testing-and-docs-standard.md +29 -0
- package/docs/standards/README.md +35 -0
- package/docs/styles/README.md +89 -8
- package/docs/testing/README.md +175 -24
- package/docs/troubleshooting/README.md +50 -3
- package/docs/troubleshooting/common-issues.md +271 -5
- package/docs/troubleshooting/debugging.md +54 -1
- package/docs/troubleshooting/migration.md +54 -1
- package/docs/troubleshooting/organisation-context-setup.md +29 -3
- package/docs/troubleshooting/styling-issues.md +246 -4
- package/{src/components/DataTable/examples → examples/DataTable}/GroupingAggregationExample.tsx +1 -1
- package/examples/{components 2/DataTable/HierarchicalActionsExample.tsx → DataTable/HierarchicalActionsExample.tsx} +7 -6
- package/examples/{components 2/DataTable/HierarchicalExample.tsx → DataTable/HierarchicalExample.tsx} +8 -6
- package/examples/{components 2/DataTable/PerformanceExample.tsx → DataTable/PerformanceExample.tsx} +2 -2
- package/examples/{components 2/DataTable/index.ts → DataTable/index.ts} +1 -0
- package/{src/components/Dialog/examples → examples/Dialog}/HtmlDialogExample.tsx +3 -3
- package/examples/{components 2/Dialog/ScrollableDialogExample.tsx → Dialog/ScrollableDialogExample.tsx} +1 -1
- package/{src/components/Dialog/examples → examples/Dialog}/SmartDialogExample.tsx +1 -1
- package/examples/{components 2/Dialog/index.ts → Dialog/index.ts} +0 -3
- package/examples/{features/public-pages → PublicPages}/CorrectPublicPageImplementation.tsx +52 -17
- package/examples/{features/public-pages → PublicPages}/PublicEventPage.tsx +65 -35
- package/examples/{features/public-pages → PublicPages}/PublicPageApp.tsx +52 -18
- package/examples/{features/public-pages → PublicPages}/PublicPageUsageExample.tsx +28 -15
- package/examples/README.md +81 -33
- package/examples/index.ts +14 -12
- package/examples/{RBAC → rbac}/CompleteRBACExample.tsx +1 -1
- package/examples/{features/rbac → rbac}/EventBasedApp.tsx +4 -4
- package/examples/{features/rbac → rbac}/PermissionExample.tsx +5 -3
- package/package.json +21 -27
- package/src/__tests__/helpers/test-utils.tsx +29 -3
- package/src/__tests__/rbac/PagePermissionGuard.test.tsx +7 -5
- package/src/components/Alert/Alert.test.tsx +2 -2
- package/src/components/Alert/Alert.tsx +4 -4
- package/src/components/Avatar/Avatar.test.tsx +17 -6
- package/src/components/Badge/Badge.test.tsx +1 -1
- package/src/components/Badge/Badge.tsx +2 -2
- package/src/components/Button/Button.test.tsx +2 -2
- package/src/components/Button/Button.tsx +11 -7
- package/src/components/Calendar/Calendar.test.tsx +41 -8
- package/src/components/Calendar/Calendar.tsx +39 -36
- package/src/components/Card/Card.tsx +51 -13
- package/src/components/Checkbox/Checkbox.test.tsx +36 -12
- package/src/components/DataTable/DataTable.test.tsx +1 -1
- package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +13 -7
- package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +14 -42
- package/src/components/DataTable/__tests__/DataTable.export.test.tsx +13 -10
- package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +14 -11
- package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +4 -2
- package/src/components/DataTable/__tests__/DataTable.test.tsx +13 -7
- package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +13 -10
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +15 -11
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +12 -6
- package/src/components/DataTable/__tests__/keyboard.test.tsx +12 -6
- package/src/components/DataTable/__tests__/pagination.modes.test.tsx +10 -6
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +1 -1
- package/src/components/DataTable/components/DataTableBody.tsx +10 -25
- package/src/components/DataTable/components/DataTableCore.tsx +1 -1
- package/src/components/DataTable/components/FilterRow.tsx +3 -1
- package/src/components/DataTable/components/ImportModal.tsx +1 -1
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +9 -9
- package/src/components/DataTable/core/ColumnFactory.ts +6 -6
- package/src/components/DataTable/core/DataTableContext.tsx +14 -10
- package/src/components/DataTable/core/LocalDataAdapter.ts +2 -1
- package/src/components/DataTable/core/PluginRegistry.ts +3 -3
- package/src/components/DataTable/core/StateManager.ts +12 -11
- package/src/components/DataTable/core/__tests__/ActionManager.test.ts +104 -0
- package/src/components/DataTable/core/__tests__/DataManager.test.ts +101 -0
- package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +84 -0
- package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +102 -0
- package/src/components/DataTable/core/__tests__/StateManager.test.ts +104 -0
- package/src/components/DataTable/core/interfaces.ts +17 -17
- package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +124 -0
- package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +117 -0
- package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +102 -0
- package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +53 -0
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -2
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +9 -8
- package/src/components/DataTable/types.ts +5 -5
- package/src/components/DataTable/utils/aggregationUtils.ts +4 -4
- package/src/components/DataTable/utils/columnUtils.ts +3 -2
- package/src/components/DataTable/utils/debugTools.ts +1 -1
- package/src/components/DataTable/utils/exportUtils.ts +6 -6
- package/src/components/DataTable/utils/hierarchicalSorting.ts +6 -6
- package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -8
- package/src/components/DataTable/utils/index.ts +0 -1
- package/src/components/DataTable/utils/performanceUtils.ts +9 -4
- package/src/components/Dialog/Dialog.test.tsx +49 -27
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +13 -8
- package/src/components/EventSelector/EventSelector.test.tsx +60 -12
- package/src/components/EventSelector/EventSelector.tsx +38 -15
- package/src/components/EventSelector/index.ts +2 -2
- package/src/components/FileDisplay/FileDisplay.test.tsx +143 -85
- package/src/components/FileDisplay/FileDisplay.tsx +1 -0
- package/src/components/FileUpload/FileUpload.test.tsx +532 -152
- package/src/components/FileUpload/FileUpload.tsx +43 -8
- package/src/components/Footer/Footer.test.tsx +19 -14
- package/src/components/Form/Form.test.tsx +96 -14
- package/src/components/Form/Form.tsx +210 -1
- package/src/components/Form/index.ts +3 -7
- package/src/components/Header/Header.test.tsx +24 -17
- package/src/components/Header/Header.tsx +3 -1
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +2 -4
- package/src/components/Input/Input.test.tsx +61 -36
- package/src/components/Label/{__tests__/Label.test.tsx → Label.test.tsx} +2 -2
- package/src/components/Label/Label.tsx +2 -3
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +6 -5
- package/src/components/LoadingSpinner/LoadingSpinner.tsx +6 -2
- package/src/components/LoginForm/LoginForm.test.tsx +14 -13
- package/src/components/LoginForm/LoginForm.tsx +1 -1
- package/src/components/LoginForm/index.ts +7 -0
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +233 -20
- package/src/components/NavigationMenu/NavigationMenu.tsx +191 -55
- package/src/components/NavigationMenu/index.ts +1 -1
- package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +20 -11
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +1 -1
- package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.integration.test.tsx → PaceAppLayout.integration.test.tsx} +272 -79
- package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.performance.test.tsx → PaceAppLayout.performance.test.tsx} +155 -32
- package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.security.test.tsx → PaceAppLayout.security.test.tsx} +211 -65
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +498 -210
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +63 -64
- package/src/components/PaceAppLayout/test-setup.tsx +192 -0
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +193 -39
- package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.test.tsx +2 -2
- package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.tsx +10 -4
- package/src/components/PasswordChange/index.ts +2 -0
- package/src/components/Progress/Progress.test.tsx +11 -0
- package/src/components/Progress/Progress.tsx +1 -1
- package/src/components/Progress/index.ts +10 -0
- package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +2 -1
- package/src/components/PublicLayout/PublicLayout.test.tsx +1210 -0
- package/src/components/PublicLayout/PublicPageLayout.tsx +190 -36
- package/src/components/PublicLayout/PublicPageProvider.tsx +8 -7
- package/src/components/PublicLayout/index.ts +10 -28
- package/src/components/Select/Select.test.tsx +7 -7
- package/src/components/Select/Select.tsx +277 -11
- package/src/components/Select/index.ts +1 -2
- package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +232 -0
- package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +40 -19
- package/src/components/Table/{__tests__/Table.test.tsx → Table.test.tsx} +94 -41
- package/src/components/Tabs/Tabs.test.tsx +10 -9
- package/src/components/Tabs/Tabs.tsx +61 -33
- package/src/components/Textarea/Textarea.test.tsx +31 -18
- package/src/components/Toast/Toast.tsx +2 -2
- package/src/components/Tooltip/Tooltip.test.tsx +1 -1
- package/src/components/UserMenu/UserMenu.test.tsx +7 -6
- package/src/components/UserMenu/UserMenu.tsx +2 -2
- package/src/components/index.ts +5 -4
- package/src/constants/performance.ts +19 -8
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +21 -22
- package/src/hooks/__tests__/useEvents.unit.test.ts +5 -4
- package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +2 -2
- package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -0
- package/src/hooks/__tests__/usePermissionCache.unit.test.ts +16 -11
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +1 -3
- package/src/hooks/__tests__/usePublicEvent.unit.test.ts +1 -3
- package/src/hooks/__tests__/useRBAC.unit.test.ts +24 -2
- package/src/hooks/index.ts +4 -0
- package/src/hooks/public/index.ts +2 -0
- package/src/hooks/public/usePublicEvent.ts +4 -6
- package/src/hooks/public/usePublicRouteParams.ts +1 -1
- package/src/hooks/services/useAuth.ts +2 -4
- package/src/hooks/services/useCurrentEvent.ts +1 -1
- package/src/hooks/useAppConfig.ts +1 -1
- package/src/hooks/useDataTablePerformance.ts +2 -2
- package/src/hooks/useEventTheme.ts +1 -1
- package/src/hooks/useEvents.ts +51 -10
- package/src/hooks/useOrganisationPermissions.test.ts +3 -3
- package/src/hooks/useOrganisationPermissions.ts +1 -1
- package/src/hooks/useOrganisationSecurity.ts +2 -2
- package/src/hooks/usePermissionCache.test.ts +9 -9
- package/src/hooks/usePermissionCache.ts +2 -2
- package/src/index.ts +19 -12
- package/src/providers/OrganisationProvider.tsx +73 -9
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
- package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
- package/src/providers/__tests__/EventProvider.test.tsx +24 -15
- package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
- package/src/providers/index.ts +0 -3
- package/src/providers/services/AuthServiceProvider.tsx +2 -17
- package/src/providers/services/EventServiceProvider.tsx +11 -16
- package/src/providers/services/InactivityServiceProvider.tsx +9 -12
- package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
- package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
- package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
- package/src/rbac/adapters.tsx +1 -1
- package/src/rbac/api.ts +20 -4
- package/src/rbac/audit-enhanced.ts +47 -2
- package/src/rbac/audit.ts +47 -2
- package/src/rbac/components/NavigationGuard.tsx +1 -1
- package/src/rbac/components/NavigationProvider.test.tsx +7 -6
- package/src/rbac/components/NavigationProvider.tsx +1 -1
- package/src/rbac/components/PagePermissionGuard.tsx +1 -1
- package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
- package/src/rbac/components/PagePermissionProvider.tsx +1 -1
- package/src/rbac/components/PermissionEnforcer.tsx +1 -1
- package/src/rbac/components/RoleBasedRouter.tsx +1 -1
- package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
- package/src/rbac/components/SecureDataProvider.tsx +1 -1
- package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
- package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
- package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
- package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
- package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
- package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
- package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
- package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
- package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
- package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
- package/src/rbac/hooks/index.ts +3 -0
- package/src/rbac/hooks/usePermissions.ts +31 -85
- package/src/rbac/hooks/useRBAC.test.ts +13 -1
- package/src/rbac/hooks/useRBAC.ts +13 -67
- package/src/rbac/hooks/useResolvedScope.ts +11 -0
- package/src/rbac/hooks/useSecureSupabase.ts +308 -0
- package/src/rbac/index.ts +3 -0
- package/src/rbac/secureClient.ts +53 -6
- package/src/rbac/security.ts +37 -1
- package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
- package/src/rbac/types.ts +3 -2
- package/src/services/AuthService.ts +33 -25
- package/src/services/EventService.ts +57 -31
- package/src/services/InactivityService.ts +33 -53
- package/src/services/OrganisationService.ts +36 -40
- package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
- package/src/services/__tests__/EventService.test.ts +67 -33
- package/src/services/interfaces/IEventService.ts +1 -1
- package/src/styles/core.css +2 -2
- package/src/styles/index.ts +1 -5
- package/src/types/__tests__/guards.test.ts +1 -1
- package/src/types/__tests__/type-validation.test.ts +0 -1
- package/src/types/auth.ts +42 -2
- package/src/types/core.ts +251 -0
- package/src/types/database.ts +11 -496
- package/src/types/event.ts +102 -0
- package/src/types/file-reference.ts +6 -4
- package/src/types/guards.ts +2 -1
- package/src/types/index.ts +48 -14
- package/src/types/lodash.debounce.d.ts +15 -0
- package/src/types/organisation.ts +14 -10
- package/src/types/supabase.ts +15 -17
- package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
- package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
- package/src/utils/app/appNameResolver.ts +1 -1
- package/src/utils/dynamic/dynamicUtils.ts +3 -2
- package/src/utils/file-reference/index.ts +25 -6
- package/src/utils/security/secureErrors.ts +1 -1
- package/src/utils/validation/index.ts +6 -12
- package/src/utils/validation/validationUtils.ts +0 -13
- package/dist/UnifiedAuthProvider-BMJAP6Z7.js +0 -16
- package/dist/auth-DReDSLq9.d.ts +0 -16
- package/dist/chunk-56XJ3TU6.js +0 -11
- package/dist/chunk-56XJ3TU6.js.map +0 -1
- package/dist/chunk-6HLVGAZG.js.map +0 -1
- package/dist/chunk-7QCC6MCP.js +0 -288
- package/dist/chunk-BESYRHQM.js.map +0 -1
- package/dist/chunk-BJPBT3CU.js +0 -21
- package/dist/chunk-BJPBT3CU.js.map +0 -1
- package/dist/chunk-BVYWGZVV.js.map +0 -1
- package/dist/chunk-CPTUD43C.js.map +0 -1
- package/dist/chunk-CX5M4ZAG.js.map +0 -1
- package/dist/chunk-ERGKJX4D.js +0 -15
- package/dist/chunk-ERGKJX4D.js.map +0 -1
- package/dist/chunk-ERISIBYU.js.map +0 -1
- package/dist/chunk-GQA2LIAE.js.map +0 -1
- package/dist/chunk-JISYG63F.js +0 -70
- package/dist/chunk-JISYG63F.js.map +0 -1
- package/dist/chunk-MSHEVJXS.js +0 -27
- package/dist/chunk-MSHEVJXS.js.map +0 -1
- package/dist/chunk-N5YCCUG5.js.map +0 -1
- package/dist/chunk-ONI7Y733.js.map +0 -1
- package/dist/chunk-OWAG3GSU.js.map +0 -1
- package/dist/chunk-P6UUHOIF.js.map +0 -1
- package/dist/chunk-PKW27QVS.js +0 -61
- package/dist/chunk-PKW27QVS.js.map +0 -1
- package/dist/chunk-Q5QRDWKI.js.map +0 -1
- package/dist/chunk-S5OFRT4M.js.map +0 -1
- package/dist/chunk-SBVILCCA.js.map +0 -1
- package/dist/chunk-WM26XK7I.js +0 -2432
- package/dist/chunk-WM26XK7I.js.map +0 -1
- package/dist/chunk-XDNLUEXI.js +0 -138
- package/dist/chunk-XJ2HZOBU.js.map +0 -1
- package/dist/chunk-ZZ2SS7NI.js +0 -237
- package/dist/chunk-ZZ2SS7NI.js.map +0 -1
- package/dist/database-C6jy7EOu.d.ts +0 -500
- package/dist/organisation-D6qRDtbF.d.ts +0 -93
- package/dist/schema-DTDZQe2u.d.ts +0 -28
- package/dist/unified-DQ4VcT7H.d.ts +0 -198
- package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
- package/dist/validation.d.ts +0 -47
- package/dist/validation.js +0 -24
- package/dist/validation.js.map +0 -1
- package/docs/DOCUMENTATION_AUDIT.md +0 -172
- package/docs/DOCUMENTATION_STANDARD.md +0 -137
- package/docs/api/classes/PublicErrorBoundary.md +0 -132
- package/docs/api/interfaces/EventLogoProps.md +0 -152
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
- package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
- package/docs/architecture/rpc-function-standards.md +0 -1106
- package/docs/getting-started/consuming-app-vite-config.md +0 -239
- package/docs/implementation-guides/event-theming-summary.md +0 -226
- package/docs/implementation-guides/public-pages-advanced.md +0 -1038
- package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
- package/docs/migration/v0.4.16-css-first-approach.md +0 -312
- package/docs/migration/v0.4.17-source-path-fix.md +0 -235
- package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
- package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
- package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
- package/docs/rbac/README-rbac-rls-integration.md +0 -374
- package/docs/styles/usage.md +0 -227
- package/docs/testing/visual-testing.md +0 -120
- package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
- package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
- package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
- package/docs/troubleshooting/database-view-compatibility.md +0 -125
- package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
- package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
- package/examples/RBAC/EventBasedApp.tsx +0 -239
- package/examples/RBAC/PermissionExample.tsx +0 -151
- package/examples/STRUCTURE.md +0 -125
- package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
- package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
- package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
- package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
- package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
- package/examples/components 2/index.ts +0 -11
- package/examples/features/index.ts +0 -12
- package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
- package/examples/features/rbac/index.ts +0 -13
- package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
- package/examples/public-pages/PublicEventPage.tsx +0 -274
- package/examples/public-pages/PublicPageApp.tsx +0 -308
- package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
- package/examples/public-pages/index.ts +0 -14
- package/src/__tests__/TEST_STANDARD.md +0 -1008
- package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
- package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
- package/src/components/DataTable/examples/HierarchicalExample.tsx +0 -475
- package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
- package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
- package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
- package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
- package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
- package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
- package/src/components/Dialog/README.md +0 -804
- package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
- package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
- package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
- package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
- package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
- package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
- package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
- package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
- package/src/components/Dialog/utils/safeHtml.ts +0 -185
- package/src/components/EventSelector/types.ts +0 -79
- package/src/components/Form/FormErrorSummary.tsx +0 -113
- package/src/components/Form/FormField.tsx +0 -249
- package/src/components/Form/FormFieldset.tsx +0 -127
- package/src/components/Form/FormLiveRegion.tsx +0 -198
- package/src/components/Input/__mocks__/Input.tsx +0 -2
- package/src/components/NavigationMenu/types.ts +0 -85
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
- package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
- package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
- package/src/components/PasswordReset/index.ts +0 -2
- package/src/components/ProtectedRoute/README.md +0 -164
- package/src/components/PublicLayout/EventLogo.tsx +0 -175
- package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
- package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
- package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
- package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
- package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
- package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
- package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
- package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
- package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
- package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
- package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
- package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
- package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
- package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
- package/src/components/Select/hooks.ts +0 -289
- package/src/hooks/useCounter.test.ts +0 -131
- package/src/hooks/useDebounce.test.ts +0 -375
- package/src/providers/AuthProvider.tsx +0 -15
- package/src/providers/EventProvider.tsx +0 -16
- package/src/providers/InactivityProvider.tsx +0 -15
- package/src/providers/OrganisationProvider.context.test.tsx +0 -169
- package/src/providers/UnifiedAuthProvider.tsx +0 -15
- package/src/types/theme.ts +0 -6
- package/src/types/unified.ts +0 -265
- package/src/utils/appConfig.ts +0 -47
- package/src/utils/appIdResolver.test.ts +0 -499
- package/src/utils/appIdResolver.ts +0 -130
- package/src/utils/appNameResolver.simple.test.ts +0 -212
- package/src/utils/appNameResolver.test.ts +0 -121
- package/src/utils/appNameResolver.ts +0 -191
- package/src/utils/audit.ts +0 -127
- package/src/utils/auth-utils.ts +0 -96
- package/src/utils/bundleAnalysis.ts +0 -129
- package/src/utils/debugLogger.ts +0 -67
- package/src/utils/deviceFingerprint.ts +0 -215
- package/src/utils/dynamicUtils.ts +0 -105
- package/src/utils/file-reference.test.ts +0 -788
- package/src/utils/file-reference.ts +0 -519
- package/src/utils/formatDate.test.ts +0 -237
- package/src/utils/formatting.ts +0 -170
- package/src/utils/lazyLoad.tsx +0 -44
- package/src/utils/logger.ts +0 -179
- package/src/utils/organisationContext.test.ts +0 -322
- package/src/utils/organisationContext.ts +0 -153
- package/src/utils/performanceBenchmark.ts +0 -64
- package/src/utils/performanceBudgets.ts +0 -110
- package/src/utils/permissionTypes.ts +0 -37
- package/src/utils/permissionUtils.test.ts +0 -393
- package/src/utils/permissionUtils.ts +0 -34
- package/src/utils/sanitization.ts +0 -264
- package/src/utils/schemaUtils.ts +0 -37
- package/src/utils/secureDataAccess.test.ts +0 -711
- package/src/utils/secureDataAccess.ts +0 -377
- package/src/utils/secureErrors.ts +0 -79
- package/src/utils/security.ts +0 -156
- package/src/utils/securityMonitor.ts +0 -45
- package/src/utils/sessionTracking.ts +0 -126
- package/src/utils/validation.ts +0 -111
- package/src/utils/validationUtils.ts +0 -120
- package/src/validation/index.ts +0 -12
- /package/dist/{DataTable-4VSEJQ7D.js.map → DataTable-QAB34V6K.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-BMJAP6Z7.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
- /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
- /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
- /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
- /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
- /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
- /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
- /package/examples/{RBAC → rbac}/index.ts +0 -0
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file HierarchicalActionsExample Component Tests
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/DataTable/Examples/__tests__
|
|
5
|
-
* @since 0.4.0
|
|
6
|
-
*
|
|
7
|
-
* Comprehensive test suite for HierarchicalActionsExample component following testing guidelines.
|
|
8
|
-
* Tests cover rendering, hierarchical actions configuration, and data structure.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import React from 'react';
|
|
12
|
-
import { render, screen, within } from '@testing-library/react';
|
|
13
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
14
|
-
import { HierarchicalActionsExample } from '../HierarchicalActionsExample';
|
|
15
|
-
|
|
16
|
-
// Mock lucide-react icons - include all icons used by HierarchicalActionsExample
|
|
17
|
-
vi.mock('lucide-react', async () => {
|
|
18
|
-
const actual = await vi.importActual('lucide-react');
|
|
19
|
-
return {
|
|
20
|
-
...actual,
|
|
21
|
-
// Use actual icon names as imported in the component
|
|
22
|
-
EyeIcon: ({ className }: { className?: string }) => <div data-testid="eye-icon" className={className} />,
|
|
23
|
-
InfoIcon: ({ className }: { className?: string }) => <div data-testid="info-icon" className={className} />,
|
|
24
|
-
PencilIcon: ({ className }: { className?: string }) => <div data-testid="pencil-icon" className={className} />,
|
|
25
|
-
SettingsIcon: ({ className }: { className?: string }) => <div data-testid="settings-icon" className={className} />,
|
|
26
|
-
CopyIcon: ({ className }: { className?: string }) => <div data-testid="copy-icon" className={className} />,
|
|
27
|
-
PlusIcon: ({ className }: { className?: string }) => <div data-testid="plus-icon" className={className} />,
|
|
28
|
-
DownloadIcon: ({ className }: { className?: string }) => <div data-testid="download-icon" className={className} />,
|
|
29
|
-
UploadIcon: ({ className }: { className?: string }) => <div data-testid="upload-icon" className={className} />,
|
|
30
|
-
StarIcon: ({ className }: { className?: string }) => <div data-testid="star-icon" className={className} />,
|
|
31
|
-
TrashIcon: ({ className }: { className?: string }) => <div data-testid="trash-icon" className={className} />,
|
|
32
|
-
};
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
// Mock UnifiedAuthProvider
|
|
36
|
-
vi.mock('../../../providers/UnifiedAuthProvider', () => ({
|
|
37
|
-
useUnifiedAuth: vi.fn(() => ({
|
|
38
|
-
user: { id: 'test-user', email: 'test@example.com' },
|
|
39
|
-
isAuthenticated: true,
|
|
40
|
-
isLoading: false,
|
|
41
|
-
error: null,
|
|
42
|
-
})),
|
|
43
|
-
}));
|
|
44
|
-
|
|
45
|
-
// Mock DataTable to avoid complex dependencies
|
|
46
|
-
// Import path in HierarchicalActionsExample is: import { DataTable } from '../DataTable';
|
|
47
|
-
vi.mock('../DataTable', async () => {
|
|
48
|
-
const React = await import('react');
|
|
49
|
-
return {
|
|
50
|
-
DataTable: ({
|
|
51
|
-
data,
|
|
52
|
-
columns,
|
|
53
|
-
title,
|
|
54
|
-
rbac,
|
|
55
|
-
features,
|
|
56
|
-
hierarchical,
|
|
57
|
-
actions,
|
|
58
|
-
onEditRow,
|
|
59
|
-
onDeleteRow,
|
|
60
|
-
onExpandedChange,
|
|
61
|
-
}: any) => React.createElement('div', { 'data-testid': 'hierarchical-data-table' },
|
|
62
|
-
React.createElement('h2', null, title),
|
|
63
|
-
React.createElement('div', { 'data-testid': 'data-count' }, data?.length || 0),
|
|
64
|
-
React.createElement('div', { 'data-testid': 'columns-count' }, columns?.length || 0),
|
|
65
|
-
React.createElement('div', { 'data-testid': 'actions-count' }, actions?.length || 0),
|
|
66
|
-
React.createElement('div', { 'data-testid': 'hierarchical-enabled' }, hierarchical?.enabled ? 'true' : 'false'),
|
|
67
|
-
React.createElement('div', { 'data-testid': 'default-expanded' }, hierarchical?.defaultExpanded === false ? 'false' : 'true'),
|
|
68
|
-
React.createElement('div', { 'data-testid': 'rbac-config' }, rbac ? 'true' : 'false'),
|
|
69
|
-
React.createElement('div', { 'data-testid': 'features-config' }, features ? 'true' : 'false'),
|
|
70
|
-
React.createElement('div', { 'data-testid': 'on-edit-row' }, onEditRow ? 'true' : 'false'),
|
|
71
|
-
React.createElement('div', { 'data-testid': 'on-delete-row' }, onDeleteRow ? 'true' : 'false'),
|
|
72
|
-
React.createElement('div', { 'data-testid': 'on-expanded-change' }, onExpandedChange ? 'true' : 'false')
|
|
73
|
-
),
|
|
74
|
-
};
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
// Mock RBAC hooks - must come AFTER DataTable mock to handle real DataTable rendering
|
|
78
|
-
vi.mock('../../../../rbac/hooks', () => ({
|
|
79
|
-
useCan: vi.fn(() => ({
|
|
80
|
-
can: true,
|
|
81
|
-
isLoading: false,
|
|
82
|
-
error: null,
|
|
83
|
-
})),
|
|
84
|
-
useResolvedScope: vi.fn(() => ({
|
|
85
|
-
resolvedScope: {
|
|
86
|
-
organisationId: 'test-org-id',
|
|
87
|
-
eventId: 'test-event-id',
|
|
88
|
-
appId: 'test-app-id',
|
|
89
|
-
},
|
|
90
|
-
isLoading: false,
|
|
91
|
-
error: null,
|
|
92
|
-
})),
|
|
93
|
-
}));
|
|
94
|
-
|
|
95
|
-
// Mock logger
|
|
96
|
-
vi.mock('../../../utils/core/logger', () => ({
|
|
97
|
-
createLogger: () => ({
|
|
98
|
-
debug: vi.fn(),
|
|
99
|
-
info: vi.fn(),
|
|
100
|
-
warn: vi.fn(),
|
|
101
|
-
error: vi.fn(),
|
|
102
|
-
}),
|
|
103
|
-
}));
|
|
104
|
-
|
|
105
|
-
describe('[example] HierarchicalActionsExample', () => {
|
|
106
|
-
beforeEach(() => {
|
|
107
|
-
vi.clearAllMocks();
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
describe('Rendering', () => {
|
|
111
|
-
it('renders example component', () => {
|
|
112
|
-
render(<HierarchicalActionsExample />);
|
|
113
|
-
|
|
114
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it('renders main heading', () => {
|
|
118
|
-
render(<HierarchicalActionsExample />);
|
|
119
|
-
|
|
120
|
-
const headings = screen.getAllByRole('heading', { level: 2 });
|
|
121
|
-
expect(headings.length).toBeGreaterThan(0);
|
|
122
|
-
expect(headings[0]).toHaveTextContent('Hierarchical Actions Example');
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
it('renders description paragraph', () => {
|
|
126
|
-
render(<HierarchicalActionsExample />);
|
|
127
|
-
|
|
128
|
-
expect(screen.getByText(/This example demonstrates different action icons and labels/i)).toBeInTheDocument();
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
it('renders action features list', () => {
|
|
132
|
-
render(<HierarchicalActionsExample />);
|
|
133
|
-
|
|
134
|
-
expect(screen.getByText(/Action Features:/i)).toBeInTheDocument();
|
|
135
|
-
expect(screen.getByText(/Expand\/Collapse All:/i)).toBeInTheDocument();
|
|
136
|
-
expect(screen.getByText(/View Details:/i)).toBeInTheDocument();
|
|
137
|
-
expect(screen.getByText(/Edit:/i)).toBeInTheDocument();
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
it('renders DataTable with hierarchical configuration', () => {
|
|
141
|
-
// The component should render without errors
|
|
142
|
-
const { container } = render(<HierarchicalActionsExample />);
|
|
143
|
-
|
|
144
|
-
// Verify the component structure exists
|
|
145
|
-
expect(container).toBeInTheDocument();
|
|
146
|
-
|
|
147
|
-
// The DataTable component should be rendered (either real or mocked)
|
|
148
|
-
// Since mocking is complex, we verify the example component itself renders
|
|
149
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
describe('Data Configuration', () => {
|
|
154
|
-
it('provides hierarchical data to table', () => {
|
|
155
|
-
// Component should render successfully with hierarchical data
|
|
156
|
-
render(<HierarchicalActionsExample />);
|
|
157
|
-
|
|
158
|
-
// Verify component renders without errors
|
|
159
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
it('provides hierarchical columns configuration', () => {
|
|
163
|
-
// Component should render successfully with hierarchical columns
|
|
164
|
-
render(<HierarchicalActionsExample />);
|
|
165
|
-
|
|
166
|
-
// Verify component renders without errors
|
|
167
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
describe('Hierarchical Configuration', () => {
|
|
172
|
-
it('enables hierarchical mode', () => {
|
|
173
|
-
// Component should configure hierarchical mode
|
|
174
|
-
render(<HierarchicalActionsExample />);
|
|
175
|
-
|
|
176
|
-
// Verify component renders successfully
|
|
177
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
it('sets default expanded state to false', () => {
|
|
181
|
-
// Component should set default expanded state
|
|
182
|
-
render(<HierarchicalActionsExample />);
|
|
183
|
-
|
|
184
|
-
// Verify component renders successfully
|
|
185
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
it('provides hierarchical configuration with styling', () => {
|
|
189
|
-
// Component should provide hierarchical configuration
|
|
190
|
-
render(<HierarchicalActionsExample />);
|
|
191
|
-
|
|
192
|
-
// Verify component renders successfully
|
|
193
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
describe('Actions Configuration', () => {
|
|
198
|
-
it('provides hierarchical actions to table', () => {
|
|
199
|
-
// Component should provide hierarchical actions
|
|
200
|
-
render(<HierarchicalActionsExample />);
|
|
201
|
-
|
|
202
|
-
// Verify component renders successfully
|
|
203
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
it('includes actions with parent/child variations', () => {
|
|
207
|
-
// Component should include parent/child action variations
|
|
208
|
-
render(<HierarchicalActionsExample />);
|
|
209
|
-
|
|
210
|
-
// Verify component renders successfully
|
|
211
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
describe('Feature Configuration', () => {
|
|
216
|
-
it('configures appropriate features for hierarchical table', () => {
|
|
217
|
-
// Component should configure features
|
|
218
|
-
render(<HierarchicalActionsExample />);
|
|
219
|
-
|
|
220
|
-
// Verify component renders successfully
|
|
221
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
it('enables hierarchical feature', () => {
|
|
225
|
-
// Component should enable hierarchical feature
|
|
226
|
-
render(<HierarchicalActionsExample />);
|
|
227
|
-
|
|
228
|
-
// Verify component renders successfully
|
|
229
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
describe('RBAC Configuration', () => {
|
|
234
|
-
it('provides RBAC configuration', () => {
|
|
235
|
-
// Component should provide RBAC configuration
|
|
236
|
-
render(<HierarchicalActionsExample />);
|
|
237
|
-
|
|
238
|
-
// Verify component renders successfully
|
|
239
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
240
|
-
});
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
describe('Event Handlers', () => {
|
|
244
|
-
it('provides onEditRow handler', () => {
|
|
245
|
-
// Component should provide onEditRow handler
|
|
246
|
-
render(<HierarchicalActionsExample />);
|
|
247
|
-
|
|
248
|
-
// Verify component renders successfully
|
|
249
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
it('provides onDeleteRow handler', () => {
|
|
253
|
-
// Component should provide onDeleteRow handler
|
|
254
|
-
render(<HierarchicalActionsExample />);
|
|
255
|
-
|
|
256
|
-
// Verify component renders successfully
|
|
257
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
258
|
-
});
|
|
259
|
-
|
|
260
|
-
it('provides onExpandedChange handler', () => {
|
|
261
|
-
// Component should provide onExpandedChange handler
|
|
262
|
-
render(<HierarchicalActionsExample />);
|
|
263
|
-
|
|
264
|
-
// Verify component renders successfully
|
|
265
|
-
expect(screen.getByText('Hierarchical Actions Example')).toBeInTheDocument();
|
|
266
|
-
});
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
describe('Documentation', () => {
|
|
270
|
-
it('includes comprehensive feature list', () => {
|
|
271
|
-
render(<HierarchicalActionsExample />);
|
|
272
|
-
|
|
273
|
-
expect(screen.getByText(/Expand\/Collapse All:/i)).toBeInTheDocument();
|
|
274
|
-
expect(screen.getByText(/View Details:/i)).toBeInTheDocument();
|
|
275
|
-
expect(screen.getByText(/Edit:/i)).toBeInTheDocument();
|
|
276
|
-
expect(screen.getByText(/Copy Recipe:/i)).toBeInTheDocument();
|
|
277
|
-
expect(screen.getByText(/Add Ingredient:/i)).toBeInTheDocument();
|
|
278
|
-
expect(screen.getByText(/Export:/i)).toBeInTheDocument();
|
|
279
|
-
expect(screen.getByText(/Star:/i)).toBeInTheDocument();
|
|
280
|
-
expect(screen.getByText(/Delete:/i)).toBeInTheDocument();
|
|
281
|
-
});
|
|
282
|
-
|
|
283
|
-
it('describes parent vs child row behavior', () => {
|
|
284
|
-
render(<HierarchicalActionsExample />);
|
|
285
|
-
|
|
286
|
-
// The description text might be split across elements or appear multiple times
|
|
287
|
-
const differentIconsElements = screen.getAllByText(/Different icons/i);
|
|
288
|
-
expect(differentIconsElements.length).toBeGreaterThan(0);
|
|
289
|
-
|
|
290
|
-
// Check that either dishes or ingredients text appears (may appear multiple times)
|
|
291
|
-
const dishesTexts = screen.queryAllByText(/for dishes/i);
|
|
292
|
-
const ingredientsTexts = screen.queryAllByText(/for ingredients/i);
|
|
293
|
-
expect(dishesTexts.length > 0 || ingredientsTexts.length > 0).toBe(true);
|
|
294
|
-
});
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
describe('Component Structure', () => {
|
|
298
|
-
it('has proper layout structure', () => {
|
|
299
|
-
render(<HierarchicalActionsExample />);
|
|
300
|
-
|
|
301
|
-
const heading = screen.getByText('Hierarchical Actions Example');
|
|
302
|
-
expect(heading).toBeInTheDocument();
|
|
303
|
-
|
|
304
|
-
// Check that the component renders (layout structure exists)
|
|
305
|
-
const container = heading.parentElement || heading.closest('div');
|
|
306
|
-
expect(container).toBeInTheDocument();
|
|
307
|
-
});
|
|
308
|
-
|
|
309
|
-
it('includes feature description section', () => {
|
|
310
|
-
render(<HierarchicalActionsExample />);
|
|
311
|
-
|
|
312
|
-
const featureSection = screen.getByText('Action Features:').parentElement;
|
|
313
|
-
expect(featureSection).toBeInTheDocument();
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
});
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file HierarchicalExample Unit Tests
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/DataTable/Examples/Tests
|
|
5
|
-
* @since 0.4.35
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import React from 'react';
|
|
9
|
-
import { screen } from '@testing-library/react';
|
|
10
|
-
import { describe, it, expect } from 'vitest';
|
|
11
|
-
import '@testing-library/jest-dom';
|
|
12
|
-
import { renderWithProviders } from '../../../../__tests__/helpers/test-utils';
|
|
13
|
-
|
|
14
|
-
// Mock the example component
|
|
15
|
-
const HierarchicalDataTableExample = () => (
|
|
16
|
-
<div>
|
|
17
|
-
<h2>Hierarchical DataTable Example</h2>
|
|
18
|
-
<p>Parent-child row relationships with expand/collapse functionality</p>
|
|
19
|
-
</div>
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
describe('HierarchicalDataTableExample Component', () => {
|
|
23
|
-
describe('Rendering', () => {
|
|
24
|
-
it('renders without crashing', () => {
|
|
25
|
-
renderWithProviders(<HierarchicalDataTableExample />);
|
|
26
|
-
expect(screen.getByText('Hierarchical DataTable Example')).toBeInTheDocument();
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('renders the title and description', () => {
|
|
30
|
-
renderWithProviders(<HierarchicalDataTableExample />);
|
|
31
|
-
|
|
32
|
-
expect(screen.getByText('Hierarchical DataTable Example')).toBeInTheDocument();
|
|
33
|
-
expect(screen.getByText(/Parent-child row relationships with expand\/collapse/)).toBeInTheDocument();
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
describe('Component Structure', () => {
|
|
38
|
-
it('has proper heading structure', () => {
|
|
39
|
-
renderWithProviders(<HierarchicalDataTableExample />);
|
|
40
|
-
|
|
41
|
-
expect(screen.getByRole('heading', { level: 2, name: 'Hierarchical DataTable Example' })).toBeInTheDocument();
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file InitialPageSizeExample Component Tests
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/DataTable/Examples/__tests__
|
|
5
|
-
* @since 0.4.0
|
|
6
|
-
*
|
|
7
|
-
* Comprehensive test suite for InitialPageSizeExample component following testing guidelines.
|
|
8
|
-
* Tests cover rendering, initial page size configuration, and edge cases.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import React from 'react';
|
|
12
|
-
import { render, screen, within } from '@testing-library/react';
|
|
13
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
14
|
-
import { InitialPageSizeExample } from '../InitialPageSizeExample';
|
|
15
|
-
|
|
16
|
-
// Mock UnifiedAuthProvider
|
|
17
|
-
vi.mock('../../../providers/UnifiedAuthProvider', () => ({
|
|
18
|
-
useUnifiedAuth: vi.fn(() => ({
|
|
19
|
-
user: { id: 'test-user', email: 'test@example.com' },
|
|
20
|
-
isAuthenticated: true,
|
|
21
|
-
isLoading: false,
|
|
22
|
-
error: null,
|
|
23
|
-
})),
|
|
24
|
-
}));
|
|
25
|
-
|
|
26
|
-
// Mock RBAC hooks
|
|
27
|
-
vi.mock('../../../rbac/hooks', () => ({
|
|
28
|
-
useCan: vi.fn(() => ({
|
|
29
|
-
can: true,
|
|
30
|
-
isLoading: false,
|
|
31
|
-
error: null,
|
|
32
|
-
})),
|
|
33
|
-
}));
|
|
34
|
-
|
|
35
|
-
// Mock DataTable to avoid complex dependencies - need to mock at the import path used
|
|
36
|
-
vi.mock('@jmruthers/pace-core', async () => {
|
|
37
|
-
const actual = await vi.importActual('@jmruthers/pace-core');
|
|
38
|
-
return {
|
|
39
|
-
...actual,
|
|
40
|
-
DataTable: ({
|
|
41
|
-
data,
|
|
42
|
-
columns,
|
|
43
|
-
title,
|
|
44
|
-
description,
|
|
45
|
-
initialPageSize,
|
|
46
|
-
rbac,
|
|
47
|
-
features
|
|
48
|
-
}: any) => (
|
|
49
|
-
<div data-testid="data-table">
|
|
50
|
-
<h2>{title}</h2>
|
|
51
|
-
<p>{description}</p>
|
|
52
|
-
<div data-testid="initial-page-size">{initialPageSize || 'default'}</div>
|
|
53
|
-
<div data-testid="data-count">{data?.length || 0}</div>
|
|
54
|
-
<div data-testid="columns-count">{columns?.length || 0}</div>
|
|
55
|
-
</div>
|
|
56
|
-
),
|
|
57
|
-
};
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
describe('[example] InitialPageSizeExample', () => {
|
|
61
|
-
beforeEach(() => {
|
|
62
|
-
vi.clearAllMocks();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
describe('Rendering', () => {
|
|
66
|
-
it('renders example component', () => {
|
|
67
|
-
render(<InitialPageSizeExample />);
|
|
68
|
-
|
|
69
|
-
expect(screen.getByText('DataTable with Custom Initial Page Size')).toBeInTheDocument();
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it('renders all three example sections', () => {
|
|
73
|
-
render(<InitialPageSizeExample />);
|
|
74
|
-
|
|
75
|
-
expect(screen.getByText('DataTable with Custom Initial Page Size')).toBeInTheDocument();
|
|
76
|
-
expect(screen.getByText('Default Page Size (10 items)')).toBeInTheDocument();
|
|
77
|
-
expect(screen.getByText('Invalid Page Size (with validation)')).toBeInTheDocument();
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('renders table with custom initial page size', () => {
|
|
81
|
-
render(<InitialPageSizeExample />);
|
|
82
|
-
|
|
83
|
-
const tables = screen.getAllByTestId('data-table');
|
|
84
|
-
expect(tables.length).toBeGreaterThan(0);
|
|
85
|
-
|
|
86
|
-
// First table should have initialPageSize of 25
|
|
87
|
-
const firstTable = tables[0];
|
|
88
|
-
const pageSizeDisplay = within(firstTable).getByTestId('initial-page-size');
|
|
89
|
-
expect(pageSizeDisplay).toHaveTextContent('25');
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('renders table with default page size', () => {
|
|
93
|
-
render(<InitialPageSizeExample />);
|
|
94
|
-
|
|
95
|
-
const tables = screen.getAllByTestId('data-table');
|
|
96
|
-
|
|
97
|
-
// Second table should use default page size
|
|
98
|
-
const secondTable = tables[1];
|
|
99
|
-
const pageSizeDisplay = within(secondTable).getByTestId('initial-page-size');
|
|
100
|
-
expect(pageSizeDisplay).toHaveTextContent('default');
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it('renders table with invalid page size', () => {
|
|
104
|
-
render(<InitialPageSizeExample />);
|
|
105
|
-
|
|
106
|
-
const tables = screen.getAllByTestId('data-table');
|
|
107
|
-
|
|
108
|
-
// Third table has invalid page size (15)
|
|
109
|
-
const thirdTable = tables[2];
|
|
110
|
-
const pageSizeDisplay = within(thirdTable).getByTestId('initial-page-size');
|
|
111
|
-
expect(pageSizeDisplay).toHaveTextContent('15');
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
describe('Data Configuration', () => {
|
|
116
|
-
it('provides sample data to all tables', () => {
|
|
117
|
-
render(<InitialPageSizeExample />);
|
|
118
|
-
|
|
119
|
-
const tables = screen.getAllByTestId('data-table');
|
|
120
|
-
|
|
121
|
-
tables.forEach(table => {
|
|
122
|
-
const dataCount = within(table).getByTestId('data-count');
|
|
123
|
-
expect(dataCount).toHaveTextContent('50');
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it('provides columns configuration to all tables', () => {
|
|
128
|
-
render(<InitialPageSizeExample />);
|
|
129
|
-
|
|
130
|
-
const tables = screen.getAllByTestId('data-table');
|
|
131
|
-
|
|
132
|
-
tables.forEach(table => {
|
|
133
|
-
const columnsCount = within(table).getByTestId('columns-count');
|
|
134
|
-
expect(columnsCount).toHaveTextContent('4');
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
describe('Feature Configuration', () => {
|
|
140
|
-
it('configures features for all tables consistently', () => {
|
|
141
|
-
render(<InitialPageSizeExample />);
|
|
142
|
-
|
|
143
|
-
const tables = screen.getAllByTestId('data-table');
|
|
144
|
-
|
|
145
|
-
// All tables should render
|
|
146
|
-
expect(tables.length).toBe(3);
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
it('disables import and export for all examples', () => {
|
|
150
|
-
render(<InitialPageSizeExample />);
|
|
151
|
-
|
|
152
|
-
const tables = screen.getAllByTestId('data-table');
|
|
153
|
-
|
|
154
|
-
// Tables should render (features are passed but mocked)
|
|
155
|
-
expect(tables.length).toBe(3);
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
describe('RBAC Configuration', () => {
|
|
160
|
-
it('provides RBAC configuration to all tables', () => {
|
|
161
|
-
render(<InitialPageSizeExample />);
|
|
162
|
-
|
|
163
|
-
const tables = screen.getAllByTestId('data-table');
|
|
164
|
-
|
|
165
|
-
// All tables should render with RBAC
|
|
166
|
-
expect(tables.length).toBe(3);
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
describe('Descriptions', () => {
|
|
171
|
-
it('provides descriptive text for custom page size example', () => {
|
|
172
|
-
render(<InitialPageSizeExample />);
|
|
173
|
-
|
|
174
|
-
expect(screen.getByText(/This example shows how to set a custom initial page size/i)).toBeInTheDocument();
|
|
175
|
-
expect(screen.getByText(/The table will start with 25 items per page instead of the default 10/i)).toBeInTheDocument();
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
it('provides descriptive text for default page size example', () => {
|
|
179
|
-
render(<InitialPageSizeExample />);
|
|
180
|
-
|
|
181
|
-
expect(screen.getByText(/This table uses the default page size of 10 items per page/i)).toBeInTheDocument();
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
it('provides descriptive text for invalid page size example', () => {
|
|
185
|
-
render(<InitialPageSizeExample />);
|
|
186
|
-
|
|
187
|
-
expect(screen.getByText(/This table tries to use an invalid page size/i)).toBeInTheDocument();
|
|
188
|
-
expect(screen.getByText(/The component will automatically use the closest valid option/i)).toBeInTheDocument();
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
describe('Component Structure', () => {
|
|
193
|
-
it('has proper heading hierarchy', () => {
|
|
194
|
-
render(<InitialPageSizeExample />);
|
|
195
|
-
|
|
196
|
-
const h2s = screen.getAllByRole('heading', { level: 2 });
|
|
197
|
-
expect(h2s.length).toBeGreaterThan(0);
|
|
198
|
-
expect(h2s[0]).toHaveTextContent('DataTable with Custom Initial Page Size');
|
|
199
|
-
|
|
200
|
-
const h3s = screen.getAllByRole('heading', { level: 3 });
|
|
201
|
-
expect(h3s.length).toBe(2);
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
it('organizes examples in space-y-8 layout', () => {
|
|
205
|
-
render(<InitialPageSizeExample />);
|
|
206
|
-
|
|
207
|
-
const container = screen.getByText('DataTable with Custom Initial Page Size').closest('.space-y-8');
|
|
208
|
-
expect(container).toBeInTheDocument();
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
});
|