@jmruthers/pace-core 0.5.181 → 0.5.182

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (750) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +16 -2
  3. package/dist/{AuthService-DYuQPJj6.d.ts → AuthService-B-cd2MA4.d.ts} +9 -11
  4. package/dist/{DataTable-CWAZZcXC.d.ts → DataTable-Bz8ffqyA.d.ts} +1 -1
  5. package/dist/{DataTable-UA6CL4JI.js → DataTable-QAB34V6K.js} +14 -15
  6. package/dist/UnifiedAuthProvider-7F6T4B6K.js +13 -0
  7. package/dist/{UnifiedAuthProvider-DJxGTftH.d.ts → UnifiedAuthProvider-F86d7dSi.d.ts} +5 -6
  8. package/dist/{api-45XYYO2A.js → api-ROMBCNKU.js} +5 -5
  9. package/dist/{audit-64X3VJXB.js → audit-WRS3KJKI.js} +4 -4
  10. package/dist/auth-BZOJqrdd.d.ts +49 -0
  11. package/dist/{chunk-CX5M4ZAG.js → chunk-5DRSZLL2.js} +1 -1
  12. package/dist/chunk-5DRSZLL2.js.map +1 -0
  13. package/dist/{chunk-BESYRHQM.js → chunk-6C4YBBJM.js} +10 -7
  14. package/dist/chunk-6C4YBBJM.js.map +1 -0
  15. package/dist/{chunk-PLDDJCW6.js → chunk-7D4SUZUM.js} +2 -13
  16. package/dist/{chunk-HRO5HWN2.js → chunk-CSOFYHAG.js} +55 -162
  17. package/dist/chunk-CSOFYHAG.js.map +1 -0
  18. package/dist/{chunk-ANBQRTPX.js → chunk-E66EQZE6.js} +3 -5
  19. package/dist/{chunk-ANBQRTPX.js.map → chunk-E66EQZE6.js.map} +1 -1
  20. package/dist/{chunk-Q5QRDWKI.js → chunk-F2IMUDXZ.js} +4 -6
  21. package/dist/chunk-F2IMUDXZ.js.map +1 -0
  22. package/dist/{chunk-SBVILCCA.js → chunk-FSFQFJCU.js} +28 -6
  23. package/dist/chunk-FSFQFJCU.js.map +1 -0
  24. package/dist/chunk-FUEYYMX5.js +2296 -0
  25. package/dist/chunk-FUEYYMX5.js.map +1 -0
  26. package/dist/{chunk-FFKNH6U5.js → chunk-HKIT6O7W.js} +3 -5
  27. package/dist/{chunk-FFKNH6U5.js.map → chunk-HKIT6O7W.js.map} +1 -1
  28. package/dist/chunk-KQCRWDSA.js +1 -0
  29. package/dist/{chunk-S5OFRT4M.js → chunk-KUEN3HFB.js} +6 -6
  30. package/dist/chunk-KUEN3HFB.js.map +1 -0
  31. package/dist/chunk-LMC26NLJ.js +84 -0
  32. package/dist/chunk-LMC26NLJ.js.map +1 -0
  33. package/dist/{chunk-BVYWGZVV.js → chunk-M7W4CP3M.js} +52 -19
  34. package/dist/chunk-M7W4CP3M.js.map +1 -0
  35. package/dist/{chunk-HZLDFOE4.js → chunk-MI7HBHN3.js} +164 -243
  36. package/dist/chunk-MI7HBHN3.js.map +1 -0
  37. package/dist/{chunk-PPMP5J6T.js → chunk-PWAHJW4G.js} +180 -29
  38. package/dist/chunk-PWAHJW4G.js.map +1 -0
  39. package/dist/chunk-PWLANIRT.js +127 -0
  40. package/dist/{chunk-XDNLUEXI.js.map → chunk-PWLANIRT.js.map} +1 -1
  41. package/dist/chunk-QCDXODCA.js +75 -0
  42. package/dist/chunk-QCDXODCA.js.map +1 -0
  43. package/dist/{chunk-D7LCGMVS.js → chunk-QETLRQI6.js} +526 -887
  44. package/dist/chunk-QETLRQI6.js.map +1 -0
  45. package/dist/{chunk-5MT24GKJ.js → chunk-QUVSNGIP.js} +264 -262
  46. package/dist/chunk-QUVSNGIP.js.map +1 -0
  47. package/dist/chunk-QXHPKYJV.js +113 -0
  48. package/dist/chunk-QXHPKYJV.js.map +1 -0
  49. package/dist/{chunk-OWAG3GSU.js → chunk-R77UEZ4E.js} +11 -1
  50. package/dist/chunk-R77UEZ4E.js.map +1 -0
  51. package/dist/{chunk-ZYTYSTO5.js → chunk-RA3JUFMW.js} +314 -161
  52. package/dist/chunk-RA3JUFMW.js.map +1 -0
  53. package/dist/{chunk-ERISIBYU.js → chunk-SQGMNID3.js} +3 -8
  54. package/dist/chunk-SQGMNID3.js.map +1 -0
  55. package/dist/{chunk-XJ2HZOBU.js → chunk-UHNYIBXL.js} +1 -1
  56. package/dist/chunk-UHNYIBXL.js.map +1 -0
  57. package/{src/utils/secureStorage.ts → dist/chunk-VBXEHIUJ.js} +113 -88
  58. package/dist/{chunk-7QCC6MCP.js.map → chunk-VBXEHIUJ.js.map} +1 -1
  59. package/dist/{chunk-VZ4VDGTB.js → chunk-W22JP75J.js} +5 -13
  60. package/dist/{chunk-VZ4VDGTB.js.map → chunk-W22JP75J.js.map} +1 -1
  61. package/dist/components.d.ts +12 -93
  62. package/dist/components.js +23 -106
  63. package/dist/components.js.map +1 -1
  64. package/dist/core-CUElvH_C.d.ts +164 -0
  65. package/dist/database.generated-CBmg2950.d.ts +8284 -0
  66. package/dist/event-CW5YB_2p.d.ts +239 -0
  67. package/dist/{file-reference-C6Gkn77H.d.ts → file-reference-D06mEEWW.d.ts} +7 -5
  68. package/dist/functions-D_kgHktt.d.ts +208 -0
  69. package/dist/hooks.d.ts +54 -7
  70. package/dist/hooks.js +204 -17
  71. package/dist/hooks.js.map +1 -1
  72. package/dist/{EventLogo-B3V3otev.d.ts → index-Bl--n7-T.d.ts} +387 -397
  73. package/dist/index.d.ts +94 -261
  74. package/dist/index.js +314 -126
  75. package/dist/index.js.map +1 -1
  76. package/dist/providers.d.ts +7 -8
  77. package/dist/providers.js +6 -13
  78. package/dist/rbac/index.d.ts +171 -101
  79. package/dist/rbac/index.js +23 -17
  80. package/dist/styles/index.d.ts +1 -3
  81. package/dist/styles/index.js +2 -17
  82. package/dist/theming/runtime.js +3 -3
  83. package/dist/types-UU913iLA.d.ts +102 -0
  84. package/dist/{types-Dfz9dmVH.d.ts → types-_x1f4QBF.d.ts} +6 -6
  85. package/dist/types.d.ts +88 -227
  86. package/dist/types.js +64 -112
  87. package/dist/types.js.map +1 -1
  88. package/dist/{usePublicRouteParams-B7PabvuH.d.ts → usePublicRouteParams-JJczomYq.d.ts} +203 -6
  89. package/dist/utils.d.ts +299 -13
  90. package/dist/utils.js +481 -55
  91. package/dist/utils.js.map +1 -1
  92. package/dist/validation-643vUDZW.d.ts +177 -0
  93. package/docs/DOCUMENTATION_REVIEW_TRACKER.md +511 -0
  94. package/docs/README.md +9 -8
  95. package/docs/api/README.md +16 -2
  96. package/docs/api/classes/ColumnFactory.md +1 -1
  97. package/docs/api/classes/ErrorBoundary.md +1 -1
  98. package/docs/api/classes/InvalidScopeError.md +4 -4
  99. package/docs/api/classes/MissingUserContextError.md +4 -4
  100. package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
  101. package/docs/api/classes/PermissionDeniedError.md +4 -4
  102. package/docs/api/classes/RBACAuditManager.md +14 -14
  103. package/docs/api/classes/RBACCache.md +1 -1
  104. package/docs/api/classes/RBACEngine.md +2 -2
  105. package/docs/api/classes/RBACError.md +4 -4
  106. package/docs/api/classes/RBACNotInitializedError.md +4 -4
  107. package/docs/api/classes/SecureSupabaseClient.md +29 -9
  108. package/docs/api/classes/StorageUtils.md +1 -1
  109. package/docs/api/enums/FileCategory.md +17 -17
  110. package/docs/api/enums/RBACErrorCode.md +228 -0
  111. package/docs/api/enums/RPCFunction.md +118 -0
  112. package/docs/api/interfaces/AggregateConfig.md +1 -1
  113. package/docs/api/interfaces/BadgeProps.md +1 -1
  114. package/docs/api/interfaces/ButtonProps.md +2 -2
  115. package/docs/api/interfaces/CalendarProps.md +1 -1
  116. package/docs/api/interfaces/CardProps.md +29 -3
  117. package/docs/api/interfaces/ColorPalette.md +1 -1
  118. package/docs/api/interfaces/ColorShade.md +1 -1
  119. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  120. package/docs/api/interfaces/DataRecord.md +1 -1
  121. package/docs/api/interfaces/DataTableAction.md +2 -2
  122. package/docs/api/interfaces/DataTableColumn.md +6 -6
  123. package/docs/api/interfaces/DataTableProps.md +1 -1
  124. package/docs/api/interfaces/DataTableToolbarButton.md +2 -2
  125. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  126. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  127. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  128. package/docs/api/interfaces/ExportColumn.md +5 -5
  129. package/docs/api/interfaces/ExportOptions.md +4 -4
  130. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  131. package/docs/api/interfaces/FileMetadata.md +13 -13
  132. package/docs/api/interfaces/FileReference.md +12 -12
  133. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  134. package/docs/api/interfaces/FileUploadOptions.md +10 -10
  135. package/docs/api/interfaces/FileUploadProps.md +19 -19
  136. package/docs/api/interfaces/FooterProps.md +1 -1
  137. package/docs/api/interfaces/FormFieldProps.md +166 -0
  138. package/docs/api/interfaces/FormProps.md +113 -0
  139. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  140. package/docs/api/interfaces/InactivityWarningModalProps.md +8 -8
  141. package/docs/api/interfaces/InputProps.md +2 -2
  142. package/docs/api/interfaces/LabelProps.md +8 -8
  143. package/docs/api/interfaces/LoginFormProps.md +1 -1
  144. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  145. package/docs/api/interfaces/NavigationContextType.md +1 -1
  146. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  147. package/docs/api/interfaces/NavigationItem.md +17 -73
  148. package/docs/api/interfaces/NavigationMenuProps.md +38 -53
  149. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  150. package/docs/api/interfaces/Organisation.md +13 -13
  151. package/docs/api/interfaces/OrganisationContextType.md +21 -21
  152. package/docs/api/interfaces/OrganisationMembership.md +15 -15
  153. package/docs/api/interfaces/OrganisationProviderProps.md +59 -2
  154. package/docs/api/interfaces/OrganisationSecurityError.md +5 -5
  155. package/docs/api/interfaces/PaceAppLayoutProps.md +26 -39
  156. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  157. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  158. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  159. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  160. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  161. package/docs/api/interfaces/PaletteData.md +1 -1
  162. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  163. package/docs/api/interfaces/ProgressProps.md +50 -0
  164. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  165. package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
  166. package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
  167. package/docs/api/interfaces/PublicPageLayoutProps.md +15 -15
  168. package/docs/api/interfaces/RBACAccessValidateParams.md +52 -0
  169. package/docs/api/interfaces/RBACAccessValidateResult.md +41 -0
  170. package/docs/api/interfaces/RBACAuditLogParams.md +85 -0
  171. package/docs/api/interfaces/RBACAuditLogResult.md +52 -0
  172. package/docs/api/interfaces/RBACConfig.md +2 -2
  173. package/docs/api/interfaces/RBACContext.md +52 -0
  174. package/docs/api/interfaces/RBACLogger.md +1 -1
  175. package/docs/api/interfaces/RBACPageAccessCheckParams.md +74 -0
  176. package/docs/api/interfaces/RBACPermissionCheckParams.md +74 -0
  177. package/docs/api/interfaces/RBACPermissionCheckResult.md +52 -0
  178. package/docs/api/interfaces/RBACPermissionsGetParams.md +63 -0
  179. package/docs/api/interfaces/RBACPermissionsGetResult.md +63 -0
  180. package/docs/api/interfaces/RBACResult.md +58 -0
  181. package/docs/api/interfaces/RBACRoleGrantParams.md +63 -0
  182. package/docs/api/interfaces/RBACRoleGrantResult.md +52 -0
  183. package/docs/api/interfaces/RBACRoleRevokeParams.md +63 -0
  184. package/docs/api/interfaces/RBACRoleRevokeResult.md +52 -0
  185. package/docs/api/interfaces/RBACRoleValidateParams.md +52 -0
  186. package/docs/api/interfaces/RBACRoleValidateResult.md +63 -0
  187. package/docs/api/interfaces/RBACRolesListParams.md +52 -0
  188. package/docs/api/interfaces/RBACRolesListResult.md +74 -0
  189. package/docs/api/interfaces/RBACSessionTrackParams.md +74 -0
  190. package/docs/api/interfaces/RBACSessionTrackResult.md +52 -0
  191. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  192. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  193. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  194. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  195. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  196. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  197. package/docs/api/interfaces/RouteConfig.md +1 -1
  198. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  199. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  200. package/docs/api/interfaces/SessionRestorationLoaderProps.md +15 -2
  201. package/docs/api/interfaces/StorageConfig.md +1 -1
  202. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  203. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  204. package/docs/api/interfaces/StorageListOptions.md +1 -1
  205. package/docs/api/interfaces/StorageListResult.md +1 -1
  206. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  207. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  208. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  209. package/docs/api/interfaces/StyleImport.md +1 -1
  210. package/docs/api/interfaces/SwitchProps.md +1 -1
  211. package/docs/api/interfaces/TabsContentProps.md +1 -1
  212. package/docs/api/interfaces/TabsListProps.md +1 -1
  213. package/docs/api/interfaces/TabsProps.md +1 -1
  214. package/docs/api/interfaces/TabsTriggerProps.md +43 -2
  215. package/docs/api/interfaces/TextareaProps.md +2 -2
  216. package/docs/api/interfaces/ToastActionElement.md +1 -1
  217. package/docs/api/interfaces/ToastProps.md +1 -1
  218. package/docs/api/interfaces/UnifiedAuthContextType.md +61 -61
  219. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  220. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  221. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  222. package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
  223. package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
  224. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  225. package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
  226. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
  227. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  228. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  229. package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
  230. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  231. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  232. package/docs/api/interfaces/UserEventAccess.md +1 -1
  233. package/docs/api/interfaces/UserMenuProps.md +4 -4
  234. package/docs/api/interfaces/UserProfile.md +7 -7
  235. package/docs/api/modules.md +484 -462
  236. package/docs/api-reference/components.md +186 -15
  237. package/docs/api-reference/deprecated.md +376 -0
  238. package/docs/api-reference/hooks.md +149 -19
  239. package/docs/api-reference/providers.md +61 -6
  240. package/docs/api-reference/rpc-functions.md +397 -0
  241. package/docs/api-reference/types.md +135 -78
  242. package/docs/api-reference/utilities.md +51 -380
  243. package/docs/architecture/README.md +49 -3
  244. package/docs/architecture/database-schema-requirements.md +40 -3
  245. package/docs/architecture/rbac-security-architecture.md +41 -4
  246. package/docs/architecture/services.md +127 -42
  247. package/docs/best-practices/README.md +51 -5
  248. package/docs/best-practices/accessibility.md +32 -3
  249. package/docs/best-practices/common-patterns.md +50 -3
  250. package/docs/best-practices/deployment.md +50 -4
  251. package/docs/best-practices/performance.md +50 -3
  252. package/docs/best-practices/security.md +94 -41
  253. package/docs/best-practices/testing.md +33 -4
  254. package/docs/core-concepts/authentication.md +5 -5
  255. package/docs/core-concepts/events.md +3 -3
  256. package/docs/core-concepts/organisations.md +3 -3
  257. package/docs/core-concepts/permissions.md +3 -3
  258. package/docs/core-concepts/rbac-system.md +5 -5
  259. package/docs/documentation-index.md +30 -8
  260. package/docs/getting-started/documentation-index.md +1 -1
  261. package/docs/getting-started/examples/README.md +7 -5
  262. package/docs/getting-started/examples/basic-auth-app.md +3 -0
  263. package/docs/getting-started/examples/full-featured-app.md +5 -3
  264. package/docs/getting-started/faq.md +6 -6
  265. package/docs/getting-started/installation-guide.md +192 -13
  266. package/docs/getting-started/local-development.md +303 -0
  267. package/docs/getting-started/quick-reference.md +3 -3
  268. package/docs/getting-started/quick-start.md +517 -0
  269. package/docs/implementation-guides/app-layout.md +45 -3
  270. package/docs/implementation-guides/authentication.md +66 -7
  271. package/docs/implementation-guides/component-styling.md +53 -3
  272. package/docs/implementation-guides/data-tables.md +76 -7
  273. package/docs/implementation-guides/datatable-filtering.md +1 -2
  274. package/docs/implementation-guides/datatable-rbac-usage.md +0 -1
  275. package/docs/implementation-guides/dynamic-colors.md +155 -4
  276. package/docs/implementation-guides/file-reference-system.md +72 -3
  277. package/docs/implementation-guides/file-upload-storage.md +72 -3
  278. package/docs/implementation-guides/forms.md +53 -3
  279. package/docs/implementation-guides/inactivity-tracking.md +53 -3
  280. package/docs/implementation-guides/large-datasets.md +1 -1
  281. package/docs/implementation-guides/navigation.md +55 -5
  282. package/docs/implementation-guides/organisation-security.md +72 -3
  283. package/docs/implementation-guides/performance.md +57 -1
  284. package/docs/implementation-guides/permission-enforcement.md +81 -8
  285. package/docs/implementation-guides/public-pages.md +560 -14
  286. package/docs/migration/MIGRATION_GUIDE.md +409 -50
  287. package/docs/migration/README.md +37 -3
  288. package/docs/migration/organisation-context-timing-fix.md +39 -4
  289. package/docs/migration/quick-migration-guide.md +41 -5
  290. package/docs/migration/rbac-migration.md +59 -3
  291. package/docs/migration/service-architecture.md +77 -14
  292. package/docs/rbac/README.md +79 -3
  293. package/docs/rbac/advanced-patterns.md +47 -3
  294. package/docs/rbac/api-reference.md +77 -8
  295. package/docs/rbac/event-based-apps.md +50 -5
  296. package/docs/rbac/examples/rbac-rls-integration-example.md +3 -3
  297. package/docs/rbac/examples.md +39 -3
  298. package/docs/rbac/getting-started.md +63 -4
  299. package/docs/rbac/quick-start.md +57 -5
  300. package/docs/rbac/rbac-rls-integration.md +68 -6
  301. package/docs/rbac/super-admin-guide.md +47 -3
  302. package/docs/rbac/troubleshooting.md +3 -3
  303. package/docs/security/README.md +68 -3
  304. package/docs/security/checklist.md +50 -3
  305. package/docs/standards/01-architecture-standard.md +39 -0
  306. package/docs/standards/02-api-and-rpc-standard.md +39 -0
  307. package/docs/standards/03-component-standard.md +32 -0
  308. package/docs/standards/04-code-style-standard.md +32 -0
  309. package/docs/standards/05-security-standard.md +30 -0
  310. package/docs/standards/06-testing-and-docs-standard.md +29 -0
  311. package/docs/standards/README.md +35 -0
  312. package/docs/styles/README.md +89 -8
  313. package/docs/testing/README.md +175 -24
  314. package/docs/troubleshooting/README.md +50 -3
  315. package/docs/troubleshooting/common-issues.md +271 -5
  316. package/docs/troubleshooting/debugging.md +54 -1
  317. package/docs/troubleshooting/migration.md +54 -1
  318. package/docs/troubleshooting/organisation-context-setup.md +29 -3
  319. package/docs/troubleshooting/styling-issues.md +246 -4
  320. package/{src/components/DataTable/examples → examples/DataTable}/GroupingAggregationExample.tsx +1 -1
  321. package/examples/{components 2/DataTable/HierarchicalActionsExample.tsx → DataTable/HierarchicalActionsExample.tsx} +7 -6
  322. package/{src/components/DataTable/examples → examples/DataTable}/HierarchicalExample.tsx +8 -6
  323. package/examples/{components 2/DataTable/PerformanceExample.tsx → DataTable/PerformanceExample.tsx} +2 -2
  324. package/examples/{components 2/DataTable/index.ts → DataTable/index.ts} +1 -0
  325. package/{src/components/Dialog/examples → examples/Dialog}/HtmlDialogExample.tsx +3 -3
  326. package/examples/{components 2/Dialog/ScrollableDialogExample.tsx → Dialog/ScrollableDialogExample.tsx} +1 -1
  327. package/{src/components/Dialog/examples → examples/Dialog}/SmartDialogExample.tsx +1 -1
  328. package/examples/{components 2/Dialog/index.ts → Dialog/index.ts} +0 -3
  329. package/examples/{features/public-pages → PublicPages}/CorrectPublicPageImplementation.tsx +52 -17
  330. package/examples/{features/public-pages → PublicPages}/PublicEventPage.tsx +65 -35
  331. package/examples/{features/public-pages → PublicPages}/PublicPageApp.tsx +52 -18
  332. package/examples/{features/public-pages → PublicPages}/PublicPageUsageExample.tsx +28 -15
  333. package/examples/README.md +81 -33
  334. package/examples/index.ts +14 -12
  335. package/examples/{RBAC → rbac}/CompleteRBACExample.tsx +1 -1
  336. package/examples/{features/rbac → rbac}/EventBasedApp.tsx +4 -4
  337. package/examples/{features/rbac → rbac}/PermissionExample.tsx +5 -3
  338. package/package.json +21 -27
  339. package/src/__tests__/helpers/test-utils.tsx +29 -3
  340. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +7 -5
  341. package/src/components/Alert/Alert.test.tsx +2 -2
  342. package/src/components/Alert/Alert.tsx +4 -4
  343. package/src/components/Avatar/Avatar.test.tsx +17 -6
  344. package/src/components/Badge/Badge.test.tsx +1 -1
  345. package/src/components/Badge/Badge.tsx +2 -2
  346. package/src/components/Button/Button.test.tsx +2 -2
  347. package/src/components/Button/Button.tsx +11 -7
  348. package/src/components/Calendar/Calendar.test.tsx +41 -8
  349. package/src/components/Calendar/Calendar.tsx +39 -36
  350. package/src/components/Card/Card.tsx +51 -13
  351. package/src/components/Checkbox/Checkbox.test.tsx +36 -12
  352. package/src/components/DataTable/DataTable.test.tsx +1 -1
  353. package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +13 -7
  354. package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +14 -42
  355. package/src/components/DataTable/__tests__/DataTable.export.test.tsx +13 -10
  356. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +14 -11
  357. package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +4 -2
  358. package/src/components/DataTable/__tests__/DataTable.test.tsx +13 -7
  359. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +13 -10
  360. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +15 -11
  361. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +12 -6
  362. package/src/components/DataTable/__tests__/keyboard.test.tsx +12 -6
  363. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +10 -6
  364. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +1 -1
  365. package/src/components/DataTable/components/DataTableBody.tsx +10 -25
  366. package/src/components/DataTable/components/DataTableCore.tsx +1 -1
  367. package/src/components/DataTable/components/FilterRow.tsx +3 -1
  368. package/src/components/DataTable/components/ImportModal.tsx +1 -1
  369. package/src/components/DataTable/components/VirtualizedDataTable.tsx +9 -9
  370. package/src/components/DataTable/core/ColumnFactory.ts +6 -6
  371. package/src/components/DataTable/core/DataTableContext.tsx +14 -10
  372. package/src/components/DataTable/core/LocalDataAdapter.ts +2 -1
  373. package/src/components/DataTable/core/PluginRegistry.ts +3 -3
  374. package/src/components/DataTable/core/StateManager.ts +12 -11
  375. package/src/components/DataTable/core/__tests__/ActionManager.test.ts +104 -0
  376. package/src/components/DataTable/core/__tests__/DataManager.test.ts +101 -0
  377. package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +84 -0
  378. package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +102 -0
  379. package/src/components/DataTable/core/__tests__/StateManager.test.ts +104 -0
  380. package/src/components/DataTable/core/interfaces.ts +17 -17
  381. package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +124 -0
  382. package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +117 -0
  383. package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +102 -0
  384. package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +53 -0
  385. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -2
  386. package/src/components/DataTable/hooks/useDataTablePermissions.ts +9 -8
  387. package/src/components/DataTable/types.ts +5 -5
  388. package/src/components/DataTable/utils/aggregationUtils.ts +4 -4
  389. package/src/components/DataTable/utils/columnUtils.ts +3 -2
  390. package/src/components/DataTable/utils/debugTools.ts +1 -1
  391. package/src/components/DataTable/utils/exportUtils.ts +6 -6
  392. package/src/components/DataTable/utils/hierarchicalSorting.ts +6 -6
  393. package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -8
  394. package/src/components/DataTable/utils/index.ts +0 -1
  395. package/src/components/DataTable/utils/performanceUtils.ts +9 -4
  396. package/src/components/Dialog/Dialog.test.tsx +49 -27
  397. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +13 -8
  398. package/src/components/EventSelector/EventSelector.test.tsx +60 -12
  399. package/src/components/EventSelector/EventSelector.tsx +38 -15
  400. package/src/components/EventSelector/index.ts +2 -2
  401. package/src/components/FileDisplay/FileDisplay.test.tsx +143 -85
  402. package/src/components/FileDisplay/FileDisplay.tsx +1 -0
  403. package/src/components/FileUpload/FileUpload.test.tsx +532 -152
  404. package/src/components/FileUpload/FileUpload.tsx +43 -8
  405. package/src/components/Footer/Footer.test.tsx +19 -14
  406. package/src/components/Form/Form.test.tsx +96 -14
  407. package/src/components/Form/Form.tsx +210 -1
  408. package/src/components/Form/index.ts +3 -7
  409. package/src/components/Header/Header.test.tsx +24 -17
  410. package/src/components/Header/Header.tsx +3 -1
  411. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +2 -4
  412. package/src/components/Input/Input.test.tsx +61 -36
  413. package/src/components/Label/{__tests__/Label.test.tsx → Label.test.tsx} +2 -2
  414. package/src/components/Label/Label.tsx +2 -3
  415. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +6 -5
  416. package/src/components/LoadingSpinner/LoadingSpinner.tsx +6 -2
  417. package/src/components/LoginForm/LoginForm.test.tsx +14 -13
  418. package/src/components/LoginForm/LoginForm.tsx +1 -1
  419. package/src/components/LoginForm/index.ts +7 -0
  420. package/src/components/NavigationMenu/NavigationMenu.test.tsx +233 -20
  421. package/src/components/NavigationMenu/NavigationMenu.tsx +191 -55
  422. package/src/components/NavigationMenu/index.ts +1 -1
  423. package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +20 -11
  424. package/src/components/OrganisationSelector/OrganisationSelector.tsx +1 -1
  425. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.integration.test.tsx → PaceAppLayout.integration.test.tsx} +272 -79
  426. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.performance.test.tsx → PaceAppLayout.performance.test.tsx} +155 -32
  427. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.security.test.tsx → PaceAppLayout.security.test.tsx} +211 -65
  428. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +498 -210
  429. package/src/components/PaceAppLayout/PaceAppLayout.tsx +63 -64
  430. package/src/components/PaceAppLayout/test-setup.tsx +192 -0
  431. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +193 -39
  432. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.test.tsx +2 -2
  433. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.tsx +10 -4
  434. package/src/components/PasswordChange/index.ts +2 -0
  435. package/src/components/Progress/Progress.test.tsx +11 -0
  436. package/src/components/Progress/Progress.tsx +1 -1
  437. package/src/components/Progress/index.ts +10 -0
  438. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +2 -1
  439. package/src/components/PublicLayout/PublicLayout.test.tsx +1210 -0
  440. package/src/components/PublicLayout/PublicPageLayout.tsx +190 -36
  441. package/src/components/PublicLayout/PublicPageProvider.tsx +8 -7
  442. package/src/components/PublicLayout/index.ts +10 -28
  443. package/src/components/Select/Select.test.tsx +7 -7
  444. package/src/components/Select/Select.tsx +277 -11
  445. package/src/components/Select/index.ts +1 -2
  446. package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +232 -0
  447. package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +40 -19
  448. package/src/components/Table/{__tests__/Table.test.tsx → Table.test.tsx} +94 -41
  449. package/src/components/Tabs/Tabs.test.tsx +10 -9
  450. package/src/components/Tabs/Tabs.tsx +61 -33
  451. package/src/components/Textarea/Textarea.test.tsx +31 -18
  452. package/src/components/Toast/Toast.tsx +2 -2
  453. package/src/components/Tooltip/Tooltip.test.tsx +1 -1
  454. package/src/components/UserMenu/UserMenu.test.tsx +7 -6
  455. package/src/components/UserMenu/UserMenu.tsx +2 -2
  456. package/src/components/index.ts +5 -4
  457. package/src/constants/performance.ts +19 -8
  458. package/src/hooks/__tests__/useAppConfig.unit.test.ts +21 -22
  459. package/src/hooks/__tests__/useEvents.unit.test.ts +5 -4
  460. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +2 -2
  461. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -0
  462. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +16 -11
  463. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +1 -3
  464. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +1 -3
  465. package/src/hooks/__tests__/useRBAC.unit.test.ts +24 -2
  466. package/src/hooks/index.ts +4 -0
  467. package/src/hooks/public/index.ts +2 -0
  468. package/src/hooks/public/usePublicEvent.ts +4 -6
  469. package/src/hooks/public/usePublicRouteParams.ts +1 -1
  470. package/src/hooks/services/useAuth.ts +2 -4
  471. package/src/hooks/services/useCurrentEvent.ts +1 -1
  472. package/src/hooks/useAppConfig.ts +1 -1
  473. package/src/hooks/useDataTablePerformance.ts +2 -2
  474. package/src/hooks/useEventTheme.ts +1 -1
  475. package/src/hooks/useEvents.ts +51 -10
  476. package/src/hooks/useOrganisationPermissions.test.ts +3 -3
  477. package/src/hooks/useOrganisationPermissions.ts +1 -1
  478. package/src/hooks/useOrganisationSecurity.ts +2 -2
  479. package/src/hooks/usePermissionCache.test.ts +9 -9
  480. package/src/hooks/usePermissionCache.ts +2 -2
  481. package/src/index.ts +19 -12
  482. package/src/providers/OrganisationProvider.tsx +73 -9
  483. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
  484. package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
  485. package/src/providers/__tests__/EventProvider.test.tsx +24 -15
  486. package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
  487. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
  488. package/src/providers/index.ts +0 -3
  489. package/src/providers/services/AuthServiceProvider.tsx +2 -17
  490. package/src/providers/services/EventServiceProvider.tsx +11 -16
  491. package/src/providers/services/InactivityServiceProvider.tsx +9 -12
  492. package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
  493. package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
  494. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
  495. package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
  496. package/src/rbac/adapters.tsx +1 -1
  497. package/src/rbac/api.ts +20 -4
  498. package/src/rbac/audit-enhanced.ts +47 -2
  499. package/src/rbac/audit.ts +47 -2
  500. package/src/rbac/components/NavigationGuard.tsx +1 -1
  501. package/src/rbac/components/NavigationProvider.test.tsx +7 -6
  502. package/src/rbac/components/NavigationProvider.tsx +1 -1
  503. package/src/rbac/components/PagePermissionGuard.tsx +1 -1
  504. package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
  505. package/src/rbac/components/PagePermissionProvider.tsx +1 -1
  506. package/src/rbac/components/PermissionEnforcer.tsx +1 -1
  507. package/src/rbac/components/RoleBasedRouter.tsx +1 -1
  508. package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
  509. package/src/rbac/components/SecureDataProvider.tsx +1 -1
  510. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
  511. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
  512. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
  513. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
  514. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
  515. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
  516. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
  517. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
  518. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
  519. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
  520. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
  521. package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
  522. package/src/rbac/hooks/index.ts +3 -0
  523. package/src/rbac/hooks/usePermissions.ts +31 -85
  524. package/src/rbac/hooks/useRBAC.test.ts +13 -1
  525. package/src/rbac/hooks/useRBAC.ts +13 -67
  526. package/src/rbac/hooks/useResolvedScope.ts +11 -0
  527. package/src/rbac/hooks/useSecureSupabase.ts +308 -0
  528. package/src/rbac/index.ts +3 -0
  529. package/src/rbac/secureClient.ts +53 -6
  530. package/src/rbac/security.ts +37 -1
  531. package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
  532. package/src/rbac/types.ts +3 -2
  533. package/src/services/AuthService.ts +33 -25
  534. package/src/services/EventService.ts +56 -44
  535. package/src/services/InactivityService.ts +33 -53
  536. package/src/services/OrganisationService.ts +36 -40
  537. package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
  538. package/src/services/__tests__/EventService.test.ts +67 -33
  539. package/src/services/interfaces/IEventService.ts +1 -1
  540. package/src/styles/core.css +2 -2
  541. package/src/styles/index.ts +1 -5
  542. package/src/types/__tests__/guards.test.ts +1 -1
  543. package/src/types/__tests__/type-validation.test.ts +0 -1
  544. package/src/types/auth.ts +42 -2
  545. package/src/types/core.ts +251 -0
  546. package/src/types/database.ts +11 -496
  547. package/src/types/event.ts +102 -0
  548. package/src/types/file-reference.ts +6 -4
  549. package/src/types/guards.ts +2 -1
  550. package/src/types/index.ts +48 -14
  551. package/src/types/lodash.debounce.d.ts +15 -0
  552. package/src/types/organisation.ts +14 -10
  553. package/src/types/supabase.ts +15 -17
  554. package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
  555. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
  556. package/src/utils/app/appNameResolver.ts +1 -1
  557. package/src/utils/dynamic/dynamicUtils.ts +3 -2
  558. package/src/utils/file-reference/index.ts +25 -6
  559. package/src/utils/security/secureErrors.ts +1 -1
  560. package/src/utils/validation/index.ts +6 -12
  561. package/src/utils/validation/validationUtils.ts +0 -13
  562. package/dist/UnifiedAuthProvider-B37ATQHE.js +0 -16
  563. package/dist/auth-DReDSLq9.d.ts +0 -16
  564. package/dist/chunk-3JI76CYK.js +0 -2444
  565. package/dist/chunk-3JI76CYK.js.map +0 -1
  566. package/dist/chunk-56XJ3TU6.js +0 -11
  567. package/dist/chunk-56XJ3TU6.js.map +0 -1
  568. package/dist/chunk-5MT24GKJ.js.map +0 -1
  569. package/dist/chunk-7QCC6MCP.js +0 -288
  570. package/dist/chunk-BESYRHQM.js.map +0 -1
  571. package/dist/chunk-BJPBT3CU.js +0 -21
  572. package/dist/chunk-BJPBT3CU.js.map +0 -1
  573. package/dist/chunk-BVYWGZVV.js.map +0 -1
  574. package/dist/chunk-CX5M4ZAG.js.map +0 -1
  575. package/dist/chunk-D7LCGMVS.js.map +0 -1
  576. package/dist/chunk-EGI6MUL6.js +0 -27
  577. package/dist/chunk-EGI6MUL6.js.map +0 -1
  578. package/dist/chunk-ERISIBYU.js.map +0 -1
  579. package/dist/chunk-HRO5HWN2.js.map +0 -1
  580. package/dist/chunk-HZLDFOE4.js.map +0 -1
  581. package/dist/chunk-JISYG63F.js +0 -70
  582. package/dist/chunk-JISYG63F.js.map +0 -1
  583. package/dist/chunk-LIMSTKYD.js +0 -61
  584. package/dist/chunk-LIMSTKYD.js.map +0 -1
  585. package/dist/chunk-OWAG3GSU.js.map +0 -1
  586. package/dist/chunk-PPMP5J6T.js.map +0 -1
  587. package/dist/chunk-Q5QRDWKI.js.map +0 -1
  588. package/dist/chunk-S5OFRT4M.js.map +0 -1
  589. package/dist/chunk-SBVILCCA.js.map +0 -1
  590. package/dist/chunk-TUMEWN34.js +0 -15
  591. package/dist/chunk-TUMEWN34.js.map +0 -1
  592. package/dist/chunk-XDNLUEXI.js +0 -138
  593. package/dist/chunk-XJ2HZOBU.js.map +0 -1
  594. package/dist/chunk-ZYTYSTO5.js.map +0 -1
  595. package/dist/chunk-ZZ2SS7NI.js +0 -237
  596. package/dist/chunk-ZZ2SS7NI.js.map +0 -1
  597. package/dist/database-C6jy7EOu.d.ts +0 -500
  598. package/dist/organisation-D6qRDtbF.d.ts +0 -93
  599. package/dist/schema-DTDZQe2u.d.ts +0 -28
  600. package/dist/unified-DQ4VcT7H.d.ts +0 -198
  601. package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
  602. package/dist/validation.d.ts +0 -47
  603. package/dist/validation.js +0 -24
  604. package/dist/validation.js.map +0 -1
  605. package/docs/DOCUMENTATION_AUDIT.md +0 -172
  606. package/docs/DOCUMENTATION_STANDARD.md +0 -137
  607. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  608. package/docs/api/interfaces/EventLogoProps.md +0 -152
  609. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  610. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  611. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  612. package/docs/architecture/rpc-function-standards.md +0 -1106
  613. package/docs/getting-started/consuming-app-vite-config.md +0 -239
  614. package/docs/implementation-guides/event-theming-summary.md +0 -226
  615. package/docs/implementation-guides/public-pages-advanced.md +0 -1038
  616. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
  617. package/docs/migration/v0.4.16-css-first-approach.md +0 -312
  618. package/docs/migration/v0.4.17-source-path-fix.md +0 -235
  619. package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
  620. package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
  621. package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
  622. package/docs/rbac/README-rbac-rls-integration.md +0 -374
  623. package/docs/styles/usage.md +0 -227
  624. package/docs/testing/visual-testing.md +0 -120
  625. package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
  626. package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
  627. package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
  628. package/docs/troubleshooting/database-view-compatibility.md +0 -125
  629. package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
  630. package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
  631. package/examples/RBAC/EventBasedApp.tsx +0 -239
  632. package/examples/RBAC/PermissionExample.tsx +0 -151
  633. package/examples/STRUCTURE.md +0 -125
  634. package/examples/components 2/DataTable/HierarchicalExample.tsx +0 -475
  635. package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
  636. package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
  637. package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
  638. package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
  639. package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
  640. package/examples/components 2/index.ts +0 -11
  641. package/examples/features/index.ts +0 -12
  642. package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
  643. package/examples/features/rbac/index.ts +0 -13
  644. package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
  645. package/examples/public-pages/PublicEventPage.tsx +0 -274
  646. package/examples/public-pages/PublicPageApp.tsx +0 -308
  647. package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
  648. package/examples/public-pages/index.ts +0 -14
  649. package/src/__tests__/TEST_STANDARD.md +0 -1008
  650. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  651. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
  652. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
  653. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
  654. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
  655. package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
  656. package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
  657. package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
  658. package/src/components/Dialog/README.md +0 -804
  659. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  660. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  661. package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
  662. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  663. package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
  664. package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
  665. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
  666. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  667. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  668. package/src/components/EventSelector/types.ts +0 -79
  669. package/src/components/Form/FormErrorSummary.tsx +0 -113
  670. package/src/components/Form/FormField.tsx +0 -249
  671. package/src/components/Form/FormFieldset.tsx +0 -127
  672. package/src/components/Form/FormLiveRegion.tsx +0 -198
  673. package/src/components/Input/__mocks__/Input.tsx +0 -2
  674. package/src/components/NavigationMenu/types.ts +0 -85
  675. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
  676. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
  677. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  678. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  679. package/src/components/PasswordReset/index.ts +0 -2
  680. package/src/components/ProtectedRoute/README.md +0 -164
  681. package/src/components/PublicLayout/EventLogo.tsx +0 -175
  682. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
  683. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
  684. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
  685. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  686. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  687. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  688. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
  689. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
  690. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
  691. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
  692. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
  693. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
  694. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
  695. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
  696. package/src/components/Select/hooks.ts +0 -289
  697. package/src/hooks/useCounter.test.ts +0 -131
  698. package/src/hooks/useDebounce.test.ts +0 -375
  699. package/src/providers/AuthProvider.tsx +0 -15
  700. package/src/providers/EventProvider.tsx +0 -16
  701. package/src/providers/InactivityProvider.tsx +0 -15
  702. package/src/providers/OrganisationProvider.context.test.tsx +0 -169
  703. package/src/providers/UnifiedAuthProvider.tsx +0 -15
  704. package/src/types/theme.ts +0 -6
  705. package/src/types/unified.ts +0 -265
  706. package/src/utils/appConfig.ts +0 -47
  707. package/src/utils/appIdResolver.test.ts +0 -499
  708. package/src/utils/appIdResolver.ts +0 -130
  709. package/src/utils/appNameResolver.simple.test.ts +0 -212
  710. package/src/utils/appNameResolver.test.ts +0 -121
  711. package/src/utils/appNameResolver.ts +0 -191
  712. package/src/utils/audit.ts +0 -127
  713. package/src/utils/auth-utils.ts +0 -96
  714. package/src/utils/bundleAnalysis.ts +0 -129
  715. package/src/utils/debugLogger.ts +0 -67
  716. package/src/utils/deviceFingerprint.ts +0 -215
  717. package/src/utils/dynamicUtils.ts +0 -105
  718. package/src/utils/file-reference.test.ts +0 -788
  719. package/src/utils/file-reference.ts +0 -519
  720. package/src/utils/formatDate.test.ts +0 -237
  721. package/src/utils/formatting.ts +0 -170
  722. package/src/utils/lazyLoad.tsx +0 -44
  723. package/src/utils/logger.ts +0 -179
  724. package/src/utils/organisationContext.test.ts +0 -322
  725. package/src/utils/organisationContext.ts +0 -153
  726. package/src/utils/performanceBenchmark.ts +0 -64
  727. package/src/utils/performanceBudgets.ts +0 -110
  728. package/src/utils/permissionTypes.ts +0 -37
  729. package/src/utils/permissionUtils.test.ts +0 -393
  730. package/src/utils/permissionUtils.ts +0 -34
  731. package/src/utils/sanitization.ts +0 -264
  732. package/src/utils/schemaUtils.ts +0 -37
  733. package/src/utils/secureDataAccess.test.ts +0 -711
  734. package/src/utils/secureDataAccess.ts +0 -377
  735. package/src/utils/secureErrors.ts +0 -79
  736. package/src/utils/security.ts +0 -156
  737. package/src/utils/securityMonitor.ts +0 -45
  738. package/src/utils/sessionTracking.ts +0 -126
  739. package/src/utils/validation.ts +0 -111
  740. package/src/utils/validationUtils.ts +0 -120
  741. package/src/validation/index.ts +0 -12
  742. /package/dist/{DataTable-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
  743. /package/dist/{UnifiedAuthProvider-B37ATQHE.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
  744. /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
  745. /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
  746. /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
  747. /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
  748. /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
  749. /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
  750. /package/examples/{RBAC → rbac}/index.ts +0 -0
@@ -123,6 +123,8 @@ describe('useRBAC (unit)', () => {
123
123
  selectedEvent: null,
124
124
  eventLoading: false,
125
125
  });
126
+ mockResolveAppContext.mockResolvedValue({ appId: 'app-1' as any, hasAccess: true });
127
+ mockGetPermissionMap.mockResolvedValue({});
126
128
  mockGetRoleContext.mockResolvedValue({
127
129
  globalRole: null,
128
130
  organisationRole: null,
@@ -132,7 +134,15 @@ describe('useRBAC (unit)', () => {
132
134
 
133
135
  const { result } = renderHook(() => useRBAC());
134
136
 
135
- await waitFor(() => expect(result.current.isLoading).toBe(false));
137
+ await waitFor(() => {
138
+ expect(mockResolveAppContext).toHaveBeenCalled();
139
+ expect(mockGetAccessLevel).toHaveBeenCalled();
140
+ });
141
+
142
+ await waitFor(() => {
143
+ expect(result.current.isLoading).toBe(false);
144
+ expect(result.current.eventAppRole).toBe('planner');
145
+ });
136
146
 
137
147
  expect(result.current.eventAppRole).toBe('planner');
138
148
  });
@@ -175,6 +185,9 @@ describe('useRBAC (unit)', () => {
175
185
  selectedEvent: null,
176
186
  eventLoading: false,
177
187
  });
188
+ mockResolveAppContext.mockResolvedValue({ appId: 'app-1' as any, hasAccess: true });
189
+ mockGetPermissionMap.mockResolvedValue({});
190
+ mockGetAccessLevel.mockResolvedValue('viewer');
178
191
  mockGetRoleContext.mockResolvedValue({
179
192
  globalRole: null,
180
193
  organisationRole: 'org_admin',
@@ -183,8 +196,17 @@ describe('useRBAC (unit)', () => {
183
196
 
184
197
  const { result } = renderHook(() => useRBAC());
185
198
 
186
- await waitFor(() => expect(result.current.isLoading).toBe(false));
199
+ await waitFor(() => {
200
+ expect(mockResolveAppContext).toHaveBeenCalled();
201
+ expect(mockGetRoleContext).toHaveBeenCalled();
202
+ });
187
203
 
204
+ await waitFor(() => {
205
+ expect(result.current.isLoading).toBe(false);
206
+ expect(result.current.organisationRole).toBe('org_admin');
207
+ });
208
+
209
+ expect(result.current.organisationRole).toBe('org_admin');
188
210
  expect(result.current.hasGlobalPermission('org_admin')).toBe(true);
189
211
  expect(result.current.hasGlobalPermission('super_admin')).toBe(false);
190
212
  });
@@ -55,6 +55,10 @@ export type { UseDataTablePerformanceOptions, UseDataTablePerformanceReturn } fr
55
55
  export { useFileDisplay, clearFileDisplayCache, getFileDisplayCacheStats, invalidateFileDisplayCache } from './useFileDisplay';
56
56
  export type { UseFileDisplayReturn, UseFileDisplayOptions } from './useFileDisplay';
57
57
 
58
+ // === STORAGE HOOKS ===
59
+ export { useStorage, useFileUpload } from './useStorage';
60
+ export type { UseStorageOptions, UseStorageReturn } from './useStorage';
61
+
58
62
  // === PUBLIC DATA ACCESS HOOKS ===
59
63
  export * from './public';
60
64
 
@@ -19,6 +19,7 @@
19
19
  // === PUBLIC DATA ACCESS HOOKS ===
20
20
  export { usePublicEvent, clearPublicEventCache, getPublicEventCacheStats } from './usePublicEvent';
21
21
  export { usePublicFileDisplay, clearPublicFileDisplayCache, getPublicFileDisplayCacheStats } from './usePublicFileDisplay';
22
+ export { usePublicEventLogo, clearPublicLogoCache, getPublicLogoCacheStats } from './usePublicEventLogo';
22
23
 
23
24
  // === PUBLIC ROUTE HOOKS ===
24
25
  export {
@@ -31,4 +32,5 @@ export {
31
32
  // === PUBLIC TYPES ===
32
33
  export type { UsePublicEventReturn, UsePublicEventOptions } from './usePublicEvent';
33
34
  export type { UsePublicFileDisplayReturn, UsePublicFileDisplayOptions } from './usePublicFileDisplay';
35
+ export type { UsePublicEventLogoReturn, UsePublicEventLogoOptions } from './usePublicEventLogo';
34
36
  export type { UsePublicRouteParamsReturn } from './usePublicRouteParams';
@@ -61,8 +61,9 @@
61
61
 
62
62
  import { useState, useEffect, useCallback, useMemo } from 'react';
63
63
  import { createClient } from '@supabase/supabase-js';
64
- import type { Event } from '../../types/unified';
64
+ import type { Event } from '../../types/event';
65
65
  import type { Database } from '../../types/database';
66
+ import { assertOrganisationId } from '../../types/core';
66
67
  import { usePublicPageContext } from '../../components/PublicLayout/PublicPageProvider';
67
68
  import { logger } from '../../utils/core/logger';
68
69
 
@@ -352,13 +353,10 @@ export function usePublicEvent(
352
353
  event_participants: eventData.event_participants,
353
354
  event_logo: eventData.event_logo,
354
355
  event_colours: eventData.event_colours,
355
- organisation_id: eventData.organisation_id,
356
+ organisation_id: assertOrganisationId(eventData.organisation_id),
356
357
  is_visible: true,
357
358
  created_at: new Date().toISOString(),
358
- updated_at: new Date().toISOString(),
359
- // Legacy compatibility
360
- name: eventData.event_name,
361
- start_date: eventData.event_date
359
+ updated_at: new Date().toISOString()
362
360
  };
363
361
 
364
362
  setEvent(transformedEvent);
@@ -58,7 +58,7 @@
58
58
 
59
59
  import { useState, useEffect, useCallback, useMemo } from 'react';
60
60
  import { useParams, useLocation } from 'react-router-dom';
61
- import type { Event } from '../../types/unified';
61
+ import type { Event } from '../../types/event';
62
62
  import { usePublicEvent } from './usePublicEvent';
63
63
 
64
64
  export interface UsePublicRouteParamsReturn {
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import { useAuthService } from './useAuthService';
12
- import { type User, type Session, AuthError } from '@supabase/supabase-js';
12
+ import { type User, type Session, type SupabaseClient, AuthError } from '@supabase/supabase-js';
13
13
 
14
14
  export interface AuthState {
15
15
  user: User | null;
@@ -17,8 +17,7 @@ export interface AuthState {
17
17
  isAuthenticated: boolean;
18
18
  authLoading: boolean;
19
19
  authError: AuthError | null;
20
- error: AuthError | null; // Alias for authError for backward compatibility
21
- supabase: any | null;
20
+ supabase: SupabaseClient | null;
22
21
 
23
22
  // Auth methods
24
23
  signIn: (email: string, password?: string) => Promise<{ error: AuthError | null }>;
@@ -38,7 +37,6 @@ export function useAuth(): AuthState {
38
37
  isAuthenticated: authService.isAuthenticated(),
39
38
  authLoading: authService.isLoading(),
40
39
  authError: authService.getError(),
41
- error: authService.getError(), // Alias for backward compatibility
42
40
  supabase: authService.getSupabaseClient(),
43
41
  signIn: authService.signIn.bind(authService),
44
42
  signUp: authService.signUp.bind(authService),
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import { useEventService } from './useEventService';
12
- import { Event } from '../../types/unified';
12
+ import { Event } from '../../types/event';
13
13
 
14
14
  export interface CurrentEventState {
15
15
  events: Event[];
@@ -29,7 +29,7 @@
29
29
  */
30
30
 
31
31
  import { useMemo, useContext } from 'react';
32
- import { useUnifiedAuth } from '../providers/UnifiedAuthProvider';
32
+ import { useUnifiedAuth } from '../providers/services/UnifiedAuthProvider';
33
33
  import { useIsPublicPage, PublicPageContext } from '../components/PublicLayout/PublicPageProvider';
34
34
 
35
35
  export interface UseAppConfigReturn {
@@ -206,7 +206,7 @@ export function useDataTablePerformance<TData extends DataRecord>({
206
206
 
207
207
  // Debounced search function
208
208
  const debouncedSearch = useCallback(
209
- debounce((query: string) => {
209
+ debounce(((query: string) => {
210
210
  if (!searchIndexRef.current) return;
211
211
 
212
212
  if (!query.trim()) {
@@ -216,7 +216,7 @@ export function useDataTablePerformance<TData extends DataRecord>({
216
216
 
217
217
  const results = searchIndexRef.current.search(query);
218
218
  setSearchResults(results);
219
- }, performance.debounceSearch ?? 300),
219
+ }) as unknown as (...args: unknown[]) => unknown, performance.debounceSearch ?? 300) as (query: string) => void,
220
220
  [performance.debounceSearch]
221
221
  );
222
222
 
@@ -43,7 +43,7 @@ import { useLocation } from 'react-router-dom';
43
43
  import { useEvents } from './useEvents';
44
44
  import { applyPalette, clearPalette } from '../theming/runtime';
45
45
  import { parseAndNormalizeEventColours } from '../theming/parseEventColours';
46
- import type { Event } from '../types/unified';
46
+ import type { Event } from '../types/event';
47
47
  import { createLogger } from '../utils/core/logger';
48
48
 
49
49
  const log = createLogger('useEventTheme');
@@ -11,8 +11,9 @@
11
11
  * For better performance, consider using useEventService directly.
12
12
  */
13
13
 
14
+ import { useMemo, useRef } from 'react';
14
15
  import { useEventService } from './services/useEventService';
15
- import { Event } from '../types/unified';
16
+ import { Event } from '../types/event';
16
17
 
17
18
  export interface EventContextType {
18
19
  events: Event[];
@@ -50,16 +51,56 @@ export interface EventContextType {
50
51
  export function useEvents(): EventContextType {
51
52
  const eventService = useEventService();
52
53
 
53
- const events = eventService.getEvents();
54
+ // Get current state - service subscription will trigger re-renders when state changes
55
+ const rawEvents = eventService.getEvents();
56
+ const selectedEvent = eventService.getSelectedEvent();
57
+ const isLoading = eventService.isLoading();
58
+ const error = eventService.getError();
54
59
 
55
- return {
60
+ // Use refs to track previous values and only create new array reference when events actually change
61
+ const prevEventsRef = useRef<Event[]>([]);
62
+ const prevEventsIdsRef = useRef<string>('');
63
+
64
+ // Compare event IDs to detect actual changes (more efficient than deep comparison)
65
+ // Do this outside useMemo to avoid dependency on rawEvents array
66
+ const currentEventsIds = rawEvents.map(e => e.event_id || e.id).join(',');
67
+ const eventsChanged = currentEventsIds !== prevEventsIdsRef.current;
68
+
69
+ // Only create new array reference when events actually changed
70
+ // Update refs synchronously, then memoize based on the ID string
71
+ if (eventsChanged) {
72
+ prevEventsRef.current = rawEvents;
73
+ prevEventsIdsRef.current = currentEventsIds;
74
+ }
75
+
76
+ // Return stable array reference - only changes when event IDs change
77
+ const events = useMemo(() => {
78
+ return prevEventsRef.current;
79
+ }, [currentEventsIds]);
80
+
81
+ // Memoize callbacks to prevent unnecessary re-renders in child components
82
+ const setSelectedEventCallback = useMemo(
83
+ () => (event: Event | null) => eventService.setSelectedEvent(event),
84
+ [eventService]
85
+ );
86
+ const refreshEventsCallback = useMemo(
87
+ () => () => eventService.refreshEvents(),
88
+ [eventService]
89
+ );
90
+ const clearEventSelectionCallback = useMemo(
91
+ () => () => eventService.clearEventSelection(),
92
+ [eventService]
93
+ );
94
+
95
+ // Memoize the return object - only recreate when actual values change
96
+ return useMemo(() => ({
56
97
  events,
57
- selectedEvent: eventService.getSelectedEvent(),
58
- isLoading: eventService.isLoading(),
59
- error: eventService.getError(),
60
- setSelectedEvent: (event: Event | null) => eventService.setSelectedEvent(event),
61
- refreshEvents: () => eventService.refreshEvents(),
62
- clearEventSelection: () => eventService.clearEventSelection(),
63
- };
98
+ selectedEvent,
99
+ isLoading,
100
+ error,
101
+ setSelectedEvent: setSelectedEventCallback,
102
+ refreshEvents: refreshEventsCallback,
103
+ clearEventSelection: clearEventSelectionCallback,
104
+ }), [events, selectedEvent?.event_id, isLoading, error?.message, setSelectedEventCallback, refreshEventsCallback, clearEventSelectionCallback]);
64
105
  }
65
106
 
@@ -11,10 +11,10 @@ import React from 'react';
11
11
  import { renderHook, waitFor } from '@testing-library/react';
12
12
  import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
13
13
  import { useOrganisationPermissions } from './useOrganisationPermissions';
14
- import { useOrganisations } from '../providers/OrganisationProvider';
14
+ import { useOrganisations } from './useOrganisations';
15
15
 
16
- // Mock the organisation provider
17
- vi.mock('../providers/OrganisationProvider', () => ({
16
+ // Mock the organisation hook
17
+ vi.mock('./useOrganisations', () => ({
18
18
  useOrganisations: vi.fn()
19
19
  }));
20
20
 
@@ -46,7 +46,7 @@
46
46
  */
47
47
 
48
48
  import { useMemo } from 'react';
49
- import { useOrganisations } from '../providers/OrganisationProvider';
49
+ import { useOrganisations } from './useOrganisations';
50
50
  import { useOrganisationSecurity } from './useOrganisationSecurity';
51
51
  import type { OrganisationRole, OrganisationPermission } from '../types/organisation';
52
52
 
@@ -30,7 +30,7 @@ export interface OrganisationSecurityHook {
30
30
  getUserPermissions: (orgId?: string) => Promise<string[]>;
31
31
 
32
32
  // Audit logging
33
- logOrganisationAccess: (action: string, details?: any) => Promise<void>;
33
+ logOrganisationAccess: (action: string, details?: Record<string, unknown>) => Promise<void>;
34
34
 
35
35
  // Security utilities
36
36
  ensureOrganisationAccess: (orgId: string) => Promise<void>;
@@ -220,7 +220,7 @@ export const useOrganisationSecurity = (): OrganisationSecurityHook => {
220
220
  }, [selectedOrganisation, user, getUserRole, superAdminContext.isSuperAdmin]);
221
221
 
222
222
  // Log organisation access for audit using the new RBAC audit system
223
- const logOrganisationAccess = useCallback(async (action: string, details?: any): Promise<void> => {
223
+ const logOrganisationAccess = useCallback(async (action: string, details?: Record<string, unknown>): Promise<void> => {
224
224
  if (!user || !selectedOrganisation) return;
225
225
 
226
226
  try {
@@ -12,8 +12,9 @@ import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
12
12
  import { usePermissionCache } from './usePermissionCache';
13
13
 
14
14
  // Mock the dependencies
15
- vi.mock('../providers/UnifiedAuthProvider', () => ({
16
- useUnifiedAuth: vi.fn()
15
+ const mockUseUnifiedAuthFn = vi.fn();
16
+ vi.mock('../providers/services/UnifiedAuthProvider', () => ({
17
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
17
18
  }));
18
19
 
19
20
  vi.mock('./useOrganisations', () => ({
@@ -28,12 +29,11 @@ vi.mock('../rbac/api', () => ({
28
29
  isPermittedCached: vi.fn()
29
30
  }));
30
31
 
31
- import { useUnifiedAuth } from '../providers/UnifiedAuthProvider';
32
+ import { useUnifiedAuth } from '../providers/services/UnifiedAuthProvider';
32
33
  import { useOrganisations } from './useOrganisations';
33
34
  import { useEvents } from './useEvents';
34
35
  import { isPermittedCached } from '../rbac/api';
35
36
 
36
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
37
37
  const mockUseOrganisations = vi.mocked(useOrganisations);
38
38
  const mockUseEvents = vi.mocked(useEvents);
39
39
  const mockIsPermittedCached = vi.mocked(isPermittedCached);
@@ -43,7 +43,7 @@ describe('usePermissionCache', () => {
43
43
  vi.clearAllMocks();
44
44
 
45
45
  // Setup default mocks
46
- mockUseUnifiedAuth.mockReturnValue({
46
+ mockUseUnifiedAuthFn.mockReturnValue({
47
47
  user: { id: 'user-123' },
48
48
  session: null,
49
49
  appName: 'test-app',
@@ -90,7 +90,7 @@ describe('usePermissionCache', () => {
90
90
 
91
91
  it('depends on auth and organisation hooks', () => {
92
92
  renderHook(() => usePermissionCache());
93
- expect(mockUseUnifiedAuth).toHaveBeenCalled();
93
+ expect(mockUseUnifiedAuthFn).toHaveBeenCalled();
94
94
  expect(mockUseOrganisations).toHaveBeenCalled();
95
95
  });
96
96
  });
@@ -140,7 +140,7 @@ describe('usePermissionCache', () => {
140
140
  });
141
141
 
142
142
  it('handles missing user context gracefully', () => {
143
- mockUseUnifiedAuth.mockReturnValueOnce({
143
+ mockUseUnifiedAuthFn.mockReturnValueOnce({
144
144
  user: null,
145
145
  session: null,
146
146
  appName: 'test-app',
@@ -404,7 +404,7 @@ describe('usePermissionCache', () => {
404
404
  describe('Integration with RBAC API', () => {
405
405
  it('integrates with auth and organisation hooks correctly', () => {
406
406
  renderHook(() => usePermissionCache());
407
- expect(mockUseUnifiedAuth).toHaveBeenCalled();
407
+ expect(mockUseUnifiedAuthFn).toHaveBeenCalled();
408
408
  expect(mockUseOrganisations).toHaveBeenCalled();
409
409
  });
410
410
 
@@ -425,7 +425,7 @@ describe('usePermissionCache', () => {
425
425
 
426
426
  it('handles permission API state changes', async () => {
427
427
  mockIsPermittedCached.mockResolvedValueOnce(true);
428
- mockUseUnifiedAuth.mockReturnValueOnce({
428
+ mockUseUnifiedAuthFn.mockReturnValueOnce({
429
429
  user: { id: 'user-456' },
430
430
  session: null,
431
431
  appName: 'test-app',
@@ -50,12 +50,12 @@
50
50
  * - RBAC API functions - isPermittedCached for permission checking
51
51
  * - RBAC types - Type definitions
52
52
  *
53
- * @deprecated Consider using useCan() or usePermissions() hooks directly instead.
54
53
  * This hook provides additional caching on top of the built-in caching in useCan/usePermissions.
54
+ * Consider using useCan() or usePermissions() hooks directly for simpler use cases.
55
55
  */
56
56
 
57
57
  import { useState, useCallback, useMemo, useEffect, useRef } from 'react';
58
- import { useUnifiedAuth } from '../providers/UnifiedAuthProvider';
58
+ import { useUnifiedAuth } from '../providers/services/UnifiedAuthProvider';
59
59
  import { useOrganisations } from './useOrganisations';
60
60
  import { useEvents } from './useEvents';
61
61
  import { isPermittedCached } from '../rbac/api';
package/src/index.ts CHANGED
@@ -17,18 +17,22 @@
17
17
 
18
18
  // AUTHENTICATION & AUTHORIZATION
19
19
  // Note: Providers are now service-based architecture for better testability and maintainability
20
- export { UnifiedAuthProvider, useUnifiedAuth } from './providers/UnifiedAuthProvider';
21
- export type { UnifiedAuthProviderProps, UnifiedAuthContextType, UserEventAccess } from './providers/UnifiedAuthProvider';
20
+ export { UnifiedAuthProvider, useUnifiedAuth } from './providers/services/UnifiedAuthProvider';
21
+ export type { UnifiedAuthProviderProps, UnifiedAuthContextType, UserEventAccess } from './providers/services/UnifiedAuthProvider';
22
22
 
23
23
  // Session tracking utility (for manual use if needed)
24
24
  export { useSessionTracking } from './utils/context/sessionTracking';
25
25
 
26
26
  // Provider components (using service architecture)
27
- export { EventProvider } from './providers/EventProvider';
27
+ export { EventServiceProvider } from './providers/services/EventServiceProvider';
28
+ export { OrganisationServiceProvider } from './providers/services/OrganisationServiceProvider';
29
+ export { InactivityServiceProvider } from './providers/services/InactivityServiceProvider';
30
+
31
+ // Convenience provider wrapper (backward compatibility)
28
32
  export { OrganisationProvider } from './providers/OrganisationProvider';
29
- export { InactivityProvider } from './providers/InactivityProvider';
33
+ export type { OrganisationProviderProps } from './providers/OrganisationProvider';
30
34
 
31
- // Convenience hooks for backward compatibility
35
+ // Convenience hooks
32
36
  export { useEvents } from './hooks/useEvents';
33
37
  export { useOrganisations } from './hooks/useOrganisations';
34
38
 
@@ -43,7 +47,6 @@ export type {
43
47
  Organisation,
44
48
  OrganisationMembership,
45
49
  OrganisationContextType,
46
- OrganisationProviderProps,
47
50
  OrganisationSecurityError
48
51
  } from './types/organisation';
49
52
 
@@ -88,7 +91,8 @@ export type { BadgeProps, BadgeVariant } from './components/Badge/Badge';
88
91
  export { Checkbox } from './components/Checkbox/Checkbox';
89
92
  export { Switch } from './components/Switch/Switch';
90
93
  export type { SwitchProps } from './components/Switch/Switch';
91
- export { Progress } from './components/Progress/Progress';
94
+ export { Progress } from './components/Progress';
95
+ export type { ProgressProps } from './components/Progress';
92
96
 
93
97
  // ADVANCED UI COMPONENTS
94
98
  export {
@@ -180,9 +184,10 @@ export {
180
184
  } from './components/DataTable/utils/aggregationUtils';
181
185
 
182
186
  // FORM COMPONENTS
183
- export { Form } from './components/Form/Form';
184
- export { LoginForm } from './components/LoginForm/LoginForm';
185
- export type { LoginFormProps } from './components/LoginForm/LoginForm';
187
+ export { Form, FormField } from './components/Form/Form';
188
+ export type { FormProps, FormFieldProps } from './components/Form/Form';
189
+ export { LoginForm } from './components/LoginForm';
190
+ export type { LoginFormProps } from './components/LoginForm';
186
191
 
187
192
  // LAYOUT COMPONENTS
188
193
  export { Header } from './components/Header/Header';
@@ -191,7 +196,7 @@ export type { FooterProps } from './components/Footer/Footer';
191
196
 
192
197
  // NAVIGATION COMPONENTS
193
198
  export { NavigationMenu } from './components/NavigationMenu/NavigationMenu';
194
- export type { NavigationMenuProps, NavigationItem } from './components/NavigationMenu/types';
199
+ export type { NavigationMenuProps, NavigationItem, NavigationMode } from './components/NavigationMenu/NavigationMenu';
195
200
  export { UserMenu } from './components/UserMenu/UserMenu';
196
201
  export type { UserMenuProps } from './components/UserMenu/UserMenu';
197
202
 
@@ -223,7 +228,7 @@ export { createSecureDataAccess } from './utils/security/secureDataAccess';
223
228
  export type { UserProfile } from './types/organisation';
224
229
 
225
230
  // AUTHENTICATION FORMS
226
- export { PasswordChangeForm } from './components/PasswordReset/PasswordChangeForm';
231
+ export { PasswordChangeForm } from './components/PasswordChange/PasswordChangeForm';
227
232
 
228
233
  // UTILS & HOOKS
229
234
  export { useAppConfig } from './hooks/useAppConfig';
@@ -279,6 +284,8 @@ export {
279
284
  export * from './styles';
280
285
  // Direct export of theming utilities for convenience
281
286
  export { parseAndNormalizeEventColours } from './theming/parseEventColours';
287
+ export { applyPalette, clearPalette } from './theming/runtime';
288
+ export type { PaletteData, ColorPalette, ColorShade } from './theming/runtime';
282
289
 
283
290
  // PUBLIC PAGES
284
291
  export * from './hooks/public';
@@ -1,19 +1,83 @@
1
1
  /**
2
- * @file Re-export for OrganisationProvider
2
+ * @file Organisation Provider
3
3
  * @package @jmruthers/pace-core
4
4
  * @module Providers
5
5
  * @since 0.1.0
6
+ *
7
+ * React provider for organisation context.
8
+ * This is a convenience wrapper around OrganisationServiceProvider that
9
+ * automatically gets auth context from UnifiedAuthProvider.
6
10
  *
7
- * Re-exports the service-based OrganisationProvider for backward compatibility.
11
+ * Note: If you're using UnifiedAuthProvider, it already includes
12
+ * OrganisationServiceProvider internally, so this component is mainly
13
+ * for backward compatibility or standalone usage.
8
14
  */
9
15
 
10
- export { OrganisationServiceProvider as OrganisationProvider } from './services/OrganisationServiceProvider';
11
- export type { OrganisationServiceProviderProps as OrganisationProviderProps } from './services/OrganisationServiceProvider';
16
+ import React from 'react';
17
+ import { useUnifiedAuth } from '../providers/services/UnifiedAuthProvider';
18
+ import { OrganisationServiceProvider } from './services/OrganisationServiceProvider';
19
+ import type { OrganisationProviderProps as BaseOrganisationProviderProps } from '../types/organisation';
12
20
 
13
- // Re-export context and hook
14
- export { OrganisationServiceContext, useOrganisationService } from './services/OrganisationServiceProvider';
15
- export type { OrganisationServiceContextType } from './services/OrganisationServiceProvider';
21
+ export interface OrganisationProviderProps extends BaseOrganisationProviderProps {
22
+ children: React.ReactNode;
23
+ requireOrganisationContext?: boolean;
24
+ autoSelectPrimaryOrganisation?: boolean;
25
+ onOrganisationChange?: (organisation: any) => void;
26
+ }
16
27
 
17
- // Re-export convenience hook for backward compatibility
18
- export { useOrganisations } from '../hooks/useOrganisations';
28
+ /**
29
+ * OrganisationProvider component
30
+ *
31
+ * Wraps OrganisationServiceProvider and automatically gets auth context.
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * <UnifiedAuthProvider supabaseClient={supabase} appName="my-app">
36
+ * <OrganisationProvider>
37
+ * <App />
38
+ * </OrganisationProvider>
39
+ * </UnifiedAuthProvider>
40
+ * ```
41
+ */
42
+ export function OrganisationProvider({
43
+ children,
44
+ requireOrganisationContext,
45
+ autoSelectPrimaryOrganisation,
46
+ onOrganisationChange
47
+ }: OrganisationProviderProps) {
48
+ // Get auth context from UnifiedAuthProvider
49
+ const authContext = useUnifiedAuth();
50
+
51
+ // If we're inside UnifiedAuthProvider, it already includes OrganisationServiceProvider
52
+ // So we can just pass through the children
53
+ // However, if the auth context is not available, we need to handle that
54
+ if (!authContext) {
55
+ // If no auth context, we can't provide organisation service
56
+ // This might happen if used outside UnifiedAuthProvider
57
+ // In that case, we should probably throw an error or show a message
58
+ console.warn('OrganisationProvider: No auth context available. Make sure OrganisationProvider is used inside UnifiedAuthProvider.');
59
+ return <>{children}</>;
60
+ }
61
+
62
+ const { supabase, user, session } = authContext;
63
+
64
+ // Wrap with OrganisationServiceProvider
65
+ // Note: The props like requireOrganisationContext, autoSelectPrimaryOrganisation
66
+ // are handled by the OrganisationService internally, not by the provider
67
+ // Note: supabase is mapped to supabaseClient for OrganisationServiceProvider
68
+ if (!supabase) {
69
+ console.warn('OrganisationProvider: No supabase client available.');
70
+ return <>{children}</>;
71
+ }
72
+
73
+ return (
74
+ <OrganisationServiceProvider
75
+ supabaseClient={supabase}
76
+ user={user}
77
+ session={session}
78
+ >
79
+ {children}
80
+ </OrganisationServiceProvider>
81
+ );
82
+ }
19
83