@jmruthers/pace-core 0.5.193 → 0.6.2

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 (577) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +7 -1
  3. package/cursor-rules/00-pace-core-compliance.mdc +299 -0
  4. package/cursor-rules/01-standards-compliance.mdc +244 -0
  5. package/cursor-rules/02-project-structure.mdc +200 -0
  6. package/cursor-rules/03-solid-principles.mdc +222 -0
  7. package/cursor-rules/04-testing-standards.mdc +268 -0
  8. package/cursor-rules/05-bug-reports-and-features.mdc +246 -0
  9. package/cursor-rules/06-code-quality.mdc +309 -0
  10. package/cursor-rules/07-tech-stack-compliance.mdc +214 -0
  11. package/cursor-rules/08-markup-quality.mdc +452 -0
  12. package/cursor-rules/CHANGELOG.md +119 -0
  13. package/cursor-rules/README.md +192 -0
  14. package/dist/{AuthService-DjnJHDtC.d.ts → AuthService-BPvc3Ka0.d.ts} +54 -0
  15. package/dist/{DataTable-Be6dH_dR.d.ts → DataTable-BMRU8a1j.d.ts} +34 -2
  16. package/dist/{DataTable-5FU7IESH.js → DataTable-TPTKCX4D.js} +10 -9
  17. package/dist/{PublicPageProvider-C0Sm_e5k.d.ts → PublicPageProvider-DC6kCaqf.d.ts} +385 -261
  18. package/dist/{UnifiedAuthProvider-RGJTDE2C.js → UnifiedAuthProvider-CH6Z342H.js} +3 -3
  19. package/dist/{UnifiedAuthProvider-185Ih4dj.d.ts → UnifiedAuthProvider-CVcTjx-d.d.ts} +29 -0
  20. package/dist/{api-N774RPUA.js → api-MVVQZLJI.js} +2 -2
  21. package/dist/{chunk-KNC55RTG.js → chunk-24UVZUZG.js} +90 -54
  22. package/dist/chunk-24UVZUZG.js.map +1 -0
  23. package/dist/{chunk-HWIIPPNI.js → chunk-2UOI2FG5.js} +20 -20
  24. package/dist/chunk-2UOI2FG5.js.map +1 -0
  25. package/dist/{chunk-E3SPN4VZ 5.js → chunk-3XC4CPTD.js} +4345 -3986
  26. package/dist/chunk-3XC4CPTD.js.map +1 -0
  27. package/dist/{chunk-7EQTDTTJ.js → chunk-6J4GEEJR.js} +172 -45
  28. package/dist/chunk-6J4GEEJR.js.map +1 -0
  29. package/dist/{chunk-6C4YBBJM 5.js → chunk-6SOIHG6Z.js} +1 -1
  30. package/dist/chunk-6SOIHG6Z.js.map +1 -0
  31. package/dist/{chunk-7FLMSG37.js → chunk-EHMR7VYL.js} +25 -25
  32. package/dist/chunk-EHMR7VYL.js.map +1 -0
  33. package/dist/{chunk-I7PSE6JW.js → chunk-F2IMUDXZ.js} +2 -75
  34. package/dist/chunk-F2IMUDXZ.js.map +1 -0
  35. package/dist/{chunk-QWWZ5CAQ.js → chunk-FFQEQTNW.js} +7 -9
  36. package/dist/chunk-FFQEQTNW.js.map +1 -0
  37. package/dist/chunk-FMUCXFII.js +76 -0
  38. package/dist/chunk-FMUCXFII.js.map +1 -0
  39. package/dist/{chunk-HW3OVDUF.js → chunk-J36DSWQK.js} +1 -1
  40. package/dist/{chunk-HW3OVDUF.js.map → chunk-J36DSWQK.js.map} +1 -1
  41. package/dist/{chunk-SQGMNID3.js → chunk-L4OXEN46.js} +4 -5
  42. package/dist/chunk-L4OXEN46.js.map +1 -0
  43. package/dist/{chunk-R77UEZ4E 3.js → chunk-M43Y4SSO.js} +1 -1
  44. package/dist/chunk-M43Y4SSO.js.map +1 -0
  45. package/dist/{chunk-IIELH4DL.js → chunk-MMZ7JXPU.js} +60 -223
  46. package/dist/chunk-MMZ7JXPU.js.map +1 -0
  47. package/dist/{chunk-NOAYCWCX 5.js → chunk-NECFR5MM.js} +394 -312
  48. package/dist/chunk-NECFR5MM.js.map +1 -0
  49. package/dist/{chunk-BC4IJKSL.js → chunk-SFZUDBL5.js} +40 -4
  50. package/dist/chunk-SFZUDBL5.js.map +1 -0
  51. package/dist/{chunk-XNXXZ43G.js → chunk-XWQCNGTQ.js} +748 -364
  52. package/dist/chunk-XWQCNGTQ.js.map +1 -0
  53. package/dist/components.d.ts +6 -6
  54. package/dist/components.js +15 -12
  55. package/dist/components.js.map +1 -1
  56. package/dist/{functions-D_kgHktt.d.ts → functions-DHebl8-F.d.ts} +1 -1
  57. package/dist/hooks.d.ts +59 -126
  58. package/dist/hooks.js +19 -28
  59. package/dist/hooks.js.map +1 -1
  60. package/dist/index.d.ts +63 -16
  61. package/dist/index.js +23 -24
  62. package/dist/index.js.map +1 -1
  63. package/dist/providers.d.ts +21 -3
  64. package/dist/providers.js +2 -2
  65. package/dist/rbac/index.d.ts +146 -115
  66. package/dist/rbac/index.js +8 -11
  67. package/dist/theming/runtime.d.ts +1 -13
  68. package/dist/theming/runtime.js +1 -1
  69. package/dist/{timezone-_pgH8qrY.d.ts → timezone-CHhWg6b4.d.ts} +3 -10
  70. package/dist/{types-UU913iLA.d.ts → types-BeoeWV5I.d.ts} +8 -0
  71. package/dist/{types-CEpcvwwF.d.ts → types-CkbwOr4Y.d.ts} +6 -0
  72. package/dist/types.d.ts +2 -2
  73. package/dist/{usePublicRouteParams-TZe0gy-4.d.ts → usePublicRouteParams-1oMokgLF.d.ts} +34 -4
  74. package/dist/{useToast-C8gR5ir4.d.ts → useToast-AyaT-x7p.d.ts} +2 -2
  75. package/dist/utils.d.ts +4 -5
  76. package/dist/utils.js +15 -15
  77. package/dist/utils.js.map +1 -1
  78. package/docs/api/README.md +7 -1
  79. package/docs/api/classes/ColumnFactory.md +8 -8
  80. package/docs/api/classes/InvalidScopeError.md +4 -4
  81. package/docs/api/classes/Logger.md +1 -1
  82. package/docs/api/classes/MissingUserContextError.md +4 -4
  83. package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
  84. package/docs/api/classes/PermissionDeniedError.md +4 -4
  85. package/docs/api/classes/RBACAuditManager.md +1 -1
  86. package/docs/api/classes/RBACCache.md +1 -1
  87. package/docs/api/classes/RBACEngine.md +1 -1
  88. package/docs/api/classes/RBACError.md +4 -4
  89. package/docs/api/classes/RBACNotInitializedError.md +4 -4
  90. package/docs/api/classes/SecureSupabaseClient.md +18 -15
  91. package/docs/api/classes/StorageUtils.md +1 -1
  92. package/docs/api/enums/FileCategory.md +1 -1
  93. package/docs/api/enums/LogLevel.md +1 -1
  94. package/docs/api/enums/RBACErrorCode.md +1 -1
  95. package/docs/api/enums/RPCFunction.md +1 -1
  96. package/docs/api/interfaces/AddressFieldProps.md +1 -1
  97. package/docs/api/interfaces/AddressFieldRef.md +1 -1
  98. package/docs/api/interfaces/AggregateConfig.md +4 -4
  99. package/docs/api/interfaces/AutocompleteOptions.md +1 -1
  100. package/docs/api/interfaces/AvatarProps.md +1 -1
  101. package/docs/api/interfaces/BadgeProps.md +9 -2
  102. package/docs/api/interfaces/ButtonProps.md +7 -4
  103. package/docs/api/interfaces/CalendarProps.md +8 -5
  104. package/docs/api/interfaces/CardProps.md +8 -5
  105. package/docs/api/interfaces/ColorPalette.md +1 -1
  106. package/docs/api/interfaces/ColorShade.md +1 -1
  107. package/docs/api/interfaces/ComplianceResult.md +1 -1
  108. package/docs/api/interfaces/DataAccessRecord.md +9 -9
  109. package/docs/api/interfaces/DataRecord.md +1 -1
  110. package/docs/api/interfaces/DataTableAction.md +24 -21
  111. package/docs/api/interfaces/DataTableColumn.md +31 -31
  112. package/docs/api/interfaces/DataTableProps.md +1 -1
  113. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  114. package/docs/api/interfaces/DatabaseComplianceResult.md +1 -1
  115. package/docs/api/interfaces/DatabaseIssue.md +1 -1
  116. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  117. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  118. package/docs/api/interfaces/ErrorBoundaryProps.md +147 -0
  119. package/docs/api/interfaces/ErrorBoundaryProviderProps.md +36 -0
  120. package/docs/api/interfaces/ErrorBoundaryState.md +75 -0
  121. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  122. package/docs/api/interfaces/ExportColumn.md +1 -1
  123. package/docs/api/interfaces/ExportOptions.md +8 -8
  124. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  125. package/docs/api/interfaces/FileMetadata.md +1 -1
  126. package/docs/api/interfaces/FileReference.md +1 -1
  127. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  128. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  129. package/docs/api/interfaces/FileUploadProps.md +26 -23
  130. package/docs/api/interfaces/FooterProps.md +10 -8
  131. package/docs/api/interfaces/FormFieldProps.md +10 -10
  132. package/docs/api/interfaces/FormProps.md +1 -1
  133. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  134. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  135. package/docs/api/interfaces/InputProps.md +7 -4
  136. package/docs/api/interfaces/LabelProps.md +1 -1
  137. package/docs/api/interfaces/LoggerConfig.md +1 -1
  138. package/docs/api/interfaces/LoginFormProps.md +14 -11
  139. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  140. package/docs/api/interfaces/NavigationContextType.md +1 -1
  141. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  142. package/docs/api/interfaces/NavigationItem.md +11 -11
  143. package/docs/api/interfaces/NavigationMenuProps.md +15 -15
  144. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  145. package/docs/api/interfaces/Organisation.md +1 -1
  146. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  147. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  148. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  149. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  150. package/docs/api/interfaces/PaceAppLayoutProps.md +30 -27
  151. package/docs/api/interfaces/PaceLoginPageProps.md +6 -4
  152. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  153. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  154. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  155. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  156. package/docs/api/interfaces/PaletteData.md +1 -1
  157. package/docs/api/interfaces/ParsedAddress.md +1 -1
  158. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  159. package/docs/api/interfaces/ProgressProps.md +1 -1
  160. package/docs/api/interfaces/ProtectedRouteProps.md +7 -26
  161. package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
  162. package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
  163. package/docs/api/interfaces/PublicPageLayoutProps.md +7 -20
  164. package/docs/api/interfaces/QuickFix.md +1 -1
  165. package/docs/api/interfaces/RBACAccessValidateParams.md +1 -1
  166. package/docs/api/interfaces/RBACAccessValidateResult.md +1 -1
  167. package/docs/api/interfaces/RBACAuditLogParams.md +1 -1
  168. package/docs/api/interfaces/RBACAuditLogResult.md +1 -1
  169. package/docs/api/interfaces/RBACConfig.md +1 -1
  170. package/docs/api/interfaces/RBACContext.md +1 -1
  171. package/docs/api/interfaces/RBACLogger.md +1 -1
  172. package/docs/api/interfaces/RBACPageAccessCheckParams.md +1 -1
  173. package/docs/api/interfaces/RBACPerformanceMetrics.md +1 -1
  174. package/docs/api/interfaces/RBACPermissionCheckParams.md +1 -1
  175. package/docs/api/interfaces/RBACPermissionCheckResult.md +1 -1
  176. package/docs/api/interfaces/RBACPermissionsGetParams.md +1 -1
  177. package/docs/api/interfaces/RBACPermissionsGetResult.md +1 -1
  178. package/docs/api/interfaces/RBACResult.md +1 -1
  179. package/docs/api/interfaces/RBACRoleGrantParams.md +1 -1
  180. package/docs/api/interfaces/RBACRoleGrantResult.md +1 -1
  181. package/docs/api/interfaces/RBACRoleRevokeParams.md +1 -1
  182. package/docs/api/interfaces/RBACRoleRevokeResult.md +1 -1
  183. package/docs/api/interfaces/RBACRoleValidateParams.md +1 -1
  184. package/docs/api/interfaces/RBACRoleValidateResult.md +1 -1
  185. package/docs/api/interfaces/RBACRolesListParams.md +1 -1
  186. package/docs/api/interfaces/RBACRolesListResult.md +1 -1
  187. package/docs/api/interfaces/RBACSessionTrackParams.md +1 -1
  188. package/docs/api/interfaces/RBACSessionTrackResult.md +1 -1
  189. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  190. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  191. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  192. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  193. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  194. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  195. package/docs/api/interfaces/RouteConfig.md +1 -1
  196. package/docs/api/interfaces/RuntimeComplianceResult.md +1 -1
  197. package/docs/api/interfaces/SecureDataContextType.md +9 -9
  198. package/docs/api/interfaces/SecureDataProviderProps.md +8 -8
  199. package/docs/api/interfaces/SessionRestorationLoaderProps.md +3 -3
  200. package/docs/api/interfaces/SetupIssue.md +1 -1
  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 +3 -3
  215. package/docs/api/interfaces/TextareaProps.md +1 -1
  216. package/docs/api/interfaces/ToastActionElement.md +4 -1
  217. package/docs/api/interfaces/ToastProps.md +1 -1
  218. package/docs/api/interfaces/UnifiedAuthContextType.md +58 -55
  219. package/docs/api/interfaces/UnifiedAuthProviderProps.md +15 -13
  220. package/docs/api/interfaces/UseFormDialogOptions.md +1 -1
  221. package/docs/api/interfaces/UseFormDialogReturn.md +1 -1
  222. package/docs/api/interfaces/UseInactivityTrackerOptions.md +11 -9
  223. package/docs/api/interfaces/UseInactivityTrackerReturn.md +8 -8
  224. package/docs/api/interfaces/UsePublicEventLogoOptions.md +6 -6
  225. package/docs/api/interfaces/UsePublicEventLogoReturn.md +9 -6
  226. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  227. package/docs/api/interfaces/UsePublicEventReturn.md +8 -5
  228. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +4 -4
  229. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +12 -9
  230. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +10 -7
  231. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  232. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  233. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  234. package/docs/api/interfaces/UserEventAccess.md +14 -11
  235. package/docs/api/interfaces/UserMenuProps.md +8 -6
  236. package/docs/api/interfaces/UserProfile.md +1 -1
  237. package/docs/api/modules.md +575 -634
  238. package/docs/architecture/database-schema-requirements.md +161 -0
  239. package/docs/core-concepts/rbac-system.md +3 -3
  240. package/docs/documentation-index.md +2 -4
  241. package/docs/getting-started/cursor-rules.md +263 -0
  242. package/docs/getting-started/installation-guide.md +6 -1
  243. package/docs/getting-started/quick-start.md +6 -1
  244. package/docs/migration/DOCUMENTATION_STRUCTURE.md +441 -0
  245. package/docs/migration/MIGRATION_GUIDE.md +6 -28
  246. package/docs/migration/README.md +52 -6
  247. package/docs/migration/V0.5.190_TO_V0.6.1_MIGRATION.md +1153 -0
  248. package/docs/migration/V0.6.0_REACT_19_MIGRATION.md +227 -0
  249. package/docs/migration/database-changes-december-2025.md +3 -3
  250. package/docs/rbac/event-based-apps.md +1 -1
  251. package/docs/rbac/getting-started.md +1 -1
  252. package/docs/rbac/quick-start.md +1 -1
  253. package/docs/standards/README.md +40 -0
  254. package/docs/troubleshooting/migration.md +4 -4
  255. package/examples/PublicPages/PublicEventPage.tsx +1 -1
  256. package/package.json +12 -6
  257. package/scripts/audit/core/checks/accessibility.cjs +197 -0
  258. package/scripts/audit/core/checks/api-usage.cjs +191 -0
  259. package/scripts/audit/core/checks/bundle.cjs +142 -0
  260. package/scripts/{check-pace-core-compliance.cjs → audit/core/checks/compliance.cjs} +737 -691
  261. package/scripts/audit/core/checks/config.cjs +54 -0
  262. package/scripts/audit/core/checks/coverage.cjs +84 -0
  263. package/scripts/audit/core/checks/dependencies.cjs +454 -0
  264. package/scripts/audit/core/checks/documentation.cjs +203 -0
  265. package/scripts/audit/core/checks/environment.cjs +128 -0
  266. package/scripts/audit/core/checks/error-handling.cjs +299 -0
  267. package/scripts/audit/core/checks/forms.cjs +172 -0
  268. package/scripts/audit/core/checks/heuristics.cjs +68 -0
  269. package/scripts/audit/core/checks/hooks.cjs +334 -0
  270. package/scripts/audit/core/checks/imports.cjs +244 -0
  271. package/scripts/audit/core/checks/performance.cjs +325 -0
  272. package/scripts/audit/core/checks/routes.cjs +117 -0
  273. package/scripts/audit/core/checks/state.cjs +130 -0
  274. package/scripts/audit/core/checks/structure.cjs +65 -0
  275. package/scripts/audit/core/checks/style.cjs +584 -0
  276. package/scripts/audit/core/checks/testing.cjs +122 -0
  277. package/scripts/audit/core/checks/typescript.cjs +61 -0
  278. package/scripts/audit/core/scanner.cjs +199 -0
  279. package/scripts/audit/core/utils.cjs +137 -0
  280. package/scripts/audit/index.cjs +223 -0
  281. package/scripts/audit/reporters/console.cjs +151 -0
  282. package/scripts/audit/reporters/json.cjs +54 -0
  283. package/scripts/audit/reporters/markdown.cjs +124 -0
  284. package/scripts/audit-consuming-app.cjs +86 -0
  285. package/scripts/build-docs/build-decision.js +240 -0
  286. package/scripts/build-docs/cache-utils.js +105 -0
  287. package/scripts/build-docs/content-normalization.js +150 -0
  288. package/scripts/build-docs/file-utils.js +105 -0
  289. package/scripts/build-docs/git-utils.js +86 -0
  290. package/scripts/build-docs/hash-utils.js +116 -0
  291. package/scripts/build-docs/typedoc-runner.js +220 -0
  292. package/scripts/build-docs-incremental.js +77 -913
  293. package/scripts/install-cursor-rules.cjs +236 -0
  294. package/scripts/utils/command-runner.js +16 -11
  295. package/scripts/validate-formats.js +61 -56
  296. package/scripts/validate-master.js +74 -69
  297. package/scripts/validate-pre-publish.js +70 -65
  298. package/src/__tests__/helpers/test-providers.tsx +1 -1
  299. package/src/__tests__/helpers/test-utils.tsx +1 -1
  300. package/src/__tests__/hooks/usePermissions.test.ts +2 -2
  301. package/src/components/Alert/Alert.test.tsx +12 -18
  302. package/src/components/Alert/Alert.tsx +5 -7
  303. package/src/components/Avatar/Avatar.test.tsx +4 -4
  304. package/src/components/Badge/Badge.tsx +16 -4
  305. package/src/components/Button/Button.tsx +27 -4
  306. package/src/components/Calendar/Calendar.tsx +9 -3
  307. package/src/components/Card/Card.tsx +4 -0
  308. package/src/components/Checkbox/Checkbox.test.tsx +12 -12
  309. package/src/components/Checkbox/Checkbox.tsx +2 -2
  310. package/src/components/DataTable/DataTable.test.tsx +57 -93
  311. package/src/components/DataTable/DataTable.tsx +40 -6
  312. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +5 -6
  313. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +29 -7
  314. package/src/components/DataTable/__tests__/ssr.strict-mode.test.tsx +12 -12
  315. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +2 -3
  316. package/src/components/DataTable/components/AccessDeniedPage.tsx +17 -26
  317. package/src/components/DataTable/components/ActionButtons.tsx +10 -7
  318. package/src/components/DataTable/components/BulkOperationsDropdown.tsx +2 -2
  319. package/src/components/DataTable/components/ColumnFilter.tsx +10 -0
  320. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +12 -0
  321. package/src/components/DataTable/components/DataTableBody.tsx +8 -0
  322. package/src/components/DataTable/components/DataTableCore.tsx +200 -561
  323. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +11 -0
  324. package/src/components/DataTable/components/DataTableLayout.tsx +559 -0
  325. package/src/components/DataTable/components/DataTableModals.tsx +9 -1
  326. package/src/components/DataTable/components/DataTableToolbar.tsx +8 -0
  327. package/src/components/DataTable/components/DraggableColumnHeader.tsx +12 -0
  328. package/src/components/DataTable/components/EditFields.tsx +307 -0
  329. package/src/components/DataTable/components/EditableRow.tsx +9 -1
  330. package/src/components/DataTable/components/EmptyState.tsx +10 -0
  331. package/src/components/DataTable/components/FilterRow.tsx +12 -0
  332. package/src/components/DataTable/components/GroupHeader.tsx +12 -0
  333. package/src/components/DataTable/components/GroupingDropdown.tsx +12 -0
  334. package/src/components/DataTable/components/ImportModal.tsx +7 -0
  335. package/src/components/DataTable/components/LoadingState.tsx +6 -0
  336. package/src/components/DataTable/components/PaginationControls.tsx +16 -1
  337. package/src/components/DataTable/components/RowComponent.tsx +391 -0
  338. package/src/components/DataTable/components/UnifiedTableBody.tsx +62 -852
  339. package/src/components/DataTable/components/VirtualizedDataTable.tsx +16 -4
  340. package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +4 -2
  341. package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +23 -23
  342. package/src/components/DataTable/components/__tests__/EditableRow.test.tsx +11 -11
  343. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +36 -36
  344. package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +27 -27
  345. package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +39 -39
  346. package/src/components/DataTable/components/__tests__/UnifiedTableBody.test.tsx +33 -33
  347. package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +29 -29
  348. package/src/components/DataTable/components/cellValueUtils.ts +40 -0
  349. package/src/components/DataTable/components/hooks/useImportModalFocus.ts +53 -0
  350. package/src/components/DataTable/components/hooks/usePermissionTracking.ts +126 -0
  351. package/src/components/DataTable/context/DataTableContext.tsx +50 -0
  352. package/src/components/DataTable/core/ColumnFactory.ts +31 -0
  353. package/src/components/DataTable/core/DataTableContext.tsx +32 -1
  354. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +10 -0
  355. package/src/components/DataTable/hooks/useColumnReordering.ts +14 -2
  356. package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +10 -0
  357. package/src/components/DataTable/hooks/useDataTableDataPipeline.ts +16 -0
  358. package/src/components/DataTable/hooks/useDataTablePermissions.ts +124 -32
  359. package/src/components/DataTable/hooks/useDataTableState.ts +35 -1
  360. package/src/components/DataTable/hooks/useEffectiveColumnOrder.ts +12 -0
  361. package/src/components/DataTable/hooks/useKeyboardNavigation.ts +2 -2
  362. package/src/components/DataTable/hooks/useServerSideDataEffect.ts +11 -0
  363. package/src/components/DataTable/hooks/useTableColumns.ts +8 -0
  364. package/src/components/DataTable/hooks/useTableHandlers.ts +14 -0
  365. package/src/components/DataTable/styles.ts +6 -6
  366. package/src/components/DataTable/types.ts +6 -10
  367. package/src/components/DataTable/utils/a11yUtils.ts +7 -0
  368. package/src/components/DataTable/utils/debugTools.ts +18 -113
  369. package/src/components/DataTable/utils/errorHandling.ts +12 -0
  370. package/src/components/DataTable/utils/exportUtils.ts +9 -0
  371. package/src/components/DataTable/utils/flexibleImport.ts +12 -48
  372. package/src/components/DataTable/utils/paginationUtils.ts +8 -0
  373. package/src/components/DataTable/utils/performanceUtils.ts +5 -1
  374. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +8 -14
  375. package/src/components/Dialog/Dialog.tsx +8 -7
  376. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +180 -1
  377. package/src/components/ErrorBoundary/ErrorBoundary.tsx +46 -6
  378. package/src/components/ErrorBoundary/ErrorBoundaryContext.tsx +129 -0
  379. package/src/components/ErrorBoundary/index.ts +27 -2
  380. package/src/components/EventSelector/EventSelector.tsx +4 -1
  381. package/src/components/FileDisplay/FileDisplay.test.tsx +2 -2
  382. package/src/components/FileDisplay/FileDisplay.tsx +32 -18
  383. package/src/components/FileUpload/FileUpload.tsx +22 -2
  384. package/src/components/Footer/Footer.test.tsx +16 -16
  385. package/src/components/Footer/Footer.tsx +15 -12
  386. package/src/components/Form/Form.test.tsx +36 -15
  387. package/src/components/Form/Form.tsx +31 -26
  388. package/src/components/Header/Header.tsx +22 -11
  389. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +40 -40
  390. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +1 -1
  391. package/src/components/Input/Input.test.tsx +2 -2
  392. package/src/components/Input/Input.tsx +36 -34
  393. package/src/components/Label/Label.tsx +1 -1
  394. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +4 -4
  395. package/src/components/LoadingSpinner/LoadingSpinner.tsx +1 -1
  396. package/src/components/LoginForm/LoginForm.test.tsx +42 -42
  397. package/src/components/LoginForm/LoginForm.tsx +12 -8
  398. package/src/components/NavigationMenu/NavigationMenu.tsx +15 -514
  399. package/src/components/NavigationMenu/types.ts +56 -0
  400. package/src/components/NavigationMenu/useNavigationFiltering.ts +390 -0
  401. package/src/components/OrganisationSelector/OrganisationSelector.tsx +3 -0
  402. package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +1 -1
  403. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +54 -52
  404. package/src/components/PaceAppLayout/PaceAppLayout.tsx +33 -12
  405. package/src/components/PaceAppLayout/README.md +1 -1
  406. package/src/components/PaceAppLayout/test-setup.tsx +1 -2
  407. package/src/components/PaceLoginPage/PaceLoginPage.tsx +4 -1
  408. package/src/components/PasswordChange/PasswordChangeForm.test.tsx +33 -33
  409. package/src/components/PasswordChange/PasswordChangeForm.tsx +10 -1
  410. package/src/components/Progress/Progress.tsx +1 -1
  411. package/src/components/ProtectedRoute/ProtectedRoute.tsx +3 -9
  412. package/src/components/PublicLayout/PublicPageLayout.tsx +3 -6
  413. package/src/components/PublicLayout/PublicPageProvider.tsx +4 -0
  414. package/src/components/Select/Select.tsx +95 -438
  415. package/src/components/Select/context.ts +23 -0
  416. package/src/components/Select/hooks/useSelectEvents.ts +87 -0
  417. package/src/components/Select/hooks/useSelectSearch.ts +91 -0
  418. package/src/components/Select/hooks/useSelectState.ts +104 -0
  419. package/src/components/Select/index.ts +9 -1
  420. package/src/components/Select/types.ts +123 -0
  421. package/src/components/Select/utils/text.ts +26 -0
  422. package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +5 -6
  423. package/src/components/Switch/Switch.tsx +4 -4
  424. package/src/components/Table/Table.tsx +1 -1
  425. package/src/components/Tabs/Tabs.tsx +1 -1
  426. package/src/components/Textarea/Textarea.tsx +27 -29
  427. package/src/components/Toast/Toast.tsx +5 -1
  428. package/src/components/Tooltip/Tooltip.tsx +3 -3
  429. package/src/components/UserMenu/UserMenu.test.tsx +24 -11
  430. package/src/components/UserMenu/UserMenu.tsx +22 -19
  431. package/src/components/index.ts +2 -2
  432. package/src/hooks/__tests__/hooks.integration.test.tsx +80 -55
  433. package/src/hooks/__tests__/index.unit.test.ts +2 -5
  434. package/src/hooks/__tests__/useStorage.unit.test.ts +36 -36
  435. package/src/hooks/index.ts +1 -2
  436. package/src/hooks/public/usePublicEvent.ts +5 -1
  437. package/src/hooks/public/usePublicEventLogo.ts +5 -1
  438. package/src/hooks/public/usePublicFileDisplay.ts +4 -0
  439. package/src/hooks/public/usePublicRouteParams.ts +5 -1
  440. package/src/hooks/services/useAuth.ts +32 -0
  441. package/src/hooks/services/useCurrentEvent.ts +6 -0
  442. package/src/hooks/services/useCurrentOrganisation.ts +6 -0
  443. package/src/hooks/useDataTableState.ts +8 -18
  444. package/src/hooks/useDebounce.ts +9 -0
  445. package/src/hooks/useEventTheme.ts +6 -0
  446. package/src/hooks/useFileDisplay.ts +4 -0
  447. package/src/hooks/useFileReference.ts +25 -7
  448. package/src/hooks/useFileUrl.ts +11 -1
  449. package/src/hooks/useFocusManagement.ts +16 -2
  450. package/src/hooks/useFocusTrap.ts +7 -4
  451. package/src/hooks/useFormDialog.ts +8 -7
  452. package/src/hooks/useInactivityTracker.ts +4 -1
  453. package/src/hooks/useKeyboardShortcuts.ts +4 -0
  454. package/src/hooks/useOrganisationPermissions.ts +4 -0
  455. package/src/hooks/useOrganisationSecurity.ts +4 -0
  456. package/src/hooks/usePerformanceMonitor.ts +4 -0
  457. package/src/hooks/usePermissionCache.ts +8 -1
  458. package/src/hooks/useQueryCache.ts +12 -1
  459. package/src/hooks/useSessionRestoration.ts +4 -0
  460. package/src/hooks/useStorage.ts +4 -0
  461. package/src/hooks/useToast.ts +3 -3
  462. package/src/index.ts +2 -1
  463. package/src/providers/__tests__/OrganisationProvider.test.tsx +115 -49
  464. package/src/providers/__tests__/ProviderLifecycle.test.tsx +21 -6
  465. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +10 -10
  466. package/src/providers/services/AuthServiceProvider.tsx +18 -0
  467. package/src/providers/services/EventServiceProvider.tsx +18 -0
  468. package/src/providers/services/InactivityServiceProvider.tsx +18 -0
  469. package/src/providers/services/OrganisationServiceProvider.tsx +18 -0
  470. package/src/providers/services/UnifiedAuthProvider.tsx +58 -22
  471. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +33 -7
  472. package/src/rbac/README.md +1 -1
  473. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +26 -26
  474. package/src/rbac/__tests__/scenarios.user-role.test.tsx +4 -5
  475. package/src/rbac/adapters.tsx +14 -5
  476. package/src/rbac/api.ts +100 -67
  477. package/src/rbac/components/EnhancedNavigationMenu.tsx +1 -1
  478. package/src/rbac/components/NavigationGuard.tsx +1 -1
  479. package/src/rbac/components/NavigationProvider.tsx +5 -2
  480. package/src/rbac/components/PagePermissionGuard.tsx +158 -18
  481. package/src/rbac/components/PagePermissionProvider.tsx +1 -1
  482. package/src/rbac/components/PermissionEnforcer.tsx +1 -1
  483. package/src/rbac/components/RoleBasedRouter.tsx +6 -2
  484. package/src/rbac/components/SecureDataProvider.test.tsx +84 -49
  485. package/src/rbac/components/SecureDataProvider.tsx +21 -6
  486. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +24 -14
  487. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +7 -0
  488. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +14 -6
  489. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +15 -4
  490. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +148 -24
  491. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +81 -15
  492. package/src/rbac/engine.ts +38 -14
  493. package/src/rbac/hooks/permissions/index.ts +7 -0
  494. package/src/rbac/hooks/permissions/useAccessLevel.ts +105 -0
  495. package/src/rbac/hooks/permissions/useCachedPermissions.ts +79 -0
  496. package/src/rbac/hooks/permissions/useCan.ts +347 -0
  497. package/src/rbac/hooks/permissions/useHasAllPermissions.ts +90 -0
  498. package/src/rbac/hooks/permissions/useHasAnyPermission.ts +90 -0
  499. package/src/rbac/hooks/permissions/useMultiplePermissions.ts +93 -0
  500. package/src/rbac/hooks/permissions/usePermissions.ts +253 -0
  501. package/src/rbac/hooks/useCan.test.ts +71 -64
  502. package/src/rbac/hooks/usePermissions.ts +14 -995
  503. package/src/rbac/hooks/useResourcePermissions.test.ts +54 -18
  504. package/src/rbac/hooks/useResourcePermissions.ts +14 -4
  505. package/src/rbac/hooks/useSecureSupabase.ts +33 -13
  506. package/src/rbac/permissions.ts +0 -30
  507. package/src/rbac/secureClient.ts +212 -61
  508. package/src/rbac/types.ts +8 -0
  509. package/src/theming/__tests__/parseEventColours.test.ts +6 -9
  510. package/src/theming/parseEventColours.ts +5 -19
  511. package/src/types/vitest-globals.d.ts +51 -26
  512. package/src/utils/__mocks__/supabaseMock.ts +1 -3
  513. package/src/utils/__tests__/formatting.unit.test.ts +4 -4
  514. package/src/utils/__tests__/index.unit.test.ts +2 -2
  515. package/src/utils/audit/audit.ts +0 -3
  516. package/src/utils/core/cn.ts +1 -1
  517. package/src/utils/file-reference/index.ts +53 -1
  518. package/src/utils/formatting/formatting.ts +8 -18
  519. package/src/utils/index.ts +0 -1
  520. package/src/utils/security/secureDataAccess.test.ts +31 -20
  521. package/src/utils/security/secureDataAccess.ts +4 -3
  522. package/dist/chunk-6C4YBBJM.js +0 -628
  523. package/dist/chunk-6C4YBBJM.js.map +0 -1
  524. package/dist/chunk-7D4SUZUM.js 2.map +0 -1
  525. package/dist/chunk-7EQTDTTJ.js 2.map +0 -1
  526. package/dist/chunk-7EQTDTTJ.js.map +0 -1
  527. package/dist/chunk-7FLMSG37.js 2.map +0 -1
  528. package/dist/chunk-7FLMSG37.js.map +0 -1
  529. package/dist/chunk-BC4IJKSL.js.map +0 -1
  530. package/dist/chunk-E3SPN4VZ.js +0 -12917
  531. package/dist/chunk-E3SPN4VZ.js.map +0 -1
  532. package/dist/chunk-E66EQZE6 5.js +0 -37
  533. package/dist/chunk-E66EQZE6.js 2.map +0 -1
  534. package/dist/chunk-HWIIPPNI.js.map +0 -1
  535. package/dist/chunk-I7PSE6JW 5.js +0 -191
  536. package/dist/chunk-I7PSE6JW.js 2.map +0 -1
  537. package/dist/chunk-I7PSE6JW.js.map +0 -1
  538. package/dist/chunk-IIELH4DL.js.map +0 -1
  539. package/dist/chunk-KNC55RTG.js 5.map +0 -1
  540. package/dist/chunk-KNC55RTG.js.map +0 -1
  541. package/dist/chunk-KQCRWDSA.js 5.map +0 -1
  542. package/dist/chunk-LFNCN2SP.js +0 -412
  543. package/dist/chunk-LFNCN2SP.js 2.map +0 -1
  544. package/dist/chunk-LFNCN2SP.js.map +0 -1
  545. package/dist/chunk-LMC26NLJ 2.js +0 -84
  546. package/dist/chunk-NOAYCWCX.js +0 -4993
  547. package/dist/chunk-NOAYCWCX.js.map +0 -1
  548. package/dist/chunk-QWWZ5CAQ.js 3.map +0 -1
  549. package/dist/chunk-QWWZ5CAQ.js.map +0 -1
  550. package/dist/chunk-QXHPKYJV 3.js +0 -113
  551. package/dist/chunk-R77UEZ4E.js +0 -68
  552. package/dist/chunk-R77UEZ4E.js.map +0 -1
  553. package/dist/chunk-SQGMNID3.js.map +0 -1
  554. package/dist/chunk-VBXEHIUJ.js 6.map +0 -1
  555. package/dist/chunk-XNXXZ43G.js.map +0 -1
  556. package/dist/chunk-ZSAAAMVR 6.js +0 -25
  557. package/dist/components.js 5.map +0 -1
  558. package/dist/styles/index 2.js +0 -12
  559. package/dist/styles/index.js 5.map +0 -1
  560. package/dist/theming/runtime 5.js +0 -19
  561. package/dist/theming/runtime.js 5.map +0 -1
  562. package/docs/api/classes/ErrorBoundary.md +0 -144
  563. package/docs/migration/quick-migration-guide.md +0 -356
  564. package/docs/migration/service-architecture.md +0 -281
  565. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +0 -680
  566. package/src/hooks/useSecureDataAccess.test.ts +0 -559
  567. package/src/hooks/useSecureDataAccess.ts +0 -666
  568. /package/dist/{DataTable-5FU7IESH.js.map → DataTable-TPTKCX4D.js.map} +0 -0
  569. /package/dist/{UnifiedAuthProvider-RGJTDE2C.js.map → UnifiedAuthProvider-CH6Z342H.js.map} +0 -0
  570. /package/dist/{api-N774RPUA.js.map → api-MVVQZLJI.js.map} +0 -0
  571. /package/docs/migration/{organisation-context-timing-fix.md → V0.3.44_organisation-context-timing-fix.md} +0 -0
  572. /package/docs/migration/{rbac-migration.md → V0.4.0_rbac-migration.md} +0 -0
  573. /package/docs/migration/{person-scoped-profiles-migration-guide.md → V0.5.190_person-scoped-profiles-migration-guide.md} +0 -0
  574. /package/examples/{rbac → RBAC}/CompleteRBACExample.tsx +0 -0
  575. /package/examples/{rbac → RBAC}/EventBasedApp.tsx +0 -0
  576. /package/examples/{rbac → RBAC}/PermissionExample.tsx +0 -0
  577. /package/examples/{rbac → RBAC}/index.ts +0 -0
@@ -0,0 +1,441 @@
1
+ # Documentation Structure Guidelines
2
+
3
+ **Purpose:** Define clear structure and responsibilities for CHANGELOG.md and migration documentation to prevent overlap and maintain single source of truth.
4
+
5
+ ## Documentation Hierarchy
6
+
7
+ ```
8
+ CHANGELOG.md (High-level announcements, links to detailed guides)
9
+ ├── docs/migration/README.md (Index/navigation)
10
+ ├── docs/migration/MIGRATION_GUIDE.md (General migration patterns)
11
+ ├── docs/migration/V0.X_TO_V0.Y_MIGRATION.md (Version-specific migrations)
12
+ ├── docs/migration/V0.6.0_REACT_19_MIGRATION.md (Feature-specific migrations)
13
+ ├── docs/migration/database-changes-december-2025.md (Database-specific)
14
+ └── docs/migration/V0.5.190_person-scoped-profiles-migration-guide.md (Feature-specific)
15
+ ```
16
+
17
+ ## CHANGELOG.md Responsibilities
18
+
19
+ ### ✅ What CHANGELOG.md SHOULD Include
20
+
21
+ 1. **High-Level Announcements**
22
+ - Breaking changes summary
23
+ - New features summary
24
+ - Deprecations summary
25
+ - Bug fixes summary
26
+
27
+ 2. **Brief Summaries**
28
+ - One-line descriptions of changes
29
+ - Key impact statements
30
+ - Version numbers and dates
31
+
32
+ 3. **Links to Detailed Guides**
33
+ - Links to migration guides for breaking changes
34
+ - Links to feature documentation
35
+ - Links to troubleshooting guides
36
+
37
+ 4. **Quick Migration Notes**
38
+ - Brief "what changed" statements
39
+ - Links to detailed migration guides
40
+ - Critical warnings (e.g., "⚠️ CRITICAL: Database migrations required")
41
+
42
+ ### ❌ What CHANGELOG.md SHOULD NOT Include
43
+
44
+ 1. **Detailed Migration Steps**
45
+ - Step-by-step instructions
46
+ - Code examples (unless very brief)
47
+ - Configuration file examples
48
+ - Troubleshooting details
49
+
50
+ 2. **Duplicate Content**
51
+ - Content that exists in migration guides
52
+ - Detailed explanations already in docs
53
+ - Long code blocks
54
+
55
+ 3. **Version-Specific Details**
56
+ - Detailed version upgrade paths
57
+ - Specific migration commands
58
+ - Database migration file names (unless critical)
59
+
60
+ ## Migration Documentation Responsibilities
61
+
62
+ ### ✅ What Migration Docs SHOULD Include
63
+
64
+ 1. **Step-by-Step Instructions**
65
+ - Detailed migration steps
66
+ - Code examples (before/after)
67
+ - Configuration changes
68
+ - Command-line instructions
69
+
70
+ 2. **Code Examples**
71
+ - Before/after code comparisons
72
+ - Complete working examples
73
+ - Common patterns and anti-patterns
74
+
75
+ 3. **Troubleshooting**
76
+ - Common issues and solutions
77
+ - Error messages and fixes
78
+ - Edge cases
79
+
80
+ 4. **Complete Context**
81
+ - Why changes were made
82
+ - Impact analysis
83
+ - Migration timeline
84
+ - Testing checklists
85
+
86
+ ### ❌ What Migration Docs SHOULD NOT Include
87
+
88
+ 1. **High-Level Summaries**
89
+ - Brief announcements (that's CHANGELOG's job)
90
+ - Marketing-style descriptions
91
+ - Non-actionable information
92
+
93
+ 2. **Duplicate Content**
94
+ - Content duplicated from other migration guides
95
+ - Content that should be in CHANGELOG
96
+
97
+ ## Content Strategy by Type
98
+
99
+ ### Breaking Changes
100
+
101
+ **CHANGELOG.md:**
102
+ ```markdown
103
+ ## [0.6.0] - 2025-01-28
104
+
105
+ ### Changed
106
+ - **BREAKING**: Upgraded from React 18.3.1 to React 19.2.3
107
+ - **BREAKING**: Database schema changes (table naming standardization)
108
+
109
+ ### Migration Notes
110
+ - **React 19 Upgrade**: See [React 19 Migration Guide](./docs/migration/V0.6.0_REACT_19_MIGRATION.md)
111
+ - **Database Changes**: See [v0.5.190 → v0.6.1 Migration Guide](./docs/migration/V0.5.190_TO_V0.6.1_MIGRATION.md)
112
+ ```
113
+
114
+ **Migration Doc:**
115
+ ```markdown
116
+ # React 19 Migration Guide
117
+
118
+ ## Step 1: Update Dependencies
119
+
120
+ ```bash
121
+ npm install react@^19.2.3 react-dom@^19.2.3
122
+ ```
123
+
124
+ ## Step 2: Update Vite Configuration
125
+
126
+ ```typescript
127
+ export default defineConfig({
128
+ plugins: [
129
+ react({
130
+ babel: {
131
+ plugins: ['babel-plugin-react-compiler'],
132
+ },
133
+ }),
134
+ ],
135
+ })
136
+ ```
137
+
138
+ [... detailed steps ...]
139
+ ```
140
+
141
+ ### New Features
142
+
143
+ **CHANGELOG.md:**
144
+ ```markdown
145
+ ### Added
146
+ - **useFormDialog Hook**: Generic React hook for managing form dialog state
147
+ - **DateTimeField Component**: Form input component for datetime values with automatic UTC ↔ timezone conversion
148
+ ```
149
+
150
+ **Migration Doc (if needed):**
151
+ ```markdown
152
+ # Using New Features
153
+
154
+ ## useFormDialog Hook
155
+
156
+ ```tsx
157
+ import { useFormDialog } from '@jmruthers/pace-core';
158
+
159
+ const formDialog = useFormDialog<FormData>({
160
+ defaultValues: { name: '', email: '' }
161
+ });
162
+ ```
163
+
164
+ [... usage examples ...]
165
+ ```
166
+
167
+ ### Minor Version Changes
168
+
169
+ **CHANGELOG.md:**
170
+ ```markdown
171
+ ## [0.5.109] - 2025-11-03
172
+
173
+ ### Changed
174
+ - **Session Tracking Hook API**: Removed `trackLogin()` and `trackLogout()` methods
175
+
176
+ ### Migration Guide
177
+
178
+ ### Upgrading from 0.5.108 to 0.5.109
179
+
180
+ **Breaking Change**: The `useSessionTracking` hook no longer provides `trackLogin()` and `trackLogout()` methods.
181
+
182
+ **Migration Steps:**
183
+ 1. Remove manual tracking calls
184
+ 2. Keep event switch tracking
185
+ 3. Apply database migrations
186
+
187
+ [... brief migration guide ...]
188
+ ```
189
+
190
+ **Note:** For minor versions, it's acceptable to include brief migration guides directly in CHANGELOG if they're simple. For complex migrations, create a dedicated migration guide.
191
+
192
+ ## File Naming Conventions
193
+
194
+ ### Migration Guides
195
+
196
+ All migration guides should include version or date stamps in their filenames for clarity:
197
+
198
+ - **Version-specific**: `V0.X_TO_V0.Y_MIGRATION.md`
199
+ - Example: `V0.5.190_TO_V0.6.1_MIGRATION.md`
200
+ - ✅ Already includes version numbers
201
+
202
+ - **Feature-specific**: `V{VERSION}_{FEATURE}-migration.md` or `V{VERSION}_{FEATURE}-migration-guide.md`
203
+ - Example: `V0.6.0_REACT_19_MIGRATION.md` (introduced in v0.6.0)
204
+ - Example: `V0.5.190_person-scoped-profiles-migration-guide.md` (introduced in v0.5.190)
205
+ - **Rationale**: Version at start ensures chronological sorting and makes it clear which version introduced the feature
206
+
207
+ - **Database-specific**: `database-changes-{DATE}.md` or `database-changes-{DATE}-V{VERSION}.md`
208
+ - Example: `database-changes-december-2025.md` (date-based, already in use)
209
+ - Example: `database-changes-december-2025-V0.5.190.md` (if version context needed)
210
+ - **Rationale**: Dates are clear for database changes, but version can help if needed
211
+
212
+ - **General/Topic-specific**: `V{VERSION}_{TOPIC}-migration.md` or `{DATE}_{TOPIC}-migration.md`
213
+ - Example: `V0.4.0_rbac-migration.md` (if version-specific)
214
+ - Example: `V0.3.44_organisation-context-timing-fix.md` (if version-specific)
215
+ - **Rationale**: Version at start ensures chronological sorting. Use version if tied to specific release, date if it's a fix/change
216
+
217
+ ### Naming Rules
218
+
219
+ 1. **Always include version or date** - Makes it clear when/what the migration relates to
220
+ 2. **Version at the start** - Put version number at the beginning of filename for chronological sorting
221
+ 3. **Use version for feature migrations** - Tied to specific release
222
+ 4. **Use date for database changes** - Clear chronological reference
223
+ 5. **Use version for fixes** - Tied to specific release
224
+ 6. **Be consistent** - Follow the pattern once established
225
+
226
+ ### Documentation Files (No Version Needed)
227
+
228
+ These are general documentation files that don't need version stamps:
229
+
230
+ - **Index**: `README.md`
231
+ - **General Guide**: `MIGRATION_GUIDE.md` (includes quick reference table)
232
+ - **Structure Guidelines**: `DOCUMENTATION_STRUCTURE.md`
233
+
234
+ ### Migration Guides (Version Required)
235
+
236
+ **All migration guides must include version or date stamps:**
237
+
238
+ - ✅ `V0.6.0_REACT_19_MIGRATION.md` - Feature migration with version at start
239
+ - ✅ `V0.5.190_person-scoped-profiles-migration-guide.md` - Feature migration with version at start
240
+ - ✅ `V0.3.44_organisation-context-timing-fix.md` - Fix migration with version at start
241
+ - ✅ `V0.5.190_TO_V0.6.1_MIGRATION.md` - Version-specific migration
242
+ - ✅ `database-changes-december-2025.md` - Database changes with date
243
+ - ✅ `V0.4.0_rbac-migration.md` - RBAC migration (introduced in v0.4.0)
244
+ - ✅ Service architecture documentation is in `/docs/architecture/services.md` (not a migration guide)
245
+
246
+ ## Link Strategy
247
+
248
+ ### From CHANGELOG to Migration Docs
249
+
250
+ Always use relative paths:
251
+ ```markdown
252
+ - See [React 19 Migration Guide](./docs/migration/REACT_19_MIGRATION_V0.6.0.md)
253
+ ```
254
+
255
+ ### Between Migration Docs
256
+
257
+ Use relative paths:
258
+ ```markdown
259
+ - See [Database Changes December 2025](./database-changes-december-2025.md)
260
+ - See [React 19 Migration Guide](./V0.6.0_REACT_19_MIGRATION.md)
261
+ ```
262
+
263
+ ### From Migration Docs to CHANGELOG
264
+
265
+ Use relative paths:
266
+ ```markdown
267
+ - See [CHANGELOG.md](../../CHANGELOG.md) for version history
268
+ ```
269
+
270
+ ## Version-Specific Migration Guides
271
+
272
+ ### When to Create a Version-Specific Guide
273
+
274
+ Create a dedicated migration guide when:
275
+ - ✅ Major version upgrade (e.g., 0.5.x → 0.6.x)
276
+ - ✅ Multiple breaking changes in one version
277
+ - ✅ Complex migration requiring multiple steps
278
+ - ✅ Database migrations required
279
+ - ✅ Significant API changes
280
+
281
+ ### When to Keep in CHANGELOG
282
+
283
+ Keep migration guide in CHANGELOG when:
284
+ - ✅ Minor version upgrade with simple changes
285
+ - ✅ Single breaking change that's straightforward
286
+ - ✅ No database migrations required
287
+ - ✅ Simple code updates only
288
+
289
+ ## Review Checklist
290
+
291
+ Before adding content to CHANGELOG or migration docs:
292
+
293
+ ### CHANGELOG Review
294
+
295
+ - [ ] Is this a high-level announcement?
296
+ - [ ] Is this a brief summary (not detailed steps)?
297
+ - [ ] Are detailed migration steps linked to migration docs?
298
+ - [ ] Is there duplicate content in migration docs?
299
+ - [ ] Are all links working and pointing to correct files?
300
+
301
+ ### Migration Doc Review
302
+
303
+ - [ ] Are step-by-step instructions included?
304
+ - [ ] Are code examples provided?
305
+ - [ ] Is troubleshooting information included?
306
+ - [ ] Are links to related docs included?
307
+ - [ ] Is there duplicate content from CHANGELOG?
308
+ - [ ] Is there duplicate content from other migration docs?
309
+
310
+ ## Maintenance Guidelines
311
+
312
+ ### Regular Reviews
313
+
314
+ 1. **After Each Release**
315
+ - Review CHANGELOG for duplicate content
316
+ - Verify all links work
317
+ - Check migration docs are referenced correctly
318
+
319
+ 2. **Quarterly**
320
+ - Review all migration docs for outdated content
321
+ - Consolidate overlapping guides
322
+ - Update links and references
323
+
324
+ 3. **Before Major Releases**
325
+ - Plan migration guide structure
326
+ - Identify potential overlaps
327
+ - Create clear documentation hierarchy
328
+
329
+ ### Content Updates
330
+
331
+ 1. **When Adding Breaking Changes**
332
+ - Add brief summary to CHANGELOG
333
+ - Create or update migration guide
334
+ - Link from CHANGELOG to migration guide
335
+
336
+ 2. **When Adding New Features**
337
+ - Add feature announcement to CHANGELOG
338
+ - Add usage examples to migration guide (if migration needed)
339
+ - Link from CHANGELOG if detailed guide exists
340
+
341
+ 3. **When Fixing Bugs**
342
+ - Add fix to CHANGELOG
343
+ - Add troubleshooting to migration guide (if relevant)
344
+ - Link if detailed troubleshooting needed
345
+
346
+ ## Examples
347
+
348
+ ### ✅ Good CHANGELOG Entry
349
+
350
+ ```markdown
351
+ ## [0.6.0] - 2025-01-28
352
+
353
+ ### Changed
354
+ - **BREAKING**: Upgraded from React 18.3.1 to React 19.2.3
355
+ - **BREAKING**: Database schema changes (table naming standardization)
356
+
357
+ ### Migration Notes
358
+
359
+ **⚠️ CRITICAL**: This version includes major breaking changes.
360
+
361
+ - **React 19 Upgrade**: See [React 19 Migration Guide](./docs/migration/V0.6.0_REACT_19_MIGRATION.md)
362
+ - **Complete Migration**: See [v0.5.190 → v0.6.1 Migration Guide](./docs/migration/V0.5.190_TO_V0.6.1_MIGRATION.md)
363
+ ```
364
+
365
+ ### ❌ Bad CHANGELOG Entry
366
+
367
+ ```markdown
368
+ ## [0.6.0] - 2025-01-28
369
+
370
+ ### Changed
371
+ - **BREAKING**: Upgraded from React 18.3.1 to React 19.2.3
372
+
373
+ ### Migration Steps
374
+
375
+ **Step 1: Update Dependencies**
376
+
377
+ ```bash
378
+ npm install react@^19.2.3 react-dom@^19.2.3
379
+ npm install -D @types/react@^19.2.7 @types/react-dom@^19.2.3
380
+ ```
381
+
382
+ **Step 2: Update Vite Configuration**
383
+
384
+ ```typescript
385
+ export default defineConfig({
386
+ plugins: [
387
+ react({
388
+ babel: {
389
+ plugins: ['babel-plugin-react-compiler'],
390
+ },
391
+ }),
392
+ ],
393
+ })
394
+ ```
395
+
396
+ [... many more steps ...]
397
+ ```
398
+
399
+ ### ✅ Good Migration Guide Entry
400
+
401
+ ```markdown
402
+ # React 19 Migration Guide
403
+
404
+ ## Step 1: Update Dependencies
405
+
406
+ ```bash
407
+ npm install react@^19.2.3 react-dom@^19.2.3
408
+ npm install -D @types/react@^19.2.7 @types/react-dom@^19.2.3
409
+ npm install -D @vitejs/plugin-react@^5.1.2
410
+ npm install -D babel-plugin-react-compiler@latest
411
+ ```
412
+
413
+ ## Step 2: Update Vite Configuration
414
+
415
+ [... detailed instructions ...]
416
+
417
+ ## Troubleshooting
418
+
419
+ ### Issue: TypeScript errors with child.props
420
+
421
+ [... detailed troubleshooting ...]
422
+ ```
423
+
424
+ ### ❌ Bad Migration Guide Entry
425
+
426
+ ```markdown
427
+ # React 19 Migration Guide
428
+
429
+ React 19 has been released! This is a major upgrade that includes...
430
+
431
+ [... marketing content, no actionable steps ...]
432
+ ```
433
+
434
+ ## Summary
435
+
436
+ - **CHANGELOG.md**: Announce, summarize, link
437
+ - **Migration Docs**: Instruct, demonstrate, troubleshoot
438
+ - **No Duplication**: Each piece of information lives in one place
439
+ - **Clear Links**: Easy navigation between related content
440
+ - **Regular Review**: Keep structure clean and maintainable
441
+
@@ -160,31 +160,9 @@ This breaking change was made for security reasons:
160
160
  - Provides consistent user experience across all apps
161
161
  - Improves overall security posture
162
162
 
163
- ### v2.0.0 - Service Architecture Changes
163
+ ### Service Architecture
164
164
 
165
- **Status**: ⚠️ **BREAKING CHANGE**
166
- **Date**: December 2024
167
- **Impact**: Medium - Affects apps using service architecture
168
-
169
- #### What Changed
170
-
171
- The library now uses a service-based architecture with pure TypeScript service classes and React integration through providers and hooks.
172
-
173
- #### Key Changes
174
-
175
- - ✅ **New Service Layer**: Pure TypeScript classes for business logic
176
- - ✅ **Provider Layer**: React context integration for services
177
- - ✅ **Hook Layer**: Reactive hooks for component integration
178
- - ✅ **Backward Compatible**: `UnifiedAuthProvider` maintained for compatibility
179
-
180
- #### Migration
181
-
182
- The service architecture is now the default. Existing code continues to work without changes:
183
-
184
- ```tsx
185
- // Works out of the box - uses service architecture internally
186
- import { UnifiedAuthProvider } from '@jmruthers/pace-core';
187
- ```
165
+ **Note**: Service architecture documentation is available in [Architecture Documentation](../architecture/services.md). The service-based architecture is backward compatible - existing code using `UnifiedAuthProvider` continues to work without changes as it uses the service architecture internally.
188
166
 
189
167
  ## Version-Specific Migrations
190
168
 
@@ -933,8 +911,8 @@ export default defineConfig({
933
911
 
934
912
  // New dependencies
935
913
  "@jmruthers/pace-core": "^2.0.0",
936
- "react": "^18.2.0",
937
- "react-dom": "^18.2.0",
914
+ "react": "^19.2.3",
915
+ "react-dom": "^19.2.3",
938
916
  "@supabase/supabase-js": "^2.38.0",
939
917
  "zod": "^3.22.0"
940
918
  },
@@ -944,8 +922,8 @@ export default defineConfig({
944
922
  "@types/react-dom": "^17.0.0",
945
923
 
946
924
  // New dev dependencies
947
- "@types/react": "^18.2.0",
948
- "@types/react-dom": "^18.2.0",
925
+ "@types/react": "^19.2.7",
926
+ "@types/react-dom": "^19.2.3",
949
927
  "@vitejs/plugin-react": "^4.0.0",
950
928
  "vite": "^4.4.0",
951
929
  "typescript": "^5.0.0"
@@ -6,12 +6,25 @@ reviewedBy: documentation-standards-audit
6
6
 
7
7
  # Migration Guide
8
8
 
9
- > **🔄 Upgrade and Migration** | [Unified Migration Guide](./MIGRATION_GUIDE.md) | [RBAC Migration](./rbac-migration.md)
9
+ > **🔄 Upgrade and Migration** | [Unified Migration Guide](./MIGRATION_GUIDE.md) | [RBAC Migration](./V0.4.0_rbac-migration.md)
10
10
 
11
11
  [← Back to Documentation](../README.md) | [↑ Table of Contents](#table-of-contents) | [Next: Unified Migration Guide →](./MIGRATION_GUIDE.md)
12
12
 
13
13
  Complete migration guides for upgrading to and between versions of `@jmruthers/pace-core`.
14
14
 
15
+ ## 📖 Documentation Structure
16
+
17
+ This migration documentation follows a clear structure to help you find the information you need:
18
+
19
+ - **CHANGELOG.md**: High-level announcements and summaries with links to detailed guides
20
+ - **Migration Guides**: Step-by-step instructions, code examples, and troubleshooting
21
+ - **Version-Specific**: `V0.5.190_TO_V0.6.1_MIGRATION.md` - Complete migration for specific versions
22
+ - **Feature-Specific**: `V0.6.0_REACT_19_MIGRATION.md`, `V0.4.0_rbac-migration.md` - Focused guides for specific features (with version stamps at start)
23
+ - **Database-Specific**: `database-changes-december-2025.md` - Database schema changes
24
+ - **General**: `MIGRATION_GUIDE.md` - General migration patterns and best practices
25
+
26
+ **For documentation structure guidelines, see:** [Documentation Structure](./DOCUMENTATION_STRUCTURE.md)
27
+
15
28
  ## 📚 Start Here: Unified Migration Guide
16
29
 
17
30
  **For all migrations, start with:** [Complete Migration Guide](./MIGRATION_GUIDE.md)
@@ -29,6 +42,8 @@ The unified guide provides:
29
42
  - [Quick Migration Checklist](#-quick-migration-checklist)
30
43
  - [Version Migrations](#-version-migrations)
31
44
  - [Critical Fixes](#-critical-fixes)
45
+ - [v0.5.190 → v0.6.1 Comprehensive Migration Guide](#v05190--v061-comprehensive-migration-guide)
46
+ - [Person-Scoped Profiles Migration](#person-scoped-profiles-migration-v05190)
32
47
  - [From Other Libraries](#-from-other-libraries)
33
48
  - [RBAC Migration](#-rbac-migration)
34
49
  - [Migration Tools](#-migration-tools)
@@ -64,6 +79,25 @@ This guide covers:
64
79
 
65
80
  ## 🚨 Critical Fixes
66
81
 
82
+ ### v0.5.190 → v0.6.1 Comprehensive Migration Guide
83
+
84
+ **NEW**: Complete migration guide for upgrading from v0.5.190 to v0.6.1.
85
+
86
+ **Breaking Changes:**
87
+ - React 19 upgrade (all apps must upgrade)
88
+ - Database schema changes (table naming standardization)
89
+ - Person-scoped profiles migration
90
+
91
+ **Migration Guide**: [v0.5.190 → v0.6.1 Migration Guide](./V0.5.190_TO_V0.6.1_MIGRATION.md)
92
+
93
+ **Quick Summary**:
94
+ - Upgrade React to 19.2.3+
95
+ - Apply database migrations
96
+ - Update all table name references
97
+ - Remove `organisation_id` filters from profile queries
98
+ - Configure React Compiler
99
+ - See full guide for detailed instructions
100
+
67
101
  ### Person-Scoped Profiles Migration (v0.5.190+)
68
102
 
69
103
  **BREAKING CHANGE**: Profiles (membership, medical, and contact) have been migrated from organisation-scoped to person-scoped.
@@ -74,7 +108,7 @@ This guide covers:
74
108
  - One membership per person (enforced by unique constraint)
75
109
  - Related tables (`pace_consent`, `pace_identification`, `pace_qualification`, etc.) also no longer have `organisation_id`
76
110
 
77
- **Migration Guide**: [Person-Scoped Profiles Migration Guide](./person-scoped-profiles-migration-guide.md)
111
+ **Migration Guide**: [Person-Scoped Profiles Migration Guide](./V0.5.190_person-scoped-profiles-migration-guide.md)
78
112
 
79
113
  **Quick Summary**:
80
114
  - Remove all `organisation_id` filters/queries for profile tables
@@ -91,7 +125,7 @@ This guide covers:
91
125
  - Super admin permissions returning false
92
126
  - Potential data leakage between organisations
93
127
 
94
- **Migration**: [Organisation Context Timing Fix](./organisation-context-timing-fix.md)
128
+ **Migration**: [Organisation Context Timing Fix](./V0.3.44_organisation-context-timing-fix.md)
95
129
 
96
130
  **Quick Fix**:
97
131
  ```bash
@@ -393,7 +427,7 @@ function MyComponent() {
393
427
 
394
428
  ## 🔐 RBAC Migration
395
429
 
396
- For detailed RBAC migration, see the [RBAC Migration Guide](./rbac-migration.md).
430
+ For detailed RBAC migration, see the [RBAC Migration Guide](./V0.4.0_rbac-migration.md).
397
431
 
398
432
  ### Quick RBAC Migration
399
433
 
@@ -487,8 +521,20 @@ import '@jmruthers/pace-core/src/styles/core.css';
487
521
 
488
522
  ## 📚 Additional Resources
489
523
 
490
- - **[RBAC Migration Guide](./rbac-migration.md)** - Detailed RBAC migration
491
- - **[Migration Guide](./MIGRATION_GUIDE.md)** - Complete migration reference
524
+ ### Migration Guides
525
+
526
+ - **[Complete Migration Guide](./MIGRATION_GUIDE.md)** - General migration patterns and best practices
527
+ - **[v0.5.190 → v0.6.1 Migration Guide](./V0.5.190_TO_V0.6.1_MIGRATION.md)** - Comprehensive migration for v0.6.1
528
+ - **[React 19 Migration Guide](./V0.6.0_REACT_19_MIGRATION.md)** - React 19 upgrade instructions (v0.6.0)
529
+ - **[RBAC Migration Guide](./V0.4.0_rbac-migration.md)** - RBAC system migration (v0.4.0+)
530
+ - **[Person-Scoped Profiles Migration](./V0.5.190_person-scoped-profiles-migration-guide.md)** - Profile migration guide (v0.5.190+)
531
+ - **[Database Changes December 2025](./database-changes-december-2025.md)** - Database schema changes
532
+ - **[Migration Guide](./MIGRATION_GUIDE.md)** - Comprehensive migration guide with quick reference table
533
+
534
+ ### Documentation
535
+
536
+ - **[Documentation Structure](./DOCUMENTATION_STRUCTURE.md)** - Guidelines for CHANGELOG and migration docs
537
+ - **[CHANGELOG.md](../../CHANGELOG.md)** - Version history and change announcements
492
538
  - **[Common Issues](../troubleshooting/common-issues.md)** - Troubleshooting migration issues
493
539
  - **[API Reference](../api-reference/)** - Complete API documentation
494
540