@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,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Basic HTML Test
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/Dialog/Examples
|
|
5
|
-
* @since 0.4.37
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import React, { useState } from 'react';
|
|
9
|
-
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogBody, DialogFooter } from '../Dialog';
|
|
10
|
-
import { Button } from '../../Button';
|
|
11
|
-
|
|
12
|
-
export function BasicHtmlTest() {
|
|
13
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
14
|
-
|
|
15
|
-
return (
|
|
16
|
-
<div className="p-4">
|
|
17
|
-
<h2 className="text-xl font-bold mb-4">Basic HTML Test</h2>
|
|
18
|
-
|
|
19
|
-
<div className="mb-4">
|
|
20
|
-
<h3 className="font-semibold mb-2">Test 1: Direct dangerouslySetInnerHTML</h3>
|
|
21
|
-
<div
|
|
22
|
-
dangerouslySetInnerHTML={{ __html: '<p>Hello <strong>world</strong>!</p>' }}
|
|
23
|
-
className="bg-main-50 p-2 rounded"
|
|
24
|
-
/>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
<div className="mb-4">
|
|
28
|
-
<h3 className="font-semibold mb-2">Test 2: Dialog with HTML content</h3>
|
|
29
|
-
<Button onClick={() => setIsOpen(true)}>
|
|
30
|
-
Open Dialog
|
|
31
|
-
</Button>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
|
35
|
-
<DialogContent size="md">
|
|
36
|
-
<DialogHeader>
|
|
37
|
-
<DialogTitle>HTML Test</DialogTitle>
|
|
38
|
-
</DialogHeader>
|
|
39
|
-
|
|
40
|
-
<DialogBody htmlContent="<p>Hello <strong>world</strong>!</p>" allowHtml={true}>
|
|
41
|
-
<div className="text-acc-500">
|
|
42
|
-
HTML content failed to render. This is fallback content.
|
|
43
|
-
</div>
|
|
44
|
-
</DialogBody>
|
|
45
|
-
|
|
46
|
-
<DialogFooter>
|
|
47
|
-
<Button variant="outline" onClick={() => setIsOpen(false)}>
|
|
48
|
-
Close
|
|
49
|
-
</Button>
|
|
50
|
-
</DialogFooter>
|
|
51
|
-
</DialogContent>
|
|
52
|
-
</Dialog>
|
|
53
|
-
</div>
|
|
54
|
-
);
|
|
55
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Debug HTML Content Example
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/Dialog/Examples
|
|
5
|
-
* @since 0.4.37
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import React, { useState } from 'react';
|
|
9
|
-
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogBody, DialogFooter } from '../Dialog';
|
|
10
|
-
import { Button } from '../../Button';
|
|
11
|
-
|
|
12
|
-
export function DebugHtmlExample() {
|
|
13
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
14
|
-
|
|
15
|
-
const testHtml = `
|
|
16
|
-
<p class="text-sm text-sec-600 mb-4">Upload a CSV file with dish or recipe data. The system will automatically detect the format based on your column headers.</p>
|
|
17
|
-
|
|
18
|
-
<div class="bg-main-50 p-4 rounded-lg">
|
|
19
|
-
<h3 class="font-semibold text-main-900 mb-2">Dish Format (3 columns)</h3>
|
|
20
|
-
<p class="text-sm text-main-800 mb-2">Perfect for importing basic dish information:</p>
|
|
21
|
-
<div class="space-y-1">
|
|
22
|
-
<p class="text-sm"><strong>Required:</strong> <code>dish_code</code>, <code>dish_name</code>, <code>mealtype_name</code></p>
|
|
23
|
-
<p class="text-sm"><strong>Optional:</strong> <code>dish_description</code></p>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
`;
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<div className="p-4">
|
|
30
|
-
<h2 className="text-xl font-bold mb-4">Debug HTML Content</h2>
|
|
31
|
-
|
|
32
|
-
<div className="mb-4">
|
|
33
|
-
<h3 className="font-semibold mb-2">Raw HTML String:</h3>
|
|
34
|
-
<pre className="bg-sec-100 p-2 rounded text-xs overflow-auto">
|
|
35
|
-
{testHtml}
|
|
36
|
-
</pre>
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
<Button onClick={() => setIsOpen(true)}>
|
|
40
|
-
Open Dialog with HTML Content
|
|
41
|
-
</Button>
|
|
42
|
-
|
|
43
|
-
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
|
44
|
-
<DialogContent size="lg">
|
|
45
|
-
<DialogHeader>
|
|
46
|
-
<DialogTitle>Import Dishes or Recipes</DialogTitle>
|
|
47
|
-
</DialogHeader>
|
|
48
|
-
|
|
49
|
-
<DialogBody htmlContent={testHtml} allowHtml={true}>
|
|
50
|
-
{/* Fallback content if HTML rendering fails */}
|
|
51
|
-
<div className="text-acc-500">
|
|
52
|
-
HTML content failed to render. This is fallback content.
|
|
53
|
-
</div>
|
|
54
|
-
</DialogBody>
|
|
55
|
-
|
|
56
|
-
<DialogFooter>
|
|
57
|
-
<Button variant="outline" onClick={() => setIsOpen(false)}>
|
|
58
|
-
Cancel
|
|
59
|
-
</Button>
|
|
60
|
-
<Button onClick={() => setIsOpen(false)}>
|
|
61
|
-
Import Data
|
|
62
|
-
</Button>
|
|
63
|
-
</DialogFooter>
|
|
64
|
-
</DialogContent>
|
|
65
|
-
</Dialog>
|
|
66
|
-
</div>
|
|
67
|
-
);
|
|
68
|
-
}
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Scrollable Dialog Example with Height and Width Constraints
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/Dialog/Examples
|
|
5
|
-
* @since 0.1.0
|
|
6
|
-
*
|
|
7
|
-
* Complete example demonstrating Dialog component with:
|
|
8
|
-
* - Scrolling enabled
|
|
9
|
-
* - Height constraints (percentage and fixed)
|
|
10
|
-
* - Width constraints (percentage and fixed)
|
|
11
|
-
* - Sticky headers and footers
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import React from 'react';
|
|
15
|
-
import {
|
|
16
|
-
Dialog,
|
|
17
|
-
DialogTrigger,
|
|
18
|
-
DialogContent,
|
|
19
|
-
DialogHeader,
|
|
20
|
-
DialogBody,
|
|
21
|
-
DialogFooter,
|
|
22
|
-
DialogTitle,
|
|
23
|
-
DialogDescription,
|
|
24
|
-
Button,
|
|
25
|
-
Card,
|
|
26
|
-
} from '../../../index';
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Example demonstrating Dialog with scrolling, height, and width constraints
|
|
30
|
-
*/
|
|
31
|
-
export function ScrollableDialogExample() {
|
|
32
|
-
// Generate long content for scrolling demonstration
|
|
33
|
-
const generateLongContent = (count: number) => {
|
|
34
|
-
return Array.from({ length: count }, (_, i) => (
|
|
35
|
-
<Card key={i} className="p-4">
|
|
36
|
-
<h4>Content Section {i + 1}</h4>
|
|
37
|
-
<p>
|
|
38
|
-
This is content section {i + 1}. In a real application, this could be form fields,
|
|
39
|
-
data displays, tables, or any other content that might make the dialog tall.
|
|
40
|
-
The dialog will automatically show a scrollbar when content exceeds the height constraints.
|
|
41
|
-
</p>
|
|
42
|
-
<p>
|
|
43
|
-
You can scroll through all the content while the header and footer remain visible
|
|
44
|
-
at the top and bottom of the dialog.
|
|
45
|
-
</p>
|
|
46
|
-
</Card>
|
|
47
|
-
));
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
return (
|
|
51
|
-
<div className="p-6 space-y-6">
|
|
52
|
-
<div>
|
|
53
|
-
<h2>Scrollable Dialog with Constraints</h2>
|
|
54
|
-
<p>Examples demonstrating dialogs with scrolling, height, and width constraints.</p>
|
|
55
|
-
</div>
|
|
56
|
-
|
|
57
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
58
|
-
{/* Example 1: Percentage-based constraints */}
|
|
59
|
-
<Dialog>
|
|
60
|
-
<DialogTrigger asChild>
|
|
61
|
-
<Button variant="outline" className="w-full">
|
|
62
|
-
Percentage Constraints
|
|
63
|
-
</Button>
|
|
64
|
-
</DialogTrigger>
|
|
65
|
-
<DialogContent
|
|
66
|
-
enableScrolling={true}
|
|
67
|
-
maxHeightPercent={80}
|
|
68
|
-
maxWidthPercent={90}
|
|
69
|
-
>
|
|
70
|
-
<DialogHeader sticky={true}>
|
|
71
|
-
<DialogTitle>Percentage-Based Constraints</DialogTitle>
|
|
72
|
-
<DialogDescription>
|
|
73
|
-
This dialog uses 90% of viewport width and 80% of viewport height.
|
|
74
|
-
Content will scroll when it exceeds these constraints.
|
|
75
|
-
</DialogDescription>
|
|
76
|
-
</DialogHeader>
|
|
77
|
-
<DialogBody>
|
|
78
|
-
<div className="space-y-4">
|
|
79
|
-
{generateLongContent(25)}
|
|
80
|
-
</div>
|
|
81
|
-
</DialogBody>
|
|
82
|
-
<DialogFooter sticky={true}>
|
|
83
|
-
<Button variant="outline">Cancel</Button>
|
|
84
|
-
<Button>Save Changes</Button>
|
|
85
|
-
</DialogFooter>
|
|
86
|
-
</DialogContent>
|
|
87
|
-
</Dialog>
|
|
88
|
-
|
|
89
|
-
{/* Example 2: Fixed pixel constraints */}
|
|
90
|
-
<Dialog>
|
|
91
|
-
<DialogTrigger asChild>
|
|
92
|
-
<Button variant="outline" className="w-full">
|
|
93
|
-
Fixed Pixel Constraints
|
|
94
|
-
</Button>
|
|
95
|
-
</DialogTrigger>
|
|
96
|
-
<DialogContent
|
|
97
|
-
enableScrolling={true}
|
|
98
|
-
maxHeight="600px"
|
|
99
|
-
maxWidth="800px"
|
|
100
|
-
>
|
|
101
|
-
<DialogHeader sticky={true}>
|
|
102
|
-
<DialogTitle>Fixed Pixel Constraints</DialogTitle>
|
|
103
|
-
<DialogDescription>
|
|
104
|
-
This dialog has a fixed maximum height of 600px and width of 800px.
|
|
105
|
-
Perfect for consistent sizing regardless of viewport size.
|
|
106
|
-
</DialogDescription>
|
|
107
|
-
</DialogHeader>
|
|
108
|
-
<DialogBody>
|
|
109
|
-
<div className="space-y-4">
|
|
110
|
-
{generateLongContent(20)}
|
|
111
|
-
</div>
|
|
112
|
-
</DialogBody>
|
|
113
|
-
<DialogFooter sticky={true}>
|
|
114
|
-
<Button variant="outline">Cancel</Button>
|
|
115
|
-
<Button>Confirm</Button>
|
|
116
|
-
</DialogFooter>
|
|
117
|
-
</DialogContent>
|
|
118
|
-
</Dialog>
|
|
119
|
-
|
|
120
|
-
{/* Example 3: Mixed constraints (percentage height, fixed width) */}
|
|
121
|
-
<Dialog>
|
|
122
|
-
<DialogTrigger asChild>
|
|
123
|
-
<Button variant="outline" className="w-full">
|
|
124
|
-
Mixed Constraints
|
|
125
|
-
</Button>
|
|
126
|
-
</DialogTrigger>
|
|
127
|
-
<DialogContent
|
|
128
|
-
enableScrolling={true}
|
|
129
|
-
maxHeightPercent={75}
|
|
130
|
-
maxWidth="700px"
|
|
131
|
-
>
|
|
132
|
-
<DialogHeader sticky={true}>
|
|
133
|
-
<DialogTitle>Mixed Constraints</DialogTitle>
|
|
134
|
-
<DialogDescription>
|
|
135
|
-
This dialog uses 75% of viewport height but has a fixed width of 700px.
|
|
136
|
-
You can mix percentage and fixed constraints as needed.
|
|
137
|
-
</DialogDescription>
|
|
138
|
-
</DialogHeader>
|
|
139
|
-
<DialogBody>
|
|
140
|
-
<div className="space-y-4">
|
|
141
|
-
{generateLongContent(30)}
|
|
142
|
-
</div>
|
|
143
|
-
</DialogBody>
|
|
144
|
-
<DialogFooter sticky={true}>
|
|
145
|
-
<Button variant="outline">Close</Button>
|
|
146
|
-
<Button>Apply</Button>
|
|
147
|
-
</DialogFooter>
|
|
148
|
-
</DialogContent>
|
|
149
|
-
</Dialog>
|
|
150
|
-
|
|
151
|
-
{/* Example 4: Minimum and maximum constraints */}
|
|
152
|
-
<Dialog>
|
|
153
|
-
<DialogTrigger asChild>
|
|
154
|
-
<Button variant="outline" className="w-full">
|
|
155
|
-
Min/Max Constraints
|
|
156
|
-
</Button>
|
|
157
|
-
</DialogTrigger>
|
|
158
|
-
<DialogContent
|
|
159
|
-
enableScrolling={true}
|
|
160
|
-
maxHeightPercent={85}
|
|
161
|
-
maxWidthPercent={80}
|
|
162
|
-
minHeight="400px"
|
|
163
|
-
minWidth="500px"
|
|
164
|
-
>
|
|
165
|
-
<DialogHeader sticky={true}>
|
|
166
|
-
<DialogTitle>Min/Max Constraints</DialogTitle>
|
|
167
|
-
<DialogDescription>
|
|
168
|
-
This dialog has both minimum (400px height, 500px width) and maximum
|
|
169
|
-
(85% height, 80% width) constraints. It will never be smaller than
|
|
170
|
-
the minimums or larger than the maximums.
|
|
171
|
-
</DialogDescription>
|
|
172
|
-
</DialogHeader>
|
|
173
|
-
<DialogBody>
|
|
174
|
-
<div className="space-y-4">
|
|
175
|
-
{generateLongContent(15)}
|
|
176
|
-
</div>
|
|
177
|
-
</DialogBody>
|
|
178
|
-
<DialogFooter sticky={true}>
|
|
179
|
-
<Button variant="outline">Cancel</Button>
|
|
180
|
-
<Button>Save</Button>
|
|
181
|
-
</DialogFooter>
|
|
182
|
-
</DialogContent>
|
|
183
|
-
</Dialog>
|
|
184
|
-
|
|
185
|
-
{/* Example 5: Narrow dialog with tall content */}
|
|
186
|
-
<Dialog>
|
|
187
|
-
<DialogTrigger asChild>
|
|
188
|
-
<Button variant="outline" className="w-full">
|
|
189
|
-
Narrow & Tall
|
|
190
|
-
</Button>
|
|
191
|
-
</DialogTrigger>
|
|
192
|
-
<DialogContent
|
|
193
|
-
enableScrolling={true}
|
|
194
|
-
maxHeightPercent={90}
|
|
195
|
-
maxWidth="500px"
|
|
196
|
-
>
|
|
197
|
-
<DialogHeader sticky={true}>
|
|
198
|
-
<DialogTitle>Narrow Dialog with Tall Content</DialogTitle>
|
|
199
|
-
<DialogDescription>
|
|
200
|
-
A narrow dialog (500px) that uses 90% of viewport height.
|
|
201
|
-
Great for side panels or detail views.
|
|
202
|
-
</DialogDescription>
|
|
203
|
-
</DialogHeader>
|
|
204
|
-
<DialogBody>
|
|
205
|
-
<div className="space-y-4">
|
|
206
|
-
{generateLongContent(40)}
|
|
207
|
-
</div>
|
|
208
|
-
</DialogBody>
|
|
209
|
-
<DialogFooter sticky={true}>
|
|
210
|
-
<Button variant="outline">Close</Button>
|
|
211
|
-
<Button>Done</Button>
|
|
212
|
-
</DialogFooter>
|
|
213
|
-
</DialogContent>
|
|
214
|
-
</Dialog>
|
|
215
|
-
|
|
216
|
-
{/* Example 6: Wide dialog with moderate height */}
|
|
217
|
-
<Dialog>
|
|
218
|
-
<DialogTrigger asChild>
|
|
219
|
-
<Button variant="outline" className="w-full">
|
|
220
|
-
Wide & Moderate Height
|
|
221
|
-
</Button>
|
|
222
|
-
</DialogTrigger>
|
|
223
|
-
<DialogContent
|
|
224
|
-
enableScrolling={true}
|
|
225
|
-
maxHeight="500px"
|
|
226
|
-
maxWidthPercent={95}
|
|
227
|
-
>
|
|
228
|
-
<DialogHeader sticky={true}>
|
|
229
|
-
<DialogTitle>Wide Dialog with Moderate Height</DialogTitle>
|
|
230
|
-
<DialogDescription>
|
|
231
|
-
A wide dialog (95% width) with a fixed height of 500px.
|
|
232
|
-
Perfect for data tables or wide forms.
|
|
233
|
-
</DialogDescription>
|
|
234
|
-
</DialogHeader>
|
|
235
|
-
<DialogBody>
|
|
236
|
-
<div className="space-y-4">
|
|
237
|
-
{generateLongContent(18)}
|
|
238
|
-
</div>
|
|
239
|
-
</DialogBody>
|
|
240
|
-
<DialogFooter sticky={true}>
|
|
241
|
-
<Button variant="outline">Cancel</Button>
|
|
242
|
-
<Button>Submit</Button>
|
|
243
|
-
</DialogFooter>
|
|
244
|
-
</DialogContent>
|
|
245
|
-
</Dialog>
|
|
246
|
-
</div>
|
|
247
|
-
|
|
248
|
-
<Card className="p-6">
|
|
249
|
-
<h3>Key Features Demonstrated:</h3>
|
|
250
|
-
<ul className="list-disc list-inside space-y-2">
|
|
251
|
-
<li>
|
|
252
|
-
<strong>enableScrolling={true}:</strong> Enables the flex layout and scrolling
|
|
253
|
-
functionality. Required for proper scroll behavior.
|
|
254
|
-
</li>
|
|
255
|
-
<li>
|
|
256
|
-
<strong>maxHeightPercent:</strong> Maximum height as a percentage of viewport
|
|
257
|
-
height (0-100). Automatically capped at 95% to ensure margins.
|
|
258
|
-
</li>
|
|
259
|
-
<li>
|
|
260
|
-
<strong>maxWidthPercent:</strong> Maximum width as a percentage of viewport
|
|
261
|
-
width (0-100). Automatically capped at 95% to ensure margins.
|
|
262
|
-
</li>
|
|
263
|
-
<li>
|
|
264
|
-
<strong>maxHeight:</strong> Fixed maximum height in CSS units (e.g., "600px",
|
|
265
|
-
"50vh", "20rem"). Overrides maxHeightPercent if both are provided.
|
|
266
|
-
</li>
|
|
267
|
-
<li>
|
|
268
|
-
<strong>maxWidth:</strong> Fixed maximum width in CSS units. Overrides
|
|
269
|
-
maxWidthPercent and size prop if provided.
|
|
270
|
-
</li>
|
|
271
|
-
<li>
|
|
272
|
-
<strong>minHeight:</strong> Minimum height in CSS units. Ensures dialog
|
|
273
|
-
never gets smaller than this value.
|
|
274
|
-
</li>
|
|
275
|
-
<li>
|
|
276
|
-
<strong>minWidth:</strong> Minimum width in CSS units. Ensures dialog
|
|
277
|
-
never gets smaller than this value.
|
|
278
|
-
</li>
|
|
279
|
-
<li>
|
|
280
|
-
<strong>sticky={true}:</strong> On DialogHeader and DialogFooter, keeps
|
|
281
|
-
these elements visible while scrolling through content.
|
|
282
|
-
</li>
|
|
283
|
-
</ul>
|
|
284
|
-
</Card>
|
|
285
|
-
</div>
|
|
286
|
-
);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
export default ScrollableDialogExample;
|
|
290
|
-
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Simple HTML Test
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/Dialog/Examples
|
|
5
|
-
* @since 0.4.37
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import React, { useState } from 'react';
|
|
9
|
-
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogBody, DialogFooter } from '../Dialog';
|
|
10
|
-
import { Button } from '../../Button';
|
|
11
|
-
|
|
12
|
-
export function SimpleHtmlTest() {
|
|
13
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
14
|
-
|
|
15
|
-
// Very simple HTML test
|
|
16
|
-
const simpleHtml = '<p>Hello <strong>world</strong>!</p>';
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<div className="p-4">
|
|
20
|
-
<h2 className="text-xl font-bold mb-4">Simple HTML Test</h2>
|
|
21
|
-
|
|
22
|
-
<div className="mb-4">
|
|
23
|
-
<h3 className="font-semibold mb-2">Test HTML:</h3>
|
|
24
|
-
<pre className="bg-sec-100 p-2 rounded text-xs">
|
|
25
|
-
{simpleHtml}
|
|
26
|
-
</pre>
|
|
27
|
-
</div>
|
|
28
|
-
|
|
29
|
-
<div className="mb-4">
|
|
30
|
-
<h3 className="font-semibold mb-2">Expected Result:</h3>
|
|
31
|
-
<div className="bg-main-50 p-2 rounded">
|
|
32
|
-
Hello <strong>world</strong>!
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
|
-
|
|
36
|
-
<Button onClick={() => setIsOpen(true)}>
|
|
37
|
-
Test HTML Rendering
|
|
38
|
-
</Button>
|
|
39
|
-
|
|
40
|
-
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
|
41
|
-
<DialogContent size="md">
|
|
42
|
-
<DialogHeader>
|
|
43
|
-
<DialogTitle>HTML Test</DialogTitle>
|
|
44
|
-
</DialogHeader>
|
|
45
|
-
|
|
46
|
-
<DialogBody htmlContent={simpleHtml} allowHtml={true}>
|
|
47
|
-
<div className="text-acc-500">
|
|
48
|
-
HTML content failed to render. This is fallback content.
|
|
49
|
-
</div>
|
|
50
|
-
</DialogBody>
|
|
51
|
-
|
|
52
|
-
<DialogFooter>
|
|
53
|
-
<Button variant="outline" onClick={() => setIsOpen(false)}>
|
|
54
|
-
Close
|
|
55
|
-
</Button>
|
|
56
|
-
</DialogFooter>
|
|
57
|
-
</DialogContent>
|
|
58
|
-
</Dialog>
|
|
59
|
-
</div>
|
|
60
|
-
);
|
|
61
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file HtmlDialogExample Unit Tests
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/Dialog/Examples/Tests
|
|
5
|
-
* @since 0.4.36
|
|
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
|
-
import { HtmlDialogExample } from '../HtmlDialogExample';
|
|
14
|
-
|
|
15
|
-
describe('HtmlDialogExample Component', () => {
|
|
16
|
-
describe('Rendering', () => {
|
|
17
|
-
it('renders without crashing', () => {
|
|
18
|
-
renderWithProviders(<HtmlDialogExample />);
|
|
19
|
-
expect(screen.getByText('HTML Dialog Examples')).toBeInTheDocument();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('renders the title and buttons', () => {
|
|
23
|
-
renderWithProviders(<HtmlDialogExample />);
|
|
24
|
-
|
|
25
|
-
expect(screen.getByText('HTML Dialog Examples')).toBeInTheDocument();
|
|
26
|
-
expect(screen.getByRole('button', { name: 'Import Instructions' })).toBeInTheDocument();
|
|
27
|
-
expect(screen.getByRole('button', { name: 'Welcome Message' })).toBeInTheDocument();
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it('renders all dialog trigger buttons', () => {
|
|
31
|
-
renderWithProviders(<HtmlDialogExample />);
|
|
32
|
-
|
|
33
|
-
expect(screen.getByRole('button', { name: 'Import Instructions' })).toBeInTheDocument();
|
|
34
|
-
expect(screen.getByRole('button', { name: 'Welcome Message' })).toBeInTheDocument();
|
|
35
|
-
expect(screen.getByRole('button', { name: 'Mixed Content' })).toBeInTheDocument();
|
|
36
|
-
expect(screen.getByRole('button', { name: 'Security Demo' })).toBeInTheDocument();
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
describe('Dialog Configuration', () => {
|
|
41
|
-
it('renders dialog triggers with proper attributes', () => {
|
|
42
|
-
renderWithProviders(<HtmlDialogExample />);
|
|
43
|
-
|
|
44
|
-
const triggers = screen.getAllByRole('button');
|
|
45
|
-
expect(triggers.length).toBeGreaterThan(0);
|
|
46
|
-
|
|
47
|
-
// Check that at least one button has dialog attributes
|
|
48
|
-
const firstTrigger = triggers[0];
|
|
49
|
-
expect(firstTrigger).toHaveAttribute('aria-haspopup', 'dialog');
|
|
50
|
-
expect(firstTrigger).toHaveAttribute('aria-expanded', 'false');
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
describe('Component Structure', () => {
|
|
55
|
-
it('has proper heading structure', () => {
|
|
56
|
-
renderWithProviders(<HtmlDialogExample />);
|
|
57
|
-
|
|
58
|
-
expect(screen.getByRole('heading', { level: 2, name: 'HTML Dialog Examples' })).toBeInTheDocument();
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('displays dialog trigger buttons', () => {
|
|
62
|
-
renderWithProviders(<HtmlDialogExample />);
|
|
63
|
-
|
|
64
|
-
expect(screen.getByRole('button', { name: 'Import Instructions' })).toBeInTheDocument();
|
|
65
|
-
expect(screen.getByRole('button', { name: 'Welcome Message' })).toBeInTheDocument();
|
|
66
|
-
expect(screen.getByRole('button', { name: 'Mixed Content' })).toBeInTheDocument();
|
|
67
|
-
expect(screen.getByRole('button', { name: 'Security Demo' })).toBeInTheDocument();
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file SimpleHtmlTest Unit Tests
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/Dialog/Examples/Tests
|
|
5
|
-
* @since 0.4.37
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import React from 'react';
|
|
9
|
-
import { screen, waitFor } from '@testing-library/react';
|
|
10
|
-
import userEvent from '@testing-library/user-event';
|
|
11
|
-
import { describe, it, expect } from 'vitest';
|
|
12
|
-
import '@testing-library/jest-dom';
|
|
13
|
-
import { renderWithProviders } from '../../../../__tests__/helpers/test-utils';
|
|
14
|
-
import { SimpleHtmlTest } from '../SimpleHtmlTest';
|
|
15
|
-
|
|
16
|
-
describe('SimpleHtmlTest Component', () => {
|
|
17
|
-
const user = userEvent.setup();
|
|
18
|
-
|
|
19
|
-
describe('Rendering', () => {
|
|
20
|
-
it('renders without crashing', () => {
|
|
21
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
22
|
-
expect(screen.getByText('Simple HTML Test')).toBeInTheDocument();
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('renders the title and test section', () => {
|
|
26
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
27
|
-
|
|
28
|
-
expect(screen.getByText('Simple HTML Test')).toBeInTheDocument();
|
|
29
|
-
expect(screen.getByText('Test HTML:')).toBeInTheDocument();
|
|
30
|
-
expect(screen.getByText('Expected Result:')).toBeInTheDocument();
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('displays HTML code in pre tag', () => {
|
|
34
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
35
|
-
|
|
36
|
-
const preElements = document.querySelectorAll('pre');
|
|
37
|
-
expect(preElements.length).toBeGreaterThan(0);
|
|
38
|
-
|
|
39
|
-
const htmlCode = Array.from(preElements).find(el =>
|
|
40
|
-
el.textContent?.includes('Hello <strong>world</strong>!')
|
|
41
|
-
);
|
|
42
|
-
expect(htmlCode).toBeTruthy();
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it('renders the test button', () => {
|
|
46
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
47
|
-
expect(screen.getByRole('button', { name: 'Test HTML Rendering' })).toBeInTheDocument();
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
describe('Interactive Elements', () => {
|
|
52
|
-
it('opens dialog when button is clicked', async () => {
|
|
53
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
54
|
-
|
|
55
|
-
const button = screen.getByRole('button', { name: 'Test HTML Rendering' });
|
|
56
|
-
await user.click(button);
|
|
57
|
-
|
|
58
|
-
await waitFor(() => {
|
|
59
|
-
expect(screen.getByText('HTML Test')).toBeInTheDocument();
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it('displays HTML content in dialog when opened', async () => {
|
|
64
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
65
|
-
|
|
66
|
-
const button = screen.getByRole('button', { name: 'Test HTML Rendering' });
|
|
67
|
-
await user.click(button);
|
|
68
|
-
|
|
69
|
-
await waitFor(() => {
|
|
70
|
-
expect(screen.getByText('HTML Test')).toBeInTheDocument();
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it('renders button as enabled', () => {
|
|
75
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
76
|
-
|
|
77
|
-
const button = screen.getByRole('button', { name: 'Test HTML Rendering' });
|
|
78
|
-
expect(button).toBeEnabled();
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
describe('Component Structure', () => {
|
|
83
|
-
it('has proper heading structure', () => {
|
|
84
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
85
|
-
|
|
86
|
-
expect(screen.getByRole('heading', { level: 2, name: 'Simple HTML Test' })).toBeInTheDocument();
|
|
87
|
-
expect(screen.getByRole('heading', { level: 3, name: 'Test HTML:' })).toBeInTheDocument();
|
|
88
|
-
expect(screen.getByRole('heading', { level: 3, name: 'Expected Result:' })).toBeInTheDocument();
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it('displays pre-formatted code', () => {
|
|
92
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
93
|
-
|
|
94
|
-
const codeBlock = screen.getByText(/Hello <strong>world<\/strong>!/).closest('pre');
|
|
95
|
-
expect(codeBlock).toBeInTheDocument();
|
|
96
|
-
expect(codeBlock?.className).toContain('bg-sec-100');
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
describe('HTML Rendering Test', () => {
|
|
101
|
-
it('shows expected rendered output container', () => {
|
|
102
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
103
|
-
|
|
104
|
-
// Should show the expected result container with proper styling
|
|
105
|
-
const resultContainers = document.querySelectorAll('.bg-main-50');
|
|
106
|
-
expect(resultContainers.length).toBeGreaterThan(0);
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it('displays expected output with HTML content', () => {
|
|
110
|
-
renderWithProviders(<SimpleHtmlTest />);
|
|
111
|
-
|
|
112
|
-
// The expected result should have "Hello" text
|
|
113
|
-
const expectedResult = document.querySelector('.bg-main-50');
|
|
114
|
-
expect(expectedResult).toBeTruthy();
|
|
115
|
-
|
|
116
|
-
// Should contain a strong element
|
|
117
|
-
const strongElements = document.querySelectorAll('.bg-main-50 strong');
|
|
118
|
-
expect(strongElements.length).toBeGreaterThan(0);
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
|