@jmruthers/pace-core 0.5.181 → 0.5.183

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 (756) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +16 -2
  3. package/dist/{AuthService-DYuQPJj6.d.ts → AuthService-B-cd2MA4.d.ts} +9 -11
  4. package/dist/{DataTable-CWAZZcXC.d.ts → DataTable-Bz8ffqyA.d.ts} +1 -1
  5. package/dist/{DataTable-UA6CL4JI.js → DataTable-QAB34V6K.js} +14 -15
  6. package/dist/UnifiedAuthProvider-7F6T4B6K.js +13 -0
  7. package/dist/{UnifiedAuthProvider-DJxGTftH.d.ts → UnifiedAuthProvider-F86d7dSi.d.ts} +5 -6
  8. package/dist/{api-45XYYO2A.js → api-ROMBCNKU.js} +5 -5
  9. package/dist/{audit-64X3VJXB.js → audit-WRS3KJKI.js} +4 -4
  10. package/dist/auth-BZOJqrdd.d.ts +49 -0
  11. package/dist/{chunk-CX5M4ZAG.js → chunk-5DRSZLL2.js} +1 -1
  12. package/dist/chunk-5DRSZLL2.js.map +1 -0
  13. package/dist/{chunk-BESYRHQM.js → chunk-6C4YBBJM.js} +10 -7
  14. package/dist/chunk-6C4YBBJM.js.map +1 -0
  15. package/dist/{chunk-PLDDJCW6.js → chunk-7D4SUZUM.js} +2 -13
  16. package/dist/{chunk-HRO5HWN2.js → chunk-CSOFYHAG.js} +55 -162
  17. package/dist/chunk-CSOFYHAG.js.map +1 -0
  18. package/dist/{chunk-ANBQRTPX.js → chunk-E66EQZE6.js} +3 -5
  19. package/dist/{chunk-ANBQRTPX.js.map → chunk-E66EQZE6.js.map} +1 -1
  20. package/dist/{chunk-Q5QRDWKI.js → chunk-F2IMUDXZ.js} +4 -6
  21. package/dist/chunk-F2IMUDXZ.js.map +1 -0
  22. package/dist/{chunk-SBVILCCA.js → chunk-FSFQFJCU.js} +28 -6
  23. package/dist/chunk-FSFQFJCU.js.map +1 -0
  24. package/dist/chunk-FUEYYMX5.js +2296 -0
  25. package/dist/chunk-FUEYYMX5.js.map +1 -0
  26. package/dist/{chunk-FFKNH6U5.js → chunk-HKIT6O7W.js} +3 -5
  27. package/dist/{chunk-FFKNH6U5.js.map → chunk-HKIT6O7W.js.map} +1 -1
  28. package/dist/chunk-KQCRWDSA.js +1 -0
  29. package/dist/{chunk-S5OFRT4M.js → chunk-KUEN3HFB.js} +6 -6
  30. package/dist/chunk-KUEN3HFB.js.map +1 -0
  31. package/dist/chunk-LMC26NLJ.js +84 -0
  32. package/dist/chunk-LMC26NLJ.js.map +1 -0
  33. package/dist/{chunk-BVYWGZVV.js → chunk-M7W4CP3M.js} +52 -19
  34. package/dist/chunk-M7W4CP3M.js.map +1 -0
  35. package/dist/{chunk-HZLDFOE4.js → chunk-MI7HBHN3.js} +164 -243
  36. package/dist/chunk-MI7HBHN3.js.map +1 -0
  37. package/dist/{chunk-PPMP5J6T.js → chunk-PWAHJW4G.js} +180 -29
  38. package/dist/chunk-PWAHJW4G.js.map +1 -0
  39. package/dist/chunk-PWLANIRT.js +127 -0
  40. package/dist/{chunk-XDNLUEXI.js.map → chunk-PWLANIRT.js.map} +1 -1
  41. package/dist/chunk-QCDXODCA.js +75 -0
  42. package/dist/chunk-QCDXODCA.js.map +1 -0
  43. package/dist/{chunk-D7LCGMVS.js → chunk-QETLRQI6.js} +526 -887
  44. package/dist/chunk-QETLRQI6.js.map +1 -0
  45. package/dist/{chunk-5MT24GKJ.js → chunk-QUVSNGIP.js} +264 -262
  46. package/dist/chunk-QUVSNGIP.js.map +1 -0
  47. package/dist/chunk-QXHPKYJV.js +113 -0
  48. package/dist/chunk-QXHPKYJV.js.map +1 -0
  49. package/dist/{chunk-OWAG3GSU.js → chunk-R77UEZ4E.js} +11 -1
  50. package/dist/chunk-R77UEZ4E.js.map +1 -0
  51. package/dist/{chunk-ZYTYSTO5.js → chunk-RA3JUFMW.js} +314 -161
  52. package/dist/chunk-RA3JUFMW.js.map +1 -0
  53. package/dist/{chunk-ERISIBYU.js → chunk-SQGMNID3.js} +3 -8
  54. package/dist/chunk-SQGMNID3.js.map +1 -0
  55. package/dist/{chunk-XJ2HZOBU.js → chunk-UHNYIBXL.js} +1 -1
  56. package/dist/chunk-UHNYIBXL.js.map +1 -0
  57. package/{src/utils/secureStorage.ts → dist/chunk-VBXEHIUJ.js} +113 -88
  58. package/dist/{chunk-7QCC6MCP.js.map → chunk-VBXEHIUJ.js.map} +1 -1
  59. package/dist/{chunk-VZ4VDGTB.js → chunk-W22JP75J.js} +5 -13
  60. package/dist/{chunk-VZ4VDGTB.js.map → chunk-W22JP75J.js.map} +1 -1
  61. package/dist/components.d.ts +12 -93
  62. package/dist/components.js +23 -106
  63. package/dist/components.js.map +1 -1
  64. package/dist/core-CUElvH_C.d.ts +164 -0
  65. package/dist/database.generated-CBmg2950.d.ts +8284 -0
  66. package/dist/event-CW5YB_2p.d.ts +239 -0
  67. package/dist/{file-reference-C6Gkn77H.d.ts → file-reference-D06mEEWW.d.ts} +7 -5
  68. package/dist/functions-D_kgHktt.d.ts +208 -0
  69. package/dist/hooks.d.ts +54 -7
  70. package/dist/hooks.js +204 -17
  71. package/dist/hooks.js.map +1 -1
  72. package/dist/{EventLogo-B3V3otev.d.ts → index-Bl--n7-T.d.ts} +387 -397
  73. package/dist/index.d.ts +94 -261
  74. package/dist/index.js +314 -126
  75. package/dist/index.js.map +1 -1
  76. package/dist/providers.d.ts +7 -8
  77. package/dist/providers.js +6 -13
  78. package/dist/rbac/index.d.ts +171 -101
  79. package/dist/rbac/index.js +23 -17
  80. package/dist/styles/index.d.ts +1 -3
  81. package/dist/styles/index.js +2 -17
  82. package/dist/theming/runtime.js +3 -3
  83. package/dist/types-UU913iLA.d.ts +102 -0
  84. package/dist/{types-Dfz9dmVH.d.ts → types-_x1f4QBF.d.ts} +6 -6
  85. package/dist/types.d.ts +88 -227
  86. package/dist/types.js +64 -112
  87. package/dist/types.js.map +1 -1
  88. package/dist/{usePublicRouteParams-B7PabvuH.d.ts → usePublicRouteParams-JJczomYq.d.ts} +203 -6
  89. package/dist/utils.d.ts +299 -13
  90. package/dist/utils.js +481 -55
  91. package/dist/utils.js.map +1 -1
  92. package/dist/validation-643vUDZW.d.ts +177 -0
  93. package/docs/DOCUMENTATION_REVIEW_TRACKER.md +511 -0
  94. package/docs/README.md +9 -8
  95. package/docs/api/README.md +16 -2
  96. package/docs/api/classes/ColumnFactory.md +1 -1
  97. package/docs/api/classes/ErrorBoundary.md +1 -1
  98. package/docs/api/classes/InvalidScopeError.md +4 -4
  99. package/docs/api/classes/MissingUserContextError.md +4 -4
  100. package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
  101. package/docs/api/classes/PermissionDeniedError.md +4 -4
  102. package/docs/api/classes/RBACAuditManager.md +14 -14
  103. package/docs/api/classes/RBACCache.md +1 -1
  104. package/docs/api/classes/RBACEngine.md +2 -2
  105. package/docs/api/classes/RBACError.md +4 -4
  106. package/docs/api/classes/RBACNotInitializedError.md +4 -4
  107. package/docs/api/classes/SecureSupabaseClient.md +29 -9
  108. package/docs/api/classes/StorageUtils.md +1 -1
  109. package/docs/api/enums/FileCategory.md +17 -17
  110. package/docs/api/enums/RBACErrorCode.md +228 -0
  111. package/docs/api/enums/RPCFunction.md +118 -0
  112. package/docs/api/interfaces/AggregateConfig.md +1 -1
  113. package/docs/api/interfaces/BadgeProps.md +1 -1
  114. package/docs/api/interfaces/ButtonProps.md +2 -2
  115. package/docs/api/interfaces/CalendarProps.md +1 -1
  116. package/docs/api/interfaces/CardProps.md +29 -3
  117. package/docs/api/interfaces/ColorPalette.md +1 -1
  118. package/docs/api/interfaces/ColorShade.md +1 -1
  119. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  120. package/docs/api/interfaces/DataRecord.md +1 -1
  121. package/docs/api/interfaces/DataTableAction.md +2 -2
  122. package/docs/api/interfaces/DataTableColumn.md +6 -6
  123. package/docs/api/interfaces/DataTableProps.md +1 -1
  124. package/docs/api/interfaces/DataTableToolbarButton.md +2 -2
  125. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  126. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  127. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  128. package/docs/api/interfaces/ExportColumn.md +5 -5
  129. package/docs/api/interfaces/ExportOptions.md +4 -4
  130. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  131. package/docs/api/interfaces/FileMetadata.md +13 -13
  132. package/docs/api/interfaces/FileReference.md +12 -12
  133. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  134. package/docs/api/interfaces/FileUploadOptions.md +10 -10
  135. package/docs/api/interfaces/FileUploadProps.md +19 -19
  136. package/docs/api/interfaces/FooterProps.md +1 -1
  137. package/docs/api/interfaces/FormFieldProps.md +166 -0
  138. package/docs/api/interfaces/FormProps.md +113 -0
  139. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  140. package/docs/api/interfaces/InactivityWarningModalProps.md +8 -8
  141. package/docs/api/interfaces/InputProps.md +2 -2
  142. package/docs/api/interfaces/LabelProps.md +8 -8
  143. package/docs/api/interfaces/LoginFormProps.md +1 -1
  144. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  145. package/docs/api/interfaces/NavigationContextType.md +1 -1
  146. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  147. package/docs/api/interfaces/NavigationItem.md +17 -73
  148. package/docs/api/interfaces/NavigationMenuProps.md +38 -53
  149. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  150. package/docs/api/interfaces/Organisation.md +13 -13
  151. package/docs/api/interfaces/OrganisationContextType.md +21 -21
  152. package/docs/api/interfaces/OrganisationMembership.md +15 -15
  153. package/docs/api/interfaces/OrganisationProviderProps.md +59 -2
  154. package/docs/api/interfaces/OrganisationSecurityError.md +5 -5
  155. package/docs/api/interfaces/PaceAppLayoutProps.md +26 -39
  156. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  157. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  158. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  159. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  160. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  161. package/docs/api/interfaces/PaletteData.md +1 -1
  162. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  163. package/docs/api/interfaces/ProgressProps.md +50 -0
  164. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  165. package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
  166. package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
  167. package/docs/api/interfaces/PublicPageLayoutProps.md +15 -15
  168. package/docs/api/interfaces/RBACAccessValidateParams.md +52 -0
  169. package/docs/api/interfaces/RBACAccessValidateResult.md +41 -0
  170. package/docs/api/interfaces/RBACAuditLogParams.md +85 -0
  171. package/docs/api/interfaces/RBACAuditLogResult.md +52 -0
  172. package/docs/api/interfaces/RBACConfig.md +2 -2
  173. package/docs/api/interfaces/RBACContext.md +52 -0
  174. package/docs/api/interfaces/RBACLogger.md +1 -1
  175. package/docs/api/interfaces/RBACPageAccessCheckParams.md +74 -0
  176. package/docs/api/interfaces/RBACPermissionCheckParams.md +74 -0
  177. package/docs/api/interfaces/RBACPermissionCheckResult.md +52 -0
  178. package/docs/api/interfaces/RBACPermissionsGetParams.md +63 -0
  179. package/docs/api/interfaces/RBACPermissionsGetResult.md +63 -0
  180. package/docs/api/interfaces/RBACResult.md +58 -0
  181. package/docs/api/interfaces/RBACRoleGrantParams.md +63 -0
  182. package/docs/api/interfaces/RBACRoleGrantResult.md +52 -0
  183. package/docs/api/interfaces/RBACRoleRevokeParams.md +63 -0
  184. package/docs/api/interfaces/RBACRoleRevokeResult.md +52 -0
  185. package/docs/api/interfaces/RBACRoleValidateParams.md +52 -0
  186. package/docs/api/interfaces/RBACRoleValidateResult.md +63 -0
  187. package/docs/api/interfaces/RBACRolesListParams.md +52 -0
  188. package/docs/api/interfaces/RBACRolesListResult.md +74 -0
  189. package/docs/api/interfaces/RBACSessionTrackParams.md +74 -0
  190. package/docs/api/interfaces/RBACSessionTrackResult.md +52 -0
  191. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  192. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  193. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  194. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  195. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  196. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  197. package/docs/api/interfaces/RouteConfig.md +1 -1
  198. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  199. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  200. package/docs/api/interfaces/SessionRestorationLoaderProps.md +15 -2
  201. package/docs/api/interfaces/StorageConfig.md +1 -1
  202. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  203. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  204. package/docs/api/interfaces/StorageListOptions.md +1 -1
  205. package/docs/api/interfaces/StorageListResult.md +1 -1
  206. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  207. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  208. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  209. package/docs/api/interfaces/StyleImport.md +1 -1
  210. package/docs/api/interfaces/SwitchProps.md +1 -1
  211. package/docs/api/interfaces/TabsContentProps.md +1 -1
  212. package/docs/api/interfaces/TabsListProps.md +1 -1
  213. package/docs/api/interfaces/TabsProps.md +1 -1
  214. package/docs/api/interfaces/TabsTriggerProps.md +43 -2
  215. package/docs/api/interfaces/TextareaProps.md +2 -2
  216. package/docs/api/interfaces/ToastActionElement.md +1 -1
  217. package/docs/api/interfaces/ToastProps.md +1 -1
  218. package/docs/api/interfaces/UnifiedAuthContextType.md +61 -61
  219. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  220. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  221. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  222. package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
  223. package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
  224. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  225. package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
  226. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
  227. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  228. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  229. package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
  230. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  231. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  232. package/docs/api/interfaces/UserEventAccess.md +1 -1
  233. package/docs/api/interfaces/UserMenuProps.md +4 -4
  234. package/docs/api/interfaces/UserProfile.md +7 -7
  235. package/docs/api/modules.md +484 -462
  236. package/docs/api-reference/components.md +186 -15
  237. package/docs/api-reference/deprecated.md +376 -0
  238. package/docs/api-reference/hooks.md +149 -19
  239. package/docs/api-reference/providers.md +61 -6
  240. package/docs/api-reference/rpc-functions.md +397 -0
  241. package/docs/api-reference/types.md +135 -78
  242. package/docs/api-reference/utilities.md +51 -380
  243. package/docs/architecture/README.md +49 -3
  244. package/docs/architecture/database-schema-requirements.md +40 -3
  245. package/docs/architecture/rbac-security-architecture.md +41 -4
  246. package/docs/architecture/services.md +127 -42
  247. package/docs/best-practices/README.md +51 -5
  248. package/docs/best-practices/accessibility.md +32 -3
  249. package/docs/best-practices/common-patterns.md +50 -3
  250. package/docs/best-practices/deployment.md +50 -4
  251. package/docs/best-practices/performance.md +50 -3
  252. package/docs/best-practices/security.md +94 -41
  253. package/docs/best-practices/testing.md +33 -4
  254. package/docs/core-concepts/authentication.md +5 -5
  255. package/docs/core-concepts/events.md +3 -3
  256. package/docs/core-concepts/organisations.md +3 -3
  257. package/docs/core-concepts/permissions.md +3 -3
  258. package/docs/core-concepts/rbac-system.md +5 -5
  259. package/docs/documentation-index.md +30 -8
  260. package/docs/getting-started/documentation-index.md +1 -1
  261. package/docs/getting-started/examples/README.md +7 -5
  262. package/docs/getting-started/examples/basic-auth-app.md +3 -0
  263. package/docs/getting-started/examples/full-featured-app.md +5 -3
  264. package/docs/getting-started/faq.md +6 -6
  265. package/docs/getting-started/installation-guide.md +192 -13
  266. package/docs/getting-started/local-development.md +303 -0
  267. package/docs/getting-started/quick-reference.md +3 -3
  268. package/docs/getting-started/quick-start.md +517 -0
  269. package/docs/implementation-guides/app-layout.md +45 -3
  270. package/docs/implementation-guides/authentication.md +66 -7
  271. package/docs/implementation-guides/component-styling.md +53 -3
  272. package/docs/implementation-guides/data-tables.md +76 -7
  273. package/docs/implementation-guides/datatable-filtering.md +1 -2
  274. package/docs/implementation-guides/datatable-rbac-usage.md +0 -1
  275. package/docs/implementation-guides/dynamic-colors.md +155 -4
  276. package/docs/implementation-guides/file-reference-system.md +72 -3
  277. package/docs/implementation-guides/file-upload-storage.md +72 -3
  278. package/docs/implementation-guides/forms.md +53 -3
  279. package/docs/implementation-guides/inactivity-tracking.md +53 -3
  280. package/docs/implementation-guides/large-datasets.md +1 -1
  281. package/docs/implementation-guides/navigation.md +55 -5
  282. package/docs/implementation-guides/organisation-security.md +72 -3
  283. package/docs/implementation-guides/performance.md +57 -1
  284. package/docs/implementation-guides/permission-enforcement.md +81 -8
  285. package/docs/implementation-guides/public-pages.md +560 -14
  286. package/docs/migration/MIGRATION_GUIDE.md +409 -50
  287. package/docs/migration/README.md +37 -3
  288. package/docs/migration/organisation-context-timing-fix.md +39 -4
  289. package/docs/migration/quick-migration-guide.md +41 -5
  290. package/docs/migration/rbac-migration.md +59 -3
  291. package/docs/migration/service-architecture.md +77 -14
  292. package/docs/rbac/README.md +79 -3
  293. package/docs/rbac/advanced-patterns.md +47 -3
  294. package/docs/rbac/api-reference.md +77 -8
  295. package/docs/rbac/event-based-apps.md +50 -5
  296. package/docs/rbac/examples/rbac-rls-integration-example.md +3 -3
  297. package/docs/rbac/examples.md +39 -3
  298. package/docs/rbac/getting-started.md +63 -4
  299. package/docs/rbac/quick-start.md +57 -5
  300. package/docs/rbac/rbac-rls-integration.md +68 -6
  301. package/docs/rbac/super-admin-guide.md +47 -3
  302. package/docs/rbac/troubleshooting.md +3 -3
  303. package/docs/security/README.md +68 -3
  304. package/docs/security/checklist.md +50 -3
  305. package/docs/standards/01-architecture-standard.md +39 -0
  306. package/docs/standards/02-api-and-rpc-standard.md +39 -0
  307. package/docs/standards/03-component-standard.md +32 -0
  308. package/docs/standards/04-code-style-standard.md +32 -0
  309. package/docs/standards/05-security-standard.md +30 -0
  310. package/docs/standards/06-testing-and-docs-standard.md +29 -0
  311. package/docs/standards/README.md +35 -0
  312. package/docs/styles/README.md +89 -8
  313. package/docs/testing/README.md +175 -24
  314. package/docs/troubleshooting/README.md +50 -3
  315. package/docs/troubleshooting/common-issues.md +271 -5
  316. package/docs/troubleshooting/debugging.md +54 -1
  317. package/docs/troubleshooting/migration.md +54 -1
  318. package/docs/troubleshooting/organisation-context-setup.md +29 -3
  319. package/docs/troubleshooting/styling-issues.md +246 -4
  320. package/{src/components/DataTable/examples → examples/DataTable}/GroupingAggregationExample.tsx +1 -1
  321. package/examples/{components 2/DataTable/HierarchicalActionsExample.tsx → DataTable/HierarchicalActionsExample.tsx} +7 -6
  322. package/{src/components/DataTable/examples → examples/DataTable}/HierarchicalExample.tsx +8 -6
  323. package/examples/{components 2/DataTable/PerformanceExample.tsx → DataTable/PerformanceExample.tsx} +2 -2
  324. package/examples/{components 2/DataTable/index.ts → DataTable/index.ts} +1 -0
  325. package/{src/components/Dialog/examples → examples/Dialog}/HtmlDialogExample.tsx +3 -3
  326. package/examples/{components 2/Dialog/ScrollableDialogExample.tsx → Dialog/ScrollableDialogExample.tsx} +1 -1
  327. package/{src/components/Dialog/examples → examples/Dialog}/SmartDialogExample.tsx +1 -1
  328. package/examples/{components 2/Dialog/index.ts → Dialog/index.ts} +0 -3
  329. package/examples/{features/public-pages → PublicPages}/CorrectPublicPageImplementation.tsx +52 -17
  330. package/examples/{features/public-pages → PublicPages}/PublicEventPage.tsx +65 -35
  331. package/examples/{features/public-pages → PublicPages}/PublicPageApp.tsx +52 -18
  332. package/examples/{features/public-pages → PublicPages}/PublicPageUsageExample.tsx +28 -15
  333. package/examples/README.md +81 -33
  334. package/examples/index.ts +14 -12
  335. package/examples/{RBAC → rbac}/CompleteRBACExample.tsx +1 -1
  336. package/examples/{features/rbac → rbac}/EventBasedApp.tsx +4 -4
  337. package/examples/{features/rbac → rbac}/PermissionExample.tsx +5 -3
  338. package/package.json +21 -27
  339. package/src/__tests__/helpers/test-utils.tsx +29 -3
  340. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +7 -5
  341. package/src/components/Alert/Alert.test.tsx +2 -2
  342. package/src/components/Alert/Alert.tsx +4 -4
  343. package/src/components/Avatar/Avatar.test.tsx +17 -6
  344. package/src/components/Badge/Badge.test.tsx +1 -1
  345. package/src/components/Badge/Badge.tsx +2 -2
  346. package/src/components/Button/Button.test.tsx +2 -2
  347. package/src/components/Button/Button.tsx +11 -7
  348. package/src/components/Calendar/Calendar.test.tsx +41 -8
  349. package/src/components/Calendar/Calendar.tsx +39 -36
  350. package/src/components/Card/Card.tsx +51 -13
  351. package/src/components/Checkbox/Checkbox.test.tsx +36 -12
  352. package/src/components/DataTable/DataTable.test.tsx +1 -1
  353. package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +13 -7
  354. package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +14 -42
  355. package/src/components/DataTable/__tests__/DataTable.export.test.tsx +13 -10
  356. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +14 -11
  357. package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +4 -2
  358. package/src/components/DataTable/__tests__/DataTable.test.tsx +13 -7
  359. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +13 -10
  360. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +15 -11
  361. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +12 -6
  362. package/src/components/DataTable/__tests__/keyboard.test.tsx +12 -6
  363. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +10 -6
  364. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +1 -1
  365. package/src/components/DataTable/components/DataTableBody.tsx +10 -25
  366. package/src/components/DataTable/components/DataTableCore.tsx +1 -1
  367. package/src/components/DataTable/components/FilterRow.tsx +3 -1
  368. package/src/components/DataTable/components/ImportModal.tsx +1 -1
  369. package/src/components/DataTable/components/VirtualizedDataTable.tsx +9 -9
  370. package/src/components/DataTable/core/ColumnFactory.ts +6 -6
  371. package/src/components/DataTable/core/DataTableContext.tsx +14 -10
  372. package/src/components/DataTable/core/LocalDataAdapter.ts +2 -1
  373. package/src/components/DataTable/core/PluginRegistry.ts +3 -3
  374. package/src/components/DataTable/core/StateManager.ts +12 -11
  375. package/src/components/DataTable/core/__tests__/ActionManager.test.ts +104 -0
  376. package/src/components/DataTable/core/__tests__/DataManager.test.ts +101 -0
  377. package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +84 -0
  378. package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +102 -0
  379. package/src/components/DataTable/core/__tests__/StateManager.test.ts +104 -0
  380. package/src/components/DataTable/core/interfaces.ts +17 -17
  381. package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +124 -0
  382. package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +117 -0
  383. package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +102 -0
  384. package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +53 -0
  385. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -2
  386. package/src/components/DataTable/hooks/useDataTablePermissions.ts +9 -8
  387. package/src/components/DataTable/types.ts +5 -5
  388. package/src/components/DataTable/utils/aggregationUtils.ts +4 -4
  389. package/src/components/DataTable/utils/columnUtils.ts +3 -2
  390. package/src/components/DataTable/utils/debugTools.ts +1 -1
  391. package/src/components/DataTable/utils/exportUtils.ts +6 -6
  392. package/src/components/DataTable/utils/hierarchicalSorting.ts +6 -6
  393. package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -8
  394. package/src/components/DataTable/utils/index.ts +0 -1
  395. package/src/components/DataTable/utils/performanceUtils.ts +9 -4
  396. package/src/components/Dialog/Dialog.test.tsx +49 -27
  397. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +13 -8
  398. package/src/components/EventSelector/EventSelector.test.tsx +60 -12
  399. package/src/components/EventSelector/EventSelector.tsx +38 -15
  400. package/src/components/EventSelector/index.ts +2 -2
  401. package/src/components/FileDisplay/FileDisplay.test.tsx +143 -85
  402. package/src/components/FileDisplay/FileDisplay.tsx +1 -0
  403. package/src/components/FileUpload/FileUpload.test.tsx +532 -152
  404. package/src/components/FileUpload/FileUpload.tsx +43 -8
  405. package/src/components/Footer/Footer.test.tsx +19 -14
  406. package/src/components/Form/Form.test.tsx +96 -14
  407. package/src/components/Form/Form.tsx +210 -1
  408. package/src/components/Form/index.ts +3 -7
  409. package/src/components/Header/Header.test.tsx +24 -17
  410. package/src/components/Header/Header.tsx +3 -1
  411. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +2 -4
  412. package/src/components/Input/Input.test.tsx +61 -36
  413. package/src/components/Label/{__tests__/Label.test.tsx → Label.test.tsx} +2 -2
  414. package/src/components/Label/Label.tsx +2 -3
  415. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +6 -5
  416. package/src/components/LoadingSpinner/LoadingSpinner.tsx +6 -2
  417. package/src/components/LoginForm/LoginForm.test.tsx +14 -13
  418. package/src/components/LoginForm/LoginForm.tsx +1 -1
  419. package/src/components/LoginForm/index.ts +7 -0
  420. package/src/components/NavigationMenu/NavigationMenu.test.tsx +233 -20
  421. package/src/components/NavigationMenu/NavigationMenu.tsx +191 -55
  422. package/src/components/NavigationMenu/index.ts +1 -1
  423. package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +20 -11
  424. package/src/components/OrganisationSelector/OrganisationSelector.tsx +1 -1
  425. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.integration.test.tsx → PaceAppLayout.integration.test.tsx} +272 -79
  426. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.performance.test.tsx → PaceAppLayout.performance.test.tsx} +155 -32
  427. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.security.test.tsx → PaceAppLayout.security.test.tsx} +211 -65
  428. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +498 -210
  429. package/src/components/PaceAppLayout/PaceAppLayout.tsx +63 -64
  430. package/src/components/PaceAppLayout/test-setup.tsx +192 -0
  431. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +193 -39
  432. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.test.tsx +2 -2
  433. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.tsx +10 -4
  434. package/src/components/PasswordChange/index.ts +2 -0
  435. package/src/components/Progress/Progress.test.tsx +11 -0
  436. package/src/components/Progress/Progress.tsx +1 -1
  437. package/src/components/Progress/index.ts +10 -0
  438. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +2 -1
  439. package/src/components/PublicLayout/PublicLayout.test.tsx +1210 -0
  440. package/src/components/PublicLayout/PublicPageLayout.tsx +190 -36
  441. package/src/components/PublicLayout/PublicPageProvider.tsx +8 -7
  442. package/src/components/PublicLayout/index.ts +10 -28
  443. package/src/components/Select/Select.test.tsx +7 -7
  444. package/src/components/Select/Select.tsx +277 -11
  445. package/src/components/Select/index.ts +1 -2
  446. package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +232 -0
  447. package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +40 -19
  448. package/src/components/Table/{__tests__/Table.test.tsx → Table.test.tsx} +94 -41
  449. package/src/components/Tabs/Tabs.test.tsx +10 -9
  450. package/src/components/Tabs/Tabs.tsx +61 -33
  451. package/src/components/Textarea/Textarea.test.tsx +31 -18
  452. package/src/components/Toast/Toast.tsx +2 -2
  453. package/src/components/Tooltip/Tooltip.test.tsx +1 -1
  454. package/src/components/UserMenu/UserMenu.test.tsx +7 -6
  455. package/src/components/UserMenu/UserMenu.tsx +2 -2
  456. package/src/components/index.ts +5 -4
  457. package/src/constants/performance.ts +19 -8
  458. package/src/hooks/__tests__/useAppConfig.unit.test.ts +21 -22
  459. package/src/hooks/__tests__/useEvents.unit.test.ts +5 -4
  460. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +2 -2
  461. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -0
  462. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +16 -11
  463. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +1 -3
  464. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +1 -3
  465. package/src/hooks/__tests__/useRBAC.unit.test.ts +24 -2
  466. package/src/hooks/index.ts +4 -0
  467. package/src/hooks/public/index.ts +2 -0
  468. package/src/hooks/public/usePublicEvent.ts +4 -6
  469. package/src/hooks/public/usePublicEventLogo.test.ts +147 -0
  470. package/src/hooks/public/usePublicRouteParams.ts +1 -1
  471. package/src/hooks/services/useAuth.ts +2 -4
  472. package/src/hooks/services/useCurrentEvent.ts +1 -1
  473. package/src/hooks/useAppConfig.ts +1 -1
  474. package/src/hooks/useDataTablePerformance.ts +2 -2
  475. package/src/hooks/useEventTheme.ts +1 -1
  476. package/src/hooks/useEvents.ts +51 -10
  477. package/src/hooks/useOrganisationPermissions.test.ts +3 -3
  478. package/src/hooks/useOrganisationPermissions.ts +1 -1
  479. package/src/hooks/useOrganisationSecurity.ts +2 -2
  480. package/src/hooks/usePermissionCache.test.ts +9 -9
  481. package/src/hooks/usePermissionCache.ts +2 -2
  482. package/src/index.ts +19 -12
  483. package/src/providers/OrganisationProvider.tsx +73 -9
  484. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
  485. package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
  486. package/src/providers/__tests__/EventProvider.test.tsx +24 -15
  487. package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
  488. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
  489. package/src/providers/index.ts +0 -3
  490. package/src/providers/services/AuthServiceProvider.tsx +2 -17
  491. package/src/providers/services/EventServiceProvider.tsx +11 -16
  492. package/src/providers/services/InactivityServiceProvider.tsx +9 -12
  493. package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
  494. package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
  495. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
  496. package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
  497. package/src/rbac/adapters.tsx +1 -1
  498. package/src/rbac/api.ts +20 -4
  499. package/src/rbac/audit-enhanced.ts +47 -2
  500. package/src/rbac/audit.ts +47 -2
  501. package/src/rbac/components/NavigationGuard.tsx +1 -1
  502. package/src/rbac/components/NavigationProvider.test.tsx +7 -6
  503. package/src/rbac/components/NavigationProvider.tsx +1 -1
  504. package/src/rbac/components/PagePermissionGuard.tsx +1 -1
  505. package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
  506. package/src/rbac/components/PagePermissionProvider.tsx +1 -1
  507. package/src/rbac/components/PermissionEnforcer.tsx +1 -1
  508. package/src/rbac/components/RoleBasedRouter.tsx +1 -1
  509. package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
  510. package/src/rbac/components/SecureDataProvider.tsx +1 -1
  511. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
  512. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
  513. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
  514. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
  515. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
  516. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
  517. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
  518. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
  519. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
  520. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
  521. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
  522. package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
  523. package/src/rbac/hooks/index.ts +3 -0
  524. package/src/rbac/hooks/usePermissions.ts +31 -85
  525. package/src/rbac/hooks/useRBAC.test.ts +13 -1
  526. package/src/rbac/hooks/useRBAC.ts +13 -67
  527. package/src/rbac/hooks/useResolvedScope.ts +11 -0
  528. package/src/rbac/hooks/useSecureSupabase.ts +308 -0
  529. package/src/rbac/index.ts +3 -0
  530. package/src/rbac/secureClient.ts +53 -6
  531. package/src/rbac/security.ts +37 -1
  532. package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
  533. package/src/rbac/types.ts +3 -2
  534. package/src/services/AuthService.ts +33 -25
  535. package/src/services/EventService.ts +56 -44
  536. package/src/services/InactivityService.ts +33 -53
  537. package/src/services/OrganisationService.ts +36 -40
  538. package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
  539. package/src/services/__tests__/EventService.test.ts +67 -33
  540. package/src/services/interfaces/IEventService.ts +1 -1
  541. package/src/styles/core.css +2 -2
  542. package/src/styles/index.test.ts +21 -0
  543. package/src/styles/index.ts +1 -5
  544. package/src/types/__tests__/guards.test.ts +1 -1
  545. package/src/types/__tests__/organisation.roles.test.ts +55 -0
  546. package/src/types/__tests__/type-validation.test.ts +0 -1
  547. package/src/types/auth.ts +42 -2
  548. package/src/types/core.ts +251 -0
  549. package/src/types/database.ts +11 -496
  550. package/src/types/event.ts +102 -0
  551. package/src/types/file-reference.ts +6 -4
  552. package/src/types/guards.ts +2 -1
  553. package/src/types/index.ts +48 -14
  554. package/src/types/lodash.debounce.d.ts +15 -0
  555. package/src/types/organisation.ts +14 -10
  556. package/src/types/supabase.ts +15 -17
  557. package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
  558. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
  559. package/src/utils/app/appNameResolver.ts +1 -1
  560. package/src/utils/audit/audit.test.ts +65 -0
  561. package/src/utils/device/deviceFingerprint.test.ts +171 -0
  562. package/src/utils/dynamic/dynamicUtils.ts +3 -2
  563. package/src/utils/file-reference/index.ts +25 -6
  564. package/src/utils/security/secureErrors.ts +1 -1
  565. package/src/utils/validation/__tests__/validationUtils.test.ts +72 -0
  566. package/src/utils/validation/index.ts +6 -12
  567. package/src/utils/validation/validationUtils.ts +0 -13
  568. package/dist/UnifiedAuthProvider-B37ATQHE.js +0 -16
  569. package/dist/auth-DReDSLq9.d.ts +0 -16
  570. package/dist/chunk-3JI76CYK.js +0 -2444
  571. package/dist/chunk-3JI76CYK.js.map +0 -1
  572. package/dist/chunk-56XJ3TU6.js +0 -11
  573. package/dist/chunk-56XJ3TU6.js.map +0 -1
  574. package/dist/chunk-5MT24GKJ.js.map +0 -1
  575. package/dist/chunk-7QCC6MCP.js +0 -288
  576. package/dist/chunk-BESYRHQM.js.map +0 -1
  577. package/dist/chunk-BJPBT3CU.js +0 -21
  578. package/dist/chunk-BJPBT3CU.js.map +0 -1
  579. package/dist/chunk-BVYWGZVV.js.map +0 -1
  580. package/dist/chunk-CX5M4ZAG.js.map +0 -1
  581. package/dist/chunk-D7LCGMVS.js.map +0 -1
  582. package/dist/chunk-EGI6MUL6.js +0 -27
  583. package/dist/chunk-EGI6MUL6.js.map +0 -1
  584. package/dist/chunk-ERISIBYU.js.map +0 -1
  585. package/dist/chunk-HRO5HWN2.js.map +0 -1
  586. package/dist/chunk-HZLDFOE4.js.map +0 -1
  587. package/dist/chunk-JISYG63F.js +0 -70
  588. package/dist/chunk-JISYG63F.js.map +0 -1
  589. package/dist/chunk-LIMSTKYD.js +0 -61
  590. package/dist/chunk-LIMSTKYD.js.map +0 -1
  591. package/dist/chunk-OWAG3GSU.js.map +0 -1
  592. package/dist/chunk-PPMP5J6T.js.map +0 -1
  593. package/dist/chunk-Q5QRDWKI.js.map +0 -1
  594. package/dist/chunk-S5OFRT4M.js.map +0 -1
  595. package/dist/chunk-SBVILCCA.js.map +0 -1
  596. package/dist/chunk-TUMEWN34.js +0 -15
  597. package/dist/chunk-TUMEWN34.js.map +0 -1
  598. package/dist/chunk-XDNLUEXI.js +0 -138
  599. package/dist/chunk-XJ2HZOBU.js.map +0 -1
  600. package/dist/chunk-ZYTYSTO5.js.map +0 -1
  601. package/dist/chunk-ZZ2SS7NI.js +0 -237
  602. package/dist/chunk-ZZ2SS7NI.js.map +0 -1
  603. package/dist/database-C6jy7EOu.d.ts +0 -500
  604. package/dist/organisation-D6qRDtbF.d.ts +0 -93
  605. package/dist/schema-DTDZQe2u.d.ts +0 -28
  606. package/dist/unified-DQ4VcT7H.d.ts +0 -198
  607. package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
  608. package/dist/validation.d.ts +0 -47
  609. package/dist/validation.js +0 -24
  610. package/dist/validation.js.map +0 -1
  611. package/docs/DOCUMENTATION_AUDIT.md +0 -172
  612. package/docs/DOCUMENTATION_STANDARD.md +0 -137
  613. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  614. package/docs/api/interfaces/EventLogoProps.md +0 -152
  615. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  616. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  617. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  618. package/docs/architecture/rpc-function-standards.md +0 -1106
  619. package/docs/getting-started/consuming-app-vite-config.md +0 -239
  620. package/docs/implementation-guides/event-theming-summary.md +0 -226
  621. package/docs/implementation-guides/public-pages-advanced.md +0 -1038
  622. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
  623. package/docs/migration/v0.4.16-css-first-approach.md +0 -312
  624. package/docs/migration/v0.4.17-source-path-fix.md +0 -235
  625. package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
  626. package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
  627. package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
  628. package/docs/rbac/README-rbac-rls-integration.md +0 -374
  629. package/docs/styles/usage.md +0 -227
  630. package/docs/testing/visual-testing.md +0 -120
  631. package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
  632. package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
  633. package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
  634. package/docs/troubleshooting/database-view-compatibility.md +0 -125
  635. package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
  636. package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
  637. package/examples/RBAC/EventBasedApp.tsx +0 -239
  638. package/examples/RBAC/PermissionExample.tsx +0 -151
  639. package/examples/STRUCTURE.md +0 -125
  640. package/examples/components 2/DataTable/HierarchicalExample.tsx +0 -475
  641. package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
  642. package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
  643. package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
  644. package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
  645. package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
  646. package/examples/components 2/index.ts +0 -11
  647. package/examples/features/index.ts +0 -12
  648. package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
  649. package/examples/features/rbac/index.ts +0 -13
  650. package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
  651. package/examples/public-pages/PublicEventPage.tsx +0 -274
  652. package/examples/public-pages/PublicPageApp.tsx +0 -308
  653. package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
  654. package/examples/public-pages/index.ts +0 -14
  655. package/src/__tests__/TEST_STANDARD.md +0 -1008
  656. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  657. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
  658. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
  659. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
  660. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
  661. package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
  662. package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
  663. package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
  664. package/src/components/Dialog/README.md +0 -804
  665. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  666. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  667. package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
  668. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  669. package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
  670. package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
  671. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
  672. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  673. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  674. package/src/components/EventSelector/types.ts +0 -79
  675. package/src/components/Form/FormErrorSummary.tsx +0 -113
  676. package/src/components/Form/FormField.tsx +0 -249
  677. package/src/components/Form/FormFieldset.tsx +0 -127
  678. package/src/components/Form/FormLiveRegion.tsx +0 -198
  679. package/src/components/Input/__mocks__/Input.tsx +0 -2
  680. package/src/components/NavigationMenu/types.ts +0 -85
  681. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
  682. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
  683. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  684. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  685. package/src/components/PasswordReset/index.ts +0 -2
  686. package/src/components/ProtectedRoute/README.md +0 -164
  687. package/src/components/PublicLayout/EventLogo.tsx +0 -175
  688. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
  689. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
  690. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
  691. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  692. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  693. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  694. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
  695. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
  696. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
  697. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
  698. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
  699. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
  700. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
  701. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
  702. package/src/components/Select/hooks.ts +0 -289
  703. package/src/hooks/useCounter.test.ts +0 -131
  704. package/src/hooks/useDebounce.test.ts +0 -375
  705. package/src/providers/AuthProvider.tsx +0 -15
  706. package/src/providers/EventProvider.tsx +0 -16
  707. package/src/providers/InactivityProvider.tsx +0 -15
  708. package/src/providers/OrganisationProvider.context.test.tsx +0 -169
  709. package/src/providers/UnifiedAuthProvider.tsx +0 -15
  710. package/src/types/theme.ts +0 -6
  711. package/src/types/unified.ts +0 -265
  712. package/src/utils/appConfig.ts +0 -47
  713. package/src/utils/appIdResolver.test.ts +0 -499
  714. package/src/utils/appIdResolver.ts +0 -130
  715. package/src/utils/appNameResolver.simple.test.ts +0 -212
  716. package/src/utils/appNameResolver.test.ts +0 -121
  717. package/src/utils/appNameResolver.ts +0 -191
  718. package/src/utils/audit.ts +0 -127
  719. package/src/utils/auth-utils.ts +0 -96
  720. package/src/utils/bundleAnalysis.ts +0 -129
  721. package/src/utils/debugLogger.ts +0 -67
  722. package/src/utils/deviceFingerprint.ts +0 -215
  723. package/src/utils/dynamicUtils.ts +0 -105
  724. package/src/utils/file-reference.test.ts +0 -788
  725. package/src/utils/file-reference.ts +0 -519
  726. package/src/utils/formatDate.test.ts +0 -237
  727. package/src/utils/formatting.ts +0 -170
  728. package/src/utils/lazyLoad.tsx +0 -44
  729. package/src/utils/logger.ts +0 -179
  730. package/src/utils/organisationContext.test.ts +0 -322
  731. package/src/utils/organisationContext.ts +0 -153
  732. package/src/utils/performanceBenchmark.ts +0 -64
  733. package/src/utils/performanceBudgets.ts +0 -110
  734. package/src/utils/permissionTypes.ts +0 -37
  735. package/src/utils/permissionUtils.test.ts +0 -393
  736. package/src/utils/permissionUtils.ts +0 -34
  737. package/src/utils/sanitization.ts +0 -264
  738. package/src/utils/schemaUtils.ts +0 -37
  739. package/src/utils/secureDataAccess.test.ts +0 -711
  740. package/src/utils/secureDataAccess.ts +0 -377
  741. package/src/utils/secureErrors.ts +0 -79
  742. package/src/utils/security.ts +0 -156
  743. package/src/utils/securityMonitor.ts +0 -45
  744. package/src/utils/sessionTracking.ts +0 -126
  745. package/src/utils/validation.ts +0 -111
  746. package/src/utils/validationUtils.ts +0 -120
  747. package/src/validation/index.ts +0 -12
  748. /package/dist/{DataTable-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
  749. /package/dist/{UnifiedAuthProvider-B37ATQHE.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
  750. /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
  751. /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
  752. /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
  753. /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
  754. /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
  755. /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
  756. /package/examples/{RBAC → rbac}/index.ts +0 -0
@@ -38,12 +38,12 @@ import {
38
38
  PublicPageLayout,
39
39
  PublicPageHeader,
40
40
  PublicPageFooter,
41
- EventLogo,
41
+ FileDisplay,
42
+ FileCategory,
42
43
  usePublicEvent,
43
44
  usePublicRouteParams,
44
- PublicLoadingSpinner,
45
- PublicErrorBoundary
46
- } from '../../../src';
45
+ LoadingSpinner
46
+ } from '@jmruthers/pace-core';
47
47
 
48
48
  /**
49
49
  * Complete public page application that works independently
@@ -87,9 +87,12 @@ function PublicRecipeGridReportPage() {
87
87
  // Step 3: Handle loading state
88
88
  if (isLoading) {
89
89
  return (
90
- <PublicLoadingSpinner
91
- message="Loading recipe grid report..."
92
- />
90
+ <div className="min-h-screen bg-background flex items-center justify-center">
91
+ <div className="max-w-md mx-auto text-center px-4">
92
+ <LoadingSpinner size="lg" className="mx-auto mb-4" />
93
+ <p className="text-sec-600">Loading recipe grid report...</p>
94
+ </div>
95
+ </div>
93
96
  );
94
97
  }
95
98
 
@@ -209,12 +212,23 @@ function PublicRecipeGridReportPage() {
209
212
  {/* Event Logo */}
210
213
  <div className="flex justify-center lg:justify-start">
211
214
  <div className="text-center">
212
- <EventLogo
213
- eventId={event.event_id}
214
- eventName={event.event_name}
215
- organisationId={event.organisation_id}
216
- size="2xl"
215
+ <FileDisplay
216
+ table_name="event"
217
+ record_id={event.event_id}
218
+ organisation_id={event.organisation_id}
219
+ category={FileCategory.EVENT_LOGOS}
220
+ displayOnly={true}
221
+ showFallback={true}
222
+ fallbackSize="2xl"
217
223
  className="rounded-lg shadow-lg"
224
+ generateFallbackText={() => {
225
+ if (!event.event_name) return 'EV';
226
+ return event.event_name
227
+ .split(/[\s\-_]+/)
228
+ .map(word => word.charAt(0).toUpperCase())
229
+ .join('')
230
+ .substring(0, 3);
231
+ }}
218
232
  />
219
233
  <p className="mt-4 text-sm text-sec-600">Event Logo</p>
220
234
  </div>
@@ -234,7 +248,16 @@ function PublicEventPage() {
234
248
  const { eventCode } = usePublicRouteParams({ fetchEventData: false });
235
249
  const { event, isLoading, error, refetch } = usePublicEvent(eventCode || '');
236
250
 
237
- if (isLoading) return <PublicLoadingSpinner message="Loading event..." />;
251
+ if (isLoading) {
252
+ return (
253
+ <div className="min-h-screen bg-background flex items-center justify-center">
254
+ <div className="max-w-md mx-auto text-center px-4">
255
+ <LoadingSpinner size="lg" className="mx-auto mb-4" />
256
+ <p className="text-sec-600">Loading event...</p>
257
+ </div>
258
+ </div>
259
+ );
260
+ }
238
261
  if (error || !event) return <div>Event not found</div>;
239
262
 
240
263
  return (
@@ -248,12 +271,23 @@ function PublicEventPage() {
248
271
 
249
272
  <main className="max-w-4xl mx-auto px-4 py-6">
250
273
  <div className="text-center mb-6">
251
- <EventLogo
252
- eventId={event.event_id}
253
- eventName={event.event_name}
254
- organisationId={event.organisation_id}
255
- size="xl"
274
+ <FileDisplay
275
+ table_name="event"
276
+ record_id={event.event_id}
277
+ organisation_id={event.organisation_id}
278
+ category={FileCategory.EVENT_LOGOS}
279
+ displayOnly={true}
280
+ showFallback={true}
281
+ fallbackSize="xl"
256
282
  className="mx-auto mb-4"
283
+ generateFallbackText={() => {
284
+ if (!event.event_name) return 'EV';
285
+ return event.event_name
286
+ .split(/[\s\-_]+/)
287
+ .map(word => word.charAt(0).toUpperCase())
288
+ .join('')
289
+ .substring(0, 3);
290
+ }}
257
291
  />
258
292
  <h1 className="text-2xl font-bold text-sec-900">{event.event_name}</h1>
259
293
  {event.event_date && (
@@ -29,12 +29,12 @@ import {
29
29
  PublicPageLayout,
30
30
  PublicPageHeader,
31
31
  PublicPageFooter,
32
- EventLogo,
32
+ FileDisplay,
33
+ FileCategory,
33
34
  usePublicEvent,
34
35
  usePublicRouteParams,
35
- PublicLoadingSpinner,
36
- PublicErrorBoundary
37
- } from '../../../src';
36
+ LoadingSpinner
37
+ } from '@jmruthers/pace-core';
38
38
 
39
39
  /**
40
40
  * Correct usage pattern for public pages
@@ -55,9 +55,12 @@ export function PublicPageUsageExample() {
55
55
  // Step 3: Handle loading state
56
56
  if (isLoading) {
57
57
  return (
58
- <PublicLoadingSpinner
59
- message="Loading event details..."
60
- />
58
+ <div className="min-h-screen bg-background flex items-center justify-center">
59
+ <div className="max-w-md mx-auto text-center px-4">
60
+ <LoadingSpinner size="lg" className="mx-auto mb-4" />
61
+ <p className="text-sec-600">Loading event details...</p>
62
+ </div>
63
+ </div>
61
64
  );
62
65
  }
63
66
 
@@ -113,9 +116,9 @@ export function PublicPageUsageExample() {
113
116
  }
114
117
 
115
118
  // Step 6: Render the public page with event data
119
+ // Note: PublicPageLayout now includes ErrorBoundary internally
116
120
  return (
117
- <PublicErrorBoundary>
118
- <PublicPageLayout eventCode={eventCode || ''} event={event}>
121
+ <PublicPageLayout eventCode={eventCode || ''} event={event}>
119
122
  <PublicPageHeader
120
123
  event={event}
121
124
  eventCode={eventCode || ''}
@@ -170,12 +173,23 @@ export function PublicPageUsageExample() {
170
173
  {/* Event Logo */}
171
174
  <div className="flex justify-center lg:justify-start">
172
175
  <div className="text-center">
173
- <EventLogo
174
- eventId={event.event_id}
175
- eventName={event.event_name}
176
- organisationId={event.organisation_id}
177
- size="2xl"
176
+ <FileDisplay
177
+ table_name="event"
178
+ record_id={event.event_id}
179
+ organisation_id={event.organisation_id}
180
+ category={FileCategory.EVENT_LOGOS}
181
+ displayOnly={true}
182
+ showFallback={true}
183
+ fallbackSize="2xl"
178
184
  className="rounded-lg shadow-lg"
185
+ generateFallbackText={() => {
186
+ if (!event.event_name) return 'EV';
187
+ return event.event_name
188
+ .split(/[\s\-_]+/)
189
+ .map(word => word.charAt(0).toUpperCase())
190
+ .join('')
191
+ .substring(0, 3);
192
+ }}
179
193
  />
180
194
  <p className="mt-4 text-sm text-sec-600">Event Logo</p>
181
195
  </div>
@@ -209,7 +223,6 @@ export function PublicPageUsageExample() {
209
223
 
210
224
  <PublicPageFooter event={event} />
211
225
  </PublicPageLayout>
212
- </PublicErrorBoundary>
213
226
  );
214
227
  }
215
228
 
@@ -1,53 +1,101 @@
1
1
  # PACE Core Examples
2
2
 
3
- This directory contains runnable examples demonstrating how to use various features of the pace-core library.
3
+ This directory contains **runnable TypeScript/React component examples** demonstrating how to use various features of the pace-core library.
4
4
 
5
- ## Structure
5
+ > **Note:** For complete application tutorials and starter projects, see the [Getting Started Examples](../../docs/getting-started/examples/) documentation.
6
6
 
7
- Examples are organized into two main categories:
7
+ ## Structure
8
8
 
9
- ### Features (`features/`)
10
- Cross-component workflow examples that demonstrate how to use multiple components together:
11
- - **`features/rbac/`** - RBAC and permission system examples
12
- - **`features/public-pages/`** - Public page workflow examples
13
- - **`features/authentication/`** - Authentication examples (coming soon)
9
+ Examples are organized in a flat structure by component or feature:
14
10
 
15
- ### Components (`components/`)
16
- Component-specific examples that demonstrate individual component features:
17
- - **`components/DataTable/`** - DataTable component examples
18
- - **`components/Dialog/`** - Dialog component examples
11
+ ```
12
+ examples/
13
+ ├── README.md # This file
14
+ ├── index.ts # Central export point
15
+
16
+ ├── DataTable/ # DataTable component examples
17
+ │ ├── index.ts
18
+ │ ├── HierarchicalExample.tsx
19
+ │ ├── HierarchicalActionsExample.tsx
20
+ │ ├── InitialPageSizeExample.tsx
21
+ │ ├── PerformanceExample.tsx
22
+ │ └── GroupingAggregationExample.tsx
23
+
24
+ ├── Dialog/ # Dialog component examples
25
+ │ ├── index.ts
26
+ │ ├── HtmlDialogExample.tsx
27
+ │ ├── ScrollableDialogExample.tsx
28
+ │ └── SmartDialogExample.tsx
29
+
30
+ ├── rbac/ # RBAC and permission examples
31
+ │ ├── index.ts
32
+ │ ├── EventBasedApp.tsx
33
+ │ ├── CompleteRBACExample.tsx
34
+ │ └── PermissionExample.tsx
35
+
36
+ └── PublicPages/ # Public page workflow examples
37
+ ├── index.ts
38
+ ├── PublicPageUsageExample.tsx
39
+ ├── PublicEventPage.tsx
40
+ ├── PublicPageApp.tsx
41
+ └── CorrectPublicPageImplementation.tsx
42
+ ```
19
43
 
20
44
  ## Usage
21
45
 
22
- ### Import Feature Examples
46
+ ### Import from Main Export (Recommended)
23
47
 
24
48
  ```tsx
25
- // Import from main examples export (recommended)
26
- import { PublicPageUsageExample, EventBasedApp } from '@jmruthers/pace-core/examples';
49
+ // Import all examples from main export
50
+ import {
51
+ PublicPageUsageExample,
52
+ EventBasedApp,
53
+ HierarchicalExample,
54
+ HtmlDialogExample
55
+ } from '@jmruthers/pace-core/examples';
56
+ ```
27
57
 
28
- // Or import from specific feature category
29
- import { PublicPageUsageExample } from '@jmruthers/pace-core/examples/features/public-pages';
30
- import { EventBasedApp } from '@jmruthers/pace-core/examples/features/rbac';
58
+ ### Import from Specific Directories
31
59
 
32
- // Or import all features
33
- import * as Features from '@jmruthers/pace-core/examples/features';
60
+ ```tsx
61
+ // Import from specific directories
62
+ import { HierarchicalExample } from '@jmruthers/pace-core/examples/DataTable';
63
+ import { HtmlDialogExample } from '@jmruthers/pace-core/examples/Dialog';
64
+ import { EventBasedApp } from '@jmruthers/pace-core/examples/rbac';
65
+ import { PublicPageUsageExample } from '@jmruthers/pace-core/examples/PublicPages';
34
66
  ```
35
67
 
36
- ### Import Component Examples
68
+ ## Package Exports
37
69
 
38
- ```tsx
39
- // Import from specific component
40
- import { HierarchicalExample } from '@jmruthers/pace-core/examples/components/DataTable';
41
- import { HtmlDialogExample } from '@jmruthers/pace-core/examples/components/Dialog';
70
+ The following export paths are available:
42
71
 
43
- // Or import all component examples
44
- import * as Components from '@jmruthers/pace-core/examples/components';
45
- ```
72
+ - `@jmruthers/pace-core/examples` - Main export (all examples)
73
+ - `@jmruthers/pace-core/examples/DataTable` - DataTable examples
74
+ - `@jmruthers/pace-core/examples/Dialog` - Dialog examples
75
+ - `@jmruthers/pace-core/examples/rbac` - RBAC examples
76
+ - `@jmruthers/pace-core/examples/PublicPages` - Public pages examples
77
+
78
+ ## Adding New Examples
79
+
80
+ 1. Create a new directory under `examples/[ExampleName]/`
81
+ 2. Add your example files
82
+ 3. Create an `index.ts` file exporting your examples
83
+ 4. Update `examples/index.ts` to export from your new directory
84
+ 5. Update `package.json` exports if you want a dedicated import path
85
+
86
+ ## Documentation vs Runnable Examples
46
87
 
47
- ## Documentation
88
+ **This directory (`/examples/`)** contains:
89
+ - ✅ Runnable TypeScript/React components you can import and use
90
+ - ✅ Component-level examples (DataTable, Dialog, RBAC, PublicPages)
91
+ - ✅ Importable code: `import { HierarchicalExample } from '@jmruthers/pace-core/examples'`
48
92
 
49
- For more detailed tutorials and guides, see the documentation:
50
- - [Getting Started Examples](../../docs/getting-started/examples/)
51
- - [RBAC Examples](../../docs/rbac/examples/)
52
- - [Implementation Guides](../../docs/implementation-guides/)
93
+ **Documentation examples (`/docs/getting-started/examples/`)** contain:
94
+ - 📚 Tutorial-style guides with embedded code snippets
95
+ - 📚 Complete application examples (basic-auth-app, full-featured meal app)
96
+ - 📚 Step-by-step setup instructions and explanations
53
97
 
98
+ For more detailed tutorials and guides, see:
99
+ - [Getting Started Examples](../../docs/getting-started/examples/) - Complete app tutorials
100
+ - [RBAC Examples](../../docs/rbac/examples/) - RBAC implementation guides
101
+ - [Implementation Guides](../../docs/implementation-guides/) - Advanced patterns
package/examples/index.ts CHANGED
@@ -11,20 +11,22 @@
11
11
  *
12
12
  * @example
13
13
  * ```tsx
14
- * // Import feature examples
15
- * import { PublicPageUsageExample } from '@jmruthers/pace-core/examples';
16
- * import { EventBasedApp } from '@jmruthers/pace-core/examples';
14
+ * // Import all examples
15
+ * import { PublicPageUsageExample, EventBasedApp } from '@jmruthers/pace-core/examples';
16
+ * import { HierarchicalExample } from '@jmruthers/pace-core/examples';
17
+ * import { HtmlDialogExample } from '@jmruthers/pace-core/examples';
17
18
  *
18
- * // Import component examples
19
- * import { HierarchicalExample } from '@jmruthers/pace-core/examples/components/DataTable';
20
- * import { HtmlDialogExample } from '@jmruthers/pace-core/examples/components/Dialog';
19
+ * // Or import from specific directories
20
+ * import { HierarchicalExample } from '@jmruthers/pace-core/examples/DataTable';
21
+ * import { HtmlDialogExample } from '@jmruthers/pace-core/examples/Dialog';
22
+ * import { EventBasedApp } from '@jmruthers/pace-core/examples/rbac';
23
+ * import { PublicPageUsageExample } from '@jmruthers/pace-core/examples/PublicPages';
21
24
  * ```
22
25
  */
23
26
 
24
- // Export all feature examples
25
- export * from './features/rbac';
26
- export * from './features/public-pages';
27
-
28
- // Export all component examples
29
- export * from './components';
27
+ // Export all examples
28
+ export * from './DataTable';
29
+ export * from './Dialog';
30
+ export * from './rbac';
31
+ export * from './PublicPages';
30
32
 
@@ -30,7 +30,7 @@ import {
30
30
  EnhancedNavigationMenu,
31
31
  type NavigationItem,
32
32
  type RouteConfig
33
- } from '../../src/rbac/components';
33
+ } from '@jmruthers/pace-core';
34
34
 
35
35
  // Example navigation items
36
36
  const navigationItems: NavigationItem[] = [
@@ -12,10 +12,10 @@ import {
12
12
  PermissionEnforcer,
13
13
  PagePermissionGuard,
14
14
  NavigationGuard,
15
- useCan
16
- } from '../../src/rbac';
17
- import { useUnifiedAuth } from '../../src/providers';
18
- import type { Permission } from '../../src/rbac/types';
15
+ useCan,
16
+ useUnifiedAuth,
17
+ type Permission
18
+ } from '@jmruthers/pace-core';
19
19
 
20
20
  // Example navigation items for an event-based app
21
21
  const navigationItems = [
@@ -9,9 +9,11 @@
9
9
  */
10
10
 
11
11
  import React from 'react';
12
- import { useUnifiedAuth } from '../../src/providers';
13
- import { useAppConfig } from '../../src/hooks';
14
- import { AccessLevel } from '../../src/types';
12
+ import {
13
+ useUnifiedAuth,
14
+ useAppConfig,
15
+ type AccessLevel
16
+ } from '@jmruthers/pace-core';
15
17
 
16
18
  export function PermissionExample() {
17
19
  const {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jmruthers/pace-core",
3
- "version": "0.5.181",
3
+ "version": "0.5.183",
4
4
  "description": "Clean, modern React component library with Tailwind v4 styling and native utilities",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -97,35 +97,25 @@
97
97
  "import": "./dist/examples/index.js",
98
98
  "default": "./dist/examples/index.js"
99
99
  },
100
- "./examples/features": {
101
- "types": "./dist/examples/features/index.d.ts",
102
- "import": "./dist/examples/features/index.js",
103
- "default": "./dist/examples/features/index.js"
100
+ "./examples/DataTable": {
101
+ "types": "./dist/examples/DataTable/index.d.ts",
102
+ "import": "./dist/examples/DataTable/index.js",
103
+ "default": "./dist/examples/DataTable/index.js"
104
104
  },
105
- "./examples/features/rbac": {
106
- "types": "./dist/examples/features/rbac/index.d.ts",
107
- "import": "./dist/examples/features/rbac/index.js",
108
- "default": "./dist/examples/features/rbac/index.js"
105
+ "./examples/Dialog": {
106
+ "types": "./dist/examples/Dialog/index.d.ts",
107
+ "import": "./dist/examples/Dialog/index.js",
108
+ "default": "./dist/examples/Dialog/index.js"
109
109
  },
110
- "./examples/features/public-pages": {
111
- "types": "./dist/examples/features/public-pages/index.d.ts",
112
- "import": "./dist/examples/features/public-pages/index.js",
113
- "default": "./dist/examples/features/public-pages/index.js"
110
+ "./examples/rbac": {
111
+ "types": "./dist/examples/rbac/index.d.ts",
112
+ "import": "./dist/examples/rbac/index.js",
113
+ "default": "./dist/examples/rbac/index.js"
114
114
  },
115
- "./examples/components": {
116
- "types": "./dist/examples/components/index.d.ts",
117
- "import": "./dist/examples/components/index.js",
118
- "default": "./dist/examples/components/index.js"
119
- },
120
- "./examples/components/DataTable": {
121
- "types": "./dist/examples/components/DataTable/index.d.ts",
122
- "import": "./dist/examples/components/DataTable/index.js",
123
- "default": "./dist/examples/components/DataTable/index.js"
124
- },
125
- "./examples/components/Dialog": {
126
- "types": "./dist/examples/components/Dialog/index.d.ts",
127
- "import": "./dist/examples/components/Dialog/index.js",
128
- "default": "./dist/examples/components/Dialog/index.js"
115
+ "./examples/PublicPages": {
116
+ "types": "./dist/examples/PublicPages/index.d.ts",
117
+ "import": "./dist/examples/PublicPages/index.js",
118
+ "default": "./dist/examples/PublicPages/index.js"
129
119
  },
130
120
  "./source/examples": {
131
121
  "import": "./examples/index.ts",
@@ -143,9 +133,13 @@
143
133
  "scripts": {
144
134
  "_comment_build": "Build package and documentation",
145
135
  "build": "tsup && node scripts/build-css.js",
136
+ "build:watch": "tsup --watch",
146
137
  "build:docs": "node scripts/build-docs-incremental.js",
147
138
  "build:docs:force": "node scripts/build-docs-incremental.js --force",
148
139
  "build:all": "npm run build && npm run build:docs",
140
+ "_comment_local_dev": "Local development utilities",
141
+ "link": "npm run build && npm link",
142
+ "unlink": "npm unlink",
149
143
  "validate:theme": "node scripts/validate-theme.js",
150
144
  "prepublishOnly": "npm run build",
151
145
  "clean": "rimraf dist",
@@ -9,6 +9,15 @@ import userEvent from '@testing-library/user-event';
9
9
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
10
10
  import { vi } from 'vitest';
11
11
 
12
+ // Try to import MemoryRouter, but handle cases where react-router-dom is mocked
13
+ let MemoryRouter: React.ComponentType<any> | null = null;
14
+ try {
15
+ const routerModule = require('react-router-dom');
16
+ MemoryRouter = routerModule.MemoryRouter || null;
17
+ } catch {
18
+ // react-router-dom may be mocked, MemoryRouter will be null
19
+ }
20
+
12
21
  // Mock providers for testing - optimized for performance
13
22
  let sharedQueryClient: QueryClient | null = null;
14
23
 
@@ -34,6 +43,8 @@ const createTestQueryClient = () => {
34
43
  interface CustomRenderOptions extends Omit<RenderOptions, 'wrapper'> {
35
44
  queryClient?: QueryClient;
36
45
  withQueryClient?: boolean;
46
+ withRouter?: boolean;
47
+ initialEntries?: string[];
37
48
  }
38
49
 
39
50
  export function renderWithProviders(
@@ -43,18 +54,33 @@ export function renderWithProviders(
43
54
  const {
44
55
  queryClient = createTestQueryClient(),
45
56
  withQueryClient = true,
57
+ withRouter = true,
58
+ initialEntries = ['/'],
46
59
  ...renderOptions
47
60
  } = options;
48
61
 
49
62
  const Wrapper = ({ children }: { children: React.ReactNode }) => {
63
+ let content = <>{children}</>;
64
+
50
65
  if (withQueryClient) {
51
- return (
66
+ content = (
52
67
  <QueryClientProvider client={queryClient}>
53
- {children}
68
+ {content}
54
69
  </QueryClientProvider>
55
70
  );
56
71
  }
57
- return <>{children}</>;
72
+
73
+ // Only wrap with Router if MemoryRouter is available and withRouter is true
74
+ // Some tests may already have a Router or mock react-router-dom
75
+ if (withRouter && MemoryRouter) {
76
+ content = (
77
+ <MemoryRouter initialEntries={initialEntries}>
78
+ {content}
79
+ </MemoryRouter>
80
+ );
81
+ }
82
+
83
+ return content;
58
84
  };
59
85
 
60
86
  return render(ui, { wrapper: Wrapper, ...renderOptions });
@@ -19,8 +19,9 @@ import { useUnifiedAuth } from '../../providers';
19
19
  import { useCan } from '../../rbac/hooks';
20
20
 
21
21
  // Mock the hooks
22
- vi.mock('../../providers', () => ({
23
- useUnifiedAuth: vi.fn(),
22
+ const mockUseUnifiedAuthFn = vi.fn();
23
+ vi.mock('../../providers/services/UnifiedAuthProvider', () => ({
24
+ useUnifiedAuth: () => mockUseUnifiedAuthFn(),
24
25
  UnifiedAuthProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
25
26
  }));
26
27
  vi.mock('../../rbac/hooks', () => ({
@@ -28,7 +29,6 @@ vi.mock('../../rbac/hooks', () => ({
28
29
  }));
29
30
  vi.mock('../../utils/appNameResolver');
30
31
 
31
- const mockUseUnifiedAuth = vi.mocked(useUnifiedAuth);
32
32
  const mockUseCan = vi.mocked(useCan);
33
33
 
34
34
  describe('PagePermissionGuard', () => {
@@ -48,8 +48,10 @@ describe('PagePermissionGuard', () => {
48
48
  vi.clearAllMocks();
49
49
 
50
50
  // Default mock implementations
51
- vi.mocked(useUnifiedAuth).mockReturnValue({
51
+ mockUseUnifiedAuthFn.mockReturnValue({
52
52
  user: mockUser,
53
+ selectedOrganisation: { id: 'org-123' },
54
+ selectedEvent: { event_id: 'event-123' },
53
55
  selectedOrganisationId: 'org-123',
54
56
  selectedEventId: 'event-123',
55
57
  supabase: {} as any,
@@ -188,7 +190,7 @@ describe('PagePermissionGuard', () => {
188
190
 
189
191
  describe('Scope Resolution', () => {
190
192
  it('should work with organisation context', async () => {
191
- mockUseUnifiedAuth.mockReturnValue({
193
+ mockUseUnifiedAuthFn.mockReturnValue({
192
194
  user: mockUser,
193
195
  selectedOrganisationId: 'org-123',
194
196
  selectedEventId: null,
@@ -110,7 +110,7 @@ describe('Alert Component', () => {
110
110
  });
111
111
 
112
112
  it('forwards ref correctly', () => {
113
- const ref = React.createRef<HTMLParagraphElement>();
113
+ const ref = React.createRef<HTMLHeadingElement>();
114
114
 
115
115
  renderWithProviders(
116
116
  <Alert>
@@ -387,7 +387,7 @@ describe('Alert Component', () => {
387
387
  });
388
388
 
389
389
  it('handles invalid variant gracefully', () => {
390
- // @ts-expect-error Testing invalid variant
390
+ // @ts-expect-error - Testing invalid variant type for runtime behavior
391
391
  renderWithProviders(
392
392
  <Alert variant="invalid">
393
393
  <AlertTitle>Test</AlertTitle>
@@ -50,7 +50,7 @@ import * as React from "react"
50
50
  import { cn } from "../../utils/core/cn"
51
51
 
52
52
  // Context to share variant with child components
53
- const AlertContext = React.createContext<{ variant?: "default" | "destructive" | "inline" | null }>({ variant: "default" })
53
+ const AlertContext = React.createContext<{ variant?: "default" | "destructive" | "inline" }>({ variant: "default" })
54
54
 
55
55
  const getAlertClasses = (variant: "default" | "destructive" | "inline" = "default"): string => {
56
56
  const baseClasses = "relative w-full rounded-lg border p-4";
@@ -92,7 +92,7 @@ const Alert = React.forwardRef<
92
92
  Alert.displayName = "Alert"
93
93
 
94
94
  const AlertTitle = React.forwardRef<
95
- HTMLParagraphElement,
95
+ HTMLHeadingElement,
96
96
  React.HTMLAttributes<HTMLHeadingElement>
97
97
  >(({ className, ...props }, ref) => {
98
98
  const { variant } = React.useContext(AlertContext)
@@ -104,7 +104,7 @@ const AlertTitle = React.forwardRef<
104
104
  return (
105
105
  <h5
106
106
  ref={ref}
107
- className={cn("", className)}
107
+ className={cn(className)}
108
108
  {...props}
109
109
  />
110
110
  )
@@ -124,7 +124,7 @@ const AlertDescription = React.forwardRef<
124
124
  return (
125
125
  <p
126
126
  ref={ref}
127
- className={cn("", className)}
127
+ className={cn(className)}
128
128
  {...props}
129
129
  />
130
130
  )