@jmruthers/pace-core 0.5.181 → 0.5.182

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (750) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +16 -2
  3. package/dist/{AuthService-DYuQPJj6.d.ts → AuthService-B-cd2MA4.d.ts} +9 -11
  4. package/dist/{DataTable-CWAZZcXC.d.ts → DataTable-Bz8ffqyA.d.ts} +1 -1
  5. package/dist/{DataTable-UA6CL4JI.js → DataTable-QAB34V6K.js} +14 -15
  6. package/dist/UnifiedAuthProvider-7F6T4B6K.js +13 -0
  7. package/dist/{UnifiedAuthProvider-DJxGTftH.d.ts → UnifiedAuthProvider-F86d7dSi.d.ts} +5 -6
  8. package/dist/{api-45XYYO2A.js → api-ROMBCNKU.js} +5 -5
  9. package/dist/{audit-64X3VJXB.js → audit-WRS3KJKI.js} +4 -4
  10. package/dist/auth-BZOJqrdd.d.ts +49 -0
  11. package/dist/{chunk-CX5M4ZAG.js → chunk-5DRSZLL2.js} +1 -1
  12. package/dist/chunk-5DRSZLL2.js.map +1 -0
  13. package/dist/{chunk-BESYRHQM.js → chunk-6C4YBBJM.js} +10 -7
  14. package/dist/chunk-6C4YBBJM.js.map +1 -0
  15. package/dist/{chunk-PLDDJCW6.js → chunk-7D4SUZUM.js} +2 -13
  16. package/dist/{chunk-HRO5HWN2.js → chunk-CSOFYHAG.js} +55 -162
  17. package/dist/chunk-CSOFYHAG.js.map +1 -0
  18. package/dist/{chunk-ANBQRTPX.js → chunk-E66EQZE6.js} +3 -5
  19. package/dist/{chunk-ANBQRTPX.js.map → chunk-E66EQZE6.js.map} +1 -1
  20. package/dist/{chunk-Q5QRDWKI.js → chunk-F2IMUDXZ.js} +4 -6
  21. package/dist/chunk-F2IMUDXZ.js.map +1 -0
  22. package/dist/{chunk-SBVILCCA.js → chunk-FSFQFJCU.js} +28 -6
  23. package/dist/chunk-FSFQFJCU.js.map +1 -0
  24. package/dist/chunk-FUEYYMX5.js +2296 -0
  25. package/dist/chunk-FUEYYMX5.js.map +1 -0
  26. package/dist/{chunk-FFKNH6U5.js → chunk-HKIT6O7W.js} +3 -5
  27. package/dist/{chunk-FFKNH6U5.js.map → chunk-HKIT6O7W.js.map} +1 -1
  28. package/dist/chunk-KQCRWDSA.js +1 -0
  29. package/dist/{chunk-S5OFRT4M.js → chunk-KUEN3HFB.js} +6 -6
  30. package/dist/chunk-KUEN3HFB.js.map +1 -0
  31. package/dist/chunk-LMC26NLJ.js +84 -0
  32. package/dist/chunk-LMC26NLJ.js.map +1 -0
  33. package/dist/{chunk-BVYWGZVV.js → chunk-M7W4CP3M.js} +52 -19
  34. package/dist/chunk-M7W4CP3M.js.map +1 -0
  35. package/dist/{chunk-HZLDFOE4.js → chunk-MI7HBHN3.js} +164 -243
  36. package/dist/chunk-MI7HBHN3.js.map +1 -0
  37. package/dist/{chunk-PPMP5J6T.js → chunk-PWAHJW4G.js} +180 -29
  38. package/dist/chunk-PWAHJW4G.js.map +1 -0
  39. package/dist/chunk-PWLANIRT.js +127 -0
  40. package/dist/{chunk-XDNLUEXI.js.map → chunk-PWLANIRT.js.map} +1 -1
  41. package/dist/chunk-QCDXODCA.js +75 -0
  42. package/dist/chunk-QCDXODCA.js.map +1 -0
  43. package/dist/{chunk-D7LCGMVS.js → chunk-QETLRQI6.js} +526 -887
  44. package/dist/chunk-QETLRQI6.js.map +1 -0
  45. package/dist/{chunk-5MT24GKJ.js → chunk-QUVSNGIP.js} +264 -262
  46. package/dist/chunk-QUVSNGIP.js.map +1 -0
  47. package/dist/chunk-QXHPKYJV.js +113 -0
  48. package/dist/chunk-QXHPKYJV.js.map +1 -0
  49. package/dist/{chunk-OWAG3GSU.js → chunk-R77UEZ4E.js} +11 -1
  50. package/dist/chunk-R77UEZ4E.js.map +1 -0
  51. package/dist/{chunk-ZYTYSTO5.js → chunk-RA3JUFMW.js} +314 -161
  52. package/dist/chunk-RA3JUFMW.js.map +1 -0
  53. package/dist/{chunk-ERISIBYU.js → chunk-SQGMNID3.js} +3 -8
  54. package/dist/chunk-SQGMNID3.js.map +1 -0
  55. package/dist/{chunk-XJ2HZOBU.js → chunk-UHNYIBXL.js} +1 -1
  56. package/dist/chunk-UHNYIBXL.js.map +1 -0
  57. package/{src/utils/secureStorage.ts → dist/chunk-VBXEHIUJ.js} +113 -88
  58. package/dist/{chunk-7QCC6MCP.js.map → chunk-VBXEHIUJ.js.map} +1 -1
  59. package/dist/{chunk-VZ4VDGTB.js → chunk-W22JP75J.js} +5 -13
  60. package/dist/{chunk-VZ4VDGTB.js.map → chunk-W22JP75J.js.map} +1 -1
  61. package/dist/components.d.ts +12 -93
  62. package/dist/components.js +23 -106
  63. package/dist/components.js.map +1 -1
  64. package/dist/core-CUElvH_C.d.ts +164 -0
  65. package/dist/database.generated-CBmg2950.d.ts +8284 -0
  66. package/dist/event-CW5YB_2p.d.ts +239 -0
  67. package/dist/{file-reference-C6Gkn77H.d.ts → file-reference-D06mEEWW.d.ts} +7 -5
  68. package/dist/functions-D_kgHktt.d.ts +208 -0
  69. package/dist/hooks.d.ts +54 -7
  70. package/dist/hooks.js +204 -17
  71. package/dist/hooks.js.map +1 -1
  72. package/dist/{EventLogo-B3V3otev.d.ts → index-Bl--n7-T.d.ts} +387 -397
  73. package/dist/index.d.ts +94 -261
  74. package/dist/index.js +314 -126
  75. package/dist/index.js.map +1 -1
  76. package/dist/providers.d.ts +7 -8
  77. package/dist/providers.js +6 -13
  78. package/dist/rbac/index.d.ts +171 -101
  79. package/dist/rbac/index.js +23 -17
  80. package/dist/styles/index.d.ts +1 -3
  81. package/dist/styles/index.js +2 -17
  82. package/dist/theming/runtime.js +3 -3
  83. package/dist/types-UU913iLA.d.ts +102 -0
  84. package/dist/{types-Dfz9dmVH.d.ts → types-_x1f4QBF.d.ts} +6 -6
  85. package/dist/types.d.ts +88 -227
  86. package/dist/types.js +64 -112
  87. package/dist/types.js.map +1 -1
  88. package/dist/{usePublicRouteParams-B7PabvuH.d.ts → usePublicRouteParams-JJczomYq.d.ts} +203 -6
  89. package/dist/utils.d.ts +299 -13
  90. package/dist/utils.js +481 -55
  91. package/dist/utils.js.map +1 -1
  92. package/dist/validation-643vUDZW.d.ts +177 -0
  93. package/docs/DOCUMENTATION_REVIEW_TRACKER.md +511 -0
  94. package/docs/README.md +9 -8
  95. package/docs/api/README.md +16 -2
  96. package/docs/api/classes/ColumnFactory.md +1 -1
  97. package/docs/api/classes/ErrorBoundary.md +1 -1
  98. package/docs/api/classes/InvalidScopeError.md +4 -4
  99. package/docs/api/classes/MissingUserContextError.md +4 -4
  100. package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
  101. package/docs/api/classes/PermissionDeniedError.md +4 -4
  102. package/docs/api/classes/RBACAuditManager.md +14 -14
  103. package/docs/api/classes/RBACCache.md +1 -1
  104. package/docs/api/classes/RBACEngine.md +2 -2
  105. package/docs/api/classes/RBACError.md +4 -4
  106. package/docs/api/classes/RBACNotInitializedError.md +4 -4
  107. package/docs/api/classes/SecureSupabaseClient.md +29 -9
  108. package/docs/api/classes/StorageUtils.md +1 -1
  109. package/docs/api/enums/FileCategory.md +17 -17
  110. package/docs/api/enums/RBACErrorCode.md +228 -0
  111. package/docs/api/enums/RPCFunction.md +118 -0
  112. package/docs/api/interfaces/AggregateConfig.md +1 -1
  113. package/docs/api/interfaces/BadgeProps.md +1 -1
  114. package/docs/api/interfaces/ButtonProps.md +2 -2
  115. package/docs/api/interfaces/CalendarProps.md +1 -1
  116. package/docs/api/interfaces/CardProps.md +29 -3
  117. package/docs/api/interfaces/ColorPalette.md +1 -1
  118. package/docs/api/interfaces/ColorShade.md +1 -1
  119. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  120. package/docs/api/interfaces/DataRecord.md +1 -1
  121. package/docs/api/interfaces/DataTableAction.md +2 -2
  122. package/docs/api/interfaces/DataTableColumn.md +6 -6
  123. package/docs/api/interfaces/DataTableProps.md +1 -1
  124. package/docs/api/interfaces/DataTableToolbarButton.md +2 -2
  125. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  126. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  127. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  128. package/docs/api/interfaces/ExportColumn.md +5 -5
  129. package/docs/api/interfaces/ExportOptions.md +4 -4
  130. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  131. package/docs/api/interfaces/FileMetadata.md +13 -13
  132. package/docs/api/interfaces/FileReference.md +12 -12
  133. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  134. package/docs/api/interfaces/FileUploadOptions.md +10 -10
  135. package/docs/api/interfaces/FileUploadProps.md +19 -19
  136. package/docs/api/interfaces/FooterProps.md +1 -1
  137. package/docs/api/interfaces/FormFieldProps.md +166 -0
  138. package/docs/api/interfaces/FormProps.md +113 -0
  139. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  140. package/docs/api/interfaces/InactivityWarningModalProps.md +8 -8
  141. package/docs/api/interfaces/InputProps.md +2 -2
  142. package/docs/api/interfaces/LabelProps.md +8 -8
  143. package/docs/api/interfaces/LoginFormProps.md +1 -1
  144. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  145. package/docs/api/interfaces/NavigationContextType.md +1 -1
  146. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  147. package/docs/api/interfaces/NavigationItem.md +17 -73
  148. package/docs/api/interfaces/NavigationMenuProps.md +38 -53
  149. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  150. package/docs/api/interfaces/Organisation.md +13 -13
  151. package/docs/api/interfaces/OrganisationContextType.md +21 -21
  152. package/docs/api/interfaces/OrganisationMembership.md +15 -15
  153. package/docs/api/interfaces/OrganisationProviderProps.md +59 -2
  154. package/docs/api/interfaces/OrganisationSecurityError.md +5 -5
  155. package/docs/api/interfaces/PaceAppLayoutProps.md +26 -39
  156. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  157. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  158. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  159. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  160. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  161. package/docs/api/interfaces/PaletteData.md +1 -1
  162. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  163. package/docs/api/interfaces/ProgressProps.md +50 -0
  164. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  165. package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
  166. package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
  167. package/docs/api/interfaces/PublicPageLayoutProps.md +15 -15
  168. package/docs/api/interfaces/RBACAccessValidateParams.md +52 -0
  169. package/docs/api/interfaces/RBACAccessValidateResult.md +41 -0
  170. package/docs/api/interfaces/RBACAuditLogParams.md +85 -0
  171. package/docs/api/interfaces/RBACAuditLogResult.md +52 -0
  172. package/docs/api/interfaces/RBACConfig.md +2 -2
  173. package/docs/api/interfaces/RBACContext.md +52 -0
  174. package/docs/api/interfaces/RBACLogger.md +1 -1
  175. package/docs/api/interfaces/RBACPageAccessCheckParams.md +74 -0
  176. package/docs/api/interfaces/RBACPermissionCheckParams.md +74 -0
  177. package/docs/api/interfaces/RBACPermissionCheckResult.md +52 -0
  178. package/docs/api/interfaces/RBACPermissionsGetParams.md +63 -0
  179. package/docs/api/interfaces/RBACPermissionsGetResult.md +63 -0
  180. package/docs/api/interfaces/RBACResult.md +58 -0
  181. package/docs/api/interfaces/RBACRoleGrantParams.md +63 -0
  182. package/docs/api/interfaces/RBACRoleGrantResult.md +52 -0
  183. package/docs/api/interfaces/RBACRoleRevokeParams.md +63 -0
  184. package/docs/api/interfaces/RBACRoleRevokeResult.md +52 -0
  185. package/docs/api/interfaces/RBACRoleValidateParams.md +52 -0
  186. package/docs/api/interfaces/RBACRoleValidateResult.md +63 -0
  187. package/docs/api/interfaces/RBACRolesListParams.md +52 -0
  188. package/docs/api/interfaces/RBACRolesListResult.md +74 -0
  189. package/docs/api/interfaces/RBACSessionTrackParams.md +74 -0
  190. package/docs/api/interfaces/RBACSessionTrackResult.md +52 -0
  191. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  192. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  193. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  194. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  195. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  196. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  197. package/docs/api/interfaces/RouteConfig.md +1 -1
  198. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  199. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  200. package/docs/api/interfaces/SessionRestorationLoaderProps.md +15 -2
  201. package/docs/api/interfaces/StorageConfig.md +1 -1
  202. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  203. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  204. package/docs/api/interfaces/StorageListOptions.md +1 -1
  205. package/docs/api/interfaces/StorageListResult.md +1 -1
  206. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  207. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  208. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  209. package/docs/api/interfaces/StyleImport.md +1 -1
  210. package/docs/api/interfaces/SwitchProps.md +1 -1
  211. package/docs/api/interfaces/TabsContentProps.md +1 -1
  212. package/docs/api/interfaces/TabsListProps.md +1 -1
  213. package/docs/api/interfaces/TabsProps.md +1 -1
  214. package/docs/api/interfaces/TabsTriggerProps.md +43 -2
  215. package/docs/api/interfaces/TextareaProps.md +2 -2
  216. package/docs/api/interfaces/ToastActionElement.md +1 -1
  217. package/docs/api/interfaces/ToastProps.md +1 -1
  218. package/docs/api/interfaces/UnifiedAuthContextType.md +61 -61
  219. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  220. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  221. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  222. package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
  223. package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
  224. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  225. package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
  226. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
  227. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  228. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  229. package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
  230. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  231. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  232. package/docs/api/interfaces/UserEventAccess.md +1 -1
  233. package/docs/api/interfaces/UserMenuProps.md +4 -4
  234. package/docs/api/interfaces/UserProfile.md +7 -7
  235. package/docs/api/modules.md +484 -462
  236. package/docs/api-reference/components.md +186 -15
  237. package/docs/api-reference/deprecated.md +376 -0
  238. package/docs/api-reference/hooks.md +149 -19
  239. package/docs/api-reference/providers.md +61 -6
  240. package/docs/api-reference/rpc-functions.md +397 -0
  241. package/docs/api-reference/types.md +135 -78
  242. package/docs/api-reference/utilities.md +51 -380
  243. package/docs/architecture/README.md +49 -3
  244. package/docs/architecture/database-schema-requirements.md +40 -3
  245. package/docs/architecture/rbac-security-architecture.md +41 -4
  246. package/docs/architecture/services.md +127 -42
  247. package/docs/best-practices/README.md +51 -5
  248. package/docs/best-practices/accessibility.md +32 -3
  249. package/docs/best-practices/common-patterns.md +50 -3
  250. package/docs/best-practices/deployment.md +50 -4
  251. package/docs/best-practices/performance.md +50 -3
  252. package/docs/best-practices/security.md +94 -41
  253. package/docs/best-practices/testing.md +33 -4
  254. package/docs/core-concepts/authentication.md +5 -5
  255. package/docs/core-concepts/events.md +3 -3
  256. package/docs/core-concepts/organisations.md +3 -3
  257. package/docs/core-concepts/permissions.md +3 -3
  258. package/docs/core-concepts/rbac-system.md +5 -5
  259. package/docs/documentation-index.md +30 -8
  260. package/docs/getting-started/documentation-index.md +1 -1
  261. package/docs/getting-started/examples/README.md +7 -5
  262. package/docs/getting-started/examples/basic-auth-app.md +3 -0
  263. package/docs/getting-started/examples/full-featured-app.md +5 -3
  264. package/docs/getting-started/faq.md +6 -6
  265. package/docs/getting-started/installation-guide.md +192 -13
  266. package/docs/getting-started/local-development.md +303 -0
  267. package/docs/getting-started/quick-reference.md +3 -3
  268. package/docs/getting-started/quick-start.md +517 -0
  269. package/docs/implementation-guides/app-layout.md +45 -3
  270. package/docs/implementation-guides/authentication.md +66 -7
  271. package/docs/implementation-guides/component-styling.md +53 -3
  272. package/docs/implementation-guides/data-tables.md +76 -7
  273. package/docs/implementation-guides/datatable-filtering.md +1 -2
  274. package/docs/implementation-guides/datatable-rbac-usage.md +0 -1
  275. package/docs/implementation-guides/dynamic-colors.md +155 -4
  276. package/docs/implementation-guides/file-reference-system.md +72 -3
  277. package/docs/implementation-guides/file-upload-storage.md +72 -3
  278. package/docs/implementation-guides/forms.md +53 -3
  279. package/docs/implementation-guides/inactivity-tracking.md +53 -3
  280. package/docs/implementation-guides/large-datasets.md +1 -1
  281. package/docs/implementation-guides/navigation.md +55 -5
  282. package/docs/implementation-guides/organisation-security.md +72 -3
  283. package/docs/implementation-guides/performance.md +57 -1
  284. package/docs/implementation-guides/permission-enforcement.md +81 -8
  285. package/docs/implementation-guides/public-pages.md +560 -14
  286. package/docs/migration/MIGRATION_GUIDE.md +409 -50
  287. package/docs/migration/README.md +37 -3
  288. package/docs/migration/organisation-context-timing-fix.md +39 -4
  289. package/docs/migration/quick-migration-guide.md +41 -5
  290. package/docs/migration/rbac-migration.md +59 -3
  291. package/docs/migration/service-architecture.md +77 -14
  292. package/docs/rbac/README.md +79 -3
  293. package/docs/rbac/advanced-patterns.md +47 -3
  294. package/docs/rbac/api-reference.md +77 -8
  295. package/docs/rbac/event-based-apps.md +50 -5
  296. package/docs/rbac/examples/rbac-rls-integration-example.md +3 -3
  297. package/docs/rbac/examples.md +39 -3
  298. package/docs/rbac/getting-started.md +63 -4
  299. package/docs/rbac/quick-start.md +57 -5
  300. package/docs/rbac/rbac-rls-integration.md +68 -6
  301. package/docs/rbac/super-admin-guide.md +47 -3
  302. package/docs/rbac/troubleshooting.md +3 -3
  303. package/docs/security/README.md +68 -3
  304. package/docs/security/checklist.md +50 -3
  305. package/docs/standards/01-architecture-standard.md +39 -0
  306. package/docs/standards/02-api-and-rpc-standard.md +39 -0
  307. package/docs/standards/03-component-standard.md +32 -0
  308. package/docs/standards/04-code-style-standard.md +32 -0
  309. package/docs/standards/05-security-standard.md +30 -0
  310. package/docs/standards/06-testing-and-docs-standard.md +29 -0
  311. package/docs/standards/README.md +35 -0
  312. package/docs/styles/README.md +89 -8
  313. package/docs/testing/README.md +175 -24
  314. package/docs/troubleshooting/README.md +50 -3
  315. package/docs/troubleshooting/common-issues.md +271 -5
  316. package/docs/troubleshooting/debugging.md +54 -1
  317. package/docs/troubleshooting/migration.md +54 -1
  318. package/docs/troubleshooting/organisation-context-setup.md +29 -3
  319. package/docs/troubleshooting/styling-issues.md +246 -4
  320. package/{src/components/DataTable/examples → examples/DataTable}/GroupingAggregationExample.tsx +1 -1
  321. package/examples/{components 2/DataTable/HierarchicalActionsExample.tsx → DataTable/HierarchicalActionsExample.tsx} +7 -6
  322. package/{src/components/DataTable/examples → examples/DataTable}/HierarchicalExample.tsx +8 -6
  323. package/examples/{components 2/DataTable/PerformanceExample.tsx → DataTable/PerformanceExample.tsx} +2 -2
  324. package/examples/{components 2/DataTable/index.ts → DataTable/index.ts} +1 -0
  325. package/{src/components/Dialog/examples → examples/Dialog}/HtmlDialogExample.tsx +3 -3
  326. package/examples/{components 2/Dialog/ScrollableDialogExample.tsx → Dialog/ScrollableDialogExample.tsx} +1 -1
  327. package/{src/components/Dialog/examples → examples/Dialog}/SmartDialogExample.tsx +1 -1
  328. package/examples/{components 2/Dialog/index.ts → Dialog/index.ts} +0 -3
  329. package/examples/{features/public-pages → PublicPages}/CorrectPublicPageImplementation.tsx +52 -17
  330. package/examples/{features/public-pages → PublicPages}/PublicEventPage.tsx +65 -35
  331. package/examples/{features/public-pages → PublicPages}/PublicPageApp.tsx +52 -18
  332. package/examples/{features/public-pages → PublicPages}/PublicPageUsageExample.tsx +28 -15
  333. package/examples/README.md +81 -33
  334. package/examples/index.ts +14 -12
  335. package/examples/{RBAC → rbac}/CompleteRBACExample.tsx +1 -1
  336. package/examples/{features/rbac → rbac}/EventBasedApp.tsx +4 -4
  337. package/examples/{features/rbac → rbac}/PermissionExample.tsx +5 -3
  338. package/package.json +21 -27
  339. package/src/__tests__/helpers/test-utils.tsx +29 -3
  340. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +7 -5
  341. package/src/components/Alert/Alert.test.tsx +2 -2
  342. package/src/components/Alert/Alert.tsx +4 -4
  343. package/src/components/Avatar/Avatar.test.tsx +17 -6
  344. package/src/components/Badge/Badge.test.tsx +1 -1
  345. package/src/components/Badge/Badge.tsx +2 -2
  346. package/src/components/Button/Button.test.tsx +2 -2
  347. package/src/components/Button/Button.tsx +11 -7
  348. package/src/components/Calendar/Calendar.test.tsx +41 -8
  349. package/src/components/Calendar/Calendar.tsx +39 -36
  350. package/src/components/Card/Card.tsx +51 -13
  351. package/src/components/Checkbox/Checkbox.test.tsx +36 -12
  352. package/src/components/DataTable/DataTable.test.tsx +1 -1
  353. package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +13 -7
  354. package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +14 -42
  355. package/src/components/DataTable/__tests__/DataTable.export.test.tsx +13 -10
  356. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +14 -11
  357. package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +4 -2
  358. package/src/components/DataTable/__tests__/DataTable.test.tsx +13 -7
  359. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +13 -10
  360. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +15 -11
  361. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +12 -6
  362. package/src/components/DataTable/__tests__/keyboard.test.tsx +12 -6
  363. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +10 -6
  364. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +1 -1
  365. package/src/components/DataTable/components/DataTableBody.tsx +10 -25
  366. package/src/components/DataTable/components/DataTableCore.tsx +1 -1
  367. package/src/components/DataTable/components/FilterRow.tsx +3 -1
  368. package/src/components/DataTable/components/ImportModal.tsx +1 -1
  369. package/src/components/DataTable/components/VirtualizedDataTable.tsx +9 -9
  370. package/src/components/DataTable/core/ColumnFactory.ts +6 -6
  371. package/src/components/DataTable/core/DataTableContext.tsx +14 -10
  372. package/src/components/DataTable/core/LocalDataAdapter.ts +2 -1
  373. package/src/components/DataTable/core/PluginRegistry.ts +3 -3
  374. package/src/components/DataTable/core/StateManager.ts +12 -11
  375. package/src/components/DataTable/core/__tests__/ActionManager.test.ts +104 -0
  376. package/src/components/DataTable/core/__tests__/DataManager.test.ts +101 -0
  377. package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +84 -0
  378. package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +102 -0
  379. package/src/components/DataTable/core/__tests__/StateManager.test.ts +104 -0
  380. package/src/components/DataTable/core/interfaces.ts +17 -17
  381. package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +124 -0
  382. package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +117 -0
  383. package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +102 -0
  384. package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +53 -0
  385. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -2
  386. package/src/components/DataTable/hooks/useDataTablePermissions.ts +9 -8
  387. package/src/components/DataTable/types.ts +5 -5
  388. package/src/components/DataTable/utils/aggregationUtils.ts +4 -4
  389. package/src/components/DataTable/utils/columnUtils.ts +3 -2
  390. package/src/components/DataTable/utils/debugTools.ts +1 -1
  391. package/src/components/DataTable/utils/exportUtils.ts +6 -6
  392. package/src/components/DataTable/utils/hierarchicalSorting.ts +6 -6
  393. package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -8
  394. package/src/components/DataTable/utils/index.ts +0 -1
  395. package/src/components/DataTable/utils/performanceUtils.ts +9 -4
  396. package/src/components/Dialog/Dialog.test.tsx +49 -27
  397. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +13 -8
  398. package/src/components/EventSelector/EventSelector.test.tsx +60 -12
  399. package/src/components/EventSelector/EventSelector.tsx +38 -15
  400. package/src/components/EventSelector/index.ts +2 -2
  401. package/src/components/FileDisplay/FileDisplay.test.tsx +143 -85
  402. package/src/components/FileDisplay/FileDisplay.tsx +1 -0
  403. package/src/components/FileUpload/FileUpload.test.tsx +532 -152
  404. package/src/components/FileUpload/FileUpload.tsx +43 -8
  405. package/src/components/Footer/Footer.test.tsx +19 -14
  406. package/src/components/Form/Form.test.tsx +96 -14
  407. package/src/components/Form/Form.tsx +210 -1
  408. package/src/components/Form/index.ts +3 -7
  409. package/src/components/Header/Header.test.tsx +24 -17
  410. package/src/components/Header/Header.tsx +3 -1
  411. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +2 -4
  412. package/src/components/Input/Input.test.tsx +61 -36
  413. package/src/components/Label/{__tests__/Label.test.tsx → Label.test.tsx} +2 -2
  414. package/src/components/Label/Label.tsx +2 -3
  415. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +6 -5
  416. package/src/components/LoadingSpinner/LoadingSpinner.tsx +6 -2
  417. package/src/components/LoginForm/LoginForm.test.tsx +14 -13
  418. package/src/components/LoginForm/LoginForm.tsx +1 -1
  419. package/src/components/LoginForm/index.ts +7 -0
  420. package/src/components/NavigationMenu/NavigationMenu.test.tsx +233 -20
  421. package/src/components/NavigationMenu/NavigationMenu.tsx +191 -55
  422. package/src/components/NavigationMenu/index.ts +1 -1
  423. package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +20 -11
  424. package/src/components/OrganisationSelector/OrganisationSelector.tsx +1 -1
  425. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.integration.test.tsx → PaceAppLayout.integration.test.tsx} +272 -79
  426. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.performance.test.tsx → PaceAppLayout.performance.test.tsx} +155 -32
  427. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.security.test.tsx → PaceAppLayout.security.test.tsx} +211 -65
  428. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +498 -210
  429. package/src/components/PaceAppLayout/PaceAppLayout.tsx +63 -64
  430. package/src/components/PaceAppLayout/test-setup.tsx +192 -0
  431. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +193 -39
  432. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.test.tsx +2 -2
  433. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.tsx +10 -4
  434. package/src/components/PasswordChange/index.ts +2 -0
  435. package/src/components/Progress/Progress.test.tsx +11 -0
  436. package/src/components/Progress/Progress.tsx +1 -1
  437. package/src/components/Progress/index.ts +10 -0
  438. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +2 -1
  439. package/src/components/PublicLayout/PublicLayout.test.tsx +1210 -0
  440. package/src/components/PublicLayout/PublicPageLayout.tsx +190 -36
  441. package/src/components/PublicLayout/PublicPageProvider.tsx +8 -7
  442. package/src/components/PublicLayout/index.ts +10 -28
  443. package/src/components/Select/Select.test.tsx +7 -7
  444. package/src/components/Select/Select.tsx +277 -11
  445. package/src/components/Select/index.ts +1 -2
  446. package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +232 -0
  447. package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +40 -19
  448. package/src/components/Table/{__tests__/Table.test.tsx → Table.test.tsx} +94 -41
  449. package/src/components/Tabs/Tabs.test.tsx +10 -9
  450. package/src/components/Tabs/Tabs.tsx +61 -33
  451. package/src/components/Textarea/Textarea.test.tsx +31 -18
  452. package/src/components/Toast/Toast.tsx +2 -2
  453. package/src/components/Tooltip/Tooltip.test.tsx +1 -1
  454. package/src/components/UserMenu/UserMenu.test.tsx +7 -6
  455. package/src/components/UserMenu/UserMenu.tsx +2 -2
  456. package/src/components/index.ts +5 -4
  457. package/src/constants/performance.ts +19 -8
  458. package/src/hooks/__tests__/useAppConfig.unit.test.ts +21 -22
  459. package/src/hooks/__tests__/useEvents.unit.test.ts +5 -4
  460. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +2 -2
  461. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -0
  462. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +16 -11
  463. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +1 -3
  464. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +1 -3
  465. package/src/hooks/__tests__/useRBAC.unit.test.ts +24 -2
  466. package/src/hooks/index.ts +4 -0
  467. package/src/hooks/public/index.ts +2 -0
  468. package/src/hooks/public/usePublicEvent.ts +4 -6
  469. package/src/hooks/public/usePublicRouteParams.ts +1 -1
  470. package/src/hooks/services/useAuth.ts +2 -4
  471. package/src/hooks/services/useCurrentEvent.ts +1 -1
  472. package/src/hooks/useAppConfig.ts +1 -1
  473. package/src/hooks/useDataTablePerformance.ts +2 -2
  474. package/src/hooks/useEventTheme.ts +1 -1
  475. package/src/hooks/useEvents.ts +51 -10
  476. package/src/hooks/useOrganisationPermissions.test.ts +3 -3
  477. package/src/hooks/useOrganisationPermissions.ts +1 -1
  478. package/src/hooks/useOrganisationSecurity.ts +2 -2
  479. package/src/hooks/usePermissionCache.test.ts +9 -9
  480. package/src/hooks/usePermissionCache.ts +2 -2
  481. package/src/index.ts +19 -12
  482. package/src/providers/OrganisationProvider.tsx +73 -9
  483. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
  484. package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
  485. package/src/providers/__tests__/EventProvider.test.tsx +24 -15
  486. package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
  487. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
  488. package/src/providers/index.ts +0 -3
  489. package/src/providers/services/AuthServiceProvider.tsx +2 -17
  490. package/src/providers/services/EventServiceProvider.tsx +11 -16
  491. package/src/providers/services/InactivityServiceProvider.tsx +9 -12
  492. package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
  493. package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
  494. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
  495. package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
  496. package/src/rbac/adapters.tsx +1 -1
  497. package/src/rbac/api.ts +20 -4
  498. package/src/rbac/audit-enhanced.ts +47 -2
  499. package/src/rbac/audit.ts +47 -2
  500. package/src/rbac/components/NavigationGuard.tsx +1 -1
  501. package/src/rbac/components/NavigationProvider.test.tsx +7 -6
  502. package/src/rbac/components/NavigationProvider.tsx +1 -1
  503. package/src/rbac/components/PagePermissionGuard.tsx +1 -1
  504. package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
  505. package/src/rbac/components/PagePermissionProvider.tsx +1 -1
  506. package/src/rbac/components/PermissionEnforcer.tsx +1 -1
  507. package/src/rbac/components/RoleBasedRouter.tsx +1 -1
  508. package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
  509. package/src/rbac/components/SecureDataProvider.tsx +1 -1
  510. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
  511. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
  512. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
  513. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
  514. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
  515. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
  516. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
  517. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
  518. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
  519. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
  520. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
  521. package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
  522. package/src/rbac/hooks/index.ts +3 -0
  523. package/src/rbac/hooks/usePermissions.ts +31 -85
  524. package/src/rbac/hooks/useRBAC.test.ts +13 -1
  525. package/src/rbac/hooks/useRBAC.ts +13 -67
  526. package/src/rbac/hooks/useResolvedScope.ts +11 -0
  527. package/src/rbac/hooks/useSecureSupabase.ts +308 -0
  528. package/src/rbac/index.ts +3 -0
  529. package/src/rbac/secureClient.ts +53 -6
  530. package/src/rbac/security.ts +37 -1
  531. package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
  532. package/src/rbac/types.ts +3 -2
  533. package/src/services/AuthService.ts +33 -25
  534. package/src/services/EventService.ts +56 -44
  535. package/src/services/InactivityService.ts +33 -53
  536. package/src/services/OrganisationService.ts +36 -40
  537. package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
  538. package/src/services/__tests__/EventService.test.ts +67 -33
  539. package/src/services/interfaces/IEventService.ts +1 -1
  540. package/src/styles/core.css +2 -2
  541. package/src/styles/index.ts +1 -5
  542. package/src/types/__tests__/guards.test.ts +1 -1
  543. package/src/types/__tests__/type-validation.test.ts +0 -1
  544. package/src/types/auth.ts +42 -2
  545. package/src/types/core.ts +251 -0
  546. package/src/types/database.ts +11 -496
  547. package/src/types/event.ts +102 -0
  548. package/src/types/file-reference.ts +6 -4
  549. package/src/types/guards.ts +2 -1
  550. package/src/types/index.ts +48 -14
  551. package/src/types/lodash.debounce.d.ts +15 -0
  552. package/src/types/organisation.ts +14 -10
  553. package/src/types/supabase.ts +15 -17
  554. package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
  555. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
  556. package/src/utils/app/appNameResolver.ts +1 -1
  557. package/src/utils/dynamic/dynamicUtils.ts +3 -2
  558. package/src/utils/file-reference/index.ts +25 -6
  559. package/src/utils/security/secureErrors.ts +1 -1
  560. package/src/utils/validation/index.ts +6 -12
  561. package/src/utils/validation/validationUtils.ts +0 -13
  562. package/dist/UnifiedAuthProvider-B37ATQHE.js +0 -16
  563. package/dist/auth-DReDSLq9.d.ts +0 -16
  564. package/dist/chunk-3JI76CYK.js +0 -2444
  565. package/dist/chunk-3JI76CYK.js.map +0 -1
  566. package/dist/chunk-56XJ3TU6.js +0 -11
  567. package/dist/chunk-56XJ3TU6.js.map +0 -1
  568. package/dist/chunk-5MT24GKJ.js.map +0 -1
  569. package/dist/chunk-7QCC6MCP.js +0 -288
  570. package/dist/chunk-BESYRHQM.js.map +0 -1
  571. package/dist/chunk-BJPBT3CU.js +0 -21
  572. package/dist/chunk-BJPBT3CU.js.map +0 -1
  573. package/dist/chunk-BVYWGZVV.js.map +0 -1
  574. package/dist/chunk-CX5M4ZAG.js.map +0 -1
  575. package/dist/chunk-D7LCGMVS.js.map +0 -1
  576. package/dist/chunk-EGI6MUL6.js +0 -27
  577. package/dist/chunk-EGI6MUL6.js.map +0 -1
  578. package/dist/chunk-ERISIBYU.js.map +0 -1
  579. package/dist/chunk-HRO5HWN2.js.map +0 -1
  580. package/dist/chunk-HZLDFOE4.js.map +0 -1
  581. package/dist/chunk-JISYG63F.js +0 -70
  582. package/dist/chunk-JISYG63F.js.map +0 -1
  583. package/dist/chunk-LIMSTKYD.js +0 -61
  584. package/dist/chunk-LIMSTKYD.js.map +0 -1
  585. package/dist/chunk-OWAG3GSU.js.map +0 -1
  586. package/dist/chunk-PPMP5J6T.js.map +0 -1
  587. package/dist/chunk-Q5QRDWKI.js.map +0 -1
  588. package/dist/chunk-S5OFRT4M.js.map +0 -1
  589. package/dist/chunk-SBVILCCA.js.map +0 -1
  590. package/dist/chunk-TUMEWN34.js +0 -15
  591. package/dist/chunk-TUMEWN34.js.map +0 -1
  592. package/dist/chunk-XDNLUEXI.js +0 -138
  593. package/dist/chunk-XJ2HZOBU.js.map +0 -1
  594. package/dist/chunk-ZYTYSTO5.js.map +0 -1
  595. package/dist/chunk-ZZ2SS7NI.js +0 -237
  596. package/dist/chunk-ZZ2SS7NI.js.map +0 -1
  597. package/dist/database-C6jy7EOu.d.ts +0 -500
  598. package/dist/organisation-D6qRDtbF.d.ts +0 -93
  599. package/dist/schema-DTDZQe2u.d.ts +0 -28
  600. package/dist/unified-DQ4VcT7H.d.ts +0 -198
  601. package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
  602. package/dist/validation.d.ts +0 -47
  603. package/dist/validation.js +0 -24
  604. package/dist/validation.js.map +0 -1
  605. package/docs/DOCUMENTATION_AUDIT.md +0 -172
  606. package/docs/DOCUMENTATION_STANDARD.md +0 -137
  607. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  608. package/docs/api/interfaces/EventLogoProps.md +0 -152
  609. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  610. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  611. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  612. package/docs/architecture/rpc-function-standards.md +0 -1106
  613. package/docs/getting-started/consuming-app-vite-config.md +0 -239
  614. package/docs/implementation-guides/event-theming-summary.md +0 -226
  615. package/docs/implementation-guides/public-pages-advanced.md +0 -1038
  616. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
  617. package/docs/migration/v0.4.16-css-first-approach.md +0 -312
  618. package/docs/migration/v0.4.17-source-path-fix.md +0 -235
  619. package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
  620. package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
  621. package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
  622. package/docs/rbac/README-rbac-rls-integration.md +0 -374
  623. package/docs/styles/usage.md +0 -227
  624. package/docs/testing/visual-testing.md +0 -120
  625. package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
  626. package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
  627. package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
  628. package/docs/troubleshooting/database-view-compatibility.md +0 -125
  629. package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
  630. package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
  631. package/examples/RBAC/EventBasedApp.tsx +0 -239
  632. package/examples/RBAC/PermissionExample.tsx +0 -151
  633. package/examples/STRUCTURE.md +0 -125
  634. package/examples/components 2/DataTable/HierarchicalExample.tsx +0 -475
  635. package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
  636. package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
  637. package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
  638. package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
  639. package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
  640. package/examples/components 2/index.ts +0 -11
  641. package/examples/features/index.ts +0 -12
  642. package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
  643. package/examples/features/rbac/index.ts +0 -13
  644. package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
  645. package/examples/public-pages/PublicEventPage.tsx +0 -274
  646. package/examples/public-pages/PublicPageApp.tsx +0 -308
  647. package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
  648. package/examples/public-pages/index.ts +0 -14
  649. package/src/__tests__/TEST_STANDARD.md +0 -1008
  650. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  651. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
  652. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
  653. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
  654. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
  655. package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
  656. package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
  657. package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
  658. package/src/components/Dialog/README.md +0 -804
  659. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  660. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  661. package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
  662. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  663. package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
  664. package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
  665. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
  666. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  667. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  668. package/src/components/EventSelector/types.ts +0 -79
  669. package/src/components/Form/FormErrorSummary.tsx +0 -113
  670. package/src/components/Form/FormField.tsx +0 -249
  671. package/src/components/Form/FormFieldset.tsx +0 -127
  672. package/src/components/Form/FormLiveRegion.tsx +0 -198
  673. package/src/components/Input/__mocks__/Input.tsx +0 -2
  674. package/src/components/NavigationMenu/types.ts +0 -85
  675. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
  676. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
  677. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  678. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  679. package/src/components/PasswordReset/index.ts +0 -2
  680. package/src/components/ProtectedRoute/README.md +0 -164
  681. package/src/components/PublicLayout/EventLogo.tsx +0 -175
  682. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
  683. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
  684. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
  685. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  686. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  687. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  688. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
  689. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
  690. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
  691. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
  692. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
  693. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
  694. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
  695. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
  696. package/src/components/Select/hooks.ts +0 -289
  697. package/src/hooks/useCounter.test.ts +0 -131
  698. package/src/hooks/useDebounce.test.ts +0 -375
  699. package/src/providers/AuthProvider.tsx +0 -15
  700. package/src/providers/EventProvider.tsx +0 -16
  701. package/src/providers/InactivityProvider.tsx +0 -15
  702. package/src/providers/OrganisationProvider.context.test.tsx +0 -169
  703. package/src/providers/UnifiedAuthProvider.tsx +0 -15
  704. package/src/types/theme.ts +0 -6
  705. package/src/types/unified.ts +0 -265
  706. package/src/utils/appConfig.ts +0 -47
  707. package/src/utils/appIdResolver.test.ts +0 -499
  708. package/src/utils/appIdResolver.ts +0 -130
  709. package/src/utils/appNameResolver.simple.test.ts +0 -212
  710. package/src/utils/appNameResolver.test.ts +0 -121
  711. package/src/utils/appNameResolver.ts +0 -191
  712. package/src/utils/audit.ts +0 -127
  713. package/src/utils/auth-utils.ts +0 -96
  714. package/src/utils/bundleAnalysis.ts +0 -129
  715. package/src/utils/debugLogger.ts +0 -67
  716. package/src/utils/deviceFingerprint.ts +0 -215
  717. package/src/utils/dynamicUtils.ts +0 -105
  718. package/src/utils/file-reference.test.ts +0 -788
  719. package/src/utils/file-reference.ts +0 -519
  720. package/src/utils/formatDate.test.ts +0 -237
  721. package/src/utils/formatting.ts +0 -170
  722. package/src/utils/lazyLoad.tsx +0 -44
  723. package/src/utils/logger.ts +0 -179
  724. package/src/utils/organisationContext.test.ts +0 -322
  725. package/src/utils/organisationContext.ts +0 -153
  726. package/src/utils/performanceBenchmark.ts +0 -64
  727. package/src/utils/performanceBudgets.ts +0 -110
  728. package/src/utils/permissionTypes.ts +0 -37
  729. package/src/utils/permissionUtils.test.ts +0 -393
  730. package/src/utils/permissionUtils.ts +0 -34
  731. package/src/utils/sanitization.ts +0 -264
  732. package/src/utils/schemaUtils.ts +0 -37
  733. package/src/utils/secureDataAccess.test.ts +0 -711
  734. package/src/utils/secureDataAccess.ts +0 -377
  735. package/src/utils/secureErrors.ts +0 -79
  736. package/src/utils/security.ts +0 -156
  737. package/src/utils/securityMonitor.ts +0 -45
  738. package/src/utils/sessionTracking.ts +0 -126
  739. package/src/utils/validation.ts +0 -111
  740. package/src/utils/validationUtils.ts +0 -120
  741. package/src/validation/index.ts +0 -12
  742. /package/dist/{DataTable-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
  743. /package/dist/{UnifiedAuthProvider-B37ATQHE.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
  744. /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
  745. /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
  746. /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
  747. /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
  748. /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
  749. /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
  750. /package/examples/{RBAC → rbac}/index.ts +0 -0
@@ -19,6 +19,16 @@ import type {
19
19
  } from '../types/organisation';
20
20
  import { setOrganisationContext } from '../utils/context/organisationContext';
21
21
  import { logger } from '../utils/core/logger';
22
+ import { assertUserId, assertOrganisationId } from '../types/core';
23
+
24
+ // Type for RPC response from data_user_organisation_roles_get
25
+ interface OrganisationRoleRpcResponse {
26
+ user_id: string;
27
+ organisation_id: string;
28
+ role: 'org_admin' | 'leader' | 'member' | 'supporter';
29
+ status: 'active' | 'inactive' | 'suspended';
30
+ [key: string]: unknown;
31
+ }
22
32
 
23
33
  export class OrganisationService extends BaseService implements IOrganisationService {
24
34
  private _selectedOrganisation: Organisation | null = null;
@@ -112,7 +122,7 @@ export class OrganisationService extends BaseService implements IOrganisationSer
112
122
  // If user logs out, allow re-initialization when they log back in
113
123
  if (wasAuthenticated && !isAuthenticated) {
114
124
  // Reset BaseService initialization state to allow re-initialization
115
- (this as any).isInitialized = false;
125
+ this.resetInitialization();
116
126
  }
117
127
 
118
128
  this.notify();
@@ -150,7 +160,7 @@ export class OrganisationService extends BaseService implements IOrganisationSer
150
160
  }
151
161
 
152
162
  validateOrganisationAccess(orgId: string): boolean {
153
- return this._userMemberships.some((m: any) =>
163
+ return this._userMemberships.some((m) =>
154
164
  m.organisation_id === orgId &&
155
165
  m.status === 'active' &&
156
166
  m.revoked_at === null
@@ -179,12 +189,12 @@ export class OrganisationService extends BaseService implements IOrganisationSer
179
189
 
180
190
  getPrimaryOrganisation(): Organisation | null {
181
191
  // Look for org_admin role first, then leader, then member
182
- const rolePriority = ['org_admin', 'leader', 'member'];
192
+ const rolePriority = ['org_admin', 'leader', 'member'] as const;
183
193
 
184
194
  for (const role of rolePriority) {
185
- const membership = this._userMemberships.find((m: any) => m.role === role);
195
+ const membership = this._userMemberships.find((m) => m.role === role);
186
196
  if (membership) {
187
- return this._organisations.find((org: any) => org.id === membership.organisation_id) || null;
197
+ return this._organisations.find((org) => org.id === membership.organisation_id) || null;
188
198
  }
189
199
  }
190
200
 
@@ -262,8 +272,6 @@ export class OrganisationService extends BaseService implements IOrganisationSer
262
272
  }
263
273
 
264
274
  try {
265
- logger.debug('OrganisationService', 'Setting database organisation context for:', organisation.id);
266
-
267
275
  // Add timeout to prevent hanging
268
276
  const timeoutPromise = new Promise((_, reject) => {
269
277
  setTimeout(() => reject(new Error('Context setting timeout after 5 seconds')), 5000);
@@ -273,7 +281,7 @@ export class OrganisationService extends BaseService implements IOrganisationSer
273
281
 
274
282
  await Promise.race([contextPromise, timeoutPromise]);
275
283
 
276
- logger.debug('OrganisationService', 'Database organisation context set successfully');
284
+ // Database organisation context set successfully
277
285
  this._isContextReady = true;
278
286
  this.notify();
279
287
  } catch (error) {
@@ -287,10 +295,6 @@ export class OrganisationService extends BaseService implements IOrganisationSer
287
295
  }
288
296
 
289
297
  private async loadUserOrganisations(): Promise<void> {
290
- // Add call tracking to detect race conditions
291
- const callId = Math.random().toString(36).substr(2, 9);
292
- logger.debug('OrganisationService', `Starting loadUserOrganisations call ${callId}`);
293
-
294
298
  if (!this.user || !this.session || !this.supabaseClient) {
295
299
  // Clear state when no user, session, or supabase client
296
300
  this._selectedOrganisation = null;
@@ -304,7 +308,6 @@ export class OrganisationService extends BaseService implements IOrganisationSer
304
308
 
305
309
  // Additional check to prevent loading during auth state changes
306
310
  if (this.isLoadingRef) {
307
- logger.debug("OrganisationService", "Already loading, skipping duplicate load");
308
311
  // Ensure loading state is correct
309
312
  this._isLoading = true;
310
313
  this.notify();
@@ -314,7 +317,6 @@ export class OrganisationService extends BaseService implements IOrganisationSer
314
317
  // Prevent rapid retries - minimum 2 seconds between attempts
315
318
  const now = Date.now();
316
319
  if (now - this.lastLoadTimeRef < 2000) {
317
- logger.debug("OrganisationService", "Too soon since last load, skipping");
318
320
  // Ensure loading state is correct
319
321
  if (this._organisations.length > 0 || this._selectedOrganisation) {
320
322
  this._isLoading = false;
@@ -341,18 +343,10 @@ export class OrganisationService extends BaseService implements IOrganisationSer
341
343
  this.notify();
342
344
 
343
345
  try {
344
- logger.debug("OrganisationService", "Supabase client ready:", {
345
- isConnected: !!this.supabaseClient,
346
- hasAuth: !!this.supabaseClient.auth,
347
- hasRpc: !!this.supabaseClient.rpc
348
- });
349
-
350
346
  // Get user's organisation memberships using secure RPC function
351
347
  // Only get actual members (org_admin, leader, member) - exclude supporters
352
348
  let memberships, membershipError;
353
349
  try {
354
- logger.debug("OrganisationService", "Making RPC call to data_user_organisation_roles_get...");
355
-
356
350
  // Add timeout and abort signal to prevent hanging RPC calls
357
351
  const timeoutPromise = new Promise((_, reject) => {
358
352
  const timeoutId = setTimeout(() => reject(new Error('RPC call timeout after 10 seconds')), 10000);
@@ -372,22 +366,20 @@ export class OrganisationService extends BaseService implements IOrganisationSer
372
366
  throw new Error('Request aborted');
373
367
  }
374
368
 
375
- const result = await Promise.race([rpcPromise, timeoutPromise]) as any;
376
-
377
- logger.debug("OrganisationService", "RPC call completed:", {
378
- hasData: !!result.data,
379
- hasError: !!result.error,
380
- dataLength: result.data?.length || 0,
381
- errorMessage: result.error?.message || 'No error'
382
- });
369
+ const result = await Promise.race([rpcPromise, timeoutPromise]) as { data: OrganisationRoleRpcResponse[] | null; error: Error | null };
383
370
 
384
371
  // Filter to only actual members (org_admin, leader, member) - exclude supporters
385
- memberships = result.data?.filter((role: any) =>
372
+ // Map to branded types when filtering
373
+ memberships = result.data?.filter((role) =>
386
374
  ['org_admin', 'leader', 'member'].includes(role.role)
387
- ) || [];
375
+ ).map((m) => ({
376
+ ...m,
377
+ user_id: assertUserId(m.user_id),
378
+ organisation_id: assertOrganisationId(m.organisation_id),
379
+ })) || [];
388
380
  membershipError = result.error;
389
- } catch (queryError: any) {
390
- membershipError = queryError;
381
+ } catch (queryError) {
382
+ membershipError = queryError instanceof Error ? queryError : new Error(String(queryError));
391
383
  }
392
384
 
393
385
  if (membershipError) {
@@ -395,7 +387,6 @@ export class OrganisationService extends BaseService implements IOrganisationSer
395
387
 
396
388
  // If RPC fails with timeout, try direct database query as fallback
397
389
  if (membershipError.message?.includes('timeout')) {
398
- logger.debug("OrganisationService", "RPC timed out, trying direct database query as fallback...");
399
390
  try {
400
391
  // Check if request was aborted before making fallback query
401
392
  if (abortSignal.aborted) {
@@ -439,8 +430,12 @@ export class OrganisationService extends BaseService implements IOrganisationSer
439
430
  throw membershipError; // Throw original error
440
431
  }
441
432
 
442
- logger.debug("OrganisationService", "Fallback query successful, got", fallbackData?.length || 0, "memberships");
443
- memberships = fallbackData || [];
433
+ // Map to branded types
434
+ memberships = fallbackData?.map((m) => ({
435
+ ...m,
436
+ user_id: assertUserId(m.user_id),
437
+ organisation_id: assertOrganisationId(m.organisation_id),
438
+ })) || [];
444
439
  membershipError = null;
445
440
  } catch (fallbackErr) {
446
441
  logger.error("OrganisationService", "Fallback query failed:", fallbackErr);
@@ -457,7 +452,7 @@ export class OrganisationService extends BaseService implements IOrganisationSer
457
452
 
458
453
  // Get organisation details for the memberships
459
454
  const organisationIds = memberships
460
- .map((m: any) => m.organisation_id)
455
+ .map((m) => m.organisation_id)
461
456
  .filter((id: string) => {
462
457
  // Better validation to prevent empty string UUID errors
463
458
  if (!id || typeof id !== 'string') {
@@ -503,7 +498,7 @@ export class OrganisationService extends BaseService implements IOrganisationSer
503
498
 
504
499
  // Create a map of organisation_id to role from the memberships data
505
500
  const roleMap = new Map<string, string>();
506
- memberships?.forEach((membership: any) => {
501
+ memberships?.forEach((membership) => {
507
502
  roleMap.set(membership.organisation_id, membership.role);
508
503
  });
509
504
 
@@ -516,6 +511,7 @@ export class OrganisationService extends BaseService implements IOrganisationSer
516
511
  }
517
512
 
518
513
  this._organisations = activeOrgs;
514
+ // Memberships already have branded types from earlier mapping
519
515
  this._userMemberships = memberships as OrganisationMembership[];
520
516
 
521
517
  // Store role map in component state for later use
@@ -551,7 +547,7 @@ export class OrganisationService extends BaseService implements IOrganisationSer
551
547
 
552
548
  // 2. Fall back to org_admin role organisation (highest privilege)
553
549
  if (!initialOrg) {
554
- const adminMembership = memberships.find((m: any) => m.role === 'org_admin');
550
+ const adminMembership = memberships.find((m) => m.role === 'org_admin');
555
551
  if (adminMembership) {
556
552
  const foundOrg = organisations.find((org) => org.id === adminMembership.organisation_id);
557
553
  if (foundOrg) {
@@ -7,8 +7,12 @@ function createSupabaseMock() {
7
7
  getSession: vi.fn().mockResolvedValue({ data: { session: null }, error: null }),
8
8
  getUser: vi.fn(), // should not be called when session is null
9
9
  onAuthStateChange: vi.fn().mockImplementation((cb: any) => {
10
- // Provide a subscription-like object
11
- return { unsubscribe: () => {} } as any;
10
+ // Provide a subscription-like object with data.subscription structure
11
+ const subscription = { unsubscribe: () => {} };
12
+ return {
13
+ data: { subscription },
14
+ error: null
15
+ } as any;
12
16
  }),
13
17
  } as any;
14
18
 
@@ -10,7 +10,8 @@
10
10
 
11
11
  import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
12
12
  import { EventService } from '../EventService';
13
- import { Event } from '../../types/unified';
13
+ import { Event } from '../../types/event';
14
+ import { assertOrganisationId } from '../../types/core';
14
15
 
15
16
  // Don't mock the logger - it now works in test mode
16
17
  // We'll spy on the Logger class methods in beforeEach to verify calls
@@ -62,34 +63,62 @@ const mockOrganisation = {
62
63
 
63
64
  const mockSetSelectedEventId = vi.fn();
64
65
 
66
+ // Raw RPC response data (what comes from database)
67
+ const mockEventRpcData = {
68
+ event_id: 'event-1',
69
+ event_name: 'Test Event',
70
+ event_code: 'test-event',
71
+ event_date: '2025-01-01T00:00:00Z',
72
+ event_venue: 'Test Venue',
73
+ event_participants: 100,
74
+ event_colours: '#FF0000',
75
+ organisation_id: 'org-1',
76
+ is_visible: true
77
+ };
78
+
79
+ const mockEvent2RpcData = {
80
+ event_id: 'event-2',
81
+ event_name: 'Future Event',
82
+ event_code: 'future-event',
83
+ event_date: '2025-12-31T00:00:00Z',
84
+ event_venue: 'Future Venue',
85
+ event_participants: 200,
86
+ event_colours: '#00FF00',
87
+ organisation_id: 'org-1',
88
+ is_visible: true
89
+ };
90
+
91
+ // Transformed Event objects (what EventService returns after transformation)
65
92
  const mockEvent: Event = {
66
93
  id: 'event-1',
67
94
  event_id: 'event-1',
68
95
  event_name: 'Test Event',
96
+ event_code: 'test-event',
69
97
  event_date: '2025-01-01T00:00:00Z',
70
98
  event_venue: 'Test Venue',
71
99
  event_participants: 100,
72
100
  event_colours: '#FF0000',
73
101
  event_logo: '',
74
- organisation_id: 'org-1',
102
+ organisation_id: assertOrganisationId('org-1'),
75
103
  is_visible: true,
76
- name: 'Test Event',
77
- start_date: '2025-01-01T00:00:00Z'
104
+ created_at: expect.any(String),
105
+ updated_at: expect.any(String)
78
106
  };
79
107
 
80
108
  const mockEvent2: Event = {
81
109
  id: 'event-2',
82
110
  event_id: 'event-2',
83
111
  event_name: 'Future Event',
112
+ event_code: 'future-event',
84
113
  event_date: '2025-12-31T00:00:00Z',
85
114
  event_venue: 'Future Venue',
86
115
  event_participants: 200,
87
116
  event_colours: '#00FF00',
88
117
  event_logo: '',
89
- organisation_id: 'org-1',
118
+ organisation_id: assertOrganisationId('org-1'),
90
119
  is_visible: true,
91
- name: 'Future Event',
92
- start_date: '2025-12-31T00:00:00Z'
120
+ created_at: expect.any(String),
121
+ updated_at: expect.any(String)
93
122
  };
94
123
 
95
124
  describe('EventService', () => {
@@ -140,7 +169,7 @@ describe('EventService', () => {
140
169
 
141
170
  it('should fetch events on initialization', async () => {
142
171
  mockSupabase.rpc.mockResolvedValue({
143
- data: [mockEvent, mockEvent2],
172
+ data: [mockEventRpcData, mockEvent2RpcData],
144
173
  error: null
145
174
  });
146
175
 
@@ -176,7 +205,7 @@ describe('EventService', () => {
176
205
  describe('Event Operations', () => {
177
206
  beforeEach(async () => {
178
207
  mockSupabase.rpc.mockResolvedValue({
179
- data: [mockEvent, mockEvent2],
208
+ data: [mockEventRpcData, mockEvent2RpcData],
180
209
  error: null
181
210
  });
182
211
 
@@ -226,8 +255,13 @@ describe('EventService', () => {
226
255
  // Clear the mock call count from the beforeEach initialization
227
256
  vi.clearAllMocks();
228
257
 
258
+ const newEventRpcData = {
259
+ ...mockEventRpcData,
260
+ event_id: 'event-3',
261
+ event_name: 'New Event'
262
+ };
229
263
  mockSupabase.rpc.mockResolvedValue({
230
- data: [mockEvent, mockEvent2, newEvent],
264
+ data: [mockEventRpcData, mockEvent2RpcData, newEventRpcData],
231
265
  error: null
232
266
  });
233
267
 
@@ -242,7 +276,7 @@ describe('EventService', () => {
242
276
  beforeEach(async () => {
243
277
  // Set up mock data before creating service
244
278
  mockSupabase.rpc.mockResolvedValue({
245
- data: [mockEvent, mockEvent2],
279
+ data: [mockEventRpcData, mockEvent2RpcData],
246
280
  error: null
247
281
  });
248
282
 
@@ -268,19 +302,19 @@ describe('EventService', () => {
268
302
  });
269
303
 
270
304
  it('should return most recent past event when no future events', async () => {
271
- const pastEvent1: Event = {
272
- ...mockEvent,
305
+ const pastEvent1RpcData = {
306
+ ...mockEventRpcData,
273
307
  event_id: 'event-past-1',
274
308
  event_date: '2020-01-01T00:00:00Z'
275
309
  };
276
- const pastEvent2: Event = {
277
- ...mockEvent,
310
+ const pastEvent2RpcData = {
311
+ ...mockEventRpcData,
278
312
  event_id: 'event-past-2',
279
313
  event_date: '2021-06-15T00:00:00Z' // More recent past event
280
314
  };
281
315
 
282
316
  mockSupabase.rpc.mockResolvedValue({
283
- data: [pastEvent1, pastEvent2],
317
+ data: [pastEvent1RpcData, pastEvent2RpcData],
284
318
  error: null
285
319
  });
286
320
 
@@ -335,7 +369,7 @@ describe('EventService', () => {
335
369
  );
336
370
 
337
371
  mockSupabase.rpc.mockResolvedValue({
338
- data: [mockEvent, mockEvent2],
372
+ data: [mockEventRpcData, mockEvent2RpcData],
339
373
  error: null
340
374
  });
341
375
 
@@ -367,7 +401,7 @@ describe('EventService', () => {
367
401
  );
368
402
 
369
403
  mockSupabase.rpc.mockResolvedValue({
370
- data: [mockEvent, mockEvent2],
404
+ data: [mockEventRpcData, mockEvent2RpcData],
371
405
  error: null
372
406
  });
373
407
 
@@ -389,7 +423,7 @@ describe('EventService', () => {
389
423
  describe('State Management', () => {
390
424
  it('should notify subscribers when state changes', async () => {
391
425
  mockSupabase.rpc.mockResolvedValue({
392
- data: [mockEvent],
426
+ data: [mockEventRpcData],
393
427
  error: null
394
428
  });
395
429
 
@@ -456,7 +490,7 @@ describe('EventService', () => {
456
490
  it('should auto-select next event when no event is selected', async () => {
457
491
  // Set up mock data before creating service
458
492
  mockSupabase.rpc.mockResolvedValue({
459
- data: [mockEvent, mockEvent2],
493
+ data: [mockEventRpcData, mockEvent2RpcData],
460
494
  error: null
461
495
  });
462
496
 
@@ -480,7 +514,7 @@ describe('EventService', () => {
480
514
  it('should not auto-select when user has cleared event', async () => {
481
515
  // Set up mock data before calling initialize
482
516
  mockSupabase.rpc.mockResolvedValue({
483
- data: [mockEvent, mockEvent2],
517
+ data: [mockEventRpcData, mockEvent2RpcData],
484
518
  error: null
485
519
  });
486
520
 
@@ -491,7 +525,7 @@ describe('EventService', () => {
491
525
 
492
526
  // Refresh events
493
527
  mockSupabase.rpc.mockResolvedValue({
494
- data: [mockEvent, mockEvent2],
528
+ data: [mockEventRpcData, mockEvent2RpcData],
495
529
  error: null
496
530
  });
497
531
 
@@ -505,7 +539,7 @@ describe('EventService', () => {
505
539
  describe('Persistence', () => {
506
540
  it('should persist event selection across sessions', async () => {
507
541
  mockSupabase.rpc.mockResolvedValue({
508
- data: [mockEvent, mockEvent2],
542
+ data: [mockEventRpcData, mockEvent2RpcData],
509
543
  error: null
510
544
  });
511
545
 
@@ -527,7 +561,7 @@ describe('EventService', () => {
527
561
  mockSecureStorage.getItem.mockResolvedValue('event-1');
528
562
 
529
563
  mockSupabase.rpc.mockResolvedValue({
530
- data: [mockEvent, mockEvent2],
564
+ data: [mockEventRpcData, mockEvent2RpcData],
531
565
  error: null
532
566
  });
533
567
 
@@ -574,7 +608,7 @@ describe('EventService', () => {
574
608
 
575
609
  it('should clear events when switching to different organisation', async () => {
576
610
  mockSupabase.rpc.mockResolvedValue({
577
- data: [mockEvent],
611
+ data: [mockEventRpcData],
578
612
  error: null
579
613
  });
580
614
 
@@ -599,7 +633,7 @@ describe('EventService', () => {
599
633
 
600
634
  it('should clear event selection when user changes', async () => {
601
635
  mockSupabase.rpc.mockResolvedValue({
602
- data: [mockEvent],
636
+ data: [mockEventRpcData],
603
637
  error: null
604
638
  });
605
639
 
@@ -624,7 +658,7 @@ describe('EventService', () => {
624
658
 
625
659
  it('should clear event selection when user logs out', async () => {
626
660
  mockSupabase.rpc.mockResolvedValue({
627
- data: [mockEvent],
661
+ data: [mockEventRpcData],
628
662
  error: null
629
663
  });
630
664
 
@@ -651,7 +685,7 @@ describe('EventService', () => {
651
685
  mockSecureStorage.getItem.mockResolvedValue('event-1');
652
686
 
653
687
  mockSupabase.rpc.mockResolvedValue({
654
- data: [mockEvent, mockEvent2],
688
+ data: [mockEventRpcData, mockEvent2RpcData],
655
689
  error: null
656
690
  });
657
691
 
@@ -814,7 +848,7 @@ describe('EventService', () => {
814
848
  event_participants: 100,
815
849
  event_colours: '#FF0000',
816
850
  event_logo: '',
817
- organisation_id: 'org-1',
851
+ organisation_id: assertOrganisationId('org-1'),
818
852
  is_visible: true,
819
853
  name: 'Later Event',
820
854
  start_date: futureDate1.toISOString()
@@ -829,7 +863,7 @@ describe('EventService', () => {
829
863
  event_participants: 100,
830
864
  event_colours: '#00FF00',
831
865
  event_logo: '',
832
- organisation_id: 'org-1',
866
+ organisation_id: assertOrganisationId('org-1'),
833
867
  is_visible: true,
834
868
  name: 'Earlier Event',
835
869
  start_date: futureDate2.toISOString()
@@ -883,7 +917,7 @@ describe('EventService', () => {
883
917
  mockSecureStorage.getItem.mockResolvedValue(null);
884
918
 
885
919
  mockSupabase.rpc.mockResolvedValue({
886
- data: [mockEvent, mockEvent2],
920
+ data: [mockEventRpcData, mockEvent2RpcData],
887
921
  error: null
888
922
  });
889
923
 
@@ -904,7 +938,7 @@ describe('EventService', () => {
904
938
 
905
939
  it('should not auto-select when user has explicitly cleared event', async () => {
906
940
  mockSupabase.rpc.mockResolvedValue({
907
- data: [mockEvent, mockEvent2],
941
+ data: [mockEventRpcData, mockEvent2RpcData],
908
942
  error: null
909
943
  });
910
944
 
@@ -929,7 +963,7 @@ describe('EventService', () => {
929
963
  localStorage.setItem('_sec_pace-core-selected-event', 'old-encrypted');
930
964
 
931
965
  mockSupabase.rpc.mockResolvedValue({
932
- data: [mockEvent],
966
+ data: [mockEventRpcData],
933
967
  error: null
934
968
  });
935
969
 
@@ -8,7 +8,7 @@
8
8
  * Defines the contract for event management functionality.
9
9
  */
10
10
 
11
- import { Event } from '../../types/unified';
11
+ import { Event } from '../../types/event';
12
12
 
13
13
  export interface IEventService {
14
14
  // Event state
@@ -85,7 +85,7 @@
85
85
  font-size: 2.5rem;
86
86
  font-weight: 700;
87
87
  line-height: 1.2;
88
- color: var(--color-main-600);
88
+ color: var(--color-main-700);
89
89
  }
90
90
 
91
91
  h2 {
@@ -99,7 +99,7 @@
99
99
  font-size: 1.75rem;
100
100
  font-weight: 600;
101
101
  line-height: 1.4;
102
- color: var(--color-main-700);
102
+ color: var(--color-main-600);
103
103
  }
104
104
 
105
105
  h4 {
@@ -15,7 +15,7 @@
15
15
  *
16
16
  * @example
17
17
  * ```tsx
18
- * // Import theming runtime
18
+ * // For dynamic theming, import from theming/runtime
19
19
  * import { applyPalette, clearPalette } from '@jmruthers/pace-core/theming/runtime';
20
20
  * ```
21
21
  */
@@ -45,7 +45,3 @@ export function getStylePath(style: keyof typeof styleConfig): string {
45
45
  export function getAllStylePaths(): string[] {
46
46
  return Object.values(styleConfig).map(config => config.path);
47
47
  }
48
-
49
- // Re-export theming runtime for convenience
50
- export { applyPalette, clearPalette, generateSSRThemeCSS, isDynamicThemingActive, getCurrentThemeData, parseAndNormalizeEventColours } from '../theming/runtime';
51
- export type { PaletteData, ColorPalette, ColorShade } from '../theming/runtime';
@@ -9,7 +9,7 @@
9
9
 
10
10
  import { describe, it, expect } from 'vitest';
11
11
  import { isAuthErrorCode, isUser, isSession } from '../guards';
12
- import { AuthErrorCode } from '../unified';
12
+ import { AuthErrorCode } from '../core';
13
13
 
14
14
  describe('Type Guards', () => {
15
15
  describe('isAuthErrorCode', () => {
@@ -11,7 +11,6 @@ import type {
11
11
  Session,
12
12
  Event,
13
13
  Organisation,
14
- AccessLevel,
15
14
  PermissionString,
16
15
  UserPermissions,
17
16
  ValidationError,
package/src/types/auth.ts CHANGED
@@ -1,10 +1,17 @@
1
1
  /**
2
- * @file Auth related types
2
+ * @file Authentication Types
3
3
  * @package @jmruthers/pace-core
4
4
  * @module Types/Auth
5
- * @since 0.1.0
5
+ * @since 1.0.0
6
+ *
7
+ * Type definitions for authentication, sessions, and user management.
6
8
  */
7
9
 
10
+ import type { AuthError, AuthErrorCode } from './core';
11
+
12
+ /**
13
+ * Session restoration state for tracking Supabase session hydration
14
+ */
8
15
  export interface SessionRestorationState {
9
16
  /** True while Supabase is hydrating the local session */
10
17
  isRestoring: boolean;
@@ -13,3 +20,36 @@ export interface SessionRestorationState {
13
20
  /** Error encountered during restoration (timeout or Supabase error) */
14
21
  restorationError: Error | null;
15
22
  }
23
+
24
+ /**
25
+ * Standard Supabase User type
26
+ * Matches @supabase/supabase-js User interface
27
+ */
28
+ export interface User {
29
+ id: string;
30
+ email?: string;
31
+ created_at: string;
32
+ updated_at: string;
33
+ email_confirmed_at?: string;
34
+ last_sign_in_at?: string;
35
+ user_metadata?: Record<string, unknown>;
36
+ app_metadata?: Record<string, unknown>;
37
+ }
38
+
39
+ /**
40
+ * Standard Supabase Session type
41
+ * Matches @supabase/supabase-js Session interface
42
+ */
43
+ export interface Session {
44
+ access_token: string;
45
+ refresh_token?: string;
46
+ expires_in: number;
47
+ expires_at: number;
48
+ token_type: string;
49
+ user: User;
50
+ provider_token?: string;
51
+ provider_refresh_token?: string;
52
+ }
53
+
54
+ // Re-export error types for convenience
55
+ export type { AuthError, AuthErrorCode } from './core';