@jmruthers/pace-core 0.2.7 → 0.4.1

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 (982) hide show
  1. package/CHANGELOG.md +1 -26
  2. package/README.md +229 -231
  3. package/dist/{DataTable-EEUDXPE5.js → DataTable-2LB6HI6V.js} +17 -10
  4. package/dist/{DataTable-C1AEm9Cx.d.ts → DataTable-BDBqkU-i.d.ts} +51 -23
  5. package/dist/{PublicLoadingSpinner-DztrzuJr.d.ts → Table-CIm9IWqk.d.ts} +122 -635
  6. package/dist/UnifiedAuthProvider-V7y63NjT.d.ts +88 -0
  7. package/dist/{api-ETQ6YJ3C.js → api-AIJ3IJX3.js} +4 -6
  8. package/dist/{appConfig-BVGyuvI7.d.ts → appConfig-fB1pP_v3.d.ts} +1 -1
  9. package/dist/{audit-BUW3LMJB.js → audit-PD5L5ZSC.js} +3 -3
  10. package/dist/{chunk-ETEJVKYK.js → chunk-4MCJAK7J.js} +4927 -504
  11. package/dist/chunk-4MCJAK7J.js.map +1 -0
  12. package/dist/{chunk-CDQ3PX7L.js → chunk-4ZTIEYU2.js} +1 -1
  13. package/dist/chunk-4ZTIEYU2.js.map +1 -0
  14. package/dist/{chunk-PLDDJCW6.js → chunk-DC5AMYBS.js} +5 -15
  15. package/dist/{chunk-HEMJ4SUJ.js → chunk-H4PZ4B3Y.js} +27 -124
  16. package/dist/chunk-H4PZ4B3Y.js.map +1 -0
  17. package/dist/{chunk-HNDFPXUU.js → chunk-IOX76PSM.js} +28 -270
  18. package/dist/chunk-IOX76PSM.js.map +1 -0
  19. package/dist/{chunk-TIVL4UQ7.js → chunk-JUUNUW3O.js} +5 -14
  20. package/dist/chunk-JUUNUW3O.js.map +1 -0
  21. package/dist/chunk-KK6WIDK6.js +63 -0
  22. package/dist/chunk-KK6WIDK6.js.map +1 -0
  23. package/dist/chunk-U7DY5T33.js +11 -0
  24. package/dist/chunk-U7DY5T33.js.map +1 -0
  25. package/dist/{chunk-SS3E6QLB.js → chunk-WHLSWC6W.js} +61 -16
  26. package/dist/chunk-WHLSWC6W.js.map +1 -0
  27. package/dist/chunk-XI7QFSSC.js +790 -0
  28. package/dist/chunk-XI7QFSSC.js.map +1 -0
  29. package/dist/chunk-XIJMMBDD.js +73 -0
  30. package/dist/chunk-XIJMMBDD.js.map +1 -0
  31. package/dist/{chunk-7BNPOCLL.js → chunk-YNU5QJ4S.js} +5 -22
  32. package/dist/chunk-YNU5QJ4S.js.map +1 -0
  33. package/dist/chunk-YWYCNGWH.js +2070 -0
  34. package/dist/chunk-YWYCNGWH.js.map +1 -0
  35. package/dist/chunk-ZJ3UKPIW.js +952 -0
  36. package/dist/chunk-ZJ3UKPIW.js.map +1 -0
  37. package/dist/components.d.ts +10 -906
  38. package/dist/components.js +77 -3255
  39. package/dist/components.js.map +1 -1
  40. package/dist/{database-C3Szpi5J.d.ts → database-CAMsquLm.d.ts} +11 -28
  41. package/dist/hooks.d.ts +6 -7
  42. package/dist/hooks.js +11 -35
  43. package/dist/hooks.js.map +1 -1
  44. package/dist/index.d.ts +111 -245
  45. package/dist/index.js +178 -187
  46. package/dist/index.js.map +1 -1
  47. package/dist/{organisation-CO3Sh3_D.d.ts → organisation-DLNNQhPB.d.ts} +1 -1
  48. package/dist/providers.d.ts +4 -4
  49. package/dist/providers.js +5 -19
  50. package/dist/rbac/index.d.ts +5 -61
  51. package/dist/rbac/index.js +93 -256
  52. package/dist/rbac/index.js.map +1 -1
  53. package/dist/{types-DiRQsGJs.d.ts → types-Bavn44NW.d.ts} +36 -71
  54. package/dist/types.d.ts +5 -5
  55. package/dist/types.js +2 -7
  56. package/dist/types.js.map +1 -1
  57. package/dist/{unified-CM7T0aTK.d.ts → unified-BtRpPbmp.d.ts} +2 -1
  58. package/dist/useAppConfig-CZNJJsT_.d.ts +148 -0
  59. package/dist/utils.d.ts +60 -83
  60. package/dist/utils.js +55633 -277
  61. package/dist/utils.js.map +1 -1
  62. package/dist/validation.d.ts +1 -1
  63. package/dist/validation.js +1 -1
  64. package/docs/README.md +32 -46
  65. package/docs/api/README.md +229 -231
  66. package/docs/api/classes/ErrorBoundary.md +1 -1
  67. package/docs/api/interfaces/AggregateConfig.md +4 -4
  68. package/docs/api/interfaces/ButtonProps.md +2 -2
  69. package/docs/api/interfaces/CardProps.md +2 -2
  70. package/docs/api/interfaces/ColorPalette.md +1 -1
  71. package/docs/api/interfaces/ColorShade.md +1 -1
  72. package/docs/api/interfaces/DataTableAction.md +7 -85
  73. package/docs/api/interfaces/DataTableColumn.md +12 -131
  74. package/docs/api/interfaces/DataTableProps.md +274 -64
  75. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  76. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  77. package/docs/api/interfaces/EventContextType.md +7 -7
  78. package/docs/api/interfaces/EventProviderProps.md +2 -2
  79. package/docs/api/interfaces/FooterProps.md +1 -1
  80. package/docs/api/interfaces/InputProps.md +2 -2
  81. package/docs/api/interfaces/LabelProps.md +1 -1
  82. package/docs/api/interfaces/LoginFormProps.md +1 -1
  83. package/docs/api/interfaces/NavigationItem.md +1 -1
  84. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  85. package/docs/api/interfaces/Organisation.md +1 -1
  86. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  87. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  88. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  89. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  90. package/docs/api/interfaces/PaceAppLayoutProps.md +26 -26
  91. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  92. package/docs/api/interfaces/PaletteData.md +1 -1
  93. package/docs/api/interfaces/StyleImport.md +2 -2
  94. package/docs/api/interfaces/ToastActionElement.md +1 -1
  95. package/docs/api/interfaces/ToastProps.md +1 -1
  96. package/docs/api/interfaces/UnifiedAuthContextType.md +46 -447
  97. package/docs/api/interfaces/UnifiedAuthProviderProps.md +9 -95
  98. package/docs/api/interfaces/UserEventAccess.md +14 -14
  99. package/docs/api/interfaces/UserMenuProps.md +6 -6
  100. package/docs/api/interfaces/UserProfile.md +1 -1
  101. package/docs/api/modules.md +773 -1631
  102. package/docs/api-reference/components.md +43 -761
  103. package/docs/api-reference/hooks.md +0 -126
  104. package/docs/api-reference/providers.md +65 -141
  105. package/docs/api-reference/types.md +36 -66
  106. package/docs/api-reference/utilities.md +1 -1
  107. package/docs/architecture/README.md +2 -1
  108. package/docs/consuming-app-example.md +96 -42
  109. package/docs/core-concepts/events.md +3 -3
  110. package/docs/core-concepts/organisations.md +1 -0
  111. package/docs/core-concepts/rbac-system.md +10 -23
  112. package/docs/documentation-style-checklist.md +2 -8
  113. package/docs/getting-started/examples/README.md +1 -15
  114. package/docs/getting-started/examples/basic-auth-app.md +119 -444
  115. package/docs/getting-started/examples/full-featured-app.md +6 -6
  116. package/docs/getting-started/installation.md +52 -231
  117. package/docs/getting-started/quick-start.md +24 -121
  118. package/docs/implementation-guides/app-layout.md +108 -133
  119. package/docs/implementation-guides/data-tables.md +29 -1011
  120. package/docs/implementation-guides/forms.md +3 -3
  121. package/docs/implementation-guides/large-datasets.md +2 -2
  122. package/docs/implementation-guides/navigation.md +1 -1
  123. package/docs/implementation-guides/permission-enforcement.md +4 -4
  124. package/docs/migration/README.md +8 -18
  125. package/docs/migration/rbac-migration.md +0 -50
  126. package/docs/migration-guide.md +104 -51
  127. package/docs/performance/README.md +4 -1
  128. package/docs/quick-reference.md +36 -53
  129. package/docs/rbac/README.md +69 -136
  130. package/docs/rbac/api-reference.md +8 -39
  131. package/docs/rbac/examples.md +66 -237
  132. package/docs/rbac/getting-started.md +16 -131
  133. package/docs/rbac/quick-start.md +323 -499
  134. package/docs/rbac/troubleshooting.md +262 -240
  135. package/docs/security/README.md +1 -50
  136. package/docs/styles/README.md +117 -143
  137. package/docs/testing/README.md +10 -6
  138. package/docs/troubleshooting/common-issues.md +14 -604
  139. package/docs/usage.md +90 -28
  140. package/docs/visual-testing.md +7 -0
  141. package/package.json +24 -43
  142. package/dist/UnifiedAuthProvider-w66zSCUf.d.ts +0 -160
  143. package/dist/appNameResolver-7GHF5ED2.js +0 -22
  144. package/dist/chunk-2V3Y6YBC.js +0 -114
  145. package/dist/chunk-2V3Y6YBC.js.map +0 -1
  146. package/dist/chunk-7BNPOCLL.js.map +0 -1
  147. package/dist/chunk-BEZRLNK3.js +0 -1744
  148. package/dist/chunk-BEZRLNK3.js.map +0 -1
  149. package/dist/chunk-C5G2A4PO.js +0 -1349
  150. package/dist/chunk-C5G2A4PO.js.map +0 -1
  151. package/dist/chunk-CDQ3PX7L.js.map +0 -1
  152. package/dist/chunk-ETEJVKYK.js.map +0 -1
  153. package/dist/chunk-EWKPTNPO.js +0 -5139
  154. package/dist/chunk-EWKPTNPO.js.map +0 -1
  155. package/dist/chunk-HEMJ4SUJ.js.map +0 -1
  156. package/dist/chunk-HNDFPXUU.js.map +0 -1
  157. package/dist/chunk-MZBUOP4P.js +0 -119
  158. package/dist/chunk-MZBUOP4P.js.map +0 -1
  159. package/dist/chunk-N2EUGZRW.js +0 -98
  160. package/dist/chunk-N2EUGZRW.js.map +0 -1
  161. package/dist/chunk-NQ4TOOO6.js +0 -20
  162. package/dist/chunk-NQ4TOOO6.js.map +0 -1
  163. package/dist/chunk-OHXGNT3K.js +0 -21
  164. package/dist/chunk-OHXGNT3K.js.map +0 -1
  165. package/dist/chunk-PLDDJCW6.js.map +0 -1
  166. package/dist/chunk-RRUYHORU.js +0 -3431
  167. package/dist/chunk-RRUYHORU.js.map +0 -1
  168. package/dist/chunk-SS3E6QLB.js.map +0 -1
  169. package/dist/chunk-TIVL4UQ7.js.map +0 -1
  170. package/dist/chunk-VYG4AXYW.js +0 -388
  171. package/dist/chunk-VYG4AXYW.js.map +0 -1
  172. package/dist/chunk-YDJW5XTN.js +0 -84
  173. package/dist/chunk-YDJW5XTN.js.map +0 -1
  174. package/dist/styles/core.css +0 -422
  175. package/dist/styles/fonts/georama-italic.woff2 +0 -0
  176. package/dist/styles/fonts/georama.woff2 +0 -0
  177. package/dist/styles/fonts/open-sans-italic.woff2 +0 -0
  178. package/dist/styles/fonts/open-sans.woff2 +0 -0
  179. package/dist/styles/fonts/reddit-mono.woff2 +0 -0
  180. package/dist/styles/index.d.ts +0 -36
  181. package/dist/styles/index.js +0 -24
  182. package/dist/styles/index.js.map +0 -1
  183. package/dist/theming/runtime.d.ts +0 -73
  184. package/dist/theming/runtime.js +0 -16
  185. package/dist/theming/runtime.js.map +0 -1
  186. package/dist/usePublicRouteParams-B6i0KtXW.d.ts +0 -477
  187. package/docs/INDEX.md +0 -192
  188. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  189. package/docs/api/interfaces/EventLogoProps.md +0 -152
  190. package/docs/api/interfaces/FileSizeLimits.md +0 -7
  191. package/docs/api/interfaces/FileUploadProps.md +0 -154
  192. package/docs/api/interfaces/InactivityWarningModalProps.md +0 -115
  193. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  194. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  195. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  196. package/docs/api/interfaces/PublicPageFooterProps.md +0 -112
  197. package/docs/api/interfaces/PublicPageHeaderProps.md +0 -138
  198. package/docs/api/interfaces/PublicPageLayoutProps.md +0 -138
  199. package/docs/api/interfaces/StorageConfig.md +0 -41
  200. package/docs/api/interfaces/StorageFileInfo.md +0 -74
  201. package/docs/api/interfaces/StorageFileMetadata.md +0 -140
  202. package/docs/api/interfaces/StorageListOptions.md +0 -86
  203. package/docs/api/interfaces/StorageListResult.md +0 -41
  204. package/docs/api/interfaces/StorageUploadOptions.md +0 -88
  205. package/docs/api/interfaces/StorageUploadResult.md +0 -63
  206. package/docs/api/interfaces/StorageUrlOptions.md +0 -47
  207. package/docs/api/interfaces/UseInactivityTrackerOptions.md +0 -136
  208. package/docs/api/interfaces/UseInactivityTrackerReturn.md +0 -123
  209. package/docs/api/interfaces/UsePublicEventLogoOptions.md +0 -87
  210. package/docs/api/interfaces/UsePublicEventLogoReturn.md +0 -81
  211. package/docs/api/interfaces/UsePublicEventOptions.md +0 -34
  212. package/docs/api/interfaces/UsePublicEventReturn.md +0 -68
  213. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +0 -94
  214. package/docs/best-practices/README.md +0 -400
  215. package/docs/consuming-app-vite-config.md +0 -233
  216. package/docs/examples/navigation-menu-auth-fix.md +0 -344
  217. package/docs/implementation-guides/hierarchical-datatable.md +0 -850
  218. package/docs/implementation-guides/public-pages.md +0 -752
  219. package/docs/migration/quick-migration-guide.md +0 -320
  220. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -272
  221. package/docs/migration/v0.4.16-css-first-approach.md +0 -306
  222. package/docs/migration/v0.4.17-source-path-fix.md +0 -229
  223. package/docs/print-components/README.md +0 -258
  224. package/docs/print-components/api-reference.md +0 -636
  225. package/docs/print-components/examples/README.md +0 -204
  226. package/docs/print-components/examples/basic-report.tsx +0 -92
  227. package/docs/print-components/examples/card-catalog.tsx +0 -149
  228. package/docs/print-components/examples/cover-page-report.tsx +0 -163
  229. package/docs/print-components/quick-start.md +0 -363
  230. package/docs/troubleshooting/README.md +0 -497
  231. package/docs/troubleshooting/styling-issues.md +0 -219
  232. package/docs/troubleshooting/tailwind-content-scanning.md +0 -213
  233. package/src/__mocks__/lucide-react.ts +0 -181
  234. package/src/__tests__/README.md +0 -404
  235. package/src/__tests__/debug-provider.unit.test.tsx +0 -67
  236. package/src/__tests__/e2e/workflows.test.tsx +0 -373
  237. package/src/__tests__/hybridPermissions.unit.test.tsx +0 -474
  238. package/src/__tests__/index.integration.test.ts +0 -491
  239. package/src/__tests__/mocks/MockAuthProvider-standalone.tsx +0 -47
  240. package/src/__tests__/mocks/MockAuthProvider.tsx +0 -63
  241. package/src/__tests__/mocks/enhancedSupabaseMock.ts +0 -252
  242. package/src/__tests__/mocks/index.test.ts +0 -23
  243. package/src/__tests__/mocks/index.ts +0 -16
  244. package/src/__tests__/mocks/mockAuth.ts +0 -155
  245. package/src/__tests__/mocks/mockSupabase.ts +0 -83
  246. package/src/__tests__/mocks/mockSupabaseClient.ts +0 -63
  247. package/src/__tests__/mocks/providers.tsx +0 -22
  248. package/src/__tests__/patterns/__tests__/testPatterns.test.ts +0 -394
  249. package/src/__tests__/patterns/testPatterns.ts +0 -124
  250. package/src/__tests__/performance/componentPerformance.performance.test.ts +0 -27
  251. package/src/__tests__/performance/index.ts +0 -24
  252. package/src/__tests__/performance/performanceValidation.performance.test.ts +0 -15
  253. package/src/__tests__/security/security.unit.test.tsx +0 -7
  254. package/src/__tests__/security/securityValidation.security.test.tsx +0 -153
  255. package/src/__tests__/setup.ts +0 -259
  256. package/src/__tests__/setupTests.d.ts +0 -1
  257. package/src/__tests__/shared/componentTestUtils.tsx +0 -475
  258. package/src/__tests__/shared/errorHandlingTestUtils.ts +0 -107
  259. package/src/__tests__/shared/index.ts +0 -81
  260. package/src/__tests__/shared/integrationTestUtils.tsx +0 -375
  261. package/src/__tests__/shared/performanceTestUtils.tsx +0 -476
  262. package/src/__tests__/shared/testUtils.optimized.tsx +0 -685
  263. package/src/__tests__/simple.test.tsx +0 -20
  264. package/src/__tests__/templates/accessibility.test.template.tsx +0 -279
  265. package/src/__tests__/templates/component.test.template.tsx +0 -122
  266. package/src/__tests__/templates/integration.test.template.tsx +0 -199
  267. package/src/__tests__/test-utils/dataFactories.ts +0 -60
  268. package/src/__tests__/test-utils/index.ts +0 -6
  269. package/src/__tests__/typeSafety.unit.test.ts +0 -65
  270. package/src/__tests__/unifiedAuth.unit.test.tsx +0 -151
  271. package/src/__tests__/utils/accessibilityHelpers.ts +0 -254
  272. package/src/__tests__/utils/assertions.ts +0 -50
  273. package/src/__tests__/utils/deterministicHelpers.ts +0 -31
  274. package/src/__tests__/utils/edgeCaseConfig.test.ts +0 -75
  275. package/src/__tests__/utils/edgeCaseConfig.ts +0 -98
  276. package/src/__tests__/utils/mockHelpers.ts +0 -149
  277. package/src/__tests__/utils/mockLoader.ts +0 -101
  278. package/src/__tests__/utils/performanceHelpers.ts +0 -55
  279. package/src/__tests__/utils/performanceTestHelpers.ts +0 -68
  280. package/src/__tests__/utils/testDataFactories.ts +0 -28
  281. package/src/__tests__/utils/testIsolation.ts +0 -67
  282. package/src/__tests__/utils/visualTestHelpers.ts +0 -20
  283. package/src/__tests__/visual/__snapshots__/componentSnapshots.visual.test.tsx.snap +0 -68
  284. package/src/__tests__/visual/__snapshots__/componentVisuals.visual.test.tsx.snap +0 -14
  285. package/src/__tests__/visual/__snapshots__/visualRegression.test.tsx.snap +0 -217
  286. package/src/__tests__/visual/__snapshots__/visualRegression.visual.test.tsx.snap +0 -24
  287. package/src/__tests__/visual/componentSnapshots.visual.test.tsx +0 -33
  288. package/src/__tests__/visual/componentVisuals.visual.test.tsx +0 -12
  289. package/src/__tests__/visual/visualRegression.visual.test.tsx +0 -20
  290. package/src/components/Alert/Alert.tsx +0 -134
  291. package/src/components/Alert/__tests__/Alert.unit.test.tsx +0 -381
  292. package/src/components/Alert/index.ts +0 -2
  293. package/src/components/Avatar/Avatar.tsx +0 -84
  294. package/src/components/Avatar/__tests__/Avatar.unit.test.tsx +0 -232
  295. package/src/components/Avatar/index.ts +0 -2
  296. package/src/components/Button/Button.tsx +0 -270
  297. package/src/components/Button/__tests__/Button.accessibility.test.tsx +0 -131
  298. package/src/components/Button/__tests__/Button.comprehensive.test.tsx +0 -721
  299. package/src/components/Button/__tests__/Button.unit.test.tsx +0 -189
  300. package/src/components/Button/__tests__/EventSelector.integration.test.tsx +0 -285
  301. package/src/components/Button/index.ts +0 -2
  302. package/src/components/Card/Card.tsx +0 -271
  303. package/src/components/Card/__tests__/Card.accessibility.test.tsx +0 -394
  304. package/src/components/Card/__tests__/Card.comprehensive.test.tsx +0 -599
  305. package/src/components/Card/__tests__/Card.integration.test.tsx +0 -673
  306. package/src/components/Card/__tests__/Card.performance.test.tsx +0 -546
  307. package/src/components/Card/__tests__/Card.unit.test.tsx +0 -330
  308. package/src/components/Card/__tests__/Card.visual.test.tsx +0 -599
  309. package/src/components/Card/__tests__/README.md +0 -211
  310. package/src/components/Card/index.ts +0 -1
  311. package/src/components/Checkbox/Checkbox.tsx +0 -75
  312. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  313. package/src/components/Checkbox/__tests__/Checkbox.unit.test.tsx +0 -520
  314. package/src/components/Checkbox/index.ts +0 -2
  315. package/src/components/DataTable/DataTable.tsx +0 -438
  316. package/src/components/DataTable/__tests__/DataTable.errorHandling.test.tsx +0 -251
  317. package/src/components/DataTable/__tests__/DataTable.hierarchical.test.tsx +0 -680
  318. package/src/components/DataTable/__tests__/DataTable.infinite-loop.test.tsx +0 -323
  319. package/src/components/DataTable/__tests__/DataTable.integration.test.tsx +0 -716
  320. package/src/components/DataTable/__tests__/DataTable.performance.test.tsx +0 -589
  321. package/src/components/DataTable/__tests__/DataTable.permissions.test.tsx +0 -316
  322. package/src/components/DataTable/__tests__/DataTable.regressionFixes.test.tsx +0 -546
  323. package/src/components/DataTable/__tests__/DataTable.selection.controlled.test.tsx +0 -386
  324. package/src/components/DataTable/__tests__/DataTable.selection.test.tsx +0 -338
  325. package/src/components/DataTable/__tests__/DataTable.sorting.test.tsx +0 -321
  326. package/src/components/DataTable/__tests__/DataTable.userWorkflows.test.tsx +0 -320
  327. package/src/components/DataTable/__tests__/DataTable.workflowValidation.test.tsx +0 -583
  328. package/src/components/DataTable/__tests__/DataTable.workflows.test.tsx +0 -711
  329. package/src/components/DataTable/__tests__/README.md +0 -145
  330. package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +0 -66
  331. package/src/components/DataTable/__tests__/performance-regression.test.tsx +0 -777
  332. package/src/components/DataTable/__tests__/performance.test.tsx +0 -365
  333. package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +0 -103
  334. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +0 -381
  335. package/src/components/DataTable/__tests__/test-utils.ts +0 -94
  336. package/src/components/DataTable/components/ActionButtons.tsx +0 -177
  337. package/src/components/DataTable/components/BulkOperationsDropdown.tsx +0 -160
  338. package/src/components/DataTable/components/ColumnFilter.tsx +0 -114
  339. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +0 -100
  340. package/src/components/DataTable/components/DataTableBody.tsx +0 -461
  341. package/src/components/DataTable/components/DataTableCore.tsx +0 -941
  342. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +0 -214
  343. package/src/components/DataTable/components/DataTableModals.tsx +0 -87
  344. package/src/components/DataTable/components/DataTableToolbar.tsx +0 -250
  345. package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -144
  346. package/src/components/DataTable/components/EditableRow.tsx +0 -159
  347. package/src/components/DataTable/components/EmptyState.tsx +0 -64
  348. package/src/components/DataTable/components/ExpandButton.tsx +0 -113
  349. package/src/components/DataTable/components/FilterRow.tsx +0 -100
  350. package/src/components/DataTable/components/GroupHeader.tsx +0 -42
  351. package/src/components/DataTable/components/GroupingDropdown.tsx +0 -96
  352. package/src/components/DataTable/components/ImportModal.tsx +0 -345
  353. package/src/components/DataTable/components/LoadingState.tsx +0 -12
  354. package/src/components/DataTable/components/PaginationControls.tsx +0 -332
  355. package/src/components/DataTable/components/UnifiedTableBody.tsx +0 -713
  356. package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
  357. package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -513
  358. package/src/components/DataTable/components/__tests__/ActionButtons.unit.test.tsx +0 -150
  359. package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +0 -224
  360. package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.unit.test.tsx +0 -244
  361. package/src/components/DataTable/components/__tests__/DataTable.accessibility.test.tsx +0 -629
  362. package/src/components/DataTable/components/__tests__/DataTable.integration.test.tsx +0 -470
  363. package/src/components/DataTable/components/__tests__/DataTable.performance.test.tsx +0 -160
  364. package/src/components/DataTable/components/__tests__/DataTable.real.test.tsx +0 -251
  365. package/src/components/DataTable/components/__tests__/DataTable.security.test.tsx +0 -171
  366. package/src/components/DataTable/components/__tests__/DataTable.unit.test.tsx +0 -290
  367. package/src/components/DataTable/components/__tests__/DataTableBody.unit.test.tsx +0 -147
  368. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.unit.test.tsx +0 -182
  369. package/src/components/DataTable/components/__tests__/DataTableModals.unit.test.tsx +0 -123
  370. package/src/components/DataTable/components/__tests__/EditableRow.unit.test.tsx +0 -660
  371. package/src/components/DataTable/components/__tests__/EmptyState.unit.test.tsx +0 -256
  372. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -498
  373. package/src/components/DataTable/components/__tests__/FilterRow.unit.test.tsx +0 -112
  374. package/src/components/DataTable/components/__tests__/FilteringToggle.unit.test.tsx +0 -133
  375. package/src/components/DataTable/components/__tests__/GroupHeader.unit.test.tsx +0 -172
  376. package/src/components/DataTable/components/__tests__/GroupingDropdown.unit.test.tsx +0 -222
  377. package/src/components/DataTable/components/__tests__/ImportModal.unit.test.tsx +0 -780
  378. package/src/components/DataTable/components/__tests__/LoadingState.unit.test.tsx +0 -65
  379. package/src/components/DataTable/components/__tests__/PaginationControls.unit.test.tsx +0 -634
  380. package/src/components/DataTable/components/__tests__/StateComponents.unit.test.tsx +0 -48
  381. package/src/components/DataTable/components/__tests__/UnifiedTableBody.hierarchical.test.tsx +0 -541
  382. package/src/components/DataTable/components/__tests__/ViewRowModal.unit.test.tsx +0 -228
  383. package/src/components/DataTable/components/__tests__/VirtualizedDataTable.unit.test.tsx +0 -568
  384. package/src/components/DataTable/components/index.ts +0 -16
  385. package/src/components/DataTable/context/DataTableContext.tsx +0 -97
  386. package/src/components/DataTable/core/ActionManager.ts +0 -235
  387. package/src/components/DataTable/core/ColumnFactory.ts +0 -268
  388. package/src/components/DataTable/core/ColumnManager.ts +0 -205
  389. package/src/components/DataTable/core/DataManager.ts +0 -188
  390. package/src/components/DataTable/core/DataTableContext.tsx +0 -181
  391. package/src/components/DataTable/core/LocalDataAdapter.ts +0 -264
  392. package/src/components/DataTable/core/PluginRegistry.ts +0 -229
  393. package/src/components/DataTable/core/StateManager.ts +0 -311
  394. package/src/components/DataTable/core/__tests__/ActionManager.unit.test.ts +0 -405
  395. package/src/components/DataTable/core/__tests__/ArchitectureIntegration.unit.test.tsx +0 -445
  396. package/src/components/DataTable/core/__tests__/ColumnFactory.unit.test.ts +0 -288
  397. package/src/components/DataTable/core/__tests__/ColumnManager.unit.test.ts +0 -623
  398. package/src/components/DataTable/core/__tests__/DataManager.unit.test.ts +0 -431
  399. package/src/components/DataTable/core/__tests__/DataTableContext.unit.test.tsx +0 -433
  400. package/src/components/DataTable/core/__tests__/LocalDataAdapter.unit.test.ts +0 -422
  401. package/src/components/DataTable/core/__tests__/PluginRegistry.unit.test.tsx +0 -207
  402. package/src/components/DataTable/core/__tests__/StateManager.unit.test.ts +0 -278
  403. package/src/components/DataTable/core/index.ts +0 -8
  404. package/src/components/DataTable/core/interfaces.ts +0 -338
  405. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -418
  406. package/src/components/DataTable/examples/HierarchicalExample.tsx +0 -472
  407. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -173
  408. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -502
  409. package/src/components/DataTable/examples/__tests__/PerformanceExample.unit.test.tsx +0 -281
  410. package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.unit.test.ts +0 -407
  411. package/src/components/DataTable/hooks/__tests__/useColumnReordering.unit.test.ts +0 -679
  412. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -95
  413. package/src/components/DataTable/hooks/useColumnReordering.ts +0 -110
  414. package/src/components/DataTable/hooks/useDataTableState.ts +0 -325
  415. package/src/components/DataTable/hooks/useHierarchicalState.ts +0 -174
  416. package/src/components/DataTable/index.ts +0 -68
  417. package/src/components/DataTable/styles.ts +0 -171
  418. package/src/components/DataTable/types.ts +0 -473
  419. package/src/components/DataTable/utils/__tests__/debugTools.unit.test.ts +0 -267
  420. package/src/components/DataTable/utils/__tests__/errorHandling.unit.test.ts +0 -467
  421. package/src/components/DataTable/utils/__tests__/exportUtils.unit.test.ts +0 -380
  422. package/src/components/DataTable/utils/__tests__/flexibleImport.unit.test.ts +0 -233
  423. package/src/components/DataTable/utils/__tests__/performanceUtils.unit.test.ts +0 -414
  424. package/src/components/DataTable/utils/debugTools.ts +0 -583
  425. package/src/components/DataTable/utils/errorHandling.ts +0 -494
  426. package/src/components/DataTable/utils/exportUtils.ts +0 -126
  427. package/src/components/DataTable/utils/flexibleImport.ts +0 -510
  428. package/src/components/DataTable/utils/hierarchicalSorting.ts +0 -151
  429. package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -218
  430. package/src/components/DataTable/utils/index.ts +0 -1
  431. package/src/components/DataTable/utils/performanceUtils.ts +0 -351
  432. package/src/components/Dialog/Dialog.tsx +0 -782
  433. package/src/components/Dialog/README.md +0 -804
  434. package/src/components/Dialog/__tests__/Dialog.accessibility.test.tsx +0 -521
  435. package/src/components/Dialog/__tests__/Dialog.auto-size.example.tsx +0 -157
  436. package/src/components/Dialog/__tests__/Dialog.enhanced.test.tsx +0 -538
  437. package/src/components/Dialog/__tests__/Dialog.unit.test.tsx +0 -1373
  438. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  439. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  440. package/src/components/Dialog/examples/HtmlDialogExample.tsx +0 -202
  441. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  442. package/src/components/Dialog/examples/SmartDialogExample.tsx +0 -322
  443. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -151
  444. package/src/components/Dialog/index.ts +0 -12
  445. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  446. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  447. package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -312
  448. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.accessibility.test.tsx +0 -517
  449. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.integration.test.tsx +0 -572
  450. package/src/components/ErrorBoundary/__tests__/ErrorBoundary.unit.test.tsx +0 -579
  451. package/src/components/ErrorBoundary/index.ts +0 -8
  452. package/src/components/EventSelector/EventSelector.tsx +0 -360
  453. package/src/components/EventSelector/__tests__/EventSelector.test.tsx +0 -528
  454. package/src/components/EventSelector/index.ts +0 -3
  455. package/src/components/EventSelector/types.ts +0 -79
  456. package/src/components/FileUpload/FileUpload.example.tsx +0 -218
  457. package/src/components/FileUpload/FileUpload.tsx +0 -237
  458. package/src/components/FileUpload/__tests__/FileUpload.integration.test.tsx +0 -992
  459. package/src/components/FileUpload/__tests__/FileUpload.real.test.tsx +0 -927
  460. package/src/components/FileUpload/__tests__/FileUpload.test.tsx +0 -855
  461. package/src/components/FileUpload/__tests__/FileUpload.unit.test.tsx +0 -1311
  462. package/src/components/FileUpload/__tests__/FileUpload.unmocked.test.tsx +0 -937
  463. package/src/components/FileUpload/index.ts +0 -6
  464. package/src/components/Footer/Footer.tsx +0 -197
  465. package/src/components/Footer/__tests__/Footer.accessibility.test.tsx +0 -359
  466. package/src/components/Footer/__tests__/Footer.integration.test.tsx +0 -353
  467. package/src/components/Footer/__tests__/Footer.performance.test.tsx +0 -309
  468. package/src/components/Footer/__tests__/Footer.unit.test.tsx +0 -309
  469. package/src/components/Footer/__tests__/Footer.visual.test.tsx +0 -335
  470. package/src/components/Footer/index.ts +0 -17
  471. package/src/components/Form/Form.tsx +0 -166
  472. package/src/components/Form/FormErrorSummary.tsx +0 -113
  473. package/src/components/Form/FormField.tsx +0 -249
  474. package/src/components/Form/FormFieldset.tsx +0 -127
  475. package/src/components/Form/FormLiveRegion.tsx +0 -198
  476. package/src/components/Form/__tests__/Form.accessibility.test.tsx +0 -820
  477. package/src/components/Form/__tests__/Form.unit.test.tsx +0 -305
  478. package/src/components/Form/__tests__/FormErrorSummary.unit.test.tsx +0 -285
  479. package/src/components/Form/__tests__/FormFieldset.unit.test.tsx +0 -241
  480. package/src/components/Form/index.ts +0 -26
  481. package/src/components/Header/Header.tsx +0 -301
  482. package/src/components/Header/__tests__/Header.accessibility.test.tsx +0 -382
  483. package/src/components/Header/__tests__/Header.comprehensive.test.tsx +0 -509
  484. package/src/components/Header/__tests__/Header.unit.test.tsx +0 -335
  485. package/src/components/Header/index.ts +0 -4
  486. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +0 -196
  487. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +0 -164
  488. package/src/components/InactivityWarningModal/__tests__/InactivityWarningModal.unit.test.tsx +0 -224
  489. package/src/components/InactivityWarningModal/index.ts +0 -9
  490. package/src/components/Input/Input.tsx +0 -201
  491. package/src/components/Input/__mocks__/Input.tsx +0 -2
  492. package/src/components/Input/__tests__/Input.accessibility.test.tsx +0 -632
  493. package/src/components/Input/__tests__/Input.unit.test.tsx +0 -1121
  494. package/src/components/Input/index.ts +0 -9
  495. package/src/components/Label/Label.tsx +0 -186
  496. package/src/components/Label/__tests__/Label.accessibility.test.tsx +0 -239
  497. package/src/components/Label/__tests__/Label.unit.test.tsx +0 -331
  498. package/src/components/Label/index.ts +0 -2
  499. package/src/components/LoadingSpinner/LoadingSpinner.tsx +0 -98
  500. package/src/components/LoadingSpinner/__tests__/LoadingSpinner.accessibility.test.tsx +0 -116
  501. package/src/components/LoadingSpinner/__tests__/LoadingSpinner.unit.test.tsx +0 -144
  502. package/src/components/LoadingSpinner/index.ts +0 -3
  503. package/src/components/LoginForm/LoginForm.tsx +0 -273
  504. package/src/components/LoginForm/__tests__/LoginForm.accessibility.test.tsx +0 -201
  505. package/src/components/LoginForm/__tests__/LoginForm.unit.test.tsx +0 -119
  506. package/src/components/LoginForm/index.ts +0 -3
  507. package/src/components/NavigationMenu/NavigationMenu.tsx +0 -698
  508. package/src/components/NavigationMenu/__tests__/NavigationMenu.accessibility.test.tsx +0 -378
  509. package/src/components/NavigationMenu/__tests__/NavigationMenu.enhanced.test.tsx +0 -768
  510. package/src/components/NavigationMenu/__tests__/NavigationMenu.integration.test.tsx +0 -576
  511. package/src/components/NavigationMenu/__tests__/NavigationMenu.performance.test.tsx +0 -585
  512. package/src/components/NavigationMenu/__tests__/NavigationMenu.real.component.test.tsx +0 -783
  513. package/src/components/NavigationMenu/__tests__/NavigationMenu.security.enhanced.test.tsx +0 -810
  514. package/src/components/NavigationMenu/__tests__/NavigationMenu.security.test.tsx +0 -494
  515. package/src/components/NavigationMenu/__tests__/NavigationMenu.unit.test.tsx +0 -331
  516. package/src/components/NavigationMenu/__tests__/NavigationMenu.userWorkflows.test.tsx +0 -347
  517. package/src/components/NavigationMenu/__tests__/NavigationMenu.workflows.test.tsx +0 -584
  518. package/src/components/NavigationMenu/index.ts +0 -10
  519. package/src/components/NavigationMenu/types.ts +0 -85
  520. package/src/components/OrganisationSelector/OrganisationSelector.tsx +0 -304
  521. package/src/components/OrganisationSelector/__tests__/OrganisationSelector.unit.test.tsx +0 -664
  522. package/src/components/OrganisationSelector/index.ts +0 -9
  523. package/src/components/PaceAppLayout/PaceAppLayout.tsx +0 -699
  524. package/src/components/PaceAppLayout/README.md +0 -278
  525. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -288
  526. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +0 -893
  527. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.performance.test.tsx +0 -629
  528. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +0 -782
  529. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -904
  530. package/src/components/PaceAppLayout/index.ts +0 -1
  531. package/src/components/PaceLoginPage/PaceLoginPage.tsx +0 -221
  532. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.accessibility.test.tsx +0 -463
  533. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.integration.test.tsx +0 -586
  534. package/src/components/PaceLoginPage/__tests__/PaceLoginPage.unit.test.tsx +0 -533
  535. package/src/components/PaceLoginPage/index.ts +0 -1
  536. package/src/components/PasswordReset/PasswordChangeForm.tsx +0 -186
  537. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  538. package/src/components/PasswordReset/__tests__/PasswordChangeForm.accessibility.test.tsx +0 -408
  539. package/src/components/PasswordReset/__tests__/PasswordChangeForm.unit.test.tsx +0 -561
  540. package/src/components/PasswordReset/__tests__/PasswordReset.integration.test.tsx +0 -304
  541. package/src/components/PasswordReset/__tests__/PasswordResetForm.accessibility.test.tsx +0 -20
  542. package/src/components/PasswordReset/__tests__/PasswordResetForm.unit.test.tsx +0 -523
  543. package/src/components/PasswordReset/__tests__/__mocks__/UnifiedAuthProvider.ts +0 -29
  544. package/src/components/PasswordReset/index.ts +0 -4
  545. package/src/components/Print/__tests__/Print.comprehensive.test.tsx +0 -331
  546. package/src/components/PrintButton/PrintButton.tsx +0 -321
  547. package/src/components/PrintButton/PrintButtonGroup.tsx +0 -84
  548. package/src/components/PrintButton/PrintToolbar.tsx +0 -94
  549. package/src/components/PrintButton/__tests__/PrintButton.unit.test.tsx +0 -429
  550. package/src/components/PrintButton/__tests__/PrintButtonGroup.unit.test.tsx +0 -277
  551. package/src/components/PrintButton/__tests__/PrintToolbar.unit.test.tsx +0 -264
  552. package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +0 -438
  553. package/src/components/PrintButton/index.ts +0 -33
  554. package/src/components/PrintButton/types.ts +0 -173
  555. package/src/components/PrintCard/PrintCard.tsx +0 -154
  556. package/src/components/PrintCard/PrintCardContent.tsx +0 -57
  557. package/src/components/PrintCard/PrintCardFooter.tsx +0 -60
  558. package/src/components/PrintCard/PrintCardGrid.tsx +0 -91
  559. package/src/components/PrintCard/PrintCardHeader.tsx +0 -78
  560. package/src/components/PrintCard/PrintCardImage.tsx +0 -81
  561. package/src/components/PrintCard/__tests__/PrintCard.unit.test.tsx +0 -233
  562. package/src/components/PrintCard/__tests__/PrintCardContent.test.tsx +0 -284
  563. package/src/components/PrintCard/__tests__/PrintCardGrid.unit.test.tsx +0 -214
  564. package/src/components/PrintCard/__tests__/PrintCardImage.unit.test.tsx +0 -264
  565. package/src/components/PrintCard/examples/PrintCardShowcase.tsx +0 -239
  566. package/src/components/PrintCard/index.ts +0 -34
  567. package/src/components/PrintCard/types.ts +0 -171
  568. package/src/components/PrintDataTable/PrintDataTable.tsx +0 -215
  569. package/src/components/PrintDataTable/PrintTableGroup.tsx +0 -90
  570. package/src/components/PrintDataTable/PrintTableRow.tsx +0 -76
  571. package/src/components/PrintDataTable/__tests__/PrintDataTable.unit.test.tsx +0 -361
  572. package/src/components/PrintDataTable/__tests__/PrintTableGroup.unit.test.tsx +0 -314
  573. package/src/components/PrintDataTable/__tests__/PrintTableRow.unit.test.tsx +0 -362
  574. package/src/components/PrintDataTable/index.ts +0 -25
  575. package/src/components/PrintDataTable/types.ts +0 -67
  576. package/src/components/PrintFooter/PrintFooter.tsx +0 -183
  577. package/src/components/PrintFooter/PrintFooterContent.tsx +0 -71
  578. package/src/components/PrintFooter/PrintFooterInfo.tsx +0 -86
  579. package/src/components/PrintFooter/PrintPageNumber.tsx +0 -90
  580. package/src/components/PrintFooter/__tests__/PrintFooter.unit.test.tsx +0 -500
  581. package/src/components/PrintFooter/__tests__/PrintFooterContent.unit.test.tsx +0 -321
  582. package/src/components/PrintFooter/__tests__/PrintFooterInfo.unit.test.tsx +0 -335
  583. package/src/components/PrintFooter/__tests__/PrintPageNumber.unit.test.tsx +0 -340
  584. package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +0 -390
  585. package/src/components/PrintFooter/index.ts +0 -30
  586. package/src/components/PrintFooter/types.ts +0 -149
  587. package/src/components/PrintGrid/PrintGrid.tsx +0 -180
  588. package/src/components/PrintGrid/PrintGridBreakpoint.tsx +0 -109
  589. package/src/components/PrintGrid/PrintGridContainer.tsx +0 -128
  590. package/src/components/PrintGrid/PrintGridItem.tsx +0 -220
  591. package/src/components/PrintGrid/__tests__/PrintGrid.unit.test.tsx +0 -340
  592. package/src/components/PrintGrid/__tests__/PrintGridBreakpoint.unit.test.tsx +0 -261
  593. package/src/components/PrintGrid/__tests__/PrintGridContainer.unit.test.tsx +0 -338
  594. package/src/components/PrintGrid/__tests__/PrintGridItem.unit.test.tsx +0 -338
  595. package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +0 -359
  596. package/src/components/PrintGrid/index.ts +0 -31
  597. package/src/components/PrintGrid/types.ts +0 -159
  598. package/src/components/PrintHeader/PrintCoverHeader.tsx +0 -230
  599. package/src/components/PrintHeader/PrintHeader.tsx +0 -150
  600. package/src/components/PrintHeader/__tests__/PrintCoverHeader.unit.test.tsx +0 -309
  601. package/src/components/PrintHeader/__tests__/PrintHeader.unit.test.tsx +0 -202
  602. package/src/components/PrintHeader/index.ts +0 -17
  603. package/src/components/PrintHeader/types.ts +0 -42
  604. package/src/components/PrintLayout/PrintLayout.tsx +0 -122
  605. package/src/components/PrintLayout/PrintLayoutContext.tsx +0 -66
  606. package/src/components/PrintLayout/PrintPageBreak.tsx +0 -52
  607. package/src/components/PrintLayout/__tests__/PrintLayout.unit.test.tsx +0 -238
  608. package/src/components/PrintLayout/examples/PrintShowcase.tsx +0 -230
  609. package/src/components/PrintLayout/index.ts +0 -19
  610. package/src/components/PrintLayout/types.ts +0 -37
  611. package/src/components/PrintPageBreak/PrintPageBreak.tsx +0 -120
  612. package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +0 -90
  613. package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +0 -112
  614. package/src/components/PrintPageBreak/__tests__/PrintPageBreak.unit.test.tsx +0 -263
  615. package/src/components/PrintPageBreak/__tests__/PrintPageBreakGroup.unit.test.tsx +0 -239
  616. package/src/components/PrintPageBreak/__tests__/PrintPageBreakIndicator.unit.test.tsx +0 -235
  617. package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +0 -279
  618. package/src/components/PrintPageBreak/index.ts +0 -23
  619. package/src/components/PrintPageBreak/types.ts +0 -94
  620. package/src/components/PrintSection/PrintColumn.tsx +0 -104
  621. package/src/components/PrintSection/PrintDivider.tsx +0 -101
  622. package/src/components/PrintSection/PrintSection.tsx +0 -129
  623. package/src/components/PrintSection/PrintSectionContent.tsx +0 -75
  624. package/src/components/PrintSection/PrintSectionHeader.tsx +0 -97
  625. package/src/components/PrintSection/__tests__/PrintColumn.unit.test.tsx +0 -385
  626. package/src/components/PrintSection/__tests__/PrintDivider.unit.test.tsx +0 -373
  627. package/src/components/PrintSection/__tests__/PrintSection.unit.test.tsx +0 -390
  628. package/src/components/PrintSection/__tests__/PrintSectionContent.unit.test.tsx +0 -321
  629. package/src/components/PrintSection/__tests__/PrintSectionHeader.unit.test.tsx +0 -334
  630. package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +0 -258
  631. package/src/components/PrintSection/index.ts +0 -33
  632. package/src/components/PrintSection/types.ts +0 -155
  633. package/src/components/PrintText/PrintText.tsx +0 -116
  634. package/src/components/PrintText/__tests__/PrintText.unit.test.tsx +0 -351
  635. package/src/components/PrintText/index.ts +0 -16
  636. package/src/components/PrintText/types.ts +0 -24
  637. package/src/components/Progress/Progress.tsx +0 -116
  638. package/src/components/Progress/__tests__/Progress.accessibility.test.tsx +0 -240
  639. package/src/components/Progress/__tests__/Progress.unit.test.tsx +0 -242
  640. package/src/components/Progress/index.ts +0 -3
  641. package/src/components/PublicLayout/EventLogo.tsx +0 -287
  642. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -279
  643. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -208
  644. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -130
  645. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  646. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  647. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  648. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -178
  649. package/src/components/PublicLayout/PublicPageLayout.tsx +0 -232
  650. package/src/components/PublicLayout/PublicPageProvider.tsx +0 -137
  651. package/src/components/PublicLayout/__tests__/EventLogo.test.tsx +0 -761
  652. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.simplified.test.tsx +0 -228
  653. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -228
  654. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -459
  655. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -362
  656. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -522
  657. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -599
  658. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -513
  659. package/src/components/PublicLayout/index.ts +0 -51
  660. package/src/components/RBAC/PagePermissionGuard.tsx +0 -287
  661. package/src/components/RBAC/RBACGuard.tsx +0 -143
  662. package/src/components/RBAC/RBACProvider.tsx +0 -186
  663. package/src/components/RBAC/RoleBasedContent.tsx +0 -129
  664. package/src/components/RBAC/__tests__/PagePermissionGuard.unit.test.tsx +0 -683
  665. package/src/components/RBAC/__tests__/RBAC.integration.test.tsx +0 -573
  666. package/src/components/RBAC/__tests__/RBACGuard.unit.test.tsx +0 -467
  667. package/src/components/RBAC/__tests__/RBACProvider.accessibility.test.tsx +0 -475
  668. package/src/components/RBAC/__tests__/RBACProvider.advanced.test.tsx +0 -569
  669. package/src/components/RBAC/__tests__/RBACProvider.integration.test.tsx +0 -352
  670. package/src/components/RBAC/__tests__/RBACProvider.unit.test.tsx +0 -128
  671. package/src/components/RBAC/__tests__/RoleBasedContent.unit.test.tsx +0 -657
  672. package/src/components/RBAC/index.ts +0 -23
  673. package/src/components/Select/Select.tsx +0 -660
  674. package/src/components/Select/__tests__/SearchableSelect.unit.test.tsx +0 -437
  675. package/src/components/Select/__tests__/Select.accessibility.test.tsx +0 -1202
  676. package/src/components/Select/__tests__/Select.actual.test.tsx +0 -774
  677. package/src/components/Select/__tests__/Select.comprehensive.test.tsx +0 -837
  678. package/src/components/Select/__tests__/Select.enhanced.test.tsx +0 -1101
  679. package/src/components/Select/__tests__/Select.integration.test.tsx +0 -772
  680. package/src/components/Select/__tests__/Select.performance.test.tsx +0 -695
  681. package/src/components/Select/__tests__/Select.real-world.test.tsx +0 -1046
  682. package/src/components/Select/__tests__/Select.search-algorithms.test.tsx +0 -968
  683. package/src/components/Select/__tests__/Select.unit.test.tsx +0 -647
  684. package/src/components/Select/__tests__/Select.utils.test.tsx +0 -890
  685. package/src/components/Select/index.ts +0 -1
  686. package/src/components/SuperAdminGuard.tsx +0 -116
  687. package/src/components/Table/Table.tsx +0 -222
  688. package/src/components/Table/__tests__/Table.accessibility.test.tsx +0 -233
  689. package/src/components/Table/__tests__/Table.unit.test.tsx +0 -235
  690. package/src/components/Table/index.ts +0 -11
  691. package/src/components/Toast/Toast.tsx +0 -339
  692. package/src/components/Toast/__tests__/Toast.accessibility.test.tsx +0 -238
  693. package/src/components/Toast/__tests__/Toast.integration.test.tsx +0 -699
  694. package/src/components/Toast/__tests__/Toast.unit.test.tsx +0 -750
  695. package/src/components/Toast/index.ts +0 -14
  696. package/src/components/Tooltip/Tooltip.tsx +0 -167
  697. package/src/components/Tooltip/__tests__/Tooltip.accessibility.test.tsx +0 -121
  698. package/src/components/Tooltip/__tests__/Tooltip.unit.test.tsx +0 -185
  699. package/src/components/Tooltip/index.ts +0 -7
  700. package/src/components/UserMenu/UserMenu.tsx +0 -243
  701. package/src/components/UserMenu/__tests__/UserMenu.accessibility.test.tsx +0 -139
  702. package/src/components/UserMenu/__tests__/UserMenu.integration.test.tsx +0 -188
  703. package/src/components/UserMenu/__tests__/UserMenu.unit.test.tsx +0 -458
  704. package/src/components/UserMenu/index.ts +0 -3
  705. package/src/components/__tests__/EdgeCaseTesting.enhanced.test.tsx +0 -524
  706. package/src/components/__tests__/ErrorTesting.enhanced.test.tsx +0 -455
  707. package/src/components/__tests__/SuperAdminGuard.test.tsx +0 -456
  708. package/src/components/__tests__/SuperAdminGuard.unit.test.tsx +0 -456
  709. package/src/components/examples/PermissionExample.tsx +0 -150
  710. package/src/components/examples/__tests__/PermissionExample.unit.test.tsx +0 -360
  711. package/src/components/index.ts +0 -434
  712. package/src/components.ts +0 -19
  713. package/src/constants/performance.ts +0 -14
  714. package/src/examples/CorrectPublicPageImplementation.tsx +0 -301
  715. package/src/examples/PublicEventPage.tsx +0 -274
  716. package/src/examples/PublicPageApp.tsx +0 -308
  717. package/src/examples/PublicPageUsageExample.tsx +0 -216
  718. package/src/hooks/__tests__/hooks.integration.test.tsx +0 -575
  719. package/src/hooks/__tests__/useApiFetch.unit.test.ts +0 -115
  720. package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +0 -133
  721. package/src/hooks/__tests__/useDebounce.unit.test.ts +0 -82
  722. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +0 -293
  723. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +0 -385
  724. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +0 -286
  725. package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +0 -838
  726. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +0 -627
  727. package/src/hooks/__tests__/useRBAC.unit.test.ts +0 -911
  728. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +0 -537
  729. package/src/hooks/__tests__/useToast.unit.test.tsx +0 -62
  730. package/src/hooks/__tests__/useZodForm.unit.test.tsx +0 -37
  731. package/src/hooks/index.ts +0 -56
  732. package/src/hooks/public/__tests__/usePublicEvent.test.tsx +0 -397
  733. package/src/hooks/public/__tests__/usePublicEventLogo.test.tsx +0 -690
  734. package/src/hooks/public/__tests__/usePublicRouteParams.test.tsx +0 -449
  735. package/src/hooks/public/index.ts +0 -34
  736. package/src/hooks/public/usePublicEvent.ts +0 -261
  737. package/src/hooks/public/usePublicEventLogo.ts +0 -285
  738. package/src/hooks/public/usePublicRouteParams.ts +0 -259
  739. package/src/hooks/useAppConfig.ts +0 -94
  740. package/src/hooks/useComponentPerformance.ts +0 -39
  741. package/src/hooks/useDataTablePerformance.ts +0 -387
  742. package/src/hooks/useDataTableState.ts +0 -110
  743. package/src/hooks/useDebounce.ts +0 -18
  744. package/src/hooks/useFocusManagement.ts +0 -161
  745. package/src/hooks/useFocusTrap.ts +0 -155
  746. package/src/hooks/useInactivityTracker.ts +0 -372
  747. package/src/hooks/useIsMobile.ts +0 -42
  748. package/src/hooks/useKeyboardShortcuts.ts +0 -237
  749. package/src/hooks/useOrganisationPermissions.ts +0 -208
  750. package/src/hooks/useOrganisationSecurity.ts +0 -262
  751. package/src/hooks/usePerformanceMonitor.ts +0 -128
  752. package/src/hooks/usePermissionCache.ts +0 -455
  753. package/src/hooks/useRBAC.ts +0 -262
  754. package/src/hooks/useSecureDataAccess.ts +0 -586
  755. package/src/hooks/useStorage.ts +0 -274
  756. package/src/hooks/useToast.ts +0 -242
  757. package/src/hooks/useZodForm.ts +0 -28
  758. package/src/index.ts +0 -200
  759. package/src/providers/AuthProvider.tsx +0 -369
  760. package/src/providers/EventProvider.tsx +0 -324
  761. package/src/providers/InactivityProvider.tsx +0 -238
  762. package/src/providers/OrganisationProvider.tsx +0 -588
  763. package/src/providers/RBACProvider.tsx +0 -634
  764. package/src/providers/UnifiedAuthProvider.tsx +0 -327
  765. package/src/providers/__tests__/EventProvider.unit.test.tsx +0 -768
  766. package/src/providers/__tests__/OrganisationProvider.basic.test.tsx +0 -116
  767. package/src/providers/__tests__/OrganisationProvider.unit.test.tsx +0 -1312
  768. package/src/providers/__tests__/UnifiedAuthProvider.inactivity.test.tsx +0 -601
  769. package/src/providers/__tests__/UnifiedAuthProvider.unit.test.tsx +0 -683
  770. package/src/providers/__tests__/index.unit.test.ts +0 -78
  771. package/src/providers/index.ts +0 -15
  772. package/src/rbac/README.md +0 -885
  773. package/src/rbac/__tests__/PagePermissionGuard.test.tsx +0 -673
  774. package/src/rbac/__tests__/README.md +0 -170
  775. package/src/rbac/__tests__/RoleBasedRouter.test.tsx +0 -709
  776. package/src/rbac/__tests__/TestContext.tsx +0 -72
  777. package/src/rbac/__tests__/__mocks__/cache.ts +0 -144
  778. package/src/rbac/__tests__/__mocks__/supabase.ts +0 -152
  779. package/src/rbac/__tests__/adapters-hooks-comprehensive.test.tsx +0 -782
  780. package/src/rbac/__tests__/adapters-hooks.test.tsx +0 -561
  781. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +0 -963
  782. package/src/rbac/__tests__/adapters.test.tsx +0 -444
  783. package/src/rbac/__tests__/api.test.ts +0 -620
  784. package/src/rbac/__tests__/audit-observability-comprehensive.test.ts +0 -792
  785. package/src/rbac/__tests__/audit-observability.test.ts +0 -549
  786. package/src/rbac/__tests__/audit.test.ts +0 -616
  787. package/src/rbac/__tests__/build-contract-compliance-simple.test.ts +0 -230
  788. package/src/rbac/__tests__/cache-invalidation-comprehensive.test.ts +0 -889
  789. package/src/rbac/__tests__/cache-invalidation.test.ts +0 -457
  790. package/src/rbac/__tests__/cache.test.ts +0 -458
  791. package/src/rbac/__tests__/components-navigation-guard.enhanced.test.tsx +0 -859
  792. package/src/rbac/__tests__/components-navigation-guard.test.tsx +0 -895
  793. package/src/rbac/__tests__/components-navigation-provider.test.tsx +0 -692
  794. package/src/rbac/__tests__/components-page-permission-guard.test.tsx +0 -673
  795. package/src/rbac/__tests__/components-page-permission-provider.test.tsx +0 -614
  796. package/src/rbac/__tests__/components-permission-enforcer.enhanced.fixed.test.tsx +0 -836
  797. package/src/rbac/__tests__/components-permission-enforcer.enhanced.test.tsx +0 -837
  798. package/src/rbac/__tests__/components-permission-enforcer.test.tsx +0 -825
  799. package/src/rbac/__tests__/components-role-based-router.test.tsx +0 -709
  800. package/src/rbac/__tests__/components-secure-data-provider.test.tsx +0 -607
  801. package/src/rbac/__tests__/config.test.ts +0 -583
  802. package/src/rbac/__tests__/core-logic-unit.test.ts +0 -190
  803. package/src/rbac/__tests__/core-permission-logic-comprehensive.test.ts +0 -1467
  804. package/src/rbac/__tests__/core-permission-logic-fixed.test.ts +0 -151
  805. package/src/rbac/__tests__/core-permission-logic-simple.test.ts +0 -968
  806. package/src/rbac/__tests__/core-permission-logic.test.ts +0 -966
  807. package/src/rbac/__tests__/edge-cases-comprehensive.test.ts +0 -988
  808. package/src/rbac/__tests__/edge-cases.test.ts +0 -654
  809. package/src/rbac/__tests__/engine.test.ts +0 -361
  810. package/src/rbac/__tests__/engine.unit.test.ts +0 -361
  811. package/src/rbac/__tests__/hooks.enhanced.test.tsx +0 -979
  812. package/src/rbac/__tests__/hooks.fixed.test.tsx +0 -475
  813. package/src/rbac/__tests__/hooks.test.tsx +0 -385
  814. package/src/rbac/__tests__/index.test.ts +0 -269
  815. package/src/rbac/__tests__/integration.enhanced.test.tsx +0 -824
  816. package/src/rbac/__tests__/page-permission-guard-super-admin.test.tsx +0 -261
  817. package/src/rbac/__tests__/performance.enhanced.test.tsx +0 -724
  818. package/src/rbac/__tests__/permissions.test.ts +0 -383
  819. package/src/rbac/__tests__/requires-event.test.ts +0 -330
  820. package/src/rbac/__tests__/scope-isolation-comprehensive.test.ts +0 -1349
  821. package/src/rbac/__tests__/scope-isolation.test.ts +0 -755
  822. package/src/rbac/__tests__/secure-client-rls-comprehensive.test.ts +0 -592
  823. package/src/rbac/__tests__/secure-client-rls.test.ts +0 -377
  824. package/src/rbac/__tests__/security.test.ts +0 -296
  825. package/src/rbac/__tests__/setup.ts +0 -228
  826. package/src/rbac/__tests__/test-utils-enhanced.tsx +0 -400
  827. package/src/rbac/__tests__/types.test.ts +0 -685
  828. package/src/rbac/adapters.tsx +0 -726
  829. package/src/rbac/api.ts +0 -339
  830. package/src/rbac/audit-enhanced.ts +0 -339
  831. package/src/rbac/audit.ts +0 -338
  832. package/src/rbac/cache.ts +0 -215
  833. package/src/rbac/components/EnhancedNavigationMenu.tsx +0 -294
  834. package/src/rbac/components/NavigationGuard.tsx +0 -294
  835. package/src/rbac/components/NavigationProvider.tsx +0 -314
  836. package/src/rbac/components/PagePermissionGuard.tsx +0 -430
  837. package/src/rbac/components/PagePermissionProvider.tsx +0 -274
  838. package/src/rbac/components/PermissionEnforcer.tsx +0 -307
  839. package/src/rbac/components/RoleBasedRouter.tsx +0 -425
  840. package/src/rbac/components/SecureDataProvider.tsx +0 -319
  841. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -631
  842. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -667
  843. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -647
  844. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -496
  845. package/src/rbac/components/index.ts +0 -64
  846. package/src/rbac/config.ts +0 -133
  847. package/src/rbac/docs/event-based-apps.md +0 -285
  848. package/src/rbac/engine.ts +0 -1026
  849. package/src/rbac/eslint-rules.js +0 -285
  850. package/src/rbac/examples/CompleteRBACExample.tsx +0 -323
  851. package/src/rbac/examples/EventBasedApp.tsx +0 -238
  852. package/src/rbac/hooks.ts +0 -570
  853. package/src/rbac/index.ts +0 -114
  854. package/src/rbac/permissions.ts +0 -293
  855. package/src/rbac/secureClient.ts +0 -244
  856. package/src/rbac/security.ts +0 -346
  857. package/src/rbac/testing/__tests__/index.test.tsx +0 -342
  858. package/src/rbac/testing/index.tsx +0 -340
  859. package/src/rbac/types.ts +0 -343
  860. package/src/rbac/utils/__tests__/eventContext.test.ts +0 -428
  861. package/src/rbac/utils/__tests__/eventContext.unit.test.ts +0 -428
  862. package/src/rbac/utils/eventContext.ts +0 -83
  863. package/src/styles/__tests__/styles.unit.test.ts +0 -164
  864. package/src/styles/core.css +0 -422
  865. package/src/styles/index.ts +0 -51
  866. package/src/test-dom-cleanup.test.tsx +0 -38
  867. package/src/theming/__tests__/README.md +0 -335
  868. package/src/theming/__tests__/runtime.accessibility.test.ts +0 -474
  869. package/src/theming/__tests__/runtime.error.test.ts +0 -616
  870. package/src/theming/__tests__/runtime.integration.test.ts +0 -376
  871. package/src/theming/__tests__/runtime.performance.test.ts +0 -411
  872. package/src/theming/__tests__/runtime.unit.test.ts +0 -470
  873. package/src/theming/runtime.ts +0 -187
  874. package/src/types/__tests__/database.unit.test.ts +0 -489
  875. package/src/types/__tests__/guards.unit.test.ts +0 -146
  876. package/src/types/__tests__/index.unit.test.ts +0 -77
  877. package/src/types/__tests__/organisation.unit.test.ts +0 -713
  878. package/src/types/__tests__/rbac.unit.test.ts +0 -621
  879. package/src/types/__tests__/security.unit.test.ts +0 -347
  880. package/src/types/__tests__/supabase.unit.test.ts +0 -658
  881. package/src/types/__tests__/theme.unit.test.ts +0 -218
  882. package/src/types/__tests__/unified.unit.test.ts +0 -537
  883. package/src/types/__tests__/validation.unit.test.ts +0 -616
  884. package/src/types/database.ts +0 -472
  885. package/src/types/guards.ts +0 -30
  886. package/src/types/index.ts +0 -25
  887. package/src/types/organisation.ts +0 -184
  888. package/src/types/security.ts +0 -70
  889. package/src/types/supabase.ts +0 -166
  890. package/src/types/theme.ts +0 -6
  891. package/src/types/unified.ts +0 -262
  892. package/src/types/validation.ts +0 -164
  893. package/src/types/vitest-globals.d.ts +0 -43
  894. package/src/utils/__mocks__/supabaseMock.ts +0 -75
  895. package/src/utils/__mocks__/supabaseMock.tsx +0 -198
  896. package/src/utils/__tests__/appConfig.unit.test.ts +0 -55
  897. package/src/utils/__tests__/appNameResolver.unit.test.ts +0 -137
  898. package/src/utils/__tests__/audit.unit.test.ts +0 -69
  899. package/src/utils/__tests__/auth-utils.unit.test.ts +0 -70
  900. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +0 -317
  901. package/src/utils/__tests__/cn.unit.test.ts +0 -34
  902. package/src/utils/__tests__/deviceFingerprint.unit.test.ts +0 -480
  903. package/src/utils/__tests__/dynamicUtils.unit.test.ts +0 -322
  904. package/src/utils/__tests__/formatDate.unit.test.ts +0 -109
  905. package/src/utils/__tests__/formatting.unit.test.ts +0 -66
  906. package/src/utils/__tests__/index.unit.test.ts +0 -251
  907. package/src/utils/__tests__/lazyLoad.unit.test.tsx +0 -304
  908. package/src/utils/__tests__/organisationContext.unit.test.ts +0 -192
  909. package/src/utils/__tests__/performanceBudgets.unit.test.ts +0 -259
  910. package/src/utils/__tests__/permissionTypes.unit.test.ts +0 -250
  911. package/src/utils/__tests__/permissionUtils.unit.test.ts +0 -362
  912. package/src/utils/__tests__/sanitization.unit.test.ts +0 -346
  913. package/src/utils/__tests__/schemaUtils.unit.test.ts +0 -441
  914. package/src/utils/__tests__/secureDataAccess.unit.test.ts +0 -334
  915. package/src/utils/__tests__/secureErrors.unit.test.ts +0 -377
  916. package/src/utils/__tests__/secureStorage.unit.test.ts +0 -293
  917. package/src/utils/__tests__/security.unit.test.ts +0 -127
  918. package/src/utils/__tests__/securityMonitor.unit.test.ts +0 -280
  919. package/src/utils/__tests__/sessionTracking.unit.test.ts +0 -370
  920. package/src/utils/__tests__/validation.unit.test.ts +0 -84
  921. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -571
  922. package/src/utils/appConfig.ts +0 -47
  923. package/src/utils/appIdResolver.ts +0 -130
  924. package/src/utils/appNameResolver.ts +0 -190
  925. package/src/utils/audit.ts +0 -127
  926. package/src/utils/auth-utils.ts +0 -96
  927. package/src/utils/bundleAnalysis.ts +0 -129
  928. package/src/utils/cn.ts +0 -7
  929. package/src/utils/debugLogger.ts +0 -46
  930. package/src/utils/deviceFingerprint.ts +0 -215
  931. package/src/utils/dynamicUtils.ts +0 -105
  932. package/src/utils/formatting.ts +0 -77
  933. package/src/utils/index.ts +0 -145
  934. package/src/utils/lazyLoad.tsx +0 -44
  935. package/src/utils/organisationContext.ts +0 -135
  936. package/src/utils/performanceBenchmark.ts +0 -64
  937. package/src/utils/performanceBudgets.ts +0 -111
  938. package/src/utils/permissionTypes.ts +0 -37
  939. package/src/utils/permissionUtils.ts +0 -31
  940. package/src/utils/print/PrintDataProcessor.ts +0 -390
  941. package/src/utils/print/__tests__/PrintDataProcessor.unit.test.ts +0 -219
  942. package/src/utils/print/__tests__/usePrintOptimization.unit.test.tsx +0 -353
  943. package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +0 -397
  944. package/src/utils/print/index.ts +0 -29
  945. package/src/utils/print/types.ts +0 -196
  946. package/src/utils/print/usePrintOptimization.ts +0 -272
  947. package/src/utils/sanitization.ts +0 -264
  948. package/src/utils/schemaUtils.ts +0 -37
  949. package/src/utils/secureDataAccess.ts +0 -361
  950. package/src/utils/secureErrors.ts +0 -79
  951. package/src/utils/secureStorage.ts +0 -244
  952. package/src/utils/security.ts +0 -156
  953. package/src/utils/securityMonitor.ts +0 -45
  954. package/src/utils/sessionTracking.ts +0 -170
  955. package/src/utils/storage/README.md +0 -348
  956. package/src/utils/storage/__tests__/config.unit.test.ts +0 -206
  957. package/src/utils/storage/__tests__/helpers.unit.test.ts +0 -648
  958. package/src/utils/storage/__tests__/index.unit.test.ts +0 -167
  959. package/src/utils/storage/__tests__/types.unit.test.ts +0 -441
  960. package/src/utils/storage/config.ts +0 -100
  961. package/src/utils/storage/helpers.ts +0 -359
  962. package/src/utils/storage/index.ts +0 -36
  963. package/src/utils/storage/types.ts +0 -90
  964. package/src/utils/validation.ts +0 -111
  965. package/src/utils/validationUtils.ts +0 -120
  966. package/src/validation/__tests__/common.unit.test.ts +0 -101
  967. package/src/validation/__tests__/csrf.unit.test.ts +0 -302
  968. package/src/validation/__tests__/passwordSchema.unit.test.ts +0 -98
  969. package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +0 -466
  970. package/src/validation/common.ts +0 -53
  971. package/src/validation/csrf.ts +0 -214
  972. package/src/validation/index.ts +0 -43
  973. package/src/validation/passwordSchema.ts +0 -125
  974. package/src/validation/sanitization.ts +0 -96
  975. package/src/validation/schemaUtils.ts +0 -42
  976. package/src/validation/sqlInjectionProtection.ts +0 -242
  977. package/src/validation/user.ts +0 -34
  978. package/dist/{DataTable-EEUDXPE5.js.map → DataTable-2LB6HI6V.js.map} +0 -0
  979. package/dist/{api-ETQ6YJ3C.js.map → api-AIJ3IJX3.js.map} +0 -0
  980. package/dist/{appNameResolver-7GHF5ED2.js.map → audit-PD5L5ZSC.js.map} +0 -0
  981. package/dist/{audit-BUW3LMJB.js.map → chunk-DC5AMYBS.js.map} +0 -0
  982. package/dist/{validation-PM_iOaTI.d.ts → validation-D2-NNCCE.d.ts} +6 -6
@@ -1,6 +1,6 @@
1
- [@jmruthers/pace-core - v0.2.7](README.md) / Exports
1
+ [@jmruthers/pace-core - v0.4.01](README.md) / Exports
2
2
 
3
- # @jmruthers/pace-core - v0.2.7
3
+ # @jmruthers/pace-core - v0.4.01
4
4
 
5
5
  **`File`**
6
6
 
@@ -32,7 +32,6 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
32
32
  ### Classes
33
33
 
34
34
  - [ErrorBoundary](classes/ErrorBoundary.md)
35
- - [PublicErrorBoundary](classes/PublicErrorBoundary.md)
36
35
 
37
36
  ### Interfaces
38
37
 
@@ -44,9 +43,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
44
43
  - [DataTableToolbarButton](interfaces/DataTableToolbarButton.md)
45
44
  - [AggregateConfig](interfaces/AggregateConfig.md)
46
45
  - [EmptyStateConfig](interfaces/EmptyStateConfig.md)
47
- - [FileUploadProps](interfaces/FileUploadProps.md)
48
46
  - [FooterProps](interfaces/FooterProps.md)
49
- - [InactivityWarningModalProps](interfaces/InactivityWarningModalProps.md)
50
47
  - [InputProps](interfaces/InputProps.md)
51
48
  - [LabelProps](interfaces/LabelProps.md)
52
49
  - [LoginFormProps](interfaces/LoginFormProps.md)
@@ -54,23 +51,9 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
54
51
  - [NavigationMenuProps](interfaces/NavigationMenuProps.md)
55
52
  - [PaceAppLayoutProps](interfaces/PaceAppLayoutProps.md)
56
53
  - [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
54
  - [ToastProps](interfaces/ToastProps.md)
65
55
  - [ToastActionElement](interfaces/ToastActionElement.md)
66
56
  - [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
57
  - [EventContextType](interfaces/EventContextType.md)
75
58
  - [EventProviderProps](interfaces/EventProviderProps.md)
76
59
  - [UserEventAccess](interfaces/UserEventAccess.md)
@@ -86,15 +69,6 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
86
69
  - [OrganisationSecurityError](interfaces/OrganisationSecurityError.md)
87
70
  - [OrganisationContextType](interfaces/OrganisationContextType.md)
88
71
  - [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
72
 
99
73
  ### Type Aliases
100
74
 
@@ -104,10 +78,6 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
104
78
  ### Variables
105
79
 
106
80
  - [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
81
 
112
82
  ### Functions
113
83
 
@@ -138,12 +108,25 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
138
108
  - [DialogFooter](modules.md#dialogfooter)
139
109
  - [DialogTitle](modules.md#dialogtitle)
140
110
  - [DialogDescription](modules.md#dialogdescription)
111
+ - [DropdownMenu](modules.md#dropdownmenu)
112
+ - [DropdownMenuTrigger](modules.md#dropdownmenutrigger)
113
+ - [DropdownMenuGroup](modules.md#dropdownmenugroup)
114
+ - [DropdownMenuPortal](modules.md#dropdownmenuportal)
115
+ - [DropdownMenuSub](modules.md#dropdownmenusub)
116
+ - [DropdownMenuRadioGroup](modules.md#dropdownmenuradiogroup)
117
+ - [DropdownMenuSubTrigger](modules.md#dropdownmenusubtrigger)
118
+ - [DropdownMenuSubContent](modules.md#dropdownmenusubcontent)
119
+ - [DropdownMenuContent](modules.md#dropdownmenucontent)
120
+ - [DropdownMenuItem](modules.md#dropdownmenuitem)
121
+ - [DropdownMenuCheckboxItem](modules.md#dropdownmenucheckboxitem)
122
+ - [DropdownMenuRadioItem](modules.md#dropdownmenuradioitem)
123
+ - [DropdownMenuLabel](modules.md#dropdownmenulabel)
124
+ - [DropdownMenuSeparator](modules.md#dropdownmenuseparator)
125
+ - [DropdownMenuShortcut](modules.md#dropdownmenushortcut)
141
126
  - [EventSelector](modules.md#eventselector)
142
- - [FileUpload](modules.md#fileupload)
143
127
  - [Footer](modules.md#footer)
144
128
  - [Form](modules.md#form)
145
129
  - [Header](modules.md#header)
146
- - [InactivityWarningModal](modules.md#inactivitywarningmodal)
147
130
  - [Input](modules.md#input)
148
131
  - [Label](modules.md#label)
149
132
  - [LoadingSpinner](modules.md#loadingspinner)
@@ -155,24 +138,6 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
155
138
  - [PasswordChangeForm](modules.md#passwordchangeform)
156
139
  - [PasswordResetForm](modules.md#passwordresetform)
157
140
  - [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
141
  - [Select](modules.md#select)
177
142
  - [SelectTrigger](modules.md#selecttrigger)
178
143
  - [SelectValue](modules.md#selectvalue)
@@ -204,22 +169,9 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
204
169
  - [TooltipContent](modules.md#tooltipcontent)
205
170
  - [Tooltip](modules.md#tooltip)
206
171
  - [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
172
  - [useAppConfig](modules.md#useappconfig)
218
- - [useInactivityTracker](modules.md#useinactivitytracker)
219
173
  - [useOrganisationPermissions](modules.md#useorganisationpermissions)
220
174
  - [useOrganisationSecurity](modules.md#useorganisationsecurity)
221
- - [useStorage](modules.md#usestorage)
222
- - [useFileUpload](modules.md#usefileupload)
223
175
  - [useEvents](modules.md#useevents)
224
176
  - [EventProvider](modules.md#eventprovider)
225
177
  - [OrganisationProvider](modules.md#organisationprovider)
@@ -239,18 +191,6 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
239
191
  - [getCurrentAppId](modules.md#getcurrentappid)
240
192
  - [cn](modules.md#cn)
241
193
  - [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
194
 
255
195
  ## Type Aliases
256
196
 
@@ -307,62 +247,19 @@ Row identifier function type
307
247
 
308
248
  | Name | Type |
309
249
  | :------ | :------ |
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"`` |
250
+ | `base` | \{ `path`: ``"./base.css"`` = './base.css'; `description`: ``"Base styles, fonts, resets, and neutral tokens"`` = 'Base styles, fonts, resets, and neutral tokens' } |
251
+ | `base.path` | ``"./base.css"`` |
252
+ | `base.description` | ``"Base styles, fonts, resets, and neutral tokens"`` |
253
+ | `theme` | \{ `path`: ``"./theme.css"`` = './theme.css'; `description`: ``"Theme mappings for native Tailwind utilities"`` = 'Theme mappings for native Tailwind utilities' } |
254
+ | `theme.path` | ``"./theme.css"`` |
255
+ | `theme.description` | ``"Theme mappings for native Tailwind utilities"`` |
256
+ | `dark` | \{ `path`: ``"./dark.css"`` = './dark.css'; `description`: ``"Dark mode shade remap styles"`` = 'Dark mode shade remap styles' } |
257
+ | `dark.path` | ``"./dark.css"`` |
258
+ | `dark.description` | ``"Dark mode shade remap styles"`` |
313
259
 
314
260
  #### Defined in
315
261
 
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)
262
+ [packages/core/src/styles/index.ts:34](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/styles/index.ts#L34)
366
263
 
367
264
  ## Functions
368
265
 
@@ -614,7 +511,7 @@ ___
614
511
 
615
512
  | Name | Type |
616
513
  | :------ | :------ |
617
- | `props` | `HTMLAttributes`\<`HTMLElement`\> & `RefAttributes`\<`HTMLElement`\> |
514
+ | `props` | `HTMLAttributes`\<`HTMLDivElement`\> & `RefAttributes`\<`HTMLDivElement`\> |
618
515
 
619
516
  #### Returns
620
517
 
@@ -654,7 +551,7 @@ ___
654
551
 
655
552
  | Name | Type |
656
553
  | :------ | :------ |
657
- | `props` | `HTMLAttributes`\<`HTMLParagraphElement`\> & `RefAttributes`\<`HTMLParagraphElement`\> |
554
+ | `props` | `HTMLAttributes`\<`HTMLElement`\> & `RefAttributes`\<`HTMLElement`\> |
658
555
 
659
556
  #### Returns
660
557
 
@@ -688,17 +585,17 @@ ___
688
585
 
689
586
  ### DataTable
690
587
 
691
- ▸ **DataTable**\<`TData`\>(`props`): `Element`
588
+ ▸ **DataTable**\<`TData`\>(`«destructured»`): `Element`
692
589
 
693
- Enhanced DataTable with comprehensive performance optimizations
590
+ Enhanced DataTable with comprehensive performance optimizations and full backward compatibility
694
591
 
695
592
  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
593
+ - < 1,000 records: Standard rendering with optional client-side features
594
+ - 1,000 - 10,000 records: Client-side with virtual scrolling and chunking
595
+ - 10,000 - 50,000 records: Hybrid mode with intelligent data management
596
+ - > 50,000 records: Server-side processing with virtualization
700
597
 
701
- Features are configured through the unified `features` prop for maximum flexibility.
598
+ All existing DataTable APIs remain fully compatible. Performance features are additive.
702
599
 
703
600
  #### Type parameters
704
601
 
@@ -710,7 +607,7 @@ Features are configured through the unified `features` prop for maximum flexibil
710
607
 
711
608
  | Name | Type |
712
609
  | :------ | :------ |
713
- | `props` | [`DataTableProps`](interfaces/DataTableProps.md)\<`TData`\> |
610
+ | `«destructured»` | [`DataTableProps`](interfaces/DataTableProps.md)\<`TData`\> |
714
611
 
715
612
  #### Returns
716
613
 
@@ -718,7 +615,7 @@ Features are configured through the unified `features` prop for maximum flexibil
718
615
 
719
616
  #### Defined in
720
617
 
721
- [packages/core/src/components/DataTable/DataTable.tsx:412](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/DataTable.tsx#L412)
618
+ [packages/core/src/components/DataTable/DataTable.tsx:382](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/DataTable.tsx#L382)
722
619
 
723
620
  ___
724
621
 
@@ -739,7 +636,7 @@ ___
739
636
 
740
637
  #### Defined in
741
638
 
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)
639
+ [packages/core/src/components/Dialog/Dialog.tsx:248](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L248)
743
640
 
744
641
  ___
745
642
 
@@ -759,7 +656,7 @@ ___
759
656
 
760
657
  #### Defined in
761
658
 
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)
659
+ [packages/core/src/components/Dialog/Dialog.tsx:249](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L249)
763
660
 
764
661
  ___
765
662
 
@@ -780,7 +677,7 @@ ___
780
677
 
781
678
  #### Defined in
782
679
 
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)
680
+ [packages/core/src/components/Dialog/Dialog.tsx:250](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L250)
784
681
 
785
682
  ___
786
683
 
@@ -800,7 +697,7 @@ ___
800
697
 
801
698
  #### Defined in
802
699
 
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)
700
+ [packages/core/src/components/Dialog/Dialog.tsx:251](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L251)
804
701
 
805
702
  ___
806
703
 
@@ -820,7 +717,7 @@ ___
820
717
 
821
718
  #### Defined in
822
719
 
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)
720
+ [packages/core/src/components/Dialog/Dialog.tsx:254](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L254)
824
721
 
825
722
  ___
826
723
 
@@ -863,7 +760,7 @@ JSX.Element - The semantic dialog content with overlay and optional close button
863
760
 
864
761
  #### Defined in
865
762
 
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)
763
+ [packages/core/src/components/Dialog/Dialog.tsx:397](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L397)
867
764
 
868
765
  ___
869
766
 
@@ -897,7 +794,7 @@ JSX.Element - The dialog header container using semantic <header> element
897
794
 
898
795
  #### Defined in
899
796
 
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)
797
+ [packages/core/src/components/Dialog/Dialog.tsx:517](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L517)
901
798
 
902
799
  ___
903
800
 
@@ -907,7 +804,6 @@ ___
907
804
 
908
805
  DialogBody component
909
806
  Semantic main content area for dialog body content with scrollable functionality
910
- Supports both React children and safe HTML content rendering
911
807
 
912
808
  #### Parameters
913
809
 
@@ -924,24 +820,17 @@ JSX.Element - The scrollable dialog body container using semantic <main> element
924
820
  **`Example`**
925
821
 
926
822
  ```tsx
927
- // Using React children
928
823
  <DialogBody>
929
824
  <section className="space-y-4">
930
825
  <h4>Content Title</h4>
931
826
  <p>Long content that will scroll...</p>
932
827
  </section>
933
828
  </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
829
  ```
941
830
 
942
831
  #### Defined in
943
832
 
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)
833
+ [packages/core/src/components/Dialog/Dialog.tsx:550](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L550)
945
834
 
946
835
  ___
947
836
 
@@ -975,7 +864,7 @@ JSX.Element - The dialog footer container using semantic <footer> element
975
864
 
976
865
  #### Defined in
977
866
 
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)
867
+ [packages/core/src/components/Dialog/Dialog.tsx:593](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L593)
979
868
 
980
869
  ___
981
870
 
@@ -995,7 +884,7 @@ ___
995
884
 
996
885
  #### Defined in
997
886
 
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)
887
+ [packages/core/src/components/Dialog/Dialog.tsx:609](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L609)
999
888
 
1000
889
  ___
1001
890
 
@@ -1015,78 +904,60 @@ ___
1015
904
 
1016
905
  #### Defined in
1017
906
 
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)
907
+ [packages/core/src/components/Dialog/Dialog.tsx:624](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Dialog/Dialog.tsx#L624)
1019
908
 
1020
909
  ___
1021
910
 
1022
- ### EventSelector
1023
-
1024
- ▸ **EventSelector**(`«destructured»`): ``null`` \| `Element`
1025
-
1026
- EventSelector component for selecting events with built-in access control
911
+ ### DropdownMenu
1027
912
 
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
913
+ **DropdownMenu**(`props`, `deprecatedLegacyContext?`): `ReactNode`
1034
914
 
1035
915
  #### Parameters
1036
916
 
1037
- | Name | Type |
1038
- | :------ | :------ |
1039
- | `«destructured»` | `EventSelectorProps` |
917
+ | Name | Type | Description |
918
+ | :------ | :------ | :------ |
919
+ | `props` | `DropdownMenuProps` | - |
920
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
1040
921
 
1041
922
  #### Returns
1042
923
 
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
- ```
924
+ `ReactNode`
1054
925
 
1055
926
  #### Defined in
1056
927
 
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)
928
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:114](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L114)
1058
929
 
1059
930
  ___
1060
931
 
1061
- ### FileUpload
932
+ ### DropdownMenuTrigger
1062
933
 
1063
- ▸ **FileUpload**(`«destructured»`): `Element`
934
+ ▸ **DropdownMenuTrigger**(`props`): `ReactNode`
1064
935
 
1065
936
  #### Parameters
1066
937
 
1067
938
  | Name | Type |
1068
939
  | :------ | :------ |
1069
- | `«destructured»` | [`FileUploadProps`](interfaces/FileUploadProps.md) |
940
+ | `props` | `DropdownMenuTriggerProps` & `RefAttributes`\<`HTMLButtonElement`\> |
1070
941
 
1071
942
  #### Returns
1072
943
 
1073
- `Element`
944
+ `ReactNode`
1074
945
 
1075
946
  #### Defined in
1076
947
 
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)
948
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:116](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L116)
1078
949
 
1079
950
  ___
1080
951
 
1081
- ### Footer
952
+ ### DropdownMenuGroup
1082
953
 
1083
- ▸ **Footer**(`props`): `ReactNode`
954
+ ▸ **DropdownMenuGroup**(`props`): `ReactNode`
1084
955
 
1085
956
  #### Parameters
1086
957
 
1087
958
  | Name | Type |
1088
959
  | :------ | :------ |
1089
- | `props` | [`FooterProps`](interfaces/FooterProps.md) |
960
+ | `props` | `DropdownMenuGroupProps` & `RefAttributes`\<`HTMLDivElement`\> |
1090
961
 
1091
962
  #### Returns
1092
963
 
@@ -1094,1107 +965,876 @@ ___
1094
965
 
1095
966
  #### Defined in
1096
967
 
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)
968
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:118](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L118)
1098
969
 
1099
970
  ___
1100
971
 
1101
- ### Form
1102
-
1103
- ▸ **Form**\<`TFieldValues`\>(`props`): `Element`
1104
-
1105
- Form component with validation and React Hook Form integration
1106
-
1107
- #### Type parameters
972
+ ### DropdownMenuPortal
1108
973
 
1109
- | Name | Type | Description |
1110
- | :------ | :------ | :------ |
1111
- | `TFieldValues` | extends `FieldValues` = `FieldValues` | The type of form field values |
974
+ **DropdownMenuPortal**(`props`, `deprecatedLegacyContext?`): `ReactNode`
1112
975
 
1113
976
  #### Parameters
1114
977
 
1115
978
  | Name | Type | Description |
1116
979
  | :------ | :------ | :------ |
1117
- | `props` | `FormProps`\<`TFieldValues`\> | Form configuration and handlers |
980
+ | `props` | `DropdownMenuPortalProps` | - |
981
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
1118
982
 
1119
983
  #### Returns
1120
984
 
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
- ```
985
+ `ReactNode`
1139
986
 
1140
987
  #### Defined in
1141
988
 
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)
989
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:120](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L120)
1143
990
 
1144
991
  ___
1145
992
 
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.
993
+ ### DropdownMenuSub
1155
994
 
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
995
+ ▸ **DropdownMenuSub**(`props`, `deprecatedLegacyContext?`): `ReactNode`
1166
996
 
1167
997
  #### Parameters
1168
998
 
1169
999
  | Name | Type | Description |
1170
1000
  | :------ | :------ | :------ |
1171
- | `props` | `HeaderProps` | Header configuration including logo, navigation, user settings, and custom content |
1001
+ | `props` | `DropdownMenuSubProps` | - |
1002
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
1172
1003
 
1173
1004
  #### Returns
1174
1005
 
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
- ];
1006
+ `ReactNode`
1195
1007
 
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
- ```
1008
+ #### Defined in
1209
1009
 
1210
- **`Example`**
1010
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:122](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L122)
1211
1011
 
1212
- Header with custom actions:
1213
- ```tsx
1214
- import { Header, Button } from '@jmruthers/pace-core';
1012
+ ___
1215
1013
 
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
- );
1014
+ ### DropdownMenuRadioGroup
1223
1015
 
1224
- return (
1225
- <Header
1226
- logoUrl="/logo.svg"
1227
- navItems={navigationItems}
1228
- actions={customActions}
1229
- user={currentUser}
1230
- onSignOut={handleSignOut}
1231
- />
1232
- );
1233
- }
1234
- ```
1016
+ **DropdownMenuRadioGroup**(`props`): `ReactNode`
1235
1017
 
1236
- **`Example`**
1018
+ #### Parameters
1237
1019
 
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
- ```
1020
+ | Name | Type |
1021
+ | :------ | :------ |
1022
+ | `props` | `DropdownMenuRadioGroupProps` & `RefAttributes`\<`HTMLDivElement`\> |
1252
1023
 
1253
- **`Since`**
1024
+ #### Returns
1254
1025
 
1255
- 0.1.0
1026
+ `ReactNode`
1256
1027
 
1257
1028
  #### Defined in
1258
1029
 
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)
1030
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:124](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L124)
1260
1031
 
1261
1032
  ___
1262
1033
 
1263
- ### InactivityWarningModal
1034
+ ### DropdownMenuSubTrigger
1264
1035
 
1265
- ▸ **InactivityWarningModal**(`«destructured»`): `Element`
1036
+ ▸ **DropdownMenuSubTrigger**(`props`): `ReactNode`
1266
1037
 
1267
1038
  #### Parameters
1268
1039
 
1269
1040
  | Name | Type |
1270
1041
  | :------ | :------ |
1271
- | `«destructured»` | [`InactivityWarningModalProps`](interfaces/InactivityWarningModalProps.md) |
1042
+ | `props` | `Omit`\<`DropdownMenuSubTriggerProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & \{ `inset?`: `boolean` } & `RefAttributes`\<`HTMLDivElement`\> |
1272
1043
 
1273
1044
  #### Returns
1274
1045
 
1275
- `Element`
1046
+ `ReactNode`
1276
1047
 
1277
1048
  #### Defined in
1278
1049
 
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)
1050
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:126](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L126)
1280
1051
 
1281
1052
  ___
1282
1053
 
1283
- ### Input
1054
+ ### DropdownMenuSubContent
1284
1055
 
1285
- ▸ **Input**(`props`): `ReactNode`
1056
+ ▸ **DropdownMenuSubContent**(`props`): `ReactNode`
1286
1057
 
1287
- Input component
1288
- A flexible, accessible input component with multiple variants and sizes
1058
+ DropdownMenuSubContent component
1059
+ The content container for dropdown menu sub-items
1289
1060
 
1290
1061
  #### Parameters
1291
1062
 
1292
1063
  | Name | Type | Description |
1293
1064
  | :------ | :------ | :------ |
1294
- | `props` | [`InputProps`](interfaces/InputProps.md) & `RefAttributes`\<`HTMLInputElement`\> | Input configuration and styling |
1065
+ | `props` | `Omit`\<`DropdownMenuSubContentProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLDivElement`\> | Content configuration and styling |
1295
1066
 
1296
1067
  #### Returns
1297
1068
 
1298
1069
  `ReactNode`
1299
1070
 
1300
- JSX.Element - The rendered input element
1071
+ JSX.Element - The dropdown menu sub-content container
1301
1072
 
1302
1073
  **`Example`**
1303
1074
 
1304
1075
  ```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
- />
1076
+ <DropdownMenuSubContent>
1077
+ <DropdownMenuItem>Option 1</DropdownMenuItem>
1078
+ <DropdownMenuItem>Option 2</DropdownMenuItem>
1079
+ </DropdownMenuSubContent>
1321
1080
  ```
1322
1081
 
1323
1082
  #### Defined in
1324
1083
 
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)
1084
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:163](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L163)
1326
1085
 
1327
1086
  ___
1328
1087
 
1329
- ### Label
1088
+ ### DropdownMenuContent
1330
1089
 
1331
- ▸ **Label**(`props`): `ReactNode`
1090
+ ▸ **DropdownMenuContent**(`props`): `ReactNode`
1332
1091
 
1333
- Label component
1334
- An accessible label with helper text and error state support
1092
+ DropdownMenuContent component
1093
+ The main content container for dropdown menu items
1335
1094
 
1336
1095
  #### Parameters
1337
1096
 
1338
1097
  | Name | Type | Description |
1339
1098
  | :------ | :------ | :------ |
1340
- | `props` | [`LabelProps`](interfaces/LabelProps.md) & `RefAttributes`\<`HTMLLabelElement`\> | Label configuration and styling |
1099
+ | `props` | `Omit`\<`DropdownMenuContentProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLDivElement`\> | Content configuration and styling |
1341
1100
 
1342
1101
  #### Returns
1343
1102
 
1344
1103
  `ReactNode`
1345
1104
 
1346
- JSX.Element - The rendered label with optional helper text and errors
1105
+ JSX.Element - The dropdown menu content container
1347
1106
 
1348
1107
  **`Example`**
1349
1108
 
1350
1109
  ```tsx
1351
- <Label htmlFor="email" required helperText="We'll never share your email">
1352
- Email Address
1353
- </Label>
1110
+ <DropdownMenuContent>
1111
+ <DropdownMenuItem>Profile</DropdownMenuItem>
1112
+ <DropdownMenuItem>Settings</DropdownMenuItem>
1113
+ </DropdownMenuContent>
1354
1114
  ```
1355
1115
 
1356
1116
  #### Defined in
1357
1117
 
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)
1118
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:194](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L194)
1359
1119
 
1360
1120
  ___
1361
1121
 
1362
- ### LoadingSpinner
1122
+ ### DropdownMenuItem
1363
1123
 
1364
- ▸ **LoadingSpinner**(`props`, `deprecatedLegacyContext?`): `ReactNode`
1124
+ ▸ **DropdownMenuItem**(`props`): `ReactNode`
1365
1125
 
1366
- LoadingSpinner component
1367
- A simple, accessible loading spinner for indicating loading states
1126
+ DropdownMenuItem component
1127
+ Individual menu item within the dropdown
1368
1128
 
1369
1129
  #### Parameters
1370
1130
 
1371
1131
  | Name | Type | Description |
1372
1132
  | :------ | :------ | :------ |
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) |
1133
+ | `props` | `Omit`\<`DropdownMenuItemProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & \{ `inset?`: `boolean` } & `RefAttributes`\<`HTMLDivElement`\> | Item configuration and styling |
1375
1134
 
1376
1135
  #### Returns
1377
1136
 
1378
1137
  `ReactNode`
1379
1138
 
1380
- JSX.Element - The rendered loading spinner
1139
+ JSX.Element - The dropdown menu item
1381
1140
 
1382
1141
  **`Example`**
1383
1142
 
1384
1143
  ```tsx
1385
- <LoadingSpinner size="lg" className="text-main-500" />
1144
+ <DropdownMenuItem onClick={() => console.log('clicked')}>
1145
+ Profile
1146
+ </DropdownMenuItem>
1386
1147
  ```
1387
1148
 
1388
1149
  #### Defined in
1389
1150
 
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)
1151
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:227](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L227)
1391
1152
 
1392
1153
  ___
1393
1154
 
1394
- ### LoginForm
1395
-
1396
- ▸ **LoginForm**(`props`): `ReactNode`
1155
+ ### DropdownMenuCheckboxItem
1397
1156
 
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.
1157
+ **DropdownMenuCheckboxItem**(`props`): `ReactNode`
1401
1158
 
1402
1159
  #### Parameters
1403
1160
 
1404
- | Name | Type | Description |
1405
- | :------ | :------ | :------ |
1406
- | `props` | [`LoginFormProps`](interfaces/LoginFormProps.md) | Login form configuration and handlers |
1161
+ | Name | Type |
1162
+ | :------ | :------ |
1163
+ | `props` | `Omit`\<`DropdownMenuCheckboxItemProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLDivElement`\> |
1407
1164
 
1408
1165
  #### Returns
1409
1166
 
1410
1167
  `ReactNode`
1411
1168
 
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
1169
  #### Defined in
1426
1170
 
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)
1171
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:245](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L245)
1428
1172
 
1429
1173
  ___
1430
1174
 
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.
1175
+ ### DropdownMenuRadioItem
1439
1176
 
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)
1177
+ ▸ **DropdownMenuRadioItem**(`props`): `ReactNode`
1449
1178
 
1450
1179
  #### Parameters
1451
1180
 
1452
- | Name | Type | Description |
1453
- | :------ | :------ | :------ |
1454
- | `props` | [`NavigationMenuProps`](interfaces/NavigationMenuProps.md) & `RefAttributes`\<`HTMLDivElement`\> | NavigationMenu component props including items, mode, navigation handlers, and styling options |
1181
+ | Name | Type |
1182
+ | :------ | :------ |
1183
+ | `props` | `Omit`\<`DropdownMenuRadioItemProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLDivElement`\> |
1455
1184
 
1456
1185
  #### Returns
1457
1186
 
1458
1187
  `ReactNode`
1459
1188
 
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
- ];
1189
+ #### Defined in
1479
1190
 
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
- ```
1191
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:268](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L268)
1492
1192
 
1493
- **`Example`**
1193
+ ___
1494
1194
 
1495
- Hierarchical navigation with nested items:
1496
- ```tsx
1497
- import { NavigationMenu } from '@jmruthers/pace-core';
1195
+ ### DropdownMenuLabel
1498
1196
 
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
- ];
1197
+ **DropdownMenuLabel**(`props`): `ReactNode`
1522
1198
 
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
- ```
1199
+ #### Parameters
1538
1200
 
1539
- **`Example`**
1201
+ | Name | Type |
1202
+ | :------ | :------ |
1203
+ | `props` | `Omit`\<`DropdownMenuLabelProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & \{ `inset?`: `boolean` } & `RefAttributes`\<`HTMLDivElement`\> |
1540
1204
 
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';
1205
+ #### Returns
1546
1206
 
1547
- function AuthenticatedNavigation() {
1548
- const navigate = useNavigate();
1549
- const location = useLocation();
1550
- const { hasRole, hasPermission } = useUnifiedAuth();
1207
+ `ReactNode`
1551
1208
 
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
- ];
1209
+ #### Defined in
1582
1210
 
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
- ```
1211
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:290](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L290)
1597
1212
 
1598
- **`Example`**
1213
+ ___
1599
1214
 
1600
- Custom navigation with external links and actions:
1601
- ```tsx
1602
- import { NavigationMenu } from '@jmruthers/pace-core';
1215
+ ### DropdownMenuSeparator
1603
1216
 
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
- };
1217
+ **DropdownMenuSeparator**(`props`): `ReactNode`
1617
1218
 
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
- ];
1219
+ #### Parameters
1623
1220
 
1624
- return (
1625
- <NavigationMenu
1626
- items={navItems}
1627
- mode="dropdown"
1628
- onNavigate={handleNavigation}
1629
- buttonText="Menu"
1630
- disabled={false}
1631
- />
1632
- );
1633
- }
1634
- ```
1221
+ | Name | Type |
1222
+ | :------ | :------ |
1223
+ | `props` | `Omit`\<`DropdownMenuSeparatorProps` & `RefAttributes`\<`HTMLDivElement`\>, ``"ref"``\> & `RefAttributes`\<`HTMLDivElement`\> |
1635
1224
 
1636
- **`Since`**
1225
+ #### Returns
1637
1226
 
1638
- 0.1.0
1227
+ `ReactNode`
1639
1228
 
1640
1229
  #### Defined in
1641
1230
 
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)
1231
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:308](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L308)
1643
1232
 
1644
1233
  ___
1645
1234
 
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
1235
+ ### DropdownMenuShortcut
1658
1236
 
1659
- Security: Only shows organisations the user has valid access to
1237
+ ▸ **DropdownMenuShortcut**(`«destructured»`): `Element`
1660
1238
 
1661
1239
  #### Parameters
1662
1240
 
1663
1241
  | Name | Type |
1664
1242
  | :------ | :------ |
1665
- | `«destructured»` | `OrganisationSelectorProps` |
1243
+ | `«destructured»` | `HTMLAttributes`\<`HTMLSpanElement`\> |
1666
1244
 
1667
1245
  #### Returns
1668
1246
 
1669
- ``null`` \| `Element`
1247
+ `Element`
1670
1248
 
1671
1249
  #### Defined in
1672
1250
 
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)
1251
+ [packages/core/src/components/DropdownMenu/DropdownMenu.tsx:320](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DropdownMenu/DropdownMenu.tsx#L320)
1674
1252
 
1675
1253
  ___
1676
1254
 
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.
1255
+ ### EventSelector
1683
1256
 
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.
1257
+ ▸ **EventSelector**(`«destructured»`): ``null`` \| `Element`
1686
1258
 
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.
1259
+ EventSelector component for selecting events with built-in access control
1690
1260
 
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
1261
+ This component provides secure event selection with:
1262
+ - Database integration via rbac_event_app_roles table
1263
+ - Auto-selection of next upcoming event by date
1264
+ - Cross-device sync via Supabase user session metadata
1265
+ - localStorage fallback for offline scenarios
1266
+ - Comprehensive error handling and user feedback
1702
1267
 
1703
1268
  #### Parameters
1704
1269
 
1705
- | Name | Type | Description |
1706
- | :------ | :------ | :------ |
1707
- | `props` | [`PaceAppLayoutProps`](interfaces/PaceAppLayoutProps.md) | Layout configuration including app name for branding and permission settings |
1270
+ | Name | Type |
1271
+ | :------ | :------ |
1272
+ | `«destructured»` | `EventSelectorProps` |
1708
1273
 
1709
1274
  #### Returns
1710
1275
 
1711
- `Element`
1276
+ ``null`` \| `Element`
1712
1277
 
1713
- React element with complete application layout structure and permission enforcement
1278
+ **`Component`**
1714
1279
 
1715
1280
  **`Example`**
1716
1281
 
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
- />
1282
+ ```ts
1283
+ <UnifiedAuthProvider supabaseClient={supabase} appName="PACE">
1284
+ <EventSelector onEventChange={(event) => console.log(event)} />
1285
+ </UnifiedAuthProvider>
1866
1286
  ```
1867
1287
 
1868
1288
  #### Defined in
1869
1289
 
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)
1290
+ [packages/core/src/components/EventSelector/EventSelector.tsx:129](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/EventSelector/EventSelector.tsx#L129)
1871
1291
 
1872
1292
  ___
1873
1293
 
1874
- ### PasswordChangeForm
1294
+ ### Footer
1875
1295
 
1876
- ▸ **PasswordChangeForm**(`«destructured»`): `Element`
1296
+ ▸ **Footer**(`props`): `ReactNode`
1877
1297
 
1878
1298
  #### Parameters
1879
1299
 
1880
1300
  | Name | Type |
1881
1301
  | :------ | :------ |
1882
- | `«destructured»` | `PasswordChangeFormProps` |
1302
+ | `props` | [`FooterProps`](interfaces/FooterProps.md) |
1883
1303
 
1884
1304
  #### Returns
1885
1305
 
1886
- `Element`
1306
+ `ReactNode`
1887
1307
 
1888
1308
  #### Defined in
1889
1309
 
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)
1310
+ [packages/core/src/components/Footer/Footer.tsx:196](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Footer/Footer.tsx#L196)
1891
1311
 
1892
1312
  ___
1893
1313
 
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)
1314
+ ### Form
1911
1315
 
1912
- ___
1316
+ ▸ **Form**\<`TFieldValues`\>(`props`): `Element`
1913
1317
 
1914
- ### Progress
1318
+ Form component with validation and React Hook Form integration
1915
1319
 
1916
- **Progress**(`props`): `ReactNode`
1320
+ #### Type parameters
1917
1321
 
1918
- Progress component
1919
- An accessible progress bar with smooth animations
1322
+ | Name | Type | Description |
1323
+ | :------ | :------ | :------ |
1324
+ | `TFieldValues` | extends `FieldValues` = `FieldValues` | The type of form field values |
1920
1325
 
1921
1326
  #### Parameters
1922
1327
 
1923
1328
  | Name | Type | Description |
1924
1329
  | :------ | :------ | :------ |
1925
- | `props` | `ProgressProps` & `RefAttributes`\<`HTMLDivElement`\> | Progress configuration and styling |
1330
+ | `props` | `FormProps`\<`TFieldValues`\> | Form configuration and handlers |
1926
1331
 
1927
1332
  #### Returns
1928
1333
 
1929
- `ReactNode`
1334
+ `Element`
1930
1335
 
1931
- JSX.Element - The rendered progress bar
1336
+ JSX.Element - The rendered form with FormProvider context
1932
1337
 
1933
1338
  **`Example`**
1934
1339
 
1935
1340
  ```tsx
1936
- <Progress value={75} max={100} />
1341
+ <Form
1342
+ schema={userSchema}
1343
+ defaultValues={{ name: "", email: "" }}
1344
+ onSubmit={handleSubmit}
1345
+ mode="onBlur"
1346
+ >
1347
+ <FormField name="name" label="Name" />
1348
+ <FormField name="email" label="Email" />
1349
+ <Button type="submit">Submit</Button>
1350
+ </Form>
1937
1351
  ```
1938
1352
 
1939
1353
  #### Defined in
1940
1354
 
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)
1355
+ [packages/core/src/components/Form/Form.tsx:142](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Form/Form.tsx#L142)
1942
1356
 
1943
1357
  ___
1944
1358
 
1945
- ### EventLogo
1359
+ ### Header
1360
+
1361
+ ▸ **Header**(`props`): `Element`
1946
1362
 
1947
- **EventLogo**(`props`): ``null`` \| `Element`
1363
+ Header component for application layouts with comprehensive navigation, user management,
1364
+ and customizable branding support.
1948
1365
 
1949
- Component for displaying event logos with fallback to initials
1366
+ A flexible header component that supports various configurations including custom logos,
1367
+ navigation menus, user authentication, event selection, and custom actions.
1950
1368
 
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.
1369
+ Features:
1370
+ - Customizable logo (URL or custom component)
1371
+ - Navigation menu integration with highlighting
1372
+ - User menu with authentication and password management
1373
+ - Event selector for multi-tenant applications
1374
+ - Custom actions support
1375
+ - Responsive design with mobile considerations
1376
+ - Accessibility compliant with proper ARIA attributes
1377
+ - Backdrop blur effects for modern UI
1378
+ - Flexible layout with configurable sections
1954
1379
 
1955
1380
  #### Parameters
1956
1381
 
1957
1382
  | Name | Type | Description |
1958
1383
  | :------ | :------ | :------ |
1959
- | `props` | [`EventLogoProps`](interfaces/EventLogoProps.md) | Logo configuration and styling |
1384
+ | `props` | `HeaderProps` | Header configuration including logo, navigation, user settings, and custom content |
1960
1385
 
1961
1386
  #### Returns
1962
1387
 
1963
- ``null`` \| `Element`
1388
+ `Element`
1964
1389
 
1965
- React element with event logo or fallback
1390
+ React element with complete header functionality
1966
1391
 
1967
- #### Defined in
1392
+ **`Example`**
1968
1393
 
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)
1394
+ Basic header with logo and navigation:
1395
+ ```tsx
1396
+ import { Header } from '@jmruthers/pace-core';
1397
+ import { useNavigate, useLocation } from 'react-router-dom';
1970
1398
 
1971
- ___
1399
+ function AppHeader() {
1400
+ const navigate = useNavigate();
1401
+ const location = useLocation();
1972
1402
 
1973
- ### EventLogoCompact
1403
+ const navItems = [
1404
+ { id: 'dashboard', label: 'Dashboard', href: '/dashboard' },
1405
+ { id: 'meals', label: 'Meals', href: '/meals' },
1406
+ { id: 'settings', label: 'Settings', href: '/settings' }
1407
+ ];
1974
1408
 
1975
- **EventLogoCompact**(`props`): `Element`
1409
+ return (
1410
+ <Header
1411
+ logoUrl="/company-logo.svg"
1412
+ logoAlt="My Company"
1413
+ navItems={navItems}
1414
+ currentPath={location.pathname}
1415
+ onNavigate={(item) => navigate(item.href)}
1416
+ user={currentUser}
1417
+ onSignOut={handleSignOut}
1418
+ />
1419
+ );
1420
+ }
1421
+ ```
1976
1422
 
1977
- Compact event logo for small spaces
1423
+ **`Example`**
1978
1424
 
1979
- #### Parameters
1425
+ Header with custom actions:
1426
+ ```tsx
1427
+ import { Header, Button } from '@jmruthers/pace-core';
1980
1428
 
1981
- | Name | Type |
1982
- | :------ | :------ |
1983
- | `props` | [`EventLogoProps`](interfaces/EventLogoProps.md) |
1429
+ function HeaderWithActions() {
1430
+ const customActions = (
1431
+ <div className="flex items-center gap-2">
1432
+ <Button variant="outline" size="sm">Export</Button>
1433
+ <Button size="sm">New Item</Button>
1434
+ </div>
1435
+ );
1984
1436
 
1985
- #### Returns
1437
+ return (
1438
+ <Header
1439
+ logoUrl="/logo.svg"
1440
+ navItems={navigationItems}
1441
+ actions={customActions}
1442
+ user={currentUser}
1443
+ onSignOut={handleSignOut}
1444
+ />
1445
+ );
1446
+ }
1447
+ ```
1986
1448
 
1987
- `Element`
1449
+ **`Example`**
1450
+
1451
+ Minimal header configuration:
1452
+ ```tsx
1453
+ function MinimalHeader() {
1454
+ return (
1455
+ <Header
1456
+ logoUrl="/simple-logo.svg"
1457
+ logoAlt="Simple App"
1458
+ showEventSelector={false}
1459
+ user={currentUser}
1460
+ onSignOut={handleSignOut}
1461
+ />
1462
+ );
1463
+ }
1464
+ ```
1465
+
1466
+ **`Since`**
1467
+
1468
+ 0.1.0
1988
1469
 
1989
1470
  #### Defined in
1990
1471
 
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)
1472
+ [packages/core/src/components/Header/Header.tsx:219](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Header/Header.tsx#L219)
1992
1473
 
1993
1474
  ___
1994
1475
 
1995
- ### EventLogoLarge
1476
+ ### Input
1996
1477
 
1997
- ▸ **EventLogoLarge**(`props`): `Element`
1478
+ ▸ **Input**(`props`): `ReactNode`
1998
1479
 
1999
- Large event logo for prominent display
1480
+ Input component
1481
+ A flexible, accessible input component with multiple variants and sizes
2000
1482
 
2001
1483
  #### Parameters
2002
1484
 
2003
- | Name | Type |
2004
- | :------ | :------ |
2005
- | `props` | [`EventLogoProps`](interfaces/EventLogoProps.md) |
1485
+ | Name | Type | Description |
1486
+ | :------ | :------ | :------ |
1487
+ | `props` | [`InputProps`](interfaces/InputProps.md) & `RefAttributes`\<`HTMLInputElement`\> | Input configuration and styling |
2006
1488
 
2007
1489
  #### Returns
2008
1490
 
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
1491
+ `ReactNode`
2018
1492
 
2019
- **useErrorBoundary**(): `Object`
1493
+ JSX.Element - The rendered input element
2020
1494
 
2021
- Hook for accessing error boundary state
2022
- Useful for components that need to know if they're inside an error boundary
1495
+ **`Example`**
2023
1496
 
2024
- #### Returns
1497
+ ```tsx
1498
+ // Basic input
1499
+ <Input placeholder="Enter your name" />
2025
1500
 
2026
- `Object`
1501
+ // Input with error state
1502
+ <Input
1503
+ placeholder="Email"
1504
+ type="email"
1505
+ error={true}
1506
+ />
2027
1507
 
2028
- | Name | Type |
2029
- | :------ | :------ |
2030
- | `captureError` | (`error`: `Error`) => `void` |
2031
- | `resetError` | () => `void` |
1508
+ // Large input with destructive variant
1509
+ <Input
1510
+ variant="destructive"
1511
+ size="lg"
1512
+ placeholder="Error input"
1513
+ />
1514
+ ```
2032
1515
 
2033
1516
  #### Defined in
2034
1517
 
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)
1518
+ [packages/core/src/components/Input/Input.tsx:104](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Input/Input.tsx#L104)
2036
1519
 
2037
1520
  ___
2038
1521
 
2039
- ### DefaultPublicErrorFallback
1522
+ ### Label
2040
1523
 
2041
- ▸ **DefaultPublicErrorFallback**(`«destructured»`): `Element`
1524
+ ▸ **Label**(`props`): `ReactNode`
2042
1525
 
2043
- Default error fallback component
1526
+ Label component
1527
+ An accessible label with helper text and error state support
2044
1528
 
2045
1529
  #### Parameters
2046
1530
 
2047
- | Name | Type |
2048
- | :------ | :------ |
2049
- | `«destructured»` | [`PublicErrorBoundaryState`](interfaces/PublicErrorBoundaryState.md) |
1531
+ | Name | Type | Description |
1532
+ | :------ | :------ | :------ |
1533
+ | `props` | [`LabelProps`](interfaces/LabelProps.md) & `RefAttributes`\<`HTMLLabelElement`\> | Label configuration and styling |
2050
1534
 
2051
1535
  #### Returns
2052
1536
 
2053
- `Element`
1537
+ `ReactNode`
1538
+
1539
+ JSX.Element - The rendered label with optional helper text and errors
1540
+
1541
+ **`Example`**
1542
+
1543
+ ```tsx
1544
+ <Label htmlFor="email" required helperText="We'll never share your email">
1545
+ Email Address
1546
+ </Label>
1547
+ ```
2054
1548
 
2055
1549
  #### Defined in
2056
1550
 
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)
1551
+ [packages/core/src/components/Label/Label.tsx:120](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Label/Label.tsx#L120)
2058
1552
 
2059
1553
  ___
2060
1554
 
2061
- ### PublicLoadingSpinner
2062
-
2063
- ▸ **PublicLoadingSpinner**(`props`): `Element`
1555
+ ### LoadingSpinner
2064
1556
 
2065
- Loading spinner component for public pages
1557
+ **LoadingSpinner**(`props`, `deprecatedLegacyContext?`): `ReactNode`
2066
1558
 
2067
- This component displays a consistent loading state with optional
2068
- branding and messaging for public pages.
1559
+ LoadingSpinner component
1560
+ A simple, accessible loading spinner for indicating loading states
2069
1561
 
2070
1562
  #### Parameters
2071
1563
 
2072
1564
  | Name | Type | Description |
2073
1565
  | :------ | :------ | :------ |
2074
- | `props` | [`PublicLoadingSpinnerProps`](interfaces/PublicLoadingSpinnerProps.md) | Spinner configuration and styling |
1566
+ | `props` | `LoadingSpinnerProps` | Spinner configuration and styling |
1567
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
2075
1568
 
2076
1569
  #### Returns
2077
1570
 
2078
- `Element`
1571
+ `ReactNode`
2079
1572
 
2080
- React element with loading spinner
1573
+ JSX.Element - The rendered loading spinner
1574
+
1575
+ **`Example`**
1576
+
1577
+ ```tsx
1578
+ <LoadingSpinner size="lg" className="text-app-main-500" />
1579
+ ```
2081
1580
 
2082
1581
  #### Defined in
2083
1582
 
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)
1583
+ [packages/core/src/components/LoadingSpinner/LoadingSpinner.tsx:83](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/LoadingSpinner/LoadingSpinner.tsx#L83)
2085
1584
 
2086
1585
  ___
2087
1586
 
2088
- ### PublicLoadingSpinnerFullPage
1587
+ ### LoginForm
2089
1588
 
2090
- ▸ **PublicLoadingSpinnerFullPage**(`«destructured»`): `Element`
1589
+ ▸ **LoginForm**(`props`): `ReactNode`
2091
1590
 
2092
- Full page loading spinner with event branding
1591
+ LoginForm component that provides a ready-to-use authentication form for user sign-in.
1592
+ It supports validation, loading state, error handling, and can be customized via props.
1593
+ Now includes performance optimizations and onSignUp support.
2093
1594
 
2094
1595
  #### Parameters
2095
1596
 
2096
- | Name | Type |
2097
- | :------ | :------ |
2098
- | `«destructured»` | `Pick`\<[`PublicLoadingSpinnerProps`](interfaces/PublicLoadingSpinnerProps.md), ``"message"`` \| ``"className"``\> & \{ `eventName?`: `string` } |
1597
+ | Name | Type | Description |
1598
+ | :------ | :------ | :------ |
1599
+ | `props` | [`LoginFormProps`](interfaces/LoginFormProps.md) | Login form configuration and handlers |
2099
1600
 
2100
1601
  #### Returns
2101
1602
 
2102
- `Element`
1603
+ `ReactNode`
1604
+
1605
+ JSX.Element - The rendered login form
1606
+
1607
+ **`Example`**
1608
+
1609
+ ```tsx
1610
+ <LoginForm
1611
+ onSignIn={handleSignIn}
1612
+ onSuccess={() => navigate('/dashboard')}
1613
+ onError={(error) => toast.error(error.message)}
1614
+ isLoading={isAuthenticating}
1615
+ />
1616
+ ```
2103
1617
 
2104
1618
  #### Defined in
2105
1619
 
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)
1620
+ [packages/core/src/components/LoginForm/LoginForm.tsx:150](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/LoginForm/LoginForm.tsx#L150)
2107
1621
 
2108
1622
  ___
2109
1623
 
2110
- ### PublicLoadingSkeleton
1624
+ ### NavigationMenu
1625
+
1626
+ ▸ **NavigationMenu**(`props`): `ReactNode`
2111
1627
 
2112
- **PublicLoadingSkeleton**(`«destructured»`): `Element`
1628
+ Unified NavigationMenu component that supports both dropdown and hierarchical navigation modes.
1629
+
1630
+ A flexible navigation menu component with support for icons, current page highlighting,
1631
+ keyboard navigation, and nested menu items.
2113
1632
 
2114
- Skeleton loading component for content placeholders
1633
+ Features:
1634
+ - Dropdown mode: Menu button that opens a dropdown list
1635
+ - Hierarchical mode: Expandable tree navigation with nested items
1636
+ - Icon support for navigation items
1637
+ - Current page highlighting
1638
+ - Keyboard navigation support (Enter, Space, Escape)
1639
+ - Accessible design with proper ARIA attributes
1640
+ - Click outside to close (dropdown mode)
1641
+ - Recursive rendering for nested items (hierarchical mode)
2115
1642
 
2116
1643
  #### Parameters
2117
1644
 
2118
- | Name | Type | Default value |
1645
+ | Name | Type | Description |
2119
1646
  | :------ | :------ | :------ |
2120
- | `«destructured»` | `Object` | `undefined` |
2121
- | › `lines?` | `number` | `3` |
2122
- | › `className?` | `string` | `''` |
1647
+ | `props` | [`NavigationMenuProps`](interfaces/NavigationMenuProps.md) & `RefAttributes`\<`HTMLDivElement`\> | NavigationMenu component props including items, mode, navigation handlers, and styling options |
2123
1648
 
2124
1649
  #### Returns
2125
1650
 
2126
- `Element`
1651
+ `ReactNode`
2127
1652
 
2128
- #### Defined in
1653
+ React element with navigation menu functionality
2129
1654
 
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)
1655
+ **`Example`**
2131
1656
 
2132
- ___
1657
+ Basic dropdown navigation (most common use case):
1658
+ ```tsx
1659
+ import { NavigationMenu } from '@jmruthers/pace-core';
1660
+ import { useNavigate, useLocation } from 'react-router-dom';
2133
1661
 
2134
- ### PublicPageContextChecker
1662
+ function AppNavigation() {
1663
+ const navigate = useNavigate();
1664
+ const location = useLocation();
2135
1665
 
2136
- **PublicPageContextChecker**(`«destructured»`): ``null`` \| `Element`
1666
+ const navItems = [
1667
+ { id: 'home', label: 'Home', href: '/', icon: 'Home' },
1668
+ { id: 'dashboard', label: 'Dashboard', href: '/dashboard', icon: 'LayoutDashboard' },
1669
+ { id: 'reports', label: 'Reports', href: '/reports', icon: 'FileText' },
1670
+ { id: 'settings', label: 'Settings', href: '/settings', icon: 'Settings' }
1671
+ ];
2137
1672
 
2138
- Context checker component that immediately identifies authentication context issues
1673
+ return (
1674
+ <NavigationMenu
1675
+ items={navItems}
1676
+ mode="dropdown"
1677
+ currentPath={location.pathname}
1678
+ onNavigate={(item) => navigate(item.href)}
1679
+ buttonText="Main Menu"
1680
+ showIcons={true}
1681
+ />
1682
+ );
1683
+ }
1684
+ ```
2139
1685
 
2140
- This component will immediately log to console if authentication context
2141
- is being triggered in a public page.
1686
+ **`Example`**
2142
1687
 
2143
- #### Parameters
1688
+ Hierarchical navigation with nested items:
1689
+ ```tsx
1690
+ import { NavigationMenu } from '@jmruthers/pace-core';
2144
1691
 
2145
- | Name | Type |
2146
- | :------ | :------ |
2147
- | `«destructured»` | `PublicPageContextCheckerProps` |
1692
+ function SidebarNavigation() {
1693
+ const hierarchicalItems = [
1694
+ {
1695
+ id: 'user-management',
1696
+ label: 'User Management',
1697
+ icon: 'Users',
1698
+ children: [
1699
+ { id: 'users-list', label: 'All Users', href: '/users' },
1700
+ { id: 'users-create', label: 'Create User', href: '/users/create' },
1701
+ { id: 'user-roles', label: 'User Roles', href: '/users/roles' }
1702
+ ]
1703
+ },
1704
+ {
1705
+ id: 'reports',
1706
+ label: 'Reports',
1707
+ icon: 'BarChart',
1708
+ children: [
1709
+ { id: 'sales-reports', label: 'Sales Reports', href: '/reports/sales' },
1710
+ { id: 'user-reports', label: 'User Reports', href: '/reports/users' }
1711
+ ]
1712
+ },
1713
+ { id: 'settings', label: 'Settings', href: '/settings', icon: 'Settings' }
1714
+ ];
2148
1715
 
2149
- #### Returns
1716
+ return (
1717
+ <NavigationMenu
1718
+ items={hierarchicalItems}
1719
+ mode="hierarchical"
1720
+ currentPath={window.location.pathname}
1721
+ onNavigate={(item) => {
1722
+ if (item.href) {
1723
+ window.location.href = item.href;
1724
+ }
1725
+ }}
1726
+ className="w-64 bg-gray-50 p-4"
1727
+ />
1728
+ );
1729
+ }
1730
+ ```
2150
1731
 
2151
- ``null`` \| `Element`
1732
+ **`Example`**
2152
1733
 
2153
- #### Defined in
1734
+ Integration with React Router and authentication:
1735
+ ```tsx
1736
+ import { NavigationMenu } from '@jmruthers/pace-core';
1737
+ import { useNavigate, useLocation } from 'react-router-dom';
1738
+ import { useUnifiedAuth } from '@jmruthers/pace-core/providers';
2154
1739
 
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)
1740
+ function AuthenticatedNavigation() {
1741
+ const navigate = useNavigate();
1742
+ const location = useLocation();
1743
+ const { hasRole, hasPermission } = useUnifiedAuth();
2156
1744
 
2157
- ___
1745
+ // Build navigation items based on user permissions
1746
+ const navItems = [
1747
+ { id: 'dashboard', label: 'Dashboard', href: '/dashboard', icon: 'LayoutDashboard' },
1748
+ ...(hasPermission('meals:read') ? [
1749
+ { id: 'meals', label: 'Meals', href: '/meals', icon: 'UtensilsCrossed' }
1750
+ ] : []),
1751
+ ...(hasRole('admin') ? [
1752
+ { id: 'admin', label: 'Admin Panel', href: '/admin', icon: 'Shield' }
1753
+ ] : []),
1754
+ { id: 'profile', label: 'Profile', href: '/profile', icon: 'User' }
1755
+ ];
2158
1756
 
2159
- ### PublicPageDebugger
1757
+ return (
1758
+ <NavigationMenu
1759
+ items={navItems}
1760
+ mode="dropdown"
1761
+ currentPath={location.pathname}
1762
+ onNavigate={(item) => navigate(item.href)}
1763
+ buttonText="Navigation"
1764
+ navigationLabel="Main application navigation"
1765
+ />
1766
+ );
1767
+ }
1768
+ ```
2160
1769
 
2161
- ▸ **PublicPageDebugger**(`«destructured»`): ``null`` \| `Element`
1770
+ **`Example`**
2162
1771
 
2163
- Debugger component that logs context information
1772
+ Custom navigation with external links and actions:
1773
+ ```tsx
1774
+ import { NavigationMenu } from '@jmruthers/pace-core';
2164
1775
 
2165
- This component helps identify why authentication context
2166
- is being triggered in public pages.
1776
+ function CustomNavigation() {
1777
+ const handleNavigation = (item) => {
1778
+ if (item.id === 'logout') {
1779
+ // Handle logout action
1780
+ handleLogout();
1781
+ } else if (item.href?.startsWith('http')) {
1782
+ // Handle external links
1783
+ window.open(item.href, '_blank');
1784
+ } else if (item.href) {
1785
+ // Handle internal navigation
1786
+ navigate(item.href);
1787
+ }
1788
+ };
2167
1789
 
2168
- #### Parameters
1790
+ const navItems = [
1791
+ { id: 'home', label: 'Home', href: '/', icon: 'Home' },
1792
+ { id: 'help', label: 'Help Center', href: 'https://help.example.com', icon: 'HelpCircle' },
1793
+ { id: 'logout', label: 'Sign Out', icon: 'LogOut' } // No href for actions
1794
+ ];
2169
1795
 
2170
- | Name | Type |
2171
- | :------ | :------ |
2172
- | `«destructured»` | `PublicPageDebuggerProps` |
1796
+ return (
1797
+ <NavigationMenu
1798
+ items={navItems}
1799
+ mode="dropdown"
1800
+ onNavigate={handleNavigation}
1801
+ buttonText="Menu"
1802
+ disabled={false}
1803
+ />
1804
+ );
1805
+ }
1806
+ ```
2173
1807
 
2174
- #### Returns
1808
+ **`Since`**
2175
1809
 
2176
- ``null`` \| `Element`
1810
+ 0.1.0
2177
1811
 
2178
1812
  #### Defined in
2179
1813
 
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)
1814
+ [packages/core/src/components/NavigationMenu/NavigationMenu.tsx:377](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/NavigationMenu/NavigationMenu.tsx#L377)
2181
1815
 
2182
1816
  ___
2183
1817
 
2184
- ### PublicPageDiagnostic
1818
+ ### OrganisationSelector
2185
1819
 
2186
- ▸ **PublicPageDiagnostic**(`«destructured»`): ``null`` \| `Element`
1820
+ ▸ **OrganisationSelector**(`«destructured»`): ``null`` \| `Element`
2187
1821
 
2188
- Diagnostic component that identifies authentication context issues
1822
+ OrganisationSelector component for secure organisation switching
1823
+
1824
+ This component provides secure organisation selection with:
1825
+ - User membership validation
1826
+ - Role-based access display
1827
+ - Security error handling
1828
+ - Real-time organisation switching
1829
+ - Accessible interface design
2189
1830
 
2190
- This component will help you identify exactly where the problem is
2191
- in your public page implementation.
1831
+ Security: Only shows organisations the user has valid access to
2192
1832
 
2193
1833
  #### Parameters
2194
1834
 
2195
1835
  | Name | Type |
2196
1836
  | :------ | :------ |
2197
- | `«destructured»` | `PublicPageDiagnosticProps` |
1837
+ | `«destructured»` | `OrganisationSelectorProps` |
2198
1838
 
2199
1839
  #### Returns
2200
1840
 
@@ -2202,139 +1842,236 @@ in your public page implementation.
2202
1842
 
2203
1843
  #### Defined in
2204
1844
 
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)
1845
+ [packages/core/src/components/OrganisationSelector/OrganisationSelector.tsx:96](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/OrganisationSelector/OrganisationSelector.tsx#L96)
2206
1846
 
2207
1847
  ___
2208
1848
 
2209
- ### PublicPageFooter
1849
+ ### PaceAppLayout
1850
+
1851
+ ▸ **PaceAppLayout**(`props`): `Element`
2210
1852
 
2211
- **PublicPageFooter**(`props`): `Element`
1853
+ A consistent layout component for all PACE suite applications that provides a standard
1854
+ structure with header, main content area, and footer.
1855
+
1856
+ NEW: This component now includes layout-level permission enforcement to ensure
1857
+ consuming apps can't forget to implement permission checks on individual pages.
2212
1858
 
2213
- Footer component for public pages that matches the normal Footer exactly
1859
+ This component is designed to work with React Router's nested routing pattern using
1860
+ Outlet to render child routes. It provides integrated authentication, navigation,
1861
+ and user management functionality.
2214
1862
 
2215
- This component uses the same styling and structure as the main Footer component
2216
- to ensure consistency across the application.
1863
+ Features:
1864
+ - React Router v6 integration with nested routing
1865
+ - Unified authentication integration
1866
+ - Consistent header with navigation and user menu
1867
+ - Flexible main content area with Outlet
1868
+ - Footer with application branding
1869
+ - User sign-out and password change functionality
1870
+ - Responsive design and accessibility compliant
1871
+ - Layout-level permission enforcement
1872
+ - Permission-based navigation filtering
1873
+ - Automatic page permission validation
2217
1874
 
2218
1875
  #### Parameters
2219
1876
 
2220
1877
  | Name | Type | Description |
2221
1878
  | :------ | :------ | :------ |
2222
- | `props` | [`PublicPageFooterProps`](interfaces/PublicPageFooterProps.md) | Footer configuration and content |
1879
+ | `props` | [`PaceAppLayoutProps`](interfaces/PaceAppLayoutProps.md) | Layout configuration including app name for branding and permission settings |
2223
1880
 
2224
1881
  #### Returns
2225
1882
 
2226
- `Element`
1883
+ `Element`
1884
+
1885
+ React element with complete application layout structure and permission enforcement
1886
+
1887
+ **`Example`**
1888
+
1889
+ Basic React Router setup with permission enforcement:
1890
+ ```tsx
1891
+ import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
1892
+ import { UnifiedAuthProvider } from '@jmruthers/pace-core/providers';
1893
+ import { PaceAppLayout, PaceLoginPage } from '@jmruthers/pace-core';
1894
+
1895
+ function App() {
1896
+ return (
1897
+ <UnifiedAuthProvider supabaseClient={supabase} appName="My App">
1898
+ <Router>
1899
+ <Routes>
1900
+ <Route path="/login" element={<PaceLoginPage appName="My App" />} />
1901
+ <Route path="/" element={
1902
+ <PaceAppLayout
1903
+ appName="My Application"
1904
+ enforcePermissions={true}
1905
+ defaultPermission="read"
1906
+ />
1907
+ }>
1908
+ <Route index element={<HomePage />} />
1909
+ <Route path="dashboard" element={<DashboardPage />} />
1910
+ <Route path="meals" element={<MealsPage />} />
1911
+ </Route>
1912
+ </Routes>
1913
+ </Router>
1914
+ </UnifiedAuthProvider>
1915
+ );
1916
+ }
1917
+ ```
1918
+
1919
+ **`Example`**
1920
+
1921
+ Custom navigation items with permission filtering:
1922
+ ```tsx
1923
+ import { NavigationItem } from '@jmruthers/pace-core';
1924
+
1925
+ function App() {
1926
+ const customNavItems: NavigationItem[] = [
1927
+ { id: 'components', label: 'Components', href: '/components', icon: 'Component' },
1928
+ { id: 'styles', label: 'Styles', href: '/styles', icon: 'Palette' },
1929
+ { id: 'meals', label: 'Meals', href: '/meals', icon: 'UtensilsCrossed' }
1930
+ ];
1931
+
1932
+ return (
1933
+ <Router>
1934
+ <Routes>
1935
+ <Route path="/" element={
1936
+ <PaceAppLayout
1937
+ appName="My Custom App"
1938
+ navItems={customNavItems}
1939
+ enforcePermissions={true}
1940
+ filterNavigationByPermissions={true}
1941
+ routePermissions={{
1942
+ '/components': 'read',
1943
+ '/styles': 'read',
1944
+ '/meals': 'read'
1945
+ }}
1946
+ />
1947
+ }>
1948
+ <Route path="components" element={<ComponentsPage />} />
1949
+ <Route path="styles" element={<StylesPage />} />
1950
+ <Route path="meals" element={<MealsPage />} />
1951
+ </Route>
1952
+ </Routes>
1953
+ </Router>
1954
+ );
1955
+ }
1956
+ ```
1957
+
1958
+ **`Example`**
1959
+
1960
+ Route-specific permissions with custom page IDs:
1961
+ ```tsx
1962
+ function AdminApp() {
1963
+ return (
1964
+ <Router>
1965
+ <Routes>
1966
+ <Route path="/" element={
1967
+ <PaceAppLayout
1968
+ appName="Admin Panel"
1969
+ enforcePermissions={true}
1970
+ routePermissions={{
1971
+ '/dashboard': 'read',
1972
+ '/user-management': 'read',
1973
+ '/system-settings': 'update'
1974
+ }}
1975
+ pageIdMapping={{
1976
+ '/dashboard': 'dashboard',
1977
+ '/user-management': 'user-management',
1978
+ '/system-settings': 'system-admin'
1979
+ }}
1980
+ permissionFallback={<AccessDeniedPage />}
1981
+ />
1982
+ }>
1983
+ <Route path="dashboard" element={<DashboardPage />} />
1984
+ <Route path="user-management" element={<UserManagementPage />} />
1985
+ <Route path="system-settings" element={<SystemSettingsPage />} />
1986
+ </Route>
1987
+ </Routes>
1988
+ </Router>
1989
+ );
1990
+ }
1991
+ ```
1992
+
1993
+ **`Since`**
2227
1994
 
2228
- React element with public page footer
1995
+ 0.1.0
2229
1996
 
2230
1997
  #### Defined in
2231
1998
 
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)
1999
+ [packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx:331](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceAppLayout/PaceAppLayout.tsx#L331)
2233
2000
 
2234
2001
  ___
2235
2002
 
2236
- ### PublicPageHeader
2003
+ ### PaceLoginPage
2237
2004
 
2238
- ▸ **PublicPageHeader**(`props`): `Element`
2005
+ ▸ **PaceLoginPage**(`props`, `deprecatedLegacyContext?`): `ReactNode`
2239
2006
 
2240
- Header component for public pages with event-specific branding
2007
+ A consistent, reusable login page for all PACE suite applications.
2008
+ It handles the sign-in logic with role-based automatic redirection for admin users,
2009
+ enhanced error handling, and dual loading state management.
2241
2010
 
2242
- This component displays the app logo, event logo, and event information
2243
- in a clean, accessible layout suitable for public pages.
2011
+ Recent enhancements:
2012
+ - Role-based redirection: Admin users are automatically redirected
2013
+ - Enhanced error handling with navigation error recovery
2014
+ - Dual loading states: auth loading + form submission loading
2015
+ - Error persistence: Auth errors are displayed below the form
2016
+ - Navigation safety: Try-catch blocks prevent navigation errors
2244
2017
 
2245
2018
  #### Parameters
2246
2019
 
2247
2020
  | Name | Type | Description |
2248
2021
  | :------ | :------ | :------ |
2249
- | `props` | [`PublicPageHeaderProps`](interfaces/PublicPageHeaderProps.md) | Header configuration and content |
2022
+ | `props` | [`PaceLoginPageProps`](interfaces/PaceLoginPageProps.md) | Login page configuration including app name and redirect path |
2023
+ | `deprecatedLegacyContext?` | `any` | **`See`** [React Docs](https://legacy.reactjs.org/docs/legacy-context.html#referencing-context-in-lifecycle-methods) |
2250
2024
 
2251
2025
  #### Returns
2252
2026
 
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 |
2027
+ `ReactNode`
2277
2028
 
2278
- #### Returns
2029
+ JSX.Element - The rendered login page with enhanced functionality
2279
2030
 
2280
- `Element`
2031
+ **`Example`**
2281
2032
 
2282
- React element with complete public page layout
2033
+ ```tsx
2034
+ <PaceLoginPage
2035
+ appName="My Application"
2036
+ onSuccessRedirectPath="/dashboard"
2037
+ />
2038
+ ```
2283
2039
 
2284
2040
  #### Defined in
2285
2041
 
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)
2042
+ [packages/core/src/components/PaceLoginPage/PaceLoginPage.tsx:160](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PaceLoginPage/PaceLoginPage.tsx#L160)
2287
2043
 
2288
2044
  ___
2289
2045
 
2290
- ### usePublicPageContext
2046
+ ### PasswordChangeForm
2291
2047
 
2292
- ▸ **usePublicPageContext**(): `Object`
2048
+ ▸ **PasswordChangeForm**(`«destructured»`): `Element`
2293
2049
 
2294
- Hook for accessing public page context
2295
- Provides access to event data and layout state within public pages
2050
+ #### Parameters
2296
2051
 
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.
2052
+ | Name | Type |
2053
+ | :------ | :------ |
2054
+ | `«destructured»` | `PasswordChangeFormProps` |
2300
2055
 
2301
2056
  #### Returns
2302
2057
 
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` |
2058
+ `Element`
2314
2059
 
2315
2060
  #### Defined in
2316
2061
 
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)
2062
+ [packages/core/src/components/PasswordReset/PasswordChangeForm.tsx:116](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PasswordReset/PasswordChangeForm.tsx#L116)
2318
2063
 
2319
2064
  ___
2320
2065
 
2321
- ### PublicPageProvider
2322
-
2323
- ▸ **PublicPageProvider**(`«destructured»`): `Element`
2324
-
2325
- Provider for public pages that completely isolates them from authentication context
2066
+ ### PasswordResetForm
2326
2067
 
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
2068
+ **PasswordResetForm**(`«destructured»`): `Element`
2332
2069
 
2333
2070
  #### Parameters
2334
2071
 
2335
2072
  | Name | Type |
2336
2073
  | :------ | :------ |
2337
- | `«destructured»` | `PublicPageProviderProps` |
2074
+ | `«destructured»` | `PasswordResetFormProps` |
2338
2075
 
2339
2076
  #### Returns
2340
2077
 
@@ -2342,43 +2079,38 @@ This provider:
2342
2079
 
2343
2080
  #### Defined in
2344
2081
 
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)
2082
+ [packages/core/src/components/PasswordReset/PasswordResetForm.tsx:94](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PasswordReset/PasswordResetForm.tsx#L94)
2346
2083
 
2347
2084
  ___
2348
2085
 
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
2086
+ ### Progress
2360
2087
 
2361
- #### Defined in
2088
+ **Progress**(`props`): `ReactNode`
2362
2089
 
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)
2090
+ Progress component
2091
+ An accessible progress bar with smooth animations
2364
2092
 
2365
- ___
2093
+ #### Parameters
2366
2094
 
2367
- ### useIsPublicPage
2095
+ | Name | Type | Description |
2096
+ | :------ | :------ | :------ |
2097
+ | `props` | `ProgressProps` & `RefAttributes`\<`HTMLDivElement`\> | Progress configuration and styling |
2368
2098
 
2369
- **useIsPublicPage**(): `boolean`
2099
+ #### Returns
2370
2100
 
2371
- Hook to check if we're in a public page context
2101
+ `ReactNode`
2372
2102
 
2373
- #### Returns
2103
+ JSX.Element - The rendered progress bar
2374
2104
 
2375
- `boolean`
2105
+ **`Example`**
2376
2106
 
2377
- True if we're in a public page context
2107
+ ```tsx
2108
+ <Progress value={75} max={100} />
2109
+ ```
2378
2110
 
2379
2111
  #### Defined in
2380
2112
 
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)
2113
+ [packages/core/src/components/Progress/Progress.tsx:90](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Progress/Progress.tsx#L90)
2382
2114
 
2383
2115
  ___
2384
2116
 
@@ -2390,7 +2122,7 @@ ___
2390
2122
 
2391
2123
  | Name | Type |
2392
2124
  | :------ | :------ |
2393
- | `props` | `SelectProps` & `RefAttributes`\<`HTMLFormElement`\> |
2125
+ | `props` | `SelectProps` & `RefAttributes`\<`HTMLDivElement`\> |
2394
2126
 
2395
2127
  #### Returns
2396
2128
 
@@ -2398,7 +2130,7 @@ ___
2398
2130
 
2399
2131
  #### Defined in
2400
2132
 
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)
2133
+ [packages/core/src/components/Select/Select.tsx:94](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L94)
2402
2134
 
2403
2135
  ___
2404
2136
 
@@ -2418,7 +2150,7 @@ ___
2418
2150
 
2419
2151
  #### Defined in
2420
2152
 
2421
- [packages/core/src/components/Select/Select.tsx:275](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L275)
2153
+ [packages/core/src/components/Select/Select.tsx:160](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L160)
2422
2154
 
2423
2155
  ___
2424
2156
 
@@ -2430,7 +2162,7 @@ ___
2430
2162
 
2431
2163
  | Name | Type |
2432
2164
  | :------ | :------ |
2433
- | `props` | `SelectValueProps` & `RefAttributes`\<`HTMLSpanElement`\> |
2165
+ | `props` | `SelectValueProps` & `RefAttributes`\<`HTMLDivElement`\> |
2434
2166
 
2435
2167
  #### Returns
2436
2168
 
@@ -2438,7 +2170,7 @@ ___
2438
2170
 
2439
2171
  #### Defined in
2440
2172
 
2441
- [packages/core/src/components/Select/Select.tsx:398](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L398)
2173
+ [packages/core/src/components/Select/Select.tsx:234](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L234)
2442
2174
 
2443
2175
  ___
2444
2176
 
@@ -2450,7 +2182,7 @@ ___
2450
2182
 
2451
2183
  | Name | Type |
2452
2184
  | :------ | :------ |
2453
- | `props` | `SelectContentProps` & `RefAttributes`\<`HTMLUListElement`\> |
2185
+ | `props` | `SelectContentProps` & `RefAttributes`\<`HTMLDivElement`\> |
2454
2186
 
2455
2187
  #### Returns
2456
2188
 
@@ -2458,7 +2190,7 @@ ___
2458
2190
 
2459
2191
  #### Defined in
2460
2192
 
2461
- [packages/core/src/components/Select/Select.tsx:415](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L415)
2193
+ [packages/core/src/components/Select/Select.tsx:270](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L270)
2462
2194
 
2463
2195
  ___
2464
2196
 
@@ -2470,7 +2202,7 @@ ___
2470
2202
 
2471
2203
  | Name | Type |
2472
2204
  | :------ | :------ |
2473
- | `props` | `SelectItemProps` & `RefAttributes`\<`HTMLLIElement`\> |
2205
+ | `props` | `SelectItemProps` & `RefAttributes`\<`HTMLDivElement`\> |
2474
2206
 
2475
2207
  #### Returns
2476
2208
 
@@ -2478,7 +2210,7 @@ ___
2478
2210
 
2479
2211
  #### Defined in
2480
2212
 
2481
- [packages/core/src/components/Select/Select.tsx:542](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L542)
2213
+ [packages/core/src/components/Select/Select.tsx:470](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L470)
2482
2214
 
2483
2215
  ___
2484
2216
 
@@ -2498,7 +2230,7 @@ ___
2498
2230
 
2499
2231
  #### Defined in
2500
2232
 
2501
- [packages/core/src/components/Select/Select.tsx:627](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L627)
2233
+ [packages/core/src/components/Select/Select.tsx:538](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L538)
2502
2234
 
2503
2235
  ___
2504
2236
 
@@ -2518,7 +2250,7 @@ ___
2518
2250
 
2519
2251
  #### Defined in
2520
2252
 
2521
- [packages/core/src/components/Select/Select.tsx:638](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L638)
2253
+ [packages/core/src/components/Select/Select.tsx:547](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L547)
2522
2254
 
2523
2255
  ___
2524
2256
 
@@ -2538,7 +2270,7 @@ ___
2538
2270
 
2539
2271
  #### Defined in
2540
2272
 
2541
- [packages/core/src/components/Select/Select.tsx:649](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L649)
2273
+ [packages/core/src/components/Select/Select.tsx:560](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L560)
2542
2274
 
2543
2275
  ___
2544
2276
 
@@ -3077,7 +2809,7 @@ JSX.Element - The tooltip content container
3077
2809
  **`Example`**
3078
2810
 
3079
2811
  ```tsx
3080
- <TooltipContent side="top" className="bg-main-500">
2812
+ <TooltipContent side="top" className="bg-app-main-500">
3081
2813
  Custom tooltip content
3082
2814
  </TooltipContent>
3083
2815
  ```
@@ -3121,258 +2853,23 @@ JSX.Element - The tooltip with trigger and content
3121
2853
 
3122
2854
  ___
3123
2855
 
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``
2856
+ ### UserMenu
3360
2857
 
3361
- Utility function to extract event code from a public route path
2858
+ **UserMenu**(`props`): `ReactNode`
3362
2859
 
3363
2860
  #### Parameters
3364
2861
 
3365
2862
  | Name | Type |
3366
2863
  | :------ | :------ |
3367
- | `path` | `string` |
2864
+ | `props` | [`UserMenuProps`](interfaces/UserMenuProps.md) |
3368
2865
 
3369
2866
  #### Returns
3370
2867
 
3371
- `string` \| ``null``
2868
+ `ReactNode`
3372
2869
 
3373
2870
  #### Defined in
3374
2871
 
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)
2872
+ [packages/core/src/components/UserMenu/UserMenu.tsx:135](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/UserMenu/UserMenu.tsx#L135)
3376
2873
 
3377
2874
  ___
3378
2875
 
@@ -3381,7 +2878,6 @@ ___
3381
2878
  ▸ **useAppConfig**(): `UseAppConfigReturn`
3382
2879
 
3383
2880
  Hook to access app configuration
3384
- Works in both authenticated and public contexts
3385
2881
 
3386
2882
  #### Returns
3387
2883
 
@@ -3391,27 +2887,7 @@ App configuration and loading state
3391
2887
 
3392
2888
  #### Defined in
3393
2889
 
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)
2890
+ [packages/core/src/hooks/useAppConfig.ts:44](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/hooks/useAppConfig.ts#L44)
3415
2891
 
3416
2892
  ___
3417
2893
 
@@ -3453,57 +2929,6 @@ ___
3453
2929
 
3454
2930
  ___
3455
2931
 
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
2932
  ### useEvents
3508
2933
 
3509
2934
  ▸ **useEvents**(): [`EventContextType`](interfaces/EventContextType.md)
@@ -3514,7 +2939,7 @@ ___
3514
2939
 
3515
2940
  #### Defined in
3516
2941
 
3517
- [packages/core/src/providers/EventProvider.tsx:29](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/EventProvider.tsx#L29)
2942
+ [packages/core/src/providers/EventProvider.tsx:27](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/EventProvider.tsx#L27)
3518
2943
 
3519
2944
  ___
3520
2945
 
@@ -3534,7 +2959,7 @@ ___
3534
2959
 
3535
2960
  #### Defined in
3536
2961
 
3537
- [packages/core/src/providers/EventProvider.tsx:68](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/EventProvider.tsx#L68)
2962
+ [packages/core/src/providers/EventProvider.tsx:66](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/EventProvider.tsx#L66)
3538
2963
 
3539
2964
  ___
3540
2965
 
@@ -3566,7 +2991,7 @@ SECURITY: No children are rendered without valid organisation context
3566
2991
 
3567
2992
  #### Defined in
3568
2993
 
3569
- [packages/core/src/providers/OrganisationProvider.tsx:103](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/OrganisationProvider.tsx#L103)
2994
+ [packages/core/src/providers/OrganisationProvider.tsx:101](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/OrganisationProvider.tsx#L101)
3570
2995
 
3571
2996
  ___
3572
2997
 
@@ -3588,7 +3013,7 @@ If used outside OrganisationProvider
3588
3013
 
3589
3014
  #### Defined in
3590
3015
 
3591
- [packages/core/src/providers/OrganisationProvider.tsx:574](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/OrganisationProvider.tsx#L574)
3016
+ [packages/core/src/providers/OrganisationProvider.tsx:539](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/OrganisationProvider.tsx#L539)
3592
3017
 
3593
3018
  ___
3594
3019
 
@@ -3602,7 +3027,7 @@ ___
3602
3027
 
3603
3028
  #### Defined in
3604
3029
 
3605
- [packages/core/src/providers/UnifiedAuthProvider.tsx:177](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/UnifiedAuthProvider.tsx#L177)
3030
+ [packages/core/src/providers/UnifiedAuthProvider.tsx:231](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/UnifiedAuthProvider.tsx#L231)
3606
3031
 
3607
3032
  ___
3608
3033
 
@@ -3622,7 +3047,7 @@ ___
3622
3047
 
3623
3048
  #### Defined in
3624
3049
 
3625
- [packages/core/src/providers/UnifiedAuthProvider.tsx:294](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/UnifiedAuthProvider.tsx#L294)
3050
+ [packages/core/src/providers/UnifiedAuthProvider.tsx:338](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/providers/UnifiedAuthProvider.tsx#L338)
3626
3051
 
3627
3052
  ___
3628
3053
 
@@ -3634,7 +3059,7 @@ ___
3634
3059
 
3635
3060
  | Name | Type |
3636
3061
  | :------ | :------ |
3637
- | `style` | ``"core"`` |
3062
+ | `style` | ``"base"`` \| ``"dark"`` \| ``"theme"`` |
3638
3063
 
3639
3064
  #### Returns
3640
3065
 
@@ -3642,7 +3067,7 @@ ___
3642
3067
 
3643
3068
  #### Defined in
3644
3069
 
3645
- [packages/core/src/styles/index.ts:40](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/styles/index.ts#L40)
3070
+ [packages/core/src/styles/index.ts:50](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/styles/index.ts#L50)
3646
3071
 
3647
3072
  ___
3648
3073
 
@@ -3656,7 +3081,7 @@ ___
3656
3081
 
3657
3082
  #### Defined in
3658
3083
 
3659
- [packages/core/src/styles/index.ts:45](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/styles/index.ts#L45)
3084
+ [packages/core/src/styles/index.ts:55](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/styles/index.ts#L55)
3660
3085
 
3661
3086
  ___
3662
3087
 
@@ -3695,7 +3120,7 @@ Removes the dynamic theme block, returning to app-defined CSS values.
3695
3120
 
3696
3121
  #### Defined in
3697
3122
 
3698
- [packages/core/src/theming/runtime.ts:86](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L86)
3123
+ [packages/core/src/theming/runtime.ts:84](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L84)
3699
3124
 
3700
3125
  ___
3701
3126
 
@@ -3718,7 +3143,7 @@ Use this in your SSR setup to avoid FOUC
3718
3143
 
3719
3144
  #### Defined in
3720
3145
 
3721
- [packages/core/src/theming/runtime.ts:154](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L154)
3146
+ [packages/core/src/theming/runtime.ts:139](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L139)
3722
3147
 
3723
3148
  ___
3724
3149
 
@@ -3734,7 +3159,7 @@ Checks if dynamic theming is currently active
3734
3159
 
3735
3160
  #### Defined in
3736
3161
 
3737
- [packages/core/src/theming/runtime.ts:161](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L161)
3162
+ [packages/core/src/theming/runtime.ts:146](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L146)
3738
3163
 
3739
3164
  ___
3740
3165
 
@@ -3751,7 +3176,7 @@ Useful for debugging or persistence
3751
3176
 
3752
3177
  #### Defined in
3753
3178
 
3754
- [packages/core/src/theming/runtime.ts:173](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L173)
3179
+ [packages/core/src/theming/runtime.ts:158](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/theming/runtime.ts#L158)
3755
3180
 
3756
3181
  ___
3757
3182
 
@@ -3855,7 +3280,7 @@ Create a secure data access instance
3855
3280
 
3856
3281
  | Name | Type | Default value | Description |
3857
3282
  | :------ | :------ | :------ | :------ |
3858
- | `supabase` | `default`\<`any`, ``"public"``, ``"public"``, `any`, `any`\> | `undefined` | Supabase client instance |
3283
+ | `supabase` | `default`\<`any`, ``"public"``, `any`\> | `undefined` | Supabase client instance |
3859
3284
  | `organisationId` | `string` | `undefined` | Current organisation context |
3860
3285
  | `isSuperAdmin` | `boolean` | `false` | Whether user has super admin privileges |
3861
3286
 
@@ -3868,286 +3293,3 @@ Secure data access utilities
3868
3293
  #### Defined in
3869
3294
 
3870
3295
  [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)