@jmruthers/pace-core 0.5.181 → 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-UA6CL4JI.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-HRO5HWN2.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-HZLDFOE4.js → chunk-MI7HBHN3.js} +164 -243
- package/dist/chunk-MI7HBHN3.js.map +1 -0
- package/dist/{chunk-PPMP5J6T.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-D7LCGMVS.js → chunk-QETLRQI6.js} +526 -887
- package/dist/chunk-QETLRQI6.js.map +1 -0
- package/dist/{chunk-5MT24GKJ.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-ZYTYSTO5.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-VZ4VDGTB.js → chunk-W22JP75J.js} +5 -13
- package/dist/{chunk-VZ4VDGTB.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/{src/components/DataTable/examples → examples/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 +56 -44
- 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-B37ATQHE.js +0 -16
- package/dist/auth-DReDSLq9.d.ts +0 -16
- package/dist/chunk-3JI76CYK.js +0 -2444
- package/dist/chunk-3JI76CYK.js.map +0 -1
- package/dist/chunk-56XJ3TU6.js +0 -11
- package/dist/chunk-56XJ3TU6.js.map +0 -1
- package/dist/chunk-5MT24GKJ.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-CX5M4ZAG.js.map +0 -1
- package/dist/chunk-D7LCGMVS.js.map +0 -1
- package/dist/chunk-EGI6MUL6.js +0 -27
- package/dist/chunk-EGI6MUL6.js.map +0 -1
- package/dist/chunk-ERISIBYU.js.map +0 -1
- package/dist/chunk-HRO5HWN2.js.map +0 -1
- package/dist/chunk-HZLDFOE4.js.map +0 -1
- package/dist/chunk-JISYG63F.js +0 -70
- package/dist/chunk-JISYG63F.js.map +0 -1
- package/dist/chunk-LIMSTKYD.js +0 -61
- package/dist/chunk-LIMSTKYD.js.map +0 -1
- package/dist/chunk-OWAG3GSU.js.map +0 -1
- package/dist/chunk-PPMP5J6T.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-TUMEWN34.js +0 -15
- package/dist/chunk-TUMEWN34.js.map +0 -1
- package/dist/chunk-XDNLUEXI.js +0 -138
- package/dist/chunk-XJ2HZOBU.js.map +0 -1
- package/dist/chunk-ZYTYSTO5.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/DataTable/HierarchicalExample.tsx +0 -475
- 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/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-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-B37ATQHE.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,202 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file HTML Dialog Example
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/Dialog/Examples
|
|
5
|
-
* @since 0.4.36
|
|
6
|
-
*
|
|
7
|
-
* Example demonstrating HTML content rendering in Dialog components.
|
|
8
|
-
* Shows how to use htmlContent prop for rich text formatting.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import React from 'react';
|
|
12
|
-
import {
|
|
13
|
-
Dialog,
|
|
14
|
-
DialogTrigger,
|
|
15
|
-
DialogContent,
|
|
16
|
-
DialogHeader,
|
|
17
|
-
DialogTitle,
|
|
18
|
-
DialogDescription,
|
|
19
|
-
DialogBody,
|
|
20
|
-
DialogFooter
|
|
21
|
-
} from '../Dialog';
|
|
22
|
-
import { Button } from '../../Button';
|
|
23
|
-
|
|
24
|
-
export function HtmlDialogExample() {
|
|
25
|
-
const importInstructionsHtml = `
|
|
26
|
-
<h2>Import Dishes or Recipes</h2>
|
|
27
|
-
<p>Upload a CSV file with dish or recipe data. The system will automatically detect the format based on your column headers.</p>
|
|
28
|
-
|
|
29
|
-
<h3>DISH FORMAT (3 columns):</h3>
|
|
30
|
-
<ul>
|
|
31
|
-
<li><strong>Required:</strong> <code>dish_code</code>, <code>dish_name</code>, <code>mealtype_name</code></li>
|
|
32
|
-
<li><strong>Optional:</strong> <code>dish_description</code></li>
|
|
33
|
-
</ul>
|
|
34
|
-
|
|
35
|
-
<h4>Examples:</h4>
|
|
36
|
-
<ul>
|
|
37
|
-
<li><code>dish_code</code>: BBQ, PC, CTY</li>
|
|
38
|
-
<li><code>dish_name</code>: BBQ hamburgers and potato salad</li>
|
|
39
|
-
<li><code>mealtype_name</code>: Breakfast, Lunch, Dinner</li>
|
|
40
|
-
</ul>
|
|
41
|
-
|
|
42
|
-
<h3>RECIPE FORMAT (8 columns):</h3>
|
|
43
|
-
<ul>
|
|
44
|
-
<li><strong>Required:</strong> <code>dish_code</code>, <code>dish_name</code>, <code>mealtype_name</code>, <code>diettype_name</code>, <code>item_name</code>, <code>recipe_qtypp</code>, <code>recipe_uptake</code></li>
|
|
45
|
-
<li><strong>Optional:</strong> <code>item_brand</code></li>
|
|
46
|
-
</ul>
|
|
47
|
-
|
|
48
|
-
<h4>Examples:</h4>
|
|
49
|
-
<ul>
|
|
50
|
-
<li><code>dish_code</code>: BBQ</li>
|
|
51
|
-
<li><code>dish_name</code>: BBQ hamburgers and potato salad</li>
|
|
52
|
-
<li><code>mealtype_name</code>: Dinner</li>
|
|
53
|
-
<li><code>diettype_name</code>: Standard, Gluten Free, Vegan</li>
|
|
54
|
-
<li><code>item_name</code>: Lettuce iceberg shredded</li>
|
|
55
|
-
<li><code>item_brand</code>: Masterfoods, Coles</li>
|
|
56
|
-
<li><code>recipe_qtypp</code>: 35, 1.66</li>
|
|
57
|
-
<li><code>recipe_uptake</code>: 1.0, 0.75</li>
|
|
58
|
-
</ul>
|
|
59
|
-
|
|
60
|
-
<div style="background-color: #fef3c7; padding: 12px; border-radius: 6px; margin: 16px 0;">
|
|
61
|
-
<strong>⚠️ IMPORTANT:</strong> Recipe imports will replace all existing recipe data for dishes in the file.
|
|
62
|
-
</div>
|
|
63
|
-
`;
|
|
64
|
-
|
|
65
|
-
const welcomeMessageHtml = `
|
|
66
|
-
<h1>Welcome to <strong>PACE Core</strong>!</h1>
|
|
67
|
-
<p>This dialog demonstrates the new <em>HTML content rendering</em> feature.</p>
|
|
68
|
-
|
|
69
|
-
<h2>Features:</h2>
|
|
70
|
-
<ul>
|
|
71
|
-
<li>✅ <strong>Safe HTML rendering</strong> with automatic sanitization</li>
|
|
72
|
-
<li>✅ <strong>Rich text formatting</strong> (bold, italic, lists, etc.)</li>
|
|
73
|
-
<li>✅ <strong>Code highlighting</strong> with <code><code></code> tags</li>
|
|
74
|
-
<li>✅ <strong>Custom styling</strong> with inline styles</li>
|
|
75
|
-
<li>✅ <strong>Security first</strong> - dangerous content is automatically removed</li>
|
|
76
|
-
</ul>
|
|
77
|
-
|
|
78
|
-
<h3>Supported HTML Elements:</h3>
|
|
79
|
-
<p>You can use most common HTML elements including:</p>
|
|
80
|
-
<ul>
|
|
81
|
-
<li>Headings: <code>h1</code> through <code>h6</code></li>
|
|
82
|
-
<li>Text formatting: <strong>strong</strong>, <em>em</em>, <u>underline</u></li>
|
|
83
|
-
<li>Lists: <code>ul</code>, <code>ol</code>, <code>li</code></li>
|
|
84
|
-
<li>Code: <code>code</code>, <code>pre</code></li>
|
|
85
|
-
<li>Links: <a href="#" onclick="return false;">example link</a></li>
|
|
86
|
-
<li>Tables: <code>table</code>, <code>tr</code>, <code>td</code></li>
|
|
87
|
-
</ul>
|
|
88
|
-
`;
|
|
89
|
-
|
|
90
|
-
return (
|
|
91
|
-
<div className="space-y-4">
|
|
92
|
-
<h2 className="text-2xl font-bold">HTML Dialog Examples</h2>
|
|
93
|
-
|
|
94
|
-
{/* Example 1: Import Instructions Dialog */}
|
|
95
|
-
<Dialog>
|
|
96
|
-
<DialogTrigger asChild>
|
|
97
|
-
<Button variant="outline">Import Instructions</Button>
|
|
98
|
-
</DialogTrigger>
|
|
99
|
-
<DialogContent size="lg" enableScrolling={true} maxHeightPercent={80}>
|
|
100
|
-
<DialogHeader>
|
|
101
|
-
<DialogTitle htmlContent="Import Dishes or Recipes" />
|
|
102
|
-
<DialogDescription htmlContent="Follow the instructions below to upload your CSV file with the correct format." />
|
|
103
|
-
</DialogHeader>
|
|
104
|
-
<DialogBody
|
|
105
|
-
htmlContent={importInstructionsHtml}
|
|
106
|
-
allowHtml={true}
|
|
107
|
-
strictSanitization={true}
|
|
108
|
-
logWarnings={true}
|
|
109
|
-
/>
|
|
110
|
-
<DialogFooter>
|
|
111
|
-
<Button variant="outline">Cancel</Button>
|
|
112
|
-
<Button>Select CSV File</Button>
|
|
113
|
-
</DialogFooter>
|
|
114
|
-
</DialogContent>
|
|
115
|
-
</Dialog>
|
|
116
|
-
|
|
117
|
-
{/* Example 2: Welcome Message Dialog */}
|
|
118
|
-
<Dialog>
|
|
119
|
-
<DialogTrigger asChild>
|
|
120
|
-
<Button>Welcome Message</Button>
|
|
121
|
-
</DialogTrigger>
|
|
122
|
-
<DialogContent size="md">
|
|
123
|
-
<DialogHeader>
|
|
124
|
-
<DialogTitle htmlContent="🎉 New Feature Available!" />
|
|
125
|
-
<DialogDescription htmlContent="Learn about the new HTML content rendering capabilities." />
|
|
126
|
-
</DialogHeader>
|
|
127
|
-
<DialogBody
|
|
128
|
-
htmlContent={welcomeMessageHtml}
|
|
129
|
-
allowHtml={true}
|
|
130
|
-
/>
|
|
131
|
-
<DialogFooter>
|
|
132
|
-
<Button variant="outline">Learn More</Button>
|
|
133
|
-
<Button>Get Started</Button>
|
|
134
|
-
</DialogFooter>
|
|
135
|
-
</DialogContent>
|
|
136
|
-
</Dialog>
|
|
137
|
-
|
|
138
|
-
{/* Example 3: Mixed Content Dialog */}
|
|
139
|
-
<Dialog>
|
|
140
|
-
<DialogTrigger asChild>
|
|
141
|
-
<Button variant="secondary">Mixed Content</Button>
|
|
142
|
-
</DialogTrigger>
|
|
143
|
-
<DialogContent size="lg">
|
|
144
|
-
<DialogHeader>
|
|
145
|
-
<DialogTitle>Mixed Content Example</DialogTitle>
|
|
146
|
-
<DialogDescription htmlContent="This dialog shows <strong>HTML in the description</strong> and <em>React children</em> in the body." />
|
|
147
|
-
</DialogHeader>
|
|
148
|
-
<DialogBody>
|
|
149
|
-
<div className="space-y-4">
|
|
150
|
-
<h3 className="text-lg font-semibold">React Children Content</h3>
|
|
151
|
-
<p>This content is rendered using React children, not HTML strings.</p>
|
|
152
|
-
<div className="bg-main-50 p-4 rounded-lg">
|
|
153
|
-
<p className="text-main-800">
|
|
154
|
-
You can mix HTML content (via <code>htmlContent</code> prop)
|
|
155
|
-
with React children for maximum flexibility.
|
|
156
|
-
</p>
|
|
157
|
-
</div>
|
|
158
|
-
</div>
|
|
159
|
-
</DialogBody>
|
|
160
|
-
<DialogFooter>
|
|
161
|
-
<Button variant="outline">Cancel</Button>
|
|
162
|
-
<Button>Continue</Button>
|
|
163
|
-
</DialogFooter>
|
|
164
|
-
</DialogContent>
|
|
165
|
-
</Dialog>
|
|
166
|
-
|
|
167
|
-
{/* Example 4: Security Demo */}
|
|
168
|
-
<Dialog>
|
|
169
|
-
<DialogTrigger asChild>
|
|
170
|
-
<Button variant="destructive">Security Demo</Button>
|
|
171
|
-
</DialogTrigger>
|
|
172
|
-
<DialogContent size="md">
|
|
173
|
-
<DialogHeader>
|
|
174
|
-
<DialogTitle>Security Demonstration</DialogTitle>
|
|
175
|
-
<DialogDescription>This shows how dangerous HTML is automatically sanitized.</DialogDescription>
|
|
176
|
-
</DialogHeader>
|
|
177
|
-
<DialogBody
|
|
178
|
-
htmlContent={`
|
|
179
|
-
<h3>Safe Content</h3>
|
|
180
|
-
<p>This content is safe and will be rendered normally.</p>
|
|
181
|
-
|
|
182
|
-
<h3>Dangerous Content (Will Be Removed)</h3>
|
|
183
|
-
<p>The following dangerous elements will be automatically removed:</p>
|
|
184
|
-
<ul>
|
|
185
|
-
<li>Script tags: <script>alert('This will be removed')</script></li>
|
|
186
|
-
<li>Event handlers: <span onclick="alert('This will be removed')">Click me</span></li>
|
|
187
|
-
<li>JavaScript protocols: <a href="javascript:alert('This will be removed')">Dangerous link</a></li>
|
|
188
|
-
</ul>
|
|
189
|
-
|
|
190
|
-
<p><strong>Result:</strong> Only the safe content above will be displayed!</p>
|
|
191
|
-
`}
|
|
192
|
-
allowHtml={true}
|
|
193
|
-
logWarnings={true}
|
|
194
|
-
/>
|
|
195
|
-
<DialogFooter>
|
|
196
|
-
<Button>Got it!</Button>
|
|
197
|
-
</DialogFooter>
|
|
198
|
-
</DialogContent>
|
|
199
|
-
</Dialog>
|
|
200
|
-
</div>
|
|
201
|
-
);
|
|
202
|
-
}
|
|
@@ -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,322 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Smart Dialog Example
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Components/Dialog/Examples
|
|
5
|
-
* @since 0.1.0
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import React, { useState } from 'react';
|
|
9
|
-
import {
|
|
10
|
-
Dialog,
|
|
11
|
-
DialogTrigger,
|
|
12
|
-
DialogContent,
|
|
13
|
-
DialogHeader,
|
|
14
|
-
DialogBody,
|
|
15
|
-
DialogFooter,
|
|
16
|
-
DialogTitle,
|
|
17
|
-
DialogDescription,
|
|
18
|
-
Button,
|
|
19
|
-
Input,
|
|
20
|
-
Label,
|
|
21
|
-
} from '../../../index';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Example demonstrating the enhanced Dialog component with all advanced features
|
|
25
|
-
*/
|
|
26
|
-
export function SmartDialogExample() {
|
|
27
|
-
const [formData, setFormData] = useState({
|
|
28
|
-
name: '',
|
|
29
|
-
email: '',
|
|
30
|
-
message: ''
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
// Generate long content for scrolling demo
|
|
34
|
-
const longContent = Array.from({ length: 50 }, (_, i) => (
|
|
35
|
-
<div key={i} className="p-4 border rounded-lg mb-4">
|
|
36
|
-
<h4>Content Section {i + 1}</h4>
|
|
37
|
-
<p className="text-sm text-muted-foreground">
|
|
38
|
-
This is content section {i + 1}. In a real application, this could be form fields,
|
|
39
|
-
data displays, or any other content that might make the dialog tall.
|
|
40
|
-
</p>
|
|
41
|
-
</div>
|
|
42
|
-
));
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
<div className="p-6 space-y-6">
|
|
46
|
-
<div>
|
|
47
|
-
<h2 className="text-2xl font-bold">Enhanced Dialog Examples</h2>
|
|
48
|
-
<p className="text-muted-foreground">
|
|
49
|
-
Demonstrating all the advanced features of the Dialog component including smart height management,
|
|
50
|
-
scrolling, responsive behavior, and accessibility features.
|
|
51
|
-
</p>
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
55
|
-
{/* Basic Dialog */}
|
|
56
|
-
<Dialog>
|
|
57
|
-
<DialogTrigger asChild>
|
|
58
|
-
<Button variant="outline" className="w-full">Basic Dialog</Button>
|
|
59
|
-
</DialogTrigger>
|
|
60
|
-
<DialogContent size="md">
|
|
61
|
-
<DialogHeader>
|
|
62
|
-
<DialogTitle>Basic Dialog</DialogTitle>
|
|
63
|
-
<DialogDescription>
|
|
64
|
-
This is a standard dialog without scrolling enabled.
|
|
65
|
-
</DialogDescription>
|
|
66
|
-
</DialogHeader>
|
|
67
|
-
<DialogBody>
|
|
68
|
-
<section className="py-4">
|
|
69
|
-
<p>Simple content that fits nicely in the dialog.</p>
|
|
70
|
-
</section>
|
|
71
|
-
</DialogBody>
|
|
72
|
-
<DialogFooter>
|
|
73
|
-
<Button variant="outline">Cancel</Button>
|
|
74
|
-
<Button>Save</Button>
|
|
75
|
-
</DialogFooter>
|
|
76
|
-
</DialogContent>
|
|
77
|
-
</Dialog>
|
|
78
|
-
|
|
79
|
-
{/* Scrollable Dialog with Sticky Elements */}
|
|
80
|
-
<Dialog>
|
|
81
|
-
<DialogTrigger asChild>
|
|
82
|
-
<Button variant="outline" className="w-full">Scrollable Dialog</Button>
|
|
83
|
-
</DialogTrigger>
|
|
84
|
-
<DialogContent
|
|
85
|
-
size="lg"
|
|
86
|
-
enableScrolling={true}
|
|
87
|
-
maxHeightPercent={80}
|
|
88
|
-
>
|
|
89
|
-
<DialogHeader sticky={true}>
|
|
90
|
-
<DialogTitle>Scrollable Dialog</DialogTitle>
|
|
91
|
-
<DialogDescription>
|
|
92
|
-
This dialog has lots of content and will scroll if needed.
|
|
93
|
-
The header stays sticky at the top.
|
|
94
|
-
</DialogDescription>
|
|
95
|
-
</DialogHeader>
|
|
96
|
-
<DialogBody>
|
|
97
|
-
<div className="space-y-4">
|
|
98
|
-
{longContent.slice(0, 30)}
|
|
99
|
-
</div>
|
|
100
|
-
</DialogBody>
|
|
101
|
-
<DialogFooter sticky={true}>
|
|
102
|
-
<Button variant="outline">Cancel</Button>
|
|
103
|
-
<Button>Save Changes</Button>
|
|
104
|
-
</DialogFooter>
|
|
105
|
-
</DialogContent>
|
|
106
|
-
</Dialog>
|
|
107
|
-
|
|
108
|
-
{/* Custom Height Dialog */}
|
|
109
|
-
<Dialog>
|
|
110
|
-
<DialogTrigger asChild>
|
|
111
|
-
<Button variant="outline" className="w-full">Custom Height</Button>
|
|
112
|
-
</DialogTrigger>
|
|
113
|
-
<DialogContent
|
|
114
|
-
size="xl"
|
|
115
|
-
enableScrolling={true}
|
|
116
|
-
maxHeight="400px"
|
|
117
|
-
>
|
|
118
|
-
<DialogHeader>
|
|
119
|
-
<DialogTitle>Custom Height Dialog</DialogTitle>
|
|
120
|
-
<DialogDescription>
|
|
121
|
-
This dialog has a fixed maximum height of 400px.
|
|
122
|
-
</DialogDescription>
|
|
123
|
-
</DialogHeader>
|
|
124
|
-
<DialogBody>
|
|
125
|
-
<div className="space-y-4">
|
|
126
|
-
{longContent.slice(0, 20)}
|
|
127
|
-
</div>
|
|
128
|
-
</DialogBody>
|
|
129
|
-
<DialogFooter>
|
|
130
|
-
<Button>Done</Button>
|
|
131
|
-
</DialogFooter>
|
|
132
|
-
</DialogContent>
|
|
133
|
-
</Dialog>
|
|
134
|
-
|
|
135
|
-
{/* Auto-Sizing Dialog */}
|
|
136
|
-
<Dialog>
|
|
137
|
-
<DialogTrigger asChild>
|
|
138
|
-
<Button variant="outline" className="w-full">Auto Size</Button>
|
|
139
|
-
</DialogTrigger>
|
|
140
|
-
<DialogContent size="auto">
|
|
141
|
-
<DialogHeader>
|
|
142
|
-
<DialogTitle>Auto-Sized Dialog</DialogTitle>
|
|
143
|
-
<DialogDescription>
|
|
144
|
-
This dialog automatically adjusts its width to fit the content.
|
|
145
|
-
</DialogDescription>
|
|
146
|
-
</DialogHeader>
|
|
147
|
-
<DialogBody>
|
|
148
|
-
<section className="space-y-4">
|
|
149
|
-
<p>Content that determines the dialog width...</p>
|
|
150
|
-
<div className="p-4 bg-muted rounded-lg">
|
|
151
|
-
<p className="text-sm">This dialog will size itself based on this content.</p>
|
|
152
|
-
</div>
|
|
153
|
-
</section>
|
|
154
|
-
</DialogBody>
|
|
155
|
-
<DialogFooter>
|
|
156
|
-
<Button>Close</Button>
|
|
157
|
-
</DialogFooter>
|
|
158
|
-
</DialogContent>
|
|
159
|
-
</Dialog>
|
|
160
|
-
|
|
161
|
-
{/* Form Dialog with Custom Dimensions */}
|
|
162
|
-
<Dialog>
|
|
163
|
-
<DialogTrigger asChild>
|
|
164
|
-
<Button variant="outline" className="w-full">Form Dialog</Button>
|
|
165
|
-
</DialogTrigger>
|
|
166
|
-
<DialogContent
|
|
167
|
-
maxWidth="600px"
|
|
168
|
-
maxHeight="500px"
|
|
169
|
-
enableScrolling={true}
|
|
170
|
-
>
|
|
171
|
-
<DialogHeader>
|
|
172
|
-
<DialogTitle>Contact Form</DialogTitle>
|
|
173
|
-
<DialogDescription>
|
|
174
|
-
Fill out the form below to get in touch with us.
|
|
175
|
-
</DialogDescription>
|
|
176
|
-
</DialogHeader>
|
|
177
|
-
<DialogBody>
|
|
178
|
-
<section className="space-y-4">
|
|
179
|
-
<div className="space-y-2">
|
|
180
|
-
<Label htmlFor="name">Name</Label>
|
|
181
|
-
<Input
|
|
182
|
-
id="name"
|
|
183
|
-
value={formData.name}
|
|
184
|
-
onChange={(e) => setFormData(prev => ({ ...prev, name: e.target.value }))}
|
|
185
|
-
placeholder="Enter your name"
|
|
186
|
-
/>
|
|
187
|
-
</div>
|
|
188
|
-
<div className="space-y-2">
|
|
189
|
-
<Label htmlFor="email">Email</Label>
|
|
190
|
-
<Input
|
|
191
|
-
id="email"
|
|
192
|
-
type="email"
|
|
193
|
-
value={formData.email}
|
|
194
|
-
onChange={(e) => setFormData(prev => ({ ...prev, email: e.target.value }))}
|
|
195
|
-
placeholder="Enter your email"
|
|
196
|
-
/>
|
|
197
|
-
</div>
|
|
198
|
-
<div className="space-y-2">
|
|
199
|
-
<Label htmlFor="message">Message</Label>
|
|
200
|
-
<textarea
|
|
201
|
-
id="message"
|
|
202
|
-
value={formData.message}
|
|
203
|
-
onChange={(e) => setFormData(prev => ({ ...prev, message: e.target.value }))}
|
|
204
|
-
placeholder="Enter your message"
|
|
205
|
-
className="w-full min-h-[100px] p-2 border rounded-md resize-none"
|
|
206
|
-
/>
|
|
207
|
-
</div>
|
|
208
|
-
</section>
|
|
209
|
-
</DialogBody>
|
|
210
|
-
<DialogFooter>
|
|
211
|
-
<Button variant="outline">Cancel</Button>
|
|
212
|
-
<Button>Send Message</Button>
|
|
213
|
-
</DialogFooter>
|
|
214
|
-
</DialogContent>
|
|
215
|
-
</Dialog>
|
|
216
|
-
|
|
217
|
-
{/* Dialog with Prevented Close Actions */}
|
|
218
|
-
<Dialog>
|
|
219
|
-
<DialogTrigger asChild>
|
|
220
|
-
<Button variant="outline" className="w-full">Important Dialog</Button>
|
|
221
|
-
</DialogTrigger>
|
|
222
|
-
<DialogContent
|
|
223
|
-
size="lg"
|
|
224
|
-
preventCloseOnEscape={true}
|
|
225
|
-
preventCloseOnOutsideClick={true}
|
|
226
|
-
showCloseButton={false}
|
|
227
|
-
>
|
|
228
|
-
<DialogHeader>
|
|
229
|
-
<DialogTitle>Important Action Required</DialogTitle>
|
|
230
|
-
<DialogDescription>
|
|
231
|
-
This dialog cannot be closed accidentally. You must complete the action below.
|
|
232
|
-
</DialogDescription>
|
|
233
|
-
</DialogHeader>
|
|
234
|
-
<DialogBody>
|
|
235
|
-
<section className="space-y-4">
|
|
236
|
-
<p>Please confirm that you want to proceed with this important action.</p>
|
|
237
|
-
<div className="p-4 bg-destructive/10 border border-destructive/20 rounded-lg">
|
|
238
|
-
<p className="text-sm text-destructive font-medium">
|
|
239
|
-
⚠️ This action cannot be undone.
|
|
240
|
-
</p>
|
|
241
|
-
</div>
|
|
242
|
-
</section>
|
|
243
|
-
</DialogBody>
|
|
244
|
-
<DialogFooter>
|
|
245
|
-
<Button
|
|
246
|
-
variant="destructive"
|
|
247
|
-
onClick={() => {
|
|
248
|
-
alert('Action completed!');
|
|
249
|
-
// In a real app, you'd close the dialog here
|
|
250
|
-
}}
|
|
251
|
-
>
|
|
252
|
-
Confirm Action
|
|
253
|
-
</Button>
|
|
254
|
-
</DialogFooter>
|
|
255
|
-
</DialogContent>
|
|
256
|
-
</Dialog>
|
|
257
|
-
|
|
258
|
-
{/* Full Screen Dialog */}
|
|
259
|
-
<Dialog>
|
|
260
|
-
<DialogTrigger asChild>
|
|
261
|
-
<Button variant="outline" className="w-full">Full Screen</Button>
|
|
262
|
-
</DialogTrigger>
|
|
263
|
-
<DialogContent size="full" enableScrolling={true}>
|
|
264
|
-
<DialogHeader sticky={true}>
|
|
265
|
-
<DialogTitle>Full Screen Dialog</DialogTitle>
|
|
266
|
-
<DialogDescription>
|
|
267
|
-
This dialog takes up the full screen on mobile and large size on desktop.
|
|
268
|
-
</DialogDescription>
|
|
269
|
-
</DialogHeader>
|
|
270
|
-
<DialogBody>
|
|
271
|
-
<div className="space-y-6">
|
|
272
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
273
|
-
<div className="space-y-4">
|
|
274
|
-
<h3 className="text-lg font-semibold">Left Column</h3>
|
|
275
|
-
{longContent.slice(0, 15)}
|
|
276
|
-
</div>
|
|
277
|
-
<div className="space-y-4">
|
|
278
|
-
<h3 className="text-lg font-semibold">Right Column</h3>
|
|
279
|
-
{longContent.slice(15, 30)}
|
|
280
|
-
</div>
|
|
281
|
-
</div>
|
|
282
|
-
</div>
|
|
283
|
-
</DialogBody>
|
|
284
|
-
<DialogFooter sticky={true}>
|
|
285
|
-
<Button variant="outline">Cancel</Button>
|
|
286
|
-
<Button>Save All Changes</Button>
|
|
287
|
-
</DialogFooter>
|
|
288
|
-
</DialogContent>
|
|
289
|
-
</Dialog>
|
|
290
|
-
</div>
|
|
291
|
-
|
|
292
|
-
<div className="mt-8 p-6 bg-muted rounded-lg">
|
|
293
|
-
<h3 className="text-lg font-semibold mb-4">Key Features Demonstrated:</h3>
|
|
294
|
-
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
295
|
-
<div>
|
|
296
|
-
<h4 className="font-medium mb-2">Core Features</h4>
|
|
297
|
-
<ul className="list-disc list-inside space-y-1 text-sm text-muted-foreground">
|
|
298
|
-
<li><strong>Semantic HTML Structure:</strong> Native dialog element with proper landmarks</li>
|
|
299
|
-
<li><strong>Accessibility First:</strong> WCAG 2.1 AA compliant with screen reader support</li>
|
|
300
|
-
<li><strong>Focus Management:</strong> Automatic focus trapping and restoration</li>
|
|
301
|
-
<li><strong>Keyboard Navigation:</strong> Escape to close, Tab for focus management</li>
|
|
302
|
-
<li><strong>Responsive Design:</strong> Adapts to all screen sizes</li>
|
|
303
|
-
</ul>
|
|
304
|
-
</div>
|
|
305
|
-
<div>
|
|
306
|
-
<h4 className="font-medium mb-2">Advanced Features</h4>
|
|
307
|
-
<ul className="list-disc list-inside space-y-1 text-sm text-muted-foreground">
|
|
308
|
-
<li><strong>Smart Height Management:</strong> Automatic viewport-based constraints</li>
|
|
309
|
-
<li><strong>Scrollable Content:</strong> Long content scrolls while keeping headers/footers visible</li>
|
|
310
|
-
<li><strong>Sticky Headers/Footers:</strong> Important UI elements remain accessible</li>
|
|
311
|
-
<li><strong>Custom Dimensions:</strong> Fine-grained control over width and height</li>
|
|
312
|
-
<li><strong>Configurable Close Behavior:</strong> Control escape key and outside click</li>
|
|
313
|
-
<li><strong>Multiple Size Variants:</strong> sm, md, lg, xl, full, auto sizing options</li>
|
|
314
|
-
</ul>
|
|
315
|
-
</div>
|
|
316
|
-
</div>
|
|
317
|
-
</div>
|
|
318
|
-
</div>
|
|
319
|
-
);
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
export default SmartDialogExample;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Feature Examples
|
|
3
|
-
* @package @jmruthers/pace-core
|
|
4
|
-
* @module Examples/Features
|
|
5
|
-
* @since 1.0.0
|
|
6
|
-
*
|
|
7
|
-
* Feature-based examples that demonstrate cross-component workflows.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export * from './rbac';
|
|
11
|
-
export * from './public-pages';
|
|
12
|
-
|