@jmruthers/pace-core 0.5.135 → 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 +101 -9
  71. package/dist/index.js +43 -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 +1 -1
  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 +1 -1
  122. package/docs/api/interfaces/ExportOptions.md +8 -8
  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 +514 -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 +16 -7
  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
@@ -2,29 +2,34 @@ import {
2
2
  init_useOrganisations,
3
3
  useEvents,
4
4
  useOrganisations
5
- } from "./chunk-TGIY2AR2.js";
5
+ } from "./chunk-SL2YQDR6.js";
6
6
  import {
7
7
  init_UnifiedAuthProvider
8
- } from "./chunk-CTJRBUX2.js";
8
+ } from "./chunk-2TWNJ46Y.js";
9
9
  import {
10
10
  OrganisationServiceContext,
11
11
  OrganisationServiceProvider,
12
12
  init_OrganisationServiceProvider,
13
13
  useOrganisationService,
14
14
  useUnifiedAuth
15
- } from "./chunk-3CG5L6RN.js";
15
+ } from "./chunk-4MT5BGGL.js";
16
16
  import {
17
17
  cn
18
- } from "./chunk-PYUXFQJ3.js";
18
+ } from "./chunk-56XJ3TU6.js";
19
19
  import {
20
20
  init_organisationContext,
21
21
  setOrganisationContext
22
- } from "./chunk-BDZUMRBD.js";
22
+ } from "./chunk-K2WWTH7O.js";
23
23
  import {
24
24
  applyPalette,
25
25
  clearPalette,
26
26
  parseAndNormalizeEventColours
27
- } from "./chunk-GEVIB2UB.js";
27
+ } from "./chunk-ERISIBYU.js";
28
+ import {
29
+ createLogger,
30
+ init_logger,
31
+ logger
32
+ } from "./chunk-XDNLUEXI.js";
28
33
  import {
29
34
  __esm,
30
35
  __export
@@ -50,6 +55,8 @@ var init_OrganisationProvider = __esm({
50
55
  // src/hooks/useEventTheme.ts
51
56
  import { useEffect } from "react";
52
57
  import { useLocation } from "react-router-dom";
58
+ init_logger();
59
+ var log = createLogger("useEventTheme");
53
60
  function useEventTheme(event) {
54
61
  const location = useLocation();
55
62
  let selectedEvent;
@@ -86,7 +93,7 @@ function useEventTheme(event) {
86
93
  try {
87
94
  applyPalette(normalized);
88
95
  } catch (error) {
89
- console.error("[useEventTheme] Failed to apply event palette:", error);
96
+ log.error("Failed to apply event palette:", error);
90
97
  }
91
98
  return () => {
92
99
  };
@@ -252,6 +259,7 @@ function DefaultPublicErrorFallback({
252
259
  // src/components/PublicLayout/PublicPageProvider.tsx
253
260
  import { createContext, useContext, useMemo } from "react";
254
261
  import { createClient } from "@supabase/supabase-js";
262
+ init_logger();
255
263
  import { jsx as jsx2 } from "react/jsx-runtime";
256
264
  var PublicPageContext = createContext(void 0);
257
265
  function PublicPageProvider({ children, appName }) {
@@ -268,11 +276,11 @@ function PublicPageProvider({ children, appName }) {
268
276
  const supabaseKey = getEnvVar("VITE_SUPABASE_ANON_KEY") || getEnvVar("NEXT_PUBLIC_SUPABASE_ANON_KEY") || null;
269
277
  const supabase = useMemo(() => {
270
278
  if (!supabaseUrl || !supabaseKey) {
271
- console.warn("[PublicPageProvider] Missing Supabase environment variables. Please ensure VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY are set in your environment.");
279
+ logger.warn("PublicPageProvider", "Missing Supabase environment variables. Please ensure VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY are set in your environment.");
272
280
  return null;
273
281
  }
274
282
  const client = createClient(supabaseUrl, supabaseKey);
275
- console.log("[PublicPageProvider] Supabase client created successfully for public pages");
283
+ logger.info("PublicPageProvider", "Supabase client created successfully for public pages");
276
284
  return client;
277
285
  }, [supabaseUrl, supabaseKey]);
278
286
  const contextValue = {
@@ -415,6 +423,8 @@ function validateFileSize(file) {
415
423
  }
416
424
 
417
425
  // src/utils/storage/helpers.ts
426
+ init_logger();
427
+ var log2 = createLogger("StorageHelpers");
418
428
  function generateFilePath(options, fileName) {
419
429
  const { orgId, isPublic = false, customPath } = options;
420
430
  if (!orgId) {
@@ -461,13 +471,11 @@ async function extractFileMetadata(file, options, uploadedBy) {
461
471
  metadata.width = dimensions.width;
462
472
  metadata.height = dimensions.height;
463
473
  } catch (error) {
464
- console.warn("Could not extract image dimensions:", error);
465
474
  }
466
475
  }
467
476
  try {
468
477
  metadata.hash = await generateFileHash(file);
469
478
  } catch (error) {
470
- console.warn("Could not generate file hash:", error);
471
479
  }
472
480
  return metadata;
473
481
  }
@@ -594,7 +602,7 @@ async function getSignedUrl(supabase, path, options) {
594
602
  const bucketName = getBucketName(false);
595
603
  const { data, error } = await supabase.storage.from(bucketName).createSignedUrl(path, options.expiresIn || 3600);
596
604
  if (error) {
597
- console.error("Failed to create signed URL:", error);
605
+ log2.error("Failed to create signed URL:", error);
598
606
  return null;
599
607
  }
600
608
  return {
@@ -602,7 +610,7 @@ async function getSignedUrl(supabase, path, options) {
602
610
  expiresAt: new Date(Date.now() + (options.expiresIn || 3600) * 1e3).toISOString()
603
611
  };
604
612
  } catch (error) {
605
- console.error("Failed to create signed URL:", error);
613
+ log2.error("Failed to create signed URL:", error);
606
614
  return null;
607
615
  }
608
616
  }
@@ -635,7 +643,7 @@ async function listFiles(supabase, options) {
635
643
  sortBy: { column: "created_at", order: "desc" }
636
644
  });
637
645
  if (error) {
638
- console.error("Failed to list files:", error);
646
+ log2.error("Failed to list files:", error);
639
647
  return { files: [], totalCount: 0, hasMore: false };
640
648
  }
641
649
  const files = (data || []).map((item) => ({
@@ -660,7 +668,7 @@ async function listFiles(supabase, options) {
660
668
  hasMore: files.length >= (options.limit || 100)
661
669
  };
662
670
  } catch (error) {
663
- console.error("Failed to list files:", error);
671
+ log2.error("Failed to list files:", error);
664
672
  return { files: [], totalCount: 0, hasMore: false };
665
673
  }
666
674
  }
@@ -669,7 +677,7 @@ async function downloadFile(supabase, path, isPublic = false) {
669
677
  const bucketName = getBucketName(isPublic);
670
678
  const { data, error } = await supabase.storage.from(bucketName).download(path);
671
679
  if (error) {
672
- console.error("Failed to download file:", error);
680
+ log2.error("Failed to download file:", error);
673
681
  return null;
674
682
  }
675
683
  if (!data) {
@@ -689,7 +697,7 @@ async function downloadFile(supabase, path, isPublic = false) {
689
697
  }
690
698
  };
691
699
  } catch (error) {
692
- console.error("Failed to download file:", error);
700
+ log2.error("Failed to download file:", error);
693
701
  return null;
694
702
  }
695
703
  }
@@ -720,8 +728,10 @@ async function archiveFile(supabase, path, options) {
720
728
  // src/hooks/useFileDisplay.ts
721
729
  import { useState, useEffect as useEffect2, useCallback } from "react";
722
730
 
723
- // src/utils/file-reference.ts
731
+ // src/utils/file-reference/index.ts
724
732
  init_organisationContext();
733
+ init_logger();
734
+ var log3 = createLogger("FileReferenceService");
725
735
  var FileReferenceServiceImpl = class {
726
736
  constructor(supabase) {
727
737
  this.supabase = supabase;
@@ -804,7 +814,7 @@ var FileReferenceServiceImpl = class {
804
814
  );
805
815
  return fileRef;
806
816
  } catch (error) {
807
- console.error("Error creating file reference:", error);
817
+ log3.error("Error creating file reference:", error);
808
818
  throw error;
809
819
  }
810
820
  }
@@ -819,7 +829,7 @@ var FileReferenceServiceImpl = class {
819
829
  }
820
830
  return data;
821
831
  } catch (error) {
822
- console.error("Error getting file reference:", error);
832
+ log3.error("Error getting file reference:", error);
823
833
  throw error;
824
834
  }
825
835
  }
@@ -843,7 +853,7 @@ var FileReferenceServiceImpl = class {
843
853
  return await this.getSignedUrl(table_name, record_id, organisation_id);
844
854
  }
845
855
  } catch (error) {
846
- console.error("Error getting file URL:", error);
856
+ log3.error("Error getting file URL:", error);
847
857
  throw error;
848
858
  }
849
859
  }
@@ -868,7 +878,7 @@ var FileReferenceServiceImpl = class {
868
878
  });
869
879
  return signedUrlResult?.url || null;
870
880
  } catch (error) {
871
- console.error("Error getting signed URL:", error);
881
+ log3.error("Error getting signed URL:", error);
872
882
  throw error;
873
883
  }
874
884
  }
@@ -880,7 +890,7 @@ var FileReferenceServiceImpl = class {
880
890
  }
881
891
  return data;
882
892
  } catch (error) {
883
- console.error("Error updating file reference:", error);
893
+ log3.error("Error updating file reference:", error);
884
894
  throw error;
885
895
  }
886
896
  }
@@ -901,7 +911,7 @@ var FileReferenceServiceImpl = class {
901
911
  }
902
912
  return true;
903
913
  } catch (error) {
904
- console.error("Error deleting file reference:", error);
914
+ log3.error("Error deleting file reference:", error);
905
915
  throw error;
906
916
  }
907
917
  }
@@ -925,7 +935,7 @@ var FileReferenceServiceImpl = class {
925
935
  }
926
936
  return fullData || [];
927
937
  } catch (error) {
928
- console.error("Error listing file references:", error);
938
+ log3.error("Error listing file references:", error);
929
939
  throw error;
930
940
  }
931
941
  }
@@ -941,7 +951,7 @@ var FileReferenceServiceImpl = class {
941
951
  }
942
952
  return data || 0;
943
953
  } catch (error) {
944
- console.error("Error getting file count:", error);
954
+ log3.error("Error getting file count:", error);
945
955
  throw error;
946
956
  }
947
957
  }
@@ -959,18 +969,12 @@ var FileReferenceServiceImpl = class {
959
969
  }
960
970
  return data[0];
961
971
  } catch (error) {
962
- console.error("Error getting file reference by ID:", error);
972
+ log3.error("Error getting file reference by ID:", error);
963
973
  throw error;
964
974
  }
965
975
  }
966
976
  async getFilesByCategory(table_name, record_id, category, organisation_id) {
967
977
  try {
968
- console.log("[FileReferenceService.getFilesByCategory] Calling RPC function:", {
969
- table_name,
970
- record_id,
971
- category,
972
- organisation_id
973
- });
974
978
  const { data, error } = await this.supabase.rpc("data_file_reference_by_category_list", {
975
979
  p_table_name: table_name,
976
980
  p_record_id: record_id,
@@ -978,7 +982,7 @@ var FileReferenceServiceImpl = class {
978
982
  p_organisation_id: organisation_id
979
983
  });
980
984
  if (error) {
981
- console.error("[FileReferenceService.getFilesByCategory] RPC ERROR:", {
985
+ log3.error("RPC ERROR getting files by category:", {
982
986
  error,
983
987
  errorCode: error.code,
984
988
  errorMessage: error.message,
@@ -991,21 +995,14 @@ var FileReferenceServiceImpl = class {
991
995
  });
992
996
  throw new Error(`Failed to get files by category: ${error.message}. Category filtering uses file_metadata JSONB field, not a direct column. RPC function required.`);
993
997
  }
994
- console.log("[FileReferenceService.getFilesByCategory] RPC response received:", {
995
- dataLength: data?.length || 0,
996
- data: data ? data.slice(0, 2) : null,
997
- // Log first 2 items for debugging
998
- fullDataAvailable: data?.every((item) => item.id && item.file_path && item.file_metadata)
999
- });
1000
998
  if (!data || data.length === 0) {
1001
- console.log("[FileReferenceService.getFilesByCategory] No data from RPC, returning empty array");
1002
999
  return [];
1003
1000
  }
1004
1001
  const fileReferences = data.filter((item) => {
1005
1002
  const fileCategory = item.file_metadata?.category;
1006
1003
  const matches = fileCategory === category;
1007
1004
  if (!matches) {
1008
- console.warn("[FileReferenceService.getFilesByCategory] File category mismatch in RPC response:", {
1005
+ log3.warn("File category mismatch in RPC response:", {
1009
1006
  fileId: item.id,
1010
1007
  expectedCategory: category,
1011
1008
  actualCategory: fileCategory
@@ -1029,16 +1026,9 @@ var FileReferenceServiceImpl = class {
1029
1026
  };
1030
1027
  return fileRef;
1031
1028
  });
1032
- console.log("[FileReferenceService.getFilesByCategory] Constructed file references from RPC response:", {
1033
- count: fileReferences.length,
1034
- firstFileId: fileReferences[0]?.id,
1035
- firstFilePath: fileReferences[0]?.file_path,
1036
- firstFileIsPublic: fileReferences[0]?.is_public,
1037
- firstFileHasAllRequiredFields: !!(fileReferences[0]?.id && fileReferences[0]?.file_path && fileReferences[0]?.file_metadata && fileReferences[0]?.table_name && fileReferences[0]?.record_id && fileReferences[0]?.organisation_id)
1038
- });
1039
1029
  return fileReferences;
1040
1030
  } catch (error) {
1041
- console.error("Error getting files by category:", error);
1031
+ log3.error("Error getting files by category:", error);
1042
1032
  throw error;
1043
1033
  }
1044
1034
  }
@@ -1092,6 +1082,7 @@ async function uploadFileWithReference(supabase, options, file) {
1092
1082
  }
1093
1083
 
1094
1084
  // src/hooks/useFileDisplay.ts
1085
+ init_logger();
1095
1086
  var authenticatedFileCache = /* @__PURE__ */ new Map();
1096
1087
  var MAX_CACHE_SIZE = 100;
1097
1088
  function cleanupCache() {
@@ -1136,7 +1127,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1136
1127
  }
1137
1128
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1138
1129
  if (!uuidRegex.test(organisation_id)) {
1139
- console.warn("[useFileDisplay] Invalid organisationId format (not a valid UUID):", organisation_id);
1130
+ logger.warn("useFileDisplay", "Invalid organisationId format (not a valid UUID):", organisation_id);
1140
1131
  }
1141
1132
  const cacheKey = `file_${table_name}_${record_id}_${organisation_id}_${category || "all"}`;
1142
1133
  if (enableCache) {
@@ -1160,7 +1151,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1160
1151
  setError(null);
1161
1152
  return;
1162
1153
  } catch (err) {
1163
- console.warn("[useFileDisplay] Failed to regenerate signed URL from cache, falling back to fetch:", err);
1154
+ logger.warn("useFileDisplay", "Failed to regenerate signed URL from cache, falling back to fetch:", err);
1164
1155
  }
1165
1156
  }
1166
1157
  setFileUrl(cachedData.fileUrl || null);
@@ -1179,7 +1170,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1179
1170
  const service = createFileReferenceService(supabase);
1180
1171
  let files = [];
1181
1172
  if (category) {
1182
- console.log("[useFileDisplay] Using RPC function for category filtering:", {
1173
+ logger.debug("useFileDisplay", "Using RPC function for category filtering:", {
1183
1174
  table_name,
1184
1175
  record_id,
1185
1176
  category,
@@ -1218,7 +1209,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1218
1209
  setFileCount(files.length);
1219
1210
  if (category && files.length > 0) {
1220
1211
  const firstFile = files[0];
1221
- console.log("[useFileDisplay] Processing category files, first file:", {
1212
+ logger.debug("useFileDisplay", "Processing category files, first file:", {
1222
1213
  id: firstFile.id,
1223
1214
  file_path: firstFile.file_path,
1224
1215
  is_public: firstFile.is_public,
@@ -1229,7 +1220,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1229
1220
  let url = null;
1230
1221
  if (firstFile.is_public) {
1231
1222
  url = getPublicUrl(supabase, firstFile.file_path, true);
1232
- console.log("[useFileDisplay] Generated public URL:", url);
1223
+ logger.debug("useFileDisplay", "Generated public URL:", url);
1233
1224
  } else {
1234
1225
  const signedUrlResult = await getSignedUrl(supabase, firstFile.file_path, {
1235
1226
  appName: "pace-core",
@@ -1237,9 +1228,9 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1237
1228
  expiresIn: 3600
1238
1229
  });
1239
1230
  url = signedUrlResult?.url || null;
1240
- console.log("[useFileDisplay] Generated signed URL:", url ? "URL generated" : "URL generation failed");
1231
+ logger.debug("useFileDisplay", "Generated signed URL:", url ? "URL generated" : "URL generation failed");
1241
1232
  }
1242
- console.log("[useFileDisplay] Setting file URL:", url ? "URL set" : "URL is null");
1233
+ logger.debug("useFileDisplay", "Setting file URL:", url ? "URL set" : "URL is null");
1243
1234
  setFileUrl(url);
1244
1235
  } else {
1245
1236
  const urlMap = /* @__PURE__ */ new Map();
@@ -1297,7 +1288,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1297
1288
  cleanupCache();
1298
1289
  }
1299
1290
  } catch (err) {
1300
- console.error("[useFileDisplay] Error fetching files:", err);
1291
+ logger.error("useFileDisplay", "Error fetching files:", err);
1301
1292
  const error2 = err instanceof Error ? err : new Error("Unknown error occurred");
1302
1293
  setError(error2);
1303
1294
  setFileUrl(null);
@@ -1366,6 +1357,7 @@ function invalidateFileDisplayCache(table_name, record_id, organisation_id, cate
1366
1357
 
1367
1358
  // src/hooks/public/usePublicFileDisplay.ts
1368
1359
  import { useState as useState2, useEffect as useEffect3, useCallback as useCallback2 } from "react";
1360
+ init_logger();
1369
1361
  var publicFileCache = /* @__PURE__ */ new Map();
1370
1362
  function usePublicFileDisplay(table_name, record_id, organisation_id, category, options) {
1371
1363
  const {
@@ -1393,7 +1385,7 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1393
1385
  }
1394
1386
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1395
1387
  if (!uuidRegex.test(organisation_id)) {
1396
- console.warn("[usePublicFileDisplay] Invalid organisationId format (not a valid UUID):", organisation_id);
1388
+ logger.warn("usePublicFileDisplay", "Invalid organisationId format (not a valid UUID)", { organisation_id });
1397
1389
  }
1398
1390
  const cacheKey = `public_file_${table_name}_${record_id}_${organisation_id}_${category || "all"}`;
1399
1391
  if (enableCache) {
@@ -1421,46 +1413,9 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1421
1413
  p_category: category,
1422
1414
  p_organisation_id: organisation_id
1423
1415
  };
1424
- console.log("[usePublicFileDisplay] RPC Call Parameters:", {
1425
- function: "data_file_reference_by_category_list",
1426
- parameters: rpcParams,
1427
- supabaseClient: {
1428
- available: !!supabase,
1429
- hasAuth: !!supabase?.auth
1430
- },
1431
- context: "public_page_anonymous_user",
1432
- note: "Public pages use anonymous Supabase client (no user session)"
1433
- });
1434
- console.log("[usePublicFileDisplay] Using RPC function for category filtering:", {
1435
- table_name,
1436
- record_id,
1437
- category,
1438
- organisation_id
1439
- });
1440
1416
  const { data, error: rpcError } = await supabase.rpc("data_file_reference_by_category_list", rpcParams);
1441
- console.log("[usePublicFileDisplay] RPC Response:", {
1442
- function: "data_file_reference_by_category_list",
1443
- dataType: Array.isArray(data) ? "array" : typeof data,
1444
- dataLength: Array.isArray(data) ? data.length : data ? 1 : 0,
1445
- dataIsNull: data === null,
1446
- dataIsUndefined: data === void 0,
1447
- dataIsEmpty: Array.isArray(data) ? data.length === 0 : !data,
1448
- firstItem: Array.isArray(data) && data.length > 0 ? {
1449
- id: data[0].id,
1450
- file_path: data[0].file_path,
1451
- is_public: data[0].is_public,
1452
- has_metadata: !!data[0].file_metadata,
1453
- category_in_metadata: data[0].file_metadata?.category
1454
- } : null,
1455
- error: rpcError ? {
1456
- message: rpcError.message,
1457
- code: rpcError.code,
1458
- details: rpcError.details,
1459
- hint: rpcError.hint
1460
- } : null
1461
- });
1462
1417
  if (rpcError) {
1463
- console.error("[usePublicFileDisplay] RPC function error:", {
1418
+ logger.error("usePublicFileDisplay", "RPC function error", {
1464
1419
  function: "data_file_reference_by_category_list",
1465
1420
  table_name,
1466
1421
  record_id,
@@ -1476,25 +1431,6 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1476
1431
  if (!data || data.length === 0) {
1477
1432
  files = [];
1478
1433
  } else {
1479
- const totalFilesFromRPC = data.length;
1480
- const filesWithIsPublic = data.filter((item) => item.is_public === true).length;
1481
- const filesWithIsPublicFalse = data.filter((item) => item.is_public === false).length;
1482
- const filesWithIsPublicNull = data.filter((item) => item.is_public === null || item.is_public === void 0).length;
1483
- const filesWithValidStructure = data.filter((item) => item.id && item.file_path && item.file_metadata).length;
1484
- console.log("[usePublicFileDisplay] RPC Data Analysis (before filtering):", {
1485
- totalFilesFromRPC,
1486
- filesWithIsPublicTrue: filesWithIsPublic,
1487
- filesWithIsPublicFalse,
1488
- filesWithIsPublicNull,
1489
- filesWithValidStructure,
1490
- sampleItems: data.slice(0, 2).map((item) => ({
1491
- id: item.id,
1492
- is_public: item.is_public,
1493
- has_id: !!item.id,
1494
- has_file_path: !!item.file_path,
1495
- has_metadata: !!item.file_metadata
1496
- }))
1497
- });
1498
1434
  files = data.filter((item) => {
1499
1435
  return item.is_public === true && item.id && item.file_path && item.file_metadata;
1500
1436
  }).map((item) => {
@@ -1512,16 +1448,6 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1512
1448
  updated_at: item.created_at || (/* @__PURE__ */ new Date()).toISOString()
1513
1449
  };
1514
1450
  });
1515
- console.log("[usePublicFileDisplay] Data Transformation (after filtering):", {
1516
- filesBeforeFilter: totalFilesFromRPC,
1517
- filesAfterFilter: files.length,
1518
- constructedFileReferences: files.map((f) => ({
1519
- id: f.id,
1520
- file_path: f.file_path,
1521
- organisation_id: f.organisation_id,
1522
- is_public: f.is_public
1523
- }))
1524
- });
1525
1451
  }
1526
1452
  } else {
1527
1453
  const { data: fileIds, error: rpcError } = await supabase.rpc("data_file_reference_list", {
@@ -1530,7 +1456,7 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1530
1456
  p_organisation_id: organisation_id
1531
1457
  });
1532
1458
  if (rpcError) {
1533
- console.error("[usePublicFileDisplay] RPC function error:", {
1459
+ logger.error("usePublicFileDisplay", "RPC function error", {
1534
1460
  function: "data_file_reference_list",
1535
1461
  table_name,
1536
1462
  record_id,
@@ -1555,56 +1481,6 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1555
1481
  }
1556
1482
  const publicFiles = files.filter((f) => f.is_public === true);
1557
1483
  if (publicFiles.length === 0) {
1558
- console.log("[usePublicFileDisplay] No public files found:", {
1559
- table_name,
1560
- record_id,
1561
- category,
1562
- organisation_id,
1563
- totalFilesFound: files.length,
1564
- note: "This is expected if no public files exist. Fallback UI will be shown if showFallback is enabled."
1565
- });
1566
- try {
1567
- console.log("[usePublicFileDisplay] Database Query Verification (debugging):", {
1568
- note: "Performing direct query to verify if files exist in database",
1569
- table_name,
1570
- record_id,
1571
- organisation_id,
1572
- category
1573
- });
1574
- const { data: directQueryData, error: directQueryError } = await supabase.from("file_references").select("id, file_path, file_metadata, is_public, organisation_id").eq("table_name", table_name).eq("record_id", record_id).eq("organisation_id", organisation_id);
1575
- if (directQueryError) {
1576
- console.warn("[usePublicFileDisplay] Direct query error (RLS may be blocking):", {
1577
- error: directQueryError.message,
1578
- code: directQueryError.code,
1579
- hint: "This is expected if RLS policies block anonymous access to file_references table"
1580
- });
1581
- } else {
1582
- const totalFilesInDB = directQueryData?.length || 0;
1583
- const publicFilesInDB = directQueryData?.filter((f) => f.is_public === true).length || 0;
1584
- const privateFilesInDB = directQueryData?.filter((f) => f.is_public === false).length || 0;
1585
- const filesWithCategory = category ? directQueryData?.filter(
1586
- (f) => f.file_metadata?.category === category
1587
- ).length || 0 : totalFilesInDB;
1588
- console.log("[usePublicFileDisplay] Database Query Results:", {
1589
- totalFilesInDB,
1590
- publicFilesInDB,
1591
- privateFilesInDB,
1592
- filesWithCategory: category ? filesWithCategory : "N/A (no category filter)",
1593
- filesWithMatchingCategoryAndPublic: category ? directQueryData?.filter(
1594
- (f) => f.is_public === true && f.file_metadata?.category === category
1595
- ).length || 0 : "N/A",
1596
- sampleFiles: directQueryData?.slice(0, 2).map((f) => ({
1597
- id: f.id,
1598
- is_public: f.is_public,
1599
- category: f.file_metadata?.category,
1600
- organisation_id: f.organisation_id
1601
- })) || [],
1602
- conclusion: totalFilesInDB === 0 ? "No files exist in database for this record" : publicFilesInDB === 0 ? "Files exist but none are marked as public (is_public = true)" : filesWithCategory === 0 && category ? `Files exist but none match category "${category}"` : "Files exist and should be accessible - RPC function may be filtering them out"
1603
- });
1604
- }
1605
- } catch (debugError) {
1606
- console.warn("[usePublicFileDisplay] Database verification query failed:", debugError);
1607
- }
1608
1484
  setFileUrl(null);
1609
1485
  setFileReference(null);
1610
1486
  setFileReferences([]);
@@ -1673,7 +1549,7 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1673
1549
  });
1674
1550
  }
1675
1551
  } catch (err) {
1676
- console.error("[usePublicFileDisplay] Error fetching files:", {
1552
+ logger.error("usePublicFileDisplay", "Error fetching files", {
1677
1553
  table_name,
1678
1554
  record_id,
1679
1555
  organisation_id,
@@ -1778,4 +1654,4 @@ export {
1778
1654
  clearPublicFileDisplayCache,
1779
1655
  getPublicFileDisplayCacheStats
1780
1656
  };
1781
- //# sourceMappingURL=chunk-VZ5OR6HD.js.map
1657
+ //# sourceMappingURL=chunk-TVYPTYOY.js.map