@jmruthers/pace-core 0.5.53 → 0.5.55

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 (398) hide show
  1. package/README.md +0 -4
  2. package/dist/{DataTable-7FMFXA7A.js → DataTable-4T627QFJ.js} +11 -11
  3. package/dist/{PublicLoadingSpinner-Bq_-BeK-.d.ts → PublicLoadingSpinner-SL8WaQN7.d.ts} +2 -21
  4. package/dist/{api-H5A3H4IR.js → api-LUNF5O6M.js} +3 -3
  5. package/dist/{appConfig-BVGyuvI7.d.ts → appConfig-DjpeG6P-.d.ts} +9 -1
  6. package/dist/{appNameResolver-7GHF5ED2.js → appNameResolver-UURKN7NF.js} +2 -2
  7. package/dist/{audit-BUW3LMJB.js → audit-6TOCAMKO.js} +2 -2
  8. package/dist/{chunk-MZBUOP4P.js → chunk-5BSLGBYI.js} +4 -3
  9. package/dist/chunk-5BSLGBYI.js.map +1 -0
  10. package/dist/{chunk-I5Z3QH5X.js → chunk-66C4BSAY.js} +2 -2
  11. package/dist/{chunk-I5Z3QH5X.js.map → chunk-66C4BSAY.js.map} +1 -1
  12. package/dist/{chunk-MYP2EGHX.js → chunk-AJ2KMES7.js} +21 -14
  13. package/dist/chunk-AJ2KMES7.js.map +1 -0
  14. package/dist/{chunk-EL2O4IUX.js → chunk-AQFRLC7K.js} +16 -24
  15. package/dist/{chunk-EL2O4IUX.js.map → chunk-AQFRLC7K.js.map} +1 -1
  16. package/dist/{chunk-7BNPOCLL.js → chunk-B2WTCLCV.js} +6 -2
  17. package/dist/chunk-B2WTCLCV.js.map +1 -0
  18. package/dist/{chunk-WJARTBCT.js → chunk-D7ARGIA3.js} +16 -7
  19. package/dist/chunk-D7ARGIA3.js.map +1 -0
  20. package/dist/{chunk-NRK4AIHQ.js → chunk-KBRACSJI.js} +3 -3
  21. package/dist/{chunk-NYUJ4FJR.js → chunk-KJDPSM64.js} +7 -7
  22. package/dist/chunk-KJDPSM64.js.map +1 -0
  23. package/dist/{chunk-GWSBHC4J.js → chunk-KLPVOPRI.js} +261 -38
  24. package/dist/chunk-KLPVOPRI.js.map +1 -0
  25. package/dist/{chunk-TRIZ7IB7.js → chunk-MPQDF75X.js} +148 -288
  26. package/dist/chunk-MPQDF75X.js.map +1 -0
  27. package/dist/{chunk-MSFACPQQ.js → chunk-PAEM3OWN.js} +11 -11
  28. package/dist/{chunk-MSFACPQQ.js.map → chunk-PAEM3OWN.js.map} +1 -1
  29. package/dist/{chunk-GIO7BFE7.js → chunk-RQD3D2CO.js} +66 -169
  30. package/dist/{chunk-GIO7BFE7.js.map → chunk-RQD3D2CO.js.map} +1 -1
  31. package/dist/{chunk-YDJW5XTN.js → chunk-STT7INZR.js} +25 -1
  32. package/dist/chunk-STT7INZR.js.map +1 -0
  33. package/dist/{chunk-6MTY77WU.js → chunk-TNMXZLDR.js} +3 -3
  34. package/dist/{chunk-BC3S53OZ.js → chunk-UQE2Y64H.js} +30 -14
  35. package/dist/chunk-UQE2Y64H.js.map +1 -0
  36. package/dist/{chunk-22KLBHPS.js → chunk-W66AZIOH.js} +2 -2
  37. package/dist/chunk-W66AZIOH.js.map +1 -0
  38. package/dist/{chunk-SS3E6QLB.js → chunk-YNUBMSMV.js} +2 -2
  39. package/dist/chunk-YNUBMSMV.js.map +1 -0
  40. package/dist/{chunk-NZ655MWE.js → chunk-ZOD2ZY6X.js} +5 -4
  41. package/dist/chunk-ZOD2ZY6X.js.map +1 -0
  42. package/dist/{chunk-74C6SNEC.js → chunk-ZPK5656W.js} +3 -3
  43. package/dist/{chunk-74C6SNEC.js.map → chunk-ZPK5656W.js.map} +1 -1
  44. package/dist/components.d.ts +22 -899
  45. package/dist/components.js +436 -3118
  46. package/dist/components.js.map +1 -1
  47. package/dist/file-reference-9xUOnwyt.d.ts +70 -0
  48. package/dist/hooks.d.ts +2 -2
  49. package/dist/hooks.js +10 -10
  50. package/dist/hooks.js.map +1 -1
  51. package/dist/index.d.ts +49 -9
  52. package/dist/index.js +190 -25
  53. package/dist/index.js.map +1 -1
  54. package/dist/{organisation-CO3Sh3_D.d.ts → organisation-t-vvQC3g.d.ts} +1 -8
  55. package/dist/providers.d.ts +2 -2
  56. package/dist/providers.js +5 -5
  57. package/dist/rbac/index.d.ts +65 -46
  58. package/dist/rbac/index.js +10 -12
  59. package/dist/styles/core.css +0 -125
  60. package/dist/types.d.ts +2 -1
  61. package/dist/types.js +3 -1
  62. package/dist/types.js.map +1 -1
  63. package/dist/{usePublicRouteParams-B2OcAsur.d.ts → usePublicRouteParams-CdoFxnJK.d.ts} +1 -1
  64. package/dist/utils.d.ts +3 -4
  65. package/dist/utils.js +44 -13
  66. package/dist/utils.js.map +1 -1
  67. package/docs/FILE_REFERENCE_SYSTEM.md +440 -0
  68. package/docs/INDEX.md +7 -5
  69. package/docs/README.md +0 -1
  70. package/docs/api/README.md +0 -4
  71. package/docs/api/classes/ErrorBoundary.md +1 -1
  72. package/docs/api/classes/InvalidScopeError.md +1 -1
  73. package/docs/api/classes/MissingUserContextError.md +1 -1
  74. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  75. package/docs/api/classes/PermissionDeniedError.md +2 -2
  76. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  77. package/docs/api/classes/RBACAuditManager.md +12 -12
  78. package/docs/api/classes/RBACCache.md +1 -1
  79. package/docs/api/classes/RBACEngine.md +6 -6
  80. package/docs/api/classes/RBACError.md +1 -1
  81. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  82. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  83. package/docs/api/classes/StorageUtils.md +281 -0
  84. package/docs/api/interfaces/AggregateConfig.md +1 -1
  85. package/docs/api/interfaces/ButtonProps.md +1 -1
  86. package/docs/api/interfaces/CardProps.md +1 -1
  87. package/docs/api/interfaces/ColorPalette.md +1 -1
  88. package/docs/api/interfaces/ColorShade.md +1 -1
  89. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  90. package/docs/api/interfaces/DataTableAction.md +1 -1
  91. package/docs/api/interfaces/DataTableColumn.md +1 -1
  92. package/docs/api/interfaces/DataTableProps.md +1 -1
  93. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  94. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  95. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  96. package/docs/api/interfaces/EventContextType.md +1 -1
  97. package/docs/api/interfaces/EventLogoProps.md +1 -1
  98. package/docs/api/interfaces/EventProviderProps.md +1 -1
  99. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  100. package/docs/api/interfaces/FileUploadProps.md +1 -1
  101. package/docs/api/interfaces/FooterProps.md +1 -1
  102. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  103. package/docs/api/interfaces/InputProps.md +1 -1
  104. package/docs/api/interfaces/LabelProps.md +1 -1
  105. package/docs/api/interfaces/LoginFormProps.md +1 -1
  106. package/docs/api/interfaces/NavigationAccessRecord.md +2 -2
  107. package/docs/api/interfaces/NavigationContextType.md +1 -1
  108. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  109. package/docs/api/interfaces/NavigationItem.md +1 -1
  110. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  111. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  112. package/docs/api/interfaces/Organisation.md +1 -1
  113. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  114. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  115. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  116. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  117. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  118. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  119. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  120. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  121. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  122. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  123. package/docs/api/interfaces/PaletteData.md +1 -1
  124. package/docs/api/interfaces/PermissionEnforcerProps.md +4 -4
  125. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  126. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  127. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  128. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  129. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  130. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  131. package/docs/api/interfaces/RBACConfig.md +1 -1
  132. package/docs/api/interfaces/RBACContextType.md +1 -1
  133. package/docs/api/interfaces/RBACLogger.md +1 -1
  134. package/docs/api/interfaces/RBACProviderProps.md +1 -1
  135. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  136. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  137. package/docs/api/interfaces/RouteAccessRecord.md +2 -2
  138. package/docs/api/interfaces/RouteConfig.md +2 -2
  139. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  140. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  141. package/docs/api/interfaces/StorageConfig.md +1 -1
  142. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  143. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  144. package/docs/api/interfaces/StorageListOptions.md +1 -1
  145. package/docs/api/interfaces/StorageListResult.md +1 -1
  146. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  147. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  148. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  149. package/docs/api/interfaces/StyleImport.md +1 -1
  150. package/docs/api/interfaces/ToastActionElement.md +1 -1
  151. package/docs/api/interfaces/ToastProps.md +1 -1
  152. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  153. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  154. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  155. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  156. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  157. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  158. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  159. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  160. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  161. package/docs/api/interfaces/UserEventAccess.md +1 -1
  162. package/docs/api/interfaces/UserMenuProps.md +1 -1
  163. package/docs/api/interfaces/UserProfile.md +1 -1
  164. package/docs/api/modules.md +204 -200
  165. package/docs/api-reference/components.md +141 -163
  166. package/docs/api-reference/hooks.md +347 -0
  167. package/docs/core-concepts/rbac-system.md +69 -16
  168. package/docs/getting-started/examples/basic-auth-app.md +0 -1
  169. package/docs/implementation-guides/datatable-rbac-usage.md +12 -11
  170. package/docs/implementation-guides/file-upload-storage.md +733 -0
  171. package/docs/implementation-guides/inactivity-tracking.md +779 -0
  172. package/docs/implementation-guides/organisation-security.md +748 -0
  173. package/docs/implementation-guides/public-pages-advanced.md +1022 -0
  174. package/docs/migration/MIGRATION_GUIDE.md +684 -0
  175. package/docs/migration/README.md +13 -2
  176. package/docs/migration/rbac-migration.md +73 -0
  177. package/docs/rbac/examples/rbac-rls-integration-example.md +11 -13
  178. package/docs/style-guide.md +269 -1
  179. package/package.json +1 -1
  180. package/src/__tests__/TESTING_GUIDELINES.md +331 -18
  181. package/src/__tests__/helpers/supabaseMock.ts +99 -0
  182. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +10 -7
  183. package/src/__tests__/shared.ts +6 -0
  184. package/src/components/DataTable/components/ActionButtons.tsx +2 -2
  185. package/src/components/DataTable/components/DataTableCore.tsx +2 -2
  186. package/src/components/DataTable/components/UnifiedTableBody.tsx +1 -1
  187. package/src/components/DataTable/utils/debugTools.ts +2 -2
  188. package/src/components/Dialog/Dialog.test.tsx +12 -2
  189. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +6 -6
  190. package/src/components/ErrorBoundary/ErrorBoundary.tsx +2 -2
  191. package/src/components/FileDisplay.tsx +233 -0
  192. package/src/components/FileUpload.tsx +176 -0
  193. package/src/components/Footer/Footer.test.tsx +7 -7
  194. package/src/components/NavigationMenu/NavigationMenu.test.tsx +13 -6
  195. package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +30 -3
  196. package/src/components/OrganisationSelector/OrganisationSelector.tsx +1 -1
  197. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.rbac.test.tsx +558 -0
  198. package/src/components/PublicLayout/PublicErrorBoundary.tsx +1 -1
  199. package/src/components/PublicLayout/PublicPageDebugger.tsx +2 -2
  200. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +2 -2
  201. package/src/components/PublicLayout/PublicPageProvider.tsx +2 -2
  202. package/src/components/Select/Select.test.tsx +50 -15
  203. package/src/components/SuperAdminGuard.tsx +2 -2
  204. package/src/components/__tests__/SuperAdminGuard.test.tsx +559 -0
  205. package/src/components/index.ts +0 -183
  206. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +2 -2
  207. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +1 -1
  208. package/src/hooks/__tests__/useRBAC.unit.test.ts +191 -138
  209. package/src/hooks/public/usePublicEvent.ts +2 -2
  210. package/src/hooks/useAppConfig.ts +3 -3
  211. package/src/hooks/useComponentPerformance.ts +1 -1
  212. package/src/hooks/useDataTablePerformance.ts +1 -1
  213. package/src/hooks/useFileReference.ts +232 -0
  214. package/src/hooks/useOrganisationPermissions.test.ts +254 -344
  215. package/src/hooks/useOrganisationPermissions.ts +15 -7
  216. package/src/hooks/useOrganisationSecurity.test.ts +390 -402
  217. package/src/hooks/usePerformanceMonitor.ts +1 -1
  218. package/src/hooks/usePermissionCache.test.ts +264 -395
  219. package/src/hooks/usePermissionCache.ts +34 -4
  220. package/src/hooks/useSecureDataAccess.test.ts +486 -0
  221. package/src/hooks/useSecureDataAccess.ts +4 -1
  222. package/src/providers/InactivityProvider.tsx +2 -2
  223. package/src/providers/OrganisationProvider.test.simple.tsx +168 -0
  224. package/src/providers/OrganisationProvider.test.tsx +168 -0
  225. package/src/providers/OrganisationProvider.tsx +18 -31
  226. package/src/providers/UnifiedAuthProvider.test.simple.tsx +205 -0
  227. package/src/providers/UnifiedAuthProvider.test.tsx +128 -0
  228. package/src/providers/__tests__/InactivityProvider.test.tsx +3 -4
  229. package/src/providers/__tests__/OrganisationProvider.test.tsx +19 -14
  230. package/src/rbac/__tests__/integration.authflow.test.tsx +123 -0
  231. package/src/rbac/__tests__/integration.navigation.test.tsx +72 -0
  232. package/src/rbac/__tests__/integration.securedata.test.tsx +92 -0
  233. package/src/rbac/__tests__/integration.smoke.test.tsx +73 -0
  234. package/src/rbac/__tests__/rbac-core.test.tsx +26 -22
  235. package/src/rbac/__tests__/rbac-engine-core-logic.test.ts +411 -0
  236. package/src/rbac/__tests__/rbac-engine-simplified.test.ts +285 -0
  237. package/src/rbac/__tests__/rbac-functions.test.ts +655 -0
  238. package/src/rbac/__tests__/rbac-integration.test.ts +532 -0
  239. package/src/rbac/__tests__/scenarios.user-role.test.tsx +196 -0
  240. package/src/rbac/api.test.ts +6 -6
  241. package/src/rbac/api.ts +2 -2
  242. package/src/rbac/audit.test.ts +485 -0
  243. package/src/rbac/audit.ts +7 -1
  244. package/src/rbac/cache-invalidation.ts +318 -0
  245. package/src/rbac/cache.test.ts +286 -0
  246. package/src/rbac/components/EnhancedNavigationMenu.test.tsx +559 -0
  247. package/src/rbac/components/EnhancedNavigationMenu.tsx +29 -23
  248. package/src/rbac/components/NavigationProvider.test.tsx +449 -0
  249. package/src/rbac/components/PagePermissionGuard.tsx +4 -4
  250. package/src/rbac/components/PagePermissionProvider.test.tsx +479 -0
  251. package/src/rbac/components/SecureDataProvider.test.tsx +511 -0
  252. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +159 -430
  253. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +4 -5
  254. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +112 -118
  255. package/src/rbac/config.test.ts +410 -0
  256. package/src/rbac/engine.test.simple.ts +237 -0
  257. package/src/rbac/engine.test.ts +233 -0
  258. package/src/rbac/engine.ts +37 -41
  259. package/src/rbac/examples/CompleteRBACExample.tsx +3 -3
  260. package/src/rbac/examples/EventBasedApp.tsx +4 -4
  261. package/src/rbac/hooks/useRBAC.simple.test.ts +16 -0
  262. package/src/rbac/hooks/useRBAC.test.ts +207 -455
  263. package/src/rbac/hooks/useRBAC.ts +30 -22
  264. package/src/rbac/permissions.test.ts +128 -0
  265. package/src/rbac/permissions.ts +56 -141
  266. package/src/rbac/providers/RBACProvider.tsx +1 -1
  267. package/src/rbac/secureClient.test.ts +444 -0
  268. package/src/rbac/security.test.ts +390 -0
  269. package/src/rbac/security.ts +1 -1
  270. package/src/rbac/types.test.ts +382 -0
  271. package/src/rbac/types.ts +2 -2
  272. package/src/styles/base.css +208 -0
  273. package/src/styles/core.css +0 -125
  274. package/src/styles/semantic.css +24 -0
  275. package/src/types/file-reference.ts +77 -0
  276. package/src/types/rbac-functions.ts +290 -0
  277. package/src/types/supabase.ts +10 -28
  278. package/src/types/unified.ts +4 -1
  279. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +81 -55
  280. package/src/utils/__tests__/lazyLoad.unit.test.tsx +21 -12
  281. package/src/utils/__tests__/organisationContext.unit.test.ts +13 -7
  282. package/src/utils/__tests__/performanceBudgets.unit.test.ts +3 -3
  283. package/src/utils/__tests__/sessionTracking.unit.test.ts +32 -12
  284. package/src/utils/appConfig.ts +1 -1
  285. package/src/utils/appIdResolver.test.ts +503 -0
  286. package/src/utils/appIdResolver.ts +1 -1
  287. package/src/utils/appNameResolver.test.ts +494 -0
  288. package/src/utils/appNameResolver.ts +3 -2
  289. package/src/utils/bundleAnalysis.ts +3 -3
  290. package/src/utils/debugLogger.ts +1 -1
  291. package/src/utils/file-reference.ts +263 -0
  292. package/src/utils/formatDate.test.ts +2 -2
  293. package/src/utils/organisationContext.test.ts +340 -0
  294. package/src/utils/organisationContext.ts +19 -6
  295. package/src/utils/performanceBudgets.ts +2 -2
  296. package/src/utils/permissionUtils.test.ts +393 -0
  297. package/src/utils/permissionUtils.ts +5 -2
  298. package/src/utils/secureDataAccess.test.ts +715 -0
  299. package/src/utils/secureDataAccess.ts +21 -5
  300. package/src/utils/sessionTracking.ts +34 -4
  301. package/src/utils/storage/__tests__/helpers.unit.test.ts +328 -0
  302. package/src/utils/storage/__tests__/index.unit.test.ts +16 -0
  303. package/src/utils/storage/helpers.ts +20 -25
  304. package/src/utils/storage/index.ts +29 -1
  305. package/src/vite-env.d.ts +17 -0
  306. package/dist/chunk-22KLBHPS.js.map +0 -1
  307. package/dist/chunk-7BNPOCLL.js.map +0 -1
  308. package/dist/chunk-BC3S53OZ.js.map +0 -1
  309. package/dist/chunk-GWSBHC4J.js.map +0 -1
  310. package/dist/chunk-MYP2EGHX.js.map +0 -1
  311. package/dist/chunk-MZBUOP4P.js.map +0 -1
  312. package/dist/chunk-NYUJ4FJR.js.map +0 -1
  313. package/dist/chunk-NZ655MWE.js.map +0 -1
  314. package/dist/chunk-SS3E6QLB.js.map +0 -1
  315. package/dist/chunk-TRIZ7IB7.js.map +0 -1
  316. package/dist/chunk-WJARTBCT.js.map +0 -1
  317. package/dist/chunk-YDJW5XTN.js.map +0 -1
  318. package/docs/print-components/README.md +0 -258
  319. package/docs/print-components/api-reference.md +0 -636
  320. package/docs/print-components/examples/README.md +0 -204
  321. package/docs/print-components/examples/basic-report.tsx +0 -92
  322. package/docs/print-components/examples/card-catalog.tsx +0 -149
  323. package/docs/print-components/examples/cover-page-report.tsx +0 -163
  324. package/docs/print-components/quick-start.md +0 -363
  325. package/src/components/PrintButton/PrintButton.tsx +0 -321
  326. package/src/components/PrintButton/PrintButtonGroup.tsx +0 -84
  327. package/src/components/PrintButton/PrintToolbar.tsx +0 -94
  328. package/src/components/PrintButton/__tests__/PrintButton.test.tsx +0 -271
  329. package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +0 -438
  330. package/src/components/PrintButton/index.ts +0 -33
  331. package/src/components/PrintButton/types.ts +0 -173
  332. package/src/components/PrintCard/PrintCard.tsx +0 -154
  333. package/src/components/PrintCard/PrintCardContent.tsx +0 -57
  334. package/src/components/PrintCard/PrintCardFooter.tsx +0 -60
  335. package/src/components/PrintCard/PrintCardGrid.tsx +0 -91
  336. package/src/components/PrintCard/PrintCardHeader.tsx +0 -78
  337. package/src/components/PrintCard/PrintCardImage.tsx +0 -81
  338. package/src/components/PrintCard/examples/PrintCardShowcase.tsx +0 -239
  339. package/src/components/PrintCard/index.ts +0 -34
  340. package/src/components/PrintCard/types.ts +0 -171
  341. package/src/components/PrintDataTable/PrintDataTable.tsx +0 -215
  342. package/src/components/PrintDataTable/PrintTableGroup.tsx +0 -90
  343. package/src/components/PrintDataTable/PrintTableRow.tsx +0 -76
  344. package/src/components/PrintDataTable/index.ts +0 -25
  345. package/src/components/PrintDataTable/types.ts +0 -67
  346. package/src/components/PrintFooter/PrintFooter.tsx +0 -183
  347. package/src/components/PrintFooter/PrintFooterContent.tsx +0 -71
  348. package/src/components/PrintFooter/PrintFooterInfo.tsx +0 -86
  349. package/src/components/PrintFooter/PrintPageNumber.tsx +0 -90
  350. package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +0 -390
  351. package/src/components/PrintFooter/index.ts +0 -30
  352. package/src/components/PrintFooter/types.ts +0 -149
  353. package/src/components/PrintGrid/PrintGrid.tsx +0 -180
  354. package/src/components/PrintGrid/PrintGridBreakpoint.tsx +0 -109
  355. package/src/components/PrintGrid/PrintGridContainer.tsx +0 -128
  356. package/src/components/PrintGrid/PrintGridItem.tsx +0 -220
  357. package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +0 -359
  358. package/src/components/PrintGrid/index.ts +0 -31
  359. package/src/components/PrintGrid/types.ts +0 -159
  360. package/src/components/PrintHeader/PrintCoverHeader.tsx +0 -230
  361. package/src/components/PrintHeader/PrintHeader.tsx +0 -150
  362. package/src/components/PrintHeader/index.ts +0 -17
  363. package/src/components/PrintHeader/types.ts +0 -42
  364. package/src/components/PrintLayout/PrintLayout.tsx +0 -122
  365. package/src/components/PrintLayout/PrintLayoutContext.tsx +0 -66
  366. package/src/components/PrintLayout/PrintPageBreak.tsx +0 -52
  367. package/src/components/PrintLayout/examples/PrintShowcase.tsx +0 -230
  368. package/src/components/PrintLayout/index.ts +0 -19
  369. package/src/components/PrintLayout/types.ts +0 -37
  370. package/src/components/PrintPageBreak/PrintPageBreak.tsx +0 -120
  371. package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +0 -90
  372. package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +0 -112
  373. package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +0 -279
  374. package/src/components/PrintPageBreak/index.ts +0 -23
  375. package/src/components/PrintPageBreak/types.ts +0 -94
  376. package/src/components/PrintSection/PrintColumn.tsx +0 -104
  377. package/src/components/PrintSection/PrintDivider.tsx +0 -101
  378. package/src/components/PrintSection/PrintSection.tsx +0 -129
  379. package/src/components/PrintSection/PrintSectionContent.tsx +0 -75
  380. package/src/components/PrintSection/PrintSectionHeader.tsx +0 -97
  381. package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +0 -258
  382. package/src/components/PrintSection/index.ts +0 -33
  383. package/src/components/PrintSection/types.ts +0 -155
  384. package/src/components/PrintText/PrintText.tsx +0 -116
  385. package/src/components/PrintText/index.ts +0 -16
  386. package/src/components/PrintText/types.ts +0 -24
  387. package/src/rbac/__tests__/integration.test.tsx +0 -218
  388. package/src/utils/print/PrintDataProcessor.ts +0 -390
  389. package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +0 -397
  390. package/src/utils/print/index.ts +0 -29
  391. package/src/utils/print/types.ts +0 -196
  392. package/src/utils/print/usePrintOptimization.ts +0 -272
  393. /package/dist/{DataTable-7FMFXA7A.js.map → DataTable-4T627QFJ.js.map} +0 -0
  394. /package/dist/{api-H5A3H4IR.js.map → api-LUNF5O6M.js.map} +0 -0
  395. /package/dist/{appNameResolver-7GHF5ED2.js.map → appNameResolver-UURKN7NF.js.map} +0 -0
  396. /package/dist/{audit-BUW3LMJB.js.map → audit-6TOCAMKO.js.map} +0 -0
  397. /package/dist/{chunk-NRK4AIHQ.js.map → chunk-KBRACSJI.js.map} +0 -0
  398. /package/dist/{chunk-6MTY77WU.js.map → chunk-TNMXZLDR.js.map} +0 -0
@@ -1,155 +0,0 @@
1
- /**
2
- * @file PrintSection Types
3
- * @package @jmruthers/pace-core
4
- * @module PrintSection
5
- * @since 0.4.38
6
- *
7
- * Type definitions for PrintSection component.
8
- */
9
-
10
- import { ReactNode } from 'react';
11
-
12
- export interface PrintSectionProps {
13
- /** Section content */
14
- children: ReactNode;
15
-
16
- /** Section title */
17
- title?: string;
18
-
19
- /** Section subtitle */
20
- subtitle?: string;
21
-
22
- /** Section layout */
23
- layout?: 'single' | 'two-column' | 'three-column' | 'four-column';
24
-
25
- /** Column gap */
26
- gap?: 'sm' | 'md' | 'lg' | 'xl';
27
-
28
- /** Section spacing */
29
- spacing?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
30
-
31
- /** Show section border */
32
- showBorder?: boolean;
33
-
34
- /** Section background */
35
- background?: 'transparent' | 'white' | 'gray' | 'primary' | 'secondary';
36
-
37
- /** Print optimization */
38
- printOptimized?: boolean;
39
-
40
- /** Custom CSS classes */
41
- className?: string;
42
-
43
- /** Additional props */
44
- [key: string]: any;
45
- }
46
-
47
- export interface PrintSectionHeaderProps {
48
- /** Header content */
49
- children: ReactNode;
50
-
51
- /** Header title */
52
- title?: string;
53
-
54
- /** Header subtitle */
55
- subtitle?: string;
56
-
57
- /** Header level */
58
- level?: 1 | 2 | 3 | 4 | 5 | 6;
59
-
60
- /** Header alignment */
61
- align?: 'left' | 'center' | 'right';
62
-
63
- /** Show divider line */
64
- showDivider?: boolean;
65
-
66
- /** Print optimization */
67
- printOptimized?: boolean;
68
-
69
- /** Custom CSS classes */
70
- className?: string;
71
-
72
- /** Additional props */
73
- [key: string]: any;
74
- }
75
-
76
- export interface PrintSectionContentProps {
77
- /** Content */
78
- children: ReactNode;
79
-
80
- /** Content padding */
81
- padding?: 'none' | 'sm' | 'md' | 'lg';
82
-
83
- /** Content background */
84
- background?: 'transparent' | 'white' | 'gray' | 'primary' | 'secondary';
85
-
86
- /** Print optimization */
87
- printOptimized?: boolean;
88
-
89
- /** Custom CSS classes */
90
- className?: string;
91
-
92
- /** Additional props */
93
- [key: string]: any;
94
- }
95
-
96
- export interface PrintColumnProps {
97
- /** Column content */
98
- children: ReactNode;
99
-
100
- /** Column width */
101
- width?: 'auto' | '1/2' | '1/3' | '2/3' | '1/4' | '3/4' | 'full';
102
-
103
- /** Column alignment */
104
- align?: 'left' | 'center' | 'right';
105
-
106
- /** Column vertical alignment */
107
- verticalAlign?: 'top' | 'middle' | 'bottom';
108
-
109
- /** Column padding */
110
- padding?: 'none' | 'sm' | 'md' | 'lg';
111
-
112
- /** Print optimization */
113
- printOptimized?: boolean;
114
-
115
- /** Custom CSS classes */
116
- className?: string;
117
-
118
- /** Additional props */
119
- [key: string]: any;
120
- }
121
-
122
- export interface PrintDividerProps {
123
- /** Divider style */
124
- style?: 'solid' | 'dashed' | 'dotted' | 'thick';
125
-
126
- /** Divider color */
127
- color?: 'default' | 'muted' | 'primary' | 'secondary' | 'accent';
128
-
129
- /** Divider thickness */
130
- thickness?: 'thin' | 'medium' | 'thick';
131
-
132
- /** Divider spacing */
133
- spacing?: 'none' | 'sm' | 'md' | 'lg';
134
-
135
- /** Print optimization */
136
- printOptimized?: boolean;
137
-
138
- /** Custom CSS classes */
139
- className?: string;
140
-
141
- /** Additional props */
142
- [key: string]: any;
143
- }
144
-
145
- export type PrintSectionLayout = 'single' | 'two-column' | 'three-column' | 'four-column';
146
- export type PrintSectionGap = 'sm' | 'md' | 'lg' | 'xl';
147
- export type PrintSectionSpacing = 'none' | 'sm' | 'md' | 'lg' | 'xl';
148
- export type PrintSectionBackground = 'transparent' | 'white' | 'gray' | 'primary' | 'secondary';
149
- export type PrintSectionAlignment = 'left' | 'center' | 'right';
150
- export type PrintSectionPadding = 'none' | 'sm' | 'md' | 'lg';
151
- export type PrintColumnWidth = 'auto' | '1/2' | '1/3' | '2/3' | '1/4' | '3/4' | 'full';
152
- export type PrintVerticalAlignment = 'top' | 'middle' | 'bottom';
153
- export type PrintDividerStyle = 'solid' | 'dashed' | 'dotted' | 'thick';
154
- export type PrintDividerColor = 'default' | 'muted' | 'primary' | 'secondary' | 'accent';
155
- export type PrintDividerThickness = 'thin' | 'medium' | 'thick';
@@ -1,116 +0,0 @@
1
- /**
2
- * @file PrintText Component
3
- * @package @jmruthers/pace-core
4
- * @module PrintText
5
- * @since 0.4.38
6
- *
7
- * Print-optimized typography component with consistent text styling.
8
- *
9
- * Features:
10
- * - Print-optimized typography
11
- * - Consistent text styling variants
12
- * - Print-specific font sizing
13
- * - High contrast for readability
14
- * - Integration with existing theme system
15
- *
16
- * @example
17
- * ```tsx
18
- * <PrintText variant="heading">Main Title</PrintText>
19
- * <PrintText variant="body" weight="medium">Body text content</PrintText>
20
- * <PrintText variant="caption" color="muted">Caption text</PrintText>
21
- * ```
22
- */
23
-
24
- import React from 'react';
25
- import { cn } from '../../utils/cn';
26
- import type { PrintTextProps, PrintTextVariant, PrintTextWeight, PrintTextColor } from './types';
27
-
28
- /**
29
- * PrintText component provides print-optimized typography with consistent styling.
30
- */
31
- export function PrintText({
32
- children,
33
- variant = 'body',
34
- weight = 'normal',
35
- color = 'primary',
36
- printOptimized = true,
37
- className,
38
- as: Component = 'p',
39
- ...props
40
- }: PrintTextProps) {
41
- const getVariantClasses = (variant: PrintTextVariant): string => {
42
- const baseClasses = 'print-text';
43
-
44
- switch (variant) {
45
- case 'heading':
46
- return cn(baseClasses, 'text-2xl leading-tight');
47
- case 'subheading':
48
- return cn(baseClasses, 'text-xl leading-snug');
49
- case 'body':
50
- return cn(baseClasses, 'text-base leading-relaxed');
51
- case 'caption':
52
- return cn(baseClasses, 'text-sm leading-normal');
53
- case 'small':
54
- return cn(baseClasses, 'text-xs leading-tight');
55
- default:
56
- return baseClasses;
57
- }
58
- };
59
-
60
- const getWeightClasses = (weight: PrintTextWeight): string => {
61
- switch (weight) {
62
- case 'normal':
63
- return 'font-normal';
64
- case 'medium':
65
- return 'font-medium';
66
- case 'semibold':
67
- return 'font-semibold';
68
- case 'bold':
69
- return 'font-bold';
70
- default:
71
- return 'font-normal';
72
- }
73
- };
74
-
75
- const getColorClasses = (color: PrintTextColor): string => {
76
- switch (color) {
77
- case 'primary':
78
- return 'text-foreground';
79
- case 'secondary':
80
- return 'text-secondary-foreground';
81
- case 'muted':
82
- return 'text-muted-foreground';
83
- case 'accent':
84
- return 'text-accent-foreground';
85
- default:
86
- return 'text-foreground';
87
- }
88
- };
89
-
90
- const getPrintOptimizedClasses = (): string => {
91
- if (!printOptimized) return '';
92
-
93
- return cn(
94
- 'print-text',
95
- // Print-specific font sizing
96
- 'print:text-sm print:leading-tight',
97
- // High contrast for print
98
- 'print:text-black print:bg-white'
99
- );
100
- };
101
-
102
- return (
103
- <Component
104
- className={cn(
105
- getVariantClasses(variant),
106
- getWeightClasses(weight),
107
- getColorClasses(color),
108
- getPrintOptimizedClasses(),
109
- className
110
- )}
111
- {...props}
112
- >
113
- {children}
114
- </Component>
115
- );
116
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * @file PrintText Component Exports
3
- * @package @jmruthers/pace-core
4
- * @module PrintText
5
- * @since 0.4.38
6
- *
7
- * Exports for PrintText component.
8
- */
9
-
10
- export { PrintText } from './PrintText';
11
- export type {
12
- PrintTextProps,
13
- PrintTextVariant,
14
- PrintTextWeight,
15
- PrintTextColor
16
- } from './types';
@@ -1,24 +0,0 @@
1
- /**
2
- * @file PrintText Types
3
- * @package @jmruthers/pace-core
4
- * @module PrintText
5
- * @since 0.4.38
6
- *
7
- * Type definitions for PrintText component.
8
- */
9
-
10
- import { ReactNode } from 'react';
11
-
12
- export type PrintTextVariant = 'heading' | 'subheading' | 'body' | 'caption' | 'small';
13
- export type PrintTextWeight = 'normal' | 'medium' | 'semibold' | 'bold';
14
- export type PrintTextColor = 'primary' | 'secondary' | 'muted' | 'accent';
15
-
16
- export interface PrintTextProps {
17
- children: ReactNode;
18
- variant?: PrintTextVariant;
19
- weight?: PrintTextWeight;
20
- color?: PrintTextColor;
21
- printOptimized?: boolean;
22
- className?: string;
23
- as?: 'p' | 'span' | 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
24
- }
@@ -1,218 +0,0 @@
1
- /**
2
- * @file RBAC Integration Tests
3
- * @package @jmruthers/pace-core
4
- * @module RBAC/Integration
5
- * @since 0.3.0
6
- */
7
-
8
- import { render, screen, waitFor } from '@testing-library/react';
9
- import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
10
- import { RBACProvider } from '../providers/RBACProvider';
11
- import { useRBAC } from '../hooks/useRBAC';
12
- import { setupRBAC } from '../api';
13
-
14
- // Mock the RBAC API
15
- vi.mock('../api', () => ({
16
- setupRBAC: vi.fn(),
17
- }));
18
-
19
- // Mock the providers
20
- vi.mock('../../providers/UnifiedAuthProvider', () => ({
21
- useUnifiedAuth: vi.fn(),
22
- }));
23
-
24
- vi.mock('../../providers/OrganisationProvider', () => ({
25
- useOrganisations: vi.fn(),
26
- }));
27
-
28
- vi.mock('../../providers/EventProvider', () => ({
29
- useEvents: vi.fn(),
30
- }));
31
-
32
- // Mock the useRBAC hook
33
- vi.mock('../hooks/useRBAC', () => ({
34
- useRBAC: vi.fn(),
35
- }));
36
-
37
- // Test component that uses RBAC
38
- const TestComponent = () => {
39
- const { hasPermission, hasGlobalPermission, isLoading, error } = useRBAC();
40
-
41
- return (
42
- <div data-testid="test-component">
43
- <div data-testid="loading">
44
- {isLoading ? 'Loading' : 'Not loading'}
45
- </div>
46
- <div data-testid="error">
47
- {error ? 'Error' : 'No error'}
48
- </div>
49
- <div data-testid="can-read-users">
50
- {hasPermission('read:users') ? 'Can read users' : 'Cannot read users'}
51
- </div>
52
- <div data-testid="can-global-permission">
53
- {hasGlobalPermission('admin') ? 'Can admin' : 'Cannot admin'}
54
- </div>
55
- </div>
56
- );
57
- };
58
-
59
- describe('RBAC Integration Tests', () => {
60
- const mockSetupRBAC = vi.mocked(setupRBAC);
61
- const mockUseRBAC = vi.mocked(useRBAC);
62
-
63
- beforeEach(() => {
64
- vi.clearAllMocks();
65
- mockSetupRBAC.mockReturnValue({} as any);
66
-
67
- // Mock useRBAC hook
68
- mockUseRBAC.mockReturnValue({
69
- user: { id: 'user-123', email: 'test@example.com' },
70
- globalRole: 'user',
71
- organisationRole: 'member',
72
- eventAppRole: 'participant',
73
- hasPermission: vi.fn().mockReturnValue(true),
74
- hasGlobalPermission: vi.fn().mockReturnValue(false),
75
- isSuperAdmin: false,
76
- isOrgAdmin: false,
77
- isEventAdmin: false,
78
- canManageOrganisation: false,
79
- canManageEvent: false,
80
- isLoading: false,
81
- error: null,
82
- });
83
- });
84
-
85
- afterEach(() => {
86
- vi.restoreAllMocks();
87
- });
88
-
89
- describe('Basic RBAC Flow', () => {
90
- it('should render component with RBAC context', async () => {
91
- render(
92
- <RBACProvider>
93
- <TestComponent />
94
- </RBACProvider>
95
- );
96
-
97
- expect(screen.getByTestId('test-component')).toBeInTheDocument();
98
- expect(screen.getByTestId('loading')).toHaveTextContent('Not loading');
99
- expect(screen.getByTestId('error')).toHaveTextContent('No error');
100
- expect(screen.getByTestId('can-read-users')).toHaveTextContent('Can read users');
101
- expect(screen.getByTestId('can-global-permission')).toHaveTextContent('Cannot admin');
102
- });
103
-
104
- it('should handle loading state', async () => {
105
- mockUseRBAC.mockReturnValue({
106
- user: null,
107
- globalRole: null,
108
- organisationRole: null,
109
- eventAppRole: null,
110
- hasPermission: vi.fn().mockReturnValue(false),
111
- hasGlobalPermission: vi.fn().mockReturnValue(false),
112
- isSuperAdmin: false,
113
- isOrgAdmin: false,
114
- isEventAdmin: false,
115
- canManageOrganisation: false,
116
- canManageEvent: false,
117
- isLoading: true,
118
- error: null,
119
- });
120
-
121
- render(
122
- <RBACProvider>
123
- <TestComponent />
124
- </RBACProvider>
125
- );
126
-
127
- expect(screen.getByTestId('loading')).toHaveTextContent('Loading');
128
- expect(screen.getByTestId('can-read-users')).toHaveTextContent('Cannot read users');
129
- });
130
-
131
- it('should handle error state', async () => {
132
- mockUseRBAC.mockReturnValue({
133
- user: null,
134
- globalRole: null,
135
- organisationRole: null,
136
- eventAppRole: null,
137
- hasPermission: vi.fn().mockReturnValue(false),
138
- hasGlobalPermission: vi.fn().mockReturnValue(false),
139
- isSuperAdmin: false,
140
- isOrgAdmin: false,
141
- isEventAdmin: false,
142
- canManageOrganisation: false,
143
- canManageEvent: false,
144
- isLoading: false,
145
- error: new Error('RBAC initialization failed'),
146
- });
147
-
148
- render(
149
- <RBACProvider>
150
- <TestComponent />
151
- </RBACProvider>
152
- );
153
-
154
- expect(screen.getByTestId('error')).toHaveTextContent('Error');
155
- expect(screen.getByTestId('can-read-users')).toHaveTextContent('Cannot read users');
156
- });
157
- });
158
-
159
- describe('Permission Checking', () => {
160
- it('should check permissions correctly', async () => {
161
- const mockHasPermission = vi.fn().mockReturnValue(true);
162
- const mockHasGlobalPermission = vi.fn().mockReturnValue(false);
163
-
164
- mockUseRBAC.mockReturnValue({
165
- user: { id: 'user-123', email: 'test@example.com' },
166
- globalRole: 'user',
167
- organisationRole: 'member',
168
- eventAppRole: 'participant',
169
- hasPermission: mockHasPermission,
170
- hasGlobalPermission: mockHasGlobalPermission,
171
- isSuperAdmin: false,
172
- isOrgAdmin: false,
173
- isEventAdmin: false,
174
- canManageOrganisation: false,
175
- canManageEvent: false,
176
- isLoading: false,
177
- error: null,
178
- });
179
-
180
- render(
181
- <RBACProvider>
182
- <TestComponent />
183
- </RBACProvider>
184
- );
185
-
186
- expect(mockHasPermission).toHaveBeenCalledWith('read:users');
187
- expect(mockHasGlobalPermission).toHaveBeenCalledWith('admin');
188
- });
189
- });
190
-
191
- describe('Role-based Access', () => {
192
- it('should handle super admin role', async () => {
193
- mockUseRBAC.mockReturnValue({
194
- user: { id: 'user-123', email: 'test@example.com' },
195
- globalRole: 'super_admin',
196
- organisationRole: 'org_admin',
197
- eventAppRole: 'event_admin',
198
- hasPermission: vi.fn().mockReturnValue(true),
199
- hasGlobalPermission: vi.fn().mockReturnValue(true),
200
- isSuperAdmin: true,
201
- isOrgAdmin: true,
202
- isEventAdmin: true,
203
- canManageOrganisation: true,
204
- canManageEvent: true,
205
- isLoading: false,
206
- error: null,
207
- });
208
-
209
- render(
210
- <RBACProvider>
211
- <TestComponent />
212
- </RBACProvider>
213
- );
214
-
215
- expect(screen.getByTestId('can-global-permission')).toHaveTextContent('Can admin');
216
- });
217
- });
218
- });