@jmruthers/pace-core 0.5.181 → 0.5.183

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 (756) 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/usePublicEventLogo.test.ts +147 -0
  470. package/src/hooks/public/usePublicRouteParams.ts +1 -1
  471. package/src/hooks/services/useAuth.ts +2 -4
  472. package/src/hooks/services/useCurrentEvent.ts +1 -1
  473. package/src/hooks/useAppConfig.ts +1 -1
  474. package/src/hooks/useDataTablePerformance.ts +2 -2
  475. package/src/hooks/useEventTheme.ts +1 -1
  476. package/src/hooks/useEvents.ts +51 -10
  477. package/src/hooks/useOrganisationPermissions.test.ts +3 -3
  478. package/src/hooks/useOrganisationPermissions.ts +1 -1
  479. package/src/hooks/useOrganisationSecurity.ts +2 -2
  480. package/src/hooks/usePermissionCache.test.ts +9 -9
  481. package/src/hooks/usePermissionCache.ts +2 -2
  482. package/src/index.ts +19 -12
  483. package/src/providers/OrganisationProvider.tsx +73 -9
  484. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
  485. package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
  486. package/src/providers/__tests__/EventProvider.test.tsx +24 -15
  487. package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
  488. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
  489. package/src/providers/index.ts +0 -3
  490. package/src/providers/services/AuthServiceProvider.tsx +2 -17
  491. package/src/providers/services/EventServiceProvider.tsx +11 -16
  492. package/src/providers/services/InactivityServiceProvider.tsx +9 -12
  493. package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
  494. package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
  495. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
  496. package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
  497. package/src/rbac/adapters.tsx +1 -1
  498. package/src/rbac/api.ts +20 -4
  499. package/src/rbac/audit-enhanced.ts +47 -2
  500. package/src/rbac/audit.ts +47 -2
  501. package/src/rbac/components/NavigationGuard.tsx +1 -1
  502. package/src/rbac/components/NavigationProvider.test.tsx +7 -6
  503. package/src/rbac/components/NavigationProvider.tsx +1 -1
  504. package/src/rbac/components/PagePermissionGuard.tsx +1 -1
  505. package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
  506. package/src/rbac/components/PagePermissionProvider.tsx +1 -1
  507. package/src/rbac/components/PermissionEnforcer.tsx +1 -1
  508. package/src/rbac/components/RoleBasedRouter.tsx +1 -1
  509. package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
  510. package/src/rbac/components/SecureDataProvider.tsx +1 -1
  511. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
  512. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
  513. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
  514. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
  515. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
  516. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
  517. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
  518. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
  519. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
  520. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
  521. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
  522. package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
  523. package/src/rbac/hooks/index.ts +3 -0
  524. package/src/rbac/hooks/usePermissions.ts +31 -85
  525. package/src/rbac/hooks/useRBAC.test.ts +13 -1
  526. package/src/rbac/hooks/useRBAC.ts +13 -67
  527. package/src/rbac/hooks/useResolvedScope.ts +11 -0
  528. package/src/rbac/hooks/useSecureSupabase.ts +308 -0
  529. package/src/rbac/index.ts +3 -0
  530. package/src/rbac/secureClient.ts +53 -6
  531. package/src/rbac/security.ts +37 -1
  532. package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
  533. package/src/rbac/types.ts +3 -2
  534. package/src/services/AuthService.ts +33 -25
  535. package/src/services/EventService.ts +56 -44
  536. package/src/services/InactivityService.ts +33 -53
  537. package/src/services/OrganisationService.ts +36 -40
  538. package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
  539. package/src/services/__tests__/EventService.test.ts +67 -33
  540. package/src/services/interfaces/IEventService.ts +1 -1
  541. package/src/styles/core.css +2 -2
  542. package/src/styles/index.test.ts +21 -0
  543. package/src/styles/index.ts +1 -5
  544. package/src/types/__tests__/guards.test.ts +1 -1
  545. package/src/types/__tests__/organisation.roles.test.ts +55 -0
  546. package/src/types/__tests__/type-validation.test.ts +0 -1
  547. package/src/types/auth.ts +42 -2
  548. package/src/types/core.ts +251 -0
  549. package/src/types/database.ts +11 -496
  550. package/src/types/event.ts +102 -0
  551. package/src/types/file-reference.ts +6 -4
  552. package/src/types/guards.ts +2 -1
  553. package/src/types/index.ts +48 -14
  554. package/src/types/lodash.debounce.d.ts +15 -0
  555. package/src/types/organisation.ts +14 -10
  556. package/src/types/supabase.ts +15 -17
  557. package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
  558. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
  559. package/src/utils/app/appNameResolver.ts +1 -1
  560. package/src/utils/audit/audit.test.ts +65 -0
  561. package/src/utils/device/deviceFingerprint.test.ts +171 -0
  562. package/src/utils/dynamic/dynamicUtils.ts +3 -2
  563. package/src/utils/file-reference/index.ts +25 -6
  564. package/src/utils/security/secureErrors.ts +1 -1
  565. package/src/utils/validation/__tests__/validationUtils.test.ts +72 -0
  566. package/src/utils/validation/index.ts +6 -12
  567. package/src/utils/validation/validationUtils.ts +0 -13
  568. package/dist/UnifiedAuthProvider-B37ATQHE.js +0 -16
  569. package/dist/auth-DReDSLq9.d.ts +0 -16
  570. package/dist/chunk-3JI76CYK.js +0 -2444
  571. package/dist/chunk-3JI76CYK.js.map +0 -1
  572. package/dist/chunk-56XJ3TU6.js +0 -11
  573. package/dist/chunk-56XJ3TU6.js.map +0 -1
  574. package/dist/chunk-5MT24GKJ.js.map +0 -1
  575. package/dist/chunk-7QCC6MCP.js +0 -288
  576. package/dist/chunk-BESYRHQM.js.map +0 -1
  577. package/dist/chunk-BJPBT3CU.js +0 -21
  578. package/dist/chunk-BJPBT3CU.js.map +0 -1
  579. package/dist/chunk-BVYWGZVV.js.map +0 -1
  580. package/dist/chunk-CX5M4ZAG.js.map +0 -1
  581. package/dist/chunk-D7LCGMVS.js.map +0 -1
  582. package/dist/chunk-EGI6MUL6.js +0 -27
  583. package/dist/chunk-EGI6MUL6.js.map +0 -1
  584. package/dist/chunk-ERISIBYU.js.map +0 -1
  585. package/dist/chunk-HRO5HWN2.js.map +0 -1
  586. package/dist/chunk-HZLDFOE4.js.map +0 -1
  587. package/dist/chunk-JISYG63F.js +0 -70
  588. package/dist/chunk-JISYG63F.js.map +0 -1
  589. package/dist/chunk-LIMSTKYD.js +0 -61
  590. package/dist/chunk-LIMSTKYD.js.map +0 -1
  591. package/dist/chunk-OWAG3GSU.js.map +0 -1
  592. package/dist/chunk-PPMP5J6T.js.map +0 -1
  593. package/dist/chunk-Q5QRDWKI.js.map +0 -1
  594. package/dist/chunk-S5OFRT4M.js.map +0 -1
  595. package/dist/chunk-SBVILCCA.js.map +0 -1
  596. package/dist/chunk-TUMEWN34.js +0 -15
  597. package/dist/chunk-TUMEWN34.js.map +0 -1
  598. package/dist/chunk-XDNLUEXI.js +0 -138
  599. package/dist/chunk-XJ2HZOBU.js.map +0 -1
  600. package/dist/chunk-ZYTYSTO5.js.map +0 -1
  601. package/dist/chunk-ZZ2SS7NI.js +0 -237
  602. package/dist/chunk-ZZ2SS7NI.js.map +0 -1
  603. package/dist/database-C6jy7EOu.d.ts +0 -500
  604. package/dist/organisation-D6qRDtbF.d.ts +0 -93
  605. package/dist/schema-DTDZQe2u.d.ts +0 -28
  606. package/dist/unified-DQ4VcT7H.d.ts +0 -198
  607. package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
  608. package/dist/validation.d.ts +0 -47
  609. package/dist/validation.js +0 -24
  610. package/dist/validation.js.map +0 -1
  611. package/docs/DOCUMENTATION_AUDIT.md +0 -172
  612. package/docs/DOCUMENTATION_STANDARD.md +0 -137
  613. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  614. package/docs/api/interfaces/EventLogoProps.md +0 -152
  615. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  616. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  617. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  618. package/docs/architecture/rpc-function-standards.md +0 -1106
  619. package/docs/getting-started/consuming-app-vite-config.md +0 -239
  620. package/docs/implementation-guides/event-theming-summary.md +0 -226
  621. package/docs/implementation-guides/public-pages-advanced.md +0 -1038
  622. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
  623. package/docs/migration/v0.4.16-css-first-approach.md +0 -312
  624. package/docs/migration/v0.4.17-source-path-fix.md +0 -235
  625. package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
  626. package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
  627. package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
  628. package/docs/rbac/README-rbac-rls-integration.md +0 -374
  629. package/docs/styles/usage.md +0 -227
  630. package/docs/testing/visual-testing.md +0 -120
  631. package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
  632. package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
  633. package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
  634. package/docs/troubleshooting/database-view-compatibility.md +0 -125
  635. package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
  636. package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
  637. package/examples/RBAC/EventBasedApp.tsx +0 -239
  638. package/examples/RBAC/PermissionExample.tsx +0 -151
  639. package/examples/STRUCTURE.md +0 -125
  640. package/examples/components 2/DataTable/HierarchicalExample.tsx +0 -475
  641. package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
  642. package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
  643. package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
  644. package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
  645. package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
  646. package/examples/components 2/index.ts +0 -11
  647. package/examples/features/index.ts +0 -12
  648. package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
  649. package/examples/features/rbac/index.ts +0 -13
  650. package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
  651. package/examples/public-pages/PublicEventPage.tsx +0 -274
  652. package/examples/public-pages/PublicPageApp.tsx +0 -308
  653. package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
  654. package/examples/public-pages/index.ts +0 -14
  655. package/src/__tests__/TEST_STANDARD.md +0 -1008
  656. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  657. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
  658. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
  659. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
  660. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
  661. package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
  662. package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
  663. package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
  664. package/src/components/Dialog/README.md +0 -804
  665. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  666. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  667. package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
  668. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  669. package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
  670. package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
  671. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
  672. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  673. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  674. package/src/components/EventSelector/types.ts +0 -79
  675. package/src/components/Form/FormErrorSummary.tsx +0 -113
  676. package/src/components/Form/FormField.tsx +0 -249
  677. package/src/components/Form/FormFieldset.tsx +0 -127
  678. package/src/components/Form/FormLiveRegion.tsx +0 -198
  679. package/src/components/Input/__mocks__/Input.tsx +0 -2
  680. package/src/components/NavigationMenu/types.ts +0 -85
  681. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
  682. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
  683. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  684. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  685. package/src/components/PasswordReset/index.ts +0 -2
  686. package/src/components/ProtectedRoute/README.md +0 -164
  687. package/src/components/PublicLayout/EventLogo.tsx +0 -175
  688. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
  689. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
  690. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
  691. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  692. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  693. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  694. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
  695. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
  696. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
  697. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
  698. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
  699. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
  700. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
  701. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
  702. package/src/components/Select/hooks.ts +0 -289
  703. package/src/hooks/useCounter.test.ts +0 -131
  704. package/src/hooks/useDebounce.test.ts +0 -375
  705. package/src/providers/AuthProvider.tsx +0 -15
  706. package/src/providers/EventProvider.tsx +0 -16
  707. package/src/providers/InactivityProvider.tsx +0 -15
  708. package/src/providers/OrganisationProvider.context.test.tsx +0 -169
  709. package/src/providers/UnifiedAuthProvider.tsx +0 -15
  710. package/src/types/theme.ts +0 -6
  711. package/src/types/unified.ts +0 -265
  712. package/src/utils/appConfig.ts +0 -47
  713. package/src/utils/appIdResolver.test.ts +0 -499
  714. package/src/utils/appIdResolver.ts +0 -130
  715. package/src/utils/appNameResolver.simple.test.ts +0 -212
  716. package/src/utils/appNameResolver.test.ts +0 -121
  717. package/src/utils/appNameResolver.ts +0 -191
  718. package/src/utils/audit.ts +0 -127
  719. package/src/utils/auth-utils.ts +0 -96
  720. package/src/utils/bundleAnalysis.ts +0 -129
  721. package/src/utils/debugLogger.ts +0 -67
  722. package/src/utils/deviceFingerprint.ts +0 -215
  723. package/src/utils/dynamicUtils.ts +0 -105
  724. package/src/utils/file-reference.test.ts +0 -788
  725. package/src/utils/file-reference.ts +0 -519
  726. package/src/utils/formatDate.test.ts +0 -237
  727. package/src/utils/formatting.ts +0 -170
  728. package/src/utils/lazyLoad.tsx +0 -44
  729. package/src/utils/logger.ts +0 -179
  730. package/src/utils/organisationContext.test.ts +0 -322
  731. package/src/utils/organisationContext.ts +0 -153
  732. package/src/utils/performanceBenchmark.ts +0 -64
  733. package/src/utils/performanceBudgets.ts +0 -110
  734. package/src/utils/permissionTypes.ts +0 -37
  735. package/src/utils/permissionUtils.test.ts +0 -393
  736. package/src/utils/permissionUtils.ts +0 -34
  737. package/src/utils/sanitization.ts +0 -264
  738. package/src/utils/schemaUtils.ts +0 -37
  739. package/src/utils/secureDataAccess.test.ts +0 -711
  740. package/src/utils/secureDataAccess.ts +0 -377
  741. package/src/utils/secureErrors.ts +0 -79
  742. package/src/utils/security.ts +0 -156
  743. package/src/utils/securityMonitor.ts +0 -45
  744. package/src/utils/sessionTracking.ts +0 -126
  745. package/src/utils/validation.ts +0 -111
  746. package/src/utils/validationUtils.ts +0 -120
  747. package/src/validation/index.ts +0 -12
  748. /package/dist/{DataTable-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
  749. /package/dist/{UnifiedAuthProvider-B37ATQHE.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
  750. /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
  751. /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
  752. /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
  753. /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
  754. /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
  755. /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
  756. /package/examples/{RBAC → rbac}/index.ts +0 -0
@@ -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', () => ({
@@ -21,7 +21,7 @@ import {
21
21
  usePagePermissions,
22
22
  PageAccessRecord
23
23
  } from '../PagePermissionProvider';
24
- import { useUnifiedAuth } from '../../../providers/UnifiedAuthProvider';
24
+ import { useUnifiedAuth } from '../../../providers/services/UnifiedAuthProvider';
25
25
 
26
26
  // Mock the Logger module
27
27
  vi.mock('../../../utils/core/logger', () => {
@@ -40,13 +40,13 @@ import { createLogger } from '../../../utils/core/logger';
40
40
  const getMockLogger = () => createLogger('test');
41
41
 
42
42
  // Mock the UnifiedAuthProvider
43
- vi.mock('../../../providers/UnifiedAuthProvider', () => ({
44
- useUnifiedAuth: vi.fn(),
43
+ const mockUseUnifiedAuthFn = vi.fn();
44
+
45
+ vi.mock('../../../providers/services/UnifiedAuthProvider', () => ({
46
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
45
47
  UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <div data-testid="unified-auth-provider">{children}</div>
46
48
  }));
47
49
 
48
- const mockUseUnifiedAuth = useUnifiedAuth as any;
49
-
50
50
  // Test data
51
51
  const mockUser = {
52
52
  id: 'user-123',
@@ -109,7 +109,7 @@ describe('PagePermissionProvider', () => {
109
109
  vi.spyOn(console, 'error').mockImplementation(() => {});
110
110
 
111
111
  // Set up default mock with organisation context
112
- mockUseUnifiedAuth.mockReturnValue({
112
+ mockUseUnifiedAuthFn.mockReturnValue({
113
113
  ...mockUser,
114
114
  selectedOrganisationId: 'org-456',
115
115
  selectedEventId: 'event-789'
@@ -223,7 +223,7 @@ describe('PagePermissionProvider', () => {
223
223
  describe('Page Permission Checking', () => {
224
224
  it('should allow page access when user is authenticated', () => {
225
225
  // Ensure user has organisation context
226
- mockUseUnifiedAuth.mockReturnValue({
226
+ mockUseUnifiedAuthFn.mockReturnValue({
227
227
  ...mockUser,
228
228
  selectedOrganisationId: 'org-456',
229
229
  selectedEventId: 'event-789'
@@ -239,7 +239,7 @@ describe('PagePermissionProvider', () => {
239
239
  });
240
240
 
241
241
  it('should deny page access when user is not authenticated', () => {
242
- mockUseUnifiedAuth.mockReturnValue({ ...mockUser, id: null });
242
+ mockUseUnifiedAuthFn.mockReturnValue({ ...mockUser, id: null });
243
243
 
244
244
  renderWithProviders(
245
245
  <TestWrapper>
@@ -251,7 +251,7 @@ describe('PagePermissionProvider', () => {
251
251
  });
252
252
 
253
253
  it('should deny page access when organisation context is missing', () => {
254
- mockUseUnifiedAuth.mockReturnValue({
254
+ mockUseUnifiedAuthFn.mockReturnValue({
255
255
  ...mockUser,
256
256
  selectedOrganisationId: null
257
257
  });
@@ -277,7 +277,7 @@ describe('PagePermissionProvider', () => {
277
277
  };
278
278
 
279
279
  // Ensure user has organisation context
280
- mockUseUnifiedAuth.mockReturnValue({
280
+ mockUseUnifiedAuthFn.mockReturnValue({
281
281
  ...mockUser,
282
282
  selectedOrganisationId: 'org-456',
283
283
  selectedEventId: 'event-789'
@@ -303,7 +303,7 @@ describe('PagePermissionProvider', () => {
303
303
  };
304
304
 
305
305
  // Ensure user has organisation context
306
- mockUseUnifiedAuth.mockReturnValue({
306
+ mockUseUnifiedAuthFn.mockReturnValue({
307
307
  ...mockUser,
308
308
  selectedOrganisationId: 'org-456',
309
309
  selectedEventId: 'event-789'
@@ -326,7 +326,7 @@ describe('PagePermissionProvider', () => {
326
326
  };
327
327
 
328
328
  // Ensure user has organisation context
329
- mockUseUnifiedAuth.mockReturnValue({
329
+ mockUseUnifiedAuthFn.mockReturnValue({
330
330
  ...mockUser,
331
331
  selectedOrganisationId: 'org-456',
332
332
  selectedEventId: 'event-789'
@@ -422,7 +422,7 @@ describe('PagePermissionProvider', () => {
422
422
 
423
423
  describe('Error Handling', () => {
424
424
  it('should handle missing user gracefully', () => {
425
- mockUseUnifiedAuth.mockReturnValue({});
425
+ mockUseUnifiedAuthFn.mockReturnValue({});
426
426
 
427
427
  expect(() => {
428
428
  renderWithProviders(
@@ -434,7 +434,7 @@ describe('PagePermissionProvider', () => {
434
434
  });
435
435
 
436
436
  it('should handle missing organisation context gracefully', () => {
437
- mockUseUnifiedAuth.mockReturnValue({
437
+ mockUseUnifiedAuthFn.mockReturnValue({
438
438
  ...mockUser,
439
439
  selectedOrganisationId: null,
440
440
  selectedEventId: null
@@ -514,7 +514,7 @@ describe('PagePermissionProvider', () => {
514
514
  });
515
515
 
516
516
  it('should handle missing event ID in scope', () => {
517
- mockUseUnifiedAuth.mockReturnValue({
517
+ mockUseUnifiedAuthFn.mockReturnValue({
518
518
  ...mockUser,
519
519
  selectedEventId: null
520
520
  });
@@ -597,7 +597,7 @@ describe('PagePermissionProvider', () => {
597
597
  };
598
598
 
599
599
  // Ensure user has organisation context
600
- mockUseUnifiedAuth.mockReturnValue({
600
+ mockUseUnifiedAuthFn.mockReturnValue({
601
601
  ...mockUser,
602
602
  selectedOrganisationId: 'org-456',
603
603
  selectedEventId: 'event-789'
@@ -620,7 +620,7 @@ describe('PagePermissionProvider', () => {
620
620
  };
621
621
 
622
622
  // Ensure user has organisation context
623
- mockUseUnifiedAuth.mockReturnValue({
623
+ mockUseUnifiedAuthFn.mockReturnValue({
624
624
  ...mockUser,
625
625
  selectedOrganisationId: 'org-456',
626
626
  selectedEventId: 'event-789'
@@ -643,7 +643,7 @@ describe('PagePermissionProvider', () => {
643
643
  };
644
644
 
645
645
  // Ensure user has organisation context
646
- mockUseUnifiedAuth.mockReturnValue({
646
+ mockUseUnifiedAuthFn.mockReturnValue({
647
647
  ...mockUser,
648
648
  selectedOrganisationId: 'org-456',
649
649
  selectedEventId: 'event-789'
@@ -12,7 +12,7 @@ import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
12
12
  import { ReactNode } from 'react';
13
13
  import { PermissionEnforcer } from '../PermissionEnforcer';
14
14
  import { useMultiplePermissions } from '../../hooks/usePermissions';
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/usePermissions', () => ({
@@ -20,8 +20,10 @@ vi.mock('../../hooks/usePermissions', () => ({
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
@@ -77,14 +79,13 @@ const TestLoading = () => (
77
79
 
78
80
  describe('PermissionEnforcer Component', () => {
79
81
  const mockUseMultiplePermissions = vi.mocked(useMultiplePermissions);
80
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
81
82
  const mockCreateScopeFromEvent = vi.mocked(createScopeFromEvent);
82
83
 
83
84
  beforeEach(() => {
84
85
  vi.clearAllMocks();
85
86
 
86
87
  // Default mock implementations
87
- mockUseUnifiedAuth.mockReturnValue({
88
+ mockUseUnifiedAuthFn.mockReturnValue({
88
89
  user: mockUser,
89
90
  selectedOrganisation: { id: 'org-123' },
90
91
  selectedEvent: { event_id: 'event-123' },
@@ -402,7 +403,7 @@ describe('PermissionEnforcer Component', () => {
402
403
  });
403
404
 
404
405
  it('resolves scope from organisation only', async () => {
405
- mockUseUnifiedAuth.mockReturnValue({
406
+ mockUseUnifiedAuthFn.mockReturnValue({
406
407
  user: mockUser,
407
408
  selectedOrganisation: { id: 'org-123' },
408
409
  selectedEvent: null,
@@ -441,7 +442,7 @@ describe('PermissionEnforcer Component', () => {
441
442
  });
442
443
 
443
444
  it('resolves scope from event context when organisation not available', async () => {
444
- mockUseUnifiedAuth.mockReturnValue({
445
+ mockUseUnifiedAuthFn.mockReturnValue({
445
446
  user: mockUser,
446
447
  selectedOrganisation: null,
447
448
  selectedEvent: { event_id: 'event-123' },
@@ -487,7 +488,7 @@ describe('PermissionEnforcer Component', () => {
487
488
  });
488
489
 
489
490
  it('handles scope resolution errors', async () => {
490
- mockUseUnifiedAuth.mockReturnValue({
491
+ mockUseUnifiedAuthFn.mockReturnValue({
491
492
  user: mockUser,
492
493
  selectedOrganisation: null,
493
494
  selectedEvent: { event_id: 'event-123' },
@@ -513,7 +514,7 @@ describe('PermissionEnforcer Component', () => {
513
514
  });
514
515
 
515
516
  it('handles missing context gracefully', async () => {
516
- mockUseUnifiedAuth.mockReturnValue({
517
+ mockUseUnifiedAuthFn.mockReturnValue({
517
518
  user: mockUser,
518
519
  selectedOrganisation: null,
519
520
  selectedEvent: null,
@@ -767,7 +768,7 @@ describe('PermissionEnforcer Component', () => {
767
768
 
768
769
  describe('Error Handling', () => {
769
770
  it('handles missing user gracefully', async () => {
770
- mockUseUnifiedAuth.mockReturnValue({
771
+ mockUseUnifiedAuthFn.mockReturnValue({
771
772
  user: null,
772
773
  selectedOrganisation: { id: 'org-123' },
773
774
  selectedEvent: { event_id: 'event-123' },
@@ -13,7 +13,7 @@ import { ReactNode } from 'react';
13
13
  import { MemoryRouter, Routes, Route } from 'react-router-dom';
14
14
  import { RoleBasedRouter, useRoleBasedRouter } from '../RoleBasedRouter';
15
15
  import { useCan } from '../../hooks';
16
- import { useUnifiedAuth } from '../../../providers/UnifiedAuthProvider';
16
+ import { useUnifiedAuth } from '../../../providers/services/UnifiedAuthProvider';
17
17
 
18
18
  // Mock the RBAC hooks
19
19
  vi.mock('../../hooks', () => ({
@@ -21,8 +21,10 @@ vi.mock('../../hooks', () => ({
21
21
  }));
22
22
 
23
23
  // Mock the auth provider
24
- vi.mock('../../../providers/UnifiedAuthProvider', () => ({
25
- useUnifiedAuth: vi.fn()
24
+ const mockUseUnifiedAuthFn = vi.fn();
25
+ vi.mock('../../../providers/services/UnifiedAuthProvider', () => ({
26
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
27
+ UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
26
28
  }));
27
29
 
28
30
  // Mock React Router
@@ -89,7 +91,6 @@ vi.mocked(Outlet).mockImplementation(TestOutlet);
89
91
 
90
92
  describe('RoleBasedRouter Component', () => {
91
93
  const mockUseCan = vi.mocked(useCan);
92
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
93
94
  const mockUseLocation = vi.mocked(useLocation);
94
95
  const mockUseNavigate = vi.mocked(useNavigate);
95
96
 
@@ -97,7 +98,7 @@ describe('RoleBasedRouter Component', () => {
97
98
  vi.clearAllMocks();
98
99
 
99
100
  // Default mock implementations
100
- mockUseUnifiedAuth.mockReturnValue({
101
+ mockUseUnifiedAuthFn.mockReturnValue({
101
102
  user: mockUser,
102
103
  selectedOrganisation: { id: 'org-123' },
103
104
  selectedEvent: { event_id: 'event-123' }
@@ -609,7 +610,7 @@ describe('RoleBasedRouter Component', () => {
609
610
 
610
611
  describe('Error Handling', () => {
611
612
  it('handles missing user gracefully', async () => {
612
- mockUseUnifiedAuth.mockReturnValue({
613
+ mockUseUnifiedAuthFn.mockReturnValue({
613
614
  user: null,
614
615
  selectedOrganisation: { id: 'org-123' },
615
616
  selectedEvent: { event_id: 'event-123' }
@@ -646,7 +647,7 @@ describe('RoleBasedRouter Component', () => {
646
647
  });
647
648
 
648
649
  it('handles missing organisation context', async () => {
649
- mockUseUnifiedAuth.mockReturnValue({
650
+ mockUseUnifiedAuthFn.mockReturnValue({
650
651
  user: mockUser,
651
652
  selectedOrganisation: null,
652
653
  selectedEvent: null