@jmruthers/pace-core 0.5.181 → 0.5.182

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (750) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +16 -2
  3. package/dist/{AuthService-DYuQPJj6.d.ts → AuthService-B-cd2MA4.d.ts} +9 -11
  4. package/dist/{DataTable-CWAZZcXC.d.ts → DataTable-Bz8ffqyA.d.ts} +1 -1
  5. package/dist/{DataTable-UA6CL4JI.js → DataTable-QAB34V6K.js} +14 -15
  6. package/dist/UnifiedAuthProvider-7F6T4B6K.js +13 -0
  7. package/dist/{UnifiedAuthProvider-DJxGTftH.d.ts → UnifiedAuthProvider-F86d7dSi.d.ts} +5 -6
  8. package/dist/{api-45XYYO2A.js → api-ROMBCNKU.js} +5 -5
  9. package/dist/{audit-64X3VJXB.js → audit-WRS3KJKI.js} +4 -4
  10. package/dist/auth-BZOJqrdd.d.ts +49 -0
  11. package/dist/{chunk-CX5M4ZAG.js → chunk-5DRSZLL2.js} +1 -1
  12. package/dist/chunk-5DRSZLL2.js.map +1 -0
  13. package/dist/{chunk-BESYRHQM.js → chunk-6C4YBBJM.js} +10 -7
  14. package/dist/chunk-6C4YBBJM.js.map +1 -0
  15. package/dist/{chunk-PLDDJCW6.js → chunk-7D4SUZUM.js} +2 -13
  16. package/dist/{chunk-HRO5HWN2.js → chunk-CSOFYHAG.js} +55 -162
  17. package/dist/chunk-CSOFYHAG.js.map +1 -0
  18. package/dist/{chunk-ANBQRTPX.js → chunk-E66EQZE6.js} +3 -5
  19. package/dist/{chunk-ANBQRTPX.js.map → chunk-E66EQZE6.js.map} +1 -1
  20. package/dist/{chunk-Q5QRDWKI.js → chunk-F2IMUDXZ.js} +4 -6
  21. package/dist/chunk-F2IMUDXZ.js.map +1 -0
  22. package/dist/{chunk-SBVILCCA.js → chunk-FSFQFJCU.js} +28 -6
  23. package/dist/chunk-FSFQFJCU.js.map +1 -0
  24. package/dist/chunk-FUEYYMX5.js +2296 -0
  25. package/dist/chunk-FUEYYMX5.js.map +1 -0
  26. package/dist/{chunk-FFKNH6U5.js → chunk-HKIT6O7W.js} +3 -5
  27. package/dist/{chunk-FFKNH6U5.js.map → chunk-HKIT6O7W.js.map} +1 -1
  28. package/dist/chunk-KQCRWDSA.js +1 -0
  29. package/dist/{chunk-S5OFRT4M.js → chunk-KUEN3HFB.js} +6 -6
  30. package/dist/chunk-KUEN3HFB.js.map +1 -0
  31. package/dist/chunk-LMC26NLJ.js +84 -0
  32. package/dist/chunk-LMC26NLJ.js.map +1 -0
  33. package/dist/{chunk-BVYWGZVV.js → chunk-M7W4CP3M.js} +52 -19
  34. package/dist/chunk-M7W4CP3M.js.map +1 -0
  35. package/dist/{chunk-HZLDFOE4.js → chunk-MI7HBHN3.js} +164 -243
  36. package/dist/chunk-MI7HBHN3.js.map +1 -0
  37. package/dist/{chunk-PPMP5J6T.js → chunk-PWAHJW4G.js} +180 -29
  38. package/dist/chunk-PWAHJW4G.js.map +1 -0
  39. package/dist/chunk-PWLANIRT.js +127 -0
  40. package/dist/{chunk-XDNLUEXI.js.map → chunk-PWLANIRT.js.map} +1 -1
  41. package/dist/chunk-QCDXODCA.js +75 -0
  42. package/dist/chunk-QCDXODCA.js.map +1 -0
  43. package/dist/{chunk-D7LCGMVS.js → chunk-QETLRQI6.js} +526 -887
  44. package/dist/chunk-QETLRQI6.js.map +1 -0
  45. package/dist/{chunk-5MT24GKJ.js → chunk-QUVSNGIP.js} +264 -262
  46. package/dist/chunk-QUVSNGIP.js.map +1 -0
  47. package/dist/chunk-QXHPKYJV.js +113 -0
  48. package/dist/chunk-QXHPKYJV.js.map +1 -0
  49. package/dist/{chunk-OWAG3GSU.js → chunk-R77UEZ4E.js} +11 -1
  50. package/dist/chunk-R77UEZ4E.js.map +1 -0
  51. package/dist/{chunk-ZYTYSTO5.js → chunk-RA3JUFMW.js} +314 -161
  52. package/dist/chunk-RA3JUFMW.js.map +1 -0
  53. package/dist/{chunk-ERISIBYU.js → chunk-SQGMNID3.js} +3 -8
  54. package/dist/chunk-SQGMNID3.js.map +1 -0
  55. package/dist/{chunk-XJ2HZOBU.js → chunk-UHNYIBXL.js} +1 -1
  56. package/dist/chunk-UHNYIBXL.js.map +1 -0
  57. package/{src/utils/secureStorage.ts → dist/chunk-VBXEHIUJ.js} +113 -88
  58. package/dist/{chunk-7QCC6MCP.js.map → chunk-VBXEHIUJ.js.map} +1 -1
  59. package/dist/{chunk-VZ4VDGTB.js → chunk-W22JP75J.js} +5 -13
  60. package/dist/{chunk-VZ4VDGTB.js.map → chunk-W22JP75J.js.map} +1 -1
  61. package/dist/components.d.ts +12 -93
  62. package/dist/components.js +23 -106
  63. package/dist/components.js.map +1 -1
  64. package/dist/core-CUElvH_C.d.ts +164 -0
  65. package/dist/database.generated-CBmg2950.d.ts +8284 -0
  66. package/dist/event-CW5YB_2p.d.ts +239 -0
  67. package/dist/{file-reference-C6Gkn77H.d.ts → file-reference-D06mEEWW.d.ts} +7 -5
  68. package/dist/functions-D_kgHktt.d.ts +208 -0
  69. package/dist/hooks.d.ts +54 -7
  70. package/dist/hooks.js +204 -17
  71. package/dist/hooks.js.map +1 -1
  72. package/dist/{EventLogo-B3V3otev.d.ts → index-Bl--n7-T.d.ts} +387 -397
  73. package/dist/index.d.ts +94 -261
  74. package/dist/index.js +314 -126
  75. package/dist/index.js.map +1 -1
  76. package/dist/providers.d.ts +7 -8
  77. package/dist/providers.js +6 -13
  78. package/dist/rbac/index.d.ts +171 -101
  79. package/dist/rbac/index.js +23 -17
  80. package/dist/styles/index.d.ts +1 -3
  81. package/dist/styles/index.js +2 -17
  82. package/dist/theming/runtime.js +3 -3
  83. package/dist/types-UU913iLA.d.ts +102 -0
  84. package/dist/{types-Dfz9dmVH.d.ts → types-_x1f4QBF.d.ts} +6 -6
  85. package/dist/types.d.ts +88 -227
  86. package/dist/types.js +64 -112
  87. package/dist/types.js.map +1 -1
  88. package/dist/{usePublicRouteParams-B7PabvuH.d.ts → usePublicRouteParams-JJczomYq.d.ts} +203 -6
  89. package/dist/utils.d.ts +299 -13
  90. package/dist/utils.js +481 -55
  91. package/dist/utils.js.map +1 -1
  92. package/dist/validation-643vUDZW.d.ts +177 -0
  93. package/docs/DOCUMENTATION_REVIEW_TRACKER.md +511 -0
  94. package/docs/README.md +9 -8
  95. package/docs/api/README.md +16 -2
  96. package/docs/api/classes/ColumnFactory.md +1 -1
  97. package/docs/api/classes/ErrorBoundary.md +1 -1
  98. package/docs/api/classes/InvalidScopeError.md +4 -4
  99. package/docs/api/classes/MissingUserContextError.md +4 -4
  100. package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
  101. package/docs/api/classes/PermissionDeniedError.md +4 -4
  102. package/docs/api/classes/RBACAuditManager.md +14 -14
  103. package/docs/api/classes/RBACCache.md +1 -1
  104. package/docs/api/classes/RBACEngine.md +2 -2
  105. package/docs/api/classes/RBACError.md +4 -4
  106. package/docs/api/classes/RBACNotInitializedError.md +4 -4
  107. package/docs/api/classes/SecureSupabaseClient.md +29 -9
  108. package/docs/api/classes/StorageUtils.md +1 -1
  109. package/docs/api/enums/FileCategory.md +17 -17
  110. package/docs/api/enums/RBACErrorCode.md +228 -0
  111. package/docs/api/enums/RPCFunction.md +118 -0
  112. package/docs/api/interfaces/AggregateConfig.md +1 -1
  113. package/docs/api/interfaces/BadgeProps.md +1 -1
  114. package/docs/api/interfaces/ButtonProps.md +2 -2
  115. package/docs/api/interfaces/CalendarProps.md +1 -1
  116. package/docs/api/interfaces/CardProps.md +29 -3
  117. package/docs/api/interfaces/ColorPalette.md +1 -1
  118. package/docs/api/interfaces/ColorShade.md +1 -1
  119. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  120. package/docs/api/interfaces/DataRecord.md +1 -1
  121. package/docs/api/interfaces/DataTableAction.md +2 -2
  122. package/docs/api/interfaces/DataTableColumn.md +6 -6
  123. package/docs/api/interfaces/DataTableProps.md +1 -1
  124. package/docs/api/interfaces/DataTableToolbarButton.md +2 -2
  125. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  126. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  127. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  128. package/docs/api/interfaces/ExportColumn.md +5 -5
  129. package/docs/api/interfaces/ExportOptions.md +4 -4
  130. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  131. package/docs/api/interfaces/FileMetadata.md +13 -13
  132. package/docs/api/interfaces/FileReference.md +12 -12
  133. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  134. package/docs/api/interfaces/FileUploadOptions.md +10 -10
  135. package/docs/api/interfaces/FileUploadProps.md +19 -19
  136. package/docs/api/interfaces/FooterProps.md +1 -1
  137. package/docs/api/interfaces/FormFieldProps.md +166 -0
  138. package/docs/api/interfaces/FormProps.md +113 -0
  139. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  140. package/docs/api/interfaces/InactivityWarningModalProps.md +8 -8
  141. package/docs/api/interfaces/InputProps.md +2 -2
  142. package/docs/api/interfaces/LabelProps.md +8 -8
  143. package/docs/api/interfaces/LoginFormProps.md +1 -1
  144. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  145. package/docs/api/interfaces/NavigationContextType.md +1 -1
  146. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  147. package/docs/api/interfaces/NavigationItem.md +17 -73
  148. package/docs/api/interfaces/NavigationMenuProps.md +38 -53
  149. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  150. package/docs/api/interfaces/Organisation.md +13 -13
  151. package/docs/api/interfaces/OrganisationContextType.md +21 -21
  152. package/docs/api/interfaces/OrganisationMembership.md +15 -15
  153. package/docs/api/interfaces/OrganisationProviderProps.md +59 -2
  154. package/docs/api/interfaces/OrganisationSecurityError.md +5 -5
  155. package/docs/api/interfaces/PaceAppLayoutProps.md +26 -39
  156. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  157. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  158. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  159. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  160. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  161. package/docs/api/interfaces/PaletteData.md +1 -1
  162. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  163. package/docs/api/interfaces/ProgressProps.md +50 -0
  164. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  165. package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
  166. package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
  167. package/docs/api/interfaces/PublicPageLayoutProps.md +15 -15
  168. package/docs/api/interfaces/RBACAccessValidateParams.md +52 -0
  169. package/docs/api/interfaces/RBACAccessValidateResult.md +41 -0
  170. package/docs/api/interfaces/RBACAuditLogParams.md +85 -0
  171. package/docs/api/interfaces/RBACAuditLogResult.md +52 -0
  172. package/docs/api/interfaces/RBACConfig.md +2 -2
  173. package/docs/api/interfaces/RBACContext.md +52 -0
  174. package/docs/api/interfaces/RBACLogger.md +1 -1
  175. package/docs/api/interfaces/RBACPageAccessCheckParams.md +74 -0
  176. package/docs/api/interfaces/RBACPermissionCheckParams.md +74 -0
  177. package/docs/api/interfaces/RBACPermissionCheckResult.md +52 -0
  178. package/docs/api/interfaces/RBACPermissionsGetParams.md +63 -0
  179. package/docs/api/interfaces/RBACPermissionsGetResult.md +63 -0
  180. package/docs/api/interfaces/RBACResult.md +58 -0
  181. package/docs/api/interfaces/RBACRoleGrantParams.md +63 -0
  182. package/docs/api/interfaces/RBACRoleGrantResult.md +52 -0
  183. package/docs/api/interfaces/RBACRoleRevokeParams.md +63 -0
  184. package/docs/api/interfaces/RBACRoleRevokeResult.md +52 -0
  185. package/docs/api/interfaces/RBACRoleValidateParams.md +52 -0
  186. package/docs/api/interfaces/RBACRoleValidateResult.md +63 -0
  187. package/docs/api/interfaces/RBACRolesListParams.md +52 -0
  188. package/docs/api/interfaces/RBACRolesListResult.md +74 -0
  189. package/docs/api/interfaces/RBACSessionTrackParams.md +74 -0
  190. package/docs/api/interfaces/RBACSessionTrackResult.md +52 -0
  191. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  192. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  193. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  194. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  195. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  196. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  197. package/docs/api/interfaces/RouteConfig.md +1 -1
  198. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  199. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  200. package/docs/api/interfaces/SessionRestorationLoaderProps.md +15 -2
  201. package/docs/api/interfaces/StorageConfig.md +1 -1
  202. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  203. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  204. package/docs/api/interfaces/StorageListOptions.md +1 -1
  205. package/docs/api/interfaces/StorageListResult.md +1 -1
  206. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  207. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  208. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  209. package/docs/api/interfaces/StyleImport.md +1 -1
  210. package/docs/api/interfaces/SwitchProps.md +1 -1
  211. package/docs/api/interfaces/TabsContentProps.md +1 -1
  212. package/docs/api/interfaces/TabsListProps.md +1 -1
  213. package/docs/api/interfaces/TabsProps.md +1 -1
  214. package/docs/api/interfaces/TabsTriggerProps.md +43 -2
  215. package/docs/api/interfaces/TextareaProps.md +2 -2
  216. package/docs/api/interfaces/ToastActionElement.md +1 -1
  217. package/docs/api/interfaces/ToastProps.md +1 -1
  218. package/docs/api/interfaces/UnifiedAuthContextType.md +61 -61
  219. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  220. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  221. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  222. package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
  223. package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
  224. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  225. package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
  226. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
  227. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  228. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  229. package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
  230. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  231. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  232. package/docs/api/interfaces/UserEventAccess.md +1 -1
  233. package/docs/api/interfaces/UserMenuProps.md +4 -4
  234. package/docs/api/interfaces/UserProfile.md +7 -7
  235. package/docs/api/modules.md +484 -462
  236. package/docs/api-reference/components.md +186 -15
  237. package/docs/api-reference/deprecated.md +376 -0
  238. package/docs/api-reference/hooks.md +149 -19
  239. package/docs/api-reference/providers.md +61 -6
  240. package/docs/api-reference/rpc-functions.md +397 -0
  241. package/docs/api-reference/types.md +135 -78
  242. package/docs/api-reference/utilities.md +51 -380
  243. package/docs/architecture/README.md +49 -3
  244. package/docs/architecture/database-schema-requirements.md +40 -3
  245. package/docs/architecture/rbac-security-architecture.md +41 -4
  246. package/docs/architecture/services.md +127 -42
  247. package/docs/best-practices/README.md +51 -5
  248. package/docs/best-practices/accessibility.md +32 -3
  249. package/docs/best-practices/common-patterns.md +50 -3
  250. package/docs/best-practices/deployment.md +50 -4
  251. package/docs/best-practices/performance.md +50 -3
  252. package/docs/best-practices/security.md +94 -41
  253. package/docs/best-practices/testing.md +33 -4
  254. package/docs/core-concepts/authentication.md +5 -5
  255. package/docs/core-concepts/events.md +3 -3
  256. package/docs/core-concepts/organisations.md +3 -3
  257. package/docs/core-concepts/permissions.md +3 -3
  258. package/docs/core-concepts/rbac-system.md +5 -5
  259. package/docs/documentation-index.md +30 -8
  260. package/docs/getting-started/documentation-index.md +1 -1
  261. package/docs/getting-started/examples/README.md +7 -5
  262. package/docs/getting-started/examples/basic-auth-app.md +3 -0
  263. package/docs/getting-started/examples/full-featured-app.md +5 -3
  264. package/docs/getting-started/faq.md +6 -6
  265. package/docs/getting-started/installation-guide.md +192 -13
  266. package/docs/getting-started/local-development.md +303 -0
  267. package/docs/getting-started/quick-reference.md +3 -3
  268. package/docs/getting-started/quick-start.md +517 -0
  269. package/docs/implementation-guides/app-layout.md +45 -3
  270. package/docs/implementation-guides/authentication.md +66 -7
  271. package/docs/implementation-guides/component-styling.md +53 -3
  272. package/docs/implementation-guides/data-tables.md +76 -7
  273. package/docs/implementation-guides/datatable-filtering.md +1 -2
  274. package/docs/implementation-guides/datatable-rbac-usage.md +0 -1
  275. package/docs/implementation-guides/dynamic-colors.md +155 -4
  276. package/docs/implementation-guides/file-reference-system.md +72 -3
  277. package/docs/implementation-guides/file-upload-storage.md +72 -3
  278. package/docs/implementation-guides/forms.md +53 -3
  279. package/docs/implementation-guides/inactivity-tracking.md +53 -3
  280. package/docs/implementation-guides/large-datasets.md +1 -1
  281. package/docs/implementation-guides/navigation.md +55 -5
  282. package/docs/implementation-guides/organisation-security.md +72 -3
  283. package/docs/implementation-guides/performance.md +57 -1
  284. package/docs/implementation-guides/permission-enforcement.md +81 -8
  285. package/docs/implementation-guides/public-pages.md +560 -14
  286. package/docs/migration/MIGRATION_GUIDE.md +409 -50
  287. package/docs/migration/README.md +37 -3
  288. package/docs/migration/organisation-context-timing-fix.md +39 -4
  289. package/docs/migration/quick-migration-guide.md +41 -5
  290. package/docs/migration/rbac-migration.md +59 -3
  291. package/docs/migration/service-architecture.md +77 -14
  292. package/docs/rbac/README.md +79 -3
  293. package/docs/rbac/advanced-patterns.md +47 -3
  294. package/docs/rbac/api-reference.md +77 -8
  295. package/docs/rbac/event-based-apps.md +50 -5
  296. package/docs/rbac/examples/rbac-rls-integration-example.md +3 -3
  297. package/docs/rbac/examples.md +39 -3
  298. package/docs/rbac/getting-started.md +63 -4
  299. package/docs/rbac/quick-start.md +57 -5
  300. package/docs/rbac/rbac-rls-integration.md +68 -6
  301. package/docs/rbac/super-admin-guide.md +47 -3
  302. package/docs/rbac/troubleshooting.md +3 -3
  303. package/docs/security/README.md +68 -3
  304. package/docs/security/checklist.md +50 -3
  305. package/docs/standards/01-architecture-standard.md +39 -0
  306. package/docs/standards/02-api-and-rpc-standard.md +39 -0
  307. package/docs/standards/03-component-standard.md +32 -0
  308. package/docs/standards/04-code-style-standard.md +32 -0
  309. package/docs/standards/05-security-standard.md +30 -0
  310. package/docs/standards/06-testing-and-docs-standard.md +29 -0
  311. package/docs/standards/README.md +35 -0
  312. package/docs/styles/README.md +89 -8
  313. package/docs/testing/README.md +175 -24
  314. package/docs/troubleshooting/README.md +50 -3
  315. package/docs/troubleshooting/common-issues.md +271 -5
  316. package/docs/troubleshooting/debugging.md +54 -1
  317. package/docs/troubleshooting/migration.md +54 -1
  318. package/docs/troubleshooting/organisation-context-setup.md +29 -3
  319. package/docs/troubleshooting/styling-issues.md +246 -4
  320. package/{src/components/DataTable/examples → examples/DataTable}/GroupingAggregationExample.tsx +1 -1
  321. package/examples/{components 2/DataTable/HierarchicalActionsExample.tsx → DataTable/HierarchicalActionsExample.tsx} +7 -6
  322. package/{src/components/DataTable/examples → examples/DataTable}/HierarchicalExample.tsx +8 -6
  323. package/examples/{components 2/DataTable/PerformanceExample.tsx → DataTable/PerformanceExample.tsx} +2 -2
  324. package/examples/{components 2/DataTable/index.ts → DataTable/index.ts} +1 -0
  325. package/{src/components/Dialog/examples → examples/Dialog}/HtmlDialogExample.tsx +3 -3
  326. package/examples/{components 2/Dialog/ScrollableDialogExample.tsx → Dialog/ScrollableDialogExample.tsx} +1 -1
  327. package/{src/components/Dialog/examples → examples/Dialog}/SmartDialogExample.tsx +1 -1
  328. package/examples/{components 2/Dialog/index.ts → Dialog/index.ts} +0 -3
  329. package/examples/{features/public-pages → PublicPages}/CorrectPublicPageImplementation.tsx +52 -17
  330. package/examples/{features/public-pages → PublicPages}/PublicEventPage.tsx +65 -35
  331. package/examples/{features/public-pages → PublicPages}/PublicPageApp.tsx +52 -18
  332. package/examples/{features/public-pages → PublicPages}/PublicPageUsageExample.tsx +28 -15
  333. package/examples/README.md +81 -33
  334. package/examples/index.ts +14 -12
  335. package/examples/{RBAC → rbac}/CompleteRBACExample.tsx +1 -1
  336. package/examples/{features/rbac → rbac}/EventBasedApp.tsx +4 -4
  337. package/examples/{features/rbac → rbac}/PermissionExample.tsx +5 -3
  338. package/package.json +21 -27
  339. package/src/__tests__/helpers/test-utils.tsx +29 -3
  340. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +7 -5
  341. package/src/components/Alert/Alert.test.tsx +2 -2
  342. package/src/components/Alert/Alert.tsx +4 -4
  343. package/src/components/Avatar/Avatar.test.tsx +17 -6
  344. package/src/components/Badge/Badge.test.tsx +1 -1
  345. package/src/components/Badge/Badge.tsx +2 -2
  346. package/src/components/Button/Button.test.tsx +2 -2
  347. package/src/components/Button/Button.tsx +11 -7
  348. package/src/components/Calendar/Calendar.test.tsx +41 -8
  349. package/src/components/Calendar/Calendar.tsx +39 -36
  350. package/src/components/Card/Card.tsx +51 -13
  351. package/src/components/Checkbox/Checkbox.test.tsx +36 -12
  352. package/src/components/DataTable/DataTable.test.tsx +1 -1
  353. package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +13 -7
  354. package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +14 -42
  355. package/src/components/DataTable/__tests__/DataTable.export.test.tsx +13 -10
  356. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +14 -11
  357. package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +4 -2
  358. package/src/components/DataTable/__tests__/DataTable.test.tsx +13 -7
  359. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +13 -10
  360. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +15 -11
  361. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +12 -6
  362. package/src/components/DataTable/__tests__/keyboard.test.tsx +12 -6
  363. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +10 -6
  364. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +1 -1
  365. package/src/components/DataTable/components/DataTableBody.tsx +10 -25
  366. package/src/components/DataTable/components/DataTableCore.tsx +1 -1
  367. package/src/components/DataTable/components/FilterRow.tsx +3 -1
  368. package/src/components/DataTable/components/ImportModal.tsx +1 -1
  369. package/src/components/DataTable/components/VirtualizedDataTable.tsx +9 -9
  370. package/src/components/DataTable/core/ColumnFactory.ts +6 -6
  371. package/src/components/DataTable/core/DataTableContext.tsx +14 -10
  372. package/src/components/DataTable/core/LocalDataAdapter.ts +2 -1
  373. package/src/components/DataTable/core/PluginRegistry.ts +3 -3
  374. package/src/components/DataTable/core/StateManager.ts +12 -11
  375. package/src/components/DataTable/core/__tests__/ActionManager.test.ts +104 -0
  376. package/src/components/DataTable/core/__tests__/DataManager.test.ts +101 -0
  377. package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +84 -0
  378. package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +102 -0
  379. package/src/components/DataTable/core/__tests__/StateManager.test.ts +104 -0
  380. package/src/components/DataTable/core/interfaces.ts +17 -17
  381. package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +124 -0
  382. package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +117 -0
  383. package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +102 -0
  384. package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +53 -0
  385. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -2
  386. package/src/components/DataTable/hooks/useDataTablePermissions.ts +9 -8
  387. package/src/components/DataTable/types.ts +5 -5
  388. package/src/components/DataTable/utils/aggregationUtils.ts +4 -4
  389. package/src/components/DataTable/utils/columnUtils.ts +3 -2
  390. package/src/components/DataTable/utils/debugTools.ts +1 -1
  391. package/src/components/DataTable/utils/exportUtils.ts +6 -6
  392. package/src/components/DataTable/utils/hierarchicalSorting.ts +6 -6
  393. package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -8
  394. package/src/components/DataTable/utils/index.ts +0 -1
  395. package/src/components/DataTable/utils/performanceUtils.ts +9 -4
  396. package/src/components/Dialog/Dialog.test.tsx +49 -27
  397. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +13 -8
  398. package/src/components/EventSelector/EventSelector.test.tsx +60 -12
  399. package/src/components/EventSelector/EventSelector.tsx +38 -15
  400. package/src/components/EventSelector/index.ts +2 -2
  401. package/src/components/FileDisplay/FileDisplay.test.tsx +143 -85
  402. package/src/components/FileDisplay/FileDisplay.tsx +1 -0
  403. package/src/components/FileUpload/FileUpload.test.tsx +532 -152
  404. package/src/components/FileUpload/FileUpload.tsx +43 -8
  405. package/src/components/Footer/Footer.test.tsx +19 -14
  406. package/src/components/Form/Form.test.tsx +96 -14
  407. package/src/components/Form/Form.tsx +210 -1
  408. package/src/components/Form/index.ts +3 -7
  409. package/src/components/Header/Header.test.tsx +24 -17
  410. package/src/components/Header/Header.tsx +3 -1
  411. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +2 -4
  412. package/src/components/Input/Input.test.tsx +61 -36
  413. package/src/components/Label/{__tests__/Label.test.tsx → Label.test.tsx} +2 -2
  414. package/src/components/Label/Label.tsx +2 -3
  415. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +6 -5
  416. package/src/components/LoadingSpinner/LoadingSpinner.tsx +6 -2
  417. package/src/components/LoginForm/LoginForm.test.tsx +14 -13
  418. package/src/components/LoginForm/LoginForm.tsx +1 -1
  419. package/src/components/LoginForm/index.ts +7 -0
  420. package/src/components/NavigationMenu/NavigationMenu.test.tsx +233 -20
  421. package/src/components/NavigationMenu/NavigationMenu.tsx +191 -55
  422. package/src/components/NavigationMenu/index.ts +1 -1
  423. package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +20 -11
  424. package/src/components/OrganisationSelector/OrganisationSelector.tsx +1 -1
  425. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.integration.test.tsx → PaceAppLayout.integration.test.tsx} +272 -79
  426. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.performance.test.tsx → PaceAppLayout.performance.test.tsx} +155 -32
  427. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.security.test.tsx → PaceAppLayout.security.test.tsx} +211 -65
  428. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +498 -210
  429. package/src/components/PaceAppLayout/PaceAppLayout.tsx +63 -64
  430. package/src/components/PaceAppLayout/test-setup.tsx +192 -0
  431. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +193 -39
  432. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.test.tsx +2 -2
  433. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.tsx +10 -4
  434. package/src/components/PasswordChange/index.ts +2 -0
  435. package/src/components/Progress/Progress.test.tsx +11 -0
  436. package/src/components/Progress/Progress.tsx +1 -1
  437. package/src/components/Progress/index.ts +10 -0
  438. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +2 -1
  439. package/src/components/PublicLayout/PublicLayout.test.tsx +1210 -0
  440. package/src/components/PublicLayout/PublicPageLayout.tsx +190 -36
  441. package/src/components/PublicLayout/PublicPageProvider.tsx +8 -7
  442. package/src/components/PublicLayout/index.ts +10 -28
  443. package/src/components/Select/Select.test.tsx +7 -7
  444. package/src/components/Select/Select.tsx +277 -11
  445. package/src/components/Select/index.ts +1 -2
  446. package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +232 -0
  447. package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +40 -19
  448. package/src/components/Table/{__tests__/Table.test.tsx → Table.test.tsx} +94 -41
  449. package/src/components/Tabs/Tabs.test.tsx +10 -9
  450. package/src/components/Tabs/Tabs.tsx +61 -33
  451. package/src/components/Textarea/Textarea.test.tsx +31 -18
  452. package/src/components/Toast/Toast.tsx +2 -2
  453. package/src/components/Tooltip/Tooltip.test.tsx +1 -1
  454. package/src/components/UserMenu/UserMenu.test.tsx +7 -6
  455. package/src/components/UserMenu/UserMenu.tsx +2 -2
  456. package/src/components/index.ts +5 -4
  457. package/src/constants/performance.ts +19 -8
  458. package/src/hooks/__tests__/useAppConfig.unit.test.ts +21 -22
  459. package/src/hooks/__tests__/useEvents.unit.test.ts +5 -4
  460. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +2 -2
  461. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -0
  462. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +16 -11
  463. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +1 -3
  464. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +1 -3
  465. package/src/hooks/__tests__/useRBAC.unit.test.ts +24 -2
  466. package/src/hooks/index.ts +4 -0
  467. package/src/hooks/public/index.ts +2 -0
  468. package/src/hooks/public/usePublicEvent.ts +4 -6
  469. package/src/hooks/public/usePublicRouteParams.ts +1 -1
  470. package/src/hooks/services/useAuth.ts +2 -4
  471. package/src/hooks/services/useCurrentEvent.ts +1 -1
  472. package/src/hooks/useAppConfig.ts +1 -1
  473. package/src/hooks/useDataTablePerformance.ts +2 -2
  474. package/src/hooks/useEventTheme.ts +1 -1
  475. package/src/hooks/useEvents.ts +51 -10
  476. package/src/hooks/useOrganisationPermissions.test.ts +3 -3
  477. package/src/hooks/useOrganisationPermissions.ts +1 -1
  478. package/src/hooks/useOrganisationSecurity.ts +2 -2
  479. package/src/hooks/usePermissionCache.test.ts +9 -9
  480. package/src/hooks/usePermissionCache.ts +2 -2
  481. package/src/index.ts +19 -12
  482. package/src/providers/OrganisationProvider.tsx +73 -9
  483. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
  484. package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
  485. package/src/providers/__tests__/EventProvider.test.tsx +24 -15
  486. package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
  487. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
  488. package/src/providers/index.ts +0 -3
  489. package/src/providers/services/AuthServiceProvider.tsx +2 -17
  490. package/src/providers/services/EventServiceProvider.tsx +11 -16
  491. package/src/providers/services/InactivityServiceProvider.tsx +9 -12
  492. package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
  493. package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
  494. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
  495. package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
  496. package/src/rbac/adapters.tsx +1 -1
  497. package/src/rbac/api.ts +20 -4
  498. package/src/rbac/audit-enhanced.ts +47 -2
  499. package/src/rbac/audit.ts +47 -2
  500. package/src/rbac/components/NavigationGuard.tsx +1 -1
  501. package/src/rbac/components/NavigationProvider.test.tsx +7 -6
  502. package/src/rbac/components/NavigationProvider.tsx +1 -1
  503. package/src/rbac/components/PagePermissionGuard.tsx +1 -1
  504. package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
  505. package/src/rbac/components/PagePermissionProvider.tsx +1 -1
  506. package/src/rbac/components/PermissionEnforcer.tsx +1 -1
  507. package/src/rbac/components/RoleBasedRouter.tsx +1 -1
  508. package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
  509. package/src/rbac/components/SecureDataProvider.tsx +1 -1
  510. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
  511. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
  512. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
  513. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
  514. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
  515. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
  516. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
  517. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
  518. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
  519. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
  520. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
  521. package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
  522. package/src/rbac/hooks/index.ts +3 -0
  523. package/src/rbac/hooks/usePermissions.ts +31 -85
  524. package/src/rbac/hooks/useRBAC.test.ts +13 -1
  525. package/src/rbac/hooks/useRBAC.ts +13 -67
  526. package/src/rbac/hooks/useResolvedScope.ts +11 -0
  527. package/src/rbac/hooks/useSecureSupabase.ts +308 -0
  528. package/src/rbac/index.ts +3 -0
  529. package/src/rbac/secureClient.ts +53 -6
  530. package/src/rbac/security.ts +37 -1
  531. package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
  532. package/src/rbac/types.ts +3 -2
  533. package/src/services/AuthService.ts +33 -25
  534. package/src/services/EventService.ts +56 -44
  535. package/src/services/InactivityService.ts +33 -53
  536. package/src/services/OrganisationService.ts +36 -40
  537. package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
  538. package/src/services/__tests__/EventService.test.ts +67 -33
  539. package/src/services/interfaces/IEventService.ts +1 -1
  540. package/src/styles/core.css +2 -2
  541. package/src/styles/index.ts +1 -5
  542. package/src/types/__tests__/guards.test.ts +1 -1
  543. package/src/types/__tests__/type-validation.test.ts +0 -1
  544. package/src/types/auth.ts +42 -2
  545. package/src/types/core.ts +251 -0
  546. package/src/types/database.ts +11 -496
  547. package/src/types/event.ts +102 -0
  548. package/src/types/file-reference.ts +6 -4
  549. package/src/types/guards.ts +2 -1
  550. package/src/types/index.ts +48 -14
  551. package/src/types/lodash.debounce.d.ts +15 -0
  552. package/src/types/organisation.ts +14 -10
  553. package/src/types/supabase.ts +15 -17
  554. package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
  555. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
  556. package/src/utils/app/appNameResolver.ts +1 -1
  557. package/src/utils/dynamic/dynamicUtils.ts +3 -2
  558. package/src/utils/file-reference/index.ts +25 -6
  559. package/src/utils/security/secureErrors.ts +1 -1
  560. package/src/utils/validation/index.ts +6 -12
  561. package/src/utils/validation/validationUtils.ts +0 -13
  562. package/dist/UnifiedAuthProvider-B37ATQHE.js +0 -16
  563. package/dist/auth-DReDSLq9.d.ts +0 -16
  564. package/dist/chunk-3JI76CYK.js +0 -2444
  565. package/dist/chunk-3JI76CYK.js.map +0 -1
  566. package/dist/chunk-56XJ3TU6.js +0 -11
  567. package/dist/chunk-56XJ3TU6.js.map +0 -1
  568. package/dist/chunk-5MT24GKJ.js.map +0 -1
  569. package/dist/chunk-7QCC6MCP.js +0 -288
  570. package/dist/chunk-BESYRHQM.js.map +0 -1
  571. package/dist/chunk-BJPBT3CU.js +0 -21
  572. package/dist/chunk-BJPBT3CU.js.map +0 -1
  573. package/dist/chunk-BVYWGZVV.js.map +0 -1
  574. package/dist/chunk-CX5M4ZAG.js.map +0 -1
  575. package/dist/chunk-D7LCGMVS.js.map +0 -1
  576. package/dist/chunk-EGI6MUL6.js +0 -27
  577. package/dist/chunk-EGI6MUL6.js.map +0 -1
  578. package/dist/chunk-ERISIBYU.js.map +0 -1
  579. package/dist/chunk-HRO5HWN2.js.map +0 -1
  580. package/dist/chunk-HZLDFOE4.js.map +0 -1
  581. package/dist/chunk-JISYG63F.js +0 -70
  582. package/dist/chunk-JISYG63F.js.map +0 -1
  583. package/dist/chunk-LIMSTKYD.js +0 -61
  584. package/dist/chunk-LIMSTKYD.js.map +0 -1
  585. package/dist/chunk-OWAG3GSU.js.map +0 -1
  586. package/dist/chunk-PPMP5J6T.js.map +0 -1
  587. package/dist/chunk-Q5QRDWKI.js.map +0 -1
  588. package/dist/chunk-S5OFRT4M.js.map +0 -1
  589. package/dist/chunk-SBVILCCA.js.map +0 -1
  590. package/dist/chunk-TUMEWN34.js +0 -15
  591. package/dist/chunk-TUMEWN34.js.map +0 -1
  592. package/dist/chunk-XDNLUEXI.js +0 -138
  593. package/dist/chunk-XJ2HZOBU.js.map +0 -1
  594. package/dist/chunk-ZYTYSTO5.js.map +0 -1
  595. package/dist/chunk-ZZ2SS7NI.js +0 -237
  596. package/dist/chunk-ZZ2SS7NI.js.map +0 -1
  597. package/dist/database-C6jy7EOu.d.ts +0 -500
  598. package/dist/organisation-D6qRDtbF.d.ts +0 -93
  599. package/dist/schema-DTDZQe2u.d.ts +0 -28
  600. package/dist/unified-DQ4VcT7H.d.ts +0 -198
  601. package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
  602. package/dist/validation.d.ts +0 -47
  603. package/dist/validation.js +0 -24
  604. package/dist/validation.js.map +0 -1
  605. package/docs/DOCUMENTATION_AUDIT.md +0 -172
  606. package/docs/DOCUMENTATION_STANDARD.md +0 -137
  607. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  608. package/docs/api/interfaces/EventLogoProps.md +0 -152
  609. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  610. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  611. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  612. package/docs/architecture/rpc-function-standards.md +0 -1106
  613. package/docs/getting-started/consuming-app-vite-config.md +0 -239
  614. package/docs/implementation-guides/event-theming-summary.md +0 -226
  615. package/docs/implementation-guides/public-pages-advanced.md +0 -1038
  616. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
  617. package/docs/migration/v0.4.16-css-first-approach.md +0 -312
  618. package/docs/migration/v0.4.17-source-path-fix.md +0 -235
  619. package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
  620. package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
  621. package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
  622. package/docs/rbac/README-rbac-rls-integration.md +0 -374
  623. package/docs/styles/usage.md +0 -227
  624. package/docs/testing/visual-testing.md +0 -120
  625. package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
  626. package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
  627. package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
  628. package/docs/troubleshooting/database-view-compatibility.md +0 -125
  629. package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
  630. package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
  631. package/examples/RBAC/EventBasedApp.tsx +0 -239
  632. package/examples/RBAC/PermissionExample.tsx +0 -151
  633. package/examples/STRUCTURE.md +0 -125
  634. package/examples/components 2/DataTable/HierarchicalExample.tsx +0 -475
  635. package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
  636. package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
  637. package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
  638. package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
  639. package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
  640. package/examples/components 2/index.ts +0 -11
  641. package/examples/features/index.ts +0 -12
  642. package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
  643. package/examples/features/rbac/index.ts +0 -13
  644. package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
  645. package/examples/public-pages/PublicEventPage.tsx +0 -274
  646. package/examples/public-pages/PublicPageApp.tsx +0 -308
  647. package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
  648. package/examples/public-pages/index.ts +0 -14
  649. package/src/__tests__/TEST_STANDARD.md +0 -1008
  650. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  651. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
  652. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
  653. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
  654. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
  655. package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
  656. package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
  657. package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
  658. package/src/components/Dialog/README.md +0 -804
  659. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  660. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  661. package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
  662. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  663. package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
  664. package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
  665. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
  666. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  667. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  668. package/src/components/EventSelector/types.ts +0 -79
  669. package/src/components/Form/FormErrorSummary.tsx +0 -113
  670. package/src/components/Form/FormField.tsx +0 -249
  671. package/src/components/Form/FormFieldset.tsx +0 -127
  672. package/src/components/Form/FormLiveRegion.tsx +0 -198
  673. package/src/components/Input/__mocks__/Input.tsx +0 -2
  674. package/src/components/NavigationMenu/types.ts +0 -85
  675. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
  676. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
  677. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  678. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  679. package/src/components/PasswordReset/index.ts +0 -2
  680. package/src/components/ProtectedRoute/README.md +0 -164
  681. package/src/components/PublicLayout/EventLogo.tsx +0 -175
  682. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
  683. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
  684. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
  685. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  686. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  687. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  688. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
  689. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
  690. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
  691. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
  692. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
  693. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
  694. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
  695. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
  696. package/src/components/Select/hooks.ts +0 -289
  697. package/src/hooks/useCounter.test.ts +0 -131
  698. package/src/hooks/useDebounce.test.ts +0 -375
  699. package/src/providers/AuthProvider.tsx +0 -15
  700. package/src/providers/EventProvider.tsx +0 -16
  701. package/src/providers/InactivityProvider.tsx +0 -15
  702. package/src/providers/OrganisationProvider.context.test.tsx +0 -169
  703. package/src/providers/UnifiedAuthProvider.tsx +0 -15
  704. package/src/types/theme.ts +0 -6
  705. package/src/types/unified.ts +0 -265
  706. package/src/utils/appConfig.ts +0 -47
  707. package/src/utils/appIdResolver.test.ts +0 -499
  708. package/src/utils/appIdResolver.ts +0 -130
  709. package/src/utils/appNameResolver.simple.test.ts +0 -212
  710. package/src/utils/appNameResolver.test.ts +0 -121
  711. package/src/utils/appNameResolver.ts +0 -191
  712. package/src/utils/audit.ts +0 -127
  713. package/src/utils/auth-utils.ts +0 -96
  714. package/src/utils/bundleAnalysis.ts +0 -129
  715. package/src/utils/debugLogger.ts +0 -67
  716. package/src/utils/deviceFingerprint.ts +0 -215
  717. package/src/utils/dynamicUtils.ts +0 -105
  718. package/src/utils/file-reference.test.ts +0 -788
  719. package/src/utils/file-reference.ts +0 -519
  720. package/src/utils/formatDate.test.ts +0 -237
  721. package/src/utils/formatting.ts +0 -170
  722. package/src/utils/lazyLoad.tsx +0 -44
  723. package/src/utils/logger.ts +0 -179
  724. package/src/utils/organisationContext.test.ts +0 -322
  725. package/src/utils/organisationContext.ts +0 -153
  726. package/src/utils/performanceBenchmark.ts +0 -64
  727. package/src/utils/performanceBudgets.ts +0 -110
  728. package/src/utils/permissionTypes.ts +0 -37
  729. package/src/utils/permissionUtils.test.ts +0 -393
  730. package/src/utils/permissionUtils.ts +0 -34
  731. package/src/utils/sanitization.ts +0 -264
  732. package/src/utils/schemaUtils.ts +0 -37
  733. package/src/utils/secureDataAccess.test.ts +0 -711
  734. package/src/utils/secureDataAccess.ts +0 -377
  735. package/src/utils/secureErrors.ts +0 -79
  736. package/src/utils/security.ts +0 -156
  737. package/src/utils/securityMonitor.ts +0 -45
  738. package/src/utils/sessionTracking.ts +0 -126
  739. package/src/utils/validation.ts +0 -111
  740. package/src/utils/validationUtils.ts +0 -120
  741. package/src/validation/index.ts +0 -12
  742. /package/dist/{DataTable-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
  743. /package/dist/{UnifiedAuthProvider-B37ATQHE.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
  744. /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
  745. /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
  746. /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
  747. /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
  748. /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
  749. /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
  750. /package/examples/{RBAC → rbac}/index.ts +0 -0
package/src/rbac/audit.ts CHANGED
@@ -14,6 +14,7 @@ import {
14
14
  AuditEventSource,
15
15
  RBACAuditEvent
16
16
  } from './types';
17
+ import type { AuditEventType } from './types/functions';
17
18
  import { logger } from '../utils/core/logger';
18
19
 
19
20
  /**
@@ -337,10 +338,32 @@ export class RBACAuditManager {
337
338
  .limit(limit);
338
339
 
339
340
  if (error) {
341
+ // Detect CORS errors (they typically have null status or specific error codes)
342
+ const isCorsError =
343
+ error.message?.toLowerCase().includes('cors') ||
344
+ error.message?.toLowerCase().includes('cross-origin') ||
345
+ error.code === null ||
346
+ (error as any).status === null;
347
+
348
+ if (isCorsError) {
349
+ const corsError = new Error(
350
+ `CORS error when querying audit events. This is a Supabase configuration issue. ` +
351
+ `Please configure CORS in your Supabase Dashboard: Settings → API → CORS. ` +
352
+ `Add your app's origin (e.g., http://localhost:8087) to the allowed origins list. ` +
353
+ `Original error: ${error.message || 'CORS request did not succeed'}`
354
+ );
355
+ (corsError as any).isCorsError = true;
356
+ (corsError as any).originalError = error;
357
+ throw corsError;
358
+ }
359
+
340
360
  throw new Error(`Failed to get audit events: ${error.message}`);
341
361
  }
342
362
 
343
- return data || [];
363
+ return (data || []).map(event => ({
364
+ ...event,
365
+ event_type: event.event_type as AuditEventType
366
+ })) as RBACAuditEvent[];
344
367
  }
345
368
 
346
369
  /**
@@ -359,10 +382,32 @@ export class RBACAuditManager {
359
382
  .limit(limit);
360
383
 
361
384
  if (error) {
385
+ // Detect CORS errors (they typically have null status or specific error codes)
386
+ const isCorsError =
387
+ error.message?.toLowerCase().includes('cors') ||
388
+ error.message?.toLowerCase().includes('cross-origin') ||
389
+ error.code === null ||
390
+ (error as any).status === null;
391
+
392
+ if (isCorsError) {
393
+ const corsError = new Error(
394
+ `CORS error when querying audit events. This is a Supabase configuration issue. ` +
395
+ `Please configure CORS in your Supabase Dashboard: Settings → API → CORS. ` +
396
+ `Add your app's origin (e.g., http://localhost:8087) to the allowed origins list. ` +
397
+ `Original error: ${error.message || 'CORS request did not succeed'}`
398
+ );
399
+ (corsError as any).isCorsError = true;
400
+ (corsError as any).originalError = error;
401
+ throw corsError;
402
+ }
403
+
362
404
  throw new Error(`Failed to get audit events: ${error.message}`);
363
405
  }
364
406
 
365
- return data || [];
407
+ return (data || []).map(event => ({
408
+ ...event,
409
+ event_type: event.event_type as AuditEventType
410
+ })) as RBACAuditEvent[];
366
411
  }
367
412
  }
368
413
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  import React, { useMemo, useCallback, useEffect, useState } from 'react';
68
68
  import { useMultiplePermissions } from '../hooks/usePermissions';
69
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
69
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
70
70
  import { UUID, Permission, Scope } from '../types';
71
71
  import { createScopeFromEvent } from '../utils/eventContext';
72
72
  import { NavigationItem } from './NavigationProvider';
@@ -11,12 +11,14 @@ import { render, screen, waitFor } from '@testing-library/react';
11
11
  import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
12
12
  import React, { ReactNode } from 'react';
13
13
  import { NavigationProvider, useNavigationPermissions, NavigationItem } from './NavigationProvider';
14
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
14
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
15
15
  import { UUID, Scope, Permission } from '../types';
16
16
 
17
17
  // Mock the auth provider
18
- vi.mock('../../providers/UnifiedAuthProvider', () => ({
19
- useUnifiedAuth: vi.fn()
18
+ const mockUseUnifiedAuthFn = vi.fn();
19
+ vi.mock('../../providers/services/UnifiedAuthProvider', () => ({
20
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
21
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
20
22
  }));
21
23
 
22
24
  // Mock the RBAC hooks
@@ -69,12 +71,11 @@ const TestComponent = ({ children }: { children: ReactNode }) => (
69
71
  );
70
72
 
71
73
  describe('NavigationProvider', () => {
72
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
73
74
  const mockUseCan = vi.mocked(useCan);
74
75
 
75
76
  beforeEach(() => {
76
77
  vi.clearAllMocks();
77
- mockUseUnifiedAuth.mockReturnValue({
78
+ mockUseUnifiedAuthFn.mockReturnValue({
78
79
  user: mockUser,
79
80
  isAuthenticated: true,
80
81
  signOut: vi.fn(),
@@ -354,7 +355,7 @@ describe('NavigationProvider', () => {
354
355
  });
355
356
 
356
357
  it('handles missing user context gracefully', async () => {
357
- mockUseUnifiedAuth.mockReturnValue({
358
+ mockUseUnifiedAuthFn.mockReturnValue({
358
359
  user: null,
359
360
  isAuthenticated: false,
360
361
  signOut: vi.fn(),
@@ -55,7 +55,7 @@
55
55
  */
56
56
 
57
57
  import React, { createContext, useContext, useState, useCallback, useMemo, useEffect } from 'react';
58
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
58
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
59
59
  import { useCan } from '../hooks';
60
60
  import { UUID, Scope, Permission } from '../types';
61
61
  import { getRBACLogger } from '../config';
@@ -69,7 +69,7 @@
69
69
 
70
70
  import React, { useMemo, useCallback, useEffect, useState, useRef } from 'react';
71
71
  import { useCan } from '../hooks';
72
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
72
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
73
73
  import { UUID, Permission, Scope } from '../types';
74
74
  import { createScopeFromEvent } from '../utils/eventContext';
75
75
  import { getCurrentAppName } from '../../utils/app/appNameResolver';
@@ -11,12 +11,14 @@ import { render, screen, waitFor } from '@testing-library/react';
11
11
  import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
12
12
  import React, { ReactNode } from 'react';
13
13
  import { PagePermissionProvider, usePagePermissions } from './PagePermissionProvider';
14
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
14
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
15
15
  import { UUID, Scope, Permission } from '../types';
16
16
 
17
17
  // Mock the auth provider
18
- vi.mock('../../providers/UnifiedAuthProvider', () => ({
19
- useUnifiedAuth: vi.fn()
18
+ const mockUseUnifiedAuthFn = vi.fn();
19
+ vi.mock('../../providers/services/UnifiedAuthProvider', () => ({
20
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
21
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
20
22
  }));
21
23
 
22
24
  // Mock the RBAC hooks
@@ -47,12 +49,11 @@ const TestComponent = ({ children }: { children: ReactNode }) => (
47
49
  );
48
50
 
49
51
  describe('PagePermissionProvider', () => {
50
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
51
52
  const mockUseCan = vi.mocked(useCan);
52
53
 
53
54
  beforeEach(() => {
54
55
  vi.clearAllMocks();
55
- mockUseUnifiedAuth.mockReturnValue({
56
+ mockUseUnifiedAuthFn.mockReturnValue({
56
57
  user: mockUser,
57
58
  isAuthenticated: true,
58
59
  signOut: vi.fn(),
@@ -383,7 +384,7 @@ describe('PagePermissionProvider', () => {
383
384
  });
384
385
 
385
386
  it('handles missing user context gracefully', async () => {
386
- mockUseUnifiedAuth.mockReturnValue({
387
+ mockUseUnifiedAuthFn.mockReturnValue({
387
388
  user: null,
388
389
  isAuthenticated: false,
389
390
  signOut: vi.fn(),
@@ -55,7 +55,7 @@
55
55
  */
56
56
 
57
57
  import React, { createContext, useContext, useState, useCallback, useMemo, useEffect } from 'react';
58
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
58
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
59
59
  import { UUID, Scope, Permission } from '../types';
60
60
  import { createLogger } from '../../utils/core/logger';
61
61
 
@@ -68,7 +68,7 @@
68
68
 
69
69
  import React, { useMemo, useCallback, useEffect, useState } from 'react';
70
70
  import { useMultiplePermissions } from '../hooks/usePermissions';
71
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
71
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
72
72
  import { UUID, Permission, Scope } from '../types';
73
73
  import { createScopeFromEvent } from '../utils/eventContext';
74
74
  import { getRBACLogger } from '../config';
@@ -66,7 +66,7 @@
66
66
  import React, { useMemo, useCallback, useEffect, useState, createContext, useContext } from 'react';
67
67
  import { useLocation, useNavigate, Outlet } from 'react-router-dom';
68
68
  import { useCan } from '../hooks';
69
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
69
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
70
70
  import { UUID, Permission, Scope, AccessLevel } from '../types';
71
71
  import { getRBACLogger } from '../config';
72
72
 
@@ -11,13 +11,15 @@ import { render, screen, waitFor } from '@testing-library/react';
11
11
  import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
12
12
  import React, { ReactNode } from 'react';
13
13
  import { SecureDataProvider, useSecureData } from './SecureDataProvider';
14
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
14
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
15
15
  import { useSecureDataAccess } from '../../hooks/useSecureDataAccess';
16
16
  import { UUID, Scope, Permission } from '../types';
17
17
 
18
18
  // Mock the auth provider
19
- vi.mock('../../providers/UnifiedAuthProvider', () => ({
20
- useUnifiedAuth: vi.fn()
19
+ const mockUseUnifiedAuthFn = vi.fn();
20
+ vi.mock('../../providers/services/UnifiedAuthProvider', () => ({
21
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
22
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
21
23
  }));
22
24
 
23
25
  // Mock the secure data access hook
@@ -53,13 +55,12 @@ const TestComponent = ({ children }: { children: ReactNode }) => (
53
55
  );
54
56
 
55
57
  describe('SecureDataProvider', () => {
56
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
57
58
  const mockUseSecureDataAccess = vi.mocked(useSecureDataAccess);
58
59
  const mockUseCan = vi.mocked(useCan);
59
60
 
60
61
  beforeEach(() => {
61
62
  vi.clearAllMocks();
62
- mockUseUnifiedAuth.mockReturnValue({
63
+ mockUseUnifiedAuthFn.mockReturnValue({
63
64
  user: mockUser,
64
65
  isAuthenticated: true,
65
66
  signOut: vi.fn(),
@@ -369,7 +370,7 @@ describe('SecureDataProvider', () => {
369
370
  });
370
371
 
371
372
  it('handles missing user context gracefully', async () => {
372
- mockUseUnifiedAuth.mockReturnValue({
373
+ mockUseUnifiedAuthFn.mockReturnValue({
373
374
  user: null,
374
375
  isAuthenticated: false,
375
376
  signOut: vi.fn(),
@@ -57,7 +57,7 @@
57
57
  */
58
58
 
59
59
  import React, { createContext, useContext, useState, useCallback, useMemo, useEffect } from 'react';
60
- import { useUnifiedAuth } from '../../providers/UnifiedAuthProvider';
60
+ import { useUnifiedAuth } from '../../providers/services/UnifiedAuthProvider';
61
61
  import { useSecureDataAccess } from '../../hooks/useSecureDataAccess';
62
62
  import { UUID, Scope, Permission } from '../types';
63
63
  import { getRBACLogger } from '../config';
@@ -41,11 +41,13 @@ vi.mock('../../config', () => ({
41
41
 
42
42
  import { EnhancedNavigationMenu, EnhancedNavigationMenuProps } from '../EnhancedNavigationMenu';
43
43
  import { NavigationProvider, NavigationItem, useNavigationPermissions } from '../NavigationProvider';
44
- import { useUnifiedAuth } from '../../../providers/UnifiedAuthProvider';
44
+ import { useUnifiedAuth } from '../../../providers/services/UnifiedAuthProvider';
45
45
 
46
46
  // Mock the UnifiedAuthProvider
47
- vi.mock('../../../providers/UnifiedAuthProvider', () => ({
48
- useUnifiedAuth: vi.fn()
47
+ const mockUseUnifiedAuthFn = vi.fn();
48
+ vi.mock('../../../providers/services/UnifiedAuthProvider', () => ({
49
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
50
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
49
51
  }));
50
52
 
51
53
  // Mock only the useNavigationPermissions hook, not the provider itself
@@ -76,8 +78,6 @@ vi.mock('../NavigationGuard', () => ({
76
78
  return children;
77
79
  }
78
80
  }));
79
-
80
- const mockUseUnifiedAuth = useUnifiedAuth as any;
81
81
  const mockUseNavigationPermissions = useNavigationPermissions as any;
82
82
 
83
83
  // Test data
@@ -147,7 +147,7 @@ describe('EnhancedNavigationMenu', () => {
147
147
  beforeEach(() => {
148
148
  vi.clearAllMocks();
149
149
 
150
- mockUseUnifiedAuth.mockReturnValue(mockUser);
150
+ mockUseUnifiedAuthFn.mockReturnValue(mockUser);
151
151
  mockUseNavigationPermissions.mockReturnValue(defaultNavigationPermissions);
152
152
 
153
153
  // Reset mocks
@@ -12,7 +12,7 @@ import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
12
12
  import { ReactNode } from 'react';
13
13
  import { NavigationGuard } from '../NavigationGuard';
14
14
  import { useMultiplePermissions } from '../../hooks/usePermissions';
15
- import { useUnifiedAuth } from '../../../providers/UnifiedAuthProvider';
15
+ import { useUnifiedAuth } from '../../../providers/services/UnifiedAuthProvider';
16
16
  import { getRBACLogger } from '../../config';
17
17
 
18
18
  // Mock the RBAC logger - create shared mock
@@ -44,8 +44,10 @@ vi.mock('../../hooks/usePermissions', () => ({
44
44
  }));
45
45
 
46
46
  // Mock the auth provider
47
- vi.mock('../../../providers/UnifiedAuthProvider', () => ({
48
- useUnifiedAuth: vi.fn()
47
+ const mockUseUnifiedAuthFn = vi.fn();
48
+ vi.mock('../../../providers/services/UnifiedAuthProvider', () => ({
49
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
50
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
49
51
  }));
50
52
 
51
53
  // Mock the event context utility
@@ -93,14 +95,13 @@ const TestLoading = () => (
93
95
 
94
96
  describe('NavigationGuard Component', () => {
95
97
  const mockUseMultiplePermissions = vi.mocked(useMultiplePermissions);
96
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
97
98
  const mockCreateScopeFromEvent = vi.mocked(createScopeFromEvent);
98
99
 
99
100
  beforeEach(() => {
100
101
  vi.clearAllMocks();
101
102
 
102
103
  // Default mock implementations
103
- mockUseUnifiedAuth.mockReturnValue({
104
+ mockUseUnifiedAuthFn.mockReturnValue({
104
105
  user: mockUser,
105
106
  selectedOrganisation: { id: 'org-123' },
106
107
  selectedEvent: { event_id: 'event-123' },
@@ -396,7 +397,7 @@ describe('NavigationGuard Component', () => {
396
397
  });
397
398
 
398
399
  it('resolves scope from organisation only', async () => {
399
- mockUseUnifiedAuth.mockReturnValue({
400
+ mockUseUnifiedAuthFn.mockReturnValue({
400
401
  user: mockUser,
401
402
  selectedOrganisation: { id: 'org-123' },
402
403
  selectedEvent: null,
@@ -432,7 +433,7 @@ describe('NavigationGuard Component', () => {
432
433
  });
433
434
 
434
435
  it('resolves scope from event context when organisation not available', async () => {
435
- mockUseUnifiedAuth.mockReturnValue({
436
+ mockUseUnifiedAuthFn.mockReturnValue({
436
437
  user: mockUser,
437
438
  selectedOrganisation: null,
438
439
  selectedEvent: { event_id: 'event-123' },
@@ -475,7 +476,7 @@ describe('NavigationGuard Component', () => {
475
476
  });
476
477
 
477
478
  it('handles scope resolution errors', async () => {
478
- mockUseUnifiedAuth.mockReturnValue({
479
+ mockUseUnifiedAuthFn.mockReturnValue({
479
480
  user: mockUser,
480
481
  selectedOrganisationId: null,
481
482
  selectedEventId: 'event-123',
@@ -500,7 +501,7 @@ describe('NavigationGuard Component', () => {
500
501
  });
501
502
 
502
503
  it('handles missing context gracefully', async () => {
503
- mockUseUnifiedAuth.mockReturnValue({
504
+ mockUseUnifiedAuthFn.mockReturnValue({
504
505
  user: mockUser,
505
506
  selectedOrganisationId: null,
506
507
  selectedEventId: null,
@@ -775,7 +776,7 @@ describe('NavigationGuard Component', () => {
775
776
 
776
777
  describe('Error Handling', () => {
777
778
  it('handles missing user gracefully', async () => {
778
- mockUseUnifiedAuth.mockReturnValue({
779
+ mockUseUnifiedAuthFn.mockReturnValue({
779
780
  user: null,
780
781
  selectedOrganisation: { id: 'org-123' },
781
782
  selectedEvent: { event_id: 'event-123' },
@@ -45,16 +45,15 @@ import {
45
45
  NavigationItem,
46
46
  NavigationAccessRecord
47
47
  } from '../NavigationProvider';
48
- import { useUnifiedAuth } from '../../../providers/UnifiedAuthProvider';
48
+ import { useUnifiedAuth } from '../../../providers/services/UnifiedAuthProvider';
49
49
 
50
50
  // Mock the UnifiedAuthProvider
51
- vi.mock('../../../providers/UnifiedAuthProvider', () => ({
52
- useUnifiedAuth: vi.fn(),
51
+ const mockUseUnifiedAuthFn = vi.fn();
52
+ vi.mock('../../../providers/services/UnifiedAuthProvider', () => ({
53
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
53
54
  UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <div data-testid="unified-auth-provider">{children}</div>
54
55
  }));
55
56
 
56
- const mockUseUnifiedAuth = useUnifiedAuth as any;
57
-
58
57
  // Test data
59
58
  const mockUser = {
60
59
  id: 'user-123',
@@ -144,7 +143,7 @@ describe('NavigationProvider', () => {
144
143
  vi.clearAllMocks();
145
144
 
146
145
  // Set up default mock with organisation context
147
- mockUseUnifiedAuth.mockReturnValue({
146
+ mockUseUnifiedAuthFn.mockReturnValue({
148
147
  ...mockUser,
149
148
  selectedOrganisationId: 'org-456',
150
149
  selectedEventId: 'event-789'
@@ -274,7 +273,7 @@ describe('NavigationProvider', () => {
274
273
  });
275
274
 
276
275
  it('should deny navigation permission when user is not authenticated', () => {
277
- mockUseUnifiedAuth.mockReturnValue({ ...mockUser, id: null });
276
+ mockUseUnifiedAuthFn.mockReturnValue({ ...mockUser, id: null });
278
277
 
279
278
  renderWithProviders(
280
279
  <TestWrapper>
@@ -286,7 +285,7 @@ describe('NavigationProvider', () => {
286
285
  });
287
286
 
288
287
  it('should deny navigation permission when organisation context is missing', () => {
289
- mockUseUnifiedAuth.mockReturnValue({
288
+ mockUseUnifiedAuthFn.mockReturnValue({
290
289
  ...mockUser,
291
290
  selectedOrganisationId: null
292
291
  });
@@ -458,7 +457,7 @@ describe('NavigationProvider', () => {
458
457
 
459
458
  describe('Error Handling', () => {
460
459
  it('should handle missing user gracefully', () => {
461
- mockUseUnifiedAuth.mockReturnValue({});
460
+ mockUseUnifiedAuthFn.mockReturnValue({});
462
461
 
463
462
  expect(() => {
464
463
  renderWithProviders(
@@ -470,7 +469,7 @@ describe('NavigationProvider', () => {
470
469
  });
471
470
 
472
471
  it('should handle missing organisation context gracefully', () => {
473
- mockUseUnifiedAuth.mockReturnValue({
472
+ mockUseUnifiedAuthFn.mockReturnValue({
474
473
  ...mockUser,
475
474
  selectedOrganisationId: null,
476
475
  selectedEventId: null
@@ -550,7 +549,7 @@ describe('NavigationProvider', () => {
550
549
  });
551
550
 
552
551
  it('should handle missing event ID in scope', () => {
553
- mockUseUnifiedAuth.mockReturnValue({
552
+ mockUseUnifiedAuthFn.mockReturnValue({
554
553
  ...mockUser,
555
554
  selectedEventId: null
556
555
  });
@@ -14,23 +14,27 @@ import { PagePermissionGuard } from '../PagePermissionGuard';
14
14
  import { useCan } from '../../hooks';
15
15
 
16
16
  // Mock the hooks with simple implementations
17
- vi.mock('../../../providers/UnifiedAuthProvider', () => ({
18
- useUnifiedAuth: () => ({
19
- user: { id: 'user-123', email: 'test@example.com' },
20
- isAuthenticated: true,
21
- isLoading: false,
22
- selectedOrganisationId: 'org-123',
23
- selectedEventId: undefined,
24
- supabase: {
25
- from: vi.fn(() => ({
26
- select: vi.fn(() => ({
27
- eq: vi.fn(() => ({
28
- single: vi.fn(() => Promise.resolve({ data: { id: 'app-123', name: 'test-app', is_active: true }, error: null }))
29
- }))
17
+ const mockUseUnifiedAuthFn = vi.fn(() => ({
18
+ user: { id: 'user-123', email: 'test@example.com' },
19
+ isAuthenticated: true,
20
+ isLoading: false,
21
+ selectedOrganisation: { id: 'org-123' },
22
+ selectedEvent: null,
23
+ selectedOrganisationId: 'org-123',
24
+ selectedEventId: undefined,
25
+ supabase: {
26
+ from: vi.fn(() => ({
27
+ select: vi.fn(() => ({
28
+ eq: vi.fn(() => ({
29
+ single: vi.fn(() => Promise.resolve({ data: { id: 'app-123', name: 'test-app', is_active: true }, error: null }))
30
30
  }))
31
31
  }))
32
- }
33
- })
32
+ }))
33
+ }
34
+ }));
35
+ vi.mock('../../../providers/services/UnifiedAuthProvider', () => ({
36
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
37
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
34
38
  }));
35
39
 
36
40
  vi.mock('../../hooks', () => ({
@@ -12,7 +12,7 @@ import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
12
12
  import { ReactNode } from 'react';
13
13
  import { PagePermissionGuard } from '../PagePermissionGuard';
14
14
  import { useCan } from '../../hooks';
15
- import { useUnifiedAuth } from '../../../providers/UnifiedAuthProvider';
15
+ import { useUnifiedAuth } from '../../../providers/services/UnifiedAuthProvider';
16
16
 
17
17
  // Mock the RBAC hooks
18
18
  vi.mock('../../hooks', () => ({
@@ -20,8 +20,10 @@ vi.mock('../../hooks', () => ({
20
20
  }));
21
21
 
22
22
  // Mock the auth provider
23
- vi.mock('../../../providers/UnifiedAuthProvider', () => ({
24
- useUnifiedAuth: vi.fn()
23
+ const mockUseUnifiedAuthFn = vi.fn();
24
+ vi.mock('../../../providers/services/UnifiedAuthProvider', () => ({
25
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
26
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
25
27
  }));
26
28
 
27
29
  // Mock the event context utility
@@ -67,7 +69,6 @@ const TestLoading = () => (
67
69
 
68
70
  describe('PagePermissionGuard Component', () => {
69
71
  const mockUseCan = vi.mocked(useCan);
70
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
71
72
  const mockCreateScopeFromEvent = vi.mocked(createScopeFromEvent);
72
73
  const mockGetCurrentAppName = vi.mocked(getCurrentAppName);
73
74
 
@@ -75,7 +76,7 @@ describe('PagePermissionGuard Component', () => {
75
76
  vi.clearAllMocks();
76
77
 
77
78
  // Default mock implementations
78
- mockUseUnifiedAuth.mockReturnValue({
79
+ mockUseUnifiedAuthFn.mockReturnValue({
79
80
  user: mockUser,
80
81
  selectedOrganisation: { id: 'org-123' },
81
82
  selectedEvent: { event_id: 'event-123' },
@@ -431,7 +432,7 @@ describe('PagePermissionGuard Component', () => {
431
432
  mockGetCurrentAppName.mockReturnValue('test-app');
432
433
 
433
434
  // Mock database returning invalid app ID
434
- mockUseUnifiedAuth.mockReturnValue({
435
+ mockUseUnifiedAuthFn.mockReturnValue({
435
436
  user: mockUser,
436
437
  selectedOrganisation: { id: 'org-123' },
437
438
  selectedEvent: { event_id: 'event-123' },
@@ -545,7 +546,7 @@ describe('PagePermissionGuard Component', () => {
545
546
  });
546
547
 
547
548
  it('resolves scope from organisation only', async () => {
548
- mockUseUnifiedAuth.mockReturnValue({
549
+ mockUseUnifiedAuthFn.mockReturnValue({
549
550
  user: mockUser,
550
551
  selectedOrganisation: { id: 'org-123' },
551
552
  selectedEvent: null,
@@ -598,7 +599,7 @@ describe('PagePermissionGuard Component', () => {
598
599
  });
599
600
 
600
601
  it('resolves scope from event context when organisation not available', async () => {
601
- mockUseUnifiedAuth.mockReturnValue({
602
+ mockUseUnifiedAuthFn.mockReturnValue({
602
603
  user: mockUser,
603
604
  selectedOrganisation: null,
604
605
  selectedEvent: { event_id: 'event-123' },
@@ -661,7 +662,7 @@ describe('PagePermissionGuard Component', () => {
661
662
  });
662
663
 
663
664
  it('handles scope resolution errors', async () => {
664
- mockUseUnifiedAuth.mockReturnValue({
665
+ mockUseUnifiedAuthFn.mockReturnValue({
665
666
  user: mockUser,
666
667
  selectedOrganisation: null,
667
668
  selectedEvent: { event_id: 'event-123' },
@@ -687,7 +688,7 @@ describe('PagePermissionGuard Component', () => {
687
688
  });
688
689
 
689
690
  it('handles missing context gracefully', async () => {
690
- mockUseUnifiedAuth.mockReturnValue({
691
+ mockUseUnifiedAuthFn.mockReturnValue({
691
692
  user: mockUser,
692
693
  selectedOrganisation: null,
693
694
  selectedEvent: null,
@@ -907,7 +908,7 @@ describe('PagePermissionGuard Component', () => {
907
908
 
908
909
  describe('Error Handling', () => {
909
910
  it('handles missing user gracefully', async () => {
910
- mockUseUnifiedAuth.mockReturnValue({
911
+ mockUseUnifiedAuthFn.mockReturnValue({
911
912
  user: null,
912
913
  selectedOrganisationId: 'org-123',
913
914
  selectedEventId: 'event-123',
@@ -961,7 +962,7 @@ describe('PagePermissionGuard Component', () => {
961
962
  });
962
963
 
963
964
  it('handles database errors during app resolution', async () => {
964
- mockUseUnifiedAuth.mockReturnValue({
965
+ mockUseUnifiedAuthFn.mockReturnValue({
965
966
  user: mockUser,
966
967
  selectedOrganisation: { id: 'org-123' },
967
968
  selectedEvent: { event_id: 'event-123' },
@@ -14,23 +14,27 @@ import { PagePermissionGuard } from '../PagePermissionGuard';
14
14
  import { useCan } from '../../hooks';
15
15
 
16
16
  // Mock the hooks with simple implementations
17
- vi.mock('../../../providers/UnifiedAuthProvider', () => ({
18
- useUnifiedAuth: () => ({
19
- user: { id: 'user-123', email: 'test@example.com' },
20
- isAuthenticated: true,
21
- isLoading: false,
22
- selectedOrganisationId: 'org-123',
23
- selectedEventId: undefined,
24
- supabase: {
25
- from: vi.fn(() => ({
26
- select: vi.fn(() => ({
27
- eq: vi.fn(() => ({
28
- single: vi.fn(() => Promise.resolve({ data: { id: 'app-123', name: 'test-app', is_active: true }, error: null }))
29
- }))
17
+ const mockUseUnifiedAuthFn = vi.fn(() => ({
18
+ user: { id: 'user-123', email: 'test@example.com' },
19
+ isAuthenticated: true,
20
+ isLoading: false,
21
+ selectedOrganisation: { id: 'org-123' },
22
+ selectedEvent: null,
23
+ selectedOrganisationId: 'org-123',
24
+ selectedEventId: undefined,
25
+ supabase: {
26
+ from: vi.fn(() => ({
27
+ select: vi.fn(() => ({
28
+ eq: vi.fn(() => ({
29
+ single: vi.fn(() => Promise.resolve({ data: { id: 'app-123', name: 'test-app', is_active: true }, error: null }))
30
30
  }))
31
31
  }))
32
- }
33
- })
32
+ }))
33
+ }
34
+ }));
35
+ vi.mock('../../../providers/services/UnifiedAuthProvider', () => ({
36
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
37
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
34
38
  }));
35
39
 
36
40
  vi.mock('../../hooks', () => ({