@jmruthers/pace-core 0.5.135 → 0.5.137

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 (544) hide show
  1. package/dist/{DataTable-A36PJG6N.js → DataTable-6M4L6BI2.js} +26 -13
  2. package/dist/{DataTable-C7GaRZye.d.ts → DataTable-CWAZZcXC.d.ts} +1 -1
  3. package/dist/{PublicLoadingSpinner-CUAnTvcg.d.ts → EventLogo-rFL_kRjk.d.ts} +123 -135
  4. package/dist/{UnifiedAuthProvider-BVKmQd9u.d.ts → UnifiedAuthProvider-DJxGTftH.d.ts} +1 -1
  5. package/dist/{UnifiedAuthProvider-CQDZRJIS.js → UnifiedAuthProvider-XIQQ7LVU.js} +5 -5
  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-F64FFPOZ.js → chunk-22WKWKRX.js} +26 -20
  9. package/dist/chunk-22WKWKRX.js.map +1 -0
  10. package/dist/{chunk-VZ5OR6HD.js → chunk-4C7EXCAR.js} +62 -150
  11. package/dist/chunk-4C7EXCAR.js.map +1 -0
  12. package/dist/{chunk-PYUXFQJ3.js → chunk-56XJ3TU6.js} +2 -2
  13. package/dist/chunk-56XJ3TU6.js.map +1 -0
  14. package/dist/{chunk-CTJRBUX2.js → chunk-6LAAY47Q.js} +2 -2
  15. package/dist/{chunk-UJI6WSMD.js → chunk-7QCC6MCP.js} +90 -3
  16. package/dist/chunk-7QCC6MCP.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-CQZU6TFE.js → chunk-BCIBECNB.js} +100 -62
  20. package/dist/chunk-BCIBECNB.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-BJPBT3CU.js +21 -0
  24. package/dist/chunk-BJPBT3CU.js.map +1 -0
  25. package/dist/{chunk-BYXRHAIF.js → chunk-BLCXZEYF.js} +23 -14
  26. package/dist/chunk-BLCXZEYF.js.map +1 -0
  27. package/dist/{chunk-WP5I5GLN.js → chunk-BVYWGZVV.js} +112 -97
  28. package/dist/chunk-BVYWGZVV.js.map +1 -0
  29. package/dist/{chunk-GEVIB2UB.js → chunk-ERISIBYU.js} +14 -5
  30. package/dist/chunk-ERISIBYU.js.map +1 -0
  31. package/dist/{chunk-O3NWNXDY.js → chunk-FMUCXFII.js} +2 -2
  32. package/dist/chunk-FMUCXFII.js.map +1 -0
  33. package/dist/{chunk-GVDR7WNV.js → chunk-HAWZXGR2.js} +334 -614
  34. package/dist/chunk-HAWZXGR2.js.map +1 -0
  35. package/dist/{chunk-ZV77RZMU.js → chunk-INQLMHPF.js} +2 -2
  36. package/dist/chunk-JISYG63F.js +70 -0
  37. package/dist/chunk-JISYG63F.js.map +1 -0
  38. package/dist/{chunk-HMNOSGVA.js → chunk-KYRHUBIU.js} +576 -767
  39. package/dist/chunk-KYRHUBIU.js.map +1 -0
  40. package/dist/{chunk-M6DDYFUD.js → chunk-LS353YLY.js} +19 -16
  41. package/dist/chunk-LS353YLY.js.map +1 -0
  42. package/dist/{chunk-TGIY2AR2.js → chunk-MA6EPSGZ.js} +4 -3
  43. package/dist/{chunk-TGIY2AR2.js.map → chunk-MA6EPSGZ.js.map} +1 -1
  44. package/dist/chunk-OWAG3GSU.js +58 -0
  45. package/dist/chunk-OWAG3GSU.js.map +1 -0
  46. package/dist/{chunk-JCQZ6LA7.js → chunk-Q5QRDWKI.js} +9 -3
  47. package/dist/chunk-Q5QRDWKI.js.map +1 -0
  48. package/dist/chunk-S5OFRT4M.js +94 -0
  49. package/dist/chunk-S5OFRT4M.js.map +1 -0
  50. package/dist/{chunk-3DBFLLLU.js → chunk-SBVILCCA.js} +14 -9
  51. package/dist/chunk-SBVILCCA.js.map +1 -0
  52. package/dist/{chunk-ZYZCRSBD.js → chunk-T6JN6LH6.js} +16 -11
  53. package/dist/chunk-T6JN6LH6.js.map +1 -0
  54. package/dist/chunk-XDNLUEXI.js +138 -0
  55. package/dist/chunk-XDNLUEXI.js.map +1 -0
  56. package/dist/{chunk-3CG5L6RN.js → chunk-YCWDTTUK.js} +90 -75
  57. package/dist/chunk-YCWDTTUK.js.map +1 -0
  58. package/dist/{chunk-5F3NDPJV.js → chunk-ZZ2SS7NI.js} +10 -5
  59. package/dist/chunk-ZZ2SS7NI.js.map +1 -0
  60. package/dist/components.d.ts +7 -287
  61. package/dist/components.js +27 -157
  62. package/dist/components.js.map +1 -1
  63. package/dist/{file-reference-C9isKNPn.d.ts → file-reference-C6Gkn77H.d.ts} +1 -1
  64. package/dist/{formatting-DFcCxUEk.d.ts → formatting-CvUXy2mF.d.ts} +1 -1
  65. package/dist/hooks.d.ts +3 -3
  66. package/dist/hooks.js +21 -16
  67. package/dist/hooks.js.map +1 -1
  68. package/dist/index.d.ts +101 -9
  69. package/dist/index.js +44 -31
  70. package/dist/index.js.map +1 -1
  71. package/dist/providers.d.ts +1 -1
  72. package/dist/providers.js +4 -4
  73. package/dist/rbac/index.js +12 -12
  74. package/dist/schema-DTDZQe2u.d.ts +28 -0
  75. package/dist/styles/index.js +2 -1
  76. package/dist/theming/runtime.d.ts +2 -19
  77. package/dist/theming/runtime.js +2 -1
  78. package/dist/{types-D5rqZQXk.d.ts → types-Dfz9dmVH.d.ts} +12 -1
  79. package/dist/types.d.ts +153 -4
  80. package/dist/types.js +51 -16
  81. package/dist/types.js.map +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 +221 -173
  85. package/dist/utils.js +185 -225
  86. package/dist/utils.js.map +1 -1
  87. package/dist/validation.d.ts +24 -115
  88. package/dist/validation.js +19 -474
  89. package/dist/validation.js.map +1 -1
  90. package/docs/api/classes/ColumnFactory.md +1 -1
  91. package/docs/api/classes/ErrorBoundary.md +6 -6
  92. package/docs/api/classes/InvalidScopeError.md +1 -1
  93. package/docs/api/classes/MissingUserContextError.md +1 -1
  94. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  95. package/docs/api/classes/PermissionDeniedError.md +1 -1
  96. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  97. package/docs/api/classes/RBACAuditManager.md +6 -6
  98. package/docs/api/classes/RBACCache.md +1 -1
  99. package/docs/api/classes/RBACEngine.md +7 -7
  100. package/docs/api/classes/RBACError.md +1 -1
  101. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  102. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  103. package/docs/api/classes/StorageUtils.md +1 -1
  104. package/docs/api/enums/FileCategory.md +1 -1
  105. package/docs/api/interfaces/AggregateConfig.md +4 -4
  106. package/docs/api/interfaces/BadgeProps.md +27 -0
  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 +591 -220
  199. package/docs/api-reference/components.md +106 -26
  200. package/docs/architecture/README.md +0 -3
  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/docs/styles/README.md +0 -2
  205. package/examples/README.md +30 -14
  206. package/examples/STRUCTURE.md +125 -0
  207. package/examples/components 2/DataTable/HierarchicalActionsExample.tsx +421 -0
  208. package/examples/components 2/DataTable/HierarchicalExample.tsx +475 -0
  209. package/examples/components 2/DataTable/InitialPageSizeExample.tsx +177 -0
  210. package/examples/components 2/DataTable/PerformanceExample.tsx +506 -0
  211. package/examples/components 2/DataTable/index.ts +13 -0
  212. package/examples/components 2/Dialog/BasicHtmlTest.tsx +55 -0
  213. package/examples/components 2/Dialog/DebugHtmlExample.tsx +68 -0
  214. package/examples/components 2/Dialog/HtmlDialogExample.tsx +202 -0
  215. package/examples/components 2/Dialog/ScrollableDialogExample.tsx +290 -0
  216. package/examples/components 2/Dialog/SimpleHtmlTest.tsx +61 -0
  217. package/examples/components 2/Dialog/SmartDialogExample.tsx +322 -0
  218. package/examples/components 2/Dialog/index.ts +15 -0
  219. package/examples/components 2/index.ts +11 -0
  220. package/examples/features/index.ts +12 -0
  221. package/{src/examples → examples/features/public-pages}/CorrectPublicPageImplementation.tsx +14 -17
  222. package/{src/examples → examples/features/public-pages}/PublicEventPage.tsx +14 -27
  223. package/{src/examples → examples/features/public-pages}/PublicPageApp.tsx +15 -28
  224. package/{src/examples → examples/features/public-pages}/PublicPageUsageExample.tsx +8 -10
  225. package/examples/features/public-pages/index.ts +14 -0
  226. package/examples/features/rbac/CompleteRBACExample.tsx +324 -0
  227. package/examples/features/rbac/EventBasedApp.tsx +239 -0
  228. package/examples/features/rbac/PermissionExample.tsx +151 -0
  229. package/examples/features/rbac/index.ts +13 -0
  230. package/examples/index.ts +11 -3
  231. package/package.json +30 -19
  232. package/src/__tests__/TEST_STANDARD.md +92 -0
  233. package/src/components/Alert/Alert.tsx +1 -1
  234. package/src/components/Avatar/Avatar.tsx +1 -1
  235. package/src/components/Badge/Badge.test.tsx +314 -0
  236. package/src/components/Badge/Badge.tsx +304 -0
  237. package/src/components/Badge/index.ts +3 -0
  238. package/src/components/Button/Button.tsx +1 -1
  239. package/src/components/Card/Card.tsx +1 -1
  240. package/src/components/Checkbox/Checkbox.tsx +1 -1
  241. package/src/components/DataTable/DataTable.test.tsx +1 -1
  242. package/src/components/DataTable/DataTable.tsx +1 -30
  243. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +562 -0
  244. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +217 -0
  245. package/src/components/DataTable/__tests__/styles.test.ts +3 -3
  246. package/src/components/DataTable/components/ActionButtons.tsx +0 -15
  247. package/src/components/DataTable/components/ColumnFilter.tsx +8 -4
  248. package/src/components/DataTable/components/DataTableBody.tsx +461 -0
  249. package/src/components/DataTable/components/DataTableCore.tsx +4 -185
  250. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +1 -1
  251. package/src/components/DataTable/components/DataTableModals.tsx +1 -27
  252. package/src/components/DataTable/components/DraggableColumnHeader.tsx +144 -0
  253. package/src/components/DataTable/components/EditableRow.tsx +1 -1
  254. package/src/components/DataTable/components/FilterRow.tsx +9 -3
  255. package/src/components/DataTable/components/ImportModal.tsx +2 -14
  256. package/src/components/DataTable/components/PaginationControls.tsx +2 -1
  257. package/src/components/DataTable/components/UnifiedTableBody.tsx +109 -82
  258. package/src/components/DataTable/components/VirtualizedDataTable.tsx +513 -0
  259. package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +14 -68
  260. package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +1 -1
  261. package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +62 -0
  262. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +1 -1
  263. package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +1 -1
  264. package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +43 -0
  265. package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +1 -1
  266. package/src/components/DataTable/core/ActionManager.ts +235 -0
  267. package/src/components/DataTable/core/ColumnManager.ts +205 -0
  268. package/src/components/DataTable/core/DataManager.ts +188 -0
  269. package/src/components/DataTable/core/DataTableContext.tsx +181 -0
  270. package/src/components/DataTable/core/LocalDataAdapter.ts +273 -0
  271. package/src/components/DataTable/core/PluginRegistry.ts +229 -0
  272. package/src/components/DataTable/core/StateManager.ts +311 -0
  273. package/src/components/DataTable/core/interfaces.ts +338 -0
  274. package/src/components/DataTable/examples/GroupingAggregationExample.tsx +273 -0
  275. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +1 -1
  276. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +1 -1
  277. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +1 -1
  278. package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +1 -1
  279. package/src/components/DataTable/hooks/useDataTablePermissions.ts +2 -23
  280. package/src/components/DataTable/index.ts +4 -0
  281. package/src/components/DataTable/styles.ts +28 -7
  282. package/src/components/DataTable/types.ts +13 -0
  283. package/src/components/DataTable/utils/__tests__/columnUtils.test.ts +94 -0
  284. package/src/components/DataTable/utils/__tests__/exportUtils.test.ts +1 -1
  285. package/src/components/DataTable/utils/aggregationUtils.ts +161 -0
  286. package/src/components/DataTable/utils/columnUtils.ts +40 -0
  287. package/src/components/DataTable/utils/debugTools.ts +609 -0
  288. package/src/components/DataTable/utils/exportUtils.ts +1 -1
  289. package/src/components/DataTable/utils/flexibleImport.ts +1 -11
  290. package/src/components/DataTable/utils/index.ts +2 -0
  291. package/src/components/DataTable/utils/paginationUtils.ts +1 -1
  292. package/src/components/Dialog/Dialog.tsx +2 -2
  293. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +8 -1
  294. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +35 -7
  295. package/src/components/ErrorBoundary/ErrorBoundary.tsx +5 -4
  296. package/src/components/EventSelector/EventSelector.tsx +3 -2
  297. package/src/components/FileDisplay/FileDisplay.tsx +2 -36
  298. package/src/components/FileUpload/FileUpload.test.tsx +2 -2
  299. package/src/components/FileUpload/FileUpload.tsx +2 -2
  300. package/src/components/Footer/Footer.test.tsx +1 -1
  301. package/src/components/Footer/Footer.tsx +1 -1
  302. package/src/components/Form/Form.test.tsx +5 -510
  303. package/src/components/Form/Form.tsx +1 -1
  304. package/src/components/Form/FormField.tsx +1 -1
  305. package/src/components/Form/index.ts +0 -12
  306. package/src/components/Header/Header.tsx +1 -1
  307. package/src/components/Input/Input.tsx +1 -1
  308. package/src/components/Label/Label.tsx +1 -1
  309. package/src/components/LoginForm/LoginForm.test.tsx +1 -1
  310. package/src/components/LoginForm/LoginForm.tsx +1 -1
  311. package/src/components/NavigationMenu/NavigationMenu.test.tsx +19 -3
  312. package/src/components/NavigationMenu/NavigationMenu.tsx +9 -8
  313. package/src/components/OrganisationSelector/OrganisationSelector.tsx +4 -3
  314. package/src/components/PaceAppLayout/PaceAppLayout.tsx +14 -12
  315. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +0 -16
  316. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.performance.test.tsx +76 -10
  317. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +0 -1
  318. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -9
  319. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +35 -3
  320. package/src/components/PaceLoginPage/PaceLoginPage.tsx +14 -13
  321. package/src/components/PasswordReset/PasswordChangeForm.tsx +1 -1
  322. package/src/components/PasswordReset/index.ts +0 -2
  323. package/src/components/Progress/Progress.tsx +1 -1
  324. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +35 -8
  325. package/src/components/ProtectedRoute/ProtectedRoute.tsx +3 -2
  326. package/src/components/PublicLayout/PublicErrorBoundary.tsx +1 -1
  327. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +1 -1
  328. package/src/components/PublicLayout/PublicPageContextChecker.tsx +44 -43
  329. package/src/components/PublicLayout/PublicPageFooter.tsx +1 -1
  330. package/src/components/PublicLayout/PublicPageHeader.tsx +1 -15
  331. package/src/components/PublicLayout/PublicPageProvider.tsx +3 -2
  332. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +2 -0
  333. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +1 -1
  334. package/src/components/PublicLayout/index.ts +4 -2
  335. package/src/components/Select/Select.test.tsx +1 -1
  336. package/src/components/Select/Select.tsx +21 -9
  337. package/src/components/{SessionRestorationLoader.tsx → SessionRestorationLoader/SessionRestorationLoader.tsx} +3 -2
  338. package/src/components/SessionRestorationLoader/index.ts +3 -0
  339. package/src/components/Switch/Switch.tsx +1 -1
  340. package/src/components/Table/Table.tsx +1 -1
  341. package/src/components/Table/__tests__/Table.test.tsx +1 -1
  342. package/src/components/Toast/Toast.tsx +1 -1
  343. package/src/components/Tooltip/Tooltip.tsx +1 -1
  344. package/src/components/index.ts +7 -10
  345. package/src/hooks/__tests__/hooks.integration.test.tsx +37 -22
  346. package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +33 -17
  347. package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +28 -3
  348. package/src/hooks/__tests__/useFileDisplay.unit.test.ts +36 -9
  349. package/src/hooks/__tests__/useFileUrl.unit.test.ts +83 -85
  350. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +26 -2
  351. package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +19 -6
  352. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -4
  353. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +17 -4
  354. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +26 -6
  355. package/src/hooks/__tests__/usePublicFileDisplay.test.ts +16 -6
  356. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +3 -3
  357. package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +17 -3
  358. package/src/hooks/public/usePublicEvent.ts +7 -6
  359. package/src/hooks/public/usePublicEventLogo.ts +7 -4
  360. package/src/hooks/public/usePublicFileDisplay.ts +6 -150
  361. package/src/hooks/useComponentPerformance.ts +4 -1
  362. package/src/hooks/useDataTablePerformance.ts +4 -3
  363. package/src/hooks/useEventTheme.test.ts +18 -5
  364. package/src/hooks/useEventTheme.ts +4 -1
  365. package/src/hooks/useEvents.ts +2 -0
  366. package/src/hooks/useFileDisplay.ts +9 -8
  367. package/src/hooks/useFileReference.ts +4 -1
  368. package/src/hooks/useFileUrl.ts +4 -1
  369. package/src/hooks/useInactivityTracker.ts +5 -4
  370. package/src/hooks/useOrganisationSecurity.test.ts +33 -12
  371. package/src/hooks/useOrganisationSecurity.ts +8 -7
  372. package/src/hooks/usePerformanceMonitor.ts +6 -3
  373. package/src/hooks/usePermissionCache.ts +13 -6
  374. package/src/hooks/useSecureDataAccess.test.ts +2 -2
  375. package/src/hooks/useSecureDataAccess.ts +9 -8
  376. package/src/hooks/useSessionRestoration.ts +4 -1
  377. package/src/hooks/useStorage.ts +4 -1
  378. package/src/index.ts +20 -7
  379. package/src/providers/services/AuthServiceProvider.tsx +3 -2
  380. package/src/providers/services/EventServiceProvider.tsx +2 -1
  381. package/src/providers/services/InactivityServiceProvider.tsx +2 -1
  382. package/src/providers/services/OrganisationServiceProvider.tsx +2 -1
  383. package/src/providers/services/UnifiedAuthProvider.tsx +4 -3
  384. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +22 -2
  385. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +24 -2
  386. package/src/rbac/__tests__/cache-invalidation.test.ts +20 -6
  387. package/src/rbac/api.ts +5 -2
  388. package/src/rbac/audit-enhanced.ts +6 -6
  389. package/src/rbac/audit.test.ts +60 -38
  390. package/src/rbac/audit.ts +8 -8
  391. package/src/rbac/cache-invalidation.ts +7 -4
  392. package/src/rbac/components/EnhancedNavigationMenu.tsx +11 -5
  393. package/src/rbac/components/NavigationGuard.tsx +7 -3
  394. package/src/rbac/components/NavigationProvider.tsx +6 -3
  395. package/src/rbac/components/PagePermissionGuard.tsx +28 -16
  396. package/src/rbac/components/PagePermissionProvider.tsx +4 -1
  397. package/src/rbac/components/PermissionEnforcer.tsx +9 -3
  398. package/src/rbac/components/RoleBasedRouter.tsx +3 -1
  399. package/src/rbac/components/SecureDataProvider.tsx +7 -3
  400. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +87 -61
  401. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +83 -33
  402. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +36 -13
  403. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +2 -2
  404. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +22 -8
  405. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +19 -6
  406. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +43 -17
  407. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +42 -17
  408. package/src/rbac/engine.ts +15 -7
  409. package/src/rbac/hooks/usePermissions.ts +7 -3
  410. package/src/rbac/hooks/useResolvedScope.test.ts +2 -2
  411. package/src/rbac/hooks/useResolvedScope.ts +10 -7
  412. package/src/rbac/permissions.ts +5 -2
  413. package/src/rbac/security.test.ts +27 -16
  414. package/src/rbac/security.ts +5 -4
  415. package/src/services/AuthService.ts +22 -21
  416. package/src/services/EventService.ts +12 -12
  417. package/src/services/InactivityService.ts +5 -4
  418. package/src/services/OrganisationService.ts +26 -25
  419. package/src/services/__tests__/AuthService.test.ts +51 -19
  420. package/src/services/__tests__/EventService.test.ts +37 -5
  421. package/src/services/__tests__/InactivityService.test.ts +38 -4
  422. package/src/services/__tests__/OrganisationService.test.ts +3 -8
  423. package/src/services/base/BaseService.ts +3 -1
  424. package/src/styles/core.css +3 -0
  425. package/src/theming/__tests__/runtime.test.ts +21 -12
  426. package/src/theming/parseEventColours.ts +5 -19
  427. package/src/theming/runtime.ts +8 -4
  428. package/src/types/validation.ts +2 -29
  429. package/src/utils/__tests__/appConfig.unit.test.ts +1 -1
  430. package/src/utils/__tests__/audit.unit.test.ts +1 -1
  431. package/src/utils/__tests__/auth-utils.unit.test.ts +1 -1
  432. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +19 -19
  433. package/src/utils/__tests__/cn.unit.test.ts +1 -1
  434. package/src/utils/__tests__/debugLogger.test.ts +1 -1
  435. package/src/utils/__tests__/deviceFingerprint.unit.test.ts +1 -1
  436. package/src/utils/__tests__/dynamicUtils.unit.test.ts +1 -1
  437. package/src/utils/__tests__/formatting.unit.test.ts +1 -1
  438. package/src/utils/__tests__/lazyLoad.unit.test.tsx +1 -1
  439. package/src/utils/__tests__/logger.unit.test.ts +1 -1
  440. package/src/utils/__tests__/organisationContext.unit.test.ts +1 -1
  441. package/src/utils/__tests__/performanceBenchmark.test.ts +1 -1
  442. package/src/utils/__tests__/performanceBudgets.unit.test.ts +1 -1
  443. package/src/utils/__tests__/permissionTypes.unit.test.ts +1 -1
  444. package/src/utils/__tests__/permissionUtils.unit.test.ts +1 -1
  445. package/src/utils/__tests__/sanitization.unit.test.ts +1 -1
  446. package/src/utils/__tests__/schemaUtils.unit.test.ts +1 -1
  447. package/src/utils/__tests__/secureDataAccess.unit.test.ts +1 -1
  448. package/src/utils/__tests__/secureErrors.unit.test.ts +33 -15
  449. package/src/utils/__tests__/secureStorage.unit.test.ts +1 -1
  450. package/src/utils/__tests__/security.unit.test.ts +40 -18
  451. package/src/utils/__tests__/securityMonitor.unit.test.ts +1 -1
  452. package/src/utils/__tests__/sessionTracking.unit.test.ts +40 -29
  453. package/src/utils/__tests__/validationUtils.unit.test.ts +19 -6
  454. package/src/utils/app/appConfig.ts +47 -0
  455. package/src/utils/app/appIdResolver.test.ts +497 -0
  456. package/src/utils/app/appIdResolver.ts +133 -0
  457. package/src/utils/app/appNameResolver.simple.test.ts +212 -0
  458. package/src/utils/app/appNameResolver.test.ts +121 -0
  459. package/src/utils/app/appNameResolver.ts +195 -0
  460. package/src/utils/audit/audit.ts +127 -0
  461. package/src/utils/context/organisationContext.test.ts +322 -0
  462. package/src/utils/context/organisationContext.ts +156 -0
  463. package/src/utils/context/sessionTracking.ts +125 -0
  464. package/src/utils/core/cn.ts +7 -0
  465. package/src/utils/core/debugLogger.ts +67 -0
  466. package/src/utils/core/logger.ts +181 -0
  467. package/src/utils/device/deviceFingerprint.ts +215 -0
  468. package/src/utils/dynamic/dynamicUtils.ts +105 -0
  469. package/src/utils/dynamic/lazyLoad.tsx +44 -0
  470. package/src/utils/file-reference/__tests__/file-reference.test.ts +788 -0
  471. package/src/utils/file-reference/index.ts +501 -0
  472. package/src/utils/formatting/formatDate.test.ts +237 -0
  473. package/src/utils/formatting/formatting.ts +133 -0
  474. package/src/utils/index.ts +39 -54
  475. package/src/utils/performance/bundleAnalysis.ts +129 -0
  476. package/src/utils/performance/performanceBenchmark.ts +64 -0
  477. package/src/utils/performance/performanceBudgets.ts +110 -0
  478. package/src/utils/permissions/permissionTypes.ts +37 -0
  479. package/src/utils/permissions/permissionUtils.test.ts +393 -0
  480. package/src/utils/permissions/permissionUtils.ts +34 -0
  481. package/src/utils/security/auth-utils.ts +96 -0
  482. package/src/utils/security/secureDataAccess.test.ts +711 -0
  483. package/src/utils/security/secureDataAccess.ts +377 -0
  484. package/src/utils/security/secureErrors.ts +82 -0
  485. package/src/utils/security/secureStorage.ts +244 -0
  486. package/src/utils/security/security.ts +159 -0
  487. package/src/utils/security/securityMonitor.ts +45 -0
  488. package/src/utils/storage/__tests__/helpers.unit.test.ts +1 -4
  489. package/src/utils/storage/helpers.ts +15 -8
  490. package/src/utils/validation/__tests__/htmlSanitization.unit.test.ts +598 -0
  491. package/src/{validation → utils/validation}/csrf.ts +1 -1
  492. package/src/utils/validation/htmlSanitization.ts +184 -0
  493. package/src/utils/validation/index.ts +79 -0
  494. package/src/utils/validation/sanitization.ts +333 -0
  495. package/src/{validation/schemaUtils.ts → utils/validation/schema.ts} +11 -6
  496. package/src/{validation → utils/validation}/sqlInjectionProtection.ts +2 -0
  497. package/src/utils/validation/validation.ts +111 -0
  498. package/src/utils/validation/validationUtils.ts +123 -0
  499. package/src/validation/index.ts +3 -34
  500. package/dist/chunk-24MKLB7U.js +0 -81
  501. package/dist/chunk-24MKLB7U.js.map +0 -1
  502. package/dist/chunk-3CG5L6RN.js.map +0 -1
  503. package/dist/chunk-3DBFLLLU.js.map +0 -1
  504. package/dist/chunk-5F3NDPJV.js.map +0 -1
  505. package/dist/chunk-66C4BSAY.js.map +0 -1
  506. package/dist/chunk-BDZUMRBD.js +0 -87
  507. package/dist/chunk-BDZUMRBD.js.map +0 -1
  508. package/dist/chunk-BYXRHAIF.js.map +0 -1
  509. package/dist/chunk-CDQ3PX7L.js +0 -18
  510. package/dist/chunk-CDQ3PX7L.js.map +0 -1
  511. package/dist/chunk-CQZU6TFE.js.map +0 -1
  512. package/dist/chunk-F64FFPOZ.js.map +0 -1
  513. package/dist/chunk-GEVIB2UB.js.map +0 -1
  514. package/dist/chunk-GKHF54DI.js.map +0 -1
  515. package/dist/chunk-GVDR7WNV.js.map +0 -1
  516. package/dist/chunk-HMNOSGVA.js.map +0 -1
  517. package/dist/chunk-JCQZ6LA7.js.map +0 -1
  518. package/dist/chunk-M6DDYFUD.js.map +0 -1
  519. package/dist/chunk-O3NWNXDY.js.map +0 -1
  520. package/dist/chunk-PYUXFQJ3.js.map +0 -1
  521. package/dist/chunk-UJI6WSMD.js.map +0 -1
  522. package/dist/chunk-VZ5OR6HD.js.map +0 -1
  523. package/dist/chunk-WP5I5GLN.js.map +0 -1
  524. package/dist/chunk-ZYZCRSBD.js.map +0 -1
  525. package/dist/validation-DnhrNMju.d.ts +0 -159
  526. package/src/components/PublicLayout/__tests__/PublicPageDebugger.test.tsx +0 -185
  527. package/src/validation/__tests__/common.unit.test.ts +0 -101
  528. package/src/validation/__tests__/csrf.unit.test.ts +0 -365
  529. package/src/validation/__tests__/passwordSchema.unit.test.ts +0 -203
  530. package/src/validation/__tests__/sanitization.unit.test.ts +0 -250
  531. package/src/validation/__tests__/schemaUtils.unit.test.ts +0 -451
  532. package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +0 -462
  533. package/src/validation/__tests__/user.unit.test.ts +0 -440
  534. package/src/validation/sanitization.ts +0 -96
  535. /package/dist/{DataTable-A36PJG6N.js.map → DataTable-6M4L6BI2.js.map} +0 -0
  536. /package/dist/{UnifiedAuthProvider-CQDZRJIS.js.map → UnifiedAuthProvider-XIQQ7LVU.js.map} +0 -0
  537. /package/dist/{api-TNIBJWLM.js.map → api-45XYYO2A.js.map} +0 -0
  538. /package/dist/{audit-T36HM7IM.js.map → audit-64X3VJXB.js.map} +0 -0
  539. /package/dist/{chunk-CTJRBUX2.js.map → chunk-6LAAY47Q.js.map} +0 -0
  540. /package/dist/{chunk-ZV77RZMU.js.map → chunk-INQLMHPF.js.map} +0 -0
  541. /package/dist/{useInactivityTracker-MRUU55XI.js.map → useInactivityTracker-TO6ZOF35.js.map} +0 -0
  542. /package/src/{validation → utils/validation}/common.ts +0 -0
  543. /package/src/{validation → utils/validation}/passwordSchema.ts +0 -0
  544. /package/src/{validation → utils/validation}/user.ts +0 -0
@@ -2,29 +2,30 @@ import {
2
2
  init_useOrganisations,
3
3
  useEvents,
4
4
  useOrganisations
5
- } from "./chunk-TGIY2AR2.js";
5
+ } from "./chunk-MA6EPSGZ.js";
6
6
  import {
7
7
  init_UnifiedAuthProvider
8
- } from "./chunk-CTJRBUX2.js";
8
+ } from "./chunk-6LAAY47Q.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-YCWDTTUK.js";
16
16
  import {
17
17
  cn
18
- } from "./chunk-PYUXFQJ3.js";
19
- import {
20
- init_organisationContext,
21
- setOrganisationContext
22
- } from "./chunk-BDZUMRBD.js";
18
+ } from "./chunk-56XJ3TU6.js";
23
19
  import {
24
20
  applyPalette,
25
21
  clearPalette,
26
22
  parseAndNormalizeEventColours
27
- } from "./chunk-GEVIB2UB.js";
23
+ } from "./chunk-ERISIBYU.js";
24
+ import {
25
+ createLogger,
26
+ init_logger,
27
+ logger
28
+ } from "./chunk-XDNLUEXI.js";
28
29
  import {
29
30
  __esm,
30
31
  __export
@@ -50,6 +51,8 @@ var init_OrganisationProvider = __esm({
50
51
  // src/hooks/useEventTheme.ts
51
52
  import { useEffect } from "react";
52
53
  import { useLocation } from "react-router-dom";
54
+ init_logger();
55
+ var log = createLogger("useEventTheme");
53
56
  function useEventTheme(event) {
54
57
  const location = useLocation();
55
58
  let selectedEvent;
@@ -86,7 +89,7 @@ function useEventTheme(event) {
86
89
  try {
87
90
  applyPalette(normalized);
88
91
  } catch (error) {
89
- console.error("[useEventTheme] Failed to apply event palette:", error);
92
+ log.error("Failed to apply event palette:", error);
90
93
  }
91
94
  return () => {
92
95
  };
@@ -252,6 +255,7 @@ function DefaultPublicErrorFallback({
252
255
  // src/components/PublicLayout/PublicPageProvider.tsx
253
256
  import { createContext, useContext, useMemo } from "react";
254
257
  import { createClient } from "@supabase/supabase-js";
258
+ init_logger();
255
259
  import { jsx as jsx2 } from "react/jsx-runtime";
256
260
  var PublicPageContext = createContext(void 0);
257
261
  function PublicPageProvider({ children, appName }) {
@@ -268,11 +272,11 @@ function PublicPageProvider({ children, appName }) {
268
272
  const supabaseKey = getEnvVar("VITE_SUPABASE_ANON_KEY") || getEnvVar("NEXT_PUBLIC_SUPABASE_ANON_KEY") || null;
269
273
  const supabase = useMemo(() => {
270
274
  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.");
275
+ logger.warn("PublicPageProvider", "Missing Supabase environment variables. Please ensure VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY are set in your environment.");
272
276
  return null;
273
277
  }
274
278
  const client = createClient(supabaseUrl, supabaseKey);
275
- console.log("[PublicPageProvider] Supabase client created successfully for public pages");
279
+ logger.info("PublicPageProvider", "Supabase client created successfully for public pages");
276
280
  return client;
277
281
  }, [supabaseUrl, supabaseKey]);
278
282
  const contextValue = {
@@ -415,6 +419,8 @@ function validateFileSize(file) {
415
419
  }
416
420
 
417
421
  // src/utils/storage/helpers.ts
422
+ init_logger();
423
+ var log2 = createLogger("StorageHelpers");
418
424
  function generateFilePath(options, fileName) {
419
425
  const { orgId, isPublic = false, customPath } = options;
420
426
  if (!orgId) {
@@ -461,13 +467,11 @@ async function extractFileMetadata(file, options, uploadedBy) {
461
467
  metadata.width = dimensions.width;
462
468
  metadata.height = dimensions.height;
463
469
  } catch (error) {
464
- console.warn("Could not extract image dimensions:", error);
465
470
  }
466
471
  }
467
472
  try {
468
473
  metadata.hash = await generateFileHash(file);
469
474
  } catch (error) {
470
- console.warn("Could not generate file hash:", error);
471
475
  }
472
476
  return metadata;
473
477
  }
@@ -594,7 +598,7 @@ async function getSignedUrl(supabase, path, options) {
594
598
  const bucketName = getBucketName(false);
595
599
  const { data, error } = await supabase.storage.from(bucketName).createSignedUrl(path, options.expiresIn || 3600);
596
600
  if (error) {
597
- console.error("Failed to create signed URL:", error);
601
+ log2.error("Failed to create signed URL:", error);
598
602
  return null;
599
603
  }
600
604
  return {
@@ -602,7 +606,7 @@ async function getSignedUrl(supabase, path, options) {
602
606
  expiresAt: new Date(Date.now() + (options.expiresIn || 3600) * 1e3).toISOString()
603
607
  };
604
608
  } catch (error) {
605
- console.error("Failed to create signed URL:", error);
609
+ log2.error("Failed to create signed URL:", error);
606
610
  return null;
607
611
  }
608
612
  }
@@ -635,7 +639,7 @@ async function listFiles(supabase, options) {
635
639
  sortBy: { column: "created_at", order: "desc" }
636
640
  });
637
641
  if (error) {
638
- console.error("Failed to list files:", error);
642
+ log2.error("Failed to list files:", error);
639
643
  return { files: [], totalCount: 0, hasMore: false };
640
644
  }
641
645
  const files = (data || []).map((item) => ({
@@ -660,7 +664,7 @@ async function listFiles(supabase, options) {
660
664
  hasMore: files.length >= (options.limit || 100)
661
665
  };
662
666
  } catch (error) {
663
- console.error("Failed to list files:", error);
667
+ log2.error("Failed to list files:", error);
664
668
  return { files: [], totalCount: 0, hasMore: false };
665
669
  }
666
670
  }
@@ -669,7 +673,7 @@ async function downloadFile(supabase, path, isPublic = false) {
669
673
  const bucketName = getBucketName(isPublic);
670
674
  const { data, error } = await supabase.storage.from(bucketName).download(path);
671
675
  if (error) {
672
- console.error("Failed to download file:", error);
676
+ log2.error("Failed to download file:", error);
673
677
  return null;
674
678
  }
675
679
  if (!data) {
@@ -689,7 +693,7 @@ async function downloadFile(supabase, path, isPublic = false) {
689
693
  }
690
694
  };
691
695
  } catch (error) {
692
- console.error("Failed to download file:", error);
696
+ log2.error("Failed to download file:", error);
693
697
  return null;
694
698
  }
695
699
  }
@@ -720,8 +724,30 @@ async function archiveFile(supabase, path, options) {
720
724
  // src/hooks/useFileDisplay.ts
721
725
  import { useState, useEffect as useEffect2, useCallback } from "react";
722
726
 
727
+ // src/utils/organisationContext.ts
728
+ async function setOrganisationContext(supabase, organisationId) {
729
+ if (!supabase || !organisationId) {
730
+ return;
731
+ }
732
+ try {
733
+ const timeoutPromise = new Promise((_, reject) => {
734
+ setTimeout(() => reject(new Error("RPC timeout after 3 seconds")), 3e3);
735
+ });
736
+ const rpcPromise = supabase.rpc("set_organisation_context", {
737
+ org_id: organisationId
738
+ });
739
+ const { error } = await Promise.race([rpcPromise, timeoutPromise]);
740
+ if (error) {
741
+ console.log("[organisationContext] RPC function not available or failed, continuing without database context");
742
+ } else {
743
+ console.log("[organisationContext] Organisation context set in database successfully");
744
+ }
745
+ } catch (error) {
746
+ console.log("[organisationContext] Failed to set database context, continuing without it:", error);
747
+ }
748
+ }
749
+
723
750
  // src/utils/file-reference.ts
724
- init_organisationContext();
725
751
  var FileReferenceServiceImpl = class {
726
752
  constructor(supabase) {
727
753
  this.supabase = supabase;
@@ -1092,6 +1118,7 @@ async function uploadFileWithReference(supabase, options, file) {
1092
1118
  }
1093
1119
 
1094
1120
  // src/hooks/useFileDisplay.ts
1121
+ init_logger();
1095
1122
  var authenticatedFileCache = /* @__PURE__ */ new Map();
1096
1123
  var MAX_CACHE_SIZE = 100;
1097
1124
  function cleanupCache() {
@@ -1136,7 +1163,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1136
1163
  }
1137
1164
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1138
1165
  if (!uuidRegex.test(organisation_id)) {
1139
- console.warn("[useFileDisplay] Invalid organisationId format (not a valid UUID):", organisation_id);
1166
+ logger.warn("useFileDisplay", "Invalid organisationId format (not a valid UUID):", organisation_id);
1140
1167
  }
1141
1168
  const cacheKey = `file_${table_name}_${record_id}_${organisation_id}_${category || "all"}`;
1142
1169
  if (enableCache) {
@@ -1160,7 +1187,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1160
1187
  setError(null);
1161
1188
  return;
1162
1189
  } catch (err) {
1163
- console.warn("[useFileDisplay] Failed to regenerate signed URL from cache, falling back to fetch:", err);
1190
+ logger.warn("useFileDisplay", "Failed to regenerate signed URL from cache, falling back to fetch:", err);
1164
1191
  }
1165
1192
  }
1166
1193
  setFileUrl(cachedData.fileUrl || null);
@@ -1179,7 +1206,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1179
1206
  const service = createFileReferenceService(supabase);
1180
1207
  let files = [];
1181
1208
  if (category) {
1182
- console.log("[useFileDisplay] Using RPC function for category filtering:", {
1209
+ logger.debug("useFileDisplay", "Using RPC function for category filtering:", {
1183
1210
  table_name,
1184
1211
  record_id,
1185
1212
  category,
@@ -1218,7 +1245,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1218
1245
  setFileCount(files.length);
1219
1246
  if (category && files.length > 0) {
1220
1247
  const firstFile = files[0];
1221
- console.log("[useFileDisplay] Processing category files, first file:", {
1248
+ logger.debug("useFileDisplay", "Processing category files, first file:", {
1222
1249
  id: firstFile.id,
1223
1250
  file_path: firstFile.file_path,
1224
1251
  is_public: firstFile.is_public,
@@ -1229,7 +1256,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1229
1256
  let url = null;
1230
1257
  if (firstFile.is_public) {
1231
1258
  url = getPublicUrl(supabase, firstFile.file_path, true);
1232
- console.log("[useFileDisplay] Generated public URL:", url);
1259
+ logger.debug("useFileDisplay", "Generated public URL:", url);
1233
1260
  } else {
1234
1261
  const signedUrlResult = await getSignedUrl(supabase, firstFile.file_path, {
1235
1262
  appName: "pace-core",
@@ -1237,9 +1264,9 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1237
1264
  expiresIn: 3600
1238
1265
  });
1239
1266
  url = signedUrlResult?.url || null;
1240
- console.log("[useFileDisplay] Generated signed URL:", url ? "URL generated" : "URL generation failed");
1267
+ logger.debug("useFileDisplay", "Generated signed URL:", url ? "URL generated" : "URL generation failed");
1241
1268
  }
1242
- console.log("[useFileDisplay] Setting file URL:", url ? "URL set" : "URL is null");
1269
+ logger.debug("useFileDisplay", "Setting file URL:", url ? "URL set" : "URL is null");
1243
1270
  setFileUrl(url);
1244
1271
  } else {
1245
1272
  const urlMap = /* @__PURE__ */ new Map();
@@ -1297,7 +1324,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
1297
1324
  cleanupCache();
1298
1325
  }
1299
1326
  } catch (err) {
1300
- console.error("[useFileDisplay] Error fetching files:", err);
1327
+ logger.error("useFileDisplay", "Error fetching files:", err);
1301
1328
  const error2 = err instanceof Error ? err : new Error("Unknown error occurred");
1302
1329
  setError(error2);
1303
1330
  setFileUrl(null);
@@ -1366,6 +1393,7 @@ function invalidateFileDisplayCache(table_name, record_id, organisation_id, cate
1366
1393
 
1367
1394
  // src/hooks/public/usePublicFileDisplay.ts
1368
1395
  import { useState as useState2, useEffect as useEffect3, useCallback as useCallback2 } from "react";
1396
+ init_logger();
1369
1397
  var publicFileCache = /* @__PURE__ */ new Map();
1370
1398
  function usePublicFileDisplay(table_name, record_id, organisation_id, category, options) {
1371
1399
  const {
@@ -1393,7 +1421,7 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1393
1421
  }
1394
1422
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1395
1423
  if (!uuidRegex.test(organisation_id)) {
1396
- console.warn("[usePublicFileDisplay] Invalid organisationId format (not a valid UUID):", organisation_id);
1424
+ logger.warn("usePublicFileDisplay", "Invalid organisationId format (not a valid UUID)", { organisation_id });
1397
1425
  }
1398
1426
  const cacheKey = `public_file_${table_name}_${record_id}_${organisation_id}_${category || "all"}`;
1399
1427
  if (enableCache) {
@@ -1421,46 +1449,9 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1421
1449
  p_category: category,
1422
1450
  p_organisation_id: organisation_id
1423
1451
  };
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
1452
  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
1453
  if (rpcError) {
1463
- console.error("[usePublicFileDisplay] RPC function error:", {
1454
+ logger.error("usePublicFileDisplay", "RPC function error", {
1464
1455
  function: "data_file_reference_by_category_list",
1465
1456
  table_name,
1466
1457
  record_id,
@@ -1476,25 +1467,6 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1476
1467
  if (!data || data.length === 0) {
1477
1468
  files = [];
1478
1469
  } 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
1470
  files = data.filter((item) => {
1499
1471
  return item.is_public === true && item.id && item.file_path && item.file_metadata;
1500
1472
  }).map((item) => {
@@ -1512,16 +1484,6 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1512
1484
  updated_at: item.created_at || (/* @__PURE__ */ new Date()).toISOString()
1513
1485
  };
1514
1486
  });
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
1487
  }
1526
1488
  } else {
1527
1489
  const { data: fileIds, error: rpcError } = await supabase.rpc("data_file_reference_list", {
@@ -1530,7 +1492,7 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1530
1492
  p_organisation_id: organisation_id
1531
1493
  });
1532
1494
  if (rpcError) {
1533
- console.error("[usePublicFileDisplay] RPC function error:", {
1495
+ logger.error("usePublicFileDisplay", "RPC function error", {
1534
1496
  function: "data_file_reference_list",
1535
1497
  table_name,
1536
1498
  record_id,
@@ -1555,56 +1517,6 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1555
1517
  }
1556
1518
  const publicFiles = files.filter((f) => f.is_public === true);
1557
1519
  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
1520
  setFileUrl(null);
1609
1521
  setFileReference(null);
1610
1522
  setFileReferences([]);
@@ -1673,7 +1585,7 @@ function usePublicFileDisplay(table_name, record_id, organisation_id, category,
1673
1585
  });
1674
1586
  }
1675
1587
  } catch (err) {
1676
- console.error("[usePublicFileDisplay] Error fetching files:", {
1588
+ logger.error("usePublicFileDisplay", "Error fetching files", {
1677
1589
  table_name,
1678
1590
  record_id,
1679
1591
  organisation_id,
@@ -1778,4 +1690,4 @@ export {
1778
1690
  clearPublicFileDisplayCache,
1779
1691
  getPublicFileDisplayCacheStats
1780
1692
  };
1781
- //# sourceMappingURL=chunk-VZ5OR6HD.js.map
1693
+ //# sourceMappingURL=chunk-4C7EXCAR.js.map