@jmruthers/pace-core 0.6.9 → 0.6.10

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 (665) hide show
  1. package/audit-tool/audits/02-project-structure.cjs +62 -0
  2. package/audit-tool/audits/03-architecture.cjs +145 -19
  3. package/audit-tool/audits/04-code-quality.cjs +86 -1
  4. package/audit-tool/audits/06-security-rbac.cjs +109 -11
  5. package/cursor-rules/02-project-structure.mdc +2 -26
  6. package/cursor-rules/05-styling.mdc +84 -6
  7. package/cursor-rules/06-security-rbac.mdc +124 -1
  8. package/dist/{DataTable-SOAFXIWY.js → DataTable-SAXFG4XI.js} +11 -13
  9. package/dist/{AuthService-DmfO5rGS.d.ts → InactivityServiceProvider-DHryoh6K.d.ts} +24 -249
  10. package/dist/UnifiedAuthProvider-BBD2PS3Q.js +7 -0
  11. package/dist/{UnifiedAuthProvider-CKvHP1MK.d.ts → UnifiedAuthProvider-CiBAl9-s.d.ts} +34 -22
  12. package/dist/{api-7P7DI652.js → api-F47QJ7FX.js} +3 -3
  13. package/dist/assets/app-icons/admin_favicon.svg +462 -0
  14. package/dist/assets/app-icons/base_favicon.svg +85 -0
  15. package/dist/assets/app-icons/cake_favicon.svg +68 -0
  16. package/dist/assets/app-icons/core_favicon.svg +256 -0
  17. package/dist/assets/app-icons/gear_favicon.svg +91 -0
  18. package/dist/assets/app-icons/medi_favicon.svg +92 -0
  19. package/dist/assets/app-icons/mint_favicon.svg +83 -0
  20. package/dist/assets/app-icons/pace_favicon.svg +49 -0
  21. package/dist/assets/app-icons/pump_favicon.svg +68 -0
  22. package/dist/assets/app-icons/seed_favicon.svg +91 -0
  23. package/dist/assets/app-icons/team_favicon.svg +67 -0
  24. package/dist/assets/app-icons/trac_favicon.svg +112 -0
  25. package/dist/assets/app-icons/trip_favicon.svg +102 -0
  26. package/dist/audit-Z6ZZBWLU.js +3 -0
  27. package/dist/chunk-3GWSPISD.js +61 -0
  28. package/dist/{chunk-4DDCYDQ3.js → chunk-66R6RLUZ.js} +12 -27
  29. package/dist/{chunk-FYHN4DD5.js → chunk-7YDC7LMU.js} +80 -8
  30. package/dist/{chunk-S7DKJPLT.js → chunk-BCTXBU6U.js} +22 -17
  31. package/dist/{chunk-TTRFSOKR.js → chunk-BTHN5MKC.js} +4 -4
  32. package/dist/{chunk-A3W6LW53.js → chunk-DDMPHZ3D.js} +6 -18
  33. package/dist/{chunk-MPBLMWVR.js → chunk-FBZ7U3ID.js} +140 -92
  34. package/dist/chunk-FN52B75D.js +246 -0
  35. package/dist/{chunk-5W2A3DRC.js → chunk-JJEYZ3DX.js} +5 -4
  36. package/dist/chunk-KPYQWGFQ.js +183 -0
  37. package/dist/{chunk-C7ZQ5O4C.js → chunk-KSNLMI7N.js} +3 -3
  38. package/dist/chunk-KYURMOQM.js +977 -0
  39. package/dist/{chunk-LX6U42O3.js → chunk-LNHFAF4X.js} +160 -58
  40. package/dist/{chunk-J2U36LHD.js → chunk-MPY44PWB.js} +620 -627
  41. package/dist/{chunk-AHU7G2R5.js → chunk-NIU6DPQV.js} +10 -6
  42. package/dist/{chunk-HF6O3O37.js → chunk-RMLY6KB5.js} +1 -1
  43. package/dist/{chunk-6GLLNA6U.js → chunk-SACF5YSM.js} +1 -1
  44. package/dist/{chunk-5HNSDQWH.js → chunk-TFIPNIPE.js} +865 -532
  45. package/dist/{chunk-OJ4SKRSV.js → chunk-UZNAFKGW.js} +25 -5
  46. package/dist/chunk-W46INAVW.js +1216 -0
  47. package/dist/chunk-X5EAU5G7.js +793 -0
  48. package/dist/{chunk-T5CVK4R3.js → chunk-Y4PF6HIM.js} +110 -64
  49. package/dist/components.d.ts +8 -86
  50. package/dist/components.js +21 -55
  51. package/dist/eslint-rules/rules/05-styling.cjs +507 -0
  52. package/dist/eslint-rules/rules/06-security-rbac.cjs +10 -0
  53. package/dist/{event-CW5YB_2p.d.ts → event-WTAQuGcq.d.ts} +1 -1
  54. package/dist/{functions-lBy5L2ry.d.ts → functions-DH45k8ec.d.ts} +1 -1
  55. package/dist/hooks.d.ts +11 -10
  56. package/dist/hooks.js +69 -44
  57. package/dist/index.d.ts +379 -31
  58. package/dist/index.js +46 -32
  59. package/dist/papaparseLoader-WG2UXQ22.js +7 -0
  60. package/dist/providers.d.ts +28 -14
  61. package/dist/providers.js +5 -5
  62. package/dist/rbac/eslint-rules.js +2 -2
  63. package/dist/rbac/index.d.ts +57 -213
  64. package/dist/rbac/index.js +11 -11
  65. package/dist/theming/runtime.d.ts +9 -3
  66. package/dist/theming/runtime.js +2 -2
  67. package/dist/{timezone-0AyangqX.d.ts → timezone-K-ptz3HO.d.ts} +21 -22
  68. package/dist/{types-t9H8qKRw.d.ts → types-BE2sEHKd.d.ts} +1 -1
  69. package/dist/{types-BeoeWV5I.d.ts → types-CvOPXWWZ.d.ts} +6 -5
  70. package/dist/{types-DXstZpNI.d.ts → types-D05dCGma.d.ts} +56 -149
  71. package/dist/types-Dr8sNhER.d.ts +50 -0
  72. package/dist/types.d.ts +4 -4
  73. package/dist/{PublicPageProvider-CIGSujI2.d.ts → usePublicPageContext-vxBlEHO9.d.ts} +294 -151
  74. package/dist/{usePublicRouteParams-DQLrDqDb.d.ts → usePublicRouteParams-G3Ks53mk.d.ts} +7 -6
  75. package/dist/utils.d.ts +300 -136
  76. package/dist/utils.js +42 -41
  77. package/dist/{validation-643vUDZW.d.ts → validation-g5n0hDkh.d.ts} +2 -2
  78. package/docs/api/modules.md +542 -549
  79. package/docs/api-reference/components.md +5 -5
  80. package/docs/implementation-guides/data-tables.md +190 -8
  81. package/docs/rbac/RBAC_CONTRACT.md +0 -12
  82. package/docs/standards/2-project-structure-standards.md +12 -74
  83. package/docs/standards/6-security-rbac-standards.md +222 -7
  84. package/docs/standards/7-api-tech-stack-standards.md +91 -3
  85. package/docs/testing/README.md +10 -0
  86. package/docs/testing/test-setup-for-consumers.md +914 -0
  87. package/eslint-config-pace-core.cjs +4 -0
  88. package/package.json +1 -1
  89. package/scripts/eslint-audit.cjs +110 -11
  90. package/src/__mocks__/lucide-react.ts +0 -2
  91. package/src/__tests__/helpers/__tests__/test-utils.test.tsx +0 -2
  92. package/src/__tests__/index.test.ts +532 -0
  93. package/src/__tests__/integration/UserProfile.test.tsx +1 -1
  94. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +10 -8
  95. package/src/__tests__/rls-policies.test.ts +3 -2
  96. package/src/assets/app-icons/admin_favicon.svg +462 -0
  97. package/src/assets/app-icons/base_favicon.svg +85 -0
  98. package/src/assets/app-icons/cake_favicon.svg +68 -0
  99. package/src/assets/app-icons/core_favicon.svg +256 -0
  100. package/src/assets/app-icons/gear_favicon.svg +91 -0
  101. package/src/assets/app-icons/index.ts +83 -0
  102. package/src/assets/app-icons/medi_favicon.svg +92 -0
  103. package/src/assets/app-icons/mint_favicon.svg +83 -0
  104. package/src/assets/app-icons/pace_favicon.svg +49 -0
  105. package/src/assets/app-icons/pump_favicon.svg +68 -0
  106. package/src/assets/app-icons/seed_favicon.svg +91 -0
  107. package/src/assets/app-icons/team_favicon.svg +67 -0
  108. package/src/assets/app-icons/trac_favicon.svg +112 -0
  109. package/src/assets/app-icons/trip_favicon.svg +102 -0
  110. package/src/components/AddressField/AddressField.test.tsx +378 -3
  111. package/src/components/AddressField/AddressField.tsx +2 -2
  112. package/src/components/AddressField/types.ts +2 -2
  113. package/src/components/Alert/Alert.test.tsx +35 -25
  114. package/src/components/Alert/Alert.tsx +8 -8
  115. package/src/components/AppSwitcher/AppSwitcher.test.tsx +1250 -0
  116. package/src/components/AppSwitcher/AppSwitcher.tsx +315 -0
  117. package/src/components/Avatar/Avatar.test.tsx +11 -1
  118. package/src/components/Avatar/Avatar.tsx +3 -2
  119. package/src/components/Badge/Badge.test.tsx +11 -1
  120. package/src/components/Button/Button.test.tsx +13 -3
  121. package/src/components/Calendar/Calendar.test.tsx +523 -131
  122. package/src/components/Calendar/Calendar.tsx +107 -488
  123. package/src/components/Card/Card.test.tsx +220 -249
  124. package/src/components/Checkbox/Checkbox.test.tsx +58 -174
  125. package/src/components/ContextSelector/ContextSelector.tsx +3 -3
  126. package/src/components/ContextSelector/__tests__/ContextSelector.test.tsx +360 -0
  127. package/src/components/DataTable/DataTable.tsx +2 -2
  128. package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +1 -1
  129. package/src/components/DataTable/__tests__/DataTable.export.test.tsx +2 -2
  130. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +1 -1
  131. package/src/components/DataTable/__tests__/DataTable.select-label-display.test.tsx +16 -14
  132. package/src/components/DataTable/__tests__/DataTable.test.tsx +2 -2
  133. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +1 -1
  134. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +76 -580
  135. package/src/components/DataTable/__tests__/README.md +1 -1
  136. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +1 -1
  137. package/src/components/DataTable/__tests__/keyboard.test.tsx +1 -1
  138. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +1 -3
  139. package/src/components/DataTable/__tests__/ssr.strict-mode.test.tsx +0 -6
  140. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +14 -6
  141. package/src/components/DataTable/components/ActionButtons.tsx +9 -4
  142. package/src/components/DataTable/components/BulkOperationsDropdown.tsx +3 -3
  143. package/src/components/DataTable/components/ColumnFilter.tsx +2 -7
  144. package/src/components/DataTable/components/DataTableCore.tsx +44 -52
  145. package/src/components/DataTable/components/DataTableLayout.tsx +37 -26
  146. package/src/components/DataTable/components/DataTableModals.tsx +118 -30
  147. package/src/components/DataTable/components/DataTableToolbar.tsx +2 -2
  148. package/src/components/DataTable/components/EditFields.tsx +6 -47
  149. package/src/components/DataTable/components/EditableRow.tsx +8 -8
  150. package/src/components/DataTable/components/EmptyState.tsx +6 -3
  151. package/src/components/DataTable/components/FilterRow.tsx +18 -11
  152. package/src/components/DataTable/components/GroupingDropdown.tsx +0 -1
  153. package/src/components/DataTable/components/ImportModal.tsx +305 -133
  154. package/src/components/DataTable/components/LoadingState.tsx +2 -2
  155. package/src/components/DataTable/components/PaginationControls.tsx +0 -4
  156. package/src/components/DataTable/components/RowComponent.tsx +42 -22
  157. package/src/components/DataTable/components/UnifiedTableBody.tsx +52 -12
  158. package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +51 -463
  159. package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +122 -116
  160. package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +40 -68
  161. package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +9 -137
  162. package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.test.tsx +57 -17
  163. package/src/components/DataTable/components/__tests__/DataTableCore.test.tsx +792 -0
  164. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +24 -65
  165. package/src/components/DataTable/components/__tests__/DataTableLayout.test.tsx +467 -0
  166. package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +8 -125
  167. package/src/components/DataTable/components/__tests__/DataTableToolbar.test.tsx +528 -56
  168. package/src/components/DataTable/components/__tests__/EditFields.test.tsx +526 -0
  169. package/src/components/DataTable/components/__tests__/EditableRow.test.tsx +1 -68
  170. package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +8 -25
  171. package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +3 -62
  172. package/src/components/DataTable/components/__tests__/GroupingDropdown.test.tsx +9 -14
  173. package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +50 -186
  174. package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +39 -97
  175. package/src/components/DataTable/components/__tests__/PaginationControls.test.tsx +13 -103
  176. package/src/components/DataTable/components/__tests__/RowComponent.test.tsx +629 -0
  177. package/src/components/DataTable/components/__tests__/SortIndicator.test.tsx +135 -0
  178. package/src/components/DataTable/components/__tests__/UnifiedTableBody.test.tsx +31 -171
  179. package/src/components/DataTable/components/__tests__/cellValueUtils.test.ts +453 -0
  180. package/src/components/DataTable/components/hooks/useImportModalFocus.test.ts +184 -0
  181. package/src/components/DataTable/components/hooks/usePermissionTracking.test.ts +381 -0
  182. package/src/components/DataTable/context/DataTableContext.tsx +9 -10
  183. package/src/components/DataTable/context/__tests__/DataTableContext.test.tsx +12 -26
  184. package/src/components/DataTable/core/ColumnFactory.ts +3 -3
  185. package/src/components/DataTable/core/ColumnManager.ts +0 -1
  186. package/src/components/DataTable/core/DataManager.ts +4 -2
  187. package/src/components/DataTable/core/LocalDataAdapter.ts +1 -1
  188. package/src/components/DataTable/core/PluginRegistry.ts +2 -2
  189. package/src/components/DataTable/core/__tests__/ActionManager.test.ts +114 -2
  190. package/src/components/DataTable/core/__tests__/ColumnFactory.test.ts +103 -5
  191. package/src/components/DataTable/core/__tests__/ColumnManager.test.ts +57 -0
  192. package/src/components/DataTable/core/__tests__/DataManager.test.ts +63 -0
  193. package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +42 -9
  194. package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +29 -7
  195. package/src/components/DataTable/core/__tests__/StateManager.test.ts +58 -4
  196. package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.test.ts +16 -21
  197. package/src/components/DataTable/hooks/__tests__/useColumnVisibilityPersistence.test.ts +93 -4
  198. package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +227 -54
  199. package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +215 -62
  200. package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +217 -39
  201. package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +101 -6
  202. package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +157 -27
  203. package/src/components/DataTable/hooks/__tests__/useHierarchicalState.test.ts +80 -0
  204. package/src/components/DataTable/hooks/__tests__/useKeyboardNavigation.test.ts +787 -0
  205. package/src/components/DataTable/hooks/__tests__/useServerSideDataEffect.test.ts +258 -0
  206. package/src/components/DataTable/hooks/__tests__/useTableColumns.test.ts +128 -77
  207. package/src/components/DataTable/hooks/__tests__/useTableHandlers.test.ts +440 -0
  208. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +12 -9
  209. package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +12 -9
  210. package/src/components/DataTable/hooks/useDataTableConfiguration.ts +1 -1
  211. package/src/components/DataTable/hooks/useDataTablePermissions.ts +11 -22
  212. package/src/components/DataTable/hooks/useDataTableState.ts +20 -24
  213. package/src/components/DataTable/hooks/useKeyboardNavigation.ts +5 -5
  214. package/src/components/DataTable/hooks/useServerSideDataEffect.ts +13 -1
  215. package/src/components/DataTable/hooks/useTableColumns.ts +15 -39
  216. package/src/components/DataTable/hooks/useTableHandlers.ts +8 -20
  217. package/src/components/DataTable/index.ts +24 -2
  218. package/src/components/DataTable/types.ts +6 -3
  219. package/src/components/DataTable/utils/__tests__/a11yUtils.test.ts +3 -67
  220. package/src/components/DataTable/utils/__tests__/aggregationUtils.test.ts +288 -0
  221. package/src/components/DataTable/utils/__tests__/errorHandling.test.ts +3 -60
  222. package/src/components/DataTable/utils/__tests__/flexibleImport.test.ts +1 -1
  223. package/src/components/DataTable/utils/__tests__/hierarchicalSorting.test.ts +9 -21
  224. package/src/components/DataTable/utils/__tests__/hierarchicalUtils.test.ts +102 -86
  225. package/src/components/DataTable/utils/__tests__/paginationUtils.test.ts +593 -0
  226. package/src/components/DataTable/utils/__tests__/rowUtils.test.ts +33 -49
  227. package/src/components/DataTable/utils/__tests__/selectFieldUtils.test.ts +1 -0
  228. package/src/components/DataTable/utils/a11yUtils.ts +1 -1
  229. package/src/components/DataTable/utils/aggregationUtils.ts +5 -5
  230. package/src/components/DataTable/utils/errorHandling.ts +3 -1
  231. package/src/components/DataTable/utils/exportUtils.ts +1 -1
  232. package/src/components/DataTable/utils/flexibleImport.ts +2 -2
  233. package/src/components/DataTable/utils/hierarchicalSorting.ts +3 -3
  234. package/src/components/DataTable/utils/paginationUtils.ts +1 -1
  235. package/src/components/DataTable/utils/performanceUtils.ts +1 -1
  236. package/src/components/DataTable/utils/selectFieldUtils.ts +0 -7
  237. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +17 -24
  238. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +1 -1
  239. package/src/components/DateTimeField/DateTimeField.test.tsx +2 -15
  240. package/src/components/DateTimeField/DateTimeField.tsx +1 -1
  241. package/src/components/Dialog/Dialog.test.tsx +2007 -407
  242. package/src/components/Dialog/Dialog.tsx +97 -192
  243. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +2 -62
  244. package/src/components/ErrorBoundary/ErrorBoundaryContext.context.ts +17 -0
  245. package/src/components/ErrorBoundary/ErrorBoundaryContext.tsx +2 -45
  246. package/src/components/ErrorBoundary/ErrorBoundaryContext.types.ts +41 -0
  247. package/src/components/ErrorBoundary/index.ts +3 -4
  248. package/src/components/ErrorBoundary/useErrorBoundaryContext.ts +20 -0
  249. package/src/components/FileDisplay/FileDisplay.test.tsx +454 -222
  250. package/src/components/FileDisplay/FileDisplay.tsx +14 -12
  251. package/src/components/FileDisplay/index.tsx +1 -1
  252. package/src/components/FileUpload/FileUpload.test.tsx +54 -18
  253. package/src/components/FileUpload/FileUpload.tsx +10 -7
  254. package/src/components/FileUpload/index.tsx +1 -1
  255. package/src/components/Footer/Footer.test.tsx +33 -114
  256. package/src/components/Form/Form.test.tsx +388 -68
  257. package/src/components/Form/Form.tsx +57 -42
  258. package/src/components/Header/Header.test.tsx +645 -154
  259. package/src/components/Header/Header.tsx +52 -43
  260. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +35 -76
  261. package/src/components/Input/Input.test.tsx +34 -120
  262. package/src/components/Label/Label.test.tsx +47 -46
  263. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +9 -12
  264. package/src/components/LoginForm/LoginForm.test.tsx +0 -1
  265. package/src/components/NavigationMenu/NavigationMenu.test.tsx +1399 -82
  266. package/src/components/NavigationMenu/NavigationMenu.tsx +2 -2
  267. package/src/components/NavigationMenu/__tests__/useNavigationFiltering.test.ts +1934 -0
  268. package/src/components/NavigationMenu/useNavigationFiltering.ts +5 -15
  269. package/src/components/PaceAppLayout/PaceAppLayout.edge-cases.test.tsx +1307 -0
  270. package/src/components/PaceAppLayout/PaceAppLayout.integration.test.tsx +47 -46
  271. package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +81 -38
  272. package/src/components/PaceAppLayout/PaceAppLayout.security.test.tsx +87 -66
  273. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +245 -39
  274. package/src/components/PaceAppLayout/PaceAppLayout.tsx +14 -20
  275. package/src/components/PaceAppLayout/README.md +0 -9
  276. package/src/components/PaceAppLayout/test-setup.tsx +15 -9
  277. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +759 -3
  278. package/src/components/PaceLoginPage/PaceLoginPage.tsx +2 -3
  279. package/src/components/PasswordChange/PasswordChangeForm.test.tsx +1 -1
  280. package/src/components/Progress/Progress.test.tsx +127 -1
  281. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +1196 -4
  282. package/src/components/ProtectedRoute/ProtectedRoute.tsx +24 -6
  283. package/src/components/PublicLayout/PublicLayout.test.tsx +1435 -14
  284. package/src/components/PublicLayout/PublicPageContext.ts +28 -0
  285. package/src/components/PublicLayout/PublicPageLayout.tsx +6 -6
  286. package/src/components/PublicLayout/PublicPageProvider.tsx +2 -41
  287. package/src/components/PublicLayout/usePublicPageContext.ts +36 -0
  288. package/src/components/Select/Select.test.tsx +46 -9
  289. package/src/components/Select/Select.tsx +31 -24
  290. package/src/components/Select/__tests__/context.test.tsx +56 -0
  291. package/src/components/Select/hooks/__tests__/useSelectEvents.test.ts +279 -0
  292. package/src/components/Select/hooks/__tests__/useSelectSearch.test.tsx +295 -0
  293. package/src/components/Select/hooks/__tests__/useSelectState.test.ts +254 -0
  294. package/src/components/Select/hooks/useSelectState.ts +16 -16
  295. package/src/components/Select/types.ts +3 -0
  296. package/src/components/Select/utils/__tests__/text.test.tsx +104 -0
  297. package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +28 -112
  298. package/src/components/Switch/Switch.test.tsx +57 -153
  299. package/src/components/Table/Table.test.tsx +47 -317
  300. package/src/components/Tabs/Tabs.tsx +3 -3
  301. package/src/components/Textarea/Textarea.test.tsx +11 -38
  302. package/src/components/Toast/Toast.test.tsx +78 -569
  303. package/src/components/Tooltip/Tooltip.test.tsx +4 -21
  304. package/src/components/UserMenu/UserMenu.test.tsx +1 -21
  305. package/src/components/UserMenu/UserMenu.tsx +0 -1
  306. package/src/components/__tests__/index.test.ts +346 -0
  307. package/src/components/index.ts +12 -1
  308. package/src/constants/__tests__/performance.test.ts +91 -0
  309. package/src/hooks/__tests__/ServiceHooks.test.tsx +239 -129
  310. package/src/hooks/__tests__/hooks.integration.test.tsx +4 -3
  311. package/src/hooks/__tests__/useApiFetch.unit.test.ts +1 -1
  312. package/src/hooks/__tests__/useAppConfig.unit.test.ts +88 -29
  313. package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +282 -98
  314. package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +53 -109
  315. package/src/hooks/__tests__/useDataTableState.test.ts +143 -49
  316. package/src/hooks/__tests__/useDebounce.unit.test.ts +94 -19
  317. package/src/hooks/__tests__/useEvents.unit.test.ts +100 -125
  318. package/src/hooks/__tests__/useFileDisplay.test.ts +540 -0
  319. package/src/hooks/__tests__/useFileDisplay.unit.test.ts +1 -4
  320. package/src/hooks/__tests__/useFileUrl.unit.test.ts +27 -247
  321. package/src/hooks/__tests__/useFileUrlCache.test.ts +246 -56
  322. package/src/hooks/__tests__/useFocusManagement.unit.test.ts +442 -68
  323. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +345 -560
  324. package/src/hooks/__tests__/useFormDialog.test.ts +51 -222
  325. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +1 -1
  326. package/src/hooks/__tests__/useKeyboardShortcuts.unit.test.ts +1 -4
  327. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +0 -1
  328. package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +1 -1
  329. package/src/hooks/__tests__/usePermissionCache.test.ts +506 -0
  330. package/src/hooks/__tests__/usePreventTabReload.test.ts +255 -36
  331. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +17 -8
  332. package/src/hooks/__tests__/usePublicEvent.test.ts +16 -24
  333. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +12 -4
  334. package/src/hooks/__tests__/usePublicFileDisplay.test.ts +3 -6
  335. package/src/hooks/__tests__/usePublicRouteParams.unit.test.ts +1 -2
  336. package/src/hooks/__tests__/useQueryCache.test.ts +313 -66
  337. package/src/hooks/__tests__/useSessionDraft.test.ts +496 -103
  338. package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +2 -2
  339. package/src/hooks/__tests__/useStorage.unit.test.ts +72 -102
  340. package/src/hooks/__tests__/useToast.test.ts +413 -0
  341. package/src/hooks/__tests__/useToast.unit.test.tsx +1 -1
  342. package/src/hooks/__tests__/useZodForm.unit.test.tsx +175 -21
  343. package/src/hooks/index.ts +13 -1
  344. package/src/hooks/public/usePublicEvent.test.ts +304 -0
  345. package/src/hooks/public/usePublicEvent.ts +11 -11
  346. package/src/hooks/public/usePublicEventLogo.test.ts +655 -120
  347. package/src/hooks/public/usePublicEventLogo.ts +2 -2
  348. package/src/hooks/public/usePublicFileDisplay.test.ts +723 -0
  349. package/src/hooks/public/usePublicFileDisplay.ts +79 -49
  350. package/src/hooks/public/usePublicRouteParams.test.ts +595 -0
  351. package/src/hooks/public/usePublicRouteParams.ts +2 -2
  352. package/src/hooks/services/useAuthService.ts +1 -1
  353. package/src/hooks/services/useEventService.ts +1 -1
  354. package/src/hooks/useAccessibleApps.test.ts +400 -0
  355. package/src/hooks/useAccessibleApps.ts +264 -0
  356. package/src/hooks/useAddressAutocomplete.test.ts +165 -42
  357. package/src/hooks/useAddressAutocomplete.ts +41 -28
  358. package/src/hooks/useAppConfig.ts +13 -3
  359. package/src/hooks/useDataTablePerformance.ts +13 -12
  360. package/src/hooks/useDataTableState.ts +5 -5
  361. package/src/hooks/useEventTheme.test.ts +66 -17
  362. package/src/hooks/useEventTheme.ts +1 -1
  363. package/src/hooks/useEvents.ts +8 -1
  364. package/src/hooks/useFileDisplay.ts +66 -33
  365. package/src/hooks/useFileReference.test.ts +365 -87
  366. package/src/hooks/useFileReference.ts +2 -6
  367. package/src/hooks/useFileUrlCache.ts +4 -1
  368. package/src/hooks/useFormDialog.ts +2 -2
  369. package/src/hooks/useInactivityTracker.ts +3 -3
  370. package/src/hooks/useOrganisationPermissions.test.ts +1 -2
  371. package/src/hooks/useOrganisationPermissions.ts +1 -4
  372. package/src/hooks/useOrganisationSecurity.test.ts +1 -30
  373. package/src/hooks/useOrganisationSecurity.ts +3 -3
  374. package/src/hooks/useOrganisations.ts +1 -1
  375. package/src/hooks/usePerformanceMonitor.ts +1 -1
  376. package/src/hooks/usePermissionCache.ts +2 -6
  377. package/src/hooks/useQueryCache.ts +7 -7
  378. package/src/hooks/useSessionDraft.ts +14 -11
  379. package/src/hooks/useSessionRestoration.ts +1 -1
  380. package/src/hooks/useStorage.ts +75 -40
  381. package/src/hooks/useToast.ts +2 -2
  382. package/src/hooks/useZodForm.ts +3 -3
  383. package/src/icons/__tests__/index.test.ts +133 -0
  384. package/src/icons/index.ts +1 -1
  385. package/src/index.ts +43 -4
  386. package/src/providers/OrganisationProvider.test.tsx +40 -0
  387. package/src/providers/OrganisationProvider.tsx +5 -5
  388. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +7 -12
  389. package/src/providers/__tests__/AuthProvider.test.tsx +22 -91
  390. package/src/providers/__tests__/EventProvider.test.tsx +16 -80
  391. package/src/providers/__tests__/InactivityProvider.test.tsx +29 -173
  392. package/src/providers/__tests__/OrganisationProvider.test.tsx +4 -5
  393. package/src/providers/__tests__/OrganisationProvider.wrapper.test.tsx +591 -0
  394. package/src/providers/__tests__/ProviderLifecycle.test.tsx +80 -196
  395. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +40 -133
  396. package/src/providers/__tests__/index.test.ts +138 -0
  397. package/src/providers/services/AuthServiceContext.ts +27 -0
  398. package/src/providers/services/AuthServiceProvider.tsx +81 -20
  399. package/src/providers/services/EventServiceContext.ts +25 -0
  400. package/src/providers/services/EventServiceProvider.tsx +11 -20
  401. package/src/providers/services/InactivityServiceContext.ts +25 -0
  402. package/src/providers/services/InactivityServiceProvider.tsx +7 -17
  403. package/src/providers/services/OrganisationServiceContext.ts +25 -0
  404. package/src/providers/services/OrganisationServiceProvider.tsx +7 -17
  405. package/src/providers/services/UnifiedAuthContext.ts +99 -0
  406. package/src/providers/services/UnifiedAuthProvider.test.tsx +212 -0
  407. package/src/providers/services/UnifiedAuthProvider.tsx +38 -143
  408. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +61 -95
  409. package/src/providers/services/__tests__/AuthServiceProvider.test.tsx +638 -0
  410. package/src/providers/services/__tests__/EventServiceProvider.test.tsx +839 -0
  411. package/src/providers/services/__tests__/InactivityServiceProvider.test.tsx +662 -0
  412. package/src/providers/services/__tests__/OrganisationServiceProvider.test.tsx +440 -0
  413. package/src/providers/services/__tests__/UnifiedAuthProvider.advanced.test.tsx +435 -0
  414. package/src/providers/services/__tests__/UnifiedAuthProvider.appId.test.tsx +408 -0
  415. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +55 -48
  416. package/src/providers/services/__tests__/contexts.test.tsx +281 -0
  417. package/src/providers/services/__tests__/useUnifiedAuth.test.tsx +251 -0
  418. package/src/providers/services/useUnifiedAuth.ts +29 -0
  419. package/src/rbac/README.md +5 -5
  420. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +9 -14
  421. package/src/rbac/__tests__/audit-batched.test.ts +550 -0
  422. package/src/rbac/__tests__/auth-rbac-security.integration.test.tsx +1 -14
  423. package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +43 -12
  424. package/src/rbac/__tests__/cache-invalidation.test.ts +8 -14
  425. package/src/rbac/__tests__/engine.comprehensive.test.ts +2 -7
  426. package/src/rbac/__tests__/index.test.ts +107 -0
  427. package/src/rbac/__tests__/performance.test.ts +451 -0
  428. package/src/rbac/__tests__/rbac-core.test.tsx +2 -2
  429. package/src/rbac/__tests__/rbac-engine-core-logic.test.ts +0 -5
  430. package/src/rbac/__tests__/rbac-engine-simplified.test.ts +1 -7
  431. package/src/rbac/__tests__/rbac-functions.test.ts +0 -1
  432. package/src/rbac/__tests__/rbac-integration.test.ts +0 -1
  433. package/src/rbac/__tests__/scenarios.user-role.test.tsx +21 -32
  434. package/src/rbac/adapters.test.tsx +654 -0
  435. package/src/rbac/adapters.tsx +24 -9
  436. package/src/rbac/api.test.ts +13 -217
  437. package/src/rbac/api.ts +85 -16
  438. package/src/rbac/audit-batched.ts +5 -4
  439. package/src/rbac/audit.test.ts +225 -28
  440. package/src/rbac/audit.ts +22 -17
  441. package/src/rbac/cache-invalidation.ts +18 -15
  442. package/src/rbac/cache.test.ts +123 -63
  443. package/src/rbac/cache.ts +3 -4
  444. package/src/rbac/components/AccessDenied.tsx +20 -18
  445. package/src/rbac/components/NavigationGuard.tsx +10 -8
  446. package/src/rbac/components/PagePermissionGuard.tsx +27 -25
  447. package/src/rbac/components/__tests__/AccessDenied.test.tsx +324 -0
  448. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +242 -71
  449. package/src/rbac/components/__tests__/PagePermissionGuard.performance.test.tsx +20 -37
  450. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +18 -17
  451. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +452 -129
  452. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +14 -13
  453. package/src/rbac/config.test.ts +131 -48
  454. package/src/rbac/config.ts +11 -8
  455. package/src/rbac/docs/event-based-apps.md +26 -13
  456. package/src/rbac/engine.test.ts +496 -146
  457. package/src/rbac/engine.ts +53 -13
  458. package/src/rbac/errors.test.ts +99 -87
  459. package/src/rbac/eslint-rules.js +2 -2
  460. package/src/rbac/hooks/__tests__/usePermissions.integration.test.ts +0 -5
  461. package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +601 -1
  462. package/src/rbac/hooks/permissions/__tests__/useAccessLevel.test.ts +622 -0
  463. package/src/rbac/hooks/permissions/__tests__/useCan.test.ts +798 -0
  464. package/src/rbac/hooks/permissions/__tests__/useMultiplePermissions.test.ts +843 -0
  465. package/src/rbac/hooks/permissions/__tests__/usePermissions.test.ts +545 -0
  466. package/src/rbac/hooks/permissions/useAccessLevel.ts +7 -8
  467. package/src/rbac/hooks/permissions/useCan.ts +12 -10
  468. package/src/rbac/hooks/permissions/useMultiplePermissions.ts +57 -8
  469. package/src/rbac/hooks/permissions/usePermissions.ts +15 -14
  470. package/src/rbac/hooks/useCan.test.ts +319 -3
  471. package/src/rbac/hooks/usePermissions.test.ts +426 -0
  472. package/src/rbac/hooks/usePermissions.ts +5 -7
  473. package/src/rbac/hooks/useRBAC.test.ts +1669 -2
  474. package/src/rbac/hooks/useRBAC.ts +7 -11
  475. package/src/rbac/hooks/useResolvedScope.test.ts +442 -5
  476. package/src/rbac/hooks/useResolvedScope.ts +4 -1
  477. package/src/rbac/hooks/useResourcePermissions.test.ts +538 -1
  478. package/src/rbac/hooks/useResourcePermissions.ts +9 -7
  479. package/src/rbac/hooks/useRoleManagement.test.ts +659 -1
  480. package/src/rbac/hooks/useRoleManagement.ts +16 -12
  481. package/src/rbac/hooks/useSecureSupabase.ts +11 -12
  482. package/src/rbac/index.ts +32 -32
  483. package/src/rbac/permissions.test.ts +149 -68
  484. package/src/rbac/permissions.ts +0 -3
  485. package/src/rbac/request-deduplication.test.ts +347 -0
  486. package/src/rbac/secureClient.test.ts +112 -159
  487. package/src/rbac/secureClient.ts +46 -26
  488. package/src/rbac/security.test.ts +125 -44
  489. package/src/rbac/security.ts +7 -6
  490. package/src/rbac/types.test.ts +236 -0
  491. package/src/rbac/types.ts +7 -5
  492. package/src/rbac/utils/__tests__/clientSecurity.test.ts +192 -0
  493. package/src/rbac/utils/__tests__/contextValidator.test.ts +1 -3
  494. package/src/rbac/utils/__tests__/deep-equal.test.ts +23 -0
  495. package/src/rbac/utils/__tests__/eventContext.test.ts +10 -57
  496. package/src/rbac/utils/clientSecurity.ts +6 -4
  497. package/src/rbac/utils/contextValidator.ts +1 -2
  498. package/src/rbac/utils/eventContext.ts +2 -2
  499. package/src/services/AuthService.ts +13 -11
  500. package/src/services/EventService.ts +4 -5
  501. package/src/services/OrganisationService.ts +13 -30
  502. package/src/services/__tests__/AuthService.edge-cases.test.ts +746 -0
  503. package/src/services/__tests__/AuthService.restoreSession.test.ts +23 -3
  504. package/src/services/__tests__/AuthService.test.ts +4 -8
  505. package/src/services/__tests__/BaseService.edge-cases.test.ts +506 -0
  506. package/src/services/__tests__/BaseService.test.ts +49 -0
  507. package/src/services/__tests__/EventService.edge-cases.test.ts +633 -0
  508. package/src/services/__tests__/EventService.eventColours.test.ts +0 -12
  509. package/src/services/__tests__/EventService.test.ts +0 -7
  510. package/src/services/__tests__/InactivityService.edge-cases.test.ts +492 -0
  511. package/src/services/__tests__/InactivityService.lifecycle.test.ts +0 -5
  512. package/src/services/__tests__/OrganisationService.edge-cases.test.ts +633 -0
  513. package/src/services/base/BaseService.test.ts +214 -0
  514. package/src/services/interfaces/IOrganisationService.ts +0 -1
  515. package/src/services/interfaces/__tests__/IAuthService.test.ts +190 -0
  516. package/src/services/interfaces/__tests__/IEventService.test.ts +176 -0
  517. package/src/services/interfaces/__tests__/IInactivityService.test.ts +183 -0
  518. package/src/services/interfaces/__tests__/IOrganisationService.test.ts +207 -0
  519. package/src/styles/core.css +1 -0
  520. package/src/theming/__tests__/runtime.test.ts +29 -94
  521. package/src/theming/parseEventColours.ts +18 -9
  522. package/src/theming/runtime.ts +1 -5
  523. package/src/types/__tests__/core.test.ts +397 -0
  524. package/src/types/__tests__/database-generated.test.ts +78 -0
  525. package/src/types/__tests__/file-reference.test.ts +270 -366
  526. package/src/types/__tests__/guards.test.ts +26 -26
  527. package/src/types/__tests__/index.test.ts +265 -0
  528. package/src/types/__tests__/type-validation.test.ts +3 -3
  529. package/src/types/__tests__/validation.test.ts +0 -2
  530. package/src/types/auth.ts +0 -1
  531. package/src/types/event.ts +1 -1
  532. package/src/types/rpc-responses.ts +33 -0
  533. package/src/types/supabase.ts +1 -2
  534. package/src/types/vitest-globals.d.ts +1 -1
  535. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +64 -77
  536. package/src/utils/__tests__/dynamicUtils.unit.test.ts +13 -0
  537. package/src/utils/__tests__/formatDate.unit.test.ts +1 -1
  538. package/src/utils/__tests__/lazyLoad.unit.test.tsx +0 -1
  539. package/src/utils/__tests__/logger.unit.test.ts +1 -1
  540. package/src/utils/__tests__/performanceBenchmark.test.ts +1 -2
  541. package/src/utils/__tests__/performanceBudgets.unit.test.ts +48 -13
  542. package/src/utils/__tests__/request-deduplication.test.ts +349 -0
  543. package/src/utils/__tests__/secureDataAccess.unit.test.ts +0 -1
  544. package/src/utils/__tests__/timezone.test.ts +1 -1
  545. package/src/utils/__tests__/validation.unit.test.ts +1 -2
  546. package/src/utils/__tests__/validationUtils.unit.test.ts +1 -1
  547. package/src/utils/app/appConfig.test.ts +235 -0
  548. package/src/utils/app/appIdResolver.test.ts +188 -20
  549. package/src/utils/app/appNameResolver.test.ts +18 -10
  550. package/src/utils/app/appNameResolver.ts +11 -9
  551. package/src/utils/app/appPortMap.test.ts +125 -0
  552. package/src/utils/app/appPortMap.ts +51 -0
  553. package/src/utils/app/buildAppUrl.test.ts +273 -0
  554. package/src/utils/app/buildAppUrl.ts +114 -0
  555. package/src/utils/audit/audit.test.ts +354 -39
  556. package/src/utils/context/organisationContext.test.ts +10 -4
  557. package/src/utils/context/organisationContext.ts +5 -5
  558. package/src/utils/context/sessionTracking.test.ts +354 -0
  559. package/src/utils/core/__tests__/cn.test.ts +66 -0
  560. package/src/utils/core/__tests__/debugLogger.test.ts +113 -0
  561. package/src/utils/core/__tests__/logger.test.ts +217 -0
  562. package/src/utils/core/debugLogger.ts +15 -8
  563. package/src/utils/core/logger.ts +20 -16
  564. package/src/utils/device/deviceFingerprint.test.ts +8 -5
  565. package/src/utils/device/deviceFingerprint.ts +3 -3
  566. package/src/utils/dynamic/__tests__/dynamicUtils.test.ts +185 -0
  567. package/src/utils/dynamic/__tests__/lazyLoad.test.tsx +156 -0
  568. package/src/utils/dynamic/createLazyComponent.tsx +38 -0
  569. package/src/utils/dynamic/dynamicUtils.ts +6 -6
  570. package/src/utils/dynamic/lazyLoad.tsx +8 -36
  571. package/src/utils/dynamic/papaparseLoader.ts +7 -0
  572. package/src/utils/file-reference/__tests__/file-reference.test.ts +583 -145
  573. package/src/utils/file-reference/index.ts +0 -1
  574. package/src/utils/formatting/formatDate.test.ts +22 -148
  575. package/src/utils/formatting/formatDateTime.test.ts +41 -119
  576. package/src/utils/formatting/formatDateTimeTimezone.test.ts +40 -84
  577. package/src/utils/formatting/formatNumber.test.ts +259 -0
  578. package/src/utils/formatting/formatTime.test.ts +36 -128
  579. package/src/utils/formatting/formatting.ts +1 -1
  580. package/src/utils/google-places/googlePlacesUtils.test.ts +72 -3
  581. package/src/utils/google-places/googlePlacesUtils.ts +15 -2
  582. package/src/utils/google-places/loadGoogleMapsScript.test.ts +58 -1
  583. package/src/utils/google-places/loadGoogleMapsScript.ts +2 -1
  584. package/src/utils/index.ts +52 -11
  585. package/src/utils/location/location.test.ts +18 -115
  586. package/src/utils/performance/__tests__/bundleAnalysis.test.ts +148 -0
  587. package/src/utils/performance/__tests__/performanceBenchmark.test.ts +251 -0
  588. package/src/utils/performance/__tests__/performanceBudgets.test.ts +241 -0
  589. package/src/utils/performance/bundleAnalysis.ts +16 -22
  590. package/src/utils/performance/performanceBenchmark.ts +12 -4
  591. package/src/utils/performance/performanceBudgets.ts +9 -6
  592. package/src/utils/permissions/__tests__/permissionTypes.test.ts +149 -0
  593. package/src/utils/permissions/permissionUtils.test.ts +20 -42
  594. package/src/utils/persistence/__tests__/keyDerivation.test.ts +180 -9
  595. package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +164 -16
  596. package/src/utils/persistence/sensitiveFieldDetection.ts +2 -2
  597. package/src/utils/request-deduplication.ts +6 -4
  598. package/src/utils/security/auth-utils.ts +7 -7
  599. package/src/utils/security/secureDataAccess.test.ts +22 -191
  600. package/src/utils/security/secureErrors.test.ts +163 -0
  601. package/src/utils/security/secureStorage.test.ts +156 -0
  602. package/src/utils/security/secureStorage.ts +1 -1
  603. package/src/utils/security/security.test.ts +204 -0
  604. package/src/utils/security/securityMonitor.test.ts +90 -0
  605. package/src/utils/security/securityMonitor.ts +1 -1
  606. package/src/utils/storage/__tests__/config.unit.test.ts +239 -0
  607. package/src/utils/storage/__tests__/index.unit.test.ts +64 -12
  608. package/src/utils/storage/helpers.test.ts +757 -430
  609. package/src/utils/storage/helpers.ts +1 -2
  610. package/src/utils/storage/{index.ts → storageUtils.ts} +1 -36
  611. package/src/utils/storage/types.ts +2 -2
  612. package/src/utils/supabase/createBaseClient.test.ts +201 -0
  613. package/src/utils/supabase/createBaseClient.ts +2 -1
  614. package/src/utils/timezone/timezone.test.ts +25 -43
  615. package/src/utils/validation/__tests__/common.test.ts +115 -0
  616. package/src/utils/validation/__tests__/csrf.test.ts +65 -0
  617. package/src/utils/validation/__tests__/htmlSanitization.unit.test.ts +27 -7
  618. package/src/utils/validation/__tests__/passwordSchema.test.ts +164 -0
  619. package/src/utils/validation/__tests__/schema.test.ts +127 -0
  620. package/src/utils/validation/__tests__/sqlInjectionProtection.test.ts +76 -3
  621. package/src/utils/validation/__tests__/user.test.ts +173 -0
  622. package/src/utils/validation/__tests__/validation.test.ts +197 -0
  623. package/src/utils/validation/__tests__/validationUtils.test.ts +265 -43
  624. package/src/utils/validation/htmlSanitization.ts +27 -31
  625. package/src/utils/validation/schema.ts +6 -3
  626. package/src/utils/validation/sqlInjectionProtection.ts +2 -2
  627. package/src/vite-env.d.ts +6 -0
  628. package/dist/DataTable-DRUIgtUH.d.ts +0 -166
  629. package/dist/UnifiedAuthProvider-7SNDOWYD.js +0 -7
  630. package/dist/audit-MYQXYZFU.js +0 -3
  631. package/dist/chunk-7ILTDCL2.js +0 -80
  632. package/dist/chunk-EF2UGZWY.js +0 -611
  633. package/dist/chunk-FEJLJNWA.js +0 -181
  634. package/dist/chunk-GS5672WG.js +0 -2003
  635. package/dist/chunk-S6ZQKDY6.js +0 -62
  636. package/dist/chunk-Z2FNRKF3.js +0 -994
  637. package/dist/useToast-AyaT-x7p.d.ts +0 -68
  638. package/src/components/DataTable/components/index.ts +0 -16
  639. package/src/components/DataTable/core/index.ts +0 -1
  640. package/src/components/DataTable/hooks/index.ts +0 -13
  641. package/src/components/DataTable/utils/index.ts +0 -10
  642. package/src/components/PublicLayout/index.ts +0 -32
  643. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +0 -192
  644. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +0 -741
  645. package/src/hooks/public/index.ts +0 -36
  646. package/src/hooks/usePermissionCache.test.ts +0 -536
  647. package/src/rbac/__tests__/isSuperAdmin.real.test.ts +0 -82
  648. package/src/rbac/audit-enhanced.ts +0 -384
  649. package/src/rbac/compliance/database-validator.ts +0 -165
  650. package/src/rbac/compliance/index.ts +0 -48
  651. package/src/rbac/compliance/pattern-detector.ts +0 -553
  652. package/src/rbac/compliance/quick-fix-suggestions.ts +0 -209
  653. package/src/rbac/compliance/runtime-compliance.ts +0 -99
  654. package/src/rbac/compliance/setup-validator.ts +0 -131
  655. package/src/rbac/components/index.ts +0 -26
  656. package/src/rbac/hooks/index.ts +0 -34
  657. package/src/rbac/hooks/permissions/index.ts +0 -4
  658. package/src/rbac/hooks/useRBAC.simple.test.ts +0 -95
  659. package/src/rbac/utils/__tests__/eventContext.unit.test.ts +0 -490
  660. package/src/utils/app/appNameResolver.simple.test.ts +0 -212
  661. package/src/utils/google-places/index.ts +0 -26
  662. package/src/utils/location/index.ts +0 -16
  663. package/src/utils/storage/__tests__/helpers.unit.test.ts +0 -332
  664. package/src/utils/timezone/index.ts +0 -17
  665. package/src/utils/validation/index.ts +0 -73
@@ -1,7 +1,7 @@
1
1
  import * as React$1 from 'react';
2
- import React__default, { ReactNode, Component } from 'react';
2
+ import React__default, { ReactNode, Component, ErrorInfo } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { P as ParsedAddress, A as AutocompleteOptions } from './types-DXstZpNI.js';
4
+ import { P as ParsedAddress, A as AutocompleteOptions } from './types-Dr8sNhER.js';
5
5
  import * as LabelPrimitive from '@radix-ui/react-label';
6
6
  import { F as FileCategory, e as FileUploadResult, U as UploadProgress, c as FileUploadOptions, a as FileReference } from './file-reference-BavO2eQj.js';
7
7
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
@@ -10,11 +10,12 @@ import * as TabsPrimitive from '@radix-ui/react-tabs';
10
10
  import { DayPickerProps, DateRange } from 'react-day-picker';
11
11
  import * as ToastPrimitives from '@radix-ui/react-toast';
12
12
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
13
+ import { c as DataRecord, D as DataTableColumn, j as DataTableRBACConfig, h as DataTableFeatureConfig, H as HierarchicalConfig, P as PerformanceConfig, S as ServerSideConfig, e as PaginationMode, C as ChunkingConfig, d as SearchIndexConfig, i as ExportOptions, G as GetRowId, E as EmptyStateConfig, A as AggregateConfig, a as DataTableAction } from './types-D05dCGma.js';
13
14
  import { FieldValues, DefaultValues, SubmitHandler, SubmitErrorHandler, UseFormReturn, FieldPath, ControllerRenderProps, ControllerFieldState, UseFormStateReturn } from 'react-hook-form';
14
15
  import { z } from 'zod';
15
- import { N as NavigationMenuProps, a as NavigationItem } from './types-t9H8qKRw.js';
16
+ import { N as NavigationMenuProps, a as NavigationItem } from './types-BE2sEHKd.js';
16
17
  import { User, SupabaseClient, createClient } from '@supabase/supabase-js';
17
- import { O as Organisation, E as Event } from './event-CW5YB_2p.js';
18
+ import { O as Organisation, E as Event } from './event-WTAQuGcq.js';
18
19
 
19
20
  /**
20
21
  * Button component props
@@ -473,27 +474,27 @@ declare namespace Textarea {
473
474
  * Features:
474
475
  * - Multiple visual variants (default, destructive, inline)
475
476
  * - Title and description support
476
- * - Semantic HTML: renders as `<p>` element with `role="alert"` (default) or custom role
477
+ * - Semantic HTML: renders as `<div>` element with `role="alert"` (default) or custom role
477
478
  * - Keyboard and screen reader accessible
478
479
  * - Composable with icons and actions
479
480
  * - Inline variant for lightweight text formatting
480
481
  *
481
482
  * @example
482
483
  * ```tsx
483
- * // Basic alert (renders as <p role="alert"> with <h5> title and <p> description)
484
+ * // Basic alert (renders as <div role="alert"> with <h5> title and <p> description)
484
485
  * <Alert>
485
486
  * <AlertTitle>Success</AlertTitle>
486
487
  * <AlertDescription>Your changes have been saved.</AlertDescription>
487
488
  * </Alert>
488
489
  *
489
- * // Destructive alert with icon (renders as <p role="alert"> with <h5> title and <p> description)
490
+ * // Destructive alert with icon (renders as <div role="alert"> with <h5> title and <p> description)
490
491
  * <Alert variant="destructive">
491
492
  * <ErrorIcon />
492
493
  * <AlertTitle>Error</AlertTitle>
493
494
  * <AlertDescription>Something went wrong.</AlertDescription>
494
495
  * </Alert>
495
496
  *
496
- * // Status message (renders as <p role="status"> for informational messages)
497
+ * // Status message (renders as <div role="status"> for informational messages)
497
498
  * <Alert role="status" aria-live="polite">
498
499
  * <AlertTitle>No data available</AlertTitle>
499
500
  * <AlertDescription>Get started by adding your first entry.</AlertDescription>
@@ -507,16 +508,16 @@ declare namespace Textarea {
507
508
  * ```
508
509
  *
509
510
  * @accessibility
510
- * - Uses semantic HTML: `<p>` element with `role="alert"` (default) for screen reader announcements
511
+ * - Uses semantic HTML: `<div>` element with `role="alert"` (default) for screen reader announcements
511
512
  * - Can be customized with `role="status"` for informational messages
512
513
  * - Title and description are semantically structured
513
514
  * - Supports keyboard navigation and focus
514
515
  */
515
516
 
516
- declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & {
517
+ declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & {
517
518
  variant?: "default" | "destructive" | "inline";
518
519
  role?: string;
519
- } & React$1.RefAttributes<HTMLParagraphElement>>;
520
+ } & React$1.RefAttributes<HTMLDivElement>>;
520
521
  declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLHeadingElement>>;
521
522
  declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
522
523
 
@@ -959,8 +960,6 @@ interface DialogBodyProps extends React$1.HTMLAttributes<HTMLElement> {
959
960
  htmlContent?: string;
960
961
  /** Whether to allow HTML content rendering (default: true) */
961
962
  allowHtml?: boolean;
962
- /** Whether to use strict HTML sanitization (default: true) */
963
- strictSanitization?: boolean;
964
963
  /** Whether to log HTML sanitization warnings to console (default: false) */
965
964
  logWarnings?: boolean;
966
965
  }
@@ -1008,12 +1007,6 @@ declare const DialogPortal: React$1.FC<DialogPortalProps>;
1008
1007
  * @returns JSX.Element - The semantic dialog content with overlay and optional close button
1009
1008
  */
1010
1009
  declare const DialogContent: React$1.ForwardRefExoticComponent<DialogContentProps & React$1.RefAttributes<HTMLDialogElement>>;
1011
- /**
1012
- * Props for the DialogClose component
1013
- * @public
1014
- */
1015
- interface DialogCloseProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
1016
- }
1017
1010
  /**
1018
1011
  * Props for the DialogClose component
1019
1012
  * @public
@@ -1040,7 +1033,7 @@ declare const DialogHeader: {
1040
1033
  * Semantic main content area for dialog body content with scrollable functionality
1041
1034
  */
1042
1035
  declare const DialogBody: {
1043
- ({ className, maxHeight, style, htmlContent, allowHtml, strictSanitization, logWarnings, children, ...props }: DialogBodyProps): react_jsx_runtime.JSX.Element;
1036
+ ({ className, maxHeight, style, htmlContent, allowHtml, logWarnings, children, ...props }: DialogBodyProps): react_jsx_runtime.JSX.Element;
1044
1037
  displayName: string;
1045
1038
  };
1046
1039
  /**
@@ -1095,6 +1088,8 @@ interface SelectProps extends Omit<React$1.HTMLAttributes<HTMLFieldSetElement>,
1095
1088
  interface SelectTriggerProps extends Omit<ButtonProps, "onClick" | "onKeyDown"> {
1096
1089
  children: React$1.ReactNode;
1097
1090
  asChild?: boolean;
1091
+ /** Whether to show the chevron icon. Defaults to true. */
1092
+ showChevron?: boolean;
1098
1093
  }
1099
1094
  /**
1100
1095
  * Props for the SelectValue component.
@@ -1102,6 +1097,7 @@ interface SelectTriggerProps extends Omit<ButtonProps, "onClick" | "onKeyDown">
1102
1097
  interface SelectValueProps {
1103
1098
  placeholder?: string;
1104
1099
  children?: React$1.ReactNode;
1100
+ className?: string;
1105
1101
  }
1106
1102
  /**
1107
1103
  * Props for the SelectContent component.
@@ -1493,6 +1489,83 @@ interface CalendarProps extends Omit<DayPickerProps, 'className' | 'classNames'
1493
1489
  */
1494
1490
  declare const Calendar: React$1.ForwardRefExoticComponent<CalendarProps & React$1.RefAttributes<HTMLTableElement>>;
1495
1491
 
1492
+ /**
1493
+ * @file DatePickerWithTimezone Component
1494
+ * @package @jmruthers/pace-core
1495
+ * @module Components/DatePickerWithTimezone
1496
+ * @since 0.1.0
1497
+ *
1498
+ * Date picker component that displays timezone information alongside the calendar.
1499
+ * Provides a calendar interface with timezone context for date selection.
1500
+ *
1501
+ * Features:
1502
+ * - Calendar date selection with dropdown month/year navigation
1503
+ * - Timezone display (shows "Local" when matches user timezone)
1504
+ * - Optional "Done" button
1505
+ * - Accessible date selection
1506
+ * - Keyboard navigation support
1507
+ * - Wide date range support (1900-2100) via dropdown selectors
1508
+ *
1509
+ * @example
1510
+ * ```tsx
1511
+ * import { DatePickerWithTimezone } from '@jmruthers/pace-core/components';
1512
+ * import { useState } from 'react';
1513
+ *
1514
+ * function DateSelector() {
1515
+ * const [date, setDate] = useState<Date>();
1516
+ *
1517
+ * return (
1518
+ * <DatePickerWithTimezone
1519
+ * selected={date}
1520
+ * onSelect={setDate}
1521
+ * timezone="America/New_York"
1522
+ * onDone={() => console.log('Date selected')}
1523
+ * />
1524
+ * );
1525
+ * }
1526
+ * ```
1527
+ *
1528
+ * @accessibility
1529
+ * - WCAG 2.1 AA compliant
1530
+ * - Keyboard navigation support
1531
+ * - Screen reader friendly
1532
+ * - Focus management
1533
+ * - Proper ARIA attributes
1534
+ */
1535
+ /**
1536
+ * Props for the DatePickerWithTimezone component
1537
+ */
1538
+ interface DatePickerWithTimezoneProps {
1539
+ /**
1540
+ * Currently selected date
1541
+ */
1542
+ selected?: Date;
1543
+ /**
1544
+ * Date selection handler
1545
+ */
1546
+ onSelect: (date: Date | undefined) => void;
1547
+ /**
1548
+ * Optional callback when "Done" button is clicked
1549
+ */
1550
+ onDone?: () => void;
1551
+ /**
1552
+ * Timezone to display (defaults to user's timezone)
1553
+ */
1554
+ timezone?: string;
1555
+ /**
1556
+ * Additional CSS classes
1557
+ */
1558
+ className?: string;
1559
+ }
1560
+ /**
1561
+ * DatePickerWithTimezone component
1562
+ * Date picker with timezone information display
1563
+ *
1564
+ * @param props - DatePickerWithTimezone configuration
1565
+ * @returns JSX.Element - The rendered date picker with timezone
1566
+ */
1567
+ declare function DatePickerWithTimezone({ selected, onSelect, onDone, timezone, className }: DatePickerWithTimezoneProps): react_jsx_runtime.JSX.Element;
1568
+
1496
1569
  declare const ToastProvider: React$1.FC<ToastPrimitives.ToastProviderProps>;
1497
1570
  /**
1498
1571
  * ToastViewport component
@@ -1726,6 +1799,167 @@ interface TooltipProps {
1726
1799
  */
1727
1800
  declare const Tooltip: React$1.ForwardRefExoticComponent<TooltipProps & React$1.RefAttributes<HTMLButtonElement>>;
1728
1801
 
1802
+ /**
1803
+ * Configuration interface for customizing ImportModal text content
1804
+ * @public
1805
+ */
1806
+ interface ImportModalConfig {
1807
+ /** Custom title for the import modal */
1808
+ title?: string;
1809
+ /** Custom description text shown below the title */
1810
+ description?: string;
1811
+ /** Custom text shown in the file upload area when no file is selected */
1812
+ uploadText?: string;
1813
+ /** Custom text for the file selection button */
1814
+ selectFileButtonText?: string;
1815
+ /** Custom text for the import button */
1816
+ importButtonText?: string;
1817
+ /** Custom text for the import button when processing */
1818
+ importButtonProcessingText?: string;
1819
+ /** Custom text for the cancel button */
1820
+ cancelButtonText?: string;
1821
+ /** Custom text for the preview section header */
1822
+ previewHeaderText?: string;
1823
+ /** Custom text pattern for total rows display. Use {count} as placeholder for the actual count */
1824
+ totalRowsText?: string;
1825
+ }
1826
+
1827
+ /**
1828
+ * Enhanced DataTable props with performance features
1829
+ * @template TData - The type of data records in the table
1830
+ */
1831
+ interface DataTableProps<TData extends DataRecord> {
1832
+ /** Array of data records to display in the table */
1833
+ data: TData[];
1834
+ /** Column definitions for the table */
1835
+ columns: DataTableColumn<TData>[];
1836
+ /** RBAC configuration - REQUIRED for all DataTables */
1837
+ rbac: DataTableRBACConfig;
1838
+ /** Optional title displayed above the table */
1839
+ title?: string;
1840
+ /** Optional description displayed below the title */
1841
+ description?: string;
1842
+ /** Visual variant of the table */
1843
+ variant?: 'default' | 'compact' | 'spacious';
1844
+ /** Additional CSS classes for the table container */
1845
+ className?: string;
1846
+ /** Feature configuration - all features are disabled by default */
1847
+ features?: DataTableFeatureConfig;
1848
+ /** Hierarchical parent/child row configuration */
1849
+ hierarchical?: HierarchicalConfig;
1850
+ /** Performance optimization configuration */
1851
+ performance?: PerformanceConfig;
1852
+ /** Server-side data fetching configuration */
1853
+ serverSide?: ServerSideConfig<TData>;
1854
+ /** Override automatic pagination mode detection */
1855
+ paginationMode?: PaginationMode;
1856
+ /** Data chunking configuration for memory optimization */
1857
+ chunking?: ChunkingConfig;
1858
+ /** Search indexing configuration for fast search */
1859
+ searchIndex?: SearchIndexConfig;
1860
+ /** Virtual scrolling height */
1861
+ virtualHeight?: number;
1862
+ /** Initial page size for pagination */
1863
+ initialPageSize?: number;
1864
+ /** Initial grouping configuration - columns to group by on load */
1865
+ defaultGrouping?: string[];
1866
+ /** Initial sorting configuration - sort state to apply on load */
1867
+ defaultSorting?: Array<{
1868
+ id: string;
1869
+ desc: boolean;
1870
+ }>;
1871
+ /** Enable enhanced pagination controls */
1872
+ enhancedPagination?: boolean;
1873
+ /** Custom loading component */
1874
+ loadingComponent?: React__default.ComponentType;
1875
+ /** Custom error component */
1876
+ errorComponent?: React__default.ComponentType<{
1877
+ error: Error;
1878
+ retry: () => void;
1879
+ }>;
1880
+ /** Callback when a row is edited */
1881
+ onEditRow?: (row: TData, data: Partial<TData>) => void;
1882
+ /** Callback when a row is deleted */
1883
+ onDeleteRow?: (row: TData) => void;
1884
+ /** Callback when a new row is created */
1885
+ onCreateRow?: (data: Partial<TData>) => void;
1886
+ /** Callback when data is imported */
1887
+ onImport?: (data: TData[]) => void | Promise<void>;
1888
+ /** Callback for custom export functionality */
1889
+ onExport?: (options: ExportOptions<TData>) => void | Promise<void>;
1890
+ /** Callback when row selection changes */
1891
+ onRowSelectionChange?: (selection: Record<string, boolean>) => void;
1892
+ /** Controlled selection state */
1893
+ selection?: Record<string, boolean>;
1894
+ /** Callback when bulk delete selected rows is triggered */
1895
+ onDeleteSelected?: (selectedRows: Record<string, boolean>) => void;
1896
+ /** Function to generate unique row IDs */
1897
+ getRowId?: GetRowId<TData>;
1898
+ /** Whether the table is in a loading state */
1899
+ isLoading?: boolean;
1900
+ /** Custom component to display when table is empty */
1901
+ emptyState?: EmptyStateConfig | React__default.ReactElement;
1902
+ /** Array of aggregation functions for grouped data */
1903
+ aggregates?: AggregateConfig[];
1904
+ /** Import modal configuration */
1905
+ importModalConfig?: ImportModalConfig;
1906
+ /** Custom row actions - use this for custom action buttons */
1907
+ actions?: DataTableAction<TData>[];
1908
+ /** Column order configuration - array of column IDs in desired order */
1909
+ columnOrder?: string[];
1910
+ /** Unique storage key for persisting table layout state across sessions */
1911
+ storageKey?: string;
1912
+ /** Callback when table layout changes (column order, visibility, etc.) */
1913
+ onLayoutChange?: (layout: {
1914
+ columnOrder: string[];
1915
+ columnVisibility: Record<string, boolean>;
1916
+ }) => void;
1917
+ }
1918
+ /**
1919
+ * Enhanced DataTable with comprehensive performance optimizations
1920
+ *
1921
+ * This component automatically detects dataset size and applies appropriate performance optimizations:
1922
+ * - < 1,000 records: Standard rendering with full feature support
1923
+ * - 1,000+ records: Automatic virtual scrolling with intelligent memory management
1924
+ * - 10,000+ records: Enhanced chunking and memory optimization
1925
+ * - 100,000+ records: Advanced server-side processing with virtualization
1926
+ *
1927
+ * Features are configured through the unified `features` prop for maximum flexibility.
1928
+ */
1929
+ /**
1930
+ * Enhanced DataTable component with performance optimizations and comprehensive features.
1931
+ *
1932
+ * This is the main entry point for the DataTable component. It wraps DataTableCore
1933
+ * and provides feature normalization and validation.
1934
+ *
1935
+ * @template TData - The type of data records in the table
1936
+ * @param props - DataTable configuration including data, columns, features, and RBAC
1937
+ * @returns The rendered DataTable component
1938
+ *
1939
+ * @example
1940
+ * ```tsx
1941
+ * <DataTable
1942
+ * data={users}
1943
+ * columns={userColumns}
1944
+ * rbac={{ pageId: 'user-management' }}
1945
+ * features={{
1946
+ * search: true,
1947
+ * pagination: true,
1948
+ * sorting: true
1949
+ * }}
1950
+ * />
1951
+ * ```
1952
+ */
1953
+ /**
1954
+ * Comprehensive, feature-rich data table component built on top of TanStack Table.
1955
+ * Provides advanced data management capabilities with a clean, accessible interface.
1956
+ *
1957
+ * @template TData - The type of data records in the table
1958
+ * @param props - DataTable configuration and props
1959
+ * @returns The rendered DataTable component
1960
+ */
1961
+ declare function DataTable<TData extends DataRecord>(props: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
1962
+
1729
1963
  /**
1730
1964
  * Props for the Form component
1731
1965
  */
@@ -1831,7 +2065,7 @@ interface FormFieldProps<TFieldValues extends FieldValues = FieldValues, TName e
1831
2065
  field: ControllerRenderProps<TFieldValues, TName>;
1832
2066
  fieldState: ControllerFieldState;
1833
2067
  formState: UseFormStateReturn<TFieldValues>;
1834
- }) => React__default.ReactElement<any>;
2068
+ }) => React__default.ReactElement;
1835
2069
  /**
1836
2070
  * Test ID
1837
2071
  */
@@ -2579,8 +2813,6 @@ interface HeaderProps {
2579
2813
  logoUrl?: string;
2580
2814
  /** Alt text for the logo */
2581
2815
  logoAlt?: string;
2582
- /** Custom logo component (overrides logoUrl) */
2583
- logo?: React__default.ReactNode;
2584
2816
  /** Navigation items for the menu - uses NavigationItem interface */
2585
2817
  navItems?: NavigationItem[];
2586
2818
  /** Current user for the user menu */
@@ -2591,13 +2823,13 @@ interface HeaderProps {
2591
2823
  onChangePassword?: (newPassword: string, confirmPassword: string) => Promise<{
2592
2824
  error?: PasswordChangeFormError;
2593
2825
  }>;
2594
- /** Additional actions to display (will be placed between event selector and user menu) */
2826
+ /** Additional actions to display (will be placed between context selector and user menu) */
2595
2827
  actions?: React__default.ReactNode;
2596
2828
  /** Custom user menu component (overrides default UserMenu) */
2597
2829
  userMenu?: React__default.ReactNode;
2598
2830
  /** Custom className */
2599
2831
  className?: string;
2600
- /** Show/hide context selector (unified org/event selector) - default: true */
2832
+ /** Show/hide context selector - default: true */
2601
2833
  showContextSelector?: boolean;
2602
2834
  /** Show organisations in context selector - default: true */
2603
2835
  showOrganisations?: boolean;
@@ -2609,118 +2841,10 @@ interface HeaderProps {
2609
2841
  currentPath?: string;
2610
2842
  /** Custom navigation handler */
2611
2843
  onNavigate?: (item: NavigationItem) => void;
2612
- /** URL to navigate to when logo is clicked (e.g., '/dashboard') */
2844
+ /** URL to navigate to when logo is clicked (e.g., '/dashboard'). Defaults to '/' if not provided. */
2613
2845
  logoHref?: string;
2614
2846
  }
2615
- /**
2616
- * Header component for application layouts with comprehensive navigation, user management,
2617
- * and customizable branding support.
2618
- *
2619
- * A flexible header component that supports various configurations including custom logos,
2620
- * navigation menus, user authentication, event selection, and custom actions.
2621
- *
2622
- * **Logo Display:** When used via PaceAppLayout, the logo URL is automatically constructed
2623
- * from the appName prop as `/${appName.toLowerCase()}_logo_wide.svg`. The appName should
2624
- * come from an APP_NAME constant declared in your App.tsx file to ensure consistency across
2625
- * authenticated and public pages.
2626
- *
2627
- * Features:
2628
- * - Customizable logo (URL or custom component)
2629
- * - Clickable logo that automatically routes to dashboard (configurable via logoHref)
2630
- * - Navigation menu integration with highlighting
2631
- * - User menu with authentication and password management
2632
- * - Event selector for multi-tenant applications
2633
- * - Custom actions support
2634
- * - Responsive design with mobile considerations
2635
- * - Accessibility compliant with proper ARIA attributes
2636
- * - Backdrop blur effects for modern UI
2637
- * - Flexible layout with configurable sections
2638
- *
2639
- * @example
2640
- * Basic header with logo and navigation (logo routes to /dashboard when clicked):
2641
- * ```tsx
2642
- * import { Header } from '@jmruthers/pace-core';
2643
- * import { useNavigate, useLocation } from 'react-router-dom';
2644
- *
2645
- * function AppHeader() {
2646
- * const navigate = useNavigate();
2647
- * const location = useLocation();
2648
- *
2649
- * const navItems = [
2650
- * { id: 'dashboard', label: 'Dashboard', href: '/dashboard' },
2651
- * { id: 'meals', label: 'Meals', href: '/meals' },
2652
- * { id: 'settings', label: 'Settings', href: '/settings' }
2653
- * ];
2654
- *
2655
- * return (
2656
- * <Header
2657
- * logoUrl="/company-logo.svg"
2658
- * logoAlt="My Company"
2659
- * logoHref="/dashboard"
2660
- * navItems={navItems}
2661
- * currentPath={location.pathname}
2662
- * onNavigate={(item) => navigate(item.href)}
2663
- * user={currentUser}
2664
- * onSignOut={handleSignOut}
2665
- * />
2666
- * );
2667
- * }
2668
- * ```
2669
- *
2670
- * @example
2671
- * Header with custom actions:
2672
- * ```tsx
2673
- * import { Header, Button } from '@jmruthers/pace-core';
2674
- *
2675
- * function HeaderWithActions() {
2676
- * const customActions = (
2677
- * <>
2678
- * <Button variant="outline" size="sm">Export</Button>
2679
- * <Button size="sm">New Item</Button>
2680
- * </>
2681
- * );
2682
- *
2683
- * return (
2684
- * <Header
2685
- * logoUrl="/logo.svg"
2686
- * navItems={navigationItems}
2687
- * actions={customActions}
2688
- * user={currentUser}
2689
- * onSignOut={handleSignOut}
2690
- * />
2691
- * );
2692
- * }
2693
- * ```
2694
- *
2695
- * @example
2696
- * Minimal header configuration:
2697
- * ```tsx
2698
- * function MinimalHeader() {
2699
- * return (
2700
- * <Header
2701
- * logoUrl="/simple-logo.svg"
2702
- * logoAlt="Simple App"
2703
- * showContextSelector={false}
2704
- * user={currentUser}
2705
- * onSignOut={handleSignOut}
2706
- * />
2707
- * );
2708
- * }
2709
- * ```
2710
- *
2711
- * @param props - Header configuration including logo, navigation, user settings, and custom content
2712
- * @returns React element with complete header functionality
2713
- *
2714
- * @since 0.1.0
2715
- */
2716
- /**
2717
- * Header component for application layouts.
2718
- * Provides navigation, user menu, organisation/event selectors, and customizable branding.
2719
- *
2720
- * @param props - Header configuration
2721
- * @returns The rendered header
2722
- */
2723
- declare function Header({ logoUrl, logoAlt, logo, navItems, user, onSignOut, onChangePassword, actions, userMenu, className, showContextSelector, showOrganisations, showEvents, showUserMenu, currentPath, onNavigate, logoHref }: HeaderProps): react_jsx_runtime.JSX.Element;
2847
+ declare function Header({ logoUrl, logoAlt, navItems, user, onSignOut, onChangePassword, actions, userMenu, className, showContextSelector, showOrganisations, showEvents, showUserMenu, currentPath, onNavigate, logoHref }: HeaderProps): react_jsx_runtime.JSX.Element;
2724
2848
 
2725
2849
  /**
2726
2850
  * @file Footer Component
@@ -2983,8 +3107,6 @@ interface PaceAppLayoutProps {
2983
3107
  showEvents?: boolean;
2984
3108
  /** Custom actions to display in the header (between event selector and user menu) */
2985
3109
  headerActions?: React__default.ReactNode;
2986
- /** Custom logo component (overrides default logo) */
2987
- customLogo?: React__default.ReactNode;
2988
3110
  /** URL to navigate to when logo is clicked (defaults to '/dashboard') */
2989
3111
  logoHref?: string;
2990
3112
  /** Custom user menu component (overrides default user menu) */
@@ -3188,7 +3310,7 @@ interface PaceAppLayoutProps {
3188
3310
  *
3189
3311
  * @since 0.1.0
3190
3312
  */
3191
- declare function PaceAppLayout({ appName, navItems, showContextSelector, showOrganisations, showEvents, headerActions, customLogo, logoHref, customUserMenu, headerClassName, showUserMenu, enforcePermissions, defaultPermission, routePermissions, permissionFallback, pageIdMapping, strictMode, enforcePagePermissions, pagePermissionFallback, auditLog, onPageAccessDenied, onStrictModeViolation, roleBasedRouting, routeConfig, fallbackRoute, onRouteAccessDenied, onRouteStrictModeViolation }: PaceAppLayoutProps): react_jsx_runtime.JSX.Element;
3313
+ declare function PaceAppLayout({ appName, navItems, showContextSelector, showOrganisations, showEvents, headerActions, logoHref, customUserMenu, headerClassName, showUserMenu, enforcePermissions, defaultPermission, routePermissions, permissionFallback, pageIdMapping, strictMode, enforcePagePermissions, pagePermissionFallback, auditLog, onPageAccessDenied, onStrictModeViolation, roleBasedRouting, routeConfig, fallbackRoute, onRouteAccessDenied, onRouteStrictModeViolation }: PaceAppLayoutProps): react_jsx_runtime.JSX.Element;
3192
3314
 
3193
3315
  /**
3194
3316
  * @file PACE Login Page Component
@@ -3461,11 +3583,20 @@ declare class ErrorBoundary$1 extends Component<ErrorBoundaryProps, ErrorBoundar
3461
3583
  render(): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
3462
3584
  }
3463
3585
 
3586
+ /**
3587
+ * @file Error Boundary Context Types
3588
+ * @package @jmruthers/pace-core
3589
+ * @module Components/ErrorBoundary
3590
+ * @since 0.6.2
3591
+ *
3592
+ * Type definitions for ErrorBoundary context.
3593
+ */
3594
+
3464
3595
  /**
3465
3596
  * Type definition for the global error handler function
3466
3597
  * @public
3467
3598
  */
3468
- type GlobalErrorHandler = (error: Error, errorInfo: React__default.ErrorInfo, errorId: string, componentName: string) => void;
3599
+ type GlobalErrorHandler = (error: Error, errorInfo: ErrorInfo, errorId: string, componentName: string) => void;
3469
3600
  /**
3470
3601
  * Props for ErrorBoundaryProvider component
3471
3602
  * @public
@@ -3476,6 +3607,7 @@ interface ErrorBoundaryProviderProps {
3476
3607
  /** Global error handler that will be used by all ErrorBoundary instances unless overridden */
3477
3608
  defaultErrorHandler?: GlobalErrorHandler;
3478
3609
  }
3610
+
3479
3611
  /**
3480
3612
  * Provider component for ErrorBoundary global error handler configuration
3481
3613
  *
@@ -4069,7 +4201,7 @@ interface PublicPageHeaderProps {
4069
4201
  /** Custom event logo component */
4070
4202
  customEventLogo?: ReactNode;
4071
4203
  }
4072
- declare function PublicPageHeader({ event, eventCode, title, description, showEventLogo, showAppLogo, className, children, customEventLogo }: PublicPageHeaderProps): react_jsx_runtime.JSX.Element;
4204
+ declare function PublicPageHeader({ event, eventCode: _eventCode, title, description, showEventLogo, showAppLogo, className, children, customEventLogo }: PublicPageHeaderProps): react_jsx_runtime.JSX.Element;
4073
4205
  interface PublicPageFooterProps {
4074
4206
  /** The event data for this public page */
4075
4207
  event: Event;
@@ -4091,7 +4223,7 @@ interface PublicPageFooterProps {
4091
4223
  /** Footer content - children to render inside footer */
4092
4224
  children?: React__default.ReactNode;
4093
4225
  }
4094
- declare function PublicPageFooter({ event, companyName, year, links, className, logo, copyright, children }: PublicPageFooterProps): react_jsx_runtime.JSX.Element;
4226
+ declare function PublicPageFooter({ event: _event, companyName, year, links, className, logo, copyright, children }: PublicPageFooterProps): react_jsx_runtime.JSX.Element;
4095
4227
  /**
4096
4228
  * Layout component for public pages that don't require authentication
4097
4229
  *
@@ -4106,15 +4238,6 @@ declare function PublicPageFooter({ event, companyName, year, links, className,
4106
4238
  */
4107
4239
  declare function PublicPageLayout({ eventCode, children, event, isLoading, error, refetch, showFooter, errorFallback: ErrorFallback, loadingFallback: LoadingFallback, customHeader, customFooter, showValidationErrors, loadingMessage }: PublicPageLayoutProps): react_jsx_runtime.JSX.Element;
4108
4240
 
4109
- interface PublicPageContextType {
4110
- isPublicPage: true;
4111
- supabase: ReturnType<typeof createClient<Database>> | null;
4112
- appName: string | null;
4113
- environment: {
4114
- supabaseUrl: string | null;
4115
- supabaseKey: string | null;
4116
- };
4117
- }
4118
4241
  interface PublicPageProviderProps {
4119
4242
  children: ReactNode;
4120
4243
  /** Application name for logo display and branding. Should match the APP_NAME constant used in App.tsx */
@@ -4131,6 +4254,26 @@ interface PublicPageProviderProps {
4131
4254
  * - Provides appName for consistent logo display
4132
4255
  */
4133
4256
  declare function PublicPageProvider({ children, appName }: PublicPageProviderProps): react_jsx_runtime.JSX.Element;
4257
+
4258
+ interface PublicPageContextType {
4259
+ isPublicPage: true;
4260
+ supabase: ReturnType<typeof createClient<Database>> | null;
4261
+ appName: string | null;
4262
+ environment: {
4263
+ supabaseUrl: string | null;
4264
+ supabaseKey: string | null;
4265
+ };
4266
+ }
4267
+
4268
+ /**
4269
+ * @file usePublicPageContext Hook
4270
+ * @package @jmruthers/pace-core
4271
+ * @module Components/PublicLayout
4272
+ * @since 1.0.0
4273
+ *
4274
+ * Hooks for accessing public page context.
4275
+ */
4276
+
4134
4277
  /**
4135
4278
  * Hook to access public page context
4136
4279
  *
@@ -4144,4 +4287,4 @@ declare function usePublicPageContext(): PublicPageContextType;
4144
4287
  */
4145
4288
  declare function useIsPublicPage(): boolean;
4146
4289
 
4147
- export { type DialogContentProps as $, AddressField as A, Button as B, Card as C, TableHeader as D, TableBody as E, TableCaption as F, TableCell as G, TableFooter as H, Input as I, TableHead as J, TableRow as K, Label as L, Dialog as M, DialogPortal as N, DialogTrigger as O, Progress as P, DialogClose as Q, DialogContent as R, Switch as S, Textarea as T, DialogHeader as U, DialogBody as V, DialogFooter as W, DialogTitle as X, DialogDescription as Y, type DialogProps as Z, type DialogTriggerProps as _, type ButtonProps as a, FileUpload as a$, type DialogPortalProps as a0, type DialogCloseProps as a1, type DialogHeaderProps as a2, type DialogFooterProps as a3, type DialogBodyProps as a4, type DialogSize as a5, Select as a6, SelectGroup as a7, SelectValue as a8, SelectTrigger as a9, TooltipContent as aA, TooltipProvider as aB, TooltipRoot as aC, Form as aD, FormField as aE, type FormProps as aF, type FormFieldProps as aG, LoginForm as aH, type LoginFormProps as aI, Header as aJ, Footer as aK, type FooterProps as aL, ProtectedRoute as aM, type ProtectedRouteProps as aN, NavigationMenu as aO, ContextSelector as aP, type ContextSelectorProps as aQ, UserMenu as aR, ErrorBoundary as aS, ErrorBoundaryProvider as aT, type ErrorBoundaryProps as aU, type ErrorBoundaryState as aV, type ErrorBoundaryProviderProps as aW, type GlobalErrorHandler as aX, LoadingSpinner as aY, SessionRestorationLoader as aZ, type SessionRestorationLoaderProps as a_, SelectContent as aa, SelectLabel as ab, SelectItem as ac, SelectSeparator as ad, Tabs as ae, TabsList as af, TabsTrigger as ag, TabsContent as ah, type TabsProps as ai, type TabsListProps as aj, type TabsTriggerProps as ak, type TabsContentProps as al, Calendar as am, type CalendarProps as an, Toast as ao, Toaster as ap, ToastAction as aq, ToastProvider as ar, ToastViewport as as, ToastTitle as at, ToastDescription as au, ToastClose as av, type ToastActionElement as aw, type ToastProps as ax, Tooltip as ay, TooltipTrigger as az, CardHeader as b, type FileUploadProps as b0, FileDisplay as b1, type FileDisplayProps as b2, useFileReference as b3, useFileReferenceForRecord as b4, useFileReferenceById as b5, useFilesByCategory as b6, type UseFileReferenceOptions as b7, type UseFileReferenceReturn as b8, type UseFileReferenceForRecordReturn as b9, PublicPageLayout as ba, PublicPageHeader as bb, PublicPageFooter as bc, PublicPageProvider as bd, usePublicPageContext as be, useIsPublicPage as bf, type PublicPageLayoutProps as bg, type PublicPageHeaderProps as bh, type PublicPageFooterProps as bi, type PaceAppLayoutProps as bj, PaceAppLayout as bk, type PaceLoginPageProps as bl, PaceLoginPage as bm, type UserMenuProps as bn, PasswordChangeForm as bo, CardFooter as c, CardTitle as d, CardDescription as e, CardContent as f, CardActions as g, type CardProps as h, type CardActionsProps as i, type InputProps as j, type AddressFieldProps as k, type AddressFieldRef as l, type LabelProps as m, type TextareaProps as n, Alert as o, AlertTitle as p, AlertDescription as q, Avatar as r, type AvatarProps as s, Badge as t, type BadgeProps as u, type BadgeVariant as v, Checkbox as w, type SwitchProps as x, type ProgressProps as y, Table as z };
4290
+ export { type DialogContentProps as $, AddressField as A, Button as B, Card as C, TableHeader as D, TableBody as E, TableCaption as F, TableCell as G, TableFooter as H, Input as I, TableHead as J, TableRow as K, Label as L, Dialog as M, DialogPortal as N, DialogTrigger as O, Progress as P, DialogClose as Q, DialogContent as R, Switch as S, Textarea as T, DialogHeader as U, DialogBody as V, DialogFooter as W, DialogTitle as X, DialogDescription as Y, type DialogProps as Z, type DialogTriggerProps as _, type ButtonProps as a, NavigationMenu as a$, type DialogPortalProps as a0, type DialogCloseProps as a1, type DialogHeaderProps as a2, type DialogFooterProps as a3, type DialogBodyProps as a4, type DialogSize as a5, Select as a6, SelectGroup as a7, SelectValue as a8, SelectTrigger as a9, Tooltip as aA, TooltipTrigger as aB, TooltipContent as aC, TooltipProvider as aD, TooltipRoot as aE, DataTable as aF, type DataTableProps as aG, Form as aH, FormField as aI, type FormProps as aJ, type FormFieldProps as aK, LoginForm as aL, type LoginFormProps as aM, Header as aN, Footer as aO, type FooterProps as aP, PublicPageLayout as aQ, PublicPageHeader as aR, PublicPageFooter as aS, PublicPageProvider as aT, usePublicPageContext as aU, useIsPublicPage as aV, type PublicPageLayoutProps as aW, type PublicPageHeaderProps as aX, type PublicPageFooterProps as aY, ProtectedRoute as aZ, type ProtectedRouteProps as a_, SelectContent as aa, SelectLabel as ab, SelectItem as ac, SelectSeparator as ad, Tabs as ae, TabsList as af, TabsTrigger as ag, TabsContent as ah, type TabsProps as ai, type TabsListProps as aj, type TabsTriggerProps as ak, type TabsContentProps as al, Calendar as am, type CalendarProps as an, DatePickerWithTimezone as ao, type DatePickerWithTimezoneProps as ap, Toast as aq, Toaster as ar, ToastAction as as, ToastProvider as at, ToastViewport as au, ToastTitle as av, ToastDescription as aw, ToastClose as ax, type ToastActionElement as ay, type ToastProps as az, CardHeader as b, ContextSelector as b0, type ContextSelectorProps as b1, UserMenu as b2, ErrorBoundary as b3, ErrorBoundaryProvider as b4, type ErrorBoundaryProps as b5, type ErrorBoundaryState as b6, type ErrorBoundaryProviderProps as b7, type GlobalErrorHandler as b8, LoadingSpinner as b9, SessionRestorationLoader as ba, type SessionRestorationLoaderProps as bb, FileUpload as bc, type FileUploadProps as bd, FileDisplay as be, type FileDisplayProps as bf, useFileReference as bg, useFileReferenceForRecord as bh, useFileReferenceById as bi, useFilesByCategory as bj, type UseFileReferenceOptions as bk, type UseFileReferenceReturn as bl, type UseFileReferenceForRecordReturn as bm, type PaceAppLayoutProps as bn, PaceAppLayout as bo, type PaceLoginPageProps as bp, PaceLoginPage as bq, type UserMenuProps as br, PasswordChangeForm as bs, CardFooter as c, CardTitle as d, CardDescription as e, CardContent as f, CardActions as g, type CardProps as h, type CardActionsProps as i, type InputProps as j, type AddressFieldProps as k, type AddressFieldRef as l, type LabelProps as m, type TextareaProps as n, Alert as o, AlertTitle as p, AlertDescription as q, Avatar as r, type AvatarProps as s, Badge as t, type BadgeProps as u, type BadgeVariant as v, Checkbox as w, type SwitchProps as x, type ProgressProps as y, Table as z };