@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,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated: 2025-
|
|
3
|
-
version: 0.5.
|
|
4
|
-
reviewedBy:
|
|
2
|
+
lastUpdated: 2025-11-18T15:00:00+11:00
|
|
3
|
+
version: 0.5.181
|
|
4
|
+
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Troubleshooting Styling Issues
|
|
@@ -268,6 +268,201 @@ npm run build
|
|
|
268
268
|
|
|
269
269
|
## 🆘 Still Not Working?
|
|
270
270
|
|
|
271
|
+
## 🔍 Tailwind v4 Content Scanning Issues
|
|
272
|
+
|
|
273
|
+
### The Core Problem
|
|
274
|
+
|
|
275
|
+
Tailwind v4 needs to scan source files to detect utility classes, but published packages only contain compiled JavaScript. This results in:
|
|
276
|
+
|
|
277
|
+
- ❌ Only ~292 CSS rules instead of 987+ needed
|
|
278
|
+
- ❌ Missing component styles
|
|
279
|
+
- ❌ Severely compromised UI
|
|
280
|
+
|
|
281
|
+
### Solution 1: Use Source Files (Recommended)
|
|
282
|
+
|
|
283
|
+
Pace-core v0.4.15+ includes source files in the published package for Tailwind scanning.
|
|
284
|
+
|
|
285
|
+
#### Updated Vite Configuration
|
|
286
|
+
|
|
287
|
+
```typescript
|
|
288
|
+
// vite.config.ts
|
|
289
|
+
import { defineConfig } from 'vite'
|
|
290
|
+
import react from '@vitejs/plugin-react'
|
|
291
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
292
|
+
|
|
293
|
+
export default defineConfig({
|
|
294
|
+
plugins: [
|
|
295
|
+
react(),
|
|
296
|
+
tailwindcss({
|
|
297
|
+
content: [
|
|
298
|
+
// Your app's source files
|
|
299
|
+
'./src/**/*.{js,ts,jsx,tsx}',
|
|
300
|
+
// Pace-core source files (NEW)
|
|
301
|
+
'./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}'
|
|
302
|
+
]
|
|
303
|
+
})
|
|
304
|
+
],
|
|
305
|
+
})
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
#### Alternative: PostCSS Configuration
|
|
309
|
+
|
|
310
|
+
```javascript
|
|
311
|
+
// tailwind.config.js
|
|
312
|
+
/** @type {import('tailwindcss').Config} */
|
|
313
|
+
module.exports = {
|
|
314
|
+
content: [
|
|
315
|
+
'./src/**/*.{js,ts,jsx,tsx}',
|
|
316
|
+
'./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}'
|
|
317
|
+
],
|
|
318
|
+
theme: {
|
|
319
|
+
extend: {},
|
|
320
|
+
},
|
|
321
|
+
plugins: [],
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Solution 2: Pre-built CSS (Fallback)
|
|
326
|
+
|
|
327
|
+
If source file scanning doesn't work, use the pre-built CSS approach:
|
|
328
|
+
|
|
329
|
+
#### 1. Import Pre-built CSS
|
|
330
|
+
|
|
331
|
+
```tsx
|
|
332
|
+
// src/main.tsx
|
|
333
|
+
import '@jmruthers/pace-core/src/styles/core.css';
|
|
334
|
+
// Don't import your own Tailwind CSS
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
#### 2. Disable Tailwind in Your App
|
|
338
|
+
|
|
339
|
+
```typescript
|
|
340
|
+
// vite.config.ts
|
|
341
|
+
import { defineConfig } from 'vite'
|
|
342
|
+
import react from '@vitejs/plugin-react'
|
|
343
|
+
// Don't include tailwindcss plugin
|
|
344
|
+
|
|
345
|
+
export default defineConfig({
|
|
346
|
+
plugins: [react()],
|
|
347
|
+
})
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Solution 3: Hybrid Approach
|
|
351
|
+
|
|
352
|
+
Use both approaches for maximum compatibility:
|
|
353
|
+
|
|
354
|
+
#### 1. Vite Configuration
|
|
355
|
+
|
|
356
|
+
```typescript
|
|
357
|
+
// vite.config.ts
|
|
358
|
+
import { defineConfig } from 'vite'
|
|
359
|
+
import react from '@vitejs/plugin-react'
|
|
360
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
361
|
+
|
|
362
|
+
export default defineConfig({
|
|
363
|
+
plugins: [
|
|
364
|
+
react(),
|
|
365
|
+
tailwindcss({
|
|
366
|
+
content: [
|
|
367
|
+
'./src/**/*.{js,ts,jsx,tsx}',
|
|
368
|
+
'./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}',
|
|
369
|
+
// Fallback: also scan dist files
|
|
370
|
+
'./node_modules/@jmruthers/pace-core/dist/**/*.{js,ts,jsx,tsx}'
|
|
371
|
+
]
|
|
372
|
+
})
|
|
373
|
+
],
|
|
374
|
+
})
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
#### 2. CSS Import
|
|
378
|
+
|
|
379
|
+
```tsx
|
|
380
|
+
// src/main.tsx
|
|
381
|
+
import '@jmruthers/pace-core/src/styles/core.css';
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Verification Steps
|
|
385
|
+
|
|
386
|
+
#### 1. Check CSS Output Size
|
|
387
|
+
|
|
388
|
+
After building, your CSS should be:
|
|
389
|
+
- **Expected**: 50-100+ kB (with all utility classes)
|
|
390
|
+
- **Problem**: 20-30 kB (missing classes)
|
|
391
|
+
|
|
392
|
+
#### 2. Verify Component Styling
|
|
393
|
+
|
|
394
|
+
Test with a simple component:
|
|
395
|
+
|
|
396
|
+
```tsx
|
|
397
|
+
import { Button, Card } from '@jmruthers/pace-core';
|
|
398
|
+
|
|
399
|
+
function TestComponent() {
|
|
400
|
+
return (
|
|
401
|
+
<Card className="p-4">
|
|
402
|
+
<Button variant="primary" className="bg-main-600 text-main-50">
|
|
403
|
+
Test Button
|
|
404
|
+
</Button>
|
|
405
|
+
</Card>
|
|
406
|
+
);
|
|
407
|
+
}
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**Expected Result**: Properly styled components with PACE Core colors and spacing.
|
|
411
|
+
|
|
412
|
+
#### 3. Check Browser Dev Tools
|
|
413
|
+
|
|
414
|
+
Inspect elements to verify:
|
|
415
|
+
- ✅ `bg-main-600` class is applied
|
|
416
|
+
- ✅ `text-main-50` class is applied
|
|
417
|
+
- ✅ Component has proper padding and styling
|
|
418
|
+
|
|
419
|
+
### Troubleshooting Content Scanning
|
|
420
|
+
|
|
421
|
+
#### Issue: Source files not found
|
|
422
|
+
|
|
423
|
+
**Error**: `Cannot resolve './node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}'`
|
|
424
|
+
|
|
425
|
+
**Solution**: Ensure you're using pace-core v0.4.15+ which includes source files.
|
|
426
|
+
|
|
427
|
+
#### Issue: Still only 292 rules
|
|
428
|
+
|
|
429
|
+
**Possible Causes**:
|
|
430
|
+
1. Using old package version
|
|
431
|
+
2. Incorrect content paths
|
|
432
|
+
3. Cached build files
|
|
433
|
+
|
|
434
|
+
**Solutions**:
|
|
435
|
+
1. Update to latest pace-core: `npm install @jmruthers/pace-core@latest`
|
|
436
|
+
2. Clear node_modules and reinstall: `rm -rf node_modules package-lock.json && npm install`
|
|
437
|
+
3. Clear build cache: `rm -rf dist .vite`
|
|
438
|
+
|
|
439
|
+
#### Issue: Build errors with source files
|
|
440
|
+
|
|
441
|
+
**Error**: TypeScript errors when scanning source files
|
|
442
|
+
|
|
443
|
+
**Solution**: Add TypeScript configuration for node_modules:
|
|
444
|
+
|
|
445
|
+
```json
|
|
446
|
+
// tsconfig.json
|
|
447
|
+
{
|
|
448
|
+
"compilerOptions": {
|
|
449
|
+
"skipLibCheck": true
|
|
450
|
+
},
|
|
451
|
+
"include": [
|
|
452
|
+
"src/**/*",
|
|
453
|
+
"node_modules/@jmruthers/pace-core/src/**/*"
|
|
454
|
+
]
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
### Expected Results
|
|
459
|
+
|
|
460
|
+
With proper configuration, you should see:
|
|
461
|
+
- ✅ 987+ CSS rules generated
|
|
462
|
+
- ✅ All component styles working
|
|
463
|
+
- ✅ Full UI functionality restored
|
|
464
|
+
- ✅ Proper color palette applied
|
|
465
|
+
|
|
271
466
|
If you've tried everything above and still have issues:
|
|
272
467
|
|
|
273
468
|
1. **Create a minimal test case** showing the problem
|
|
@@ -277,4 +472,51 @@ If you've tried everything above and still have issues:
|
|
|
277
472
|
|
|
278
473
|
---
|
|
279
474
|
|
|
280
|
-
**Last Updated:** 2025-01-
|
|
475
|
+
**Last Updated:** 2025-01-28 | **Version:** v0.5.181
|
|
476
|
+
|
|
477
|
+
## ♿ Accessibility
|
|
478
|
+
|
|
479
|
+
Troubleshooting styling issues should consider accessibility:
|
|
480
|
+
|
|
481
|
+
- **WCAG 2.1 AA compliance** - Ensure fixes maintain accessibility standards
|
|
482
|
+
- **Screen Reader Support** - Verify styling fixes don't break screen reader functionality
|
|
483
|
+
- **Keyboard Navigation** - Ensure styling changes don't affect keyboard accessibility
|
|
484
|
+
- **Color Contrast** - Verify color fixes meet WCAG contrast requirements
|
|
485
|
+
- **Focus Indicators** - Ensure focus states remain visible after styling fixes
|
|
486
|
+
|
|
487
|
+
### Accessibility Best Practices
|
|
488
|
+
|
|
489
|
+
1. **Test with screen readers** - Verify styling fixes work with assistive technologies
|
|
490
|
+
2. **Check color contrast** - Use contrast checkers to verify color fixes
|
|
491
|
+
3. **Maintain focus visibility** - Ensure focus indicators remain visible
|
|
492
|
+
4. **Test keyboard navigation** - Verify all interactive elements remain keyboard accessible
|
|
493
|
+
5. **Preserve semantic structure** - Don't break semantic HTML with styling fixes
|
|
494
|
+
|
|
495
|
+
## ⚠️ Edge Cases
|
|
496
|
+
|
|
497
|
+
### Styling Fixes Not Applying
|
|
498
|
+
|
|
499
|
+
When styling fixes don't apply:
|
|
500
|
+
- Clear browser cache and hard refresh
|
|
501
|
+
- Verify CSS import order is correct
|
|
502
|
+
- Check for CSS specificity conflicts
|
|
503
|
+
- Ensure Tailwind is scanning all necessary files
|
|
504
|
+
- Restart dev server after configuration changes
|
|
505
|
+
|
|
506
|
+
### Build-Time vs Runtime Styling Issues
|
|
507
|
+
|
|
508
|
+
When styles work in development but not production:
|
|
509
|
+
- Verify build configuration matches development
|
|
510
|
+
- Check that all CSS files are included in build
|
|
511
|
+
- Ensure Tailwind is configured for production builds
|
|
512
|
+
- Verify content scanning paths are correct
|
|
513
|
+
- Check for CSS minification issues
|
|
514
|
+
|
|
515
|
+
### Multiple Styling Conflicts
|
|
516
|
+
|
|
517
|
+
When multiple styling issues occur simultaneously:
|
|
518
|
+
- Address CSS import order first
|
|
519
|
+
- Fix Tailwind configuration before component-specific issues
|
|
520
|
+
- Resolve color palette issues before utility class problems
|
|
521
|
+
- Test each fix independently
|
|
522
|
+
- Use browser DevTools to identify conflicting styles
|
package/{src/components/DataTable/examples → examples/DataTable}/GroupingAggregationExample.tsx
RENAMED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import React from 'react';
|
|
13
|
-
import { DataTable, sum, average, count, type DataTableColumn, type DataRecord } from '
|
|
13
|
+
import { DataTable, sum, average, count, type DataTableColumn, type DataRecord } from '@jmruthers/pace-core';
|
|
14
14
|
|
|
15
15
|
// ============================================================================
|
|
16
16
|
// DATA INTERFACE
|
|
@@ -9,10 +9,13 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import React from 'react';
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
import {
|
|
13
|
+
DataTable,
|
|
14
|
+
type DataTableColumn,
|
|
15
|
+
type DataTableAction,
|
|
16
|
+
type HierarchicalDataRow,
|
|
17
|
+
Button
|
|
18
|
+
} from '@jmruthers/pace-core';
|
|
16
19
|
import {
|
|
17
20
|
PlusIcon,
|
|
18
21
|
PencilIcon,
|
|
@@ -25,7 +28,6 @@ import {
|
|
|
25
28
|
InfoIcon,
|
|
26
29
|
StarIcon
|
|
27
30
|
} from 'lucide-react';
|
|
28
|
-
import type { HierarchicalDataRow } from '../types';
|
|
29
31
|
|
|
30
32
|
// ============================================================================
|
|
31
33
|
// DATA TYPES
|
|
@@ -352,7 +354,6 @@ const columns: DataTableColumn<Dish>[] = [
|
|
|
352
354
|
// ============================================================================
|
|
353
355
|
|
|
354
356
|
export function HierarchicalActionsExample() {
|
|
355
|
-
const logger = createLogger('HierarchicalActionsExample');
|
|
356
357
|
return (
|
|
357
358
|
<div className="space-y-6">
|
|
358
359
|
<div>
|
|
@@ -17,10 +17,12 @@
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import React from 'react';
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
import {
|
|
21
|
+
DataTable,
|
|
22
|
+
type DataTableColumn,
|
|
23
|
+
type HierarchicalDataRow,
|
|
24
|
+
type HierarchicalConfig
|
|
25
|
+
} from '@jmruthers/pace-core';
|
|
24
26
|
|
|
25
27
|
// ============================================================================
|
|
26
28
|
// DATA TYPES
|
|
@@ -313,7 +315,7 @@ const hierarchicalConfig: HierarchicalConfig = {
|
|
|
313
315
|
onExpandedChange: (expandedIds) => {
|
|
314
316
|
// Expanded rows changed
|
|
315
317
|
},
|
|
316
|
-
expandButton
|
|
318
|
+
// expandButton is optional - DataTable uses default if not provided
|
|
317
319
|
indentSize: 24, // 24px indentation for child rows
|
|
318
320
|
parentRowClassName: 'bg-main-50 hover:bg-main-100 font-medium border-l-4 border-l-main-500',
|
|
319
321
|
childRowClassName: 'bg-sec-25 hover:bg-sec-50 text-sec-700',
|
|
@@ -378,7 +380,7 @@ export function HierarchicalExample() {
|
|
|
378
380
|
export function HierarchicalExampleMinimal() {
|
|
379
381
|
const minimalConfig: HierarchicalConfig = {
|
|
380
382
|
...hierarchicalConfig,
|
|
381
|
-
expandButton
|
|
383
|
+
// expandButton is optional - DataTable uses default if not provided
|
|
382
384
|
parentRowClassName: 'bg-acc-50 hover:bg-acc-100 font-semibold',
|
|
383
385
|
childRowClassName: 'bg-acc-25 hover:bg-acc-50',
|
|
384
386
|
};
|
package/examples/{components 2/DataTable/PerformanceExample.tsx → DataTable/PerformanceExample.tsx}
RENAMED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
|
|
8
8
|
import React, { useState, useMemo } from 'react';
|
|
9
9
|
import {
|
|
10
|
+
DataTable,
|
|
10
11
|
type DataTableColumn,
|
|
11
12
|
type ServerSideConfig,
|
|
12
13
|
type PerformanceConfig,
|
|
13
14
|
type ServerSideParams,
|
|
14
15
|
type ServerSideResponse,
|
|
15
16
|
type DataTableFeatureConfig
|
|
16
|
-
} from '
|
|
17
|
-
import { DataTable } from '../DataTable';
|
|
17
|
+
} from '@jmruthers/pace-core';
|
|
18
18
|
|
|
19
19
|
// Sample data interface
|
|
20
20
|
interface User {
|
|
@@ -11,3 +11,4 @@ export { HierarchicalExample } from './HierarchicalExample';
|
|
|
11
11
|
export { HierarchicalActionsExample } from './HierarchicalActionsExample';
|
|
12
12
|
export { InitialPageSizeExample } from './InitialPageSizeExample';
|
|
13
13
|
export { PerformanceExample } from './PerformanceExample';
|
|
14
|
+
export { GroupingAggregationExample, CustomAggregationExample } from './GroupingAggregationExample';
|
|
@@ -17,9 +17,9 @@ import {
|
|
|
17
17
|
DialogTitle,
|
|
18
18
|
DialogDescription,
|
|
19
19
|
DialogBody,
|
|
20
|
-
DialogFooter
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
DialogFooter,
|
|
21
|
+
Button
|
|
22
|
+
} from '@jmruthers/pace-core';
|
|
23
23
|
|
|
24
24
|
export function HtmlDialogExample() {
|
|
25
25
|
const importInstructionsHtml = `
|
|
@@ -10,6 +10,3 @@
|
|
|
10
10
|
export { HtmlDialogExample } from './HtmlDialogExample';
|
|
11
11
|
export { ScrollableDialogExample } from './ScrollableDialogExample';
|
|
12
12
|
export { SmartDialogExample } from './SmartDialogExample';
|
|
13
|
-
export { SimpleHtmlTest } from './SimpleHtmlTest';
|
|
14
|
-
export { BasicHtmlTest } from './BasicHtmlTest';
|
|
15
|
-
export { DebugHtmlExample } from './DebugHtmlExample';
|
|
@@ -19,11 +19,12 @@ import {
|
|
|
19
19
|
PublicPageLayout,
|
|
20
20
|
PublicPageHeader,
|
|
21
21
|
PublicPageFooter,
|
|
22
|
-
|
|
22
|
+
FileDisplay,
|
|
23
|
+
FileCategory,
|
|
23
24
|
usePublicEvent,
|
|
24
25
|
usePublicRouteParams,
|
|
25
|
-
|
|
26
|
-
} from '
|
|
26
|
+
LoadingSpinner
|
|
27
|
+
} from '@jmruthers/pace-core';
|
|
27
28
|
|
|
28
29
|
/**
|
|
29
30
|
* MAIN APPLICATION - This is your main app with authentication
|
|
@@ -97,9 +98,12 @@ function PublicRecipeGridReportPage() {
|
|
|
97
98
|
// Step 3: Handle loading state
|
|
98
99
|
if (isLoading) {
|
|
99
100
|
return (
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
<div className="min-h-screen bg-background flex items-center justify-center">
|
|
102
|
+
<div className="max-w-md mx-auto text-center px-4">
|
|
103
|
+
<LoadingSpinner size="lg" className="mx-auto mb-4" />
|
|
104
|
+
<p className="text-sec-600">Loading recipe grid report...</p>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
103
107
|
);
|
|
104
108
|
}
|
|
105
109
|
|
|
@@ -219,12 +223,23 @@ function PublicRecipeGridReportPage() {
|
|
|
219
223
|
{/* Event Logo */}
|
|
220
224
|
<div className="flex justify-center lg:justify-start">
|
|
221
225
|
<div className="text-center">
|
|
222
|
-
<
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
226
|
+
<FileDisplay
|
|
227
|
+
table_name="event"
|
|
228
|
+
record_id={event.event_id}
|
|
229
|
+
organisation_id={event.organisation_id}
|
|
230
|
+
category={FileCategory.EVENT_LOGOS}
|
|
231
|
+
displayOnly={true}
|
|
232
|
+
showFallback={true}
|
|
233
|
+
fallbackSize="2xl"
|
|
227
234
|
className="rounded-lg shadow-lg"
|
|
235
|
+
generateFallbackText={() => {
|
|
236
|
+
if (!event.event_name) return 'EV';
|
|
237
|
+
return event.event_name
|
|
238
|
+
.split(/[\s\-_]+/)
|
|
239
|
+
.map(word => word.charAt(0).toUpperCase())
|
|
240
|
+
.join('')
|
|
241
|
+
.substring(0, 3);
|
|
242
|
+
}}
|
|
228
243
|
/>
|
|
229
244
|
<p className="mt-4 text-sm text-sec-600">Event Logo</p>
|
|
230
245
|
</div>
|
|
@@ -244,7 +259,16 @@ function PublicEventPage() {
|
|
|
244
259
|
const { eventCode } = usePublicRouteParams({ fetchEventData: false });
|
|
245
260
|
const { event, isLoading, error, refetch } = usePublicEvent(eventCode || '');
|
|
246
261
|
|
|
247
|
-
if (isLoading)
|
|
262
|
+
if (isLoading) {
|
|
263
|
+
return (
|
|
264
|
+
<div className="min-h-screen bg-background flex items-center justify-center">
|
|
265
|
+
<div className="max-w-md mx-auto text-center px-4">
|
|
266
|
+
<LoadingSpinner size="lg" className="mx-auto mb-4" />
|
|
267
|
+
<p className="text-sec-600">Loading event...</p>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
);
|
|
271
|
+
}
|
|
248
272
|
if (error) return <div>Error: {error.message}</div>;
|
|
249
273
|
if (!event) return <div>Event not found</div>;
|
|
250
274
|
|
|
@@ -259,12 +283,23 @@ function PublicEventPage() {
|
|
|
259
283
|
|
|
260
284
|
<main className="max-w-4xl mx-auto px-4 py-6">
|
|
261
285
|
<div className="text-center mb-6">
|
|
262
|
-
<
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
286
|
+
<FileDisplay
|
|
287
|
+
table_name="event"
|
|
288
|
+
record_id={event.event_id}
|
|
289
|
+
organisation_id={event.organisation_id}
|
|
290
|
+
category={FileCategory.EVENT_LOGOS}
|
|
291
|
+
displayOnly={true}
|
|
292
|
+
showFallback={true}
|
|
293
|
+
fallbackSize="xl"
|
|
267
294
|
className="mx-auto mb-4"
|
|
295
|
+
generateFallbackText={() => {
|
|
296
|
+
if (!event.event_name) return 'EV';
|
|
297
|
+
return event.event_name
|
|
298
|
+
.split(/[\s\-_]+/)
|
|
299
|
+
.map(word => word.charAt(0).toUpperCase())
|
|
300
|
+
.join('')
|
|
301
|
+
.substring(0, 3);
|
|
302
|
+
}}
|
|
268
303
|
/>
|
|
269
304
|
<h1 className="text-2xl font-bold text-sec-900">{event.event_name}</h1>
|
|
270
305
|
{event.event_date && (
|
|
@@ -34,12 +34,12 @@ import {
|
|
|
34
34
|
PublicPageLayout,
|
|
35
35
|
PublicPageHeader,
|
|
36
36
|
PublicPageFooter,
|
|
37
|
-
|
|
37
|
+
FileDisplay,
|
|
38
|
+
FileCategory,
|
|
38
39
|
usePublicEvent,
|
|
39
40
|
usePublicRouteParams,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
} from '../../../src';
|
|
41
|
+
LoadingSpinner
|
|
42
|
+
} from '@jmruthers/pace-core';
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Complete public event page example
|
|
@@ -56,9 +56,12 @@ export function PublicEventPage() {
|
|
|
56
56
|
// Handle loading state
|
|
57
57
|
if (eventLoading) {
|
|
58
58
|
return (
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
<div className="min-h-screen bg-background flex items-center justify-center">
|
|
60
|
+
<div className="max-w-md mx-auto text-center px-4">
|
|
61
|
+
<LoadingSpinner size="lg" className="mx-auto mb-4" />
|
|
62
|
+
<p className="text-sec-600">Loading event details...</p>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
62
65
|
);
|
|
63
66
|
}
|
|
64
67
|
|
|
@@ -114,8 +117,7 @@ export function PublicEventPage() {
|
|
|
114
117
|
}
|
|
115
118
|
|
|
116
119
|
return (
|
|
117
|
-
<
|
|
118
|
-
<PublicPageLayout eventCode={eventCode || ''} event={event}>
|
|
120
|
+
<PublicPageLayout eventCode={eventCode || ''} event={event}>
|
|
119
121
|
<PublicPageHeader
|
|
120
122
|
event={event}
|
|
121
123
|
eventCode={eventCode || ''}
|
|
@@ -170,12 +172,23 @@ export function PublicEventPage() {
|
|
|
170
172
|
{/* Event Logo */}
|
|
171
173
|
<div className="flex justify-center lg:justify-start">
|
|
172
174
|
<div className="text-center">
|
|
173
|
-
<
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
<FileDisplay
|
|
176
|
+
table_name="event"
|
|
177
|
+
record_id={event.event_id}
|
|
178
|
+
organisation_id={event.organisation_id}
|
|
179
|
+
category={FileCategory.EVENT_LOGOS}
|
|
180
|
+
displayOnly={true}
|
|
181
|
+
showFallback={true}
|
|
182
|
+
fallbackSize="2xl"
|
|
178
183
|
className="rounded-lg shadow-lg"
|
|
184
|
+
generateFallbackText={() => {
|
|
185
|
+
if (!event.event_name) return 'EV';
|
|
186
|
+
return event.event_name
|
|
187
|
+
.split(/[\s\-_]+/)
|
|
188
|
+
.map(word => word.charAt(0).toUpperCase())
|
|
189
|
+
.join('')
|
|
190
|
+
.substring(0, 3);
|
|
191
|
+
}}
|
|
179
192
|
/>
|
|
180
193
|
<p className="mt-4 text-sm text-sec-600">Event Logo</p>
|
|
181
194
|
</div>
|
|
@@ -205,7 +218,6 @@ export function PublicEventPage() {
|
|
|
205
218
|
|
|
206
219
|
<PublicPageFooter event={event} />
|
|
207
220
|
</PublicPageLayout>
|
|
208
|
-
</PublicErrorBoundary>
|
|
209
221
|
);
|
|
210
222
|
}
|
|
211
223
|
|
|
@@ -216,28 +228,47 @@ export function PublicEventPageCompact() {
|
|
|
216
228
|
const { eventCode } = usePublicRouteParams();
|
|
217
229
|
const { event, isLoading, error } = usePublicEvent(eventCode || '');
|
|
218
230
|
|
|
219
|
-
if (isLoading)
|
|
231
|
+
if (isLoading) {
|
|
232
|
+
return (
|
|
233
|
+
<div className="min-h-screen bg-background flex items-center justify-center">
|
|
234
|
+
<div className="max-w-md mx-auto text-center px-4">
|
|
235
|
+
<LoadingSpinner size="lg" className="mx-auto mb-4" />
|
|
236
|
+
<p className="text-sec-600">Loading...</p>
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
);
|
|
240
|
+
}
|
|
220
241
|
if (error || !event) return <div>Event not found</div>;
|
|
221
242
|
|
|
222
243
|
return (
|
|
223
|
-
<
|
|
224
|
-
<
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
<
|
|
233
|
-
<
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
244
|
+
<PublicPageLayout eventCode={eventCode || ''} event={event}>
|
|
245
|
+
<PublicPageHeader
|
|
246
|
+
event={event}
|
|
247
|
+
eventCode={eventCode || ''}
|
|
248
|
+
showEventLogo={true}
|
|
249
|
+
showAppLogo={true}
|
|
250
|
+
/>
|
|
251
|
+
|
|
252
|
+
<main className="max-w-4xl mx-auto px-4 py-6">
|
|
253
|
+
<div className="text-center mb-6">
|
|
254
|
+
<FileDisplay
|
|
255
|
+
table_name="event"
|
|
256
|
+
record_id={event.event_id}
|
|
257
|
+
organisation_id={event.organisation_id}
|
|
258
|
+
category={FileCategory.EVENT_LOGOS}
|
|
259
|
+
displayOnly={true}
|
|
260
|
+
showFallback={true}
|
|
261
|
+
fallbackSize="xl"
|
|
262
|
+
className="mx-auto mb-4"
|
|
263
|
+
generateFallbackText={() => {
|
|
264
|
+
if (!event.event_name) return 'EV';
|
|
265
|
+
return event.event_name
|
|
266
|
+
.split(/[\s\-_]+/)
|
|
267
|
+
.map(word => word.charAt(0).toUpperCase())
|
|
268
|
+
.join('')
|
|
269
|
+
.substring(0, 3);
|
|
270
|
+
}}
|
|
271
|
+
/>
|
|
241
272
|
<h1 className="text-2xl font-bold text-sec-900">{event.event_name}</h1>
|
|
242
273
|
{event.event_date && (
|
|
243
274
|
<p className="text-sec-600 mt-2">
|
|
@@ -267,7 +298,6 @@ export function PublicEventPageCompact() {
|
|
|
267
298
|
|
|
268
299
|
<PublicPageFooter event={event} />
|
|
269
300
|
</PublicPageLayout>
|
|
270
|
-
</PublicErrorBoundary>
|
|
271
301
|
);
|
|
272
302
|
}
|
|
273
303
|
|