@jmruthers/pace-core 0.6.5 → 0.6.7

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 (473) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +5 -403
  3. package/audit-tool/00-dependencies.cjs +394 -0
  4. package/audit-tool/audits/01-pace-core-compliance.cjs +556 -0
  5. package/audit-tool/audits/02-project-structure.cjs +255 -0
  6. package/audit-tool/audits/03-architecture.cjs +196 -0
  7. package/audit-tool/audits/04-code-quality.cjs +149 -0
  8. package/audit-tool/audits/05-styling.cjs +224 -0
  9. package/audit-tool/audits/06-security-rbac.cjs +544 -0
  10. package/audit-tool/audits/07-api-tech-stack.cjs +301 -0
  11. package/audit-tool/audits/08-testing-documentation.cjs +202 -0
  12. package/audit-tool/audits/09-operations.cjs +208 -0
  13. package/audit-tool/index.cjs +291 -0
  14. package/audit-tool/utils/code-utils.cjs +218 -0
  15. package/audit-tool/utils/file-utils.cjs +230 -0
  16. package/audit-tool/utils/report-utils.cjs +241 -0
  17. package/core-usage-manifest.json +93 -0
  18. package/cursor-rules/00-standards-overview.mdc +156 -0
  19. package/cursor-rules/01-pace-core-compliance.mdc +586 -0
  20. package/cursor-rules/02-project-structure.mdc +42 -4
  21. package/cursor-rules/{03-solid-principles.mdc → 03-architecture.mdc} +126 -10
  22. package/cursor-rules/04-code-quality.mdc +419 -0
  23. package/cursor-rules/{08-markup-quality.mdc → 05-styling.mdc} +104 -34
  24. package/cursor-rules/06-security-rbac.mdc +518 -0
  25. package/cursor-rules/07-api-tech-stack.mdc +377 -0
  26. package/cursor-rules/08-testing-documentation.mdc +324 -0
  27. package/cursor-rules/09-operations.mdc +365 -0
  28. package/dist/{AuthService-Cb34EQs3.d.ts → AuthService-DmfO5rGS.d.ts} +10 -0
  29. package/dist/DataTable-7PMH7XN7.js +15 -0
  30. package/dist/{DataTable-BMRU8a1j.d.ts → DataTable-DRUIgtUH.d.ts} +1 -1
  31. package/dist/{PublicPageProvider-QTFVrL-Z.d.ts → PublicPageProvider-DlsCaR5v.d.ts} +33 -72
  32. package/dist/UnifiedAuthProvider-ZT6TIGM7.js +7 -0
  33. package/dist/api-Y4MQWOFW.js +4 -0
  34. package/dist/audit-MYQXYZFU.js +3 -0
  35. package/dist/{chunk-DGUM43GV.js → chunk-3RG5ZIWI.js} +1 -4
  36. package/dist/{chunk-QXHPKYJV.js → chunk-4SXLQIZO.js} +1 -26
  37. package/dist/{chunk-UPPMRMYG.js → chunk-5X4QLXRG.js} +73 -151
  38. package/dist/chunk-6F3IILHI.js +62 -0
  39. package/dist/{chunk-E66EQZE6.js → chunk-6GLLNA6U.js} +3 -9
  40. package/dist/{chunk-ZSAAAMVR.js → chunk-6QYDGKQY.js} +1 -4
  41. package/dist/{chunk-FMUCXFII.js → chunk-7ILTDCL2.js} +9 -5
  42. package/dist/{chunk-M43Y4SSO.js → chunk-A3W6LW53.js} +15 -13
  43. package/dist/{chunk-63FOKYGO.js → chunk-AHU7G2R5.js} +2 -11
  44. package/dist/{chunk-HU2C6SSC.js → chunk-BM4CQ5P3.js} +606 -559
  45. package/dist/chunk-C7NSAPTL.js +1 -0
  46. package/dist/{chunk-J36DSWQK.js → chunk-FEJLJNWA.js} +7 -41
  47. package/dist/{chunk-IHB5DR3H.js → chunk-FTCRZOG2.js} +188 -387
  48. package/dist/{chunk-G37KK66H.js → chunk-FYHN4DD5.js} +60 -19
  49. package/dist/chunk-GHYHJTYV.js +994 -0
  50. package/dist/{chunk-VBXEHIUJ.js → chunk-HF6O3O37.js} +6 -88
  51. package/dist/{chunk-FFQEQTNW.js → chunk-IUBRCBSY.js} +134 -45
  52. package/dist/{chunk-6COVEUS7.js → chunk-JGWDVX64.js} +983 -1034
  53. package/dist/{chunk-RGAWHO7N.js → chunk-L4XMVJKY.js} +77 -222
  54. package/dist/chunk-MBADTM7L.js +64 -0
  55. package/dist/{chunk-M7MPQISP.js → chunk-OJ4SKRSV.js} +3 -16
  56. package/dist/{chunk-IVOFDYWT.js → chunk-Q7Q7V5NV.js} +2109 -1604
  57. package/dist/{chunk-JGRYX5UX.js → chunk-S7DKJPLT.js} +29 -58
  58. package/dist/{chunk-PWLANIRT.js → chunk-TTRFSOKR.js} +1 -7
  59. package/dist/{chunk-5DRSZLL2.js → chunk-UH3NTO3F.js} +1 -6
  60. package/dist/{chunk-NTM7ZSB6.js → chunk-VBCS3DUA.js} +261 -168
  61. package/dist/{chunk-EFN2EIMK.js → chunk-ZFYPMX46.js} +271 -87
  62. package/dist/{chunk-L4OXEN46.js → chunk-ZKAWKYT4.js} +10 -24
  63. package/dist/components.d.ts +7 -5
  64. package/dist/components.js +46 -257
  65. package/dist/{database.generated-CzIvgcPu.d.ts → database.generated-CcnC_DRc.d.ts} +4795 -3691
  66. package/dist/eslint-rules/index.cjs +35 -0
  67. package/{src/eslint-rules/pace-core-compliance.cjs → dist/eslint-rules/rules/01-pace-core-compliance.cjs} +234 -235
  68. package/dist/eslint-rules/rules/04-code-quality.cjs +290 -0
  69. package/dist/eslint-rules/rules/05-styling.cjs +61 -0
  70. package/dist/eslint-rules/rules/06-security-rbac.cjs +806 -0
  71. package/dist/eslint-rules/rules/07-api-tech-stack.cjs +263 -0
  72. package/dist/eslint-rules/rules/08-testing.cjs +94 -0
  73. package/dist/eslint-rules/utils/helpers.cjs +42 -0
  74. package/dist/eslint-rules/utils/manifest-loader.cjs +75 -0
  75. package/dist/hooks.d.ts +6 -6
  76. package/dist/hooks.js +62 -172
  77. package/dist/icons/index.d.ts +1 -0
  78. package/dist/icons/index.js +1 -0
  79. package/dist/index.d.ts +12 -11
  80. package/dist/index.js +67 -660
  81. package/dist/providers.d.ts +2 -2
  82. package/dist/providers.js +8 -35
  83. package/dist/rbac/eslint-rules.d.ts +46 -44
  84. package/dist/rbac/eslint-rules.js +7 -4
  85. package/dist/rbac/index.d.ts +109 -586
  86. package/dist/rbac/index.js +14 -207
  87. package/dist/styles/index.js +2 -12
  88. package/dist/theming/runtime.d.ts +14 -1
  89. package/dist/theming/runtime.js +3 -19
  90. package/dist/{timezone-CHhWg6b4.d.ts → timezone-BZe_eUxx.d.ts} +175 -1
  91. package/dist/{types-CkbwOr4Y.d.ts → types-DXstZpNI.d.ts} +4 -17
  92. package/dist/types-t9H8qKRw.d.ts +55 -0
  93. package/dist/types.d.ts +1 -1
  94. package/dist/types.js +7 -94
  95. package/dist/{usePublicRouteParams-ClnV4tnv.d.ts → usePublicRouteParams-MamNgwqe.d.ts} +20 -20
  96. package/dist/utils.d.ts +24 -117
  97. package/dist/utils.js +54 -392
  98. package/docs/README.md +17 -7
  99. package/docs/api/README.md +4 -402
  100. package/docs/api/modules.md +301 -871
  101. package/docs/api-reference/components.md +21 -21
  102. package/docs/api-reference/deprecated.md +31 -6
  103. package/docs/api-reference/hooks.md +80 -80
  104. package/docs/api-reference/rpc-functions.md +78 -3
  105. package/docs/api-reference/types.md +1 -1
  106. package/docs/api-reference/utilities.md +1 -1
  107. package/docs/architecture/README.md +1 -1
  108. package/docs/core-concepts/events.md +3 -3
  109. package/docs/core-concepts/organisations.md +6 -6
  110. package/docs/core-concepts/permissions.md +6 -6
  111. package/docs/documentation-index.md +12 -18
  112. package/docs/getting-started/cursor-rules.md +3 -23
  113. package/docs/getting-started/dependencies.md +650 -0
  114. package/docs/getting-started/documentation-index.md +1 -1
  115. package/docs/getting-started/examples/README.md +4 -4
  116. package/docs/getting-started/examples/full-featured-app.md +1 -1
  117. package/docs/getting-started/faq.md +2 -2
  118. package/docs/getting-started/installation-guide.md +20 -7
  119. package/docs/getting-started/quick-reference.md +4 -4
  120. package/docs/getting-started/quick-start.md +23 -12
  121. package/docs/implementation-guides/authentication.md +15 -15
  122. package/docs/implementation-guides/component-styling.md +1 -1
  123. package/docs/implementation-guides/data-tables.md +126 -33
  124. package/docs/implementation-guides/datatable-rbac-usage.md +1 -1
  125. package/docs/implementation-guides/dynamic-colors.md +3 -3
  126. package/docs/implementation-guides/file-upload-storage.md +2 -2
  127. package/docs/implementation-guides/hierarchical-datatable.md +40 -60
  128. package/docs/implementation-guides/inactivity-tracking.md +3 -3
  129. package/docs/implementation-guides/large-datasets.md +3 -2
  130. package/docs/implementation-guides/organisation-security.md +2 -2
  131. package/docs/implementation-guides/performance.md +2 -2
  132. package/docs/implementation-guides/permission-enforcement.md +5 -1
  133. package/docs/migration/V0.3.44_organisation-context-timing-fix.md +1 -1
  134. package/docs/migration/V0.4.0_rbac-migration.md +6 -6
  135. package/docs/rbac/MIGRATION_GUIDE.md +819 -0
  136. package/docs/rbac/RBAC_CONTRACT.md +724 -0
  137. package/docs/rbac/README.md +17 -8
  138. package/docs/rbac/advanced-patterns.md +6 -6
  139. package/docs/rbac/api-reference.md +20 -20
  140. package/docs/rbac/edge-functions-guide.md +376 -0
  141. package/docs/rbac/event-based-apps.md +3 -3
  142. package/docs/rbac/examples.md +41 -41
  143. package/docs/rbac/getting-started.md +37 -37
  144. package/docs/rbac/performance.md +1 -1
  145. package/docs/rbac/quick-start.md +52 -52
  146. package/docs/rbac/secure-client-protection.md +1 -35
  147. package/docs/rbac/troubleshooting.md +1 -1
  148. package/docs/security/README.md +5 -5
  149. package/docs/standards/0-standards-overview.md +220 -0
  150. package/docs/standards/1-pace-core-compliance-standards.md +986 -0
  151. package/docs/standards/2-project-structure-standards.md +949 -0
  152. package/docs/standards/3-architecture-standards.md +606 -0
  153. package/docs/standards/4-code-quality-standards.md +728 -0
  154. package/docs/standards/5-styling-standards.md +348 -0
  155. package/docs/standards/{07-rbac-and-rls-standard.md → 6-security-rbac-standards.md} +269 -66
  156. package/docs/standards/7-api-tech-stack-standards.md +662 -0
  157. package/docs/standards/8-testing-documentation-standards.md +401 -0
  158. package/docs/standards/9-operations-standards.md +1102 -0
  159. package/docs/standards/README.md +185 -57
  160. package/docs/troubleshooting/README.md +4 -4
  161. package/docs/troubleshooting/common-issues.md +2 -2
  162. package/docs/troubleshooting/debugging.md +9 -9
  163. package/docs/troubleshooting/migration.md +4 -4
  164. package/docs/troubleshooting/organisation-context-setup.md +42 -19
  165. package/eslint-config-pace-core.cjs +33 -6
  166. package/package.json +35 -23
  167. package/scripts/install-cursor-rules.cjs +25 -6
  168. package/scripts/install-eslint-config.cjs +284 -0
  169. package/src/__tests__/fixtures/supabase.ts +1 -1
  170. package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +3 -3
  171. package/src/__tests__/helpers/__tests__/optimized-test-setup.test.ts +1 -1
  172. package/src/__tests__/helpers/__tests__/supabaseMock.test.ts +1 -1
  173. package/src/__tests__/helpers/__tests__/test-providers.test.tsx +2 -2
  174. package/src/__tests__/helpers/__tests__/test-utils.test.tsx +13 -13
  175. package/src/__tests__/helpers/component-test-utils.tsx +1 -1
  176. package/src/__tests__/helpers/supabaseMock.ts +2 -2
  177. package/src/__tests__/integration/UserProfile.test.tsx +14 -14
  178. package/src/__tests__/public-recipe-view.test.ts +38 -9
  179. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +6 -6
  180. package/src/__tests__/templates/accessibility.test.template.tsx +9 -9
  181. package/src/__tests__/templates/component.test.template.tsx +18 -15
  182. package/src/components/Button/Button.tsx +5 -1
  183. package/src/components/Calendar/Calendar.tsx +201 -47
  184. package/src/components/ContextSelector/ContextSelector.tsx +106 -119
  185. package/src/components/DataTable/AUDIT_REPORT.md +293 -0
  186. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +10 -2
  187. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +10 -4
  188. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +9 -9
  189. package/src/components/DataTable/components/ColumnFilter.tsx +63 -74
  190. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +43 -41
  191. package/src/components/DataTable/components/DataTableCore.tsx +186 -13
  192. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +9 -11
  193. package/src/components/DataTable/components/DataTableLayout.tsx +35 -21
  194. package/src/components/DataTable/components/EditFields.tsx +23 -3
  195. package/src/components/DataTable/components/EditableRow.tsx +12 -9
  196. package/src/components/DataTable/components/EmptyState.tsx +10 -9
  197. package/src/components/DataTable/components/FilterRow.tsx +2 -4
  198. package/src/components/DataTable/components/ImportModal.tsx +124 -126
  199. package/src/components/DataTable/components/LoadingState.tsx +5 -6
  200. package/src/components/DataTable/components/RowComponent.tsx +12 -0
  201. package/src/components/DataTable/components/SortIndicator.tsx +50 -0
  202. package/src/components/DataTable/components/__tests__/COVERAGE_NOTE.md +4 -4
  203. package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +23 -82
  204. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +37 -9
  205. package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +7 -4
  206. package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +12 -4
  207. package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +41 -27
  208. package/src/components/DataTable/components/hooks/usePermissionTracking.ts +0 -4
  209. package/src/components/DataTable/components/index.ts +2 -1
  210. package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +51 -47
  211. package/src/components/DataTable/hooks/useDataTablePermissions.ts +24 -21
  212. package/src/components/DataTable/hooks/useDataTableState.ts +125 -9
  213. package/src/components/DataTable/hooks/useTableColumns.ts +40 -2
  214. package/src/components/DataTable/hooks/useTableHandlers.ts +11 -0
  215. package/src/components/DataTable/types.ts +5 -18
  216. package/src/components/DataTable/utils/a11yUtils.ts +17 -0
  217. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +2 -1
  218. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +11 -15
  219. package/src/components/DateTimeField/DateTimeField.tsx +10 -9
  220. package/src/components/Dialog/Dialog.test.tsx +128 -104
  221. package/src/components/Dialog/Dialog.tsx +742 -24
  222. package/src/components/ErrorBoundary/ErrorBoundary.tsx +77 -79
  223. package/src/components/FileDisplay/FileDisplay.test.tsx +4 -2
  224. package/src/components/FileDisplay/FileDisplay.tsx +23 -17
  225. package/src/components/FileUpload/FileUpload.test.tsx +52 -14
  226. package/src/components/FileUpload/FileUpload.tsx +112 -130
  227. package/src/components/Form/Form.test.tsx +6 -8
  228. package/src/components/Form/Form.tsx +365 -4
  229. package/src/components/NavigationMenu/NavigationMenu.test.tsx +14 -13
  230. package/src/components/NavigationMenu/useNavigationFiltering.ts +11 -21
  231. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +6 -4
  232. package/src/components/PaceAppLayout/PaceAppLayout.tsx +11 -15
  233. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +108 -61
  234. package/src/components/PaceLoginPage/PaceLoginPage.tsx +27 -3
  235. package/src/components/Progress/Progress.tsx +2 -4
  236. package/src/components/ProtectedRoute/ProtectedRoute.tsx +8 -8
  237. package/src/components/Select/Select.tsx +109 -98
  238. package/src/components/Select/types.ts +4 -1
  239. package/src/components/UserMenu/UserMenu.tsx +9 -6
  240. package/src/hooks/__tests__/ServiceHooks.test.tsx +16 -16
  241. package/src/hooks/__tests__/hooks.integration.test.tsx +55 -57
  242. package/src/hooks/__tests__/useAppConfig.unit.test.ts +129 -67
  243. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +97 -97
  244. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +149 -67
  245. package/src/hooks/__tests__/usePublicEvent.test.ts +149 -79
  246. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +158 -109
  247. package/src/hooks/__tests__/useSessionDraft.test.ts +163 -0
  248. package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +10 -5
  249. package/src/hooks/public/usePublicEvent.ts +67 -195
  250. package/src/hooks/public/usePublicEventLogo.test.ts +70 -17
  251. package/src/hooks/public/usePublicEventLogo.ts +24 -14
  252. package/src/hooks/public/usePublicFileDisplay.ts +2 -2
  253. package/src/hooks/public/usePublicRouteParams.ts +5 -5
  254. package/src/hooks/useAppConfig.ts +28 -26
  255. package/src/hooks/useEventTheme.test.ts +217 -239
  256. package/src/hooks/useEventTheme.ts +16 -28
  257. package/src/hooks/useFileDisplay.ts +2 -2
  258. package/src/hooks/useOrganisationPermissions.ts +5 -7
  259. package/src/hooks/useQueryCache.ts +0 -1
  260. package/src/hooks/useSessionDraft.ts +380 -0
  261. package/src/hooks/useSessionRestoration.ts +3 -1
  262. package/src/icons/index.ts +27 -0
  263. package/src/index.ts +5 -0
  264. package/src/providers/OrganisationProvider.tsx +23 -14
  265. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +21 -21
  266. package/src/providers/__tests__/AuthProvider.test.tsx +21 -21
  267. package/src/providers/__tests__/EventProvider.test.tsx +61 -61
  268. package/src/providers/__tests__/InactivityProvider.test.tsx +56 -56
  269. package/src/providers/__tests__/OrganisationProvider.test.tsx +75 -75
  270. package/src/providers/__tests__/ProviderLifecycle.test.tsx +37 -37
  271. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +103 -103
  272. package/src/providers/services/EventServiceProvider.tsx +1 -24
  273. package/src/providers/services/UnifiedAuthProvider.tsx +5 -48
  274. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +7 -7
  275. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +13 -10
  276. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +7 -457
  277. package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +33 -7
  278. package/src/rbac/adapters.tsx +7 -295
  279. package/src/rbac/api.test.ts +44 -56
  280. package/src/rbac/api.ts +10 -17
  281. package/src/rbac/cache-invalidation.ts +0 -1
  282. package/src/rbac/compliance/index.ts +10 -0
  283. package/src/rbac/compliance/pattern-detector.ts +553 -0
  284. package/src/rbac/compliance/runtime-compliance.ts +22 -0
  285. package/src/rbac/components/AccessDenied.tsx +150 -0
  286. package/src/rbac/components/NavigationGuard.tsx +12 -20
  287. package/src/rbac/components/PagePermissionGuard.tsx +4 -24
  288. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +21 -8
  289. package/src/rbac/components/index.ts +3 -41
  290. package/src/rbac/eslint-rules.js +1 -1
  291. package/src/rbac/hooks/index.ts +0 -3
  292. package/src/rbac/hooks/permissions/index.ts +0 -3
  293. package/src/rbac/hooks/permissions/useAccessLevel.ts +4 -8
  294. package/src/rbac/hooks/usePermissions.ts +0 -3
  295. package/src/rbac/hooks/useResolvedScope.test.ts +57 -47
  296. package/src/rbac/hooks/useResolvedScope.ts +58 -140
  297. package/src/rbac/hooks/useResourcePermissions.test.ts +124 -38
  298. package/src/rbac/hooks/useResourcePermissions.ts +139 -48
  299. package/src/rbac/hooks/useRoleManagement.test.ts +65 -22
  300. package/src/rbac/hooks/useRoleManagement.ts +147 -19
  301. package/src/rbac/hooks/useSecureSupabase.ts +4 -8
  302. package/src/rbac/index.ts +7 -9
  303. package/src/rbac/utils/contextValidator.ts +9 -7
  304. package/src/services/AuthService.ts +130 -18
  305. package/src/services/EventService.ts +4 -97
  306. package/src/services/InactivityService.ts +16 -0
  307. package/src/services/OrganisationService.ts +7 -44
  308. package/src/services/__tests__/OrganisationService.test.ts +26 -8
  309. package/src/services/base/BaseService.ts +0 -3
  310. package/src/styles/core.css +7 -0
  311. package/src/theming/__tests__/parseEventColours.test.ts +9 -3
  312. package/src/theming/parseEventColours.ts +22 -10
  313. package/src/types/database.generated.ts +4733 -3809
  314. package/src/utils/__tests__/lazyLoad.unit.test.tsx +42 -39
  315. package/src/utils/__tests__/organisationContext.unit.test.ts +9 -10
  316. package/src/utils/context/organisationContext.test.ts +13 -28
  317. package/src/utils/context/organisationContext.ts +21 -52
  318. package/src/utils/dynamic/dynamicUtils.ts +1 -1
  319. package/src/utils/file-reference/index.ts +39 -15
  320. package/src/utils/formatting/formatDateTime.test.ts +3 -2
  321. package/src/utils/google-places/loadGoogleMapsScript.ts +29 -4
  322. package/src/utils/index.ts +4 -1
  323. package/src/utils/persistence/__tests__/keyDerivation.test.ts +135 -0
  324. package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +123 -0
  325. package/src/utils/persistence/keyDerivation.ts +304 -0
  326. package/src/utils/persistence/sensitiveFieldDetection.ts +212 -0
  327. package/src/utils/security/secureStorage.ts +5 -5
  328. package/src/utils/storage/README.md +1 -1
  329. package/src/utils/storage/helpers.ts +3 -3
  330. package/src/utils/supabase/createBaseClient.ts +147 -0
  331. package/src/utils/timezone/timezone.test.ts +1 -2
  332. package/src/utils/timezone/timezone.ts +1 -1
  333. package/src/utils/validation/csrf.ts +4 -4
  334. package/cursor-rules/00-pace-core-compliance.mdc +0 -331
  335. package/cursor-rules/01-standards-compliance.mdc +0 -244
  336. package/cursor-rules/04-testing-standards.mdc +0 -268
  337. package/cursor-rules/05-bug-reports-and-features.mdc +0 -246
  338. package/cursor-rules/06-code-quality.mdc +0 -309
  339. package/cursor-rules/07-tech-stack-compliance.mdc +0 -214
  340. package/cursor-rules/CHANGELOG.md +0 -119
  341. package/cursor-rules/README.md +0 -192
  342. package/dist/DataTable-AOVNCPTX.js +0 -175
  343. package/dist/DataTable-AOVNCPTX.js.map +0 -1
  344. package/dist/UnifiedAuthProvider-4SBX4LU5.js +0 -18
  345. package/dist/UnifiedAuthProvider-4SBX4LU5.js.map +0 -1
  346. package/dist/api-O6HTBX5Y.js +0 -52
  347. package/dist/api-O6HTBX5Y.js.map +0 -1
  348. package/dist/audit-V53FV5AG.js +0 -17
  349. package/dist/audit-V53FV5AG.js.map +0 -1
  350. package/dist/chunk-5DRSZLL2.js.map +0 -1
  351. package/dist/chunk-63FOKYGO.js.map +0 -1
  352. package/dist/chunk-6COVEUS7.js.map +0 -1
  353. package/dist/chunk-AFVQODI2.js +0 -263
  354. package/dist/chunk-AFVQODI2.js.map +0 -1
  355. package/dist/chunk-DGUM43GV.js.map +0 -1
  356. package/dist/chunk-E66EQZE6.js.map +0 -1
  357. package/dist/chunk-EFN2EIMK.js.map +0 -1
  358. package/dist/chunk-FFQEQTNW.js.map +0 -1
  359. package/dist/chunk-FMUCXFII.js.map +0 -1
  360. package/dist/chunk-G37KK66H.js.map +0 -1
  361. package/dist/chunk-G7QEZTYQ.js +0 -2053
  362. package/dist/chunk-G7QEZTYQ.js.map +0 -1
  363. package/dist/chunk-HU2C6SSC.js.map +0 -1
  364. package/dist/chunk-IHB5DR3H.js.map +0 -1
  365. package/dist/chunk-IVOFDYWT.js.map +0 -1
  366. package/dist/chunk-J36DSWQK.js.map +0 -1
  367. package/dist/chunk-JGRYX5UX.js.map +0 -1
  368. package/dist/chunk-KQCRWDSA.js +0 -1
  369. package/dist/chunk-KQCRWDSA.js.map +0 -1
  370. package/dist/chunk-L4OXEN46.js.map +0 -1
  371. package/dist/chunk-LMC26NLJ.js +0 -84
  372. package/dist/chunk-LMC26NLJ.js.map +0 -1
  373. package/dist/chunk-M43Y4SSO.js.map +0 -1
  374. package/dist/chunk-M7MPQISP.js.map +0 -1
  375. package/dist/chunk-NTM7ZSB6.js.map +0 -1
  376. package/dist/chunk-PWLANIRT.js.map +0 -1
  377. package/dist/chunk-QXHPKYJV.js.map +0 -1
  378. package/dist/chunk-RGAWHO7N.js.map +0 -1
  379. package/dist/chunk-UPPMRMYG.js.map +0 -1
  380. package/dist/chunk-VBXEHIUJ.js.map +0 -1
  381. package/dist/chunk-ZSAAAMVR.js.map +0 -1
  382. package/dist/components.js.map +0 -1
  383. package/dist/contextValidator-5OGXSPKS.js +0 -9
  384. package/dist/contextValidator-5OGXSPKS.js.map +0 -1
  385. package/dist/eslint-rules/pace-core-compliance.cjs +0 -510
  386. package/dist/hooks.js.map +0 -1
  387. package/dist/index.js.map +0 -1
  388. package/dist/providers.js.map +0 -1
  389. package/dist/rbac/eslint-rules.js.map +0 -1
  390. package/dist/rbac/index.js.map +0 -1
  391. package/dist/styles/index.js.map +0 -1
  392. package/dist/theming/runtime.js.map +0 -1
  393. package/dist/types.js.map +0 -1
  394. package/dist/utils.js.map +0 -1
  395. package/docs/best-practices/README.md +0 -472
  396. package/docs/best-practices/accessibility.md +0 -601
  397. package/docs/best-practices/common-patterns.md +0 -516
  398. package/docs/best-practices/deployment.md +0 -1103
  399. package/docs/best-practices/performance.md +0 -1328
  400. package/docs/best-practices/security.md +0 -940
  401. package/docs/best-practices/testing.md +0 -1034
  402. package/docs/rbac/compliance/compliance-guide.md +0 -544
  403. package/docs/standards/01-architecture-standard.md +0 -44
  404. package/docs/standards/02-api-and-rpc-standard.md +0 -39
  405. package/docs/standards/03-component-standard.md +0 -32
  406. package/docs/standards/04-code-style-standard.md +0 -32
  407. package/docs/standards/05-security-standard.md +0 -44
  408. package/docs/standards/06-testing-and-docs-standard.md +0 -29
  409. package/docs/standards/pace-core-compliance.md +0 -432
  410. package/scripts/audit/core/checks/accessibility.cjs +0 -197
  411. package/scripts/audit/core/checks/api-usage.cjs +0 -191
  412. package/scripts/audit/core/checks/bundle.cjs +0 -142
  413. package/scripts/audit/core/checks/compliance.cjs +0 -2706
  414. package/scripts/audit/core/checks/config.cjs +0 -54
  415. package/scripts/audit/core/checks/coverage.cjs +0 -84
  416. package/scripts/audit/core/checks/dependencies.cjs +0 -994
  417. package/scripts/audit/core/checks/documentation.cjs +0 -268
  418. package/scripts/audit/core/checks/environment.cjs +0 -116
  419. package/scripts/audit/core/checks/error-handling.cjs +0 -340
  420. package/scripts/audit/core/checks/forms.cjs +0 -172
  421. package/scripts/audit/core/checks/heuristics.cjs +0 -68
  422. package/scripts/audit/core/checks/hooks.cjs +0 -334
  423. package/scripts/audit/core/checks/imports.cjs +0 -244
  424. package/scripts/audit/core/checks/performance.cjs +0 -325
  425. package/scripts/audit/core/checks/routes.cjs +0 -117
  426. package/scripts/audit/core/checks/state.cjs +0 -130
  427. package/scripts/audit/core/checks/structure.cjs +0 -65
  428. package/scripts/audit/core/checks/style.cjs +0 -584
  429. package/scripts/audit/core/checks/testing.cjs +0 -122
  430. package/scripts/audit/core/checks/typescript.cjs +0 -61
  431. package/scripts/audit/core/scanner.cjs +0 -199
  432. package/scripts/audit/core/utils.cjs +0 -137
  433. package/scripts/audit/index.cjs +0 -223
  434. package/scripts/audit/reporters/console.cjs +0 -151
  435. package/scripts/audit/reporters/json.cjs +0 -54
  436. package/scripts/audit/reporters/markdown.cjs +0 -124
  437. package/scripts/audit-consuming-app.cjs +0 -86
  438. package/src/components/DataTable/components/DataTableBody.tsx +0 -454
  439. package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -156
  440. package/src/components/DataTable/components/ExpandButton.tsx +0 -113
  441. package/src/components/DataTable/components/GroupHeader.tsx +0 -54
  442. package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
  443. package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -525
  444. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -462
  445. package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +0 -393
  446. package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +0 -476
  447. package/src/components/DataTable/components/__tests__/VirtualizedDataTable.test.tsx +0 -128
  448. package/src/components/DataTable/core/DataTableContext.tsx +0 -216
  449. package/src/components/DataTable/core/__tests__/DataTableContext.test.tsx +0 -136
  450. package/src/components/DataTable/hooks/__tests__/useColumnReordering.test.ts +0 -570
  451. package/src/components/DataTable/hooks/useColumnReordering.ts +0 -123
  452. package/src/components/DataTable/utils/debugTools.ts +0 -514
  453. package/src/eslint-rules/pace-core-compliance.js +0 -638
  454. package/src/rbac/components/EnhancedNavigationMenu.test.tsx +0 -555
  455. package/src/rbac/components/EnhancedNavigationMenu.tsx +0 -293
  456. package/src/rbac/components/NavigationProvider.test.tsx +0 -481
  457. package/src/rbac/components/NavigationProvider.tsx +0 -345
  458. package/src/rbac/components/PagePermissionProvider.test.tsx +0 -476
  459. package/src/rbac/components/PagePermissionProvider.tsx +0 -279
  460. package/src/rbac/components/PermissionEnforcer.tsx +0 -312
  461. package/src/rbac/components/RoleBasedRouter.tsx +0 -440
  462. package/src/rbac/components/SecureDataProvider.test.tsx +0 -543
  463. package/src/rbac/components/SecureDataProvider.tsx +0 -339
  464. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -620
  465. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -726
  466. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -661
  467. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +0 -881
  468. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +0 -783
  469. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +0 -645
  470. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -659
  471. package/src/rbac/hooks/permissions/useCachedPermissions.ts +0 -79
  472. package/src/rbac/hooks/permissions/useHasAllPermissions.ts +0 -90
  473. package/src/rbac/hooks/permissions/useHasAnyPermission.ts +0 -90
@@ -129,23 +129,9 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
129
129
  - [RuntimeComplianceResult](undefined)
130
130
  - [SetupIssue](undefined)
131
131
  - [ComplianceResult](undefined)
132
- - [EnhancedNavigationMenuProps](undefined)
132
+ - [AccessDeniedProps](undefined)
133
133
  - [NavigationGuardProps](undefined)
134
- - [NavigationAccessRecord](undefined)
135
- - [NavigationContextType](undefined)
136
- - [NavigationProviderProps](undefined)
137
134
  - [PagePermissionGuardProps](undefined)
138
- - [PagePermissionContextType](undefined)
139
- - [PageAccessRecord](undefined)
140
- - [PagePermissionProviderProps](undefined)
141
- - [PermissionEnforcerProps](undefined)
142
- - [RouteConfig](undefined)
143
- - [RouteAccessRecord](undefined)
144
- - [RoleBasedRouterContextType](undefined)
145
- - [RoleBasedRouterProps](undefined)
146
- - [DataAccessRecord](undefined)
147
- - [SecureDataContextType](undefined)
148
- - [SecureDataProviderProps](undefined)
149
135
  - [RBACConfig](undefined)
150
136
  - [RBACLogger](undefined)
151
137
  - [UseResolvedScopeOptions](undefined)
@@ -391,15 +377,11 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
391
377
  - [OrganisationServiceProvider](undefined)
392
378
  - [useUnifiedAuth](undefined)
393
379
  - [UnifiedAuthProvider](undefined)
394
- - [PermissionGuard](undefined)
395
- - [AccessLevelGuard](undefined)
396
380
  - [withPermissionGuard](undefined)
397
381
  - [withAccessLevelGuard](undefined)
398
382
  - [withRoleGuard](undefined)
399
383
  - [createRBACMiddleware](undefined)
400
384
  - [createRBACExpressMiddleware](undefined)
401
- - [hasPermissionCached](undefined)
402
- - [hasAnyPermissionCached](undefined)
403
385
  - [setupRBAC](undefined)
404
386
  - [getAccessLevel](undefined)
405
387
  - [getPermissionMap](undefined)
@@ -407,7 +389,6 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
407
389
  - [getRoleContext](undefined)
408
390
  - [isPermitted](undefined)
409
391
  - [isPermittedCached](undefined)
410
- - [hasPermission](undefined)
411
392
  - [hasAnyPermission](undefined)
412
393
  - [hasAllPermissions](undefined)
413
394
  - [createAuditManager](undefined)
@@ -425,18 +406,9 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
425
406
  - [isRBACInitialized](undefined)
426
407
  - [getSetupIssues](undefined)
427
408
  - [validateRBACSetup](undefined)
428
- - [EnhancedNavigationMenu](undefined)
409
+ - [AccessDenied](undefined)
429
410
  - [NavigationGuard](undefined)
430
- - [NavigationProvider](undefined)
431
- - [useNavigationPermissions](undefined)
432
411
  - [PagePermissionGuard](undefined)
433
- - [PagePermissionProvider](undefined)
434
- - [usePagePermissions](undefined)
435
- - [PermissionEnforcer](undefined)
436
- - [RoleBasedRouter](undefined)
437
- - [useRoleBasedRouter](undefined)
438
- - [SecureDataProvider](undefined)
439
- - [useSecureData](undefined)
440
412
  - [createRBACConfig](undefined)
441
413
  - [getRBACConfig](undefined)
442
414
  - [getRBACLogger](undefined)
@@ -444,10 +416,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
444
416
  - [isDevelopmentMode](undefined)
445
417
  - [createRBACEngine](undefined)
446
418
  - [useAccessLevel](undefined)
447
- - [useCachedPermissions](undefined)
448
419
  - [useCan](undefined)
449
- - [useHasAllPermissions](undefined)
450
- - [useHasAnyPermission](undefined)
451
420
  - [useMultiplePermissions](undefined)
452
421
  - [usePermissions](undefined)
453
422
  - [useRBAC](undefined)
@@ -505,6 +474,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
505
474
  - [listFiles](undefined)
506
475
  - [downloadFile](undefined)
507
476
  - [archiveFile](undefined)
477
+ - [createBaseClient](undefined)
508
478
  - [formatInTimeZone](undefined)
509
479
  - [getTimezoneAbbreviation](undefined)
510
480
  - [formatTimeInTimeZone](undefined)
@@ -513,6 +483,9 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
513
483
  - [fromZonedTime](undefined)
514
484
  - [roundToNearestMinutes](undefined)
515
485
  - [getTimeZoneDifference](undefined)
486
+ - [sanitizeHtml](undefined)
487
+ - [sanitizeUserInput](undefined)
488
+ - [sanitizeFormData](undefined)
516
489
 
517
490
  ## Enumerations
518
491
 
@@ -784,7 +757,7 @@ Extends standard button HTML attributes.
784
757
 
785
758
  #### Defined in
786
759
 
787
- [packages/core/src/components/Button/Button.tsx:66](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Button/Button.tsx#L66)
760
+ [packages/core/src/components/Button/Button.tsx:70](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Button/Button.tsx#L70)
788
761
 
789
762
  ___
790
763
 
@@ -797,7 +770,7 @@ Extends DayPickerProps with pace-core specific customizations.
797
770
 
798
771
  #### Defined in
799
772
 
800
- [packages/core/src/components/Calendar/Calendar.tsx:96](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Calendar/Calendar.tsx#L96)
773
+ [packages/core/src/components/Calendar/Calendar.tsx:101](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Calendar/Calendar.tsx#L101)
801
774
 
802
775
  ___
803
776
 
@@ -854,7 +827,7 @@ Individual implementations should define more specific types
854
827
 
855
828
  #### Defined in
856
829
 
857
- [packages/core/src/components/DataTable/types.ts:44](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L44)
830
+ [packages/core/src/components/DataTable/types.ts:49](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L49)
858
831
 
859
832
  ___
860
833
 
@@ -872,7 +845,7 @@ Enhanced column definition that extends TanStack's ColumnDef
872
845
 
873
846
  #### Defined in
874
847
 
875
- [packages/core/src/components/DataTable/types.ts:258](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L258)
848
+ [packages/core/src/components/DataTable/types.ts:245](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L245)
876
849
 
877
850
  ___
878
851
 
@@ -891,7 +864,7 @@ Defines custom actions that can be performed on table rows.
891
864
 
892
865
  #### Defined in
893
866
 
894
- [packages/core/src/components/DataTable/types.ts:392](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L392)
867
+ [packages/core/src/components/DataTable/types.ts:379](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L379)
895
868
 
896
869
  ___
897
870
 
@@ -903,7 +876,7 @@ Toolbar button definition
903
876
 
904
877
  #### Defined in
905
878
 
906
- [packages/core/src/components/DataTable/types.ts:432](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L432)
879
+ [packages/core/src/components/DataTable/types.ts:419](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L419)
907
880
 
908
881
  ___
909
882
 
@@ -915,7 +888,7 @@ Aggregate configuration
915
888
 
916
889
  #### Defined in
917
890
 
918
- [packages/core/src/components/DataTable/types.ts:454](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L454)
891
+ [packages/core/src/components/DataTable/types.ts:441](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L441)
919
892
 
920
893
  ___
921
894
 
@@ -927,7 +900,7 @@ Empty state configuration
927
900
 
928
901
  #### Defined in
929
902
 
930
- [packages/core/src/components/DataTable/types.ts:463](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L463)
903
+ [packages/core/src/components/DataTable/types.ts:450](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L450)
931
904
 
932
905
  ___
933
906
 
@@ -964,7 +937,7 @@ Options provided to the onExport handler for custom export functionality
964
937
 
965
938
  #### Defined in
966
939
 
967
- [packages/core/src/components/DataTable/types.ts:641](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L641)
940
+ [packages/core/src/components/DataTable/types.ts:628](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L628)
968
941
 
969
942
  ___
970
943
 
@@ -988,7 +961,7 @@ Props for the Dialog root component
988
961
 
989
962
  #### Defined in
990
963
 
991
- [packages/core/src/components/Dialog/Dialog.tsx:161](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L161)
964
+ [packages/core/src/components/Dialog/Dialog.tsx:167](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L167)
992
965
 
993
966
  ___
994
967
 
@@ -1000,7 +973,7 @@ Props for the DialogTrigger component
1000
973
 
1001
974
  #### Defined in
1002
975
 
1003
- [packages/core/src/components/Dialog/Dialog.tsx:172](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L172)
976
+ [packages/core/src/components/Dialog/Dialog.tsx:178](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L178)
1004
977
 
1005
978
  ___
1006
979
 
@@ -1013,7 +986,7 @@ Uses semantic HTML dialog element
1013
986
 
1014
987
  #### Defined in
1015
988
 
1016
- [packages/core/src/components/Dialog/Dialog.tsx:184](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L184)
989
+ [packages/core/src/components/Dialog/Dialog.tsx:190](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L190)
1017
990
 
1018
991
  ___
1019
992
 
@@ -1025,7 +998,7 @@ Props for the DialogPortal component
1025
998
 
1026
999
  #### Defined in
1027
1000
 
1028
- [packages/core/src/components/Dialog/Dialog.tsx:223](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L223)
1001
+ [packages/core/src/components/Dialog/Dialog.tsx:231](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L231)
1029
1002
 
1030
1003
  ___
1031
1004
 
@@ -1037,7 +1010,9 @@ Props for the DialogClose component
1037
1010
 
1038
1011
  #### Defined in
1039
1012
 
1040
- [packages/core/src/components/Dialog/Dialog.tsx:231](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L231)
1013
+ [packages/core/src/components/Dialog/Dialog.tsx:239](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L239)
1014
+
1015
+ [packages/core/src/components/Dialog/Dialog.tsx:1365](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L1365)
1041
1016
 
1042
1017
  ___
1043
1018
 
@@ -1049,7 +1024,7 @@ Props for the DialogHeader component (semantic header element)
1049
1024
 
1050
1025
  #### Defined in
1051
1026
 
1052
- [packages/core/src/components/Dialog/Dialog.tsx:237](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L237)
1027
+ [packages/core/src/components/Dialog/Dialog.tsx:245](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L245)
1053
1028
 
1054
1029
  ___
1055
1030
 
@@ -1061,7 +1036,7 @@ Props for the DialogFooter component (semantic footer element)
1061
1036
 
1062
1037
  #### Defined in
1063
1038
 
1064
- [packages/core/src/components/Dialog/Dialog.tsx:246](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L246)
1039
+ [packages/core/src/components/Dialog/Dialog.tsx:254](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L254)
1065
1040
 
1066
1041
  ___
1067
1042
 
@@ -1073,7 +1048,7 @@ Props for the DialogBody component (semantic main element)
1073
1048
 
1074
1049
  #### Defined in
1075
1050
 
1076
- [packages/core/src/components/Dialog/Dialog.tsx:255](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L255)
1051
+ [packages/core/src/components/Dialog/Dialog.tsx:263](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L263)
1077
1052
 
1078
1053
  ___
1079
1054
 
@@ -1085,7 +1060,7 @@ State interface for the ErrorBoundary component
1085
1060
 
1086
1061
  #### Defined in
1087
1062
 
1088
- [packages/core/src/components/ErrorBoundary/ErrorBoundary.tsx:126](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ErrorBoundary/ErrorBoundary.tsx#L126)
1063
+ [packages/core/src/components/ErrorBoundary/ErrorBoundary.tsx:127](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ErrorBoundary/ErrorBoundary.tsx#L127)
1089
1064
 
1090
1065
  ___
1091
1066
 
@@ -1097,7 +1072,7 @@ Props interface for the ErrorBoundary component
1097
1072
 
1098
1073
  #### Defined in
1099
1074
 
1100
- [packages/core/src/components/ErrorBoundary/ErrorBoundary.tsx:143](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ErrorBoundary/ErrorBoundary.tsx#L143)
1075
+ [packages/core/src/components/ErrorBoundary/ErrorBoundary.tsx:144](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ErrorBoundary/ErrorBoundary.tsx#L144)
1101
1076
 
1102
1077
  ___
1103
1078
 
@@ -1132,7 +1107,7 @@ Configures file upload behavior including storage location, validation, and call
1132
1107
 
1133
1108
  #### Defined in
1134
1109
 
1135
- [packages/core/src/components/FileUpload/FileUpload.tsx:22](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/FileUpload/FileUpload.tsx#L22)
1110
+ [packages/core/src/components/FileUpload/FileUpload.tsx:26](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/FileUpload/FileUpload.tsx#L26)
1136
1111
 
1137
1112
  ___
1138
1113
 
@@ -1162,7 +1137,7 @@ Props for the Form component
1162
1137
 
1163
1138
  #### Defined in
1164
1139
 
1165
- [packages/core/src/components/Form/Form.tsx:83](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L83)
1140
+ [packages/core/src/components/Form/Form.tsx:88](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L88)
1166
1141
 
1167
1142
  ___
1168
1143
 
@@ -1181,7 +1156,7 @@ Props for the FormField component
1181
1156
 
1182
1157
  #### Defined in
1183
1158
 
1184
- [packages/core/src/components/Form/Form.tsx:172](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L172)
1159
+ [packages/core/src/components/Form/Form.tsx:533](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L533)
1185
1160
 
1186
1161
  ___
1187
1162
 
@@ -1266,7 +1241,7 @@ Configures the application layout including navigation, header, and footer.
1266
1241
 
1267
1242
  #### Defined in
1268
1243
 
1269
- [packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:130](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx#L130)
1244
+ [packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:132](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx#L132)
1270
1245
 
1271
1246
  ___
1272
1247
 
@@ -1668,7 +1643,7 @@ ___
1668
1643
 
1669
1644
  #### Defined in
1670
1645
 
1671
- [packages/core/src/rbac/compliance/runtime-compliance.ts:13](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/compliance/runtime-compliance.ts#L13)
1646
+ [packages/core/src/rbac/compliance/runtime-compliance.ts:14](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/compliance/runtime-compliance.ts#L14)
1672
1647
 
1673
1648
  ___
1674
1649
 
@@ -1692,13 +1667,13 @@ ___
1692
1667
 
1693
1668
  ___
1694
1669
 
1695
- ### EnhancedNavigationMenuProps
1670
+ ### AccessDeniedProps
1696
1671
 
1697
- • **EnhancedNavigationMenuProps**: Interface EnhancedNavigationMenuProps
1672
+ • **AccessDeniedProps**: Interface AccessDeniedProps
1698
1673
 
1699
1674
  #### Defined in
1700
1675
 
1701
- [packages/core/src/rbac/components/EnhancedNavigationMenu.tsx:63](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/EnhancedNavigationMenu.tsx#L63)
1676
+ [packages/core/src/rbac/components/AccessDenied.tsx:46](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/AccessDenied.tsx#L46)
1702
1677
 
1703
1678
  ___
1704
1679
 
@@ -1708,37 +1683,7 @@ ___
1708
1683
 
1709
1684
  #### Defined in
1710
1685
 
1711
- [packages/core/src/rbac/components/NavigationGuard.tsx:75](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationGuard.tsx#L75)
1712
-
1713
- ___
1714
-
1715
- ### NavigationAccessRecord
1716
-
1717
- • **NavigationAccessRecord**: Interface NavigationAccessRecord
1718
-
1719
- #### Defined in
1720
-
1721
- [packages/core/src/rbac/components/NavigationProvider.tsx:99](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationProvider.tsx#L99)
1722
-
1723
- ___
1724
-
1725
- ### NavigationContextType
1726
-
1727
- • **NavigationContextType**: Interface NavigationContextType
1728
-
1729
- #### Defined in
1730
-
1731
- [packages/core/src/rbac/components/NavigationProvider.tsx:111](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationProvider.tsx#L111)
1732
-
1733
- ___
1734
-
1735
- ### NavigationProviderProps
1736
-
1737
- • **NavigationProviderProps**: Interface NavigationProviderProps
1738
-
1739
- #### Defined in
1740
-
1741
- [packages/core/src/rbac/components/NavigationProvider.tsx:137](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationProvider.tsx#L137)
1686
+ [packages/core/src/rbac/components/NavigationGuard.tsx:76](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationGuard.tsx#L76)
1742
1687
 
1743
1688
  ___
1744
1689
 
@@ -1748,117 +1693,7 @@ ___
1748
1693
 
1749
1694
  #### Defined in
1750
1695
 
1751
- [packages/core/src/rbac/components/PagePermissionGuard.tsx:78](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionGuard.tsx#L78)
1752
-
1753
- ___
1754
-
1755
- ### PagePermissionContextType
1756
-
1757
- • **PagePermissionContextType**: Interface PagePermissionContextType
1758
-
1759
- #### Defined in
1760
-
1761
- [packages/core/src/rbac/components/PagePermissionProvider.tsx:65](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionProvider.tsx#L65)
1762
-
1763
- ___
1764
-
1765
- ### PageAccessRecord
1766
-
1767
- • **PageAccessRecord**: Interface PageAccessRecord
1768
-
1769
- #### Defined in
1770
-
1771
- [packages/core/src/rbac/components/PagePermissionProvider.tsx:88](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionProvider.tsx#L88)
1772
-
1773
- ___
1774
-
1775
- ### PagePermissionProviderProps
1776
-
1777
- • **PagePermissionProviderProps**: Interface PagePermissionProviderProps
1778
-
1779
- #### Defined in
1780
-
1781
- [packages/core/src/rbac/components/PagePermissionProvider.tsx:98](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionProvider.tsx#L98)
1782
-
1783
- ___
1784
-
1785
- ### PermissionEnforcerProps
1786
-
1787
- • **PermissionEnforcerProps**: Interface PermissionEnforcerProps
1788
-
1789
- #### Defined in
1790
-
1791
- [packages/core/src/rbac/components/PermissionEnforcer.tsx:79](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PermissionEnforcer.tsx#L79)
1792
-
1793
- ___
1794
-
1795
- ### RouteConfig
1796
-
1797
- • **RouteConfig**: Interface RouteConfig
1798
-
1799
- #### Defined in
1800
-
1801
- [packages/core/src/rbac/components/RoleBasedRouter.tsx:74](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/RoleBasedRouter.tsx#L74)
1802
-
1803
- ___
1804
-
1805
- ### RouteAccessRecord
1806
-
1807
- • **RouteAccessRecord**: Interface RouteAccessRecord
1808
-
1809
- #### Defined in
1810
-
1811
- [packages/core/src/rbac/components/RoleBasedRouter.tsx:108](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/RoleBasedRouter.tsx#L108)
1812
-
1813
- ___
1814
-
1815
- ### RoleBasedRouterContextType
1816
-
1817
- • **RoleBasedRouterContextType**: Interface RoleBasedRouterContextType
1818
-
1819
- #### Defined in
1820
-
1821
- [packages/core/src/rbac/components/RoleBasedRouter.tsx:120](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/RoleBasedRouter.tsx#L120)
1822
-
1823
- ___
1824
-
1825
- ### RoleBasedRouterProps
1826
-
1827
- • **RoleBasedRouterProps**: Interface RoleBasedRouterProps
1828
-
1829
- #### Defined in
1830
-
1831
- [packages/core/src/rbac/components/RoleBasedRouter.tsx:143](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/RoleBasedRouter.tsx#L143)
1832
-
1833
- ___
1834
-
1835
- ### DataAccessRecord
1836
-
1837
- • **DataAccessRecord**: Interface DataAccessRecord
1838
-
1839
- #### Defined in
1840
-
1841
- [packages/core/src/rbac/components/SecureDataProvider.tsx:67](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/SecureDataProvider.tsx#L67)
1842
-
1843
- ___
1844
-
1845
- ### SecureDataContextType
1846
-
1847
- • **SecureDataContextType**: Interface SecureDataContextType
1848
-
1849
- #### Defined in
1850
-
1851
- [packages/core/src/rbac/components/SecureDataProvider.tsx:78](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/SecureDataProvider.tsx#L78)
1852
-
1853
- ___
1854
-
1855
- ### SecureDataProviderProps
1856
-
1857
- • **SecureDataProviderProps**: Interface SecureDataProviderProps
1858
-
1859
- #### Defined in
1860
-
1861
- [packages/core/src/rbac/components/SecureDataProvider.tsx:104](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/SecureDataProvider.tsx#L104)
1696
+ [packages/core/src/rbac/components/PagePermissionGuard.tsx:79](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionGuard.tsx#L79)
1862
1697
 
1863
1698
  ___
1864
1699
 
@@ -1898,7 +1733,7 @@ ___
1898
1733
 
1899
1734
  #### Defined in
1900
1735
 
1901
- [packages/core/src/rbac/hooks/useResolvedScope.ts:40](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L40)
1736
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:42](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L42)
1902
1737
 
1903
1738
  ___
1904
1739
 
@@ -1908,7 +1743,7 @@ ___
1908
1743
 
1909
1744
  #### Defined in
1910
1745
 
1911
- [packages/core/src/rbac/hooks/useResourcePermissions.ts:51](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResourcePermissions.ts#L51)
1746
+ [packages/core/src/rbac/hooks/useResourcePermissions.ts:54](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResourcePermissions.ts#L54)
1912
1747
 
1913
1748
  ___
1914
1749
 
@@ -1918,7 +1753,7 @@ ___
1918
1753
 
1919
1754
  #### Defined in
1920
1755
 
1921
- [packages/core/src/rbac/hooks/useResourcePermissions.ts:58](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResourcePermissions.ts#L58)
1756
+ [packages/core/src/rbac/hooks/useResourcePermissions.ts:61](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResourcePermissions.ts#L61)
1922
1757
 
1923
1758
  ___
1924
1759
 
@@ -2509,7 +2344,7 @@ RowId
2509
2344
 
2510
2345
  #### Defined in
2511
2346
 
2512
- [packages/core/src/components/DataTable/types.ts:56](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L56)
2347
+ [packages/core/src/components/DataTable/types.ts:61](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L61)
2513
2348
 
2514
2349
  ___
2515
2350
 
@@ -2523,7 +2358,7 @@ ergonomic while maintaining strict internal guarantees.
2523
2358
 
2524
2359
  #### Defined in
2525
2360
 
2526
- [packages/core/src/components/DataTable/types.ts:531](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L531)
2361
+ [packages/core/src/components/DataTable/types.ts:518](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L518)
2527
2362
 
2528
2363
  ___
2529
2364
 
@@ -2535,7 +2370,7 @@ Dialog size variants
2535
2370
 
2536
2371
  #### Defined in
2537
2372
 
2538
- [packages/core/src/components/Dialog/Dialog.tsx:131](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L131)
2373
+ [packages/core/src/components/Dialog/Dialog.tsx:135](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L135)
2539
2374
 
2540
2375
  ___
2541
2376
 
@@ -3428,7 +3263,7 @@ ReactNode
3428
3263
 
3429
3264
  #### Defined in
3430
3265
 
3431
- [packages/core/src/components/Button/Button.tsx:119](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Button/Button.tsx#L119)
3266
+ [packages/core/src/components/Button/Button.tsx:123](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Button/Button.tsx#L123)
3432
3267
 
3433
3268
  ___
3434
3269
 
@@ -3450,7 +3285,7 @@ JSX.Element - The rendered calendar element
3450
3285
 
3451
3286
  #### Defined in
3452
3287
 
3453
- [packages/core/src/components/Calendar/Calendar.tsx:192](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Calendar/Calendar.tsx#L192)
3288
+ [packages/core/src/components/Calendar/Calendar.tsx:197](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Calendar/Calendar.tsx#L197)
3454
3289
 
3455
3290
  ___
3456
3291
 
@@ -4091,7 +3926,7 @@ ReactNode
4091
3926
 
4092
3927
  #### Defined in
4093
3928
 
4094
- [packages/core/src/components/Dialog/Dialog.tsx:304](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L304)
3929
+ [packages/core/src/components/Dialog/Dialog.tsx:312](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L312)
4095
3930
 
4096
3931
  ___
4097
3932
 
@@ -4111,7 +3946,7 @@ ReactNode
4111
3946
 
4112
3947
  #### Defined in
4113
3948
 
4114
- [packages/core/src/components/Dialog/Dialog.tsx:345](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L345)
3949
+ [packages/core/src/components/Dialog/Dialog.tsx:380](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L380)
4115
3950
 
4116
3951
  ___
4117
3952
 
@@ -4131,9 +3966,9 @@ ReactNode \| Promise\<ReactNode\>
4131
3966
 
4132
3967
  #### Defined in
4133
3968
 
4134
- [packages/core/src/components/Dialog/Dialog.tsx:382](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L382)
3969
+ [packages/core/src/components/Dialog/Dialog.tsx:417](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L417)
4135
3970
 
4136
- [packages/core/src/components/Dialog/Dialog.tsx:394](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L394)
3971
+ [packages/core/src/components/Dialog/Dialog.tsx:429](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L429)
4137
3972
 
4138
3973
  ___
4139
3974
 
@@ -4155,7 +3990,7 @@ JSX.Element - The semantic dialog content with overlay and optional close button
4155
3990
 
4156
3991
  #### Defined in
4157
3992
 
4158
- [packages/core/src/components/Dialog/Dialog.tsx:523](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L523)
3993
+ [packages/core/src/components/Dialog/Dialog.tsx:641](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L641)
4159
3994
 
4160
3995
  ___
4161
3996
 
@@ -4175,7 +4010,7 @@ ReactNode
4175
4010
 
4176
4011
  #### Defined in
4177
4012
 
4178
- [packages/core/src/components/Dialog/Dialog.tsx:715](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L715)
4013
+ [packages/core/src/components/Dialog/Dialog.tsx:1374](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L1374)
4179
4014
 
4180
4015
  ___
4181
4016
 
@@ -4195,7 +4030,7 @@ Element
4195
4030
 
4196
4031
  #### Defined in
4197
4032
 
4198
- [packages/core/src/components/Dialog/Dialog.tsx:742](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L742)
4033
+ [packages/core/src/components/Dialog/Dialog.tsx:1426](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L1426)
4199
4034
 
4200
4035
  ___
4201
4036
 
@@ -4215,7 +4050,7 @@ Element
4215
4050
 
4216
4051
  #### Defined in
4217
4052
 
4218
- [packages/core/src/components/Dialog/Dialog.tsx:762](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L762)
4053
+ [packages/core/src/components/Dialog/Dialog.tsx:1446](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L1446)
4219
4054
 
4220
4055
  ___
4221
4056
 
@@ -4235,7 +4070,7 @@ Element
4235
4070
 
4236
4071
  #### Defined in
4237
4072
 
4238
- [packages/core/src/components/Dialog/Dialog.tsx:830](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L830)
4073
+ [packages/core/src/components/Dialog/Dialog.tsx:1548](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L1548)
4239
4074
 
4240
4075
  ___
4241
4076
 
@@ -4255,7 +4090,7 @@ ReactNode
4255
4090
 
4256
4091
  #### Defined in
4257
4092
 
4258
- [packages/core/src/components/Dialog/Dialog.tsx:850](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L850)
4093
+ [packages/core/src/components/Dialog/Dialog.tsx:1568](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L1568)
4259
4094
 
4260
4095
  ___
4261
4096
 
@@ -4275,7 +4110,7 @@ ReactNode
4275
4110
 
4276
4111
  #### Defined in
4277
4112
 
4278
- [packages/core/src/components/Dialog/Dialog.tsx:889](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L889)
4113
+ [packages/core/src/components/Dialog/Dialog.tsx:1607](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L1607)
4279
4114
 
4280
4115
  ___
4281
4116
 
@@ -4345,7 +4180,7 @@ The rendered file display
4345
4180
 
4346
4181
  #### Defined in
4347
4182
 
4348
- [packages/core/src/components/FileDisplay/FileDisplay.tsx:955](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/FileDisplay/FileDisplay.tsx#L955)
4183
+ [packages/core/src/components/FileDisplay/FileDisplay.tsx:961](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/FileDisplay/FileDisplay.tsx#L961)
4349
4184
 
4350
4185
  ___
4351
4186
 
@@ -4365,7 +4200,7 @@ Element
4365
4200
 
4366
4201
  #### Defined in
4367
4202
 
4368
- [packages/core/src/components/FileUpload/FileUpload.tsx:54](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/FileUpload/FileUpload.tsx#L54)
4203
+ [packages/core/src/components/FileUpload/FileUpload.tsx:58](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/FileUpload/FileUpload.tsx#L58)
4369
4204
 
4370
4205
  ___
4371
4206
 
@@ -4430,7 +4265,7 @@ JSX.Element - The rendered form with FormProvider context
4430
4265
 
4431
4266
  #### Defined in
4432
4267
 
4433
- [packages/core/src/components/Form/Form.tsx:142](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L142)
4268
+ [packages/core/src/components/Form/Form.tsx:147](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L147)
4434
4269
 
4435
4270
  ___
4436
4271
 
@@ -4522,7 +4357,7 @@ JSX.Element - The rendered form field with validation
4522
4357
 
4523
4358
  #### Defined in
4524
4359
 
4525
- [packages/core/src/components/Form/Form.tsx:307](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L307)
4360
+ [packages/core/src/components/Form/Form.tsx:668](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L668)
4526
4361
 
4527
4362
  ___
4528
4363
 
@@ -4871,7 +4706,7 @@ function AdminApp() {
4871
4706
 
4872
4707
  #### Defined in
4873
4708
 
4874
- [packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:353](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx#L353)
4709
+ [packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:355](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx#L355)
4875
4710
 
4876
4711
  ___
4877
4712
 
@@ -5116,7 +4951,7 @@ ___
5116
4951
 
5117
4952
  | Name | Type | Description |
5118
4953
  | :------ | :------ | :------ |
5119
- | `props` | SelectProps & UseSelectStateProps & RefAttributes\<HTMLFormElement\> | Select configuration |
4954
+ | `props` | SelectProps & UseSelectStateProps & RefAttributes\<HTMLFieldSetElement\> | Select configuration |
5120
4955
 
5121
4956
  #### Returns
5122
4957
 
@@ -5148,7 +4983,7 @@ The rendered select trigger
5148
4983
 
5149
4984
  #### Defined in
5150
4985
 
5151
- [packages/core/src/components/Select/Select.tsx:235](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L235)
4986
+ [packages/core/src/components/Select/Select.tsx:233](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L233)
5152
4987
 
5153
4988
  ___
5154
4989
 
@@ -5214,7 +5049,7 @@ The rendered select item
5214
5049
 
5215
5050
  #### Defined in
5216
5051
 
5217
- [packages/core/src/components/Select/Select.tsx:555](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L555)
5052
+ [packages/core/src/components/Select/Select.tsx:553](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L553)
5218
5053
 
5219
5054
  ___
5220
5055
 
@@ -5226,7 +5061,7 @@ ___
5226
5061
 
5227
5062
  | Name | Type | Description |
5228
5063
  | :------ | :------ | :------ |
5229
- | `props` | Object & RefAttributes\<HTMLDivElement\> | Select group configuration |
5064
+ | `props` | Object & RefAttributes\<HTMLUListElement\> | Select group configuration |
5230
5065
 
5231
5066
  #### Returns
5232
5067
 
@@ -5236,7 +5071,7 @@ The rendered select group
5236
5071
 
5237
5072
  #### Defined in
5238
5073
 
5239
- [packages/core/src/components/Select/Select.tsx:658](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L658)
5074
+ [packages/core/src/components/Select/Select.tsx:663](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L663)
5240
5075
 
5241
5076
  ___
5242
5077
 
@@ -5248,7 +5083,7 @@ ___
5248
5083
 
5249
5084
  | Name | Type | Description |
5250
5085
  | :------ | :------ | :------ |
5251
- | `props` | Object & RefAttributes\<HTMLDivElement\> | Select label configuration |
5086
+ | `props` | Object & RefAttributes\<HTMLLIElement\> | Select label configuration |
5252
5087
 
5253
5088
  #### Returns
5254
5089
 
@@ -5258,7 +5093,7 @@ The rendered select label
5258
5093
 
5259
5094
  #### Defined in
5260
5095
 
5261
- [packages/core/src/components/Select/Select.tsx:677](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L677)
5096
+ [packages/core/src/components/Select/Select.tsx:688](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L688)
5262
5097
 
5263
5098
  ___
5264
5099
 
@@ -5270,7 +5105,7 @@ ___
5270
5105
 
5271
5106
  | Name | Type | Description |
5272
5107
  | :------ | :------ | :------ |
5273
- | `props` | Object & RefAttributes\<HTMLDivElement\> | Select separator configuration |
5108
+ | `props` | Object & RefAttributes\<HTMLHRElement\> | Select separator configuration |
5274
5109
 
5275
5110
  #### Returns
5276
5111
 
@@ -5280,7 +5115,7 @@ The rendered select separator
5280
5115
 
5281
5116
  #### Defined in
5282
5117
 
5283
- [packages/core/src/components/Select/Select.tsx:696](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L696)
5118
+ [packages/core/src/components/Select/Select.tsx:707](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L707)
5284
5119
 
5285
5120
  ___
5286
5121
 
@@ -5962,7 +5797,7 @@ void
5962
5797
 
5963
5798
  #### Defined in
5964
5799
 
5965
- [packages/core/src/hooks/public/usePublicEvent.ts:413](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEvent.ts#L413)
5800
+ [packages/core/src/hooks/public/usePublicEvent.ts:285](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEvent.ts#L285)
5966
5801
 
5967
5802
  ___
5968
5803
 
@@ -5983,7 +5818,7 @@ Object
5983
5818
 
5984
5819
  #### Defined in
5985
5820
 
5986
- [packages/core/src/hooks/public/usePublicEvent.ts:424](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEvent.ts#L424)
5821
+ [packages/core/src/hooks/public/usePublicEvent.ts:296](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEvent.ts#L296)
5987
5822
 
5988
5823
  ___
5989
5824
 
@@ -6030,7 +5865,7 @@ void
6030
5865
 
6031
5866
  #### Defined in
6032
5867
 
6033
- [packages/core/src/hooks/public/usePublicEventLogo.ts:275](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEventLogo.ts#L275)
5868
+ [packages/core/src/hooks/public/usePublicEventLogo.ts:285](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEventLogo.ts#L285)
6034
5869
 
6035
5870
  ___
6036
5871
 
@@ -6051,7 +5886,7 @@ Object
6051
5886
 
6052
5887
  #### Defined in
6053
5888
 
6054
- [packages/core/src/hooks/public/usePublicEventLogo.ts:286](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEventLogo.ts#L286)
5889
+ [packages/core/src/hooks/public/usePublicEventLogo.ts:296](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEventLogo.ts#L296)
6055
5890
 
6056
5891
  ___
6057
5892
 
@@ -6320,7 +6155,7 @@ void
6320
6155
 
6321
6156
  #### Defined in
6322
6157
 
6323
- [packages/core/src/hooks/useEventTheme.ts:101](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useEventTheme.ts#L101)
6158
+ [packages/core/src/hooks/useEventTheme.ts:98](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useEventTheme.ts#L98)
6324
6159
 
6325
6160
  ___
6326
6161
 
@@ -6699,7 +6534,7 @@ UseSessionRestorationResult
6699
6534
 
6700
6535
  #### Defined in
6701
6536
 
6702
- [packages/core/src/hooks/useSessionRestoration.ts:32](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useSessionRestoration.ts#L32)
6537
+ [packages/core/src/hooks/useSessionRestoration.ts:34](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useSessionRestoration.ts#L34)
6703
6538
 
6704
6539
  ___
6705
6540
 
@@ -6899,127 +6734,7 @@ The unified auth provider
6899
6734
 
6900
6735
  #### Defined in
6901
6736
 
6902
- [packages/core/src/providers/services/UnifiedAuthProvider.tsx:797](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/services/UnifiedAuthProvider.tsx#L797)
6903
-
6904
- ___
6905
-
6906
- ### PermissionGuard
6907
-
6908
- ▸ **PermissionGuard**(`«destructured»`): React.ReactNode
6909
-
6910
- Permission Guard Component
6911
-
6912
- A React component that conditionally renders children based on permissions.
6913
- Can auto-infer userId from context if not provided.
6914
-
6915
- #### Parameters
6916
-
6917
- | Name | Type | Default value |
6918
- | :------ | :------ | :------ |
6919
- | `«destructured»` | Object | `undefined` |
6920
- | › `userId?` | string | `undefined` |
6921
- | › `scope` | Object | `undefined` |
6922
- | › `scope.organisationId` | string | `undefined` |
6923
- | › `scope.eventId?` | string | `undefined` |
6924
- | › `scope.appId?` | string | `undefined` |
6925
- | › `permission` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` | `undefined` |
6926
- | › `pageId?` | string | `undefined` |
6927
- | › `children` | ReactNode | `undefined` |
6928
- | › `fallback?` | ReactNode | `null` |
6929
- | › `onDenied?` | Function | `undefined` |
6930
- | › `loading?` | ReactNode | `null` |
6931
- | › `strictMode?` | boolean | `true` |
6932
- | › `auditLog?` | boolean | `true` |
6933
- | › `enforceAudit?` | boolean | `true` |
6934
-
6935
- #### Returns
6936
-
6937
- React.ReactNode
6938
-
6939
- **`Example`**
6940
-
6941
- ```tsx
6942
- // With explicit userId and scope
6943
- <PermissionGuard
6944
- userId="user-123"
6945
- scope={{ organisationId: 'org-456' }}
6946
- permission="update:events"
6947
- pageId="page-789"
6948
- fallback={<AccessDenied />}
6949
- >
6950
- <AdminPanel />
6951
- </PermissionGuard>
6952
-
6953
- // With context inference (requires auth context)
6954
- <PermissionGuard
6955
- permission="update:events"
6956
- scope={{ organisationId: 'org-456' }}
6957
- fallback={<AccessDenied />}
6958
- >
6959
- <AdminPanel />
6960
- </PermissionGuard>
6961
- ```
6962
-
6963
- #### Defined in
6964
-
6965
- [packages/core/src/rbac/adapters.tsx:50](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L50)
6966
-
6967
- ___
6968
-
6969
- ### AccessLevelGuard
6970
-
6971
- ▸ **AccessLevelGuard**(`«destructured»`): React.ReactNode
6972
-
6973
- Access Level Guard Component
6974
-
6975
- A React component that conditionally renders children based on access level.
6976
- Can auto-infer userId from context if not provided.
6977
-
6978
- #### Parameters
6979
-
6980
- | Name | Type | Default value |
6981
- | :------ | :------ | :------ |
6982
- | `«destructured»` | Object | `undefined` |
6983
- | › `userId?` | string | `undefined` |
6984
- | › `scope` | Object | `undefined` |
6985
- | › `scope.organisationId` | string | `undefined` |
6986
- | › `scope.eventId?` | string | `undefined` |
6987
- | › `scope.appId?` | string | `undefined` |
6988
- | › `minLevel` | "viewer" \| "participant" \| "planner" \| "admin" \| "super" | `undefined` |
6989
- | › `children` | ReactNode | `undefined` |
6990
- | › `fallback?` | ReactNode | `null` |
6991
- | › `loading?` | ReactNode | `null` |
6992
-
6993
- #### Returns
6994
-
6995
- React.ReactNode
6996
-
6997
- **`Example`**
6998
-
6999
- ```tsx
7000
- // With explicit userId and scope
7001
- <AccessLevelGuard
7002
- userId="user-123"
7003
- scope={{ organisationId: 'org-456' }}
7004
- minLevel="admin"
7005
- fallback={<AccessDenied />}
7006
- >
7007
- <AdminPanel />
7008
- </AccessLevelGuard>
7009
-
7010
- // With context inference (requires auth context)
7011
- <AccessLevelGuard
7012
- minLevel="admin"
7013
- scope={{ organisationId: 'org-456' }}
7014
- fallback={<AccessDenied />}
7015
- >
7016
- <AdminPanel />
7017
- </AccessLevelGuard>
7018
- ```
7019
-
7020
- #### Defined in
7021
-
7022
- [packages/core/src/rbac/adapters.tsx:190](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L190)
6737
+ [packages/core/src/providers/services/UnifiedAuthProvider.tsx:756](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/services/UnifiedAuthProvider.tsx#L756)
7023
6738
 
7024
6739
  ___
7025
6740
 
@@ -7078,7 +6793,7 @@ const protectedHandler = withPermissionGuard(
7078
6793
 
7079
6794
  #### Defined in
7080
6795
 
7081
- [packages/core/src/rbac/adapters.tsx:280](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L280)
6796
+ [packages/core/src/rbac/adapters.tsx:43](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L43)
7082
6797
 
7083
6798
  ___
7084
6799
 
@@ -7135,7 +6850,7 @@ const adminHandler = withAccessLevelGuard(
7135
6850
 
7136
6851
  #### Defined in
7137
6852
 
7138
- [packages/core/src/rbac/adapters.tsx:337](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L337)
6853
+ [packages/core/src/rbac/adapters.tsx:100](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L100)
7139
6854
 
7140
6855
  ___
7141
6856
 
@@ -7201,7 +6916,7 @@ const adminHandler = withRoleGuard(
7201
6916
 
7202
6917
  #### Defined in
7203
6918
 
7204
- [packages/core/src/rbac/adapters.tsx:398](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L398)
6919
+ [packages/core/src/rbac/adapters.tsx:161](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L161)
7205
6920
 
7206
6921
  ___
7207
6922
 
@@ -7264,7 +6979,7 @@ export default createRBACMiddleware({
7264
6979
 
7265
6980
  #### Defined in
7266
6981
 
7267
- [packages/core/src/rbac/adapters.tsx:521](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L521)
6982
+ [packages/core/src/rbac/adapters.tsx:284](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L284)
7268
6983
 
7269
6984
  ___
7270
6985
 
@@ -7323,67 +7038,7 @@ app.use(createRBACExpressMiddleware({
7323
7038
 
7324
7039
  #### Defined in
7325
7040
 
7326
- [packages/core/src/rbac/adapters.tsx:588](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L588)
7327
-
7328
- ___
7329
-
7330
- ### hasPermissionCached
7331
-
7332
- ▸ **hasPermissionCached**(`userId`, `scope`, `_permission`, `_pageId?`): boolean
7333
-
7334
- Check if a user has a permission (synchronous cache check only)
7335
-
7336
- #### Parameters
7337
-
7338
- | Name | Type | Description |
7339
- | :------ | :------ | :------ |
7340
- | `userId` | string | User ID |
7341
- | `scope` | Object | Permission scope |
7342
- | `scope.organisationId` | string | - |
7343
- | `scope.eventId?` | string | - |
7344
- | `scope.appId?` | string | - |
7345
- | `_permission` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` | - |
7346
- | `_pageId?` | string | - |
7347
-
7348
- #### Returns
7349
-
7350
- boolean
7351
-
7352
- True if permission is cached and granted
7353
-
7354
- #### Defined in
7355
-
7356
- [packages/core/src/rbac/adapters.tsx:636](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L636)
7357
-
7358
- ___
7359
-
7360
- ### hasAnyPermissionCached
7361
-
7362
- ▸ **hasAnyPermissionCached**(`userId`, `scope`, `permissions`, `pageId?`): boolean
7363
-
7364
- Check if a user has any of the specified permissions (synchronous cache check only)
7365
-
7366
- #### Parameters
7367
-
7368
- | Name | Type | Description |
7369
- | :------ | :------ | :------ |
7370
- | `userId` | string | User ID |
7371
- | `scope` | Object | Permission scope |
7372
- | `scope.organisationId` | string | - |
7373
- | `scope.eventId?` | string | - |
7374
- | `scope.appId?` | string | - |
7375
- | `permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\`)[] | Array of permissions to check |
7376
- | `pageId?` | string | Optional page ID |
7377
-
7378
- #### Returns
7379
-
7380
- boolean
7381
-
7382
- True if any permission is cached and granted
7383
-
7384
- #### Defined in
7385
-
7386
- [packages/core/src/rbac/adapters.tsx:661](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L661)
7041
+ [packages/core/src/rbac/adapters.tsx:351](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L351)
7387
7042
 
7388
7043
  ___
7389
7044
 
@@ -7596,30 +7251,6 @@ Promise resolving to permission result
7596
7251
 
7597
7252
  ___
7598
7253
 
7599
- ### hasPermission
7600
-
7601
- ▸ **hasPermission**(`input`): Promise\<boolean\>
7602
-
7603
- Check if a user has a specific permission (alias for isPermitted)
7604
-
7605
- #### Parameters
7606
-
7607
- | Name | Type | Description |
7608
- | :------ | :------ | :------ |
7609
- | `input` | PermissionCheck | Permission check parameters |
7610
-
7611
- #### Returns
7612
-
7613
- Promise\<boolean\>
7614
-
7615
- Promise<boolean> - True if user has permission
7616
-
7617
- #### Defined in
7618
-
7619
- [packages/core/src/rbac/api.ts:499](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L499)
7620
-
7621
- ___
7622
-
7623
7254
  ### hasAnyPermission
7624
7255
 
7625
7256
  ▸ **hasAnyPermission**(`input`): Promise\<boolean\>
@@ -7644,7 +7275,7 @@ Promise resolving to true if user has any permission
7644
7275
 
7645
7276
  #### Defined in
7646
7277
 
7647
- [packages/core/src/rbac/api.ts:509](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L509)
7278
+ [packages/core/src/rbac/api.ts:499](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L499)
7648
7279
 
7649
7280
  ___
7650
7281
 
@@ -7672,7 +7303,7 @@ Promise resolving to true if user has all permissions
7672
7303
 
7673
7304
  #### Defined in
7674
7305
 
7675
- [packages/core/src/rbac/api.ts:537](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L537)
7306
+ [packages/core/src/rbac/api.ts:527](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L527)
7676
7307
 
7677
7308
  ___
7678
7309
 
@@ -7802,7 +7433,7 @@ Get quick fix suggestions for custom auth code
7802
7433
  | Name | Type |
7803
7434
  | :------ | :------ |
7804
7435
  | `customCodeName` | string |
7805
- | `type` | "component" \| "hook" \| "util" |
7436
+ | `type` | "hook" \| "component" \| "util" |
7806
7437
 
7807
7438
  #### Returns
7808
7439
 
@@ -7903,7 +7534,7 @@ Runtime compliance result
7903
7534
 
7904
7535
  #### Defined in
7905
7536
 
7906
- [packages/core/src/rbac/compliance/runtime-compliance.ts:34](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/compliance/runtime-compliance.ts#L34)
7537
+ [packages/core/src/rbac/compliance/runtime-compliance.ts:36](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/compliance/runtime-compliance.ts#L36)
7907
7538
 
7908
7539
  ___
7909
7540
 
@@ -7922,7 +7553,7 @@ void
7922
7553
 
7923
7554
  #### Defined in
7924
7555
 
7925
- [packages/core/src/rbac/compliance/runtime-compliance.ts:72](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/compliance/runtime-compliance.ts#L72)
7556
+ [packages/core/src/rbac/compliance/runtime-compliance.ts:74](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/compliance/runtime-compliance.ts#L74)
7926
7557
 
7927
7558
  ___
7928
7559
 
@@ -7980,30 +7611,30 @@ Compliance result with issues and recommendations
7980
7611
 
7981
7612
  ___
7982
7613
 
7983
- ### EnhancedNavigationMenu
7614
+ ### AccessDenied
7984
7615
 
7985
- ▸ **EnhancedNavigationMenu**(`props`): Element
7616
+ ▸ **AccessDenied**(`props`): Element
7986
7617
 
7987
- EnhancedNavigationMenu - Secure navigation menu with RBAC integration
7618
+ Standard access denied component
7988
7619
 
7989
- This component provides a navigation menu that automatically filters items based on
7990
- user permissions and enforces strict security controls.
7620
+ This component is displayed when users lack the necessary permissions.
7621
+ It provides clear messaging and actionable next steps.
7991
7622
 
7992
7623
  #### Parameters
7993
7624
 
7994
7625
  | Name | Type | Description |
7995
7626
  | :------ | :------ | :------ |
7996
- | `props` | EnhancedNavigationMenuProps | Component props |
7627
+ | `props` | AccessDeniedProps | Component configuration |
7997
7628
 
7998
7629
  #### Returns
7999
7630
 
8000
7631
  Element
8001
7632
 
8002
- React element with enhanced navigation menu
7633
+ JSX.Element - The rendered access denied page
8003
7634
 
8004
7635
  #### Defined in
8005
7636
 
8006
- [packages/core/src/rbac/components/EnhancedNavigationMenu.tsx:113](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/EnhancedNavigationMenu.tsx#L113)
7637
+ [packages/core/src/rbac/components/AccessDenied.tsx:78](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/AccessDenied.tsx#L78)
8007
7638
 
8008
7639
  ___
8009
7640
 
@@ -8031,303 +7662,79 @@ React element with navigation permission enforcement
8031
7662
 
8032
7663
  #### Defined in
8033
7664
 
8034
- [packages/core/src/rbac/components/NavigationGuard.tsx:114](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationGuard.tsx#L114)
7665
+ [packages/core/src/rbac/components/NavigationGuard.tsx:115](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationGuard.tsx#L115)
8035
7666
 
8036
7667
  ___
8037
7668
 
8038
- ### NavigationProvider
8039
-
8040
- ▸ **NavigationProvider**(`props`): Element
8041
-
8042
- NavigationProvider - Manages navigation-level permissions across the app
7669
+ ### PagePermissionGuard
8043
7670
 
8044
- This provider ensures that all navigation items are properly protected and provides
8045
- centralized navigation permission management with strict enforcement.
7671
+ **PagePermissionGuard**(`props`): ReactNode
8046
7672
 
8047
7673
  #### Parameters
8048
7674
 
8049
- | Name | Type | Description |
8050
- | :------ | :------ | :------ |
8051
- | `props` | NavigationProviderProps | Provider props |
7675
+ | Name | Type |
7676
+ | :------ | :------ |
7677
+ | `props` | PagePermissionGuardProps |
8052
7678
 
8053
7679
  #### Returns
8054
7680
 
8055
- Element
8056
-
8057
- React element with navigation permission context
7681
+ ReactNode
8058
7682
 
8059
7683
  #### Defined in
8060
7684
 
8061
- [packages/core/src/rbac/components/NavigationProvider.tsx:168](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationProvider.tsx#L168)
7685
+ [packages/core/src/rbac/components/PagePermissionGuard.tsx:521](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionGuard.tsx#L521)
8062
7686
 
8063
7687
  ___
8064
7688
 
8065
- ### useNavigationPermissions
8066
-
8067
- ▸ **useNavigationPermissions**(): NavigationContextType
8068
-
8069
- Hook to use navigation permission context
7689
+ ### createRBACConfig
8070
7690
 
8071
- #### Returns
7691
+ **createRBACConfig**(`config`): RBACConfig
8072
7692
 
8073
- NavigationContextType
7693
+ #### Parameters
8074
7694
 
8075
- Navigation permission context
7695
+ | Name | Type |
7696
+ | :------ | :------ |
7697
+ | `config` | RBACConfig |
8076
7698
 
8077
- **`Throws`**
7699
+ #### Returns
8078
7700
 
8079
- Error if used outside of NavigationProvider
7701
+ RBACConfig
8080
7702
 
8081
7703
  #### Defined in
8082
7704
 
8083
- [packages/core/src/rbac/components/NavigationProvider.tsx:335](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationProvider.tsx#L335)
7705
+ [packages/core/src/rbac/config.ts:121](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L121)
8084
7706
 
8085
7707
  ___
8086
7708
 
8087
- ### PagePermissionGuard
8088
-
8089
- ▸ **PagePermissionGuard**(`props`): ReactNode
8090
-
8091
- #### Parameters
7709
+ ### getRBACConfig
8092
7710
 
8093
- | Name | Type |
8094
- | :------ | :------ |
8095
- | `props` | PagePermissionGuardProps |
7711
+ **getRBACConfig**(): RBACConfig \| null
8096
7712
 
8097
7713
  #### Returns
8098
7714
 
8099
- ReactNode
7715
+ RBACConfig \| null
8100
7716
 
8101
7717
  #### Defined in
8102
7718
 
8103
- [packages/core/src/rbac/components/PagePermissionGuard.tsx:541](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionGuard.tsx#L541)
7719
+ [packages/core/src/rbac/config.ts:126](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L126)
8104
7720
 
8105
7721
  ___
8106
7722
 
8107
- ### PagePermissionProvider
8108
-
8109
- ▸ **PagePermissionProvider**(`props`): Element
8110
-
8111
- PagePermissionProvider - Manages page-level permissions across the app
8112
-
8113
- This provider ensures that all pages are properly protected and provides
8114
- centralized page permission management with strict enforcement.
8115
-
8116
- #### Parameters
7723
+ ### getRBACLogger
8117
7724
 
8118
- | Name | Type | Description |
8119
- | :------ | :------ | :------ |
8120
- | `props` | PagePermissionProviderProps | Provider props |
7725
+ **getRBACLogger**(): RBACLogger
8121
7726
 
8122
7727
  #### Returns
8123
7728
 
8124
- Element
8125
-
8126
- React element with page permission context
7729
+ RBACLogger
8127
7730
 
8128
7731
  #### Defined in
8129
7732
 
8130
- [packages/core/src/rbac/components/PagePermissionProvider.tsx:129](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionProvider.tsx#L129)
7733
+ [packages/core/src/rbac/config.ts:130](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L130)
8131
7734
 
8132
7735
  ___
8133
7736
 
8134
- ### usePagePermissions
8135
-
8136
- ▸ **usePagePermissions**(): PagePermissionContextType
8137
-
8138
- Hook to use page permission context
8139
-
8140
- #### Returns
8141
-
8142
- PagePermissionContextType
8143
-
8144
- Page permission context
8145
-
8146
- **`Throws`**
8147
-
8148
- Error if used outside of PagePermissionProvider
8149
-
8150
- #### Defined in
8151
-
8152
- [packages/core/src/rbac/components/PagePermissionProvider.tsx:269](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionProvider.tsx#L269)
8153
-
8154
- ___
8155
-
8156
- ### PermissionEnforcer
8157
-
8158
- ▸ **PermissionEnforcer**(`props`): Element
8159
-
8160
- PermissionEnforcer - Enforces permissions for operations
8161
-
8162
- This component ensures that users can only perform operations they have permission for.
8163
- It integrates with the existing RBAC system and provides strict enforcement to
8164
- prevent apps from bypassing permission checks.
8165
-
8166
- #### Parameters
8167
-
8168
- | Name | Type | Description |
8169
- | :------ | :------ | :------ |
8170
- | `props` | PermissionEnforcerProps | Component props |
8171
-
8172
- #### Returns
8173
-
8174
- Element
8175
-
8176
- React element with permission enforcement
8177
-
8178
- #### Defined in
8179
-
8180
- [packages/core/src/rbac/components/PermissionEnforcer.tsx:121](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PermissionEnforcer.tsx#L121)
8181
-
8182
- ___
8183
-
8184
- ### RoleBasedRouter
8185
-
8186
- ▸ **RoleBasedRouter**(`props`): Element
8187
-
8188
- RoleBasedRouter - Centralized routing control with role-based protection
8189
-
8190
- This component ensures that all routes are properly protected and provides
8191
- centralized routing control to prevent apps from bypassing route protection.
8192
-
8193
- #### Parameters
8194
-
8195
- | Name | Type | Description |
8196
- | :------ | :------ | :------ |
8197
- | `props` | RoleBasedRouterProps | Router props |
8198
-
8199
- #### Returns
8200
-
8201
- Element
8202
-
8203
- React element with role-based routing
8204
-
8205
- #### Defined in
8206
-
8207
- [packages/core/src/rbac/components/RoleBasedRouter.tsx:183](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/RoleBasedRouter.tsx#L183)
8208
-
8209
- ___
8210
-
8211
- ### useRoleBasedRouter
8212
-
8213
- ▸ **useRoleBasedRouter**(): RoleBasedRouterContextType
8214
-
8215
- Hook to use role-based router context
8216
-
8217
- #### Returns
8218
-
8219
- RoleBasedRouterContextType
8220
-
8221
- Role-based router context
8222
-
8223
- **`Throws`**
8224
-
8225
- Error if used outside of RoleBasedRouter
8226
-
8227
- #### Defined in
8228
-
8229
- [packages/core/src/rbac/components/RoleBasedRouter.tsx:403](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/RoleBasedRouter.tsx#L403)
8230
-
8231
- ___
8232
-
8233
- ### SecureDataProvider
8234
-
8235
- ▸ **SecureDataProvider**(`props`): Element
8236
-
8237
- SecureDataProvider - Prevents direct Supabase access and enforces secure data patterns
8238
-
8239
- This provider ensures that all data access goes through the secure RBAC system
8240
- and prevents apps from bypassing data access controls.
8241
-
8242
- #### Parameters
8243
-
8244
- | Name | Type | Description |
8245
- | :------ | :------ | :------ |
8246
- | `props` | SecureDataProviderProps | Provider props |
8247
-
8248
- #### Returns
8249
-
8250
- Element
8251
-
8252
- React element with secure data context
8253
-
8254
- #### Defined in
8255
-
8256
- [packages/core/src/rbac/components/SecureDataProvider.tsx:138](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/SecureDataProvider.tsx#L138)
8257
-
8258
- ___
8259
-
8260
- ### useSecureData
8261
-
8262
- ▸ **useSecureData**(): SecureDataContextType
8263
-
8264
- Hook to use secure data context
8265
-
8266
- #### Returns
8267
-
8268
- SecureDataContextType
8269
-
8270
- Secure data context
8271
-
8272
- **`Throws`**
8273
-
8274
- Error if used outside of SecureDataProvider
8275
-
8276
- #### Defined in
8277
-
8278
- [packages/core/src/rbac/components/SecureDataProvider.tsx:329](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/SecureDataProvider.tsx#L329)
8279
-
8280
- ___
8281
-
8282
- ### createRBACConfig
8283
-
8284
- ▸ **createRBACConfig**(`config`): RBACConfig
8285
-
8286
- #### Parameters
8287
-
8288
- | Name | Type |
8289
- | :------ | :------ |
8290
- | `config` | RBACConfig |
8291
-
8292
- #### Returns
8293
-
8294
- RBACConfig
8295
-
8296
- #### Defined in
8297
-
8298
- [packages/core/src/rbac/config.ts:121](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L121)
8299
-
8300
- ___
8301
-
8302
- ### getRBACConfig
8303
-
8304
- ▸ **getRBACConfig**(): RBACConfig \| null
8305
-
8306
- #### Returns
8307
-
8308
- RBACConfig \| null
8309
-
8310
- #### Defined in
8311
-
8312
- [packages/core/src/rbac/config.ts:126](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L126)
8313
-
8314
- ___
8315
-
8316
- ### getRBACLogger
8317
-
8318
- ▸ **getRBACLogger**(): RBACLogger
8319
-
8320
- #### Returns
8321
-
8322
- RBACLogger
8323
-
8324
- #### Defined in
8325
-
8326
- [packages/core/src/rbac/config.ts:130](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L130)
8327
-
8328
- ___
8329
-
8330
- ### isDebugMode
7737
+ ### isDebugMode
8331
7738
 
8332
7739
  ▸ **isDebugMode**(): boolean
8333
7740
 
@@ -8430,57 +7837,6 @@ function MyComponent() {
8430
7837
 
8431
7838
  ___
8432
7839
 
8433
- ### useCachedPermissions
8434
-
8435
- ▸ **useCachedPermissions**(`userId`, `scope`): Object
8436
-
8437
- Hook to get cached permissions with TTL management
8438
-
8439
- #### Parameters
8440
-
8441
- | Name | Type | Description |
8442
- | :------ | :------ | :------ |
8443
- | `userId` | string | User ID |
8444
- | `scope` | Scope | Scope for permission checking |
8445
-
8446
- #### Returns
8447
-
8448
- Object
8449
-
8450
- Cached permission state and methods
8451
-
8452
- | Name | Type |
8453
- | :------ | :------ |
8454
- | `permissions` | PermissionMap |
8455
- | `isLoading` | boolean |
8456
- | `error` | Error \| null |
8457
- | `invalidateCache` | Function |
8458
- | `refetch` | Function |
8459
-
8460
- **`Example`**
8461
-
8462
- ```tsx
8463
- function MyComponent() {
8464
- const { permissions, isLoading, error, invalidateCache } = useCachedPermissions(userId, scope);
8465
-
8466
- if (isLoading) return <div>Loading cached permissions...</div>;
8467
- if (error) return <div>Error: {error.message}</div>;
8468
-
8469
- return (
8470
- <div>
8471
- {permissions['read:users'] && <UserList />}
8472
- <button onClick={invalidateCache}>Refresh Permissions</button>
8473
- </div>
8474
- );
8475
- }
8476
- ```
8477
-
8478
- #### Defined in
8479
-
8480
- [packages/core/src/rbac/hooks/permissions/useCachedPermissions.ts:30](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/permissions/useCachedPermissions.ts#L30)
8481
-
8482
- ___
8483
-
8484
7840
  ### useCan
8485
7841
 
8486
7842
  ▸ **useCan**(`userId`, `scope`, `permission`, `pageId?`, `useCache?`, `precomputedSuperAdmin?`, `appName?`): Object
@@ -8531,108 +7887,6 @@ function MyComponent() {
8531
7887
 
8532
7888
  ___
8533
7889
 
8534
- ### useHasAllPermissions
8535
-
8536
- ▸ **useHasAllPermissions**(`userId`, `scope`, `permissions`, `useCache?`): Object
8537
-
8538
- Hook to check if user has all of the specified permissions
8539
-
8540
- #### Parameters
8541
-
8542
- | Name | Type | Default value | Description |
8543
- | :------ | :------ | :------ | :------ |
8544
- | `userId` | string | `undefined` | User ID |
8545
- | `scope` | Scope | `undefined` | Scope for permission checking |
8546
- | `permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\`)[] | `undefined` | Array of permissions to check |
8547
- | `useCache` | boolean | `true` | Whether to use cached results |
8548
-
8549
- #### Returns
8550
-
8551
- Object
8552
-
8553
- Whether user has all of the permissions
8554
-
8555
- | Name | Type |
8556
- | :------ | :------ |
8557
- | `hasAll` | boolean |
8558
- | `isLoading` | boolean |
8559
- | `error` | Error \| null |
8560
- | `refetch` | Function |
8561
-
8562
- **`Example`**
8563
-
8564
- ```tsx
8565
- function MyComponent() {
8566
- const { hasAll, isLoading, error } = useHasAllPermissions(
8567
- userId,
8568
- scope,
8569
- ['read:users', 'create:users', 'update:users']
8570
- );
8571
-
8572
- if (isLoading) return <div>Checking permissions...</div>;
8573
- if (error) return <div>Error: {error.message}</div>;
8574
-
8575
- return hasAll ? <FullUserManagementPanel /> : <div>Insufficient permissions</div>;
8576
- }
8577
- ```
8578
-
8579
- #### Defined in
8580
-
8581
- [packages/core/src/rbac/hooks/permissions/useHasAllPermissions.ts:31](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/permissions/useHasAllPermissions.ts#L31)
8582
-
8583
- ___
8584
-
8585
- ### useHasAnyPermission
8586
-
8587
- ▸ **useHasAnyPermission**(`userId`, `scope`, `permissions`, `useCache?`): Object
8588
-
8589
- Hook to check if user has any of the specified permissions
8590
-
8591
- #### Parameters
8592
-
8593
- | Name | Type | Default value | Description |
8594
- | :------ | :------ | :------ | :------ |
8595
- | `userId` | string | `undefined` | User ID |
8596
- | `scope` | Scope | `undefined` | Scope for permission checking |
8597
- | `permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\`)[] | `undefined` | Array of permissions to check |
8598
- | `useCache` | boolean | `true` | Whether to use cached results |
8599
-
8600
- #### Returns
8601
-
8602
- Object
8603
-
8604
- Whether user has any of the permissions
8605
-
8606
- | Name | Type |
8607
- | :------ | :------ |
8608
- | `hasAny` | boolean |
8609
- | `isLoading` | boolean |
8610
- | `error` | Error \| null |
8611
- | `refetch` | Function |
8612
-
8613
- **`Example`**
8614
-
8615
- ```tsx
8616
- function MyComponent() {
8617
- const { hasAny, isLoading, error } = useHasAnyPermission(
8618
- userId,
8619
- scope,
8620
- ['read:users', 'create:users']
8621
- );
8622
-
8623
- if (isLoading) return <div>Checking permissions...</div>;
8624
- if (error) return <div>Error: {error.message}</div>;
8625
-
8626
- return hasAny ? <UserManagementPanel /> : <div>No user permissions</div>;
8627
- }
8628
- ```
8629
-
8630
- #### Defined in
8631
-
8632
- [packages/core/src/rbac/hooks/permissions/useHasAnyPermission.ts:31](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/permissions/useHasAnyPermission.ts#L31)
8633
-
8634
- ___
8635
-
8636
7890
  ### useMultiplePermissions
8637
7891
 
8638
7892
  ▸ **useMultiplePermissions**(`userId`, `scope`, `permissions`, `useCache?`): Object
@@ -8809,7 +8063,7 @@ const permission = useCan(userId, resolvedScope, permission);
8809
8063
 
8810
8064
  #### Defined in
8811
8065
 
8812
- [packages/core/src/rbac/hooks/useResolvedScope.ts:73](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L73)
8066
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:75](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L75)
8813
8067
 
8814
8068
  ___
8815
8069
 
@@ -8889,7 +8143,7 @@ function usePlanning() {
8889
8143
 
8890
8144
  #### Defined in
8891
8145
 
8892
- [packages/core/src/rbac/hooks/useResourcePermissions.ts:138](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResourcePermissions.ts#L138)
8146
+ [packages/core/src/rbac/hooks/useResourcePermissions.ts:141](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResourcePermissions.ts#L141)
8893
8147
 
8894
8148
  ___
8895
8149
 
@@ -9355,7 +8609,8 @@ ___
9355
8609
  Parse and normalize event_colours to PaletteData
9356
8610
 
9357
8611
  Supports input formats:
9358
- - Object with 'main', 'sec', 'acc' keys
8612
+ - Object with 'main', 'sec', 'acc' keys (standard format)
8613
+ - Object with 'ev-main', 'ev-sec', 'ev-acc' keys (database format with prefix)
9359
8614
  - JSON string that will be parsed
9360
8615
 
9361
8616
  Only includes explicitly defined color values. Does not fill
@@ -9387,9 +8642,22 @@ const palette = parseAndNormalizeEventColours(colours);
9387
8642
  // Returns: { main: { 500: {...}, raw: {...} }, sec: { 500: {...} }, acc: { 500: {...} } }
9388
8643
  ```
9389
8644
 
8645
+ **`Example`**
8646
+
8647
+ ```ts
8648
+ // Database format with ev- prefix
8649
+ const colours = {
8650
+ 'ev-main': { 500: { L: 0.5, C: 0.2, H: 0 } },
8651
+ 'ev-sec': { 500: { L: 0.5, C: 0.2, H: 120 } },
8652
+ 'ev-acc': { 500: { L: 0.5, C: 0.2, H: 240 } }
8653
+ };
8654
+ const palette = parseAndNormalizeEventColours(colours);
8655
+ // Returns: { main: { 500: {...} }, sec: { 500: {...} }, acc: { 500: {...} } }
8656
+ ```
8657
+
9390
8658
  #### Defined in
9391
8659
 
9392
- [packages/core/src/theming/parseEventColours.ts:42](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/parseEventColours.ts#L42)
8660
+ [packages/core/src/theming/parseEventColours.ts:52](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/parseEventColours.ts#L52)
9393
8661
 
9394
8662
  ___
9395
8663
 
@@ -10165,6 +9433,73 @@ Promise\<Object\>
10165
9433
 
10166
9434
  ___
10167
9435
 
9436
+ ### createBaseClient
9437
+
9438
+ ▸ **createBaseClient**(`supabaseUrl`, `supabaseKey`): SupabaseClient\<Database\>
9439
+
9440
+ Create a base Supabase client for UnifiedAuthProvider
9441
+
9442
+ **CRITICAL**: This function can ONLY be called from:
9443
+ - `src/main.tsx` (or `main.jsx`)
9444
+ - `src/App.tsx` (or `App.jsx`)
9445
+ - `src/lib/supabase.ts` (or `supabase.js`)
9446
+ - `src/supabase.ts` (or `supabase.js`)
9447
+
9448
+ **DO NOT** use this client directly for queries. Always use `useSecureSupabase()` hook instead.
9449
+
9450
+ The client is configured with explicit auth options to ensure consistent session persistence:
9451
+ - `persistSession: true` - Sessions are saved to localStorage and restored on page load/refresh
9452
+ - `autoRefreshToken: true` - Tokens are automatically refreshed before expiry
9453
+ - `detectSessionInUrl: true` - Detects and handles OAuth callback URLs
9454
+ - `flowType: 'pkce'` - Uses PKCE flow for enhanced security
9455
+
9456
+ This configuration ensures that users remain logged in after hard refresh (Cmd+Shift+R)
9457
+ and other browser navigation scenarios across all consuming apps.
9458
+
9459
+ #### Parameters
9460
+
9461
+ | Name | Type | Description |
9462
+ | :------ | :------ | :------ |
9463
+ | `supabaseUrl` | string | Supabase project URL |
9464
+ | `supabaseKey` | string | Supabase publishable key or anon key (accepts both legacy anon keys and modern publishable keys) |
9465
+
9466
+ #### Returns
9467
+
9468
+ SupabaseClient\<Database\>
9469
+
9470
+ Supabase client instance with auth configuration
9471
+
9472
+ **`Throws`**
9473
+
9474
+ If called from an unauthorized file location (development only)
9475
+
9476
+ **`Example`**
9477
+
9478
+ ```tsx
9479
+ // main.tsx
9480
+ import { createBaseClient } from '@jmruthers/pace-core';
9481
+ import { UnifiedAuthProvider } from '@jmruthers/pace-core';
9482
+
9483
+ const supabase = createBaseClient(
9484
+ import.meta.env.VITE_SUPABASE_URL,
9485
+ import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY
9486
+ );
9487
+
9488
+ function App() {
9489
+ return (
9490
+ <UnifiedAuthProvider supabaseClient={supabase} appName="MyApp">
9491
+ <YourApp />
9492
+ </UnifiedAuthProvider>
9493
+ );
9494
+ }
9495
+ ```
9496
+
9497
+ #### Defined in
9498
+
9499
+ [packages/core/src/utils/supabase/createBaseClient.ts:120](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/supabase/createBaseClient.ts#L120)
9500
+
9501
+ ___
9502
+
10168
9503
  ### formatInTimeZone
10169
9504
 
10170
9505
  ▸ **formatInTimeZone**(`date`, `timeZone`, `formatStr`): string
@@ -10415,3 +9750,98 @@ getTimeZoneDifference('America/New_York', 'America/Los_Angeles');
10415
9750
  #### Defined in
10416
9751
 
10417
9752
  [packages/core/src/utils/timezone/timezone.ts:264](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/timezone/timezone.ts#L264)
9753
+
9754
+ ___
9755
+
9756
+ ### sanitizeHtml
9757
+
9758
+ ▸ **sanitizeHtml**(`html`): string
9759
+
9760
+ Basic HTML sanitization function using regex-based approach
9761
+ Removes potentially dangerous elements and attributes while preserving basic formatting
9762
+ This approach is more reliable in SSR environments and doesn't require DOM manipulation
9763
+
9764
+ #### Parameters
9765
+
9766
+ | Name | Type | Description |
9767
+ | :------ | :------ | :------ |
9768
+ | `html` | string | The HTML string to sanitize |
9769
+
9770
+ #### Returns
9771
+
9772
+ string
9773
+
9774
+ Sanitized HTML string safe for rendering
9775
+
9776
+ **`Example`**
9777
+
9778
+ ```tsx
9779
+ const safeHtml = sanitizeHtml('<p>Hello <strong>world</strong>!</p>');
9780
+ // Returns: '<p>Hello <strong>world</strong>!</p>'
9781
+
9782
+ const dangerousHtml = sanitizeHtml('<script>alert("xss")</script><p>Safe content</p>');
9783
+ // Returns: '<p>Safe content</p>'
9784
+ ```
9785
+
9786
+ #### Defined in
9787
+
9788
+ [packages/core/src/utils/validation/htmlSanitization.ts:54](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/validation/htmlSanitization.ts#L54)
9789
+
9790
+ ___
9791
+
9792
+ ### sanitizeUserInput
9793
+
9794
+ ▸ **sanitizeUserInput**(`input`, `options?`): string
9795
+
9796
+ Sanitizes user input by removing potentially dangerous characters and patterns
9797
+
9798
+ #### Parameters
9799
+
9800
+ | Name | Type |
9801
+ | :------ | :------ |
9802
+ | `input` | string |
9803
+ | `options` | SanitizationOptions |
9804
+
9805
+ #### Returns
9806
+
9807
+ string
9808
+
9809
+ #### Defined in
9810
+
9811
+ [packages/core/src/utils/validation/sanitization.ts:40](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/validation/sanitization.ts#L40)
9812
+
9813
+ ___
9814
+
9815
+ ### sanitizeFormData
9816
+
9817
+ ▸ **sanitizeFormData**\<`T`\>(`data`, `schema`, `sanitizationRules?`): Object
9818
+
9819
+ Validates and sanitizes form data using Zod schemas
9820
+
9821
+ #### Type parameters
9822
+
9823
+ | Name |
9824
+ | :------ |
9825
+ | `T` |
9826
+
9827
+ #### Parameters
9828
+
9829
+ | Name | Type |
9830
+ | :------ | :------ |
9831
+ | `data` | unknown |
9832
+ | `schema` | ZodType\<T, ZodTypeDef, T\> |
9833
+ | `sanitizationRules?` | Record\<string, SanitizationOptions\> |
9834
+
9835
+ #### Returns
9836
+
9837
+ Object
9838
+
9839
+ | Name | Type |
9840
+ | :------ | :------ |
9841
+ | `success` | boolean |
9842
+ | `data?` | T |
9843
+ | `error?` | string |
9844
+
9845
+ #### Defined in
9846
+
9847
+ [packages/core/src/utils/validation/sanitization.ts:170](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/validation/sanitization.ts#L170)