@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
@@ -3,8 +3,69 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
3
3
  import { render, screen, waitFor, act } from '@testing-library/react';
4
4
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
5
5
  import { createMemoryRouter, RouterProvider } from 'react-router-dom';
6
- import { UnifiedAuthProvider } from '../../providers/UnifiedAuthProvider';
7
- import { OrganisationProvider } from '../../providers/OrganisationProvider';
6
+ import { UnifiedAuthProvider } from '../../providers/services/UnifiedAuthProvider';
7
+ import { OrganisationServiceProvider } from '../../providers/services/OrganisationServiceProvider';
8
+ import type { SupabaseClient } from '@supabase/supabase-js';
9
+
10
+ // Hoist mockSupabaseClient before mocks that reference it
11
+ const mockSupabaseClient = vi.hoisted(() => ({
12
+ auth: {
13
+ getUser: vi.fn(),
14
+ },
15
+ from: vi.fn(),
16
+ rpc: vi.fn(),
17
+ } as unknown as SupabaseClient));
18
+
19
+ // Mock all service hooks used by UnifiedAuthProvider
20
+ vi.mock('../../hooks/services/useAuthService', () => ({
21
+ useAuthService: () => ({
22
+ getUser: vi.fn(() => ({ id: 'user-123', email: 'test@example.com' })),
23
+ getSession: vi.fn(() => ({ access_token: 'token' })),
24
+ isLoading: vi.fn(() => false),
25
+ getError: vi.fn(() => null),
26
+ getSupabaseClient: vi.fn(() => mockSupabaseClient),
27
+ signIn: vi.fn(),
28
+ signUp: vi.fn(),
29
+ signOut: vi.fn(),
30
+ resetPassword: vi.fn(),
31
+ updatePassword: vi.fn(),
32
+ refreshSession: vi.fn(),
33
+ }),
34
+ }));
35
+
36
+ vi.mock('../../hooks/services/useEventService', () => ({
37
+ useEventService: () => ({
38
+ getEvents: vi.fn(() => []),
39
+ getSelectedEvent: vi.fn(() => null),
40
+ isLoading: vi.fn(() => false),
41
+ getError: vi.fn(() => null),
42
+ setSelectedEvent: vi.fn(),
43
+ refreshEvents: vi.fn(),
44
+ }),
45
+ }));
46
+
47
+ vi.mock('../../hooks/services/useInactivityService', () => ({
48
+ useInactivityService: () => ({
49
+ getShowInactivityWarning: vi.fn(() => false),
50
+ getInactivityTimeRemaining: vi.fn(() => 0),
51
+ isIdle: vi.fn(() => false),
52
+ getTimeRemaining: vi.fn(() => 0),
53
+ isWarningShown: vi.fn(() => false),
54
+ isTracking: vi.fn(() => false),
55
+ resetActivity: vi.fn(),
56
+ startTracking: vi.fn(),
57
+ stopTracking: vi.fn(),
58
+ handleIdleLogout: vi.fn(),
59
+ }),
60
+ }));
61
+
62
+ vi.mock('../../hooks/useSessionRestoration', () => ({
63
+ useSessionRestoration: () => ({
64
+ isRestoring: false,
65
+ restorationError: null,
66
+ }),
67
+ }));
68
+
8
69
  // Note: RBACProvider was removed as part of Phase 1 - use useRBAC() hook instead
9
70
  vi.mock('../hooks/useRBAC', () => ({
10
71
  useRBAC: () => ({
@@ -27,7 +88,7 @@ import { useCan, useAccessLevel, useHasAnyPermission, useHasAllPermissions } fro
27
88
  import { useCachedPermissions } from '../hooks';
28
89
  import { usePermissionCache } from '../../hooks/usePermissionCache';
29
90
  import { useOrganisationPermissions } from '../../hooks/useOrganisationPermissions';
30
- import type { SupabaseClient, User } from '@supabase/supabase-js';
91
+ import type { User } from '@supabase/supabase-js';
31
92
  import type { Organisation } from '../../types/organisation';
32
93
  import type { AccessLevel } from '../types/access';
33
94
 
@@ -61,23 +122,46 @@ vi.mock('../../hooks/useOrganisationSecurity', () => ({
61
122
  isOrganisationLoaded: true,
62
123
  })
63
124
  }));
64
- vi.mock('../../providers/OrganisationProvider', () => ({
65
- OrganisationProvider: ({ children }: any) => children,
66
- useOrganisations: () => ({
67
- selectedOrganisation: { id: 'org-123', name: 'Test Organisation' },
68
- isOrganisationLoaded: true,
69
- isLoading: false,
70
- error: null,
71
- })
125
+
126
+ // Hoist mockOrganisationService before mocks that reference it
127
+ const mockOrganisationService = vi.hoisted(() => ({
128
+ getSelectedOrganisation: vi.fn(() => ({ id: 'org-123', name: 'Test Organisation' })),
129
+ getOrganisations: vi.fn(() => [{ id: 'org-123', name: 'Test Organisation' }]),
130
+ getUserMemberships: vi.fn(() => []),
131
+ isLoading: vi.fn(() => false),
132
+ getError: vi.fn(() => null),
133
+ hasValidOrganisationContext: vi.fn(() => true),
134
+ isContextReady: vi.fn(() => true),
135
+ setSelectedOrganisation: vi.fn(),
136
+ switchOrganisation: vi.fn().mockResolvedValue(undefined),
137
+ getUserRole: vi.fn(() => 'member'),
138
+ validateOrganisationAccess: vi.fn(() => true),
139
+ ensureOrganisationContext: vi.fn(() => ({ id: 'org-123', name: 'Test Organisation' })),
140
+ refreshOrganisations: vi.fn().mockResolvedValue(undefined),
141
+ getPrimaryOrganisation: vi.fn(() => ({ id: 'org-123', name: 'Test Organisation' })),
142
+ isOrganisationSecure: vi.fn(() => true),
143
+ subscribe: vi.fn(() => () => {}),
144
+ initialize: vi.fn().mockResolvedValue(undefined),
145
+ cleanup: vi.fn(),
146
+ updateDependencies: vi.fn(),
72
147
  }));
73
148
 
74
- const mockSupabaseClient = {
75
- auth: {
76
- getUser: vi.fn(),
77
- },
78
- from: vi.fn(),
79
- rpc: vi.fn(),
80
- } as unknown as SupabaseClient;
149
+ vi.mock('../../hooks/services/useOrganisationService', () => ({
150
+ useOrganisationService: () => mockOrganisationService,
151
+ }));
152
+
153
+ // Mock OrganisationServiceProvider with context
154
+ vi.mock('../../providers/services/OrganisationServiceProvider', async (importOriginal) => {
155
+ const actual = await importOriginal<typeof import('../../providers/services/OrganisationServiceProvider')>();
156
+ return {
157
+ ...actual,
158
+ OrganisationServiceProvider: ({ children }: any) => (
159
+ <actual.OrganisationServiceContext.Provider value={{ organisationService: mockOrganisationService }}>
160
+ {children}
161
+ </actual.OrganisationServiceContext.Provider>
162
+ ),
163
+ };
164
+ });
81
165
 
82
166
  const mockUser: User = {
83
167
  id: 'user-123',
@@ -142,10 +226,10 @@ const Wrapper = ({ children }: { children: React.ReactNode }) => {
142
226
  });
143
227
  return (
144
228
  <QueryClientProvider client={queryClient}>
145
- <UnifiedAuthProvider supabase={mockSupabaseClient}>
146
- <OrganisationProvider>
229
+ <UnifiedAuthProvider supabaseClient={mockSupabaseClient} appName="TEST_APP" idleTimeoutMs={30000} warnBeforeMs={5000} onIdleLogout={() => {}}>
230
+ <OrganisationServiceProvider supabaseClient={mockSupabaseClient} user={null} session={null}>
147
231
  {children}
148
- </OrganisationProvider>
232
+ </OrganisationServiceProvider>
149
233
  </UnifiedAuthProvider>
150
234
  </QueryClientProvider>
151
235
  );
@@ -12,7 +12,7 @@ import { UUID, Permission } from './types';
12
12
  import { useCan } from './hooks';
13
13
  import { rbacCache, RBACCache } from './cache';
14
14
  import { getRBACLogger } from './config';
15
- import { useUnifiedAuth } from '../providers/UnifiedAuthProvider';
15
+ import { useUnifiedAuth } from '../providers/services/UnifiedAuthProvider';
16
16
 
17
17
  // ============================================================================
18
18
  // REACT COMPONENTS
package/src/rbac/api.ts CHANGED
@@ -43,18 +43,34 @@ export function setupRBAC(supabase: SupabaseClient<Database>, config?: Partial<R
43
43
  const logger = getRBACLogger();
44
44
 
45
45
  // Create full config
46
+ const isDevelopment = import.meta.env.MODE === 'development';
46
47
  const fullConfig: RBACConfig = {
47
48
  supabase,
48
- debug: import.meta.env.MODE === 'development',
49
+ debug: isDevelopment,
49
50
  logLevel: 'warn',
50
- developmentMode: import.meta.env.MODE === 'development',
51
+ developmentMode: isDevelopment,
51
52
  ...config,
52
53
  };
53
54
 
54
55
  createRBACConfig(fullConfig);
55
56
 
56
- // Pass security config to engine if provided
57
- globalEngine = createRBACEngine(supabase, config?.security);
57
+ // Automatically disable rate limiting in development mode unless explicitly overridden
58
+ // Apply default first, then let explicit config override it
59
+ // Pass undefined if no config provided and not in development, otherwise create security config
60
+ const securityConfig =
61
+ config === undefined && !isDevelopment
62
+ ? undefined
63
+ : {
64
+ // Default: disable rate limiting in development
65
+ ...(isDevelopment && config?.security?.enableRateLimiting === undefined
66
+ ? { enableRateLimiting: false }
67
+ : {}),
68
+ // Explicit config overrides defaults
69
+ ...config?.security,
70
+ };
71
+
72
+ // Pass security config to engine
73
+ globalEngine = createRBACEngine(supabase, securityConfig);
58
74
 
59
75
  // Setup audit manager
60
76
  const auditManager = createAuditManager(supabase);
@@ -15,6 +15,7 @@ import {
15
15
  AuditEventSource,
16
16
  RBACAuditEvent
17
17
  } from './types';
18
+ import type { AuditEventType } from './types/functions';
18
19
  import { logger } from '../utils/core/logger';
19
20
 
20
21
  /**
@@ -299,10 +300,32 @@ export class EnhancedRBACAuditManager {
299
300
  .limit(limit);
300
301
 
301
302
  if (error) {
303
+ // Detect CORS errors (they typically have null status or specific error codes)
304
+ const isCorsError =
305
+ error.message?.toLowerCase().includes('cors') ||
306
+ error.message?.toLowerCase().includes('cross-origin') ||
307
+ error.code === null ||
308
+ (error as any).status === null;
309
+
310
+ if (isCorsError) {
311
+ const corsError = new Error(
312
+ `CORS error when querying audit events. This is a Supabase configuration issue. ` +
313
+ `Please configure CORS in your Supabase Dashboard: Settings → API → CORS. ` +
314
+ `Add your app's origin (e.g., http://localhost:8087) to the allowed origins list. ` +
315
+ `Original error: ${error.message || 'CORS request did not succeed'}`
316
+ );
317
+ (corsError as any).isCorsError = true;
318
+ (corsError as any).originalError = error;
319
+ throw corsError;
320
+ }
321
+
302
322
  throw new Error(`Failed to get audit events: ${error.message}`);
303
323
  }
304
324
 
305
- return data || [];
325
+ return (data || []).map(event => ({
326
+ ...event,
327
+ event_type: event.event_type as AuditEventType
328
+ })) as RBACAuditEvent[];
306
329
  }
307
330
 
308
331
  /**
@@ -321,10 +344,32 @@ export class EnhancedRBACAuditManager {
321
344
  .limit(limit);
322
345
 
323
346
  if (error) {
347
+ // Detect CORS errors (they typically have null status or specific error codes)
348
+ const isCorsError =
349
+ error.message?.toLowerCase().includes('cors') ||
350
+ error.message?.toLowerCase().includes('cross-origin') ||
351
+ error.code === null ||
352
+ (error as any).status === null;
353
+
354
+ if (isCorsError) {
355
+ const corsError = new Error(
356
+ `CORS error when querying audit events. This is a Supabase configuration issue. ` +
357
+ `Please configure CORS in your Supabase Dashboard: Settings → API → CORS. ` +
358
+ `Add your app's origin (e.g., http://localhost:8087) to the allowed origins list. ` +
359
+ `Original error: ${error.message || 'CORS request did not succeed'}`
360
+ );
361
+ (corsError as any).isCorsError = true;
362
+ (corsError as any).originalError = error;
363
+ throw corsError;
364
+ }
365
+
324
366
  throw new Error(`Failed to get audit events: ${error.message}`);
325
367
  }
326
368
 
327
- return data || [];
369
+ return (data || []).map(event => ({
370
+ ...event,
371
+ event_type: event.event_type as AuditEventType
372
+ })) as RBACAuditEvent[];
328
373
  }
329
374
  }
330
375
 
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