@jmruthers/pace-core 0.5.54 → 0.5.56

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 (396) hide show
  1. package/README.md +0 -4
  2. package/dist/{DataTable-7FMFXA7A.js → DataTable-DJQTKX33.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-NRK4AIHQ.js → chunk-2DFCT6D3.js} +3 -3
  9. package/dist/{chunk-GIO7BFE7.js → chunk-3JKVVLD3.js} +66 -169
  10. package/dist/{chunk-GIO7BFE7.js.map → chunk-3JKVVLD3.js.map} +1 -1
  11. package/dist/{chunk-MZBUOP4P.js → chunk-5BSLGBYI.js} +4 -3
  12. package/dist/chunk-5BSLGBYI.js.map +1 -0
  13. package/dist/{chunk-I5Z3QH5X.js → chunk-66C4BSAY.js} +2 -2
  14. package/dist/{chunk-I5Z3QH5X.js.map → chunk-66C4BSAY.js.map} +1 -1
  15. package/dist/{chunk-EL2O4IUX.js → chunk-ASXSJGPW.js} +20 -24
  16. package/dist/{chunk-EL2O4IUX.js.map → chunk-ASXSJGPW.js.map} +1 -1
  17. package/dist/{chunk-7BNPOCLL.js → chunk-B2WTCLCV.js} +6 -2
  18. package/dist/chunk-B2WTCLCV.js.map +1 -0
  19. package/dist/{chunk-WJARTBCT.js → chunk-D7ARGIA3.js} +16 -7
  20. package/dist/chunk-D7ARGIA3.js.map +1 -0
  21. package/dist/{chunk-MYP2EGHX.js → chunk-GIDCWCHF.js} +21 -14
  22. package/dist/chunk-GIDCWCHF.js.map +1 -0
  23. package/dist/{chunk-MSFACPQQ.js → chunk-HYNGIE5T.js} +11 -11
  24. package/dist/{chunk-MSFACPQQ.js.map → chunk-HYNGIE5T.js.map} +1 -1
  25. package/dist/{chunk-TRIZ7IB7.js → chunk-I5GID3EX.js} +148 -288
  26. package/dist/chunk-I5GID3EX.js.map +1 -0
  27. package/dist/{chunk-GWSBHC4J.js → chunk-KLPVOPRI.js} +261 -38
  28. package/dist/chunk-KLPVOPRI.js.map +1 -0
  29. package/dist/{chunk-BC3S53OZ.js → chunk-N6XMGSGD.js} +30 -14
  30. package/dist/chunk-N6XMGSGD.js.map +1 -0
  31. package/dist/{chunk-6MTY77WU.js → chunk-QB4GXDUM.js} +3 -3
  32. package/dist/{chunk-YDJW5XTN.js → chunk-STT7INZR.js} +25 -1
  33. package/dist/chunk-STT7INZR.js.map +1 -0
  34. package/dist/{chunk-NYUJ4FJR.js → chunk-UETTVYKU.js} +7 -7
  35. package/dist/chunk-UETTVYKU.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-NZ655MWE.js → chunk-YEHO6FDW.js} +5 -4
  39. package/dist/chunk-YEHO6FDW.js.map +1 -0
  40. package/dist/{chunk-SS3E6QLB.js → chunk-YNUBMSMV.js} +2 -2
  41. package/dist/chunk-YNUBMSMV.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 +25 -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/core.css +0 -125
  273. package/src/types/file-reference.ts +77 -0
  274. package/src/types/rbac-functions.ts +290 -0
  275. package/src/types/supabase.ts +10 -28
  276. package/src/types/unified.ts +4 -1
  277. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +81 -55
  278. package/src/utils/__tests__/lazyLoad.unit.test.tsx +21 -12
  279. package/src/utils/__tests__/organisationContext.unit.test.ts +13 -7
  280. package/src/utils/__tests__/performanceBudgets.unit.test.ts +3 -3
  281. package/src/utils/__tests__/sessionTracking.unit.test.ts +32 -12
  282. package/src/utils/appConfig.ts +1 -1
  283. package/src/utils/appIdResolver.test.ts +503 -0
  284. package/src/utils/appIdResolver.ts +1 -1
  285. package/src/utils/appNameResolver.test.ts +494 -0
  286. package/src/utils/appNameResolver.ts +3 -2
  287. package/src/utils/bundleAnalysis.ts +3 -3
  288. package/src/utils/debugLogger.ts +1 -1
  289. package/src/utils/file-reference.ts +263 -0
  290. package/src/utils/formatDate.test.ts +2 -2
  291. package/src/utils/organisationContext.test.ts +340 -0
  292. package/src/utils/organisationContext.ts +19 -6
  293. package/src/utils/performanceBudgets.ts +2 -2
  294. package/src/utils/permissionUtils.test.ts +393 -0
  295. package/src/utils/permissionUtils.ts +5 -2
  296. package/src/utils/secureDataAccess.test.ts +715 -0
  297. package/src/utils/secureDataAccess.ts +21 -5
  298. package/src/utils/sessionTracking.ts +34 -4
  299. package/src/utils/storage/__tests__/helpers.unit.test.ts +328 -0
  300. package/src/utils/storage/__tests__/index.unit.test.ts +16 -0
  301. package/src/utils/storage/helpers.ts +20 -25
  302. package/src/utils/storage/index.ts +29 -1
  303. package/src/vite-env.d.ts +17 -0
  304. package/dist/chunk-22KLBHPS.js.map +0 -1
  305. package/dist/chunk-7BNPOCLL.js.map +0 -1
  306. package/dist/chunk-BC3S53OZ.js.map +0 -1
  307. package/dist/chunk-GWSBHC4J.js.map +0 -1
  308. package/dist/chunk-MYP2EGHX.js.map +0 -1
  309. package/dist/chunk-MZBUOP4P.js.map +0 -1
  310. package/dist/chunk-NYUJ4FJR.js.map +0 -1
  311. package/dist/chunk-NZ655MWE.js.map +0 -1
  312. package/dist/chunk-SS3E6QLB.js.map +0 -1
  313. package/dist/chunk-TRIZ7IB7.js.map +0 -1
  314. package/dist/chunk-WJARTBCT.js.map +0 -1
  315. package/dist/chunk-YDJW5XTN.js.map +0 -1
  316. package/docs/print-components/README.md +0 -258
  317. package/docs/print-components/api-reference.md +0 -636
  318. package/docs/print-components/examples/README.md +0 -204
  319. package/docs/print-components/examples/basic-report.tsx +0 -92
  320. package/docs/print-components/examples/card-catalog.tsx +0 -149
  321. package/docs/print-components/examples/cover-page-report.tsx +0 -163
  322. package/docs/print-components/quick-start.md +0 -363
  323. package/src/components/PrintButton/PrintButton.tsx +0 -321
  324. package/src/components/PrintButton/PrintButtonGroup.tsx +0 -84
  325. package/src/components/PrintButton/PrintToolbar.tsx +0 -94
  326. package/src/components/PrintButton/__tests__/PrintButton.test.tsx +0 -271
  327. package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +0 -438
  328. package/src/components/PrintButton/index.ts +0 -33
  329. package/src/components/PrintButton/types.ts +0 -173
  330. package/src/components/PrintCard/PrintCard.tsx +0 -154
  331. package/src/components/PrintCard/PrintCardContent.tsx +0 -57
  332. package/src/components/PrintCard/PrintCardFooter.tsx +0 -60
  333. package/src/components/PrintCard/PrintCardGrid.tsx +0 -91
  334. package/src/components/PrintCard/PrintCardHeader.tsx +0 -78
  335. package/src/components/PrintCard/PrintCardImage.tsx +0 -81
  336. package/src/components/PrintCard/examples/PrintCardShowcase.tsx +0 -239
  337. package/src/components/PrintCard/index.ts +0 -34
  338. package/src/components/PrintCard/types.ts +0 -171
  339. package/src/components/PrintDataTable/PrintDataTable.tsx +0 -215
  340. package/src/components/PrintDataTable/PrintTableGroup.tsx +0 -90
  341. package/src/components/PrintDataTable/PrintTableRow.tsx +0 -76
  342. package/src/components/PrintDataTable/index.ts +0 -25
  343. package/src/components/PrintDataTable/types.ts +0 -67
  344. package/src/components/PrintFooter/PrintFooter.tsx +0 -183
  345. package/src/components/PrintFooter/PrintFooterContent.tsx +0 -71
  346. package/src/components/PrintFooter/PrintFooterInfo.tsx +0 -86
  347. package/src/components/PrintFooter/PrintPageNumber.tsx +0 -90
  348. package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +0 -390
  349. package/src/components/PrintFooter/index.ts +0 -30
  350. package/src/components/PrintFooter/types.ts +0 -149
  351. package/src/components/PrintGrid/PrintGrid.tsx +0 -180
  352. package/src/components/PrintGrid/PrintGridBreakpoint.tsx +0 -109
  353. package/src/components/PrintGrid/PrintGridContainer.tsx +0 -128
  354. package/src/components/PrintGrid/PrintGridItem.tsx +0 -220
  355. package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +0 -359
  356. package/src/components/PrintGrid/index.ts +0 -31
  357. package/src/components/PrintGrid/types.ts +0 -159
  358. package/src/components/PrintHeader/PrintCoverHeader.tsx +0 -230
  359. package/src/components/PrintHeader/PrintHeader.tsx +0 -150
  360. package/src/components/PrintHeader/index.ts +0 -17
  361. package/src/components/PrintHeader/types.ts +0 -42
  362. package/src/components/PrintLayout/PrintLayout.tsx +0 -122
  363. package/src/components/PrintLayout/PrintLayoutContext.tsx +0 -66
  364. package/src/components/PrintLayout/PrintPageBreak.tsx +0 -52
  365. package/src/components/PrintLayout/examples/PrintShowcase.tsx +0 -230
  366. package/src/components/PrintLayout/index.ts +0 -19
  367. package/src/components/PrintLayout/types.ts +0 -37
  368. package/src/components/PrintPageBreak/PrintPageBreak.tsx +0 -120
  369. package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +0 -90
  370. package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +0 -112
  371. package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +0 -279
  372. package/src/components/PrintPageBreak/index.ts +0 -23
  373. package/src/components/PrintPageBreak/types.ts +0 -94
  374. package/src/components/PrintSection/PrintColumn.tsx +0 -104
  375. package/src/components/PrintSection/PrintDivider.tsx +0 -101
  376. package/src/components/PrintSection/PrintSection.tsx +0 -129
  377. package/src/components/PrintSection/PrintSectionContent.tsx +0 -75
  378. package/src/components/PrintSection/PrintSectionHeader.tsx +0 -97
  379. package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +0 -258
  380. package/src/components/PrintSection/index.ts +0 -33
  381. package/src/components/PrintSection/types.ts +0 -155
  382. package/src/components/PrintText/PrintText.tsx +0 -116
  383. package/src/components/PrintText/index.ts +0 -16
  384. package/src/components/PrintText/types.ts +0 -24
  385. package/src/rbac/__tests__/integration.test.tsx +0 -218
  386. package/src/utils/print/PrintDataProcessor.ts +0 -390
  387. package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +0 -397
  388. package/src/utils/print/index.ts +0 -29
  389. package/src/utils/print/types.ts +0 -196
  390. package/src/utils/print/usePrintOptimization.ts +0 -272
  391. /package/dist/{DataTable-7FMFXA7A.js.map → DataTable-DJQTKX33.js.map} +0 -0
  392. /package/dist/{api-H5A3H4IR.js.map → api-LUNF5O6M.js.map} +0 -0
  393. /package/dist/{appNameResolver-7GHF5ED2.js.map → appNameResolver-UURKN7NF.js.map} +0 -0
  394. /package/dist/{audit-BUW3LMJB.js.map → audit-6TOCAMKO.js.map} +0 -0
  395. /package/dist/{chunk-NRK4AIHQ.js.map → chunk-2DFCT6D3.js.map} +0 -0
  396. /package/dist/{chunk-6MTY77WU.js.map → chunk-QB4GXDUM.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
- });