@jmruthers/pace-core 0.6.9 → 0.6.11
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 +21 -0
- package/audit-tool/00-dependencies.cjs +46 -13
- package/audit-tool/audits/01-pace-core-compliance.cjs +96 -21
- package/audit-tool/audits/02-project-structure.cjs +74 -2
- package/audit-tool/audits/03-architecture.cjs +220 -20
- package/audit-tool/audits/04-code-quality.cjs +95 -3
- package/audit-tool/audits/05-styling.cjs +19 -7
- package/audit-tool/audits/06-security-rbac.cjs +214 -25
- package/audit-tool/audits/07-api-tech-stack.cjs +31 -15
- package/audit-tool/audits/08-testing-documentation.cjs +11 -3
- package/audit-tool/audits/09-operations.cjs +19 -7
- package/audit-tool/index.cjs +22 -11
- package/audit-tool/utils/report-utils.cjs +4 -0
- package/cursor-rules/01-pace-core-compliance.mdc +1 -0
- package/cursor-rules/02-project-structure.mdc +3 -26
- package/cursor-rules/03-architecture.mdc +3 -1
- package/cursor-rules/04-code-quality.mdc +1 -0
- package/cursor-rules/05-styling.mdc +120 -8
- package/cursor-rules/06-security-rbac.mdc +126 -2
- package/cursor-rules/07-api-tech-stack.mdc +1 -0
- package/cursor-rules/08-testing-documentation.mdc +1 -0
- package/cursor-rules/09-operations.mdc +1 -0
- package/dist/DataTable-EFYP2QLE.js +16 -0
- package/dist/InactivityServiceProvider-BbxwwDz1.d.ts +308 -0
- package/dist/UnifiedAuthProvider-Bkt_tzdS.d.ts +183 -0
- package/dist/api-BZR2CYXL.js +5 -0
- package/dist/api-result-USV1Czr-.d.ts +51 -0
- package/dist/assets/app-icons/admin_favicon.svg +462 -0
- package/dist/assets/app-icons/base_favicon.svg +85 -0
- package/dist/assets/app-icons/cake_favicon.svg +68 -0
- package/dist/assets/app-icons/core_favicon.svg +256 -0
- package/dist/assets/app-icons/gear_favicon.svg +91 -0
- package/dist/assets/app-icons/medi_favicon.svg +92 -0
- package/dist/assets/app-icons/mint_favicon.svg +83 -0
- package/dist/assets/app-icons/pace_favicon.svg +49 -0
- package/dist/assets/app-icons/pump_favicon.svg +68 -0
- package/dist/assets/app-icons/seed_favicon.svg +91 -0
- package/dist/assets/app-icons/team_favicon.svg +67 -0
- package/dist/assets/app-icons/trac_favicon.svg +112 -0
- package/dist/assets/app-icons/trip_favicon.svg +102 -0
- package/dist/audit-HI2DHUVU.js +4 -0
- package/dist/auth-JvdRVaud.d.ts +49 -0
- package/dist/chunk-2DL2WSOE.js +327 -0
- package/dist/chunk-2OEVOGGR.js +9598 -0
- package/dist/chunk-44CNXN4P.js +15 -0
- package/dist/chunk-4R3T5ENU.js +2943 -0
- package/dist/chunk-7A6IMHH2.js +2321 -0
- package/dist/chunk-BTHN5MKC.js +121 -0
- package/dist/chunk-CU2BU2MQ.js +2 -0
- package/dist/chunk-D6BMFMQZ.js +200 -0
- package/dist/chunk-DDMPHZ3D.js +58 -0
- package/dist/chunk-ENLXB7GP.js +721 -0
- package/dist/chunk-J2KQK6DG.js +2159 -0
- package/dist/chunk-KJXRL3XE.js +6434 -0
- package/dist/chunk-L5LFKKLJ.js +61 -0
- package/dist/chunk-PCSHBLPB.js +811 -0
- package/dist/chunk-QRYSEPHB.js +429 -0
- package/dist/chunk-RMLY6KB5.js +187 -0
- package/dist/chunk-SACF5YSM.js +31 -0
- package/dist/chunk-UZNAFKGW.js +125 -0
- package/dist/chunk-V7FTM2LU.js +1080 -0
- package/dist/chunk-WY6Y7KC3.js +264 -0
- package/dist/chunk-XOJME5T7.js +407 -0
- package/dist/chunk-XPFVT3GN.js +492 -0
- package/dist/chunk-YFTFFJIV.js +529 -0
- package/dist/chunk-YYTWKVHO.js +1334 -0
- package/dist/components.d.ts +12 -89
- package/dist/components.js +23 -55
- package/dist/database.generated-qkdoiVrJ.d.ts +9441 -0
- package/dist/eslint-rules/index.cjs +3 -0
- package/dist/eslint-rules/rules/03-architecture.cjs +74 -0
- package/dist/eslint-rules/rules/05-styling.cjs +507 -0
- package/dist/eslint-rules/rules/06-security-rbac.cjs +84 -0
- package/dist/event-BfCox3N2.d.ts +265 -0
- package/dist/file-reference-DU1hcawx.d.ts +164 -0
- package/dist/functions-DH45k8ec.d.ts +208 -0
- package/dist/hooks.d.ts +28 -14
- package/dist/hooks.js +90 -56
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.js +1 -0
- package/dist/index.d.ts +392 -155
- package/dist/index.js +337 -347
- package/dist/pagination-BW1mqywp.d.ts +201 -0
- package/dist/papaparseLoader-WG2UXQ22.js +7 -0
- package/dist/providers.d.ts +29 -14
- package/dist/providers.js +7 -5
- package/dist/rbac/eslint-rules.js +2 -2
- package/dist/rbac/index.d.ts +180 -351
- package/dist/rbac/index.js +13 -11
- package/dist/theming/runtime.d.ts +28 -5
- package/dist/theming/runtime.js +2 -2
- package/dist/timezone-BTWWXKVY.d.ts +696 -0
- package/dist/types-BE2sEHKd.d.ts +55 -0
- package/dist/types-CvOPXWWZ.d.ts +111 -0
- package/dist/types-Dr8sNhER.d.ts +50 -0
- package/dist/types.d.ts +20 -13
- package/dist/types.js +1 -0
- package/dist/usePublicPageContext-B91dGYW1.d.ts +4367 -0
- package/dist/usePublicRouteParams-BgV6VhMi.d.ts +946 -0
- package/dist/utils.d.ts +338 -156
- package/dist/utils.js +78 -60
- package/dist/validation-g5n0hDkh.d.ts +177 -0
- package/docs/api/modules.md +1226 -1094
- package/docs/api-reference/components.md +5 -5
- package/docs/api-reference/rpc-functions.md +12 -3
- package/docs/core-concepts/rbac-system.md +8 -0
- package/docs/getting-started/cursor-rules.md +17 -20
- package/docs/getting-started/dependencies.md +1 -1
- package/docs/getting-started/setup.md +235 -0
- package/docs/implementation-guides/authentication.md +27 -0
- package/docs/implementation-guides/data-tables.md +365 -10
- package/docs/migration/ApiResult-migration.md +25 -0
- package/docs/rbac/RBAC_CONTRACT.md +0 -12
- package/docs/rbac/api-reference.md +33 -31
- package/docs/standards/0-standards-overview.md +50 -15
- package/docs/standards/1-pace-core-compliance-standards.md +62 -57
- package/docs/standards/2-project-structure-standards.md +45 -90
- package/docs/standards/3-architecture-standards.md +41 -1
- package/docs/standards/4-code-quality-standards.md +26 -6
- package/docs/standards/5-styling-standards.md +35 -1
- package/docs/standards/6-security-rbac-standards.md +288 -7
- package/docs/standards/7-api-tech-stack-standards.md +116 -17
- package/docs/standards/8-testing-documentation-standards.md +31 -0
- package/docs/standards/9-operations-standards.md +19 -0
- package/docs/standards/README.md +20 -201
- package/docs/testing/README.md +10 -0
- package/docs/testing/test-setup-for-consumers.md +916 -0
- package/docs/troubleshooting/common-issues.md +17 -1
- package/docs/troubleshooting/organisation-context-setup.md +8 -0
- package/docs/troubleshooting/print-event-name-css-variable-analysis.md +217 -0
- package/eslint-config-pace-core.cjs +24 -0
- package/package.json +14 -20
- package/scripts/build-docs.js +180 -0
- package/scripts/setup.cjs +536 -0
- package/scripts/validate.cjs +480 -0
- package/src/__mocks__/lucide-react.ts +0 -2
- package/src/__tests__/helpers/component-test-utils.test.tsx +260 -0
- package/src/__tests__/helpers/optimized-test-setup.test.ts +224 -0
- package/src/__tests__/helpers/supabaseMock.test.ts +273 -0
- package/src/__tests__/helpers/test-providers.test.tsx +99 -0
- package/src/__tests__/helpers/test-providers.tsx +37 -39
- package/src/__tests__/helpers/test-utils.test.tsx +447 -0
- package/src/__tests__/helpers/timer-utils.test.ts +371 -0
- package/src/assets/app-icons/admin_favicon.svg +462 -0
- package/src/assets/app-icons/base_favicon.svg +85 -0
- package/src/assets/app-icons/cake_favicon.svg +68 -0
- package/src/assets/app-icons/core_favicon.svg +256 -0
- package/src/assets/app-icons/gear_favicon.svg +91 -0
- package/src/assets/app-icons/index.test.ts +304 -0
- package/src/assets/app-icons/index.ts +83 -0
- package/src/assets/app-icons/medi_favicon.svg +92 -0
- package/src/assets/app-icons/mint_favicon.svg +83 -0
- package/src/assets/app-icons/pace_favicon.svg +49 -0
- package/src/assets/app-icons/pump_favicon.svg +68 -0
- package/src/assets/app-icons/seed_favicon.svg +91 -0
- package/src/assets/app-icons/team_favicon.svg +67 -0
- package/src/assets/app-icons/trac_favicon.svg +112 -0
- package/src/assets/app-icons/trip_favicon.svg +102 -0
- package/src/components/AddressField/AddressField.test.tsx +379 -4
- package/src/components/AddressField/AddressField.tsx +239 -213
- package/src/components/AddressField/types.ts +2 -2
- package/src/components/Alert/Alert.test.tsx +35 -25
- package/src/components/Alert/Alert.tsx +8 -8
- package/src/components/AppSwitcher/AppSwitcher.test.tsx +1250 -0
- package/src/components/AppSwitcher/AppSwitcher.tsx +315 -0
- package/src/components/Avatar/Avatar.test.tsx +11 -1
- package/src/components/Avatar/Avatar.tsx +3 -2
- package/src/components/Badge/Badge.test.tsx +11 -1
- package/src/components/Button/Button.test.tsx +13 -3
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Calendar/Calendar.test.tsx +523 -131
- package/src/components/Calendar/Calendar.tsx +107 -488
- package/src/components/Card/Card.test.tsx +384 -258
- package/src/components/Card/Card.tsx +19 -10
- package/src/components/Checkbox/Checkbox.test.tsx +58 -174
- package/src/components/ContextSelector/ContextSelector.internals.tsx +204 -0
- package/src/components/ContextSelector/ContextSelector.test.tsx +360 -0
- package/src/components/ContextSelector/ContextSelector.tsx +66 -280
- package/src/components/ContextSelector/ContextSelector.types.ts +35 -0
- package/src/components/ContextSelector/useContextSelectorState.tsx +195 -0
- package/src/components/DataTable/AUDIT_REPORT.md +59 -44
- package/src/components/DataTable/DataTable.comprehensive.test.tsx +759 -0
- package/src/components/DataTable/DataTable.default-state.test.tsx +524 -0
- package/src/components/DataTable/DataTable.export.test.tsx +705 -0
- package/src/components/DataTable/DataTable.grouping-aggregation.test.tsx +658 -0
- package/src/components/DataTable/DataTable.hooks.test.tsx +192 -0
- package/src/components/DataTable/DataTable.select-label-display.test.tsx +485 -0
- package/src/components/DataTable/DataTable.test.tsx +787 -416
- package/src/components/DataTable/DataTable.tsx +14 -14
- package/src/components/DataTable/DataTableCore.integration.test.tsx +458 -0
- package/src/components/DataTable/DataTableCore.test-setup.ts +221 -0
- package/src/components/DataTable/DataTableCore.test.tsx +970 -0
- package/src/components/DataTable/README.md +155 -0
- package/src/components/DataTable/TESTING.md +101 -0
- package/src/components/DataTable/a11y.basic.test.tsx +788 -0
- package/src/components/DataTable/components/DataTableCore.tsx +126 -894
- package/src/components/DataTable/components/GroupingDropdown.test.tsx +621 -0
- package/src/components/DataTable/components/GroupingDropdown.tsx +2 -3
- package/src/components/DataTable/components/ImportModal.tsx +82 -408
- package/src/components/DataTable/components/ImportModalFileSection.tsx +148 -0
- package/src/components/DataTable/context/DataTableContext.test.tsx +328 -0
- package/src/components/DataTable/context/DataTableContext.tsx +13 -13
- package/src/components/DataTable/core/ColumnFactory.test.ts +403 -0
- package/src/components/DataTable/core/ColumnFactory.ts +3 -3
- package/src/components/DataTable/hooks/useColumnOrderPersistence.test.ts +516 -0
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +12 -9
- package/src/components/DataTable/hooks/useColumnVisibilityPersistence.test.ts +256 -0
- package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +12 -9
- package/src/components/DataTable/hooks/useDataTableConfiguration.test.ts +297 -0
- package/src/components/DataTable/hooks/useDataTableConfiguration.ts +15 -3
- package/src/components/DataTable/hooks/useDataTableDataPipeline.test.ts +270 -0
- package/src/components/DataTable/hooks/useDataTableDeletionBatching.test.ts +127 -0
- package/src/components/DataTable/hooks/useDataTableDeletionBatching.ts +106 -0
- package/src/components/DataTable/hooks/useDataTableEffectiveActions.test.ts +461 -0
- package/src/components/DataTable/hooks/useDataTableEffectiveActions.ts +238 -0
- package/src/components/DataTable/hooks/useDataTableLayoutHandlers.test.ts +296 -0
- package/src/components/DataTable/hooks/useDataTableLayoutHandlers.ts +175 -0
- package/src/components/DataTable/hooks/useDataTablePaginationSync.test.ts +203 -0
- package/src/components/DataTable/hooks/useDataTablePaginationSync.ts +109 -0
- package/src/components/DataTable/hooks/useDataTablePermissions.test.ts +280 -0
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +81 -260
- package/src/components/DataTable/hooks/useDataTablePipeline.test.tsx +219 -0
- package/src/components/DataTable/hooks/useDataTablePipeline.tsx +239 -0
- package/src/components/DataTable/hooks/useDataTableRenderGuard.test.tsx +316 -0
- package/src/components/DataTable/hooks/useDataTableRenderGuard.tsx +195 -0
- package/src/components/DataTable/hooks/useDataTableScope.test.ts +110 -0
- package/src/components/DataTable/hooks/useDataTableScope.ts +123 -0
- package/src/components/DataTable/hooks/useDataTableState.test.ts +733 -0
- package/src/components/DataTable/hooks/useDataTableState.ts +161 -114
- package/src/components/DataTable/hooks/useDataTableStateAndPersistence.test.ts +277 -0
- package/src/components/DataTable/hooks/useDataTableStateAndPersistence.ts +222 -0
- package/src/components/DataTable/hooks/useDataTableSuperAdmin.test.ts +93 -0
- package/src/components/DataTable/hooks/useDataTableSuperAdmin.ts +86 -0
- package/src/components/DataTable/hooks/useDataTableTableInstance.test.ts +185 -0
- package/src/components/DataTable/hooks/useDataTableTableInstance.ts +178 -0
- package/src/components/DataTable/hooks/useEffectiveColumnOrder.test.ts +183 -0
- package/src/components/DataTable/hooks/useHierarchicalState.test.ts +294 -0
- package/src/components/DataTable/hooks/useImportModalFocus.test.ts +184 -0
- package/src/components/DataTable/hooks/useImportModalFocus.ts +53 -0
- package/src/components/DataTable/hooks/useImportModalState.test.ts +390 -0
- package/src/components/DataTable/hooks/useImportModalState.ts +345 -0
- package/src/components/DataTable/hooks/useKeyboardNavigation.test.ts +787 -0
- package/src/components/DataTable/hooks/useKeyboardNavigation.ts +311 -271
- package/src/components/DataTable/hooks/usePermissionTracking.test.ts +381 -0
- package/src/components/DataTable/hooks/usePermissionTracking.ts +122 -0
- package/src/components/DataTable/hooks/useServerSideDataEffect.test.ts +258 -0
- package/src/components/DataTable/hooks/useServerSideDataEffect.ts +27 -4
- package/src/components/DataTable/hooks/useTableColumns.test.ts +499 -0
- package/src/components/DataTable/hooks/useTableColumns.ts +15 -39
- package/src/components/DataTable/hooks/useTableHandlers.test.ts +461 -0
- package/src/components/DataTable/hooks/useTableHandlers.ts +13 -22
- package/src/components/DataTable/index.ts +28 -5
- package/src/components/DataTable/keyboard.test.tsx +734 -0
- package/src/components/DataTable/mocks/MockRBACProvider.tsx +66 -0
- package/src/components/DataTable/pagination.modes.test.tsx +728 -0
- package/src/components/DataTable/ssr.strict-mode.test.tsx +319 -0
- package/src/components/DataTable/styles.test.ts +379 -0
- package/src/components/DataTable/styles.ts +0 -1
- package/src/components/DataTable/test-utils/MockDataTableComponents.tsx +55 -0
- package/src/components/DataTable/test-utils/dataFactories.ts +103 -0
- package/src/components/DataTable/test-utils/featureConfig.ts +10 -0
- package/src/components/DataTable/test-utils/sharedTestUtils.ts +419 -0
- package/src/components/DataTable/test-utils.ts +94 -0
- package/src/components/DataTable/types/actions.ts +71 -0
- package/src/components/DataTable/types/base.ts +39 -0
- package/src/components/DataTable/types/columns.ts +125 -0
- package/src/components/DataTable/types/export.ts +32 -0
- package/src/components/DataTable/types/features.ts +81 -0
- package/src/components/DataTable/types/hierarchical.ts +44 -0
- package/src/components/DataTable/types/index.ts +43 -0
- package/src/components/DataTable/types/pagination.ts +85 -0
- package/src/components/DataTable/types/performance.ts +47 -0
- package/src/components/DataTable/types/props.ts +62 -0
- package/src/components/DataTable/types/rbac.ts +45 -0
- package/src/components/DataTable/ui/layout/DataTableCore.test.tsx +1194 -0
- package/src/components/DataTable/ui/layout/DataTableCore.tsx +345 -0
- package/src/components/DataTable/ui/layout/DataTableErrorBoundary.test.tsx +438 -0
- package/src/components/DataTable/ui/layout/DataTableErrorBoundary.tsx +225 -0
- package/src/components/DataTable/ui/layout/DataTableLayout.test.tsx +1352 -0
- package/src/components/DataTable/ui/layout/DataTableLayout.tsx +661 -0
- package/src/components/DataTable/ui/modals/BulkDeleteConfirmDialog.test.tsx +91 -0
- package/src/components/DataTable/ui/modals/BulkDeleteConfirmDialog.tsx +43 -0
- package/src/components/DataTable/ui/modals/DataTableModals.test.tsx +749 -0
- package/src/components/DataTable/ui/modals/DataTableModals.tsx +341 -0
- package/src/components/DataTable/ui/modals/ImportModal.test.tsx +1834 -0
- package/src/components/DataTable/ui/modals/ImportModal.tsx +197 -0
- package/src/components/DataTable/ui/modals/ImportModalFailedRowsSection.tsx +60 -0
- package/src/components/DataTable/ui/modals/ImportModalFileSection.tsx +148 -0
- package/src/components/DataTable/ui/modals/ImportModalPreviewSection.tsx +60 -0
- package/src/components/DataTable/ui/modals/ImportModalSummarySection.tsx +59 -0
- package/src/components/DataTable/ui/modals/importModalPersistence.ts +73 -0
- package/src/components/DataTable/ui/shared/AccessDeniedPage.test.tsx +245 -0
- package/src/components/DataTable/ui/shared/AccessDeniedPage.tsx +159 -0
- package/src/components/DataTable/ui/shared/ActionButtons.test.tsx +921 -0
- package/src/components/DataTable/ui/shared/ActionButtons.tsx +195 -0
- package/src/components/DataTable/ui/shared/ColumnFilter.test.tsx +497 -0
- package/src/components/DataTable/ui/shared/ColumnFilter.tsx +113 -0
- package/src/components/DataTable/ui/shared/PaginationControls.test.tsx +451 -0
- package/src/components/DataTable/ui/shared/PaginationControls.tsx +291 -0
- package/src/components/DataTable/ui/shared/SortIndicator.test.tsx +135 -0
- package/src/components/DataTable/ui/shared/SortIndicator.tsx +50 -0
- package/src/components/DataTable/ui/table/EditFields.test.tsx +526 -0
- package/src/components/DataTable/ui/table/EditFields.tsx +355 -0
- package/src/components/DataTable/ui/table/EditableRow.test.tsx +1003 -0
- package/src/components/DataTable/ui/table/EditableRow.tsx +444 -0
- package/src/components/DataTable/ui/table/EmptyState.test.tsx +360 -0
- package/src/components/DataTable/ui/table/EmptyState.tsx +74 -0
- package/src/components/DataTable/ui/table/FilterRow.test.tsx +416 -0
- package/src/components/DataTable/ui/table/FilterRow.tsx +148 -0
- package/src/components/DataTable/ui/table/LoadingState.test.tsx +77 -0
- package/src/components/DataTable/ui/table/LoadingState.tsx +17 -0
- package/src/components/DataTable/ui/table/RowComponent.test.tsx +1024 -0
- package/src/components/DataTable/ui/table/RowComponent.tsx +429 -0
- package/src/components/DataTable/ui/table/UnifiedTableBody.test.tsx +1273 -0
- package/src/components/DataTable/ui/table/UnifiedTableBody.tsx +440 -0
- package/src/components/DataTable/ui/table/cellValueUtils.test.ts +453 -0
- package/src/components/DataTable/ui/table/cellValueUtils.ts +40 -0
- package/src/components/DataTable/ui/toolbar/BulkOperationsDropdown.test.tsx +551 -0
- package/src/components/DataTable/ui/toolbar/BulkOperationsDropdown.tsx +160 -0
- package/src/components/DataTable/ui/toolbar/ColumnVisibilityDropdown.test.tsx +751 -0
- package/src/components/DataTable/ui/toolbar/ColumnVisibilityDropdown.tsx +114 -0
- package/src/components/DataTable/ui/toolbar/DataTableToolbar.test.tsx +629 -0
- package/src/components/DataTable/ui/toolbar/DataTableToolbar.tsx +271 -0
- package/src/components/DataTable/ui/toolbar/GroupingDropdown.test.tsx +621 -0
- package/src/components/DataTable/ui/toolbar/GroupingDropdown.tsx +107 -0
- package/src/components/DataTable/utils/a11yUtils.test.ts +548 -0
- package/src/components/DataTable/utils/a11yUtils.ts +1 -1
- package/src/components/DataTable/utils/aggregationUtils.test.ts +288 -0
- package/src/components/DataTable/utils/aggregationUtils.ts +5 -5
- package/src/components/DataTable/utils/columnUtils.test.ts +94 -0
- package/src/components/DataTable/utils/csvParse.test.ts +74 -0
- package/src/components/DataTable/utils/csvParse.ts +65 -0
- package/src/components/DataTable/utils/errorHandling.test.ts +209 -0
- package/src/components/DataTable/utils/errorHandling.ts +3 -1
- package/src/components/DataTable/utils/exportUtils.test.ts +954 -0
- package/src/components/DataTable/utils/exportUtils.ts +1 -1
- package/src/components/DataTable/utils/flexibleImport.test.ts +573 -0
- package/src/components/DataTable/utils/flexibleImport.ts +3 -186
- package/src/components/DataTable/utils/hierarchicalSorting.test.ts +235 -0
- package/src/components/DataTable/utils/hierarchicalSorting.ts +3 -3
- package/src/components/DataTable/utils/hierarchicalUtils.test.ts +586 -0
- package/src/components/DataTable/utils/importDateParser.test.ts +162 -0
- package/src/components/DataTable/utils/importDateParser.ts +114 -0
- package/src/components/DataTable/utils/importValueParser.test.ts +138 -0
- package/src/components/DataTable/utils/importValueParser.ts +91 -0
- package/src/components/DataTable/utils/paginationUtils.test.ts +593 -0
- package/src/components/DataTable/utils/paginationUtils.ts +7 -4
- package/src/components/DataTable/utils/performanceUtils.test.ts +470 -0
- package/src/components/DataTable/utils/performanceUtils.ts +1 -1
- package/src/components/DataTable/utils/rowUtils.test.ts +235 -0
- package/src/components/DataTable/utils/selectFieldUtils.test.ts +271 -0
- package/src/components/DataTable/utils/selectFieldUtils.ts +97 -67
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +18 -25
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +1 -1
- package/src/components/DateTimeField/DateTimeField.test.tsx +3 -16
- package/src/components/DateTimeField/DateTimeField.tsx +1 -1
- package/src/components/Dialog/Dialog.test-utils.ts +49 -0
- package/src/components/Dialog/Dialog.test.tsx +2865 -458
- package/src/components/Dialog/Dialog.tsx +183 -986
- package/src/components/Dialog/dialogLock.test.ts +238 -0
- package/src/components/Dialog/dialogLock.ts +98 -0
- package/src/components/Dialog/index.ts +2 -0
- package/src/components/Dialog/useDialogDimensions.test.ts +163 -0
- package/src/components/Dialog/useDialogDimensions.ts +140 -0
- package/src/components/Dialog/useDialogLifecycle.test.ts +358 -0
- package/src/components/Dialog/useDialogLifecycle.ts +135 -0
- package/src/components/Dialog/useDialogPersistence.test.ts +381 -0
- package/src/components/Dialog/useDialogPersistence.ts +357 -0
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +2 -62
- package/src/components/ErrorBoundary/ErrorBoundaryContext.context.ts +17 -0
- package/src/components/ErrorBoundary/ErrorBoundaryContext.tsx +2 -45
- package/src/components/ErrorBoundary/ErrorBoundaryContext.types.ts +41 -0
- package/src/components/ErrorBoundary/index.ts +3 -4
- package/src/components/ErrorBoundary/useErrorBoundaryContext.ts +20 -0
- package/src/components/FileDisplay/FileDisplay.test.tsx +479 -247
- package/src/components/FileDisplay/FileDisplay.tsx +29 -659
- package/src/components/FileDisplay/FileDisplayContent.test.tsx +395 -0
- package/src/components/FileDisplay/FileDisplayContent.tsx +242 -0
- package/src/components/FileDisplay/FileDisplayDeleteConfirmDialog.test.tsx +74 -0
- package/src/components/FileDisplay/FileDisplayDeleteConfirmDialog.tsx +38 -0
- package/src/components/FileDisplay/FileDisplayEmptyView.test.tsx +33 -0
- package/src/components/FileDisplay/FileDisplayEmptyView.tsx +33 -0
- package/src/components/FileDisplay/FileDisplayErrorView.test.tsx +71 -0
- package/src/components/FileDisplay/FileDisplayErrorView.tsx +50 -0
- package/src/components/FileDisplay/FileDisplayLoadingFallbackView.test.tsx +22 -0
- package/src/components/FileDisplay/FileDisplayLoadingFallbackView.tsx +22 -0
- package/src/components/FileDisplay/FileDisplayLoadingView.test.tsx +21 -0
- package/src/components/FileDisplay/FileDisplayLoadingView.tsx +23 -0
- package/src/components/FileDisplay/FileDisplayMultipleFilesView.test.tsx +101 -0
- package/src/components/FileDisplay/FileDisplayMultipleFilesView.tsx +109 -0
- package/src/components/FileDisplay/FileDisplaySingleDocumentLinkView.test.tsx +58 -0
- package/src/components/FileDisplay/FileDisplaySingleDocumentLinkView.tsx +48 -0
- package/src/components/FileDisplay/FileDisplaySingleFileWithActionsView.test.tsx +111 -0
- package/src/components/FileDisplay/FileDisplaySingleFileWithActionsView.tsx +270 -0
- package/src/components/FileDisplay/FileDisplaySingleImageView.test.tsx +78 -0
- package/src/components/FileDisplay/FileDisplaySingleImageView.tsx +67 -0
- package/src/components/FileDisplay/fallbackUtils.test.ts +50 -0
- package/src/components/FileDisplay/fallbackUtils.ts +44 -0
- package/src/components/FileDisplay/fetchFileDisplayData.ts +24 -0
- package/src/components/FileDisplay/fetchFileDisplayData.unit.test.ts +183 -0
- package/src/components/FileDisplay/fileDisplayUtils.test.ts +58 -0
- package/src/components/FileDisplay/fileDisplayUtils.ts +24 -0
- package/src/components/FileDisplay/index.tsx +1 -1
- package/src/components/FileDisplay/useFileDisplay.test.ts +538 -0
- package/src/components/FileDisplay/useFileDisplay.ts +515 -0
- package/src/components/FileDisplay/useFileDisplay.unit.test.ts +1438 -0
- package/src/components/FileDisplay/useFileDisplayData.ts +126 -0
- package/src/components/FileDisplay/usePublicFileDisplay.test.ts +729 -0
- package/src/components/FileDisplay/usePublicFileDisplay.ts +579 -0
- package/src/components/FileUpload/FileUpload.test.tsx +69 -27
- package/src/components/FileUpload/FileUpload.tsx +112 -527
- package/src/components/FileUpload/FileUploadDropZone.tsx +112 -0
- package/src/components/FileUpload/FileUploadProgressItem.tsx +86 -0
- package/src/components/FileUpload/FileUploadProgressList.tsx +40 -0
- package/src/components/FileUpload/index.tsx +1 -1
- package/src/components/FileUpload/useFileUploadManager.test.ts +308 -0
- package/src/components/FileUpload/useFileUploadManager.ts +454 -0
- package/src/components/FileUpload/useResolvedAppId.test.ts +102 -0
- package/src/components/FileUpload/useResolvedAppId.ts +77 -0
- package/src/components/Footer/Footer.test.tsx +15 -382
- package/src/components/Footer/Footer.tsx +8 -125
- package/src/components/Form/Form.test.tsx +425 -88
- package/src/components/Form/Form.tsx +91 -299
- package/src/components/Form/useFormPersistence.ts +257 -0
- package/src/components/Header/Header.test.tsx +653 -163
- package/src/components/Header/Header.tsx +62 -44
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +35 -76
- package/src/components/Input/Input.test.tsx +34 -120
- package/src/components/Input/Input.tsx +1 -1
- package/src/components/Label/Label.test.tsx +46 -45
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +8 -11
- package/src/components/LoginForm/LoginForm.test.tsx +0 -1
- package/src/components/NavigationMenu/HierarchicalNavItem.tsx +104 -0
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +2422 -102
- package/src/components/NavigationMenu/NavigationMenu.tsx +62 -362
- package/src/components/NavigationMenu/index.ts +6 -1
- package/src/components/NavigationMenu/navigationPermissionHelper.ts +188 -0
- package/src/components/NavigationMenu/useNavigationFiltering.test.ts +1949 -0
- package/src/components/NavigationMenu/useNavigationFiltering.ts +199 -308
- package/src/components/NavigationMenu/useNavigationScope.ts +125 -0
- package/src/components/PaceAppLayout/PaceAppLayout.edge-cases.test.tsx +1322 -0
- package/src/components/PaceAppLayout/PaceAppLayout.integration.test.tsx +50 -49
- package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +81 -38
- package/src/components/PaceAppLayout/PaceAppLayout.security.test.tsx +103 -85
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +774 -44
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +282 -764
- package/src/components/PaceAppLayout/README.md +0 -9
- package/src/components/PaceAppLayout/test-setup.tsx +15 -9
- package/src/components/PaceAppLayout/useFilteredNavItems.ts +304 -0
- package/src/components/PaceAppLayout/usePaceAppLayoutConfig.ts +142 -0
- package/src/components/PaceAppLayout/usePaceAppLayoutGate.tsx +150 -0
- package/src/components/PaceAppLayout/usePaceAppLayoutPermissions.ts +162 -0
- package/src/components/PaceAppLayout/usePaceAppLayoutScope.ts +79 -0
- package/src/components/PaceAppLayout/useRoleBasedRouteAccess.ts +157 -0
- package/src/components/PaceAppLayout/useSuperAdminFallback.ts +58 -0
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +782 -20
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +33 -125
- package/src/components/PaceLoginPage/useLoginAppAccess.ts +153 -0
- package/src/components/PasswordChange/PasswordChangeForm.test.tsx +1 -1
- package/src/components/Progress/Progress.test.tsx +127 -1
- package/src/components/Progress/Progress.tsx +1 -2
- package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +1196 -4
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +29 -217
- package/src/components/ProtectedRoute/useProtectedRouteState.ts +128 -0
- package/src/components/ProtectedRoute/useVisibilityRedirectGrace.ts +89 -0
- package/src/components/PublicLayout/PublicLayout.test.tsx +1640 -38
- package/src/components/PublicLayout/PublicPageContext.ts +28 -0
- package/src/components/PublicLayout/PublicPageLayout.tsx +134 -75
- package/src/components/PublicLayout/PublicPageProvider.tsx +7 -42
- package/src/components/PublicLayout/usePublicPageContext.ts +36 -0
- package/src/components/Select/Select.test.tsx +45 -8
- package/src/components/Select/Select.tsx +57 -40
- package/src/components/Select/context.test.tsx +56 -0
- package/src/components/Select/text.test.tsx +104 -0
- package/src/components/Select/text.ts +26 -0
- package/src/components/Select/types.ts +3 -0
- package/src/components/Select/useSelectEvents.test.ts +279 -0
- package/src/components/Select/useSelectEvents.ts +87 -0
- package/src/components/Select/useSelectSearch.test.tsx +295 -0
- package/src/components/Select/useSelectSearch.ts +91 -0
- package/src/components/Select/useSelectState.test.ts +268 -0
- package/src/components/Select/useSelectState.ts +104 -0
- package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +28 -112
- package/src/components/Switch/Switch.test.tsx +57 -153
- package/src/components/Table/Table.test.tsx +395 -317
- package/src/components/Tabs/Tabs.test.tsx +270 -0
- package/src/components/Tabs/Tabs.tsx +4 -4
- package/src/components/Textarea/Textarea.test.tsx +11 -38
- package/src/components/Toast/Toast.test.tsx +425 -496
- package/src/components/Tooltip/Tooltip.test.tsx +4 -21
- package/src/components/UserMenu/UserMenu.test.tsx +1 -21
- package/src/components/UserMenu/UserMenu.tsx +0 -1
- package/src/components/index.test.ts +346 -0
- package/src/components/index.ts +12 -1
- package/src/constants/performance.test.ts +91 -0
- package/src/hooks/ServiceHooks.test.tsx +725 -0
- package/src/hooks/hooks.integration.test.tsx +608 -0
- package/src/hooks/index.ts +18 -3
- package/src/hooks/index.unit.test.ts +220 -0
- package/src/hooks/public/usePublicEvent.test.ts +304 -0
- package/src/hooks/public/usePublicEvent.ts +11 -11
- package/src/hooks/public/usePublicEventLogo.test.ts +655 -120
- package/src/hooks/public/usePublicEventLogo.ts +2 -2
- package/src/hooks/public/usePublicRouteParams.test.ts +595 -0
- package/src/hooks/public/usePublicRouteParams.ts +2 -2
- package/src/hooks/services/useAuth.ts +9 -7
- package/src/hooks/services/useAuthService.ts +1 -1
- package/src/hooks/services/useEventService.ts +1 -1
- package/src/hooks/useAccessibleApps.test.ts +400 -0
- package/src/hooks/useAccessibleApps.ts +264 -0
- package/src/hooks/useAddressAutocomplete.test.ts +170 -47
- package/src/hooks/useAddressAutocomplete.ts +109 -81
- package/src/hooks/useApiFetch.unit.test.ts +111 -0
- package/src/hooks/useAppConfig.ts +13 -3
- package/src/hooks/useAppConfig.unit.test.ts +712 -0
- package/src/hooks/useComponentPerformance.unit.test.tsx +314 -0
- package/src/hooks/useDataTablePerformance.ts +111 -130
- package/src/hooks/useDataTablePerformance.unit.test.ts +720 -0
- package/src/hooks/useDataTableState.test.ts +170 -0
- package/src/hooks/useDataTableState.ts +5 -5
- package/src/hooks/useDebounce.unit.test.ts +157 -0
- package/src/hooks/useEventTheme.test.ts +70 -18
- package/src/hooks/useEventTheme.ts +50 -22
- package/src/hooks/useEvents.ts +49 -2
- package/src/hooks/useEvents.unit.test.ts +227 -0
- package/src/hooks/useFileReference.test.ts +388 -107
- package/src/hooks/useFileReference.ts +184 -179
- package/src/hooks/useFileUrl.ts +1 -1
- package/src/hooks/useFileUrl.unit.test.ts +686 -0
- package/src/hooks/useFileUrlCache.test.ts +319 -0
- package/src/hooks/useFileUrlCache.ts +5 -2
- package/src/hooks/useFocusManagement.unit.test.ts +604 -0
- package/src/hooks/useFocusTrap.unit.test.tsx +613 -0
- package/src/hooks/useFormDialog.test.ts +307 -0
- package/src/hooks/useFormDialog.ts +2 -2
- package/src/hooks/useInactivityTracker.ts +141 -134
- package/src/hooks/useInactivityTracker.unit.test.ts +446 -0
- package/src/hooks/useIsMobile.unit.test.ts +317 -0
- package/src/hooks/useIsPrint.ts +62 -0
- package/src/hooks/useIsPrint.unit.test.ts +545 -0
- package/src/hooks/useKeyboardShortcuts.unit.test.ts +907 -0
- package/src/hooks/useOrganisationPermissions.test.ts +1 -2
- package/src/hooks/useOrganisationPermissions.ts +1 -4
- package/src/hooks/useOrganisationPermissions.unit.test.tsx +293 -0
- package/src/hooks/useOrganisationSecurity.test.ts +4 -33
- package/src/hooks/useOrganisationSecurity.ts +192 -203
- package/src/hooks/useOrganisationSecurity.unit.test.tsx +959 -0
- package/src/hooks/useOrganisations.ts +1 -1
- package/src/hooks/useOrganisations.unit.test.ts +369 -0
- package/src/hooks/usePerformanceMonitor.ts +1 -1
- package/src/hooks/usePerformanceMonitor.unit.test.ts +693 -0
- package/src/hooks/usePermissionCache.test.ts +298 -329
- package/src/hooks/usePermissionCache.ts +277 -276
- package/src/hooks/usePreventTabReload.test.ts +307 -0
- package/src/hooks/usePublicEvent.simple.test.ts +794 -0
- package/src/hooks/usePublicEvent.test.ts +670 -0
- package/src/hooks/usePublicEvent.unit.test.ts +638 -0
- package/src/hooks/usePublicFileDisplay.test.ts +948 -0
- package/src/hooks/usePublicRouteParams.unit.test.ts +442 -0
- package/src/hooks/useQueryCache.test.ts +391 -0
- package/src/hooks/useQueryCache.ts +7 -9
- package/src/hooks/useRBAC.unit.test.ts +253 -0
- package/src/hooks/useSessionDraft.test.ts +556 -0
- package/src/hooks/useSessionDraft.ts +14 -11
- package/src/hooks/useSessionRestoration.ts +1 -1
- package/src/hooks/useSessionRestoration.unit.test.tsx +381 -0
- package/src/hooks/useStorage.ts +94 -54
- package/src/hooks/useStorage.unit.test.ts +684 -0
- package/src/hooks/useToast.test.ts +413 -0
- package/src/hooks/useToast.ts +2 -2
- package/src/hooks/useToast.unit.test.tsx +481 -0
- package/src/hooks/useZodForm.ts +3 -3
- package/src/hooks/useZodForm.unit.test.tsx +191 -0
- package/src/icons/index.test.ts +133 -0
- package/src/icons/index.ts +3 -1
- package/src/index.test.ts +528 -0
- package/src/index.ts +56 -9
- package/src/providers/AuthProvider.test.tsx +218 -0
- package/src/providers/EventProvider.test.tsx +487 -0
- package/src/providers/InactivityProvider.test-helper.tsx +40 -0
- package/src/providers/InactivityProvider.test.tsx +421 -0
- package/src/providers/ProviderLifecycle.test.tsx +308 -0
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +7 -12
- package/src/providers/UnifiedAuthProvider.test.tsx +503 -0
- package/src/providers/index.test.ts +138 -0
- package/src/providers/services/AuthServiceContext.ts +27 -0
- package/src/providers/services/AuthServiceProvider.integration.test.tsx +229 -0
- package/src/providers/services/AuthServiceProvider.test.tsx +638 -0
- package/src/providers/services/AuthServiceProvider.tsx +81 -20
- package/src/providers/services/EventServiceContext.ts +25 -0
- package/src/providers/services/EventServiceProvider.test.tsx +839 -0
- package/src/providers/services/EventServiceProvider.tsx +11 -20
- package/src/providers/services/InactivityServiceContext.ts +25 -0
- package/src/providers/services/InactivityServiceProvider.test.tsx +662 -0
- package/src/providers/services/InactivityServiceProvider.tsx +7 -17
- package/src/providers/services/OrganisationServiceContext.ts +25 -0
- package/src/providers/services/OrganisationServiceProvider.test.tsx +440 -0
- package/src/providers/services/OrganisationServiceProvider.tsx +7 -17
- package/src/providers/services/UnifiedAuthContext.ts +102 -0
- package/src/providers/services/UnifiedAuthProvider.advanced.test.tsx +434 -0
- package/src/providers/services/UnifiedAuthProvider.appId.test.tsx +408 -0
- package/src/providers/services/UnifiedAuthProvider.integration.test.tsx +304 -0
- package/src/providers/services/UnifiedAuthProvider.test.tsx +212 -0
- package/src/providers/services/UnifiedAuthProvider.tsx +147 -497
- package/src/providers/services/contexts.test.tsx +281 -0
- package/src/providers/services/useUnifiedAuth.test.tsx +251 -0
- package/src/providers/services/useUnifiedAuth.ts +29 -0
- package/src/providers/services/useUnifiedAuthContextValue.ts +279 -0
- package/src/providers/useInactivity.test-helper.ts +27 -0
- package/src/rbac/README.md +5 -5
- package/src/rbac/adapters.comprehensive.test.tsx +429 -0
- package/src/rbac/adapters.test.tsx +654 -0
- package/src/rbac/adapters.tsx +53 -38
- package/src/rbac/api.test.ts +986 -259
- package/src/rbac/api.ts +260 -216
- package/src/rbac/audit-batched.test.ts +550 -0
- package/src/rbac/audit-batched.ts +5 -4
- package/src/rbac/audit.test.ts +225 -28
- package/src/rbac/audit.ts +26 -18
- package/src/rbac/auth-rbac-security.integration.test.tsx +300 -0
- package/src/rbac/auth-rbac.e2e.test.tsx +510 -0
- package/src/rbac/cache-invalidation.test.ts +715 -0
- package/src/rbac/cache-invalidation.ts +18 -15
- package/src/rbac/cache.test.ts +123 -63
- package/src/rbac/cache.ts +3 -4
- package/src/rbac/components/AccessDenied.test.tsx +324 -0
- package/src/rbac/components/AccessDenied.tsx +20 -18
- package/src/rbac/components/NavigationGuard.test.tsx +1148 -0
- package/src/rbac/components/NavigationGuard.tsx +10 -8
- package/src/rbac/components/PagePermissionGuard.guard.test.tsx +236 -0
- package/src/rbac/components/PagePermissionGuard.performance.test.tsx +252 -0
- package/src/rbac/components/PagePermissionGuard.race-condition.test.tsx +243 -0
- package/src/rbac/components/PagePermissionGuard.test.tsx +1430 -0
- package/src/rbac/components/PagePermissionGuard.tsx +188 -381
- package/src/rbac/components/PagePermissionGuard.verification.test.tsx +185 -0
- package/src/rbac/config.test.ts +131 -48
- package/src/rbac/config.ts +69 -26
- package/src/rbac/docs/event-based-apps.md +26 -13
- package/src/rbac/engine.comprehensive.test.ts +808 -0
- package/src/rbac/engine.test.ts +974 -130
- package/src/rbac/engine.ts +53 -13
- package/src/rbac/errors.test.ts +99 -87
- package/src/rbac/errors.ts +89 -55
- package/src/rbac/eslint-rules.js +2 -2
- package/src/rbac/hooks/permissions/runPermissionCheck.ts +77 -0
- package/src/rbac/hooks/permissions/useAccessLevel.test.ts +622 -0
- package/src/rbac/hooks/permissions/useAccessLevel.ts +23 -14
- package/src/rbac/hooks/permissions/useCan.test.ts +798 -0
- package/src/rbac/hooks/permissions/useCan.ts +173 -253
- package/src/rbac/hooks/permissions/useMultiplePermissions.test.ts +843 -0
- package/src/rbac/hooks/permissions/useMultiplePermissions.ts +63 -10
- package/src/rbac/hooks/permissions/usePermissions.test.ts +543 -0
- package/src/rbac/hooks/permissions/usePermissions.ts +50 -78
- package/src/rbac/hooks/useCan.test.ts +348 -32
- package/src/rbac/hooks/usePageAccessLogging.ts +160 -0
- package/src/rbac/hooks/usePageGuardScope.ts +117 -0
- package/src/rbac/hooks/usePagePermissionCheck.ts +67 -0
- package/src/rbac/hooks/usePermissions.integration.test.ts +427 -0
- package/src/rbac/hooks/usePermissions.stability.test.ts +268 -0
- package/src/rbac/hooks/usePermissions.test.ts +459 -33
- package/src/rbac/hooks/usePermissions.ts +5 -7
- package/src/rbac/hooks/useRBAC.test.ts +1784 -21
- package/src/rbac/hooks/useRBAC.ts +148 -88
- package/src/rbac/hooks/useResolvedScope.test.ts +442 -5
- package/src/rbac/hooks/useResolvedScope.ts +4 -1
- package/src/rbac/hooks/useResourcePermissions.test.ts +561 -24
- package/src/rbac/hooks/useResourcePermissions.ts +76 -140
- package/src/rbac/hooks/useResourcePermissionsSuperAdmin.ts +67 -0
- package/src/rbac/hooks/useRoleManagement.test.ts +634 -61
- package/src/rbac/hooks/useRoleManagement.ts +158 -586
- package/src/rbac/hooks/useSecureSupabase.test.ts +1179 -0
- package/src/rbac/hooks/useSecureSupabase.ts +21 -14
- package/src/rbac/hooks/useSuperAdminCheck.ts +80 -0
- package/src/rbac/index.test.ts +107 -0
- package/src/rbac/index.ts +32 -32
- package/src/rbac/performance.test.ts +451 -0
- package/src/rbac/permissions.test.ts +149 -68
- package/src/rbac/permissions.ts +0 -3
- package/src/rbac/rbac-core.test.tsx +276 -0
- package/src/rbac/rbac-engine-core-logic.test.ts +387 -0
- package/src/rbac/rbac-engine-simplified.test.ts +252 -0
- package/src/rbac/rbac-functions.test.ts +703 -0
- package/src/rbac/rbac-integration.test.ts +523 -0
- package/src/rbac/rbac-role-isolation.test.ts +456 -0
- package/src/rbac/request-deduplication.test.ts +352 -0
- package/src/rbac/request-deduplication.ts +5 -4
- package/src/rbac/scenarios.user-role.test.tsx +271 -0
- package/src/rbac/secureClient.test.ts +499 -115
- package/src/rbac/secureClient.ts +54 -28
- package/src/rbac/security.test.ts +448 -44
- package/src/rbac/security.ts +7 -6
- package/src/rbac/types/roleManagement.ts +66 -0
- package/src/rbac/types.test.ts +236 -0
- package/src/rbac/types.ts +7 -5
- package/src/rbac/utils/clientSecurity.test.ts +192 -0
- package/src/rbac/utils/clientSecurity.ts +6 -4
- package/src/rbac/utils/contextValidator.test.ts +126 -0
- package/src/rbac/utils/contextValidator.ts +6 -3
- package/src/rbac/utils/deep-equal.test.ts +76 -0
- package/src/rbac/utils/eventContext.test.ts +401 -0
- package/src/rbac/utils/eventContext.ts +38 -34
- package/src/rbac/utils/fetchPermissionMap.ts +13 -0
- package/src/rbac/utils/permissionMapHelpers.ts +34 -0
- package/src/rbac/utils/roleManagementRpc.ts +303 -0
- package/src/services/AuthService.edge-cases.test.ts +746 -0
- package/src/services/AuthService.restoreSession.test.ts +59 -0
- package/src/services/AuthService.test.ts +1362 -0
- package/src/services/AuthService.ts +197 -216
- package/src/services/BaseService.edge-cases.test.ts +506 -0
- package/src/services/BaseService.test.ts +363 -0
- package/src/services/EventService.edge-cases.test.ts +636 -0
- package/src/services/EventService.eventColours.test.ts +64 -0
- package/src/services/EventService.test.ts +1250 -0
- package/src/services/EventService.ts +244 -315
- package/src/services/InactivityService.edge-cases.test.ts +492 -0
- package/src/services/InactivityService.lifecycle.test.ts +406 -0
- package/src/services/InactivityService.test.ts +829 -0
- package/src/services/InactivityService.ts +172 -213
- package/src/services/OrganisationService.edge-cases.test.ts +633 -0
- package/src/services/OrganisationService.pagination.test.ts +409 -0
- package/src/services/OrganisationService.test.ts +1579 -0
- package/src/services/OrganisationService.ts +186 -257
- package/src/services/base/BaseService.test.ts +214 -0
- package/src/services/interfaces/IAuthService.test.ts +184 -0
- package/src/services/interfaces/IAuthService.ts +10 -9
- package/src/services/interfaces/IEventService.test.ts +176 -0
- package/src/services/interfaces/IInactivityService.test.ts +183 -0
- package/src/services/interfaces/IOrganisationService.test.ts +207 -0
- package/src/services/interfaces/IOrganisationService.ts +0 -1
- package/src/styles/core.css +244 -12
- package/src/theming/parseEventColours.test.ts +321 -0
- package/src/theming/parseEventColours.ts +18 -9
- package/src/theming/runtime.test.ts +495 -0
- package/src/theming/runtime.ts +72 -7
- package/src/types/api-result.ts +53 -0
- package/src/types/auth.ts +0 -1
- package/src/types/core.test.ts +397 -0
- package/src/types/database-generated.test.ts +78 -0
- package/src/types/database.generated.ts +45 -10
- package/src/types/event.ts +39 -19
- package/src/types/file-reference.test.ts +351 -0
- package/src/types/file-reference.ts +37 -12
- package/src/types/guards.test.ts +246 -0
- package/src/types/index.test.ts +265 -0
- package/src/types/index.ts +3 -0
- package/src/types/organisation.roles.test.ts +55 -0
- package/src/types/organisation.test.ts +1105 -0
- package/src/types/organisation.ts +15 -15
- package/src/types/rpc-responses.ts +33 -0
- package/src/types/supabase.ts +14 -6
- package/src/types/theme.test.ts +830 -0
- package/src/types/type-validation.test.ts +526 -0
- package/src/types/validation.test.ts +729 -0
- package/src/types/vitest-globals.d.ts +1 -1
- package/src/utils/app/appConfig.test.ts +235 -0
- package/src/utils/app/appIdResolver.test.ts +252 -57
- package/src/utils/app/appIdResolver.ts +31 -20
- package/src/utils/app/appNameResolver.test.ts +18 -10
- package/src/utils/app/appNameResolver.ts +11 -9
- package/src/utils/app/appPortMap.test.ts +125 -0
- package/src/utils/app/appPortMap.ts +51 -0
- package/src/utils/app/buildAppUrl.test.ts +273 -0
- package/src/utils/app/buildAppUrl.ts +114 -0
- package/src/utils/appConfig.unit.test.ts +55 -0
- package/src/utils/audit/audit.test.ts +354 -39
- package/src/utils/audit.unit.test.ts +69 -0
- package/src/utils/auth-utils.unit.test.ts +69 -0
- package/src/utils/bundleAnalysis.unit.test.ts +326 -0
- package/src/utils/cn.unit.test.ts +34 -0
- package/src/utils/context/organisationContext.test.ts +115 -95
- package/src/utils/context/organisationContext.ts +32 -43
- package/src/utils/context/sessionTracking.test.ts +354 -0
- package/src/utils/core/cn.test.ts +66 -0
- package/src/utils/core/debugLogger.test.ts +113 -0
- package/src/utils/core/debugLogger.ts +15 -8
- package/src/utils/core/logger.test.ts +217 -0
- package/src/utils/core/logger.ts +20 -16
- package/src/utils/core/mergeRefs.ts +24 -0
- package/src/utils/debugLogger.test.ts +417 -0
- package/src/utils/device/deviceFingerprint.test.ts +8 -5
- package/src/utils/device/deviceFingerprint.ts +3 -3
- package/src/utils/deviceFingerprint.unit.test.ts +818 -0
- package/src/utils/dynamic/createLazyComponent.tsx +46 -0
- package/src/utils/dynamic/dynamicUtils.test.ts +185 -0
- package/src/utils/dynamic/dynamicUtils.ts +6 -6
- package/src/utils/dynamic/lazyLoad.test.tsx +156 -0
- package/src/utils/dynamic/lazyLoad.tsx +8 -36
- package/src/utils/dynamic/papaparseLoader.ts +7 -0
- package/src/utils/dynamicUtils.unit.test.ts +331 -0
- package/src/utils/file-reference/file-reference.test.ts +1238 -0
- package/src/utils/file-reference/index.ts +330 -348
- package/src/utils/formatDate.unit.test.ts +109 -0
- package/src/utils/formatting/formatDate.test.ts +22 -148
- package/src/utils/formatting/formatDateTime.test.ts +41 -119
- package/src/utils/formatting/formatDateTimeTimezone.test.ts +41 -85
- package/src/utils/formatting/formatNumber.test.ts +259 -0
- package/src/utils/formatting/formatTime.test.ts +36 -128
- package/src/utils/formatting/formatting.ts +1 -1
- package/src/utils/formatting.unit.test.ts +99 -0
- package/src/utils/google-places/googlePlacesUtils.test.ts +127 -36
- package/src/utils/google-places/googlePlacesUtils.ts +67 -86
- package/src/utils/google-places/loadGoogleMapsScript.test.ts +68 -8
- package/src/utils/google-places/loadGoogleMapsScript.ts +140 -118
- package/src/utils/index.ts +52 -11
- package/src/utils/index.unit.test.ts +251 -0
- package/src/utils/lazyLoad.unit.test.tsx +319 -0
- package/src/utils/location/location.test.ts +19 -116
- package/src/utils/logger.unit.test.ts +398 -0
- package/src/utils/organisationContext.unit.test.ts +180 -0
- package/src/utils/performance/bundleAnalysis.test.ts +148 -0
- package/src/utils/performance/bundleAnalysis.ts +16 -22
- package/src/utils/performance/performanceBenchmark.test.ts +251 -0
- package/src/utils/performance/performanceBenchmark.ts +12 -4
- package/src/utils/performance/performanceBudgets.test.ts +241 -0
- package/src/utils/performance/performanceBudgets.ts +9 -6
- package/src/utils/performanceBenchmark.test.ts +174 -0
- package/src/utils/performanceBudgets.unit.test.ts +288 -0
- package/src/utils/permissionTypes.unit.test.ts +250 -0
- package/src/utils/permissionUtils.unit.test.ts +362 -0
- package/src/utils/permissions/permissionTypes.test.ts +149 -0
- package/src/utils/permissions/permissionUtils.test.ts +20 -42
- package/src/utils/persistence/keyDerivation.test.ts +306 -0
- package/src/utils/persistence/sensitiveFieldDetection.test.ts +271 -0
- package/src/utils/persistence/sensitiveFieldDetection.ts +2 -2
- package/src/utils/request-deduplication.test.ts +349 -0
- package/src/utils/request-deduplication.ts +6 -4
- package/src/utils/sanitization.unit.test.ts +346 -0
- package/src/utils/schemaUtils.unit.test.ts +441 -0
- package/src/utils/secureDataAccess.unit.test.ts +334 -0
- package/src/utils/secureErrors.unit.test.ts +390 -0
- package/src/utils/secureStorage.unit.test.ts +289 -0
- package/src/utils/security/auth-utils.ts +38 -27
- package/src/utils/security/secureDataAccess.test.ts +22 -191
- package/src/utils/security/secureDataAccess.ts +241 -281
- package/src/utils/security/secureErrors.test.ts +163 -0
- package/src/utils/security/secureStorage.test.ts +156 -0
- package/src/utils/security/secureStorage.ts +1 -1
- package/src/utils/security/security.test.ts +212 -0
- package/src/utils/security/security.ts +15 -18
- package/src/utils/security/securityMonitor.test.ts +90 -0
- package/src/utils/security/securityMonitor.ts +1 -1
- package/src/utils/security.unit.test.ts +155 -0
- package/src/utils/securityMonitor.unit.test.ts +276 -0
- package/src/utils/sessionTracking.unit.test.ts +218 -0
- package/src/utils/storage/config.unit.test.ts +239 -0
- package/src/utils/storage/helpers.test.ts +769 -456
- package/src/utils/storage/helpers.ts +174 -253
- package/src/utils/storage/index.unit.test.ts +68 -0
- package/src/utils/storage/storageUtils.ts +32 -0
- package/src/utils/storage/types.ts +9 -2
- package/src/utils/supabase/createBaseClient.test.ts +201 -0
- package/src/utils/supabase/createBaseClient.ts +2 -1
- package/src/utils/timezone/timezone.test.ts +26 -44
- package/src/utils/timezone.test.ts +345 -0
- package/src/utils/validation/common.test.ts +115 -0
- package/src/utils/validation/csrf.test.ts +198 -0
- package/src/utils/validation/csrf.ts +42 -41
- package/src/utils/validation/htmlSanitization.ts +27 -31
- package/src/utils/validation/htmlSanitization.unit.test.ts +618 -0
- package/src/utils/validation/passwordSchema.test.ts +164 -0
- package/src/utils/validation/schema.test.ts +127 -0
- package/src/utils/validation/schema.ts +6 -3
- package/src/utils/validation/sqlInjectionProtection.test.ts +165 -0
- package/src/utils/validation/sqlInjectionProtection.ts +2 -2
- package/src/utils/validation/user.test.ts +173 -0
- package/src/utils/validation/validation.test.ts +197 -0
- package/src/utils/validation/validationUtils.test.ts +294 -0
- package/src/utils/validation.unit.test.ts +307 -0
- package/src/utils/validationUtils.unit.test.ts +558 -0
- package/src/vite-env.d.ts +6 -0
- package/dist/AuthService-DmfO5rGS.d.ts +0 -524
- package/dist/DataTable-DRUIgtUH.d.ts +0 -166
- package/dist/DataTable-SOAFXIWY.js +0 -15
- package/dist/PublicPageProvider-CIGSujI2.d.ts +0 -4147
- package/dist/UnifiedAuthProvider-7SNDOWYD.js +0 -7
- package/dist/UnifiedAuthProvider-CKvHP1MK.d.ts +0 -139
- package/dist/api-7P7DI652.js +0 -4
- package/dist/audit-MYQXYZFU.js +0 -3
- package/dist/auth-BZOJqrdd.d.ts +0 -49
- package/dist/chunk-4DDCYDQ3.js +0 -544
- package/dist/chunk-5HNSDQWH.js +0 -5046
- package/dist/chunk-5W2A3DRC.js +0 -164
- package/dist/chunk-6GLLNA6U.js +0 -31
- package/dist/chunk-7ILTDCL2.js +0 -80
- package/dist/chunk-A3W6LW53.js +0 -70
- package/dist/chunk-AHU7G2R5.js +0 -423
- package/dist/chunk-C7ZQ5O4C.js +0 -481
- package/dist/chunk-EF2UGZWY.js +0 -611
- package/dist/chunk-FEJLJNWA.js +0 -181
- package/dist/chunk-FYHN4DD5.js +0 -415
- package/dist/chunk-GS5672WG.js +0 -2003
- package/dist/chunk-HF6O3O37.js +0 -187
- package/dist/chunk-J2U36LHD.js +0 -8517
- package/dist/chunk-LX6U42O3.js +0 -2177
- package/dist/chunk-MPBLMWVR.js +0 -2161
- package/dist/chunk-OJ4SKRSV.js +0 -105
- package/dist/chunk-S6ZQKDY6.js +0 -62
- package/dist/chunk-S7DKJPLT.js +0 -699
- package/dist/chunk-T5CVK4R3.js +0 -2816
- package/dist/chunk-TTRFSOKR.js +0 -121
- package/dist/chunk-Z2FNRKF3.js +0 -994
- package/dist/database.generated-DT8JTZiP.d.ts +0 -9406
- package/dist/event-CW5YB_2p.d.ts +0 -239
- package/dist/file-reference-BavO2eQj.d.ts +0 -148
- package/dist/functions-lBy5L2ry.d.ts +0 -208
- package/dist/timezone-0AyangqX.d.ts +0 -697
- package/dist/types-BeoeWV5I.d.ts +0 -110
- package/dist/types-DXstZpNI.d.ts +0 -614
- package/dist/types-t9H8qKRw.d.ts +0 -55
- package/dist/usePublicRouteParams-DQLrDqDb.d.ts +0 -876
- package/dist/useToast-AyaT-x7p.d.ts +0 -68
- package/dist/validation-643vUDZW.d.ts +0 -177
- package/scripts/build-docs-incremental.js +0 -179
- package/scripts/eslint-audit.cjs +0 -123
- package/scripts/generate-docs.js +0 -157
- package/scripts/install-cursor-rules.cjs +0 -255
- package/scripts/install-eslint-config.cjs +0 -349
- package/scripts/setup-build-cache.js +0 -73
- package/scripts/validate-pre-publish.js +0 -145
- package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +0 -260
- package/src/__tests__/helpers/__tests__/optimized-test-setup.test.ts +0 -224
- package/src/__tests__/helpers/__tests__/supabaseMock.test.ts +0 -273
- package/src/__tests__/helpers/__tests__/test-providers.test.tsx +0 -99
- package/src/__tests__/helpers/__tests__/test-utils.test.tsx +0 -448
- package/src/__tests__/helpers/__tests__/timer-utils.test.ts +0 -371
- package/src/__tests__/hooks/usePermissions.test.ts +0 -268
- package/src/__tests__/integration/UserProfile.test.tsx +0 -124
- package/src/__tests__/public-recipe-view.test.ts +0 -228
- package/src/__tests__/rbac/PagePermissionGuard.test.tsx +0 -220
- package/src/__tests__/rls-policies.test.ts +0 -471
- package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +0 -759
- package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +0 -524
- package/src/components/DataTable/__tests__/DataTable.export.test.tsx +0 -705
- package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +0 -658
- package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +0 -192
- package/src/components/DataTable/__tests__/DataTable.select-label-display.test.tsx +0 -483
- package/src/components/DataTable/__tests__/DataTable.test.tsx +0 -876
- package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +0 -220
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +0 -1474
- package/src/components/DataTable/__tests__/README.md +0 -145
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +0 -788
- package/src/components/DataTable/__tests__/keyboard.test.tsx +0 -756
- package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +0 -66
- package/src/components/DataTable/__tests__/pagination.modes.test.tsx +0 -730
- package/src/components/DataTable/__tests__/ssr.strict-mode.test.tsx +0 -325
- package/src/components/DataTable/__tests__/styles.test.ts +0 -382
- package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +0 -103
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +0 -380
- package/src/components/DataTable/__tests__/test-utils.ts +0 -94
- package/src/components/DataTable/components/AccessDeniedPage.tsx +0 -159
- package/src/components/DataTable/components/ActionButtons.tsx +0 -190
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +0 -160
- package/src/components/DataTable/components/ColumnFilter.tsx +0 -118
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +0 -114
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +0 -225
- package/src/components/DataTable/components/DataTableLayout.tsx +0 -573
- package/src/components/DataTable/components/DataTableModals.tsx +0 -245
- package/src/components/DataTable/components/DataTableToolbar.tsx +0 -271
- package/src/components/DataTable/components/EditFields.tsx +0 -327
- package/src/components/DataTable/components/EditableRow.tsx +0 -462
- package/src/components/DataTable/components/EmptyState.tsx +0 -79
- package/src/components/DataTable/components/FilterRow.tsx +0 -141
- package/src/components/DataTable/components/LoadingState.tsx +0 -17
- package/src/components/DataTable/components/PaginationControls.tsx +0 -289
- package/src/components/DataTable/components/RowComponent.tsx +0 -403
- package/src/components/DataTable/components/SortIndicator.tsx +0 -50
- package/src/components/DataTable/components/UnifiedTableBody.tsx +0 -355
- package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +0 -657
- package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +0 -913
- package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +0 -572
- package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +0 -612
- package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.test.tsx +0 -708
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +0 -479
- package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +0 -475
- package/src/components/DataTable/components/__tests__/DataTableToolbar.test.tsx +0 -157
- package/src/components/DataTable/components/__tests__/EditableRow.test.tsx +0 -1061
- package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +0 -437
- package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +0 -474
- package/src/components/DataTable/components/__tests__/GroupingDropdown.test.tsx +0 -617
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +0 -1093
- package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +0 -139
- package/src/components/DataTable/components/__tests__/PaginationControls.test.tsx +0 -519
- package/src/components/DataTable/components/__tests__/UnifiedTableBody.test.tsx +0 -1004
- package/src/components/DataTable/components/cellValueUtils.ts +0 -40
- package/src/components/DataTable/components/hooks/useImportModalFocus.ts +0 -53
- package/src/components/DataTable/components/hooks/usePermissionTracking.ts +0 -122
- package/src/components/DataTable/components/index.ts +0 -16
- package/src/components/DataTable/context/__tests__/DataTableContext.test.tsx +0 -342
- package/src/components/DataTable/core/ActionManager.ts +0 -235
- package/src/components/DataTable/core/ColumnManager.ts +0 -205
- package/src/components/DataTable/core/DataManager.ts +0 -188
- package/src/components/DataTable/core/LocalDataAdapter.ts +0 -274
- package/src/components/DataTable/core/PluginRegistry.ts +0 -229
- package/src/components/DataTable/core/StateManager.ts +0 -312
- package/src/components/DataTable/core/__tests__/ActionManager.test.ts +0 -123
- package/src/components/DataTable/core/__tests__/ColumnFactory.test.ts +0 -305
- package/src/components/DataTable/core/__tests__/ColumnManager.test.ts +0 -84
- package/src/components/DataTable/core/__tests__/DataManager.test.ts +0 -115
- package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +0 -100
- package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +0 -120
- package/src/components/DataTable/core/__tests__/StateManager.test.ts +0 -104
- package/src/components/DataTable/core/index.ts +0 -1
- package/src/components/DataTable/core/interfaces.ts +0 -338
- package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.test.ts +0 -521
- package/src/components/DataTable/hooks/__tests__/useColumnVisibilityPersistence.test.ts +0 -167
- package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +0 -124
- package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +0 -117
- package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +0 -102
- package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +0 -596
- package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +0 -53
- package/src/components/DataTable/hooks/__tests__/useHierarchicalState.test.ts +0 -214
- package/src/components/DataTable/hooks/__tests__/useTableColumns.test.ts +0 -448
- package/src/components/DataTable/hooks/index.ts +0 -13
- package/src/components/DataTable/types.ts +0 -761
- package/src/components/DataTable/utils/__tests__/a11yUtils.test.ts +0 -612
- package/src/components/DataTable/utils/__tests__/columnUtils.test.ts +0 -94
- package/src/components/DataTable/utils/__tests__/errorHandling.test.ts +0 -266
- package/src/components/DataTable/utils/__tests__/exportUtils.test.ts +0 -954
- package/src/components/DataTable/utils/__tests__/flexibleImport.test.ts +0 -573
- package/src/components/DataTable/utils/__tests__/hierarchicalSorting.test.ts +0 -247
- package/src/components/DataTable/utils/__tests__/hierarchicalUtils.test.ts +0 -570
- package/src/components/DataTable/utils/__tests__/performanceUtils.test.ts +0 -470
- package/src/components/DataTable/utils/__tests__/rowUtils.test.ts +0 -251
- package/src/components/DataTable/utils/__tests__/selectFieldUtils.test.ts +0 -207
- package/src/components/DataTable/utils/index.ts +0 -10
- package/src/components/PublicLayout/index.ts +0 -32
- package/src/components/Select/hooks/useSelectEvents.ts +0 -87
- package/src/components/Select/hooks/useSelectSearch.ts +0 -91
- package/src/components/Select/hooks/useSelectState.ts +0 -104
- package/src/components/Select/utils/text.ts +0 -26
- package/src/hooks/__tests__/ServiceHooks.test.tsx +0 -615
- package/src/hooks/__tests__/hooks.integration.test.tsx +0 -607
- package/src/hooks/__tests__/index.unit.test.ts +0 -220
- package/src/hooks/__tests__/useApiFetch.unit.test.ts +0 -111
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +0 -347
- package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +0 -144
- package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +0 -776
- package/src/hooks/__tests__/useDataTableState.test.ts +0 -76
- package/src/hooks/__tests__/useDebounce.unit.test.ts +0 -82
- package/src/hooks/__tests__/useEvents.unit.test.ts +0 -252
- package/src/hooks/__tests__/useFileDisplay.unit.test.ts +0 -1112
- package/src/hooks/__tests__/useFileUrl.unit.test.ts +0 -916
- package/src/hooks/__tests__/useFileUrlCache.test.ts +0 -129
- package/src/hooks/__tests__/useFocusManagement.unit.test.ts +0 -230
- package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +0 -828
- package/src/hooks/__tests__/useFormDialog.test.ts +0 -478
- package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +0 -446
- package/src/hooks/__tests__/useIsMobile.unit.test.ts +0 -317
- package/src/hooks/__tests__/useKeyboardShortcuts.unit.test.ts +0 -910
- package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +0 -294
- package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +0 -961
- package/src/hooks/__tests__/useOrganisations.unit.test.ts +0 -369
- package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +0 -694
- package/src/hooks/__tests__/usePermissionCache.simple.test.ts +0 -192
- package/src/hooks/__tests__/usePermissionCache.unit.test.ts +0 -741
- package/src/hooks/__tests__/usePreventTabReload.test.ts +0 -88
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +0 -785
- package/src/hooks/__tests__/usePublicEvent.test.ts +0 -678
- package/src/hooks/__tests__/usePublicEvent.unit.test.ts +0 -630
- package/src/hooks/__tests__/usePublicFileDisplay.test.ts +0 -951
- package/src/hooks/__tests__/usePublicRouteParams.unit.test.ts +0 -443
- package/src/hooks/__tests__/useQueryCache.test.ts +0 -144
- package/src/hooks/__tests__/useRBAC.unit.test.ts +0 -236
- package/src/hooks/__tests__/useSessionDraft.test.ts +0 -163
- package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +0 -390
- package/src/hooks/__tests__/useStorage.unit.test.ts +0 -751
- package/src/hooks/__tests__/useToast.unit.test.tsx +0 -481
- package/src/hooks/__tests__/useZodForm.unit.test.tsx +0 -37
- package/src/hooks/public/index.ts +0 -36
- package/src/hooks/public/usePublicFileDisplay.ts +0 -504
- package/src/hooks/useFileDisplay.ts +0 -715
- package/src/providers/OrganisationProvider.tsx +0 -92
- package/src/providers/__tests__/AuthProvider.test.tsx +0 -287
- package/src/providers/__tests__/EventProvider.test.tsx +0 -551
- package/src/providers/__tests__/InactivityProvider.test-helper.tsx +0 -65
- package/src/providers/__tests__/InactivityProvider.test.tsx +0 -572
- package/src/providers/__tests__/OrganisationProvider.test.tsx +0 -617
- package/src/providers/__tests__/ProviderLifecycle.test.tsx +0 -424
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +0 -596
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +0 -263
- package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +0 -294
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +0 -434
- package/src/rbac/__tests__/auth-rbac-security.integration.test.tsx +0 -313
- package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +0 -486
- package/src/rbac/__tests__/cache-invalidation.test.ts +0 -399
- package/src/rbac/__tests__/engine.comprehensive.test.ts +0 -813
- package/src/rbac/__tests__/isSuperAdmin.real.test.ts +0 -82
- package/src/rbac/__tests__/rbac-core.test.tsx +0 -276
- package/src/rbac/__tests__/rbac-engine-core-logic.test.ts +0 -392
- package/src/rbac/__tests__/rbac-engine-simplified.test.ts +0 -258
- package/src/rbac/__tests__/rbac-functions.test.ts +0 -647
- package/src/rbac/__tests__/rbac-integration.test.ts +0 -524
- package/src/rbac/__tests__/rbac-role-isolation.test.ts +0 -456
- package/src/rbac/__tests__/scenarios.user-role.test.tsx +0 -282
- package/src/rbac/audit-enhanced.ts +0 -384
- package/src/rbac/compliance/database-validator.ts +0 -165
- package/src/rbac/compliance/index.ts +0 -48
- package/src/rbac/compliance/pattern-detector.ts +0 -553
- package/src/rbac/compliance/quick-fix-suggestions.ts +0 -209
- package/src/rbac/compliance/runtime-compliance.ts +0 -99
- package/src/rbac/compliance/setup-validator.ts +0 -131
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +0 -975
- package/src/rbac/components/__tests__/PagePermissionGuard.performance.test.tsx +0 -248
- package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +0 -242
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +0 -1107
- package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +0 -184
- package/src/rbac/components/index.ts +0 -26
- package/src/rbac/hooks/__tests__/usePermissions.integration.test.ts +0 -432
- package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +0 -579
- package/src/rbac/hooks/index.ts +0 -34
- package/src/rbac/hooks/permissions/index.ts +0 -4
- package/src/rbac/hooks/useRBAC.simple.test.ts +0 -95
- package/src/rbac/utils/__tests__/contextValidator.test.ts +0 -128
- package/src/rbac/utils/__tests__/deep-equal.test.ts +0 -53
- package/src/rbac/utils/__tests__/eventContext.test.ts +0 -433
- package/src/rbac/utils/__tests__/eventContext.unit.test.ts +0 -490
- package/src/services/__tests__/AuthService.restoreSession.test.ts +0 -39
- package/src/services/__tests__/AuthService.test.ts +0 -1332
- package/src/services/__tests__/BaseService.test.ts +0 -314
- package/src/services/__tests__/EventService.eventColours.test.ts +0 -76
- package/src/services/__tests__/EventService.test.ts +0 -1025
- package/src/services/__tests__/InactivityService.lifecycle.test.ts +0 -411
- package/src/services/__tests__/InactivityService.test.ts +0 -654
- package/src/services/__tests__/OrganisationService.pagination.test.ts +0 -409
- package/src/services/__tests__/OrganisationService.test.ts +0 -1176
- package/src/theming/__tests__/parseEventColours.test.ts +0 -321
- package/src/theming/__tests__/runtime.test.ts +0 -569
- package/src/types/__tests__/file-reference.test.ts +0 -447
- package/src/types/__tests__/guards.test.ts +0 -246
- package/src/types/__tests__/organisation.roles.test.ts +0 -55
- package/src/types/__tests__/organisation.test.ts +0 -1133
- package/src/types/__tests__/theme.test.ts +0 -830
- package/src/types/__tests__/type-validation.test.ts +0 -526
- package/src/types/__tests__/validation.test.ts +0 -731
- package/src/utils/__tests__/appConfig.unit.test.ts +0 -55
- package/src/utils/__tests__/audit.unit.test.ts +0 -69
- package/src/utils/__tests__/auth-utils.unit.test.ts +0 -70
- package/src/utils/__tests__/bundleAnalysis.unit.test.ts +0 -339
- package/src/utils/__tests__/cn.unit.test.ts +0 -34
- package/src/utils/__tests__/debugLogger.test.ts +0 -417
- package/src/utils/__tests__/deviceFingerprint.unit.test.ts +0 -818
- package/src/utils/__tests__/dynamicUtils.unit.test.ts +0 -318
- package/src/utils/__tests__/formatDate.unit.test.ts +0 -109
- package/src/utils/__tests__/formatting.unit.test.ts +0 -99
- package/src/utils/__tests__/index.unit.test.ts +0 -251
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +0 -321
- package/src/utils/__tests__/logger.unit.test.ts +0 -398
- package/src/utils/__tests__/organisationContext.unit.test.ts +0 -191
- package/src/utils/__tests__/performanceBenchmark.test.ts +0 -175
- package/src/utils/__tests__/performanceBudgets.unit.test.ts +0 -253
- package/src/utils/__tests__/permissionTypes.unit.test.ts +0 -250
- package/src/utils/__tests__/permissionUtils.unit.test.ts +0 -362
- package/src/utils/__tests__/sanitization.unit.test.ts +0 -346
- package/src/utils/__tests__/schemaUtils.unit.test.ts +0 -441
- package/src/utils/__tests__/secureDataAccess.unit.test.ts +0 -335
- package/src/utils/__tests__/secureErrors.unit.test.ts +0 -390
- package/src/utils/__tests__/secureStorage.unit.test.ts +0 -289
- package/src/utils/__tests__/security.unit.test.ts +0 -149
- package/src/utils/__tests__/securityMonitor.unit.test.ts +0 -276
- package/src/utils/__tests__/sessionTracking.unit.test.ts +0 -218
- package/src/utils/__tests__/timezone.test.ts +0 -345
- package/src/utils/__tests__/validation.unit.test.ts +0 -308
- package/src/utils/__tests__/validationUtils.unit.test.ts +0 -555
- package/src/utils/app/appNameResolver.simple.test.ts +0 -212
- package/src/utils/file-reference/__tests__/file-reference.test.ts +0 -875
- package/src/utils/google-places/index.ts +0 -26
- package/src/utils/location/index.ts +0 -16
- package/src/utils/persistence/__tests__/keyDerivation.test.ts +0 -135
- package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +0 -123
- package/src/utils/storage/__tests__/helpers.unit.test.ts +0 -332
- package/src/utils/storage/__tests__/index.unit.test.ts +0 -16
- package/src/utils/storage/index.ts +0 -67
- package/src/utils/timezone/index.ts +0 -17
- package/src/utils/validation/__tests__/csrf.test.ts +0 -105
- package/src/utils/validation/__tests__/htmlSanitization.unit.test.ts +0 -598
- package/src/utils/validation/__tests__/sqlInjectionProtection.test.ts +0 -92
- package/src/utils/validation/__tests__/validationUtils.test.ts +0 -72
- package/src/utils/validation/index.ts +0 -73
- /package/src/components/DataTable/{components/__tests__ → ui}/COVERAGE_NOTE.md +0 -0
- /package/src/components/DataTable/utils/{__tests__/COVERAGE_NOTE.md → COVERAGE_NOTE.md} +0 -0
- /package/src/providers/{__tests__/README.md → README.md} +0 -0
- /package/src/types/{__tests__/README.md → README.md} +0 -0
|
@@ -1,876 +0,0 @@
|
|
|
1
|
-
import * as react_hook_form from 'react-hook-form';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { l as OrganisationRole, m as OrganisationPermission, S as SuperAdminContext, E as Event } from './event-CW5YB_2p.js';
|
|
4
|
-
import { SupabaseClient } from '@supabase/supabase-js';
|
|
5
|
-
import { D as Database } from './database.generated-DT8JTZiP.js';
|
|
6
|
-
import { F as FileCategory, a as FileReference } from './file-reference-BavO2eQj.js';
|
|
7
|
-
|
|
8
|
-
interface UseZodFormProps<T extends z.ZodTypeAny> {
|
|
9
|
-
schema: T;
|
|
10
|
-
defaultValues?: Partial<z.infer<T>>;
|
|
11
|
-
mode?: 'onSubmit' | 'onBlur' | 'onChange' | 'onTouched' | 'all';
|
|
12
|
-
}
|
|
13
|
-
declare function useZodForm<T extends z.ZodTypeAny>({ schema, defaultValues, mode }: UseZodFormProps<T>): react_hook_form.UseFormReturn<z.TypeOf<T>, any, z.TypeOf<T>>;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @file useFormDialog Hook
|
|
17
|
-
* @package @jmruthers/pace-core
|
|
18
|
-
* @module Hooks
|
|
19
|
-
* @since 0.1.0
|
|
20
|
-
*
|
|
21
|
-
* Generic React hook for managing form dialog state (open/close, form data, reset behavior).
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```ts
|
|
25
|
-
* interface ContactFormData {
|
|
26
|
-
* name: string;
|
|
27
|
-
* email: string;
|
|
28
|
-
* }
|
|
29
|
-
*
|
|
30
|
-
* function ContactDialog() {
|
|
31
|
-
* const { isOpen, formData, openDialog, closeDialog, handleOpenChange } =
|
|
32
|
-
* useFormDialog<ContactFormData>();
|
|
33
|
-
*
|
|
34
|
-
* // Use in Dialog component
|
|
35
|
-
* // <Dialog open={isOpen} onOpenChange={handleOpenChange}>...</Dialog>
|
|
36
|
-
* }
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
/**
|
|
40
|
-
* Options for configuring the useFormDialog hook behavior
|
|
41
|
-
*/
|
|
42
|
-
interface UseFormDialogOptions<T = unknown> {
|
|
43
|
-
/**
|
|
44
|
-
* Callback invoked when the dialog open state changes
|
|
45
|
-
* @param open - The new open state
|
|
46
|
-
*/
|
|
47
|
-
onOpenChange?: (open: boolean) => void;
|
|
48
|
-
/**
|
|
49
|
-
* Whether to reset form data when the dialog closes
|
|
50
|
-
* @default true
|
|
51
|
-
*/
|
|
52
|
-
resetOnClose?: boolean;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Return type for the useFormDialog hook
|
|
56
|
-
*/
|
|
57
|
-
interface UseFormDialogReturn<T = unknown> {
|
|
58
|
-
/**
|
|
59
|
-
* Current open state of the dialog
|
|
60
|
-
*/
|
|
61
|
-
isOpen: boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Current form data (null when dialog is closed or no data provided)
|
|
64
|
-
*/
|
|
65
|
-
formData: T | null;
|
|
66
|
-
/**
|
|
67
|
-
* Open the dialog with optional form data
|
|
68
|
-
* @param data - Optional form data to populate the dialog
|
|
69
|
-
*/
|
|
70
|
-
openDialog: (data?: T | null) => void;
|
|
71
|
-
/**
|
|
72
|
-
* Close the dialog
|
|
73
|
-
*/
|
|
74
|
-
closeDialog: () => void;
|
|
75
|
-
/**
|
|
76
|
-
* Handler for controlled dialog components (e.g., Radix UI Dialog)
|
|
77
|
-
* @param open - The new open state
|
|
78
|
-
*/
|
|
79
|
-
handleOpenChange: (open: boolean) => void;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Generic React hook for managing form dialog state.
|
|
83
|
-
*
|
|
84
|
-
* Provides state management for form dialogs including:
|
|
85
|
-
* - Open/close state
|
|
86
|
-
* - Form data management
|
|
87
|
-
* - Automatic reset on close (configurable)
|
|
88
|
-
* - Controlled and uncontrolled usage patterns
|
|
89
|
-
*
|
|
90
|
-
* @param options - Configuration options for the hook
|
|
91
|
-
* @returns Object containing dialog state and control functions
|
|
92
|
-
*
|
|
93
|
-
* @example
|
|
94
|
-
* ```ts
|
|
95
|
-
* // Basic usage
|
|
96
|
-
* const { isOpen, openDialog, closeDialog } = useFormDialog();
|
|
97
|
-
*
|
|
98
|
-
* // With form data
|
|
99
|
-
* interface UserData {
|
|
100
|
-
* id: string;
|
|
101
|
-
* name: string;
|
|
102
|
-
* }
|
|
103
|
-
* const { isOpen, formData, openDialog } = useFormDialog<UserData>();
|
|
104
|
-
*
|
|
105
|
-
* // Open with data
|
|
106
|
-
* openDialog({ id: '1', name: 'John' });
|
|
107
|
-
*
|
|
108
|
-
* // Controlled usage with callback
|
|
109
|
-
* const { handleOpenChange, isOpen } = useFormDialog({
|
|
110
|
-
* onOpenChange: (open) => console.log('Dialog state:', open),
|
|
111
|
-
* resetOnClose: false
|
|
112
|
-
* });
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
declare function useFormDialog<T = unknown>({ onOpenChange, resetOnClose, }?: UseFormDialogOptions<T>): UseFormDialogReturn<T>;
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* @file useOrganisationPermissions Hook
|
|
119
|
-
* @package @jmruthers/pace-core
|
|
120
|
-
* @module Hooks/useOrganisationPermissions
|
|
121
|
-
* @since 0.4.0
|
|
122
|
-
*
|
|
123
|
-
* Hook for managing organisation-specific permissions and role validation.
|
|
124
|
-
* Provides secure access to user's role and permissions within organisations.
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* ```tsx
|
|
128
|
-
* function OrganisationComponent() {
|
|
129
|
-
* const {
|
|
130
|
-
* isOrgAdmin,
|
|
131
|
-
* canManageMembers,
|
|
132
|
-
* userRole,
|
|
133
|
-
* hasOrganisationAccess
|
|
134
|
-
* } = useOrganisationPermissions();
|
|
135
|
-
*
|
|
136
|
-
* return (
|
|
137
|
-
* <section>
|
|
138
|
-
* {isOrgAdmin && <AdminPanel />}
|
|
139
|
-
* {canManageMembers && <MemberManagement />}
|
|
140
|
-
* <p>Your role: {userRole}</p>
|
|
141
|
-
* </section>
|
|
142
|
-
* );
|
|
143
|
-
* }
|
|
144
|
-
*
|
|
145
|
-
* // For specific organisation
|
|
146
|
-
* function MultiOrgComponent() {
|
|
147
|
-
* const permissions = useOrganisationPermissions('org-123');
|
|
148
|
-
*
|
|
149
|
-
* if (!permissions.hasOrganisationAccess) {
|
|
150
|
-
* return <main>No access to this organisation</main>;
|
|
151
|
-
* }
|
|
152
|
-
*
|
|
153
|
-
* return <main>Role in org-123: {permissions.userRole}</main>;
|
|
154
|
-
* }
|
|
155
|
-
* ```
|
|
156
|
-
*
|
|
157
|
-
* @security
|
|
158
|
-
* - Validates user membership in organisation
|
|
159
|
-
* - Provides role-based permission checks
|
|
160
|
-
* - Ensures secure access to organisation data
|
|
161
|
-
* - Real-time permission validation
|
|
162
|
-
*/
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Return value of the useOrganisationPermissions hook.
|
|
166
|
-
* Provides organisation-specific permissions and role information.
|
|
167
|
-
*/
|
|
168
|
-
interface UseOrganisationPermissionsReturn {
|
|
169
|
-
/** User's role in the organisation */
|
|
170
|
-
userRole: OrganisationRole | 'no_access';
|
|
171
|
-
/** Whether user has organisation admin role */
|
|
172
|
-
isOrgAdmin: boolean;
|
|
173
|
-
/** Whether user is a super admin */
|
|
174
|
-
isSuperAdmin: boolean;
|
|
175
|
-
/** Whether user can moderate content */
|
|
176
|
-
canModerate: boolean;
|
|
177
|
-
/** Whether user can manage members */
|
|
178
|
-
canManageMembers: boolean;
|
|
179
|
-
/** Whether user can manage organisation settings */
|
|
180
|
-
canManageSettings: boolean;
|
|
181
|
-
/** Whether user can manage events */
|
|
182
|
-
canManageEvents: boolean;
|
|
183
|
-
/** Whether user has any admin privileges */
|
|
184
|
-
hasAdminPrivileges: boolean;
|
|
185
|
-
/** Whether user has access to the organisation */
|
|
186
|
-
hasOrganisationAccess: boolean;
|
|
187
|
-
/** Check if user has specific permission */
|
|
188
|
-
hasPermission: (permission: OrganisationPermission) => boolean;
|
|
189
|
-
/** Get all permissions for the user */
|
|
190
|
-
getAllPermissions: () => OrganisationPermission[];
|
|
191
|
-
/** Organisation ID being checked */
|
|
192
|
-
organisationId: string;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Hook to access organisation-specific permissions and roles
|
|
196
|
-
*
|
|
197
|
-
* @param orgId - Optional organisation ID. Defaults to currently selected organisation
|
|
198
|
-
* @returns Organisation permissions and role information
|
|
199
|
-
*/
|
|
200
|
-
declare function useOrganisationPermissions(orgId?: string): UseOrganisationPermissionsReturn;
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* @file Organisation Security Hook
|
|
204
|
-
* @package @jmruthers/pace-core
|
|
205
|
-
* @module Hooks/OrganisationSecurity
|
|
206
|
-
* @since 0.4.0
|
|
207
|
-
*
|
|
208
|
-
* Security-focused hook for organisation access validation and super admin functionality.
|
|
209
|
-
* Provides utilities for validating user access to organisations and checking permissions.
|
|
210
|
-
*/
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Organisation security hook interface.
|
|
214
|
-
* Provides security utilities for organisation access validation and super admin functionality.
|
|
215
|
-
*/
|
|
216
|
-
interface OrganisationSecurityHook {
|
|
217
|
-
superAdminContext: SuperAdminContext;
|
|
218
|
-
validateOrganisationAccess: (orgId: string) => Promise<boolean>;
|
|
219
|
-
hasMinimumRole: (minRole: string, orgId?: string) => boolean;
|
|
220
|
-
canAccessChildOrganisations: (orgId?: string) => boolean;
|
|
221
|
-
hasPermission: (permission: string, orgId?: string) => Promise<boolean>;
|
|
222
|
-
getUserPermissions: (orgId?: string) => Promise<string[]>;
|
|
223
|
-
logOrganisationAccess: (action: string, details?: Record<string, unknown>) => Promise<void>;
|
|
224
|
-
ensureOrganisationAccess: (orgId: string) => Promise<void>;
|
|
225
|
-
validateUserAccess: (userId: string, orgId: string) => Promise<boolean>;
|
|
226
|
-
}
|
|
227
|
-
declare const useOrganisationSecurity: () => OrganisationSecurityHook;
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* @file useAppConfig Hook
|
|
231
|
-
* @package @jmruthers/pace-core
|
|
232
|
-
* @module Hooks/useAppConfig
|
|
233
|
-
* @since 0.4.0
|
|
234
|
-
*
|
|
235
|
-
* Hook for accessing app name and loading state.
|
|
236
|
-
*
|
|
237
|
-
* NOTE: Scope configuration (requires_event) is now page-level only (rbac_app_pages.scope_type).
|
|
238
|
-
* Use getPageScopeType() to determine if a specific page requires event or organisation context.
|
|
239
|
-
*
|
|
240
|
-
* @example
|
|
241
|
-
* ```tsx
|
|
242
|
-
* function MyComponent() {
|
|
243
|
-
* const { appName, isLoading } = useAppConfig();
|
|
244
|
-
*
|
|
245
|
-
* if (isLoading) return <p>Loading...</p>;
|
|
246
|
-
*
|
|
247
|
-
* return <p>App: {appName}</p>;
|
|
248
|
-
* }
|
|
249
|
-
* ```
|
|
250
|
-
*/
|
|
251
|
-
interface UseAppConfigReturn {
|
|
252
|
-
appName: string;
|
|
253
|
-
isLoading: boolean;
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Hook to access app configuration
|
|
257
|
-
* Works in both authenticated and public contexts
|
|
258
|
-
* @returns App configuration and loading state
|
|
259
|
-
*/
|
|
260
|
-
declare function useAppConfig(): UseAppConfigReturn;
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* @file Event Theme Hook
|
|
264
|
-
* @package @jmruthers/pace-core
|
|
265
|
-
* @module Hooks/EventTheme
|
|
266
|
-
* @since 2.0.0
|
|
267
|
-
*
|
|
268
|
-
* Hook that automatically applies event-specific theming when an event is selected.
|
|
269
|
-
* This ensures consistent UX across all apps in the pace suite.
|
|
270
|
-
*
|
|
271
|
-
* Works in two modes:
|
|
272
|
-
* 1. Authenticated mode: Uses EventProvider context via useEvents() hook
|
|
273
|
-
* 2. Public page mode: Accepts event prop directly (no EventProvider required)
|
|
274
|
-
*
|
|
275
|
-
* @example
|
|
276
|
-
* ```tsx
|
|
277
|
-
* // Authenticated pages (with EventProvider)
|
|
278
|
-
* import { useEventTheme } from '@jmruthers/pace-core/hooks';
|
|
279
|
-
*
|
|
280
|
-
* function MyApp() {
|
|
281
|
-
* // Automatically applies event colors when event is selected via EventProvider
|
|
282
|
-
* useEventTheme();
|
|
283
|
-
*
|
|
284
|
-
* return <main>Your app content</main>;
|
|
285
|
-
* }
|
|
286
|
-
* ```
|
|
287
|
-
*
|
|
288
|
-
* @example
|
|
289
|
-
* ```tsx
|
|
290
|
-
* // Public pages (without EventProvider)
|
|
291
|
-
* import { useEventTheme } from '@jmruthers/pace-core/hooks';
|
|
292
|
-
*
|
|
293
|
-
* function PublicPageLayout({ event }) {
|
|
294
|
-
* // Applies event colors directly from event prop
|
|
295
|
-
* useEventTheme(event);
|
|
296
|
-
*
|
|
297
|
-
* return <main>Public page content</main>;
|
|
298
|
-
* }
|
|
299
|
-
* ```
|
|
300
|
-
*/
|
|
301
|
-
|
|
302
|
-
/**
|
|
303
|
-
* Hook that automatically applies event-specific theming
|
|
304
|
-
*
|
|
305
|
-
* This hook applies event colors using the theming system. It works in two modes:
|
|
306
|
-
*
|
|
307
|
-
* **Authenticated Mode (default):**
|
|
308
|
-
* - Uses EventProvider context via useEvents() hook
|
|
309
|
-
* - Automatically watches selectedEvent changes
|
|
310
|
-
* - Used in authenticated pages with EventProvider
|
|
311
|
-
*
|
|
312
|
-
* **Public Page Mode:**
|
|
313
|
-
* - Accepts event prop directly
|
|
314
|
-
* - No EventProvider required
|
|
315
|
-
* - Used in public pages without authentication context
|
|
316
|
-
*
|
|
317
|
-
* Behavior:
|
|
318
|
-
* - Applies event colors when an event with `event_colours` is provided
|
|
319
|
-
* - Clears theming when no event is provided
|
|
320
|
-
* - Skips theme application when on the login route to prevent login screen styling
|
|
321
|
-
* - Handles cleanup and error cases gracefully
|
|
322
|
-
*
|
|
323
|
-
* @param event - Optional event object. If provided, uses this event directly (public page mode).
|
|
324
|
-
* If not provided, uses EventProvider context via useEvents() (authenticated mode).
|
|
325
|
-
*
|
|
326
|
-
* @returns void - This is an effect hook with no return value
|
|
327
|
-
*
|
|
328
|
-
* @example
|
|
329
|
-
* ```tsx
|
|
330
|
-
* // Authenticated mode - uses EventProvider
|
|
331
|
-
* function MyApp() {
|
|
332
|
-
* useEventTheme(); // Watches selectedEvent from EventProvider
|
|
333
|
-
* return <main>App content</main>;
|
|
334
|
-
* }
|
|
335
|
-
* ```
|
|
336
|
-
*
|
|
337
|
-
* @example
|
|
338
|
-
* ```tsx
|
|
339
|
-
* // Public page mode - uses event prop
|
|
340
|
-
* function PublicPageLayout({ event }) {
|
|
341
|
-
* useEventTheme(event); // Uses event prop directly
|
|
342
|
-
* return <main>Public content</main>;
|
|
343
|
-
* }
|
|
344
|
-
* ```
|
|
345
|
-
*/
|
|
346
|
-
/**
|
|
347
|
-
* Hook that automatically applies event-specific theming.
|
|
348
|
-
* Works in authenticated mode (via EventProvider) or public page mode (via event prop).
|
|
349
|
-
*
|
|
350
|
-
* @param event - Optional event object for public page mode. If not provided, uses EventProvider context.
|
|
351
|
-
*/
|
|
352
|
-
declare function useEventTheme(event?: Event | null): void;
|
|
353
|
-
|
|
354
|
-
/**
|
|
355
|
-
* Storage utility types for pace-core
|
|
356
|
-
*/
|
|
357
|
-
interface StorageUploadOptions {
|
|
358
|
-
/** The app name from rbac_apps */
|
|
359
|
-
appName: string;
|
|
360
|
-
/** Organisation ID for scoping (required if userId not provided) */
|
|
361
|
-
orgId?: string;
|
|
362
|
-
/** User ID for user-scoped files (required if orgId not provided) */
|
|
363
|
-
userId?: string;
|
|
364
|
-
/** Whether the file should be publicly accessible */
|
|
365
|
-
isPublic?: boolean;
|
|
366
|
-
/** Optional tags for categorisation */
|
|
367
|
-
tags?: string[];
|
|
368
|
-
/** Optional custom path within the app/org/user structure */
|
|
369
|
-
customPath?: string;
|
|
370
|
-
/** Optional metadata to store with the file */
|
|
371
|
-
metadata?: Record<string, any>;
|
|
372
|
-
}
|
|
373
|
-
interface StorageFileMetadata {
|
|
374
|
-
mimeType: string;
|
|
375
|
-
size: number;
|
|
376
|
-
width?: number;
|
|
377
|
-
height?: number;
|
|
378
|
-
hash?: string;
|
|
379
|
-
orgId?: string;
|
|
380
|
-
userId?: string;
|
|
381
|
-
appName: string;
|
|
382
|
-
uploadedBy: string;
|
|
383
|
-
uploadedAt: string;
|
|
384
|
-
tags?: string[];
|
|
385
|
-
isPublic: boolean;
|
|
386
|
-
customMetadata?: Record<string, any>;
|
|
387
|
-
}
|
|
388
|
-
interface StorageUploadResult {
|
|
389
|
-
success: boolean;
|
|
390
|
-
path?: string;
|
|
391
|
-
publicUrl?: string;
|
|
392
|
-
metadata?: StorageFileMetadata;
|
|
393
|
-
error?: string;
|
|
394
|
-
}
|
|
395
|
-
interface StorageUrlOptions {
|
|
396
|
-
/** The app name from rbac_apps */
|
|
397
|
-
appName: string;
|
|
398
|
-
/** Organisation ID for scoping (required if userId not provided) */
|
|
399
|
-
orgId?: string;
|
|
400
|
-
/** User ID for user-scoped files (required if orgId not provided) */
|
|
401
|
-
userId?: string;
|
|
402
|
-
/** Expiry time in seconds for signed URLs (default: 3600) */
|
|
403
|
-
expiresIn?: number;
|
|
404
|
-
}
|
|
405
|
-
interface StorageListOptions {
|
|
406
|
-
/** The app name from rbac_apps */
|
|
407
|
-
appName: string;
|
|
408
|
-
/** Organisation ID for scoping (required if userId not provided) */
|
|
409
|
-
orgId?: string;
|
|
410
|
-
/** User ID for user-scoped files (required if orgId not provided) */
|
|
411
|
-
userId?: string;
|
|
412
|
-
/** Optional path prefix to filter by */
|
|
413
|
-
pathPrefix?: string;
|
|
414
|
-
/** Optional tags to filter by */
|
|
415
|
-
tags?: string[];
|
|
416
|
-
/** Maximum number of files to return */
|
|
417
|
-
limit?: number;
|
|
418
|
-
/** Offset for pagination */
|
|
419
|
-
offset?: number;
|
|
420
|
-
}
|
|
421
|
-
interface StorageFileInfo {
|
|
422
|
-
name: string;
|
|
423
|
-
path: string;
|
|
424
|
-
size: number;
|
|
425
|
-
mimeType: string;
|
|
426
|
-
lastModified: string;
|
|
427
|
-
metadata: StorageFileMetadata;
|
|
428
|
-
}
|
|
429
|
-
interface StorageListResult {
|
|
430
|
-
files: StorageFileInfo[];
|
|
431
|
-
totalCount: number;
|
|
432
|
-
hasMore: boolean;
|
|
433
|
-
}
|
|
434
|
-
interface FileSizeLimits {
|
|
435
|
-
[mimeType: string]: number;
|
|
436
|
-
}
|
|
437
|
-
interface StorageConfig {
|
|
438
|
-
bucketName: string;
|
|
439
|
-
fileSizeLimits: FileSizeLimits;
|
|
440
|
-
defaultFileSizeLimit: number;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
/**
|
|
444
|
-
* @file Public Event Hook
|
|
445
|
-
* @package @jmruthers/pace-core
|
|
446
|
-
* @module Hooks/Public
|
|
447
|
-
* @since 1.0.0
|
|
448
|
-
*
|
|
449
|
-
* A React hook for accessing public event data without authentication.
|
|
450
|
-
* Provides event information by event_code for public pages.
|
|
451
|
-
*
|
|
452
|
-
* Features:
|
|
453
|
-
* - No authentication required
|
|
454
|
-
* - Caching for performance
|
|
455
|
-
* - Error handling and loading states
|
|
456
|
-
* - TypeScript support
|
|
457
|
-
* - Automatic refetch capabilities
|
|
458
|
-
*
|
|
459
|
-
* @example
|
|
460
|
-
* ```tsx
|
|
461
|
-
* import { usePublicEvent } from '@jmruthers/pace-core';
|
|
462
|
-
*
|
|
463
|
-
* function PublicEventPage() {
|
|
464
|
-
* const { eventCode } = usePublicRouteParams();
|
|
465
|
-
* const { event, isLoading, error, refetch } = usePublicEvent(eventCode);
|
|
466
|
-
*
|
|
467
|
-
* if (isLoading) return <p>Loading event...</p>;
|
|
468
|
-
* if (error) return <p>Error: {error.message}</p>;
|
|
469
|
-
* if (!event) return <p>Event not found</p>;
|
|
470
|
-
*
|
|
471
|
-
* return (
|
|
472
|
-
* <section>
|
|
473
|
-
* <h1>{event.event_name}</h1>
|
|
474
|
-
* <p>Date: {event.event_date}</p>
|
|
475
|
-
* <p>Venue: {event.event_venue}</p>
|
|
476
|
-
* </section>
|
|
477
|
-
* );
|
|
478
|
-
* }
|
|
479
|
-
* ```
|
|
480
|
-
*
|
|
481
|
-
* @accessibility
|
|
482
|
-
* - No direct accessibility concerns (hook)
|
|
483
|
-
* - Enables accessible public event display
|
|
484
|
-
* - Supports screen reader friendly loading states
|
|
485
|
-
*
|
|
486
|
-
* @security
|
|
487
|
-
* - Only returns public-safe event data
|
|
488
|
-
* - Validates event_code before querying
|
|
489
|
-
* - No sensitive information exposed
|
|
490
|
-
* - Rate limiting applied at database level
|
|
491
|
-
*
|
|
492
|
-
* @performance
|
|
493
|
-
* - Built-in caching with TTL
|
|
494
|
-
* - Minimal re-renders with stable references
|
|
495
|
-
* - Lazy loading support
|
|
496
|
-
* - Error boundary integration
|
|
497
|
-
*
|
|
498
|
-
* @dependencies
|
|
499
|
-
* - React 19+ - Hooks and effects
|
|
500
|
-
* - @supabase/supabase-js - Database integration
|
|
501
|
-
* - Event types - Type definitions
|
|
502
|
-
*/
|
|
503
|
-
|
|
504
|
-
/**
|
|
505
|
-
* Return value of the usePublicEvent hook.
|
|
506
|
-
* Provides event data, loading state, error, and refetch function.
|
|
507
|
-
*/
|
|
508
|
-
interface UsePublicEventReturn {
|
|
509
|
-
/** The event data, null if not loaded or not found */
|
|
510
|
-
event: Event | null;
|
|
511
|
-
/** Whether the data is currently loading */
|
|
512
|
-
isLoading: boolean;
|
|
513
|
-
/** Any error that occurred during loading */
|
|
514
|
-
error: Error | null;
|
|
515
|
-
/** Function to manually refetch the data */
|
|
516
|
-
refetch: () => Promise<void>;
|
|
517
|
-
}
|
|
518
|
-
interface UsePublicEventOptions {
|
|
519
|
-
/** Cache TTL in milliseconds (default: 5 minutes) */
|
|
520
|
-
cacheTtl?: number;
|
|
521
|
-
/** Whether to enable caching (default: true) */
|
|
522
|
-
enableCache?: boolean;
|
|
523
|
-
}
|
|
524
|
-
/**
|
|
525
|
-
* Hook for accessing public event data by event_code
|
|
526
|
-
*
|
|
527
|
-
* This hook provides access to public event information without requiring
|
|
528
|
-
* authentication. It includes caching, error handling, and loading states.
|
|
529
|
-
*
|
|
530
|
-
* @param eventCode - The event code to look up
|
|
531
|
-
* @param options - Configuration options for caching and behavior
|
|
532
|
-
* @returns Object containing event data, loading state, error, and refetch function
|
|
533
|
-
*/
|
|
534
|
-
declare function usePublicEvent(eventCode: string, options?: UsePublicEventOptions): UsePublicEventReturn;
|
|
535
|
-
/**
|
|
536
|
-
* Clear all cached public event data
|
|
537
|
-
* Useful for testing or when you need to force refresh all data
|
|
538
|
-
*/
|
|
539
|
-
declare function clearPublicEventCache(): void;
|
|
540
|
-
/**
|
|
541
|
-
* Get cache statistics for debugging
|
|
542
|
-
*/
|
|
543
|
-
declare function getPublicEventCacheStats(): {
|
|
544
|
-
size: number;
|
|
545
|
-
keys: string[];
|
|
546
|
-
};
|
|
547
|
-
|
|
548
|
-
/**
|
|
549
|
-
* @file Public File Display Hook
|
|
550
|
-
* @package @jmruthers/pace-core
|
|
551
|
-
* @module Hooks/Public
|
|
552
|
-
* @since 1.0.0
|
|
553
|
-
*
|
|
554
|
-
* A React hook for accessing file references in public contexts without authentication.
|
|
555
|
-
* Provides file URLs and metadata for public pages.
|
|
556
|
-
*
|
|
557
|
-
* Features:
|
|
558
|
-
* - No authentication required
|
|
559
|
-
* - Only returns public files (is_public = true)
|
|
560
|
-
* - Caching for performance
|
|
561
|
-
* - Error handling and loading states
|
|
562
|
-
* - TypeScript support
|
|
563
|
-
* - Supports both single file (category) and multiple files
|
|
564
|
-
*
|
|
565
|
-
* @example
|
|
566
|
-
* ```tsx
|
|
567
|
-
* import { usePublicFileDisplay } from '@jmruthers/pace-core';
|
|
568
|
-
*
|
|
569
|
-
* function PublicFileView() {
|
|
570
|
-
* const { fileUrl, fileReference, isLoading, error } = usePublicFileDisplay(
|
|
571
|
-
* 'event',
|
|
572
|
-
* eventId,
|
|
573
|
-
* organisationId,
|
|
574
|
-
* FileCategory.EVENT_LOGOS,
|
|
575
|
-
* { supabase }
|
|
576
|
-
* );
|
|
577
|
-
*
|
|
578
|
-
* if (isLoading) return <p>Loading...</p>;
|
|
579
|
-
* if (error) return <p>Error: {error.message}</p>;
|
|
580
|
-
*
|
|
581
|
-
* return fileUrl ? <img src={fileUrl} alt="File" /> : null;
|
|
582
|
-
* }
|
|
583
|
-
* ```
|
|
584
|
-
*/
|
|
585
|
-
|
|
586
|
-
/**
|
|
587
|
-
* Return value of the usePublicFileDisplay hook.
|
|
588
|
-
* Provides file URLs, references, loading state, error, and refetch function.
|
|
589
|
-
*/
|
|
590
|
-
interface UsePublicFileDisplayReturn {
|
|
591
|
-
/** Single file URL if category is provided and file found, null otherwise */
|
|
592
|
-
fileUrl: string | null;
|
|
593
|
-
/** Single file reference if category is provided and file found, null otherwise */
|
|
594
|
-
fileReference: FileReference | null;
|
|
595
|
-
/** Array of all file references for the record (when category not provided or for multiple files) */
|
|
596
|
-
fileReferences: FileReference[];
|
|
597
|
-
/** Map of file IDs to URLs for multiple files */
|
|
598
|
-
fileUrls: Map<string, string>;
|
|
599
|
-
/** Total count of files for the record */
|
|
600
|
-
fileCount: number;
|
|
601
|
-
/** Whether the data is currently loading */
|
|
602
|
-
isLoading: boolean;
|
|
603
|
-
/** Any error that occurred during loading */
|
|
604
|
-
error: Error | null;
|
|
605
|
-
/** Function to manually refetch the data */
|
|
606
|
-
refetch: () => Promise<void>;
|
|
607
|
-
}
|
|
608
|
-
interface UsePublicFileDisplayOptions {
|
|
609
|
-
/** Cache TTL in milliseconds (default: 30 minutes) */
|
|
610
|
-
cacheTtl?: number;
|
|
611
|
-
/** Whether to enable caching (default: true) */
|
|
612
|
-
enableCache?: boolean;
|
|
613
|
-
/** Supabase client instance (required) */
|
|
614
|
-
supabase: SupabaseClient<Database>;
|
|
615
|
-
}
|
|
616
|
-
/**
|
|
617
|
-
* Hook for accessing public file references
|
|
618
|
-
*
|
|
619
|
-
* This hook provides access to file references without requiring
|
|
620
|
-
* authentication. It only returns public files and generates public URLs.
|
|
621
|
-
*
|
|
622
|
-
* @param table_name - The table name containing the file reference
|
|
623
|
-
* @param record_id - The record ID that owns the file(s)
|
|
624
|
-
* @param organisation_id - The organisation ID for storage path
|
|
625
|
-
* @param category - Optional file category to filter by (for single file mode)
|
|
626
|
-
* @param options - Configuration options for caching and behavior
|
|
627
|
-
* @returns Object containing file data, loading state, error, and refetch function
|
|
628
|
-
*/
|
|
629
|
-
declare function usePublicFileDisplay(table_name: string | undefined, record_id: string | undefined, organisation_id: string | undefined, category: FileCategory | undefined, options: UsePublicFileDisplayOptions): UsePublicFileDisplayReturn;
|
|
630
|
-
/**
|
|
631
|
-
* Clear all cached public file data
|
|
632
|
-
* Useful for testing or when you need to force refresh all data
|
|
633
|
-
*/
|
|
634
|
-
declare function clearPublicFileDisplayCache(): void;
|
|
635
|
-
/**
|
|
636
|
-
* Get cache statistics for debugging
|
|
637
|
-
*/
|
|
638
|
-
declare function getPublicFileDisplayCacheStats(): {
|
|
639
|
-
size: number;
|
|
640
|
-
keys: string[];
|
|
641
|
-
};
|
|
642
|
-
|
|
643
|
-
/**
|
|
644
|
-
* @file Public Event Logo Hook
|
|
645
|
-
* @package @jmruthers/pace-core
|
|
646
|
-
* @module Hooks/Public
|
|
647
|
-
* @since 1.0.0
|
|
648
|
-
*
|
|
649
|
-
* A React hook for accessing public event logo URLs without authentication.
|
|
650
|
-
* Provides logo URLs with fallback handling for public pages.
|
|
651
|
-
*
|
|
652
|
-
* Features:
|
|
653
|
-
* - No authentication required
|
|
654
|
-
* - Automatic fallback to event initials
|
|
655
|
-
* - Caching for performance
|
|
656
|
-
* - Error handling and loading states
|
|
657
|
-
* - TypeScript support
|
|
658
|
-
* - Image validation
|
|
659
|
-
*
|
|
660
|
-
* @example
|
|
661
|
-
* ```tsx
|
|
662
|
-
* import { usePublicEventLogo } from '@jmruthers/pace-core';
|
|
663
|
-
*
|
|
664
|
-
* function EventHeader() {
|
|
665
|
-
* const { logoUrl, fallbackText, isLoading, error } = usePublicEventLogo(
|
|
666
|
-
* eventId,
|
|
667
|
-
* eventName,
|
|
668
|
-
* organisationId
|
|
669
|
-
* );
|
|
670
|
-
*
|
|
671
|
-
* if (isLoading) return <p>Loading logo...</p>;
|
|
672
|
-
* if (error) return <p>Error: {error.message}</p>;
|
|
673
|
-
*
|
|
674
|
-
* return (
|
|
675
|
-
* <section>
|
|
676
|
-
* {logoUrl ? (
|
|
677
|
-
* <img src={logoUrl} alt={`${eventName} logo`} />
|
|
678
|
-
* ) : (
|
|
679
|
-
* <p className="logo-fallback">{fallbackText}</p>
|
|
680
|
-
* )}
|
|
681
|
-
* </section>
|
|
682
|
-
* );
|
|
683
|
-
* }
|
|
684
|
-
* ```
|
|
685
|
-
*
|
|
686
|
-
* @accessibility
|
|
687
|
-
* - No direct accessibility concerns (hook)
|
|
688
|
-
* - Enables accessible logo display with proper alt text
|
|
689
|
-
* - Supports screen reader friendly fallbacks
|
|
690
|
-
*
|
|
691
|
-
* @security
|
|
692
|
-
* - Only returns public-safe logo URLs
|
|
693
|
-
* - Validates image existence before returning URL
|
|
694
|
-
* - No sensitive information exposed
|
|
695
|
-
* - Rate limiting applied at storage level
|
|
696
|
-
*
|
|
697
|
-
* @performance
|
|
698
|
-
* - Built-in caching with TTL
|
|
699
|
-
* - Image validation and optimization
|
|
700
|
-
* - Minimal re-renders with stable references
|
|
701
|
-
* - Lazy loading support
|
|
702
|
-
*
|
|
703
|
-
* @dependencies
|
|
704
|
-
* - React 19+ - Hooks and effects
|
|
705
|
-
* - @supabase/supabase-js - Storage integration
|
|
706
|
-
* - Event types - Type definitions
|
|
707
|
-
*/
|
|
708
|
-
|
|
709
|
-
/**
|
|
710
|
-
* Return value of the usePublicEventLogo hook.
|
|
711
|
-
* Provides logo URL, fallback text, loading state, error, and refetch function.
|
|
712
|
-
*/
|
|
713
|
-
interface UsePublicEventLogoReturn {
|
|
714
|
-
/** The logo URL if available, null if not found or error */
|
|
715
|
-
logoUrl: string | null;
|
|
716
|
-
/** Fallback text (event initials) if no logo is available */
|
|
717
|
-
fallbackText: string;
|
|
718
|
-
/** Whether the logo is currently loading */
|
|
719
|
-
isLoading: boolean;
|
|
720
|
-
/** Any error that occurred during loading */
|
|
721
|
-
error: Error | null;
|
|
722
|
-
/** Function to manually refetch the logo */
|
|
723
|
-
refetch: () => Promise<void>;
|
|
724
|
-
}
|
|
725
|
-
interface UsePublicEventLogoOptions {
|
|
726
|
-
/** Cache TTL in milliseconds (default: 30 minutes) */
|
|
727
|
-
cacheTtl?: number;
|
|
728
|
-
/** Whether to enable caching (default: true) */
|
|
729
|
-
enableCache?: boolean;
|
|
730
|
-
/** Whether to validate image existence (default: true) */
|
|
731
|
-
validateImage?: boolean;
|
|
732
|
-
/** Custom fallback text generator */
|
|
733
|
-
generateFallbackText?: (eventName: string) => string;
|
|
734
|
-
/** Supabase client instance (required) */
|
|
735
|
-
supabase: SupabaseClient<Database>;
|
|
736
|
-
}
|
|
737
|
-
/**
|
|
738
|
-
* Hook for accessing public event logo URLs
|
|
739
|
-
*
|
|
740
|
-
* This hook provides access to event logo URLs without requiring
|
|
741
|
-
* authentication. It includes fallback handling and image validation.
|
|
742
|
-
*
|
|
743
|
-
* @param eventId - The event ID to fetch logo for
|
|
744
|
-
* @param eventName - The event name for fallback text generation
|
|
745
|
-
* @param organisationId - The organisation ID for storage path
|
|
746
|
-
* @param options - Configuration options for caching and behavior
|
|
747
|
-
* @returns Object containing logo URL, fallback text, loading state, error, and refetch function
|
|
748
|
-
*/
|
|
749
|
-
declare function usePublicEventLogo(eventId: string | undefined, eventName: string | undefined, organisationId: string | undefined, options: UsePublicEventLogoOptions): UsePublicEventLogoReturn;
|
|
750
|
-
/**
|
|
751
|
-
* Clear all cached public logo data
|
|
752
|
-
* Useful for testing or when you need to force refresh all data
|
|
753
|
-
*/
|
|
754
|
-
declare function clearPublicLogoCache(): void;
|
|
755
|
-
/**
|
|
756
|
-
* Get cache statistics for debugging
|
|
757
|
-
*/
|
|
758
|
-
declare function getPublicLogoCacheStats(): {
|
|
759
|
-
size: number;
|
|
760
|
-
keys: string[];
|
|
761
|
-
};
|
|
762
|
-
|
|
763
|
-
/**
|
|
764
|
-
* @file Public Route Params Hook
|
|
765
|
-
* @package @jmruthers/pace-core
|
|
766
|
-
* @module Hooks/Public
|
|
767
|
-
* @since 1.0.0
|
|
768
|
-
*
|
|
769
|
-
* A React hook for extracting and validating public route parameters.
|
|
770
|
-
* Provides event code extraction and validation for public pages.
|
|
771
|
-
*
|
|
772
|
-
* Features:
|
|
773
|
-
* - URL parameter extraction
|
|
774
|
-
* - Event code validation
|
|
775
|
-
* - TypeScript support
|
|
776
|
-
* - Error handling
|
|
777
|
-
* - Route pattern support
|
|
778
|
-
*
|
|
779
|
-
* @example
|
|
780
|
-
* ```tsx
|
|
781
|
-
* import { usePublicRouteParams } from '@jmruthers/pace-core';
|
|
782
|
-
*
|
|
783
|
-
* function PublicEventPage() {
|
|
784
|
-
* const { eventCode, eventId, event, error, isLoading } = usePublicRouteParams();
|
|
785
|
-
*
|
|
786
|
-
* if (isLoading) return <p>Loading...</p>;
|
|
787
|
-
* if (error) return <p>Error: {error.message}</p>;
|
|
788
|
-
* if (!event) return <p>Event not found</p>;
|
|
789
|
-
*
|
|
790
|
-
* return (
|
|
791
|
-
* <section>
|
|
792
|
-
* <h1>{event.event_name}</h1>
|
|
793
|
-
* <p>Event Code: {eventCode}</p>
|
|
794
|
-
* </section>
|
|
795
|
-
* );
|
|
796
|
-
* }
|
|
797
|
-
* ```
|
|
798
|
-
*
|
|
799
|
-
* @accessibility
|
|
800
|
-
* - No direct accessibility concerns (hook)
|
|
801
|
-
* - Enables accessible route parameter handling
|
|
802
|
-
* - Supports screen reader friendly error states
|
|
803
|
-
*
|
|
804
|
-
* @security
|
|
805
|
-
* - Validates event codes before processing
|
|
806
|
-
* - Sanitizes URL parameters
|
|
807
|
-
* - No sensitive information exposed
|
|
808
|
-
* - Rate limiting applied at route level
|
|
809
|
-
*
|
|
810
|
-
* @performance
|
|
811
|
-
* - Minimal re-renders with stable references
|
|
812
|
-
* - Efficient parameter extraction
|
|
813
|
-
* - Caching integration
|
|
814
|
-
*
|
|
815
|
-
* @dependencies
|
|
816
|
-
* - React 19+ - Hooks and effects
|
|
817
|
-
* - React Router - URL parameter extraction
|
|
818
|
-
* - Event types - Type definitions
|
|
819
|
-
*/
|
|
820
|
-
|
|
821
|
-
/**
|
|
822
|
-
* Return value of the usePublicRouteParams hook.
|
|
823
|
-
* Provides event code, event ID, event data, loading state, error, and refetch function.
|
|
824
|
-
*/
|
|
825
|
-
interface UsePublicRouteParamsReturn {
|
|
826
|
-
/** The event code from the URL */
|
|
827
|
-
eventCode: string | null;
|
|
828
|
-
/** The event ID (resolved from event code) */
|
|
829
|
-
eventId: string | null;
|
|
830
|
-
/** The full event object */
|
|
831
|
-
event: Event | null;
|
|
832
|
-
/** Whether the route parameters are being processed */
|
|
833
|
-
isLoading: boolean;
|
|
834
|
-
/** Any error that occurred during processing */
|
|
835
|
-
error: Error | null;
|
|
836
|
-
/** Function to manually refetch the event data */
|
|
837
|
-
refetch: () => Promise<void>;
|
|
838
|
-
}
|
|
839
|
-
interface UsePublicRouteParamsOptions {
|
|
840
|
-
/** Whether to automatically fetch event data (default: true) */
|
|
841
|
-
fetchEventData?: boolean;
|
|
842
|
-
/** Custom event code parameter name (default: 'eventCode') */
|
|
843
|
-
eventCodeParam?: string;
|
|
844
|
-
/** Whether to validate event code format (default: true) */
|
|
845
|
-
validateEventCode?: boolean;
|
|
846
|
-
}
|
|
847
|
-
/**
|
|
848
|
-
* Hook for extracting and validating public route parameters
|
|
849
|
-
*
|
|
850
|
-
* This hook extracts event codes from URL parameters and optionally
|
|
851
|
-
* fetches the corresponding event data. It provides validation and
|
|
852
|
-
* error handling for public routes.
|
|
853
|
-
*
|
|
854
|
-
* @param options - Configuration options for behavior
|
|
855
|
-
* @returns Object containing route parameters, event data, loading state, error, and refetch function
|
|
856
|
-
*/
|
|
857
|
-
declare function usePublicRouteParams(options?: UsePublicRouteParamsOptions): UsePublicRouteParamsReturn;
|
|
858
|
-
/**
|
|
859
|
-
* Hook for extracting just the event code without fetching event data
|
|
860
|
-
* Useful when you only need the event code and will fetch data separately
|
|
861
|
-
*/
|
|
862
|
-
declare function usePublicEventCode(eventCodeParam?: string): {
|
|
863
|
-
eventCode: string | null;
|
|
864
|
-
error: Error | null;
|
|
865
|
-
};
|
|
866
|
-
/**
|
|
867
|
-
* Utility function to generate public route paths
|
|
868
|
-
*/
|
|
869
|
-
declare function generatePublicRoutePath(eventCode: string, pageName?: string): string;
|
|
870
|
-
/**
|
|
871
|
-
* Utility function to extract event code from a public route path
|
|
872
|
-
* Supports 2-50 character event codes
|
|
873
|
-
*/
|
|
874
|
-
declare function extractEventCodeFromPath(path: string): string | null;
|
|
875
|
-
|
|
876
|
-
export { type UsePublicEventReturn as A, type UsePublicEventOptions as B, type UsePublicFileDisplayReturn as C, type UsePublicFileDisplayOptions as D, type UsePublicEventLogoReturn as E, type UsePublicEventLogoOptions as F, type UsePublicRouteParamsReturn as G, type FileSizeLimits as H, type StorageConfig as I, type StorageFileMetadata as J, type StorageUrlOptions as K, type OrganisationSecurityHook as O, type StorageUploadOptions as S, type UseOrganisationPermissionsReturn as U, type StorageUploadResult as a, type StorageListOptions as b, type StorageListResult as c, type StorageFileInfo as d, useOrganisationPermissions as e, useOrganisationSecurity as f, useZodForm as g, useFormDialog as h, type UseFormDialogOptions as i, type UseFormDialogReturn as j, useAppConfig as k, type UseAppConfigReturn as l, usePublicEvent as m, clearPublicEventCache as n, getPublicEventCacheStats as o, usePublicFileDisplay as p, clearPublicFileDisplayCache as q, getPublicFileDisplayCacheStats as r, usePublicEventLogo as s, clearPublicLogoCache as t, useEventTheme as u, getPublicLogoCacheStats as v, usePublicRouteParams as w, usePublicEventCode as x, generatePublicRoutePath as y, extractEventCodeFromPath as z };
|