@jmruthers/pace-core 0.2.4

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 (1009) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/README.md +299 -0
  3. package/dist/DataTable-BHlzyKZP.d.ts +116 -0
  4. package/dist/DataTable-GEY5U7OI.js +100 -0
  5. package/dist/DataTable-GEY5U7OI.js.map +1 -0
  6. package/dist/PublicLoadingSpinner-DztrzuJr.d.ts +3430 -0
  7. package/dist/UnifiedAuthProvider-w66zSCUf.d.ts +160 -0
  8. package/dist/api-GZHIDA4X.js +41 -0
  9. package/dist/api-GZHIDA4X.js.map +1 -0
  10. package/dist/appConfig-BVGyuvI7.d.ts +71 -0
  11. package/dist/appNameResolver-7GHF5ED2.js +22 -0
  12. package/dist/appNameResolver-7GHF5ED2.js.map +1 -0
  13. package/dist/audit-BUW3LMJB.js +16 -0
  14. package/dist/audit-BUW3LMJB.js.map +1 -0
  15. package/dist/chunk-22KLBHPS.js +29 -0
  16. package/dist/chunk-22KLBHPS.js.map +1 -0
  17. package/dist/chunk-24MKLB7U.js +81 -0
  18. package/dist/chunk-24MKLB7U.js.map +1 -0
  19. package/dist/chunk-2MKP6IYD.js +388 -0
  20. package/dist/chunk-2MKP6IYD.js.map +1 -0
  21. package/dist/chunk-2V3Y6YBC.js +114 -0
  22. package/dist/chunk-2V3Y6YBC.js.map +1 -0
  23. package/dist/chunk-5CDJCTOO.js +190 -0
  24. package/dist/chunk-5CDJCTOO.js.map +1 -0
  25. package/dist/chunk-6ZQVSHKL.js +1345 -0
  26. package/dist/chunk-6ZQVSHKL.js.map +1 -0
  27. package/dist/chunk-74C6SNEC.js +77 -0
  28. package/dist/chunk-74C6SNEC.js.map +1 -0
  29. package/dist/chunk-7BNPOCLL.js +178 -0
  30. package/dist/chunk-7BNPOCLL.js.map +1 -0
  31. package/dist/chunk-7JL3T7BO.js +3344 -0
  32. package/dist/chunk-7JL3T7BO.js.map +1 -0
  33. package/dist/chunk-CDQ3PX7L.js +18 -0
  34. package/dist/chunk-CDQ3PX7L.js.map +1 -0
  35. package/dist/chunk-DY5E3AT7.js +1734 -0
  36. package/dist/chunk-DY5E3AT7.js.map +1 -0
  37. package/dist/chunk-ETEJVKYK.js +6032 -0
  38. package/dist/chunk-ETEJVKYK.js.map +1 -0
  39. package/dist/chunk-I5Z3QH5X.js +32 -0
  40. package/dist/chunk-I5Z3QH5X.js.map +1 -0
  41. package/dist/chunk-MZBUOP4P.js +119 -0
  42. package/dist/chunk-MZBUOP4P.js.map +1 -0
  43. package/dist/chunk-N2EUGZRW.js +98 -0
  44. package/dist/chunk-N2EUGZRW.js.map +1 -0
  45. package/dist/chunk-NQ4TOOO6.js +20 -0
  46. package/dist/chunk-NQ4TOOO6.js.map +1 -0
  47. package/dist/chunk-OHXGNT3K.js +21 -0
  48. package/dist/chunk-OHXGNT3K.js.map +1 -0
  49. package/dist/chunk-OKXMUYIB.js +522 -0
  50. package/dist/chunk-OKXMUYIB.js.map +1 -0
  51. package/dist/chunk-PFRRIDYA.js +382 -0
  52. package/dist/chunk-PFRRIDYA.js.map +1 -0
  53. package/dist/chunk-PLDDJCW6.js +49 -0
  54. package/dist/chunk-PLDDJCW6.js.map +1 -0
  55. package/dist/chunk-SS3E6QLB.js +695 -0
  56. package/dist/chunk-SS3E6QLB.js.map +1 -0
  57. package/dist/chunk-TMRLB2LA.js +326 -0
  58. package/dist/chunk-TMRLB2LA.js.map +1 -0
  59. package/dist/chunk-WYB6MBZA.js +5533 -0
  60. package/dist/chunk-WYB6MBZA.js.map +1 -0
  61. package/dist/chunk-YDJW5XTN.js +84 -0
  62. package/dist/chunk-YDJW5XTN.js.map +1 -0
  63. package/dist/components.d.ts +1308 -0
  64. package/dist/components.js +3759 -0
  65. package/dist/components.js.map +1 -0
  66. package/dist/database-C3Szpi5J.d.ts +470 -0
  67. package/dist/hooks.d.ts +449 -0
  68. package/dist/hooks.js +612 -0
  69. package/dist/hooks.js.map +1 -0
  70. package/dist/index.d.ts +385 -0
  71. package/dist/index.js +569 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/organisation-CO3Sh3_D.d.ts +99 -0
  74. package/dist/providers.d.ts +45 -0
  75. package/dist/providers.js +36 -0
  76. package/dist/providers.js.map +1 -0
  77. package/dist/rbac/eslint-rules.d.ts +52 -0
  78. package/dist/rbac/eslint-rules.js +252 -0
  79. package/dist/rbac/eslint-rules.js.map +1 -0
  80. package/dist/rbac/index.d.ts +1918 -0
  81. package/dist/rbac/index.js +2212 -0
  82. package/dist/rbac/index.js.map +1 -0
  83. package/dist/styles/core.css +401 -0
  84. package/dist/styles/fonts/georama-italic.woff2 +0 -0
  85. package/dist/styles/fonts/georama.woff2 +0 -0
  86. package/dist/styles/fonts/open-sans-italic.woff2 +0 -0
  87. package/dist/styles/fonts/open-sans.woff2 +0 -0
  88. package/dist/styles/fonts/reddit-mono.woff2 +0 -0
  89. package/dist/styles/index.d.ts +36 -0
  90. package/dist/styles/index.js +24 -0
  91. package/dist/styles/index.js.map +1 -0
  92. package/dist/theming/runtime.d.ts +73 -0
  93. package/dist/theming/runtime.js +16 -0
  94. package/dist/theming/runtime.js.map +1 -0
  95. package/dist/types-CInEi-ng.d.ts +316 -0
  96. package/dist/types.d.ts +196 -0
  97. package/dist/types.js +83 -0
  98. package/dist/types.js.map +1 -0
  99. package/dist/unified-CM7T0aTK.d.ts +198 -0
  100. package/dist/useComponentPerformance-DE9l5RkL.d.ts +11 -0
  101. package/dist/usePublicRouteParams-B6i0KtXW.d.ts +477 -0
  102. package/dist/utils.d.ts +639 -0
  103. package/dist/utils.js +1103 -0
  104. package/dist/utils.js.map +1 -0
  105. package/dist/validation-PM_iOaTI.d.ts +159 -0
  106. package/dist/validation.d.ts +138 -0
  107. package/dist/validation.js +477 -0
  108. package/dist/validation.js.map +1 -0
  109. package/docs/INDEX.md +192 -0
  110. package/docs/README.md +165 -0
  111. package/docs/api/.nojekyll +1 -0
  112. package/docs/api/README.md +301 -0
  113. package/docs/api/classes/ErrorBoundary.md +144 -0
  114. package/docs/api/classes/PublicErrorBoundary.md +132 -0
  115. package/docs/api/interfaces/AggregateConfig.md +43 -0
  116. package/docs/api/interfaces/ButtonProps.md +53 -0
  117. package/docs/api/interfaces/CardProps.md +40 -0
  118. package/docs/api/interfaces/ColorPalette.md +7 -0
  119. package/docs/api/interfaces/ColorShade.md +41 -0
  120. package/docs/api/interfaces/DataTableAction.md +200 -0
  121. package/docs/api/interfaces/DataTableColumn.md +300 -0
  122. package/docs/api/interfaces/DataTableProps.md +517 -0
  123. package/docs/api/interfaces/DataTableToolbarButton.md +96 -0
  124. package/docs/api/interfaces/EmptyStateConfig.md +61 -0
  125. package/docs/api/interfaces/EventContextType.md +96 -0
  126. package/docs/api/interfaces/EventLogoProps.md +152 -0
  127. package/docs/api/interfaces/EventProviderProps.md +19 -0
  128. package/docs/api/interfaces/FileSizeLimits.md +7 -0
  129. package/docs/api/interfaces/FileUploadProps.md +154 -0
  130. package/docs/api/interfaces/FooterProps.md +105 -0
  131. package/docs/api/interfaces/InactivityWarningModalProps.md +115 -0
  132. package/docs/api/interfaces/InputProps.md +53 -0
  133. package/docs/api/interfaces/LabelProps.md +107 -0
  134. package/docs/api/interfaces/LoginFormProps.md +184 -0
  135. package/docs/api/interfaces/NavigationItem.md +176 -0
  136. package/docs/api/interfaces/NavigationMenuProps.md +236 -0
  137. package/docs/api/interfaces/Organisation.md +140 -0
  138. package/docs/api/interfaces/OrganisationContextType.md +377 -0
  139. package/docs/api/interfaces/OrganisationMembership.md +140 -0
  140. package/docs/api/interfaces/OrganisationProviderProps.md +19 -0
  141. package/docs/api/interfaces/OrganisationSecurityError.md +62 -0
  142. package/docs/api/interfaces/PaceAppLayoutProps.md +393 -0
  143. package/docs/api/interfaces/PaceLoginPageProps.md +34 -0
  144. package/docs/api/interfaces/PaletteData.md +41 -0
  145. package/docs/api/interfaces/PublicErrorBoundaryProps.md +94 -0
  146. package/docs/api/interfaces/PublicErrorBoundaryState.md +68 -0
  147. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +86 -0
  148. package/docs/api/interfaces/PublicPageFooterProps.md +112 -0
  149. package/docs/api/interfaces/PublicPageHeaderProps.md +138 -0
  150. package/docs/api/interfaces/PublicPageLayoutProps.md +138 -0
  151. package/docs/api/interfaces/StorageConfig.md +41 -0
  152. package/docs/api/interfaces/StorageFileInfo.md +74 -0
  153. package/docs/api/interfaces/StorageFileMetadata.md +140 -0
  154. package/docs/api/interfaces/StorageListOptions.md +86 -0
  155. package/docs/api/interfaces/StorageListResult.md +41 -0
  156. package/docs/api/interfaces/StorageUploadOptions.md +88 -0
  157. package/docs/api/interfaces/StorageUploadResult.md +63 -0
  158. package/docs/api/interfaces/StorageUrlOptions.md +47 -0
  159. package/docs/api/interfaces/StyleImport.md +19 -0
  160. package/docs/api/interfaces/ToastActionElement.md +9 -0
  161. package/docs/api/interfaces/ToastProps.md +9 -0
  162. package/docs/api/interfaces/UnifiedAuthContextType.md +1108 -0
  163. package/docs/api/interfaces/UnifiedAuthProviderProps.md +171 -0
  164. package/docs/api/interfaces/UseInactivityTrackerOptions.md +136 -0
  165. package/docs/api/interfaces/UseInactivityTrackerReturn.md +123 -0
  166. package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
  167. package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
  168. package/docs/api/interfaces/UsePublicEventOptions.md +34 -0
  169. package/docs/api/interfaces/UsePublicEventReturn.md +68 -0
  170. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +94 -0
  171. package/docs/api/interfaces/UserEventAccess.md +118 -0
  172. package/docs/api/interfaces/UserMenuProps.md +86 -0
  173. package/docs/api/interfaces/UserProfile.md +63 -0
  174. package/docs/api/modules.md +4153 -0
  175. package/docs/api-reference/components.md +1623 -0
  176. package/docs/api-reference/hooks.md +627 -0
  177. package/docs/api-reference/providers.md +487 -0
  178. package/docs/api-reference/types.md +1005 -0
  179. package/docs/api-reference/utilities.md +1104 -0
  180. package/docs/app.css.example +53 -0
  181. package/docs/architecture/README.md +577 -0
  182. package/docs/best-practices/README.md +400 -0
  183. package/docs/best-practices/deployment.md +1042 -0
  184. package/docs/best-practices/performance.md +789 -0
  185. package/docs/best-practices/security.md +881 -0
  186. package/docs/best-practices/testing.md +981 -0
  187. package/docs/consuming-app-example.md +290 -0
  188. package/docs/consuming-app-vite-config.md +233 -0
  189. package/docs/core-concepts/authentication.md +98 -0
  190. package/docs/core-concepts/events.md +756 -0
  191. package/docs/core-concepts/organisations.md +790 -0
  192. package/docs/core-concepts/permissions.md +729 -0
  193. package/docs/core-concepts/rbac-system.md +233 -0
  194. package/docs/database-schema-requirements.md +172 -0
  195. package/docs/documentation-style-checklist.md +294 -0
  196. package/docs/examples/navigation-menu-auth-fix.md +344 -0
  197. package/docs/getting-started/examples/README.md +106 -0
  198. package/docs/getting-started/examples/basic-auth-app.md +521 -0
  199. package/docs/getting-started/examples/full-featured-app.md +616 -0
  200. package/docs/getting-started/installation.md +269 -0
  201. package/docs/getting-started/quick-start.md +401 -0
  202. package/docs/implementation-guides/app-layout.md +983 -0
  203. package/docs/implementation-guides/data-tables.md +1898 -0
  204. package/docs/implementation-guides/dynamic-colors.md +195 -0
  205. package/docs/implementation-guides/forms.md +578 -0
  206. package/docs/implementation-guides/hierarchical-datatable.md +850 -0
  207. package/docs/implementation-guides/large-datasets.md +281 -0
  208. package/docs/implementation-guides/navigation.md +844 -0
  209. package/docs/implementation-guides/performance.md +403 -0
  210. package/docs/implementation-guides/permission-enforcement.md +764 -0
  211. package/docs/implementation-guides/public-pages.md +752 -0
  212. package/docs/migration/README.md +493 -0
  213. package/docs/migration/organisation-context-timing-fix.md +217 -0
  214. package/docs/migration/quick-migration-guide.md +320 -0
  215. package/docs/migration/rbac-migration.md +571 -0
  216. package/docs/migration/v0.4.15-tailwind-scanning.md +272 -0
  217. package/docs/migration/v0.4.16-css-first-approach.md +306 -0
  218. package/docs/migration/v0.4.17-source-path-fix.md +229 -0
  219. package/docs/migration-guide.md +168 -0
  220. package/docs/performance/README.md +551 -0
  221. package/docs/print-components/README.md +258 -0
  222. package/docs/print-components/api-reference.md +636 -0
  223. package/docs/print-components/examples/README.md +204 -0
  224. package/docs/print-components/examples/basic-report.tsx +92 -0
  225. package/docs/print-components/examples/card-catalog.tsx +149 -0
  226. package/docs/print-components/examples/cover-page-report.tsx +163 -0
  227. package/docs/print-components/quick-start.md +363 -0
  228. package/docs/quick-reference.md +576 -0
  229. package/docs/rbac/README.md +265 -0
  230. package/docs/rbac/advanced-patterns.md +776 -0
  231. package/docs/rbac/api-reference.md +1033 -0
  232. package/docs/rbac/examples.md +883 -0
  233. package/docs/rbac/getting-started.md +679 -0
  234. package/docs/rbac/quick-start.md +619 -0
  235. package/docs/rbac/super-admin-guide.md +592 -0
  236. package/docs/rbac/troubleshooting.md +316 -0
  237. package/docs/security/README.md +680 -0
  238. package/docs/security/checklist.md +343 -0
  239. package/docs/style-guide.md +522 -0
  240. package/docs/styles/README.md +319 -0
  241. package/docs/testing/README.md +874 -0
  242. package/docs/troubleshooting/README.md +497 -0
  243. package/docs/troubleshooting/common-issues.md +1563 -0
  244. package/docs/troubleshooting/database-view-compatibility.md +119 -0
  245. package/docs/troubleshooting/debugging.md +1117 -0
  246. package/docs/troubleshooting/migration.md +918 -0
  247. package/docs/troubleshooting/organisation-context-setup.md +277 -0
  248. package/docs/troubleshooting/react-hooks-issue-analysis.md +166 -0
  249. package/docs/troubleshooting/styling-issues.md +219 -0
  250. package/docs/troubleshooting/tailwind-content-scanning.md +213 -0
  251. package/docs/usage.md +175 -0
  252. package/docs/visual-testing.md +114 -0
  253. package/package.json +211 -0
  254. package/src/__mocks__/lucide-react.ts +181 -0
  255. package/src/__tests__/README.md +404 -0
  256. package/src/__tests__/debug-provider.unit.test.tsx +67 -0
  257. package/src/__tests__/e2e/workflows.test.tsx +373 -0
  258. package/src/__tests__/hybridPermissions.unit.test.tsx +474 -0
  259. package/src/__tests__/index.integration.test.ts +491 -0
  260. package/src/__tests__/mocks/MockAuthProvider-standalone.tsx +47 -0
  261. package/src/__tests__/mocks/MockAuthProvider.tsx +63 -0
  262. package/src/__tests__/mocks/enhancedSupabaseMock.ts +252 -0
  263. package/src/__tests__/mocks/index.test.ts +23 -0
  264. package/src/__tests__/mocks/index.ts +16 -0
  265. package/src/__tests__/mocks/mockAuth.ts +155 -0
  266. package/src/__tests__/mocks/mockSupabase.ts +83 -0
  267. package/src/__tests__/mocks/mockSupabaseClient.ts +63 -0
  268. package/src/__tests__/mocks/providers.tsx +22 -0
  269. package/src/__tests__/patterns/__tests__/testPatterns.test.ts +394 -0
  270. package/src/__tests__/patterns/testPatterns.ts +124 -0
  271. package/src/__tests__/performance/componentPerformance.performance.test.ts +27 -0
  272. package/src/__tests__/performance/index.ts +24 -0
  273. package/src/__tests__/performance/performanceValidation.performance.test.ts +15 -0
  274. package/src/__tests__/security/security.unit.test.tsx +7 -0
  275. package/src/__tests__/security/securityValidation.security.test.tsx +153 -0
  276. package/src/__tests__/setup.ts +259 -0
  277. package/src/__tests__/setupTests.d.ts +1 -0
  278. package/src/__tests__/shared/componentTestUtils.tsx +475 -0
  279. package/src/__tests__/shared/errorHandlingTestUtils.ts +107 -0
  280. package/src/__tests__/shared/index.ts +81 -0
  281. package/src/__tests__/shared/integrationTestUtils.tsx +375 -0
  282. package/src/__tests__/shared/performanceTestUtils.tsx +476 -0
  283. package/src/__tests__/shared/testUtils.optimized.tsx +627 -0
  284. package/src/__tests__/simple.test.tsx +20 -0
  285. package/src/__tests__/templates/accessibility.test.template.tsx +279 -0
  286. package/src/__tests__/templates/component.test.template.tsx +122 -0
  287. package/src/__tests__/templates/integration.test.template.tsx +199 -0
  288. package/src/__tests__/test-utils/dataFactories.ts +60 -0
  289. package/src/__tests__/test-utils/index.ts +6 -0
  290. package/src/__tests__/typeSafety.unit.test.ts +65 -0
  291. package/src/__tests__/unifiedAuth.unit.test.tsx +151 -0
  292. package/src/__tests__/utils/accessibilityHelpers.ts +254 -0
  293. package/src/__tests__/utils/assertions.ts +50 -0
  294. package/src/__tests__/utils/deterministicHelpers.ts +31 -0
  295. package/src/__tests__/utils/edgeCaseConfig.test.ts +75 -0
  296. package/src/__tests__/utils/edgeCaseConfig.ts +98 -0
  297. package/src/__tests__/utils/mockHelpers.ts +149 -0
  298. package/src/__tests__/utils/mockLoader.ts +101 -0
  299. package/src/__tests__/utils/performanceHelpers.ts +55 -0
  300. package/src/__tests__/utils/performanceTestHelpers.ts +68 -0
  301. package/src/__tests__/utils/testDataFactories.ts +28 -0
  302. package/src/__tests__/utils/testIsolation.ts +67 -0
  303. package/src/__tests__/utils/visualTestHelpers.ts +20 -0
  304. package/src/__tests__/visual/__snapshots__/componentSnapshots.visual.test.tsx.snap +68 -0
  305. package/src/__tests__/visual/__snapshots__/componentVisuals.visual.test.tsx.snap +14 -0
  306. package/src/__tests__/visual/__snapshots__/visualRegression.test.tsx.snap +217 -0
  307. package/src/__tests__/visual/__snapshots__/visualRegression.visual.test.tsx.snap +24 -0
  308. package/src/__tests__/visual/componentSnapshots.visual.test.tsx +33 -0
  309. package/src/__tests__/visual/componentVisuals.visual.test.tsx +12 -0
  310. package/src/__tests__/visual/visualRegression.visual.test.tsx +20 -0
  311. package/src/components/Alert/Alert.tsx +134 -0
  312. package/src/components/Alert/__tests__/Alert.unit.test.tsx +381 -0
  313. package/src/components/Alert/index.ts +2 -0
  314. package/src/components/Avatar/Avatar.tsx +84 -0
  315. package/src/components/Avatar/__tests__/Avatar.unit.test.tsx +232 -0
  316. package/src/components/Avatar/index.ts +2 -0
  317. package/src/components/Button/Button.tsx +270 -0
  318. package/src/components/Button/__tests__/Button.accessibility.test.tsx +131 -0
  319. package/src/components/Button/__tests__/Button.comprehensive.test.tsx +721 -0
  320. package/src/components/Button/__tests__/Button.unit.test.tsx +189 -0
  321. package/src/components/Button/__tests__/EventSelector.integration.test.tsx +285 -0
  322. package/src/components/Button/index.ts +2 -0
  323. package/src/components/Card/Card.tsx +271 -0
  324. package/src/components/Card/__tests__/Card.accessibility.test.tsx +394 -0
  325. package/src/components/Card/__tests__/Card.comprehensive.test.tsx +599 -0
  326. package/src/components/Card/__tests__/Card.integration.test.tsx +673 -0
  327. package/src/components/Card/__tests__/Card.performance.test.tsx +546 -0
  328. package/src/components/Card/__tests__/Card.unit.test.tsx +330 -0
  329. package/src/components/Card/__tests__/Card.visual.test.tsx +599 -0
  330. package/src/components/Card/__tests__/README.md +211 -0
  331. package/src/components/Card/index.ts +1 -0
  332. package/src/components/Checkbox/Checkbox.tsx +75 -0
  333. package/src/components/Checkbox/__mocks__/Checkbox.tsx +2 -0
  334. package/src/components/Checkbox/__tests__/Checkbox.unit.test.tsx +520 -0
  335. package/src/components/Checkbox/index.ts +2 -0
  336. package/src/components/DataTable/DataTable.tsx +440 -0
  337. package/src/components/DataTable/__tests__/DataTable.autoSizing.test.tsx +526 -0
  338. package/src/components/DataTable/__tests__/DataTable.errorHandling.test.tsx +259 -0
  339. package/src/components/DataTable/__tests__/DataTable.hierarchical.test.tsx +675 -0
  340. package/src/components/DataTable/__tests__/DataTable.infinite-loop.test.tsx +324 -0
  341. package/src/components/DataTable/__tests__/DataTable.integration.test.tsx +724 -0
  342. package/src/components/DataTable/__tests__/DataTable.performance.test.tsx +597 -0
  343. package/src/components/DataTable/__tests__/DataTable.permissions.test.tsx +306 -0
  344. package/src/components/DataTable/__tests__/DataTable.regressionFixes.test.tsx +546 -0
  345. package/src/components/DataTable/__tests__/DataTable.selection.controlled.test.tsx +386 -0
  346. package/src/components/DataTable/__tests__/DataTable.selection.test.tsx +338 -0
  347. package/src/components/DataTable/__tests__/DataTable.userWorkflows.test.tsx +310 -0
  348. package/src/components/DataTable/__tests__/DataTable.workflowValidation.test.tsx +489 -0
  349. package/src/components/DataTable/__tests__/DataTable.workflows.test.tsx +701 -0
  350. package/src/components/DataTable/__tests__/README.md +136 -0
  351. package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +66 -0
  352. package/src/components/DataTable/__tests__/performance-regression.test.tsx +788 -0
  353. package/src/components/DataTable/__tests__/performance.test.tsx +365 -0
  354. package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +103 -0
  355. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +382 -0
  356. package/src/components/DataTable/__tests__/test-utils.ts +94 -0
  357. package/src/components/DataTable/components/ActionButtons.tsx +177 -0
  358. package/src/components/DataTable/components/BulkOperationsDropdown.tsx +160 -0
  359. package/src/components/DataTable/components/ColumnFilter.tsx +114 -0
  360. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +100 -0
  361. package/src/components/DataTable/components/DataTableBody.tsx +462 -0
  362. package/src/components/DataTable/components/DataTableCore.tsx +869 -0
  363. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +214 -0
  364. package/src/components/DataTable/components/DataTableHeader.tsx +31 -0
  365. package/src/components/DataTable/components/DataTableModals.tsx +87 -0
  366. package/src/components/DataTable/components/DataTableToolbar.tsx +251 -0
  367. package/src/components/DataTable/components/DraggableColumnHeader.tsx +148 -0
  368. package/src/components/DataTable/components/EditableRow.tsx +160 -0
  369. package/src/components/DataTable/components/EmptyState.tsx +64 -0
  370. package/src/components/DataTable/components/ExpandButton.tsx +113 -0
  371. package/src/components/DataTable/components/FilterRow.tsx +101 -0
  372. package/src/components/DataTable/components/GroupHeader.tsx +42 -0
  373. package/src/components/DataTable/components/GroupingDropdown.tsx +96 -0
  374. package/src/components/DataTable/components/ImportModal.tsx +345 -0
  375. package/src/components/DataTable/components/LoadingState.tsx +12 -0
  376. package/src/components/DataTable/components/PaginationControls.tsx +332 -0
  377. package/src/components/DataTable/components/UnifiedTableBody.tsx +911 -0
  378. package/src/components/DataTable/components/ViewRowModal.tsx +68 -0
  379. package/src/components/DataTable/components/VirtualizedDataTable.tsx +593 -0
  380. package/src/components/DataTable/components/__tests__/ActionButtons.unit.test.tsx +150 -0
  381. package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +224 -0
  382. package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.unit.test.tsx +244 -0
  383. package/src/components/DataTable/components/__tests__/DataTable.accessibility.test.tsx +523 -0
  384. package/src/components/DataTable/components/__tests__/DataTable.integration.test.tsx +401 -0
  385. package/src/components/DataTable/components/__tests__/DataTable.performance.test.tsx +161 -0
  386. package/src/components/DataTable/components/__tests__/DataTable.real.test.tsx +251 -0
  387. package/src/components/DataTable/components/__tests__/DataTable.security.test.tsx +172 -0
  388. package/src/components/DataTable/components/__tests__/DataTable.unit.test.tsx +290 -0
  389. package/src/components/DataTable/components/__tests__/DataTableBody.unit.test.tsx +147 -0
  390. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.unit.test.tsx +182 -0
  391. package/src/components/DataTable/components/__tests__/DataTableHeader.unit.test.tsx +143 -0
  392. package/src/components/DataTable/components/__tests__/DataTableModals.unit.test.tsx +123 -0
  393. package/src/components/DataTable/components/__tests__/EditableRow.unit.test.tsx +660 -0
  394. package/src/components/DataTable/components/__tests__/EmptyState.unit.test.tsx +256 -0
  395. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +498 -0
  396. package/src/components/DataTable/components/__tests__/FilterRow.unit.test.tsx +112 -0
  397. package/src/components/DataTable/components/__tests__/FilteringToggle.unit.test.tsx +130 -0
  398. package/src/components/DataTable/components/__tests__/GroupHeader.unit.test.tsx +172 -0
  399. package/src/components/DataTable/components/__tests__/GroupingDropdown.unit.test.tsx +222 -0
  400. package/src/components/DataTable/components/__tests__/ImportModal.unit.test.tsx +780 -0
  401. package/src/components/DataTable/components/__tests__/LoadingState.unit.test.tsx +65 -0
  402. package/src/components/DataTable/components/__tests__/PaginationControls.unit.test.tsx +634 -0
  403. package/src/components/DataTable/components/__tests__/StateComponents.unit.test.tsx +48 -0
  404. package/src/components/DataTable/components/__tests__/UnifiedTableBody.hierarchical.test.tsx +541 -0
  405. package/src/components/DataTable/components/__tests__/ViewRowModal.unit.test.tsx +228 -0
  406. package/src/components/DataTable/components/__tests__/VirtualizedDataTable.unit.test.tsx +568 -0
  407. package/src/components/DataTable/components/index.ts +17 -0
  408. package/src/components/DataTable/context/DataTableContext.tsx +97 -0
  409. package/src/components/DataTable/core/ActionManager.ts +235 -0
  410. package/src/components/DataTable/core/ColumnFactory.ts +268 -0
  411. package/src/components/DataTable/core/ColumnManager.ts +205 -0
  412. package/src/components/DataTable/core/DataManager.ts +188 -0
  413. package/src/components/DataTable/core/DataTableContext.tsx +182 -0
  414. package/src/components/DataTable/core/LocalDataAdapter.ts +264 -0
  415. package/src/components/DataTable/core/PluginRegistry.ts +229 -0
  416. package/src/components/DataTable/core/StateManager.ts +311 -0
  417. package/src/components/DataTable/core/__tests__/ActionManager.unit.test.ts +405 -0
  418. package/src/components/DataTable/core/__tests__/ArchitectureIntegration.unit.test.tsx +445 -0
  419. package/src/components/DataTable/core/__tests__/ColumnFactory.unit.test.ts +288 -0
  420. package/src/components/DataTable/core/__tests__/ColumnManager.unit.test.ts +623 -0
  421. package/src/components/DataTable/core/__tests__/DataManager.unit.test.ts +431 -0
  422. package/src/components/DataTable/core/__tests__/DataTableContext.unit.test.tsx +433 -0
  423. package/src/components/DataTable/core/__tests__/LocalDataAdapter.unit.test.ts +422 -0
  424. package/src/components/DataTable/core/__tests__/PluginRegistry.unit.test.tsx +207 -0
  425. package/src/components/DataTable/core/__tests__/StateManager.unit.test.ts +278 -0
  426. package/src/components/DataTable/core/index.ts +8 -0
  427. package/src/components/DataTable/core/interfaces.ts +338 -0
  428. package/src/components/DataTable/examples/AutoSizingExample.tsx +180 -0
  429. package/src/components/DataTable/examples/ColumnSizingComparison.tsx +235 -0
  430. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +418 -0
  431. package/src/components/DataTable/examples/HierarchicalExample.tsx +472 -0
  432. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +173 -0
  433. package/src/components/DataTable/examples/PerformanceExample.tsx +502 -0
  434. package/src/components/DataTable/examples/__tests__/PerformanceExample.unit.test.tsx +281 -0
  435. package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.unit.test.ts +407 -0
  436. package/src/components/DataTable/hooks/__tests__/useColumnReordering.unit.test.ts +679 -0
  437. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +95 -0
  438. package/src/components/DataTable/hooks/useColumnReordering.ts +110 -0
  439. package/src/components/DataTable/hooks/useDataTableState.ts +325 -0
  440. package/src/components/DataTable/hooks/useHierarchicalState.ts +174 -0
  441. package/src/components/DataTable/index.ts +70 -0
  442. package/src/components/DataTable/styles.ts +171 -0
  443. package/src/components/DataTable/types.ts +475 -0
  444. package/src/components/DataTable/utils/__tests__/columnSizing.test.ts +237 -0
  445. package/src/components/DataTable/utils/__tests__/debugTools.unit.test.ts +267 -0
  446. package/src/components/DataTable/utils/__tests__/errorHandling.unit.test.ts +467 -0
  447. package/src/components/DataTable/utils/__tests__/exportUtils.unit.test.ts +380 -0
  448. package/src/components/DataTable/utils/__tests__/flexibleImport.unit.test.ts +233 -0
  449. package/src/components/DataTable/utils/__tests__/performanceUtils.unit.test.ts +414 -0
  450. package/src/components/DataTable/utils/columnSizing.ts +125 -0
  451. package/src/components/DataTable/utils/debugTools.ts +583 -0
  452. package/src/components/DataTable/utils/errorHandling.ts +494 -0
  453. package/src/components/DataTable/utils/exportUtils.ts +126 -0
  454. package/src/components/DataTable/utils/flexibleImport.ts +510 -0
  455. package/src/components/DataTable/utils/hierarchicalSorting.ts +151 -0
  456. package/src/components/DataTable/utils/hierarchicalUtils.ts +218 -0
  457. package/src/components/DataTable/utils/index.ts +1 -0
  458. package/src/components/DataTable/utils/performanceUtils.ts +351 -0
  459. package/src/components/Dialog/Dialog.tsx +782 -0
  460. package/src/components/Dialog/README.md +804 -0
  461. package/src/components/Dialog/__tests__/Dialog.accessibility.test.tsx +521 -0
  462. package/src/components/Dialog/__tests__/Dialog.auto-size.example.tsx +157 -0
  463. package/src/components/Dialog/__tests__/Dialog.enhanced.test.tsx +538 -0
  464. package/src/components/Dialog/__tests__/Dialog.unit.test.tsx +1373 -0
  465. package/src/components/Dialog/examples/BasicHtmlTest.tsx +55 -0
  466. package/src/components/Dialog/examples/DebugHtmlExample.tsx +68 -0
  467. package/src/components/Dialog/examples/HtmlDialogExample.tsx +202 -0
  468. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +61 -0
  469. package/src/components/Dialog/examples/SmartDialogExample.tsx +322 -0
  470. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +151 -0
  471. package/src/components/Dialog/index.ts +12 -0
  472. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +611 -0
  473. package/src/components/Dialog/utils/safeHtml.ts +185 -0
  474. package/src/components/ErrorBoundary/ErrorBoundary.tsx +312 -0
  475. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.accessibility.test.tsx +517 -0
  476. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.integration.test.tsx +572 -0
  477. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.unit.test.tsx +579 -0
  478. package/src/components/ErrorBoundary/index.ts +8 -0
  479. package/src/components/EventSelector/EventSelector.tsx +360 -0
  480. package/src/components/EventSelector/__tests__/EventSelector.test.tsx +528 -0
  481. package/src/components/EventSelector/index.ts +3 -0
  482. package/src/components/EventSelector/types.ts +79 -0
  483. package/src/components/FileUpload/FileUpload.example.tsx +218 -0
  484. package/src/components/FileUpload/FileUpload.tsx +237 -0
  485. package/src/components/FileUpload/__tests__/FileUpload.integration.test.tsx +992 -0
  486. package/src/components/FileUpload/__tests__/FileUpload.real.test.tsx +927 -0
  487. package/src/components/FileUpload/__tests__/FileUpload.test.tsx +855 -0
  488. package/src/components/FileUpload/__tests__/FileUpload.unit.test.tsx +1311 -0
  489. package/src/components/FileUpload/__tests__/FileUpload.unmocked.test.tsx +937 -0
  490. package/src/components/FileUpload/index.ts +6 -0
  491. package/src/components/Footer/Footer.tsx +197 -0
  492. package/src/components/Footer/__tests__/Footer.accessibility.test.tsx +359 -0
  493. package/src/components/Footer/__tests__/Footer.integration.test.tsx +353 -0
  494. package/src/components/Footer/__tests__/Footer.performance.test.tsx +309 -0
  495. package/src/components/Footer/__tests__/Footer.unit.test.tsx +309 -0
  496. package/src/components/Footer/__tests__/Footer.visual.test.tsx +335 -0
  497. package/src/components/Footer/index.ts +17 -0
  498. package/src/components/Form/Form.tsx +166 -0
  499. package/src/components/Form/FormErrorSummary.tsx +113 -0
  500. package/src/components/Form/FormField.tsx +249 -0
  501. package/src/components/Form/FormFieldset.tsx +127 -0
  502. package/src/components/Form/FormLiveRegion.tsx +198 -0
  503. package/src/components/Form/__tests__/Form.accessibility.test.tsx +820 -0
  504. package/src/components/Form/__tests__/Form.unit.test.tsx +305 -0
  505. package/src/components/Form/__tests__/FormErrorSummary.unit.test.tsx +285 -0
  506. package/src/components/Form/__tests__/FormFieldset.unit.test.tsx +241 -0
  507. package/src/components/Form/index.ts +26 -0
  508. package/src/components/Header/Header.tsx +301 -0
  509. package/src/components/Header/__tests__/Header.accessibility.test.tsx +382 -0
  510. package/src/components/Header/__tests__/Header.comprehensive.test.tsx +509 -0
  511. package/src/components/Header/__tests__/Header.unit.test.tsx +335 -0
  512. package/src/components/Header/index.ts +4 -0
  513. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +196 -0
  514. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +164 -0
  515. package/src/components/InactivityWarningModal/__tests__/InactivityWarningModal.unit.test.tsx +224 -0
  516. package/src/components/InactivityWarningModal/index.ts +9 -0
  517. package/src/components/Input/Input.tsx +201 -0
  518. package/src/components/Input/__mocks__/Input.tsx +2 -0
  519. package/src/components/Input/__tests__/Input.accessibility.test.tsx +632 -0
  520. package/src/components/Input/__tests__/Input.unit.test.tsx +1121 -0
  521. package/src/components/Input/index.ts +9 -0
  522. package/src/components/Label/Label.tsx +186 -0
  523. package/src/components/Label/__tests__/Label.accessibility.test.tsx +239 -0
  524. package/src/components/Label/__tests__/Label.unit.test.tsx +331 -0
  525. package/src/components/Label/index.ts +2 -0
  526. package/src/components/LoadingSpinner/LoadingSpinner.tsx +98 -0
  527. package/src/components/LoadingSpinner/__tests__/LoadingSpinner.accessibility.test.tsx +116 -0
  528. package/src/components/LoadingSpinner/__tests__/LoadingSpinner.unit.test.tsx +144 -0
  529. package/src/components/LoadingSpinner/index.ts +3 -0
  530. package/src/components/LoginForm/LoginForm.tsx +273 -0
  531. package/src/components/LoginForm/__tests__/LoginForm.accessibility.test.tsx +201 -0
  532. package/src/components/LoginForm/__tests__/LoginForm.unit.test.tsx +119 -0
  533. package/src/components/LoginForm/index.ts +3 -0
  534. package/src/components/NavigationMenu/NavigationMenu.tsx +698 -0
  535. package/src/components/NavigationMenu/__tests__/NavigationMenu.accessibility.test.tsx +378 -0
  536. package/src/components/NavigationMenu/__tests__/NavigationMenu.enhanced.test.tsx +768 -0
  537. package/src/components/NavigationMenu/__tests__/NavigationMenu.integration.test.tsx +576 -0
  538. package/src/components/NavigationMenu/__tests__/NavigationMenu.performance.test.tsx +585 -0
  539. package/src/components/NavigationMenu/__tests__/NavigationMenu.real.component.test.tsx +783 -0
  540. package/src/components/NavigationMenu/__tests__/NavigationMenu.security.enhanced.test.tsx +810 -0
  541. package/src/components/NavigationMenu/__tests__/NavigationMenu.security.test.tsx +494 -0
  542. package/src/components/NavigationMenu/__tests__/NavigationMenu.unit.test.tsx +331 -0
  543. package/src/components/NavigationMenu/__tests__/NavigationMenu.userWorkflows.test.tsx +347 -0
  544. package/src/components/NavigationMenu/__tests__/NavigationMenu.workflows.test.tsx +584 -0
  545. package/src/components/NavigationMenu/index.ts +10 -0
  546. package/src/components/NavigationMenu/types.ts +85 -0
  547. package/src/components/OrganisationSelector/OrganisationSelector.tsx +304 -0
  548. package/src/components/OrganisationSelector/__tests__/OrganisationSelector.unit.test.tsx +664 -0
  549. package/src/components/OrganisationSelector/index.ts +9 -0
  550. package/src/components/PaceAppLayout/PaceAppLayout.tsx +699 -0
  551. package/src/components/PaceAppLayout/README.md +278 -0
  552. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +288 -0
  553. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +889 -0
  554. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.performance.test.tsx +629 -0
  555. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +782 -0
  556. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +904 -0
  557. package/src/components/PaceAppLayout/index.ts +1 -0
  558. package/src/components/PaceLoginPage/PaceLoginPage.tsx +221 -0
  559. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.accessibility.test.tsx +463 -0
  560. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.integration.test.tsx +586 -0
  561. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.unit.test.tsx +533 -0
  562. package/src/components/PaceLoginPage/index.ts +1 -0
  563. package/src/components/PasswordReset/PasswordChangeForm.tsx +186 -0
  564. package/src/components/PasswordReset/PasswordResetForm.tsx +201 -0
  565. package/src/components/PasswordReset/__tests__/PasswordChangeForm.accessibility.test.tsx +408 -0
  566. package/src/components/PasswordReset/__tests__/PasswordChangeForm.unit.test.tsx +561 -0
  567. package/src/components/PasswordReset/__tests__/PasswordReset.integration.test.tsx +304 -0
  568. package/src/components/PasswordReset/__tests__/PasswordResetForm.accessibility.test.tsx +20 -0
  569. package/src/components/PasswordReset/__tests__/PasswordResetForm.unit.test.tsx +523 -0
  570. package/src/components/PasswordReset/__tests__/__mocks__/UnifiedAuthProvider.ts +29 -0
  571. package/src/components/PasswordReset/index.ts +4 -0
  572. package/src/components/Print/__tests__/Print.comprehensive.test.tsx +331 -0
  573. package/src/components/PrintButton/PrintButton.tsx +321 -0
  574. package/src/components/PrintButton/PrintButtonGroup.tsx +84 -0
  575. package/src/components/PrintButton/PrintToolbar.tsx +94 -0
  576. package/src/components/PrintButton/__tests__/PrintButton.unit.test.tsx +429 -0
  577. package/src/components/PrintButton/__tests__/PrintButtonGroup.unit.test.tsx +277 -0
  578. package/src/components/PrintButton/__tests__/PrintToolbar.unit.test.tsx +264 -0
  579. package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +438 -0
  580. package/src/components/PrintButton/index.ts +33 -0
  581. package/src/components/PrintButton/types.ts +173 -0
  582. package/src/components/PrintCard/PrintCard.tsx +154 -0
  583. package/src/components/PrintCard/PrintCardContent.tsx +57 -0
  584. package/src/components/PrintCard/PrintCardFooter.tsx +60 -0
  585. package/src/components/PrintCard/PrintCardGrid.tsx +91 -0
  586. package/src/components/PrintCard/PrintCardHeader.tsx +78 -0
  587. package/src/components/PrintCard/PrintCardImage.tsx +81 -0
  588. package/src/components/PrintCard/__tests__/PrintCard.unit.test.tsx +233 -0
  589. package/src/components/PrintCard/__tests__/PrintCardContent.test.tsx +284 -0
  590. package/src/components/PrintCard/__tests__/PrintCardGrid.unit.test.tsx +214 -0
  591. package/src/components/PrintCard/__tests__/PrintCardImage.unit.test.tsx +264 -0
  592. package/src/components/PrintCard/examples/PrintCardShowcase.tsx +239 -0
  593. package/src/components/PrintCard/index.ts +34 -0
  594. package/src/components/PrintCard/types.ts +171 -0
  595. package/src/components/PrintDataTable/PrintDataTable.tsx +215 -0
  596. package/src/components/PrintDataTable/PrintTableGroup.tsx +90 -0
  597. package/src/components/PrintDataTable/PrintTableRow.tsx +76 -0
  598. package/src/components/PrintDataTable/__tests__/PrintDataTable.unit.test.tsx +361 -0
  599. package/src/components/PrintDataTable/__tests__/PrintTableGroup.unit.test.tsx +314 -0
  600. package/src/components/PrintDataTable/__tests__/PrintTableRow.unit.test.tsx +362 -0
  601. package/src/components/PrintDataTable/index.ts +25 -0
  602. package/src/components/PrintDataTable/types.ts +67 -0
  603. package/src/components/PrintFooter/PrintFooter.tsx +183 -0
  604. package/src/components/PrintFooter/PrintFooterContent.tsx +71 -0
  605. package/src/components/PrintFooter/PrintFooterInfo.tsx +86 -0
  606. package/src/components/PrintFooter/PrintPageNumber.tsx +90 -0
  607. package/src/components/PrintFooter/__tests__/PrintFooter.unit.test.tsx +500 -0
  608. package/src/components/PrintFooter/__tests__/PrintFooterContent.unit.test.tsx +321 -0
  609. package/src/components/PrintFooter/__tests__/PrintFooterInfo.unit.test.tsx +335 -0
  610. package/src/components/PrintFooter/__tests__/PrintPageNumber.unit.test.tsx +340 -0
  611. package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +390 -0
  612. package/src/components/PrintFooter/index.ts +30 -0
  613. package/src/components/PrintFooter/types.ts +149 -0
  614. package/src/components/PrintGrid/PrintGrid.tsx +180 -0
  615. package/src/components/PrintGrid/PrintGridBreakpoint.tsx +109 -0
  616. package/src/components/PrintGrid/PrintGridContainer.tsx +128 -0
  617. package/src/components/PrintGrid/PrintGridItem.tsx +220 -0
  618. package/src/components/PrintGrid/__tests__/PrintGrid.unit.test.tsx +340 -0
  619. package/src/components/PrintGrid/__tests__/PrintGridBreakpoint.unit.test.tsx +261 -0
  620. package/src/components/PrintGrid/__tests__/PrintGridContainer.unit.test.tsx +338 -0
  621. package/src/components/PrintGrid/__tests__/PrintGridItem.unit.test.tsx +338 -0
  622. package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +359 -0
  623. package/src/components/PrintGrid/index.ts +31 -0
  624. package/src/components/PrintGrid/types.ts +159 -0
  625. package/src/components/PrintHeader/PrintCoverHeader.tsx +230 -0
  626. package/src/components/PrintHeader/PrintHeader.tsx +150 -0
  627. package/src/components/PrintHeader/__tests__/PrintCoverHeader.unit.test.tsx +309 -0
  628. package/src/components/PrintHeader/__tests__/PrintHeader.unit.test.tsx +202 -0
  629. package/src/components/PrintHeader/index.ts +17 -0
  630. package/src/components/PrintHeader/types.ts +42 -0
  631. package/src/components/PrintLayout/PrintLayout.tsx +122 -0
  632. package/src/components/PrintLayout/PrintLayoutContext.tsx +66 -0
  633. package/src/components/PrintLayout/PrintPageBreak.tsx +52 -0
  634. package/src/components/PrintLayout/__tests__/PrintLayout.unit.test.tsx +238 -0
  635. package/src/components/PrintLayout/examples/PrintShowcase.tsx +230 -0
  636. package/src/components/PrintLayout/index.ts +19 -0
  637. package/src/components/PrintLayout/types.ts +37 -0
  638. package/src/components/PrintPageBreak/PrintPageBreak.tsx +120 -0
  639. package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +90 -0
  640. package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +112 -0
  641. package/src/components/PrintPageBreak/__tests__/PrintPageBreak.unit.test.tsx +263 -0
  642. package/src/components/PrintPageBreak/__tests__/PrintPageBreakGroup.unit.test.tsx +239 -0
  643. package/src/components/PrintPageBreak/__tests__/PrintPageBreakIndicator.unit.test.tsx +235 -0
  644. package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +279 -0
  645. package/src/components/PrintPageBreak/index.ts +23 -0
  646. package/src/components/PrintPageBreak/types.ts +94 -0
  647. package/src/components/PrintSection/PrintColumn.tsx +104 -0
  648. package/src/components/PrintSection/PrintDivider.tsx +101 -0
  649. package/src/components/PrintSection/PrintSection.tsx +129 -0
  650. package/src/components/PrintSection/PrintSectionContent.tsx +75 -0
  651. package/src/components/PrintSection/PrintSectionHeader.tsx +97 -0
  652. package/src/components/PrintSection/__tests__/PrintColumn.unit.test.tsx +385 -0
  653. package/src/components/PrintSection/__tests__/PrintDivider.unit.test.tsx +373 -0
  654. package/src/components/PrintSection/__tests__/PrintSection.unit.test.tsx +390 -0
  655. package/src/components/PrintSection/__tests__/PrintSectionContent.unit.test.tsx +321 -0
  656. package/src/components/PrintSection/__tests__/PrintSectionHeader.unit.test.tsx +334 -0
  657. package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +258 -0
  658. package/src/components/PrintSection/index.ts +33 -0
  659. package/src/components/PrintSection/types.ts +155 -0
  660. package/src/components/PrintText/PrintText.tsx +116 -0
  661. package/src/components/PrintText/__tests__/PrintText.unit.test.tsx +351 -0
  662. package/src/components/PrintText/index.ts +16 -0
  663. package/src/components/PrintText/types.ts +24 -0
  664. package/src/components/Progress/Progress.tsx +116 -0
  665. package/src/components/Progress/__tests__/Progress.accessibility.test.tsx +240 -0
  666. package/src/components/Progress/__tests__/Progress.unit.test.tsx +242 -0
  667. package/src/components/Progress/index.ts +3 -0
  668. package/src/components/PublicLayout/EventLogo.tsx +287 -0
  669. package/src/components/PublicLayout/PublicErrorBoundary.tsx +279 -0
  670. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +208 -0
  671. package/src/components/PublicLayout/PublicPageContextChecker.tsx +130 -0
  672. package/src/components/PublicLayout/PublicPageDebugger.tsx +104 -0
  673. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +162 -0
  674. package/src/components/PublicLayout/PublicPageFooter.tsx +124 -0
  675. package/src/components/PublicLayout/PublicPageHeader.tsx +178 -0
  676. package/src/components/PublicLayout/PublicPageLayout.tsx +232 -0
  677. package/src/components/PublicLayout/PublicPageProvider.tsx +137 -0
  678. package/src/components/PublicLayout/__tests__/EventLogo.test.tsx +761 -0
  679. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.simplified.test.tsx +228 -0
  680. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +228 -0
  681. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +459 -0
  682. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +362 -0
  683. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +522 -0
  684. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +599 -0
  685. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +513 -0
  686. package/src/components/PublicLayout/index.ts +51 -0
  687. package/src/components/RBAC/PagePermissionGuard.tsx +274 -0
  688. package/src/components/RBAC/RBACGuard.tsx +143 -0
  689. package/src/components/RBAC/RBACProvider.tsx +186 -0
  690. package/src/components/RBAC/RoleBasedContent.tsx +129 -0
  691. package/src/components/RBAC/__tests__/PagePermissionGuard.unit.test.tsx +674 -0
  692. package/src/components/RBAC/__tests__/RBAC.integration.test.tsx +573 -0
  693. package/src/components/RBAC/__tests__/RBACGuard.unit.test.tsx +467 -0
  694. package/src/components/RBAC/__tests__/RBACProvider.accessibility.test.tsx +475 -0
  695. package/src/components/RBAC/__tests__/RBACProvider.advanced.test.tsx +569 -0
  696. package/src/components/RBAC/__tests__/RBACProvider.integration.test.tsx +352 -0
  697. package/src/components/RBAC/__tests__/RBACProvider.unit.test.tsx +128 -0
  698. package/src/components/RBAC/__tests__/RoleBasedContent.unit.test.tsx +657 -0
  699. package/src/components/RBAC/index.ts +23 -0
  700. package/src/components/Select/Select.tsx +654 -0
  701. package/src/components/Select/__tests__/SearchableSelect.unit.test.tsx +437 -0
  702. package/src/components/Select/__tests__/Select.accessibility.test.tsx +1202 -0
  703. package/src/components/Select/__tests__/Select.actual.test.tsx +774 -0
  704. package/src/components/Select/__tests__/Select.comprehensive.test.tsx +837 -0
  705. package/src/components/Select/__tests__/Select.enhanced.test.tsx +1101 -0
  706. package/src/components/Select/__tests__/Select.integration.test.tsx +772 -0
  707. package/src/components/Select/__tests__/Select.performance.test.tsx +695 -0
  708. package/src/components/Select/__tests__/Select.real-world.test.tsx +1046 -0
  709. package/src/components/Select/__tests__/Select.search-algorithms.test.tsx +968 -0
  710. package/src/components/Select/__tests__/Select.unit.test.tsx +647 -0
  711. package/src/components/Select/__tests__/Select.utils.test.tsx +890 -0
  712. package/src/components/Select/index.ts +1 -0
  713. package/src/components/SuperAdminGuard.tsx +116 -0
  714. package/src/components/Table/Table.tsx +222 -0
  715. package/src/components/Table/__tests__/Table.accessibility.test.tsx +233 -0
  716. package/src/components/Table/__tests__/Table.unit.test.tsx +235 -0
  717. package/src/components/Table/index.ts +11 -0
  718. package/src/components/Toast/Toast.tsx +339 -0
  719. package/src/components/Toast/__tests__/Toast.accessibility.test.tsx +238 -0
  720. package/src/components/Toast/__tests__/Toast.integration.test.tsx +699 -0
  721. package/src/components/Toast/__tests__/Toast.unit.test.tsx +750 -0
  722. package/src/components/Toast/index.ts +14 -0
  723. package/src/components/Tooltip/Tooltip.tsx +167 -0
  724. package/src/components/Tooltip/__tests__/Tooltip.accessibility.test.tsx +121 -0
  725. package/src/components/Tooltip/__tests__/Tooltip.unit.test.tsx +185 -0
  726. package/src/components/Tooltip/index.ts +7 -0
  727. package/src/components/UserMenu/UserMenu.tsx +243 -0
  728. package/src/components/UserMenu/__tests__/UserMenu.accessibility.test.tsx +139 -0
  729. package/src/components/UserMenu/__tests__/UserMenu.integration.test.tsx +188 -0
  730. package/src/components/UserMenu/__tests__/UserMenu.unit.test.tsx +458 -0
  731. package/src/components/UserMenu/index.ts +3 -0
  732. package/src/components/__tests__/EdgeCaseTesting.enhanced.test.tsx +523 -0
  733. package/src/components/__tests__/ErrorTesting.enhanced.test.tsx +455 -0
  734. package/src/components/__tests__/SuperAdminGuard.test.tsx +456 -0
  735. package/src/components/__tests__/SuperAdminGuard.unit.test.tsx +456 -0
  736. package/src/components/examples/PermissionExample.tsx +150 -0
  737. package/src/components/examples/__tests__/PermissionExample.unit.test.tsx +360 -0
  738. package/src/components/index.ts +434 -0
  739. package/src/components.ts +19 -0
  740. package/src/constants/performance.ts +14 -0
  741. package/src/examples/CorrectPublicPageImplementation.tsx +301 -0
  742. package/src/examples/PublicEventPage.tsx +274 -0
  743. package/src/examples/PublicPageApp.tsx +308 -0
  744. package/src/examples/PublicPageUsageExample.tsx +216 -0
  745. package/src/fonts/georama-italic.woff2 +0 -0
  746. package/src/fonts/georama.woff2 +0 -0
  747. package/src/fonts/open-sans-italic.woff2 +0 -0
  748. package/src/fonts/open-sans.woff2 +0 -0
  749. package/src/fonts/reddit-mono.woff2 +0 -0
  750. package/src/hooks/__tests__/hooks.integration.test.tsx +575 -0
  751. package/src/hooks/__tests__/useApiFetch.unit.test.ts +115 -0
  752. package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +133 -0
  753. package/src/hooks/__tests__/useDebounce.unit.test.ts +82 -0
  754. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +293 -0
  755. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +385 -0
  756. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +286 -0
  757. package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +838 -0
  758. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +627 -0
  759. package/src/hooks/__tests__/useRBAC.unit.test.ts +903 -0
  760. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +537 -0
  761. package/src/hooks/__tests__/useToast.unit.test.tsx +62 -0
  762. package/src/hooks/__tests__/useZodForm.unit.test.tsx +37 -0
  763. package/src/hooks/index.ts +56 -0
  764. package/src/hooks/public/__tests__/usePublicEvent.test.tsx +397 -0
  765. package/src/hooks/public/__tests__/usePublicEventLogo.test.tsx +690 -0
  766. package/src/hooks/public/__tests__/usePublicRouteParams.test.tsx +449 -0
  767. package/src/hooks/public/index.ts +34 -0
  768. package/src/hooks/public/usePublicEvent.ts +261 -0
  769. package/src/hooks/public/usePublicEventLogo.ts +285 -0
  770. package/src/hooks/public/usePublicRouteParams.ts +259 -0
  771. package/src/hooks/useAppConfig.ts +94 -0
  772. package/src/hooks/useComponentPerformance.ts +39 -0
  773. package/src/hooks/useDataTablePerformance.ts +387 -0
  774. package/src/hooks/useDataTableState.ts +110 -0
  775. package/src/hooks/useDebounce.ts +18 -0
  776. package/src/hooks/useFocusManagement.ts +161 -0
  777. package/src/hooks/useFocusTrap.ts +155 -0
  778. package/src/hooks/useInactivityTracker.ts +372 -0
  779. package/src/hooks/useIsMobile.ts +42 -0
  780. package/src/hooks/useKeyboardShortcuts.ts +237 -0
  781. package/src/hooks/useOrganisationPermissions.ts +208 -0
  782. package/src/hooks/useOrganisationSecurity.ts +262 -0
  783. package/src/hooks/usePerformanceMonitor.ts +128 -0
  784. package/src/hooks/usePermissionCache.ts +455 -0
  785. package/src/hooks/useRBAC.ts +262 -0
  786. package/src/hooks/useSecureDataAccess.ts +586 -0
  787. package/src/hooks/useStorage.ts +274 -0
  788. package/src/hooks/useToast.ts +242 -0
  789. package/src/hooks/useZodForm.ts +28 -0
  790. package/src/index.ts +200 -0
  791. package/src/providers/AuthProvider.tsx +369 -0
  792. package/src/providers/EventProvider.tsx +324 -0
  793. package/src/providers/InactivityProvider.tsx +238 -0
  794. package/src/providers/OrganisationProvider.tsx +588 -0
  795. package/src/providers/RBACProvider.tsx +622 -0
  796. package/src/providers/UnifiedAuthProvider.tsx +327 -0
  797. package/src/providers/__tests__/EventProvider.unit.test.tsx +768 -0
  798. package/src/providers/__tests__/OrganisationProvider.basic.test.tsx +116 -0
  799. package/src/providers/__tests__/OrganisationProvider.unit.test.tsx +1312 -0
  800. package/src/providers/__tests__/UnifiedAuthProvider.inactivity.test.tsx +601 -0
  801. package/src/providers/__tests__/UnifiedAuthProvider.unit.test.tsx +675 -0
  802. package/src/providers/__tests__/index.unit.test.ts +78 -0
  803. package/src/providers/index.ts +15 -0
  804. package/src/rbac/README.md +885 -0
  805. package/src/rbac/__tests__/PagePermissionGuard.test.tsx +673 -0
  806. package/src/rbac/__tests__/README.md +170 -0
  807. package/src/rbac/__tests__/RoleBasedRouter.test.tsx +709 -0
  808. package/src/rbac/__tests__/TestContext.tsx +72 -0
  809. package/src/rbac/__tests__/__mocks__/cache.ts +144 -0
  810. package/src/rbac/__tests__/__mocks__/supabase.ts +152 -0
  811. package/src/rbac/__tests__/adapters-hooks-comprehensive.test.tsx +782 -0
  812. package/src/rbac/__tests__/adapters-hooks.test.tsx +561 -0
  813. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +963 -0
  814. package/src/rbac/__tests__/adapters.test.tsx +444 -0
  815. package/src/rbac/__tests__/api.test.ts +620 -0
  816. package/src/rbac/__tests__/audit-observability-comprehensive.test.ts +792 -0
  817. package/src/rbac/__tests__/audit-observability.test.ts +549 -0
  818. package/src/rbac/__tests__/audit.test.ts +616 -0
  819. package/src/rbac/__tests__/build-contract-compliance-simple.test.ts +230 -0
  820. package/src/rbac/__tests__/cache-invalidation-comprehensive.test.ts +889 -0
  821. package/src/rbac/__tests__/cache-invalidation.test.ts +457 -0
  822. package/src/rbac/__tests__/cache.test.ts +458 -0
  823. package/src/rbac/__tests__/components-navigation-guard.enhanced.test.tsx +859 -0
  824. package/src/rbac/__tests__/components-navigation-guard.test.tsx +895 -0
  825. package/src/rbac/__tests__/components-navigation-provider.test.tsx +692 -0
  826. package/src/rbac/__tests__/components-page-permission-guard.test.tsx +673 -0
  827. package/src/rbac/__tests__/components-page-permission-provider.test.tsx +614 -0
  828. package/src/rbac/__tests__/components-permission-enforcer.enhanced.fixed.test.tsx +836 -0
  829. package/src/rbac/__tests__/components-permission-enforcer.enhanced.test.tsx +837 -0
  830. package/src/rbac/__tests__/components-permission-enforcer.test.tsx +825 -0
  831. package/src/rbac/__tests__/components-role-based-router.test.tsx +709 -0
  832. package/src/rbac/__tests__/components-secure-data-provider.test.tsx +607 -0
  833. package/src/rbac/__tests__/config.test.ts +583 -0
  834. package/src/rbac/__tests__/core-logic-unit.test.ts +190 -0
  835. package/src/rbac/__tests__/core-permission-logic-comprehensive.test.ts +1467 -0
  836. package/src/rbac/__tests__/core-permission-logic-fixed.test.ts +151 -0
  837. package/src/rbac/__tests__/core-permission-logic-simple.test.ts +968 -0
  838. package/src/rbac/__tests__/core-permission-logic.test.ts +966 -0
  839. package/src/rbac/__tests__/edge-cases-comprehensive.test.ts +988 -0
  840. package/src/rbac/__tests__/edge-cases.test.ts +654 -0
  841. package/src/rbac/__tests__/engine.test.ts +361 -0
  842. package/src/rbac/__tests__/engine.unit.test.ts +361 -0
  843. package/src/rbac/__tests__/hooks.enhanced.test.tsx +979 -0
  844. package/src/rbac/__tests__/hooks.fixed.test.tsx +475 -0
  845. package/src/rbac/__tests__/hooks.test.tsx +385 -0
  846. package/src/rbac/__tests__/index.test.ts +269 -0
  847. package/src/rbac/__tests__/integration.enhanced.test.tsx +824 -0
  848. package/src/rbac/__tests__/page-permission-guard-super-admin.test.tsx +261 -0
  849. package/src/rbac/__tests__/performance.enhanced.test.tsx +724 -0
  850. package/src/rbac/__tests__/permissions.test.ts +383 -0
  851. package/src/rbac/__tests__/requires-event.test.ts +330 -0
  852. package/src/rbac/__tests__/scope-isolation-comprehensive.test.ts +1349 -0
  853. package/src/rbac/__tests__/scope-isolation.test.ts +755 -0
  854. package/src/rbac/__tests__/secure-client-rls-comprehensive.test.ts +592 -0
  855. package/src/rbac/__tests__/secure-client-rls.test.ts +377 -0
  856. package/src/rbac/__tests__/security.test.ts +296 -0
  857. package/src/rbac/__tests__/setup.ts +228 -0
  858. package/src/rbac/__tests__/test-utils-enhanced.tsx +400 -0
  859. package/src/rbac/__tests__/types.test.ts +685 -0
  860. package/src/rbac/adapters.tsx +726 -0
  861. package/src/rbac/api.ts +337 -0
  862. package/src/rbac/audit-enhanced.ts +339 -0
  863. package/src/rbac/audit.ts +338 -0
  864. package/src/rbac/cache.ts +213 -0
  865. package/src/rbac/components/EnhancedNavigationMenu.tsx +294 -0
  866. package/src/rbac/components/NavigationGuard.tsx +294 -0
  867. package/src/rbac/components/NavigationProvider.tsx +314 -0
  868. package/src/rbac/components/PagePermissionGuard.tsx +430 -0
  869. package/src/rbac/components/PagePermissionProvider.tsx +274 -0
  870. package/src/rbac/components/PermissionEnforcer.tsx +307 -0
  871. package/src/rbac/components/RoleBasedRouter.tsx +425 -0
  872. package/src/rbac/components/SecureDataProvider.tsx +319 -0
  873. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +631 -0
  874. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +667 -0
  875. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +647 -0
  876. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +496 -0
  877. package/src/rbac/components/index.ts +64 -0
  878. package/src/rbac/config.ts +133 -0
  879. package/src/rbac/docs/event-based-apps.md +285 -0
  880. package/src/rbac/engine.ts +1026 -0
  881. package/src/rbac/eslint-rules.js +285 -0
  882. package/src/rbac/examples/CompleteRBACExample.tsx +323 -0
  883. package/src/rbac/examples/EventBasedApp.tsx +238 -0
  884. package/src/rbac/hooks.ts +555 -0
  885. package/src/rbac/index.ts +114 -0
  886. package/src/rbac/permissions.ts +293 -0
  887. package/src/rbac/secureClient.ts +244 -0
  888. package/src/rbac/security.ts +346 -0
  889. package/src/rbac/testing/__tests__/index.test.tsx +342 -0
  890. package/src/rbac/testing/index.tsx +340 -0
  891. package/src/rbac/types.ts +341 -0
  892. package/src/rbac/utils/__tests__/eventContext.test.ts +428 -0
  893. package/src/rbac/utils/__tests__/eventContext.unit.test.ts +428 -0
  894. package/src/rbac/utils/eventContext.ts +83 -0
  895. package/src/styles/__tests__/styles.unit.test.ts +164 -0
  896. package/src/styles/core.css +401 -0
  897. package/src/styles/index.ts +51 -0
  898. package/src/test-dom-cleanup.test.tsx +38 -0
  899. package/src/theming/__tests__/README.md +335 -0
  900. package/src/theming/__tests__/runtime.accessibility.test.ts +474 -0
  901. package/src/theming/__tests__/runtime.error.test.ts +616 -0
  902. package/src/theming/__tests__/runtime.integration.test.ts +376 -0
  903. package/src/theming/__tests__/runtime.performance.test.ts +411 -0
  904. package/src/theming/__tests__/runtime.unit.test.ts +470 -0
  905. package/src/theming/runtime.ts +187 -0
  906. package/src/types/__tests__/database.unit.test.ts +489 -0
  907. package/src/types/__tests__/guards.unit.test.ts +146 -0
  908. package/src/types/__tests__/index.unit.test.ts +77 -0
  909. package/src/types/__tests__/organisation.unit.test.ts +713 -0
  910. package/src/types/__tests__/rbac.unit.test.ts +621 -0
  911. package/src/types/__tests__/security.unit.test.ts +347 -0
  912. package/src/types/__tests__/supabase.unit.test.ts +658 -0
  913. package/src/types/__tests__/theme.unit.test.ts +218 -0
  914. package/src/types/__tests__/unified.unit.test.ts +537 -0
  915. package/src/types/__tests__/validation.unit.test.ts +616 -0
  916. package/src/types/database.ts +472 -0
  917. package/src/types/guards.ts +30 -0
  918. package/src/types/index.ts +25 -0
  919. package/src/types/organisation.ts +184 -0
  920. package/src/types/security.ts +70 -0
  921. package/src/types/supabase.ts +166 -0
  922. package/src/types/theme.ts +6 -0
  923. package/src/types/unified.ts +262 -0
  924. package/src/types/validation.ts +164 -0
  925. package/src/types/vitest-globals.d.ts +43 -0
  926. package/src/utils/__mocks__/supabaseMock.ts +75 -0
  927. package/src/utils/__mocks__/supabaseMock.tsx +198 -0
  928. package/src/utils/__tests__/appConfig.unit.test.ts +55 -0
  929. package/src/utils/__tests__/appNameResolver.unit.test.ts +137 -0
  930. package/src/utils/__tests__/audit.unit.test.ts +69 -0
  931. package/src/utils/__tests__/auth-utils.unit.test.ts +70 -0
  932. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +317 -0
  933. package/src/utils/__tests__/cn.unit.test.ts +34 -0
  934. package/src/utils/__tests__/deviceFingerprint.unit.test.ts +480 -0
  935. package/src/utils/__tests__/dynamicUtils.unit.test.ts +322 -0
  936. package/src/utils/__tests__/formatDate.unit.test.ts +109 -0
  937. package/src/utils/__tests__/formatting.unit.test.ts +66 -0
  938. package/src/utils/__tests__/index.unit.test.ts +251 -0
  939. package/src/utils/__tests__/lazyLoad.unit.test.tsx +309 -0
  940. package/src/utils/__tests__/organisationContext.unit.test.ts +192 -0
  941. package/src/utils/__tests__/performanceBudgets.unit.test.ts +259 -0
  942. package/src/utils/__tests__/permissionTypes.unit.test.ts +250 -0
  943. package/src/utils/__tests__/permissionUtils.unit.test.ts +362 -0
  944. package/src/utils/__tests__/sanitization.unit.test.ts +346 -0
  945. package/src/utils/__tests__/schemaUtils.unit.test.ts +441 -0
  946. package/src/utils/__tests__/secureDataAccess.unit.test.ts +334 -0
  947. package/src/utils/__tests__/secureErrors.unit.test.ts +377 -0
  948. package/src/utils/__tests__/secureStorage.unit.test.ts +293 -0
  949. package/src/utils/__tests__/security.unit.test.ts +127 -0
  950. package/src/utils/__tests__/securityMonitor.unit.test.ts +280 -0
  951. package/src/utils/__tests__/sessionTracking.unit.test.ts +370 -0
  952. package/src/utils/__tests__/validation.unit.test.ts +84 -0
  953. package/src/utils/__tests__/validationUtils.unit.test.ts +571 -0
  954. package/src/utils/appConfig.ts +47 -0
  955. package/src/utils/appIdResolver.ts +130 -0
  956. package/src/utils/appNameResolver.ts +190 -0
  957. package/src/utils/audit.ts +127 -0
  958. package/src/utils/auth-utils.ts +96 -0
  959. package/src/utils/bundleAnalysis.ts +129 -0
  960. package/src/utils/cn.ts +7 -0
  961. package/src/utils/debugLogger.ts +46 -0
  962. package/src/utils/deviceFingerprint.ts +215 -0
  963. package/src/utils/dynamicUtils.ts +105 -0
  964. package/src/utils/formatting.ts +77 -0
  965. package/src/utils/index.ts +145 -0
  966. package/src/utils/lazyLoad.tsx +44 -0
  967. package/src/utils/organisationContext.ts +135 -0
  968. package/src/utils/performanceBenchmark.ts +64 -0
  969. package/src/utils/performanceBudgets.ts +111 -0
  970. package/src/utils/permissionTypes.ts +37 -0
  971. package/src/utils/permissionUtils.ts +31 -0
  972. package/src/utils/print/PrintDataProcessor.ts +390 -0
  973. package/src/utils/print/__tests__/PrintDataProcessor.unit.test.ts +219 -0
  974. package/src/utils/print/__tests__/usePrintOptimization.unit.test.tsx +353 -0
  975. package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +397 -0
  976. package/src/utils/print/index.ts +29 -0
  977. package/src/utils/print/types.ts +196 -0
  978. package/src/utils/print/usePrintOptimization.ts +272 -0
  979. package/src/utils/sanitization.ts +264 -0
  980. package/src/utils/schemaUtils.ts +37 -0
  981. package/src/utils/secureDataAccess.ts +361 -0
  982. package/src/utils/secureErrors.ts +79 -0
  983. package/src/utils/secureStorage.ts +244 -0
  984. package/src/utils/security.ts +156 -0
  985. package/src/utils/securityMonitor.ts +45 -0
  986. package/src/utils/sessionTracking.ts +170 -0
  987. package/src/utils/storage/README.md +348 -0
  988. package/src/utils/storage/__tests__/config.unit.test.ts +206 -0
  989. package/src/utils/storage/__tests__/helpers.unit.test.ts +646 -0
  990. package/src/utils/storage/__tests__/index.unit.test.ts +167 -0
  991. package/src/utils/storage/__tests__/types.unit.test.ts +441 -0
  992. package/src/utils/storage/config.ts +100 -0
  993. package/src/utils/storage/helpers.ts +359 -0
  994. package/src/utils/storage/index.ts +36 -0
  995. package/src/utils/storage/types.ts +90 -0
  996. package/src/utils/validation.ts +111 -0
  997. package/src/utils/validationUtils.ts +120 -0
  998. package/src/validation/__tests__/common.unit.test.ts +101 -0
  999. package/src/validation/__tests__/csrf.unit.test.ts +302 -0
  1000. package/src/validation/__tests__/passwordSchema.unit.test.ts +98 -0
  1001. package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +466 -0
  1002. package/src/validation/common.ts +53 -0
  1003. package/src/validation/csrf.ts +214 -0
  1004. package/src/validation/index.ts +43 -0
  1005. package/src/validation/passwordSchema.ts +125 -0
  1006. package/src/validation/sanitization.ts +96 -0
  1007. package/src/validation/schemaUtils.ts +42 -0
  1008. package/src/validation/sqlInjectionProtection.ts +242 -0
  1009. package/src/validation/user.ts +34 -0
@@ -0,0 +1,4153 @@
1
+ [@jmruthers/pace-core - v0.2.4](README.md) / Exports
2
+
3
+ # @jmruthers/pace-core - v0.2.4
4
+
5
+ **`File`**
6
+
7
+ Complete Component Library Export
8
+
9
+ **`Package`**
10
+
11
+ @jmruthers/pace-core
12
+
13
+ **`Since`**
14
+
15
+ 0.1.0
16
+
17
+ This file exports the primary components, hooks, and utilities from the PACE Core library.
18
+ It is the main entry point for developers using the library.
19
+
20
+ **`Example`**
21
+
22
+ ```ts
23
+ // Import common components
24
+ import { Button, Card, useUnifiedAuth } from '@jmruthers/pace-core';
25
+
26
+ // For specialized components, use the complete library import:
27
+ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
28
+ ```
29
+
30
+ ## Table of contents
31
+
32
+ ### Classes
33
+
34
+ - [ErrorBoundary](classes/ErrorBoundary.md)
35
+ - [PublicErrorBoundary](classes/PublicErrorBoundary.md)
36
+
37
+ ### Interfaces
38
+
39
+ - [ButtonProps](interfaces/ButtonProps.md)
40
+ - [CardProps](interfaces/CardProps.md)
41
+ - [DataTableProps](interfaces/DataTableProps.md)
42
+ - [DataTableColumn](interfaces/DataTableColumn.md)
43
+ - [DataTableAction](interfaces/DataTableAction.md)
44
+ - [DataTableToolbarButton](interfaces/DataTableToolbarButton.md)
45
+ - [AggregateConfig](interfaces/AggregateConfig.md)
46
+ - [EmptyStateConfig](interfaces/EmptyStateConfig.md)
47
+ - [FileUploadProps](interfaces/FileUploadProps.md)
48
+ - [FooterProps](interfaces/FooterProps.md)
49
+ - [InactivityWarningModalProps](interfaces/InactivityWarningModalProps.md)
50
+ - [InputProps](interfaces/InputProps.md)
51
+ - [LabelProps](interfaces/LabelProps.md)
52
+ - [LoginFormProps](interfaces/LoginFormProps.md)
53
+ - [NavigationItem](interfaces/NavigationItem.md)
54
+ - [NavigationMenuProps](interfaces/NavigationMenuProps.md)
55
+ - [PaceAppLayoutProps](interfaces/PaceAppLayoutProps.md)
56
+ - [PaceLoginPageProps](interfaces/PaceLoginPageProps.md)
57
+ - [EventLogoProps](interfaces/EventLogoProps.md)
58
+ - [PublicErrorBoundaryProps](interfaces/PublicErrorBoundaryProps.md)
59
+ - [PublicErrorBoundaryState](interfaces/PublicErrorBoundaryState.md)
60
+ - [PublicLoadingSpinnerProps](interfaces/PublicLoadingSpinnerProps.md)
61
+ - [PublicPageFooterProps](interfaces/PublicPageFooterProps.md)
62
+ - [PublicPageHeaderProps](interfaces/PublicPageHeaderProps.md)
63
+ - [PublicPageLayoutProps](interfaces/PublicPageLayoutProps.md)
64
+ - [ToastProps](interfaces/ToastProps.md)
65
+ - [ToastActionElement](interfaces/ToastActionElement.md)
66
+ - [UserMenuProps](interfaces/UserMenuProps.md)
67
+ - [UsePublicEventReturn](interfaces/UsePublicEventReturn.md)
68
+ - [UsePublicEventOptions](interfaces/UsePublicEventOptions.md)
69
+ - [UsePublicEventLogoReturn](interfaces/UsePublicEventLogoReturn.md)
70
+ - [UsePublicEventLogoOptions](interfaces/UsePublicEventLogoOptions.md)
71
+ - [UsePublicRouteParamsReturn](interfaces/UsePublicRouteParamsReturn.md)
72
+ - [UseInactivityTrackerOptions](interfaces/UseInactivityTrackerOptions.md)
73
+ - [UseInactivityTrackerReturn](interfaces/UseInactivityTrackerReturn.md)
74
+ - [EventContextType](interfaces/EventContextType.md)
75
+ - [EventProviderProps](interfaces/EventProviderProps.md)
76
+ - [UserEventAccess](interfaces/UserEventAccess.md)
77
+ - [UnifiedAuthContextType](interfaces/UnifiedAuthContextType.md)
78
+ - [UnifiedAuthProviderProps](interfaces/UnifiedAuthProviderProps.md)
79
+ - [StyleImport](interfaces/StyleImport.md)
80
+ - [ColorShade](interfaces/ColorShade.md)
81
+ - [ColorPalette](interfaces/ColorPalette.md)
82
+ - [PaletteData](interfaces/PaletteData.md)
83
+ - [Organisation](interfaces/Organisation.md)
84
+ - [OrganisationMembership](interfaces/OrganisationMembership.md)
85
+ - [UserProfile](interfaces/UserProfile.md)
86
+ - [OrganisationSecurityError](interfaces/OrganisationSecurityError.md)
87
+ - [OrganisationContextType](interfaces/OrganisationContextType.md)
88
+ - [OrganisationProviderProps](interfaces/OrganisationProviderProps.md)
89
+ - [StorageUploadOptions](interfaces/StorageUploadOptions.md)
90
+ - [StorageFileMetadata](interfaces/StorageFileMetadata.md)
91
+ - [StorageUploadResult](interfaces/StorageUploadResult.md)
92
+ - [StorageUrlOptions](interfaces/StorageUrlOptions.md)
93
+ - [StorageListOptions](interfaces/StorageListOptions.md)
94
+ - [StorageFileInfo](interfaces/StorageFileInfo.md)
95
+ - [StorageListResult](interfaces/StorageListResult.md)
96
+ - [FileSizeLimits](interfaces/FileSizeLimits.md)
97
+ - [StorageConfig](interfaces/StorageConfig.md)
98
+
99
+ ### Type Aliases
100
+
101
+ - [DataRecord](modules.md#datarecord)
102
+ - [GetRowId](modules.md#getrowid)
103
+
104
+ ### Variables
105
+
106
+ - [styleConfig](modules.md#styleconfig)
107
+ - [FILE\_SIZE\_LIMITS](modules.md#file_size_limits)
108
+ - [DEFAULT\_FILE\_SIZE\_LIMIT](modules.md#default_file_size_limit)
109
+ - [APP\_PATH\_MAPPING](modules.md#app_path_mapping)
110
+ - [STORAGE\_CONFIG](modules.md#storage_config)
111
+
112
+ ### Functions
113
+
114
+ - [Alert](modules.md#alert)
115
+ - [AlertTitle](modules.md#alerttitle)
116
+ - [AlertDescription](modules.md#alertdescription)
117
+ - [Avatar](modules.md#avatar)
118
+ - [AvatarImage](modules.md#avatarimage)
119
+ - [AvatarFallback](modules.md#avatarfallback)
120
+ - [Button](modules.md#button)
121
+ - [Card](modules.md#card)
122
+ - [CardHeader](modules.md#cardheader)
123
+ - [CardTitle](modules.md#cardtitle)
124
+ - [CardDescription](modules.md#carddescription)
125
+ - [CardContent](modules.md#cardcontent)
126
+ - [CardFooter](modules.md#cardfooter)
127
+ - [CardActions](modules.md#cardactions)
128
+ - [Checkbox](modules.md#checkbox)
129
+ - [DataTable](modules.md#datatable)
130
+ - [Dialog](modules.md#dialog)
131
+ - [DialogTrigger](modules.md#dialogtrigger)
132
+ - [DialogPortal](modules.md#dialogportal)
133
+ - [DialogClose](modules.md#dialogclose)
134
+ - [DialogOverlay](modules.md#dialogoverlay)
135
+ - [DialogContent](modules.md#dialogcontent)
136
+ - [DialogHeader](modules.md#dialogheader)
137
+ - [DialogBody](modules.md#dialogbody)
138
+ - [DialogFooter](modules.md#dialogfooter)
139
+ - [DialogTitle](modules.md#dialogtitle)
140
+ - [DialogDescription](modules.md#dialogdescription)
141
+ - [EventSelector](modules.md#eventselector)
142
+ - [FileUpload](modules.md#fileupload)
143
+ - [Footer](modules.md#footer)
144
+ - [Form](modules.md#form)
145
+ - [Header](modules.md#header)
146
+ - [InactivityWarningModal](modules.md#inactivitywarningmodal)
147
+ - [Input](modules.md#input)
148
+ - [Label](modules.md#label)
149
+ - [LoadingSpinner](modules.md#loadingspinner)
150
+ - [LoginForm](modules.md#loginform)
151
+ - [NavigationMenu](modules.md#navigationmenu)
152
+ - [OrganisationSelector](modules.md#organisationselector)
153
+ - [PaceAppLayout](modules.md#paceapplayout)
154
+ - [PaceLoginPage](modules.md#paceloginpage)
155
+ - [PasswordChangeForm](modules.md#passwordchangeform)
156
+ - [PasswordResetForm](modules.md#passwordresetform)
157
+ - [Progress](modules.md#progress)
158
+ - [EventLogo](modules.md#eventlogo)
159
+ - [EventLogoCompact](modules.md#eventlogocompact)
160
+ - [EventLogoLarge](modules.md#eventlogolarge)
161
+ - [useErrorBoundary](modules.md#useerrorboundary)
162
+ - [DefaultPublicErrorFallback](modules.md#defaultpublicerrorfallback)
163
+ - [PublicLoadingSpinner](modules.md#publicloadingspinner)
164
+ - [PublicLoadingSpinnerFullPage](modules.md#publicloadingspinnerfullpage)
165
+ - [PublicLoadingSkeleton](modules.md#publicloadingskeleton)
166
+ - [PublicPageContextChecker](modules.md#publicpagecontextchecker)
167
+ - [PublicPageDebugger](modules.md#publicpagedebugger)
168
+ - [PublicPageDiagnostic](modules.md#publicpagediagnostic)
169
+ - [PublicPageFooter](modules.md#publicpagefooter)
170
+ - [PublicPageHeader](modules.md#publicpageheader)
171
+ - [PublicPageLayout](modules.md#publicpagelayout)
172
+ - [usePublicPageContext](modules.md#usepublicpagecontext)
173
+ - [PublicPageProvider](modules.md#publicpageprovider)
174
+ - [usePublicPageProviderContext](modules.md#usepublicpageprovidercontext)
175
+ - [useIsPublicPage](modules.md#useispublicpage)
176
+ - [Select](modules.md#select)
177
+ - [SelectTrigger](modules.md#selecttrigger)
178
+ - [SelectValue](modules.md#selectvalue)
179
+ - [SelectContent](modules.md#selectcontent)
180
+ - [SelectItem](modules.md#selectitem)
181
+ - [SelectGroup](modules.md#selectgroup)
182
+ - [SelectLabel](modules.md#selectlabel)
183
+ - [SelectSeparator](modules.md#selectseparator)
184
+ - [Table](modules.md#table)
185
+ - [TableHeader](modules.md#tableheader)
186
+ - [TableBody](modules.md#tablebody)
187
+ - [TableFooter](modules.md#tablefooter)
188
+ - [TableRow](modules.md#tablerow)
189
+ - [TableHead](modules.md#tablehead)
190
+ - [TableCell](modules.md#tablecell)
191
+ - [TableCaption](modules.md#tablecaption)
192
+ - [ToastProvider](modules.md#toastprovider)
193
+ - [ToastViewport](modules.md#toastviewport)
194
+ - [Toast](modules.md#toast)
195
+ - [ToastAction](modules.md#toastaction)
196
+ - [ToastClose](modules.md#toastclose)
197
+ - [ToastTitle](modules.md#toasttitle)
198
+ - [ToastDescription](modules.md#toastdescription)
199
+ - [useToast](modules.md#usetoast)
200
+ - [Toaster](modules.md#toaster)
201
+ - [TooltipProvider](modules.md#tooltipprovider)
202
+ - [TooltipRoot](modules.md#tooltiproot)
203
+ - [TooltipTrigger](modules.md#tooltiptrigger)
204
+ - [TooltipContent](modules.md#tooltipcontent)
205
+ - [Tooltip](modules.md#tooltip)
206
+ - [UserMenu](modules.md#usermenu)
207
+ - [usePublicEvent](modules.md#usepublicevent)
208
+ - [clearPublicEventCache](modules.md#clearpubliceventcache)
209
+ - [getPublicEventCacheStats](modules.md#getpubliceventcachestats)
210
+ - [usePublicEventLogo](modules.md#usepubliceventlogo)
211
+ - [clearPublicLogoCache](modules.md#clearpubliclogocache)
212
+ - [getPublicLogoCacheStats](modules.md#getpubliclogocachestats)
213
+ - [usePublicRouteParams](modules.md#usepublicrouteparams)
214
+ - [usePublicEventCode](modules.md#usepubliceventcode)
215
+ - [generatePublicRoutePath](modules.md#generatepublicroutepath)
216
+ - [extractEventCodeFromPath](modules.md#extracteventcodefrompath)
217
+ - [useAppConfig](modules.md#useappconfig)
218
+ - [useInactivityTracker](modules.md#useinactivitytracker)
219
+ - [useOrganisationPermissions](modules.md#useorganisationpermissions)
220
+ - [useOrganisationSecurity](modules.md#useorganisationsecurity)
221
+ - [useStorage](modules.md#usestorage)
222
+ - [useFileUpload](modules.md#usefileupload)
223
+ - [useEvents](modules.md#useevents)
224
+ - [EventProvider](modules.md#eventprovider)
225
+ - [OrganisationProvider](modules.md#organisationprovider)
226
+ - [useOrganisations](modules.md#useorganisations)
227
+ - [useUnifiedAuth](modules.md#useunifiedauth)
228
+ - [UnifiedAuthProvider](modules.md#unifiedauthprovider)
229
+ - [getStylePath](modules.md#getstylepath)
230
+ - [getAllStylePaths](modules.md#getallstylepaths)
231
+ - [applyPalette](modules.md#applypalette)
232
+ - [clearPalette](modules.md#clearpalette)
233
+ - [generateSSRThemeCSS](modules.md#generatessrthemecss)
234
+ - [isDynamicThemingActive](modules.md#isdynamicthemingactive)
235
+ - [getCurrentThemeData](modules.md#getcurrentthemedata)
236
+ - [setAppConfig](modules.md#setappconfig)
237
+ - [getAppConfig](modules.md#getappconfig)
238
+ - [getCurrentAppName](modules.md#getcurrentappname)
239
+ - [getCurrentAppId](modules.md#getcurrentappid)
240
+ - [cn](modules.md#cn)
241
+ - [createSecureDataAccess](modules.md#createsecuredataaccess)
242
+ - [getFileSizeLimit](modules.md#getfilesizelimit)
243
+ - [validateFileSize](modules.md#validatefilesize)
244
+ - [formatFileSize](modules.md#formatfilesize)
245
+ - [generateFilePath](modules.md#generatefilepath)
246
+ - [generateUniqueFileName](modules.md#generateuniquefilename)
247
+ - [extractFileMetadata](modules.md#extractfilemetadata)
248
+ - [uploadFile](modules.md#uploadfile)
249
+ - [getPublicUrl](modules.md#getpublicurl)
250
+ - [getSignedUrl](modules.md#getsignedurl)
251
+ - [deleteFile](modules.md#deletefile)
252
+ - [listFiles](modules.md#listfiles)
253
+ - [archiveFile](modules.md#archivefile)
254
+
255
+ ## Type Aliases
256
+
257
+ ### DataRecord
258
+
259
+ Ƭ **DataRecord**: `Record`\<`string`, `any`\>
260
+
261
+ Generic data record type - all DataTable data must extend this
262
+
263
+ #### Defined in
264
+
265
+ [packages/core/src/components/DataTable/types.ts:27](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L27)
266
+
267
+ ___
268
+
269
+ ### GetRowId
270
+
271
+ Ƭ **GetRowId**\<`TData`\>: (`row`: `TData`, `index`: `number`) => `string`
272
+
273
+ Row identifier function type
274
+
275
+ #### Type parameters
276
+
277
+ | Name | Type |
278
+ | :------ | :------ |
279
+ | `TData` | extends [`DataRecord`](modules.md#datarecord) |
280
+
281
+ #### Type declaration
282
+
283
+ ▸ (`row`, `index`): `string`
284
+
285
+ ##### Parameters
286
+
287
+ | Name | Type |
288
+ | :------ | :------ |
289
+ | `row` | `TData` |
290
+ | `index` | `number` |
291
+
292
+ ##### Returns
293
+
294
+ `string`
295
+
296
+ #### Defined in
297
+
298
+ [packages/core/src/components/DataTable/types.ts:32](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L32)
299
+
300
+ ## Variables
301
+
302
+ ### styleConfig
303
+
304
+ • `Const` **styleConfig**: `Object`
305
+
306
+ #### Type declaration
307
+
308
+ | Name | Type |
309
+ | :------ | :------ |
310
+ | `core` | \{ `path`: ``"./core.css"`` = './core.css'; `description`: ``"Complete CSS foundation including base styles, theme mappings, fonts, resets, and neutral tokens"`` = 'Complete CSS foundation including base styles, theme mappings, fonts, resets, and neutral tokens' } |
311
+ | `core.path` | ``"./core.css"`` |
312
+ | `core.description` | ``"Complete CSS foundation including base styles, theme mappings, fonts, resets, and neutral tokens"`` |
313
+
314
+ #### Defined in
315
+
316
+ [packages/core/src/styles/index.ts:32](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/styles/index.ts#L32)
317
+
318
+ ___
319
+
320
+ ### FILE\_SIZE\_LIMITS
321
+
322
+ • `Const` **FILE\_SIZE\_LIMITS**: [`FileSizeLimits`](interfaces/FileSizeLimits.md)
323
+
324
+ File size limits by MIME type (in bytes)
325
+
326
+ #### Defined in
327
+
328
+ [packages/core/src/utils/storage/config.ts:10](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/config.ts#L10)
329
+
330
+ ___
331
+
332
+ ### DEFAULT\_FILE\_SIZE\_LIMIT
333
+
334
+ • `Const` **DEFAULT\_FILE\_SIZE\_LIMIT**: `number`
335
+
336
+ Default file size limit for unknown MIME types
337
+
338
+ #### Defined in
339
+
340
+ [packages/core/src/utils/storage/config.ts:38](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/config.ts#L38)
341
+
342
+ ___
343
+
344
+ ### APP\_PATH\_MAPPING
345
+
346
+ • `Const` **APP\_PATH\_MAPPING**: `Record`\<`string`, `string`\>
347
+
348
+ App-specific path mappings for file organization
349
+ Maps app names to their primary category in the organization-first structure
350
+
351
+ #### Defined in
352
+
353
+ [packages/core/src/utils/storage/config.ts:44](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/config.ts#L44)
354
+
355
+ ___
356
+
357
+ ### STORAGE\_CONFIG
358
+
359
+ • `Const` **STORAGE\_CONFIG**: [`StorageConfig`](interfaces/StorageConfig.md)
360
+
361
+ Storage configuration
362
+
363
+ #### Defined in
364
+
365
+ [packages/core/src/utils/storage/config.ts:54](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/config.ts#L54)
366
+
367
+ ## Functions
368
+
369
+ ### Alert
370
+
371
+ ▸ **Alert**(`props`): `ReactNode`
372
+
373
+ #### Parameters
374
+
375
+ | Name | Type |
376
+ | :------ | :------ |
377
+ | `props` | `HTMLAttributes`\<`HTMLDivElement`\> & \{ `variant?`: ``"destructive"`` \| ``"default"`` \| ``"inline"`` } & `RefAttributes`\<`HTMLDivElement`\> |
378
+
379
+ #### Returns
380
+
381
+ `ReactNode`
382
+
383
+ #### Defined in
384
+
385
+ [packages/core/src/components/Alert/Alert.tsx:67](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Alert/Alert.tsx#L67)
386
+
387
+ ___
388
+
389
+ ### AlertTitle
390
+
391
+ ▸ **AlertTitle**(`props`): `ReactNode`
392
+
393
+ #### Parameters
394
+
395
+ | Name | Type |
396
+ | :------ | :------ |
397
+ | `props` | `HTMLAttributes`\<`HTMLHeadingElement`\> & `RefAttributes`\<`HTMLParagraphElement`\> |
398
+
399
+ #### Returns
400
+
401
+ `ReactNode`
402
+
403
+ #### Defined in
404
+
405
+ [packages/core/src/components/Alert/Alert.tsx:94](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Alert/Alert.tsx#L94)
406
+
407
+ ___
408
+
409
+ ### AlertDescription
410
+
411
+ ▸ **AlertDescription**(`props`): `ReactNode`
412
+
413
+ #### Parameters
414
+
415
+ | Name | Type |
416
+ | :------ | :------ |
417
+ | `props` | `HTMLAttributes`\<`HTMLParagraphElement`\> & `RefAttributes`\<`HTMLParagraphElement`\> |
418
+
419
+ #### Returns
420
+
421
+ `ReactNode`
422
+
423
+ #### Defined in
424
+
425
+ [packages/core/src/components/Alert/Alert.tsx:114](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Alert/Alert.tsx#L114)
426
+
427
+ ___
428
+
429
+ ### Avatar
430
+
431
+ ▸ **Avatar**(`props`): `ReactNode`
432
+
433
+ #### Parameters
434
+
435
+ | Name | Type |
436
+ | :------ | :------ |
437
+ | `props` | `Omit`\<`AvatarProps` & `RefAttributes`\<`HTMLSpanElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLSpanElement`\> |
438
+
439
+ #### Returns
440
+
441
+ `ReactNode`
442
+
443
+ #### Defined in
444
+
445
+ [packages/core/src/components/Avatar/Avatar.tsx:42](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Avatar/Avatar.tsx#L42)
446
+
447
+ ___
448
+
449
+ ### AvatarImage
450
+
451
+ ▸ **AvatarImage**(`props`): `ReactNode`
452
+
453
+ #### Parameters
454
+
455
+ | Name | Type |
456
+ | :------ | :------ |
457
+ | `props` | `Omit`\<`AvatarImageProps` & `RefAttributes`\<`HTMLImageElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLImageElement`\> |
458
+
459
+ #### Returns
460
+
461
+ `ReactNode`
462
+
463
+ #### Defined in
464
+
465
+ [packages/core/src/components/Avatar/Avatar.tsx:57](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Avatar/Avatar.tsx#L57)
466
+
467
+ ___
468
+
469
+ ### AvatarFallback
470
+
471
+ ▸ **AvatarFallback**(`props`): `ReactNode`
472
+
473
+ #### Parameters
474
+
475
+ | Name | Type |
476
+ | :------ | :------ |
477
+ | `props` | `Omit`\<`AvatarFallbackProps` & `RefAttributes`\<`HTMLSpanElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLSpanElement`\> |
478
+
479
+ #### Returns
480
+
481
+ `ReactNode`
482
+
483
+ #### Defined in
484
+
485
+ [packages/core/src/components/Avatar/Avatar.tsx:69](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Avatar/Avatar.tsx#L69)
486
+
487
+ ___
488
+
489
+ ### Button
490
+
491
+ ▸ **Button**(`props`): `ReactNode`
492
+
493
+ Button Component
494
+ A flexible, accessible button component with multiple variants and sizes.
495
+
496
+ #### Parameters
497
+
498
+ | Name | Type |
499
+ | :------ | :------ |
500
+ | `props` | [`ButtonProps`](interfaces/ButtonProps.md) & `RefAttributes`\<`HTMLButtonElement`\> |
501
+
502
+ #### Returns
503
+
504
+ `ReactNode`
505
+
506
+ **`Component`**
507
+
508
+ **`Example`**
509
+
510
+ ```tsx
511
+ // Basic button
512
+ <Button>Click me</Button>
513
+
514
+ // Button with variant and size
515
+ <Button variant="destructive" size="lg">Delete</Button>
516
+
517
+ // Button as child (composition)
518
+ <Button asChild>
519
+ <Link href="/dashboard">Go to Dashboard</Link>
520
+ </Button>
521
+ ```
522
+
523
+ #### Defined in
524
+
525
+ [packages/core/src/components/Button/Button.tsx:109](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Button/Button.tsx#L109)
526
+
527
+ ___
528
+
529
+ ### Card
530
+
531
+ ▸ **Card**(`props`): `ReactNode`
532
+
533
+ #### Parameters
534
+
535
+ | Name | Type |
536
+ | :------ | :------ |
537
+ | `props` | [`CardProps`](interfaces/CardProps.md) & `RefAttributes`\<`HTMLElement`\> |
538
+
539
+ #### Returns
540
+
541
+ `ReactNode`
542
+
543
+ #### Defined in
544
+
545
+ [packages/core/src/components/Card/Card.tsx:95](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Card/Card.tsx#L95)
546
+
547
+ ___
548
+
549
+ ### CardHeader
550
+
551
+ ▸ **CardHeader**(`props`): `ReactNode`
552
+
553
+ #### Parameters
554
+
555
+ | Name | Type |
556
+ | :------ | :------ |
557
+ | `props` | `HTMLAttributes`\<`HTMLElement`\> & `RefAttributes`\<`HTMLElement`\> |
558
+
559
+ #### Returns
560
+
561
+ `ReactNode`
562
+
563
+ #### Defined in
564
+
565
+ [packages/core/src/components/Card/Card.tsx:111](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Card/Card.tsx#L111)
566
+
567
+ ___
568
+
569
+ ### CardTitle
570
+
571
+ ▸ **CardTitle**(`props`): `ReactNode`
572
+
573
+ #### Parameters
574
+
575
+ | Name | Type |
576
+ | :------ | :------ |
577
+ | `props` | `HTMLAttributes`\<`HTMLHeadingElement`\> & `RefAttributes`\<`HTMLHeadingElement`\> |
578
+
579
+ #### Returns
580
+
581
+ `ReactNode`
582
+
583
+ #### Defined in
584
+
585
+ [packages/core/src/components/Card/Card.tsx:123](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Card/Card.tsx#L123)
586
+
587
+ ___
588
+
589
+ ### CardDescription
590
+
591
+ ▸ **CardDescription**(`props`): `ReactNode`
592
+
593
+ #### Parameters
594
+
595
+ | Name | Type |
596
+ | :------ | :------ |
597
+ | `props` | `HTMLAttributes`\<`HTMLParagraphElement`\> & `RefAttributes`\<`HTMLParagraphElement`\> |
598
+
599
+ #### Returns
600
+
601
+ `ReactNode`
602
+
603
+ #### Defined in
604
+
605
+ [packages/core/src/components/Card/Card.tsx:138](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Card/Card.tsx#L138)
606
+
607
+ ___
608
+
609
+ ### CardContent
610
+
611
+ ▸ **CardContent**(`props`): `ReactNode`
612
+
613
+ #### Parameters
614
+
615
+ | Name | Type |
616
+ | :------ | :------ |
617
+ | `props` | `HTMLAttributes`\<`HTMLElement`\> & `RefAttributes`\<`HTMLElement`\> |
618
+
619
+ #### Returns
620
+
621
+ `ReactNode`
622
+
623
+ #### Defined in
624
+
625
+ [packages/core/src/components/Card/Card.tsx:150](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Card/Card.tsx#L150)
626
+
627
+ ___
628
+
629
+ ### CardFooter
630
+
631
+ ▸ **CardFooter**(`props`): `ReactNode`
632
+
633
+ #### Parameters
634
+
635
+ | Name | Type |
636
+ | :------ | :------ |
637
+ | `props` | `HTMLAttributes`\<`HTMLElement`\> & `RefAttributes`\<`HTMLElement`\> |
638
+
639
+ #### Returns
640
+
641
+ `ReactNode`
642
+
643
+ #### Defined in
644
+
645
+ [packages/core/src/components/Card/Card.tsx:162](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Card/Card.tsx#L162)
646
+
647
+ ___
648
+
649
+ ### CardActions
650
+
651
+ ▸ **CardActions**(`props`): `ReactNode`
652
+
653
+ #### Parameters
654
+
655
+ | Name | Type |
656
+ | :------ | :------ |
657
+ | `props` | `HTMLAttributes`\<`HTMLParagraphElement`\> & `RefAttributes`\<`HTMLParagraphElement`\> |
658
+
659
+ #### Returns
660
+
661
+ `ReactNode`
662
+
663
+ #### Defined in
664
+
665
+ [packages/core/src/components/Card/Card.tsx:174](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Card/Card.tsx#L174)
666
+
667
+ ___
668
+
669
+ ### Checkbox
670
+
671
+ ▸ **Checkbox**(`props`): `ReactNode`
672
+
673
+ #### Parameters
674
+
675
+ | Name | Type |
676
+ | :------ | :------ |
677
+ | `props` | `Omit`\<`CheckboxProps` & `RefAttributes`\<`HTMLButtonElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLButtonElement`\> |
678
+
679
+ #### Returns
680
+
681
+ `ReactNode`
682
+
683
+ #### Defined in
684
+
685
+ [packages/core/src/components/Checkbox/Checkbox.tsx:54](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Checkbox/Checkbox.tsx#L54)
686
+
687
+ ___
688
+
689
+ ### DataTable
690
+
691
+ ▸ **DataTable**\<`TData`\>(`props`): `Element`
692
+
693
+ Enhanced DataTable with comprehensive performance optimizations
694
+
695
+ This component automatically detects dataset size and applies appropriate performance optimizations:
696
+ - < 1,000 records: Standard rendering with full feature support
697
+ - 1,000+ records: Automatic virtual scrolling with intelligent memory management
698
+ - 10,000+ records: Enhanced chunking and memory optimization
699
+ - 100,000+ records: Advanced server-side processing with virtualization
700
+
701
+ Features are configured through the unified `features` prop for maximum flexibility.
702
+
703
+ #### Type parameters
704
+
705
+ | Name | Type |
706
+ | :------ | :------ |
707
+ | `TData` | extends [`DataRecord`](modules.md#datarecord) |
708
+
709
+ #### Parameters
710
+
711
+ | Name | Type |
712
+ | :------ | :------ |
713
+ | `props` | [`DataTableProps`](interfaces/DataTableProps.md)\<`TData`\> |
714
+
715
+ #### Returns
716
+
717
+ `Element`
718
+
719
+ #### Defined in
720
+
721
+ [packages/core/src/components/DataTable/DataTable.tsx:414](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/DataTable.tsx#L414)
722
+
723
+ ___
724
+
725
+ ### Dialog
726
+
727
+ ▸ **Dialog**(`props`, `deprecatedLegacyContext?`): `ReactNode`
728
+
729
+ #### Parameters
730
+
731
+ | Name | Type | Description |
732
+ | :------ | :------ | :------ |
733
+ | `props` | `DialogProps` | - |
734
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
735
+
736
+ #### Returns
737
+
738
+ `ReactNode`
739
+
740
+ #### Defined in
741
+
742
+ [packages/core/src/components/Dialog/Dialog.tsx:288](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L288)
743
+
744
+ ___
745
+
746
+ ### DialogTrigger
747
+
748
+ ▸ **DialogTrigger**(`props`): `ReactNode`
749
+
750
+ #### Parameters
751
+
752
+ | Name | Type |
753
+ | :------ | :------ |
754
+ | `props` | `DialogTriggerProps` & `RefAttributes`\<`HTMLButtonElement`\> |
755
+
756
+ #### Returns
757
+
758
+ `ReactNode`
759
+
760
+ #### Defined in
761
+
762
+ [packages/core/src/components/Dialog/Dialog.tsx:289](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L289)
763
+
764
+ ___
765
+
766
+ ### DialogPortal
767
+
768
+ ▸ **DialogPortal**(`props`, `deprecatedLegacyContext?`): `ReactNode`
769
+
770
+ #### Parameters
771
+
772
+ | Name | Type | Description |
773
+ | :------ | :------ | :------ |
774
+ | `props` | `DialogPortalProps` | - |
775
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
776
+
777
+ #### Returns
778
+
779
+ `ReactNode`
780
+
781
+ #### Defined in
782
+
783
+ [packages/core/src/components/Dialog/Dialog.tsx:290](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L290)
784
+
785
+ ___
786
+
787
+ ### DialogClose
788
+
789
+ ▸ **DialogClose**(`props`): `ReactNode`
790
+
791
+ #### Parameters
792
+
793
+ | Name | Type |
794
+ | :------ | :------ |
795
+ | `props` | `DialogCloseProps` & `RefAttributes`\<`HTMLButtonElement`\> |
796
+
797
+ #### Returns
798
+
799
+ `ReactNode`
800
+
801
+ #### Defined in
802
+
803
+ [packages/core/src/components/Dialog/Dialog.tsx:291](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L291)
804
+
805
+ ___
806
+
807
+ ### DialogOverlay
808
+
809
+ ▸ **DialogOverlay**(`props`): `ReactNode`
810
+
811
+ #### Parameters
812
+
813
+ | Name | Type |
814
+ | :------ | :------ |
815
+ | `props` | `DialogOverlayProps` & `RefAttributes`\<`HTMLDivElement`\> |
816
+
817
+ #### Returns
818
+
819
+ `ReactNode`
820
+
821
+ #### Defined in
822
+
823
+ [packages/core/src/components/Dialog/Dialog.tsx:294](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L294)
824
+
825
+ ___
826
+
827
+ ### DialogContent
828
+
829
+ ▸ **DialogContent**(`props`): `ReactNode`
830
+
831
+ DialogContent component
832
+ The main content container using semantic HTML <dialog> element with enhanced features
833
+ Built on Radix UI primitives for accessibility while providing semantic structure
834
+
835
+ #### Parameters
836
+
837
+ | Name | Type | Description |
838
+ | :------ | :------ | :------ |
839
+ | `props` | `DialogContentProps` & `RefAttributes`\<`HTMLDivElement`\> | Content configuration and styling |
840
+
841
+ #### Returns
842
+
843
+ `ReactNode`
844
+
845
+ JSX.Element - The semantic dialog content with overlay and optional close button
846
+
847
+ **`Example`**
848
+
849
+ ```tsx
850
+ <DialogContent size="lg" enableScrolling={true} maxHeightPercent={80}>
851
+ <DialogHeader>
852
+ <DialogTitle>Scrollable Dialog</DialogTitle>
853
+ <DialogDescription>This dialog will scroll if content overflows.</DialogDescription>
854
+ </DialogHeader>
855
+ <DialogBody>
856
+ <section>Large amount of semantic content here...</section>
857
+ </DialogBody>
858
+ <DialogFooter>
859
+ <Button>Save</Button>
860
+ </DialogFooter>
861
+ </DialogContent>
862
+ ```
863
+
864
+ #### Defined in
865
+
866
+ [packages/core/src/components/Dialog/Dialog.tsx:437](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L437)
867
+
868
+ ___
869
+
870
+ ### DialogHeader
871
+
872
+ ▸ **DialogHeader**(`props`): `Element`
873
+
874
+ DialogHeader component
875
+ Semantic header container for dialog title and description with optional sticky behavior
876
+
877
+ #### Parameters
878
+
879
+ | Name | Type | Description |
880
+ | :------ | :------ | :------ |
881
+ | `props` | `DialogHeaderProps` | Header configuration and styling |
882
+
883
+ #### Returns
884
+
885
+ `Element`
886
+
887
+ JSX.Element - The dialog header container using semantic <header> element
888
+
889
+ **`Example`**
890
+
891
+ ```tsx
892
+ <DialogHeader sticky={true}>
893
+ <DialogTitle>Sticky Header</DialogTitle>
894
+ <DialogDescription>This header stays visible while scrolling.</DialogDescription>
895
+ </DialogHeader>
896
+ ```
897
+
898
+ #### Defined in
899
+
900
+ [packages/core/src/components/Dialog/Dialog.tsx:555](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L555)
901
+
902
+ ___
903
+
904
+ ### DialogBody
905
+
906
+ ▸ **DialogBody**(`props`): `Element`
907
+
908
+ DialogBody component
909
+ Semantic main content area for dialog body content with scrollable functionality
910
+ Supports both React children and safe HTML content rendering
911
+
912
+ #### Parameters
913
+
914
+ | Name | Type | Description |
915
+ | :------ | :------ | :------ |
916
+ | `props` | `DialogBodyProps` | Body configuration and styling |
917
+
918
+ #### Returns
919
+
920
+ `Element`
921
+
922
+ JSX.Element - The scrollable dialog body container using semantic <main> element
923
+
924
+ **`Example`**
925
+
926
+ ```tsx
927
+ // Using React children
928
+ <DialogBody>
929
+ <section className="space-y-4">
930
+ <h4>Content Title</h4>
931
+ <p>Long content that will scroll...</p>
932
+ </section>
933
+ </DialogBody>
934
+
935
+ // Using HTML content
936
+ <DialogBody
937
+ htmlContent="<h2>Import Instructions</h2><p>Upload a CSV file with the following format:</p><ul><li>Required columns: name, email</li><li>Optional columns: phone, address</li></ul>"
938
+ allowHtml={true}
939
+ />
940
+ ```
941
+
942
+ #### Defined in
943
+
944
+ [packages/core/src/components/Dialog/Dialog.tsx:596](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L596)
945
+
946
+ ___
947
+
948
+ ### DialogFooter
949
+
950
+ ▸ **DialogFooter**(`props`): `Element`
951
+
952
+ DialogFooter component
953
+ Semantic footer container for dialog action buttons with optional sticky behavior
954
+
955
+ #### Parameters
956
+
957
+ | Name | Type | Description |
958
+ | :------ | :------ | :------ |
959
+ | `props` | `DialogFooterProps` | Footer configuration and styling |
960
+
961
+ #### Returns
962
+
963
+ `Element`
964
+
965
+ JSX.Element - The dialog footer container using semantic <footer> element
966
+
967
+ **`Example`**
968
+
969
+ ```tsx
970
+ <DialogFooter sticky={true}>
971
+ <Button variant="outline">Cancel</Button>
972
+ <Button>Save changes</Button>
973
+ </DialogFooter>
974
+ ```
975
+
976
+ #### Defined in
977
+
978
+ [packages/core/src/components/Dialog/Dialog.tsx:685](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L685)
979
+
980
+ ___
981
+
982
+ ### DialogTitle
983
+
984
+ ▸ **DialogTitle**(`props`): `ReactNode`
985
+
986
+ #### Parameters
987
+
988
+ | Name | Type |
989
+ | :------ | :------ |
990
+ | `props` | `DialogTitleProps` & `RefAttributes`\<`HTMLHeadingElement`\> |
991
+
992
+ #### Returns
993
+
994
+ `ReactNode`
995
+
996
+ #### Defined in
997
+
998
+ [packages/core/src/components/Dialog/Dialog.tsx:701](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L701)
999
+
1000
+ ___
1001
+
1002
+ ### DialogDescription
1003
+
1004
+ ▸ **DialogDescription**(`props`): `ReactNode`
1005
+
1006
+ #### Parameters
1007
+
1008
+ | Name | Type |
1009
+ | :------ | :------ |
1010
+ | `props` | `DialogDescriptionProps` & `RefAttributes`\<`HTMLParagraphElement`\> |
1011
+
1012
+ #### Returns
1013
+
1014
+ `ReactNode`
1015
+
1016
+ #### Defined in
1017
+
1018
+ [packages/core/src/components/Dialog/Dialog.tsx:737](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L737)
1019
+
1020
+ ___
1021
+
1022
+ ### EventSelector
1023
+
1024
+ ▸ **EventSelector**(`«destructured»`): ``null`` \| `Element`
1025
+
1026
+ EventSelector component for selecting events with built-in access control
1027
+
1028
+ This component provides secure event selection with:
1029
+ - Database integration via rbac_event_app_roles table
1030
+ - Auto-selection of next upcoming event by date
1031
+ - Cross-device sync via Supabase user session metadata
1032
+ - localStorage fallback for offline scenarios
1033
+ - Comprehensive error handling and user feedback
1034
+
1035
+ #### Parameters
1036
+
1037
+ | Name | Type |
1038
+ | :------ | :------ |
1039
+ | `«destructured»` | `EventSelectorProps` |
1040
+
1041
+ #### Returns
1042
+
1043
+ ``null`` \| `Element`
1044
+
1045
+ **`Component`**
1046
+
1047
+ **`Example`**
1048
+
1049
+ ```ts
1050
+ <UnifiedAuthProvider supabaseClient={supabase} appName="PACE">
1051
+ <EventSelector onEventChange={(event) => console.log(event)} />
1052
+ </UnifiedAuthProvider>
1053
+ ```
1054
+
1055
+ #### Defined in
1056
+
1057
+ [packages/core/src/components/EventSelector/EventSelector.tsx:130](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/EventSelector/EventSelector.tsx#L130)
1058
+
1059
+ ___
1060
+
1061
+ ### FileUpload
1062
+
1063
+ ▸ **FileUpload**(`«destructured»`): `Element`
1064
+
1065
+ #### Parameters
1066
+
1067
+ | Name | Type |
1068
+ | :------ | :------ |
1069
+ | `«destructured»` | [`FileUploadProps`](interfaces/FileUploadProps.md) |
1070
+
1071
+ #### Returns
1072
+
1073
+ `Element`
1074
+
1075
+ #### Defined in
1076
+
1077
+ [packages/core/src/components/FileUpload/FileUpload.tsx:27](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/FileUpload/FileUpload.tsx#L27)
1078
+
1079
+ ___
1080
+
1081
+ ### Footer
1082
+
1083
+ ▸ **Footer**(`props`): `ReactNode`
1084
+
1085
+ #### Parameters
1086
+
1087
+ | Name | Type |
1088
+ | :------ | :------ |
1089
+ | `props` | [`FooterProps`](interfaces/FooterProps.md) |
1090
+
1091
+ #### Returns
1092
+
1093
+ `ReactNode`
1094
+
1095
+ #### Defined in
1096
+
1097
+ [packages/core/src/components/Footer/Footer.tsx:196](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Footer/Footer.tsx#L196)
1098
+
1099
+ ___
1100
+
1101
+ ### Form
1102
+
1103
+ ▸ **Form**\<`TFieldValues`\>(`props`): `Element`
1104
+
1105
+ Form component with validation and React Hook Form integration
1106
+
1107
+ #### Type parameters
1108
+
1109
+ | Name | Type | Description |
1110
+ | :------ | :------ | :------ |
1111
+ | `TFieldValues` | extends `FieldValues` = `FieldValues` | The type of form field values |
1112
+
1113
+ #### Parameters
1114
+
1115
+ | Name | Type | Description |
1116
+ | :------ | :------ | :------ |
1117
+ | `props` | `FormProps`\<`TFieldValues`\> | Form configuration and handlers |
1118
+
1119
+ #### Returns
1120
+
1121
+ `Element`
1122
+
1123
+ JSX.Element - The rendered form with FormProvider context
1124
+
1125
+ **`Example`**
1126
+
1127
+ ```tsx
1128
+ <Form
1129
+ schema={userSchema}
1130
+ defaultValues={{ name: "", email: "" }}
1131
+ onSubmit={handleSubmit}
1132
+ mode="onBlur"
1133
+ >
1134
+ <FormField name="name" label="Name" />
1135
+ <FormField name="email" label="Email" />
1136
+ <Button type="submit">Submit</Button>
1137
+ </Form>
1138
+ ```
1139
+
1140
+ #### Defined in
1141
+
1142
+ [packages/core/src/components/Form/Form.tsx:142](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L142)
1143
+
1144
+ ___
1145
+
1146
+ ### Header
1147
+
1148
+ ▸ **Header**(`props`): `Element`
1149
+
1150
+ Header component for application layouts with comprehensive navigation, user management,
1151
+ and customizable branding support.
1152
+
1153
+ A flexible header component that supports various configurations including custom logos,
1154
+ navigation menus, user authentication, event selection, and custom actions.
1155
+
1156
+ Features:
1157
+ - Customizable logo (URL or custom component)
1158
+ - Navigation menu integration with highlighting
1159
+ - User menu with authentication and password management
1160
+ - Event selector for multi-tenant applications
1161
+ - Custom actions support
1162
+ - Responsive design with mobile considerations
1163
+ - Accessibility compliant with proper ARIA attributes
1164
+ - Backdrop blur effects for modern UI
1165
+ - Flexible layout with configurable sections
1166
+
1167
+ #### Parameters
1168
+
1169
+ | Name | Type | Description |
1170
+ | :------ | :------ | :------ |
1171
+ | `props` | `HeaderProps` | Header configuration including logo, navigation, user settings, and custom content |
1172
+
1173
+ #### Returns
1174
+
1175
+ `Element`
1176
+
1177
+ React element with complete header functionality
1178
+
1179
+ **`Example`**
1180
+
1181
+ Basic header with logo and navigation:
1182
+ ```tsx
1183
+ import { Header } from '@jmruthers/pace-core';
1184
+ import { useNavigate, useLocation } from 'react-router-dom';
1185
+
1186
+ function AppHeader() {
1187
+ const navigate = useNavigate();
1188
+ const location = useLocation();
1189
+
1190
+ const navItems = [
1191
+ { id: 'dashboard', label: 'Dashboard', href: '/dashboard' },
1192
+ { id: 'meals', label: 'Meals', href: '/meals' },
1193
+ { id: 'settings', label: 'Settings', href: '/settings' }
1194
+ ];
1195
+
1196
+ return (
1197
+ <Header
1198
+ logoUrl="/company-logo.svg"
1199
+ logoAlt="My Company"
1200
+ navItems={navItems}
1201
+ currentPath={location.pathname}
1202
+ onNavigate={(item) => navigate(item.href)}
1203
+ user={currentUser}
1204
+ onSignOut={handleSignOut}
1205
+ />
1206
+ );
1207
+ }
1208
+ ```
1209
+
1210
+ **`Example`**
1211
+
1212
+ Header with custom actions:
1213
+ ```tsx
1214
+ import { Header, Button } from '@jmruthers/pace-core';
1215
+
1216
+ function HeaderWithActions() {
1217
+ const customActions = (
1218
+ <div className="flex items-center gap-2">
1219
+ <Button variant="outline" size="sm">Export</Button>
1220
+ <Button size="sm">New Item</Button>
1221
+ </div>
1222
+ );
1223
+
1224
+ return (
1225
+ <Header
1226
+ logoUrl="/logo.svg"
1227
+ navItems={navigationItems}
1228
+ actions={customActions}
1229
+ user={currentUser}
1230
+ onSignOut={handleSignOut}
1231
+ />
1232
+ );
1233
+ }
1234
+ ```
1235
+
1236
+ **`Example`**
1237
+
1238
+ Minimal header configuration:
1239
+ ```tsx
1240
+ function MinimalHeader() {
1241
+ return (
1242
+ <Header
1243
+ logoUrl="/simple-logo.svg"
1244
+ logoAlt="Simple App"
1245
+ showEventSelector={false}
1246
+ user={currentUser}
1247
+ onSignOut={handleSignOut}
1248
+ />
1249
+ );
1250
+ }
1251
+ ```
1252
+
1253
+ **`Since`**
1254
+
1255
+ 0.1.0
1256
+
1257
+ #### Defined in
1258
+
1259
+ [packages/core/src/components/Header/Header.tsx:219](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Header/Header.tsx#L219)
1260
+
1261
+ ___
1262
+
1263
+ ### InactivityWarningModal
1264
+
1265
+ ▸ **InactivityWarningModal**(`«destructured»`): `Element`
1266
+
1267
+ #### Parameters
1268
+
1269
+ | Name | Type |
1270
+ | :------ | :------ |
1271
+ | `«destructured»` | [`InactivityWarningModalProps`](interfaces/InactivityWarningModalProps.md) |
1272
+
1273
+ #### Returns
1274
+
1275
+ `Element`
1276
+
1277
+ #### Defined in
1278
+
1279
+ [packages/core/src/components/InactivityWarningModal/InactivityWarningModal.tsx:71](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/InactivityWarningModal/InactivityWarningModal.tsx#L71)
1280
+
1281
+ ___
1282
+
1283
+ ### Input
1284
+
1285
+ ▸ **Input**(`props`): `ReactNode`
1286
+
1287
+ Input component
1288
+ A flexible, accessible input component with multiple variants and sizes
1289
+
1290
+ #### Parameters
1291
+
1292
+ | Name | Type | Description |
1293
+ | :------ | :------ | :------ |
1294
+ | `props` | [`InputProps`](interfaces/InputProps.md) & `RefAttributes`\<`HTMLInputElement`\> | Input configuration and styling |
1295
+
1296
+ #### Returns
1297
+
1298
+ `ReactNode`
1299
+
1300
+ JSX.Element - The rendered input element
1301
+
1302
+ **`Example`**
1303
+
1304
+ ```tsx
1305
+ // Basic input
1306
+ <Input placeholder="Enter your name" />
1307
+
1308
+ // Input with error state
1309
+ <Input
1310
+ placeholder="Email"
1311
+ type="email"
1312
+ error={true}
1313
+ />
1314
+
1315
+ // Large input with destructive variant
1316
+ <Input
1317
+ variant="destructive"
1318
+ size="lg"
1319
+ placeholder="Error input"
1320
+ />
1321
+ ```
1322
+
1323
+ #### Defined in
1324
+
1325
+ [packages/core/src/components/Input/Input.tsx:104](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Input/Input.tsx#L104)
1326
+
1327
+ ___
1328
+
1329
+ ### Label
1330
+
1331
+ ▸ **Label**(`props`): `ReactNode`
1332
+
1333
+ Label component
1334
+ An accessible label with helper text and error state support
1335
+
1336
+ #### Parameters
1337
+
1338
+ | Name | Type | Description |
1339
+ | :------ | :------ | :------ |
1340
+ | `props` | [`LabelProps`](interfaces/LabelProps.md) & `RefAttributes`\<`HTMLLabelElement`\> | Label configuration and styling |
1341
+
1342
+ #### Returns
1343
+
1344
+ `ReactNode`
1345
+
1346
+ JSX.Element - The rendered label with optional helper text and errors
1347
+
1348
+ **`Example`**
1349
+
1350
+ ```tsx
1351
+ <Label htmlFor="email" required helperText="We'll never share your email">
1352
+ Email Address
1353
+ </Label>
1354
+ ```
1355
+
1356
+ #### Defined in
1357
+
1358
+ [packages/core/src/components/Label/Label.tsx:120](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Label/Label.tsx#L120)
1359
+
1360
+ ___
1361
+
1362
+ ### LoadingSpinner
1363
+
1364
+ ▸ **LoadingSpinner**(`props`, `deprecatedLegacyContext?`): `ReactNode`
1365
+
1366
+ LoadingSpinner component
1367
+ A simple, accessible loading spinner for indicating loading states
1368
+
1369
+ #### Parameters
1370
+
1371
+ | Name | Type | Description |
1372
+ | :------ | :------ | :------ |
1373
+ | `props` | `LoadingSpinnerProps` | Spinner configuration and styling |
1374
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
1375
+
1376
+ #### Returns
1377
+
1378
+ `ReactNode`
1379
+
1380
+ JSX.Element - The rendered loading spinner
1381
+
1382
+ **`Example`**
1383
+
1384
+ ```tsx
1385
+ <LoadingSpinner size="lg" className="text-main-500" />
1386
+ ```
1387
+
1388
+ #### Defined in
1389
+
1390
+ [packages/core/src/components/LoadingSpinner/LoadingSpinner.tsx:83](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/LoadingSpinner/LoadingSpinner.tsx#L83)
1391
+
1392
+ ___
1393
+
1394
+ ### LoginForm
1395
+
1396
+ ▸ **LoginForm**(`props`): `ReactNode`
1397
+
1398
+ LoginForm component that provides a ready-to-use authentication form for user sign-in.
1399
+ It supports validation, loading state, error handling, and can be customized via props.
1400
+ Now includes performance optimizations and onSignUp support.
1401
+
1402
+ #### Parameters
1403
+
1404
+ | Name | Type | Description |
1405
+ | :------ | :------ | :------ |
1406
+ | `props` | [`LoginFormProps`](interfaces/LoginFormProps.md) | Login form configuration and handlers |
1407
+
1408
+ #### Returns
1409
+
1410
+ `ReactNode`
1411
+
1412
+ JSX.Element - The rendered login form
1413
+
1414
+ **`Example`**
1415
+
1416
+ ```tsx
1417
+ <LoginForm
1418
+ onSignIn={handleSignIn}
1419
+ onSuccess={() => navigate('/dashboard')}
1420
+ onError={(error) => toast.error(error.message)}
1421
+ isLoading={isAuthenticating}
1422
+ />
1423
+ ```
1424
+
1425
+ #### Defined in
1426
+
1427
+ [packages/core/src/components/LoginForm/LoginForm.tsx:150](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/LoginForm/LoginForm.tsx#L150)
1428
+
1429
+ ___
1430
+
1431
+ ### NavigationMenu
1432
+
1433
+ ▸ **NavigationMenu**(`props`): `ReactNode`
1434
+
1435
+ Unified NavigationMenu component that supports both dropdown and hierarchical navigation modes.
1436
+
1437
+ A flexible navigation menu component with support for icons, current page highlighting,
1438
+ keyboard navigation, and nested menu items.
1439
+
1440
+ Features:
1441
+ - Dropdown mode: Menu button that opens a dropdown list
1442
+ - Hierarchical mode: Expandable tree navigation with nested items
1443
+ - Icon support for navigation items
1444
+ - Current page highlighting
1445
+ - Keyboard navigation support (Enter, Space, Escape)
1446
+ - Accessible design with proper ARIA attributes
1447
+ - Click outside to close (dropdown mode)
1448
+ - Recursive rendering for nested items (hierarchical mode)
1449
+
1450
+ #### Parameters
1451
+
1452
+ | Name | Type | Description |
1453
+ | :------ | :------ | :------ |
1454
+ | `props` | [`NavigationMenuProps`](interfaces/NavigationMenuProps.md) & `RefAttributes`\<`HTMLDivElement`\> | NavigationMenu component props including items, mode, navigation handlers, and styling options |
1455
+
1456
+ #### Returns
1457
+
1458
+ `ReactNode`
1459
+
1460
+ React element with navigation menu functionality
1461
+
1462
+ **`Example`**
1463
+
1464
+ Basic dropdown navigation (most common use case):
1465
+ ```tsx
1466
+ import { NavigationMenu } from '@jmruthers/pace-core';
1467
+ import { useNavigate, useLocation } from 'react-router-dom';
1468
+
1469
+ function AppNavigation() {
1470
+ const navigate = useNavigate();
1471
+ const location = useLocation();
1472
+
1473
+ const navItems = [
1474
+ { id: 'home', label: 'Home', href: '/', icon: 'Home' },
1475
+ { id: 'dashboard', label: 'Dashboard', href: '/dashboard', icon: 'LayoutDashboard' },
1476
+ { id: 'reports', label: 'Reports', href: '/reports', icon: 'FileText' },
1477
+ { id: 'settings', label: 'Settings', href: '/settings', icon: 'Settings' }
1478
+ ];
1479
+
1480
+ return (
1481
+ <NavigationMenu
1482
+ items={navItems}
1483
+ mode="dropdown"
1484
+ currentPath={location.pathname}
1485
+ onNavigate={(item) => navigate(item.href)}
1486
+ buttonText="Main Menu"
1487
+ showIcons={true}
1488
+ />
1489
+ );
1490
+ }
1491
+ ```
1492
+
1493
+ **`Example`**
1494
+
1495
+ Hierarchical navigation with nested items:
1496
+ ```tsx
1497
+ import { NavigationMenu } from '@jmruthers/pace-core';
1498
+
1499
+ function SidebarNavigation() {
1500
+ const hierarchicalItems = [
1501
+ {
1502
+ id: 'user-management',
1503
+ label: 'User Management',
1504
+ icon: 'Users',
1505
+ children: [
1506
+ { id: 'users-list', label: 'All Users', href: '/users' },
1507
+ { id: 'users-create', label: 'Create User', href: '/users/create' },
1508
+ { id: 'user-roles', label: 'User Roles', href: '/users/roles' }
1509
+ ]
1510
+ },
1511
+ {
1512
+ id: 'reports',
1513
+ label: 'Reports',
1514
+ icon: 'BarChart',
1515
+ children: [
1516
+ { id: 'sales-reports', label: 'Sales Reports', href: '/reports/sales' },
1517
+ { id: 'user-reports', label: 'User Reports', href: '/reports/users' }
1518
+ ]
1519
+ },
1520
+ { id: 'settings', label: 'Settings', href: '/settings', icon: 'Settings' }
1521
+ ];
1522
+
1523
+ return (
1524
+ <NavigationMenu
1525
+ items={hierarchicalItems}
1526
+ mode="hierarchical"
1527
+ currentPath={window.location.pathname}
1528
+ onNavigate={(item) => {
1529
+ if (item.href) {
1530
+ window.location.href = item.href;
1531
+ }
1532
+ }}
1533
+ className="w-64 bg-sec-50 p-4"
1534
+ />
1535
+ );
1536
+ }
1537
+ ```
1538
+
1539
+ **`Example`**
1540
+
1541
+ Integration with React Router and authentication:
1542
+ ```tsx
1543
+ import { NavigationMenu } from '@jmruthers/pace-core';
1544
+ import { useNavigate, useLocation } from 'react-router-dom';
1545
+ import { useUnifiedAuth } from '@jmruthers/pace-core/providers';
1546
+
1547
+ function AuthenticatedNavigation() {
1548
+ const navigate = useNavigate();
1549
+ const location = useLocation();
1550
+ const { hasRole, hasPermission } = useUnifiedAuth();
1551
+
1552
+ // Build navigation items with permission requirements
1553
+ const navItems = [
1554
+ {
1555
+ id: 'dashboard',
1556
+ label: 'Dashboard',
1557
+ href: '/dashboard',
1558
+ icon: 'LayoutDashboard',
1559
+ permissions: ['dashboard:read']
1560
+ },
1561
+ {
1562
+ id: 'meals',
1563
+ label: 'Meals',
1564
+ href: '/meals',
1565
+ icon: 'UtensilsCrossed',
1566
+ permissions: ['meals:read']
1567
+ },
1568
+ {
1569
+ id: 'admin',
1570
+ label: 'Admin Panel',
1571
+ href: '/admin',
1572
+ icon: 'Shield',
1573
+ roles: ['admin', 'super_admin']
1574
+ },
1575
+ {
1576
+ id: 'profile',
1577
+ label: 'Profile',
1578
+ href: '/profile',
1579
+ icon: 'User'
1580
+ }
1581
+ ];
1582
+
1583
+ return (
1584
+ <NavigationMenu
1585
+ items={navItems}
1586
+ mode="dropdown"
1587
+ currentPath={location.pathname}
1588
+ onNavigate={(item) => navigate(item.href)}
1589
+ buttonText="Navigation"
1590
+ navigationLabel="Main application navigation"
1591
+ filterByPermissions={true}
1592
+ auditLog={true}
1593
+ />
1594
+ );
1595
+ }
1596
+ ```
1597
+
1598
+ **`Example`**
1599
+
1600
+ Custom navigation with external links and actions:
1601
+ ```tsx
1602
+ import { NavigationMenu } from '@jmruthers/pace-core';
1603
+
1604
+ function CustomNavigation() {
1605
+ const handleNavigation = (item) => {
1606
+ if (item.id === 'logout') {
1607
+ // Handle logout action
1608
+ handleLogout();
1609
+ } else if (item.href?.startsWith('http')) {
1610
+ // Handle external links
1611
+ window.open(item.href, '_blank');
1612
+ } else if (item.href) {
1613
+ // Handle internal navigation
1614
+ navigate(item.href);
1615
+ }
1616
+ };
1617
+
1618
+ const navItems = [
1619
+ { id: 'home', label: 'Home', href: '/', icon: 'Home' },
1620
+ { id: 'help', label: 'Help Center', href: 'https://help.example.com', icon: 'HelpCircle' },
1621
+ { id: 'logout', label: 'Sign Out', icon: 'LogOut' } // No href for actions
1622
+ ];
1623
+
1624
+ return (
1625
+ <NavigationMenu
1626
+ items={navItems}
1627
+ mode="dropdown"
1628
+ onNavigate={handleNavigation}
1629
+ buttonText="Menu"
1630
+ disabled={false}
1631
+ />
1632
+ );
1633
+ }
1634
+ ```
1635
+
1636
+ **`Since`**
1637
+
1638
+ 0.1.0
1639
+
1640
+ #### Defined in
1641
+
1642
+ [packages/core/src/components/NavigationMenu/NavigationMenu.tsx:394](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/NavigationMenu/NavigationMenu.tsx#L394)
1643
+
1644
+ ___
1645
+
1646
+ ### OrganisationSelector
1647
+
1648
+ ▸ **OrganisationSelector**(`«destructured»`): ``null`` \| `Element`
1649
+
1650
+ OrganisationSelector component for secure organisation switching
1651
+
1652
+ This component provides secure organisation selection with:
1653
+ - User membership validation
1654
+ - Role-based access display
1655
+ - Security error handling
1656
+ - Real-time organisation switching
1657
+ - Accessible interface design
1658
+
1659
+ Security: Only shows organisations the user has valid access to
1660
+
1661
+ #### Parameters
1662
+
1663
+ | Name | Type |
1664
+ | :------ | :------ |
1665
+ | `«destructured»` | `OrganisationSelectorProps` |
1666
+
1667
+ #### Returns
1668
+
1669
+ ``null`` \| `Element`
1670
+
1671
+ #### Defined in
1672
+
1673
+ [packages/core/src/components/OrganisationSelector/OrganisationSelector.tsx:96](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/OrganisationSelector/OrganisationSelector.tsx#L96)
1674
+
1675
+ ___
1676
+
1677
+ ### PaceAppLayout
1678
+
1679
+ ▸ **PaceAppLayout**(`props`): `Element`
1680
+
1681
+ A consistent layout component for all PACE suite applications that provides a standard
1682
+ structure with header, main content area, and footer.
1683
+
1684
+ NEW: This component now includes layout-level permission enforcement to ensure
1685
+ consuming apps can't forget to implement permission checks on individual pages.
1686
+
1687
+ This component is designed to work with React Router's nested routing pattern using
1688
+ Outlet to render child routes. It provides integrated authentication, navigation,
1689
+ and user management functionality.
1690
+
1691
+ Features:
1692
+ - React Router v6 integration with nested routing
1693
+ - Unified authentication integration
1694
+ - Consistent header with navigation and user menu
1695
+ - Flexible main content area with Outlet
1696
+ - Footer with application branding
1697
+ - User sign-out and password change functionality
1698
+ - Responsive design and accessibility compliant
1699
+ - Layout-level permission enforcement
1700
+ - Permission-based navigation filtering
1701
+ - Automatic page permission validation
1702
+
1703
+ #### Parameters
1704
+
1705
+ | Name | Type | Description |
1706
+ | :------ | :------ | :------ |
1707
+ | `props` | [`PaceAppLayoutProps`](interfaces/PaceAppLayoutProps.md) | Layout configuration including app name for branding and permission settings |
1708
+
1709
+ #### Returns
1710
+
1711
+ `Element`
1712
+
1713
+ React element with complete application layout structure and permission enforcement
1714
+
1715
+ **`Example`**
1716
+
1717
+ Basic React Router setup with permission enforcement (RECOMMENDED):
1718
+ ```tsx
1719
+ import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
1720
+ import { UnifiedAuthProvider } from '@jmruthers/pace-core/providers';
1721
+ import { PaceAppLayout, PaceLoginPage } from '@jmruthers/pace-core';
1722
+
1723
+ function App() {
1724
+ return (
1725
+ <UnifiedAuthProvider supabaseClient={supabase} appName="My App">
1726
+ <Router>
1727
+ <Routes>
1728
+ <Route path="/login" element={<PaceLoginPage appName="My App" />} />
1729
+ <Route path="/" element={
1730
+ <PaceAppLayout
1731
+ appName="My Application"
1732
+ enforcePermissions={true}
1733
+ defaultPermission="read"
1734
+ />
1735
+ }>
1736
+ <Route index element={<HomePage />} />
1737
+ <Route path="dashboard" element={<DashboardPage />} />
1738
+ <Route path="meals" element={<MealsPage />} />
1739
+ </Route>
1740
+ </Routes>
1741
+ </Router>
1742
+ </UnifiedAuthProvider>
1743
+ );
1744
+ }
1745
+ ```
1746
+
1747
+ **`Example`**
1748
+
1749
+ Custom navigation items with permission filtering:
1750
+ ```tsx
1751
+ import { NavigationItem } from '@jmruthers/pace-core';
1752
+
1753
+ function App() {
1754
+ const customNavItems: NavigationItem[] = [
1755
+ { id: 'components', label: 'Components', href: '/components', icon: 'Component' },
1756
+ { id: 'styles', label: 'Styles', href: '/styles', icon: 'Palette' },
1757
+ { id: 'meals', label: 'Meals', href: '/meals', icon: 'UtensilsCrossed' }
1758
+ ];
1759
+
1760
+ return (
1761
+ <Router>
1762
+ <Routes>
1763
+ <Route path="/" element={
1764
+ <PaceAppLayout
1765
+ appName="My Custom App"
1766
+ navItems={customNavItems}
1767
+ enforcePermissions={true}
1768
+ filterNavigationByPermissions={true}
1769
+ routePermissions={{
1770
+ '/components': 'read',
1771
+ '/styles': 'read',
1772
+ '/meals': 'read'
1773
+ }}
1774
+ />
1775
+ }>
1776
+ <Route path="components" element={<ComponentsPage />} />
1777
+ <Route path="styles" element={<StylesPage />} />
1778
+ <Route path="meals" element={<MealsPage />} />
1779
+ </Route>
1780
+ </Routes>
1781
+ </Router>
1782
+ );
1783
+ }
1784
+ ```
1785
+
1786
+ **`Example`**
1787
+
1788
+ Route-specific permissions with custom page IDs:
1789
+ ```tsx
1790
+ function AdminApp() {
1791
+ return (
1792
+ <Router>
1793
+ <Routes>
1794
+ <Route path="/" element={
1795
+ <PaceAppLayout
1796
+ appName="Admin Panel"
1797
+ enforcePermissions={true}
1798
+ routePermissions={{
1799
+ '/dashboard': 'read',
1800
+ '/user-management': 'read',
1801
+ '/system-settings': 'update'
1802
+ }}
1803
+ pageIdMapping={{
1804
+ '/dashboard': 'dashboard',
1805
+ '/user-management': 'user-management',
1806
+ '/system-settings': 'system-admin'
1807
+ }}
1808
+ permissionFallback={<AccessDeniedPage />}
1809
+ />
1810
+ }>
1811
+ <Route path="dashboard" element={<DashboardPage />} />
1812
+ <Route path="user-management" element={<UserManagementPage />} />
1813
+ <Route path="system-settings" element={<SystemSettingsPage />} />
1814
+ </Route>
1815
+ </Routes>
1816
+ </Router>
1817
+ );
1818
+ }
1819
+ ```
1820
+
1821
+ **`Since`**
1822
+
1823
+ 0.1.0
1824
+
1825
+ #### Defined in
1826
+
1827
+ [packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:320](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx#L320)
1828
+
1829
+ ___
1830
+
1831
+ ### PaceLoginPage
1832
+
1833
+ ▸ **PaceLoginPage**(`props`, `deprecatedLegacyContext?`): `ReactNode`
1834
+
1835
+ A consistent, reusable login page for all PACE suite applications.
1836
+ It handles the sign-in logic with role-based automatic redirection for admin users,
1837
+ enhanced error handling, and dual loading state management.
1838
+
1839
+ Recent enhancements:
1840
+ - Role-based redirection: Admin users are automatically redirected
1841
+ - Enhanced error handling with navigation error recovery
1842
+ - Dual loading states: auth loading + form submission loading
1843
+ - Error persistence: Auth errors are displayed below the form
1844
+ - Navigation safety: Try-catch blocks prevent navigation errors
1845
+
1846
+ #### Parameters
1847
+
1848
+ | Name | Type | Description |
1849
+ | :------ | :------ | :------ |
1850
+ | `props` | [`PaceLoginPageProps`](interfaces/PaceLoginPageProps.md) | Login page configuration including app name and redirect path |
1851
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
1852
+
1853
+ #### Returns
1854
+
1855
+ `ReactNode`
1856
+
1857
+ JSX.Element - The rendered login page with enhanced functionality
1858
+
1859
+ **`Example`**
1860
+
1861
+ ```tsx
1862
+ <PaceLoginPage
1863
+ appName="My Application"
1864
+ onSuccessRedirectPath="/dashboard"
1865
+ />
1866
+ ```
1867
+
1868
+ #### Defined in
1869
+
1870
+ [packages/core/src/components/PaceLoginPage/PaceLoginPage.tsx:160](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceLoginPage/PaceLoginPage.tsx#L160)
1871
+
1872
+ ___
1873
+
1874
+ ### PasswordChangeForm
1875
+
1876
+ ▸ **PasswordChangeForm**(`«destructured»`): `Element`
1877
+
1878
+ #### Parameters
1879
+
1880
+ | Name | Type |
1881
+ | :------ | :------ |
1882
+ | `«destructured»` | `PasswordChangeFormProps` |
1883
+
1884
+ #### Returns
1885
+
1886
+ `Element`
1887
+
1888
+ #### Defined in
1889
+
1890
+ [packages/core/src/components/PasswordReset/PasswordChangeForm.tsx:116](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PasswordReset/PasswordChangeForm.tsx#L116)
1891
+
1892
+ ___
1893
+
1894
+ ### PasswordResetForm
1895
+
1896
+ ▸ **PasswordResetForm**(`«destructured»`): `Element`
1897
+
1898
+ #### Parameters
1899
+
1900
+ | Name | Type |
1901
+ | :------ | :------ |
1902
+ | `«destructured»` | `PasswordResetFormProps` |
1903
+
1904
+ #### Returns
1905
+
1906
+ `Element`
1907
+
1908
+ #### Defined in
1909
+
1910
+ [packages/core/src/components/PasswordReset/PasswordResetForm.tsx:94](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PasswordReset/PasswordResetForm.tsx#L94)
1911
+
1912
+ ___
1913
+
1914
+ ### Progress
1915
+
1916
+ ▸ **Progress**(`props`): `ReactNode`
1917
+
1918
+ Progress component
1919
+ An accessible progress bar with smooth animations
1920
+
1921
+ #### Parameters
1922
+
1923
+ | Name | Type | Description |
1924
+ | :------ | :------ | :------ |
1925
+ | `props` | `ProgressProps` & `RefAttributes`\<`HTMLDivElement`\> | Progress configuration and styling |
1926
+
1927
+ #### Returns
1928
+
1929
+ `ReactNode`
1930
+
1931
+ JSX.Element - The rendered progress bar
1932
+
1933
+ **`Example`**
1934
+
1935
+ ```tsx
1936
+ <Progress value={75} max={100} />
1937
+ ```
1938
+
1939
+ #### Defined in
1940
+
1941
+ [packages/core/src/components/Progress/Progress.tsx:90](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Progress/Progress.tsx#L90)
1942
+
1943
+ ___
1944
+
1945
+ ### EventLogo
1946
+
1947
+ ▸ **EventLogo**(`props`): ``null`` \| `Element`
1948
+
1949
+ Component for displaying event logos with fallback to initials
1950
+
1951
+ This component is context-aware and automatically detects whether it's being used
1952
+ in a public or authenticated context. It fetches and displays event logos from storage,
1953
+ with automatic fallback to event initials if no logo is available.
1954
+
1955
+ #### Parameters
1956
+
1957
+ | Name | Type | Description |
1958
+ | :------ | :------ | :------ |
1959
+ | `props` | [`EventLogoProps`](interfaces/EventLogoProps.md) | Logo configuration and styling |
1960
+
1961
+ #### Returns
1962
+
1963
+ ``null`` \| `Element`
1964
+
1965
+ React element with event logo or fallback
1966
+
1967
+ #### Defined in
1968
+
1969
+ [packages/core/src/components/PublicLayout/EventLogo.tsx:111](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/EventLogo.tsx#L111)
1970
+
1971
+ ___
1972
+
1973
+ ### EventLogoCompact
1974
+
1975
+ ▸ **EventLogoCompact**(`props`): `Element`
1976
+
1977
+ Compact event logo for small spaces
1978
+
1979
+ #### Parameters
1980
+
1981
+ | Name | Type |
1982
+ | :------ | :------ |
1983
+ | `props` | [`EventLogoProps`](interfaces/EventLogoProps.md) |
1984
+
1985
+ #### Returns
1986
+
1987
+ `Element`
1988
+
1989
+ #### Defined in
1990
+
1991
+ [packages/core/src/components/PublicLayout/EventLogo.tsx:266](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/EventLogo.tsx#L266)
1992
+
1993
+ ___
1994
+
1995
+ ### EventLogoLarge
1996
+
1997
+ ▸ **EventLogoLarge**(`props`): `Element`
1998
+
1999
+ Large event logo for prominent display
2000
+
2001
+ #### Parameters
2002
+
2003
+ | Name | Type |
2004
+ | :------ | :------ |
2005
+ | `props` | [`EventLogoProps`](interfaces/EventLogoProps.md) |
2006
+
2007
+ #### Returns
2008
+
2009
+ `Element`
2010
+
2011
+ #### Defined in
2012
+
2013
+ [packages/core/src/components/PublicLayout/EventLogo.tsx:279](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/EventLogo.tsx#L279)
2014
+
2015
+ ___
2016
+
2017
+ ### useErrorBoundary
2018
+
2019
+ ▸ **useErrorBoundary**(): `Object`
2020
+
2021
+ Hook for accessing error boundary state
2022
+ Useful for components that need to know if they're inside an error boundary
2023
+
2024
+ #### Returns
2025
+
2026
+ `Object`
2027
+
2028
+ | Name | Type |
2029
+ | :------ | :------ |
2030
+ | `captureError` | (`error`: `Error`) => `void` |
2031
+ | `resetError` | () => `void` |
2032
+
2033
+ #### Defined in
2034
+
2035
+ [packages/core/src/components/PublicLayout/PublicErrorBoundary.tsx:216](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicErrorBoundary.tsx#L216)
2036
+
2037
+ ___
2038
+
2039
+ ### DefaultPublicErrorFallback
2040
+
2041
+ ▸ **DefaultPublicErrorFallback**(`«destructured»`): `Element`
2042
+
2043
+ Default error fallback component
2044
+
2045
+ #### Parameters
2046
+
2047
+ | Name | Type |
2048
+ | :------ | :------ |
2049
+ | `«destructured»` | [`PublicErrorBoundaryState`](interfaces/PublicErrorBoundaryState.md) |
2050
+
2051
+ #### Returns
2052
+
2053
+ `Element`
2054
+
2055
+ #### Defined in
2056
+
2057
+ [packages/core/src/components/PublicLayout/PublicErrorBoundary.tsx:239](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicErrorBoundary.tsx#L239)
2058
+
2059
+ ___
2060
+
2061
+ ### PublicLoadingSpinner
2062
+
2063
+ ▸ **PublicLoadingSpinner**(`props`): `Element`
2064
+
2065
+ Loading spinner component for public pages
2066
+
2067
+ This component displays a consistent loading state with optional
2068
+ branding and messaging for public pages.
2069
+
2070
+ #### Parameters
2071
+
2072
+ | Name | Type | Description |
2073
+ | :------ | :------ | :------ |
2074
+ | `props` | [`PublicLoadingSpinnerProps`](interfaces/PublicLoadingSpinnerProps.md) | Spinner configuration and styling |
2075
+
2076
+ #### Returns
2077
+
2078
+ `Element`
2079
+
2080
+ React element with loading spinner
2081
+
2082
+ #### Defined in
2083
+
2084
+ [packages/core/src/components/PublicLayout/PublicLoadingSpinner.tsx:75](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicLoadingSpinner.tsx#L75)
2085
+
2086
+ ___
2087
+
2088
+ ### PublicLoadingSpinnerFullPage
2089
+
2090
+ ▸ **PublicLoadingSpinnerFullPage**(`«destructured»`): `Element`
2091
+
2092
+ Full page loading spinner with event branding
2093
+
2094
+ #### Parameters
2095
+
2096
+ | Name | Type |
2097
+ | :------ | :------ |
2098
+ | `«destructured»` | `Pick`\<[`PublicLoadingSpinnerProps`](interfaces/PublicLoadingSpinnerProps.md), ``"message"`` \| ``"className"``\> & \{ `eventName?`: `string` } |
2099
+
2100
+ #### Returns
2101
+
2102
+ `Element`
2103
+
2104
+ #### Defined in
2105
+
2106
+ [packages/core/src/components/PublicLayout/PublicLoadingSpinner.tsx:135](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicLoadingSpinner.tsx#L135)
2107
+
2108
+ ___
2109
+
2110
+ ### PublicLoadingSkeleton
2111
+
2112
+ ▸ **PublicLoadingSkeleton**(`«destructured»`): `Element`
2113
+
2114
+ Skeleton loading component for content placeholders
2115
+
2116
+ #### Parameters
2117
+
2118
+ | Name | Type | Default value |
2119
+ | :------ | :------ | :------ |
2120
+ | `«destructured»` | `Object` | `undefined` |
2121
+ | › `lines?` | `number` | `3` |
2122
+ | › `className?` | `string` | `''` |
2123
+
2124
+ #### Returns
2125
+
2126
+ `Element`
2127
+
2128
+ #### Defined in
2129
+
2130
+ [packages/core/src/components/PublicLayout/PublicLoadingSpinner.tsx:189](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicLoadingSpinner.tsx#L189)
2131
+
2132
+ ___
2133
+
2134
+ ### PublicPageContextChecker
2135
+
2136
+ ▸ **PublicPageContextChecker**(`«destructured»`): ``null`` \| `Element`
2137
+
2138
+ Context checker component that immediately identifies authentication context issues
2139
+
2140
+ This component will immediately log to console if authentication context
2141
+ is being triggered in a public page.
2142
+
2143
+ #### Parameters
2144
+
2145
+ | Name | Type |
2146
+ | :------ | :------ |
2147
+ | `«destructured»` | `PublicPageContextCheckerProps` |
2148
+
2149
+ #### Returns
2150
+
2151
+ ``null`` \| `Element`
2152
+
2153
+ #### Defined in
2154
+
2155
+ [packages/core/src/components/PublicLayout/PublicPageContextChecker.tsx:27](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageContextChecker.tsx#L27)
2156
+
2157
+ ___
2158
+
2159
+ ### PublicPageDebugger
2160
+
2161
+ ▸ **PublicPageDebugger**(`«destructured»`): ``null`` \| `Element`
2162
+
2163
+ Debugger component that logs context information
2164
+
2165
+ This component helps identify why authentication context
2166
+ is being triggered in public pages.
2167
+
2168
+ #### Parameters
2169
+
2170
+ | Name | Type |
2171
+ | :------ | :------ |
2172
+ | `«destructured»` | `PublicPageDebuggerProps` |
2173
+
2174
+ #### Returns
2175
+
2176
+ ``null`` \| `Element`
2177
+
2178
+ #### Defined in
2179
+
2180
+ [packages/core/src/components/PublicLayout/PublicPageDebugger.tsx:27](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageDebugger.tsx#L27)
2181
+
2182
+ ___
2183
+
2184
+ ### PublicPageDiagnostic
2185
+
2186
+ ▸ **PublicPageDiagnostic**(`«destructured»`): ``null`` \| `Element`
2187
+
2188
+ Diagnostic component that identifies authentication context issues
2189
+
2190
+ This component will help you identify exactly where the problem is
2191
+ in your public page implementation.
2192
+
2193
+ #### Parameters
2194
+
2195
+ | Name | Type |
2196
+ | :------ | :------ |
2197
+ | `«destructured»` | `PublicPageDiagnosticProps` |
2198
+
2199
+ #### Returns
2200
+
2201
+ ``null`` \| `Element`
2202
+
2203
+ #### Defined in
2204
+
2205
+ [packages/core/src/components/PublicLayout/PublicPageDiagnostic.tsx:27](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageDiagnostic.tsx#L27)
2206
+
2207
+ ___
2208
+
2209
+ ### PublicPageFooter
2210
+
2211
+ ▸ **PublicPageFooter**(`props`): `Element`
2212
+
2213
+ Footer component for public pages that matches the normal Footer exactly
2214
+
2215
+ This component uses the same styling and structure as the main Footer component
2216
+ to ensure consistency across the application.
2217
+
2218
+ #### Parameters
2219
+
2220
+ | Name | Type | Description |
2221
+ | :------ | :------ | :------ |
2222
+ | `props` | [`PublicPageFooterProps`](interfaces/PublicPageFooterProps.md) | Footer configuration and content |
2223
+
2224
+ #### Returns
2225
+
2226
+ `Element`
2227
+
2228
+ React element with public page footer
2229
+
2230
+ #### Defined in
2231
+
2232
+ [packages/core/src/components/PublicLayout/PublicPageFooter.tsx:79](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageFooter.tsx#L79)
2233
+
2234
+ ___
2235
+
2236
+ ### PublicPageHeader
2237
+
2238
+ ▸ **PublicPageHeader**(`props`): `Element`
2239
+
2240
+ Header component for public pages with event-specific branding
2241
+
2242
+ This component displays the app logo, event logo, and event information
2243
+ in a clean, accessible layout suitable for public pages.
2244
+
2245
+ #### Parameters
2246
+
2247
+ | Name | Type | Description |
2248
+ | :------ | :------ | :------ |
2249
+ | `props` | [`PublicPageHeaderProps`](interfaces/PublicPageHeaderProps.md) | Header configuration and content |
2250
+
2251
+ #### Returns
2252
+
2253
+ `Element`
2254
+
2255
+ React element with public page header
2256
+
2257
+ #### Defined in
2258
+
2259
+ [packages/core/src/components/PublicLayout/PublicPageHeader.tsx:85](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageHeader.tsx#L85)
2260
+
2261
+ ___
2262
+
2263
+ ### PublicPageLayout
2264
+
2265
+ ▸ **PublicPageLayout**(`props`): `Element`
2266
+
2267
+ Layout component for public pages that don't require authentication
2268
+
2269
+ This component provides a consistent structure for public event pages
2270
+ with event-specific branding, error handling, and loading states.
2271
+
2272
+ #### Parameters
2273
+
2274
+ | Name | Type | Description |
2275
+ | :------ | :------ | :------ |
2276
+ | `props` | [`PublicPageLayoutProps`](interfaces/PublicPageLayoutProps.md) | Layout configuration and content |
2277
+
2278
+ #### Returns
2279
+
2280
+ `Element`
2281
+
2282
+ React element with complete public page layout
2283
+
2284
+ #### Defined in
2285
+
2286
+ [packages/core/src/components/PublicLayout/PublicPageLayout.tsx:101](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageLayout.tsx#L101)
2287
+
2288
+ ___
2289
+
2290
+ ### usePublicPageContext
2291
+
2292
+ ▸ **usePublicPageContext**(): `Object`
2293
+
2294
+ Hook for accessing public page context
2295
+ Provides access to event data and layout state within public pages
2296
+
2297
+ This hook is no longer needed as PublicPageLayout no longer
2298
+ automatically fetches event data. Use usePublicRouteParams and usePublicEvent
2299
+ directly in your components instead.
2300
+
2301
+ #### Returns
2302
+
2303
+ `Object`
2304
+
2305
+ | Name | Type |
2306
+ | :------ | :------ |
2307
+ | `eventCode` | ``null`` |
2308
+ | `eventId` | ``null`` |
2309
+ | `event` | ``null`` |
2310
+ | `isLoading` | `boolean` |
2311
+ | `error` | ``null`` |
2312
+ | `refetch` | () => `Promise`\<`void`\> |
2313
+ | `isPublicPage` | `boolean` |
2314
+
2315
+ #### Defined in
2316
+
2317
+ [packages/core/src/components/PublicLayout/PublicPageLayout.tsx:221](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageLayout.tsx#L221)
2318
+
2319
+ ___
2320
+
2321
+ ### PublicPageProvider
2322
+
2323
+ ▸ **PublicPageProvider**(`«destructured»`): `Element`
2324
+
2325
+ Provider for public pages that completely isolates them from authentication context
2326
+
2327
+ This provider:
2328
+ - Does not initialize any authentication providers
2329
+ - Provides environment variables for public data access
2330
+ - Includes error boundary for graceful error handling
2331
+ - Is completely separate from the main app context
2332
+
2333
+ #### Parameters
2334
+
2335
+ | Name | Type |
2336
+ | :------ | :------ |
2337
+ | `«destructured»` | `PublicPageProviderProps` |
2338
+
2339
+ #### Returns
2340
+
2341
+ `Element`
2342
+
2343
+ #### Defined in
2344
+
2345
+ [packages/core/src/components/PublicLayout/PublicPageProvider.tsx:64](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageProvider.tsx#L64)
2346
+
2347
+ ___
2348
+
2349
+ ### usePublicPageProviderContext
2350
+
2351
+ ▸ **usePublicPageProviderContext**(): `PublicPageContextType`
2352
+
2353
+ Hook to access public page context
2354
+
2355
+ #### Returns
2356
+
2357
+ `PublicPageContextType`
2358
+
2359
+ Public page context with environment variables
2360
+
2361
+ #### Defined in
2362
+
2363
+ [packages/core/src/components/PublicLayout/PublicPageProvider.tsx:119](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageProvider.tsx#L119)
2364
+
2365
+ ___
2366
+
2367
+ ### useIsPublicPage
2368
+
2369
+ ▸ **useIsPublicPage**(): `boolean`
2370
+
2371
+ Hook to check if we're in a public page context
2372
+
2373
+ #### Returns
2374
+
2375
+ `boolean`
2376
+
2377
+ True if we're in a public page context
2378
+
2379
+ #### Defined in
2380
+
2381
+ [packages/core/src/components/PublicLayout/PublicPageProvider.tsx:134](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/PublicPageProvider.tsx#L134)
2382
+
2383
+ ___
2384
+
2385
+ ### Select
2386
+
2387
+ ▸ **Select**(`props`): `ReactNode`
2388
+
2389
+ #### Parameters
2390
+
2391
+ | Name | Type |
2392
+ | :------ | :------ |
2393
+ | `props` | `SelectProps` & `RefAttributes`\<`HTMLFormElement`\> |
2394
+
2395
+ #### Returns
2396
+
2397
+ `ReactNode`
2398
+
2399
+ #### Defined in
2400
+
2401
+ [packages/core/src/components/Select/Select.tsx:96](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L96)
2402
+
2403
+ ___
2404
+
2405
+ ### SelectTrigger
2406
+
2407
+ ▸ **SelectTrigger**(`props`): `ReactNode`
2408
+
2409
+ #### Parameters
2410
+
2411
+ | Name | Type |
2412
+ | :------ | :------ |
2413
+ | `props` | `SelectTriggerProps` & `RefAttributes`\<`HTMLButtonElement`\> |
2414
+
2415
+ #### Returns
2416
+
2417
+ `ReactNode`
2418
+
2419
+ #### Defined in
2420
+
2421
+ [packages/core/src/components/Select/Select.tsx:269](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L269)
2422
+
2423
+ ___
2424
+
2425
+ ### SelectValue
2426
+
2427
+ ▸ **SelectValue**(`props`): `ReactNode`
2428
+
2429
+ #### Parameters
2430
+
2431
+ | Name | Type |
2432
+ | :------ | :------ |
2433
+ | `props` | `SelectValueProps` & `RefAttributes`\<`HTMLSpanElement`\> |
2434
+
2435
+ #### Returns
2436
+
2437
+ `ReactNode`
2438
+
2439
+ #### Defined in
2440
+
2441
+ [packages/core/src/components/Select/Select.tsx:392](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L392)
2442
+
2443
+ ___
2444
+
2445
+ ### SelectContent
2446
+
2447
+ ▸ **SelectContent**(`props`): `ReactNode`
2448
+
2449
+ #### Parameters
2450
+
2451
+ | Name | Type |
2452
+ | :------ | :------ |
2453
+ | `props` | `SelectContentProps` & `RefAttributes`\<`HTMLUListElement`\> |
2454
+
2455
+ #### Returns
2456
+
2457
+ `ReactNode`
2458
+
2459
+ #### Defined in
2460
+
2461
+ [packages/core/src/components/Select/Select.tsx:409](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L409)
2462
+
2463
+ ___
2464
+
2465
+ ### SelectItem
2466
+
2467
+ ▸ **SelectItem**(`props`): `ReactNode`
2468
+
2469
+ #### Parameters
2470
+
2471
+ | Name | Type |
2472
+ | :------ | :------ |
2473
+ | `props` | `SelectItemProps` & `RefAttributes`\<`HTMLLIElement`\> |
2474
+
2475
+ #### Returns
2476
+
2477
+ `ReactNode`
2478
+
2479
+ #### Defined in
2480
+
2481
+ [packages/core/src/components/Select/Select.tsx:536](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L536)
2482
+
2483
+ ___
2484
+
2485
+ ### SelectGroup
2486
+
2487
+ ▸ **SelectGroup**(`props`): `ReactNode`
2488
+
2489
+ #### Parameters
2490
+
2491
+ | Name | Type |
2492
+ | :------ | :------ |
2493
+ | `props` | \{ `children`: `ReactNode` ; `className?`: `string` } & `RefAttributes`\<`HTMLDivElement`\> |
2494
+
2495
+ #### Returns
2496
+
2497
+ `ReactNode`
2498
+
2499
+ #### Defined in
2500
+
2501
+ [packages/core/src/components/Select/Select.tsx:621](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L621)
2502
+
2503
+ ___
2504
+
2505
+ ### SelectLabel
2506
+
2507
+ ▸ **SelectLabel**(`props`): `ReactNode`
2508
+
2509
+ #### Parameters
2510
+
2511
+ | Name | Type |
2512
+ | :------ | :------ |
2513
+ | `props` | \{ `children`: `ReactNode` ; `className?`: `string` } & `RefAttributes`\<`HTMLDivElement`\> |
2514
+
2515
+ #### Returns
2516
+
2517
+ `ReactNode`
2518
+
2519
+ #### Defined in
2520
+
2521
+ [packages/core/src/components/Select/Select.tsx:632](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L632)
2522
+
2523
+ ___
2524
+
2525
+ ### SelectSeparator
2526
+
2527
+ ▸ **SelectSeparator**(`props`): `ReactNode`
2528
+
2529
+ #### Parameters
2530
+
2531
+ | Name | Type |
2532
+ | :------ | :------ |
2533
+ | `props` | \{ `className?`: `string` } & `RefAttributes`\<`HTMLDivElement`\> |
2534
+
2535
+ #### Returns
2536
+
2537
+ `ReactNode`
2538
+
2539
+ #### Defined in
2540
+
2541
+ [packages/core/src/components/Select/Select.tsx:643](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L643)
2542
+
2543
+ ___
2544
+
2545
+ ### Table
2546
+
2547
+ ▸ **Table**(`props`): `ReactNode`
2548
+
2549
+ Table component
2550
+ The main table container with semantic HTML structure
2551
+
2552
+ #### Parameters
2553
+
2554
+ | Name | Type | Description |
2555
+ | :------ | :------ | :------ |
2556
+ | `props` | `HTMLAttributes`\<`HTMLTableElement`\> & `RefAttributes`\<`HTMLTableElement`\> | Table configuration and styling |
2557
+
2558
+ #### Returns
2559
+
2560
+ `ReactNode`
2561
+
2562
+ JSX.Element - The rendered table element
2563
+
2564
+ **`Example`**
2565
+
2566
+ ```tsx
2567
+ <Table>
2568
+ <TableHeader>...</TableHeader>
2569
+ <TableBody>...</TableBody>
2570
+ </Table>
2571
+ ```
2572
+
2573
+ #### Defined in
2574
+
2575
+ [packages/core/src/components/Table/Table.tsx:112](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Table/Table.tsx#L112)
2576
+
2577
+ ___
2578
+
2579
+ ### TableHeader
2580
+
2581
+ ▸ **TableHeader**(`props`): `ReactNode`
2582
+
2583
+ #### Parameters
2584
+
2585
+ | Name | Type |
2586
+ | :------ | :------ |
2587
+ | `props` | `HTMLAttributes`\<`HTMLTableSectionElement`\> & `RefAttributes`\<`HTMLTableSectionElement`\> |
2588
+
2589
+ #### Returns
2590
+
2591
+ `ReactNode`
2592
+
2593
+ #### Defined in
2594
+
2595
+ [packages/core/src/components/Table/Table.tsx:124](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Table/Table.tsx#L124)
2596
+
2597
+ ___
2598
+
2599
+ ### TableBody
2600
+
2601
+ ▸ **TableBody**(`props`): `ReactNode`
2602
+
2603
+ #### Parameters
2604
+
2605
+ | Name | Type |
2606
+ | :------ | :------ |
2607
+ | `props` | `HTMLAttributes`\<`HTMLTableSectionElement`\> & `RefAttributes`\<`HTMLTableSectionElement`\> |
2608
+
2609
+ #### Returns
2610
+
2611
+ `ReactNode`
2612
+
2613
+ #### Defined in
2614
+
2615
+ [packages/core/src/components/Table/Table.tsx:132](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Table/Table.tsx#L132)
2616
+
2617
+ ___
2618
+
2619
+ ### TableFooter
2620
+
2621
+ ▸ **TableFooter**(`props`): `ReactNode`
2622
+
2623
+ #### Parameters
2624
+
2625
+ | Name | Type |
2626
+ | :------ | :------ |
2627
+ | `props` | `HTMLAttributes`\<`HTMLTableSectionElement`\> & `RefAttributes`\<`HTMLTableSectionElement`\> |
2628
+
2629
+ #### Returns
2630
+
2631
+ `ReactNode`
2632
+
2633
+ #### Defined in
2634
+
2635
+ [packages/core/src/components/Table/Table.tsx:144](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Table/Table.tsx#L144)
2636
+
2637
+ ___
2638
+
2639
+ ### TableRow
2640
+
2641
+ ▸ **TableRow**(`props`): `ReactNode`
2642
+
2643
+ #### Parameters
2644
+
2645
+ | Name | Type |
2646
+ | :------ | :------ |
2647
+ | `props` | `HTMLAttributes`\<`HTMLTableRowElement`\> & `RefAttributes`\<`HTMLTableRowElement`\> |
2648
+
2649
+ #### Returns
2650
+
2651
+ `ReactNode`
2652
+
2653
+ #### Defined in
2654
+
2655
+ [packages/core/src/components/Table/Table.tsx:159](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Table/Table.tsx#L159)
2656
+
2657
+ ___
2658
+
2659
+ ### TableHead
2660
+
2661
+ ▸ **TableHead**(`props`): `ReactNode`
2662
+
2663
+ #### Parameters
2664
+
2665
+ | Name | Type |
2666
+ | :------ | :------ |
2667
+ | `props` | `ThHTMLAttributes`\<`HTMLTableCellElement`\> & `RefAttributes`\<`HTMLTableCellElement`\> |
2668
+
2669
+ #### Returns
2670
+
2671
+ `ReactNode`
2672
+
2673
+ #### Defined in
2674
+
2675
+ [packages/core/src/components/Table/Table.tsx:174](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Table/Table.tsx#L174)
2676
+
2677
+ ___
2678
+
2679
+ ### TableCell
2680
+
2681
+ ▸ **TableCell**(`props`): `ReactNode`
2682
+
2683
+ #### Parameters
2684
+
2685
+ | Name | Type |
2686
+ | :------ | :------ |
2687
+ | `props` | `TdHTMLAttributes`\<`HTMLTableCellElement`\> & `RefAttributes`\<`HTMLTableCellElement`\> |
2688
+
2689
+ #### Returns
2690
+
2691
+ `ReactNode`
2692
+
2693
+ #### Defined in
2694
+
2695
+ [packages/core/src/components/Table/Table.tsx:189](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Table/Table.tsx#L189)
2696
+
2697
+ ___
2698
+
2699
+ ### TableCaption
2700
+
2701
+ ▸ **TableCaption**(`props`): `ReactNode`
2702
+
2703
+ #### Parameters
2704
+
2705
+ | Name | Type |
2706
+ | :------ | :------ |
2707
+ | `props` | `HTMLAttributes`\<`HTMLTableCaptionElement`\> & `RefAttributes`\<`HTMLTableCaptionElement`\> |
2708
+
2709
+ #### Returns
2710
+
2711
+ `ReactNode`
2712
+
2713
+ #### Defined in
2714
+
2715
+ [packages/core/src/components/Table/Table.tsx:201](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Table/Table.tsx#L201)
2716
+
2717
+ ___
2718
+
2719
+ ### ToastProvider
2720
+
2721
+ ▸ **ToastProvider**(`props`, `deprecatedLegacyContext?`): `ReactNode`
2722
+
2723
+ #### Parameters
2724
+
2725
+ | Name | Type | Description |
2726
+ | :------ | :------ | :------ |
2727
+ | `props` | `ToastProviderProps` | - |
2728
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
2729
+
2730
+ #### Returns
2731
+
2732
+ `ReactNode`
2733
+
2734
+ #### Defined in
2735
+
2736
+ [packages/core/src/components/Toast/Toast.tsx:93](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L93)
2737
+
2738
+ ___
2739
+
2740
+ ### ToastViewport
2741
+
2742
+ ▸ **ToastViewport**(`props`): `ReactNode`
2743
+
2744
+ ToastViewport component
2745
+ Container for all toast notifications with customizable positioning
2746
+
2747
+ #### Parameters
2748
+
2749
+ | Name | Type | Description |
2750
+ | :------ | :------ | :------ |
2751
+ | `props` | `Omit`\<`ToastViewportProps` & `RefAttributes`\<`HTMLOListElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLOListElement`\> | Viewport configuration and styling |
2752
+
2753
+ #### Returns
2754
+
2755
+ `ReactNode`
2756
+
2757
+ JSX.Element - The toast viewport container
2758
+
2759
+ #### Defined in
2760
+
2761
+ [packages/core/src/components/Toast/Toast.tsx:103](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L103)
2762
+
2763
+ ___
2764
+
2765
+ ### Toast
2766
+
2767
+ ▸ **Toast**(`props`): `ReactNode`
2768
+
2769
+ Toast component
2770
+ The main toast notification component with animations and interactions
2771
+
2772
+ #### Parameters
2773
+
2774
+ | Name | Type | Description |
2775
+ | :------ | :------ | :------ |
2776
+ | `props` | `Omit`\<`ToastProps` & `RefAttributes`\<`HTMLLIElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLLIElement`\> | Toast configuration and content |
2777
+
2778
+ #### Returns
2779
+
2780
+ `ReactNode`
2781
+
2782
+ JSX.Element - The rendered toast notification
2783
+
2784
+ **`Example`**
2785
+
2786
+ ```tsx
2787
+ <Toast>
2788
+ <ToastTitle>Success!</ToastTitle>
2789
+ <ToastDescription>Your changes have been saved.</ToastDescription>
2790
+ <ToastClose />
2791
+ </Toast>
2792
+ ```
2793
+
2794
+ #### Defined in
2795
+
2796
+ [packages/core/src/components/Toast/Toast.tsx:136](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L136)
2797
+
2798
+ ___
2799
+
2800
+ ### ToastAction
2801
+
2802
+ ▸ **ToastAction**(`props`): `ReactNode`
2803
+
2804
+ ToastAction component
2805
+ Action button within a toast notification
2806
+
2807
+ #### Parameters
2808
+
2809
+ | Name | Type | Description |
2810
+ | :------ | :------ | :------ |
2811
+ | `props` | `Omit`\<`ToastActionProps` & `RefAttributes`\<`HTMLButtonElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLButtonElement`\> | Action button configuration |
2812
+
2813
+ #### Returns
2814
+
2815
+ `ReactNode`
2816
+
2817
+ JSX.Element - The action button element
2818
+
2819
+ **`Example`**
2820
+
2821
+ ```tsx
2822
+ <ToastAction altText="Undo changes">Undo</ToastAction>
2823
+ ```
2824
+
2825
+ #### Defined in
2826
+
2827
+ [packages/core/src/components/Toast/Toast.tsx:167](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L167)
2828
+
2829
+ ___
2830
+
2831
+ ### ToastClose
2832
+
2833
+ ▸ **ToastClose**(`props`): `ReactNode`
2834
+
2835
+ ToastClose component
2836
+ Close button for dismissing toast notifications
2837
+
2838
+ #### Parameters
2839
+
2840
+ | Name | Type | Description |
2841
+ | :------ | :------ | :------ |
2842
+ | `props` | `Omit`\<`ToastCloseProps` & `RefAttributes`\<`HTMLButtonElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLButtonElement`\> | Close button configuration |
2843
+
2844
+ #### Returns
2845
+
2846
+ `ReactNode`
2847
+
2848
+ JSX.Element - The close button with X icon
2849
+
2850
+ **`Example`**
2851
+
2852
+ ```tsx
2853
+ <ToastClose />
2854
+ ```
2855
+
2856
+ #### Defined in
2857
+
2858
+ [packages/core/src/components/Toast/Toast.tsx:196](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L196)
2859
+
2860
+ ___
2861
+
2862
+ ### ToastTitle
2863
+
2864
+ ▸ **ToastTitle**(`props`): `ReactNode`
2865
+
2866
+ ToastTitle component
2867
+ Title text for toast notifications
2868
+
2869
+ #### Parameters
2870
+
2871
+ | Name | Type | Description |
2872
+ | :------ | :------ | :------ |
2873
+ | `props` | `Omit`\<`ToastTitleProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLDivElement`\> | Title configuration and styling |
2874
+
2875
+ #### Returns
2876
+
2877
+ `ReactNode`
2878
+
2879
+ JSX.Element - The toast title
2880
+
2881
+ **`Example`**
2882
+
2883
+ ```tsx
2884
+ <ToastTitle>Success!</ToastTitle>
2885
+ ```
2886
+
2887
+ #### Defined in
2888
+
2889
+ [packages/core/src/components/Toast/Toast.tsx:228](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L228)
2890
+
2891
+ ___
2892
+
2893
+ ### ToastDescription
2894
+
2895
+ ▸ **ToastDescription**(`props`): `ReactNode`
2896
+
2897
+ ToastDescription component
2898
+ Description text for toast notifications
2899
+
2900
+ #### Parameters
2901
+
2902
+ | Name | Type | Description |
2903
+ | :------ | :------ | :------ |
2904
+ | `props` | `Omit`\<`ToastDescriptionProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLDivElement`\> | Description configuration and styling |
2905
+
2906
+ #### Returns
2907
+
2908
+ `ReactNode`
2909
+
2910
+ JSX.Element - The toast description
2911
+
2912
+ **`Example`**
2913
+
2914
+ ```tsx
2915
+ <ToastDescription>Your changes have been saved successfully.</ToastDescription>
2916
+ ```
2917
+
2918
+ #### Defined in
2919
+
2920
+ [packages/core/src/components/Toast/Toast.tsx:254](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L254)
2921
+
2922
+ ___
2923
+
2924
+ ### useToast
2925
+
2926
+ ▸ **useToast**(): `Object`
2927
+
2928
+ useToast hook
2929
+ Hook for managing toast notifications
2930
+
2931
+ #### Returns
2932
+
2933
+ `Object`
2934
+
2935
+ Object with toast and dismiss functions
2936
+
2937
+ | Name | Type |
2938
+ | :------ | :------ |
2939
+ | `toast` | (`props`: `any`) => `void` |
2940
+ | `dismiss` | () => `void` |
2941
+
2942
+ **`Example`**
2943
+
2944
+ ```tsx
2945
+ const { toast, dismiss } = useToast();
2946
+
2947
+ // Show a toast
2948
+ toast({
2949
+ title: "Success!",
2950
+ description: "Your changes have been saved."
2951
+ });
2952
+
2953
+ // Dismiss all toasts
2954
+ dismiss();
2955
+ ```
2956
+
2957
+ #### Defined in
2958
+
2959
+ [packages/core/src/components/Toast/Toast.tsx:292](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L292)
2960
+
2961
+ ___
2962
+
2963
+ ### Toaster
2964
+
2965
+ ▸ **Toaster**(): `Element`
2966
+
2967
+ Toaster component
2968
+ Container component that provides the toast viewport
2969
+ Should be placed at the root of your application
2970
+
2971
+ #### Returns
2972
+
2973
+ `Element`
2974
+
2975
+ JSX.Element - The toast provider with viewport
2976
+
2977
+ **`Example`**
2978
+
2979
+ ```tsx
2980
+ function App() {
2981
+ return (
2982
+ <ToastProvider>
2983
+ <YourApp />
2984
+ <Toaster />
2985
+ </ToastProvider>
2986
+ );
2987
+ }
2988
+ ```
2989
+
2990
+ #### Defined in
2991
+
2992
+ [packages/core/src/components/Toast/Toast.tsx:323](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Toast/Toast.tsx#L323)
2993
+
2994
+ ___
2995
+
2996
+ ### TooltipProvider
2997
+
2998
+ ▸ **TooltipProvider**(`props`, `deprecatedLegacyContext?`): `ReactNode`
2999
+
3000
+ #### Parameters
3001
+
3002
+ | Name | Type | Description |
3003
+ | :------ | :------ | :------ |
3004
+ | `props` | `TooltipProviderProps` | - |
3005
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
3006
+
3007
+ #### Returns
3008
+
3009
+ `ReactNode`
3010
+
3011
+ #### Defined in
3012
+
3013
+ [packages/core/src/components/Tooltip/Tooltip.tsx:78](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tooltip/Tooltip.tsx#L78)
3014
+
3015
+ ___
3016
+
3017
+ ### TooltipRoot
3018
+
3019
+ ▸ **TooltipRoot**(`props`, `deprecatedLegacyContext?`): `ReactNode`
3020
+
3021
+ #### Parameters
3022
+
3023
+ | Name | Type | Description |
3024
+ | :------ | :------ | :------ |
3025
+ | `props` | `TooltipProps` | - |
3026
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
3027
+
3028
+ #### Returns
3029
+
3030
+ `ReactNode`
3031
+
3032
+ #### Defined in
3033
+
3034
+ [packages/core/src/components/Tooltip/Tooltip.tsx:80](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tooltip/Tooltip.tsx#L80)
3035
+
3036
+ ___
3037
+
3038
+ ### TooltipTrigger
3039
+
3040
+ ▸ **TooltipTrigger**(`props`): `ReactNode`
3041
+
3042
+ #### Parameters
3043
+
3044
+ | Name | Type |
3045
+ | :------ | :------ |
3046
+ | `props` | `TooltipTriggerProps` & `RefAttributes`\<`HTMLButtonElement`\> |
3047
+
3048
+ #### Returns
3049
+
3050
+ `ReactNode`
3051
+
3052
+ #### Defined in
3053
+
3054
+ [packages/core/src/components/Tooltip/Tooltip.tsx:82](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tooltip/Tooltip.tsx#L82)
3055
+
3056
+ ___
3057
+
3058
+ ### TooltipContent
3059
+
3060
+ ▸ **TooltipContent**(`props`): `ReactNode`
3061
+
3062
+ TooltipContent component
3063
+ The content container for tooltip information
3064
+
3065
+ #### Parameters
3066
+
3067
+ | Name | Type | Description |
3068
+ | :------ | :------ | :------ |
3069
+ | `props` | `Omit`\<`TooltipContentProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLDivElement`\> | Content configuration and styling |
3070
+
3071
+ #### Returns
3072
+
3073
+ `ReactNode`
3074
+
3075
+ JSX.Element - The tooltip content container
3076
+
3077
+ **`Example`**
3078
+
3079
+ ```tsx
3080
+ <TooltipContent side="top" className="bg-main-500">
3081
+ Custom tooltip content
3082
+ </TooltipContent>
3083
+ ```
3084
+
3085
+ #### Defined in
3086
+
3087
+ [packages/core/src/components/Tooltip/Tooltip.tsx:99](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tooltip/Tooltip.tsx#L99)
3088
+
3089
+ ___
3090
+
3091
+ ### Tooltip
3092
+
3093
+ ▸ **Tooltip**(`props`): `ReactNode`
3094
+
3095
+ Tooltip component
3096
+ A simplified tooltip component for easy usage
3097
+
3098
+ #### Parameters
3099
+
3100
+ | Name | Type | Description |
3101
+ | :------ | :------ | :------ |
3102
+ | `props` | `TooltipProps` & `RefAttributes`\<`HTMLButtonElement`\> | Tooltip configuration |
3103
+
3104
+ #### Returns
3105
+
3106
+ `ReactNode`
3107
+
3108
+ JSX.Element - The tooltip with trigger and content
3109
+
3110
+ **`Example`**
3111
+
3112
+ ```tsx
3113
+ <Tooltip content="This is a helpful tooltip">
3114
+ <Button>Hover me</Button>
3115
+ </Tooltip>
3116
+ ```
3117
+
3118
+ #### Defined in
3119
+
3120
+ [packages/core/src/components/Tooltip/Tooltip.tsx:142](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tooltip/Tooltip.tsx#L142)
3121
+
3122
+ ___
3123
+
3124
+ ### UserMenu
3125
+
3126
+ ▸ **UserMenu**(`props`): `ReactNode`
3127
+
3128
+ #### Parameters
3129
+
3130
+ | Name | Type |
3131
+ | :------ | :------ |
3132
+ | `props` | [`UserMenuProps`](interfaces/UserMenuProps.md) |
3133
+
3134
+ #### Returns
3135
+
3136
+ `ReactNode`
3137
+
3138
+ #### Defined in
3139
+
3140
+ [packages/core/src/components/UserMenu/UserMenu.tsx:136](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/UserMenu/UserMenu.tsx#L136)
3141
+
3142
+ ___
3143
+
3144
+ ### usePublicEvent
3145
+
3146
+ ▸ **usePublicEvent**(`eventCode`, `options?`): [`UsePublicEventReturn`](interfaces/UsePublicEventReturn.md)
3147
+
3148
+ Hook for accessing public event data by event_code
3149
+
3150
+ This hook provides access to public event information without requiring
3151
+ authentication. It includes caching, error handling, and loading states.
3152
+
3153
+ #### Parameters
3154
+
3155
+ | Name | Type | Description |
3156
+ | :------ | :------ | :------ |
3157
+ | `eventCode` | `string` | The event code to look up |
3158
+ | `options` | [`UsePublicEventOptions`](interfaces/UsePublicEventOptions.md) | Configuration options for caching and behavior |
3159
+
3160
+ #### Returns
3161
+
3162
+ [`UsePublicEventReturn`](interfaces/UsePublicEventReturn.md)
3163
+
3164
+ Object containing event data, loading state, error, and refetch function
3165
+
3166
+ #### Defined in
3167
+
3168
+ [packages/core/src/hooks/public/usePublicEvent.ts:99](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEvent.ts#L99)
3169
+
3170
+ ___
3171
+
3172
+ ### clearPublicEventCache
3173
+
3174
+ ▸ **clearPublicEventCache**(): `void`
3175
+
3176
+ Clear all cached public event data
3177
+ Useful for testing or when you need to force refresh all data
3178
+
3179
+ #### Returns
3180
+
3181
+ `void`
3182
+
3183
+ #### Defined in
3184
+
3185
+ [packages/core/src/hooks/public/usePublicEvent.ts:244](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEvent.ts#L244)
3186
+
3187
+ ___
3188
+
3189
+ ### getPublicEventCacheStats
3190
+
3191
+ ▸ **getPublicEventCacheStats**(): `Object`
3192
+
3193
+ Get cache statistics for debugging
3194
+
3195
+ #### Returns
3196
+
3197
+ `Object`
3198
+
3199
+ | Name | Type |
3200
+ | :------ | :------ |
3201
+ | `size` | `number` |
3202
+ | `keys` | `string`[] |
3203
+
3204
+ #### Defined in
3205
+
3206
+ [packages/core/src/hooks/public/usePublicEvent.ts:255](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEvent.ts#L255)
3207
+
3208
+ ___
3209
+
3210
+ ### usePublicEventLogo
3211
+
3212
+ ▸ **usePublicEventLogo**(`eventId`, `eventName`, `organisationId`, `options`): [`UsePublicEventLogoReturn`](interfaces/UsePublicEventLogoReturn.md)
3213
+
3214
+ Hook for accessing public event logo URLs
3215
+
3216
+ This hook provides access to event logo URLs without requiring
3217
+ authentication. It includes fallback handling and image validation.
3218
+
3219
+ #### Parameters
3220
+
3221
+ | Name | Type | Description |
3222
+ | :------ | :------ | :------ |
3223
+ | `eventId` | `undefined` \| `string` | The event ID to fetch logo for |
3224
+ | `eventName` | `undefined` \| `string` | The event name for fallback text generation |
3225
+ | `organisationId` | `undefined` \| `string` | The organisation ID for storage path |
3226
+ | `options` | [`UsePublicEventLogoOptions`](interfaces/UsePublicEventLogoOptions.md) | Configuration options for caching and behavior |
3227
+
3228
+ #### Returns
3229
+
3230
+ [`UsePublicEventLogoReturn`](interfaces/UsePublicEventLogoReturn.md)
3231
+
3232
+ Object containing logo URL, fallback text, loading state, error, and refetch function
3233
+
3234
+ #### Defined in
3235
+
3236
+ [packages/core/src/hooks/public/usePublicEventLogo.ts:125](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEventLogo.ts#L125)
3237
+
3238
+ ___
3239
+
3240
+ ### clearPublicLogoCache
3241
+
3242
+ ▸ **clearPublicLogoCache**(): `void`
3243
+
3244
+ Clear all cached public logo data
3245
+ Useful for testing or when you need to force refresh all data
3246
+
3247
+ #### Returns
3248
+
3249
+ `void`
3250
+
3251
+ #### Defined in
3252
+
3253
+ [packages/core/src/hooks/public/usePublicEventLogo.ts:268](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEventLogo.ts#L268)
3254
+
3255
+ ___
3256
+
3257
+ ### getPublicLogoCacheStats
3258
+
3259
+ ▸ **getPublicLogoCacheStats**(): `Object`
3260
+
3261
+ Get cache statistics for debugging
3262
+
3263
+ #### Returns
3264
+
3265
+ `Object`
3266
+
3267
+ | Name | Type |
3268
+ | :------ | :------ |
3269
+ | `size` | `number` |
3270
+ | `keys` | `string`[] |
3271
+
3272
+ #### Defined in
3273
+
3274
+ [packages/core/src/hooks/public/usePublicEventLogo.ts:279](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicEventLogo.ts#L279)
3275
+
3276
+ ___
3277
+
3278
+ ### usePublicRouteParams
3279
+
3280
+ ▸ **usePublicRouteParams**(`options?`): [`UsePublicRouteParamsReturn`](interfaces/UsePublicRouteParamsReturn.md)
3281
+
3282
+ Hook for extracting and validating public route parameters
3283
+
3284
+ This hook extracts event codes from URL parameters and optionally
3285
+ fetches the corresponding event data. It provides validation and
3286
+ error handling for public routes.
3287
+
3288
+ #### Parameters
3289
+
3290
+ | Name | Type | Description |
3291
+ | :------ | :------ | :------ |
3292
+ | `options` | `UsePublicRouteParamsOptions` | Configuration options for behavior |
3293
+
3294
+ #### Returns
3295
+
3296
+ [`UsePublicRouteParamsReturn`](interfaces/UsePublicRouteParamsReturn.md)
3297
+
3298
+ Object containing route parameters, event data, loading state, error, and refetch function
3299
+
3300
+ #### Defined in
3301
+
3302
+ [packages/core/src/hooks/public/usePublicRouteParams.ts:111](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicRouteParams.ts#L111)
3303
+
3304
+ ___
3305
+
3306
+ ### usePublicEventCode
3307
+
3308
+ ▸ **usePublicEventCode**(`eventCodeParam?`): `Object`
3309
+
3310
+ Hook for extracting just the event code without fetching event data
3311
+ Useful when you only need the event code and will fetch data separately
3312
+
3313
+ #### Parameters
3314
+
3315
+ | Name | Type | Default value |
3316
+ | :------ | :------ | :------ |
3317
+ | `eventCodeParam` | `string` | `'eventCode'` |
3318
+
3319
+ #### Returns
3320
+
3321
+ `Object`
3322
+
3323
+ | Name | Type |
3324
+ | :------ | :------ |
3325
+ | `eventCode` | `string` \| ``null`` |
3326
+ | `error` | `Error` \| ``null`` |
3327
+
3328
+ #### Defined in
3329
+
3330
+ [packages/core/src/hooks/public/usePublicRouteParams.ts:206](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicRouteParams.ts#L206)
3331
+
3332
+ ___
3333
+
3334
+ ### generatePublicRoutePath
3335
+
3336
+ ▸ **generatePublicRoutePath**(`eventCode`, `pageName?`): `string`
3337
+
3338
+ Utility function to generate public route paths
3339
+
3340
+ #### Parameters
3341
+
3342
+ | Name | Type | Default value |
3343
+ | :------ | :------ | :------ |
3344
+ | `eventCode` | `string` | `undefined` |
3345
+ | `pageName` | `string` | `'index'` |
3346
+
3347
+ #### Returns
3348
+
3349
+ `string`
3350
+
3351
+ #### Defined in
3352
+
3353
+ [packages/core/src/hooks/public/usePublicRouteParams.ts:242](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicRouteParams.ts#L242)
3354
+
3355
+ ___
3356
+
3357
+ ### extractEventCodeFromPath
3358
+
3359
+ ▸ **extractEventCodeFromPath**(`path`): `string` \| ``null``
3360
+
3361
+ Utility function to extract event code from a public route path
3362
+
3363
+ #### Parameters
3364
+
3365
+ | Name | Type |
3366
+ | :------ | :------ |
3367
+ | `path` | `string` |
3368
+
3369
+ #### Returns
3370
+
3371
+ `string` \| ``null``
3372
+
3373
+ #### Defined in
3374
+
3375
+ [packages/core/src/hooks/public/usePublicRouteParams.ts:256](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/public/usePublicRouteParams.ts#L256)
3376
+
3377
+ ___
3378
+
3379
+ ### useAppConfig
3380
+
3381
+ ▸ **useAppConfig**(): `UseAppConfigReturn`
3382
+
3383
+ Hook to access app configuration
3384
+ Works in both authenticated and public contexts
3385
+
3386
+ #### Returns
3387
+
3388
+ `UseAppConfigReturn`
3389
+
3390
+ App configuration and loading state
3391
+
3392
+ #### Defined in
3393
+
3394
+ [packages/core/src/hooks/useAppConfig.ts:46](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useAppConfig.ts#L46)
3395
+
3396
+ ___
3397
+
3398
+ ### useInactivityTracker
3399
+
3400
+ ▸ **useInactivityTracker**(`«destructured»?`): [`UseInactivityTrackerReturn`](interfaces/UseInactivityTrackerReturn.md)
3401
+
3402
+ #### Parameters
3403
+
3404
+ | Name | Type |
3405
+ | :------ | :------ |
3406
+ | `«destructured»` | [`UseInactivityTrackerOptions`](interfaces/UseInactivityTrackerOptions.md) |
3407
+
3408
+ #### Returns
3409
+
3410
+ [`UseInactivityTrackerReturn`](interfaces/UseInactivityTrackerReturn.md)
3411
+
3412
+ #### Defined in
3413
+
3414
+ [packages/core/src/hooks/useInactivityTracker.ts:127](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useInactivityTracker.ts#L127)
3415
+
3416
+ ___
3417
+
3418
+ ### useOrganisationPermissions
3419
+
3420
+ ▸ **useOrganisationPermissions**(`orgId?`): `UseOrganisationPermissionsReturn`
3421
+
3422
+ Hook to access organisation-specific permissions and roles
3423
+
3424
+ #### Parameters
3425
+
3426
+ | Name | Type | Description |
3427
+ | :------ | :------ | :------ |
3428
+ | `orgId?` | `string` | Optional organisation ID. Defaults to currently selected organisation |
3429
+
3430
+ #### Returns
3431
+
3432
+ `UseOrganisationPermissionsReturn`
3433
+
3434
+ Organisation permissions and role information
3435
+
3436
+ #### Defined in
3437
+
3438
+ [packages/core/src/hooks/useOrganisationPermissions.ts:96](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useOrganisationPermissions.ts#L96)
3439
+
3440
+ ___
3441
+
3442
+ ### useOrganisationSecurity
3443
+
3444
+ ▸ **useOrganisationSecurity**(): `OrganisationSecurityHook`
3445
+
3446
+ #### Returns
3447
+
3448
+ `OrganisationSecurityHook`
3449
+
3450
+ #### Defined in
3451
+
3452
+ [packages/core/src/hooks/useOrganisationSecurity.ts:39](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useOrganisationSecurity.ts#L39)
3453
+
3454
+ ___
3455
+
3456
+ ### useStorage
3457
+
3458
+ ▸ **useStorage**(`«destructured»`): `UseStorageReturn`
3459
+
3460
+ Hook for storage operations with app and organisation context
3461
+
3462
+ #### Parameters
3463
+
3464
+ | Name | Type |
3465
+ | :------ | :------ |
3466
+ | `«destructured»` | `UseStorageOptions` |
3467
+
3468
+ #### Returns
3469
+
3470
+ `UseStorageReturn`
3471
+
3472
+ #### Defined in
3473
+
3474
+ [packages/core/src/hooks/useStorage.ts:57](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useStorage.ts#L57)
3475
+
3476
+ ___
3477
+
3478
+ ### useFileUpload
3479
+
3480
+ ▸ **useFileUpload**(`«destructured»`): `Object`
3481
+
3482
+ Hook for file upload with progress tracking
3483
+
3484
+ #### Parameters
3485
+
3486
+ | Name | Type |
3487
+ | :------ | :------ |
3488
+ | `«destructured»` | `UseStorageOptions` |
3489
+
3490
+ #### Returns
3491
+
3492
+ `Object`
3493
+
3494
+ | Name | Type |
3495
+ | :------ | :------ |
3496
+ | `uploadWithProgress` | (`file`: `File`, `options`: `Partial`\<[`StorageUploadOptions`](interfaces/StorageUploadOptions.md)\>) => `Promise`\<[`StorageUploadResult`](interfaces/StorageUploadResult.md)\> |
3497
+ | `uploadProgress` | `number` |
3498
+ | `isUploading` | `boolean` |
3499
+ | `uploadError` | ``null`` \| `string` |
3500
+
3501
+ #### Defined in
3502
+
3503
+ [packages/core/src/hooks/useStorage.ts:219](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useStorage.ts#L219)
3504
+
3505
+ ___
3506
+
3507
+ ### useEvents
3508
+
3509
+ ▸ **useEvents**(): [`EventContextType`](interfaces/EventContextType.md)
3510
+
3511
+ #### Returns
3512
+
3513
+ [`EventContextType`](interfaces/EventContextType.md)
3514
+
3515
+ #### Defined in
3516
+
3517
+ [packages/core/src/providers/EventProvider.tsx:29](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/EventProvider.tsx#L29)
3518
+
3519
+ ___
3520
+
3521
+ ### EventProvider
3522
+
3523
+ ▸ **EventProvider**(`«destructured»`): `Element`
3524
+
3525
+ #### Parameters
3526
+
3527
+ | Name | Type |
3528
+ | :------ | :------ |
3529
+ | `«destructured»` | [`EventProviderProps`](interfaces/EventProviderProps.md) |
3530
+
3531
+ #### Returns
3532
+
3533
+ `Element`
3534
+
3535
+ #### Defined in
3536
+
3537
+ [packages/core/src/providers/EventProvider.tsx:68](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/EventProvider.tsx#L68)
3538
+
3539
+ ___
3540
+
3541
+ ### OrganisationProvider
3542
+
3543
+ ▸ **OrganisationProvider**(`«destructured»`): `Element`
3544
+
3545
+ Organisation Provider component that enforces mandatory organisation context
3546
+
3547
+ This provider:
3548
+ - Loads user's organisation memberships on authentication
3549
+ - Validates user has at least one active organisation
3550
+ - Auto-selects primary organisation or first available
3551
+ - Provides security helpers for organisation validation
3552
+ - Handles organisation switching with validation
3553
+ - Persists organisation selection across sessions
3554
+
3555
+ SECURITY: No children are rendered without valid organisation context
3556
+
3557
+ #### Parameters
3558
+
3559
+ | Name | Type |
3560
+ | :------ | :------ |
3561
+ | `«destructured»` | [`OrganisationProviderProps`](interfaces/OrganisationProviderProps.md) |
3562
+
3563
+ #### Returns
3564
+
3565
+ `Element`
3566
+
3567
+ #### Defined in
3568
+
3569
+ [packages/core/src/providers/OrganisationProvider.tsx:103](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/OrganisationProvider.tsx#L103)
3570
+
3571
+ ___
3572
+
3573
+ ### useOrganisations
3574
+
3575
+ ▸ **useOrganisations**(): [`OrganisationContextType`](interfaces/OrganisationContextType.md)
3576
+
3577
+ Hook to access organisation context
3578
+
3579
+ #### Returns
3580
+
3581
+ [`OrganisationContextType`](interfaces/OrganisationContextType.md)
3582
+
3583
+ Organisation context with guaranteed non-null selectedOrganisation
3584
+
3585
+ **`Throws`**
3586
+
3587
+ If used outside OrganisationProvider
3588
+
3589
+ #### Defined in
3590
+
3591
+ [packages/core/src/providers/OrganisationProvider.tsx:574](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/OrganisationProvider.tsx#L574)
3592
+
3593
+ ___
3594
+
3595
+ ### useUnifiedAuth
3596
+
3597
+ ▸ **useUnifiedAuth**(): [`UnifiedAuthContextType`](interfaces/UnifiedAuthContextType.md)
3598
+
3599
+ #### Returns
3600
+
3601
+ [`UnifiedAuthContextType`](interfaces/UnifiedAuthContextType.md)
3602
+
3603
+ #### Defined in
3604
+
3605
+ [packages/core/src/providers/UnifiedAuthProvider.tsx:177](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/UnifiedAuthProvider.tsx#L177)
3606
+
3607
+ ___
3608
+
3609
+ ### UnifiedAuthProvider
3610
+
3611
+ ▸ **UnifiedAuthProvider**(`«destructured»`): `Element`
3612
+
3613
+ #### Parameters
3614
+
3615
+ | Name | Type |
3616
+ | :------ | :------ |
3617
+ | `«destructured»` | [`UnifiedAuthProviderProps`](interfaces/UnifiedAuthProviderProps.md) |
3618
+
3619
+ #### Returns
3620
+
3621
+ `Element`
3622
+
3623
+ #### Defined in
3624
+
3625
+ [packages/core/src/providers/UnifiedAuthProvider.tsx:294](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/UnifiedAuthProvider.tsx#L294)
3626
+
3627
+ ___
3628
+
3629
+ ### getStylePath
3630
+
3631
+ ▸ **getStylePath**(`style`): `string`
3632
+
3633
+ #### Parameters
3634
+
3635
+ | Name | Type |
3636
+ | :------ | :------ |
3637
+ | `style` | ``"core"`` |
3638
+
3639
+ #### Returns
3640
+
3641
+ `string`
3642
+
3643
+ #### Defined in
3644
+
3645
+ [packages/core/src/styles/index.ts:40](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/styles/index.ts#L40)
3646
+
3647
+ ___
3648
+
3649
+ ### getAllStylePaths
3650
+
3651
+ ▸ **getAllStylePaths**(): `string`[]
3652
+
3653
+ #### Returns
3654
+
3655
+ `string`[]
3656
+
3657
+ #### Defined in
3658
+
3659
+ [packages/core/src/styles/index.ts:45](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/styles/index.ts#L45)
3660
+
3661
+ ___
3662
+
3663
+ ### applyPalette
3664
+
3665
+ ▸ **applyPalette**(`palette`): `void`
3666
+
3667
+ Applies a complete palette to the document by replacing all three palette variable sets.
3668
+ Writes a single <style id="pace-theme-dynamic"> block into <head>.
3669
+
3670
+ #### Parameters
3671
+
3672
+ | Name | Type | Description |
3673
+ | :------ | :------ | :------ |
3674
+ | `palette` | [`PaletteData`](interfaces/PaletteData.md) | Complete palette data with main, sec, and acc palettes |
3675
+
3676
+ #### Returns
3677
+
3678
+ `void`
3679
+
3680
+ #### Defined in
3681
+
3682
+ [packages/core/src/theming/runtime.ts:64](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L64)
3683
+
3684
+ ___
3685
+
3686
+ ### clearPalette
3687
+
3688
+ ▸ **clearPalette**(): `void`
3689
+
3690
+ Removes the dynamic theme block, returning to app-defined CSS values.
3691
+
3692
+ #### Returns
3693
+
3694
+ `void`
3695
+
3696
+ #### Defined in
3697
+
3698
+ [packages/core/src/theming/runtime.ts:86](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L86)
3699
+
3700
+ ___
3701
+
3702
+ ### generateSSRThemeCSS
3703
+
3704
+ ▸ **generateSSRThemeCSS**(`palette`): `string`
3705
+
3706
+ Generates the same CSS block for SSR rendering
3707
+ Use this in your SSR setup to avoid FOUC
3708
+
3709
+ #### Parameters
3710
+
3711
+ | Name | Type |
3712
+ | :------ | :------ |
3713
+ | `palette` | [`PaletteData`](interfaces/PaletteData.md) |
3714
+
3715
+ #### Returns
3716
+
3717
+ `string`
3718
+
3719
+ #### Defined in
3720
+
3721
+ [packages/core/src/theming/runtime.ts:154](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L154)
3722
+
3723
+ ___
3724
+
3725
+ ### isDynamicThemingActive
3726
+
3727
+ ▸ **isDynamicThemingActive**(): `boolean`
3728
+
3729
+ Checks if dynamic theming is currently active
3730
+
3731
+ #### Returns
3732
+
3733
+ `boolean`
3734
+
3735
+ #### Defined in
3736
+
3737
+ [packages/core/src/theming/runtime.ts:161](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L161)
3738
+
3739
+ ___
3740
+
3741
+ ### getCurrentThemeData
3742
+
3743
+ ▸ **getCurrentThemeData**(): [`PaletteData`](interfaces/PaletteData.md) \| ``null``
3744
+
3745
+ Gets the current dynamic theme data (if any)
3746
+ Useful for debugging or persistence
3747
+
3748
+ #### Returns
3749
+
3750
+ [`PaletteData`](interfaces/PaletteData.md) \| ``null``
3751
+
3752
+ #### Defined in
3753
+
3754
+ [packages/core/src/theming/runtime.ts:173](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L173)
3755
+
3756
+ ___
3757
+
3758
+ ### setAppConfig
3759
+
3760
+ ▸ **setAppConfig**(`config`): `void`
3761
+
3762
+ Set the current application configuration
3763
+
3764
+ #### Parameters
3765
+
3766
+ | Name | Type |
3767
+ | :------ | :------ |
3768
+ | `config` | `AppConfig` |
3769
+
3770
+ #### Returns
3771
+
3772
+ `void`
3773
+
3774
+ #### Defined in
3775
+
3776
+ [packages/core/src/utils/appConfig.ts:16](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/appConfig.ts#L16)
3777
+
3778
+ ___
3779
+
3780
+ ### getAppConfig
3781
+
3782
+ ▸ **getAppConfig**(): `AppConfig`
3783
+
3784
+ Get the current application configuration
3785
+
3786
+ #### Returns
3787
+
3788
+ `AppConfig`
3789
+
3790
+ #### Defined in
3791
+
3792
+ [packages/core/src/utils/appConfig.ts:23](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/appConfig.ts#L23)
3793
+
3794
+ ___
3795
+
3796
+ ### getCurrentAppName
3797
+
3798
+ ▸ **getCurrentAppName**(): `string`
3799
+
3800
+ Get the current app name
3801
+
3802
+ #### Returns
3803
+
3804
+ `string`
3805
+
3806
+ #### Defined in
3807
+
3808
+ [packages/core/src/utils/appConfig.ts:38](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/appConfig.ts#L38)
3809
+
3810
+ ___
3811
+
3812
+ ### getCurrentAppId
3813
+
3814
+ ▸ **getCurrentAppId**(): `string`
3815
+
3816
+ Get the current app ID
3817
+
3818
+ #### Returns
3819
+
3820
+ `string`
3821
+
3822
+ #### Defined in
3823
+
3824
+ [packages/core/src/utils/appConfig.ts:45](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/appConfig.ts#L45)
3825
+
3826
+ ___
3827
+
3828
+ ### cn
3829
+
3830
+ ▸ **cn**(`...inputs`): `string`
3831
+
3832
+ #### Parameters
3833
+
3834
+ | Name | Type |
3835
+ | :------ | :------ |
3836
+ | `...inputs` | `ClassValue`[] |
3837
+
3838
+ #### Returns
3839
+
3840
+ `string`
3841
+
3842
+ #### Defined in
3843
+
3844
+ [packages/core/src/utils/cn.ts:5](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/cn.ts#L5)
3845
+
3846
+ ___
3847
+
3848
+ ### createSecureDataAccess
3849
+
3850
+ ▸ **createSecureDataAccess**(`supabase`, `organisationId`, `isSuperAdmin?`): `SecureDataAccess`
3851
+
3852
+ Create a secure data access instance
3853
+
3854
+ #### Parameters
3855
+
3856
+ | Name | Type | Default value | Description |
3857
+ | :------ | :------ | :------ | :------ |
3858
+ | `supabase` | `default`\<`any`, ``"public"``, ``"public"``, `any`, `any`\> | `undefined` | Supabase client instance |
3859
+ | `organisationId` | `string` | `undefined` | Current organisation context |
3860
+ | `isSuperAdmin` | `boolean` | `false` | Whether user has super admin privileges |
3861
+
3862
+ #### Returns
3863
+
3864
+ `SecureDataAccess`
3865
+
3866
+ Secure data access utilities
3867
+
3868
+ #### Defined in
3869
+
3870
+ [packages/core/src/utils/secureDataAccess.ts:66](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/secureDataAccess.ts#L66)
3871
+
3872
+ ___
3873
+
3874
+ ### getFileSizeLimit
3875
+
3876
+ ▸ **getFileSizeLimit**(`mimeType`): `number`
3877
+
3878
+ Get the file size limit for a given MIME type
3879
+
3880
+ #### Parameters
3881
+
3882
+ | Name | Type |
3883
+ | :------ | :------ |
3884
+ | `mimeType` | `string` |
3885
+
3886
+ #### Returns
3887
+
3888
+ `number`
3889
+
3890
+ #### Defined in
3891
+
3892
+ [packages/core/src/utils/storage/config.ts:63](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/config.ts#L63)
3893
+
3894
+ ___
3895
+
3896
+ ### validateFileSize
3897
+
3898
+ ▸ **validateFileSize**(`file`): `Object`
3899
+
3900
+ Validate file size against limits
3901
+
3902
+ #### Parameters
3903
+
3904
+ | Name | Type |
3905
+ | :------ | :------ |
3906
+ | `file` | `File` |
3907
+
3908
+ #### Returns
3909
+
3910
+ `Object`
3911
+
3912
+ | Name | Type |
3913
+ | :------ | :------ |
3914
+ | `isValid` | `boolean` |
3915
+ | `error?` | `string` |
3916
+
3917
+ #### Defined in
3918
+
3919
+ [packages/core/src/utils/storage/config.ts:70](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/config.ts#L70)
3920
+
3921
+ ___
3922
+
3923
+ ### formatFileSize
3924
+
3925
+ ▸ **formatFileSize**(`bytes`): `string`
3926
+
3927
+ Get human-readable file size
3928
+
3929
+ #### Parameters
3930
+
3931
+ | Name | Type |
3932
+ | :------ | :------ |
3933
+ | `bytes` | `number` |
3934
+
3935
+ #### Returns
3936
+
3937
+ `string`
3938
+
3939
+ #### Defined in
3940
+
3941
+ [packages/core/src/utils/storage/config.ts:88](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/config.ts#L88)
3942
+
3943
+ ___
3944
+
3945
+ ### generateFilePath
3946
+
3947
+ ▸ **generateFilePath**(`options`, `fileName`): `string`
3948
+
3949
+ Generate a file path based on app-first structure
3950
+
3951
+ #### Parameters
3952
+
3953
+ | Name | Type |
3954
+ | :------ | :------ |
3955
+ | `options` | [`StorageUploadOptions`](interfaces/StorageUploadOptions.md) |
3956
+ | `fileName` | `string` |
3957
+
3958
+ #### Returns
3959
+
3960
+ `string`
3961
+
3962
+ #### Defined in
3963
+
3964
+ [packages/core/src/utils/storage/helpers.ts:20](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L20)
3965
+
3966
+ ___
3967
+
3968
+ ### generateUniqueFileName
3969
+
3970
+ ▸ **generateUniqueFileName**(`originalName`): `string`
3971
+
3972
+ Generate a unique filename with timestamp and UUID
3973
+
3974
+ #### Parameters
3975
+
3976
+ | Name | Type |
3977
+ | :------ | :------ |
3978
+ | `originalName` | `string` |
3979
+
3980
+ #### Returns
3981
+
3982
+ `string`
3983
+
3984
+ #### Defined in
3985
+
3986
+ [packages/core/src/utils/storage/helpers.ts:54](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L54)
3987
+
3988
+ ___
3989
+
3990
+ ### extractFileMetadata
3991
+
3992
+ ▸ **extractFileMetadata**(`file`, `options`, `uploadedBy`): `Promise`\<[`StorageFileMetadata`](interfaces/StorageFileMetadata.md)\>
3993
+
3994
+ Extract file metadata from a File object
3995
+
3996
+ #### Parameters
3997
+
3998
+ | Name | Type |
3999
+ | :------ | :------ |
4000
+ | `file` | `File` |
4001
+ | `options` | [`StorageUploadOptions`](interfaces/StorageUploadOptions.md) |
4002
+ | `uploadedBy` | `string` |
4003
+
4004
+ #### Returns
4005
+
4006
+ `Promise`\<[`StorageFileMetadata`](interfaces/StorageFileMetadata.md)\>
4007
+
4008
+ #### Defined in
4009
+
4010
+ [packages/core/src/utils/storage/helpers.ts:66](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L66)
4011
+
4012
+ ___
4013
+
4014
+ ### uploadFile
4015
+
4016
+ ▸ **uploadFile**(`supabase`, `file`, `options`): `Promise`\<[`StorageUploadResult`](interfaces/StorageUploadResult.md)\>
4017
+
4018
+ Upload a file to Supabase storage with app segregation
4019
+
4020
+ #### Parameters
4021
+
4022
+ | Name | Type |
4023
+ | :------ | :------ |
4024
+ | `supabase` | `default`\<`any`, ``"public"``, ``"public"``, `any`, `any`\> |
4025
+ | `file` | `File` |
4026
+ | `options` | [`StorageUploadOptions`](interfaces/StorageUploadOptions.md) |
4027
+
4028
+ #### Returns
4029
+
4030
+ `Promise`\<[`StorageUploadResult`](interfaces/StorageUploadResult.md)\>
4031
+
4032
+ #### Defined in
4033
+
4034
+ [packages/core/src/utils/storage/helpers.ts:140](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L140)
4035
+
4036
+ ___
4037
+
4038
+ ### getPublicUrl
4039
+
4040
+ ▸ **getPublicUrl**(`supabase`, `path`): `string`
4041
+
4042
+ Get a public URL for a file
4043
+
4044
+ #### Parameters
4045
+
4046
+ | Name | Type |
4047
+ | :------ | :------ |
4048
+ | `supabase` | `default`\<`any`, ``"public"``, ``"public"``, `any`, `any`\> |
4049
+ | `path` | `string` |
4050
+
4051
+ #### Returns
4052
+
4053
+ `string`
4054
+
4055
+ #### Defined in
4056
+
4057
+ [packages/core/src/utils/storage/helpers.ts:205](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L205)
4058
+
4059
+ ___
4060
+
4061
+ ### getSignedUrl
4062
+
4063
+ ▸ **getSignedUrl**(`supabase`, `path`, `options`): `Promise`\<\{ `url`: `string` ; `expiresAt`: `string` } \| ``null``\>
4064
+
4065
+ Get a signed URL for a protected file
4066
+
4067
+ #### Parameters
4068
+
4069
+ | Name | Type |
4070
+ | :------ | :------ |
4071
+ | `supabase` | `default`\<`any`, ``"public"``, ``"public"``, `any`, `any`\> |
4072
+ | `path` | `string` |
4073
+ | `options` | [`StorageUrlOptions`](interfaces/StorageUrlOptions.md) |
4074
+
4075
+ #### Returns
4076
+
4077
+ `Promise`\<\{ `url`: `string` ; `expiresAt`: `string` } \| ``null``\>
4078
+
4079
+ #### Defined in
4080
+
4081
+ [packages/core/src/utils/storage/helpers.ts:216](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L216)
4082
+
4083
+ ___
4084
+
4085
+ ### deleteFile
4086
+
4087
+ ▸ **deleteFile**(`supabase`, `path`): `Promise`\<\{ `success`: `boolean` ; `error?`: `string` }\>
4088
+
4089
+ Delete a file from storage
4090
+
4091
+ #### Parameters
4092
+
4093
+ | Name | Type |
4094
+ | :------ | :------ |
4095
+ | `supabase` | `default`\<`any`, ``"public"``, ``"public"``, `any`, `any`\> |
4096
+ | `path` | `string` |
4097
+
4098
+ #### Returns
4099
+
4100
+ `Promise`\<\{ `success`: `boolean` ; `error?`: `string` }\>
4101
+
4102
+ #### Defined in
4103
+
4104
+ [packages/core/src/utils/storage/helpers.ts:244](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L244)
4105
+
4106
+ ___
4107
+
4108
+ ### listFiles
4109
+
4110
+ ▸ **listFiles**(`supabase`, `options`): `Promise`\<[`StorageListResult`](interfaces/StorageListResult.md)\>
4111
+
4112
+ List files in an organization scope
4113
+
4114
+ #### Parameters
4115
+
4116
+ | Name | Type |
4117
+ | :------ | :------ |
4118
+ | `supabase` | `default`\<`any`, ``"public"``, ``"public"``, `any`, `any`\> |
4119
+ | `options` | [`StorageListOptions`](interfaces/StorageListOptions.md) |
4120
+
4121
+ #### Returns
4122
+
4123
+ `Promise`\<[`StorageListResult`](interfaces/StorageListResult.md)\>
4124
+
4125
+ #### Defined in
4126
+
4127
+ [packages/core/src/utils/storage/helpers.ts:272](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L272)
4128
+
4129
+ ___
4130
+
4131
+ ### archiveFile
4132
+
4133
+ ▸ **archiveFile**(`supabase`, `path`, `options`): `Promise`\<\{ `success`: `boolean` ; `error?`: `string` }\>
4134
+
4135
+ Move a file to archived location (soft delete)
4136
+
4137
+ #### Parameters
4138
+
4139
+ | Name | Type |
4140
+ | :------ | :------ |
4141
+ | `supabase` | `default`\<`any`, ``"public"``, ``"public"``, `any`, `any`\> |
4142
+ | `path` | `string` |
4143
+ | `options` | `Object` |
4144
+ | `options.appName` | `string` |
4145
+ | `options.orgId` | `string` |
4146
+
4147
+ #### Returns
4148
+
4149
+ `Promise`\<\{ `success`: `boolean` ; `error?`: `string` }\>
4150
+
4151
+ #### Defined in
4152
+
4153
+ [packages/core/src/utils/storage/helpers.ts:325](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/utils/storage/helpers.ts#L325)