@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,390 +0,0 @@
1
- /**
2
- * @file Print Data Processor
3
- * @package @jmruthers/pace-core
4
- * @module PrintDataProcessor
5
- * @since 0.4.38
6
- *
7
- * Data processing utilities for print optimization.
8
- */
9
-
10
- import {
11
- PrintDataProcessorOptions,
12
- PrintDataProcessorResult,
13
- PrintDataProcessorConfig,
14
- PrintDataProcessor
15
- } from './types';
16
-
17
- export class PrintDataProcessorImpl implements PrintDataProcessor {
18
- private config: PrintDataProcessorConfig;
19
-
20
- constructor(config?: Partial<PrintDataProcessorConfig>) {
21
- this.config = {
22
- defaultOptions: {
23
- maxItemsPerPage: 50,
24
- maxCharactersPerLine: 80,
25
- maxLinesPerPage: 60,
26
- pageBreakStrategy: 'auto',
27
- groupingStrategy: 'auto',
28
- truncationStrategy: 'word',
29
- optimizationLevel: 'basic',
30
- pageSize: 'A4',
31
- orientation: 'portrait',
32
- fontSize: 12,
33
- lineHeight: 1.4,
34
- margins: {
35
- top: 0.5,
36
- right: 0.5,
37
- bottom: 0.5,
38
- left: 0.5
39
- }
40
- },
41
- pageSizes: {
42
- A4: {
43
- width: 8.27,
44
- height: 11.69,
45
- margin: { top: 0.5, right: 0.5, bottom: 0.5, left: 0.5 }
46
- },
47
- A3: {
48
- width: 11.69,
49
- height: 16.53,
50
- margin: { top: 0.5, right: 0.5, bottom: 0.5, left: 0.5 }
51
- },
52
- A5: {
53
- width: 5.83,
54
- height: 8.27,
55
- margin: { top: 0.5, right: 0.5, bottom: 0.5, left: 0.5 }
56
- },
57
- Letter: {
58
- width: 8.5,
59
- height: 11,
60
- margin: { top: 0.5, right: 0.5, bottom: 0.5, left: 0.5 }
61
- },
62
- Legal: {
63
- width: 8.5,
64
- height: 14,
65
- margin: { top: 0.5, right: 0.5, bottom: 0.5, left: 0.5 }
66
- }
67
- },
68
- fonts: {
69
- small: { size: 10, lineHeight: 1.2, charactersPerLine: 100 },
70
- medium: { size: 12, lineHeight: 1.4, charactersPerLine: 80 },
71
- large: { size: 14, lineHeight: 1.6, charactersPerLine: 60 }
72
- },
73
- presets: {
74
- basic: {
75
- maxItemsPerPage: 50,
76
- maxCharactersPerLine: 80,
77
- maxLinesPerPage: 60,
78
- pageBreakStrategy: 'auto',
79
- groupingStrategy: 'auto',
80
- truncationStrategy: 'word',
81
- optimizationLevel: 'basic'
82
- },
83
- compact: {
84
- maxItemsPerPage: 100,
85
- maxCharactersPerLine: 100,
86
- maxLinesPerPage: 80,
87
- pageBreakStrategy: 'force',
88
- groupingStrategy: 'auto',
89
- truncationStrategy: 'character',
90
- optimizationLevel: 'advanced'
91
- },
92
- readable: {
93
- maxItemsPerPage: 30,
94
- maxCharactersPerLine: 60,
95
- maxLinesPerPage: 40,
96
- pageBreakStrategy: 'avoid',
97
- groupingStrategy: 'smart',
98
- truncationStrategy: 'word',
99
- optimizationLevel: 'maximum'
100
- }
101
- },
102
- ...config
103
- };
104
- }
105
-
106
- process<T>(data: T[], options: Partial<PrintDataProcessorOptions> = {}): PrintDataProcessorResult<T> {
107
- const mergedOptions = { ...this.config.defaultOptions, ...options };
108
- const warnings: string[] = [];
109
- const suggestions: string[] = [];
110
-
111
- // Validate data
112
- const validation = this.validate(data, mergedOptions);
113
- if (!validation.isValid) {
114
- warnings.push(...validation.errors);
115
- }
116
- warnings.push(...validation.warnings);
117
-
118
- // Process data based on options
119
- let processedData = [...data];
120
-
121
- // Apply optimization
122
- if (mergedOptions.optimizationLevel !== 'none') {
123
- processedData = this.optimize(processedData, mergedOptions);
124
- }
125
-
126
- // Calculate pagination
127
- const pagination = this.getPagination(processedData, mergedOptions);
128
-
129
- // Calculate grouping
130
- const grouping = this.getGrouping(processedData, 'id' as keyof T, mergedOptions);
131
-
132
- // Calculate optimization metrics
133
- const optimization = this.getPreview(processedData, mergedOptions);
134
-
135
- // Generate suggestions
136
- if (optimization.estimatedPages > 10) {
137
- suggestions.push('Consider using a more compact layout or smaller font size');
138
- }
139
- if (optimization.readabilityScore < 0.7) {
140
- suggestions.push('Consider improving text formatting for better readability');
141
- }
142
- if (optimization.compressionRatio < 0.8) {
143
- suggestions.push('Consider optimizing content to reduce page count');
144
- }
145
-
146
- return {
147
- data: processedData,
148
- pagination,
149
- grouping,
150
- optimization,
151
- warnings,
152
- suggestions
153
- };
154
- }
155
-
156
- getPagination<T>(data: T[], options: Partial<PrintDataProcessorOptions> = {}): {
157
- totalPages: number;
158
- currentPage: number;
159
- itemsPerPage: number;
160
- totalItems: number;
161
- } {
162
- const mergedOptions = { ...this.config.defaultOptions, ...options };
163
- const itemsPerPage = mergedOptions.maxItemsPerPage || 50;
164
- const totalItems = data.length;
165
- const totalPages = Math.ceil(totalItems / itemsPerPage);
166
-
167
- return {
168
- totalPages,
169
- currentPage: 1,
170
- itemsPerPage,
171
- totalItems
172
- };
173
- }
174
-
175
- getGrouping<T>(data: T[], groupBy: keyof T, options: Partial<PrintDataProcessorOptions> = {}): {
176
- groups: Array<{
177
- key: string;
178
- items: T[];
179
- startPage: number;
180
- endPage: number;
181
- }>;
182
- totalGroups: number;
183
- } {
184
- const mergedOptions = { ...this.config.defaultOptions, ...options };
185
- const itemsPerPage = mergedOptions.maxItemsPerPage || 50;
186
-
187
- // Group data by the specified key
188
- const groups = new Map<string, T[]>();
189
- data.forEach(item => {
190
- const key = String(item[groupBy] || 'Unknown');
191
- if (!groups.has(key)) {
192
- groups.set(key, []);
193
- }
194
- groups.get(key)!.push(item);
195
- });
196
-
197
- // Calculate page information for each group
198
- const groupArray = Array.from(groups.entries()).map(([key, items]) => {
199
- const startPage = Math.floor(data.indexOf(items[0]) / itemsPerPage) + 1;
200
- const endPage = Math.floor(data.indexOf(items[items.length - 1]) / itemsPerPage) + 1;
201
-
202
- return {
203
- key,
204
- items,
205
- startPage,
206
- endPage
207
- };
208
- });
209
-
210
- return {
211
- groups: groupArray,
212
- totalGroups: groupArray.length
213
- };
214
- }
215
-
216
- optimize<T>(data: T[], options: Partial<PrintDataProcessorOptions> = {}): T[] {
217
- const mergedOptions = { ...this.config.defaultOptions, ...options };
218
- let optimizedData = [...data];
219
-
220
- // Apply text truncation if needed
221
- if (mergedOptions.truncationStrategy !== 'none') {
222
- optimizedData = this.applyTextTruncation(optimizedData, mergedOptions);
223
- }
224
-
225
- // Apply grouping optimization
226
- if (mergedOptions.groupingStrategy !== 'none') {
227
- optimizedData = this.applyGroupingOptimization(optimizedData, mergedOptions);
228
- }
229
-
230
- // Apply page break optimization
231
- if (mergedOptions.pageBreakStrategy !== 'auto') {
232
- optimizedData = this.applyPageBreakOptimization(optimizedData, mergedOptions);
233
- }
234
-
235
- return optimizedData;
236
- }
237
-
238
- validate<T>(data: T[], options: Partial<PrintDataProcessorOptions> = {}): {
239
- isValid: boolean;
240
- errors: string[];
241
- warnings: string[];
242
- } {
243
- const errors: string[] = [];
244
- const warnings: string[] = [];
245
-
246
- // Check if data is empty
247
- if (!data || data.length === 0) {
248
- errors.push('Data array is empty');
249
- }
250
-
251
- // Check data types
252
- if (data.some(item => typeof item !== 'object' || item === null)) {
253
- warnings.push('Some items in data array are not objects or are null');
254
- }
255
-
256
- // Check for very large datasets
257
- if (data.length > 10000) {
258
- warnings.push('Large dataset detected. Consider pagination or filtering.');
259
- }
260
-
261
- // Check for very long text content
262
- const longTextItems = data.filter(item =>
263
- typeof item === 'object' &&
264
- item !== null &&
265
- Object.values(item).some(value =>
266
- typeof value === 'string' && value.length > 1000
267
- )
268
- );
269
-
270
- if (longTextItems.length > 0) {
271
- warnings.push('Some items contain very long text. Consider truncation.');
272
- }
273
-
274
- return {
275
- isValid: errors.length === 0,
276
- errors,
277
- warnings
278
- };
279
- }
280
-
281
- getPreview<T>(data: T[], options: Partial<PrintDataProcessorOptions> = {}): {
282
- estimatedPages: number;
283
- estimatedPrintTime: number;
284
- compressionRatio: number;
285
- readabilityScore: number;
286
- } {
287
- const mergedOptions = { ...this.config.defaultOptions, ...options };
288
- const pagination = this.getPagination(data, mergedOptions);
289
-
290
- // Calculate estimated print time (in minutes)
291
- const estimatedPrintTime = pagination.totalPages * 0.5; // 30 seconds per page
292
-
293
- // Calculate compression ratio
294
- const originalSize = JSON.stringify(data).length;
295
- const optimizedData = this.optimize(data, mergedOptions);
296
- const optimizedSize = JSON.stringify(optimizedData).length;
297
- const compressionRatio = optimizedSize / originalSize;
298
-
299
- // Calculate readability score (0-1)
300
- const readabilityScore = this.calculateReadabilityScore(data, mergedOptions);
301
-
302
- return {
303
- estimatedPages: pagination.totalPages,
304
- estimatedPrintTime,
305
- compressionRatio,
306
- readabilityScore
307
- };
308
- }
309
-
310
- private applyTextTruncation<T>(data: T[], options: PrintDataProcessorOptions): T[] {
311
- const maxLength = options.maxCharactersPerLine || 80;
312
-
313
- return data.map(item => {
314
- if (typeof item === 'object' && item !== null) {
315
- const truncatedItem = { ...item } as Record<string, any>;
316
-
317
- Object.keys(truncatedItem).forEach(key => {
318
- const value = truncatedItem[key];
319
- if (typeof value === 'string' && value.length > maxLength) {
320
- switch (options.truncationStrategy) {
321
- case 'ellipsis':
322
- truncatedItem[key] = value.substring(0, maxLength - 3) + '...';
323
- break;
324
- case 'word':
325
- const words = value.split(' ');
326
- let truncated = '';
327
- for (const word of words) {
328
- const testLength = truncated ? truncated.length + 1 + word.length : word.length;
329
- if (testLength > maxLength) {
330
- if (truncated.length + 3 <= maxLength) {
331
- truncated += '...';
332
- }
333
- break;
334
- }
335
- truncated += (truncated ? ' ' : '') + word;
336
- }
337
- truncatedItem[key] = truncated;
338
- break;
339
- case 'character':
340
- truncatedItem[key] = value.substring(0, maxLength);
341
- break;
342
- }
343
- }
344
- });
345
-
346
- return truncatedItem as T;
347
- }
348
-
349
- return item;
350
- });
351
- }
352
-
353
- private applyGroupingOptimization<T>(data: T[], options: PrintDataProcessorOptions): T[] {
354
- // This is a simplified grouping optimization
355
- // In a real implementation, this would be more sophisticated
356
- return data;
357
- }
358
-
359
- private applyPageBreakOptimization<T>(data: T[], options: PrintDataProcessorOptions): T[] {
360
- // This is a simplified page break optimization
361
- // In a real implementation, this would analyze content and add page breaks
362
- return data;
363
- }
364
-
365
- private calculateReadabilityScore<T>(data: T[], options: PrintDataProcessorOptions): number {
366
- // Simplified readability score calculation
367
- // In a real implementation, this would use more sophisticated algorithms
368
- let score = 1.0;
369
-
370
- // Penalize very long lines
371
- if (options.maxCharactersPerLine && options.maxCharactersPerLine > 100) {
372
- score -= 0.1;
373
- }
374
-
375
- // Penalize very dense layouts
376
- if (options.maxLinesPerPage && options.maxLinesPerPage > 80) {
377
- score -= 0.1;
378
- }
379
-
380
- // Reward good font sizes
381
- if (options.fontSize && options.fontSize >= 12) {
382
- score += 0.1;
383
- }
384
-
385
- return Math.max(0, Math.min(1, score));
386
- }
387
- }
388
-
389
- // Export singleton instance
390
- export const printDataProcessor = new PrintDataProcessorImpl();