@jmruthers/pace-core 0.5.134 → 0.5.136

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 (522) hide show
  1. package/dist/{DataTable-C7GaRZye.d.ts → DataTable-CWAZZcXC.d.ts} +1 -1
  2. package/dist/{DataTable-A36PJG6N.js → DataTable-CYOHOX3O.js} +25 -13
  3. package/dist/{PublicLoadingSpinner-CUAnTvcg.d.ts → EventLogo-801uofbR.d.ts} +51 -135
  4. package/dist/UnifiedAuthProvider-5E5TUNMS.js +17 -0
  5. package/dist/{UnifiedAuthProvider-BVKmQd9u.d.ts → UnifiedAuthProvider-DJxGTftH.d.ts} +1 -1
  6. package/dist/{api-TNIBJWLM.js → api-45XYYO2A.js} +4 -3
  7. package/dist/{audit-T36HM7IM.js → audit-64X3VJXB.js} +3 -2
  8. package/dist/{chunk-CTJRBUX2.js → chunk-2TWNJ46Y.js} +2 -2
  9. package/dist/{chunk-UJI6WSMD.js → chunk-444EZN6N.js} +3 -3
  10. package/dist/chunk-444EZN6N.js.map +1 -0
  11. package/dist/{chunk-3CG5L6RN.js → chunk-4MT5BGGL.js} +90 -73
  12. package/dist/chunk-4MT5BGGL.js.map +1 -0
  13. package/dist/{chunk-PYUXFQJ3.js → chunk-56XJ3TU6.js} +2 -2
  14. package/dist/chunk-56XJ3TU6.js.map +1 -0
  15. package/dist/chunk-5DPZ5EAT.js +60 -0
  16. package/dist/chunk-5DPZ5EAT.js.map +1 -0
  17. package/dist/{chunk-66C4BSAY.js → chunk-ANBQRTPX.js} +9 -2
  18. package/dist/chunk-ANBQRTPX.js.map +1 -0
  19. package/dist/chunk-APIBCTL2.js +670 -0
  20. package/dist/chunk-APIBCTL2.js.map +1 -0
  21. package/dist/{chunk-GKHF54DI.js → chunk-BESYRHQM.js} +10 -4
  22. package/dist/chunk-BESYRHQM.js.map +1 -0
  23. package/dist/{chunk-WP5I5GLN.js → chunk-BVYWGZVV.js} +112 -97
  24. package/dist/chunk-BVYWGZVV.js.map +1 -0
  25. package/dist/{chunk-GEVIB2UB.js → chunk-ERISIBYU.js} +14 -5
  26. package/dist/chunk-ERISIBYU.js.map +1 -0
  27. package/dist/{chunk-CQZU6TFE.js → chunk-FHWWBIHA.js} +100 -62
  28. package/dist/chunk-FHWWBIHA.js.map +1 -0
  29. package/dist/{chunk-O3NWNXDY.js → chunk-FMUCXFII.js} +2 -2
  30. package/dist/chunk-FMUCXFII.js.map +1 -0
  31. package/dist/{chunk-GVDR7WNV.js → chunk-HJGGOMQ6.js} +194 -518
  32. package/dist/chunk-HJGGOMQ6.js.map +1 -0
  33. package/dist/{chunk-BDZUMRBD.js → chunk-K2WWTH7O.js} +13 -6
  34. package/dist/chunk-K2WWTH7O.js.map +1 -0
  35. package/dist/{chunk-BYXRHAIF.js → chunk-L6PGMCMD.js} +23 -14
  36. package/dist/chunk-L6PGMCMD.js.map +1 -0
  37. package/dist/chunk-LMC26NLJ.js +84 -0
  38. package/dist/chunk-LMC26NLJ.js.map +1 -0
  39. package/dist/{chunk-M6DDYFUD.js → chunk-LS353YLY.js} +19 -16
  40. package/dist/chunk-LS353YLY.js.map +1 -0
  41. package/dist/{chunk-ZYZCRSBD.js → chunk-LTV3XIJJ.js} +16 -11
  42. package/dist/chunk-LTV3XIJJ.js.map +1 -0
  43. package/dist/{chunk-HMNOSGVA.js → chunk-NOHEVYVX.js} +377 -666
  44. package/dist/chunk-NOHEVYVX.js.map +1 -0
  45. package/dist/{chunk-JCQZ6LA7.js → chunk-Q5QRDWKI.js} +9 -3
  46. package/dist/chunk-Q5QRDWKI.js.map +1 -0
  47. package/dist/chunk-S5OFRT4M.js +94 -0
  48. package/dist/chunk-S5OFRT4M.js.map +1 -0
  49. package/dist/{chunk-3DBFLLLU.js → chunk-SBVILCCA.js} +14 -9
  50. package/dist/chunk-SBVILCCA.js.map +1 -0
  51. package/dist/{chunk-TGIY2AR2.js → chunk-SL2YQDR6.js} +4 -3
  52. package/dist/{chunk-TGIY2AR2.js.map → chunk-SL2YQDR6.js.map} +1 -1
  53. package/dist/{chunk-VZ5OR6HD.js → chunk-TVYPTYOY.js} +55 -179
  54. package/dist/chunk-TVYPTYOY.js.map +1 -0
  55. package/dist/{chunk-ZV77RZMU.js → chunk-XARJS7CD.js} +2 -2
  56. package/dist/chunk-XDNLUEXI.js +138 -0
  57. package/dist/chunk-XDNLUEXI.js.map +1 -0
  58. package/dist/{chunk-F64FFPOZ.js → chunk-YLKIDTUK.js} +26 -20
  59. package/dist/chunk-YLKIDTUK.js.map +1 -0
  60. package/dist/{chunk-5F3NDPJV.js → chunk-ZZ2SS7NI.js} +10 -5
  61. package/dist/chunk-ZZ2SS7NI.js.map +1 -0
  62. package/dist/components.d.ts +7 -287
  63. package/dist/components.js +26 -157
  64. package/dist/components.js.map +1 -1
  65. package/dist/{file-reference-C9isKNPn.d.ts → file-reference-C6Gkn77H.d.ts} +1 -1
  66. package/dist/{formatting-DFcCxUEk.d.ts → formatting-CvUXy2mF.d.ts} +1 -1
  67. package/dist/hooks.d.ts +3 -3
  68. package/dist/hooks.js +22 -16
  69. package/dist/hooks.js.map +1 -1
  70. package/dist/index.d.ts +219 -9
  71. package/dist/index.js +49 -31
  72. package/dist/index.js.map +1 -1
  73. package/dist/providers.d.ts +1 -1
  74. package/dist/providers.js +5 -4
  75. package/dist/rbac/index.js +13 -12
  76. package/dist/styles/index.js +2 -1
  77. package/dist/theming/runtime.d.ts +2 -19
  78. package/dist/theming/runtime.js +2 -1
  79. package/dist/{types-D5rqZQXk.d.ts → types-Dfz9dmVH.d.ts} +12 -1
  80. package/dist/types.d.ts +2 -2
  81. package/dist/types.js +1 -1
  82. package/dist/{useInactivityTracker-MRUU55XI.js → useInactivityTracker-TO6ZOF35.js} +3 -2
  83. package/dist/{usePublicRouteParams-Dyt1tzI9.d.ts → usePublicRouteParams-B7PabvuH.d.ts} +1 -1
  84. package/dist/utils.d.ts +195 -232
  85. package/dist/utils.js +173 -331
  86. package/dist/utils.js.map +1 -1
  87. package/dist/{validation-DnhrNMju.d.ts → validation-8npbysjg.d.ts} +26 -8
  88. package/dist/validation.d.ts +261 -10
  89. package/dist/validation.js +82 -440
  90. package/dist/validation.js.map +1 -1
  91. package/docs/api/classes/ColumnFactory.md +1 -1
  92. package/docs/api/classes/ErrorBoundary.md +6 -6
  93. package/docs/api/classes/InvalidScopeError.md +1 -1
  94. package/docs/api/classes/MissingUserContextError.md +1 -1
  95. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  96. package/docs/api/classes/PermissionDeniedError.md +1 -1
  97. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  98. package/docs/api/classes/RBACAuditManager.md +6 -6
  99. package/docs/api/classes/RBACCache.md +1 -1
  100. package/docs/api/classes/RBACEngine.md +7 -7
  101. package/docs/api/classes/RBACError.md +1 -1
  102. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  103. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  104. package/docs/api/classes/StorageUtils.md +1 -1
  105. package/docs/api/enums/FileCategory.md +1 -1
  106. package/docs/api/interfaces/AggregateConfig.md +4 -4
  107. package/docs/api/interfaces/ButtonProps.md +1 -1
  108. package/docs/api/interfaces/CardProps.md +1 -1
  109. package/docs/api/interfaces/ColorPalette.md +1 -1
  110. package/docs/api/interfaces/ColorShade.md +29 -4
  111. package/docs/api/interfaces/DataAccessRecord.md +9 -9
  112. package/docs/api/interfaces/DataRecord.md +1 -1
  113. package/docs/api/interfaces/DataTableAction.md +18 -18
  114. package/docs/api/interfaces/DataTableColumn.md +61 -1
  115. package/docs/api/interfaces/DataTableProps.md +3 -3
  116. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  117. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  118. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +14 -14
  119. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  120. package/docs/api/interfaces/EventLogoProps.md +152 -0
  121. package/docs/api/interfaces/ExportColumn.md +90 -0
  122. package/docs/api/interfaces/ExportOptions.md +126 -0
  123. package/docs/api/interfaces/FileDisplayProps.md +15 -15
  124. package/docs/api/interfaces/FileMetadata.md +1 -1
  125. package/docs/api/interfaces/FileReference.md +1 -1
  126. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  127. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  128. package/docs/api/interfaces/FileUploadProps.md +1 -1
  129. package/docs/api/interfaces/FooterProps.md +1 -1
  130. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  131. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  132. package/docs/api/interfaces/InputProps.md +1 -1
  133. package/docs/api/interfaces/LabelProps.md +1 -1
  134. package/docs/api/interfaces/LoginFormProps.md +1 -1
  135. package/docs/api/interfaces/NavigationAccessRecord.md +10 -10
  136. package/docs/api/interfaces/NavigationContextType.md +9 -9
  137. package/docs/api/interfaces/NavigationGuardProps.md +10 -10
  138. package/docs/api/interfaces/NavigationItem.md +1 -1
  139. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  140. package/docs/api/interfaces/NavigationProviderProps.md +7 -7
  141. package/docs/api/interfaces/Organisation.md +1 -1
  142. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  143. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  144. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  145. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  146. package/docs/api/interfaces/PaceAppLayoutProps.md +27 -27
  147. package/docs/api/interfaces/PaceLoginPageProps.md +4 -4
  148. package/docs/api/interfaces/PageAccessRecord.md +8 -8
  149. package/docs/api/interfaces/PagePermissionContextType.md +8 -8
  150. package/docs/api/interfaces/PagePermissionGuardProps.md +11 -11
  151. package/docs/api/interfaces/PagePermissionProviderProps.md +7 -7
  152. package/docs/api/interfaces/PaletteData.md +4 -4
  153. package/docs/api/interfaces/PermissionEnforcerProps.md +11 -11
  154. package/docs/api/interfaces/ProtectedRouteProps.md +6 -6
  155. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  156. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  157. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  158. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  159. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  160. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  161. package/docs/api/interfaces/RBACConfig.md +1 -1
  162. package/docs/api/interfaces/RBACLogger.md +1 -1
  163. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  164. package/docs/api/interfaces/RoleBasedRouterContextType.md +8 -8
  165. package/docs/api/interfaces/RoleBasedRouterProps.md +10 -10
  166. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  167. package/docs/api/interfaces/RouteAccessRecord.md +10 -10
  168. package/docs/api/interfaces/RouteConfig.md +10 -10
  169. package/docs/api/interfaces/SecureDataContextType.md +9 -9
  170. package/docs/api/interfaces/SecureDataProviderProps.md +8 -8
  171. package/docs/api/interfaces/SessionRestorationLoaderProps.md +21 -0
  172. package/docs/api/interfaces/StorageConfig.md +1 -1
  173. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  174. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  175. package/docs/api/interfaces/StorageListOptions.md +1 -1
  176. package/docs/api/interfaces/StorageListResult.md +1 -1
  177. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  178. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  179. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  180. package/docs/api/interfaces/StyleImport.md +1 -1
  181. package/docs/api/interfaces/SwitchProps.md +1 -1
  182. package/docs/api/interfaces/ToastActionElement.md +1 -1
  183. package/docs/api/interfaces/ToastProps.md +1 -1
  184. package/docs/api/interfaces/UnifiedAuthContextType.md +53 -53
  185. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  186. package/docs/api/interfaces/UseInactivityTrackerOptions.md +9 -9
  187. package/docs/api/interfaces/UseInactivityTrackerReturn.md +8 -8
  188. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  189. package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
  190. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +4 -4
  191. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +9 -9
  192. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  193. package/docs/api/interfaces/UseResolvedScopeOptions.md +4 -4
  194. package/docs/api/interfaces/UseResolvedScopeReturn.md +4 -4
  195. package/docs/api/interfaces/UserEventAccess.md +11 -11
  196. package/docs/api/interfaces/UserMenuProps.md +1 -1
  197. package/docs/api/interfaces/UserProfile.md +1 -1
  198. package/docs/api/modules.md +648 -212
  199. package/docs/api-reference/components.md +106 -26
  200. package/docs/architecture/README.md +0 -2
  201. package/docs/implementation-guides/data-tables.md +277 -13
  202. package/docs/implementation-guides/forms.md +1 -16
  203. package/docs/implementation-guides/permission-enforcement.md +8 -2
  204. package/examples/README.md +30 -14
  205. package/examples/STRUCTURE.md +125 -0
  206. package/examples/components/DataTable/HierarchicalActionsExample.tsx +421 -0
  207. package/examples/components/DataTable/HierarchicalExample.tsx +475 -0
  208. package/examples/components/DataTable/InitialPageSizeExample.tsx +177 -0
  209. package/examples/components/DataTable/PerformanceExample.tsx +506 -0
  210. package/examples/components/DataTable/index.ts +13 -0
  211. package/examples/components/Dialog/BasicHtmlTest.tsx +55 -0
  212. package/examples/components/Dialog/DebugHtmlExample.tsx +68 -0
  213. package/examples/components/Dialog/HtmlDialogExample.tsx +202 -0
  214. package/examples/components/Dialog/ScrollableDialogExample.tsx +290 -0
  215. package/examples/components/Dialog/SimpleHtmlTest.tsx +61 -0
  216. package/examples/components/Dialog/SmartDialogExample.tsx +322 -0
  217. package/examples/components/Dialog/index.ts +15 -0
  218. package/examples/components/index.ts +11 -0
  219. package/examples/features/index.ts +12 -0
  220. package/examples/{public-pages → features/public-pages}/CorrectPublicPageImplementation.tsx +1 -1
  221. package/examples/{public-pages → features/public-pages}/PublicEventPage.tsx +1 -1
  222. package/examples/{public-pages → features/public-pages}/PublicPageApp.tsx +1 -1
  223. package/examples/{public-pages → features/public-pages}/PublicPageUsageExample.tsx +1 -1
  224. package/examples/index.ts +11 -3
  225. package/package.json +30 -10
  226. package/src/components/Alert/Alert.tsx +1 -1
  227. package/src/components/Avatar/Avatar.tsx +1 -1
  228. package/src/components/Button/Button.tsx +1 -1
  229. package/src/components/Card/Card.tsx +1 -1
  230. package/src/components/Checkbox/Checkbox.tsx +1 -1
  231. package/src/components/DataTable/DataTable.test.tsx +1 -1
  232. package/src/components/DataTable/DataTable.tsx +1 -30
  233. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +562 -0
  234. package/src/components/DataTable/__tests__/styles.test.ts +2 -2
  235. package/src/components/DataTable/components/ActionButtons.tsx +0 -15
  236. package/src/components/DataTable/components/DataTableCore.tsx +4 -185
  237. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +1 -1
  238. package/src/components/DataTable/components/DataTableModals.tsx +1 -27
  239. package/src/components/DataTable/components/EditableRow.tsx +1 -1
  240. package/src/components/DataTable/components/ImportModal.tsx +2 -14
  241. package/src/components/DataTable/components/PaginationControls.tsx +1 -1
  242. package/src/components/DataTable/components/UnifiedTableBody.tsx +109 -82
  243. package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +1 -1
  244. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +1 -1
  245. package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +1 -1
  246. package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +1 -1
  247. package/src/components/DataTable/examples/GroupingAggregationExample.tsx +273 -0
  248. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +1 -1
  249. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +1 -1
  250. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +1 -1
  251. package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +1 -1
  252. package/src/components/DataTable/hooks/useDataTablePermissions.ts +2 -23
  253. package/src/components/DataTable/index.ts +4 -0
  254. package/src/components/DataTable/styles.ts +1 -1
  255. package/src/components/DataTable/types.ts +13 -0
  256. package/src/components/DataTable/utils/__tests__/exportUtils.test.ts +1 -1
  257. package/src/components/DataTable/utils/aggregationUtils.ts +161 -0
  258. package/src/components/DataTable/utils/exportUtils.ts +1 -1
  259. package/src/components/DataTable/utils/flexibleImport.ts +1 -11
  260. package/src/components/DataTable/utils/index.ts +1 -0
  261. package/src/components/DataTable/utils/paginationUtils.ts +1 -1
  262. package/src/components/Dialog/Dialog.tsx +2 -2
  263. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +35 -7
  264. package/src/components/ErrorBoundary/ErrorBoundary.tsx +5 -4
  265. package/src/components/EventSelector/EventSelector.tsx +3 -2
  266. package/src/components/FileDisplay/FileDisplay.tsx +2 -36
  267. package/src/components/FileUpload/FileUpload.test.tsx +2 -2
  268. package/src/components/FileUpload/FileUpload.tsx +2 -2
  269. package/src/components/Footer/Footer.tsx +1 -1
  270. package/src/components/Form/Form.test.tsx +4 -509
  271. package/src/components/Form/Form.tsx +1 -1
  272. package/src/components/Form/FormField.tsx +1 -1
  273. package/src/components/Form/index.ts +0 -12
  274. package/src/components/Header/Header.tsx +1 -1
  275. package/src/components/Input/Input.tsx +1 -1
  276. package/src/components/Label/Label.tsx +1 -1
  277. package/src/components/LoginForm/LoginForm.tsx +1 -1
  278. package/src/components/NavigationMenu/NavigationMenu.test.tsx +19 -3
  279. package/src/components/NavigationMenu/NavigationMenu.tsx +9 -8
  280. package/src/components/OrganisationSelector/OrganisationSelector.tsx +4 -3
  281. package/src/components/PaceAppLayout/PaceAppLayout.tsx +14 -12
  282. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +0 -16
  283. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +0 -1
  284. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -9
  285. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +35 -3
  286. package/src/components/PaceLoginPage/PaceLoginPage.tsx +13 -12
  287. package/src/components/PasswordReset/PasswordChangeForm.tsx +1 -1
  288. package/src/components/PasswordReset/index.ts +0 -2
  289. package/src/components/Progress/Progress.tsx +1 -1
  290. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +35 -8
  291. package/src/components/ProtectedRoute/ProtectedRoute.tsx +3 -2
  292. package/src/components/PublicLayout/PublicErrorBoundary.tsx +1 -1
  293. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +1 -1
  294. package/src/components/PublicLayout/PublicPageContextChecker.tsx +44 -43
  295. package/src/components/PublicLayout/PublicPageFooter.tsx +1 -1
  296. package/src/components/PublicLayout/PublicPageHeader.tsx +1 -15
  297. package/src/components/PublicLayout/PublicPageProvider.tsx +3 -2
  298. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +2 -0
  299. package/src/components/PublicLayout/index.ts +4 -2
  300. package/src/components/Select/Select.tsx +1 -1
  301. package/src/components/{SessionRestorationLoader.tsx → SessionRestorationLoader/SessionRestorationLoader.tsx} +3 -2
  302. package/src/components/SessionRestorationLoader/index.ts +3 -0
  303. package/src/components/Switch/Switch.tsx +1 -1
  304. package/src/components/Table/Table.tsx +1 -1
  305. package/src/components/Toast/Toast.tsx +1 -1
  306. package/src/components/Tooltip/Tooltip.tsx +1 -1
  307. package/src/components/index.ts +4 -10
  308. package/src/hooks/__tests__/hooks.integration.test.tsx +37 -22
  309. package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +33 -17
  310. package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +28 -3
  311. package/src/hooks/__tests__/useFileDisplay.unit.test.ts +36 -9
  312. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +26 -2
  313. package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +19 -6
  314. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -4
  315. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +17 -4
  316. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +26 -6
  317. package/src/hooks/__tests__/usePublicFileDisplay.test.ts +16 -6
  318. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +3 -3
  319. package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +17 -3
  320. package/src/hooks/public/usePublicEvent.ts +7 -6
  321. package/src/hooks/public/usePublicEventLogo.ts +7 -4
  322. package/src/hooks/public/usePublicFileDisplay.ts +6 -150
  323. package/src/hooks/useComponentPerformance.ts +4 -1
  324. package/src/hooks/useDataTablePerformance.ts +4 -3
  325. package/src/hooks/useEventTheme.test.ts +18 -5
  326. package/src/hooks/useEventTheme.ts +4 -1
  327. package/src/hooks/useEvents.ts +2 -0
  328. package/src/hooks/useFileDisplay.ts +9 -8
  329. package/src/hooks/useFileReference.ts +4 -1
  330. package/src/hooks/useFileUrl.ts +4 -1
  331. package/src/hooks/useInactivityTracker.ts +5 -4
  332. package/src/hooks/useOrganisationSecurity.test.ts +33 -12
  333. package/src/hooks/useOrganisationSecurity.ts +8 -7
  334. package/src/hooks/usePerformanceMonitor.ts +6 -3
  335. package/src/hooks/usePermissionCache.ts +13 -6
  336. package/src/hooks/useSecureDataAccess.test.ts +2 -2
  337. package/src/hooks/useSecureDataAccess.ts +9 -8
  338. package/src/hooks/useSessionRestoration.ts +4 -1
  339. package/src/hooks/useStorage.ts +4 -1
  340. package/src/index.ts +25 -8
  341. package/src/providers/services/AuthServiceProvider.tsx +3 -2
  342. package/src/providers/services/EventServiceProvider.tsx +2 -1
  343. package/src/providers/services/InactivityServiceProvider.tsx +2 -1
  344. package/src/providers/services/OrganisationServiceProvider.tsx +2 -1
  345. package/src/providers/services/UnifiedAuthProvider.tsx +4 -3
  346. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +22 -2
  347. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +24 -2
  348. package/src/rbac/__tests__/cache-invalidation.test.ts +20 -6
  349. package/src/rbac/api.ts +5 -2
  350. package/src/rbac/audit-enhanced.ts +6 -6
  351. package/src/rbac/audit.test.ts +60 -38
  352. package/src/rbac/audit.ts +8 -8
  353. package/src/rbac/cache-invalidation.ts +7 -4
  354. package/src/rbac/components/EnhancedNavigationMenu.tsx +11 -5
  355. package/src/rbac/components/NavigationGuard.tsx +7 -3
  356. package/src/rbac/components/NavigationProvider.tsx +6 -3
  357. package/src/rbac/components/PagePermissionGuard.tsx +28 -16
  358. package/src/rbac/components/PagePermissionProvider.tsx +4 -1
  359. package/src/rbac/components/PermissionEnforcer.tsx +9 -3
  360. package/src/rbac/components/RoleBasedRouter.tsx +3 -1
  361. package/src/rbac/components/SecureDataProvider.tsx +7 -3
  362. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +87 -61
  363. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +83 -33
  364. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +36 -13
  365. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +2 -2
  366. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +22 -8
  367. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +19 -6
  368. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +43 -17
  369. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +42 -17
  370. package/src/rbac/engine.ts +15 -7
  371. package/src/rbac/hooks/usePermissions.ts +7 -3
  372. package/src/rbac/hooks/useResolvedScope.test.ts +2 -2
  373. package/src/rbac/hooks/useResolvedScope.ts +10 -7
  374. package/src/rbac/permissions.ts +5 -2
  375. package/src/rbac/security.test.ts +27 -16
  376. package/src/rbac/security.ts +5 -4
  377. package/src/services/AuthService.ts +22 -21
  378. package/src/services/EventService.ts +12 -12
  379. package/src/services/InactivityService.ts +5 -4
  380. package/src/services/OrganisationService.ts +26 -25
  381. package/src/services/__tests__/AuthService.test.ts +51 -19
  382. package/src/services/__tests__/EventService.test.ts +37 -5
  383. package/src/services/__tests__/InactivityService.test.ts +38 -4
  384. package/src/services/__tests__/OrganisationService.test.ts +3 -8
  385. package/src/services/base/BaseService.ts +3 -1
  386. package/src/theming/__tests__/runtime.test.ts +21 -12
  387. package/src/theming/parseEventColours.ts +5 -19
  388. package/src/theming/runtime.ts +8 -4
  389. package/src/types/validation.ts +2 -29
  390. package/src/utils/__tests__/appConfig.unit.test.ts +1 -1
  391. package/src/utils/__tests__/audit.unit.test.ts +1 -1
  392. package/src/utils/__tests__/auth-utils.unit.test.ts +1 -1
  393. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +19 -19
  394. package/src/utils/__tests__/cn.unit.test.ts +1 -1
  395. package/src/utils/__tests__/debugLogger.test.ts +1 -1
  396. package/src/utils/__tests__/deviceFingerprint.unit.test.ts +1 -1
  397. package/src/utils/__tests__/dynamicUtils.unit.test.ts +1 -1
  398. package/src/utils/__tests__/formatting.unit.test.ts +1 -1
  399. package/src/utils/__tests__/lazyLoad.unit.test.tsx +1 -1
  400. package/src/utils/__tests__/logger.unit.test.ts +1 -1
  401. package/src/utils/__tests__/organisationContext.unit.test.ts +1 -1
  402. package/src/utils/__tests__/performanceBenchmark.test.ts +1 -1
  403. package/src/utils/__tests__/performanceBudgets.unit.test.ts +1 -1
  404. package/src/utils/__tests__/permissionTypes.unit.test.ts +1 -1
  405. package/src/utils/__tests__/permissionUtils.unit.test.ts +1 -1
  406. package/src/utils/__tests__/sanitization.unit.test.ts +1 -1
  407. package/src/utils/__tests__/schemaUtils.unit.test.ts +1 -1
  408. package/src/utils/__tests__/secureDataAccess.unit.test.ts +1 -1
  409. package/src/utils/__tests__/secureErrors.unit.test.ts +33 -15
  410. package/src/utils/__tests__/secureStorage.unit.test.ts +1 -1
  411. package/src/utils/__tests__/security.unit.test.ts +40 -18
  412. package/src/utils/__tests__/securityMonitor.unit.test.ts +1 -1
  413. package/src/utils/__tests__/sessionTracking.unit.test.ts +40 -29
  414. package/src/utils/__tests__/validationUtils.unit.test.ts +19 -6
  415. package/src/utils/{appIdResolver.test.ts → app/appIdResolver.test.ts} +28 -30
  416. package/src/utils/{appIdResolver.ts → app/appIdResolver.ts} +8 -5
  417. package/src/utils/{appNameResolver.test.ts → app/appNameResolver.test.ts} +1 -1
  418. package/src/utils/{appNameResolver.ts → app/appNameResolver.ts} +5 -1
  419. package/src/utils/{organisationContext.ts → context/organisationContext.ts} +6 -3
  420. package/src/utils/{sessionTracking.ts → context/sessionTracking.ts} +11 -12
  421. package/src/utils/{logger.ts → core/logger.ts} +4 -2
  422. package/src/utils/{deviceFingerprint.ts → device/deviceFingerprint.ts} +1 -1
  423. package/src/utils/{lazyLoad.tsx → dynamic/lazyLoad.tsx} +2 -2
  424. package/src/utils/{file-reference.test.ts → file-reference/__tests__/file-reference.test.ts} +5 -5
  425. package/src/utils/{file-reference.ts → file-reference/index.ts} +20 -38
  426. package/src/utils/index.ts +32 -54
  427. package/src/utils/{secureErrors.ts → security/secureErrors.ts} +6 -3
  428. package/src/utils/{security.ts → security/security.ts} +5 -2
  429. package/src/utils/storage/__tests__/helpers.unit.test.ts +1 -4
  430. package/src/utils/storage/helpers.ts +15 -8
  431. package/src/{components/Dialog/utils/__tests__/safeHtml.unit.test.ts → utils/validation/__tests__/htmlSanitization.unit.test.ts} +9 -15
  432. package/src/{validation → utils/validation}/csrf.ts +1 -1
  433. package/src/{components/Dialog/utils/safeHtml.ts → utils/validation/htmlSanitization.ts} +9 -10
  434. package/src/utils/validation/index.ts +79 -0
  435. package/src/utils/{sanitization.ts → validation/sanitization.ts} +71 -2
  436. package/src/{validation/schemaUtils.ts → utils/validation/schema.ts} +11 -6
  437. package/src/{validation → utils/validation}/sqlInjectionProtection.ts +2 -0
  438. package/src/utils/{validationUtils.ts → validation/validationUtils.ts} +4 -1
  439. package/src/validation/index.ts +3 -34
  440. package/dist/UnifiedAuthProvider-CQDZRJIS.js +0 -16
  441. package/dist/chunk-24MKLB7U.js +0 -81
  442. package/dist/chunk-24MKLB7U.js.map +0 -1
  443. package/dist/chunk-3CG5L6RN.js.map +0 -1
  444. package/dist/chunk-3DBFLLLU.js.map +0 -1
  445. package/dist/chunk-5F3NDPJV.js.map +0 -1
  446. package/dist/chunk-66C4BSAY.js.map +0 -1
  447. package/dist/chunk-BDZUMRBD.js.map +0 -1
  448. package/dist/chunk-BYXRHAIF.js.map +0 -1
  449. package/dist/chunk-CDQ3PX7L.js +0 -18
  450. package/dist/chunk-CDQ3PX7L.js.map +0 -1
  451. package/dist/chunk-CQZU6TFE.js.map +0 -1
  452. package/dist/chunk-F64FFPOZ.js.map +0 -1
  453. package/dist/chunk-GEVIB2UB.js.map +0 -1
  454. package/dist/chunk-GKHF54DI.js.map +0 -1
  455. package/dist/chunk-GVDR7WNV.js.map +0 -1
  456. package/dist/chunk-HMNOSGVA.js.map +0 -1
  457. package/dist/chunk-JCQZ6LA7.js.map +0 -1
  458. package/dist/chunk-M6DDYFUD.js.map +0 -1
  459. package/dist/chunk-O3NWNXDY.js.map +0 -1
  460. package/dist/chunk-PYUXFQJ3.js.map +0 -1
  461. package/dist/chunk-UJI6WSMD.js.map +0 -1
  462. package/dist/chunk-VZ5OR6HD.js.map +0 -1
  463. package/dist/chunk-WP5I5GLN.js.map +0 -1
  464. package/dist/chunk-ZYZCRSBD.js.map +0 -1
  465. package/src/components/Dialog/README.md +0 -804
  466. package/src/components/Form/FormErrorSummary.tsx +0 -113
  467. package/src/components/Form/FormFieldset.tsx +0 -127
  468. package/src/components/Form/FormLiveRegion.tsx +0 -198
  469. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  470. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  471. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  472. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  473. package/src/components/PublicLayout/__tests__/PublicPageDebugger.test.tsx +0 -185
  474. package/src/examples/CorrectPublicPageImplementation.tsx +0 -304
  475. package/src/examples/PublicEventPage.tsx +0 -287
  476. package/src/examples/PublicPageApp.tsx +0 -321
  477. package/src/examples/PublicPageUsageExample.tsx +0 -218
  478. package/src/utils/schemaUtils.ts +0 -37
  479. package/src/validation/__tests__/common.unit.test.ts +0 -101
  480. package/src/validation/__tests__/csrf.unit.test.ts +0 -365
  481. package/src/validation/__tests__/passwordSchema.unit.test.ts +0 -203
  482. package/src/validation/__tests__/sanitization.unit.test.ts +0 -250
  483. package/src/validation/__tests__/schemaUtils.unit.test.ts +0 -451
  484. package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +0 -462
  485. package/src/validation/__tests__/user.unit.test.ts +0 -440
  486. package/src/validation/sanitization.ts +0 -96
  487. /package/dist/{DataTable-A36PJG6N.js.map → DataTable-CYOHOX3O.js.map} +0 -0
  488. /package/dist/{UnifiedAuthProvider-CQDZRJIS.js.map → UnifiedAuthProvider-5E5TUNMS.js.map} +0 -0
  489. /package/dist/{api-TNIBJWLM.js.map → api-45XYYO2A.js.map} +0 -0
  490. /package/dist/{audit-T36HM7IM.js.map → audit-64X3VJXB.js.map} +0 -0
  491. /package/dist/{chunk-CTJRBUX2.js.map → chunk-2TWNJ46Y.js.map} +0 -0
  492. /package/dist/{chunk-ZV77RZMU.js.map → chunk-XARJS7CD.js.map} +0 -0
  493. /package/dist/{useInactivityTracker-MRUU55XI.js.map → useInactivityTracker-TO6ZOF35.js.map} +0 -0
  494. /package/examples/{public-pages → features/public-pages}/index.ts +0 -0
  495. /package/examples/{RBAC → features/rbac}/CompleteRBACExample.tsx +0 -0
  496. /package/examples/{RBAC → features/rbac}/EventBasedApp.tsx +0 -0
  497. /package/examples/{RBAC → features/rbac}/PermissionExample.tsx +0 -0
  498. /package/examples/{RBAC → features/rbac}/index.ts +0 -0
  499. /package/src/utils/{appConfig.ts → app/appConfig.ts} +0 -0
  500. /package/src/utils/{appNameResolver.simple.test.ts → app/appNameResolver.simple.test.ts} +0 -0
  501. /package/src/utils/{audit.ts → audit/audit.ts} +0 -0
  502. /package/src/utils/{organisationContext.test.ts → context/organisationContext.test.ts} +0 -0
  503. /package/src/utils/{cn.ts → core/cn.ts} +0 -0
  504. /package/src/utils/{debugLogger.ts → core/debugLogger.ts} +0 -0
  505. /package/src/utils/{dynamicUtils.ts → dynamic/dynamicUtils.ts} +0 -0
  506. /package/src/utils/{formatDate.test.ts → formatting/formatDate.test.ts} +0 -0
  507. /package/src/utils/{formatting.ts → formatting/formatting.ts} +0 -0
  508. /package/src/utils/{bundleAnalysis.ts → performance/bundleAnalysis.ts} +0 -0
  509. /package/src/utils/{performanceBenchmark.ts → performance/performanceBenchmark.ts} +0 -0
  510. /package/src/utils/{performanceBudgets.ts → performance/performanceBudgets.ts} +0 -0
  511. /package/src/utils/{permissionTypes.ts → permissions/permissionTypes.ts} +0 -0
  512. /package/src/utils/{permissionUtils.test.ts → permissions/permissionUtils.test.ts} +0 -0
  513. /package/src/utils/{permissionUtils.ts → permissions/permissionUtils.ts} +0 -0
  514. /package/src/utils/{auth-utils.ts → security/auth-utils.ts} +0 -0
  515. /package/src/utils/{secureDataAccess.test.ts → security/secureDataAccess.test.ts} +0 -0
  516. /package/src/utils/{secureDataAccess.ts → security/secureDataAccess.ts} +0 -0
  517. /package/src/utils/{secureStorage.ts → security/secureStorage.ts} +0 -0
  518. /package/src/utils/{securityMonitor.ts → security/securityMonitor.ts} +0 -0
  519. /package/src/{validation → utils/validation}/common.ts +0 -0
  520. /package/src/{validation → utils/validation}/passwordSchema.ts +0 -0
  521. /package/src/{validation → utils/validation}/user.ts +0 -0
  522. /package/src/utils/{validation.ts → validation/validation.ts} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { a as UnifiedAuthContextType, c as UnifiedAuthProvider, b as UnifiedAuthProviderProps, U as UserEventAccess, u as useUnifiedAuth } from './UnifiedAuthProvider-BVKmQd9u.js';
2
- export { a as cn, c as createSecureDataAccess, j as formatCompactNumber, e as formatCurrency, f as formatDate, k as formatFileSize, h as formatNumber, i as formatPercent, g as getAppConfig, d as getCurrentAppId, b as getCurrentAppName, s as setAppConfig, u as useSessionTracking } from './formatting-DFcCxUEk.js';
1
+ export { b as UnifiedAuthContextType, U as UnifiedAuthProvider, a as UnifiedAuthProviderProps, c as UserEventAccess, u as useUnifiedAuth } from './UnifiedAuthProvider-DJxGTftH.js';
2
+ export { a as cn, c as createSecureDataAccess, j as formatCompactNumber, e as formatCurrency, f as formatDate, k as formatFileSize, h as formatNumber, i as formatPercent, g as getAppConfig, d as getCurrentAppId, b as getCurrentAppName, s as setAppConfig, u as useSessionTracking } from './formatting-CvUXy2mF.js';
3
3
  import { m as InactivityService, n as EventService, o as OrganisationService, A as AuthService } from './AuthService-DYuQPJj6.js';
4
4
  export { d as EventProvider, k as InactivityProvider, g as OrganisationProvider } from './AuthService-DYuQPJj6.js';
5
5
  import { e as OrganisationContextType } from './organisation-D6qRDtbF.js';
@@ -8,14 +8,14 @@ import { E as Event } from './unified-DQ4VcT7H.js';
8
8
  import { S as SessionRestorationState } from './auth-DReDSLq9.js';
9
9
  import * as react_jsx_runtime from 'react/jsx-runtime';
10
10
  export { ALL_PERMISSIONS, AccessLevel, AccessLevelGuard, AllPermissions, CACHE_PATTERNS, DataAccessRecord, EVENT_APP_PERMISSIONS, EnhancedNavigationMenu, EnhancedNavigationMenuProps, EventAppRole, EventAppRoleData, GLOBAL_PERMISSIONS, GlobalRole, GrantEventAppRoleParams, InvalidScopeError, LogLevel, MissingUserContextError, NavigationAccessRecord, NavigationContextType, NavigationGuard, NavigationGuardProps, NavigationProvider, NavigationProviderProps, ORGANISATION_PERMISSIONS, Operation, OrganisationContextRequiredError, OrganisationRole, PAGE_PERMISSIONS, PageAccessRecord, PagePermissionContextType, PagePermissionGuard, PagePermissionGuardProps, PagePermissionProvider, PagePermissionProviderProps, Permission, PermissionCheck, PermissionDeniedError, PermissionEnforcer, PermissionEnforcerProps, PermissionGuard, PermissionMap, RBACAuditManager, RBACCache, RBACConfig, RBACEngine, RBACError, RBACLogger, RBACNotInitializedError, RevokeEventAppRoleParams, RoleBasedRouter, RoleBasedRouterContextType, RoleBasedRouterProps, RoleManagementResult, RouteAccessRecord, RouteConfig, Scope, SecureDataContextType, SecureDataProvider, SecureDataProviderProps, SecureSupabaseClient, UUID, UseResolvedScopeOptions, UseResolvedScopeReturn, createAuditManager, createRBACConfig, createRBACEngine, createRBACExpressMiddleware, createRBACMiddleware, createSecureClient, emitAuditEvent, fromSupabaseClient, getAccessLevel, getGlobalAuditManager, getPermissionMap, getPermissionsForRole, getRBACConfig, getRBACLogger, getRoleContext, hasAllPermissions, hasAnyPermission, hasAnyPermissionCached, hasPermission, hasPermissionCached, isDebugMode, isDevelopmentMode, isPermitted, isPermittedCached, isValidPermission, rbacCache, resolveAppContext, setGlobalAuditManager, setupRBAC, useAccessLevel, useCachedPermissions, useCan, useHasAllPermissions, useHasAnyPermission, useMultiplePermissions, useNavigationPermissions, usePagePermissions, usePermissions, useRBAC, useResolvedScope, useRoleBasedRouter, useRoleManagement, useSecureData, withAccessLevelGuard, withPermissionGuard, withRoleGuard } from './rbac/index.js';
11
- export { A as Alert, m as AlertDescription, l as AlertTitle, n as Avatar, p as AvatarFallback, o as AvatarImage, B as Button, a as ButtonProps, C as Card, g as CardActions, f as CardContent, e as CardDescription, c as CardFooter, b as CardHeader, h as CardProps, d as CardTitle, q as Checkbox, b3 as DefaultPublicErrorFallback, D as Dialog, K as DialogBody, G as DialogClose, H as DialogContent, O as DialogDescription, M as DialogFooter, J as DialogHeader, E as DialogOverlay, z as DialogPortal, N as DialogTitle, F as DialogTrigger, aB as ErrorBoundary, aG as EventSelector, aK as FileDisplay, aL as FileDisplayProps, aI as FileUpload, aJ as FileUploadProps, ar as Footer, as as FooterProps, am as Form, aq as Header, I as Input, j as InputProps, L as Label, k as LabelProps, aE as LoadingSpinner, ao as LoginForm, ap as LoginFormProps, ax as NavigationItem, av as NavigationMenu, aw as NavigationMenuProps, ay as OrganisationSelector, be as PaceAppLayout, bd as PaceAppLayoutProps, bg as PaceLoginPage, bf as PaceLoginPageProps, aH as PasswordResetForm, P as Progress, at as ProtectedRoute, au as ProtectedRouteProps, b1 as PublicErrorBoundary, ba as PublicErrorBoundaryProps, bb as PublicErrorBoundaryState, b6 as PublicLoadingSkeleton, b4 as PublicLoadingSpinner, b5 as PublicLoadingSpinnerFullPage, bc as PublicLoadingSpinnerProps, b0 as PublicPageContextChecker, a_ as PublicPageDebugger, a$ as PublicPageDiagnostic, aZ as PublicPageFooter, b9 as PublicPageFooterProps, aV as PublicPageHeader, b8 as PublicPageHeaderProps, aT as PublicPageLayout, b7 as PublicPageLayoutProps, aW as PublicPageProvider, $ as Select, a3 as SelectContent, a0 as SelectGroup, a5 as SelectItem, a4 as SelectLabel, a6 as SelectSeparator, a2 as SelectTrigger, a1 as SelectValue, aF as SessionRestorationLoader, S as Switch, r as SwitchProps, T as Table, t as TableBody, u as TableCaption, v as TableCell, w as TableFooter, x as TableHead, s as TableHeader, y as TableRow, a7 as Toast, a9 as ToastAction, af as ToastActionElement, ae as ToastClose, ad as ToastDescription, ag as ToastProps, aa as ToastProvider, ac as ToastTitle, ab as ToastViewport, a8 as Toaster, ah as Tooltip, aj as TooltipContent, ak as TooltipProvider, al as TooltipRoot, ai as TooltipTrigger, aS as UseFileReferenceForRecordReturn, aQ as UseFileReferenceOptions, aR as UseFileReferenceReturn, aA as UserMenu, bh as UserMenuProps, b2 as useErrorBoundary, aM as useFileReference, aO as useFileReferenceById, aN as useFileReferenceForRecord, aP as useFilesByCategory, aY as useIsPublicPage, aU as usePublicPageContext, aX as usePublicPageProviderContext } from './PublicLoadingSpinner-CUAnTvcg.js';
11
+ export { A as Alert, m as AlertDescription, l as AlertTitle, n as Avatar, p as AvatarFallback, o as AvatarImage, B as Button, a as ButtonProps, C as Card, g as CardActions, f as CardContent, e as CardDescription, c as CardFooter, b as CardHeader, h as CardProps, d as CardTitle, q as Checkbox, b1 as DefaultPublicErrorFallback, D as Dialog, K as DialogBody, G as DialogClose, H as DialogContent, O as DialogDescription, M as DialogFooter, J as DialogHeader, E as DialogOverlay, z as DialogPortal, N as DialogTitle, F as DialogTrigger, aB as ErrorBoundary, b5 as EventLogo, b6 as EventLogoCompact, b7 as EventLogoLarge, b8 as EventLogoProps, aH as EventSelector, aK as FileDisplay, aL as FileDisplayProps, aI as FileUpload, aJ as FileUploadProps, ar as Footer, as as FooterProps, am as Form, aq as Header, I as Input, j as InputProps, L as Label, k as LabelProps, aE as LoadingSpinner, ao as LoginForm, ap as LoginFormProps, ax as NavigationItem, av as NavigationMenu, aw as NavigationMenuProps, ay as OrganisationSelector, bg as PaceAppLayout, bf as PaceAppLayoutProps, bi as PaceLoginPage, bh as PaceLoginPageProps, P as Progress, at as ProtectedRoute, au as ProtectedRouteProps, a$ as PublicErrorBoundary, bc as PublicErrorBoundaryProps, bd as PublicErrorBoundaryState, b4 as PublicLoadingSkeleton, b2 as PublicLoadingSpinner, b3 as PublicLoadingSpinnerFullPage, be as PublicLoadingSpinnerProps, a_ as PublicPageContextChecker, aZ as PublicPageFooter, bb as PublicPageFooterProps, aV as PublicPageHeader, ba as PublicPageHeaderProps, aT as PublicPageLayout, b9 as PublicPageLayoutProps, aW as PublicPageProvider, $ as Select, a3 as SelectContent, a0 as SelectGroup, a5 as SelectItem, a4 as SelectLabel, a6 as SelectSeparator, a2 as SelectTrigger, a1 as SelectValue, aF as SessionRestorationLoader, aG as SessionRestorationLoaderProps, S as Switch, r as SwitchProps, T as Table, t as TableBody, u as TableCaption, v as TableCell, w as TableFooter, x as TableHead, s as TableHeader, y as TableRow, a7 as Toast, a9 as ToastAction, af as ToastActionElement, ae as ToastClose, ad as ToastDescription, ag as ToastProps, aa as ToastProvider, ac as ToastTitle, ab as ToastViewport, a8 as Toaster, ah as Tooltip, aj as TooltipContent, ak as TooltipProvider, al as TooltipRoot, ai as TooltipTrigger, aS as UseFileReferenceForRecordReturn, aQ as UseFileReferenceOptions, aR as UseFileReferenceReturn, aA as UserMenu, bj as UserMenuProps, b0 as useErrorBoundary, aM as useFileReference, aO as useFileReferenceById, aN as useFileReferenceForRecord, aP as useFilesByCategory, aY as useIsPublicPage, aU as usePublicPageContext, aX as usePublicPageProviderContext } from './EventLogo-801uofbR.js';
12
12
  export { u as useToast } from './useToast-C8gR5ir4.js';
13
- export { D as DataTable, a as DataTableProps } from './DataTable-C7GaRZye.js';
14
- import { D as DataRecord, g as DataTableAction } from './types-D5rqZQXk.js';
15
- export { A as AggregateConfig, a as DataTableColumn, h as DataTableToolbarButton, f as EmptyStateConfig, G as GetRowId } from './types-D5rqZQXk.js';
13
+ export { D as DataTable, a as DataTableProps } from './DataTable-CWAZZcXC.js';
14
+ import { c as DataRecord, a as DataTableAction, D as DataTableColumn } from './types-Dfz9dmVH.js';
15
+ export { A as AggregateConfig, b as DataTableToolbarButton, E as EmptyStateConfig, h as ExportOptions, G as GetRowId } from './types-Dfz9dmVH.js';
16
16
  import { ColumnDef } from '@tanstack/react-table';
17
- export { p as UsePublicEventOptions, o as UsePublicEventReturn, r as UsePublicFileDisplayOptions, q as UsePublicFileDisplayReturn, s as UsePublicRouteParamsReturn, f as clearPublicEventCache, i as clearPublicFileDisplayCache, n as extractEventCodeFromPath, m as generatePublicRoutePath, g as getPublicEventCacheStats, j as getPublicFileDisplayCacheStats, c as useAppConfig, u as useEventTheme, a as useOrganisationPermissions, b as useOrganisationSecurity, e as usePublicEvent, l as usePublicEventCode, h as usePublicFileDisplay, k as usePublicRouteParams } from './usePublicRouteParams-Dyt1tzI9.js';
18
- export { b as FileCategory, a as FileMetadata, F as FileReference, c as FileUploadOptions } from './file-reference-C9isKNPn.js';
17
+ export { p as UsePublicEventOptions, o as UsePublicEventReturn, r as UsePublicFileDisplayOptions, q as UsePublicFileDisplayReturn, s as UsePublicRouteParamsReturn, f as clearPublicEventCache, i as clearPublicFileDisplayCache, n as extractEventCodeFromPath, m as generatePublicRoutePath, g as getPublicEventCacheStats, j as getPublicFileDisplayCacheStats, c as useAppConfig, u as useEventTheme, a as useOrganisationPermissions, b as useOrganisationSecurity, e as usePublicEvent, l as usePublicEventCode, h as usePublicFileDisplay, k as usePublicRouteParams } from './usePublicRouteParams-B7PabvuH.js';
18
+ export { F as FileCategory, b as FileMetadata, a as FileReference, c as FileUploadOptions } from './file-reference-C6Gkn77H.js';
19
19
  import { SupabaseClient } from '@supabase/supabase-js';
20
20
  export { StyleImport, getAllStylePaths, getStylePath, styleConfig } from './styles/index.js';
21
21
  export { ColorPalette, ColorShade, PaletteData, applyPalette, clearPalette, generateSSRThemeCSS, getCurrentThemeData, isDynamicThemingActive, parseAndNormalizeEventColours } from './theming/runtime.js';
@@ -104,6 +104,7 @@ interface EventContextType {
104
104
  error: Error | null;
105
105
  setSelectedEvent: (event: Event | null) => void;
106
106
  refreshEvents: () => Promise<void>;
107
+ clearEventSelection: () => Promise<void>;
107
108
  }
108
109
  /**
109
110
  * Hook to access event context
@@ -430,6 +431,215 @@ declare class ColumnFactory<TData extends DataRecord = DataRecord> {
430
431
  static createColumnsFromConfig<TData extends DataRecord>(config: ColumnConfig<TData>[]): ColumnDef<TData>[];
431
432
  }
432
433
 
434
+ /**
435
+ * @file Aggregation Utility Functions
436
+ * @package @jmruthers/pace-core
437
+ * @module Components/DataTable/Utils
438
+ * @since 0.6.0
439
+ *
440
+ * Utility functions for common aggregation operations in grouped DataTable rows.
441
+ * These functions can be used as the `aggregateFn` property in column definitions.
442
+ */
443
+
444
+ /**
445
+ * Creates a sum aggregation function for a specific field.
446
+ *
447
+ * @param accessorKey - The field key to sum (e.g., 'cost', 'quantity')
448
+ * @returns An aggregation function that sums the specified field across all rows
449
+ *
450
+ * @example
451
+ * ```tsx
452
+ * {
453
+ * accessorKey: 'cost',
454
+ * header: 'Total Cost',
455
+ * aggregateFn: sum('cost'),
456
+ * }
457
+ * ```
458
+ */
459
+ declare function sum<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[], column: DataTableColumn<TRow>) => number;
460
+ /**
461
+ * Creates an average aggregation function for a specific field.
462
+ *
463
+ * @param accessorKey - The field key to average (e.g., 'price', 'rating')
464
+ * @returns An aggregation function that calculates the average of the specified field across all rows
465
+ *
466
+ * @example
467
+ * ```tsx
468
+ * {
469
+ * accessorKey: 'price',
470
+ * header: 'Avg Price',
471
+ * aggregateFn: average('price'),
472
+ * }
473
+ * ```
474
+ */
475
+ declare function average<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[], column: DataTableColumn<TRow>) => number;
476
+ /**
477
+ * Creates a count aggregation function.
478
+ * Returns the number of rows in the group.
479
+ *
480
+ * @returns An aggregation function that counts the number of rows
481
+ *
482
+ * @example
483
+ * ```tsx
484
+ * {
485
+ * accessorKey: 'id',
486
+ * header: 'Count',
487
+ * aggregateFn: count(),
488
+ * }
489
+ * ```
490
+ */
491
+ declare function count<TData extends DataRecord = DataRecord>(): <TRow extends DataRecord = TData>(rows: TRow[], column: DataTableColumn<TRow>) => number;
492
+ /**
493
+ * Creates a minimum aggregation function for a specific field.
494
+ *
495
+ * @param accessorKey - The field key to find the minimum of (e.g., 'price', 'date')
496
+ * @returns An aggregation function that returns the minimum value of the specified field
497
+ *
498
+ * @example
499
+ * ```tsx
500
+ * {
501
+ * accessorKey: 'price',
502
+ * header: 'Min Price',
503
+ * aggregateFn: min('price'),
504
+ * }
505
+ * ```
506
+ */
507
+ declare function min<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[], column: DataTableColumn<TRow>) => number | null;
508
+ /**
509
+ * Creates a maximum aggregation function for a specific field.
510
+ *
511
+ * @param accessorKey - The field key to find the maximum of (e.g., 'price', 'date')
512
+ * @returns An aggregation function that returns the maximum value of the specified field
513
+ *
514
+ * @example
515
+ * ```tsx
516
+ * {
517
+ * accessorKey: 'price',
518
+ * header: 'Max Price',
519
+ * aggregateFn: max('price'),
520
+ * }
521
+ * ```
522
+ */
523
+ declare function max<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[], column: DataTableColumn<TRow>) => number | null;
524
+
525
+ /**
526
+ * @file Export Utilities for DataTable
527
+ * @package @jmruthers/pace-core
528
+ * @module DataTable
529
+ * @since 0.1.0
530
+ *
531
+ * Utility functions for exporting DataTable data to CSV format.
532
+ * Provides automatic column mapping and data formatting.
533
+ *
534
+ * Features:
535
+ * - CSV export with headers
536
+ * - Automatic column mapping
537
+ * - Data sanitization
538
+ * - Custom filename support
539
+ * - Browser download handling
540
+ */
541
+
542
+ /**
543
+ * @example
544
+ * ```tsx
545
+ * // Basic export
546
+ * exportToCSV(
547
+ * tableData,
548
+ * columns,
549
+ * 'export.csv'
550
+ * );
551
+ * ```
552
+ *
553
+ * @example
554
+ * ```tsx
555
+ * // With custom column mapping
556
+ * const columns = [
557
+ * { accessorKey: 'name', header: 'Full Name' },
558
+ * { accessorKey: 'email', header: 'Email Address' },
559
+ * { accessorKey: 'role', header: 'User Role' }
560
+ * ];
561
+ *
562
+ * exportToCSV(users, columns, 'users.csv');
563
+ * ```
564
+ */
565
+ /**
566
+ * Column definition for export
567
+ */
568
+ interface ExportColumn {
569
+ header?: string;
570
+ id?: string;
571
+ accessorKey?: string;
572
+ accessorFn?: (row: any) => any;
573
+ editAccessorKey?: string;
574
+ isIdColumn?: boolean;
575
+ }
576
+ /**
577
+ * Generates CSV content from data without triggering download
578
+ *
579
+ * @param data - Array of data objects to export
580
+ * @param columns - Column definitions for mapping
581
+ * @param options - Export options
582
+ * @returns CSV content as string
583
+ */
584
+ declare function generateCSVContent<TData extends DataRecord>(data: TData[], columns: ExportColumn[], options?: {
585
+ includeHeaders?: boolean;
586
+ locale?: string;
587
+ sanitizeForSecurity?: boolean;
588
+ }): string;
589
+ /**
590
+ * Exports DataTable data using TanStack Table rows with getValue() for proper accessorFn evaluation
591
+ * This ensures computed columns (with accessorFn) export correctly with their displayed values
592
+ */
593
+ declare function exportToCSVWithTableRows(tableRows: Array<{
594
+ original: any;
595
+ getValue: (columnId: string) => any;
596
+ id: string;
597
+ }>, columns: ExportColumn[], columnIdToTableColumn: Map<string, any>, filename?: string, options?: {
598
+ locale?: string;
599
+ sanitizeForSecurity?: boolean;
600
+ }): Promise<void>;
601
+ /**
602
+ * Exports DataTable data to CSV format
603
+ *
604
+ * @param data - Array of data objects to export
605
+ * @param columns - Column definitions for mapping
606
+ * @param filename - Optional filename for download (default: "download.csv")
607
+ * @param options - Optional export configuration
608
+ * @returns Promise that resolves when export is complete, rejects on error
609
+ *
610
+ * @example
611
+ * ```tsx
612
+ * // Export user data
613
+ * const users = [
614
+ * { id: 1, name: 'John Doe', email: 'john@example.com' },
615
+ * { id: 2, name: 'Jane Smith', email: 'jane@example.com' }
616
+ * ];
617
+ *
618
+ * const columns = [
619
+ * { accessorKey: 'name', header: 'Name' },
620
+ * { accessorKey: 'email', header: 'Email' }
621
+ * ];
622
+ *
623
+ * try {
624
+ * await exportToCSV(users, columns, 'users.csv', { locale: 'en-US' });
625
+ * showSuccessToast('Data exported successfully');
626
+ * } catch (error) {
627
+ * showErrorToast('Failed to export data');
628
+ * }
629
+ * ```
630
+ *
631
+ * @remarks
632
+ * - Automatically handles special characters in data
633
+ * - Uses column headers for CSV headers
634
+ * - Sanitizes data to prevent CSV injection
635
+ * - Triggers browser download
636
+ * - Throws error if export fails
637
+ */
638
+ declare function exportToCSV<TData extends DataRecord>(data: TData[], columns: ExportColumn[], filename?: string, options?: {
639
+ locale?: string;
640
+ sanitizeForSecurity?: boolean;
641
+ }): Promise<void>;
642
+
433
643
  /**
434
644
  * @file Password Change Form Component
435
645
  * @package @jmruthers/pace-core
@@ -774,4 +984,4 @@ declare class StorageUtils {
774
984
  static archiveFile: typeof archiveFile;
775
985
  }
776
986
 
777
- export { APP_PATH_MAPPING, ColumnFactory, DEFAULT_FILE_SIZE_LIMIT, DataRecord, DataTableAction, FILE_SIZE_LIMITS, type FileSizeLimits, InactivityWarningModal, type InactivityWarningModalProps, OrganisationContextType, PasswordChangeForm, STORAGE_CONFIG, type StorageConfig, type StorageFileInfo, type StorageFileMetadata, type StorageListOptions, type StorageListResult, type StorageUploadOptions, type StorageUploadResult, type StorageUrlOptions, StorageUtils, type UseInactivityTrackerOptions, type UseInactivityTrackerReturn, archiveFile, deleteFile, downloadFile, extractFileMetadata, generateFilePath, generateUniqueFileName, getBucketName, getFileSizeLimit, getPublicUrl, getSignedUrl, listFiles, uploadFile, useAuthService, useEventService, useEvents, useInactivityService, useInactivityTracker, useOrganisationService, useOrganisations, useSessionRestoration, validateFileSize };
987
+ export { APP_PATH_MAPPING, ColumnFactory, DEFAULT_FILE_SIZE_LIMIT, DataRecord, DataTableAction, DataTableColumn, type ExportColumn, FILE_SIZE_LIMITS, type FileSizeLimits, InactivityWarningModal, type InactivityWarningModalProps, OrganisationContextType, PasswordChangeForm, STORAGE_CONFIG, type StorageConfig, type StorageFileInfo, type StorageFileMetadata, type StorageListOptions, type StorageListResult, type StorageUploadOptions, type StorageUploadResult, type StorageUrlOptions, StorageUtils, type UseInactivityTrackerOptions, type UseInactivityTrackerReturn, archiveFile, average, count, deleteFile, downloadFile, exportToCSV, exportToCSVWithTableRows, extractFileMetadata, generateCSVContent, generateFilePath, generateUniqueFileName, getBucketName, getFileSizeLimit, getPublicUrl, getSignedUrl, listFiles, max, min, sum, uploadFile, useAuthService, useEventService, useEvents, useInactivityService, useInactivityTracker, useOrganisationService, useOrganisations, useSessionRestoration, validateFileSize };
package/dist/index.js CHANGED
@@ -30,16 +30,19 @@ import {
30
30
  withAccessLevelGuard,
31
31
  withPermissionGuard,
32
32
  withRoleGuard
33
- } from "./chunk-CQZU6TFE.js";
33
+ } from "./chunk-FHWWBIHA.js";
34
34
  import {
35
35
  init_useInactivityTracker,
36
36
  useInactivityTracker
37
- } from "./chunk-5F3NDPJV.js";
37
+ } from "./chunk-ZZ2SS7NI.js";
38
38
  import {
39
39
  Avatar,
40
40
  AvatarFallback,
41
41
  AvatarImage,
42
42
  ErrorBoundary,
43
+ EventLogo,
44
+ EventLogoCompact,
45
+ EventLogoLarge,
43
46
  EventSelector,
44
47
  FileDisplay,
45
48
  FileUpload,
@@ -53,14 +56,11 @@ import {
53
56
  PaceAppLayout,
54
57
  PaceLoginPage,
55
58
  PasswordChangeForm,
56
- PasswordResetForm,
57
59
  ProtectedRoute,
58
60
  PublicLoadingSkeleton,
59
61
  PublicLoadingSpinner,
60
62
  PublicLoadingSpinnerFullPage,
61
63
  PublicPageContextChecker,
62
- PublicPageDebugger,
63
- PublicPageDiagnostic,
64
64
  PublicPageFooter,
65
65
  PublicPageHeader,
66
66
  PublicPageLayout,
@@ -89,7 +89,7 @@ import {
89
89
  useFileReferenceForRecord,
90
90
  useFilesByCategory,
91
91
  usePublicPageContext as usePublicPageContext2
92
- } from "./chunk-HMNOSGVA.js";
92
+ } from "./chunk-NOHEVYVX.js";
93
93
  import {
94
94
  Alert,
95
95
  AlertDescription,
@@ -130,8 +130,16 @@ import {
130
130
  TooltipContent,
131
131
  TooltipProvider,
132
132
  TooltipRoot,
133
- TooltipTrigger
134
- } from "./chunk-GVDR7WNV.js";
133
+ TooltipTrigger,
134
+ average,
135
+ count,
136
+ exportToCSV,
137
+ exportToCSVWithTableRows,
138
+ generateCSVContent,
139
+ max,
140
+ min,
141
+ sum
142
+ } from "./chunk-HJGGOMQ6.js";
135
143
  import {
136
144
  useAccessLevel,
137
145
  useCachedPermissions,
@@ -143,7 +151,7 @@ import {
143
151
  useRBAC,
144
152
  useResolvedScope,
145
153
  useRoleManagement
146
- } from "./chunk-BYXRHAIF.js";
154
+ } from "./chunk-L6PGMCMD.js";
147
155
  import {
148
156
  CACHE_PATTERNS,
149
157
  RBACCache,
@@ -165,14 +173,14 @@ import {
165
173
  rbacCache,
166
174
  resolveAppContext,
167
175
  setupRBAC
168
- } from "./chunk-WP5I5GLN.js";
176
+ } from "./chunk-BVYWGZVV.js";
169
177
  import {
170
178
  RBACAuditManager,
171
179
  createAuditManager,
172
180
  emitAuditEvent,
173
181
  getGlobalAuditManager,
174
182
  setGlobalAuditManager
175
- } from "./chunk-3DBFLLLU.js";
183
+ } from "./chunk-SBVILCCA.js";
176
184
  import {
177
185
  clearPublicEventCache,
178
186
  extractEventCodeFromPath,
@@ -183,8 +191,8 @@ import {
183
191
  usePublicEvent,
184
192
  usePublicEventCode,
185
193
  usePublicRouteParams
186
- } from "./chunk-F64FFPOZ.js";
187
- import "./chunk-ZYZCRSBD.js";
194
+ } from "./chunk-YLKIDTUK.js";
195
+ import "./chunk-LTV3XIJJ.js";
188
196
  import {
189
197
  APP_PATH_MAPPING,
190
198
  DEFAULT_FILE_SIZE_LIMIT,
@@ -215,19 +223,19 @@ import {
215
223
  usePublicFileDisplay,
216
224
  usePublicPageContext,
217
225
  validateFileSize
218
- } from "./chunk-VZ5OR6HD.js";
226
+ } from "./chunk-TVYPTYOY.js";
219
227
  import {
220
228
  useToast
221
- } from "./chunk-GKHF54DI.js";
229
+ } from "./chunk-BESYRHQM.js";
222
230
  import {
223
231
  init_useOrganisations,
224
232
  useEvents,
225
233
  useOrganisations
226
- } from "./chunk-TGIY2AR2.js";
234
+ } from "./chunk-SL2YQDR6.js";
227
235
  import {
228
236
  init_UnifiedAuthProvider
229
- } from "./chunk-CTJRBUX2.js";
230
- import "./chunk-ZV77RZMU.js";
237
+ } from "./chunk-2TWNJ46Y.js";
238
+ import "./chunk-XARJS7CD.js";
231
239
  import {
232
240
  EventServiceProvider,
233
241
  InactivityServiceProvider,
@@ -245,7 +253,7 @@ import {
245
253
  useOrganisationService2 as useOrganisationService,
246
254
  useSessionRestoration,
247
255
  useUnifiedAuth
248
- } from "./chunk-3CG5L6RN.js";
256
+ } from "./chunk-4MT5BGGL.js";
249
257
  import {
250
258
  FileCategory
251
259
  } from "./chunk-XJ2HZOBU.js";
@@ -261,17 +269,18 @@ import {
261
269
  getCurrentAppName,
262
270
  setAppConfig,
263
271
  useSessionTracking
264
- } from "./chunk-M6DDYFUD.js";
272
+ } from "./chunk-LS353YLY.js";
265
273
  import {
266
274
  LoadingSpinner
267
- } from "./chunk-CDQ3PX7L.js";
268
- import "./chunk-JCQZ6LA7.js";
269
- import "./chunk-O3NWNXDY.js";
275
+ } from "./chunk-S5OFRT4M.js";
276
+ import "./chunk-Q5QRDWKI.js";
277
+ import "./chunk-5DPZ5EAT.js";
278
+ import "./chunk-FMUCXFII.js";
270
279
  import {
271
280
  cn
272
- } from "./chunk-PYUXFQJ3.js";
273
- import "./chunk-BDZUMRBD.js";
274
- import "./chunk-UJI6WSMD.js";
281
+ } from "./chunk-56XJ3TU6.js";
282
+ import "./chunk-K2WWTH7O.js";
283
+ import "./chunk-444EZN6N.js";
275
284
  import {
276
285
  getAllStylePaths,
277
286
  getStylePath,
@@ -284,7 +293,8 @@ import {
284
293
  getCurrentThemeData,
285
294
  isDynamicThemingActive,
286
295
  parseAndNormalizeEventColours
287
- } from "./chunk-GEVIB2UB.js";
296
+ } from "./chunk-ERISIBYU.js";
297
+ import "./chunk-XDNLUEXI.js";
288
298
  import "./chunk-PLDDJCW6.js";
289
299
 
290
300
  // src/index.ts
@@ -379,7 +389,7 @@ function InactivityWarningModal({
379
389
  // src/index.ts
380
390
  init_useInactivityTracker();
381
391
 
382
- // src/utils/secureDataAccess.ts
392
+ // src/utils/security/secureDataAccess.ts
383
393
  var createSecureDataAccess = (supabase, organisationId, isSuperAdmin = false) => {
384
394
  const validateOrganisationContext = (orgId) => {
385
395
  if (!orgId) {
@@ -656,6 +666,9 @@ export {
656
666
  EVENT_APP_PERMISSIONS,
657
667
  EnhancedNavigationMenu,
658
668
  ErrorBoundary,
669
+ EventLogo,
670
+ EventLogoCompact,
671
+ EventLogoLarge,
659
672
  EventServiceProvider as EventProvider,
660
673
  EventSelector,
661
674
  FILE_SIZE_LIMITS,
@@ -684,7 +697,6 @@ export {
684
697
  PagePermissionGuard,
685
698
  PagePermissionProvider,
686
699
  PasswordChangeForm,
687
- PasswordResetForm,
688
700
  PermissionEnforcer,
689
701
  PermissionGuard,
690
702
  Progress,
@@ -694,8 +706,6 @@ export {
694
706
  PublicLoadingSpinner,
695
707
  PublicLoadingSpinnerFullPage,
696
708
  PublicPageContextChecker,
697
- PublicPageDebugger,
698
- PublicPageDiagnostic,
699
709
  PublicPageFooter,
700
710
  PublicPageHeader,
701
711
  PublicPageLayout,
@@ -743,10 +753,12 @@ export {
743
753
  UserMenu,
744
754
  applyPalette,
745
755
  archiveFile,
756
+ average,
746
757
  clearPalette,
747
758
  clearPublicEventCache,
748
759
  clearPublicFileDisplayCache,
749
760
  cn,
761
+ count,
750
762
  createAuditManager,
751
763
  createRBACConfig,
752
764
  createRBACEngine,
@@ -757,6 +769,8 @@ export {
757
769
  deleteFile,
758
770
  downloadFile,
759
771
  emitAuditEvent,
772
+ exportToCSV,
773
+ exportToCSVWithTableRows,
760
774
  extractEventCodeFromPath,
761
775
  extractFileMetadata,
762
776
  formatCompactNumber,
@@ -766,6 +780,7 @@ export {
766
780
  formatNumber,
767
781
  formatPercent,
768
782
  fromSupabaseClient,
783
+ generateCSVContent,
769
784
  generateFilePath,
770
785
  generatePublicRoutePath,
771
786
  generateSSRThemeCSS,
@@ -801,6 +816,8 @@ export {
801
816
  isPermittedCached,
802
817
  isValidPermission,
803
818
  listFiles,
819
+ max,
820
+ min,
804
821
  parseAndNormalizeEventColours,
805
822
  rbacCache,
806
823
  resolveAppContext,
@@ -808,6 +825,7 @@ export {
808
825
  setGlobalAuditManager,
809
826
  setupRBAC,
810
827
  styleConfig,
828
+ sum,
811
829
  uploadFile,
812
830
  useAccessLevel,
813
831
  useAppConfig,