@jmruthers/pace-core 0.6.1 → 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 (502) hide show
  1. package/CHANGELOG.md +43 -10
  2. package/cursor-rules/00-pace-core-compliance.mdc +18 -91
  3. package/cursor-rules/01-standards-compliance.mdc +16 -47
  4. package/cursor-rules/02-project-structure.mdc +4 -4
  5. package/cursor-rules/03-solid-principles.mdc +45 -164
  6. package/cursor-rules/04-testing-standards.mdc +22 -69
  7. package/cursor-rules/05-bug-reports-and-features.mdc +2 -2
  8. package/cursor-rules/06-code-quality.mdc +42 -125
  9. package/cursor-rules/07-tech-stack-compliance.mdc +33 -128
  10. package/cursor-rules/08-markup-quality.mdc +452 -0
  11. package/cursor-rules/CHANGELOG.md +18 -0
  12. package/cursor-rules/README.md +2 -1
  13. package/dist/{AuthService-DjnJHDtC.d.ts → AuthService-BPvc3Ka0.d.ts} +54 -0
  14. package/dist/{DataTable-CH1U5Tpy.d.ts → DataTable-BMRU8a1j.d.ts} +33 -1
  15. package/dist/{DataTable-DQ7RSOHE.js → DataTable-TPTKCX4D.js} +10 -9
  16. package/dist/{PublicPageProvider-ce4xlHYA.d.ts → PublicPageProvider-DC6kCaqf.d.ts} +356 -111
  17. package/dist/{UnifiedAuthProvider-ATAP5UTR.js → UnifiedAuthProvider-CH6Z342H.js} +3 -3
  18. package/dist/{UnifiedAuthProvider-185Ih4dj.d.ts → UnifiedAuthProvider-CVcTjx-d.d.ts} +29 -0
  19. package/dist/{api-N774RPUA.js → api-MVVQZLJI.js} +2 -2
  20. package/dist/{chunk-KNC55RTG.js → chunk-24UVZUZG.js} +90 -54
  21. package/dist/chunk-24UVZUZG.js.map +1 -0
  22. package/dist/{chunk-4N5C5XZU.js → chunk-2UOI2FG5.js} +4 -4
  23. package/dist/chunk-2UOI2FG5.js.map +1 -0
  24. package/dist/{chunk-T33XF5ZC.js → chunk-3XC4CPTD.js} +4317 -3963
  25. package/dist/chunk-3XC4CPTD.js.map +1 -0
  26. package/dist/{chunk-4ZC4GX36.js → chunk-6J4GEEJR.js} +172 -45
  27. package/dist/chunk-6J4GEEJR.js.map +1 -0
  28. package/dist/{chunk-3QRJFVBR.js → chunk-6SOIHG6Z.js} +1 -1
  29. package/dist/chunk-6SOIHG6Z.js.map +1 -0
  30. package/dist/{chunk-BYFSK72L.js → chunk-EHMR7VYL.js} +4 -4
  31. package/dist/chunk-EHMR7VYL.js.map +1 -0
  32. package/dist/{chunk-I7PSE6JW.js → chunk-F2IMUDXZ.js} +2 -75
  33. package/dist/chunk-F2IMUDXZ.js.map +1 -0
  34. package/dist/{chunk-LXQLPRQ2.js → chunk-FFQEQTNW.js} +6 -8
  35. package/dist/chunk-FFQEQTNW.js.map +1 -0
  36. package/dist/chunk-FMUCXFII.js +76 -0
  37. package/dist/chunk-FMUCXFII.js.map +1 -0
  38. package/dist/{chunk-SQGMNID3.js → chunk-L4OXEN46.js} +4 -5
  39. package/dist/chunk-L4OXEN46.js.map +1 -0
  40. package/dist/{chunk-R77UEZ4E.js → chunk-M43Y4SSO.js} +1 -1
  41. package/dist/chunk-M43Y4SSO.js.map +1 -0
  42. package/dist/{chunk-3XTALGJF.js → chunk-MMZ7JXPU.js} +60 -223
  43. package/dist/chunk-MMZ7JXPU.js.map +1 -0
  44. package/dist/{chunk-GLK6VM3F.js → chunk-NECFR5MM.js} +254 -170
  45. package/dist/chunk-NECFR5MM.js.map +1 -0
  46. package/dist/{chunk-JBKQ3SAO.js → chunk-SFZUDBL5.js} +40 -4
  47. package/dist/chunk-SFZUDBL5.js.map +1 -0
  48. package/dist/{chunk-XM25TVIE.js → chunk-XWQCNGTQ.js} +724 -363
  49. package/dist/chunk-XWQCNGTQ.js.map +1 -0
  50. package/dist/components.d.ts +5 -5
  51. package/dist/components.js +14 -11
  52. package/dist/components.js.map +1 -1
  53. package/dist/{functions-D_kgHktt.d.ts → functions-DHebl8-F.d.ts} +1 -1
  54. package/dist/hooks.d.ts +55 -122
  55. package/dist/hooks.js +8 -12
  56. package/dist/hooks.js.map +1 -1
  57. package/dist/index.d.ts +60 -13
  58. package/dist/index.js +19 -19
  59. package/dist/index.js.map +1 -1
  60. package/dist/providers.d.ts +21 -3
  61. package/dist/providers.js +2 -2
  62. package/dist/rbac/index.d.ts +145 -114
  63. package/dist/rbac/index.js +8 -11
  64. package/dist/theming/runtime.d.ts +1 -13
  65. package/dist/theming/runtime.js +1 -1
  66. package/dist/{timezone-_pgH8qrY.d.ts → timezone-CHhWg6b4.d.ts} +3 -10
  67. package/dist/{types-UU913iLA.d.ts → types-BeoeWV5I.d.ts} +8 -0
  68. package/dist/{types-CEpcvwwF.d.ts → types-CkbwOr4Y.d.ts} +6 -0
  69. package/dist/types.d.ts +2 -2
  70. package/dist/{usePublicRouteParams-BJAlWfuJ.d.ts → usePublicRouteParams-1oMokgLF.d.ts} +31 -1
  71. package/dist/utils.d.ts +4 -5
  72. package/dist/utils.js +14 -14
  73. package/dist/utils.js.map +1 -1
  74. package/docs/api/README.md +7 -1
  75. package/docs/api/classes/ColumnFactory.md +8 -8
  76. package/docs/api/classes/InvalidScopeError.md +4 -4
  77. package/docs/api/classes/Logger.md +1 -1
  78. package/docs/api/classes/MissingUserContextError.md +4 -4
  79. package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
  80. package/docs/api/classes/PermissionDeniedError.md +4 -4
  81. package/docs/api/classes/RBACAuditManager.md +1 -1
  82. package/docs/api/classes/RBACCache.md +1 -1
  83. package/docs/api/classes/RBACEngine.md +1 -1
  84. package/docs/api/classes/RBACError.md +4 -4
  85. package/docs/api/classes/RBACNotInitializedError.md +4 -4
  86. package/docs/api/classes/SecureSupabaseClient.md +18 -15
  87. package/docs/api/classes/StorageUtils.md +1 -1
  88. package/docs/api/enums/FileCategory.md +1 -1
  89. package/docs/api/enums/LogLevel.md +1 -1
  90. package/docs/api/enums/RBACErrorCode.md +1 -1
  91. package/docs/api/enums/RPCFunction.md +1 -1
  92. package/docs/api/interfaces/AddressFieldProps.md +1 -1
  93. package/docs/api/interfaces/AddressFieldRef.md +1 -1
  94. package/docs/api/interfaces/AggregateConfig.md +4 -4
  95. package/docs/api/interfaces/AutocompleteOptions.md +1 -1
  96. package/docs/api/interfaces/AvatarProps.md +1 -1
  97. package/docs/api/interfaces/BadgeProps.md +9 -2
  98. package/docs/api/interfaces/ButtonProps.md +7 -4
  99. package/docs/api/interfaces/CalendarProps.md +8 -5
  100. package/docs/api/interfaces/CardProps.md +8 -5
  101. package/docs/api/interfaces/ColorPalette.md +1 -1
  102. package/docs/api/interfaces/ColorShade.md +1 -1
  103. package/docs/api/interfaces/ComplianceResult.md +1 -1
  104. package/docs/api/interfaces/DataAccessRecord.md +9 -9
  105. package/docs/api/interfaces/DataRecord.md +1 -1
  106. package/docs/api/interfaces/DataTableAction.md +24 -21
  107. package/docs/api/interfaces/DataTableColumn.md +31 -31
  108. package/docs/api/interfaces/DataTableProps.md +1 -1
  109. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  110. package/docs/api/interfaces/DatabaseComplianceResult.md +1 -1
  111. package/docs/api/interfaces/DatabaseIssue.md +1 -1
  112. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  113. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  114. package/docs/api/interfaces/ErrorBoundaryProps.md +147 -0
  115. package/docs/api/interfaces/ErrorBoundaryProviderProps.md +36 -0
  116. package/docs/api/interfaces/ErrorBoundaryState.md +75 -0
  117. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  118. package/docs/api/interfaces/ExportColumn.md +1 -1
  119. package/docs/api/interfaces/ExportOptions.md +8 -8
  120. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  121. package/docs/api/interfaces/FileMetadata.md +1 -1
  122. package/docs/api/interfaces/FileReference.md +1 -1
  123. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  124. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  125. package/docs/api/interfaces/FileUploadProps.md +26 -23
  126. package/docs/api/interfaces/FooterProps.md +10 -8
  127. package/docs/api/interfaces/FormFieldProps.md +10 -10
  128. package/docs/api/interfaces/FormProps.md +1 -1
  129. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  130. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  131. package/docs/api/interfaces/InputProps.md +7 -4
  132. package/docs/api/interfaces/LabelProps.md +1 -1
  133. package/docs/api/interfaces/LoggerConfig.md +1 -1
  134. package/docs/api/interfaces/LoginFormProps.md +14 -11
  135. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  136. package/docs/api/interfaces/NavigationContextType.md +1 -1
  137. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  138. package/docs/api/interfaces/NavigationItem.md +11 -11
  139. package/docs/api/interfaces/NavigationMenuProps.md +15 -15
  140. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  141. package/docs/api/interfaces/Organisation.md +1 -1
  142. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  143. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  144. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  145. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  146. package/docs/api/interfaces/PaceAppLayoutProps.md +30 -27
  147. package/docs/api/interfaces/PaceLoginPageProps.md +6 -4
  148. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  149. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  150. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  151. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  152. package/docs/api/interfaces/PaletteData.md +1 -1
  153. package/docs/api/interfaces/ParsedAddress.md +1 -1
  154. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  155. package/docs/api/interfaces/ProgressProps.md +1 -1
  156. package/docs/api/interfaces/ProtectedRouteProps.md +7 -26
  157. package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
  158. package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
  159. package/docs/api/interfaces/PublicPageLayoutProps.md +7 -20
  160. package/docs/api/interfaces/QuickFix.md +1 -1
  161. package/docs/api/interfaces/RBACAccessValidateParams.md +1 -1
  162. package/docs/api/interfaces/RBACAccessValidateResult.md +1 -1
  163. package/docs/api/interfaces/RBACAuditLogParams.md +1 -1
  164. package/docs/api/interfaces/RBACAuditLogResult.md +1 -1
  165. package/docs/api/interfaces/RBACConfig.md +1 -1
  166. package/docs/api/interfaces/RBACContext.md +1 -1
  167. package/docs/api/interfaces/RBACLogger.md +1 -1
  168. package/docs/api/interfaces/RBACPageAccessCheckParams.md +1 -1
  169. package/docs/api/interfaces/RBACPerformanceMetrics.md +1 -1
  170. package/docs/api/interfaces/RBACPermissionCheckParams.md +1 -1
  171. package/docs/api/interfaces/RBACPermissionCheckResult.md +1 -1
  172. package/docs/api/interfaces/RBACPermissionsGetParams.md +1 -1
  173. package/docs/api/interfaces/RBACPermissionsGetResult.md +1 -1
  174. package/docs/api/interfaces/RBACResult.md +1 -1
  175. package/docs/api/interfaces/RBACRoleGrantParams.md +1 -1
  176. package/docs/api/interfaces/RBACRoleGrantResult.md +1 -1
  177. package/docs/api/interfaces/RBACRoleRevokeParams.md +1 -1
  178. package/docs/api/interfaces/RBACRoleRevokeResult.md +1 -1
  179. package/docs/api/interfaces/RBACRoleValidateParams.md +1 -1
  180. package/docs/api/interfaces/RBACRoleValidateResult.md +1 -1
  181. package/docs/api/interfaces/RBACRolesListParams.md +1 -1
  182. package/docs/api/interfaces/RBACRolesListResult.md +1 -1
  183. package/docs/api/interfaces/RBACSessionTrackParams.md +1 -1
  184. package/docs/api/interfaces/RBACSessionTrackResult.md +1 -1
  185. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  186. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  187. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  188. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  189. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  190. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  191. package/docs/api/interfaces/RouteConfig.md +1 -1
  192. package/docs/api/interfaces/RuntimeComplianceResult.md +1 -1
  193. package/docs/api/interfaces/SecureDataContextType.md +9 -9
  194. package/docs/api/interfaces/SecureDataProviderProps.md +8 -8
  195. package/docs/api/interfaces/SessionRestorationLoaderProps.md +3 -3
  196. package/docs/api/interfaces/SetupIssue.md +1 -1
  197. package/docs/api/interfaces/StorageConfig.md +1 -1
  198. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  199. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  200. package/docs/api/interfaces/StorageListOptions.md +1 -1
  201. package/docs/api/interfaces/StorageListResult.md +1 -1
  202. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  203. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  204. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  205. package/docs/api/interfaces/StyleImport.md +1 -1
  206. package/docs/api/interfaces/SwitchProps.md +1 -1
  207. package/docs/api/interfaces/TabsContentProps.md +1 -1
  208. package/docs/api/interfaces/TabsListProps.md +1 -1
  209. package/docs/api/interfaces/TabsProps.md +1 -1
  210. package/docs/api/interfaces/TabsTriggerProps.md +3 -3
  211. package/docs/api/interfaces/TextareaProps.md +1 -1
  212. package/docs/api/interfaces/ToastActionElement.md +4 -1
  213. package/docs/api/interfaces/ToastProps.md +1 -1
  214. package/docs/api/interfaces/UnifiedAuthContextType.md +58 -55
  215. package/docs/api/interfaces/UnifiedAuthProviderProps.md +15 -13
  216. package/docs/api/interfaces/UseFormDialogOptions.md +1 -1
  217. package/docs/api/interfaces/UseFormDialogReturn.md +1 -1
  218. package/docs/api/interfaces/UseInactivityTrackerOptions.md +11 -9
  219. package/docs/api/interfaces/UseInactivityTrackerReturn.md +8 -8
  220. package/docs/api/interfaces/UsePublicEventLogoOptions.md +6 -6
  221. package/docs/api/interfaces/UsePublicEventLogoReturn.md +9 -6
  222. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  223. package/docs/api/interfaces/UsePublicEventReturn.md +8 -5
  224. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +4 -4
  225. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +12 -9
  226. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +10 -7
  227. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  228. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  229. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  230. package/docs/api/interfaces/UserEventAccess.md +14 -11
  231. package/docs/api/interfaces/UserMenuProps.md +8 -6
  232. package/docs/api/interfaces/UserProfile.md +1 -1
  233. package/docs/api/modules.md +575 -634
  234. package/docs/architecture/database-schema-requirements.md +161 -0
  235. package/docs/core-concepts/rbac-system.md +3 -3
  236. package/docs/documentation-index.md +2 -4
  237. package/docs/getting-started/cursor-rules.md +2 -1
  238. package/docs/migration/DOCUMENTATION_STRUCTURE.md +441 -0
  239. package/docs/migration/MIGRATION_GUIDE.md +2 -24
  240. package/docs/migration/README.md +52 -6
  241. package/docs/migration/V0.5.190_TO_V0.6.1_MIGRATION.md +1153 -0
  242. package/docs/migration/database-changes-december-2025.md +3 -3
  243. package/docs/rbac/event-based-apps.md +1 -1
  244. package/docs/rbac/getting-started.md +1 -1
  245. package/docs/rbac/quick-start.md +1 -1
  246. package/docs/standards/README.md +1 -0
  247. package/package.json +2 -1
  248. package/scripts/audit/core/checks/accessibility.cjs +197 -0
  249. package/scripts/audit/core/checks/api-usage.cjs +191 -0
  250. package/scripts/audit/core/checks/bundle.cjs +142 -0
  251. package/scripts/{check-pace-core-compliance.cjs → audit/core/checks/compliance.cjs} +714 -687
  252. package/scripts/audit/core/checks/config.cjs +54 -0
  253. package/scripts/audit/core/checks/coverage.cjs +84 -0
  254. package/scripts/audit/core/checks/dependencies.cjs +454 -0
  255. package/scripts/audit/core/checks/documentation.cjs +203 -0
  256. package/scripts/audit/core/checks/environment.cjs +128 -0
  257. package/scripts/audit/core/checks/error-handling.cjs +299 -0
  258. package/scripts/audit/core/checks/forms.cjs +172 -0
  259. package/scripts/audit/core/checks/heuristics.cjs +68 -0
  260. package/scripts/audit/core/checks/hooks.cjs +334 -0
  261. package/scripts/audit/core/checks/imports.cjs +244 -0
  262. package/scripts/audit/core/checks/performance.cjs +325 -0
  263. package/scripts/audit/core/checks/routes.cjs +117 -0
  264. package/scripts/audit/core/checks/state.cjs +130 -0
  265. package/scripts/audit/core/checks/structure.cjs +65 -0
  266. package/scripts/audit/core/checks/style.cjs +584 -0
  267. package/scripts/audit/core/checks/testing.cjs +122 -0
  268. package/scripts/audit/core/checks/typescript.cjs +61 -0
  269. package/scripts/audit/core/scanner.cjs +199 -0
  270. package/scripts/audit/core/utils.cjs +137 -0
  271. package/scripts/audit/index.cjs +223 -0
  272. package/scripts/audit/reporters/console.cjs +151 -0
  273. package/scripts/audit/reporters/json.cjs +54 -0
  274. package/scripts/audit/reporters/markdown.cjs +124 -0
  275. package/scripts/audit-consuming-app.cjs +61 -936
  276. package/scripts/build-docs/build-decision.js +240 -0
  277. package/scripts/build-docs/cache-utils.js +105 -0
  278. package/scripts/build-docs/content-normalization.js +150 -0
  279. package/scripts/build-docs/file-utils.js +105 -0
  280. package/scripts/build-docs/git-utils.js +86 -0
  281. package/scripts/build-docs/hash-utils.js +116 -0
  282. package/scripts/build-docs/typedoc-runner.js +220 -0
  283. package/scripts/build-docs-incremental.js +77 -913
  284. package/scripts/utils/command-runner.js +16 -11
  285. package/scripts/validate-formats.js +61 -56
  286. package/scripts/validate-master.js +74 -69
  287. package/scripts/validate-pre-publish.js +70 -65
  288. package/src/__tests__/hooks/usePermissions.test.ts +2 -2
  289. package/src/components/Alert/Alert.test.tsx +12 -18
  290. package/src/components/Alert/Alert.tsx +5 -7
  291. package/src/components/Avatar/Avatar.test.tsx +4 -4
  292. package/src/components/Badge/Badge.tsx +14 -0
  293. package/src/components/Button/Button.tsx +22 -0
  294. package/src/components/Calendar/Calendar.tsx +8 -2
  295. package/src/components/Card/Card.tsx +4 -0
  296. package/src/components/Checkbox/Checkbox.test.tsx +12 -12
  297. package/src/components/Checkbox/Checkbox.tsx +2 -2
  298. package/src/components/DataTable/DataTable.tsx +38 -4
  299. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +5 -6
  300. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +18 -4
  301. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +2 -3
  302. package/src/components/DataTable/components/AccessDeniedPage.tsx +16 -25
  303. package/src/components/DataTable/components/ActionButtons.tsx +10 -7
  304. package/src/components/DataTable/components/BulkOperationsDropdown.tsx +1 -1
  305. package/src/components/DataTable/components/ColumnFilter.tsx +10 -0
  306. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +12 -0
  307. package/src/components/DataTable/components/DataTableBody.tsx +8 -0
  308. package/src/components/DataTable/components/DataTableCore.tsx +196 -554
  309. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +11 -0
  310. package/src/components/DataTable/components/DataTableLayout.tsx +559 -0
  311. package/src/components/DataTable/components/DataTableModals.tsx +8 -0
  312. package/src/components/DataTable/components/DataTableToolbar.tsx +8 -0
  313. package/src/components/DataTable/components/DraggableColumnHeader.tsx +12 -0
  314. package/src/components/DataTable/components/EditFields.tsx +307 -0
  315. package/src/components/DataTable/components/EditableRow.tsx +8 -0
  316. package/src/components/DataTable/components/EmptyState.tsx +10 -0
  317. package/src/components/DataTable/components/FilterRow.tsx +12 -0
  318. package/src/components/DataTable/components/GroupHeader.tsx +12 -0
  319. package/src/components/DataTable/components/GroupingDropdown.tsx +12 -0
  320. package/src/components/DataTable/components/ImportModal.tsx +7 -0
  321. package/src/components/DataTable/components/LoadingState.tsx +6 -0
  322. package/src/components/DataTable/components/PaginationControls.tsx +16 -1
  323. package/src/components/DataTable/components/RowComponent.tsx +391 -0
  324. package/src/components/DataTable/components/UnifiedTableBody.tsx +61 -849
  325. package/src/components/DataTable/components/VirtualizedDataTable.tsx +16 -4
  326. package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +4 -2
  327. package/src/components/DataTable/components/cellValueUtils.ts +40 -0
  328. package/src/components/DataTable/components/hooks/useImportModalFocus.ts +53 -0
  329. package/src/components/DataTable/components/hooks/usePermissionTracking.ts +126 -0
  330. package/src/components/DataTable/context/DataTableContext.tsx +50 -0
  331. package/src/components/DataTable/core/ColumnFactory.ts +31 -0
  332. package/src/components/DataTable/core/DataTableContext.tsx +32 -1
  333. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +10 -0
  334. package/src/components/DataTable/hooks/useColumnReordering.ts +12 -0
  335. package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +10 -0
  336. package/src/components/DataTable/hooks/useDataTableDataPipeline.ts +16 -0
  337. package/src/components/DataTable/hooks/useDataTablePermissions.ts +124 -32
  338. package/src/components/DataTable/hooks/useDataTableState.ts +35 -1
  339. package/src/components/DataTable/hooks/useEffectiveColumnOrder.ts +12 -0
  340. package/src/components/DataTable/hooks/useServerSideDataEffect.ts +11 -0
  341. package/src/components/DataTable/hooks/useTableColumns.ts +8 -0
  342. package/src/components/DataTable/hooks/useTableHandlers.ts +14 -0
  343. package/src/components/DataTable/styles.ts +6 -6
  344. package/src/components/DataTable/types.ts +6 -10
  345. package/src/components/DataTable/utils/a11yUtils.ts +7 -0
  346. package/src/components/DataTable/utils/debugTools.ts +18 -113
  347. package/src/components/DataTable/utils/errorHandling.ts +12 -0
  348. package/src/components/DataTable/utils/exportUtils.ts +9 -0
  349. package/src/components/DataTable/utils/flexibleImport.ts +12 -48
  350. package/src/components/DataTable/utils/paginationUtils.ts +8 -0
  351. package/src/components/DataTable/utils/performanceUtils.ts +5 -1
  352. package/src/components/Dialog/Dialog.tsx +2 -2
  353. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +180 -1
  354. package/src/components/ErrorBoundary/ErrorBoundary.tsx +45 -5
  355. package/src/components/ErrorBoundary/ErrorBoundaryContext.tsx +129 -0
  356. package/src/components/ErrorBoundary/index.ts +27 -2
  357. package/src/components/EventSelector/EventSelector.tsx +3 -0
  358. package/src/components/FileDisplay/FileDisplay.tsx +32 -18
  359. package/src/components/FileUpload/FileUpload.tsx +22 -2
  360. package/src/components/Footer/Footer.test.tsx +16 -16
  361. package/src/components/Footer/Footer.tsx +14 -11
  362. package/src/components/Form/Form.tsx +1 -0
  363. package/src/components/Header/Header.tsx +21 -10
  364. package/src/components/Input/Input.test.tsx +2 -2
  365. package/src/components/Input/Input.tsx +8 -4
  366. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +4 -4
  367. package/src/components/LoginForm/LoginForm.tsx +4 -0
  368. package/src/components/NavigationMenu/NavigationMenu.tsx +14 -513
  369. package/src/components/NavigationMenu/types.ts +56 -0
  370. package/src/components/NavigationMenu/useNavigationFiltering.ts +390 -0
  371. package/src/components/OrganisationSelector/OrganisationSelector.tsx +3 -0
  372. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +4 -2
  373. package/src/components/PaceAppLayout/PaceAppLayout.tsx +32 -11
  374. package/src/components/PaceAppLayout/test-setup.tsx +1 -2
  375. package/src/components/PaceLoginPage/PaceLoginPage.tsx +3 -0
  376. package/src/components/PasswordChange/PasswordChangeForm.tsx +9 -0
  377. package/src/components/ProtectedRoute/ProtectedRoute.tsx +3 -9
  378. package/src/components/PublicLayout/PublicPageLayout.tsx +2 -5
  379. package/src/components/PublicLayout/PublicPageProvider.tsx +4 -0
  380. package/src/components/Select/Select.tsx +80 -434
  381. package/src/components/Select/context.ts +23 -0
  382. package/src/components/Select/hooks/useSelectEvents.ts +87 -0
  383. package/src/components/Select/hooks/useSelectSearch.ts +91 -0
  384. package/src/components/Select/hooks/useSelectState.ts +104 -0
  385. package/src/components/Select/index.ts +9 -1
  386. package/src/components/Select/types.ts +123 -0
  387. package/src/components/Select/utils/text.ts +26 -0
  388. package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +4 -5
  389. package/src/components/Switch/Switch.tsx +4 -4
  390. package/src/components/Tabs/Tabs.tsx +1 -1
  391. package/src/components/Toast/Toast.tsx +4 -0
  392. package/src/components/Tooltip/Tooltip.tsx +2 -2
  393. package/src/components/UserMenu/UserMenu.test.tsx +24 -11
  394. package/src/components/UserMenu/UserMenu.tsx +21 -18
  395. package/src/components/index.ts +2 -2
  396. package/src/hooks/__tests__/index.unit.test.ts +2 -5
  397. package/src/hooks/index.ts +1 -2
  398. package/src/hooks/public/usePublicEvent.ts +4 -0
  399. package/src/hooks/public/usePublicEventLogo.ts +4 -0
  400. package/src/hooks/public/usePublicFileDisplay.ts +4 -0
  401. package/src/hooks/public/usePublicRouteParams.ts +4 -0
  402. package/src/hooks/services/useAuth.ts +32 -0
  403. package/src/hooks/services/useCurrentEvent.ts +6 -0
  404. package/src/hooks/services/useCurrentOrganisation.ts +6 -0
  405. package/src/hooks/useDebounce.ts +9 -0
  406. package/src/hooks/useEventTheme.ts +6 -0
  407. package/src/hooks/useFileDisplay.ts +4 -0
  408. package/src/hooks/useFileReference.ts +25 -7
  409. package/src/hooks/useFileUrl.ts +11 -1
  410. package/src/hooks/useFocusManagement.ts +14 -0
  411. package/src/hooks/useFocusTrap.ts +3 -0
  412. package/src/hooks/useInactivityTracker.ts +3 -0
  413. package/src/hooks/useKeyboardShortcuts.ts +4 -0
  414. package/src/hooks/useOrganisationPermissions.ts +4 -0
  415. package/src/hooks/useOrganisationSecurity.ts +4 -0
  416. package/src/hooks/usePerformanceMonitor.ts +4 -0
  417. package/src/hooks/usePermissionCache.ts +7 -0
  418. package/src/hooks/useQueryCache.ts +12 -1
  419. package/src/hooks/useSessionRestoration.ts +4 -0
  420. package/src/hooks/useStorage.ts +4 -0
  421. package/src/hooks/useToast.ts +1 -1
  422. package/src/index.ts +2 -1
  423. package/src/providers/__tests__/OrganisationProvider.test.tsx +92 -70
  424. package/src/providers/services/AuthServiceProvider.tsx +18 -0
  425. package/src/providers/services/EventServiceProvider.tsx +18 -0
  426. package/src/providers/services/InactivityServiceProvider.tsx +18 -0
  427. package/src/providers/services/OrganisationServiceProvider.tsx +18 -0
  428. package/src/providers/services/UnifiedAuthProvider.tsx +36 -0
  429. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +29 -13
  430. package/src/rbac/README.md +1 -1
  431. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +2 -2
  432. package/src/rbac/__tests__/scenarios.user-role.test.tsx +4 -5
  433. package/src/rbac/adapters.tsx +14 -5
  434. package/src/rbac/api.ts +100 -67
  435. package/src/rbac/components/NavigationProvider.tsx +4 -1
  436. package/src/rbac/components/PagePermissionGuard.tsx +157 -17
  437. package/src/rbac/components/RoleBasedRouter.tsx +5 -1
  438. package/src/rbac/components/SecureDataProvider.test.tsx +84 -49
  439. package/src/rbac/components/SecureDataProvider.tsx +20 -5
  440. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +24 -14
  441. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +7 -0
  442. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +14 -6
  443. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +15 -4
  444. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +148 -24
  445. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +81 -15
  446. package/src/rbac/engine.ts +38 -14
  447. package/src/rbac/hooks/permissions/index.ts +7 -0
  448. package/src/rbac/hooks/permissions/useAccessLevel.ts +105 -0
  449. package/src/rbac/hooks/permissions/useCachedPermissions.ts +79 -0
  450. package/src/rbac/hooks/permissions/useCan.ts +347 -0
  451. package/src/rbac/hooks/permissions/useHasAllPermissions.ts +90 -0
  452. package/src/rbac/hooks/permissions/useHasAnyPermission.ts +90 -0
  453. package/src/rbac/hooks/permissions/useMultiplePermissions.ts +93 -0
  454. package/src/rbac/hooks/permissions/usePermissions.ts +253 -0
  455. package/src/rbac/hooks/useCan.test.ts +71 -64
  456. package/src/rbac/hooks/usePermissions.ts +14 -995
  457. package/src/rbac/hooks/useResourcePermissions.test.ts +54 -18
  458. package/src/rbac/hooks/useResourcePermissions.ts +14 -4
  459. package/src/rbac/hooks/useSecureSupabase.ts +33 -13
  460. package/src/rbac/permissions.ts +0 -30
  461. package/src/rbac/secureClient.ts +200 -61
  462. package/src/rbac/types.ts +8 -0
  463. package/src/theming/__tests__/parseEventColours.test.ts +6 -9
  464. package/src/theming/parseEventColours.ts +5 -19
  465. package/src/types/vitest-globals.d.ts +51 -26
  466. package/src/utils/__mocks__/supabaseMock.ts +1 -3
  467. package/src/utils/__tests__/formatting.unit.test.ts +4 -4
  468. package/src/utils/__tests__/index.unit.test.ts +2 -2
  469. package/src/utils/audit/audit.ts +0 -3
  470. package/src/utils/core/cn.ts +1 -1
  471. package/src/utils/file-reference/index.ts +53 -1
  472. package/src/utils/formatting/formatting.ts +8 -18
  473. package/src/utils/index.ts +0 -1
  474. package/dist/chunk-3QRJFVBR.js.map +0 -1
  475. package/dist/chunk-3XTALGJF.js.map +0 -1
  476. package/dist/chunk-4N5C5XZU.js.map +0 -1
  477. package/dist/chunk-4ZC4GX36.js.map +0 -1
  478. package/dist/chunk-BYFSK72L.js.map +0 -1
  479. package/dist/chunk-EXUD6RNJ.js +0 -451
  480. package/dist/chunk-EXUD6RNJ.js.map +0 -1
  481. package/dist/chunk-GLK6VM3F.js.map +0 -1
  482. package/dist/chunk-I7PSE6JW.js.map +0 -1
  483. package/dist/chunk-JBKQ3SAO.js.map +0 -1
  484. package/dist/chunk-KNC55RTG.js.map +0 -1
  485. package/dist/chunk-LXQLPRQ2.js.map +0 -1
  486. package/dist/chunk-R77UEZ4E.js.map +0 -1
  487. package/dist/chunk-SQGMNID3.js.map +0 -1
  488. package/dist/chunk-T33XF5ZC.js.map +0 -1
  489. package/dist/chunk-XM25TVIE.js.map +0 -1
  490. package/docs/api/classes/ErrorBoundary.md +0 -144
  491. package/docs/migration/quick-migration-guide.md +0 -356
  492. package/docs/migration/service-architecture.md +0 -281
  493. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +0 -680
  494. package/src/hooks/useSecureDataAccess.test.ts +0 -559
  495. package/src/hooks/useSecureDataAccess.ts +0 -681
  496. /package/dist/{DataTable-DQ7RSOHE.js.map → DataTable-TPTKCX4D.js.map} +0 -0
  497. /package/dist/{UnifiedAuthProvider-ATAP5UTR.js.map → UnifiedAuthProvider-CH6Z342H.js.map} +0 -0
  498. /package/dist/{api-N774RPUA.js.map → api-MVVQZLJI.js.map} +0 -0
  499. /package/docs/migration/{organisation-context-timing-fix.md → V0.3.44_organisation-context-timing-fix.md} +0 -0
  500. /package/docs/migration/{rbac-migration.md → V0.4.0_rbac-migration.md} +0 -0
  501. /package/docs/migration/{person-scoped-profiles-migration-guide.md → V0.5.190_person-scoped-profiles-migration-guide.md} +0 -0
  502. /package/docs/migration/{REACT_19_MIGRATION.md → V0.6.0_REACT_19_MIGRATION.md} +0 -0
@@ -1,7 +1,7 @@
1
1
  import * as React$1 from 'react';
2
- import React__default, { Component, ReactNode } from 'react';
2
+ import React__default, { ReactNode, Component } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { P as ParsedAddress, A as AutocompleteOptions } from './types-CEpcvwwF.js';
4
+ import { P as ParsedAddress, A as AutocompleteOptions } from './types-CkbwOr4Y.js';
5
5
  import * as LabelPrimitive from '@radix-ui/react-label';
6
6
  import { F as FileCategory, e as FileUploadResult, U as UploadProgress, c as FileUploadOptions, a as FileReference } from './file-reference-BavO2eQj.js';
7
7
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
@@ -14,9 +14,19 @@ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
14
14
  import { FieldValues, DefaultValues, SubmitHandler, SubmitErrorHandler, UseFormReturn, FieldPath, ControllerRenderProps, ControllerFieldState, UseFormStateReturn } from 'react-hook-form';
15
15
  import { z } from 'zod';
16
16
  import { User, SupabaseClient, createClient } from '@supabase/supabase-js';
17
- import { P as Permission, A as AccessLevel } from './types-UU913iLA.js';
17
+ import { P as Permission, A as AccessLevel } from './types-BeoeWV5I.js';
18
18
  import { E as Event, O as Organisation } from './event-CW5YB_2p.js';
19
19
 
20
+ /**
21
+ * Button component props
22
+ * Extends standard HTML button attributes with button-specific styling and behavior options.
23
+ *
24
+ * @interface ButtonProps
25
+ */
26
+ /**
27
+ * Props for the Button component.
28
+ * Extends standard button HTML attributes.
29
+ */
20
30
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
21
31
  /** Visual variant of the button */
22
32
  variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
@@ -109,6 +119,10 @@ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.Re
109
119
  * - Screen reader friendly with semantic landmarks
110
120
  */
111
121
 
122
+ /**
123
+ * Props for the Card component.
124
+ * Extends standard HTML attributes for semantic HTML elements.
125
+ */
112
126
  interface CardProps extends React$1.HTMLAttributes<HTMLElement> {
113
127
  /** Visual variant of the card */
114
128
  variant?: 'default' | 'outline' | 'ghost';
@@ -128,6 +142,10 @@ declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttribut
128
142
  declare const CardActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLElement> & React$1.RefAttributes<HTMLElement>>;
129
143
  type CardActionsProps = React$1.HTMLAttributes<HTMLElement>;
130
144
 
145
+ /**
146
+ * Props for the Input component.
147
+ * Extends standard input HTML attributes.
148
+ */
131
149
  interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, 'size'> {
132
150
  /**
133
151
  * Input variant style
@@ -464,22 +482,20 @@ declare namespace Textarea {
464
482
  *
465
483
  * @example
466
484
  * ```tsx
467
- * // Basic alert
485
+ * // Basic alert (renders as <aside> with <h5> title and <p> description)
468
486
  * <Alert>
469
487
  * <AlertTitle>Success</AlertTitle>
470
488
  * <AlertDescription>Your changes have been saved.</AlertDescription>
471
489
  * </Alert>
472
490
  *
473
- * // Destructive alert with icon
491
+ * // Destructive alert with icon (renders as <aside> with <h5> title and <p> description)
474
492
  * <Alert variant="destructive">
475
493
  * <ErrorIcon />
476
- * <div>
477
- * <AlertTitle>Error</AlertTitle>
478
- * <AlertDescription>Something went wrong.</AlertDescription>
479
- * </div>
494
+ * <AlertTitle>Error</AlertTitle>
495
+ * <AlertDescription>Something went wrong.</AlertDescription>
480
496
  * </Alert>
481
497
  *
482
- * // Inline alert (renders as fragment with strong/span)
498
+ * // Inline alert (renders as React.Fragment with <strong> title and <span> description)
483
499
  * <Alert variant="inline">
484
500
  * <AlertTitle>Note:</AlertTitle>
485
501
  * <AlertDescription>This is an inline message.</AlertDescription>
@@ -570,7 +586,21 @@ interface AvatarProps extends React$1.HTMLAttributes<HTMLDivElement> {
570
586
  */
571
587
  declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.RefAttributes<HTMLDivElement>>;
572
588
 
589
+ /**
590
+ * Badge variant type
591
+ * Defines the visual style, color palette, and shade intensity of the badge.
592
+ * Format: {style}-{color}-{shade}
593
+ * - style: 'solid' | 'outline' | 'soft'
594
+ * - color: 'main' | 'sec' | 'acc'
595
+ * - shade: 'muted' | 'normal' | 'strong'
596
+ */
573
597
  type BadgeVariant = 'solid-main-muted' | 'solid-main-normal' | 'solid-main-strong' | 'solid-sec-muted' | 'solid-sec-normal' | 'solid-sec-strong' | 'solid-acc-muted' | 'solid-acc-normal' | 'solid-acc-strong' | 'outline-main-muted' | 'outline-main-normal' | 'outline-main-strong' | 'outline-sec-muted' | 'outline-sec-normal' | 'outline-sec-strong' | 'outline-acc-muted' | 'outline-acc-normal' | 'outline-acc-strong' | 'soft-main-muted' | 'soft-main-normal' | 'soft-main-strong' | 'soft-sec-muted' | 'soft-sec-normal' | 'soft-sec-strong' | 'soft-acc-muted' | 'soft-acc-normal' | 'soft-acc-strong';
598
+ /**
599
+ * Badge component props
600
+ * Extends standard HTML span attributes with badge-specific styling options.
601
+ *
602
+ * @interface BadgeProps
603
+ */
574
604
  interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
575
605
  /** Visual variant of the badge (style-color-shade) */
576
606
  variant?: BadgeVariant;
@@ -625,10 +655,10 @@ declare namespace Badge {
625
655
  * <Checkbox />
626
656
  *
627
657
  * // With label
628
- * <div className="flex items-center space-x-2">
658
+ * <>
629
659
  * <Checkbox id="terms" />
630
660
  * <label htmlFor="terms">Accept terms and conditions</label>
631
- * </div>
661
+ * </>
632
662
  *
633
663
  * // Disabled state
634
664
  * <Checkbox disabled />
@@ -677,7 +707,7 @@ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive
677
707
  * const [checked, setChecked] = React.useState(false);
678
708
  *
679
709
  * return (
680
- * <div className="flex items-center gap-2">
710
+ * <>
681
711
  * <Switch
682
712
  * checked={checked}
683
713
  * onCheckedChange={setChecked}
@@ -686,7 +716,7 @@ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive
686
716
  * <label htmlFor="notifications">
687
717
  * Enable notifications
688
718
  * </label>
689
- * </div>
719
+ * </>
690
720
  * );
691
721
  * }
692
722
  * ```
@@ -697,12 +727,12 @@ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive
697
727
  *
698
728
  * function FormExample() {
699
729
  * return (
700
- * <div className="flex items-center gap-2">
730
+ * <>
701
731
  * <Switch id="terms" />
702
732
  * <Label htmlFor="terms">
703
733
  * I agree to the terms and conditions
704
734
  * </Label>
705
- * </div>
735
+ * </>
706
736
  * );
707
737
  * }
708
738
  * ```
@@ -1038,19 +1068,13 @@ declare const DialogTitle: React$1.ForwardRefExoticComponent<DialogTitleProps &
1038
1068
  declare const DialogDescription: React$1.ForwardRefExoticComponent<DialogDescriptionProps & React$1.RefAttributes<HTMLHeadingElement>>;
1039
1069
 
1040
1070
  /**
1041
- * @file Select Component - Refactored SOLID Implementation
1042
- * @package @jmruthers/pace-core
1043
- * @module Components/Select
1044
- * @since 0.4.0
1045
- *
1046
- * Refactored Select component following SOLID principles:
1047
- * - Single Responsibility: Each component has one clear purpose
1048
- * - Open/Closed: Easy to extend without modification
1049
- * - Liskov Substitution: Components can be substituted
1050
- * - Interface Segregation: Small, focused interfaces
1051
- * - Dependency Inversion: Depends on abstractions, not concretions
1071
+ * Direction for Select dropdown opening.
1072
+ * Controls whether the dropdown opens upward or downward.
1073
+ */
1074
+ type SelectDirection = "up" | "down";
1075
+ /**
1076
+ * Props for the useSelectState hook.
1052
1077
  */
1053
-
1054
1078
  interface UseSelectStateProps {
1055
1079
  value?: string;
1056
1080
  defaultValue?: string;
@@ -1061,19 +1085,31 @@ interface UseSelectStateProps {
1061
1085
  onValueChange?: (value: string) => void;
1062
1086
  onOpenChange?: (open: boolean) => void;
1063
1087
  }
1064
- interface SelectProps extends Omit<React$1.HTMLAttributes<HTMLFormElement>, 'onChange' | 'onKeyDown' | 'onFocus' | 'onBlur'> {
1088
+ /**
1089
+ * Props for the Select root component.
1090
+ */
1091
+ interface SelectProps extends Omit<React$1.HTMLAttributes<HTMLFormElement>, "onChange" | "onKeyDown" | "onFocus" | "onBlur"> {
1065
1092
  children: React$1.ReactNode;
1066
1093
  className?: string;
1067
- direction?: 'up' | 'down';
1094
+ direction?: SelectDirection;
1068
1095
  }
1069
- interface SelectTriggerProps extends Omit<ButtonProps, 'onClick' | 'onKeyDown'> {
1096
+ /**
1097
+ * Props for the SelectTrigger component.
1098
+ */
1099
+ interface SelectTriggerProps extends Omit<ButtonProps, "onClick" | "onKeyDown"> {
1070
1100
  children: React$1.ReactNode;
1071
1101
  asChild?: boolean;
1072
1102
  }
1103
+ /**
1104
+ * Props for the SelectValue component.
1105
+ */
1073
1106
  interface SelectValueProps {
1074
1107
  placeholder?: string;
1075
1108
  children?: React$1.ReactNode;
1076
1109
  }
1110
+ /**
1111
+ * Props for the SelectContent component.
1112
+ */
1077
1113
  interface SelectContentProps {
1078
1114
  children: React$1.ReactNode;
1079
1115
  className?: string;
@@ -1082,6 +1118,9 @@ interface SelectContentProps {
1082
1118
  maxHeight?: string;
1083
1119
  style?: React$1.CSSProperties;
1084
1120
  }
1121
+ /**
1122
+ * Props for the SelectItem component.
1123
+ */
1085
1124
  interface SelectItemProps {
1086
1125
  value: string;
1087
1126
  children: React$1.ReactNode;
@@ -1089,19 +1128,98 @@ interface SelectItemProps {
1089
1128
  className?: string;
1090
1129
  onClick?: (e: React$1.MouseEvent) => void;
1091
1130
  }
1131
+
1132
+ /**
1133
+ * @file Select Component - Refactored SOLID Implementation
1134
+ * @package @jmruthers/pace-core
1135
+ * @module Components/Select
1136
+ * @since 0.4.0
1137
+ *
1138
+ * Refactored Select component following SOLID principles:
1139
+ * - Single Responsibility: Each component has one clear purpose
1140
+ * - Open/Closed: Easy to extend without modification
1141
+ * - Liskov Substitution: Components can be substituted
1142
+ * - Interface Segregation: Small, focused interfaces
1143
+ * - Dependency Inversion: Depends on abstractions, not concretions
1144
+ */
1145
+
1146
+ /**
1147
+ * Select component root.
1148
+ * Provides select dropdown functionality with search, keyboard navigation, and accessibility.
1149
+ *
1150
+ * @param props - Select configuration
1151
+ * @param ref - Forwarded ref to the form element
1152
+ * @returns The rendered select component
1153
+ */
1092
1154
  declare const Select: React$1.ForwardRefExoticComponent<SelectProps & UseSelectStateProps & React$1.RefAttributes<HTMLFormElement>>;
1155
+ /**
1156
+ * Select trigger button component.
1157
+ * Opens/closes the select dropdown and displays the selected value.
1158
+ *
1159
+ * @param props - Select trigger configuration
1160
+ * @param ref - Forwarded ref to the button element
1161
+ * @returns The rendered select trigger
1162
+ */
1093
1163
  declare const SelectTrigger: React$1.ForwardRefExoticComponent<SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
1164
+ /**
1165
+ * Select value display component.
1166
+ * Shows the selected value or placeholder text.
1167
+ *
1168
+ * @param props - Select value configuration
1169
+ * @param ref - Forwarded ref to the span element
1170
+ * @returns The rendered select value display
1171
+ */
1094
1172
  declare const SelectValue: React$1.ForwardRefExoticComponent<SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
1173
+ /**
1174
+ * Select content/dropdown component.
1175
+ * Contains the list of selectable options.
1176
+ *
1177
+ * @param props - Select content configuration
1178
+ * @param ref - Forwarded ref to the list element
1179
+ * @returns The rendered select content
1180
+ */
1095
1181
  declare const SelectContent: React$1.ForwardRefExoticComponent<SelectContentProps & React$1.RefAttributes<HTMLUListElement>>;
1182
+ /**
1183
+ * Select item component.
1184
+ * Represents a single selectable option in the dropdown.
1185
+ *
1186
+ * @param props - Select item configuration
1187
+ * @param ref - Forwarded ref to the list item element
1188
+ * @returns The rendered select item
1189
+ */
1096
1190
  declare const SelectItem: React$1.ForwardRefExoticComponent<SelectItemProps & React$1.RefAttributes<HTMLLIElement>>;
1191
+ /**
1192
+ * Select group component.
1193
+ * Groups related select items together.
1194
+ *
1195
+ * @param props - Select group configuration
1196
+ * @param ref - Forwarded ref to the div element
1197
+ * @returns The rendered select group
1198
+ */
1097
1199
  declare const SelectGroup: React$1.ForwardRefExoticComponent<{
1098
1200
  children: React$1.ReactNode;
1099
1201
  className?: string;
1100
1202
  } & React$1.RefAttributes<HTMLDivElement>>;
1203
+ /**
1204
+ * Select label component.
1205
+ * Provides a label for a group of select items.
1206
+ *
1207
+ * @param props - Select label configuration
1208
+ * @param ref - Forwarded ref to the div element
1209
+ * @returns The rendered select label
1210
+ */
1101
1211
  declare const SelectLabel: React$1.ForwardRefExoticComponent<{
1102
1212
  children: React$1.ReactNode;
1103
1213
  className?: string;
1104
1214
  } & React$1.RefAttributes<HTMLDivElement>>;
1215
+ /**
1216
+ * Select separator component.
1217
+ * Provides visual separation between groups of select items.
1218
+ *
1219
+ * @param props - Select separator configuration
1220
+ * @param ref - Forwarded ref to the div element
1221
+ * @returns The rendered select separator
1222
+ */
1105
1223
  declare const SelectSeparator: React$1.ForwardRefExoticComponent<{
1106
1224
  className?: string;
1107
1225
  } & React$1.RefAttributes<HTMLDivElement>>;
@@ -1229,7 +1347,7 @@ interface TabsContentProps extends React$1.ComponentPropsWithoutRef<typeof TabsP
1229
1347
  * @example
1230
1348
  * ```tsx
1231
1349
  * <TabsContent value="tab1">
1232
- * <div>Content for tab 1</div>
1350
+ * <section>Content for tab 1</section>
1233
1351
  * </TabsContent>
1234
1352
  * ```
1235
1353
  */
@@ -1292,6 +1410,10 @@ declare const TabsContent: React$1.ForwardRefExoticComponent<TabsContentProps &
1292
1410
  * - Date announcements
1293
1411
  */
1294
1412
 
1413
+ /**
1414
+ * Props for the Calendar component.
1415
+ * Extends DayPickerProps with pace-core specific customizations.
1416
+ */
1295
1417
  interface CalendarProps extends Omit<DayPickerProps, 'className' | 'classNames' | 'styles' | 'onSelect'> {
1296
1418
  /**
1297
1419
  * Additional CSS classes to apply to the calendar table
@@ -1460,6 +1582,10 @@ declare const ToastTitle: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives
1460
1582
  declare const ToastDescription: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastDescriptionProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
1461
1583
  interface ToastProps extends React$1.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> {
1462
1584
  }
1585
+ /**
1586
+ * Type for toast action elements.
1587
+ * Represents a React element that can be used as a toast action button.
1588
+ */
1463
1589
  interface ToastActionElement extends React$1.ReactElement<typeof ToastAction> {
1464
1590
  }
1465
1591
  /**
@@ -1521,10 +1647,10 @@ declare function Toaster(): react_jsx_runtime.JSX.Element;
1521
1647
  * <Button>Advanced Tooltip</Button>
1522
1648
  * </TooltipTrigger>
1523
1649
  * <TooltipContent side="top" className="bg-main-500 text-main-50">
1524
- * <div className="space-y-1">
1650
+ * <section className="space-y-1">
1525
1651
  * <p className="font-semibold">Advanced Tooltip</p>
1526
1652
  * <p className="text-xs">With custom styling</p>
1527
- * </div>
1653
+ * </section>
1528
1654
  * </TooltipContent>
1529
1655
  * </TooltipRoot>
1530
1656
  * </TooltipProvider>
@@ -1887,6 +2013,10 @@ declare function FormField<TFieldValues extends FieldValues = FieldValues, TName
1887
2013
  * - Tailwind CSS - Styling
1888
2014
  */
1889
2015
 
2016
+ /**
2017
+ * Props for the LoginForm component.
2018
+ * Configures login form behavior, validation, and callbacks.
2019
+ */
1890
2020
  interface LoginFormProps {
1891
2021
  /** Callback invoked when the form is submitted */
1892
2022
  onSignIn: (data: {
@@ -1932,6 +2062,57 @@ interface LoginFormProps {
1932
2062
  */
1933
2063
  declare const LoginForm: React__default.NamedExoticComponent<LoginFormProps>;
1934
2064
 
2065
+ /**
2066
+ * Navigation mode type
2067
+ */
2068
+ type NavigationMode = "dropdown" | "hierarchical";
2069
+ /**
2070
+ * Navigation item metadata
2071
+ */
2072
+ interface NavigationItemMeta {
2073
+ hidden?: boolean;
2074
+ [key: string]: unknown;
2075
+ }
2076
+ /**
2077
+ * Navigation item interface
2078
+ */
2079
+ interface NavigationItem {
2080
+ id: string;
2081
+ label: string;
2082
+ href?: string;
2083
+ icon?: string;
2084
+ children?: NavigationItem[];
2085
+ permissions?: (Permission | string)[];
2086
+ roles?: string[];
2087
+ accessLevel?: AccessLevel | string;
2088
+ meta?: NavigationItemMeta;
2089
+ pageId?: string;
2090
+ }
2091
+ /**
2092
+ * Navigation menu component props
2093
+ */
2094
+ interface NavigationMenuProps extends React$1.HTMLAttributes<HTMLDivElement> {
2095
+ items: NavigationItem[];
2096
+ mode?: NavigationMode;
2097
+ currentPath?: string;
2098
+ onNavigate?: (item: NavigationItem) => void;
2099
+ className?: string;
2100
+ disabled?: boolean;
2101
+ buttonText?: string;
2102
+ showIcons?: boolean;
2103
+ navigationLabel?: string;
2104
+ strictMode?: boolean;
2105
+ auditLog?: boolean;
2106
+ onNavigationAccessDenied?: (item: NavigationItem) => void;
2107
+ onStrictModeViolation?: (item: NavigationItem, reason: string) => void;
2108
+ /**
2109
+ * If true, indicates that items have already been filtered by the parent component (e.g., PaceAppLayout).
2110
+ * When true, NavigationMenu will skip expensive permission checks and trust the provided items.
2111
+ * This significantly improves performance when items are pre-filtered.
2112
+ */
2113
+ itemsPreFiltered?: boolean;
2114
+ }
2115
+
1935
2116
  /**
1936
2117
  * @file Unified Navigation Menu Component
1937
2118
  * @package @jmruthers/pace-core
@@ -2125,56 +2306,6 @@ declare const LoginForm: React__default.NamedExoticComponent<LoginFormProps>;
2125
2306
  * - Tailwind CSS - Styling system
2126
2307
  */
2127
2308
 
2128
- /**
2129
- * Navigation mode type
2130
- */
2131
- type NavigationMode = 'dropdown' | 'hierarchical';
2132
- /**
2133
- * Navigation item metadata
2134
- */
2135
- interface NavigationItemMeta {
2136
- hidden?: boolean;
2137
- [key: string]: unknown;
2138
- }
2139
- /**
2140
- * Navigation item interface
2141
- */
2142
- interface NavigationItem {
2143
- id: string;
2144
- label: string;
2145
- href?: string;
2146
- icon?: string;
2147
- children?: NavigationItem[];
2148
- permissions?: (Permission | string)[];
2149
- roles?: string[];
2150
- accessLevel?: AccessLevel | string;
2151
- meta?: NavigationItemMeta;
2152
- pageId?: string;
2153
- }
2154
- /**
2155
- * Navigation menu component props
2156
- */
2157
- interface NavigationMenuProps extends React$1.HTMLAttributes<HTMLDivElement> {
2158
- items: NavigationItem[];
2159
- mode?: NavigationMode;
2160
- currentPath?: string;
2161
- onNavigate?: (item: NavigationItem) => void;
2162
- className?: string;
2163
- disabled?: boolean;
2164
- buttonText?: string;
2165
- showIcons?: boolean;
2166
- navigationLabel?: string;
2167
- strictMode?: boolean;
2168
- auditLog?: boolean;
2169
- onNavigationAccessDenied?: (item: NavigationItem) => void;
2170
- onStrictModeViolation?: (item: NavigationItem, reason: string) => void;
2171
- /**
2172
- * If true, indicates that items have already been filtered by the parent component (e.g., PaceAppLayout).
2173
- * When true, NavigationMenu will skip expensive permission checks and trust the provided items.
2174
- * This significantly improves performance when items are pre-filtered.
2175
- */
2176
- itemsPreFiltered?: boolean;
2177
- }
2178
2309
  /**
2179
2310
  * Unified NavigationMenu component that supports both dropdown and hierarchical navigation modes.
2180
2311
  *
@@ -2466,14 +2597,23 @@ declare const NavigationMenu: React$1.ForwardRefExoticComponent<NavigationMenuPr
2466
2597
  * - Label component
2467
2598
  * - Tailwind CSS - Styling
2468
2599
  */
2600
+ /**
2601
+ * Form values for password change.
2602
+ */
2469
2603
  interface PasswordChangeFormValues {
2470
2604
  newPassword: string;
2471
2605
  confirmPassword: string;
2472
2606
  }
2607
+ /**
2608
+ * Error structure for password change form.
2609
+ */
2473
2610
  interface PasswordChangeFormError {
2474
2611
  message?: string;
2475
2612
  code?: string;
2476
2613
  }
2614
+ /**
2615
+ * Props for the PasswordChangeForm component.
2616
+ */
2477
2617
  interface PasswordChangeFormProps {
2478
2618
  onSubmit: (values: PasswordChangeFormValues) => Promise<{
2479
2619
  error?: PasswordChangeFormError;
@@ -2583,10 +2723,10 @@ interface HeaderProps {
2583
2723
  *
2584
2724
  * function HeaderWithActions() {
2585
2725
  * const customActions = (
2586
- * <div className="flex items-center gap-2">
2726
+ * <>
2587
2727
  * <Button variant="outline" size="sm">Export</Button>
2588
2728
  * <Button size="sm">New Item</Button>
2589
- * </div>
2729
+ * </>
2590
2730
  * );
2591
2731
  *
2592
2732
  * return (
@@ -2622,6 +2762,13 @@ interface HeaderProps {
2622
2762
  *
2623
2763
  * @since 0.1.0
2624
2764
  */
2765
+ /**
2766
+ * Header component for application layouts.
2767
+ * Provides navigation, user menu, organisation/event selectors, and customizable branding.
2768
+ *
2769
+ * @param props - Header configuration
2770
+ * @returns The rendered header
2771
+ */
2625
2772
  declare function Header({ logoUrl, logoAlt, logo, navItems, user, onSignOut, onChangePassword, actions, userMenu, className, showEventSelector, showOrgSelector, showUserMenu, currentPath, onNavigate, logoHref }: HeaderProps): react_jsx_runtime.JSX.Element;
2626
2773
 
2627
2774
  /**
@@ -2673,28 +2820,28 @@ declare function Header({ logoUrl, logoAlt, logo, navItems, user, onSignOut, onC
2673
2820
  *
2674
2821
  * // Footer with custom content
2675
2822
  * <Footer companyName="My Company">
2676
- * <div className="grid grid-cols-1 md:grid-cols-3 gap-8 mb-8">
2677
- * <div>
2823
+ * <section className="grid grid-cols-1 md:grid-cols-3 gap-8 mb-8">
2824
+ * <section>
2678
2825
  * <h3 className="font-semibold mb-2">About Us</h3>
2679
2826
  * <p className="text-sm text-muted-foreground">
2680
2827
  * We provide innovative solutions for modern businesses.
2681
2828
  * </p>
2682
- * </div>
2683
- * <div>
2829
+ * </section>
2830
+ * <section>
2684
2831
  * <h3 className="font-semibold mb-2">Contact</h3>
2685
2832
  * <p className="text-sm text-muted-foreground">
2686
2833
  * Email: info@mycompany.com<br />
2687
2834
  * Phone: (555) 123-4567
2688
2835
  * </p>
2689
- * </div>
2690
- * <div>
2836
+ * </section>
2837
+ * <section>
2691
2838
  * <h3 className="font-semibold mb-2">Follow Us</h3>
2692
- * <div className="flex gap-2">
2839
+ * <nav className="flex gap-2">
2693
2840
  * <a href="#" className="text-muted-foreground hover:text-foreground">Twitter</a>
2694
2841
  * <a href="#" className="text-muted-foreground hover:text-foreground">LinkedIn</a>
2695
- * </div>
2696
- * </div>
2697
- * </div>
2842
+ * </nav>
2843
+ * </section>
2844
+ * </section>
2698
2845
  * </Footer>
2699
2846
  * ```
2700
2847
  *
@@ -2711,6 +2858,9 @@ declare function Header({ logoUrl, logoAlt, logo, navItems, user, onSignOut, onC
2711
2858
  * - Tailwind CSS - Styling
2712
2859
  */
2713
2860
 
2861
+ /**
2862
+ * Props for the Footer component.
2863
+ */
2714
2864
  interface FooterProps {
2715
2865
  /**
2716
2866
  * Company or organization name
@@ -2809,7 +2959,7 @@ declare const Footer: React__default.NamedExoticComponent<FooterProps>;
2809
2959
  *
2810
2960
  * // User menu in header
2811
2961
  * <Header>
2812
- * <div className="flex items-center gap-4">
2962
+ * <nav className="flex items-center gap-4">
2813
2963
  * <Navigation />
2814
2964
  * <UserMenu
2815
2965
  * user={user}
@@ -2817,7 +2967,7 @@ declare const Footer: React__default.NamedExoticComponent<FooterProps>;
2817
2967
  * onChangePassword={handlePasswordChange}
2818
2968
  * className="ml-auto"
2819
2969
  * />
2820
- * </div>
2970
+ * </nav>
2821
2971
  * </Header>
2822
2972
  * ```
2823
2973
  *
@@ -2850,6 +3000,9 @@ declare const Footer: React__default.NamedExoticComponent<FooterProps>;
2850
3000
  * - Tailwind CSS - Styling
2851
3001
  */
2852
3002
 
3003
+ /**
3004
+ * Props for the UserMenu component.
3005
+ */
2853
3006
  interface UserMenuProps {
2854
3007
  user: User | null;
2855
3008
  onSignOut?: () => Promise<void>;
@@ -2862,6 +3015,10 @@ interface UserMenuProps {
2862
3015
  declare const UserMenu: React__default.NamedExoticComponent<UserMenuProps>;
2863
3016
 
2864
3017
  type Operation = 'read' | 'create' | 'update' | 'delete' | 'manage';
3018
+ /**
3019
+ * Props for the PaceAppLayout component.
3020
+ * Configures the application layout including navigation, header, and footer.
3021
+ */
2865
3022
  interface PaceAppLayoutProps {
2866
3023
  /** The name of the application to be displayed in the header. */
2867
3024
  appName: string;
@@ -3203,6 +3360,9 @@ declare function PaceAppLayout({ appName, navItems, showEventSelector, showOrgSe
3203
3360
  * - Tailwind CSS - Styling
3204
3361
  */
3205
3362
 
3363
+ /**
3364
+ * Props for the PaceLoginPage component.
3365
+ */
3206
3366
  interface PaceLoginPageProps {
3207
3367
  /** The name of the application to be displayed on the login form. */
3208
3368
  appName: string;
@@ -3237,6 +3397,9 @@ interface PaceLoginPageProps {
3237
3397
  */
3238
3398
  declare const PaceLoginPage: React__default.FC<PaceLoginPageProps>;
3239
3399
 
3400
+ /**
3401
+ * Props for the ProtectedRoute component.
3402
+ */
3240
3403
  interface ProtectedRouteProps {
3241
3404
  /**
3242
3405
  * Whether an event is required for routes inside this component.
@@ -3245,13 +3408,6 @@ interface ProtectedRouteProps {
3245
3408
  * @default true
3246
3409
  */
3247
3410
  requireEvent?: boolean;
3248
- /**
3249
- * Whether super admins can bypass event requirement.
3250
- * Note: This feature requires additional RBAC setup. For simple bypass, set requireEvent={false} instead.
3251
- * @default false
3252
- * @deprecated Use requireEvent={false} for routes that don't need events
3253
- */
3254
- allowSuperAdminBypass?: boolean;
3255
3411
  /**
3256
3412
  * Custom component to render when no events are available.
3257
3413
  * If not provided, a default message is shown.
@@ -3284,7 +3440,7 @@ interface ProtectedRouteProps {
3284
3440
  * @param props - Configuration for route protection
3285
3441
  * @returns React element with route protection logic
3286
3442
  */
3287
- declare function ProtectedRoute({ requireEvent, allowSuperAdminBypass, noEventsFallback, loadingFallback, loginPath }: ProtectedRouteProps): string | number | bigint | true | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element;
3443
+ declare function ProtectedRoute({ requireEvent, noEventsFallback, loadingFallback, loginPath }: ProtectedRouteProps): string | number | bigint | true | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element;
3288
3444
 
3289
3445
  /**
3290
3446
  * State interface for the ErrorBoundary component
@@ -3321,6 +3477,8 @@ interface ErrorBoundaryProps {
3321
3477
  enableRetry?: boolean;
3322
3478
  /** Whether to enable error reporting */
3323
3479
  enableReporting?: boolean;
3480
+ /** Internal: Global error handler from context (not part of public API) */
3481
+ _globalErrorHandler?: (error: Error, errorInfo: React__default.ErrorInfo, errorId: string, componentName: string) => void;
3324
3482
  }
3325
3483
  /**
3326
3484
  * ErrorBoundary component
@@ -3339,7 +3497,7 @@ interface ErrorBoundaryProps {
3339
3497
  * </ErrorBoundary>
3340
3498
  * ```
3341
3499
  */
3342
- declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
3500
+ declare class ErrorBoundary$1 extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
3343
3501
  private retryTimeoutId;
3344
3502
  constructor(props: ErrorBoundaryProps);
3345
3503
  static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
@@ -3350,6 +3508,65 @@ declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryS
3350
3508
  render(): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
3351
3509
  }
3352
3510
 
3511
+ /**
3512
+ * Type definition for the global error handler function
3513
+ * @public
3514
+ */
3515
+ type GlobalErrorHandler = (error: Error, errorInfo: React__default.ErrorInfo, errorId: string, componentName: string) => void;
3516
+ /**
3517
+ * Props for ErrorBoundaryProvider component
3518
+ * @public
3519
+ */
3520
+ interface ErrorBoundaryProviderProps {
3521
+ /** Children to wrap with the provider */
3522
+ children: ReactNode;
3523
+ /** Global error handler that will be used by all ErrorBoundary instances unless overridden */
3524
+ defaultErrorHandler?: GlobalErrorHandler;
3525
+ }
3526
+ /**
3527
+ * Provider component for ErrorBoundary global error handler configuration
3528
+ *
3529
+ * Wrap your application with this provider to set a default error handler that will
3530
+ * be used by all ErrorBoundary instances unless they provide their own onError prop.
3531
+ *
3532
+ * @example
3533
+ * ```tsx
3534
+ * <ErrorBoundaryProvider
3535
+ * defaultErrorHandler={(error, errorInfo, errorId, componentName) => {
3536
+ * errorTracking.captureException(error, {
3537
+ * componentStack: errorInfo.componentStack,
3538
+ * errorBoundary: true,
3539
+ * errorId,
3540
+ * componentName,
3541
+ * });
3542
+ * }}
3543
+ * >
3544
+ * <App />
3545
+ * </ErrorBoundaryProvider>
3546
+ * ```
3547
+ *
3548
+ * @public
3549
+ */
3550
+ /**
3551
+ * Error boundary provider component.
3552
+ * Provides global error handling configuration to child ErrorBoundary components.
3553
+ *
3554
+ * @param props - Error boundary provider configuration
3555
+ * @returns The error boundary provider
3556
+ */
3557
+ declare function ErrorBoundaryProvider({ children, defaultErrorHandler, }: ErrorBoundaryProviderProps): react_jsx_runtime.JSX.Element;
3558
+
3559
+ /**
3560
+ * @file Error Boundary exports
3561
+ */
3562
+
3563
+ /**
3564
+ * ErrorBoundary component with automatic context support
3565
+ * This wrapper automatically uses the global error handler from ErrorBoundaryProvider
3566
+ * if no onError prop is provided.
3567
+ */
3568
+ declare const ErrorBoundary: React__default.ForwardRefExoticComponent<Omit<ErrorBoundaryProps, "_globalErrorHandler"> & React__default.RefAttributes<ErrorBoundary$1>>;
3569
+
3353
3570
  /**
3354
3571
  * @file LoadingSpinner Component
3355
3572
  * @package @jmruthers/pace-core
@@ -3476,6 +3693,9 @@ interface SessionRestorationLoaderProps {
3476
3693
  }
3477
3694
  declare const SessionRestorationLoader: React__default.FC<SessionRestorationLoaderProps>;
3478
3695
 
3696
+ /**
3697
+ * Props for the EventSelector component.
3698
+ */
3479
3699
  interface EventSelectorProps {
3480
3700
  /** Placeholder text for the dropdown */
3481
3701
  placeholder?: string;
@@ -3510,6 +3730,9 @@ interface EventSelectorProps {
3510
3730
  */
3511
3731
  declare function EventSelector({ placeholder, className, onEventChange, showNoEventsMessage, showRetryButton, showEventDetails, showNextEventIndicator }: EventSelectorProps): react_jsx_runtime.JSX.Element | null;
3512
3732
 
3733
+ /**
3734
+ * Props for the OrganisationSelector component.
3735
+ */
3513
3736
  interface OrganisationSelectorProps {
3514
3737
  /** Placeholder text for the dropdown */
3515
3738
  placeholder?: string;
@@ -3542,6 +3765,10 @@ interface OrganisationSelectorProps {
3542
3765
  */
3543
3766
  declare function OrganisationSelector({ placeholder, className, onOrganisationChange, showNoOrganisationsMessage, showRetryButton, showRole, compact, disabled }: OrganisationSelectorProps): react_jsx_runtime.JSX.Element | null;
3544
3767
 
3768
+ /**
3769
+ * Props for the FileUpload component.
3770
+ * Configures file upload behavior including storage location, validation, and callbacks.
3771
+ */
3545
3772
  interface FileUploadProps {
3546
3773
  supabase: SupabaseClient;
3547
3774
  table_name: string;
@@ -3631,8 +3858,22 @@ interface FileDisplayProps {
3631
3858
  * @param props.category - Optional category filter. When specified, only displays files matching this category and uses single file display variant.
3632
3859
  * @returns React element with file display
3633
3860
  */
3861
+ /**
3862
+ * File display component.
3863
+ * Renders files from the file reference system with support for previews, downloads, and public/private access.
3864
+ *
3865
+ * @param props - File display configuration
3866
+ * @returns The rendered file display
3867
+ */
3634
3868
  declare function FileDisplay({ table_name, record_id, organisation_id, category, displayOnly, showDelete, className, imgClassName, children, loadingComponent, errorComponent, showFallback, generateFallbackText, fallbackText, fallbackSourceText, fallbackSize, enableChildren, showMetadata }: FileDisplayProps): react_jsx_runtime.JSX.Element;
3635
3869
 
3870
+ /**
3871
+ * Hook for managing file references.
3872
+ * Provides file upload, retrieval, and URL generation functionality.
3873
+ *
3874
+ * @param supabase - Supabase client instance
3875
+ * @returns File reference service with upload, get, and URL methods
3876
+ */
3636
3877
  declare function useFileReference(supabase: SupabaseClient): {
3637
3878
  isLoading: boolean;
3638
3879
  error: string | null;
@@ -3699,6 +3940,9 @@ type UseFileReferenceOptions = {
3699
3940
  record_id: string;
3700
3941
  organisation_id: string;
3701
3942
  };
3943
+ /**
3944
+ * Return value of the useFileReference hook.
3945
+ */
3702
3946
  type UseFileReferenceReturn = {
3703
3947
  isLoading: boolean;
3704
3948
  error: string | null;
@@ -3712,6 +3956,9 @@ type UseFileReferenceReturn = {
3712
3956
  getFileCount: (table_name: string, record_id: string, organisation_id: string) => Promise<number>;
3713
3957
  clearError: () => void;
3714
3958
  };
3959
+ /**
3960
+ * Return value of the useFileReferenceForRecord hook.
3961
+ */
3715
3962
  type UseFileReferenceForRecordReturn = {
3716
3963
  isLoading: boolean;
3717
3964
  error: string | null;
@@ -3859,8 +4106,6 @@ interface PublicPageLayoutProps {
3859
4106
  refetch?: () => Promise<void> | void;
3860
4107
  /** Whether to show the footer (default: true) */
3861
4108
  showFooter?: boolean;
3862
- /** @deprecated Custom CSS classes for the layout - no longer used as wrapper div was removed */
3863
- className?: string;
3864
4109
  /** Custom error fallback component */
3865
4110
  errorFallback?: React__default.ComponentType<{
3866
4111
  error: Error;
@@ -3932,7 +4177,7 @@ declare function PublicPageFooter({ event, companyName, year, links, className,
3932
4177
  * @param props - Layout configuration and content
3933
4178
  * @returns React element with complete public page layout
3934
4179
  */
3935
- declare function PublicPageLayout({ eventCode, children, event, isLoading, error, refetch, showFooter, className, errorFallback: ErrorFallback, loadingFallback: LoadingFallback, customHeader, customFooter, showValidationErrors, loadingMessage }: PublicPageLayoutProps): react_jsx_runtime.JSX.Element;
4180
+ declare function PublicPageLayout({ eventCode, children, event, isLoading, error, refetch, showFooter, errorFallback: ErrorFallback, loadingFallback: LoadingFallback, customHeader, customFooter, showValidationErrors, loadingMessage }: PublicPageLayoutProps): react_jsx_runtime.JSX.Element;
3936
4181
 
3937
4182
  interface PublicPageContextType {
3938
4183
  isPublicPage: true;
@@ -3972,4 +4217,4 @@ declare function usePublicPageContext(): PublicPageContextType;
3972
4217
  */
3973
4218
  declare function useIsPublicPage(): boolean;
3974
4219
 
3975
- export { type DialogTriggerProps as $, AddressField as A, Button as B, Card as C, TableHeader as D, TableBody as E, TableCaption as F, TableCell as G, TableFooter as H, Input as I, TableHead as J, TableRow as K, Label as L, Dialog as M, DialogPortal as N, DialogOverlay as O, Progress as P, DialogTrigger as Q, DialogClose as R, Switch as S, Textarea as T, DialogContent as U, DialogHeader as V, DialogBody as W, DialogFooter as X, DialogTitle as Y, DialogDescription as Z, type DialogProps as _, type ButtonProps as a, EventSelector as a$, type DialogContentProps as a0, type DialogOverlayProps as a1, type DialogHeaderProps as a2, type DialogFooterProps as a3, type DialogTitleProps as a4, type DialogDescriptionProps as a5, type DialogSize as a6, Select as a7, SelectGroup as a8, SelectValue as a9, TooltipTrigger as aA, TooltipContent as aB, TooltipProvider as aC, TooltipRoot as aD, Form as aE, FormField as aF, type FormProps as aG, type FormFieldProps as aH, LoginForm as aI, type LoginFormProps as aJ, Header as aK, Footer as aL, type FooterProps as aM, ProtectedRoute as aN, type ProtectedRouteProps as aO, NavigationMenu as aP, type NavigationMenuProps as aQ, type NavigationItem as aR, OrganisationSelector as aS, type OrganisationSelectorProps as aT, UserMenu as aU, ErrorBoundary as aV, type ErrorBoundaryProps as aW, type ErrorBoundaryState as aX, LoadingSpinner as aY, SessionRestorationLoader as aZ, type SessionRestorationLoaderProps as a_, SelectTrigger as aa, SelectContent as ab, SelectLabel as ac, SelectItem as ad, SelectSeparator as ae, Tabs as af, TabsList as ag, TabsTrigger as ah, TabsContent as ai, type TabsProps as aj, type TabsListProps as ak, type TabsTriggerProps as al, type TabsContentProps as am, Calendar as an, type CalendarProps as ao, Toast as ap, Toaster as aq, ToastAction as ar, ToastProvider as as, ToastViewport as at, ToastTitle as au, ToastDescription as av, ToastClose as aw, type ToastActionElement as ax, type ToastProps as ay, Tooltip as az, CardHeader as b, FileUpload as b0, type FileUploadProps as b1, FileDisplay as b2, type FileDisplayProps as b3, useFileReference as b4, useFileReferenceForRecord as b5, useFileReferenceById as b6, useFilesByCategory as b7, type UseFileReferenceOptions as b8, type UseFileReferenceReturn as b9, type UseFileReferenceForRecordReturn as ba, PublicPageLayout as bb, PublicPageHeader as bc, PublicPageFooter as bd, PublicPageProvider as be, usePublicPageContext as bf, useIsPublicPage as bg, type PublicPageLayoutProps as bh, type PublicPageHeaderProps as bi, type PublicPageFooterProps as bj, type PaceAppLayoutProps as bk, PaceAppLayout as bl, type PaceLoginPageProps as bm, PaceLoginPage as bn, type NavigationMode as bo, type UserMenuProps as bp, PasswordChangeForm as bq, CardFooter as c, CardTitle as d, CardDescription as e, CardContent as f, CardActions as g, type CardProps as h, type CardActionsProps as i, type InputProps as j, type AddressFieldProps as k, type AddressFieldRef as l, type LabelProps as m, type TextareaProps as n, Alert as o, AlertTitle as p, AlertDescription as q, Avatar as r, type AvatarProps as s, Badge as t, type BadgeProps as u, type BadgeVariant as v, Checkbox as w, type SwitchProps as x, type ProgressProps as y, Table as z };
4220
+ export { type DialogTriggerProps as $, AddressField as A, Button as B, Card as C, TableHeader as D, TableBody as E, TableCaption as F, TableCell as G, TableFooter as H, Input as I, TableHead as J, TableRow as K, Label as L, Dialog as M, DialogPortal as N, DialogOverlay as O, Progress as P, DialogTrigger as Q, DialogClose as R, Switch as S, Textarea as T, DialogContent as U, DialogHeader as V, DialogBody as W, DialogFooter as X, DialogTitle as Y, DialogDescription as Z, type DialogProps as _, type ButtonProps as a, LoadingSpinner as a$, type DialogContentProps as a0, type DialogOverlayProps as a1, type DialogHeaderProps as a2, type DialogFooterProps as a3, type DialogTitleProps as a4, type DialogDescriptionProps as a5, type DialogSize as a6, Select as a7, SelectGroup as a8, SelectValue as a9, TooltipTrigger as aA, TooltipContent as aB, TooltipProvider as aC, TooltipRoot as aD, Form as aE, FormField as aF, type FormProps as aG, type FormFieldProps as aH, LoginForm as aI, type LoginFormProps as aJ, Header as aK, Footer as aL, type FooterProps as aM, ProtectedRoute as aN, type ProtectedRouteProps as aO, NavigationMenu as aP, type NavigationMenuProps as aQ, type NavigationItem as aR, OrganisationSelector as aS, type OrganisationSelectorProps as aT, UserMenu as aU, ErrorBoundary as aV, ErrorBoundaryProvider as aW, type ErrorBoundaryProps as aX, type ErrorBoundaryState as aY, type ErrorBoundaryProviderProps as aZ, type GlobalErrorHandler as a_, SelectTrigger as aa, SelectContent as ab, SelectLabel as ac, SelectItem as ad, SelectSeparator as ae, Tabs as af, TabsList as ag, TabsTrigger as ah, TabsContent as ai, type TabsProps as aj, type TabsListProps as ak, type TabsTriggerProps as al, type TabsContentProps as am, Calendar as an, type CalendarProps as ao, Toast as ap, Toaster as aq, ToastAction as ar, ToastProvider as as, ToastViewport as at, ToastTitle as au, ToastDescription as av, ToastClose as aw, type ToastActionElement as ax, type ToastProps as ay, Tooltip as az, CardHeader as b, SessionRestorationLoader as b0, type SessionRestorationLoaderProps as b1, EventSelector as b2, FileUpload as b3, type FileUploadProps as b4, FileDisplay as b5, type FileDisplayProps as b6, useFileReference as b7, useFileReferenceForRecord as b8, useFileReferenceById as b9, useFilesByCategory as ba, type UseFileReferenceOptions as bb, type UseFileReferenceReturn as bc, type UseFileReferenceForRecordReturn as bd, PublicPageLayout as be, PublicPageHeader as bf, PublicPageFooter as bg, PublicPageProvider as bh, usePublicPageContext as bi, useIsPublicPage as bj, type PublicPageLayoutProps as bk, type PublicPageHeaderProps as bl, type PublicPageFooterProps as bm, type PaceAppLayoutProps as bn, PaceAppLayout as bo, type PaceLoginPageProps as bp, PaceLoginPage as bq, type NavigationMode as br, type UserMenuProps as bs, PasswordChangeForm as bt, CardFooter as c, CardTitle as d, CardDescription as e, CardContent as f, CardActions as g, type CardProps as h, type CardActionsProps as i, type InputProps as j, type AddressFieldProps as k, type AddressFieldRef as l, type LabelProps as m, type TextareaProps as n, Alert as o, AlertTitle as p, AlertDescription as q, Avatar as r, type AvatarProps as s, Badge as t, type BadgeProps as u, type BadgeVariant as v, Checkbox as w, type SwitchProps as x, type ProgressProps as y, Table as z };